{"version":3,"sources":["libs/galaxy/filter/chips/src/enums.ts","libs/galaxy/filter/chips/src/interface.ts","libs/galaxy/filter/chips/src/add-filter-modal/galaxy-add-filter-modal.component.ts","libs/galaxy/filter/chips/src/add-filter-modal/galaxy-add-filter-modal.component.html","libs/galaxy/filter/chips/src/custom-filter-chip.component.ts","libs/galaxy/filter/chips/src/filter-inputs/checkbox-filter-input.component.ts","libs/galaxy/filter/chips/src/filter-inputs/custom-filter-input.component.ts","libs/galaxy/filter/chips/src/filter-inputs/date-default-labels.ts","libs/galaxy/filter/chips/src/filter-inputs/date-filter-input.ts","libs/galaxy/filter/chips/src/filter-inputs/date-filter-input.html","libs/galaxy/filter/chips/src/filter-inputs/no-input.component.ts","libs/galaxy/filter/chips/src/filter-inputs/none-selected-input.component.ts","libs/galaxy/filter/chips/src/filter-inputs/radio-filter-input.component.ts","libs/galaxy/filter/chips/src/constants.ts","libs/galaxy/filter/chips/src/filter-inputs/string-filter-input.component.ts","libs/galaxy/filter/chips/src/filter-inputs/tags-filter-input.component.ts","libs/galaxy/filter/chips/src/filter-inputs/boolean-filter-input.component.ts","libs/galaxy/filter/chips/src/filter-inputs/stop-chrome-autofill.ts","libs/galaxy/filter/chips/src/filter-inputs/phone-filter-input.component.ts","libs/galaxy/filter/chips/src/filter-inputs/phone-filter-input.component.html","libs/galaxy/filter/chips/src/filter-operator-labels.ts","libs/galaxy/filter/chips/src/filter-inputs/float-filter-input.ts","libs/galaxy/filter/chips/src/filter-inputs/float-filter-input.html","libs/galaxy/filter/chips/src/filter-inputs/integer-filter-input.component.ts","libs/galaxy/filter/chips/src/filter-inputs/integer-filter-input.component.html","libs/galaxy/filter/chips/src/edit-filter-modal/galaxy-edit-filter-modal.component.ts","libs/galaxy/filter/chips/src/edit-filter-modal/galaxy-edit-filter-modal.component.html","libs/galaxy/filter/chips/src/galaxy-filter-chips.component.ts","libs/galaxy/filter/chips/src/galaxy-filter-chips.component.html","libs/galaxy/filter/chips/src/filter-chips.module.ts","libs/galaxy/filter/chips/public_api.ts","libs/galaxy/filter/chips/src/filter-inputs/index.ts","libs/galaxy/filter/chips/index.ts","libs/crm/static/src/lib/utils.ts","libs/crm/static/src/lib/shared-services/crm-services/field.service.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-object-service/_contact.service.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-object-service/_company.service.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-object-service/_activity_object.service.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-field-options.service.ts","libs/crm/static/src/lib/shared-services/table-customization/_abstract-table-customization.service.ts","libs/crm/static/src/lib/constants.ts","libs/crm/static/src/lib/shared-services/crm-services/activity.service.ts","libs/crm/static/src/lib/i18n/translate-by-object-type/translate-by-object-type.service.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-form.utils.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-form.service.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-object-service/_abstract.service.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-object-service/_opportunity.service.ts","libs/crm/static/src/lib/shared-services/company-contact-cache.service.ts","libs/crm/static/src/lib/shared-services/association.utils.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-object-service/crm-association.service.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-object-service/crm-table-state.service.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-object-service/crm-pipeline.service.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-object-service/index.ts","libs/crm/static/src/lib/shared-services/crm-services/index.ts","libs/crm/static/src/lib/shared-components/custom-table-cells/company-batch-getter.service.ts","libs/crm/static/src/lib/shared-components/custom-table-cells/parent-company-name.component.ts","libs/crm/static/src/lib/shared-services/restricted-group.service.ts","libs/crm/static/src/lib/shared-services/crm-object-display.service.ts","libs/crm/static/src/lib/shared-services/table-customization/company-table-customization.service.ts","libs/crm/static/src/lib/shared-services/table-customization/activity-customization.service.ts","libs/crm/static/src/lib/shared-components/custom-table-cells/primary-association-cell/primary-association-cell.component.ts","libs/crm/static/src/lib/shared-components/custom-table-cells/primary-association-cell/primary-association-cell.component.html","libs/crm/static/src/lib/shared-services/table-customization/opportunity-table-customization.service.ts","libs/crm/static/src/lib/shared-services/table-customization/custom-object-table-customization.service.ts","libs/crm/static/src/lib/shared-services/table-customization/index.ts","node_modules/@vendasta/crm-integrations/fesm2020/vendasta-crm-integrations.mjs","libs/crm/static/src/lib/shared-services/platform-api.service.ts","libs/crm/static/src/lib/shared-services/company-profile-cards-panel.service.ts","libs/crm/static/src/lib/shared-components/association-panel-components/edit-association-tags/edit-association-tags.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/edit-association-tags/edit-association-tags.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/edit-association-dialog/edit-association-dialog.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/edit-association-dialog/edit-association-dialog.component.html","libs/crm/static/src/lib/shared-services/default-association-actions.service.ts","libs/crm/static/src/lib/shared-services/page-analytics.service.ts","libs/crm/static/src/lib/shared-services/content-injector/side-panel-content.service.ts","libs/crm/static/src/lib/shared-services/company-filters.service.ts","libs/crm/static/src/lib/shared-services/activity-assignee.service.ts","libs/crm/static/src/lib/shared-services/score.service.ts","libs/crm/static/src/lib/shared-services/crm-object-management-table-changes.service.ts","libs/crm/static/src/lib/shared-services/index.ts","libs/crm/static/src/lib/shared-components/custom-table-cells/primary-company-name.component.ts","libs/crm/static/src/lib/shared-components/custom-table-cells/multilocation/location.component.ts","libs/crm/static/src/lib/shared-components/custom-table-cells/multilocation/location.component.html","libs/crm/static/src/lib/shared-services/table-customization/contact-table-customization.service.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-filters.service.ts","libs/crm/static/src/lib/tokens-and-interfaces.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-object-service/multi-location-activity.service.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-object-service/_custom_object.service.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-object-service/multi-location-contact.service.ts","libs/crm/static/src/lib/shared-services/crm-services/crm-object-service/crm-object.service.ts","libs/crm/static/src/lib/i18n/translate-for-crm-object/translate-for-crm-object.service.ts","libs/crm/static/src/lib/i18n/translate-by-object-type/translate-by-object-type.pipe.ts","libs/crm/static/src/lib/i18n/translate-for-crm-object/translate-for-crm-object.pipe.ts","libs/crm/static/src/lib/i18n/index.ts","libs/crm/components/animations/src/index.ts","libs/crm/components/animations/public_api.ts","libs/crm/components/animations/index.ts","libs/galaxy/sticky-footer/src/sticky-footer.component.ts","libs/galaxy/sticky-footer/src/sticky-footer.component.html","libs/galaxy/sticky-footer/src/directives/sticky-footer-secondary.directive.ts","libs/galaxy/sticky-footer/src/sticky-footer.module.ts","libs/galaxy/sticky-footer/public_api.ts","libs/galaxy/sticky-footer/index.ts","libs/galaxy/page-nav/src/page-nav.component.ts","libs/galaxy/page-nav/src/page-nav.component.html","libs/galaxy/page-nav/src/page-nav.module.ts","libs/galaxy/page-nav/public_api.ts","libs/galaxy/page-nav/index.ts","libs/galaxy/nav-layout/src/nav-layout.component.ts","libs/galaxy/nav-layout/src/nav-layout.component.html","libs/galaxy/nav-layout/src/components/nav-item-list/nav-item-list.component.ts","libs/galaxy/nav-layout/src/components/nav-item-list/nav-item-list.component.html","libs/galaxy/nav-layout/src/directives/nav-item-list-items.directive.ts","libs/galaxy/nav-layout/src/directives/nav-item-accessory.directive.ts","libs/galaxy/nav-layout/src/nav-layout.module.ts","libs/galaxy/nav-layout/public_api.ts","libs/galaxy/nav-layout/index.ts","libs/crm/static/src/lib/shared-components/association-form-field/interface.ts","libs/crm/static/src/lib/shared-pipes/truncate.pipe.ts","libs/crm/static/src/lib/shared-components/association-form-field/association-form-modal/association-form-modal.component.ts","libs/crm/static/src/lib/shared-components/association-form-field/association-form-modal/association-form-modal.component.html","libs/crm/static/src/lib/shared-components/association-form-field/association-form-field.component.ts","libs/crm/static/src/lib/shared-components/association-form-field/association-form-field.component.html","libs/crm/static/src/lib/shared-components/association-form-field/contact-to-company-association/contact-to-company-association.component.ts","libs/crm/static/src/lib/shared-components/association-form-field/contact-to-company-association/contact-to-company-association.component.html","libs/crm/static/src/lib/shared-components/association-form-field/company-association/company-association.component.ts","libs/crm/static/src/lib/shared-components/association-form-field/company-association/company-association.component.html","libs/crm/static/src/lib/shared-components/list-objects/value-summary.service.ts","libs/crm/components/board/src/interfaces.ts","libs/crm/components/board/src/card/card.component.ts","libs/crm/components/board/src/card/card.component.html","libs/crm/components/board/src/column/column.component.ts","libs/crm/components/board/src/column/column.component.html","libs/crm/components/board/src/column/column-header.directive.ts","libs/crm/components/board/src/card/card-content.directive.ts","libs/crm/components/board/src/board/board.component.ts","libs/crm/components/board/src/board/board.component.html","libs/crm/components/board/src/datasource.ts","libs/crm/components/board/src/index.ts","libs/crm/components/board/public_api.ts","libs/crm/components/board/index.ts","libs/crm/static/src/lib/shared-components/list-objects/list-objects-table.service.ts","libs/crm/static/src/lib/shared-components/side-panel/side-panel.service.ts","libs/crm/static/src/lib/shared-components/side-panel/side-panel.component.ts","libs/crm/static/src/lib/shared-components/side-panel/side-panel.component.html","libs/crm/static/src/lib/shared-pipes/filter-visible-actions.pipe.ts","libs/crm/static/src/lib/shared-pipes/activity-effective-date.pipe.ts","libs/crm/static/src/lib/shared-pipes/is-task-overdue.pipe.ts","libs/crm/static/src/lib/shared-pipes/index.ts","libs/galaxy/filter/chips/src/utils.ts","libs/crm/static/src/lib/shared-components/filter-view/filter-view.component.ts","libs/crm/static/src/lib/shared-components/filter-view/filter-view.component.html","libs/crm/static/src/lib/shared-components/filter-view/interfaces.ts","libs/crm/static/src/lib/shared-components/filter-view/index.ts","libs/crm/static/src/lib/shared-components/list-objects/board/column-header.component.ts","libs/crm/static/src/lib/shared-components/list-objects/board/column-header.component.html","libs/crm/static/src/lib/shared-components/custom-table-cells/task-status/task-status.component.ts","libs/crm/static/src/lib/shared-components/custom-table-cells/user/user.component.ts","libs/crm/static/src/lib/shared-components/custom-table-cells/due-date/due-date.component.ts","libs/crm/static/src/lib/shared-components/custom-table-cells/associated-crm-object/associated-crm-object.service.ts","libs/crm/static/src/lib/shared-components/custom-table-cells/associated-crm-object/associated-crm-object.component.ts","libs/crm/static/src/lib/shared-components/custom-table-cells/associated-crm-object/associated-crm-object.component.html","libs/crm/static/src/lib/shared-components/custom-table-cells/task-body/task-body.component.ts","libs/crm/static/src/lib/shared-components/custom-table-cells/index.ts","libs/crm/static/src/lib/shared-components/list-objects/board/card-content.component.ts","libs/crm/static/src/lib/shared-components/list-objects/board/card-content.component.html","libs/crm/static/src/lib/shared-components/pipeline-selector/pipeline-selector.component.ts","libs/crm/static/src/lib/shared-components/pipeline-selector/pipeline-selector.component.html","libs/crm/static/src/lib/shared-components/pipeline-selector/index.ts","libs/crm/static/src/lib/shared-components/list-objects/list-objects-table.component.ts","libs/crm/static/src/lib/shared-components/list-objects/list-objects-table.component.html","libs/crm/static/src/lib/shared-components/list-objects/list-objects-page.component.ts","libs/crm/static/src/lib/shared-components/list-objects/list-objects-page.component.html","libs/crm/static/src/lib/shared-components/list-objects/directives/content.directive.ts","libs/crm/static/src/lib/shared-components/list-objects/directives/page-actions.directive.ts","libs/crm/static/src/lib/shared-components/side-panel/drawer.component.ts","libs/crm/static/src/lib/shared-components/side-panel/drawer.component.html","libs/crm/static/src/lib/shared-components/side-panel/index.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/constants.ts","node_modules/@babel/runtime/helpers/interopRequireDefault.js","node_modules/@babel/runtime/helpers/typeof.js","node_modules/date-fns/_lib/requiredArgs/index.js","node_modules/date-fns/isDate/index.js","node_modules/date-fns/toDate/index.js","node_modules/date-fns/isValid/index.js","node_modules/date-fns/_lib/toInteger/index.js","node_modules/date-fns/addMilliseconds/index.js","node_modules/date-fns/subMilliseconds/index.js","node_modules/date-fns/_lib/getUTCDayOfYear/index.js","node_modules/date-fns/_lib/startOfUTCISOWeek/index.js","node_modules/date-fns/_lib/getUTCISOWeekYear/index.js","node_modules/date-fns/_lib/startOfUTCISOWeekYear/index.js","node_modules/date-fns/_lib/getUTCISOWeek/index.js","node_modules/date-fns/_lib/defaultOptions/index.js","node_modules/date-fns/_lib/startOfUTCWeek/index.js","node_modules/date-fns/_lib/getUTCWeekYear/index.js","node_modules/date-fns/_lib/startOfUTCWeekYear/index.js","node_modules/date-fns/_lib/getUTCWeek/index.js","node_modules/date-fns/_lib/addLeadingZeros/index.js","node_modules/date-fns/_lib/format/lightFormatters/index.js","node_modules/date-fns/_lib/format/formatters/index.js","node_modules/date-fns/_lib/format/longFormatters/index.js","node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js","node_modules/date-fns/_lib/protectedTokens/index.js","node_modules/date-fns/locale/en-US/_lib/formatDistance/index.js","node_modules/date-fns/locale/_lib/buildFormatLongFn/index.js","node_modules/date-fns/locale/en-US/_lib/formatLong/index.js","node_modules/date-fns/locale/en-US/_lib/formatRelative/index.js","node_modules/date-fns/locale/_lib/buildLocalizeFn/index.js","node_modules/date-fns/locale/en-US/_lib/localize/index.js","node_modules/date-fns/locale/_lib/buildMatchFn/index.js","node_modules/date-fns/locale/_lib/buildMatchPatternFn/index.js","node_modules/date-fns/locale/en-US/_lib/match/index.js","node_modules/date-fns/locale/en-US/index.js","node_modules/date-fns/_lib/defaultLocale/index.js","node_modules/date-fns/format/index.js","node_modules/date-fns-tz/esm/_lib/tzIntlTimeZoneName/index.js","node_modules/date-fns-tz/esm/_lib/tzTokenizeDate/index.js","node_modules/date-fns-tz/esm/_lib/newDateUTC/index.js","node_modules/date-fns-tz/esm/_lib/tzParseTimezone/index.js","node_modules/date-fns-tz/esm/format/formatters/index.js","node_modules/date-fns-tz/esm/_lib/tzPattern/index.js","node_modules/date-fns-tz/esm/toDate/index.js","node_modules/date-fns-tz/esm/format/index.js","node_modules/date-fns-tz/esm/index.js","libs/crm/static/src/lib/shared-components/activities-timeline/activities/activity.interface.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/validators.ts","libs/crm/static/src/lib/shared-components/form-fields/activity-owner/activity-owner.component.ts","libs/crm/static/src/lib/shared-components/form-fields/activity-owner/activity-owner.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/task.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/task.component.html","libs/ai-assistant/src/core/ai-assistant.constants.ts","libs/ai-assistant/src/core/interfaces/ai-assistant.interface.ts","libs/ai-assistant/src/core/tokens.ts","node_modules/@vendasta/ai-assistants/fesm2020/vendasta-ai-assistants.mjs","libs/ai-assistant/src/core/services/ai-assistant-utils.ts","libs/ai-assistant/src/core/services/ai-assistant.service.ts","libs/ai-assistant/src/assets/avatars/avatar-svg-string.ts","libs/ai-assistant/src/core/services/sms-details.service.ts","node_modules/@vendasta/sales/fesm2020/vendasta-sales.mjs","libs/ai-assistant/src/core/services/booking-config.service.ts","libs/ai-assistant/src/core/ai-assistant.module.ts","node_modules/@vendasta/embeddings/fesm2020/vendasta-embeddings.mjs","libs/ai-knowledge/src/lib/tokens.ts","libs/ai-knowledge/src/lib/ai-knowledge-util.ts","libs/ai-knowledge/src/lib/ai-knowledge.service.ts","libs/ai-knowledge/src/lib/ai-knowledge.module.ts","node_modules/@angular/cdk/fesm2022/stepper.mjs","node_modules/@angular/material/fesm2022/stepper.mjs","libs/ai-knowledge/src/lib/interface/config.interface.ts","libs/ai-knowledge/src/lib/assets/i18n/en_devel.json","libs/ai-knowledge/src/lib/assets/i18n/ai-knowledge-i18n.module.ts","libs/ai-knowledge/src/lib/knowledge-editor/website-scrape/last-scraped/last-scraped.component.ts","libs/ai-knowledge/src/lib/knowledge-editor/website-scrape/last-scraped/last-scraped.component.html","libs/ai-knowledge/src/lib/knowledge-list/knowledge-list.component.ts","libs/ai-knowledge/src/lib/knowledge-list/knowledge-list.component.html","libs/ai-knowledge/src/lib/app-list/application-list.component.ts","libs/ai-knowledge/src/lib/app-list/application-list.component.html","libs/ai-knowledge/src/lib/application-selector/application-selector.component.ts","libs/ai-knowledge/src/lib/application-selector/application-selector.component.html","libs/ai-knowledge/src/lib/knowledge-editor/custom-data/custom-data.component.ts","libs/ai-knowledge/src/lib/knowledge-editor/custom-data/custom-data.component.html","libs/ai-knowledge/src/lib/shared/ai-loading-spinner/ai-loading-spinner.component.ts","libs/ai-knowledge/src/lib/shared/ai-loading-spinner/ai-loading-spinner.component.html","libs/ai-knowledge/src/lib/knowledge-editor/website-scrape/scraped-pages/scraped-pages.component.ts","libs/ai-knowledge/src/lib/knowledge-editor/website-scrape/scraped-pages/scraped-pages.component.html","libs/ai-knowledge/src/lib/knowledge-editor/website-scrape/website-scrape.component.ts","libs/ai-knowledge/src/lib/knowledge-editor/website-scrape/website-scrape.component.html","libs/ai-knowledge/src/lib/knowledge-editor/add-knowledge/add-knowledge.component.ts","libs/ai-knowledge/src/lib/knowledge-editor/add-knowledge/add-knowledge.component.html","libs/ai-knowledge/src/lib/knowledge-editor/business-profile/business-profile.component.ts","libs/ai-knowledge/src/lib/knowledge-editor/business-profile/business-profile.component.html","libs/ai-knowledge/src/lib/application-knowledge-control/application-knowledge.component.ts","libs/ai-knowledge/src/lib/application-knowledge-control/application-knowledge.component.html","libs/ai-knowledge/src/lib/delete-custom-knowledge/delete-custom-knowledge.component.ts","libs/ai-knowledge/src/lib/delete-custom-knowledge/delete-custom-knowledge.component.html","libs/ai-knowledge/src/lib/knowledge-source-management/knowledge-source-management.component.ts","libs/ai-knowledge/src/lib/knowledge-source-management/knowledge-source-management.component.html","libs/ai-knowledge/src/lib/index.ts","libs/ai-knowledge/src/index.ts","libs/galaxy/progress-bar/src/progress-bar.component.ts","libs/galaxy/progress-bar/src/progress-bar.component.html","libs/galaxy/progress-bar/src/progress-bar.module.ts","libs/galaxy/progress-bar/public_api.ts","libs/galaxy/progress-bar/index.ts","libs/ai-assistant/src/core/index.ts","libs/ai-assistant/src/assets/i18n/en_devel.json","libs/ai-assistant/src/assets/i18n/ai-assistant-i18n.module.ts","node_modules/@vendasta/voice/fesm2020/vendasta-voice.mjs","libs/ai-assistant/src/components/ai-assistant-card/ai-assistant-card.component.ts","libs/ai-assistant/src/components/ai-assistant-card/ai-assistant-card.component.html","libs/ai-assistant/src/components/ai-voice-try-it-modal/ai-voice-try-it-modal.component.ts","libs/ai-assistant/src/components/ai-voice-try-it-modal/ai-voice-try-it-modal.component.html","libs/ai-assistant/src/components/ai-assistant-page/ai-assistant-page.component.ts","libs/ai-assistant/src/components/ai-assistant-page/ai-assistant-page.component.html","libs/ai-assistant/src/components/ai-assistant-reference-card/ai-assistant-reference-card.component.ts","libs/ai-assistant/src/components/ai-assistant-reference-card/ai-assistant-reference-card.component.html","libs/ai-assistant/src/components/index.ts","libs/ai-assistant/src/core/interfaces/config.interface.ts","libs/ai-assistant/src/components/ai-assistant-configuration/enable-lead-capture-dialog/enable-lead-capture-dialog.component.ts","libs/ai-assistant/src/components/ai-assistant-configuration/enable-lead-capture-dialog/enable-lead-capture-dialog.component.html","libs/ai-assistant/src/components/additional-instructions-dialog/additional-instructions-dialog.component.ts","libs/ai-assistant/src/components/additional-instructions-dialog/additional-instructions-dialog.component.html","libs/ai-assistant/src/components/sticky-footer/sticky-footer.component.ts","libs/ai-assistant/src/components/sticky-footer/sticky-footer.component.html","libs/ai-assistant/src/components/ai-assistant-configuration/image-upload/image-upload.service.ts","libs/ai-assistant/src/components/ai-assistant-configuration/image-upload/image-upload-modal/image-upload-modal.component.ts","libs/ai-assistant/src/components/ai-assistant-configuration/image-upload/image-upload-modal/image-upload-modal.component.html","libs/ai-assistant/src/components/ai-assistant-configuration/image-upload/image-upload.component.ts","libs/ai-assistant/src/components/ai-assistant-configuration/image-upload/image-upload.component.html","libs/ai-assistant/src/components/ai-assistant-configuration/ai-assistant-form/unsaved-changes.guard.ts","libs/ai-assistant/src/components/ai-assistant-voice-usage/ai-assistant-voice-usage.component.ts","libs/ai-assistant/src/components/ai-assistant-voice-usage/ai-assistant-voice-usage.component.html","node_modules/@angular/material/fesm2022/slider.mjs","libs/ai-assistant/src/components/ai-assistant-configuration/goals-and-instructions/goals-list.component.ts","libs/ai-assistant/src/components/ai-assistant-configuration/goals-and-instructions/goals-list.component.html","libs/ai-assistant/src/core/services/ai-goal.service.ts","libs/ai-assistant/src/components/ai-assistant-configuration/ai-assistant-form/ai-assistant-form.component.ts","libs/ai-assistant/src/components/ai-assistant-configuration/ai-assistant-form/ai-assistant-form.component.html","libs/ai-assistant/src/core/services/ai-goal-util.ts","libs/ai-assistant/src/components/ai-goal-form/ai-goal-form.component.ts","libs/ai-assistant/src/components/ai-goal-form/ai-goal-form.component.html","libs/ai-assistant/src/lib/routes.ts","libs/ai-assistant/src/index.ts","libs/crm/static/src/lib/shared-components/chip/interfaces.ts","libs/crm/static/src/lib/shared-components/chip/chip.component.ts","libs/crm/static/src/lib/shared-components/chip/chip.component.html","libs/crm/static/src/lib/shared-components/chip-list/chip-list.component.ts","libs/crm/static/src/lib/shared-components/chip-list/chip-list.component.html","libs/crm/static/src/lib/shared-components/chip-list/index.ts","libs/crm/static/src/lib/shared-components/unknown-user-avatar/unknown-user-avatar.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/activity-logger.service.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/interfaces.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/logger-content.directive.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/call.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/call.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/email.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/email.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/meeting.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/meeting.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/note.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/note.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/tags.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/tags.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/follow-up-task.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/follow-up-task.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/index.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/communication.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logger/communication.component.html","libs/crm/static/src/lib/shared-components/association-form-field/team-association/team-association.component.ts","libs/crm/static/src/lib/shared-components/association-form-field/team-association/team-association.component.html","libs/crm/static/src/lib/shared-components/association-form-field/sales-opportunity-association/sales-opportunity-association.component.ts","libs/crm/static/src/lib/shared-components/association-form-field/sales-opportunity-association/sales-opportunity-association.component.html","libs/crm/static/src/lib/shared-components/association-form-field/crm-object-association/crm-object-association.component.ts","libs/crm/static/src/lib/shared-components/association-form-field/crm-object-association/crm-object-association.component.html","libs/crm/static/src/lib/shared-components/association-form-field/crm-multi-object-association/crm-multi-object-association.component.ts","libs/crm/static/src/lib/shared-components/association-form-field/crm-multi-object-association/crm-multi-object-association.component.html","libs/crm/static/src/lib/shared-components/association-form-field/index.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/activity-logger.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/activity-logger.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/timeline/timeline.service.ts","node_modules/@vendasta/sales-opportunities/fesm2020/vendasta-sales-opportunities.mjs","libs/crm/static/src/lib/shared-components/activities-timeline/activities/sanitize-html.pipe.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/opportunity-change.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/opportunity-change.component.html","libs/crm/static/src/lib/shared-components/collapsible-section/on-resize.directive.ts","libs/crm/static/src/lib/shared-components/collapsible-section/collapsible-section.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/call-transcript-modal.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/call-transcript-modal.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/call.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/call.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/activity-association.service.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/association-popover.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/association-popover.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/activity-url-builder.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/activity-communication.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/activity-communication.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/activity-template.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/activity-template.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/activity-template-options.directive.ts","node_modules/@vendasta/campaigns/fesm2020/vendasta-campaigns.mjs","libs/crm/static/src/lib/shared-components/activities-timeline/activities/email.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/email.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/activity-rich-text.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logged-call.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logged-call.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logged-communication.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logged-communication.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logged-email.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logged-email.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logged-meeting.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logged-meeting.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logged-note.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/logged-note.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/note.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/note.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/record-change.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/record-change.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/task.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/task.component.html","node_modules/@vendasta/meeting-analysis/fesm2020/vendasta-meeting-analysis.mjs","libs/crm/static/src/lib/shared-components/activities-timeline/activities/feedback-form-modal.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/feedback-form-modal.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/meeting-summary-modal.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/meeting-summary-modal.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/meeting.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities/meeting.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/activities/index.ts","libs/crm/static/src/lib/shared-components/activities-timeline/timeline/timeline-associated-object.pipe.ts","libs/crm/static/src/lib/shared-components/activities-timeline/timeline/timeline-activity.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/timeline/timeline-activity.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/timeline-activities-v2/activities/activity-template-v2.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/timeline-activities-v2/activities/activity-template-v2.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/timeline-activities-v2/timeline-activity-v2.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/timeline-activities-v2/timeline-activity-v2.component.html","libs/crm/static/src/lib/shared-components/activities-timeline/timeline/timeline.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/timeline/timeline.component.html","libs/crm/static/src/lib/shared-components/ai-summary/ai-summary.component.ts","libs/crm/static/src/lib/shared-components/ai-summary/ai-summary.component.html","libs/crm/static/src/lib/shared-components/ai-summary/index.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities-timeline.component.ts","libs/crm/static/src/lib/shared-components/activities-timeline/activities-timeline.component.html","libs/crm/static/src/lib/shared-components/leaderboard/activity-leaderboard.datasource.ts","libs/crm/static/src/lib/shared-components/leaderboard/activity-leaderboard.component.ts","libs/crm/static/src/lib/shared-components/leaderboard/activity-leaderboard.component.html","libs/crm/static/src/lib/shared-components/leaderboard/activity-leaderboard.module.ts","libs/crm/static/src/lib/shared-components/leaderboard/date-range-selector/date-range-selector.component.ts","libs/crm/static/src/lib/shared-components/leaderboard/date-range-selector/date-range-selector.component.html","libs/crm/static/src/lib/crm-core.module.ts","libs/crm/static/src/lib/shared-components/association-panel-components/contact-campaign-association-card/add-campaign-dialog/start-campaign-dialog.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/contact-campaign-association-card/add-campaign-dialog/start-campaign-dialog.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/contact-campaign-association-card/add-campaign-dialog/add-campaign-dialog.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/contact-campaign-association-card/add-campaign-dialog/add-campaign-dialog.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/contact-campaign-association-card/recipient-campaign-status/recipient-campaign-status.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/contact-campaign-association-card/recipient-campaign-status/recipient-campaign-status.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/contact-campaign-association-card/contact-campaigns-card.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/contact-campaign-association-card/contact-campaigns-card.component.html","libs/crm/static/src/lib/shared-components/select-object-type-modal/select-object-type-modal.component.ts","libs/crm/static/src/lib/shared-components/select-object-type-modal/select-object-type-modal.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/parent-child-company-associations-card/parent-child-company-associations-card.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/parent-child-company-associations-card/parent-child-company-associations-card.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/select-associations-modal/select-associations-modal.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/select-associations-modal/select-associations-modal.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/crm-object-association-panel/edit-association-tags-dialog/edit-association-tags-dialog.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/crm-object-association-panel/edit-association-tags-dialog/edit-association-tags-dialog.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/select-primary-association-modal/select-primary-association-modal.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/select-primary-association-modal/select-primary-association-modal.component.html","libs/crm/static/src/lib/shared-components/model-driven-form/field-validation.ts","libs/crm/static/src/lib/shared-components/model-driven-form/inline-edit.service.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderer-selector.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/model-driven-form-error/field-warning.service.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/boolean.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/stop-chrome-autofill.ts","libs/crm/static/src/lib/shared-components/model-driven-form/validator-factory.service.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/model-driven-form-error/uniqueness-suggestion-card.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/model-driven-form-error/uniqueness-suggestion-card.component.html","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/model-driven-form-error/model-driven-form-error.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/model-driven-form-error/model-driven-form-error.component.html","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/accounts/sync-field-form-input.service.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/accounts/sync-icon/sync-icon.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/accounts/sync-icon/sync-icon.component.html","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/date.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/datetime.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/email_validator.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/integer.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/float/float.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/float/float.html","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/float/float-field-handler.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/model-driven-form-error/field-warning.directive.ts","libs/crm/static/src/lib/shared-components/model-driven-form/form/modes/form-button-group.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/model-driven-popover/model-driven-popover.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/model-driven-popover/model-driven-popover.component.html","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/updater.service.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/phone/utils.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/phone/phone.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/phone/phone.html","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/phone/phone-field-handler.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/tags.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/tags.html","node_modules/@angular/animations/fesm2022/browser.mjs","node_modules/@angular/platform-browser/fesm2022/animations.mjs","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/text.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/currency/currency.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/currency/currency.html","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/currency/currency-field-handler.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/custom.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/lifecycle-stage-selector/lifecycle-stage.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/lifecycle-stage-selector/lifecycle-stage.pipe.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/lifecycle-stage-selector/lifecycle-stage-selector.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/lifecycle-stage-selector/lifecycle-stage-handler.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/email.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/geopoint.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/autocomplete.service.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/google-place-selector/google-place-selector.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/google-place-selector/google-place-selector.component.html","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/phone/phone-validator.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/pipeline-selector/pipeline-selector.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/pipeline-selector/pipeline-selector.component.html","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/opportunity-name/opportunity-name.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/opportunity-name/opportunity-name.component.html","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/hidden/hidden-text.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/hidden/hidden-datetime.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/marketing-consent-selector/marketing-consent-selector.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/marketing-consent-selector/marketing-consent-selector.component.html","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/url/url.service.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/url/social-media-url.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/url/social-media-url.html","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/stage-selector/stage-selector.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/renderers/stage-selector/stage-selector.component.html","libs/crm/static/src/lib/shared-components/model-driven-form/renderer-selector.service.ts","libs/crm/static/src/lib/shared-components/model-driven-form/form/modes/base-model-driven-form.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/form/modes/form-loading-indicator.component.ts","node_modules/@angular-devkit/core/src/utils/strings.js","libs/crm/static/src/lib/shared-components/vertical-nav-tab/vertical-nav-card.component.ts","libs/crm/static/src/lib/shared-components/vertical-nav-tab/vertical-nav-tab.component.ts","libs/crm/static/src/lib/shared-components/vertical-nav-tab/vertical-nav-tab.component.html","libs/crm/static/src/lib/shared-components/vertical-nav-tab/index.ts","libs/crm/static/src/lib/shared-components/model-driven-form/form/modes/card-group-driven-form.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/form/modes/card-group-driven-form.component.html","libs/crm/static/src/lib/shared-components/model-driven-form/form/modes/panel-driven-form.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/form/modes/panel-driven-form.component.html","libs/crm/static/src/lib/shared-components/model-driven-form/form/modes/basic-field-group-form.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/form/modes/basic-field-group-form.component.html","libs/crm/static/src/lib/shared-components/model-driven-form/form/model-driven-form.component.ts","libs/crm/static/src/lib/shared-components/model-driven-form/form/model-driven-form.component.html","libs/crm/static/src/lib/shared-components/model-driven-form/index.ts","libs/crm/static/src/lib/shared-components/create-crm-object-modal/create-crm-object-modal.component.ts","libs/crm/static/src/lib/shared-components/create-crm-object-modal/create-crm-object-modal.component.html","libs/crm/static/src/lib/shared-components/create-crm-object-modal/index.ts","libs/crm/static/src/lib/shared-components/association-panel-components/confirm-existing-primary-association-modal/confirm-existing-primary-association-modal.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/confirm-existing-primary-association-modal/confirm-existing-primary-association-modal.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/crm-object-association-panel/crm-object-association-panel.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/crm-object-association-panel/crm-object-association-panel.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/contact-associations-panel/contact-association-panel.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/contact-associations-panel/contact-association-panel.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/company-to-contact-associations-card/company-to-contact-associations-card.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/company-to-contact-associations-card/company-to-contact-associations-card.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/company-associations-panel/company-association-panel.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/company-associations-panel/company-association-panel.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/opportunity-associations-panel/opportunity-association-panel.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/opportunity-associations-panel/opportunity-association-panel.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/company-to-opportunity-associations-panel/company-to-opportunity-associations-panel.component.ts","libs/crm/static/src/lib/shared-components/association-panel-components/company-to-opportunity-associations-panel/company-to-opportunity-associations-panel.component.html","libs/crm/static/src/lib/shared-components/association-panel-components/crm-object-association-panel/tokens-and-interfaces.ts","libs/crm/static/src/lib/shared-components/association-panel-components/index.ts","libs/crm/static/src/lib/shared-components/list-objects/index.ts","libs/crm/static/src/lib/shared-components/activities-timeline/timeline/index.ts","libs/crm/static/src/lib/shared-components/activities-timeline/index.ts","libs/crm/static/src/lib/shared-components/custom-filters/company-custom-filter/company-custom-filter-chip.component.ts","libs/crm/static/src/lib/shared-components/custom-filters/company-custom-filter/company-custom-filter-input.component.ts","libs/crm/static/src/lib/shared-components/abstract-custom-filters/abstract-assignee/abstract-assignee-filter-chip.component.ts","libs/crm/static/src/lib/shared-components/custom-filters/user/user-filter-chip.component.ts","libs/crm/static/src/lib/shared-components/abstract-custom-filters/abstract-assignee/abstract-assignee-filter-input.component.ts","libs/crm/static/src/lib/shared-components/custom-filters/user/user-filter-input.component.ts","libs/crm/static/src/lib/shared-components/custom-filters/team-member/team-member-filter-chip.component.ts","libs/crm/static/src/lib/shared-components/custom-filters/team-member/team-member-filter-input.component.ts","libs/crm/static/src/lib/shared-components/custom-filters/index.ts","libs/crm/static/src/lib/shared-components/abstract-custom-filters/index.ts","libs/crm/static/src/lib/shared-components/dropdown/dropdown.component.ts","libs/crm/static/src/lib/shared-components/dropdown/dropdown.component.html","libs/crm/static/src/lib/shared-components/dropdown/dropdown-content.directive.ts","libs/crm/static/src/lib/shared-components/dropdown/dropdown-header.directive.ts","libs/crm/static/src/lib/shared-components/dropdown/index.ts","libs/crm/static/src/lib/shared-components/opportunity/opportunity-page-actions.component.ts","libs/crm/static/src/lib/shared-components/opportunity/opportunity-page-actions.component.html","libs/crm/static/src/lib/shared-components/opportunity/opportunity-status-badge.component.ts","libs/crm/static/src/lib/shared-components/opportunity/opportunity-status-badge.component.html","libs/crm/static/src/lib/shared-components/opportunity/index.ts","libs/crm/static/src/lib/shared-components/leaderboard/interfaces.ts","libs/crm/static/src/lib/shared-components/leaderboard/index.ts","libs/crm/static/src/lib/shared-components/index.ts","libs/crm/static/src/index.ts"],"sourcesContent":["export enum GalaxyDateDefault {\n DATE_DEFAULT_INVALID = 0,\n DATE_DEFAULT_TODAY = 1,\n DATE_DEFAULT_YESTERDAY = 2,\n DATE_DEFAULT_TOMORROW = 3,\n DATE_DEFAULT_THIS_WEEK = 4,\n DATE_DEFAULT_LAST_WEEK = 5,\n DATE_DEFAULT_NEXT_WEEK = 6,\n DATE_DEFAULT_THIS_MONTH = 7,\n DATE_DEFAULT_LAST_MONTH = 8,\n DATE_DEFAULT_NEXT_MONTH = 9,\n DATE_DEFAULT_THIS_QUARTER = 10,\n DATE_DEFAULT_LAST_QUARTER = 11,\n DATE_DEFAULT_NEXT_QUARTER = 12,\n DATE_DEFAULT_THIS_YEAR = 13,\n DATE_DEFAULT_LAST_YEAR = 14,\n DATE_DEFAULT_NEXT_YEAR = 15,\n}\n\nexport enum GalaxyFilterOperator {\n FILTER_OPERATOR_INVALID = 0,\n FILTER_OPERATOR_IS_EMPTY = 1,\n FILTER_OPERATOR_IS_NOT_EMPTY = 2,\n FILTER_OPERATOR_IS = 3,\n FILTER_OPERATOR_IS_NOT = 4,\n FILTER_OPERATOR_IS_ANY = 5,\n FILTER_OPERATOR_IS_NOT_ANY = 6,\n FILTER_OPERATOR_IS_ALL = 7,\n FILTER_OPERATOR_IS_NOT_ALL = 8,\n FILTER_OPERATOR_CONTAINS = 9,\n FILTER_OPERATOR_DOES_NOT_CONTAIN = 10,\n FILTER_OPERATOR_IS_EQUAL_TO = 11,\n FILTER_OPERATOR_IS_NOT_EQUAL_TO = 12,\n FILTER_OPERATOR_IS_GREATER_THAN = 13,\n FILTER_OPERATOR_IS_GREATER_THAN_OR_EQUAL_TO = 14,\n FILTER_OPERATOR_IS_LESS_THAN = 15,\n FILTER_OPERATOR_IS_LESS_THAN_OR_EQUAL_TO = 16,\n FILTER_OPERATOR_IS_BEFORE = 17,\n FILTER_OPERATOR_IS_BEFORE_OR_ON = 18,\n FILTER_OPERATOR_IS_AFTER = 19,\n FILTER_OPERATOR_IS_AFTER_OR_ON = 20,\n FILTER_OPERATOR_IS_BETWEEN = 21,\n FILTER_OPERATOR_IS_NOT_BETWEEN = 22,\n FILTER_OPERATOR_IS_VALID = 23,\n FILTER_OPERATOR_IS_NOT_VALID = 24,\n}\n\nexport enum GalaxyFilterType {\n FILTER_TYPE_INVALID = 0,\n FILTER_TYPE_STRING = 1,\n FILTER_TYPE_INTEGER = 2,\n FILTER_TYPE_DATE = 3,\n FILTER_TYPE_FLOAT = 4,\n FILTER_TYPE_BOOLEAN = 5,\n FILTER_TYPE_TAG = 6,\n FILTER_TYPE_CHECKBOX = 7,\n FILTER_TYPE_PHONE = 8,\n}\n","import * as e from './enums';\nimport { Observable } from 'rxjs';\nimport { Directive, EventEmitter, InjectionToken, Input, Output, Type } from '@angular/core';\nimport { PhoneInterface } from '@vendasta/crm';\n\n@Directive()\nexport abstract class GalaxyAbstractFilterInput {\n @Input() initialValue!: GalaxyFilterValueInterface[];\n @Input() operator?: e.GalaxyFilterOperator;\n @Output() valueChanges!: EventEmitter;\n\n abstract clearValue(): void;\n}\n\n@Directive()\nexport abstract class GalaxyAbstractFilterChip {\n @Input() initialValue!: GalaxyFilterValueInterface[];\n}\n\nexport interface GalaxyFilterChipDependencies {\n // listObjectFilters will return the list of filters that can be applied. They should be filtered by the searchTerm\n listObjectFilters(searchTerm: string): Observable;\n\n // getFieldOptions will return the list of options for a given fieldId.\n // This allows you to autocomplete a filter option for a user.\n getFieldOptions?(fieldId: string, search: string): Observable;\n\n // getInitialAppliedFilters will return the default list of filters that should be displayed.\n // This allows you to have an initial filter state\n getInitialAppliedFilters?(): Promise;\n setInitialAppliedFilters?(filters: GalaxyFilterInterface[]): void;\n\n // getFilterInputOverrides?(): Observable;\n // This allows you to override the search box for any field\n // The filter input implementation will still have to abide by the operators allowed for that filter\n getFilterInputOverrides?(): Observable;\n}\n\n// GalaxyFilterChipInjectionToken is the external token used by consumers to specify the dependencies.\nexport const GalaxyFilterChipInjectionToken = new InjectionToken(\n '[Galaxy]: dependencies for the table filter',\n);\n\n// InnerGalaxyFilterChipInjectionToken is used by the library to have defaults provided for the method implementations (NullObjectPattern).\nexport const InnerGalaxyFilterChipInjectionToken = new InjectionToken>(\n '[Galaxy]: inner dependencies for the table filter where all properties are required',\n);\n\nexport interface GalaxyFilterDefinitionInterface {\n fieldId: string;\n type?: e.GalaxyFilterType;\n hasFilterOptions?: boolean;\n supportedOperators?: e.GalaxyFilterOperator[];\n fieldName?: string;\n // presets cannot be removed, but can be cleared\n preset?: boolean;\n // locked value filers cannot have their values removed after they are set\n lockedValue?: boolean;\n}\nexport interface GalaxyFilterValueInterface {\n boolean?: boolean;\n integer?: number;\n float?: number;\n string?: string;\n date?: Date;\n dateDefault?: e.GalaxyDateDefault;\n phone?: PhoneInterface;\n}\n\nexport interface GalaxyFilterInterface {\n fieldId: string;\n filterId?: string; // unique for each instance of filter on frontend\n operator: e.GalaxyFilterOperator;\n values?: GalaxyFilterValueInterface[];\n floatTolerance?: number;\n definition?: GalaxyFilterDefinitionInterface;\n}\n\nexport const GalaxySymbolsFilterOperators: { [key in e.GalaxyFilterOperator]: string } = {\n [e.GalaxyFilterOperator.FILTER_OPERATOR_INVALID]: 'GALAXY.FILTER.CHIP.SYMBOL.INVALID',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_EMPTY]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_EMPTY',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_EMPTY]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_NOT_EMPTY',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS]: 'GALAXY.FILTER.CHIP.SYMBOL.IS',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_NOT',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_ANY]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_ANY',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_ANY]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_NOT_ANY',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_ALL]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_ALL',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_ALL]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_NOT_ALL',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_CONTAINS]: 'GALAXY.FILTER.CHIP.SYMBOL.CONTAINS',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_DOES_NOT_CONTAIN]: 'GALAXY.FILTER.CHIP.SYMBOL.DOES_NOT_CONTAIN',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_EQUAL_TO]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_EQUAL_TO',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_EQUAL_TO]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_NOT_EQUAL_TO',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_GREATER_THAN]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_GREATER_THAN',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_GREATER_THAN_OR_EQUAL_TO]:\n 'GALAXY.FILTER.CHIP.SYMBOL.IS_GREATER_THAN_OR_EQUAL_TO',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_LESS_THAN]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_LESS_THAN',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_LESS_THAN_OR_EQUAL_TO]:\n 'GALAXY.FILTER.CHIP.SYMBOL.IS_LESS_THAN_OR_EQUAL_TO',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_BEFORE]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_BEFORE',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_BEFORE_OR_ON]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_BEFORE_OR_ON',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_AFTER]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_AFTER',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_AFTER_OR_ON]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_AFTER_OR_ON',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_BETWEEN]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_BETWEEN',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_BETWEEN]: 'GALAXY.FILTER.CHIP.SYMBOL.IS_NOT_BETWEEN',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_VALID]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_VALID',\n [e.GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_VALID]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_NOT_VALID',\n};\n\nexport const GalaxyStringFilterValue: { [key in e.GalaxyDateDefault]: string } = {\n [e.GalaxyDateDefault.DATE_DEFAULT_INVALID]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.INVALID',\n [e.GalaxyDateDefault.DATE_DEFAULT_TODAY]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.TODAY',\n [e.GalaxyDateDefault.DATE_DEFAULT_YESTERDAY]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.YESTERDAY',\n [e.GalaxyDateDefault.DATE_DEFAULT_TOMORROW]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.TOMORROW',\n [e.GalaxyDateDefault.DATE_DEFAULT_THIS_WEEK]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.THIS_WEEK',\n [e.GalaxyDateDefault.DATE_DEFAULT_LAST_WEEK]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.LAST_WEEK',\n [e.GalaxyDateDefault.DATE_DEFAULT_NEXT_WEEK]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.NEXT_WEEK',\n [e.GalaxyDateDefault.DATE_DEFAULT_THIS_MONTH]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.THIS_MONTH',\n [e.GalaxyDateDefault.DATE_DEFAULT_LAST_MONTH]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.LAST_MONTH',\n [e.GalaxyDateDefault.DATE_DEFAULT_NEXT_MONTH]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.NEXT_MONTH',\n [e.GalaxyDateDefault.DATE_DEFAULT_THIS_QUARTER]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.THIS_QUARTER',\n [e.GalaxyDateDefault.DATE_DEFAULT_LAST_QUARTER]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.LAST_QUARTER',\n [e.GalaxyDateDefault.DATE_DEFAULT_NEXT_QUARTER]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.NEXT_QUARTER',\n [e.GalaxyDateDefault.DATE_DEFAULT_THIS_YEAR]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.THIS_YEAR',\n [e.GalaxyDateDefault.DATE_DEFAULT_LAST_YEAR]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.LAST_YEAR',\n [e.GalaxyDateDefault.DATE_DEFAULT_NEXT_YEAR]: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.NEXT_YEAR',\n};\n\nexport interface GalaxyFilterInputOverride {\n fieldId: string;\n filterInput: Type;\n filterChip: Type;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { Observable, startWith, switchMap } from 'rxjs';\nimport { GalaxyFilterDefinitionInterface, InnerGalaxyFilterChipInjectionToken } from '../interface';\nimport { MatActionList, MatListItem } from '@angular/material/list';\n\n@Component({\n selector: 'glxy-add-filter-modal',\n templateUrl: './galaxy-add-filter-modal.component.html',\n styleUrls: ['./galaxy-add-filter-modal.component.scss'],\n imports: [\n CommonModule,\n MatSelectModule,\n ReactiveFormsModule,\n TranslateModule,\n GalaxyFormFieldModule,\n MatIconModule,\n MatDividerModule,\n MatInputModule,\n MatActionList,\n MatListItem,\n ],\n})\nexport class GalaxyAddFilterModalComponent {\n @Input() filtersHeader = '';\n @Output() addFilter = new EventEmitter();\n\n @ViewChild('searchInput') searchInput?: ElementRef;\n\n searchControl: UntypedFormControl = new UntypedFormControl();\n\n filterDefinitions$: Observable;\n\n private readonly filtersDependencies = inject(InnerGalaxyFilterChipInjectionToken);\n constructor() {\n this.filterDefinitions$ = this.searchControl.valueChanges.pipe(\n startWith(''),\n switchMap((searchTerm) => {\n return this.filtersDependencies.listObjectFilters(searchTerm);\n }),\n );\n }\n\n emitNewFilter(filter: GalaxyFilterDefinitionInterface): void {\n this.addFilter.emit({\n ...filter,\n });\n }\n}\n","
\n \n \n \n
\n\n
\n \n

{{ filtersHeader | translate }}

\n \n @for (filterDefinition of filterDefinitions$ | async; track filterDefinition) {\n \n {{ filterDefinition.fieldName }}\n \n }\n \n
\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Input,\n Type,\n ViewChild,\n ViewContainerRef,\n OnDestroy,\n} from '@angular/core';\nimport { GalaxyAbstractFilterChip, GalaxyFilterValueInterface } from './interface';\n\n@Component({\n selector: 'glxy-custom-filter-chip',\n template: ` `,\n imports: [CommonModule],\n})\nexport class GalaxyCustomFilterChipComponent implements GalaxyAbstractFilterChip, AfterViewInit, OnDestroy {\n private componentRef: ComponentRef | null = null;\n\n @Input({ required: true }) filterChip!: Type;\n _initialValues: GalaxyFilterValueInterface[] = [];\n\n @Input() set initialValue(values: GalaxyFilterValueInterface[]) {\n this._initialValues = values;\n }\n\n @ViewChild('chipOverrideComponent', { static: false, read: ViewContainerRef }) overrideRef?: ViewContainerRef;\n\n constructor(private ref: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n if (!this.filterChip) {\n console.error('No override found for filter chip');\n return;\n }\n\n const viewContainerRef = this.overrideRef;\n if (!viewContainerRef) return;\n viewContainerRef.clear();\n const componentRef = viewContainerRef.createComponent(this.filterChip);\n componentRef.instance.initialValue = this._initialValues;\n this.componentRef = componentRef;\n this.ref.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.componentRef?.destroy();\n this.componentRef = null;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n signal,\n Signal,\n computed,\n effect,\n inject,\n booleanAttribute,\n} from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport {\n GalaxyAbstractFilterInput,\n GalaxyFilterValueInterface,\n InnerGalaxyFilterChipInjectionToken,\n} from '../interface';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { Subscription, shareReplay } from 'rxjs';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { distinctUntilChanged, filter, switchMap } from 'rxjs/operators';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n selector: 'glxy-checkbox-filter-input',\n template: `\n \n \n {{ control.option }}\n \n \n `,\n providers: [\n { provide: GalaxyAbstractFilterInput, useExisting: forwardRef(() => GalaxyCheckboxFilterInputComponent) },\n ],\n imports: [\n CommonModule,\n TranslateModule,\n ReactiveFormsModule,\n MatInputModule,\n GalaxyFormFieldModule,\n MatAutocompleteModule,\n MatCheckboxModule,\n ],\n})\nexport class GalaxyCheckboxFilterInputComponent implements GalaxyAbstractFilterInput, OnDestroy {\n @Input() set fieldId(value: string) {\n this._fieldId.set(value);\n }\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n if (value) {\n this.formGroup.disable();\n }\n }\n\n @Output() valueChanges = new EventEmitter();\n formGroup: FormGroup = new FormGroup({});\n\n _fieldId = signal('');\n availableOptions = signal([]);\n _initialValue = signal([]);\n formValueChanges = toSignal(this.formGroup.valueChanges);\n controls: Signal> = computed(() => {\n let controls: Array<{ formControl: FormControl; option: string }> = [];\n Object.keys(this.formValueChanges() ?? {}).forEach((option) => {\n controls = [...controls, { option, formControl: this.formGroup.get(option) as FormControl }];\n });\n return controls;\n });\n\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n this._initialValue.set(value);\n }\n\n subscriptions: Subscription[] = [];\n\n private readonly filtersDependencies = inject(InnerGalaxyFilterChipInjectionToken);\n\n constructor(private readonly formBuilder: FormBuilder) {\n effect(() => {\n const currentValues = this._initialValue().map((value) => value.string);\n const options = this.availableOptions();\n Object.keys(this.formGroup.controls).forEach((option) => {\n if (!options.includes(option)) {\n this.formGroup.removeControl(option);\n }\n });\n options.forEach((option) => {\n let control = this.formGroup.get(option);\n if (!control) {\n control = this.formBuilder.control(currentValues.includes(option));\n this.formGroup.addControl(option, control);\n }\n if (control.pristine) {\n control.setValue(currentValues.includes(option));\n }\n });\n });\n\n const fieldId$ = toObservable(this._fieldId);\n\n this.subscriptions.push(\n this.formGroup.valueChanges\n .pipe(distinctUntilChanged((a, b) => Object.keys(a).sort().join('') === Object.keys(b).sort().join()))\n .subscribe((value) => {\n const values: GalaxyFilterValueInterface[] = [];\n Object.entries(value).forEach(([option, checked]) => {\n if (checked) {\n values.push({ string: option });\n }\n });\n this.valueChanges.emit(values);\n }),\n fieldId$\n .pipe(\n filter((fieldId) => fieldId.length > 0),\n switchMap((fieldId) => this.filtersDependencies.getFieldOptions(fieldId, '')),\n shareReplay(1),\n )\n .subscribe((options) => {\n this.availableOptions.set(options);\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n }\n\n clearValue() {\n this.formGroup.reset();\n Object.values(this.formGroup.controls).forEach((control) => control.setValue(false));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewContainerRef,\n forwardRef,\n inject,\n ComponentRef,\n OnDestroy,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { GalaxyAbstractFilterInput, GalaxyFilterInputOverride, GalaxyFilterValueInterface } from '../interface';\nimport { GalaxyFilterOperator } from '../enums';\n\n@Component({\n selector: 'glxy-custom-filter-input',\n template: ` `,\n providers: [{ provide: GalaxyAbstractFilterInput, useExisting: forwardRef(() => GalaxyCustomFilterInputComponent) }],\n imports: [CommonModule],\n})\nexport class GalaxyCustomFilterInputComponent implements GalaxyAbstractFilterInput, AfterViewInit, OnDestroy {\n @Input({ required: true }) filterOverride!: GalaxyFilterInputOverride;\n _initialValues: GalaxyFilterValueInterface[] = [];\n\n @Input() set initialValue(values: GalaxyFilterValueInterface[]) {\n this._initialValues = values;\n }\n\n _operator?: GalaxyFilterOperator;\n @Input() set operator(value: GalaxyFilterOperator) {\n this._operator = value;\n if (!this.componentRef) return;\n this.componentRef.instance.operator = value;\n }\n\n @Output() valueChanges = new EventEmitter();\n @ViewChild('filterOverrideComponent', { static: false, read: ViewContainerRef }) overrideRef?: ViewContainerRef;\n private componentRef: ComponentRef | null = null;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private ref: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n if (!this.filterOverride) {\n console.error('No override found for filter input');\n return;\n }\n\n const viewContainerRef = this.overrideRef;\n if (!viewContainerRef) return;\n\n viewContainerRef.clear();\n const componentRef = viewContainerRef.createComponent(this.filterOverride.filterInput);\n componentRef.instance.operator = this._operator;\n componentRef.instance.initialValue = this._initialValues;\n componentRef.instance.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value: GalaxyFilterValueInterface[]) => {\n this.valueChanges.emit(value);\n });\n this.componentRef = componentRef;\n this.ref.detectChanges();\n }\n\n clearValue() {\n const viewContainerRef = this.overrideRef;\n viewContainerRef?.clear();\n this._initialValues = [];\n }\n\n ngOnDestroy(): void {\n this.componentRef?.destroy();\n this.componentRef = null;\n }\n}\n","import { GalaxyDateDefault } from '../enums';\nimport { DateOption } from './date-filter-input';\n\nexport const dateDefaultToLabel: DateOption[] = [\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_INVALID,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.INVALID',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_TODAY,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.TODAY',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_TOMORROW,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.TOMORROW',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_YESTERDAY,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.YESTERDAY',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_THIS_WEEK,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.THIS_WEEK',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_NEXT_WEEK,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.NEXT_WEEK',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_LAST_WEEK,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.LAST_WEEK',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_THIS_MONTH,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.THIS_MONTH',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_NEXT_MONTH,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.NEXT_MONTH',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_LAST_MONTH,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.LAST_MONTH',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_THIS_QUARTER,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.THIS_QUARTER',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_NEXT_QUARTER,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.NEXT_QUARTER',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_LAST_QUARTER,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.LAST_QUARTER',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_THIS_YEAR,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.THIS_YEAR',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_NEXT_YEAR,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.NEXT_YEAR',\n },\n {\n dateOption: GalaxyDateDefault.DATE_DEFAULT_LAST_YEAR,\n label: 'GALAXY.FILTER.CHIP.DATE_DEFAULT.LAST_YEAR',\n },\n];\n","import {\n booleanAttribute,\n Component,\n computed,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n signal,\n Signal,\n WritableSignal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GalaxyAbstractFilterInput, GalaxyFilterValueInterface } from '../interface';\nimport { GalaxyDateDefault, GalaxyFilterOperator } from '../enums';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { combineLatest, map, Observable, startWith, Subscription, tap } from 'rxjs';\nimport { dateDefaultToLabel } from './date-default-labels';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { DatePickerSelection, GalaxyDatepickerModule } from '@vendasta/galaxy/datepicker';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\n\nexport interface DateOption {\n dateOption: GalaxyDateDefault;\n label: string;\n}\n\ninterface DateFilterInputState {\n operator: GalaxyFilterOperator;\n}\n\n@Component({\n selector: 'glxy-date-filter-input',\n templateUrl: './date-filter-input.html',\n styleUrls: ['./date-filter-input.scss'],\n providers: [{ provide: GalaxyAbstractFilterInput, useExisting: forwardRef(() => GalaxyDateFilterInputComponent) }],\n imports: [\n CommonModule,\n TranslateModule,\n MatSelectModule,\n MatButtonModule,\n MatInputModule,\n GalaxyFormFieldModule,\n ReactiveFormsModule,\n GalaxyDatepickerModule,\n MatDatepickerModule,\n ],\n})\nexport class GalaxyDateFilterInputComponent implements GalaxyAbstractFilterInput, OnDestroy {\n dateSelectionType: DatePickerSelection = DatePickerSelection.single;\n\n state: WritableSignal = signal({\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n });\n\n @Input() set operator(value: GalaxyFilterOperator) {\n this.state.update((state) => ({ ...state, operator: value }));\n this.dateSelectionType =\n value === GalaxyFilterOperator.FILTER_OPERATOR_IS_BETWEEN ||\n value === GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_BETWEEN\n ? DatePickerSelection.range\n : DatePickerSelection.single;\n }\n\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n if (value?.length > 0 && value[0].date) {\n this.dateDefaultControl.setValue(GalaxyDateDefault.DATE_DEFAULT_INVALID);\n window.setTimeout(() => {\n if (value?.length > 0 && value[0].date) {\n if (value.length > 1 && value[1].date) {\n this.startDateControl.setValue(value[0].date);\n this.endDateControl.setValue(value[1].date);\n } else {\n const toUTC = new Date(value[0].date);\n const day = toUTC.getUTCDate().toString().padStart(2, '0');\n const month = (toUTC.getUTCMonth() + 1).toString().padStart(2, '0');\n const year = toUTC.getUTCFullYear();\n this.dateControl.setValue(`${year}-${month}-${day}`);\n }\n }\n }, 0);\n this.valueChanges.emit(value);\n } else if (value?.length > 0 && value[0].dateDefault) {\n window.setTimeout(() => {\n if (value?.length > 0 && value[0].dateDefault) {\n this.dateDefaultControl.setValue(value[0].dateDefault, { emitEvent: true });\n }\n }, 0);\n this.valueChanges.emit(value);\n }\n }\n\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n if (value) {\n this.dateControl.disable();\n this.startDateControl.disable();\n this.endDateControl.disable();\n this.dateDefaultControl.disable();\n }\n }\n\n @Output() valueChanges = new EventEmitter();\n\n dateDefaultOptions: Signal = computed(() => {\n const operator = this.state().operator;\n if (\n operator === GalaxyFilterOperator.FILTER_OPERATOR_IS_BETWEEN ||\n operator === GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_BETWEEN\n ) {\n this.dateDefaultControl.setValue(GalaxyDateDefault.DATE_DEFAULT_INVALID);\n return dateDefaultToLabel.filter((option) => option.dateOption === GalaxyDateDefault.DATE_DEFAULT_INVALID);\n }\n return dateDefaultToLabel;\n });\n\n dateDefaultControl: FormControl = new FormControl(\n GalaxyDateDefault.DATE_DEFAULT_INVALID,\n {\n nonNullable: true,\n },\n );\n\n dateControl: FormControl = new FormControl(undefined, { nonNullable: true });\n startDateControl: FormControl = new FormControl(undefined, { nonNullable: true });\n endDateControl: FormControl = new FormControl(undefined, { nonNullable: true });\n\n showDate$: Observable = this.dateDefaultControl.valueChanges.pipe(\n startWith(GalaxyDateDefault.DATE_DEFAULT_INVALID),\n map((dateDefault) => {\n return dateDefault === GalaxyDateDefault.DATE_DEFAULT_INVALID;\n }),\n );\n\n showDateRangePicker: Signal = computed(() => {\n const operator = this.state().operator;\n return (\n operator === GalaxyFilterOperator.FILTER_OPERATOR_IS_BETWEEN ||\n operator === GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_BETWEEN\n );\n });\n\n subscriptions: Subscription[] = [];\n\n constructor() {\n this.subscriptions.push(\n this.dateDefaultControl.valueChanges\n .pipe(\n tap((value) => {\n if (value !== GalaxyDateDefault.DATE_DEFAULT_INVALID) {\n this.valueChanges.emit([{ dateDefault: value }]);\n }\n }),\n )\n .subscribe(),\n );\n\n this.subscriptions.push(\n this.dateControl.valueChanges\n .pipe(\n tap((value) => {\n if (value) {\n this.valueChanges.emit([{ date: new Date(value) }]);\n }\n }),\n )\n .subscribe(),\n );\n\n this.subscriptions.push(\n combineLatest([this.startDateControl.valueChanges, this.endDateControl.valueChanges])\n .pipe(\n tap(([startDate, endDate]) => {\n if (startDate && endDate) {\n this.valueChanges.emit([{ date: startDate }, { date: endDate }]);\n }\n }),\n )\n .subscribe(),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n }\n\n clearValue() {\n this.dateDefaultControl.setValue(GalaxyDateDefault.DATE_DEFAULT_INVALID);\n this.dateControl.setValue(undefined);\n }\n}\n","
\n \n \n \n {{ option.label | translate }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { GalaxyFilterValueInterface } from '../interface';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'glxy-no-input-filter-input',\n template: ``,\n providers: [],\n imports: [CommonModule],\n})\nexport class GalaxyNoInputFilterInputComponent {\n @Input() set initialValue(_: GalaxyFilterValueInterface[]) {\n this.valueChanges.emit([]);\n }\n @Output() valueChanges = new EventEmitter();\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'glxy-none-selected-input-filter-input',\n template: `

{{ 'GALAXY.FILTER.CHIP.INVALID_FILTER_TYPE' | translate }}

`,\n providers: [],\n imports: [CommonModule, TranslateModule],\n})\nexport class GalaxyNoneSelectedFilterInputComponent {}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n booleanAttribute,\n effect,\n forwardRef,\n inject,\n signal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { Subscription, shareReplay } from 'rxjs';\nimport { distinctUntilChanged, filter, switchMap } from 'rxjs/operators';\nimport {\n GalaxyAbstractFilterInput,\n GalaxyFilterValueInterface,\n InnerGalaxyFilterChipInjectionToken,\n} from '../interface';\n\n@Component({\n selector: 'glxy-radio-filter-input',\n template: `\n \n \n {{ option }}\n \n \n `,\n providers: [{ provide: GalaxyAbstractFilterInput, useExisting: forwardRef(() => GalaxyRadioFilterInputComponent) }],\n imports: [\n CommonModule,\n TranslateModule,\n ReactiveFormsModule,\n MatInputModule,\n GalaxyFormFieldModule,\n MatAutocompleteModule,\n MatRadioModule,\n ],\n})\nexport class GalaxyRadioFilterInputComponent implements GalaxyAbstractFilterInput, OnDestroy {\n @Input() set fieldId(value: string) {\n this._fieldId.set(value);\n }\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n if (value) {\n this.formControl.disable();\n }\n }\n\n @Output() valueChanges = new EventEmitter();\n formControl: FormControl = new FormControl('');\n\n _fieldId = signal('');\n availableOptions = signal([]);\n _initialValue = signal([]);\n\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n this._initialValue.set(value);\n }\n\n subscriptions: Subscription[] = [];\n\n private readonly filtersDependencies = inject(InnerGalaxyFilterChipInjectionToken);\n\n constructor() {\n effect(() => {\n const initialValue = this._initialValue();\n if (initialValue.length > 0) {\n this.formControl.setValue(initialValue[0].string);\n }\n });\n const fieldId$ = toObservable(this._fieldId);\n\n this.subscriptions.push(\n this.formControl.valueChanges.pipe(distinctUntilChanged()).subscribe((value) => {\n this.valueChanges.emit([{ string: value }]);\n }),\n fieldId$\n .pipe(\n filter((fieldId) => fieldId.length > 0),\n switchMap((fieldId) => this.filtersDependencies.getFieldOptions(fieldId, '')),\n shareReplay(1),\n )\n .subscribe((options) => {\n this.availableOptions.set(options);\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n }\n\n clearValue() {\n this.formControl.reset();\n }\n}\n","import { GalaxyFilterOperator } from './enums';\n\nexport const SEARCH_DEBOUNCE_MS = 300;\n\nexport const FILTER_RANGE_OPERATORS = [\n GalaxyFilterOperator.FILTER_OPERATOR_IS_BETWEEN,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_BETWEEN,\n];\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n Signal,\n booleanAttribute,\n computed,\n effect,\n forwardRef,\n inject,\n signal,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { Subscription, combineLatest, shareReplay } from 'rxjs';\nimport { debounceTime, filter, switchMap } from 'rxjs/operators';\nimport { SEARCH_DEBOUNCE_MS } from '../constants';\nimport {\n GalaxyAbstractFilterInput,\n GalaxyFilterValueInterface,\n InnerGalaxyFilterChipInjectionToken,\n} from '../interface';\n\n@Component({\n selector: 'glxy-string-filter-input',\n template: `\n \n \n \n \n {{ option }}\n \n \n \n `,\n providers: [{ provide: GalaxyAbstractFilterInput, useExisting: forwardRef(() => GalaxyStringFilterInputComponent) }],\n imports: [\n CommonModule,\n TranslateModule,\n ReactiveFormsModule,\n MatInputModule,\n GalaxyFormFieldModule,\n MatAutocompleteModule,\n ],\n})\nexport class GalaxyStringFilterInputComponent implements GalaxyAbstractFilterInput, OnDestroy {\n @Input() set fieldId(value: string) {\n this._fieldId.set(value);\n }\n @Output() valueChanges = new EventEmitter();\n formControl: FormControl = new FormControl('', { nonNullable: true });\n\n searchTerm = toSignal(this.formControl.valueChanges, { initialValue: '' });\n _fieldId = signal('');\n availableOptions = signal([]);\n\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n if (value?.length > 0 && value[0].string) {\n this.formControl.setValue(value[0].string);\n }\n }\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n if (value) {\n this.formControl.disable();\n }\n }\n\n subscriptions: Subscription[] = [];\n filteredOptions: Signal = computed(() => this.availableOptions());\n\n private readonly filtersDependencies = inject(InnerGalaxyFilterChipInjectionToken);\n constructor() {\n effect(() => {\n const value = this.searchTerm();\n if (value === '') {\n this.valueChanges.emit([]);\n return;\n }\n this.valueChanges.emit([{ string: value }]);\n });\n\n const searchTerm$ = toObservable(this.searchTerm);\n const fieldId$ = toObservable(this._fieldId);\n\n this.subscriptions.push(\n combineLatest([searchTerm$, fieldId$])\n .pipe(\n filter(([, fieldId]) => !!fieldId),\n debounceTime(SEARCH_DEBOUNCE_MS),\n switchMap(([searchTerm, fieldId]) => this.filtersDependencies.getFieldOptions(fieldId, searchTerm)),\n shareReplay(1),\n )\n .subscribe((options) => this.availableOptions.set(options)),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n }\n\n clearValue() {\n this.formControl.setValue('');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n Component,\n computed,\n effect,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnDestroy,\n Output,\n signal,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyTagsModule } from '@vendasta/galaxy/tags';\nimport { debounceTime, distinctUntilChanged, filter, Subscription, switchMap } from 'rxjs';\nimport { SEARCH_DEBOUNCE_MS } from '../constants';\nimport {\n GalaxyAbstractFilterInput,\n GalaxyFilterValueInterface,\n InnerGalaxyFilterChipInjectionToken,\n} from '../interface';\n\nconst MAX_TAG_LENGTH = 100;\n\n@Component({\n selector: 'glxy-tags-filter-input',\n template: `\n \n \n \n \n `,\n providers: [{ provide: GalaxyAbstractFilterInput, useExisting: forwardRef(() => GalaxyTagsFilterInputComponent) }],\n imports: [CommonModule, TranslateModule, ReactiveFormsModule, GalaxyTagsModule, GalaxyFormFieldModule],\n})\nexport class GalaxyTagsFilterInputComponent implements GalaxyAbstractFilterInput, OnDestroy {\n MAX_TAG_LENGTH = MAX_TAG_LENGTH;\n\n _tagsFieldId = signal('');\n searchTerm = signal('');\n availableTags = signal([]);\n\n @Input() set tagsFieldId(value: string) {\n this._tagsFieldId.set(value);\n }\n\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n const tags: string[] = value.map((val) => val?.string || '').filter((tag) => tag.length > 0);\n this.formControl.setValue(tags);\n }\n\n @Input() maxTags: number | null = null;\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n if (value) {\n this.formControl.disable();\n }\n }\n\n @Output() valueChanges = new EventEmitter();\n formControl: FormControl = new FormControl([], { nonNullable: true });\n\n subscriptions: Subscription[] = [];\n\n private readonly filtersDependencies = inject(InnerGalaxyFilterChipInjectionToken);\n constructor() {\n const tagsUsed = toSignal(this.formControl.valueChanges, { initialValue: [] });\n effect(() => {\n const filterValues = tagsUsed().map((tag) => ({ string: tag }));\n this.valueChanges.emit(filterValues);\n });\n\n const options$ = toObservable(\n computed(() => {\n return {\n searchTerm: this.searchTerm(),\n tagsFieldId: this._tagsFieldId(),\n };\n }),\n );\n\n const availableTags$ = options$.pipe(\n filter((options) => options.tagsFieldId.length > 0),\n distinctUntilChanged(),\n debounceTime(SEARCH_DEBOUNCE_MS),\n switchMap((o) => this.filtersDependencies.getFieldOptions(o.tagsFieldId, o.searchTerm)),\n );\n\n this.subscriptions.push(availableTags$.subscribe((availableTags) => this.availableTags.set(availableTags)));\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n }\n\n searchTextChanged(searchTerm: string) {\n this.searchTerm.set(searchTerm);\n }\n\n clearValue() {\n this.formControl.setValue([]);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n booleanAttribute,\n effect,\n forwardRef,\n inject,\n signal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { Subscription, shareReplay } from 'rxjs';\nimport { distinctUntilChanged, filter, switchMap } from 'rxjs/operators';\nimport {\n GalaxyAbstractFilterInput,\n GalaxyFilterValueInterface,\n InnerGalaxyFilterChipInjectionToken,\n} from '../interface';\n\n@Component({\n selector: 'glxy-boolean-filter-input',\n template: `\n \n \n {{ option }}\n \n \n `,\n styleUrls: ['./boolean-filter-input.component.scss'],\n providers: [{ provide: GalaxyAbstractFilterInput, useExisting: forwardRef(() => GalaxyBooleanFilterInputComponent) }],\n imports: [\n CommonModule,\n TranslateModule,\n ReactiveFormsModule,\n MatInputModule,\n GalaxyFormFieldModule,\n MatAutocompleteModule,\n MatRadioModule,\n ],\n})\nexport class GalaxyBooleanFilterInputComponent implements GalaxyAbstractFilterInput, OnDestroy {\n @Input() set fieldId(value: string) {\n this._fieldId.set(value);\n }\n\n @Output() valueChanges = new EventEmitter();\n formControl: FormControl = new FormControl('');\n\n _fieldId = signal('');\n availableOptions = signal(['True', 'False']);\n _initialValue = signal([]);\n\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n this._initialValue.set(value);\n }\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n if (value) {\n this.formControl.disable();\n }\n }\n\n subscriptions: Subscription[] = [];\n\n private readonly filtersDependencies = inject(InnerGalaxyFilterChipInjectionToken);\n\n constructor() {\n effect(() => {\n const initialValue = this._initialValue();\n if (initialValue.length > 0) {\n this.formControl.setValue(initialValue[0].boolean ? 'True' : 'False');\n }\n });\n const fieldId$ = toObservable(this._fieldId);\n\n this.subscriptions.push(\n this.formControl.valueChanges.pipe(distinctUntilChanged()).subscribe((value) => {\n if (value === 'True') {\n this.valueChanges.emit([{ boolean: true }]);\n } else if (value === 'False') {\n this.valueChanges.emit([{ boolean: false }]);\n }\n }),\n fieldId$\n .pipe(\n filter((fieldId) => fieldId.length > 0),\n switchMap((fieldId) => this.filtersDependencies.getFieldOptions(fieldId, '')),\n shareReplay(1),\n )\n .subscribe((options) => {\n this.availableOptions.set(options);\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n }\n\n clearValue() {\n this.formControl.reset();\n }\n}\n","/*\nChrome is really aggressive about autofilling form fields,\neven when you have autocomplete=\"off\" set.\nThis is because historically, many forms have been built with a default of\nautocomplete=\"off\", which would disable it on forms that actually need it.\nThey view CRM systems as in the minority, and not worth the trade-off\nof no longer helping with forms that have bad defaults.\n\nThe workaround (for now) is to have autocomplete value that doesn't match anything.\n\nFrom:\n https://bugs.chromium.org/p/chromium/issues/detail?id=468153#c164\nLinked from:\n https://github.com/alphagov/accessible-autocomplete/issues/325\n*/\n\nexport function stopChromeAutofill(): string {\n return Math.random().toString(36).substring(2);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n DestroyRef,\n effect,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Signal,\n signal,\n} from '@angular/core';\nimport {\n GalaxyAbstractFilterInput,\n GalaxyFilterValueInterface,\n InnerGalaxyFilterChipInjectionToken,\n} from '../interface';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { combineLatest, Observable, shareReplay, Subscription, tap } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, startWith, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { SEARCH_DEBOUNCE_MS } from '../constants';\nimport { MAT_SELECT_CONFIG, MatSelectModule } from '@angular/material/select';\nimport { NgxMatSelectSearchModule } from 'ngx-mat-select-search';\nimport { CountryCode } from 'libphonenumber-js';\nimport { CountryCodeService } from '@vendasta/galaxy/utility/country-codes';\nimport { CountryOption, countryOptionsFactoryProvider } from '@vendasta/galaxy/utility/country-codes';\nimport { PhoneFieldsInterface } from '@vendasta/crm';\nimport { DigitOnlyModule } from '@uiowa/digit-only';\nimport { stopChromeAutofill } from './stop-chrome-autofill';\n\nexport const DEFAULT_COUNTRY_CODE = 'US';\n\n@Component({\n selector: 'glxy-phone-filter-input',\n templateUrl: './phone-filter-input.component.html',\n imports: [\n CommonModule,\n TranslateModule,\n ReactiveFormsModule,\n MatInputModule,\n GalaxyFormFieldModule,\n MatAutocompleteModule,\n NgxMatSelectSearchModule,\n MatSelectModule,\n DigitOnlyModule,\n ],\n providers: [\n countryOptionsFactoryProvider,\n CountryCodeService,\n {\n provide: GalaxyAbstractFilterInput,\n useExisting: forwardRef(() => GalaxyPhoneFilterInputComponent),\n },\n {\n provide: MAT_SELECT_CONFIG,\n useValue: { overlayPanelClass: 'phone-filter-country-selector-overlay-pane' },\n },\n ],\n styleUrls: ['./phone-filter-input.component.scss'],\n})\nexport class GalaxyPhoneFilterInputComponent implements GalaxyAbstractFilterInput, OnInit, OnDestroy {\n @Input() set fieldId(value: string) {\n this._fieldId.set(value);\n }\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n if (value?.length > 0 && value[0].phone) {\n const startingPhoneNumber = value[0].phone.nationalNumber || '';\n const startingCountry = value[0].phone.isoCountryCode || DEFAULT_COUNTRY_CODE;\n const startingExtension = value[0].phone.extension || '';\n this.phoneNumberControl.setValue(startingPhoneNumber);\n this.countryControl.setValue(startingCountry);\n this.countryCodeService.countryCodeUsed(startingCountry as CountryCode);\n this.extensionControl.setValue(startingExtension);\n const phoneVals = {\n isoCountryCode: startingCountry,\n nationalNumber: startingPhoneNumber,\n extension: startingExtension,\n } as PhoneFieldsInterface;\n this.phoneFieldVals.set(phoneVals);\n }\n }\n\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n if (value) {\n this.phoneFormGroup.disable();\n }\n }\n\n @Output() valueChanges = new EventEmitter();\n\n searchCountryControl = new FormControl('');\n private countryControl = new FormControl('US');\n private phoneNumberControl = new FormControl('', { nonNullable: true });\n private extensionControl = new FormControl('');\n phoneFormGroup: FormGroup = new FormGroup({\n country: this.countryControl,\n phoneNumber: this.phoneNumberControl,\n extension: this.extensionControl,\n });\n\n disableAutoComplete: string = stopChromeAutofill();\n\n selectedCountry = computed(() => {\n return this.countryCodeService.getCountryOption(this.phoneFieldVals().isoCountryCode as CountryCode);\n });\n selectedCountryCallingCode = computed(() => this.selectedCountry()?.callingCode || '');\n countryOptions$: Observable = this.countryCodeService.countryOptions$.pipe(\n distinctUntilChanged(),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n filteredCountryOptions$: Observable = this.searchCountryControl.valueChanges.pipe(\n startWith(''),\n withLatestFrom(this.countryOptions$),\n map(([filterValue, countryOptions]) => {\n const fVal = filterValue || '';\n return countryOptions.filter((c) => {\n return (\n c.callingCode.includes(fVal) ||\n c.countryCode.toLowerCase().includes(fVal?.toLowerCase()) ||\n c.countryName.toLowerCase().includes(fVal?.toLowerCase())\n );\n });\n }),\n );\n\n private phoneFieldVals = signal({\n isoCountryCode: 'US',\n nationalNumber: '',\n extension: '',\n } as PhoneFieldsInterface);\n\n searchTerm = toSignal(this.phoneFormGroup.valueChanges, { initialValue: '' });\n _fieldId = signal('');\n availableOptions = signal([]);\n\n subscriptions: Subscription[] = [];\n filteredOptions: Signal = computed(() => this.availableOptions());\n\n private readonly filtersDependencies = inject(InnerGalaxyFilterChipInjectionToken);\n constructor(\n private readonly countryCodeService: CountryCodeService,\n readonly destroyRef: DestroyRef,\n ) {\n effect(() => {\n const value = this.searchTerm();\n if (value === '') {\n this.valueChanges.emit([]);\n return;\n }\n this.valueChanges.emit([\n {\n phone: { isoCountryCode: value?.country, nationalNumber: value?.phoneNumber, extension: value?.extension },\n },\n ]);\n });\n\n const searchTerm$ = toObservable(this.searchTerm);\n const fieldId$ = toObservable(this._fieldId);\n\n this.subscriptions.push(\n combineLatest([searchTerm$, fieldId$])\n .pipe(\n filter(([, fieldId]) => !!fieldId),\n debounceTime(SEARCH_DEBOUNCE_MS),\n switchMap(([searchTerm, fieldId]) => {\n const stringSearch = this.bundlePhoneNumber(searchTerm);\n return this.filtersDependencies.getFieldOptions(fieldId, stringSearch);\n }),\n shareReplay(1),\n )\n .subscribe((options) => this.availableOptions.set(options)),\n );\n }\n\n ngOnInit(): void {\n this.phoneFormGroup.valueChanges\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap((newVal) => {\n this.phoneFieldVals.set({\n isoCountryCode: newVal?.country,\n nationalNumber: newVal?.phoneNumber,\n extension: newVal?.extension,\n });\n }),\n )\n .subscribe();\n }\n\n bundlePhoneNumber(phoneValues: any | string): string {\n if (!phoneValues) {\n return phoneValues;\n }\n let bundle = '';\n if ('country' in phoneValues && phoneValues['country'].length > 0) {\n bundle += this.selectedCountry()?.callingCode;\n }\n if ('phoneNumber' in phoneValues && phoneValues['phoneNumber'].length > 0) {\n bundle += phoneValues['phoneNumber'];\n return bundle;\n }\n return '';\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n }\n\n clearValue() {\n this.countryControl.setValue('US');\n this.phoneNumberControl.setValue('');\n this.extensionControl.setValue('');\n }\n}\n","\n \n \n \n \n \n {{ selectedCountry.flag }}\n

\n
\n \n Invalid\n \n \n \n \n {{ option.callingCode }}\n ({{ option.flag }} {{ option.countryName }})\n \n
\n\n \n \n
\n \n {{ selectedCountryCallingCode() }}\n \n \n \n \n \n \n \n \n
\n \n \n \n {{ option }}\n \n \n\n","import { GalaxyFilterOperator } from './enums';\n\nexport const filterOperatorToLabel: Record = {\n [GalaxyFilterOperator.FILTER_OPERATOR_INVALID]: 'GALAXY.FILTER.CHIP.OPERATOR.INVALID',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_EMPTY]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_EMPTY',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_EMPTY]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_NOT_EMPTY',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS]: 'GALAXY.FILTER.CHIP.OPERATOR.IS',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_NOT',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_ANY]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_ANY',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_ANY]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_NOT_ANY',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_ALL]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_ALL',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_ALL]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_NOT_ALL',\n [GalaxyFilterOperator.FILTER_OPERATOR_CONTAINS]: 'GALAXY.FILTER.CHIP.OPERATOR.CONTAINS',\n [GalaxyFilterOperator.FILTER_OPERATOR_DOES_NOT_CONTAIN]: 'GALAXY.FILTER.CHIP.OPERATOR.DOES_NOT_CONTAIN',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_EQUAL_TO]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_EQUAL_TO',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_EQUAL_TO]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_NOT_EQUAL_TO',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_GREATER_THAN]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_GREATER_THAN',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_GREATER_THAN_OR_EQUAL_TO]:\n 'GALAXY.FILTER.CHIP.OPERATOR.IS_GREATER_THAN_OR_EQUAL_TO',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_LESS_THAN]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_LESS_THAN',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_LESS_THAN_OR_EQUAL_TO]:\n 'GALAXY.FILTER.CHIP.OPERATOR.IS_LESS_THAN_OR_EQUAL_TO',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_BEFORE]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_BEFORE',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_BEFORE_OR_ON]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_BEFORE_OR_ON',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_AFTER]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_AFTER',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_AFTER_OR_ON]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_AFTER_OR_ON',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_BETWEEN]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_BETWEEN',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_BETWEEN]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_NOT_BETWEEN',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_VALID]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_VALID',\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_VALID]: 'GALAXY.FILTER.CHIP.OPERATOR.IS_NOT_VALID',\n};\n","import { booleanAttribute, Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GalaxyAbstractFilterInput, GalaxyFilterValueInterface } from '../interface';\nimport { GalaxyFilterOperator } from '../enums';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { BehaviorSubject, combineLatest, debounceTime, startWith } from 'rxjs';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\ntype SelectionType = 'single' | 'range';\n\n@Component({\n selector: 'glxy-float-filter-input',\n templateUrl: './float-filter-input.html',\n styleUrls: ['./float-filter-input.scss'],\n providers: [{ provide: GalaxyAbstractFilterInput, useExisting: forwardRef(() => GalaxyFloatFilterInputComponent) }],\n imports: [CommonModule, TranslateModule, MatInputModule, GalaxyFormFieldModule, ReactiveFormsModule],\n})\nexport class GalaxyFloatFilterInputComponent implements GalaxyAbstractFilterInput {\n @Input() set operator(value: GalaxyFilterOperator) {\n this.setSelectionType(value);\n }\n\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n if (value?.length === 1) {\n this.setValue(value[0]);\n } else if (value?.length === 2) {\n this.setRangeValue(value[0], value[1]);\n }\n }\n\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n if (value) {\n this.valueControl.disable();\n this.endValueControl.disable();\n }\n }\n\n @Output() valueChanges = new EventEmitter();\n\n readonly selectionType$$ = new BehaviorSubject('single');\n readonly valueControl = new FormControl(undefined, { nonNullable: true });\n readonly endValueControl = new FormControl(undefined, { nonNullable: true });\n\n constructor() {\n combineLatest([\n this.selectionType$$,\n this.valueControl.valueChanges.pipe(startWith(undefined)),\n this.endValueControl.valueChanges.pipe(startWith(undefined)),\n ])\n .pipe(takeUntilDestroyed(), debounceTime(100))\n .subscribe(([selectionType, value, endValue]) => {\n if (selectionType === 'single') {\n this.valueChanges.emit([{ float: value }]);\n } else {\n this.valueChanges.emit([{ float: value }, { float: endValue }]);\n }\n });\n }\n\n clearValue() {\n this.valueControl.reset();\n this.endValueControl.reset();\n }\n\n private setSelectionType(operator: GalaxyFilterOperator): void {\n const rangeOperators = [\n GalaxyFilterOperator.FILTER_OPERATOR_IS_BETWEEN,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_BETWEEN,\n ];\n this.selectionType$$.next(rangeOperators.includes(operator) ? 'range' : 'single');\n }\n\n private setValue(value: GalaxyFilterValueInterface): void {\n this.valueControl.setValue(value.float);\n this.endValueControl.setValue(undefined);\n }\n\n private setRangeValue(startValue: GalaxyFilterValueInterface, endValue: GalaxyFilterValueInterface): void {\n this.valueControl.setValue(startValue.float);\n this.endValueControl.setValue(endValue.float);\n }\n}\n","
\n @if ((selectionType$$ | async) === 'single') {\n \n \n \n } @else {\n \n \n \n \n \n \n \n }\n
\n","import { GalaxyAbstractFilterInput, GalaxyFilterValueInterface } from '../interface';\nimport { booleanAttribute, Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { GalaxyFilterOperator } from '../enums';\nimport { BehaviorSubject, combineLatest, debounceTime, startWith } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\ntype SelectionType = 'single' | 'range';\n\n@Component({\n selector: 'glxy-integer-filter-input',\n templateUrl: './integer-filter-input.component.html',\n styleUrls: ['./integer-filter-input.component.scss'],\n providers: [{ provide: GalaxyAbstractFilterInput, useExisting: forwardRef(() => GalaxyIntegerFilterInputComponent) }],\n imports: [CommonModule, TranslateModule, MatInputModule, GalaxyFormFieldModule, ReactiveFormsModule],\n})\nexport class GalaxyIntegerFilterInputComponent implements GalaxyAbstractFilterInput {\n @Input() set operator(value: GalaxyFilterOperator) {\n this.setSelectionType(value);\n }\n\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n if (value?.length === 1) {\n this.setValue(value[0]);\n } else if (value?.length === 2) {\n this.setRangeValue(value[0], value[1]);\n }\n }\n\n @Input({ transform: booleanAttribute }) set disabled(value: boolean) {\n if (value) {\n this.valueControl.disable();\n this.endValueControl.disable();\n }\n }\n\n @Output() valueChanges = new EventEmitter();\n\n readonly selectionType$$ = new BehaviorSubject('single');\n readonly valueControl = new FormControl(undefined, { nonNullable: true });\n readonly endValueControl = new FormControl(undefined, { nonNullable: true });\n\n constructor() {\n combineLatest([\n this.selectionType$$,\n this.valueControl.valueChanges.pipe(startWith(undefined)),\n this.endValueControl.valueChanges.pipe(startWith(undefined)),\n ])\n .pipe(takeUntilDestroyed(), debounceTime(100))\n .subscribe(([selectionType, value, endValue]) => {\n if (selectionType === 'single') {\n this.valueChanges.emit([{ integer: value }]);\n } else {\n this.valueChanges.emit([{ integer: value }, { integer: endValue }]);\n }\n });\n }\n\n clearValue() {\n this.valueControl.reset();\n this.endValueControl.reset();\n }\n\n private setSelectionType(operator: GalaxyFilterOperator): void {\n const rangeOperators = [\n GalaxyFilterOperator.FILTER_OPERATOR_IS_BETWEEN,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_BETWEEN,\n ];\n this.selectionType$$.next(rangeOperators.includes(operator) ? 'range' : 'single');\n }\n\n private setValue(value: GalaxyFilterValueInterface): void {\n this.valueControl.setValue(value.integer);\n this.endValueControl.setValue(undefined);\n }\n\n private setRangeValue(startValue: GalaxyFilterValueInterface, endValue: GalaxyFilterValueInterface): void {\n this.valueControl.setValue(startValue.integer);\n this.endValueControl.setValue(endValue.integer);\n }\n}\n","
\n @if ((selectionType$$ | async) === 'single') {\n \n \n \n } @else {\n \n \n \n \n \n \n \n }\n
\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n EventEmitter,\n inject,\n Input,\n Output,\n signal,\n ViewChild,\n WritableSignal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelect, MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyFilterOperator, GalaxyFilterType } from '../enums';\nimport { GalaxyCheckboxFilterInputComponent } from '../filter-inputs/checkbox-filter-input.component';\nimport { GalaxyCustomFilterInputComponent } from '../filter-inputs/custom-filter-input.component';\nimport { GalaxyDateFilterInputComponent } from '../filter-inputs/date-filter-input';\nimport { GalaxyNoInputFilterInputComponent } from '../filter-inputs/no-input.component';\nimport { GalaxyNoneSelectedFilterInputComponent } from '../filter-inputs/none-selected-input.component';\nimport { GalaxyRadioFilterInputComponent } from '../filter-inputs/radio-filter-input.component';\nimport { GalaxyStringFilterInputComponent } from '../filter-inputs/string-filter-input.component';\nimport { GalaxyTagsFilterInputComponent } from '../filter-inputs/tags-filter-input.component';\nimport { GalaxyBooleanFilterInputComponent } from '../filter-inputs/boolean-filter-input.component';\nimport { GalaxyPhoneFilterInputComponent } from '../filter-inputs/phone-filter-input.component';\nimport { filterOperatorToLabel } from '../filter-operator-labels';\nimport {\n GalaxyAbstractFilterInput,\n GalaxyFilterDefinitionInterface,\n GalaxyFilterInterface,\n GalaxyFilterValueInterface,\n InnerGalaxyFilterChipInjectionToken,\n} from '../interface';\nimport { GalaxyFloatFilterInputComponent } from '../filter-inputs/float-filter-input';\nimport { GalaxyIntegerFilterInputComponent } from '../filter-inputs/integer-filter-input.component';\n\nenum FilterInputType {\n FILTER_INPUT_TYPE_NO_OPERATOR_SELECTED = 'NoOperatorSelected',\n FILTER_INPUT_TYPE_NO_INPUT = 'NoInputFilter',\n FILTER_INPUT_TYPE_SINGLE_SELECT_STRING = 'SingleSelectStringInput',\n FILTER_INPUT_TYPE_SINGLE_SELECT_TAG = 'SingleSelectTagInput',\n FILTER_INPUT_TYPE_MULTI_SELECT_TAG = 'MultiSelectTagInput',\n FILTER_INPUT_TYPE_DATE_SELECT = 'DateSelectInput',\n FILTER_INPUT_TYPE_MULTI_SELECT_STRING = 'MultiSelectStringInput',\n FILTER_INPUT_TYPE_SINGLE_SELECT_RADIO = 'SingleSelectRadioInput',\n FILTER_INPUT_TYPE_MULTI_SELECT_CHECKBOX = 'MultiSelectCheckboxInput',\n FILTER_INPUT_TYPE_CUSTOM_INPUT = 'CustomInput',\n FILTER_INPUT_TYPE_FLOAT = 'FloatInput',\n FILTER_INPUT_TYPE_BOOLEAN = 'BooleanInput',\n FILTER_INPUT_TYPE_INTEGER = 'IntegerInput',\n FILTER_INPUT_TYPE_PHONE = 'PhoneInput',\n}\n\n@Component({\n selector: 'glxy-edit-filter-modal',\n templateUrl: './galaxy-edit-filter-modal.component.html',\n styleUrls: ['./galaxy-edit-filter-modal.component.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n MatSelectModule,\n MatButtonModule,\n MatInputModule,\n GalaxyFormFieldModule,\n ReactiveFormsModule,\n GalaxyStringFilterInputComponent,\n GalaxyNoInputFilterInputComponent,\n GalaxyNoneSelectedFilterInputComponent,\n GalaxyTagsFilterInputComponent,\n GalaxyDateFilterInputComponent,\n GalaxyNoInputFilterInputComponent,\n GalaxyNoneSelectedFilterInputComponent,\n GalaxyTagsFilterInputComponent,\n GalaxyCheckboxFilterInputComponent,\n GalaxyRadioFilterInputComponent,\n GalaxyCustomFilterInputComponent,\n GalaxyFloatFilterInputComponent,\n GalaxyBooleanFilterInputComponent,\n GalaxyIntegerFilterInputComponent,\n GalaxyPhoneFilterInputComponent,\n ],\n})\nexport class GalaxyEditFilterModalComponent {\n @ViewChild(GalaxyAbstractFilterInput) filterInput!: GalaxyAbstractFilterInput;\n @ViewChild('operatorSelect') operatorSelect?: MatSelect;\n\n @Output() applyFilterChanges = new EventEmitter();\n\n FilterInputType = FilterInputType;\n\n selectedOperatorControl: FormControl = new FormControl(\n GalaxyFilterOperator.FILTER_OPERATOR_IS,\n { nonNullable: true },\n );\n\n // this flows in one direction: from the filter inputs into this component\n // attempting to set it within this component will result in it being overwritten\n // if you need to clear the filter input, use the clearValue() method\n filterValues: WritableSignal = signal([]);\n\n // we expect this to be set once and never change\n _initialFilter: WritableSignal = signal(null);\n\n @Input() set initialFilter(initialFilter: GalaxyFilterInterface | null) {\n if (initialFilter) {\n this.selectedOperatorControl.setValue(initialFilter.operator);\n }\n if (this.filterDefinition?.lockedValue) {\n this.selectedOperatorControl.disable();\n }\n this._initialFilter.set(initialFilter);\n }\n\n @Input({ required: true }) filterDefinition!: GalaxyFilterDefinitionInterface;\n\n operatorOptions = computed(() => this.getOperatorOptions(this._initialFilter()));\n inputType = computed(() => {\n const foundOverride = this.filterInputOverrides().find(\n (override) => override.fieldId === this._initialFilter()?.fieldId,\n );\n const inputType = this.getInputType(this._initialFilter(), this.selectedOperator());\n if (foundOverride && inputType !== FilterInputType.FILTER_INPUT_TYPE_NO_INPUT) {\n return FilterInputType.FILTER_INPUT_TYPE_CUSTOM_INPUT;\n }\n return inputType;\n });\n\n operatorControl = toSignal(this.selectedOperatorControl.valueChanges, {\n initialValue: this.selectedOperatorControl.value,\n });\n\n selectedOperator = computed(() => this.operatorControl());\n\n // used to validate that the filter input has been set when applying it\n filterValuesSet = computed(() => {\n return this.filterValues().length > 0;\n });\n\n // float tolerance will be set to 0.001 if a float filter is present\n filterFloatTolerance = computed(() => {\n const filterValues = this.filterValues();\n if (filterValues?.findIndex((value) => value.float !== undefined) >= 0) {\n return 0.001;\n }\n return undefined;\n });\n\n private readonly filtersDependencies = inject(InnerGalaxyFilterChipInjectionToken);\n filterInputOverrides = toSignal(this.filtersDependencies.getFilterInputOverrides(), {\n initialValue: [],\n });\n filterOverride = computed(() => {\n return this.filterInputOverrides().find((override) => override.fieldId === this._initialFilter()?.fieldId);\n });\n\n applyFilter() {\n const selectedOperator = this.selectedOperator();\n const filterValues = this.filterValues();\n const _filterValuesSet = this.filterValuesSet();\n const filter = this._initialFilter();\n const floatTolerance = this.filterFloatTolerance();\n\n const operatorHasNoInput = [\n GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_EMPTY,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_EMPTY,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_VALID,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_VALID,\n ].includes(selectedOperator);\n if (\n selectedOperator === GalaxyFilterOperator.FILTER_OPERATOR_INVALID ||\n (!_filterValuesSet && !operatorHasNoInput && !this.filterDefinition.preset) // presets are never removed, so they can have an empty value\n ) {\n return;\n }\n\n // take initial filter and apply delta\n if (filter) {\n filter.operator = selectedOperator;\n filter.values = filterValues;\n filter.floatTolerance = floatTolerance;\n\n this.applyFilterChanges.emit(filter);\n }\n }\n\n getOperatorOptions(filter: GalaxyFilterInterface | null): OperatorOption[] {\n if (!filter) {\n return [];\n }\n const supportedOperators = this.filterDefinition.supportedOperators;\n if (supportedOperators === undefined) {\n return [];\n }\n\n return supportedOperators.map((operator) => ({\n operator: operator,\n label: filterOperatorToLabel[operator],\n }));\n }\n\n filterValuesChanged(filterValues: GalaxyFilterValueInterface[]) {\n this.filterValues.set(filterValues);\n }\n\n private getInputType(filter: GalaxyFilterInterface | null, operator: GalaxyFilterOperator): FilterInputType {\n if (this.filterDefinition.type === GalaxyFilterType.FILTER_TYPE_CHECKBOX) {\n if (\n [\n GalaxyFilterOperator.FILTER_OPERATOR_IS,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_EQUAL_TO,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_EQUAL_TO,\n ].includes(operator)\n ) {\n return FilterInputType.FILTER_INPUT_TYPE_SINGLE_SELECT_RADIO;\n }\n return FilterInputType.FILTER_INPUT_TYPE_MULTI_SELECT_CHECKBOX;\n }\n if (\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_EMPTY, GalaxyFilterOperator.FILTER_OPERATOR_IS_EMPTY].includes(\n operator,\n )\n ) {\n return FilterInputType.FILTER_INPUT_TYPE_NO_INPUT;\n } else if (this.filterDefinition.type === GalaxyFilterType.FILTER_TYPE_DATE) {\n return FilterInputType.FILTER_INPUT_TYPE_DATE_SELECT;\n } else if (this.filterDefinition.type === GalaxyFilterType.FILTER_TYPE_FLOAT) {\n return FilterInputType.FILTER_INPUT_TYPE_FLOAT;\n } else if (this.filterDefinition.type === GalaxyFilterType.FILTER_TYPE_INTEGER) {\n return FilterInputType.FILTER_INPUT_TYPE_INTEGER;\n } else if (\n [\n GalaxyFilterOperator.FILTER_OPERATOR_IS,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT,\n GalaxyFilterOperator.FILTER_OPERATOR_CONTAINS,\n GalaxyFilterOperator.FILTER_OPERATOR_DOES_NOT_CONTAIN,\n ].includes(operator)\n ) {\n switch (this.filterDefinition.type) {\n case GalaxyFilterType.FILTER_TYPE_STRING:\n return FilterInputType.FILTER_INPUT_TYPE_SINGLE_SELECT_STRING;\n case GalaxyFilterType.FILTER_TYPE_TAG:\n return FilterInputType.FILTER_INPUT_TYPE_SINGLE_SELECT_TAG;\n case GalaxyFilterType.FILTER_TYPE_BOOLEAN:\n return FilterInputType.FILTER_INPUT_TYPE_BOOLEAN;\n case GalaxyFilterType.FILTER_TYPE_PHONE:\n return FilterInputType.FILTER_INPUT_TYPE_PHONE;\n }\n } else if (\n [\n GalaxyFilterOperator.FILTER_OPERATOR_IS_ANY,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_ANY,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_ALL,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_ALL,\n ].includes(operator)\n ) {\n switch (this.filterDefinition.type) {\n case GalaxyFilterType.FILTER_TYPE_TAG:\n return FilterInputType.FILTER_INPUT_TYPE_MULTI_SELECT_TAG;\n case GalaxyFilterType.FILTER_TYPE_STRING:\n return FilterInputType.FILTER_INPUT_TYPE_MULTI_SELECT_STRING;\n }\n }\n if (\n [GalaxyFilterOperator.FILTER_OPERATOR_IS_VALID, GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_VALID].includes(\n operator,\n )\n ) {\n switch (this.filterDefinition.type) {\n case GalaxyFilterType.FILTER_TYPE_STRING:\n return FilterInputType.FILTER_INPUT_TYPE_SINGLE_SELECT_STRING;\n case GalaxyFilterType.FILTER_TYPE_PHONE:\n return FilterInputType.FILTER_INPUT_TYPE_NO_INPUT;\n }\n }\n return FilterInputType.FILTER_INPUT_TYPE_NO_OPERATOR_SELECTED;\n }\n}\n\nexport interface OperatorOption {\n operator: GalaxyFilterOperator;\n label: string;\n}\n","\n
\n {{ filterDefinition?.fieldName ?? '' }}\n
\n
\n
\n
1; else operatorLabel\" class=\"col field-col\">\n \n \n \n {{ operatorOption.label | translate }}\n \n \n \n
\n \n
\n {{ operatorOptions()[0].label | translate }}\n
\n \n
\n {{ 'GALAXY.FILTER.CHIP.OPERATOR.IS' | translate }}\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n 1\">\n \n \n
\n
\n\n\n \n\n","import { CommonModule, DatePipe } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n Signal,\n Type,\n ViewChild,\n WritableSignal,\n booleanAttribute,\n computed,\n effect,\n inject,\n signal,\n ViewChildren,\n QueryList,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyPopoverModule, PopoverComponent, PopoverPositions as pops } from '@vendasta/galaxy/popover';\nimport { of } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\nimport { GalaxyAddFilterModalComponent } from './add-filter-modal/galaxy-add-filter-modal.component';\nimport { GalaxyCustomFilterChipComponent } from './custom-filter-chip.component';\nimport { GalaxyEditFilterModalComponent } from './edit-filter-modal/galaxy-edit-filter-modal.component';\nimport { GalaxyDateDefault, GalaxyFilterOperator, GalaxyFilterType } from './enums';\nimport {\n GalaxyAbstractFilterChip,\n GalaxyFilterChipDependencies,\n GalaxyFilterChipInjectionToken,\n GalaxyFilterDefinitionInterface,\n GalaxyFilterInputOverride,\n GalaxyFilterInterface,\n GalaxyStringFilterValue,\n GalaxySymbolsFilterOperators,\n InnerGalaxyFilterChipInjectionToken,\n} from './interface';\nimport { FILTER_RANGE_OPERATORS } from './constants';\nimport { DEFAULT_COUNTRY_CODE } from './filter-inputs/phone-filter-input.component';\nimport { CountryCodeService, countryOptionsFactoryProvider } from '@vendasta/galaxy/utility/country-codes';\nimport { CountryCode } from 'libphonenumber-js';\n\ninterface SelectedFilterInterface {\n filter: GalaxyFilterInterface;\n definition: GalaxyFilterDefinitionInterface;\n}\n\n@Component({\n selector: 'glxy-filter-chips',\n templateUrl: './galaxy-filter-chips.component.html',\n styleUrls: ['./galaxy-filter-chips.component.scss'],\n imports: [\n CommonModule,\n MatSelectModule,\n ReactiveFormsModule,\n TranslateModule,\n GalaxyFormFieldModule,\n MatIconModule,\n GalaxyPopoverModule,\n GalaxyEditFilterModalComponent,\n MatChipsModule,\n GalaxyAddFilterModalComponent,\n GalaxyCustomFilterChipComponent,\n ],\n providers: [\n countryOptionsFactoryProvider,\n CountryCodeService,\n DatePipe,\n {\n provide: InnerGalaxyFilterChipInjectionToken,\n useFactory: () => {\n const deps = inject(GalaxyFilterChipInjectionToken);\n const depsWithDefaults: Required = {\n listObjectFilters: deps.listObjectFilters.bind(deps),\n getFieldOptions: deps.getFieldOptions?.bind?.(deps) ?? (() => of([])),\n getInitialAppliedFilters: deps.getInitialAppliedFilters?.bind?.(deps) ?? (async () => []),\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setInitialAppliedFilters: deps.setInitialAppliedFilters?.bind?.(deps) ?? (() => {}),\n getFilterInputOverrides: deps.getFilterInputOverrides?.bind?.(deps) ?? (() => of([])),\n };\n return depsWithDefaults;\n },\n },\n ],\n})\nexport class GalaxyFilterChipsComponent implements OnInit {\n @ViewChild('addFilterPopover') addFilterPopover!: PopoverComponent;\n @ViewChild('addFilterModal') addFilterModal?: GalaxyAddFilterModalComponent;\n @ViewChild('editFilterPopover') editFilterPopover?: PopoverComponent;\n @ViewChild('addEditFilterModal') addEditFilterModal?: GalaxyEditFilterModalComponent;\n @ViewChildren('editFilterModal') editFilterModal?: QueryList;\n\n @Input() addFiltersHeader = '';\n\n // showAddFilter defaults to true. It can be useful if you only wish to use preset filters.\n @Input({ transform: booleanAttribute }) showAddFilter = true;\n\n @Output() filtersChanged = new EventEmitter();\n\n private readonly filtersDependencies = inject(InnerGalaxyFilterChipInjectionToken);\n\n filterDefinitions: Signal = toSignal(\n this.filtersDependencies.listObjectFilters(''),\n );\n filters: WritableSignal = signal([]);\n\n selectedFilterToAdd: WritableSignal = signal(null);\n selectedFilterToEdit: WritableSignal = signal(null);\n filterInputOverrides = toSignal(this.filtersDependencies.getFilterInputOverrides());\n filterOverrideMap = computed(() => {\n const overrideMap = new Map();\n for (const override of this.filterInputOverrides() || []) {\n overrideMap.set(override.fieldId, override);\n }\n return overrideMap;\n });\n\n popoverPositions = [pops.BottomLeft, pops.Bottom, pops.BottomRight, pops.TopLeft, pops.TopRight];\n filtersChips: Signal = computed(() =>\n this.filtersToFilterChips(this.filters(), this.filterOverrideMap()),\n );\n canClear = computed(() => {\n const nonPresetFilters = this.filters().filter((f) => {\n const def = this.getDefinition(f);\n return !def?.lockedValue || !def?.preset || f?.values?.length;\n });\n return nonPresetFilters.length >= 1;\n });\n\n private getDefinition(f: GalaxyFilterInterface) {\n return f.definition || this.filterDefinitions()?.find((d) => d.fieldId === f?.fieldId);\n }\n\n constructor(\n private readonly translate: TranslateService,\n private readonly countryCodeService: CountryCodeService,\n private readonly datePipe: DatePipe,\n ) {\n effect(() => this.filtersChanged.emit(this.filters()));\n }\n\n ngOnInit(): void {\n this.filtersDependencies\n .getInitialAppliedFilters()\n .then((filters) => this.filters.set(filters))\n .catch((err) => console.error(`failed to load default filters: ${err}`));\n }\n\n newFilterId(): string {\n return `filter-${uuidv4()}`;\n }\n\n clearFilters(): void {\n this.filters.update((filters) => {\n let presetFilters = filters.filter((f) => {\n const def = this.getDefinition(f);\n return def?.preset && !def?.lockedValue;\n });\n presetFilters = [...new Set(presetFilters)];\n const presetResettedFilterValues = presetFilters.map((f) => {\n const def = this.getDefinition(f);\n if (def) {\n f.operator = def.supportedOperators?.[0] ?? GalaxyFilterOperator.FILTER_OPERATOR_INVALID;\n }\n return { ...f, values: [] };\n });\n const lockedFilterValues = filters.filter((f) => {\n const def = this.getDefinition(f);\n return def?.lockedValue;\n });\n return [...presetResettedFilterValues, ...lockedFilterValues];\n });\n }\n\n clearFilterValue(filter: FilterChipInterface): void {\n this.filters.update((filters) => {\n return filters.map((f) => {\n if (f?.filterId === filter.filterId) {\n const def = this.getDefinition(f);\n if (def) {\n f.operator = def.supportedOperators?.[0] ?? GalaxyFilterOperator.FILTER_OPERATOR_INVALID;\n }\n return { ...f, values: [] };\n }\n return f;\n });\n });\n }\n\n removeFilter(filter: GalaxyFilterInterface): void {\n this.filters.update((filters) => filters.filter((f) => f?.filterId !== filter?.filterId));\n }\n\n // we won't actually add a filter until its details are filled in\n selectNewFilterFromDefinition(filterDefinition: GalaxyFilterDefinitionInterface): void {\n let defaultOperator = GalaxyFilterOperator.FILTER_OPERATOR_IS;\n if (filterDefinition?.type === GalaxyFilterType.FILTER_TYPE_TAG) {\n defaultOperator = GalaxyFilterOperator.FILTER_OPERATOR_IS_ALL;\n } else if (filterDefinition?.type === GalaxyFilterType.FILTER_TYPE_FLOAT) {\n defaultOperator = GalaxyFilterOperator.FILTER_OPERATOR_IS_EQUAL_TO;\n // Initially set dropdown to first supported operator if available\n } else if (filterDefinition?.supportedOperators?.[0]) {\n defaultOperator = filterDefinition.supportedOperators[0];\n }\n const filter: GalaxyFilterInterface = {\n fieldId: filterDefinition.fieldId ?? '',\n operator: defaultOperator,\n };\n this.selectFilterToAdd(filter);\n }\n\n private transformToSelectedFilter(\n filter: GalaxyFilterInterface,\n definition: GalaxyFilterDefinitionInterface,\n ): SelectedFilterInterface {\n return {\n filter: {\n fieldId: filter.fieldId,\n filterId: filter.filterId,\n operator: filter.operator,\n values: filter.values,\n floatTolerance: filter.floatTolerance,\n definition: filter.definition,\n },\n definition: definition,\n } as SelectedFilterInterface;\n }\n\n selectFilterToEdit(filter: GalaxyFilterInterface | null, index: number): void {\n this.selectFilterToAdd(null);\n if (!filter) {\n this.selectedFilterToEdit.set(null);\n return;\n }\n const definition = this.getDefinition(filter);\n if (!definition) {\n this.selectedFilterToEdit.set(null);\n return;\n }\n\n const selected = this.transformToSelectedFilter(filter, definition);\n this.selectedFilterToEdit.set(selected);\n setTimeout(() => {\n const element = this.editFilterModal?.get(index);\n if (element) {\n element.operatorSelect?.focus?.();\n }\n }, 0);\n }\n\n selectFilterToAdd(filter: GalaxyFilterInterface | null): void {\n this.selectedFilterToEdit.set(null);\n if (!filter) {\n this.selectedFilterToAdd.set(null);\n return;\n }\n const definition = this.getDefinition(filter);\n if (!definition) {\n this.selectedFilterToAdd.set(null);\n return;\n }\n\n const selected = this.transformToSelectedFilter(filter, definition);\n this.selectedFilterToAdd.set(selected);\n setTimeout(() => this.addEditFilterModal?.operatorSelect?.focus?.(), 0);\n }\n\n openAddFilter(): void {\n this.selectFilterToAdd(null);\n this.addFilterPopover.open();\n setTimeout(() => {\n this.addFilterModal?.searchInput?.nativeElement.focus();\n }, 0);\n }\n\n openEditFilter(index: number, filter: GalaxyFilterInterface): void {\n this.selectFilterToEdit(filter ?? this.selectedFilterToEdit()?.filter, index);\n }\n\n addSelectedFilter(filter: GalaxyFilterInterface): void {\n filter.filterId = filter.filterId || this.newFilterId();\n this.filters.update((filters) => [...filters, filter]);\n this.closePopovers();\n }\n\n updateSelectedFilter(filter: GalaxyFilterInterface): void {\n this.filters.update((filters) => filters.map((f) => (f?.filterId === filter.filterId ? filter : f)));\n this.closePopovers();\n }\n\n closePopovers() {\n // editing could occur from either popover, so try to close both\n this.editFilterPopover?.close();\n this.addFilterPopover?.close();\n this.selectedFilterToAdd.set(null);\n this.selectedFilterToEdit.set(null);\n }\n\n private getFilterChipOverride(\n filter: GalaxyFilterInterface,\n filterInputOverrides: Map,\n ): Type | null {\n const filterOverride = filterInputOverrides.get(filter.fieldId);\n if (!filterOverride || !filterOverride.filterChip) {\n return null;\n }\n return filterOverride.filterChip;\n }\n\n private filtersToFilterChips(\n filters?: GalaxyFilterInterface[],\n filterOverrideMap?: Map,\n ): FilterChipInterface[] {\n if (!filters) {\n return [];\n }\n const newFilters: FilterChipInterface[] = filters.map((filter) => {\n const definitionForFilter = this.getDefinition(filter);\n const filterValues = filter?.values;\n const operatorSymbol =\n GalaxySymbolsFilterOperators[filter?.operator || GalaxyFilterOperator.FILTER_OPERATOR_INVALID];\n const symbol = filterValues && filterValues.length > 0 ? this.translate.instant(operatorSymbol) : '';\n\n if (\n !filterValues?.length &&\n (filter.operator === GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_EMPTY ||\n filter.operator === GalaxyFilterOperator.FILTER_OPERATOR_IS_EMPTY ||\n filter.operator === GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_VALID ||\n filter.operator === GalaxyFilterOperator.FILTER_OPERATOR_IS_VALID)\n ) {\n return {\n ...filter,\n definition: definitionForFilter,\n operatorSymbol: this.translate.instant(operatorSymbol),\n canHaveEmptyValue: true,\n };\n }\n\n if (!filterValues?.length) {\n return {\n ...filter,\n definition: definitionForFilter,\n operatorSymbol: symbol,\n };\n }\n\n const hasStringProperty = Object.prototype.hasOwnProperty.call(filterValues[0], 'string');\n\n if (hasStringProperty) {\n if (filterValues.length <= 1) {\n return {\n ...filter,\n definition: definitionForFilter,\n operatorSymbol: symbol,\n selectedValue: filterValues[0].string,\n };\n } else {\n return {\n ...filter,\n definition: definitionForFilter,\n operatorSymbol: symbol,\n selectedValue: filterValues[0].string + ' +' + (filterValues.length - 1),\n };\n }\n }\n\n // handle float filter chips\n if (filterValues[0].float !== undefined) {\n const from = filterValues[0].float.toString();\n if (FILTER_RANGE_OPERATORS.includes(filter.operator)) {\n const to = filterValues[1]?.float?.toString() ?? '';\n return {\n ...filter,\n definition: definitionForFilter,\n operatorSymbol: symbol,\n selectedValue: `${from} - ${to}`,\n };\n }\n return {\n ...filter,\n definition: definitionForFilter,\n operatorSymbol: symbol,\n selectedValue: from,\n };\n }\n\n // handle integer filter chips\n if (filterValues[0].integer !== undefined) {\n const from = filterValues[0].integer.toString();\n if (FILTER_RANGE_OPERATORS.includes(filter.operator)) {\n const to = filterValues[1]?.integer?.toString() ?? '';\n return {\n ...filter,\n definition: definitionForFilter,\n operatorSymbol: symbol,\n selectedValue: `${from} - ${to}`,\n };\n }\n return {\n ...filter,\n definition: definitionForFilter,\n operatorSymbol: symbol,\n selectedValue: from,\n };\n }\n\n // Handle phone values\n if (filterValues[0].phone !== undefined) {\n let countryCode = '';\n const countryOption = this.countryCodeService.getCountryOption(\n (filterValues[0].phone.isoCountryCode || DEFAULT_COUNTRY_CODE) as CountryCode,\n );\n if (countryOption != null) {\n countryCode = countryOption.callingCode;\n }\n const phoneNumber = filterValues[0].phone.nationalNumber || '';\n let ext = '';\n const extension = filterValues[0].phone.extension || '';\n if (extension != null && extension.length > 0) {\n ext = ' #' + extension;\n }\n return {\n ...filter,\n definition: definitionForFilter,\n operatorSymbol: symbol,\n selectedValue: countryCode + phoneNumber + ext,\n };\n }\n\n const hasBooleanProperty = Object.prototype.hasOwnProperty.call(filterValues[0], 'boolean');\n if (hasBooleanProperty) {\n return {\n ...filter,\n definition: definitionForFilter,\n operatorSymbol: symbol,\n selectedValue: filterValues[0].boolean ? 'True' : 'False',\n };\n }\n\n const dateDefaultStringFilter = [\n GalaxyFilterOperator.FILTER_OPERATOR_IS,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_BEFORE,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_BEFORE_OR_ON,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_AFTER,\n GalaxyFilterOperator.FILTER_OPERATOR_IS_AFTER_OR_ON,\n ];\n const { dateDefault = GalaxyDateDefault.DATE_DEFAULT_INVALID } = filterValues[0];\n let translateFilter = this.translate.instant(GalaxyStringFilterValue[dateDefault]);\n if (filterValues[0].date) {\n translateFilter = this.datePipe.transform(filterValues[0].date?.toString(), 'mediumDate', 'UTC');\n }\n\n if (\n dateDefaultStringFilter.includes(filter.operator || GalaxyFilterOperator.FILTER_OPERATOR_INVALID) &&\n !hasStringProperty\n ) {\n return {\n ...filter,\n definition: definitionForFilter,\n operatorSymbol: symbol,\n selectedValue: translateFilter,\n };\n }\n\n if (\n filter.operator === GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_BETWEEN ||\n filter.operator === GalaxyFilterOperator.FILTER_OPERATOR_IS_BETWEEN\n ) {\n const fromDate = this.datePipe.transform(filterValues[0].date?.toString(), 'shortDate');\n const toDate = this.datePipe.transform(filterValues[1].date?.toString(), 'shortDate');\n\n return {\n ...filter,\n definition: definitionForFilter,\n operatorSymbol: symbol,\n selectedValue: fromDate + ' - ' + toDate,\n };\n }\n\n return {\n ...filter,\n definition: definitionForFilter,\n };\n });\n const filtersWithOverride: FilterChipInterface[] = newFilters.map((filter) => {\n const overrideChip = this.getFilterChipOverride(filter, filterOverrideMap ?? new Map());\n if (overrideChip !== null && !filter.canHaveEmptyValue) {\n return {\n ...filter,\n customChip: overrideChip,\n };\n }\n return filter;\n });\n return filtersWithOverride;\n }\n}\n\ninterface FilterChipInterface extends GalaxyFilterInterface {\n operatorSymbol?: string;\n selectedValue?: string;\n canHaveEmptyValue?: boolean;\n customChip?: Type;\n}\n","
\n
\n \n
\n \n @for (filter of filtersChips(); track filter; let index = $index) {\n \n \n {{ filter.definition?.fieldName }}\n \n {{ filter.operatorSymbol }}\n \n \n \n \n \n \n {{ filter.selectedValue }}\n \n \n \n \n cancel\n \n\n \n @let selected = selectedFilterToEdit();\n @if (selected && selected.filter.filterId === filter.filterId) {\n \n }\n \n \n }\n
\n
\n
\n\n
\n \n add\n {{ 'GALAXY.FILTER.CHIP.ADD_FILTER' | translate }}\n \n @if (selectedFilterToAdd(); as selected) {\n \n } @else {\n \n }\n \n \n \n
\n
\n","import { GalaxyFilterChipsComponent } from './galaxy-filter-chips.component';\nimport { NgModule } from '@angular/core';\n\nexport const MODULE_IMPORTS = [GalaxyFilterChipsComponent];\n\nexport const MODULE_EXPORTS = [GalaxyFilterChipsComponent];\n\n@NgModule({\n // This module uses standalone components - we just use the module to remain consistent\n declarations: [],\n imports: MODULE_IMPORTS,\n exports: MODULE_EXPORTS,\n})\nexport class GalaxyFilterChipsModule {}\n","export * from './src/filter-chips.module';\nexport * from './src/enums';\nexport * from './src/interface';\n","export * from './boolean-filter-input.component';\nexport * from './date-filter-input';\nexport * from './float-filter-input';\nexport * from './integer-filter-input.component';\nexport * from './string-filter-input.component';\nexport * from './tags-filter-input.component';\nexport * from './checkbox-filter-input.component';\nexport * from './radio-filter-input.component';\nexport * from './custom-filter-input.component';\nexport * from './no-input.component';\nexport * from './none-selected-input.component';\n","// Export things like public API, and interfaces from here.\nexport * from './public_api';\nexport * from './src/filter-inputs';\n","import { IAMService, User, UserIdentifier } from '@vendasta/iamv2';\nimport {\n CrmDependencies,\n CrmObjectDependencies,\n ObjectType,\n SimplifiedUser,\n UserWithDisplayName,\n} from './tokens-and-interfaces';\nimport {\n GalaxyDateDefault,\n GalaxyFilterInterface,\n GalaxyFilterOperator,\n GalaxyFilterType,\n GalaxyFilterValueInterface,\n} from '@vendasta/galaxy/filter/chips';\nimport {\n FilterGroupInterface,\n FilterValueInterface,\n} from '@vendasta/crm/lib/_internal/interfaces/galaxy-filters.interface';\nimport { DateDefault, FilterGroupOperator, FilterInterface, FilterOperator, FilterType } from '@vendasta/crm';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nexport function userFilterFn(user: UserWithDisplayName, searchTerm: string): boolean {\n searchTerm = searchTerm?.toLowerCase();\n const includesFullName = user?.displayName?.toLowerCase()?.includes(searchTerm);\n const includesFirstName = user?.firstName?.toLowerCase()?.includes(searchTerm);\n const includesLastName = user?.lastName?.toLowerCase()?.includes(searchTerm);\n const includesUserId = user?.userId?.toLowerCase()?.includes(searchTerm);\n const includesEmail = user?.email?.toLowerCase()?.includes(searchTerm);\n return includesFullName || includesFirstName || includesLastName || includesUserId || includesEmail;\n}\n\nexport function convertToReadableUsers(users: User[] | SimplifiedUser[]): UserWithDisplayName[] {\n return users.map(\n (user) =>\n ({\n ...user,\n displayName: `${user?.firstName ?? ''} ${user?.lastName ?? ''}`.trim() ?? user?.userId,\n }) as UserWithDisplayName,\n );\n}\n\nexport function convertGalaxyFilters(filters: GalaxyFilterInterface[] | undefined): FilterGroupInterface | undefined {\n if (!filters) {\n return undefined;\n }\n const filterGroup = {} as FilterGroupInterface;\n filterGroup.operator = FilterGroupOperator.FILTER_GROUP_OPERATOR_AND;\n filterGroup.filters = [];\n filters.forEach((inputFilter) => {\n if (!inputFilter.fieldId || !inputFilter.operator) {\n return;\n }\n const filterOperator: FilterOperator = inputFilter.operator\n ? FilterOperator[GalaxyFilterOperator[inputFilter.operator]]\n : undefined;\n const filterGroupFilter: FilterInterface = {\n fieldId: inputFilter.fieldId,\n operator: filterOperator,\n values: [],\n floatTolerance: inputFilter.floatTolerance,\n };\n filterGroupFilter.values = inputFilter.values ? convertFromGalaxyFilterValues(inputFilter.values) : undefined;\n filterGroup.filters?.push(filterGroupFilter);\n });\n return filterGroup;\n}\n\nexport function convertToGalaxyFilter(filter: FilterInterface): GalaxyFilterInterface {\n return {\n fieldId: filter.fieldId,\n operator: filter.operator\n ? convertToGalaxyFilterOperator(filter.operator)\n : GalaxyFilterOperator.FILTER_OPERATOR_INVALID,\n values: filter.values ? convertToGalaxyFilterValues(filter.values) : [],\n floatTolerance: filter.floatTolerance,\n } as GalaxyFilterInterface;\n}\n\nexport function convertToGalaxyFilterType(type: FilterType): GalaxyFilterType {\n return GalaxyFilterType[FilterType[type]];\n}\n\nexport function convertToGalaxyFilterOperator(operator: FilterOperator): GalaxyFilterOperator {\n return GalaxyFilterOperator[FilterOperator[operator]];\n}\n\nexport function convertToGalaxyFilterOperators(operators: FilterOperator[]): GalaxyFilterOperator[] {\n return operators.map((o) => convertToGalaxyFilterOperator(o));\n}\n\nexport function convertToGalaxyFilterValues(values: FilterValueInterface[]): GalaxyFilterValueInterface[] {\n return values.map((v) => convertToGalaxyFilterValue(v));\n}\n\nexport function convertToGalaxyFilterValue(value: FilterValueInterface): GalaxyFilterValueInterface {\n const dateDefault: GalaxyDateDefault = value.dateDefault\n ? GalaxyDateDefault[DateDefault[value.dateDefault]]\n : undefined;\n return {\n boolean: value.boolean,\n integer: value.integer,\n string: value.string,\n date: value.date,\n dateDefault: dateDefault,\n float: value.float,\n phone: value.phone,\n } as GalaxyFilterValueInterface;\n}\n\nexport function convertFromGalaxyFilterValues(values: GalaxyFilterValueInterface[]): FilterValueInterface[] {\n return values.map((v) => convertFromGalaxyFilterValue(v));\n}\n\nexport function convertFromGalaxyFilterValue(value: GalaxyFilterValueInterface): FilterValueInterface {\n const dateDefault: DateDefault = value.dateDefault ? DateDefault[GalaxyDateDefault[value.dateDefault]] : undefined;\n return {\n boolean: value.boolean,\n integer: value.integer,\n string: value.string,\n date: value.date,\n dateDefault: dateDefault,\n float: value.float,\n phone: value.phone,\n } as FilterValueInterface;\n}\n\nexport function getObjectDependencies(objectType: ObjectType, parentConfig: CrmDependencies): CrmObjectDependencies {\n const emptyConfig: CrmObjectDependencies = {};\n switch (objectType) {\n case 'Company':\n return parentConfig.company || emptyConfig;\n case 'Contact':\n return parentConfig.contact || emptyConfig;\n case 'Activity':\n return parentConfig.activity || emptyConfig;\n case 'Opportunity':\n return parentConfig.opportunity || emptyConfig;\n default:\n return emptyConfig;\n }\n}\n\nexport function getMultiUsers(\n uniqueUserIds: string[],\n config: CrmDependencies,\n iamService: IAMService,\n): Observable {\n if (config.services?.userService?.getMultiUsers) {\n return config.services.userService.getMultiUsers(uniqueUserIds).pipe(\n catchError((error) => {\n console.error(error);\n return of([]);\n }),\n );\n } else if (iamService) {\n const uniqueUserIdentifiers = uniqueUserIds.map((userId) => new UserIdentifier({ userId: userId }));\n return iamService.getMultiUsers(uniqueUserIdentifiers).pipe(\n catchError((error) => {\n console.error(error);\n return of([]);\n }),\n );\n } else {\n throw new Error('Service not defined (CRMUserService | IAMService)');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { CrmObjectInterface, FieldValueInterface } from '@vendasta/crm';\n\nexport const StandardExternalIds = {\n FirstName: 'standard__first_name',\n LastName: 'standard__last_name',\n PhoneNumber: 'standard__phone_number',\n Email: 'standard__email',\n Tags: 'standard__tags',\n ActivityRecordChangeType: 'standard__record_change_type',\n ContactCompanyName: 'standard__contact_company_name',\n ChangeRecordChangeType: 'standard__change_record_change_type',\n};\n\nexport const NonStandardExternalIDs = {\n NetPromoterScore: 'reputation_management_net_promoter_score_details',\n LastEmailRequest: 'reputation_management__review_request_email_sent_time',\n LastSmsRequest: 'reputation_management__review_request_sms_status',\n};\n\n// these are not external_ids\n// system fields do not have a UUID generated for them but are instead set from a predefined set of values\nexport const SystemFieldIds = {\n ActivityCreated: 'system__activity_created',\n ActivityUpdated: 'system__activity_updated',\n ActivityEffectiveDate: 'system__activity_effective',\n ActivityID: 'system__activity_id',\n ActivityType: 'system__activity_activity_type',\n ActivityOwnerID: 'system__activity_owner_id',\n\n ContactCreated: 'system__contact_created',\n ContactUpdated: 'system__contact_updated',\n ContactID: 'system__contact_id',\n ContactExternalID: 'system__contact_external_id',\n ContactOwnerID: 'system__contact_owner_id',\n ContactGroupID: 'system__contact_group_id',\n ContactLastActivityDate: 'system__contact_last_activity_date',\n\n CompanyCreated: 'system__company_created',\n CompanyUpdated: 'system__company_updated',\n CompanyID: 'system__company_id',\n CompanyExternalID: 'system__company_external_id',\n CompanyOwnerID: 'system__company_owner_id',\n CompanyGroupID: 'system__company_group_id',\n CompanyLastActivityDate: 'system__company_last_activity_date',\n\n OpportunityCreated: 'system__opportunity_created',\n OpportunityUpdated: 'system__opportunity_updated',\n OpportunityID: 'system__opportunity_id',\n OpportunityExternalID: 'system__opportunity_external_id',\n OpportunityOwnerID: 'system__opportunity_owner_id',\n OpportunityLastActivityDate: 'system__opportunity_last_activity_date',\n\n CustomObjectCreated: 'system__customobject_created',\n CustomObjectUpdated: 'system__customobject_updated',\n CustomObjectID: 'system__customobject_id',\n CustomObjectExternalID: 'system__customobject_external_id',\n CustomObjectOwnerID: 'system__customobject_owner_id',\n CustomObjectTypeID: 'system__customobject_object_type',\n};\n\nexport const ContactCustomColumns = {\n FullName: 'fullName',\n FullAddress: 'fullAddress',\n PrimaryCompanyName: 'primaryCompanyName',\n Location: 'location',\n};\n\nexport const CompanyCustomColumns = {\n FullAddress: 'fullAddress',\n ParentCompanyName: 'parentCompanyName',\n};\n\nexport const TaskCustomColumns = {\n AssignedTo: 'assignedTo',\n AssociatedCompany: 'associatedCompany',\n AssociatedContact: 'associatedContact',\n Location: 'location',\n};\n\nexport const OpportunityCustomColumns = {\n PrimaryAssociation: 'associatedContact',\n};\n\nexport const StandardIds = {\n ActivityManuallyLogged: 'FieldID-836fb592-2def-4607-8ff6-58a9fd915034',\n ActivityNoteBody: 'FieldID-88134dbb-5bec-4a96-ac83-6896eacf6ead',\n ActivityNoteTitle: 'FieldID-47fbed3b-824e-4d94-959e-ea5accbd10a3',\n ActivityEmailID: 'FieldID-d77cce25-5891-4697-b005-6a1ad57f8625',\n ActivityEmailType: 'FieldID-6fbd0e7d-0af4-4f0e-8816-01aa2c4433d6',\n ActivityEmailDirection: 'FieldID-56236ac1-44a9-4cde-8020-5ff41881923f',\n ActivityEmailStatus: 'FieldID-5a15fea4-cc20-498c-a55b-97938775f00e',\n ActivityEmailBody: 'FieldID-be2d2528-0126-4914-ab53-ffc1ffb03a08',\n ActivityEmailSubject: 'FieldID-6d18abbb-bb6f-4c75-98e2-2333fb6315d3',\n ActivityEmailHeaders: 'FieldID-07775d45-b2b8-44fa-9418-f40bb296eea2',\n ActivityEmailDate: 'FieldID-85b69e6e-64de-45ee-b865-c44144e37d60',\n ActivityEmailCampaignName: 'FieldID-fd209910-fbb9-433a-8e6d-677515d3f992',\n ActivityCampaignID: 'FieldID-96b1b1b8-6534-4b2c-a974-5c45cf05e556',\n ActivityCallDirection: 'FieldID-cfc68004-2622-4c2d-a370-ef7f03b35d4b',\n ActivityCallOutcome: 'FieldID-74f24db8-bd19-4f42-84a0-00791769469e',\n ActivityCallDuration: 'FieldID-22498095-16f0-44cd-ae44-d2abfce09663',\n ActivityCallFromNumber: 'FieldID-80835376-c944-4f60-8dec-8ffdf779f2a1',\n ActivityCallToNumber: 'FieldID-9643b618-e11f-4e03-80a2-6e01384faca9',\n ActivityCallRecordingURL: 'FieldID-c4888a86-f334-452f-a6a5-c23ecffdd2e0',\n ActivityCallBody: 'FieldID-3bfa5b22-d263-4cf1-bf57-70fe644d95a6',\n ActivityCallStatus: 'FieldID-a56c7fe2-a1b7-4a90-9142-67e10e87d303',\n ActivityCallDate: 'FieldID-d3125adc-2ad3-4227-9c39-291a536d28fe',\n ActivityCallRecordingUrl: 'FieldID-c4888a86-f334-452f-a6a5-c23ecffdd2e0',\n ActivityCallRecordId: 'FieldID-b337ff45-d938-4c5d-9ca2-70abb8d1e5fe',\n ActivityCallTranscript: 'FieldID-878fc317-6983-441d-bea1-2b8ca8b8e7de',\n ActivityMeetingBody: 'FieldID-e6661bd3-df23-4859-b073-8ab14a46ce8d',\n ActivityMeetingInternalNotes: 'FieldID-82d7e564-4fec-4cab-809e-8abfeb8cd961',\n ActivityMeetingURL: 'FieldID-7eb03173-ba5b-4ec7-b4c7-3e32257871d3',\n ActivityMeetingLocation: 'FieldID-4e388221-1b84-46e5-88c1-70bcc8df63d1',\n ActivityMeetingStartTime: 'FieldID-019f1d17-8663-4a82-8895-eb9e94320d1e',\n ActivityMeetingEndTime: 'FieldID-296520b8-6289-4924-a3b7-5c7bb085c3e2',\n ActivityMeetingOutcome: 'FieldID-98fe825a-82b3-4f4b-ae5f-0fcc08369668',\n ActivityMeetingStatus: 'FieldID-a7b66d53-12e3-4f22-a42c-6f0ccc26ab56',\n ActivityMeetingDuration: 'FieldID-f1118e0f-bbcc-4ae9-b0a6-d95c1db37777',\n ActivityMeetingSentiment: 'FieldID-7db820f4-2ba9-40f2-b173-d3d490f9ffca',\n ActivityMeetingSalesScore: 'FieldID-64e359bc-e18d-4363-bccd-eb8d491ad3bf',\n ActivityMeetingSummaryTitle: 'FieldID-971c636e-6322-4a08-b143-d48b8858307b',\n ActivityMeetingSummaryBody: 'FieldID-4605f29f-76af-4784-a09f-2495cf2e325a',\n ActivityMeetingKeyTakeaways: 'FieldID-313e65ae-933c-402e-bd7a-75ce518a3bb6',\n ActivityMeetingActionItems: 'FieldID-4d8c7a31-cabb-4aac-a2c2-4e73e341590b',\n ActivityMeetingAnalysisProcessedTranscriptID: 'FieldID-3ec4ac0b-bd79-4645-b9ea-119689ef6246',\n ActivityMeetingLastAnalyzedDate: 'FieldID-280edfa8-3b78-47ff-b270-a268decffff6',\n ActivityMeetingTranscriptUrl: 'FieldID-489ae5a5-bde1-4fe1-bb89-a251ffff99c8',\n ActivityMeetingRecordingUrl: 'FieldID-4d87d5a5-9165-46b2-af81-6e8a323c9a32',\n ActivityName: 'FieldID-be62ace6-9cd8-4899-b283-82ea9c2facb1',\n ActivitySourceName: 'FieldID-508a87c7-8c3e-4664-a3dc-6626fafb3fce',\n ActivityRecordSourceDrillDown1: 'FieldID-bd927830-22b3-4771-9ac3-124bef0c1a05',\n ActivityRecordSourceDrillDown2: 'FieldID-22f1dbd6-f1e2-4c33-b064-383885c303a1',\n ActivityTaskBody: 'FieldID-5cbae7eb-51a6-4de5-ace2-99f41d2869af',\n ActivityTaskDueDate: 'FieldID-aa757187-94a4-422f-88b1-2b4b7d236f85',\n ActivityTaskPriority: 'FieldID-5ee74662-8a88-40df-b2bd-e1899cf7533b',\n ActivityTaskStatus: 'FieldID-b4d2e328-5792-4226-baad-163509af6cd9',\n ActivityTaskType: 'FieldID-79ba5085-0c91-4d5e-bb40-8c4302817408',\n ActivityTags: 'FieldID-244bd78f-8022-4bc6-a746-daf1427f0d6f',\n ActivityCommunicationChannel: 'FieldID-e684b889-06e9-4f17-901a-974e423ac44e',\n ActivityCommunicationOutcome: 'FieldID-4574fcba-ae33-4f40-ad33-dfb5c12d5f7b',\n ActivityCommunicationDirection: 'FieldID-fb96f396-b75e-4eb2-8411-c1399f734745',\n ActivityCommunicationFromId: 'FieldID-180dc101-2ba3-414d-9f1f-62cd62248d62',\n ActivityCommunicationToId: 'FieldID-d1045c66-f262-4631-b5cc-efea42b6f04d',\n ActivityCommunicationBody: 'FieldID-326742c0-d5ac-480c-b73e-0c1e6085f14a',\n ActivityCommunicationDate: 'FieldID-1ab5f7a8-4517-4992-a31b-2af9d2735870',\n ActivityCommunicationType: 'FieldID-e02e253d-33ff-4656-a1d1-e43e6d01b17b',\n ActivityCommunicationStatus: 'FieldID-886ff621-e859-435a-bfc4-b4b6e8f171eb',\n ActivityUrl: 'FieldID-e1b74b4f-9f6c-4fb5-a251-4621b89a14ed',\n ActivityUrlName: 'FieldID-26c17f01-6ca8-4a3c-8bb2-ddf3ba4a5677',\n ActivityOpportunityChangeID: 'FieldID-f004651a-1d60-4e0a-8ee5-8b6615834f71',\n ActivityOpportunityChangePipelineStage: 'FieldID-6c06383b-ce77-40e4-8b62-c45b3b8fc262',\n ActivityOpportunityChangeLostReason: 'FieldID-799f1ae7-f934-4b7b-b114-79600c17244f',\n ActivityOpportunityChangeNotes: 'FieldID-47338101-7d63-484b-82b8-b728e8abc623',\n ActivityOpportunityChangeUpdatedDate: 'FieldID-1ee17946-c5f5-447d-b301-b4fd836aa41e',\n ActivityOpportunityChangeSalespersonID: 'FieldID-02489de8-fc56-4175-bc4b-a9b16d9e12eb',\n CompanyName: 'FieldID-b2a5d86e-f9ae-11ed-be56-0242ac120002',\n CompanyPrimaryAddressLine1: 'FieldID-36785fbc-9c40-4938-92e3-b262d40ef6bb',\n CompanyPrimaryAddressLine2: 'FieldID-ac4c2ea1-f8d1-4bdd-8a42-a1ad4127eef6',\n CompanyPrimaryAddressCity: 'FieldID-33b7b0a0-82ed-471b-baa1-87ab958f90d2',\n CompanyPrimaryAddressState: 'FieldID-184fe9c2-b3a8-47c5-85dc-7c3a285c17ac',\n CompanyPrimaryAddressPostalCode: 'FieldID-b0e75bc5-59f7-4c54-98a8-510b9ec982ec',\n CompanyPrimaryAddressCountry: 'FieldID-daa0c91f-8a0e-4c90-be9c-e53a73789edc',\n CompanyPrimaryAddressGooglePlaceID: 'FieldID-ecba7574-ed05-4e89-98f2-d49a2c307a69',\n CompanyPrimaryAddressLatitudeLongitude: 'FieldID-017480ce-49d4-4453-8622-c1e2633eae73',\n CompanyWebsite: 'FieldID-f25628fb-eeb3-4d99-8737-44b403758837',\n CompanyPhoneNumber: 'FieldID-fc7ff4ae-b753-4650-9961-42b07bcc6ac6',\n CompanyTags: 'FieldID-b74e203d-bab3-4c78-83d0-ac96f44d1061',\n CompanyLifecycleStage: 'FieldID-865f4984-2fa2-462c-82d0-f78ad1477fb0',\n CompanyTimezone: 'FieldID-3ebce03e-260b-4573-93b0-85f5582ade3d',\n CompanyCategoryIDs: 'FieldID-3cf8b8e0-bc71-4593-a545-d32707445fea',\n CompanyParentCompanyID: 'FieldID-92bb3816-a000-4075-a56d-51458f99d7ab',\n CompanyGoogleReviewScore: 'FieldID-c1fd51d0-3971-4ffd-addb-9afb08ab1d8d',\n CompanyLeadScore: 'FieldID-512d33e1-6682-4848-9b0e-5190f8e7c2a3',\n CompanyLeadQuality: 'FieldID-5a082a52-9b65-4769-a750-261ef54fa51f',\n CompanyGBPClaimed: 'FieldID-63d04854-7d4a-4e2e-9358-0c349a51f66c', // from lead prospector\n CompanyLastEngagementDate: 'FieldID-f63f74aa-e77a-4990-88b4-03095c4bcec2',\n CompanyReviewGrade: 'FieldID-17dc90f1-2f14-4ddd-9ec6-d79af0f0b937',\n CompanySocialGrade: 'FieldID-42eed722-ea35-4aa6-a577-fb0898108cbe',\n CompanyWebsiteGrade: 'FieldID-97309ba6-4bc6-4931-9ea6-c3f9ef4cb57d',\n CompanyListingGrade: 'FieldID-22894f6c-7e61-4ea3-aaeb-f2aef4204581',\n CompanySEOGrade: 'FieldID-59cff5d2-00a3-4ba3-910c-9ffdbdc63266',\n ContactPrimaryCompanyID: 'FieldID-e4d82132-ed77-4a2f-8625-1163a04efba1',\n ContactPrimaryAddressLine1: 'FieldID-59dc9adf-6401-4af4-91cb-666ce81acc37',\n ContactPrimaryAddressLine2: 'FieldID-623fb8a0-c224-4952-af4c-a4e1e3bd5b70',\n ContactPrimaryAddressCity: 'FieldID-4fe28279-6e83-4e7c-b310-9474dcd5034d',\n ContactPrimaryAddressState: 'FieldID-a215813c-8225-4c21-b646-01b370eefd47',\n ContactPrimaryAddressPostalCode: 'FieldID-3ba73c58-3fa9-4fbf-b28b-8709837685bc',\n ContactPrimaryAddressCountry: 'FieldID-aa50a455-c00b-4d6b-98f7-f833332b1b5c',\n CompanyPrimarySalespersonID: 'FieldID-1d95f7ec-48f5-407e-ae13-22bf13420a7f',\n CompanySourceName: 'FieldID-2cf065dc-7627-4247-97d9-77b594ecebe4',\n ContactPrimarySalespersonID: 'FieldID-46d1bf91-111a-44d6-a029-9f6722e51fc9',\n CompanyAdditionalSalespersonIDs: 'FieldID-1f3217bc-0712-41b9-aa79-9923b18ebae8',\n ContactAdditionalSalespersonIDs: 'FieldID-3febf407-1d0d-4e06-a962-8774560a2dbc',\n CompanyAdditionalTeamMemberIDs: 'FieldID-7565e426-cfa2-41b4-aa85-5351aa106cc2',\n ContactAdditionalTeamMemberIDs: 'FieldID-716159d5-06b1-4ca1-8b6d-11124fe1a6ea',\n CompanyRecordSourceDrill1: 'FieldID-5e852887-d57f-4186-9140-020981ed5e4f',\n CompanyOriginalSource: 'FieldID-62bebfb2-bd7b-4121-ad37-9625a4900f56',\n CompanyOriginalSourceDrill1: 'FieldID-c8f9ec5f-22b0-4f6e-bac3-feecb2ed2c5b',\n ContactLifecycleStage: 'FieldID-5a74c326-94d8-45ab-90ab-fa319d4812e7',\n ContactJobTitle: 'FieldID-7dba3c94-e95a-49c4-aeb2-765621e4bb87',\n CompanyLinkedInURL: 'FieldID-ac372fb8-3066-447f-9c0b-b7fc693390b0',\n CompanyFacebookURL: 'FieldID-b71abcf6-9091-4be9-a63d-14a6151124e5',\n CompanyPinterestURL: 'FieldID-9011434d-7e16-429b-8d80-db72e6ffa0df',\n CompanyTikTokURL: 'FieldID-6d056a77-c30f-43b7-acb6-ffb60c20a6f9',\n CompanyXURL: 'FieldID-d46270a6-dab3-4ff9-b617-920659297469',\n CompanyInstagramURL: 'FieldID-60e53809-3833-4977-a563-77538c19c2c4',\n ContactLinkedInURL: 'FieldID-b7ef3c20-810d-4a82-80ab-177a95dd7d6e',\n ContactSourceName: 'FieldID-d80132b7-4fbe-45dd-92d3-a313286567ac',\n RecordChangedByUserID: 'FieldID-e7c112b0-15da-4400-8ad7-94150856bdbd',\n RecordChangeFieldIDsList: 'FieldID-7714b53d-f29f-43ac-a038-91daaf1bdcc8',\n RecordChangeReferenceFieldID: 'FieldID-b12f7278-2aee-465e-a37d-75fd0d248724',\n CompanyNextTaskDueDate: 'FieldID-bd887f68-c188-4124-9378-0f0c5e08e067',\n ContactNextTaskDueDate: 'FieldID-4b174b2a-74bc-4dc6-aa78-c77e27e27fce',\n ContactRecordSourceDrill1: 'FieldID-9c480157-7dd2-478e-b296-06a00124af2e',\n ContactOriginalSource: 'FieldID-78e702fa-84c1-46c3-84d9-c59b9f83db88',\n ContactOriginalSourceDrill1: 'FieldID-4cd02441-ace4-4d64-befe-d07a880758da',\n ContactLastEngagementDate: 'FieldID-9d3544b9-b53e-4477-a4c1-7655b582a47e',\n ContactLeadScore: 'FieldID-bb231018-4fe9-4744-b729-95e32f3692da',\n ContactLeadQuality: 'FieldID-232e19aa-d5b4-4746-9f70-de01bb6101e4',\n CompanyLastCampaignEmailOpenDate: 'FieldID-c511effb-b0da-40c9-b35e-481f53b67c1b',\n CompanyLastCampaignEmailClickedDate: 'FieldID-86093a23-ca44-46e0-a0c1-1b1ca0f7de2e',\n ContactLastCampaignEmailOpenDate: 'FieldID-e16d7514-834b-4e39-9df5-36155e736424',\n ContactLastCampaignEmailClickedDate: 'FieldID-abcfcf20-f632-433e-9eee-36aabd9da6ba',\n ContactMarketingEmailConsentStatus: 'FieldID-7e76c322-bf7c-47ed-817a-dc4e2d60402f',\n ContactMarketingEmailConsentSource: 'FieldID-b23bf8e2-b543-4788-8082-4cef2722d435',\n ContactMarketingEmailConsentTimestamp: 'FieldID-95ce7369-6556-45b7-b2ea-2efe17afa360',\n ContactSMSConsentStatus: 'FieldID-7c8eda3b-b1b9-44b1-8f88-adff9dbc61fb',\n ContactSMSConsentSource: 'FieldID-6b8b9930-6b8e-40d2-ace6-11372797870d',\n ContactSMSConsentTimestamp: 'FieldID-265dfa1e-4cd8-4c79-9e06-d87a298e404e',\n CustomObjectName: 'FieldID-b147e280-2cc0-48f2-9fb1-35be050385c0',\n\n OpportunityName: 'FieldID-4c23e7e6-b699-4a66-84ed-b177604e6f61',\n OpportunityAmount: 'FieldID-b4309e38-73cc-4bc1-85e3-3d7de7b824fd',\n OpportunityCurrency: 'FieldID-625e5c04-ab9a-4b0c-81ff-383e24225b10',\n OpportunityExpectedCloseDate: 'FieldID-0ad290fd-52d5-43ce-8cf7-cb02476aff12',\n OpportunityActualCloseDate: 'FieldID-462247c9-6378-42cd-81c1-7a75c829a994',\n OpportunityTags: 'FieldID-3b84bfa4-f1f6-4c4e-a8a3-f28c4d3a2367',\n OpportunityPipelineID: 'FieldID-572b4034-8628-401f-bcf8-3a1f4f3514b7',\n OpportunityProbability: 'FieldID-0c14d2b6-e636-4191-a77e-dd7dc56ff7d3',\n OpportunityStatus: 'FieldID-99be2e4e-13d3-4e21-aeb2-778d92bf0705',\n OpportunityCalculatedStageID: 'FieldID-a2eea10a-e888-41c9-97e2-679be260b21d',\n OpportunitySourceName: 'FieldID-63efc1c8-c83a-46e2-a6b1-5db6dee85ce2',\n};\n\nexport const PlatformExtensionFieldIds = {\n AccountGroupID: 'FieldID-12c064c5-3260-478e-952d-04a3a7e83b15',\n LatestSnapshotID: 'FieldID-60e8f540-6ad5-4e04-a08d-ac6fd1a331e7',\n UserID: 'FieldID-2ccc0de0-89be-499a-968d-b6d1d59b77a1',\n GoogleBusinessProfileClaimed: 'FieldID-4bd53e5d-b489-4271-89f9-d51bf7efe2a1', // from Snapshot\n};\n\n// these are not external_ids, not system fields, and have the same value across all environments\nconst fieldIds: string[] = [\n StandardIds.ActivityManuallyLogged,\n StandardIds.ActivityNoteBody,\n StandardIds.ActivityNoteTitle,\n StandardIds.ActivityEmailType,\n StandardIds.ActivityEmailDirection,\n StandardIds.ActivityEmailStatus,\n StandardIds.ActivityEmailBody,\n StandardIds.ActivityEmailSubject,\n StandardIds.ActivityEmailHeaders,\n StandardIds.ActivityEmailDate,\n StandardIds.ActivityCampaignID,\n StandardIds.ActivityCallDirection,\n StandardIds.ActivityCallOutcome,\n StandardIds.ActivityCallDuration,\n StandardIds.ActivityCallFromNumber,\n StandardIds.ActivityCallToNumber,\n StandardIds.ActivityCallRecordingURL,\n StandardIds.ActivityCallRecordId,\n StandardIds.ActivityCallBody,\n StandardIds.ActivityCallStatus,\n StandardIds.ActivityCallDate,\n StandardIds.ActivityCallRecordingUrl,\n StandardIds.ActivityMeetingBody,\n StandardIds.ActivityMeetingInternalNotes,\n StandardIds.ActivityMeetingURL,\n StandardIds.ActivityMeetingLocation,\n StandardIds.ActivityMeetingStartTime,\n StandardIds.ActivityMeetingEndTime,\n StandardIds.ActivityMeetingOutcome,\n StandardIds.ActivityMeetingStatus,\n StandardIds.ActivityMeetingDuration,\n StandardIds.ActivityName,\n StandardIds.ActivitySourceName,\n StandardIds.ActivityRecordSourceDrillDown1,\n StandardIds.ActivityRecordSourceDrillDown2,\n StandardIds.ActivityTaskBody,\n StandardIds.ActivityTaskDueDate,\n StandardIds.ActivityTaskPriority,\n StandardIds.ActivityTaskStatus,\n StandardIds.ActivityTaskType,\n StandardIds.ActivityTags,\n StandardIds.ActivityCommunicationChannel,\n StandardIds.ActivityCommunicationOutcome,\n StandardIds.ActivityCommunicationBody,\n StandardIds.ActivityCommunicationDate,\n StandardIds.ActivityCommunicationFromId,\n StandardIds.ActivityCommunicationToId,\n StandardIds.ActivityUrl,\n StandardIds.ActivityUrlName,\n StandardIds.ActivityOpportunityChangeID,\n StandardIds.ActivityOpportunityChangePipelineStage,\n StandardIds.ActivityOpportunityChangeLostReason,\n StandardIds.ActivityOpportunityChangeNotes,\n StandardIds.ActivityOpportunityChangeUpdatedDate,\n StandardIds.ActivityOpportunityChangeSalespersonID,\n StandardIds.CompanyName,\n StandardIds.CompanyParentCompanyID,\n StandardIds.CompanyNextTaskDueDate,\n StandardIds.CompanyPrimaryAddressLine1,\n StandardIds.CompanyPrimaryAddressLine2,\n StandardIds.CompanyPrimaryAddressCity,\n StandardIds.CompanyPrimaryAddressState,\n StandardIds.CompanyPrimaryAddressPostalCode,\n StandardIds.CompanyPrimaryAddressCountry,\n StandardIds.CompanyPrimaryAddressLatitudeLongitude,\n StandardIds.CompanyPrimaryAddressGooglePlaceID,\n StandardIds.CompanyGBPClaimed,\n StandardIds.CompanyGoogleReviewScore,\n StandardIds.CompanyWebsite,\n StandardIds.CompanyPhoneNumber,\n StandardIds.CompanyPrimarySalespersonID,\n StandardIds.CompanyAdditionalSalespersonIDs,\n StandardIds.CompanyLeadScore,\n StandardIds.CompanyLastEngagementDate,\n StandardIds.ContactPrimaryCompanyID,\n StandardIds.ContactPrimaryAddressLine1,\n StandardIds.ContactPrimaryAddressLine2,\n StandardIds.ContactPrimaryAddressCity,\n StandardIds.ContactPrimaryAddressState,\n StandardIds.ContactPrimaryAddressPostalCode,\n StandardIds.ContactPrimaryAddressCountry,\n StandardIds.ContactPrimarySalespersonID,\n StandardIds.ContactAdditionalSalespersonIDs,\n StandardIds.ContactJobTitle,\n StandardIds.ContactLinkedInURL,\n StandardIds.RecordChangedByUserID,\n StandardIds.RecordChangeFieldIDsList,\n StandardIds.RecordChangeReferenceFieldID,\n StandardIds.ContactNextTaskDueDate,\n StandardIds.ContactLastEngagementDate,\n StandardIds.CompanyAdditionalTeamMemberIDs,\n StandardIds.ContactAdditionalTeamMemberIDs,\n StandardIds.CustomObjectName,\n];\n\nconst renderableReadonlyFields: string[] = [\n SystemFieldIds.CompanyOwnerID,\n SystemFieldIds.ContactOwnerID,\n StandardIds.OpportunityStatus,\n];\n\nconst demoFieldIds: { [name: string]: string } = {\n [StandardExternalIds.FirstName]: 'FieldID-3a287668-9112-4e10-864d-ae553fe2c1dc',\n [StandardExternalIds.LastName]: 'FieldID-b9d359dd-c415-4c31-a241-8e66af668f2c',\n [StandardExternalIds.PhoneNumber]: 'FieldID-da943860-ae6a-49f9-9210-56935d764ecb',\n [StandardExternalIds.Email]: 'FieldID-f2b5c6ff-a141-412e-89c7-269b7546cb63',\n [StandardExternalIds.Tags]: 'FieldID-e458cc1b-2873-4026-9eae-d0fe01c2385d',\n [StandardExternalIds.ActivityRecordChangeType]: 'FieldID-fb7ca0a7-e1a9-43a9-8ead-dd6ea20dda11',\n [StandardExternalIds.ContactCompanyName]: 'FieldID-7451a249-08ea-4fcc-8e2e-b2770ceaf636',\n [StandardExternalIds.ChangeRecordChangeType]: 'FieldID-e7c112b0-15da-4400-8ad7-94150856bdbd',\n [StandardIds.CompanyPrimarySalespersonID]: 'FieldID-1d95f7ec-48f5-407e-ae13-22bf13420a7f',\n [StandardIds.CompanyLifecycleStage]: 'FieldID-865f4984-2fa2-462c-82d0-f78ad1477fb0',\n [NonStandardExternalIDs.NetPromoterScore]: 'FieldID-0d582902-d711-4e31-ad86-01c673eca76a',\n [NonStandardExternalIDs.LastEmailRequest]: 'FieldID-dd423310-864a-453a-9f37-f98dd8617964',\n [NonStandardExternalIDs.LastSmsRequest]: 'FieldID-5153b6ea-e46b-4886-a086-96162372cf00',\n};\n\nconst prodFieldIds: { [name: string]: string } = {\n [StandardExternalIds.FirstName]: 'FieldID-211d398a-d905-43f8-a8e2-c1c952d4f5cc',\n [StandardExternalIds.LastName]: 'FieldID-a1c64750-0a8e-457b-8575-bcada69db4a1',\n [StandardExternalIds.PhoneNumber]: 'FieldID-1bcd68e1-2234-4a0c-9c70-21d9a6ff0ce8',\n [StandardExternalIds.Email]: 'FieldID-d2fea894-1e23-4bf6-b488-2cd7a8359dde',\n [StandardExternalIds.Tags]: 'FieldID-a7b68b66-6820-4a44-9717-f8f4e1d399ce',\n [StandardExternalIds.ActivityRecordChangeType]: 'FieldID-fb7ca0a7-e1a9-43a9-8ead-dd6ea20dda11',\n [StandardExternalIds.ContactCompanyName]: 'FieldID-7451a249-08ea-4fcc-8e2e-b2770ceaf636',\n [StandardExternalIds.ChangeRecordChangeType]: 'FieldID-e7c112b0-15da-4400-8ad7-94150856bdbd',\n [StandardIds.CompanyPrimarySalespersonID]: 'FieldID-1d95f7ec-48f5-407e-ae13-22bf13420a7f',\n [StandardIds.CompanyLifecycleStage]: 'FieldID-865f4984-2fa2-462c-82d0-f78ad1477fb0',\n [NonStandardExternalIDs.NetPromoterScore]: 'FieldID-d92c9787-2a4c-41cf-a094-6ac0bf3507b9',\n [NonStandardExternalIDs.LastEmailRequest]: 'FieldID-2eb31e35-0c7f-401c-9921-271e8d552911',\n [NonStandardExternalIDs.LastSmsRequest]: 'FieldID-d7f307b1-b53f-4c6f-9e7d-87d882cca929',\n};\n\n@Injectable({ providedIn: 'root' })\nexport class CrmFieldService {\n constructor(private readonly environmentService: EnvironmentService) {}\n\n // identifier can be a system field ID or an external ID\n getFieldId(identifier: string): string {\n if (Object.values(SystemFieldIds).includes(identifier)) {\n return identifier;\n }\n\n if (Object.values(PlatformExtensionFieldIds).includes(identifier)) {\n return identifier;\n }\n\n if (fieldIds.includes(identifier)) {\n return identifier;\n }\n\n if (Object.values(StandardIds).includes(identifier)) {\n return identifier;\n }\n\n const environment = this.environmentService.getEnvironment();\n switch (environment) {\n case Environment.DEMO:\n for (const [key, value] of Object.entries(demoFieldIds)) {\n if (value === identifier || key === identifier) {\n return value;\n }\n }\n throw new Error(\n `Unknown identifier (${identifier}) specified for ${this.environmentService.getEnvironmentString()} environment`,\n );\n case Environment.PROD:\n for (const [key, value] of Object.entries(prodFieldIds)) {\n if (value === identifier || key === identifier) {\n return value;\n }\n }\n throw new Error(\n `Unknown identifier (${identifier}) specified for ${this.environmentService.getEnvironmentString()} environment`,\n );\n default:\n throw new Error(\n `Unknown environment (${this.environmentService.getEnvironmentString()}) specified when getting field ID`,\n );\n }\n }\n\n // identifier can be a system field ID or an external ID\n getFieldValueFromCrmObject(crmObject: CrmObjectInterface, identifier: string): FieldValueInterface | null {\n if (!crmObject.fields) {\n return null;\n }\n\n const fieldId = this.getFieldId(identifier);\n const fieldValue = crmObject.fields.find((field) => field.fieldId === fieldId);\n if (!fieldValue) {\n return null;\n }\n return fieldValue;\n }\n\n setFieldValueOnCrmObject(crmObject: CrmObjectInterface, identifier: string, stringValue: string): CrmObjectInterface {\n if (!crmObject.fields) {\n crmObject.fields = [];\n }\n\n const fieldId = this.getFieldId(identifier);\n const fieldValue = crmObject.fields.find((field) => field.fieldId === fieldId);\n const value: FieldValueInterface = {\n fieldId,\n stringValue,\n };\n if (!fieldValue) {\n crmObject.fields.push(value);\n } else {\n fieldValue.stringValue = value.stringValue;\n }\n return crmObject;\n }\n\n getFieldIdFromFormField(field: string): string {\n switch (field) {\n case 'noteBody':\n return StandardIds.ActivityNoteBody;\n case 'loggedNoteTags':\n return StandardIds.ActivityTags;\n case 'loggedEmailDescription':\n return StandardIds.ActivityEmailBody;\n case 'loggedEmailDirection':\n return StandardIds.ActivityEmailDirection;\n case 'loggedEmailDate':\n return StandardIds.ActivityEmailDate;\n case 'loggedCallNote':\n return StandardIds.ActivityCallBody;\n case 'loggedCallDirection':\n return StandardIds.ActivityCallDirection;\n case 'loggedCallDate':\n return StandardIds.ActivityCallDate;\n case 'loggedCallStatus':\n return StandardIds.ActivityCallStatus;\n case 'loggedCallOutcome':\n return StandardIds.ActivityCallOutcome;\n case 'loggedMeetingNote':\n return StandardIds.ActivityMeetingBody;\n case 'loggedMeetingDate':\n return StandardIds.ActivityMeetingStartTime;\n case 'loggedMeetingStatus':\n return StandardIds.ActivityMeetingStatus;\n case 'loggedMeetingOutcome':\n return StandardIds.ActivityMeetingOutcome;\n case 'loggedMeetingDuration':\n return StandardIds.ActivityMeetingDuration;\n case 'taskName':\n return StandardIds.ActivityName;\n case 'taskInstructions':\n return StandardIds.ActivityTaskBody;\n case 'taskDueDate':\n return StandardIds.ActivityTaskDueDate;\n case 'taskPriority':\n return StandardIds.ActivityTaskPriority;\n case 'taskType':\n return StandardIds.ActivityTaskType;\n case 'loggedCommunicationBody':\n return StandardIds.ActivityCommunicationBody;\n case 'loggedCommunicationChannel':\n return StandardIds.ActivityCommunicationChannel;\n case 'loggedCommunicationOutcome':\n return StandardIds.ActivityCommunicationOutcome;\n case 'loggedCommunicationDate':\n return StandardIds.ActivityCommunicationDate;\n default:\n return '';\n }\n }\n\n getFieldMaskFromFormFields(fields: string[]): string[] {\n const fieldIds: string[] = [];\n fields.forEach((field) => {\n const id = this.getFieldIdFromFormField(field);\n if (id) {\n fieldIds.push(`fields.${id}`);\n }\n });\n return fieldIds;\n }\n\n getFieldMaskFromFormGroup(formGroup?: FormGroup): string[] {\n if (!formGroup) return [];\n const dirtyFields = [];\n for (const field in formGroup.controls) {\n const control = formGroup.get(field);\n if (control?.dirty) {\n dirtyFields.push(field);\n }\n }\n return this.getFieldMaskFromFormFields(dirtyFields);\n }\n\n shouldRenderReadonlyField(identifier: string): boolean {\n return renderableReadonlyFields.includes(identifier);\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n CreateCrmObjectRequestInterface,\n CreateCrmObjectResponseInterface,\n CRMApiService,\n DeleteCrmObjectRequestInterface,\n GetMultiCrmObjectRequestInterface,\n GetMultiCrmObjectResponseInterface,\n ListCrmObjectsRequestInterface,\n ListCrmObjectsResponseInterface,\n ListFieldOptionsRequestInterface,\n ListFieldOptionsResponseInterface,\n ListFiltersRequestInterface,\n ListFiltersResponseInterface,\n UpdateCrmObjectRequestInterface,\n ValidateCrmObjectRequestInterface,\n ValidateCrmObjectResponseInterface,\n} from '@vendasta/crm';\nimport { Observable } from 'rxjs';\nimport { AbstractCrmObjectService } from './_abstract.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ContactService implements AbstractCrmObjectService {\n constructor(private readonly service: CRMApiService) {}\n\n createCrmObject(request: CreateCrmObjectRequestInterface): Observable {\n return this.service.createContact(request);\n }\n\n deleteCrmObject(request: DeleteCrmObjectRequestInterface): Observable> {\n return this.service.deleteContact(request);\n }\n\n validateCrmObject(request: ValidateCrmObjectRequestInterface): Observable {\n return this.service.validateContact(request);\n }\n\n updateCrmObject(request: UpdateCrmObjectRequestInterface): Observable> {\n return this.service.updateContact(request);\n }\n\n listObjects(request: ListCrmObjectsRequestInterface): Observable {\n return this.service.listContacts(request);\n }\n\n listObjectsFilters(request: ListFiltersRequestInterface): Observable {\n return this.service.listContactsFilters(request);\n }\n\n getMultiObject(request: GetMultiCrmObjectRequestInterface): Observable {\n return this.service.getMultiContact(request);\n }\n\n listFieldOptions(request: ListFieldOptionsRequestInterface): Observable {\n return this.service.listContactFieldOptions(request);\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n CRMCompanyApiService,\n CreateCrmObjectRequestInterface,\n CreateCrmObjectResponseInterface,\n DeleteCrmObjectRequestInterface,\n GetMultiCrmObjectRequestInterface,\n GetMultiCrmObjectResponseInterface,\n ListCrmObjectsRequestInterface,\n ListCrmObjectsResponseInterface,\n ListFieldOptionsRequestInterface,\n ListFieldOptionsResponseInterface,\n ListFiltersRequestInterface,\n ListFiltersResponseInterface,\n UpdateCrmObjectRequestInterface,\n ValidateCrmObjectRequestInterface,\n ValidateCrmObjectResponseInterface,\n StartBulkCompanyCreateRequestInterface,\n StartBulkCompanyCreateResponseInterface,\n} from '@vendasta/crm';\nimport { Observable } from 'rxjs';\nimport { AbstractCrmObjectService } from './_abstract.service';\n\n@Injectable({ providedIn: 'root' })\nexport class CompanyService implements AbstractCrmObjectService {\n constructor(private readonly service: CRMCompanyApiService) {}\n\n createCrmObject(request: CreateCrmObjectRequestInterface): Observable {\n return this.service.createCompany(request);\n }\n\n deleteCrmObject(request: DeleteCrmObjectRequestInterface): Observable> {\n return this.service.deleteCompany(request);\n }\n\n validateCrmObject(request: ValidateCrmObjectRequestInterface): Observable {\n return this.service.validateCompany(request);\n }\n\n updateCrmObject(request: UpdateCrmObjectRequestInterface): Observable> {\n return this.service.updateCompany(request);\n }\n\n listObjects(request: ListCrmObjectsRequestInterface): Observable {\n return this.service.listCompanies(request);\n }\n\n listObjectsFilters(request: ListFiltersRequestInterface): Observable {\n return this.service.listCompaniesFilters(request);\n }\n\n getMultiObject(request: GetMultiCrmObjectRequestInterface): Observable {\n return this.service.getMultiCompany(request);\n }\n\n listFieldOptions(request: ListFieldOptionsRequestInterface): Observable {\n return this.service.listCompanyFieldOptions(request);\n }\n\n startBulkCreate(\n request: StartBulkCompanyCreateRequestInterface,\n ): Observable {\n return this.service.startBulkCompanyCreate(request);\n }\n}\n","import {\n CreateCrmObjectRequestInterface,\n CreateCrmObjectResponseInterface,\n CRMActivityApiService,\n DeleteCrmObjectRequestInterface,\n GetMultiCrmObjectRequestInterface,\n GetMultiCrmObjectResponseInterface,\n ListCrmObjectsRequestInterface,\n ListCrmObjectsResponseInterface,\n ListFieldOptionsRequestInterface,\n ListFieldOptionsResponseInterface,\n ListFiltersRequestInterface,\n ListFiltersResponseInterface,\n UpdateCrmObjectRequestInterface,\n ValidateCrmObjectRequestInterface,\n ValidateCrmObjectResponseInterface,\n} from '@vendasta/crm';\nimport { AbstractCrmObjectService } from './_abstract.service';\nimport { Observable } from 'rxjs';\nimport { HttpResponse } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ActivityObjectService implements AbstractCrmObjectService {\n constructor(private readonly activityApiService: CRMActivityApiService) {}\n\n createCrmObject(request: CreateCrmObjectRequestInterface): Observable {\n return this.activityApiService.createActivity(request);\n }\n\n deleteCrmObject(request: DeleteCrmObjectRequestInterface): Observable> {\n return this.activityApiService.deleteActivity(request);\n }\n\n getMultiObject(request: GetMultiCrmObjectRequestInterface): Observable {\n return this.activityApiService.getMultiActivity(request).pipe(\n map((response) => {\n return {\n crmObjects: response.activities,\n };\n }),\n );\n }\n\n listFieldOptions(request: ListFieldOptionsRequestInterface): Observable {\n return this.activityApiService.listActivityFieldOptions(request);\n }\n\n listObjects(request: ListCrmObjectsRequestInterface): Observable {\n return this.activityApiService.listActivities(request).pipe(\n map((response) => {\n return {\n crmObjects: response.activities || [],\n pagingMetadata: response.pagingMetadata || {},\n } as ListCrmObjectsResponseInterface;\n }),\n );\n }\n\n listObjectsFilters(request: ListFiltersRequestInterface): Observable {\n return this.activityApiService.listActivityFilters(request);\n }\n\n updateCrmObject(request: UpdateCrmObjectRequestInterface): Observable> {\n return this.activityApiService.updateActivity({\n namespace: request.namespace,\n activity: request.crmObject,\n fieldMask: request.fieldMask,\n });\n }\n\n validateCrmObject(request: ValidateCrmObjectRequestInterface): Observable {\n return this.activityApiService.validateActivity(request);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { CrmObjectService } from './crm-object-service/crm-object.service';\nimport { ObjectType } from '../../tokens-and-interfaces';\n\n@Injectable()\nexport class CrmFieldOptionsService {\n constructor(private readonly objectService: CrmObjectService) {}\n\n getFieldOptions(\n fieldId: string,\n search: string,\n objectType: ObjectType,\n objectSubtype$?: Observable,\n ): Observable {\n return (objectSubtype$ ?? of('')).pipe(\n switchMap((objectSubtype) =>\n this.objectService.listFieldOptions(objectType, {\n fieldId: fieldId,\n pageSize: 10,\n searchTerm: search,\n crmObjectSubtype: objectSubtype,\n }),\n ),\n map((response) => response?.options || []),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CRMFilterOverride, TableCustomCell } from '../../tokens-and-interfaces';\nimport { CrmObjectInterface, FieldSchemaInterface, SortByInterface } from '@vendasta/crm';\nimport { Observable } from 'rxjs';\nimport { CellData, CustomCell, GalaxyColumnDef, Row } from '@vendasta/galaxy/table';\nimport { GalaxyFilterDefinitionInterface, GalaxyFilterInterface } from '@vendasta/galaxy/filter/chips';\nimport { CrmFieldService, StandardIds } from '../crm-services/field.service';\n\nexport type CustomRowStyle = (row: Row) => RowStyle;\n\nexport interface RowStyle {\n color?: string;\n 'text-decoration'?: string;\n}\n\nexport interface ColumnDataInterface {\n [columnId: string]: CellData;\n}\n\nexport interface TableCustomizationServiceInterface {\n defaultSortingOptions?: SortByInterface[];\n\n customizeColumns(columns: GalaxyColumnDef[], isMobile: boolean): GalaxyColumnDef[];\n\n customizeRowData(\n crmObject: CrmObjectInterface,\n schemaMap: { [schemaId: string]: FieldSchemaInterface },\n columnData: ColumnDataInterface,\n ): void;\n\n getRowFullName(crmObject: CrmObjectInterface): string;\n\n customizeFilters(filters: GalaxyFilterDefinitionInterface[]): Observable;\n\n getAssociationInfo(crmObject: CrmObjectInterface): string;\n\n getInitialFilters(\n filterDefinitions$: Observable,\n ): Promise;\n}\n\n@Injectable()\n// TODO: transform/split part of this into overall customization service if\n// ends up having to be used everywhere\nexport abstract class TableCustomizationService implements TableCustomizationServiceInterface {\n constructor(protected readonly crmFieldService: CrmFieldService) {}\n\n private addCustomCell(\n tableCustomCell: TableCustomCell,\n crmObject: CrmObjectInterface,\n columnData: ColumnDataInterface,\n ): void {\n const cellValues = tableCustomCell.fieldIds.map((fieldId) => {\n return this.crmFieldService.getFieldValueFromCrmObject(crmObject, fieldId);\n });\n\n if ('namespace' in crmObject) {\n const namespaceValue = (crmObject as { namespace: string }).namespace;\n cellValues.push({ fieldId: 'namespace', stringValue: namespaceValue });\n }\n\n columnData[tableCustomCell.columnDefinition.id] = {\n cellType: 'custom',\n value: cellValues,\n component: tableCustomCell.customCellComponent,\n } as CustomCell;\n }\n\n protected addCustomCells(\n tableCustomCells: TableCustomCell[],\n crmObject: CrmObjectInterface,\n columnData: ColumnDataInterface,\n ): void {\n for (const tableCustomCell of tableCustomCells) {\n this.addCustomCell(tableCustomCell, crmObject, columnData);\n }\n }\n\n protected addCustomColumns(customColumns: GalaxyColumnDef[], columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n const joinedColumns = [\n // default custom columns as hidden true\n ...columns,\n ...customColumns.map((customColumn) => ({ ...customColumn, hidden: true })),\n ];\n const dedupedColumns = joinedColumns.filter(\n (column, index, self) => self.findIndex((c) => c.id === column.id) === index,\n );\n\n return dedupedColumns;\n }\n\n protected overrideCustomFilters(\n filters: GalaxyFilterDefinitionInterface[],\n overrides: CRMFilterOverride[],\n ): GalaxyFilterDefinitionInterface[] {\n for (const override of overrides) {\n const findFieldIDIndex = filters.findIndex((f) => f.fieldId === override.fieldId);\n if (findFieldIDIndex >= 0 && filters[findFieldIDIndex]) {\n filters[findFieldIDIndex].fieldName = override.title;\n }\n }\n return filters;\n }\n\n abstract customizeColumns(columns: GalaxyColumnDef[], isMobile: boolean): GalaxyColumnDef[];\n\n abstract customizeRowData(\n crmObject: CrmObjectInterface,\n schemaMap: { [schemaId: string]: FieldSchemaInterface },\n columnData: ColumnDataInterface,\n ): void;\n\n abstract getRowFullName(crmObject: CrmObjectInterface): string;\n\n abstract customizeFilters(filters: GalaxyFilterDefinitionInterface[]): Observable;\n\n abstract getAssociationInfo(crmObject: CrmObjectInterface): string;\n\n abstract getInitialFilters(\n filterDefinitions$: Observable,\n ): Promise;\n}\n\n@Injectable()\nexport abstract class ActivityTableCustomizationService extends TableCustomizationService {\n getRowFullName(crmObject: CrmObjectInterface): string {\n const name = this.crmFieldService.getFieldId(StandardIds.ActivityName);\n const nameData = crmObject.fields?.find((f) => f.fieldId === name);\n return nameData?.stringValue || '';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getAssociationInfo(crmObject: CrmObjectInterface): string {\n return '';\n }\n\n abstract override getInitialFilters(): Promise;\n}\n","import { ObjectType, RecordChangeType } from './tokens-and-interfaces';\n\nexport const businessAccountLink = '/businesses/accounts/%s/details';\nexport const salesCenterLink = '/sales/redirect?nextUrl=/info/%s';\nexport const SNACKBAR_DURATION = 10000;\nexport const SEARCH_DEBOUNCE_MS = 300;\nexport const LIST_OBJECTS_DEFAULT_PAGE_SIZE = 25;\nexport const LIST_OBJECTS_PAGE_SIZE_OPTIONS = [LIST_OBJECTS_DEFAULT_PAGE_SIZE, 50, 100];\nexport const SYSTEM_NAMESPACE = 'system';\nexport const ACTIVITIES_TIMELINE_PAGE_SIZE = 10;\nexport const VALID_RECORD_CHANGE_TYPES = ['CREATED', 'IMPORTANT_FIELD_UPDATED'] as RecordChangeType[];\nexport const AVATAR_WIDTH = 36;\nexport const RESERVED_TAGS = ['primary'];\nexport const PRIMARY_TAG = 'Primary';\nexport const DEFAULT_TAG_SEARCH_SIZE = 10;\n// paths cannot start with a slash\nexport const PAGE_ROUTES = {\n CONTACT: {\n ROOT: 'contact',\n SUBROUTES: {\n LIST: 'list',\n BOARD: 'board',\n CREATE: 'create',\n EDIT: 'edit/:crmObjectId',\n PROFILE: 'profile/:crmObjectId',\n },\n USER: 'bc-admin',\n },\n COMPANY: {\n ROOT: 'company',\n SUBROUTES: {\n LIST: 'list',\n BOARD: 'board',\n CREATE: 'create',\n EDIT: 'edit/:crmObjectId',\n PROFILE: 'profile/:crmObjectId',\n REDIRECT: 'redirect',\n },\n ACCOUNT: 'manage-accounts',\n },\n OPPORTUNITY: {\n ROOT: 'opportunity',\n SUBROUTES: {\n LIST: 'list',\n BOARD: 'board',\n CREATE: 'create',\n EDIT: 'edit/:crmObjectId',\n PROFILE: 'details/:crmObjectId',\n },\n },\n TASK: {\n ROOT: 'task',\n SUBROUTES: {\n LIST: 'list',\n BOARD: 'board',\n },\n },\n ACTIVITIES: {\n ROOT: 'activities',\n SUBROUTES: {\n FEED: 'feed',\n },\n },\n PROSPECT: {\n ROOT: 'prospect',\n SUBROUTES: {\n BUSINESSES: 'find-businesses',\n },\n },\n CUSTOM_FIELDS: {\n ROOT: 'custom-fields',\n SUBROUTES: {\n LIST: 'list',\n },\n },\n PIPELINE_SETTINGS: {\n ROOT: 'pipeline/settings',\n },\n CUSTOM_OBJECT: {\n ROOT: 'custom-object/:customObjectTypeID',\n SUBROUTES: {\n LIST: 'list',\n BOARD: 'board',\n CREATE: 'create',\n EDIT: 'edit/:crmObjectId',\n PROFILE: 'profile/:crmObjectId',\n },\n },\n PERMISSION_REQUIRED: 'permission-required',\n BULK_IMPORT: {\n ROOT: 'bulk-import',\n },\n CALLS: {\n ROOT: 'calls',\n },\n MULTI_LOCATION: {\n CONTACTS: {\n ROOT: 'contacts',\n SUBROUTES: {\n LIST: 'list',\n EDIT: ':namespace/edit/:crmObjectId',\n PROFILE: ':namespace/profile/:crmObjectId',\n },\n },\n },\n};\n\nexport const enum BREAKPOINT_WIDTH {\n NAV = '768px',\n TABLET = '1150px',\n MOBILE = '768px',\n}\n\nexport const enum AssociationType {\n ContactToCompany = 'Contact-Company',\n CompanyToCompany = 'Company-Company',\n ContactToOpportunity = 'Contact-Opportunity',\n CompanyToOpportunity = 'Company-Opportunity',\n ContactToCustomObject = 'Contact-CustomObject',\n CompanyToCustomObject = 'Company-CustomObject',\n OpportunityToCustomObject = 'Opportunity-CustomObject',\n CustomObjectToCustomObject = 'CustomObject-CustomObject',\n Invalid = 'invalid',\n}\n\nexport const ASSOCIATION_MAP = new Map>([\n [\n 'Contact',\n new Map([\n ['Company', AssociationType.ContactToCompany],\n ['Opportunity', AssociationType.ContactToOpportunity],\n ['CustomObject', AssociationType.ContactToCustomObject],\n ]),\n ],\n [\n 'Company',\n new Map([\n ['Contact', AssociationType.ContactToCompany],\n ['Company', AssociationType.CompanyToCompany],\n ['Opportunity', AssociationType.CompanyToOpportunity],\n ['CustomObject', AssociationType.CompanyToCustomObject],\n ]),\n ],\n [\n 'Opportunity',\n new Map([\n ['Contact', AssociationType.ContactToOpportunity],\n ['Company', AssociationType.CompanyToOpportunity],\n ['CustomObject', AssociationType.OpportunityToCustomObject],\n ]),\n ],\n [\n 'CustomObject',\n new Map([\n ['Contact', AssociationType.ContactToCustomObject],\n ['Company', AssociationType.CompanyToCustomObject],\n ['Opportunity', AssociationType.OpportunityToCustomObject],\n ['CustomObject', AssociationType.CustomObjectToCustomObject],\n ]),\n ],\n]);\n\nexport const enum AssociationDirection {\n From = 'from',\n To = 'to',\n Invalid = 'Invalid',\n}\n\nexport const enum ObjectTypePrefix {\n Opportunity = 'OpportunityID',\n}\n\nexport const enum OpportunityStatus {\n ClosedWon = 'Closed Won',\n ClosedLost = 'Closed Lost',\n Open = 'Open',\n}\n","import { Inject, Injectable } from '@angular/core';\nimport {\n Activity,\n ActivityInterface,\n CRMActivityApiService,\n FieldMaskInterface,\n ListActivitiesRequestInterface,\n ListActivitiesResponseInterface,\n} from '@vendasta/crm';\nimport { Observable } from 'rxjs';\nimport { map, switchMap, take } from 'rxjs/operators';\nimport { CrmDependencies, CrmInjectionToken } from '../../tokens-and-interfaces';\n\n@Injectable()\nexport class ActivityService {\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly activityService: CRMActivityApiService,\n ) {}\n\n listActivities(request: ListActivitiesRequestInterface): Observable {\n return this.config.namespace$.pipe(\n switchMap((namespace) => this.activityService.listActivities({ ...request, namespace: namespace }).pipe(take(1))),\n );\n }\n\n createActivity(activity: ActivityInterface): Observable {\n return this.config.namespace$.pipe(\n switchMap((namespace) =>\n this.activityService.createActivity({ namespace: namespace, activity: activity }).pipe(\n map((response) => response.crmObjectId),\n take(1),\n ),\n ),\n );\n }\n\n getMultiActivities(crmObjectIds: string[]): Observable {\n return this.config.namespace$.pipe(\n switchMap((namespace) =>\n this.activityService\n .getMultiActivity({ namespace: namespace, crmObjectIds: crmObjectIds })\n .pipe(map((response) => response.activities)),\n ),\n );\n }\n\n updateActivity(activity: ActivityInterface, fieldMask: FieldMaskInterface): Observable {\n const fieldMaskPaths = fieldMask?.paths?.length ?? 0;\n if (fieldMaskPaths === 0) {\n throw new Error('Field mask with at least one path is required for updating an activity');\n }\n return this.config.namespace$.pipe(\n switchMap((namespace) =>\n this.activityService.updateActivity({ namespace: namespace, activity: activity, fieldMask: fieldMask }),\n ),\n map(() => null),\n );\n }\n\n updateActivityMultilocation(\n activity: ActivityInterface,\n fieldMask: FieldMaskInterface,\n namespace: string | null,\n ): Observable {\n const fieldMaskPaths = fieldMask?.paths?.length ?? 0;\n if (fieldMaskPaths === 0) {\n throw new Error('Field mask with at least one path is required for updating an activity');\n }\n if (!namespace) {\n throw new Error('Namespace is required for updating an activity');\n }\n return this.activityService\n .updateActivity({ namespace: namespace, activity: activity, fieldMask: fieldMask })\n .pipe(map(() => null));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ActivityType, ObjectType } from '../../tokens-and-interfaces';\n\n/*\n this reference tracks which translation keys are object-specific\n while we could just assume a convention of `objectType.KEY` for all object-specific keys\n this book-keeping provides some safety around the completeness of the translation files\n*/\nconst objectSpecificTranslationKeys: string[] = [\n 'TITLE',\n 'ADD_OBJECT_BUTTON',\n 'PROSPECT_OBJECT_BUTTON',\n 'RECORD_CHANGE_ACTIVITY.CREATED',\n 'RECORD_CHANGE_ACTIVITY.CREATED_VIA',\n 'RECORD_CHANGE_ACTIVITY.IMPORTANT_FIELD_UPDATED',\n 'RECORD_CHANGE_ACTIVITY.IMPORTANT_FIELD_UPDATED_SALESPERSON',\n 'RECORD_CHANGE_ACTIVITY.IMPORTANT_FIELD_UPDATED_SALESPERSON_NOT_ASSIGNED',\n 'RECORD_CHANGE_ACTIVITY.IMPORTANT_FIELD_UPDATED_SALESPERSON_UNKNOWN',\n 'LIST_OBJECTS_TABLE.EMPTY_TABLE.IMAGE_ALT',\n 'LIST_OBJECTS_TABLE.EMPTY_TABLE.HEADER',\n 'LIST_OBJECTS_TABLE.EMPTY_TABLE.HINT',\n 'LIST_OBJECTS_TABLE.ACTIONS.EDIT.TITLE',\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE.ACTION',\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE.TITLE',\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE.CANCEL',\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE.CONFIRM',\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE.CONFIRMATION_MESSAGE',\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE.SUCCESS',\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE.ERROR',\n `LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.ACTION`,\n `LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.TITLE`,\n `LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.CANCEL`,\n `LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.CONFIRM`,\n `LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.CONFIRMATION_MESSAGE`,\n `LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.SUCCESS`,\n `LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.ERROR`,\n 'LIST_OBJECTS_TABLE.SELECT_ALL.SELECT_ALL_OBJECTS',\n 'LIST_OBJECTS_TABLE.SELECT_ALL.TOTAL_SELECTED',\n 'LIST_OBJECTS_TABLE.SELECT_ALL.CLEAR_SELECTION',\n 'LIST_OBJECTS_TABLE.PIPELINE.EMPTY_STATE.TITLE',\n 'LIST_OBJECTS_TABLE.PIPELINE.EMPTY_STATE.MESSAGE',\n 'LIST_OBJECTS_TABLE.PIPELINE.EMPTY_STATE.SETUP_PIPELINE',\n 'CREATE_PAGE.TITLE',\n 'CREATE_PAGE.SAVE.ASSOCIATIONS_REQUIRED',\n 'EDIT_PAGE.TITLE',\n 'EDIT_PAGE.SAVE.SUCCESS',\n 'CREATE_PAGE.SAVE.SUCCESS',\n 'CREATE_PAGE.SAVE.ERROR',\n 'CREATE_PAGE.LOAD.ERROR',\n 'TABLE_FILTERS.HEADER',\n 'STANDARD_FIELD_RULES.UNIQUE_FIELD_VALUE.ENFORCED',\n 'STANDARD_FIELD_RULES.UNIQUE_FIELD_VALUE.WARNING',\n 'STANDARD_FIELD_RULES.E164_FORMAT.WARNING',\n 'PROFILE_PAGE.EDIT',\n 'PROFILE_PAGE.TITLE',\n 'PROFILE_PAGE.NPS',\n 'PROFILE_PAGE.LEAD_SCORE',\n 'PROFILE_PAGE.ABOUT_TAB',\n 'PROFILE_PAGE.ACTIVITIES_TIMELINE_TAB',\n 'PROFILE_PAGE.ASSOCIATIONS_TAB',\n 'PROFILE_PAGE.PREVIOUS_PAGE_TITLE',\n 'VIEW_OBJECT',\n 'SELECT_MODAL.ONE_SELECTED',\n 'SELECT_MODAL.MORE_SELECTED',\n 'SELECT_MODAL.NO_SELECTED',\n 'SELECT_MODAL.CREATE_NEW',\n 'ASSOCIATION_PANEL.TITLE',\n 'ASSOCIATION_PANEL.ADD_ASSOCIATION',\n 'ASSOCIATION_PANEL.TITLE_ASSOCIATE',\n 'ASSOCIATION_PANEL.CREATE_BUTTON',\n 'ASSOCIATION_FORM.TITLE',\n 'ASSOCIATION_FORM.PLACEHOLDER',\n 'ASSOCIATION_PANEL.SET_PRIMARY_MODAL.RADIO_BUTTON_TEXT',\n 'ASSOCIATION_PANEL.SET_PRIMARY_MODAL.RADIO_BUTTON_DESCRIPTION',\n 'SELECT_FIELD',\n 'ASSOCIATION_PANEL.CONFIRM_EXISTING_PRIMARY_MODAL.TITLE',\n 'ASSOCIATION_PANEL.CONFIRM_EXISTING_PRIMARY_MODAL.CONFIRMATION_MESSAGE',\n 'ASSOCIATION_PANEL.CHANGE_PRIMARY_DIALOG.TITLE',\n 'ASSOCIATION_PANEL.CHANGE_PRIMARY_DIALOG.MESSAGE',\n];\n\n@Injectable()\nexport class TranslateByObjectTypeService {\n constructor(private readonly translateService: TranslateService) {}\n\n private getTranslationKeyByObjectType(objectType: ObjectType | ActivityType, partialTranslationKey: string): string {\n const formattedObjectType = objectType === 'CustomObject' ? 'CUSTOM_OBJECT' : objectType.toUpperCase();\n if (!objectSpecificTranslationKeys.includes(partialTranslationKey)) {\n console.warn(`Translation key ${partialTranslationKey} is not supported for object type ${objectType}`);\n return `PARTIAL.${partialTranslationKey}`;\n }\n return `${formattedObjectType}.${partialTranslationKey}`;\n }\n\n getTranslationByObjectType(\n objectType: ObjectType | ActivityType,\n partialTranslationKey: string,\n // eslint-disable-next-line @typescript-eslint/ban-types\n interpolateParams?: Object,\n ): string {\n const translationKey = this.getTranslationKeyByObjectType(objectType, partialTranslationKey);\n const translation = this.translateService.instant(translationKey, interpolateParams);\n if (translationKey === translation) {\n console.warn(`Missing translation for object specific key ${translationKey}`);\n }\n return translation;\n }\n\n getTranslatedObjectType(objectType: ObjectType | ActivityType): string {\n const formattedObjectType = objectType === 'CustomObject' ? 'CUSTOM_OBJECT' : objectType.toUpperCase();\n const translatedObject = this.translateService.instant(`OBJECT_TYPES.${formattedObjectType}`);\n return translatedObject || this.translateService.instant(`OBJECT_TYPES.OBJECT`);\n }\n}\n","import { FieldType, FieldValueInterface as CrmFieldValueInterface } from '@vendasta/crm';\n\nconst compareStringList = (currentValue: CrmFieldValueInterface, modifiedValue: CrmFieldValueInterface): boolean => {\n const currentValues = currentValue.stringValues?.values || [];\n const modifiedValues = modifiedValue.stringValues?.values || [];\n const sortedCurrentValues = currentValues.sort();\n const sortedModifiedValues = modifiedValues.sort();\n\n if (sortedCurrentValues.length !== sortedModifiedValues.length) {\n return true;\n }\n for (const [index, value] of sortedCurrentValues.entries()) {\n if (value !== sortedModifiedValues[index]) {\n return true;\n }\n }\n return false;\n};\n\nconst currencyIsModified = (current: CrmFieldValueInterface, modified: CrmFieldValueInterface): boolean => {\n const valueModified = (current.currencyValue?.value || 0) !== (modified.currencyValue?.value || 0);\n const codeModified = (current.currencyValue?.currencyCode || '') !== (modified.currencyValue?.currencyCode || '');\n return valueModified || codeModified;\n};\n\nexport const isModifiedFieldValue = (\n currentValue: CrmFieldValueInterface,\n modifiedValue: CrmFieldValueInterface,\n fieldType: FieldType,\n): boolean => {\n switch (fieldType) {\n case FieldType.FIELD_TYPE_INTEGER:\n return (currentValue?.integerValue || 0) !== (modifiedValue?.integerValue || 0);\n case FieldType.FIELD_TYPE_FLOAT:\n return (currentValue?.floatValue || 0) !== (modifiedValue.floatValue || 0);\n case FieldType.FIELD_TYPE_STRING:\n case FieldType.FIELD_TYPE_DROPDOWN:\n case FieldType.FIELD_TYPE_EMAIL:\n return (currentValue?.stringValue || '') !== (modifiedValue?.stringValue || '');\n case FieldType.FIELD_TYPE_PHONE:\n return (currentValue?.phoneFieldValues || '') !== (modifiedValue?.phoneFieldValues || '');\n case FieldType.FIELD_TYPE_BOOLEAN:\n return (currentValue?.booleanValue || false) !== (modifiedValue?.booleanValue || false);\n case FieldType.FIELD_TYPE_TAG:\n case FieldType.FIELD_TYPE_STRING_LIST:\n return compareStringList(currentValue, modifiedValue);\n case FieldType.FIELD_TYPE_DATETIME:\n case FieldType.FIELD_TYPE_DATE:\n return currentValue.dateValue?.getTime() !== modifiedValue.dateValue?.getTime();\n case FieldType.FIELD_TYPE_CURRENCY:\n return currencyIsModified(currentValue, modifiedValue);\n default:\n return false;\n }\n};\n","import { Inject, Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n CRMFieldLayoutApiService,\n CRMFieldSchemaApiService,\n CRMMultiLocationFieldLayoutApiService,\n CRMMultiLocationFieldSchemaApiService,\n CrmObjectInterface,\n FieldGroupInterface as CrmFieldGroupInterface,\n FieldSchema,\n FieldSchemaInterface as CrmFieldSchemaInterface,\n FieldType,\n FieldValueInterface as CrmFieldValueInterface,\n ListFieldGroupsResponseInterface,\n ListFieldSchemaResponseInterface,\n ObjectProjectionFilterInterface,\n PagedRequestOptionsInterface,\n ValidateCrmObjectResponseValidationErrorInterface,\n ValidateCrmObjectResponseValidationErrorSeverity as ErrorSeverity,\n} from '@vendasta/crm';\nimport {\n combineLatest,\n EMPTY,\n expand,\n filter,\n forkJoin,\n map,\n Observable,\n of,\n reduce,\n shareReplay,\n switchMap,\n take,\n} from 'rxjs';\nimport { CrmObjectService } from './crm-object-service/crm-object.service';\nimport { TranslateByObjectTypeService } from '../../i18n/translate-by-object-type/translate-by-object-type.service';\nimport {\n CrmDependencies,\n CrmInjectionToken,\n CrmMultiLocationDependencies,\n CrmMultilocationInjectionToken,\n FieldGroupInterface,\n FieldInterface,\n FieldSchemaInterface,\n FieldValueInterface,\n MultiLocationContext,\n ObjectType,\n} from '../../tokens-and-interfaces';\nimport { isModifiedFieldValue } from './crm-form.utils';\n\nconst MAX_SERVER_PAGE_SIZE = 200;\n\nexport interface ValidateErrorsWithFieldSchemas {\n errors: ValidateCrmObjectResponseValidationErrorInterface[];\n fieldSchemaMap: Map;\n}\n\n@Injectable()\nexport class CrmFormService {\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n @Inject(CrmMultilocationInjectionToken) private multiLocationConfig: CrmMultiLocationDependencies,\n private readonly crmObjectService: CrmObjectService,\n private readonly crmFieldSchemaApiService: CRMFieldSchemaApiService,\n private readonly crmMultiLocationFieldSchemaService: CRMMultiLocationFieldSchemaApiService,\n private readonly crmFieldLayoutApiService: CRMFieldLayoutApiService,\n private readonly crmMultiLocationFieldLayoutService: CRMMultiLocationFieldLayoutApiService,\n private readonly translationService: TranslateService,\n private readonly translateByObjectTypeService: TranslateByObjectTypeService,\n ) {}\n\n private handleValidationErrors(objectType: ObjectType, validationResponse: ValidateErrorsWithFieldSchemas): void {\n const invalidSeverityErrors = (validationResponse.errors ?? []).filter(\n (e) => e.severity === ErrorSeverity.VALIDATION_ERROR_SEVERITY_INVALID,\n );\n // only display first error for now\n if (invalidSeverityErrors.length) {\n const firstError = invalidSeverityErrors[0];\n const fieldId = firstError.details?.uniquenessCheck?.fieldId || '';\n const firstErrorSchema = validationResponse.fieldSchemaMap.get(fieldId);\n if (firstError.message) {\n throw new Error(\n this.translateByObjectTypeService.getTranslationByObjectType(objectType, firstError?.message, {\n label: firstErrorSchema?.fieldName?.toLowerCase() || '',\n }),\n );\n }\n throw new Error();\n }\n }\n\n /*\n * TODO: this will probably start to lag when there's a lot of fields.\n * We should probably change to using tabs for different sets of fields later.\n */\n listAllObjectFields$(objectType: ObjectType, objectSubtype?: string): Observable {\n return of({\n fieldSchemas: [],\n pagingMetadata: {\n nextCursor: '',\n hasMore: true,\n },\n }).pipe(\n expand((resp: ListFieldSchemaResponseInterface) => {\n if (!resp?.pagingMetadata?.hasMore) {\n return EMPTY;\n }\n return this.listObjectFieldsNextPage$(\n objectType,\n {\n cursor: resp.pagingMetadata.nextCursor,\n pageSize: MAX_SERVER_PAGE_SIZE,\n },\n objectSubtype,\n );\n }),\n reduce((acc: CrmFieldSchemaInterface[], val) => [...acc, ...(val?.fieldSchemas || [])], []),\n );\n }\n\n private listObjectFieldsNextPage$(\n objectType: ObjectType,\n paging: PagedRequestOptionsInterface,\n objectSubtype?: string,\n ): Observable {\n // listing for a specific namespace will include standard fields as well\n const multiLocationContext$ = this.multiLocationConfig.multiLocationContext$ ?? of({} as MultiLocationContext);\n return combineLatest([this.config.namespace$, multiLocationContext$]).pipe(\n take(1),\n switchMap(([namespace, context]) => {\n const request = {\n crmObjectType: objectType,\n pagingOptions: paging,\n crmObjectSubtype: objectSubtype || '',\n };\n if (namespace === '' && context.groupId && context.accountGroupsIds && context.accountGroupsIds.length > 0) {\n return this.crmMultiLocationFieldSchemaService.listMultiLocationFieldSchema({\n multiLocationPath: context.groupId,\n namespaces: context.accountGroupsIds,\n ...request,\n });\n } else {\n return this.crmFieldSchemaApiService.listFieldSchema({ namespace: namespace, ...request });\n }\n }),\n );\n }\n\n /*\n * TODO: this will probably start to lag when there's a lot of fields.\n * We should probably change to using tabs for different sets of fields later.\n */\n listAllObjectFieldGroups$(objectType: ObjectType, objectSubtype?: string): Observable {\n return of({\n fieldSchemas: [],\n pagingMetadata: {\n nextCursor: '',\n hasMore: true,\n },\n }).pipe(\n expand((resp: ListFieldGroupsResponseInterface) => {\n if (!resp?.pagingMetadata?.hasMore) {\n return EMPTY;\n }\n return this.listObjectFieldGroupsNextPage$(\n objectType,\n {\n cursor: resp.pagingMetadata.nextCursor,\n pageSize: MAX_SERVER_PAGE_SIZE,\n },\n objectSubtype,\n );\n }),\n reduce((acc: CrmFieldGroupInterface[], val) => {\n return [...acc, ...(val?.fieldGroups || [])];\n }, []),\n );\n }\n\n private listObjectFieldGroupsNextPage$(\n objectType: ObjectType,\n paging: PagedRequestOptionsInterface,\n objectSubtype?: string,\n ): Observable {\n const multiLocationContext$ = this.multiLocationConfig.multiLocationContext$ ?? of({} as MultiLocationContext);\n return combineLatest([this.config.namespace$, multiLocationContext$]).pipe(\n take(1),\n switchMap(([namespace, context]) => {\n const request = {\n crmObjectType: objectType,\n pagingOptions: paging,\n crmObjectSubtype: objectSubtype || '',\n };\n if (namespace === '' && context.groupId && context.accountGroupsIds && context.accountGroupsIds.length > 0) {\n return this.crmMultiLocationFieldLayoutService.listMultiLocationFieldGroups({\n multiLocationPath: context.groupId,\n namespaces: context.accountGroupsIds,\n ...request,\n });\n } else {\n return this.crmFieldLayoutApiService.listFieldGroups({ namespace: namespace, ...request });\n }\n }),\n );\n }\n\n private crmFieldGroupToFormFieldGroup(crmFieldGroup: CrmFieldGroupInterface): FieldGroupInterface {\n return {\n description: crmFieldGroup.description,\n fieldIds: crmFieldGroup.fieldIds || [],\n };\n }\n\n listAllObjectFormFieldGroups$(\n objectType: ObjectType,\n objectSubtype?: Observable,\n ): Observable {\n return (objectSubtype ?? of('')).pipe(\n switchMap((subtype) => this.listAllObjectFieldGroups$(objectType, subtype)),\n map((crmFieldGroups) => crmFieldGroups.map(this.crmFieldGroupToFormFieldGroup)),\n );\n }\n\n private crmFieldSchemasToFormFieldSchemas(crmFieldSchemas: CrmFieldSchemaInterface[]): FieldSchemaInterface[] {\n return crmFieldSchemas.map((crmFieldSchema) => {\n return {\n fieldId: crmFieldSchema.fieldId || '',\n fieldType: crmFieldSchema.fieldType || FieldType.FIELD_TYPE_INVALID,\n fieldName: crmFieldSchema.fieldName || '',\n fieldDescription: crmFieldSchema.fieldDescription || '',\n dropdownOptions: crmFieldSchema.dropdownOptions || [],\n currencyCode: crmFieldSchema.currencyCode || '',\n value: null,\n readOnly: crmFieldSchema.readonly,\n } as FieldSchemaInterface;\n });\n }\n\n listAllFormFields$(objectType: ObjectType, objectSubtype?: string): Observable {\n return this.listAllObjectFields$(objectType, objectSubtype).pipe(\n map((crmFieldSchemas) => this.crmFieldSchemasToFormFieldSchemas(crmFieldSchemas)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n private getCrmFieldValueToFormValue(crmFieldValue: CrmFieldValueInterface, fieldType: FieldType): any {\n switch (fieldType) {\n case FieldType.FIELD_TYPE_INTEGER:\n return crmFieldValue.integerValue;\n case FieldType.FIELD_TYPE_CURRENCY:\n return crmFieldValue.currencyValue;\n case FieldType.FIELD_TYPE_STRING:\n case FieldType.FIELD_TYPE_DROPDOWN:\n case FieldType.FIELD_TYPE_EMAIL:\n return crmFieldValue.stringValue;\n case FieldType.FIELD_TYPE_PHONE:\n if (crmFieldValue.phoneFieldValues) {\n return crmFieldValue.phoneFieldValues;\n }\n return crmFieldValue.stringValue;\n case FieldType.FIELD_TYPE_BOOLEAN:\n return crmFieldValue.booleanValue;\n case FieldType.FIELD_TYPE_TAG:\n case FieldType.FIELD_TYPE_STRING_LIST:\n return crmFieldValue.stringValues?.values || [];\n case FieldType.FIELD_TYPE_DATETIME:\n case FieldType.FIELD_TYPE_DATE:\n return crmFieldValue.dateValue;\n case FieldType.FIELD_TYPE_FLOAT:\n return crmFieldValue.floatValue;\n default:\n return null;\n }\n }\n\n isModifiedFieldValue(\n currentValue: CrmFieldValueInterface,\n modifiedValue: CrmFieldValueInterface,\n fieldType: FieldType,\n ): boolean {\n return isModifiedFieldValue(currentValue, modifiedValue, fieldType);\n }\n\n private initializeFormFieldSchemaWithCrmObject(\n fieldSchema: FieldSchemaInterface,\n crmObject: CrmObjectInterface,\n ): void {\n if (!fieldSchema?.fieldId || !crmObject?.fields) {\n return;\n }\n\n const crmObjectFieldValue = crmObject.fields.find((crmObjectField) => {\n return crmObjectField.fieldId === fieldSchema.fieldId;\n });\n\n if (!crmObjectFieldValue) {\n return;\n }\n\n fieldSchema.value = this.getCrmFieldValueToFormValue(crmObjectFieldValue, fieldSchema.fieldType);\n }\n\n listAllFormFieldsInitializedWithCrmObject$(\n objectType: ObjectType,\n crmObjectId: string,\n objectSubtype?: string,\n ): Observable {\n return forkJoin([\n this.crmObjectService.getMultiObject(objectType, [crmObjectId], [\n { filterType: 1, fromFieldType: FieldType.FIELD_TYPE_PHONE, toFieldType: FieldType.FIELD_TYPE_PHONE },\n ] as ObjectProjectionFilterInterface[]),\n this.listAllFormFields$(objectType, objectSubtype),\n ]).pipe(\n map(([getMultiResponse, fieldSchemas]) => {\n if (getMultiResponse?.crmObjects?.length === 0 || !getMultiResponse?.crmObjects?.[0].crmObjectId) {\n throw new Error(this.translationService.instant('CRM_FORM_SERVICE.RESOURCE_NOT_FOUND_ERROR'));\n } else {\n const crmObject = getMultiResponse.crmObjects[0];\n fieldSchemas.forEach((field) => {\n this.initializeFormFieldSchemaWithCrmObject(field, crmObject);\n });\n }\n return fieldSchemas;\n }),\n );\n }\n\n validateCrmObject$(\n objectType: ObjectType,\n crmObject: CrmObjectInterface,\n ): Observable {\n const validationErrors$ = this.crmObjectService\n .validateCrmObject(objectType, crmObject)\n .pipe(map((response) => response.errors || []));\n const fieldSchemaMap$ = this.listAllFormFields$(objectType, crmObject.crmObjectSubtype).pipe(\n map((schemas) => {\n const schemaMap = new Map();\n for (const schema of schemas) {\n schemaMap.set(schema.fieldId, schema);\n }\n return schemaMap;\n }),\n );\n return forkJoin([validationErrors$, fieldSchemaMap$]).pipe(\n map(([validationErrors, fieldSchemaMap]) => {\n return {\n errors: validationErrors,\n fieldSchemaMap: fieldSchemaMap,\n };\n }),\n );\n }\n\n validateAndCreateCrmObject$(\n objectType: ObjectType,\n fields: FieldInterface[],\n objectSubtype?: string,\n ): Observable {\n return of(null).pipe(\n map(() => fields.filter((field) => field.hasModification()).map((field) => field.fieldValue())),\n map((fields) =>\n fields.filter((fieldValue) => {\n return fieldValue?.stringValue !== '';\n }),\n ),\n switchMap((fieldValues) => {\n const crmObject: CrmObjectInterface = {\n fields: fieldValues,\n crmObjectSubtype: objectSubtype,\n };\n const validationResponse$ = this.validateCrmObject$(objectType, crmObject);\n return forkJoin([of(fieldValues), validationResponse$]);\n }),\n switchMap(([fieldValues, validationResponse]) => {\n this.handleValidationErrors(objectType, validationResponse);\n if (!fieldValues?.length) {\n return of(null);\n }\n const crmObject: CrmObjectInterface = {\n fields: fieldValues,\n crmObjectSubtype: objectSubtype,\n };\n\n return this.crmObjectService.createCrmObject(objectType, crmObject).pipe(\n map((resp) => {\n crmObject.crmObjectId = resp.crmObjectId;\n return crmObject;\n }),\n );\n }),\n );\n }\n\n validateAndUpdateCrmObject$(\n objectType: ObjectType,\n crmObjectId: string,\n fields: FieldInterface[],\n objectSubtype?: string,\n ): Observable {\n return this.validateCrmObject$(objectType, {\n crmObjectId: crmObjectId,\n fields: fields.map((field) => field.fieldValue()),\n crmObjectSubtype: objectSubtype,\n }).pipe(\n switchMap((validationResponse) => {\n this.handleValidationErrors(objectType, validationResponse);\n\n const modifiedFieldValues = fields\n .filter((field) => field.hasModification())\n .map((field) => field.fieldValue());\n if (!modifiedFieldValues?.length) {\n return of(null);\n }\n\n return this.crmObjectService\n .updateCrmObject(objectType, {\n crmObjectId: crmObjectId,\n fields: modifiedFieldValues,\n crmObjectSubtype: objectSubtype,\n })\n .pipe(\n map(() => ({\n crmObjectId: crmObjectId,\n fields: fields.map((field) => field.fieldValue()),\n crmObjectSubtype: objectSubtype,\n })),\n );\n }),\n );\n }\n\n validateAndUpdateCrmObjectFields$(\n objectType: ObjectType,\n crmObjectId: string,\n modifiedValues: FieldValueInterface[] = [],\n objectSubtype?: string,\n ): Observable {\n const fieldSchemaMap$: Observable> = this.config.namespace$.pipe(\n take(1),\n switchMap((namespace) =>\n this.crmFieldSchemaApiService.getMultiFieldSchema({\n namespace: namespace,\n crmObjectType: objectType,\n crmObjectSubtype: objectSubtype,\n fieldId: modifiedValues.map((f) => f.fieldId),\n }),\n ),\n map((response) => !!response?.fieldSchemas && response?.fieldSchemas),\n map((schemas) => {\n const schemaMap = new Map();\n for (const s of schemas) {\n if (!s?.fieldId) {\n continue;\n }\n schemaMap.set(s.fieldId, s);\n }\n return schemaMap;\n }),\n shareReplay(1),\n );\n const currentCrmObject$ = this.crmObjectService\n .getMultiObject(objectType, [crmObjectId], [\n { filterType: 1, fromFieldType: FieldType.FIELD_TYPE_PHONE, toFieldType: FieldType.FIELD_TYPE_PHONE },\n ] as ObjectProjectionFilterInterface[])\n .pipe(\n take(1),\n map((response) => {\n const crmObjects = response.crmObjects || [];\n if (crmObjects.length === 0 || !crmObjects[0].crmObjectId) {\n return null;\n }\n return crmObjects[0];\n }),\n filter((crmObject) => !!crmObject),\n shareReplay(1),\n );\n const values$ = combineLatest([currentCrmObject$, fieldSchemaMap$]).pipe(\n map(([currentObject, fieldSchemaMap]) => {\n const currentObjectFields = currentObject?.fields || [];\n const fieldsToModify: { fieldValue: CrmFieldValueInterface; indexToModify: number }[] = [];\n for (const modifiedValue of modifiedValues) {\n if (!modifiedValue?.fieldId) {\n continue;\n }\n const currentValueIndex = currentObjectFields.findIndex(\n (fieldValue: CrmFieldValueInterface) => fieldValue?.fieldId === modifiedValue.fieldId,\n );\n const currentValue =\n currentValueIndex !== -1 ? currentObjectFields[currentValueIndex] : { fieldId: modifiedValue.fieldId };\n const fieldSchema = fieldSchemaMap.get(modifiedValue.fieldId);\n if (!fieldSchema) {\n continue;\n }\n if (this.isModifiedFieldValue(currentValue, modifiedValue, fieldSchema.fieldType)) {\n fieldsToModify.push({\n fieldValue: modifiedValue,\n indexToModify: currentValueIndex,\n });\n }\n }\n if (fieldsToModify.length === 0) {\n return {};\n }\n for (const fieldToModify of fieldsToModify) {\n if (fieldToModify.indexToModify === -1) {\n currentObjectFields.push(fieldToModify.fieldValue);\n } else {\n currentObjectFields[fieldToModify.indexToModify] = fieldToModify.fieldValue;\n }\n }\n return {\n combinedFieldForValidation: [...currentObjectFields],\n fieldsToModify: [...fieldsToModify],\n };\n }),\n shareReplay(1),\n );\n const validationResponse$ = values$.pipe(\n take(1),\n switchMap(({ combinedFieldForValidation, fieldsToModify }) => {\n if (!fieldsToModify?.length) {\n return of(null);\n }\n\n return this.validateCrmObject$(objectType, {\n crmObjectId: crmObjectId,\n fields: combinedFieldForValidation,\n crmObjectSubtype: objectSubtype,\n });\n }),\n );\n\n return combineLatest([validationResponse$, values$]).pipe(\n take(1),\n switchMap(([validationResponse, { combinedFieldForValidation, fieldsToModify }]) => {\n if (validationResponse?.errors?.length || !fieldsToModify?.length) {\n return of(null);\n }\n\n const crmObject: CrmObjectInterface = {\n crmObjectId: crmObjectId,\n fields: fieldsToModify.map((f) => f.fieldValue),\n crmObjectSubtype: objectSubtype,\n };\n return this.crmObjectService.updateCrmObject(objectType, crmObject).pipe(\n map(() => {\n crmObject.fields = combinedFieldForValidation;\n return crmObject;\n }),\n );\n }),\n );\n }\n}\n","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiX2Fic3RyYWN0LnNlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgQ3JlYXRlQ3JtT2JqZWN0UmVxdWVzdEludGVyZmFjZSxcbiAgQ3JlYXRlQ3JtT2JqZWN0UmVzcG9uc2VJbnRlcmZhY2UsXG4gIERlbGV0ZUNybU9iamVjdFJlcXVlc3RJbnRlcmZhY2UsXG4gIEdldE11bHRpQ3JtT2JqZWN0UmVxdWVzdEludGVyZmFjZSxcbiAgR2V0TXVsdGlDcm1PYmplY3RSZXNwb25zZUludGVyZmFjZSxcbiAgTGlzdENybU9iamVjdHNSZXF1ZXN0SW50ZXJmYWNlLFxuICBMaXN0Q3JtT2JqZWN0c1Jlc3BvbnNlSW50ZXJmYWNlLFxuICBMaXN0RmllbGRPcHRpb25zUmVxdWVzdEludGVyZmFjZSxcbiAgTGlzdEZpZWxkT3B0aW9uc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICBMaXN0RmlsdGVyc1JlcXVlc3RJbnRlcmZhY2UsXG4gIExpc3RGaWx0ZXJzUmVzcG9uc2VJbnRlcmZhY2UsXG4gIFVwZGF0ZUNybU9iamVjdFJlcXVlc3RJbnRlcmZhY2UsXG4gIFZhbGlkYXRlQ3JtT2JqZWN0UmVxdWVzdEludGVyZmFjZSxcbiAgVmFsaWRhdGVDcm1PYmplY3RSZXNwb25zZUludGVyZmFjZSxcbn0gZnJvbSAnQHZlbmRhc3RhL2NybSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RDcm1PYmplY3RTZXJ2aWNlIHtcbiAgY3JlYXRlQ3JtT2JqZWN0KHJlcXVlc3Q6IENyZWF0ZUNybU9iamVjdFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPENyZWF0ZUNybU9iamVjdFJlc3BvbnNlSW50ZXJmYWNlPjtcblxuICBkZWxldGVDcm1PYmplY3QocmVxdWVzdDogRGVsZXRlQ3JtT2JqZWN0UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PjtcblxuICB2YWxpZGF0ZUNybU9iamVjdChyZXF1ZXN0OiBWYWxpZGF0ZUNybU9iamVjdFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPFZhbGlkYXRlQ3JtT2JqZWN0UmVzcG9uc2VJbnRlcmZhY2U+O1xuXG4gIHVwZGF0ZUNybU9iamVjdChyZXF1ZXN0OiBVcGRhdGVDcm1PYmplY3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+O1xuXG4gIGxpc3RPYmplY3RzKHJlcXVlc3Q6IExpc3RDcm1PYmplY3RzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8TGlzdENybU9iamVjdHNSZXNwb25zZUludGVyZmFjZT47XG5cbiAgbGlzdE9iamVjdHNGaWx0ZXJzKHJlcXVlc3Q6IExpc3RGaWx0ZXJzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8TGlzdEZpbHRlcnNSZXNwb25zZUludGVyZmFjZT47XG5cbiAgZ2V0TXVsdGlPYmplY3QocmVxdWVzdDogR2V0TXVsdGlDcm1PYmplY3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRNdWx0aUNybU9iamVjdFJlc3BvbnNlSW50ZXJmYWNlPjtcblxuICBsaXN0RmllbGRPcHRpb25zKHJlcXVlc3Q6IExpc3RGaWVsZE9wdGlvbnNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxMaXN0RmllbGRPcHRpb25zUmVzcG9uc2VJbnRlcmZhY2U+O1xufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n CRMOpportunityApiService,\n CreateCrmObjectRequestInterface,\n CreateCrmObjectResponseInterface,\n DeleteCrmObjectRequestInterface,\n GetMultiCrmObjectRequestInterface,\n GetMultiCrmObjectResponseInterface,\n ListCrmObjectsRequestInterface,\n ListCrmObjectsResponseInterface,\n ListFieldOptionsRequestInterface,\n ListFieldOptionsResponseInterface,\n ListFiltersRequestInterface,\n ListFiltersResponseInterface,\n UpdateCrmObjectRequestInterface,\n ValidateCrmObjectResponseInterface,\n GetOpportunityValueSummaryRequestInterface,\n GetOpportunityValueSummaryResponseInterface,\n ValidateCrmObjectRequestInterface,\n} from '@vendasta/crm';\nimport { Observable } from 'rxjs';\nimport { AbstractCrmObjectService } from './_abstract.service';\n\n@Injectable({ providedIn: 'root' })\nexport class OpportunityService implements AbstractCrmObjectService {\n constructor(private readonly service: CRMOpportunityApiService) {}\n\n createCrmObject(request: CreateCrmObjectRequestInterface): Observable {\n return this.service.createOpportunity(request);\n }\n\n deleteCrmObject(request: DeleteCrmObjectRequestInterface): Observable> {\n return this.service.deleteOpportunity(request);\n }\n\n validateCrmObject(request: ValidateCrmObjectRequestInterface): Observable {\n return this.service.validateOpportunity(request);\n }\n updateCrmObject(request: UpdateCrmObjectRequestInterface): Observable> {\n return this.service.updateOpportunity(request);\n }\n\n listObjects(request: ListCrmObjectsRequestInterface): Observable {\n return this.service.listOpportunities(request);\n }\n\n listObjectsFilters(request: ListFiltersRequestInterface): Observable {\n return this.service.listOpportunitiesFilters(request);\n }\n\n getMultiObject(request: GetMultiCrmObjectRequestInterface): Observable {\n return this.service.getMultiOpportunity(request);\n }\n\n listFieldOptions(request: ListFieldOptionsRequestInterface): Observable {\n return this.service.listOpportunityFieldOptions(request);\n }\n\n getValueSummary(\n request: GetOpportunityValueSummaryRequestInterface,\n ): Observable {\n return this.service.getOpportunityValueSummary(request);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CompanyContactCacheService {\n // A HashMap to store the cache. The key is the page and the value is the data.\n private cache = new Map>();\n private ttlCache = new Map();\n\n // The 'set' method for storing data in the cache.\n set(key: string, data: Observable, ttl = 0): void {\n this.cache.set(key, data);\n if (ttl > 0) {\n this.ttlCache.set(key, Date.now() + ttl);\n }\n }\n\n // The 'get' method for retrieving data from the cache.\n get(key: string): Observable {\n const ttl = this.ttlCache.get(key);\n if (ttl && ttl > 0 && ttl < Date.now()) {\n this.clear(key);\n }\n\n // We retrieve the data from the cache\n return this.cache.get(key);\n }\n\n // The 'clear' method to clear data from the cache.\n clear(key: string): void {\n // We remove the data from the cache\n this.cache.delete(key);\n }\n}\n","import { ASSOCIATION_MAP, AssociationDirection, AssociationType } from '../constants';\nimport { ObjectType } from '../tokens-and-interfaces';\n\nexport function getAssociationType(fromObject: ObjectType, toObject: ObjectType): AssociationType {\n return ASSOCIATION_MAP.get(fromObject)?.get(toObject) ?? AssociationType.Invalid;\n}\n\nexport function getAssociationDirection(\n objectType: ObjectType,\n associationType: AssociationType,\n): AssociationDirection {\n const objects = associationType.split('-');\n const fromObject = objects[0];\n const toObject = objects[1];\n if (fromObject === objectType) {\n return AssociationDirection.From;\n } else if (toObject === objectType) {\n return AssociationDirection.To;\n }\n return AssociationDirection.Invalid;\n}\n","import { combineLatest, EMPTY, Observable, of, take, zip } from 'rxjs';\nimport { catchError, expand, map, reduce, shareReplay, switchMap } from 'rxjs/operators';\n\nimport { Inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport {\n AssociationInterface,\n CreateAssociationResponse,\n CRMAssociationApiService,\n DeleteAssociationRequestInterface,\n FilterGroupOperator,\n FilterOperator,\n GetMultiCrmObjectResponseInterface,\n ListAssociationsRequestInterface,\n ListAssociationsResponseInterface,\n TagInterface,\n} from '@vendasta/crm';\nimport { CrmObjectInterface } from '@vendasta/crm/lib/_internal/interfaces/crm-objects.interface';\nimport { CrmDependencies, CrmInjectionToken, ObjectType } from '../../../tokens-and-interfaces';\nimport { CompanyContactCacheService } from '../../company-contact-cache.service';\nimport { getAssociationDirection, getAssociationType } from '../../association.utils';\nimport { CrmObjectService } from './crm-object.service';\nimport { AssociationDirection, AssociationType } from '../../../constants';\n\nexport interface Association {\n associationId: string;\n associationType: string;\n tags: string[];\n associatedObject: CrmObjectInterface;\n}\n\nexport interface SelectedObjects {\n crmObjects: CrmObjectInterface[];\n objects: { id: string; name?: string }[];\n}\n\nexport interface CreateAssocResponse {\n createdCount: string;\n totalCount: string;\n error: boolean;\n}\n\ntype associationDirection = 'from' | 'to';\n\n@Injectable()\nexport class CrmAssociationService {\n crmObjectIdToAssociate = '';\n copyCrmObjects: SelectedObjects = { crmObjects: [], objects: [] };\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly objectService: CrmObjectService,\n private readonly crmAssociationApiService: CRMAssociationApiService,\n public modal: MatDialog,\n protected readonly companyContactCacheService: CompanyContactCacheService,\n ) {}\n\n setCopyCrmObjects(objects: SelectedObjects): void {\n this.copyCrmObjects = objects;\n }\n\n setCrmObjectIdToAssociate(crmObjectIdToAssociate: string): void {\n this.crmObjectIdToAssociate = crmObjectIdToAssociate;\n }\n\n getRemainingContactAssociationsForCompanies$(companyId: string): Observable {\n const namespace$ = this.config.namespace$;\n const associations$: Observable = namespace$.pipe(\n switchMap((namespace: string) => {\n return of({\n associations: [],\n pagingMetadata: {\n hasMore: true,\n nextCursor: '',\n },\n }).pipe(\n expand((resp: ListAssociationsResponseInterface) => {\n if (!resp.pagingMetadata?.hasMore) {\n return EMPTY;\n }\n return this.crmAssociationApiService.listAssociation({\n namespace: namespace,\n pagingOptions: {\n pageSize: 25,\n cursor: resp.pagingMetadata?.nextCursor,\n },\n filtersV2: {\n operator: FilterGroupOperator.FILTER_GROUP_OPERATOR_AND,\n filters: [\n {\n fieldId: 'to_id',\n operator: FilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: companyId,\n },\n ],\n },\n {\n fieldId: 'association_type',\n operator: FilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: 'Contact-Company',\n },\n ],\n },\n ],\n },\n } as ListAssociationsRequestInterface);\n }),\n take(9), // Limiting here to avoid breaking the interface (200 users)\n reduce(\n (acc: AssociationInterface[], val: ListAssociationsResponseInterface): AssociationInterface[] => [\n ...acc,\n ...(val?.associations || []),\n ],\n [] as AssociationInterface[],\n ),\n );\n }),\n );\n const contacts$: Observable = associations$.pipe(\n switchMap((response) => {\n if (!response?.length) {\n return of({\n crmObjects: [],\n });\n }\n\n const contactIds: string[] = response.map((associationResponse) => {\n return associationResponse?.fromId || '';\n });\n\n if (contactIds?.length === 0) {\n return of({\n crmObjects: [],\n });\n }\n\n return this.objectService.getMultiObject('Contact', contactIds);\n }),\n );\n\n return combineLatest([associations$, contacts$]).pipe(\n map(([associations, contacts]) => {\n if (!contacts?.crmObjects?.length) {\n return [];\n }\n\n return associations?.map((association) => {\n const contact = contacts?.crmObjects?.find((contact) => {\n return contact?.crmObjectId === association.fromId;\n });\n const tags = association.tags?.map((tag) => {\n return tag.tagValue;\n });\n return {\n associationId: association.associationId,\n associationType: association.associationType,\n tags: tags,\n associatedObject: contact,\n } as Association;\n });\n }),\n shareReplay({ bufferSize: 1, refCount: false }),\n );\n }\n\n getChildCompanyAssociationsForCompany$(companyID: string): Observable {\n const namespace$ = this.config.namespace$;\n\n const associations$ = namespace$.pipe(\n switchMap((namespace) => {\n return this.crmAssociationApiService.listAssociation({\n namespace: namespace,\n pagingOptions: {\n pageSize: 5,\n },\n filtersV2: {\n operator: FilterGroupOperator.FILTER_GROUP_OPERATOR_AND,\n filters: [\n {\n fieldId: 'to_id',\n operator: FilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: companyID,\n },\n ],\n },\n {\n fieldId: 'association_type',\n operator: FilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: 'Company-Company',\n },\n ],\n },\n {\n fieldId: 'tags',\n operator: FilterOperator.FILTER_OPERATOR_IS_ANY,\n values: [\n {\n string: 'Parent',\n },\n ],\n },\n ],\n },\n } as ListAssociationsRequestInterface);\n }),\n map((resp) => (resp?.associations ? resp.associations : [])),\n );\n\n const companies$ = this.getObjectsForAssociations$('Company', associations$, AssociationDirection.From);\n return this.joinAssociationsWithObjects$(associations$, companies$, 'from');\n }\n\n getParentCompanyAssociationsForCompany$(companyID: string): Observable {\n const namespace$ = this.config.namespace$;\n\n const associations$ = namespace$.pipe(\n switchMap((namespace) => {\n return this.crmAssociationApiService.listAssociation({\n namespace: namespace,\n pagingOptions: {\n pageSize: 1,\n },\n filtersV2: {\n operator: FilterGroupOperator.FILTER_GROUP_OPERATOR_AND,\n filters: [\n {\n fieldId: 'from_id',\n operator: FilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: companyID,\n },\n ],\n },\n {\n fieldId: 'association_type',\n operator: FilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: 'Company-Company',\n },\n ],\n },\n {\n fieldId: 'tags',\n operator: FilterOperator.FILTER_OPERATOR_IS_ANY,\n values: [\n {\n string: 'Parent',\n },\n ],\n },\n ],\n },\n } as ListAssociationsRequestInterface);\n }),\n map((resp) => (resp?.associations ? resp.associations : [])),\n );\n\n const companies$ = this.getObjectsForAssociations$('Company', associations$, AssociationDirection.To);\n return this.joinAssociationsWithObjects$(associations$, companies$, 'to');\n }\n\n private joinAssociationsWithObjects$(\n associations$: Observable,\n objects$: Observable,\n direction?: associationDirection,\n ) {\n return combineLatest([associations$, objects$]).pipe(\n map(([associations, objects]) => {\n if (!objects?.length) {\n return [];\n }\n return associations.map((association) => {\n const object = objects.find((object) => {\n if (direction === 'from') {\n return object?.crmObjectId === association.fromId;\n }\n return object?.crmObjectId === association.toId;\n });\n const tags = association.tags?.map((tag) => {\n return tag.tagValue;\n });\n return {\n associationId: association.associationId,\n associationType: association.associationType,\n tags: tags,\n associatedObject: object,\n } as Association;\n });\n }),\n );\n }\n\n getCachedContactAssociationsForCompany$(companyId: string): Observable {\n let cachedContacts = this.companyContactCacheService.get(companyId);\n if (!cachedContacts) {\n const associatedContacts = this.getRemainingContactAssociationsForCompanies$(companyId);\n this.companyContactCacheService.set(companyId, associatedContacts);\n cachedContacts = associatedContacts;\n }\n return cachedContacts;\n }\n\n removeAssociation(id: string): Observable {\n return this.config.namespace$.pipe(\n switchMap((namespace) => {\n return this.crmAssociationApiService.deleteAssociation({\n associationId: id,\n namespace: namespace,\n } as DeleteAssociationRequestInterface);\n }),\n map(() => {\n return true;\n }),\n take(1),\n );\n }\n\n createContactCompanyAssociation$(\n associationType: string,\n primarySelection?: string | null,\n tagMap?: Map | null,\n ): Observable<{ respCount: CreateAssocResponse; copyCrmObjectsUpdated: Association[] }> {\n const primaryAssociation = new Map();\n const associationTagValues = new Map();\n\n const savedData$ = this.copyCrmObjects.objects.map((row) => {\n const association = {\n associationType: associationType,\n fromId: this.crmObjectIdToAssociate,\n toId: row.id,\n tags: [] as { tagValue: string }[],\n };\n\n if (row.id === primarySelection) {\n association.tags.push({\n tagValue: 'Primary',\n });\n primaryAssociation.set(row.id, true);\n }\n\n if (tagMap) {\n const tags = tagMap?.get(row.id);\n if (tags) {\n tags.forEach((tag) => {\n association.tags.push({\n tagValue: tag,\n });\n });\n }\n }\n\n associationTagValues.set(\n row.id,\n association.tags.map((tag) => tag.tagValue),\n );\n\n return this.config.namespace$.pipe(\n take(1),\n switchMap((namespace) => {\n return this.crmAssociationApiService.createAssociation({ namespace, association });\n }),\n catchError((error) => {\n console.error(error);\n return of(null);\n }),\n );\n });\n const callEndpoint = zip(...savedData$);\n return callEndpoint.pipe(\n take(1),\n map((data) => {\n let errorOccurred = false;\n const checkError = data.map((item) => {\n if (item === null) {\n errorOccurred = true;\n return null;\n }\n return item;\n });\n const filteredData = data.filter((item) => item !== null);\n const filteredCopy = this.copyCrmObjects.crmObjects.filter((_, index) => checkError[index] !== null);\n const respCount = {\n createdCount: String(filteredData.length),\n totalCount: String(data.length),\n error: errorOccurred,\n } as CreateAssocResponse;\n const copyCrmObjectsUpdated = filteredCopy.map((obj, index) => {\n return {\n ...obj,\n associationId: filteredData[index]?.associationId ?? '',\n tags: associationTagValues.get(obj.crmObjectId ?? '') || [],\n } as Association;\n });\n\n return { respCount, copyCrmObjectsUpdated };\n }),\n );\n }\n\n createAssociation$(\n associationType: string,\n tags: string[],\n fallbackToNoTags: boolean,\n direction: associationDirection = 'from',\n ): Observable<{\n respCount: CreateAssocResponse;\n copyCrmObjectsUpdated: Association[];\n }> {\n const savedData$ = this.copyCrmObjects.objects.map((row) => {\n const associationTags: TagInterface[] = [];\n for (const tag of tags) {\n associationTags.push({ tagValue: tag } as TagInterface);\n }\n const association = {\n associationType: associationType,\n fromId: row.id,\n toId: this.crmObjectIdToAssociate,\n tags: associationTags,\n };\n if (direction === 'to') {\n association.fromId = this.crmObjectIdToAssociate;\n association.toId = row.id;\n }\n\n return this.config.namespace$.pipe(\n take(1),\n switchMap((namespace) => {\n // Try creating the association with the provided namespace and association, and retry once if there's an error\n return this.crmAssociationApiService.createAssociation({ namespace, association }).pipe(\n catchError(() => {\n if (!fallbackToNoTags) {\n // If fallbackToNoTags is false, return null as nill and handeled in the next steps\n return of(null);\n }\n association.tags = [];\n return this.crmAssociationApiService.createAssociation({ namespace, association }).pipe(\n catchError(() => {\n // If there's another error during the second attempt, return null as nill and handeled in the next steps\n return of(null);\n }),\n );\n }),\n );\n }),\n );\n });\n\n const callEndpoint = zip(...savedData$);\n return callEndpoint.pipe(\n take(1),\n map((data) => {\n let errorOccurred = false;\n const checkError = data.map((item) => {\n if (item === null) {\n errorOccurred = true;\n return null;\n }\n return item;\n });\n const filteredData = data.filter((item) => item !== null);\n const filteredCopy = this.copyCrmObjects.crmObjects.filter((_, index) => checkError[index] !== null);\n const respCount = {\n createdCount: String(filteredData.length),\n totalCount: String(data.length),\n error: errorOccurred,\n } as CreateAssocResponse;\n const copyCrmObjectsUpdated = filteredCopy.map((obj, index) => {\n return {\n ...obj,\n associationId: filteredData[index]?.associationId ?? '',\n } as Association;\n });\n\n return { respCount, copyCrmObjectsUpdated };\n }),\n map((copyCrmObjectsUpdated) => {\n return copyCrmObjectsUpdated;\n }),\n );\n }\n\n createObjectAssociation$(\n objectType: ObjectType,\n objectId: string,\n associatedId: string,\n associationType: AssociationType,\n tags?: string[],\n objectSubtype?: string,\n associationSubtype?: string,\n ): Observable {\n const namespace$ = this.config.namespace$;\n const direction = getAssociationDirection(objectType, associationType);\n return namespace$.pipe(\n switchMap((namespace) => {\n const fromId = direction === AssociationDirection.From ? objectId : associatedId;\n const fromSubtype = direction === AssociationDirection.From ? objectSubtype : associationSubtype;\n const toId = direction === AssociationDirection.From ? associatedId : objectId;\n const toSubtype = direction === AssociationDirection.From ? associationSubtype : objectSubtype;\n\n const requestTags = tags\n ? tags.map((tag) => {\n return {\n tagValue: tag,\n };\n })\n : ([] as { tagValue: string }[]);\n\n return this.crmAssociationApiService.createAssociation({\n namespace: namespace,\n association: {\n associationType: associationType,\n fromId: fromId,\n toId: toId,\n tags: requestTags,\n fromCrmObjectSubtype: fromSubtype,\n toCrmObjectSubtype: toSubtype,\n },\n });\n }),\n catchError((_) => {\n return of(null);\n }),\n );\n }\n\n listAssociationFieldOptions(\n associationType: string,\n fieldId: string,\n pageSize: number,\n searchTerm: string,\n ): Observable {\n return this.config.namespace$.pipe(\n take(1),\n switchMap((namespace) => {\n return this.crmAssociationApiService.listAssociationFieldOptions({\n namespace,\n associationType,\n fieldId,\n pageSize,\n searchTerm,\n });\n }),\n map((response) => {\n return response.options ?? [];\n }),\n );\n }\n\n updateAssociationTags(id: string, tags: string[]): Observable {\n return this.config.namespace$.pipe(\n take(1),\n switchMap((namespace) => {\n return this.crmAssociationApiService.updateAssociation({\n namespace,\n associationId: id,\n tags: tags.map((t) => ({ tagValue: t })),\n });\n }),\n map(() => true),\n );\n }\n\n getAssociation(id: string): Observable {\n return this.config.namespace$.pipe(\n take(1),\n switchMap((namespace) => {\n return this.crmAssociationApiService.getMultiAssociation({\n namespace,\n associationIds: [id],\n });\n }),\n map((response) =>\n response?.associations?.length > 0 && response?.associations[0] ? response.associations[0] : {},\n ),\n );\n }\n\n getAssociationsForObject$(\n objectId: string,\n objectType: ObjectType,\n associatedType: ObjectType,\n pageSize: number,\n withTags: string[] = [],\n ): Observable {\n const namespace$ = this.config.namespace$;\n const associationType = getAssociationType(objectType, associatedType);\n const direction = getAssociationDirection(objectType, associationType);\n const filters = [\n {\n fieldId: direction === AssociationDirection.From ? 'from_id' : 'to_id',\n operator: FilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: objectId,\n },\n ],\n },\n {\n fieldId: 'association_type',\n operator: FilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: associationType,\n },\n ],\n },\n ];\n\n if (withTags.length > 0) {\n filters.push({\n fieldId: 'tags',\n operator: FilterOperator.FILTER_OPERATOR_IS_ALL,\n values: withTags.map((t) => ({ string: t })),\n });\n }\n\n return namespace$.pipe(\n switchMap((namespace) => {\n return this.crmAssociationApiService.listAssociation({\n namespace: namespace,\n pagingOptions: {\n pageSize: pageSize,\n },\n filtersV2: {\n operator: FilterGroupOperator.FILTER_GROUP_OPERATOR_AND,\n filters: filters,\n },\n } as ListAssociationsRequestInterface);\n }),\n map((response) => (response?.associations ? response.associations : [])),\n );\n }\n\n getAssociationsWithAssociatedObjectForObject$(\n objectId: string,\n objectType: ObjectType,\n associatedType: ObjectType,\n pageSize = 5,\n withTags: string[] = [],\n ): Observable {\n if (!objectId) {\n return of([]);\n }\n const associationType = getAssociationType(objectType, associatedType);\n const direction = getAssociationDirection(objectType, associationType);\n\n const associations$ = this.getAssociationsForObject$(objectId, objectType, associatedType, pageSize, withTags);\n\n const oppDirection = direction === AssociationDirection.From ? AssociationDirection.To : AssociationDirection.From;\n const objects$ = this.getObjectsForAssociations$(associatedType, associations$, oppDirection);\n return this.joinAssociationsWithObjects$(associations$, objects$, oppDirection);\n }\n\n private getObjectsForAssociations$(\n objectType: ObjectType,\n associations$: Observable,\n direction: AssociationDirection,\n ): Observable {\n return associations$.pipe(\n switchMap((associations) => {\n if (!associations?.length) {\n return of({\n crmObjects: [],\n });\n }\n const ids = associations.map((association) => {\n if (direction === AssociationDirection.From) {\n return association.fromId || '';\n }\n return association.toId || '';\n });\n return this.objectService.getMultiObject(objectType, ids);\n }),\n map((response) => (response?.crmObjects ? response.crmObjects : [])),\n );\n }\n getAssociationsFromAssociationIds$(\n ids: string[],\n objectType: ObjectType,\n associatedType: ObjectType,\n ): Observable {\n if (ids.length === 0) {\n return of([]);\n }\n const namespace$ = this.config.namespace$;\n const associationType = getAssociationType(objectType, associatedType);\n const direction = getAssociationDirection(objectType, associationType);\n\n const associations$ = namespace$.pipe(\n switchMap((namespace) => {\n return this.crmAssociationApiService.getMultiAssociation({\n namespace,\n associationIds: ids,\n });\n }),\n map((response) => (response?.associations ? response.associations : [])),\n );\n\n const oppDirection = direction === AssociationDirection.From ? AssociationDirection.To : AssociationDirection.From;\n const objects$ = this.getObjectsForAssociations$(associatedType, associations$, oppDirection);\n return this.joinAssociationsWithObjects$(associations$, objects$, oppDirection);\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Inject, Injectable, signal, WritableSignal } from '@angular/core';\nimport { GalaxyColumnDef } from '@vendasta/galaxy/table';\nimport { Observable, of } from 'rxjs';\nimport { distinctUntilChanged, map, take } from 'rxjs/operators';\nimport { BREAKPOINT_WIDTH } from '../../../constants';\nimport { CrmDependencies, CrmInjectionToken, ObjectType } from '../../../tokens-and-interfaces';\n\ninterface TableState {\n localStorageKey: string[];\n filterBarOpenStorageKey: string;\n}\n\n@Injectable()\nexport class CrmTableStateService {\n MOBILE_BREAKPOINT = `(max-width: ${BREAKPOINT_WIDTH.MOBILE})`;\n isMobile$: Observable = this.breakpointObserver.observe([this.MOBILE_BREAKPOINT]).pipe(\n map((result) => result.matches),\n distinctUntilChanged(),\n );\n tableState: WritableSignal = signal({\n localStorageKey: [],\n filterBarOpenStorageKey: '',\n });\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly breakpointObserver: BreakpointObserver,\n ) {}\n\n initializeLocalStorageColumns(columns: GalaxyColumnDef[]): Observable {\n return of(false).pipe(\n map((isMobile) => {\n if (isMobile) {\n return columns;\n }\n let lcColumns: GalaxyColumnDef[] = [];\n for (const i in this.tableState().localStorageKey) {\n const ls = localStorage.getItem(this.tableState().localStorageKey[i]);\n if (!ls) {\n continue;\n }\n lcColumns = JSON.parse(ls);\n break;\n }\n columns.forEach((column) => {\n const localStorageColumnIndex = lcColumns?.findIndex((c) => c.id === column.id);\n if (localStorageColumnIndex < 0) {\n lcColumns.push(column);\n } else {\n const localStorageColumn = lcColumns[localStorageColumnIndex];\n lcColumns[localStorageColumnIndex] = {\n ...column,\n _position: localStorageColumn._position,\n hidden: localStorageColumn.hidden,\n };\n }\n });\n const lcColumnsCleaned = lcColumns.filter((c) => columns.find((column) => column.id === c.id));\n const sortedColumns = this.sortColumns(lcColumnsCleaned);\n\n localStorage.setItem(this.tableState().localStorageKey[0], JSON.stringify(sortedColumns));\n return sortedColumns;\n }),\n );\n }\n\n private sortColumns(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n const topColumns = this.sortColumnsByPosition(columns.filter((column) => column.pinned && !column.stickyEnd));\n const bottomColumns = this.sortColumnsByPosition(columns.filter((column) => column.pinned && column.stickyEnd));\n const nonPinnedColumns = this.sortColumnsByPosition(columns.filter((column) => !column.pinned));\n\n const sortedColumns = [...topColumns, ...nonPinnedColumns, ...bottomColumns];\n this.updateColumnsPosition(sortedColumns);\n return sortedColumns;\n }\n\n private updateColumnsPosition(columns: GalaxyColumnDef[]): void {\n columns.forEach((column, index) => (column._position = index));\n }\n\n private sortColumnsByPosition(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n return columns.sort((a, b) => (a._position ?? Number.MAX_SAFE_INTEGER) - (b._position ?? Number.MAX_SAFE_INTEGER));\n }\n\n public setLocalStorageColumns(columns: GalaxyColumnDef[]): void {\n this.isMobile$.pipe(take(1)).subscribe((isMobile) => {\n if (!columns?.length || isMobile) {\n return;\n }\n localStorage.setItem(this.tableState().localStorageKey[0], JSON.stringify(columns));\n });\n }\n\n setLocalStorageKey(objectType: ObjectType): void {\n const localStorageKey: string[] = [];\n let filterBarOpenStorageKey = '';\n const appName = this.config.appID;\n if (appName) {\n localStorageKey.push(`crm-${appName}-${objectType}-table-state-v2`);\n localStorage.removeItem(`crm-${appName}-${objectType}-table-state`);\n filterBarOpenStorageKey = `crm-${appName}-${objectType}-filterbar-state`;\n } else {\n filterBarOpenStorageKey = `crm-${objectType}-filterbar-state`;\n }\n localStorageKey.push(`crm-${objectType}-table-state-v2`);\n localStorage.removeItem(`crm-${objectType}-table-state`);\n this.tableState.set({\n localStorageKey: localStorageKey,\n filterBarOpenStorageKey: filterBarOpenStorageKey,\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { CrmInjectionToken, FieldValueInterface } from '../../../tokens-and-interfaces';\nimport { FieldMask, Pipeline as ProtoPipeline, PipelinesApiService } from '@vendasta/crm';\nimport { map, shareReplay, switchMap, take } from 'rxjs/operators';\nimport { GalaxyFilterInterface } from '@vendasta/galaxy/filter/chips';\nimport { convertGalaxyFilters, convertToGalaxyFilter } from '../../../utils';\nimport { StandardIds } from '../field.service';\nimport { HttpResponse } from '@angular/common/http';\n\nexport interface Pipeline {\n id: string;\n name: string;\n stages: Stage[];\n}\n\nexport interface Stage {\n id: string;\n name: string;\n filters: GalaxyFilterInterface[];\n mutations: FieldValueInterface[];\n}\n\nfunction compareByProbability(a: Stage, b: Stage) {\n const aProb = a?.mutations?.find((mutation) => mutation?.fieldId === StandardIds.OpportunityProbability);\n const bProb = b?.mutations?.find((mutation) => mutation?.fieldId === StandardIds.OpportunityProbability);\n return aProb?.floatValue && bProb?.floatValue ? aProb.floatValue - bProb.floatValue : 0;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class CrmPipelineService {\n constructor(\n private readonly pipelineService: PipelinesApiService,\n private injector: Injector,\n ) {}\n\n private get namespace$() {\n return this.injector.get(CrmInjectionToken).namespace$;\n }\n\n listPipelines$(objectType: string): Observable {\n return this.namespace$.pipe(\n take(1),\n switchMap((namespace) =>\n this.pipelineService.listPipelines({\n listOptions: {\n namespace,\n objectType,\n },\n }),\n ),\n map((response) => (response?.pipelines ? this.convertPipelines(response.pipelines) : [])),\n );\n }\n\n getPipeline$(pipelineId: string): Observable {\n return this.getMultiPipeline$([pipelineId]).pipe(map((pipelines) => pipelines[0]));\n }\n\n getMultiPipeline$(pipelineIds: string[]): Observable {\n return this.namespace$.pipe(\n take(1),\n switchMap((namespace) =>\n this.pipelineService.getMultiPipeline({\n namespace,\n pipelineIds,\n }),\n ),\n map((response) => (response?.pipelines ? this.convertPipelines(response.pipelines) : [])),\n shareReplay(1),\n );\n }\n\n updatePipeline$(objectType: string, pipeline: Pipeline): Observable> {\n return this.namespace$.pipe(\n take(1),\n switchMap((namespace) => {\n return this.pipelineService.updatePipeline({\n pipeline: {\n namespace: namespace,\n objectType: objectType,\n pipelineId: pipeline.id,\n name: pipeline.name,\n stages: pipeline.stages.map((stage) => ({\n stageId: stage.id || '',\n name: stage.name,\n filterGroup: convertGalaxyFilters(stage.filters),\n mutations: stage.mutations,\n })),\n },\n fieldMask: this.buildFieldMask(pipeline),\n });\n }),\n );\n }\n\n deletePipeline$(pipelineId: string): Observable> {\n return this.namespace$.pipe(\n take(1),\n switchMap((namespace) => {\n return this.pipelineService.deletePipeline({\n namespace,\n pipelineId,\n });\n }),\n );\n }\n\n createPipeline$(objectType: string, pipeline: Pipeline): Observable {\n return this.namespace$.pipe(\n take(1),\n switchMap((namespace) => {\n return this.pipelineService.createPipeline({\n pipeline: {\n namespace,\n objectType,\n name: pipeline.name,\n stages: pipeline.stages.map((stage) => ({\n name: stage.name,\n filterGroup: convertGalaxyFilters(stage.filters),\n mutations: stage.mutations,\n })),\n },\n });\n }),\n map((response) => response?.pipelineId || ''),\n );\n }\n\n private convertPipelines(pipelines: ProtoPipeline[]) {\n return pipelines.map((pipeline) => ({\n id: pipeline.pipelineId,\n name: pipeline.name,\n stages: pipeline.stages\n ?.map(\n (stage) =>\n ({\n id: stage.stageId,\n name: stage.name,\n filters: stage.filterGroup.filters.map((filter) => convertToGalaxyFilter(filter)),\n mutations: stage.mutations,\n }) as Stage,\n )\n .sort((a, b) => compareByProbability(a, b)),\n }));\n }\n\n private buildFieldMask(pipeline: Pipeline) {\n const paths = [];\n if (pipeline.name) {\n paths.push('name');\n }\n if (pipeline.stages) {\n paths.push('stages');\n }\n\n return new FieldMask({ paths });\n }\n}\n","export * from './_abstract.service';\nexport * from './_activity_object.service';\nexport * from './_company.service';\nexport * from './_contact.service';\nexport * from './_opportunity.service';\nexport * from './crm-association.service';\nexport * from './crm-object.service';\nexport * from './crm-table-state.service';\nexport * from './crm-pipeline.service';\n","export { ActivityService } from './activity.service';\nexport { CrmFieldOptionsService } from './crm-field-options.service';\nexport { CrmFiltersService } from './crm-filters.service';\nexport * from './crm-form.service';\nexport * from './field.service';\nexport * from './crm-object-service';\n","import { DestroyRef, Inject, Injectable } from '@angular/core';\nimport { CrmObjectService } from '../../shared-services';\nimport { CrmObjectInterface } from '@vendasta/crm';\nimport { BehaviorSubject, debounceTime, filter, map, Observable, shareReplay, switchMap, tap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Injectable()\nexport class CompanyBatchGetterService {\n constructor(\n @Inject(DestroyRef) private destroyRef: DestroyRef,\n private readonly crmObjectService: CrmObjectService,\n ) {\n this.newCompanyId$$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((companyId) => {\n if (!companyId) {\n return;\n }\n const batchedCompanyIds = [...this.batchCompanyIds$$.value];\n if (!batchedCompanyIds.includes(companyId)) {\n batchedCompanyIds.push(companyId);\n this.batchCompanyIds$$.next(batchedCompanyIds);\n }\n });\n }\n\n private newCompanyId$$ = new BehaviorSubject('');\n private batchCompanyIds$$ = new BehaviorSubject([]);\n private lastBatch$ = this.batchCompanyIds$$.pipe(\n filter((batchCompanyIds) => batchCompanyIds.length > 0),\n debounceTime(1),\n map((batchCompanyIds) => [...new Set(batchCompanyIds)]),\n switchMap((batchCompanyIds) => this.crmObjectService.getMultiObject('Company', batchCompanyIds)),\n map((response) => response.crmObjects),\n tap(() => {\n this.batchCompanyIds$$.next([]);\n }),\n shareReplay(1),\n );\n\n getCompany(companyId: string): Observable {\n this.newCompanyId$$.next(companyId);\n return this.lastBatch$.pipe(map((companies) => companies.find((company) => company?.crmObjectId === companyId)));\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { BlankValueComponent, CustomCellComponent } from '@vendasta/galaxy/table';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { map, switchMap, take } from 'rxjs/operators';\nimport { CrmFieldService, StandardIds } from '../../shared-services';\nimport { CrmInjectionToken, CrmDependencies } from '../../tokens-and-interfaces';\nimport { PAGE_ROUTES } from '../../constants';\nimport { CompanyBatchGetterService } from './company-batch-getter.service';\n\nconst NO_VALUE_FOR_COMPANY_NAME = '';\ninterface ParentCompanyNameData {\n displayValue: string;\n link: string;\n}\n\n@Component({\n selector: 'crm-parent-company-name',\n template: `\n \n \n \n \n \n \n \n \n \n
\n
\n \n {{ displayName }}\n \n \n \n \n `,\n styleUrls: ['./shared.scss'],\n imports: [RouterLink, CommonModule, BlankValueComponent],\n})\nexport class ParentCompanyNameComponent extends CustomCellComponent {\n NO_VALUE_FOR_COMPANY_NAME = NO_VALUE_FOR_COMPANY_NAME;\n private companyId$$ = new BehaviorSubject('');\n set value(newValue: string) {\n this.companyId$$.next(newValue);\n }\n\n displayValue$ = this.companyId$$.pipe(\n switchMap((parentCompanyID) => {\n if (!parentCompanyID) {\n return of(null);\n }\n return this.companyBatchGetterService.getCompany(parentCompanyID);\n }),\n map((parentCompany) => {\n if (!parentCompany) {\n return null;\n }\n return this.crmFieldService.getFieldValueFromCrmObject(parentCompany, StandardIds.CompanyName);\n }),\n map((companyNameFieldValue) => companyNameFieldValue?.stringValue ?? this.NO_VALUE_FOR_COMPANY_NAME),\n );\n link$ = this.config.viewProfileFlag$.pipe(\n take(1),\n switchMap((featureFlag) => {\n if (featureFlag) {\n return this.config.routePrefix$;\n } else {\n return of('');\n }\n }),\n map((routePrefix) => {\n if (!routePrefix || !this.companyId$$.getValue()) {\n return '';\n }\n const parentCompanyProfileViewRoute = `${PAGE_ROUTES.COMPANY.ROOT}/${PAGE_ROUTES.COMPANY.SUBROUTES.PROFILE}`;\n return `${routePrefix}/${parentCompanyProfileViewRoute}`.replace(':crmObjectId', this.companyId$$.getValue());\n }),\n );\n componentData$: Observable = combineLatest([this.displayValue$, this.link$]).pipe(\n map(([displayValue, link]) => ({ displayValue, link })),\n );\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly crmFieldService: CrmFieldService,\n private readonly companyBatchGetterService: CompanyBatchGetterService,\n ) {\n super();\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { PermissionsApiService, GetPermissionsRequestInterface } from '@vendasta/platform-users';\nimport { CrmInjectionToken } from '../tokens-and-interfaces';\nimport { combineLatest, switchMap, of, map, shareReplay, Observable } from 'rxjs';\nimport { FeatureFlagsApiService } from '@vendasta/partner';\nimport { IAMService, UserIdentifier } from '@vendasta/iamv2';\nimport { catchError } from 'rxjs/operators';\nimport { User } from '@vendasta/iamv2/lib/user/user';\n\nconst PartnerCenterClientAppID = 'partner-center-client';\nconst ShellClientAppID = 'shell-client';\nconst AppsRestrictedByMarkets = [PartnerCenterClientAppID, ShellClientAppID];\n\n@Injectable()\nexport class RestrictedGroupService {\n private readonly config = inject(CrmInjectionToken);\n private readonly permissionsApiService = inject(PermissionsApiService);\n private readonly featureFlagService = inject(FeatureFlagsApiService);\n private readonly iamService = inject(IAMService);\n\n private featureEnabled$ = this.config.namespace$.pipe(\n switchMap((namespace: string) => {\n const isNotSupported = !AppsRestrictedByMarkets.includes(this.config.appID || '');\n if (isNotSupported) {\n return of({\n hasAccess: [true],\n });\n }\n\n return this.featureFlagService.batchGetStatus({\n featureIds: ['crm_market_restriction'],\n partnerId: namespace || '',\n });\n }),\n map((response) => {\n return response?.hasAccess.length > 0 && response?.hasAccess[0];\n }),\n );\n private currentUser$ = this.config.currentUserId$.pipe(\n switchMap((userId) => {\n const uniqueUserIdentifiers = [new UserIdentifier({ userId: userId })];\n\n return this.iamService.getMultiUsers(uniqueUserIdentifiers);\n }),\n map((response) => response && response[0]),\n catchError(() => {\n return of(null);\n }),\n );\n private currentGroupId$ = combineLatest([\n this.config.currentUserId$,\n this.currentUser$,\n this.config.namespace$,\n this.featureEnabled$,\n ]).pipe(\n switchMap(([userId, user, namespace, featureEnabled]: [string, User | null, string, boolean]) => {\n const roles = user?.roles;\n const hasDeveloperRole = 'developer' in roles;\n const isSuperAdmin = roles['partner']?.attributes?.attributes['is_super_admin']?.boolAttribute === true;\n const isNotSupported = !AppsRestrictedByMarkets.includes(this.config.appID || '');\n if (!featureEnabled || isNotSupported || hasDeveloperRole || isSuperAdmin) {\n return of('');\n }\n\n return this.permissionsApiService.getPermissions({\n partnerId: namespace,\n userId: userId,\n } as GetPermissionsRequestInterface);\n }),\n map((response) => {\n if (typeof response === 'string') {\n return '';\n }\n return response?.permissions?.restrictedToMarketId ?? '';\n }),\n shareReplay(1),\n );\n\n getCurrentGroupId(): Observable {\n return this.currentGroupId$;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CRMCustomObjectTypeApiService, CrmObjectInterface, PhoneFieldsInterface } from '@vendasta/crm';\nimport { CrmFieldService, StandardExternalIds, StandardIds } from '.';\nimport { format, ParsedNumber, parseNumber } from 'libphonenumber-js';\nimport { ObjectType } from '../tokens-and-interfaces';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n\nexport type ObjectNames = {\n singularObjectName: string;\n pluralObjectName: string;\n};\n\n@Injectable({ providedIn: 'root' })\nexport class CrmObjectDisplayService {\n constructor(\n protected readonly crmFieldService: CrmFieldService,\n private readonly customObjectTypeService: CRMCustomObjectTypeApiService,\n ) {}\n\n getObjectDisplayName(objectType: ObjectType, crmObject: CrmObjectInterface): string {\n switch (objectType) {\n case 'Contact':\n return this.contactDisplayName(crmObject);\n case 'Company':\n return this.companyDisplayName(crmObject);\n case 'Opportunity':\n return this.opportunityDisplayName(crmObject);\n case 'CustomObject':\n return this.customObjectDisplayName(crmObject);\n default:\n return crmObject.crmObjectId ?? '';\n }\n }\n\n getObjectNames(namespace$: Observable, subtype?: string): Observable {\n if (!subtype) {\n return of({ singularObjectName: '', pluralObjectName: '' });\n }\n\n return namespace$.pipe(\n switchMap((namespace) => {\n return this.customObjectTypeService.getMultiCustomObjectType({\n namespace: namespace,\n customObjectTypeIds: [subtype],\n });\n }),\n map((resp) => {\n const customObjectType = resp.customObjectTypes[0];\n if (!customObjectType) {\n console.error(`Custom object type ${subtype} not found`);\n return { singularObjectName: '', pluralObjectName: '' };\n }\n return {\n singularObjectName: customObjectType.singularObjectName,\n pluralObjectName: customObjectType.pluralObjectName,\n };\n }),\n );\n }\n\n getAssociationInfo(objectType: ObjectType, crmObject: CrmObjectInterface): string {\n switch (objectType) {\n case 'Contact':\n return this.contactAssociationInfo(crmObject);\n default:\n return '';\n }\n }\n\n private contactAssociationInfo(crmObject: CrmObjectInterface): string {\n const email = this.crmFieldService.getFieldId(StandardExternalIds.Email);\n const emailData = crmObject.fields?.find((f) => f.fieldId === email);\n return emailData?.stringValue || '';\n }\n\n private companyDisplayName(crmObject: CrmObjectInterface): string {\n const name = this.crmFieldService.getFieldId(StandardIds.CompanyName);\n const nameData = crmObject.fields?.find((f) => f.fieldId === name);\n return nameData?.stringValue || '';\n }\n\n private opportunityDisplayName(crmObject: CrmObjectInterface): string {\n const nameField = StandardIds.OpportunityName;\n const nameData = crmObject.fields?.find((f) => f.fieldId === nameField);\n return nameData?.stringValue || '';\n }\n\n private contactDisplayName(crmObject: CrmObjectInterface): string {\n const firstName = this.crmFieldService.getFieldId(StandardExternalIds.FirstName);\n const lastName = this.crmFieldService.getFieldId(StandardExternalIds.LastName);\n const email = this.crmFieldService.getFieldId(StandardExternalIds.Email);\n const phone = this.crmFieldService.getFieldId(StandardExternalIds.PhoneNumber);\n\n const firstNameData = crmObject.fields?.find((f) => f.fieldId === firstName);\n const lastNameData = crmObject.fields?.find((f) => f.fieldId === lastName);\n const emailData = crmObject.fields?.find((f) => f.fieldId === email);\n const phoneData = crmObject.fields?.find((f) => f.fieldId === phone);\n\n if (firstNameData?.stringValue || lastNameData?.stringValue) {\n return `${firstNameData?.stringValue ?? ''} ${lastNameData?.stringValue ?? ''}`.trim();\n } else {\n if (emailData?.stringValue) {\n return emailData.stringValue || '';\n } else {\n if (phoneData?.phoneFieldValues) {\n return this.formatPhoneNumberFields(phoneData?.phoneFieldValues) || '';\n } else {\n return this.formatPhoneNumber(phoneData?.stringValue || '') || '';\n }\n }\n }\n }\n\n customObjectDisplayName(crmObject: CrmObjectInterface): string {\n const name = this.crmFieldService.getFieldId(StandardIds.CustomObjectName);\n const nameData = crmObject.fields?.find((f) => f.fieldId === name);\n return nameData?.stringValue || '';\n }\n\n private formatPhoneNumber(phoneNumber: string): string {\n const parsedNumber = parseNumber(phoneNumber, {\n defaultCountry: 'US',\n });\n if (Object.keys(parsedNumber).length === 0) {\n return '';\n }\n\n return format(parsedNumber as ParsedNumber, 'INTERNATIONAL');\n }\n\n private formatPhoneNumberFields(phoneNumber: PhoneFieldsInterface): string {\n if (phoneNumber.nationalNumber === '') {\n return '';\n }\n const parsed = {\n country: phoneNumber.isoCountryCode,\n phone: phoneNumber.nationalNumber,\n ext: phoneNumber.extension,\n } as ParsedNumber;\n return format(parsed, 'INTERNATIONAL');\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ColumnDataInterface, TableCustomizationService } from './_abstract-table-customization.service';\nimport { firstValueFrom, Observable, of, combineLatest } from 'rxjs';\nimport { CrmObjectInterface, FieldSchemaInterface } from '@vendasta/crm';\nimport { CompanyCustomColumns, CrmFieldService, StandardIds, SystemFieldIds } from '../crm-services/field.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CrmDependencies, CrmInjectionToken } from '../../tokens-and-interfaces';\nimport { map, take } from 'rxjs/operators';\nimport { PAGE_ROUTES } from '../../constants';\nimport { CustomCell, GalaxyColumnDef } from '@vendasta/galaxy/table';\nimport {\n GalaxyFilterDefinitionInterface,\n GalaxyFilterInterface,\n GalaxyFilterOperator,\n} from '@vendasta/galaxy/filter/chips';\nimport { ParentCompanyNameComponent } from '../../shared-components/custom-table-cells/parent-company-name.component';\nimport { RestrictedGroupService } from '../restricted-group.service';\nimport { CrmObjectDisplayService } from '../crm-object-display.service';\n\n@Injectable()\nexport class CompanyTableCustomizationService extends TableCustomizationService {\n private profileLink$: Observable;\n\n public static getRowFullAddress(crmObject: CrmObjectInterface, crmFieldService: CrmFieldService): string {\n const addressLineOne = crmFieldService.getFieldId(StandardIds.CompanyPrimaryAddressLine1);\n const addressLineTwo = crmFieldService.getFieldId(StandardIds.CompanyPrimaryAddressLine2);\n const city = crmFieldService.getFieldId(StandardIds.CompanyPrimaryAddressCity);\n const state = crmFieldService.getFieldId(StandardIds.CompanyPrimaryAddressState);\n const postalCode = crmFieldService.getFieldId(StandardIds.CompanyPrimaryAddressPostalCode);\n const country = crmFieldService.getFieldId(StandardIds.CompanyPrimaryAddressCountry);\n\n const addressLineOneData = crmObject.fields?.find((f) => f.fieldId === addressLineOne);\n const addressLineTwoData = crmObject.fields?.find((f) => f.fieldId === addressLineTwo);\n const cityData = crmObject.fields?.find((f) => f.fieldId === city);\n const stateData = crmObject.fields?.find((f) => f.fieldId === state);\n const postalCodeData = crmObject.fields?.find((f) => f.fieldId === postalCode);\n const countryData = crmObject.fields?.find((f) => f.fieldId === country);\n\n const fullAddress = [\n addressLineOneData?.stringValue,\n addressLineTwoData?.stringValue,\n cityData?.stringValue,\n stateData?.stringValue,\n countryData?.stringValue,\n postalCodeData?.stringValue,\n ];\n\n return fullAddress.filter((value) => value !== undefined).join(', ');\n }\n\n constructor(\n protected override readonly crmFieldService: CrmFieldService,\n private readonly translate: TranslateService,\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly restrictedGroupService: RestrictedGroupService,\n private readonly objectDisplayService: CrmObjectDisplayService,\n ) {\n super(crmFieldService);\n this.profileLink$ = this.config.routePrefix$.pipe(\n map((prefix) => {\n const viewRoute = `${PAGE_ROUTES.COMPANY.ROOT}/${PAGE_ROUTES.COMPANY.SUBROUTES.PROFILE}`;\n return prefix ? `${prefix}/${viewRoute}` : '';\n }),\n );\n }\n\n private hideIDColumns(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n const columnIdentifiersToHide = [\n SystemFieldIds.CompanyExternalID,\n SystemFieldIds.CompanyID,\n StandardIds.CompanyParentCompanyID,\n this.crmFieldService.getFieldId(StandardIds.CompanyPrimaryAddressLine1),\n this.crmFieldService.getFieldId(StandardIds.CompanyPrimaryAddressLine2),\n this.crmFieldService.getFieldId(StandardIds.CompanyPrimaryAddressCity),\n this.crmFieldService.getFieldId(StandardIds.CompanyPrimaryAddressState),\n this.crmFieldService.getFieldId(StandardIds.CompanyPrimaryAddressPostalCode),\n this.crmFieldService.getFieldId(StandardIds.CompanyPrimaryAddressCountry),\n this.crmFieldService.getFieldId(StandardIds.CompanyWebsite),\n ];\n\n for (const identifier of columnIdentifiersToHide) {\n const index = columns.findIndex((c) => c.id === identifier);\n if (index >= 0) {\n columns[index].hidden = true;\n }\n }\n\n for (const nameCol of columns.filter((c) => c.id === StandardIds.CompanyName)) {\n nameCol.sticky = true;\n }\n\n return columns;\n }\n\n customizeColumnsMobile(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n const columnIdentifiersToShow = new Map([\n [this.crmFieldService.getFieldId(StandardIds.CompanyName), true],\n [this.crmFieldService.getFieldId(StandardIds.CompanyWebsite), true],\n ]);\n\n columns.forEach((column) => {\n column.hidden = !columnIdentifiersToShow.get(column.id);\n });\n return [...columns];\n }\n\n private addCompanyProfileLink(crmObject: CrmObjectInterface, columnData: ColumnDataInterface): void {\n const companyNameField = this.crmFieldService.getFieldId(StandardIds.CompanyName);\n this.profileLink$.pipe(take(1)).subscribe((profileLink) => {\n profileLink = profileLink.replace(':crmObjectId', crmObject.crmObjectId || '');\n columnData[companyNameField] = {\n cellType: 'text',\n value: this.getRowFullName(crmObject),\n link: profileLink,\n };\n });\n }\n\n customizeRowData(\n crmObject: CrmObjectInterface,\n schemaMap: { [schemaId: string]: FieldSchemaInterface },\n columnData: ColumnDataInterface,\n ): void {\n this.customizeNextTaskDueDateCellData(columnData);\n this.addCompanyProfileLink(crmObject, columnData);\n this.addPrimaryCompanyNameRowData(crmObject, schemaMap, columnData);\n this.addFullAddressColumnData(crmObject, schemaMap, columnData);\n this.addCustomCells(this.config.company?.tableCustomCells || [], crmObject, columnData);\n }\n\n private customizeNextTaskDueDateCellData(columnData: ColumnDataInterface): void {\n const cell = columnData[this.crmFieldService.getFieldId(StandardIds.CompanyNextTaskDueDate)];\n if (cell) {\n cell.cellType = 'timestamp';\n }\n }\n\n private addFullAddressColumnData(\n crmObject: CrmObjectInterface,\n schemaMap: { [schemaId: string]: FieldSchemaInterface },\n columnData: ColumnDataInterface,\n ): void {\n columnData[CompanyCustomColumns.FullAddress] = {\n cellType: 'text',\n value: this.getRowFullAddress(crmObject),\n };\n }\n\n customizeColumns(columns: GalaxyColumnDef[], isMobile: boolean): GalaxyColumnDef[] {\n let customizedColumns = this.hideIDColumns(columns);\n customizedColumns = this.addFullAddressColumn(customizedColumns);\n customizedColumns = this.addParentCompanyNameColumn(customizedColumns);\n const customCells = this.config.company?.tableCustomCells || [];\n customizedColumns = this.addCustomColumns(\n customCells.map((c) => c.columnDefinition),\n customizedColumns,\n );\n if (isMobile) {\n customizedColumns = this.customizeColumnsMobile(customizedColumns);\n }\n return [...customizedColumns];\n }\n\n getRowFullName(crmObject: CrmObjectInterface): string {\n return this.objectDisplayService.getObjectDisplayName('Company', crmObject);\n }\n\n getAssociationInfo(crmObject: CrmObjectInterface): string {\n return this.objectDisplayService.getAssociationInfo('Company', crmObject);\n }\n\n getRowFullAddress(crmObject: CrmObjectInterface): string {\n return CompanyTableCustomizationService.getRowFullAddress(crmObject, this.crmFieldService);\n }\n\n private addFullAddressColumn(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n return [\n ...columns,\n {\n id: CompanyCustomColumns.FullAddress,\n title: this.translate.instant('LIST_OBJECTS_TABLE.CUSTOM_COLUMNS.FULL_ADDRESS'),\n sortable: false,\n },\n ];\n }\n\n private addParentCompanyNameColumn(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n return [\n {\n id: CompanyCustomColumns.ParentCompanyName,\n title: 'Parent company name',\n hidden: true,\n },\n ...columns,\n ];\n }\n\n private async addPrimaryCompanyNameRowData(\n crmObject: CrmObjectInterface,\n schemaMap: { [schemaId: string]: FieldSchemaInterface },\n columnData: ColumnDataInterface,\n ): Promise {\n let parentCompanyID = '';\n const parentCompanyIDFieldValue = this.crmFieldService.getFieldValueFromCrmObject(\n crmObject,\n StandardIds.CompanyParentCompanyID,\n );\n if (parentCompanyIDFieldValue?.stringValue) {\n parentCompanyID = parentCompanyIDFieldValue.stringValue;\n }\n columnData[CompanyCustomColumns.ParentCompanyName] = {\n cellType: 'custom',\n value: parentCompanyID,\n component: ParentCompanyNameComponent,\n } as CustomCell;\n }\n\n private makeGroupFilterRestricted(\n restrictedToGroupId: string,\n filters: GalaxyFilterDefinitionInterface[],\n ): GalaxyFilterDefinitionInterface[] {\n if (restrictedToGroupId) {\n const groupIDIndex = filters.findIndex((f) => f.fieldId === SystemFieldIds.CompanyGroupID);\n if (groupIDIndex > -1) {\n filters[groupIDIndex].preset = true;\n filters[groupIDIndex].lockedValue = true;\n }\n }\n return filters;\n }\n\n customizeFilters(filters: GalaxyFilterDefinitionInterface[]): Observable {\n const overrides$ = this.config.company?.filterInputOverrides$ ?? of([]);\n const appliedOverrides$ = overrides$.pipe(map((overrides) => this.overrideCustomFilters(filters, overrides)));\n return combineLatest([this.restrictedGroupService.getCurrentGroupId(), appliedOverrides$]).pipe(\n map(([restrictedMarketId, filters]: [string, GalaxyFilterDefinitionInterface[]]) =>\n this.makeGroupFilterRestricted(restrictedMarketId, filters),\n ),\n );\n }\n\n buildInitialFilter(\n filterDefinitions: GalaxyFilterDefinitionInterface[],\n identifier: string,\n filterId: string,\n ): GalaxyFilterInterface {\n const fieldId = this.crmFieldService.getFieldId(identifier);\n const defn = filterDefinitions.find((f) => f.fieldId === fieldId);\n if (defn) {\n defn.preset = true;\n }\n const filter = {\n fieldId: fieldId,\n filterId: filterId,\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [],\n definition: defn,\n };\n return filter;\n }\n\n async getInitialFilters(\n filterDefinitions$: Observable,\n ): Promise {\n return firstValueFrom(\n combineLatest([\n this.restrictedGroupService.getCurrentGroupId(),\n filterDefinitions$,\n this.config.company?.initialFilters$ || of([]),\n ]),\n ).then(([selectedGroupId, filterDefinitions, initialFilters]) => {\n const filters = initialFilters.map((filter) => {\n return this.buildInitialFilter(filterDefinitions, filter.fieldId, filter.filterId);\n });\n if (selectedGroupId) {\n const groupIdDefn = filterDefinitions.find(\n (f) => f.fieldId === this.crmFieldService.getFieldId(SystemFieldIds.CompanyGroupID),\n );\n if (groupIdDefn) {\n groupIdDefn.preset = true;\n }\n filters.push({\n fieldId: SystemFieldIds.CompanyGroupID,\n filterId: 'filterCompanyByRestrictedGroupID',\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: selectedGroupId,\n },\n ],\n definition: groupIdDefn,\n });\n }\n return filters;\n });\n }\n}\n","import {\n GalaxyFilterDefinitionInterface,\n GalaxyFilterInterface,\n GalaxyFilterOperator,\n} from '@vendasta/galaxy/filter/chips';\nimport { inject, Injectable } from '@angular/core';\nimport { combineLatest, firstValueFrom, Observable, of } from 'rxjs';\nimport { CrmFieldService } from '../crm-services';\nimport { CrmInjectionToken } from '../../tokens-and-interfaces';\n\n@Injectable()\nexport class ActivityCustomizationService {\n private readonly config = inject(CrmInjectionToken);\n private readonly crmFieldService = inject(CrmFieldService);\n\n buildInitialFilter(filterDefinitions: GalaxyFilterDefinitionInterface[], identifier: string, filterId: string) {\n const fieldId = this.crmFieldService.getFieldId(identifier);\n const defn = filterDefinitions.find((f) => f.fieldId === fieldId);\n if (defn) {\n defn.preset = true;\n }\n const filter = {\n fieldId: fieldId,\n filterId: filterId,\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [],\n definition: defn,\n };\n return filter;\n }\n\n getInitialFilters(\n filterDefinitions$: Observable,\n ): Promise {\n return firstValueFrom(combineLatest([filterDefinitions$, this.config.activity?.initialFilters$ || of([])])).then(\n ([filterDefinitions, initialFilters]) => {\n return initialFilters.map((filter) => {\n return this.buildInitialFilter(filterDefinitions, filter.fieldId, filter.filterId);\n });\n },\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, Input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { CustomCellComponent } from '@vendasta/galaxy/table';\nimport { CrmDependencies, CrmInjectionToken, ObjectType } from '../../../tokens-and-interfaces';\nimport { CrmObjectInterface } from '@vendasta/crm';\nimport { BehaviorSubject, combineLatest, Observable, of, ReplaySubject } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { switchWhen } from '@vendasta/rx-utils';\nimport { CrmAssociationService, CrmObjectDisplayService } from '../../../shared-services';\nimport { PAGE_ROUTES } from '../../../constants';\n\ninterface cellData {\n objectType: ObjectType;\n objectId: string;\n showUrl: boolean;\n}\n\ninterface primaryAssociation {\n crmObject: CrmObjectInterface;\n objectType: ObjectType;\n}\n\n@Component({\n styleUrls: ['../shared.scss'],\n templateUrl: './primary-association-cell.component.html',\n imports: [RouterLink, CommonModule],\n})\nexport class PrimaryAssociationCellComponent extends CustomCellComponent {\n private readonly objectId$$ = new ReplaySubject(1);\n private readonly objectType$$ = new ReplaySubject(1);\n private readonly showUrl$$ = new BehaviorSubject(false);\n\n @Input()\n set value(cellData: cellData) {\n this.objectType$$.next(cellData.objectType);\n this.objectId$$.next(cellData.objectId);\n this.showUrl$$.next(cellData.showUrl);\n }\n\n private readonly primaryAssociation$ = combineLatest([this.objectType$$, this.objectId$$]).pipe(\n switchMap(([objectType, objectId]) => this.getPrimaryAssociation(objectType, objectId)),\n );\n\n protected readonly displayName$ = this.primaryAssociation$.pipe(\n map((primaryAssociation) => {\n if (primaryAssociation?.crmObject) {\n return this.objectDisplayService.getObjectDisplayName(\n primaryAssociation.objectType,\n primaryAssociation.crmObject,\n );\n }\n return '';\n }),\n );\n protected readonly redirectUrl$ = combineLatest([\n this.primaryAssociation$,\n this.config.routePrefix$,\n this.showUrl$$,\n ]).pipe(\n map(([primaryAssociation, pathRoot, showUrl]) => {\n if (!primaryAssociation?.crmObject || !pathRoot || !showUrl) {\n return '';\n }\n let pathTemplate = '';\n switch (primaryAssociation?.objectType) {\n case 'Company':\n pathTemplate = `${PAGE_ROUTES.COMPANY.ROOT}/${PAGE_ROUTES.COMPANY.SUBROUTES.PROFILE}`;\n break;\n case 'Contact':\n pathTemplate = `${PAGE_ROUTES.CONTACT.ROOT}/${PAGE_ROUTES.CONTACT.SUBROUTES.PROFILE}`;\n break;\n default:\n return '';\n }\n const objectId = primaryAssociation?.crmObject?.crmObjectId ?? '';\n return `${pathRoot}/${pathTemplate}`.replace(':crmObjectId', objectId);\n }),\n );\n\n constructor(\n private readonly crmAssociationService: CrmAssociationService,\n private readonly objectDisplayService: CrmObjectDisplayService,\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n ) {\n super();\n }\n\n private getPrimaryAssociation(objectType: ObjectType, objectId: string): Observable {\n if (!objectId || !objectType) {\n return of(undefined);\n }\n const contact$ = this.crmAssociationService\n .getAssociationsWithAssociatedObjectForObject$(objectId, objectType, 'Contact', 1)\n .pipe(\n map((result) => {\n const association = result?.find((r) => Boolean(r.associatedObject));\n return {\n crmObject: association?.associatedObject,\n objectType: 'Contact',\n } as primaryAssociation;\n }),\n );\n const company$ = this.crmAssociationService\n .getAssociationsWithAssociatedObjectForObject$(objectId, objectType, 'Company', 1)\n .pipe(\n map((result) => {\n const association = result?.find((r) => Boolean(r.associatedObject));\n return {\n crmObject: association?.associatedObject,\n objectType: 'Company',\n } as primaryAssociation;\n }),\n );\n return contact$.pipe(switchWhen(company$, (value) => value.crmObject === undefined));\n }\n}\n","@if (displayName$ | async; as displayName) {\n @if (redirectUrl$ | async; as redirectUrl) {\n \n {{ displayName }}\n \n } @else {\n
{{ displayName }}
\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ColumnDataInterface, TableCustomizationService } from './_abstract-table-customization.service';\nimport { firstValueFrom, Observable, of, combineLatest } from 'rxjs';\nimport { CrmObjectInterface, FieldSchemaInterface } from '@vendasta/crm';\nimport { CrmFieldService, OpportunityCustomColumns, StandardIds, SystemFieldIds } from '../crm-services';\nimport { CrmDependencies, CrmInjectionToken } from '../../tokens-and-interfaces';\nimport { map, take } from 'rxjs/operators';\nimport { PAGE_ROUTES } from '../../constants';\nimport { CustomCell, GalaxyColumnDef } from '@vendasta/galaxy/table';\nimport {\n GalaxyFilterDefinitionInterface,\n GalaxyFilterInterface,\n GalaxyFilterOperator,\n} from '@vendasta/galaxy/filter/chips';\nimport { CrmObjectDisplayService } from '../crm-object-display.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PrimaryAssociationCellComponent } from '../../shared-components/custom-table-cells/primary-association-cell/primary-association-cell.component';\n\n@Injectable()\nexport class OpportunityTableCustomizationService extends TableCustomizationService {\n private profileLink$: Observable;\n\n constructor(\n protected override readonly crmFieldService: CrmFieldService,\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly objectDisplayService: CrmObjectDisplayService,\n private readonly translate: TranslateService,\n ) {\n super(crmFieldService);\n this.profileLink$ = this.config.routePrefix$.pipe(\n map((prefix) => {\n const viewRoute = `${PAGE_ROUTES.OPPORTUNITY.ROOT}/${PAGE_ROUTES.OPPORTUNITY.SUBROUTES.PROFILE}`;\n return prefix ? `${prefix}/${viewRoute}` : '';\n }),\n );\n }\n\n private hideIDColumns(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n const columnIdentifiersToHide: string[] = [SystemFieldIds.OpportunityID, SystemFieldIds.OpportunityExternalID];\n\n for (const identifier of columnIdentifiersToHide) {\n const index = columns.findIndex((c) => c.id === identifier);\n if (index >= 0) {\n columns[index].hidden = true;\n }\n }\n\n for (const nameCol of columns.filter((c) => c.id === StandardIds.OpportunityName)) {\n nameCol.sticky = true;\n }\n\n return columns;\n }\n\n customizeColumnsMobile(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n const columnIdentifiersToShow = new Map([[StandardIds.OpportunityName, true]]);\n\n columns.forEach((column) => {\n column.hidden = !columnIdentifiersToShow.get(column.id);\n });\n return [...columns];\n }\n\n private addProfileLink(crmObject: CrmObjectInterface, columnData: ColumnDataInterface): void {\n const nameField = StandardIds.OpportunityName;\n this.profileLink$.pipe(take(1)).subscribe((profileLink) => {\n profileLink = profileLink.replace(':crmObjectId', crmObject.crmObjectId || '');\n columnData[nameField] = {\n cellType: 'text',\n value: this.getRowFullName(crmObject),\n link: profileLink,\n };\n });\n }\n\n customizeRowData(\n crmObject: CrmObjectInterface,\n schemaMap: { [schemaId: string]: FieldSchemaInterface },\n columnData: ColumnDataInterface,\n ): void {\n this.addProfileLink(crmObject, columnData);\n this.addPrimaryAssociationCustomCell(crmObject, columnData);\n this.addCustomCells(this.config.opportunity?.tableCustomCells || [], crmObject, columnData);\n }\n\n customizeColumns(columns: GalaxyColumnDef[], isMobile: boolean): GalaxyColumnDef[] {\n let customizedColumns = this.hideIDColumns(columns);\n customizedColumns = this.addPrimaryAssociationColumn(customizedColumns);\n const customCells = this.config.opportunity?.tableCustomCells || [];\n customizedColumns = this.addCustomColumns(\n customCells.map((c) => c.columnDefinition),\n customizedColumns,\n );\n if (isMobile) {\n customizedColumns = this.customizeColumnsMobile(customizedColumns);\n }\n return [...customizedColumns];\n }\n\n private addPrimaryAssociationColumn(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n return [\n {\n id: OpportunityCustomColumns.PrimaryAssociation,\n title: this.translate.instant('OPPORTUNITY.LIST_OBJECTS_TABLE.CUSTOM_COLUMNS.PRIMARY_ASSOCIATIONS'),\n },\n ...columns,\n ];\n }\n\n private addPrimaryAssociationCustomCell(crmObject: CrmObjectInterface, columnData: ColumnDataInterface): void {\n columnData[OpportunityCustomColumns.PrimaryAssociation] = {\n cellType: 'custom',\n value: {\n objectId: crmObject.crmObjectId,\n objectType: 'Opportunity',\n showUrl: true,\n },\n component: PrimaryAssociationCellComponent,\n } as CustomCell;\n }\n\n getRowFullName(crmObject: CrmObjectInterface): string {\n return this.objectDisplayService.getObjectDisplayName('Opportunity', crmObject);\n }\n\n getAssociationInfo(crmObject: CrmObjectInterface): string {\n return this.objectDisplayService.getAssociationInfo('Opportunity', crmObject);\n }\n\n customizeFilters(filters: GalaxyFilterDefinitionInterface[]): Observable {\n const overrides$ = this.config.opportunity?.filterInputOverrides$ ?? of([]);\n const appliedOverrides$ = overrides$.pipe(map((overrides) => this.overrideCustomFilters(filters, overrides)));\n return appliedOverrides$;\n }\n\n buildInitialFilter(filterDefinitions: GalaxyFilterDefinitionInterface[], identifier: string, filterId: string) {\n const fieldId = this.crmFieldService.getFieldId(identifier);\n const defn = filterDefinitions.find((f) => f.fieldId === fieldId);\n if (defn) {\n defn.preset = true;\n }\n const filter = {\n fieldId: fieldId,\n filterId: filterId,\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [],\n definition: defn,\n };\n return filter;\n }\n\n async getInitialFilters(\n filterDefinitions$: Observable,\n ): Promise {\n return firstValueFrom(combineLatest([filterDefinitions$, this.config.opportunity?.initialFilters$ || of([])])).then(\n ([filterDefinitions, initialFilters]) => {\n const filters = initialFilters.map((filter) => {\n return this.buildInitialFilter(filterDefinitions, filter.fieldId, filter.filterId);\n });\n return filters;\n },\n );\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { CrmObjectInterface, FieldSchemaInterface } from '@vendasta/crm';\nimport { CrmFieldService, StandardIds, SystemFieldIds } from '../crm-services/field.service';\nimport { ColumnDataInterface, TableCustomizationService } from './_abstract-table-customization.service';\nimport { GalaxyFilterDefinitionInterface, GalaxyFilterInterface } from '@vendasta/galaxy/filter/chips';\nimport { Observable, of } from 'rxjs';\nimport { GalaxyColumnDef } from '@vendasta/galaxy/table';\nimport { map, take } from 'rxjs/operators';\nimport { PAGE_ROUTES } from '../../constants';\nimport { CrmDependencies, CrmInjectionToken } from '../../tokens-and-interfaces';\nimport { CrmObjectDisplayService } from '../crm-object-display.service';\n\n@Injectable({ providedIn: 'root' })\nexport class CustomObjectTableCustomizationService extends TableCustomizationService {\n private profileLink$: Observable;\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n protected override readonly crmFieldService: CrmFieldService,\n private readonly objectDisplayService: CrmObjectDisplayService,\n ) {\n super(crmFieldService);\n this.profileLink$ = this.config.routePrefix$.pipe(\n map((prefix) => {\n const viewRoute = `${PAGE_ROUTES.CUSTOM_OBJECT.ROOT}/${PAGE_ROUTES.CUSTOM_OBJECT.SUBROUTES.PROFILE}`;\n return prefix ? `${prefix}/${viewRoute}` : '';\n }),\n );\n }\n\n getRowFullName(crmObject: CrmObjectInterface): string {\n return this.objectDisplayService.customObjectDisplayName(crmObject);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getAssociationInfo(crmObject: CrmObjectInterface): string {\n return '';\n }\n\n customizeRowData(\n crmObject: CrmObjectInterface,\n schemaMap: { [schemaId: string]: FieldSchemaInterface },\n columnData: ColumnDataInterface,\n ): void {\n this.addCustomObjectProfileLink(crmObject, columnData);\n }\n\n private addCustomObjectProfileLink(crmObject: CrmObjectInterface, columnData: ColumnDataInterface): void {\n const customObjectNameField = this.crmFieldService.getFieldId(StandardIds.CustomObjectName);\n this.profileLink$.pipe(take(1)).subscribe((profileLink) => {\n profileLink = profileLink.replace(':customObjectTypeID', crmObject.crmObjectSubtype || '');\n profileLink = profileLink.replace(':crmObjectId', crmObject.crmObjectId || '');\n columnData[customObjectNameField] = {\n cellType: 'text',\n value: this.getRowFullName(crmObject),\n link: profileLink,\n };\n });\n }\n\n customizeColumns(columns: GalaxyColumnDef[], _isMobile: boolean): GalaxyColumnDef[] {\n const customizedColumns = this.hideIDColumns(columns);\n return [...customizedColumns];\n }\n\n private hideIDColumns(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n const columnIdentifiersToHide = [\n SystemFieldIds.CustomObjectID,\n SystemFieldIds.CustomObjectExternalID,\n SystemFieldIds.CustomObjectTypeID,\n SystemFieldIds.CustomObjectOwnerID,\n ];\n\n for (const identifier of columnIdentifiersToHide) {\n const index = columns.findIndex((c) => c.id === identifier);\n if (index >= 0) {\n columns[index].hidden = true;\n }\n }\n\n for (const nameCol of columns.filter((c) => c.id === StandardIds.CustomObjectName)) {\n nameCol.sticky = true;\n }\n\n return columns;\n }\n\n customizeFilters(filters: GalaxyFilterDefinitionInterface[]): Observable {\n return of(filters);\n }\n\n getInitialFilters(\n _filterDefinitions$: Observable,\n ): Promise {\n return Promise.resolve([]);\n }\n}\n","export * from './_abstract-table-customization.service';\nexport * from './company-table-customization.service';\nexport * from './contact-table-customization.service';\nexport * from './activity-customization.service';\nexport * from './opportunity-table-customization.service';\nexport * from './custom-object-table-customization.service';\n","import * as i0 from '@angular/core';\nimport { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar MappingType = /*#__PURE__*/function (MappingType) {\n MappingType[MappingType[\"MAPPING_TYPE_UNSPECIFIED\"] = 0] = \"MAPPING_TYPE_UNSPECIFIED\";\n MappingType[MappingType[\"MAPPING_TYPE_LOOKUP_CUSTOM_FIELD\"] = 1] = \"MAPPING_TYPE_LOOKUP_CUSTOM_FIELD\";\n MappingType[MappingType[\"MAPPING_TYPE_CUSTOM_FIELD\"] = 2] = \"MAPPING_TYPE_CUSTOM_FIELD\";\n MappingType[MappingType[\"MAPPING_TYPE_SYSTEM_FIELD\"] = 3] = \"MAPPING_TYPE_SYSTEM_FIELD\";\n return MappingType;\n}(MappingType || {});\nvar MergeStrategyType = /*#__PURE__*/function (MergeStrategyType) {\n MergeStrategyType[MergeStrategyType[\"MERGE_STRATEGY_UNSPECIFIED\"] = 0] = \"MERGE_STRATEGY_UNSPECIFIED\";\n MergeStrategyType[MergeStrategyType[\"MERGE_STRATEGY_ALWAYS_OVERWRITE\"] = 1] = \"MERGE_STRATEGY_ALWAYS_OVERWRITE\";\n MergeStrategyType[MergeStrategyType[\"MERGE_STRATEGY_OVERWRITE_IF_EMPTY\"] = 2] = \"MERGE_STRATEGY_OVERWRITE_IF_EMPTY\";\n MergeStrategyType[MergeStrategyType[\"MERGE_STRATEGY_OVERWRITE_IF_NEWER\"] = 3] = \"MERGE_STRATEGY_OVERWRITE_IF_NEWER\";\n MergeStrategyType[MergeStrategyType[\"MERGE_STRATEGY_COMBINE\"] = 4] = \"MERGE_STRATEGY_COMBINE\";\n return MergeStrategyType;\n}(MergeStrategyType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar WorkflowStatus = /*#__PURE__*/function (WorkflowStatus) {\n WorkflowStatus[WorkflowStatus[\"WORKFLOW_STATUS_INVALID\"] = 0] = \"WORKFLOW_STATUS_INVALID\";\n WorkflowStatus[WorkflowStatus[\"WORKFLOW_STATUS_IN_PROGRESS\"] = 1] = \"WORKFLOW_STATUS_IN_PROGRESS\";\n WorkflowStatus[WorkflowStatus[\"WORKFLOW_STATUS_SUCCEEDED\"] = 2] = \"WORKFLOW_STATUS_SUCCEEDED\";\n WorkflowStatus[WorkflowStatus[\"WORKFLOW_STATUS_FAILED\"] = 3] = \"WORKFLOW_STATUS_FAILED\";\n return WorkflowStatus;\n}(WorkflowStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar DateDefault = /*#__PURE__*/function (DateDefault) {\n DateDefault[DateDefault[\"DATE_DEFAULT_INVALID\"] = 0] = \"DATE_DEFAULT_INVALID\";\n DateDefault[DateDefault[\"DATE_DEFAULT_TODAY\"] = 1] = \"DATE_DEFAULT_TODAY\";\n DateDefault[DateDefault[\"DATE_DEFAULT_YESTERDAY\"] = 2] = \"DATE_DEFAULT_YESTERDAY\";\n DateDefault[DateDefault[\"DATE_DEFAULT_TOMORROW\"] = 3] = \"DATE_DEFAULT_TOMORROW\";\n DateDefault[DateDefault[\"DATE_DEFAULT_THIS_WEEK\"] = 4] = \"DATE_DEFAULT_THIS_WEEK\";\n DateDefault[DateDefault[\"DATE_DEFAULT_LAST_WEEK\"] = 5] = \"DATE_DEFAULT_LAST_WEEK\";\n DateDefault[DateDefault[\"DATE_DEFAULT_NEXT_WEEK\"] = 6] = \"DATE_DEFAULT_NEXT_WEEK\";\n DateDefault[DateDefault[\"DATE_DEFAULT_THIS_MONTH\"] = 7] = \"DATE_DEFAULT_THIS_MONTH\";\n DateDefault[DateDefault[\"DATE_DEFAULT_LAST_MONTH\"] = 8] = \"DATE_DEFAULT_LAST_MONTH\";\n DateDefault[DateDefault[\"DATE_DEFAULT_NEXT_MONTH\"] = 9] = \"DATE_DEFAULT_NEXT_MONTH\";\n DateDefault[DateDefault[\"DATE_DEFAULT_THIS_QUARTER\"] = 10] = \"DATE_DEFAULT_THIS_QUARTER\";\n DateDefault[DateDefault[\"DATE_DEFAULT_LAST_QUARTER\"] = 11] = \"DATE_DEFAULT_LAST_QUARTER\";\n DateDefault[DateDefault[\"DATE_DEFAULT_NEXT_QUARTER\"] = 12] = \"DATE_DEFAULT_NEXT_QUARTER\";\n DateDefault[DateDefault[\"DATE_DEFAULT_THIS_YEAR\"] = 13] = \"DATE_DEFAULT_THIS_YEAR\";\n DateDefault[DateDefault[\"DATE_DEFAULT_LAST_YEAR\"] = 14] = \"DATE_DEFAULT_LAST_YEAR\";\n DateDefault[DateDefault[\"DATE_DEFAULT_NEXT_YEAR\"] = 15] = \"DATE_DEFAULT_NEXT_YEAR\";\n return DateDefault;\n}(DateDefault || {});\nvar FilterGroupOperator = /*#__PURE__*/function (FilterGroupOperator) {\n FilterGroupOperator[FilterGroupOperator[\"FILTER_GROUP_OPERATOR_INVALID\"] = 0] = \"FILTER_GROUP_OPERATOR_INVALID\";\n FilterGroupOperator[FilterGroupOperator[\"FILTER_GROUP_OPERATOR_AND\"] = 1] = \"FILTER_GROUP_OPERATOR_AND\";\n FilterGroupOperator[FilterGroupOperator[\"FILTER_GROUP_OPERATOR_OR\"] = 2] = \"FILTER_GROUP_OPERATOR_OR\";\n return FilterGroupOperator;\n}(FilterGroupOperator || {});\nvar FilterOperator = /*#__PURE__*/function (FilterOperator) {\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_INVALID\"] = 0] = \"FILTER_OPERATOR_INVALID\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_EMPTY\"] = 1] = \"FILTER_OPERATOR_IS_EMPTY\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_NOT_EMPTY\"] = 2] = \"FILTER_OPERATOR_IS_NOT_EMPTY\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS\"] = 3] = \"FILTER_OPERATOR_IS\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_NOT\"] = 4] = \"FILTER_OPERATOR_IS_NOT\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_ANY\"] = 5] = \"FILTER_OPERATOR_IS_ANY\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_NOT_ANY\"] = 6] = \"FILTER_OPERATOR_IS_NOT_ANY\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_ALL\"] = 7] = \"FILTER_OPERATOR_IS_ALL\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_NOT_ALL\"] = 8] = \"FILTER_OPERATOR_IS_NOT_ALL\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_CONTAINS\"] = 9] = \"FILTER_OPERATOR_CONTAINS\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_DOES_NOT_CONTAIN\"] = 10] = \"FILTER_OPERATOR_DOES_NOT_CONTAIN\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_EQUAL_TO\"] = 11] = \"FILTER_OPERATOR_IS_EQUAL_TO\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_NOT_EQUAL_TO\"] = 12] = \"FILTER_OPERATOR_IS_NOT_EQUAL_TO\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_GREATER_THAN\"] = 13] = \"FILTER_OPERATOR_IS_GREATER_THAN\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_GREATER_THAN_OR_EQUAL_TO\"] = 14] = \"FILTER_OPERATOR_IS_GREATER_THAN_OR_EQUAL_TO\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_LESS_THAN\"] = 15] = \"FILTER_OPERATOR_IS_LESS_THAN\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_LESS_THAN_OR_EQUAL_TO\"] = 16] = \"FILTER_OPERATOR_IS_LESS_THAN_OR_EQUAL_TO\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_BEFORE\"] = 17] = \"FILTER_OPERATOR_IS_BEFORE\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_BEFORE_OR_ON\"] = 18] = \"FILTER_OPERATOR_IS_BEFORE_OR_ON\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_AFTER\"] = 19] = \"FILTER_OPERATOR_IS_AFTER\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_AFTER_OR_ON\"] = 20] = \"FILTER_OPERATOR_IS_AFTER_OR_ON\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_BETWEEN\"] = 21] = \"FILTER_OPERATOR_IS_BETWEEN\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_NOT_BETWEEN\"] = 22] = \"FILTER_OPERATOR_IS_NOT_BETWEEN\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_VALID\"] = 23] = \"FILTER_OPERATOR_IS_VALID\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_NOT_VALID\"] = 24] = \"FILTER_OPERATOR_IS_NOT_VALID\";\n return FilterOperator;\n}(FilterOperator || {});\nvar FilterType = /*#__PURE__*/function (FilterType) {\n FilterType[FilterType[\"FILTER_TYPE_INVALID\"] = 0] = \"FILTER_TYPE_INVALID\";\n FilterType[FilterType[\"FILTER_TYPE_STRING\"] = 1] = \"FILTER_TYPE_STRING\";\n FilterType[FilterType[\"FILTER_TYPE_INTEGER\"] = 2] = \"FILTER_TYPE_INTEGER\";\n FilterType[FilterType[\"FILTER_TYPE_DATE\"] = 3] = \"FILTER_TYPE_DATE\";\n FilterType[FilterType[\"FILTER_TYPE_FLOAT\"] = 4] = \"FILTER_TYPE_FLOAT\";\n FilterType[FilterType[\"FILTER_TYPE_BOOLEAN\"] = 5] = \"FILTER_TYPE_BOOLEAN\";\n FilterType[FilterType[\"FILTER_TYPE_TAG\"] = 6] = \"FILTER_TYPE_TAG\";\n FilterType[FilterType[\"FILTER_TYPE_PHONE\"] = 8] = \"FILTER_TYPE_PHONE\";\n return FilterType;\n}(FilterType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar FieldType = /*#__PURE__*/function (FieldType) {\n FieldType[FieldType[\"FIELD_TYPE_INVALID\"] = 0] = \"FIELD_TYPE_INVALID\";\n FieldType[FieldType[\"FIELD_TYPE_STRING\"] = 1] = \"FIELD_TYPE_STRING\";\n FieldType[FieldType[\"FIELD_TYPE_INTEGER\"] = 2] = \"FIELD_TYPE_INTEGER\";\n FieldType[FieldType[\"FIELD_TYPE_DATE\"] = 3] = \"FIELD_TYPE_DATE\";\n FieldType[FieldType[\"FIELD_TYPE_DROPDOWN\"] = 4] = \"FIELD_TYPE_DROPDOWN\";\n FieldType[FieldType[\"FIELD_TYPE_CURRENCY\"] = 5] = \"FIELD_TYPE_CURRENCY\";\n FieldType[FieldType[\"FIELD_TYPE_EMAIL\"] = 6] = \"FIELD_TYPE_EMAIL\";\n FieldType[FieldType[\"FIELD_TYPE_PHONE\"] = 7] = \"FIELD_TYPE_PHONE\";\n FieldType[FieldType[\"FIELD_TYPE_BOOLEAN\"] = 8] = \"FIELD_TYPE_BOOLEAN\";\n FieldType[FieldType[\"FIELD_TYPE_TAG\"] = 9] = \"FIELD_TYPE_TAG\";\n FieldType[FieldType[\"FIELD_TYPE_DATETIME\"] = 10] = \"FIELD_TYPE_DATETIME\";\n FieldType[FieldType[\"FIELD_TYPE_STRING_LIST\"] = 11] = \"FIELD_TYPE_STRING_LIST\";\n FieldType[FieldType[\"FIELD_TYPE_GEOPOINT\"] = 12] = \"FIELD_TYPE_GEOPOINT\";\n FieldType[FieldType[\"FIELD_TYPE_FLOAT\"] = 13] = \"FIELD_TYPE_FLOAT\";\n return FieldType;\n}(FieldType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ValidateCrmObjectResponseFieldUniqueness = /*#__PURE__*/function (ValidateCrmObjectResponseFieldUniqueness) {\n ValidateCrmObjectResponseFieldUniqueness[ValidateCrmObjectResponseFieldUniqueness[\"FIELD_UNIQUENESS_INVALID\"] = 0] = \"FIELD_UNIQUENESS_INVALID\";\n ValidateCrmObjectResponseFieldUniqueness[ValidateCrmObjectResponseFieldUniqueness[\"FIELD_UNIQUENESS_NONE\"] = 1] = \"FIELD_UNIQUENESS_NONE\";\n ValidateCrmObjectResponseFieldUniqueness[ValidateCrmObjectResponseFieldUniqueness[\"FIELD_UNIQUENESS_WARNING\"] = 2] = \"FIELD_UNIQUENESS_WARNING\";\n ValidateCrmObjectResponseFieldUniqueness[ValidateCrmObjectResponseFieldUniqueness[\"FIELD_UNIQUENESS_ENFORCED\"] = 3] = \"FIELD_UNIQUENESS_ENFORCED\";\n return ValidateCrmObjectResponseFieldUniqueness;\n}(ValidateCrmObjectResponseFieldUniqueness || {});\nvar ProjectionFilterType = /*#__PURE__*/function (ProjectionFilterType) {\n ProjectionFilterType[ProjectionFilterType[\"PROJECTION_FILTER_TYPE_INVALID\"] = 0] = \"PROJECTION_FILTER_TYPE_INVALID\";\n ProjectionFilterType[ProjectionFilterType[\"PROJECTION_FILTER_TYPE_FIELD_TYPE\"] = 1] = \"PROJECTION_FILTER_TYPE_FIELD_TYPE\";\n return ProjectionFilterType;\n}(ProjectionFilterType || {});\nvar SortDirection = /*#__PURE__*/function (SortDirection) {\n SortDirection[SortDirection[\"SORT_DIRECTION_INVALID\"] = 0] = \"SORT_DIRECTION_INVALID\";\n SortDirection[SortDirection[\"SORT_DIRECTION_ASCENDING\"] = 1] = \"SORT_DIRECTION_ASCENDING\";\n SortDirection[SortDirection[\"SORT_DIRECTION_DESCENDING\"] = 2] = \"SORT_DIRECTION_DESCENDING\";\n return SortDirection;\n}(SortDirection || {});\nvar ValidateCrmObjectResponseValidationErrorSeverity = /*#__PURE__*/function (ValidateCrmObjectResponseValidationErrorSeverity) {\n ValidateCrmObjectResponseValidationErrorSeverity[ValidateCrmObjectResponseValidationErrorSeverity[\"VALIDATION_ERROR_SEVERITY_UNKNOWN\"] = 0] = \"VALIDATION_ERROR_SEVERITY_UNKNOWN\";\n ValidateCrmObjectResponseValidationErrorSeverity[ValidateCrmObjectResponseValidationErrorSeverity[\"VALIDATION_ERROR_SEVERITY_INVALID\"] = 1] = \"VALIDATION_ERROR_SEVERITY_INVALID\";\n ValidateCrmObjectResponseValidationErrorSeverity[ValidateCrmObjectResponseValidationErrorSeverity[\"VALIDATION_ERROR_SEVERITY_WARNING\"] = 2] = \"VALIDATION_ERROR_SEVERITY_WARNING\";\n return ValidateCrmObjectResponseValidationErrorSeverity;\n}(ValidateCrmObjectResponseValidationErrorSeverity || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar AddContactAsIamUserForCompanyStatus = /*#__PURE__*/function (AddContactAsIamUserForCompanyStatus) {\n AddContactAsIamUserForCompanyStatus[AddContactAsIamUserForCompanyStatus[\"ADD_CONTACT_AS_IAM_USER_FOR_COMPANY_STATUS_INVALID\"] = 0] = \"ADD_CONTACT_AS_IAM_USER_FOR_COMPANY_STATUS_INVALID\";\n AddContactAsIamUserForCompanyStatus[AddContactAsIamUserForCompanyStatus[\"ADD_CONTACT_AS_IAM_USER_FOR_COMPANY_STATUS_IN_PROGRESS\"] = 1] = \"ADD_CONTACT_AS_IAM_USER_FOR_COMPANY_STATUS_IN_PROGRESS\";\n AddContactAsIamUserForCompanyStatus[AddContactAsIamUserForCompanyStatus[\"ADD_CONTACT_AS_IAM_USER_FOR_COMPANY_STATUS_SUCCEEDED\"] = 2] = \"ADD_CONTACT_AS_IAM_USER_FOR_COMPANY_STATUS_SUCCEEDED\";\n AddContactAsIamUserForCompanyStatus[AddContactAsIamUserForCompanyStatus[\"ADD_CONTACT_AS_IAM_USER_FOR_COMPANY_STATUS_FAILED\"] = 3] = \"ADD_CONTACT_AS_IAM_USER_FOR_COMPANY_STATUS_FAILED\";\n return AddContactAsIamUserForCompanyStatus;\n}(AddContactAsIamUserForCompanyStatus || {});\nvar CreateAccountGroupForCompanyStatus = /*#__PURE__*/function (CreateAccountGroupForCompanyStatus) {\n CreateAccountGroupForCompanyStatus[CreateAccountGroupForCompanyStatus[\"CREATE_ACCOUNT_GROUP_FOR_COMPANY_STATUS_UNSPECIFIED\"] = 0] = \"CREATE_ACCOUNT_GROUP_FOR_COMPANY_STATUS_UNSPECIFIED\";\n CreateAccountGroupForCompanyStatus[CreateAccountGroupForCompanyStatus[\"CREATE_ACCOUNT_GROUP_FOR_COMPANY_STATUS_IN_PROGRESS\"] = 1] = \"CREATE_ACCOUNT_GROUP_FOR_COMPANY_STATUS_IN_PROGRESS\";\n CreateAccountGroupForCompanyStatus[CreateAccountGroupForCompanyStatus[\"CREATE_ACCOUNT_GROUP_FOR_COMPANY_STATUS_SUCCEEDED\"] = 2] = \"CREATE_ACCOUNT_GROUP_FOR_COMPANY_STATUS_SUCCEEDED\";\n CreateAccountGroupForCompanyStatus[CreateAccountGroupForCompanyStatus[\"CREATE_ACCOUNT_GROUP_FOR_COMPANY_STATUS_FAILED\"] = 3] = \"CREATE_ACCOUNT_GROUP_FOR_COMPANY_STATUS_FAILED\";\n return CreateAccountGroupForCompanyStatus;\n}(CreateAccountGroupForCompanyStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar NullValue = /*#__PURE__*/function (NullValue) {\n NullValue[NullValue[\"NULL_VALUE\"] = 0] = \"NULL_VALUE\";\n return NullValue;\n}(NullValue || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$a(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass FieldMask {\n static fromProto(proto) {\n let m = new FieldMask();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paths !== 'undefined') {\n toReturn['paths'] = this.paths;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$9(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateIntegrationRequest {\n static fromProto(proto) {\n let m = new CreateIntegrationRequest();\n m = Object.assign(m, proto);\n if (proto.integration) {\n m.integration = Integration.fromProto(proto.integration);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.integration !== 'undefined' && this.integration !== null) {\n toReturn['integration'] = 'toApiJson' in this.integration ? this.integration.toApiJson() : this.integration;\n }\n return toReturn;\n }\n}\nclass CreateIntegrationResponse {\n static fromProto(proto) {\n let m = new CreateIntegrationResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.integrationId !== 'undefined') {\n toReturn['integrationId'] = this.integrationId;\n }\n return toReturn;\n }\n}\nclass MergeStrategyMergeConfigDateOverwriteConfig {\n static fromProto(proto) {\n let m = new MergeStrategyMergeConfigDateOverwriteConfig();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.dateCriteriaFieldId !== 'undefined') {\n toReturn['dateCriteriaFieldId'] = this.dateCriteriaFieldId;\n }\n return toReturn;\n }\n}\nclass DeleteIntegrationRequest {\n static fromProto(proto) {\n let m = new DeleteIntegrationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.integrationId !== 'undefined') {\n toReturn['integrationId'] = this.integrationId;\n }\n return toReturn;\n }\n}\nclass FieldMapping {\n static fromProto(proto) {\n let m = new FieldMapping();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue$9(MappingType, proto.type);\n }\n if (proto.mergeStrategy) {\n m.mergeStrategy = MergeStrategy.fromProto(proto.mergeStrategy);\n }\n if (proto.nestedIntegration) {\n m.nestedIntegration = NestedIntegration.fromProto(proto.nestedIntegration);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fieldId !== 'undefined') {\n toReturn['fieldId'] = this.fieldId;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.jsonPath !== 'undefined') {\n toReturn['jsonPath'] = this.jsonPath;\n }\n if (typeof this.mergeStrategy !== 'undefined' && this.mergeStrategy !== null) {\n toReturn['mergeStrategy'] = 'toApiJson' in this.mergeStrategy ? this.mergeStrategy.toApiJson() : this.mergeStrategy;\n }\n if (typeof this.nestedIntegration !== 'undefined' && this.nestedIntegration !== null) {\n toReturn['nestedIntegration'] = 'toApiJson' in this.nestedIntegration ? this.nestedIntegration.toApiJson() : this.nestedIntegration;\n }\n return toReturn;\n }\n}\nclass GetMultiIntegrationRequest {\n static fromProto(proto) {\n let m = new GetMultiIntegrationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.integrationIds !== 'undefined') {\n toReturn['integrationIds'] = this.integrationIds;\n }\n return toReturn;\n }\n}\nclass GetMultiIntegrationResponse {\n static fromProto(proto) {\n let m = new GetMultiIntegrationResponse();\n m = Object.assign(m, proto);\n if (proto.integrations) {\n m.integrations = proto.integrations.map(Integration.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.integrations !== 'undefined' && this.integrations !== null) {\n toReturn['integrations'] = 'toApiJson' in this.integrations ? this.integrations.toApiJson() : this.integrations;\n }\n return toReturn;\n }\n}\nclass Integration {\n static fromProto(proto) {\n let m = new Integration();\n m = Object.assign(m, proto);\n if (proto.fieldMappings) {\n m.fieldMappings = proto.fieldMappings.map(FieldMapping.fromProto);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.integrationId !== 'undefined') {\n toReturn['integrationId'] = this.integrationId;\n }\n if (typeof this.objectType !== 'undefined') {\n toReturn['objectType'] = this.objectType;\n }\n if (typeof this.objectSubtype !== 'undefined') {\n toReturn['objectSubtype'] = this.objectSubtype;\n }\n if (typeof this.lookupMappingIds !== 'undefined') {\n toReturn['lookupMappingIds'] = this.lookupMappingIds;\n }\n if (typeof this.fieldMappings !== 'undefined' && this.fieldMappings !== null) {\n toReturn['fieldMappings'] = 'toApiJson' in this.fieldMappings ? this.fieldMappings.toApiJson() : this.fieldMappings;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n return toReturn;\n }\n}\nclass MergeStrategyMergeConfig {\n static fromProto(proto) {\n let m = new MergeStrategyMergeConfig();\n m = Object.assign(m, proto);\n if (proto.dateOverwriteConfig) {\n m.dateOverwriteConfig = MergeStrategyMergeConfigDateOverwriteConfig.fromProto(proto.dateOverwriteConfig);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.dateOverwriteConfig !== 'undefined' && this.dateOverwriteConfig !== null) {\n toReturn['dateOverwriteConfig'] = 'toApiJson' in this.dateOverwriteConfig ? this.dateOverwriteConfig.toApiJson() : this.dateOverwriteConfig;\n }\n return toReturn;\n }\n}\nclass MergeStrategy {\n static fromProto(proto) {\n let m = new MergeStrategy();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue$9(MergeStrategyType, proto.type);\n }\n if (proto.config) {\n m.config = MergeStrategyMergeConfig.fromProto(proto.config);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n return toReturn;\n }\n}\nclass NestedIntegration {\n static fromProto(proto) {\n let m = new NestedIntegration();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.integrationId !== 'undefined') {\n toReturn['integrationId'] = this.integrationId;\n }\n return toReturn;\n }\n}\nclass UpdateIntegrationRequest {\n static fromProto(proto) {\n let m = new UpdateIntegrationRequest();\n m = Object.assign(m, proto);\n if (proto.integration) {\n m.integration = Integration.fromProto(proto.integration);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.integration !== 'undefined' && this.integration !== null) {\n toReturn['integration'] = 'toApiJson' in this.integration ? this.integration.toApiJson() : this.integration;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$8(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n if (proto.totalResults) {\n m.totalResults = parseInt(proto.totalResults, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n if (typeof this.totalResults !== 'undefined') {\n toReturn['totalResults'] = this.totalResults;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$7(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Filter {\n static fromProto(proto) {\n let m = new Filter();\n m = Object.assign(m, proto);\n if (proto.operator) {\n m.operator = enumStringToValue$7(FilterOperator, proto.operator);\n }\n if (proto.values) {\n m.values = proto.values.map(FilterValue.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fieldId !== 'undefined') {\n toReturn['fieldId'] = this.fieldId;\n }\n if (typeof this.operator !== 'undefined') {\n toReturn['operator'] = this.operator;\n }\n if (typeof this.values !== 'undefined' && this.values !== null) {\n toReturn['values'] = 'toApiJson' in this.values ? this.values.toApiJson() : this.values;\n }\n if (typeof this.floatTolerance !== 'undefined') {\n toReturn['floatTolerance'] = this.floatTolerance;\n }\n return toReturn;\n }\n}\nclass FilterGroup {\n static fromProto(proto) {\n let m = new FilterGroup();\n m = Object.assign(m, proto);\n if (proto.operator) {\n m.operator = enumStringToValue$7(FilterGroupOperator, proto.operator);\n }\n if (proto.filters) {\n m.filters = proto.filters.map(Filter.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.operator !== 'undefined') {\n toReturn['operator'] = this.operator;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass Phone {\n static fromProto(proto) {\n let m = new Phone();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.isoCountryCode !== 'undefined') {\n toReturn['isoCountryCode'] = this.isoCountryCode;\n }\n if (typeof this.nationalNumber !== 'undefined') {\n toReturn['nationalNumber'] = this.nationalNumber;\n }\n if (typeof this.extension !== 'undefined') {\n toReturn['extension'] = this.extension;\n }\n return toReturn;\n }\n}\nclass FilterValue {\n static fromProto(proto) {\n let m = new FilterValue();\n m = Object.assign(m, proto);\n if (proto.integer) {\n m.integer = parseInt(proto.integer, 10);\n }\n if (proto.date) {\n m.date = new Date(proto.date);\n }\n if (proto.dateDefault) {\n m.dateDefault = enumStringToValue$7(DateDefault, proto.dateDefault);\n }\n if (proto.phone) {\n m.phone = Phone.fromProto(proto.phone);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.boolean !== 'undefined') {\n toReturn['boolean'] = this.boolean;\n }\n if (typeof this.integer !== 'undefined') {\n toReturn['integer'] = this.integer;\n }\n if (typeof this.float !== 'undefined') {\n toReturn['float'] = this.float;\n }\n if (typeof this.string !== 'undefined') {\n toReturn['string'] = this.string;\n }\n if (typeof this.date !== 'undefined' && this.date !== null) {\n toReturn['date'] = 'toApiJson' in this.date ? this.date.toApiJson() : this.date;\n }\n if (typeof this.dateDefault !== 'undefined') {\n toReturn['dateDefault'] = this.dateDefault;\n }\n if (typeof this.phone !== 'undefined' && this.phone !== null) {\n toReturn['phone'] = 'toApiJson' in this.phone ? this.phone.toApiJson() : this.phone;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$6(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ArchiveFieldSchemaRequest {\n static fromProto(proto) {\n let m = new ArchiveFieldSchemaRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.crmObjectType !== 'undefined') {\n toReturn['crmObjectType'] = this.crmObjectType;\n }\n if (typeof this.crmObjectSubtype !== 'undefined') {\n toReturn['crmObjectSubtype'] = this.crmObjectSubtype;\n }\n if (typeof this.fieldId !== 'undefined') {\n toReturn['fieldId'] = this.fieldId;\n }\n return toReturn;\n }\n}\nclass CreateFieldSchemaRequest {\n static fromProto(proto) {\n let m = new CreateFieldSchemaRequest();\n m = Object.assign(m, proto);\n if (proto.fieldSchema) {\n m.fieldSchema = FieldSchema.fromProto(proto.fieldSchema);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.crmObjectType !== 'undefined') {\n toReturn['crmObjectType'] = this.crmObjectType;\n }\n if (typeof this.crmObjectSubtype !== 'undefined') {\n toReturn['crmObjectSubtype'] = this.crmObjectSubtype;\n }\n if (typeof this.fieldSchema !== 'undefined' && this.fieldSchema !== null) {\n toReturn['fieldSchema'] = 'toApiJson' in this.fieldSchema ? this.fieldSchema.toApiJson() : this.fieldSchema;\n }\n return toReturn;\n }\n}\nclass CreateFieldSchemaResponse {\n static fromProto(proto) {\n let m = new CreateFieldSchemaResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fieldId !== 'undefined') {\n toReturn['fieldId'] = this.fieldId;\n }\n return toReturn;\n }\n}\nclass DropdownOption {\n static fromProto(proto) {\n let m = new DropdownOption();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.label !== 'undefined') {\n toReturn['label'] = this.label;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass FieldSchema {\n static fromProto(proto) {\n let m = new FieldSchema();\n m = Object.assign(m, proto);\n if (proto.fieldType) {\n m.fieldType = enumStringToValue$6(FieldType, proto.fieldType);\n }\n if (proto.dropdownOptions) {\n m.dropdownOptions = proto.dropdownOptions.map(DropdownOption.fromProto);\n }\n if (proto.archived) {\n m.archived = new Date(proto.archived);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.fieldId !== 'undefined') {\n toReturn['fieldId'] = this.fieldId;\n }\n if (typeof this.externalId !== 'undefined') {\n toReturn['externalId'] = this.externalId;\n }\n if (typeof this.fieldType !== 'undefined') {\n toReturn['fieldType'] = this.fieldType;\n }\n if (typeof this.fieldName !== 'undefined') {\n toReturn['fieldName'] = this.fieldName;\n }\n if (typeof this.fieldDescription !== 'undefined') {\n toReturn['fieldDescription'] = this.fieldDescription;\n }\n if (typeof this.dropdownOptions !== 'undefined' && this.dropdownOptions !== null) {\n toReturn['dropdownOptions'] = 'toApiJson' in this.dropdownOptions ? this.dropdownOptions.toApiJson() : this.dropdownOptions;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.archived !== 'undefined' && this.archived !== null) {\n toReturn['archived'] = 'toApiJson' in this.archived ? this.archived.toApiJson() : this.archived;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.readonly !== 'undefined') {\n toReturn['readonly'] = this.readonly;\n }\n return toReturn;\n }\n}\nclass ListFieldSchemaRequestFilters {\n static fromProto(proto) {\n let m = new ListFieldSchemaRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.onlyArchived !== 'undefined') {\n toReturn['onlyArchived'] = this.onlyArchived;\n }\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n return toReturn;\n }\n}\nclass GetMultiFieldSchemaRequest {\n static fromProto(proto) {\n let m = new GetMultiFieldSchemaRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.crmObjectType !== 'undefined') {\n toReturn['crmObjectType'] = this.crmObjectType;\n }\n if (typeof this.crmObjectSubtype !== 'undefined') {\n toReturn['crmObjectSubtype'] = this.crmObjectSubtype;\n }\n if (typeof this.fieldId !== 'undefined') {\n toReturn['fieldId'] = this.fieldId;\n }\n return toReturn;\n }\n}\nclass GetMultiFieldSchemaResponse {\n static fromProto(proto) {\n let m = new GetMultiFieldSchemaResponse();\n m = Object.assign(m, proto);\n if (proto.fieldSchemas) {\n m.fieldSchemas = proto.fieldSchemas.map(FieldSchema.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fieldSchemas !== 'undefined' && this.fieldSchemas !== null) {\n toReturn['fieldSchemas'] = 'toApiJson' in this.fieldSchemas ? this.fieldSchemas.toApiJson() : this.fieldSchemas;\n }\n return toReturn;\n }\n}\nclass ListFieldSchemaRequest {\n static fromProto(proto) {\n let m = new ListFieldSchemaRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.filters) {\n m.filters = ListFieldSchemaRequestFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.crmObjectType !== 'undefined') {\n toReturn['crmObjectType'] = this.crmObjectType;\n }\n if (typeof this.crmObjectSubtype !== 'undefined') {\n toReturn['crmObjectSubtype'] = this.crmObjectSubtype;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n return toReturn;\n }\n}\nclass ListFieldSchemaResponse {\n static fromProto(proto) {\n let m = new ListFieldSchemaResponse();\n m = Object.assign(m, proto);\n if (proto.fieldSchemas) {\n m.fieldSchemas = proto.fieldSchemas.map(FieldSchema.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fieldSchemas !== 'undefined' && this.fieldSchemas !== null) {\n toReturn['fieldSchemas'] = 'toApiJson' in this.fieldSchemas ? this.fieldSchemas.toApiJson() : this.fieldSchemas;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass UnarchiveFieldSchemaRequest {\n static fromProto(proto) {\n let m = new UnarchiveFieldSchemaRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.crmObjectType !== 'undefined') {\n toReturn['crmObjectType'] = this.crmObjectType;\n }\n if (typeof this.crmObjectSubtype !== 'undefined') {\n toReturn['crmObjectSubtype'] = this.crmObjectSubtype;\n }\n if (typeof this.fieldId !== 'undefined') {\n toReturn['fieldId'] = this.fieldId;\n }\n return toReturn;\n }\n}\nclass UpdateFieldSchemaRequest {\n static fromProto(proto) {\n let m = new UpdateFieldSchemaRequest();\n m = Object.assign(m, proto);\n if (proto.fieldSchema) {\n m.fieldSchema = FieldSchema.fromProto(proto.fieldSchema);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.crmObjectType !== 'undefined') {\n toReturn['crmObjectType'] = this.crmObjectType;\n }\n if (typeof this.crmObjectSubtype !== 'undefined') {\n toReturn['crmObjectSubtype'] = this.crmObjectSubtype;\n }\n if (typeof this.fieldSchema !== 'undefined' && this.fieldSchema !== null) {\n toReturn['fieldSchema'] = 'toApiJson' in this.fieldSchema ? this.fieldSchema.toApiJson() : this.fieldSchema;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$5(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass GetOpportunityValueSummaryResponseAmounts {\n static fromProto(proto) {\n let m = new GetOpportunityValueSummaryResponseAmounts();\n m = Object.assign(m, proto);\n if (proto.total) {\n m.total = Currency.fromProto(proto.total);\n }\n if (proto.estimated) {\n m.estimated = Currency.fromProto(proto.estimated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.total !== 'undefined' && this.total !== null) {\n toReturn['total'] = 'toApiJson' in this.total ? this.total.toApiJson() : this.total;\n }\n if (typeof this.estimated !== 'undefined' && this.estimated !== null) {\n toReturn['estimated'] = 'toApiJson' in this.estimated ? this.estimated.toApiJson() : this.estimated;\n }\n return toReturn;\n }\n}\nclass CreateCrmObjectRequest {\n static fromProto(proto) {\n let m = new CreateCrmObjectRequest();\n m = Object.assign(m, proto);\n if (proto.crmObject) {\n m.crmObject = CrmObject.fromProto(proto.crmObject);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.crmObject !== 'undefined' && this.crmObject !== null) {\n toReturn['crmObject'] = 'toApiJson' in this.crmObject ? this.crmObject.toApiJson() : this.crmObject;\n }\n return toReturn;\n }\n}\nclass CreateCrmObjectResponse {\n static fromProto(proto) {\n let m = new CreateCrmObjectResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.crmObjectId !== 'undefined') {\n toReturn['crmObjectId'] = this.crmObjectId;\n }\n return toReturn;\n }\n}\nclass CrmObject {\n static fromProto(proto) {\n let m = new CrmObject();\n m = Object.assign(m, proto);\n if (proto.fields) {\n m.fields = proto.fields.map(FieldValue.fromProto);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.crmObjectId !== 'undefined') {\n toReturn['crmObjectId'] = this.crmObjectId;\n }\n if (typeof this.externalId !== 'undefined') {\n toReturn['externalId'] = this.externalId;\n }\n if (typeof this.ownerId !== 'undefined') {\n toReturn['ownerId'] = this.ownerId;\n }\n if (typeof this.fields !== 'undefined' && this.fields !== null) {\n toReturn['fields'] = 'toApiJson' in this.fields ? this.fields.toApiJson() : this.fields;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n if (typeof this.groupId !== 'undefined') {\n toReturn['groupId'] = this.groupId;\n }\n if (typeof this.idempotencyId !== 'undefined') {\n toReturn['idempotencyId'] = this.idempotencyId;\n }\n return toReturn;\n }\n}\nclass CrmObjectSearch {\n static fromProto(proto) {\n let m = new CrmObjectSearch();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n return toReturn;\n }\n}\nclass Currency {\n static fromProto(proto) {\n let m = new Currency();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass DeleteCrmObjectRequest {\n static fromProto(proto) {\n let m = new DeleteCrmObjectRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.crmObjectId !== 'undefined') {\n toReturn['crmObjectId'] = this.crmObjectId;\n }\n return toReturn;\n }\n}\nclass FieldValue {\n static fromProto(proto) {\n let m = new FieldValue();\n m = Object.assign(m, proto);\n if (proto.nullValue) {\n m.nullValue = enumStringToValue$5(NullValue, proto.nullValue);\n }\n if (proto.integerValue) {\n m.integerValue = parseInt(proto.integerValue, 10);\n }\n if (proto.dateValue) {\n m.dateValue = new Date(proto.dateValue);\n }\n if (proto.stringValues) {\n m.stringValues = StringList.fromProto(proto.stringValues);\n }\n if (proto.geopointValue) {\n m.geopointValue = Geopoint.fromProto(proto.geopointValue);\n }\n if (proto.phoneFieldValues) {\n m.phoneFieldValues = PhoneFields.fromProto(proto.phoneFieldValues);\n }\n if (proto.currencyValue) {\n m.currencyValue = Currency.fromProto(proto.currencyValue);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fieldId !== 'undefined') {\n toReturn['fieldId'] = this.fieldId;\n }\n if (typeof this.externalId !== 'undefined') {\n toReturn['externalId'] = this.externalId;\n }\n if (typeof this.nullValue !== 'undefined') {\n toReturn['nullValue'] = this.nullValue;\n }\n if (typeof this.integerValue !== 'undefined') {\n toReturn['integerValue'] = this.integerValue;\n }\n if (typeof this.stringValue !== 'undefined') {\n toReturn['stringValue'] = this.stringValue;\n }\n if (typeof this.dateValue !== 'undefined' && this.dateValue !== null) {\n toReturn['dateValue'] = 'toApiJson' in this.dateValue ? this.dateValue.toApiJson() : this.dateValue;\n }\n if (typeof this.booleanValue !== 'undefined') {\n toReturn['booleanValue'] = this.booleanValue;\n }\n if (typeof this.stringValues !== 'undefined' && this.stringValues !== null) {\n toReturn['stringValues'] = 'toApiJson' in this.stringValues ? this.stringValues.toApiJson() : this.stringValues;\n }\n if (typeof this.geopointValue !== 'undefined' && this.geopointValue !== null) {\n toReturn['geopointValue'] = 'toApiJson' in this.geopointValue ? this.geopointValue.toApiJson() : this.geopointValue;\n }\n if (typeof this.floatValue !== 'undefined') {\n toReturn['floatValue'] = this.floatValue;\n }\n if (typeof this.phoneFieldValues !== 'undefined' && this.phoneFieldValues !== null) {\n toReturn['phoneFieldValues'] = 'toApiJson' in this.phoneFieldValues ? this.phoneFieldValues.toApiJson() : this.phoneFieldValues;\n }\n if (typeof this.currencyValue !== 'undefined' && this.currencyValue !== null) {\n toReturn['currencyValue'] = 'toApiJson' in this.currencyValue ? this.currencyValue.toApiJson() : this.currencyValue;\n }\n return toReturn;\n }\n}\nclass Geopoint {\n static fromProto(proto) {\n let m = new Geopoint();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.lat !== 'undefined') {\n toReturn['lat'] = this.lat;\n }\n if (typeof this.lon !== 'undefined') {\n toReturn['lon'] = this.lon;\n }\n return toReturn;\n }\n}\nclass GetMultiCrmObjectRequest {\n static fromProto(proto) {\n let m = new GetMultiCrmObjectRequest();\n m = Object.assign(m, proto);\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n if (proto.projectionFilters) {\n m.projectionFilters = proto.projectionFilters.map(ObjectProjectionFilter.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.crmObjectIds !== 'undefined') {\n toReturn['crmObjectIds'] = this.crmObjectIds;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n if (typeof this.projectionFilters !== 'undefined' && this.projectionFilters !== null) {\n toReturn['projectionFilters'] = 'toApiJson' in this.projectionFilters ? this.projectionFilters.toApiJson() : this.projectionFilters;\n }\n return toReturn;\n }\n}\nclass GetMultiCrmObjectResponse {\n static fromProto(proto) {\n let m = new GetMultiCrmObjectResponse();\n m = Object.assign(m, proto);\n if (proto.crmObjects) {\n m.crmObjects = proto.crmObjects.map(CrmObject.fromProto);\n }\n if (proto.fieldSchemas) {\n m.fieldSchemas = proto.fieldSchemas.map(FieldSchema.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.crmObjects !== 'undefined' && this.crmObjects !== null) {\n toReturn['crmObjects'] = 'toApiJson' in this.crmObjects ? this.crmObjects.toApiJson() : this.crmObjects;\n }\n if (typeof this.fieldSchemas !== 'undefined' && this.fieldSchemas !== null) {\n toReturn['fieldSchemas'] = 'toApiJson' in this.fieldSchemas ? this.fieldSchemas.toApiJson() : this.fieldSchemas;\n }\n return toReturn;\n }\n}\nclass GetOpportunityValueSummaryRequest {\n static fromProto(proto) {\n let m = new GetOpportunityValueSummaryRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = FilterGroup.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass GetOpportunityValueSummaryResponse {\n static fromProto(proto) {\n let m = new GetOpportunityValueSummaryResponse();\n m = Object.assign(m, proto);\n if (proto.stages) {\n m.stages = proto.stages.map(GetOpportunityValueSummaryResponseStageAmounts.fromProto);\n }\n if (proto.pipeline) {\n m.pipeline = GetOpportunityValueSummaryResponseAmounts.fromProto(proto.pipeline);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stages !== 'undefined' && this.stages !== null) {\n toReturn['stages'] = 'toApiJson' in this.stages ? this.stages.toApiJson() : this.stages;\n }\n if (typeof this.pipeline !== 'undefined' && this.pipeline !== null) {\n toReturn['pipeline'] = 'toApiJson' in this.pipeline ? this.pipeline.toApiJson() : this.pipeline;\n }\n return toReturn;\n }\n}\nclass ListCrmObjectsRequest {\n static fromProto(proto) {\n let m = new ListCrmObjectsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.search) {\n m.search = CrmObjectSearch.fromProto(proto.search);\n }\n if (proto.sortBy) {\n m.sortBy = proto.sortBy.map(SortBy.fromProto);\n }\n if (proto.filtersV2) {\n m.filtersV2 = FilterGroup.fromProto(proto.filtersV2);\n }\n if (proto.projectionFilters) {\n m.projectionFilters = proto.projectionFilters.map(ObjectProjectionFilter.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.search !== 'undefined' && this.search !== null) {\n toReturn['search'] = 'toApiJson' in this.search ? this.search.toApiJson() : this.search;\n }\n if (typeof this.sortBy !== 'undefined' && this.sortBy !== null) {\n toReturn['sortBy'] = 'toApiJson' in this.sortBy ? this.sortBy.toApiJson() : this.sortBy;\n }\n if (typeof this.filtersV2 !== 'undefined' && this.filtersV2 !== null) {\n toReturn['filtersV2'] = 'toApiJson' in this.filtersV2 ? this.filtersV2.toApiJson() : this.filtersV2;\n }\n if (typeof this.projectionFilters !== 'undefined' && this.projectionFilters !== null) {\n toReturn['projectionFilters'] = 'toApiJson' in this.projectionFilters ? this.projectionFilters.toApiJson() : this.projectionFilters;\n }\n return toReturn;\n }\n}\nclass ListCrmObjectsResponse {\n static fromProto(proto) {\n let m = new ListCrmObjectsResponse();\n m = Object.assign(m, proto);\n if (proto.crmObjects) {\n m.crmObjects = proto.crmObjects.map(CrmObject.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.crmObjects !== 'undefined' && this.crmObjects !== null) {\n toReturn['crmObjects'] = 'toApiJson' in this.crmObjects ? this.crmObjects.toApiJson() : this.crmObjects;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListFieldOptionsRequest {\n static fromProto(proto) {\n let m = new ListFieldOptionsRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.fieldId !== 'undefined') {\n toReturn['fieldId'] = this.fieldId;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.crmObjectSubtype !== 'undefined') {\n toReturn['crmObjectSubtype'] = this.crmObjectSubtype;\n }\n return toReturn;\n }\n}\nclass ListFieldOptionsResponse {\n static fromProto(proto) {\n let m = new ListFieldOptionsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.options !== 'undefined') {\n toReturn['options'] = this.options;\n }\n return toReturn;\n }\n}\nclass ListMultiLocationFieldOptionsRequest {\n static fromProto(proto) {\n let m = new ListMultiLocationFieldOptionsRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespaces !== 'undefined') {\n toReturn['namespaces'] = this.namespaces;\n }\n if (typeof this.multiLocationPath !== 'undefined') {\n toReturn['multiLocationPath'] = this.multiLocationPath;\n }\n if (typeof this.fieldId !== 'undefined') {\n toReturn['fieldId'] = this.fieldId;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n return toReturn;\n }\n}\nclass ListMultiLocationFieldOptionsResponse {\n static fromProto(proto) {\n let m = new ListMultiLocationFieldOptionsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.options !== 'undefined') {\n toReturn['options'] = this.options;\n }\n return toReturn;\n }\n}\nclass ObjectProjectionFilter {\n static fromProto(proto) {\n let m = new ObjectProjectionFilter();\n m = Object.assign(m, proto);\n if (proto.filterType) {\n m.filterType = enumStringToValue$5(ProjectionFilterType, proto.filterType);\n }\n if (proto.fromFieldType) {\n m.fromFieldType = enumStringToValue$5(FieldType, proto.fromFieldType);\n }\n if (proto.toFieldType) {\n m.toFieldType = enumStringToValue$5(FieldType, proto.toFieldType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filterType !== 'undefined') {\n toReturn['filterType'] = this.filterType;\n }\n if (typeof this.fromFieldType !== 'undefined') {\n toReturn['fromFieldType'] = this.fromFieldType;\n }\n if (typeof this.toFieldType !== 'undefined') {\n toReturn['toFieldType'] = this.toFieldType;\n }\n if (typeof this.fieldId !== 'undefined') {\n toReturn['fieldId'] = this.fieldId;\n }\n return toReturn;\n }\n}\nclass PhoneFields {\n static fromProto(proto) {\n let m = new PhoneFields();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.isoCountryCode !== 'undefined') {\n toReturn['isoCountryCode'] = this.isoCountryCode;\n }\n if (typeof this.nationalNumber !== 'undefined') {\n toReturn['nationalNumber'] = this.nationalNumber;\n }\n if (typeof this.extension !== 'undefined') {\n toReturn['extension'] = this.extension;\n }\n if (typeof this.e164Compliant !== 'undefined') {\n toReturn['e164Compliant'] = this.e164Compliant;\n }\n return toReturn;\n }\n}\nclass SortBy {\n static fromProto(proto) {\n let m = new SortBy();\n m = Object.assign(m, proto);\n if (proto.sortDirection) {\n m.sortDirection = enumStringToValue$5(SortDirection, proto.sortDirection);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fieldId !== 'undefined') {\n toReturn['fieldId'] = this.fieldId;\n }\n if (typeof this.sortDirection !== 'undefined') {\n toReturn['sortDirection'] = this.sortDirection;\n }\n return toReturn;\n }\n}\nclass GetOpportunityValueSummaryResponseStageAmounts {\n static fromProto(proto) {\n let m = new GetOpportunityValueSummaryResponseStageAmounts();\n m = Object.assign(m, proto);\n if (proto.amounts) {\n m.amounts = GetOpportunityValueSummaryResponseAmounts.fromProto(proto.amounts);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stageId !== 'undefined') {\n toReturn['stageId'] = this.stageId;\n }\n if (typeof this.amounts !== 'undefined' && this.amounts !== null) {\n toReturn['amounts'] = 'toApiJson' in this.amounts ? this.amounts.toApiJson() : this.amounts;\n }\n return toReturn;\n }\n}\nclass StartBulkCompanyCreateRequest {\n static fromProto(proto) {\n let m = new StartBulkCompanyCreateRequest();\n m = Object.assign(m, proto);\n if (proto.crmObjects) {\n m.crmObjects = proto.crmObjects.map(CrmObject.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.crmObjects !== 'undefined' && this.crmObjects !== null) {\n toReturn['crmObjects'] = 'toApiJson' in this.crmObjects ? this.crmObjects.toApiJson() : this.crmObjects;\n }\n return toReturn;\n }\n}\nclass StartBulkCompanyCreateResponse {\n static fromProto(proto) {\n let m = new StartBulkCompanyCreateResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filterTag !== 'undefined') {\n toReturn['filterTag'] = this.filterTag;\n }\n return toReturn;\n }\n}\nclass StringList {\n static fromProto(proto) {\n let m = new StringList();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.values !== 'undefined') {\n toReturn['values'] = this.values;\n }\n return toReturn;\n }\n}\nclass ValidateCrmObjectResponseUniquenessCheck {\n static fromProto(proto) {\n let m = new ValidateCrmObjectResponseUniquenessCheck();\n m = Object.assign(m, proto);\n if (proto.uniqueness) {\n m.uniqueness = enumStringToValue$5(ValidateCrmObjectResponseFieldUniqueness, proto.uniqueness);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fieldId !== 'undefined') {\n toReturn['fieldId'] = this.fieldId;\n }\n if (typeof this.existingCrmObjectIds !== 'undefined') {\n toReturn['existingCrmObjectIds'] = this.existingCrmObjectIds;\n }\n if (typeof this.uniqueness !== 'undefined') {\n toReturn['uniqueness'] = this.uniqueness;\n }\n return toReturn;\n }\n}\nclass UpdateCrmObjectRequest {\n static fromProto(proto) {\n let m = new UpdateCrmObjectRequest();\n m = Object.assign(m, proto);\n if (proto.crmObject) {\n m.crmObject = CrmObject.fromProto(proto.crmObject);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.crmObject !== 'undefined' && this.crmObject !== null) {\n toReturn['crmObject'] = 'toApiJson' in this.crmObject ? this.crmObject.toApiJson() : this.crmObject;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass ValidateCrmObjectRequest {\n static fromProto(proto) {\n let m = new ValidateCrmObjectRequest();\n m = Object.assign(m, proto);\n if (proto.crmObject) {\n m.crmObject = CrmObject.fromProto(proto.crmObject);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.crmObject !== 'undefined' && this.crmObject !== null) {\n toReturn['crmObject'] = 'toApiJson' in this.crmObject ? this.crmObject.toApiJson() : this.crmObject;\n }\n return toReturn;\n }\n}\nclass ValidateCrmObjectResponse {\n static fromProto(proto) {\n let m = new ValidateCrmObjectResponse();\n m = Object.assign(m, proto);\n if (proto.errors) {\n m.errors = proto.errors.map(ValidateCrmObjectResponseValidationError.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.errors !== 'undefined' && this.errors !== null) {\n toReturn['errors'] = 'toApiJson' in this.errors ? this.errors.toApiJson() : this.errors;\n }\n return toReturn;\n }\n}\nclass ValidateCrmObjectResponseValidationError {\n static fromProto(proto) {\n let m = new ValidateCrmObjectResponseValidationError();\n m = Object.assign(m, proto);\n if (proto.severity) {\n m.severity = enumStringToValue$5(ValidateCrmObjectResponseValidationErrorSeverity, proto.severity);\n }\n if (proto.details) {\n m.details = ValidateCrmObjectResponseValidationErrorDetails.fromProto(proto.details);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.ruleId !== 'undefined') {\n toReturn['ruleId'] = this.ruleId;\n }\n if (typeof this.message !== 'undefined') {\n toReturn['message'] = this.message;\n }\n if (typeof this.severity !== 'undefined') {\n toReturn['severity'] = this.severity;\n }\n if (typeof this.details !== 'undefined' && this.details !== null) {\n toReturn['details'] = 'toApiJson' in this.details ? this.details.toApiJson() : this.details;\n }\n return toReturn;\n }\n}\nclass ValidateCrmObjectResponseValidationErrorDetails {\n static fromProto(proto) {\n let m = new ValidateCrmObjectResponseValidationErrorDetails();\n m = Object.assign(m, proto);\n if (proto.uniquenessCheck) {\n m.uniquenessCheck = ValidateCrmObjectResponseUniquenessCheck.fromProto(proto.uniquenessCheck);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.uniquenessCheck !== 'undefined' && this.uniquenessCheck !== null) {\n toReturn['uniquenessCheck'] = 'toApiJson' in this.uniquenessCheck ? this.uniquenessCheck.toApiJson() : this.uniquenessCheck;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$4(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass DeleteObjectRequest {\n static fromProto(proto) {\n let m = new DeleteObjectRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.integrationId !== 'undefined') {\n toReturn['integrationId'] = this.integrationId;\n }\n if (typeof this.jsonData !== 'undefined') {\n toReturn['jsonData'] = this.jsonData;\n }\n return toReturn;\n }\n}\nclass ImportFromJSONRequest {\n static fromProto(proto) {\n let m = new ImportFromJSONRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.crmObjectType !== 'undefined') {\n toReturn['crmObjectType'] = this.crmObjectType;\n }\n if (typeof this.crmObjectSubtype !== 'undefined') {\n toReturn['crmObjectSubtype'] = this.crmObjectSubtype;\n }\n if (typeof this.existingRecordChecks !== 'undefined') {\n toReturn['existingRecordChecks'] = this.existingRecordChecks;\n }\n if (typeof this.fieldData !== 'undefined') {\n toReturn['fieldData'] = this.fieldData;\n }\n if (typeof this.readMask !== 'undefined') {\n toReturn['readMask'] = this.readMask;\n }\n return toReturn;\n }\n}\nclass ImportFromJSONResponse {\n static fromProto(proto) {\n let m = new ImportFromJSONResponse();\n m = Object.assign(m, proto);\n if (proto.fields) {\n m.fields = proto.fields.map(FieldValue.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.crmObjectId !== 'undefined') {\n toReturn['crmObjectId'] = this.crmObjectId;\n }\n if (typeof this.fields !== 'undefined' && this.fields !== null) {\n toReturn['fields'] = 'toApiJson' in this.fields ? this.fields.toApiJson() : this.fields;\n }\n return toReturn;\n }\n}\nclass UpsertObjectResponseMultiIngestionResponse {\n static fromProto(proto) {\n let m = new UpsertObjectResponseMultiIngestionResponse();\n m = Object.assign(m, proto);\n if (proto.workflowStatus) {\n m.workflowStatus = enumStringToValue$4(WorkflowStatus, proto.workflowStatus);\n }\n if (proto.result) {\n m.result = UpsertObjectResponseMultiIngestionResult.fromProto(proto.result);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.workflowStatus !== 'undefined') {\n toReturn['workflowStatus'] = this.workflowStatus;\n }\n if (typeof this.result !== 'undefined' && this.result !== null) {\n toReturn['result'] = 'toApiJson' in this.result ? this.result.toApiJson() : this.result;\n }\n if (typeof this.workflowId !== 'undefined') {\n toReturn['workflowId'] = this.workflowId;\n }\n return toReturn;\n }\n}\nclass UpsertObjectResponseMultiIngestionResult {\n static fromProto(proto) {\n let m = new UpsertObjectResponseMultiIngestionResult();\n m = Object.assign(m, proto);\n if (proto.nestedObjects) {\n m.nestedObjects = proto.nestedObjects.map(UpsertObjectResponseNestedObject.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.crmObjectId !== 'undefined') {\n toReturn['crmObjectId'] = this.crmObjectId;\n }\n if (typeof this.nestedObjects !== 'undefined' && this.nestedObjects !== null) {\n toReturn['nestedObjects'] = 'toApiJson' in this.nestedObjects ? this.nestedObjects.toApiJson() : this.nestedObjects;\n }\n return toReturn;\n }\n}\nclass UpsertObjectResponseNestedObject {\n static fromProto(proto) {\n let m = new UpsertObjectResponseNestedObject();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.crmObjectId !== 'undefined') {\n toReturn['crmObjectId'] = this.crmObjectId;\n }\n if (typeof this.objectType !== 'undefined') {\n toReturn['objectType'] = this.objectType;\n }\n return toReturn;\n }\n}\nclass UpsertObjectRequest {\n static fromProto(proto) {\n let m = new UpsertObjectRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.integrationId !== 'undefined') {\n toReturn['integrationId'] = this.integrationId;\n }\n if (typeof this.jsonData !== 'undefined') {\n toReturn['jsonData'] = this.jsonData;\n }\n return toReturn;\n }\n}\nclass UpsertObjectResponse {\n static fromProto(proto) {\n let m = new UpsertObjectResponse();\n m = Object.assign(m, proto);\n if (proto.multiIngestionResponse) {\n m.multiIngestionResponse = UpsertObjectResponseMultiIngestionResponse.fromProto(proto.multiIngestionResponse);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.crmObjectId !== 'undefined') {\n toReturn['crmObjectId'] = this.crmObjectId;\n }\n if (typeof this.multiIngestionResponse !== 'undefined' && this.multiIngestionResponse !== null) {\n toReturn['multiIngestionResponse'] = 'toApiJson' in this.multiIngestionResponse ? this.multiIngestionResponse.toApiJson() : this.multiIngestionResponse;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AddContactAsIamUserForCompanyRequest {\n static fromProto(proto) {\n let m = new AddContactAsIamUserForCompanyRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.contactId !== 'undefined') {\n toReturn['contactId'] = this.contactId;\n }\n if (typeof this.companyId !== 'undefined') {\n toReturn['companyId'] = this.companyId;\n }\n if (typeof this.sendWelcomeEmail !== 'undefined') {\n toReturn['sendWelcomeEmail'] = this.sendWelcomeEmail;\n }\n return toReturn;\n }\n}\nclass AddContactAsIamUserForCompanyStatusResponse {\n static fromProto(proto) {\n let m = new AddContactAsIamUserForCompanyStatusResponse();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue$3(AddContactAsIamUserForCompanyStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nclass CreateAccountGroupForCompanyRequest {\n static fromProto(proto) {\n let m = new CreateAccountGroupForCompanyRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.companyId !== 'undefined') {\n toReturn['companyId'] = this.companyId;\n }\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n return toReturn;\n }\n}\nclass GetAccountGroupForCompanyRequest {\n static fromProto(proto) {\n let m = new GetAccountGroupForCompanyRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.companyId !== 'undefined') {\n toReturn['companyId'] = this.companyId;\n }\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n return toReturn;\n }\n}\nclass GetAccountGroupForCompanyResponse {\n static fromProto(proto) {\n let m = new GetAccountGroupForCompanyResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass GetCreateAccountGroupForCompanyStatusRequest {\n static fromProto(proto) {\n let m = new GetCreateAccountGroupForCompanyStatusRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.companyId !== 'undefined') {\n toReturn['companyId'] = this.companyId;\n }\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n return toReturn;\n }\n}\nclass GetCreateAccountGroupForCompanyStatusResponse {\n static fromProto(proto) {\n let m = new GetCreateAccountGroupForCompanyStatusResponse();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue$3(CreateAccountGroupForCompanyStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass GetWebsiteActivityForVisitorRequest {\n static fromProto(proto) {\n let m = new GetWebsiteActivityForVisitorRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.visitorId !== 'undefined') {\n toReturn['visitorId'] = this.visitorId;\n }\n return toReturn;\n }\n}\nclass GetWebsiteActivityForVisitorResponse {\n static fromProto(proto) {\n let m = new GetWebsiteActivityForVisitorResponse();\n m = Object.assign(m, proto);\n if (proto.pageView) {\n m.pageView = PageView.fromProto(proto.pageView);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pageView !== 'undefined' && this.pageView !== null) {\n toReturn['pageView'] = 'toApiJson' in this.pageView ? this.pageView.toApiJson() : this.pageView;\n }\n return toReturn;\n }\n}\nclass InferCompanyCategoriesRequest {\n static fromProto(proto) {\n let m = new InferCompanyCategoriesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.companyId !== 'undefined') {\n toReturn['companyId'] = this.companyId;\n }\n return toReturn;\n }\n}\nclass IsContactIamUserForCompanyRequest {\n static fromProto(proto) {\n let m = new IsContactIamUserForCompanyRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.contactId !== 'undefined') {\n toReturn['contactId'] = this.contactId;\n }\n if (typeof this.companyId !== 'undefined') {\n toReturn['companyId'] = this.companyId;\n }\n return toReturn;\n }\n}\nclass IsContactIamUserForCompanyResponse {\n static fromProto(proto) {\n let m = new IsContactIamUserForCompanyResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.isIamUser !== 'undefined') {\n toReturn['isIamUser'] = this.isIamUser;\n }\n return toReturn;\n }\n}\nclass PageView {\n static fromProto(proto) {\n let m = new PageView();\n m = Object.assign(m, proto);\n if (proto.timestamp) {\n m.timestamp = new Date(proto.timestamp);\n }\n if (proto.utmAttributes) {\n m.utmAttributes = UTMAttributes.fromProto(proto.utmAttributes);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.timestamp !== 'undefined' && this.timestamp !== null) {\n toReturn['timestamp'] = 'toApiJson' in this.timestamp ? this.timestamp.toApiJson() : this.timestamp;\n }\n if (typeof this.utmAttributes !== 'undefined' && this.utmAttributes !== null) {\n toReturn['utmAttributes'] = 'toApiJson' in this.utmAttributes ? this.utmAttributes.toApiJson() : this.utmAttributes;\n }\n if (typeof this.referrer !== 'undefined') {\n toReturn['referrer'] = this.referrer;\n }\n if (typeof this.referringDomain !== 'undefined') {\n toReturn['referringDomain'] = this.referringDomain;\n }\n return toReturn;\n }\n}\nclass RemoveContactAsIamUserForCompanyRequest {\n static fromProto(proto) {\n let m = new RemoveContactAsIamUserForCompanyRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.contactId !== 'undefined') {\n toReturn['contactId'] = this.contactId;\n }\n if (typeof this.companyId !== 'undefined') {\n toReturn['companyId'] = this.companyId;\n }\n return toReturn;\n }\n}\nclass UTMAttributes {\n static fromProto(proto) {\n let m = new UTMAttributes();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.utmCampaign !== 'undefined') {\n toReturn['utmCampaign'] = this.utmCampaign;\n }\n if (typeof this.utmMedium !== 'undefined') {\n toReturn['utmMedium'] = this.utmMedium;\n }\n if (typeof this.utmSource !== 'undefined') {\n toReturn['utmSource'] = this.utmSource;\n }\n if (typeof this.utmContent !== 'undefined') {\n toReturn['utmContent'] = this.utmContent;\n }\n if (typeof this.utmTerm !== 'undefined') {\n toReturn['utmTerm'] = this.utmTerm;\n }\n if (typeof this.gclid !== 'undefined') {\n toReturn['gclid'] = this.gclid;\n }\n if (typeof this.fbclid !== 'undefined') {\n toReturn['fbclid'] = this.fbclid;\n }\n if (typeof this.msclkid !== 'undefined') {\n toReturn['msclkid'] = this.msclkid;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass GetAISummaryForCRMObjectRequest {\n static fromProto(proto) {\n let m = new GetAISummaryForCRMObjectRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.crmObjectNamespace !== 'undefined') {\n toReturn['crmObjectNamespace'] = this.crmObjectNamespace;\n }\n if (typeof this.crmObjectType !== 'undefined') {\n toReturn['crmObjectType'] = this.crmObjectType;\n }\n if (typeof this.crmObjectId !== 'undefined') {\n toReturn['crmObjectId'] = this.crmObjectId;\n }\n if (typeof this.language !== 'undefined') {\n toReturn['language'] = this.language;\n }\n if (typeof this.regenerateSummary !== 'undefined') {\n toReturn['regenerateSummary'] = this.regenerateSummary;\n }\n return toReturn;\n }\n}\nclass GetAISummaryForCRMObjectResponse {\n static fromProto(proto) {\n let m = new GetAISummaryForCRMObjectResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.response !== 'undefined') {\n toReturn['response'] = this.response;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass StartManualAutomationsRequestStartAutomationCriteria {\n static fromProto(proto) {\n let m = new StartManualAutomationsRequestStartAutomationCriteria();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = FilterGroup.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.objectType !== 'undefined') {\n toReturn['objectType'] = this.objectType;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass StartManualAutomationsRequestStartAutomationPayload {\n static fromProto(proto) {\n let m = new StartManualAutomationsRequestStartAutomationPayload();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.data !== 'undefined') {\n toReturn['data'] = this.data;\n }\n return toReturn;\n }\n}\nclass StartManualAutomationsRequest {\n static fromProto(proto) {\n let m = new StartManualAutomationsRequest();\n m = Object.assign(m, proto);\n if (proto.payload) {\n m.payload = StartManualAutomationsRequestStartAutomationPayload.fromProto(proto.payload);\n }\n if (proto.criteria) {\n m.criteria = StartManualAutomationsRequestStartAutomationCriteria.fromProto(proto.criteria);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.automationId !== 'undefined') {\n toReturn['automationId'] = this.automationId;\n }\n if (typeof this.payload !== 'undefined' && this.payload !== null) {\n toReturn['payload'] = 'toApiJson' in this.payload ? this.payload.toApiJson() : this.payload;\n }\n if (typeof this.criteria !== 'undefined' && this.criteria !== null) {\n toReturn['criteria'] = 'toApiJson' in this.criteria ? this.criteria.toApiJson() : this.criteria;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'crm-integrations-api.vendasta-local.com',\n 'test': '',\n 'demo': 'crm-integrations-demo.apigateway.co',\n 'prod': 'crm-integrations-prod.apigateway.co',\n 'production': 'crm-integrations-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet CrmAIApiService = /*#__PURE__*/(() => {\n class CrmAIApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getAiSummaryForCrmObject(r) {\n const request = r.toApiJson ? r : new GetAISummaryForCRMObjectRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.CrmAIService/GetAISummaryForCRMObject\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetAISummaryForCRMObjectResponse.fromProto(resp)));\n }\n }\n CrmAIApiService.ɵfac = function CrmAIApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CrmAIApiService)();\n };\n CrmAIApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CrmAIApiService,\n factory: CrmAIApiService.ɵfac,\n providedIn: 'root'\n });\n return CrmAIApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet CrmAutomationApiService = /*#__PURE__*/(() => {\n class CrmAutomationApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n startManualAutomations(r) {\n const request = r.toApiJson ? r : new StartManualAutomationsRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.CrmAutomationService/StartManualAutomations\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n CrmAutomationApiService.ɵfac = function CrmAutomationApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CrmAutomationApiService)();\n };\n CrmAutomationApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CrmAutomationApiService,\n factory: CrmAutomationApiService.ɵfac,\n providedIn: 'root'\n });\n return CrmAutomationApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet DataIngestionApiService = /*#__PURE__*/(() => {\n class DataIngestionApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n upsertObject(r) {\n const request = r.toApiJson ? r : new UpsertObjectRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.DataIngestionService/UpsertObject\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpsertObjectResponse.fromProto(resp)));\n }\n deleteObject(r) {\n const request = r.toApiJson ? r : new DeleteObjectRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.DataIngestionService/DeleteObject\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n importFromJson(r) {\n const request = r.toApiJson ? r : new ImportFromJSONRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.DataIngestionService/ImportFromJSON\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ImportFromJSONResponse.fromProto(resp)));\n }\n }\n DataIngestionApiService.ɵfac = function DataIngestionApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataIngestionApiService)();\n };\n DataIngestionApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DataIngestionApiService,\n factory: DataIngestionApiService.ɵfac,\n providedIn: 'root'\n });\n return DataIngestionApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet IntegrationApiService = /*#__PURE__*/(() => {\n class IntegrationApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createIntegration(r) {\n const request = r.toApiJson ? r : new CreateIntegrationRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.IntegrationService/CreateIntegration\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateIntegrationResponse.fromProto(resp)));\n }\n updateIntegration(r) {\n const request = r.toApiJson ? r : new UpdateIntegrationRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.IntegrationService/UpdateIntegration\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteIntegration(r) {\n const request = r.toApiJson ? r : new DeleteIntegrationRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.IntegrationService/DeleteIntegration\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getMultiIntegration(r) {\n const request = r.toApiJson ? r : new GetMultiIntegrationRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.IntegrationService/GetMultiIntegration\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiIntegrationResponse.fromProto(resp)));\n }\n }\n IntegrationApiService.ɵfac = function IntegrationApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || IntegrationApiService)();\n };\n IntegrationApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: IntegrationApiService,\n factory: IntegrationApiService.ɵfac,\n providedIn: 'root'\n });\n return IntegrationApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PlatformApiService = /*#__PURE__*/(() => {\n class PlatformApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createAccountGroupForCompany(r) {\n const request = r.toApiJson ? r : new CreateAccountGroupForCompanyRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.PlatformService/CreateAccountGroupForCompany\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getCreateAccountGroupForCompanyStatus(r) {\n const request = r.toApiJson ? r : new GetCreateAccountGroupForCompanyStatusRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.PlatformService/GetCreateAccountGroupForCompanyStatus\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetCreateAccountGroupForCompanyStatusResponse.fromProto(resp)));\n }\n getAccountGroupForCompany(r) {\n const request = r.toApiJson ? r : new GetAccountGroupForCompanyRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.PlatformService/GetAccountGroupForCompany\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetAccountGroupForCompanyResponse.fromProto(resp)));\n }\n addContactAsIamUserForCompany(r) {\n const request = r.toApiJson ? r : new AddContactAsIamUserForCompanyRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.PlatformService/AddContactAsIamUserForCompany\", request.toApiJson(), this.apiOptions()).pipe(map(resp => AddContactAsIamUserForCompanyStatusResponse.fromProto(resp)));\n }\n isContactIamUserForCompany(r) {\n const request = r.toApiJson ? r : new IsContactIamUserForCompanyRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.PlatformService/IsContactIamUserForCompany\", request.toApiJson(), this.apiOptions()).pipe(map(resp => IsContactIamUserForCompanyResponse.fromProto(resp)));\n }\n removeContactAsIamUserForCompany(r) {\n const request = r.toApiJson ? r : new RemoveContactAsIamUserForCompanyRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.PlatformService/RemoveContactAsIamUserForCompany\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getWebsiteActivityForVisitor(r) {\n const request = r.toApiJson ? r : new GetWebsiteActivityForVisitorRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.PlatformService/GetWebsiteActivityForVisitor\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetWebsiteActivityForVisitorResponse.fromProto(resp)));\n }\n inferCompanyCategories(r) {\n const request = r.toApiJson ? r : new InferCompanyCategoriesRequest(r);\n return this.http.post(this._host + \"/crm_integrations.v1.PlatformService/InferCompanyCategories\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n PlatformApiService.ɵfac = function PlatformApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PlatformApiService)();\n };\n PlatformApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PlatformApiService,\n factory: PlatformApiService.ɵfac,\n providedIn: 'root'\n });\n return PlatformApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\n\n// MANUALLY CREATED FILE\n// Don't delete this by mistake when you update the SDK with mscli!\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Access, AddContactAsIamUserForCompanyRequest, AddContactAsIamUserForCompanyStatus, AddContactAsIamUserForCompanyStatusResponse, ArchiveFieldSchemaRequest, CreateAccountGroupForCompanyRequest, CreateAccountGroupForCompanyStatus, CreateCrmObjectRequest, CreateCrmObjectResponse, CreateFieldSchemaRequest, CreateFieldSchemaResponse, CreateIntegrationRequest, CreateIntegrationResponse, CrmAIApiService, CrmAutomationApiService, CrmObject, CrmObjectSearch, Currency, DataIngestionApiService, DateDefault, DeleteCrmObjectRequest, DeleteIntegrationRequest, DeleteObjectRequest, DropdownOption, FieldMapping, FieldMask, FieldSchema, FieldType, FieldValue, Filter, FilterGroup, FilterGroupOperator, FilterOperator, FilterType, FilterValue, Geopoint, GetAISummaryForCRMObjectRequest, GetAISummaryForCRMObjectResponse, GetAccountGroupForCompanyRequest, GetAccountGroupForCompanyResponse, GetCreateAccountGroupForCompanyStatusRequest, GetCreateAccountGroupForCompanyStatusResponse, GetMultiCrmObjectRequest, GetMultiCrmObjectResponse, GetMultiFieldSchemaRequest, GetMultiFieldSchemaResponse, GetMultiIntegrationRequest, GetMultiIntegrationResponse, GetOpportunityValueSummaryRequest, GetOpportunityValueSummaryResponse, GetOpportunityValueSummaryResponseAmounts, GetOpportunityValueSummaryResponseStageAmounts, GetWebsiteActivityForVisitorRequest, GetWebsiteActivityForVisitorResponse, HostService, ImportFromJSONRequest, ImportFromJSONResponse, InferCompanyCategoriesRequest, Integration, IntegrationApiService, IsContactIamUserForCompanyRequest, IsContactIamUserForCompanyResponse, ListCrmObjectsRequest, ListCrmObjectsResponse, ListFieldOptionsRequest, ListFieldOptionsResponse, ListFieldSchemaRequest, ListFieldSchemaRequestFilters, ListFieldSchemaResponse, ListMultiLocationFieldOptionsRequest, ListMultiLocationFieldOptionsResponse, MappingType, MergeStrategy, MergeStrategyMergeConfig, MergeStrategyMergeConfigDateOverwriteConfig, MergeStrategyType, NestedIntegration, NullValue, ObjectProjectionFilter, PageView, PagedRequestOptions, PagedResponseMetadata, Phone, PhoneFields, PlatformApiService, ProjectionFilterType, RemoveContactAsIamUserForCompanyRequest, SortBy, SortDirection, StartBulkCompanyCreateRequest, StartBulkCompanyCreateResponse, StartManualAutomationsRequest, StartManualAutomationsRequestStartAutomationCriteria, StartManualAutomationsRequestStartAutomationPayload, StringList, UTMAttributes, UnarchiveFieldSchemaRequest, UpdateCrmObjectRequest, UpdateFieldSchemaRequest, UpdateIntegrationRequest, UpsertObjectRequest, UpsertObjectResponse, UpsertObjectResponseMultiIngestionResponse, UpsertObjectResponseMultiIngestionResult, UpsertObjectResponseNestedObject, ValidateCrmObjectRequest, ValidateCrmObjectResponse, ValidateCrmObjectResponseFieldUniqueness, ValidateCrmObjectResponseUniquenessCheck, ValidateCrmObjectResponseValidationError, ValidateCrmObjectResponseValidationErrorDetails, ValidateCrmObjectResponseValidationErrorSeverity, WorkflowStatus };\n","import {\n AddContactAsIamUserForCompanyRequest,\n AddContactAsIamUserForCompanyStatus,\n CreateAccountGroupForCompanyRequest,\n CreateAccountGroupForCompanyStatus,\n GetCreateAccountGroupForCompanyStatusRequest,\n PlatformApiService,\n RemoveContactAsIamUserForCompanyRequest,\n} from '@vendasta/crm-integrations';\nimport { Inject, Injectable } from '@angular/core';\nimport { CrmDependencies, CrmInjectionToken } from '../tokens-and-interfaces';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, switchMap, take } from 'rxjs/operators';\nimport { IsContactIamUserForCompanyRequest } from '@vendasta/crm-integrations';\n\nexport interface CompanyAccountGroupStatus {\n status: CreateAccountGroupForCompanyStatus;\n accountGroupId: string;\n}\n\n@Injectable()\nexport class CrmPlatformApiService {\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private platformAPIService: PlatformApiService,\n ) {}\n\n createAccountGroupForCompany(companyId: string): Observable {\n return this.config.namespace$.pipe(\n switchMap((namespace) => {\n const request = {\n namespace: namespace,\n companyId: companyId,\n } as CreateAccountGroupForCompanyRequest;\n return this.platformAPIService.createAccountGroupForCompany(request);\n }),\n map((response) => response.ok),\n take(1),\n );\n }\n\n getCreateAccountGroupForCompanyStatus(companyId: string): Observable {\n return this.config.namespace$.pipe(\n switchMap((namespace) => {\n const request = {\n namespace: namespace,\n companyId: companyId,\n } as GetCreateAccountGroupForCompanyStatusRequest;\n return this.platformAPIService.getCreateAccountGroupForCompanyStatus(request);\n }),\n map((response) => {\n return { status: response.status, accountGroupId: response.accountGroupId };\n }),\n take(1),\n );\n }\n\n getAccountGroupForCompany(companyId: string): Observable {\n return this.config.namespace$.pipe(\n switchMap((namespace) => {\n const request = {\n namespace: namespace,\n companyId: companyId,\n } as GetCreateAccountGroupForCompanyStatusRequest;\n return this.platformAPIService.getAccountGroupForCompany(request);\n }),\n map((response) => response.accountGroupId),\n take(1),\n );\n }\n\n addContactAsIamUserForCompany(\n contactId: string,\n companyId: string,\n sendWelcomeEmail: boolean,\n ): Observable {\n return this.config.namespace$.pipe(\n switchMap((namespace) => {\n const request = {\n namespace: namespace,\n contactId: contactId,\n companyId: companyId,\n sendWelcomeEmail: sendWelcomeEmail,\n } as AddContactAsIamUserForCompanyRequest;\n return this.platformAPIService.addContactAsIamUserForCompany(request);\n }),\n catchError(() => {\n return of({\n status: AddContactAsIamUserForCompanyStatus.ADD_CONTACT_AS_IAM_USER_FOR_COMPANY_STATUS_FAILED,\n });\n }),\n map((response) => response.status),\n take(1),\n );\n }\n\n removeContactAsIamUserForCompany(contactId: string, companyId: string): Observable {\n return this.config.namespace$.pipe(\n switchMap((namespace) => {\n const request = {\n namespace: namespace,\n contactId: contactId,\n companyId: companyId,\n } as RemoveContactAsIamUserForCompanyRequest;\n return this.platformAPIService.removeContactAsIamUserForCompany(request);\n }),\n map((response) => response.ok),\n take(1),\n );\n }\n\n isContactIamUserForCompany(contactId: string, companyId: string): Observable {\n return this.config.namespace$.pipe(\n switchMap((namespace) => {\n const request = {\n namespace: namespace,\n contactId: contactId,\n companyId: companyId,\n } as IsContactIamUserForCompanyRequest;\n return this.platformAPIService.isContactIamUserForCompany(request);\n }),\n map((response) => {\n return !!response.isIamUser;\n }),\n take(1),\n );\n }\n}\n","import { Inject, Injectable, signal } from '@angular/core';\nimport { EMPTY, Observable, retry, take } from 'rxjs';\nimport { CrmInjectionToken, CrmDependencies, ProfileCard } from '../tokens-and-interfaces';\nimport { SNACKBAR_DURATION } from '../constants';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { map, switchMap } from 'rxjs/operators';\nimport { CreateAccountGroupForCompanyStatus } from '@vendasta/crm-integrations';\nimport { CompanyAccountGroupStatus } from './platform-api.service';\nimport { CrmPlatformApiService } from './platform-api.service';\n\n@Injectable()\nexport class CompanyProfileCardsPanelService {\n public readonly companyProfileCards$: Observable;\n public loadingAccountGroup = signal(false);\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private platformAPIService: CrmPlatformApiService,\n private snackbarService: SnackbarService,\n ) {\n this.companyProfileCards$ = this.config.company?.profileCards$ ?? EMPTY;\n }\n\n justInTimeAccountGroupCreation(companyId: string, afterCreatedCallback: (accountGroupId: string) => void): void {\n this.loadingAccountGroup.set(true);\n this.createAccountGroupForCompany(companyId)\n .pipe(take(1))\n .subscribe({\n next: (accountGroupId) => {\n if (accountGroupId.length > 0) {\n afterCreatedCallback(accountGroupId);\n }\n this.loadingAccountGroup.set(false);\n },\n error: () => {\n this.snackbarService.openErrorSnack('ASSOCIATIONS.COMPANY.ERROR', {\n duration: SNACKBAR_DURATION,\n });\n this.loadingAccountGroup.set(false);\n },\n });\n }\n\n //todo: make private function.\n createAccountGroupForCompany(companyId: string): Observable {\n return this.platformAPIService.createAccountGroupForCompany(companyId).pipe(\n switchMap(() => this.waitForAccountGroupUpdate(companyId)),\n map((accountStatus) => {\n if (\n accountStatus.status === CreateAccountGroupForCompanyStatus.CREATE_ACCOUNT_GROUP_FOR_COMPANY_STATUS_SUCCEEDED\n ) {\n return accountStatus.accountGroupId;\n } else {\n throw new Error('Failed to create account group for company');\n }\n }),\n );\n }\n\n private waitForAccountGroupUpdate(companyId: string): Observable {\n return this.platformAPIService.getCreateAccountGroupForCompanyStatus(companyId).pipe(\n map((accountStatus) => {\n if (\n accountStatus.status === CreateAccountGroupForCompanyStatus.CREATE_ACCOUNT_GROUP_FOR_COMPANY_STATUS_SUCCEEDED\n ) {\n // success. Stop retrying.\n return { status: accountStatus.status, accountGroupId: accountStatus.accountGroupId };\n } else if (\n accountStatus.status === CreateAccountGroupForCompanyStatus.CREATE_ACCOUNT_GROUP_FOR_COMPANY_STATUS_FAILED\n ) {\n // failure. Stop retrying.\n return { status: accountStatus.status, accountGroupId: '' };\n }\n // throw error to poll again\n throw false;\n }),\n retry({ delay: 1000 }),\n );\n }\n}\n","import { Component, DestroyRef, EventEmitter, Input, Output, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CrmAssociationService } from '../../../shared-services/crm-services/crm-object-service/crm-association.service';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { GalaxyTagsModule } from '@vendasta/galaxy/tags';\nimport { catchError, debounceTime, map, Observable, of, switchMap, tap } from 'rxjs';\nimport { toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { DEFAULT_TAG_SEARCH_SIZE, RESERVED_TAGS, SEARCH_DEBOUNCE_MS } from '../../../constants';\n\n@Component({\n selector: 'crm-edit-association-tags',\n imports: [\n CommonModule,\n TranslateModule,\n MatDialogModule,\n MatButtonModule,\n GalaxyTagsModule,\n ReactiveFormsModule,\n GalaxyFormFieldModule,\n ],\n templateUrl: './edit-association-tags.component.html',\n styleUrls: ['./edit-association-tags.component.scss'],\n})\nexport class EditAssociationTagsComponent {\n @Input() set tags(tags: string[]) {\n this.tagsControl.setValue(tags);\n }\n @Input({ required: true }) associationType: string;\n @Output() tagsChanged = new EventEmitter();\n\n tagsControl = new FormControl([]);\n\n searchTextChanged = signal('');\n filteredTags$ = toObservable(this.searchTextChanged).pipe(\n takeUntilDestroyed(this.destroyRef),\n debounceTime(SEARCH_DEBOUNCE_MS),\n switchMap((searchText) => this.listTags(searchText)),\n catchError(() => {\n return of([]);\n }),\n map((tags) => {\n return tags.filter((tag) => !RESERVED_TAGS.includes(tag?.toLowerCase()));\n }),\n );\n\n constructor(\n private readonly destroyRef: DestroyRef,\n private readonly crmAssociationService: CrmAssociationService,\n ) {\n this.tagsControl.valueChanges\n .pipe(\n takeUntilDestroyed(),\n tap((tags) => this.tagsChanged.emit(tags)),\n )\n .subscribe();\n }\n\n private listTags(value: string): Observable {\n return this.crmAssociationService.listAssociationFieldOptions(\n this.associationType,\n 'tags',\n DEFAULT_TAG_SEARCH_SIZE,\n value,\n );\n }\n}\n","\n {{ 'ASSOCIATIONS.MODAL.TITLE_TAGS' | translate }}\n {{ 'ASSOCIATIONS.MODAL.DESCRIPTION_TAGS' | translate }}\n \n\n","import { Component, Inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CrmAssociationService } from '../../../shared-services/crm-services/crm-object-service/crm-association.service';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { EditAssociationTagsComponent } from '../edit-association-tags/edit-association-tags.component';\nimport { map, switchMap } from 'rxjs';\nimport { PRIMARY_TAG, RESERVED_TAGS, SNACKBAR_DURATION } from '../../../constants';\n\nexport interface EditAssociationData {\n associationId: string;\n associationName: string;\n}\n\n@Component({\n selector: 'crm-edit-association-dialog',\n imports: [CommonModule, TranslateModule, MatDialogModule, MatButtonModule, EditAssociationTagsComponent],\n templateUrl: './edit-association-dialog.component.html',\n styleUrls: ['./edit-association-dialog.component.scss'],\n})\nexport class EditAssociationDialogComponent {\n private initialAssociation$ = this.crmAssociationService.getAssociation(this.data.associationId);\n private isPrimary$ = this.initialAssociation$.pipe(\n map((association) => (association?.tags ?? []).map((tag) => tag?.tagValue ?? '').filter((tag) => tag)),\n map((tags) => tags.includes(PRIMARY_TAG)),\n );\n initialTags$ = this.initialAssociation$.pipe(\n map((association) => (association?.tags ?? []).map((tag) => tag?.tagValue ?? '').filter((tag) => tag)),\n map((tags) => tags.filter((t) => !RESERVED_TAGS.includes(t.toLowerCase()))),\n );\n associationType$ = this.initialAssociation$.pipe(map((association) => association?.associationType ?? ''));\n tagsToSave: string[] = [];\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: EditAssociationData,\n private readonly crmAssociationService: CrmAssociationService,\n private readonly snackService: SnackbarService,\n ) {}\n\n save(): void {\n this.isPrimary$\n .pipe(\n switchMap((isPrimary) => {\n let tagsToSave = [...this.tagsToSave];\n if (isPrimary) {\n tagsToSave = [PRIMARY_TAG, ...tagsToSave];\n }\n return this.crmAssociationService.updateAssociationTags(this.data.associationId, tagsToSave);\n }),\n )\n .subscribe({\n next: () => {\n this.snackService.openSuccessSnack('ASSOCIATIONS.EDIT_ASSOCIATION_DIALOG.SUCCESS', {\n duration: SNACKBAR_DURATION,\n });\n this.dialogRef.close(true);\n },\n error: () => {\n this.snackService.openErrorSnack('ASSOCIATIONS.EDIT_ASSOCIATION_DIALOG.ERROR', {\n duration: SNACKBAR_DURATION,\n });\n },\n });\n }\n\n cancel(): void {\n this.dialogRef?.close();\n }\n\n tagsChanged(tags: string[]): void {\n this.tagsToSave = (tags || []).slice();\n }\n}\n","

\n {{ 'ASSOCIATIONS.EDIT_ASSOCIATION_DIALOG.TITLE' | translate }}\n

\n\n

{{ data.associationName }}

\n \n \n \n
\n\n \n \n\n","import { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport {\n EditAssociationData,\n EditAssociationDialogComponent,\n} from '../shared-components/association-panel-components/edit-association-dialog/edit-association-dialog.component';\nimport { Association, CrmAssociationService } from './crm-services/crm-object-service/crm-association.service';\nimport { CrmObjectService } from './crm-services/crm-object-service/crm-object.service';\nimport { Observable, switchMap, of, map, combineLatest, shareReplay } from 'rxjs';\nimport { CardData } from '../tokens-and-interfaces';\n\nexport function combineAssociationsWithChanges(associations: Association[], changes: Association[]): Association[] {\n const combinedData = [...associations];\n for (const updatedAssociation of changes) {\n const updatedAssociationIndex = combinedData.findIndex((a) => a.associationId === updatedAssociation.associationId);\n if (updatedAssociationIndex > -1) {\n combinedData[updatedAssociationIndex] = updatedAssociation;\n }\n }\n return [...combinedData];\n}\n\n@Injectable()\nexport class DefaultAssociationActionsService {\n constructor(\n private readonly dialog: MatDialog,\n private readonly associationService: CrmAssociationService,\n private readonly objectService: CrmObjectService,\n ) {}\n\n reloadAssociations(cardData: CardData): Observable {\n const association$ = this.associationService.getAssociation(cardData.associationId ?? '').pipe(shareReplay(1));\n const crmObject$ = association$.pipe(\n switchMap((association) => {\n switch (cardData.type) {\n case 'business':\n return this.objectService.getMultiObject('Company', [association.toId]);\n case 'user':\n return this.objectService.getMultiObject('Contact', [association.fromId]);\n default:\n return of({ crmObjects: [] });\n }\n }),\n map((response) => response?.crmObjects?.length > 0 && response.crmObjects[0]),\n );\n\n return combineLatest([association$, crmObject$]).pipe(\n map(([association, crmObject]) => ({\n associationId: association.associationId,\n associationType: association.associationType,\n tags: (association?.tags || []).map((tag) => tag.tagValue),\n associatedObject: crmObject,\n })),\n );\n }\n\n editTagsAction(cardData: CardData): Observable {\n let associationName = '';\n if (cardData.type === 'business') {\n associationName = cardData.businessName ?? '';\n } else if (cardData.type === 'user') {\n associationName = cardData.userName ?? '';\n }\n const dialogRef = this.dialog.open(EditAssociationDialogComponent, {\n data: {\n associationId: cardData.associationId,\n associationName: associationName,\n } as EditAssociationData,\n width: '500px',\n });\n return dialogRef.afterClosed().pipe(\n switchMap((success) => {\n if (success) {\n // associations have to be reloaded because list endpoint does not\n // immediately return the tags\n return this.reloadAssociations(cardData);\n }\n return of(null);\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { Properties } from 'posthog-js';\nimport { ObjectAssociationType, ObjectType } from '../tokens-and-interfaces';\nimport { GalaxyFilterInterface, GalaxyFilterOperator, GalaxyFilterType } from '@vendasta/galaxy/filter/chips';\n\n@Injectable()\nexport class CRMTrackingService {\n private eventName = 'crm';\n\n constructor(private readonly trackingService: ProductAnalyticsService) {}\n\n trackEvent(objectType: ObjectType | ObjectAssociationType, action: string, properties?: Properties): void {\n this.trackingService.trackEvent(\n this.eventName,\n `${this.eventName}-${objectType?.toLowerCase()}`,\n action,\n 0,\n properties,\n );\n }\n\n trackFilterUsage(objectType: ObjectType | ObjectAssociationType, filters: GalaxyFilterInterface[]): void {\n for (const filter of filters) {\n // only track filters that had explicit values specified for them, presets will only count if explicitly set or are empty/not empty from the start\n const valueLength = filter.values?.length || 0;\n if (\n valueLength === 0 &&\n ![GalaxyFilterOperator.FILTER_OPERATOR_IS_EMPTY, GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_EMPTY].includes(\n filter.operator,\n )\n ) {\n continue;\n }\n if (!filter?.fieldId) {\n continue;\n }\n // override filters and filters within the activity context don't have a filter type right now\n const filterType = filter.definition?.type ? GalaxyFilterType[filter.definition?.type] : 'FILTER_TYPE_UNKNOWN';\n this.trackEvent(objectType, 'selected-crm-filter', {\n filterType: filterType,\n filterOperator: GalaxyFilterOperator[filter.operator || GalaxyFilterOperator.FILTER_OPERATOR_INVALID],\n fieldId: filter.fieldId,\n filterId: filter.filterId,\n isPreset: filter.definition?.preset || false,\n // override filters always come without a name\n fieldName: filter.definition?.fieldName || 'Unknown',\n });\n }\n }\n}\n","import { TemplatePortal, ComponentPortal, DomPortal } from '@angular/cdk/portal';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\nexport type Portal = TemplatePortal | ComponentPortal | DomPortal;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SidePanelContentService {\n private activePortal$$ = new ReplaySubject(1);\n\n setContent(content: Portal) {\n this.activePortal$$.next(content);\n }\n\n getContent(): Observable {\n return this.activePortal$$.asObservable();\n }\n\n clearContent(): void {\n this.activePortal$$.next(null);\n }\n}\n","import { BehaviorSubject, catchError, Observable, of } from 'rxjs';\nimport { CrmObjectInterface, ListCrmObjectsRequestInterface, ListCrmObjectsResponseInterface } from '@vendasta/crm';\nimport { map, switchMap } from 'rxjs/operators';\nimport { CrmInjectionToken, CrmDependencies } from '../tokens-and-interfaces';\nimport { CrmObjectService } from './crm-services/crm-object-service/crm-object.service';\nimport { CrmFieldService, StandardIds } from './crm-services/field.service';\nimport { Inject, Injectable } from '@angular/core';\n\nexport interface CompanyDisplayName extends CrmObjectInterface {\n displayName: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CompanyFiltersService {\n searchTerm$$: BehaviorSubject = new BehaviorSubject('');\n\n constructor(\n private crmObjectService: CrmObjectService,\n private crmFieldService: CrmFieldService,\n @Inject(CrmInjectionToken) private readonly crmConfig: CrmDependencies,\n ) {}\n\n private listObjects(\n namespace: string,\n cursor: string,\n pageSize: number,\n search: string,\n ): Observable {\n const request: ListCrmObjectsRequestInterface = {\n namespace: namespace,\n pagingOptions: {\n cursor: cursor,\n pageSize: pageSize,\n },\n search: {\n searchTerm: search,\n },\n };\n return this.crmObjectService.listObjects('Company', request);\n }\n\n listReadableCompanies(searchTerm: string): Observable {\n return this.crmConfig.namespace$.pipe(\n switchMap((namespace) => this.listObjects(namespace, '', 10, searchTerm)),\n map((response) => this.getReadableParentCompanies(response.crmObjects || [])),\n catchError((error) => {\n console.error(error);\n return of([]);\n }),\n );\n }\n\n getReadableParentCompanies = (parentCompanies: CrmObjectInterface[]): CompanyDisplayName[] =>\n parentCompanies.map(\n (company) =>\n ({\n ...company,\n displayName: this.crmFieldService.getFieldValueFromCrmObject(company, StandardIds.CompanyName)?.stringValue,\n } as CompanyDisplayName),\n );\n\n getMultiCompany(companyIds: string[]): Observable {\n return this.crmObjectService.getMultiObject('Company', companyIds).pipe(\n map((response) => {\n if (!response || response?.crmObjects?.length === 0 || !response?.crmObjects?.[0].crmObjectId) {\n return {} as CompanyDisplayName[];\n }\n let crmObj: CrmObjectInterface[] = [];\n for (const crmObject of response.crmObjects) {\n crmObj = [...crmObj, crmObject];\n }\n return this.getReadableParentCompanies(crmObj);\n }),\n );\n }\n}\n","import { IAMService, User } from '@vendasta/iamv2';\nimport { Inject, Injectable } from '@angular/core';\nimport { combineLatest, map, Observable, of, ReplaySubject, startWith } from 'rxjs';\nimport { CrmDependencies, CrmInjectionToken, SimplifiedUser, UserWithDisplayName } from '../tokens-and-interfaces';\nimport { convertToReadableUsers, getMultiUsers } from '../utils';\nimport { catchError, debounceTime, distinctUntilChanged, shareReplay, switchMap } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Injectable()\nexport class ActivityAssigneeService {\n private readonly allUsers$$: ReplaySubject = new ReplaySubject(1);\n public readonly searchTerm$$ = new ReplaySubject(1);\n private readonly searchTerm$ = this.searchTerm$$.asObservable();\n public readonly allUsers$ = this.allUsers$$.asObservable();\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n @Inject(IAMService) private readonly iamService: IAMService,\n ) {\n this.searchTerm$\n .pipe(\n startWith(''),\n takeUntilDestroyed(),\n debounceTime(300),\n distinctUntilChanged(),\n switchMap((searchTerm) => this.config.services?.userService?.searchUsers?.(searchTerm) ?? of([])),\n map((users: SimplifiedUser[]) => convertToReadableUsers(users)),\n catchError((error) => {\n console.error(error);\n return of([]);\n }),\n )\n .subscribe((users) => {\n this.allUsers$$.next(users);\n });\n }\n\n getMultiUsers(userIds: string[]): Observable {\n const cachedUser$ = this.allUsers$.pipe(\n map((users) => {\n const userHashMap = new Map();\n userIds.forEach((userId) =>\n userHashMap.set(\n userId,\n users.find((u) => u.userId === userId),\n ),\n );\n return userHashMap;\n }),\n shareReplay(1),\n );\n\n const fetchedMissingUsers$ = cachedUser$.pipe(\n map((cachedUsers) => userIds.filter((userId) => cachedUsers.get(userId) === undefined)),\n switchMap((idsToGet) => {\n if (idsToGet.length === 0) {\n return of([] as User[]);\n }\n return getMultiUsers(idsToGet, this.config, this.iamService);\n }),\n catchError((error) => {\n console.error(error);\n return of([] as User[]);\n }),\n map((users) => convertToReadableUsers(users)),\n );\n\n return combineLatest([cachedUser$, fetchedMissingUsers$]).pipe(\n map(([cachedUsers, fetchedUsers]) => {\n fetchedUsers.forEach((user) => cachedUsers.set(user.userId, user));\n return [...cachedUsers.values()].filter(Boolean) as UserWithDisplayName[];\n }),\n );\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { CrmDependencies, CrmInjectionToken } from '../tokens-and-interfaces';\nimport { ScoringApiService } from '@vendasta/crm';\nimport { Observable, shareReplay } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n\n@Injectable()\nexport class ScoreService {\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private scoringApiService: ScoringApiService,\n ) {}\n\n private crmObjectId = '';\n setObjectId(objectId: string): void {\n this.crmObjectId = objectId;\n }\n\n getScoreForProfile$(fieldId: string): Observable {\n return this.getScore$(this.crmObjectId, fieldId);\n }\n\n getScoreForTableRow$(companyId: string, fieldId: string): Observable {\n return this.getScore$(companyId, fieldId);\n }\n\n private getScore$(companyId: string, fieldId: string): Observable {\n return this.config.namespace$.pipe(\n switchMap((namespace) => {\n return this.scoringApiService.getScore({\n namespace: namespace,\n scoringIdentifier: {\n crmObjectId: companyId,\n crmObjectType: 'Company',\n label: fieldId,\n },\n });\n }),\n map((response) => response?.score ?? null),\n shareReplay(1),\n );\n }\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { CrmObjectInterface } from '@vendasta/crm';\nimport { ObjectType } from '../tokens-and-interfaces';\nimport { SystemFieldIds } from './crm-services';\n\n@Injectable({ providedIn: 'root' })\nexport class CrmObjectManagementTableChangesService {\n private createdCrmObjects = signal(new Map());\n private updatedCrmObjects = signal(new Map());\n private deletedCrmObjectIds = signal(new Map());\n private changedCrmObjects = computed(() => {\n return {\n created: this.createdCrmObjects(),\n updated: this.updatedCrmObjects(),\n deleted: this.deletedCrmObjectIds(),\n };\n });\n\n getCrmObjectChanges() {\n return this.changedCrmObjects;\n }\n\n clearAllChanges(objectType?: ObjectType, objectSubtype?: string): void {\n const type = objectSubtype || objectType || null;\n this.clearCreatedCrmObjects(type);\n this.clearUpdatedCrmObjects(type);\n this.clearDeletedCrmObjectIds(type);\n }\n\n addCreatedCrmObject(objectType: ObjectType, crmObject: CrmObjectInterface, objectSubtype?: string): void {\n if (!crmObject) {\n return;\n }\n this.createDatesForPreview(objectType, crmObject);\n const type = objectSubtype || objectType;\n this.createdCrmObjects.update((createdCrmObjectsMap) => {\n const createdCrmObjects = createdCrmObjectsMap.get(type) || [];\n createdCrmObjects.push(crmObject);\n createdCrmObjectsMap.set(type, createdCrmObjects);\n return new Map(createdCrmObjectsMap);\n });\n }\n\n private clearCreatedCrmObjects(type: string | null): void {\n if (type) {\n this.createdCrmObjects.update((createdCrmObjectsMap) => {\n createdCrmObjectsMap.delete(type);\n return new Map(createdCrmObjectsMap);\n });\n } else {\n this.createdCrmObjects.set(new Map([]));\n }\n }\n\n addUpdatedCrmObject(objectType: ObjectType, crmObject: CrmObjectInterface, objectSubtype?: string): void {\n if (!crmObject) {\n return;\n }\n this.createDatesForPreview(objectType, crmObject);\n const type = objectSubtype || objectType;\n this.updatedCrmObjects.update((changedCrmObjectsMap) => {\n const changedCrmObjects = changedCrmObjectsMap.get(type) || [];\n const existingIndex = changedCrmObjects.findIndex((obj) => obj.crmObjectId === crmObject.crmObjectId);\n if (existingIndex !== -1) {\n changedCrmObjects[existingIndex] = crmObject;\n } else {\n changedCrmObjects.push(crmObject);\n }\n changedCrmObjectsMap.set(type, [...changedCrmObjects]);\n return new Map(changedCrmObjectsMap);\n });\n }\n\n private clearUpdatedCrmObjects(type: string | null): void {\n if (type) {\n this.updatedCrmObjects.update((updatedCrmObjectsMap) => {\n updatedCrmObjectsMap.delete(type);\n return new Map(updatedCrmObjectsMap);\n });\n } else {\n this.updatedCrmObjects.set(new Map());\n }\n }\n\n addDeletedCrmObjectId(objectType: ObjectType, crmObjectId: string, objectSubtype?: string): void {\n if (!crmObjectId) {\n return;\n }\n const type = objectSubtype || objectType;\n this.deletedCrmObjectIds.update((deletedCrmObjectIdsMap) => {\n const deletedCrmObjectIds = deletedCrmObjectIdsMap.get(type) || [];\n if (!deletedCrmObjectIds.includes(crmObjectId)) {\n deletedCrmObjectIdsMap.set(type, [...deletedCrmObjectIds, crmObjectId]);\n }\n return new Map(deletedCrmObjectIdsMap);\n });\n }\n\n private clearDeletedCrmObjectIds(type: string | null): void {\n if (type) {\n this.deletedCrmObjectIds.update((deletedCrmObjectIdsMap) => {\n deletedCrmObjectIdsMap.delete(type);\n return new Map(deletedCrmObjectIdsMap);\n });\n } else {\n this.deletedCrmObjectIds.set(new Map([]));\n }\n }\n\n private createDatesForPreview(objectType: ObjectType, crmObject: CrmObjectInterface): void {\n let objectCreatedFieldId: string;\n let objectUpdatedFieldId: string;\n switch (objectType) {\n case 'Contact':\n objectCreatedFieldId = SystemFieldIds.ContactCreated;\n objectUpdatedFieldId = SystemFieldIds.ContactUpdated;\n break;\n case 'Company':\n objectCreatedFieldId = SystemFieldIds.CompanyCreated;\n objectUpdatedFieldId = SystemFieldIds.CompanyUpdated;\n break;\n case 'Activity':\n objectCreatedFieldId = SystemFieldIds.ActivityCreated;\n objectUpdatedFieldId = SystemFieldIds.ActivityUpdated;\n break;\n case 'Opportunity':\n objectCreatedFieldId = SystemFieldIds.OpportunityCreated;\n objectUpdatedFieldId = SystemFieldIds.OpportunityUpdated;\n break;\n case 'CustomObject':\n objectCreatedFieldId = SystemFieldIds.CustomObjectCreated;\n objectUpdatedFieldId = SystemFieldIds.CustomObjectUpdated;\n break;\n }\n const changeTimestamp = new Date();\n // guarantee preview object will show proper dates for updated/created columns\n const createdDateIndex = crmObject.fields?.findIndex((f) => f.fieldId === objectCreatedFieldId) || -1;\n const updatedDateIndex = crmObject.fields?.findIndex((f) => f.fieldId === objectUpdatedFieldId) || -1;\n if (createdDateIndex !== -1 && !!crmObject?.fields && crmObject?.fields[createdDateIndex]?.dateValue === null) {\n crmObject.fields[createdDateIndex].dateValue = changeTimestamp;\n crmObject.created = changeTimestamp;\n } else if (createdDateIndex === -1 && !!crmObject?.fields) {\n crmObject.fields.push({\n fieldId: objectCreatedFieldId,\n externalId: objectCreatedFieldId,\n dateValue: changeTimestamp,\n });\n crmObject.created = changeTimestamp;\n }\n if (updatedDateIndex !== -1 && !!crmObject?.fields) {\n crmObject.fields[updatedDateIndex].dateValue = changeTimestamp;\n crmObject.updated = changeTimestamp;\n } else if (updatedDateIndex === -1 && !!crmObject?.fields) {\n crmObject.fields.push({\n fieldId: objectUpdatedFieldId,\n externalId: objectUpdatedFieldId,\n dateValue: changeTimestamp,\n });\n crmObject.updated = changeTimestamp;\n }\n }\n}\n","export * from './crm-services';\nexport * from './table-customization';\n\nexport * from './company-profile-cards-panel.service';\nexport * from './default-association-actions.service';\nexport * from './platform-api.service';\nexport { CRMTrackingService } from './page-analytics.service';\nexport { BrandingService } from './white-label.service';\nexport { SidePanelContentService } from './content-injector/side-panel-content.service';\nexport * from './company-filters.service';\nexport * from './activity-assignee.service';\nexport { CompanyContactCacheService } from './company-contact-cache.service';\nexport { ScoreService } from './score.service';\nexport { RestrictedGroupService } from './restricted-group.service';\nexport { getAssociationType } from './association.utils';\nexport { CrmObjectDisplayService } from './crm-object-display.service';\nexport { CrmObjectManagementTableChangesService } from './crm-object-management-table-changes.service';\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject } from '@angular/core';\nimport { BlankValueComponent, CustomCellComponent } from '@vendasta/galaxy/table';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { map, switchMap, take } from 'rxjs/operators';\nimport { CrmFieldService, CrmObjectService, StandardIds } from '../../shared-services';\nimport { PAGE_ROUTES } from '../../constants';\nimport {\n CrmDependencies,\n CrmInjectionToken,\n CrmMultiLocationDependencies,\n CrmMultilocationInjectionToken,\n} from '../../tokens-and-interfaces';\nimport { RouterLink } from '@angular/router';\n\nconst NO_VALUE_FOR_COMPANY_NAME = '';\ninterface PrimaryCompanyNameData {\n displayValue: string;\n link: string;\n}\n\n@Component({\n selector: 'crm-primary-company-name',\n template: `\n \n \n \n \n \n \n \n \n \n
\n
\n \n {{ displayName }}\n \n \n \n \n `,\n styleUrls: ['./shared.scss'],\n imports: [CommonModule, BlankValueComponent, RouterLink],\n})\nexport class PrimaryCompanyNameComponent extends CustomCellComponent {\n NO_VALUE_FOR_COMPANY_NAME = NO_VALUE_FOR_COMPANY_NAME;\n private companyId$$ = new BehaviorSubject('');\n private namespace$$ = new BehaviorSubject('');\n set value(cellData: { namespace: string; objectId: string }) {\n this.namespace$$.next(cellData.namespace);\n this.companyId$$.next(cellData.objectId);\n }\n\n displayValue$ = combineLatest([this.companyId$$, this.namespace$$]).pipe(\n switchMap(([contactPrimaryCompanyID, contactNamespace]) => {\n if (!contactPrimaryCompanyID || !contactNamespace) {\n return of(null);\n }\n return this.crmObjectService.getMultiObject('Company', [contactPrimaryCompanyID], [], contactNamespace);\n }),\n map((response) => response?.crmObjects ?? []),\n map((companies) => {\n if (!companies.length) {\n return null;\n }\n return this.crmFieldService.getFieldValueFromCrmObject(companies[0], StandardIds.CompanyName);\n }),\n map((companyNameFieldValue) => companyNameFieldValue?.stringValue ?? this.NO_VALUE_FOR_COMPANY_NAME),\n );\n\n isMultiLocation$ = this.multiLocationConfig.isMultiLocation$ ?? of(false);\n link$ = combineLatest([this.config.viewProfileFlag$, this.isMultiLocation$]).pipe(\n take(1),\n switchMap(([featureFlag, isMultiLocation]) => {\n if (!featureFlag || isMultiLocation) {\n return of('');\n }\n return this.config.routePrefix$;\n }),\n map((routePrefix) => {\n if (!routePrefix || !this.companyId$$.getValue()) {\n return '';\n }\n const primaryCompanyProfileViewRoute = `${PAGE_ROUTES.COMPANY.ROOT}/${PAGE_ROUTES.COMPANY.SUBROUTES.PROFILE}`;\n return `${routePrefix}/${primaryCompanyProfileViewRoute}`.replace(':crmObjectId', this.companyId$$.getValue());\n }),\n );\n componentData$: Observable = combineLatest([this.displayValue$, this.link$]).pipe(\n map(([displayValue, link]) => ({ displayValue, link })),\n );\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n @Inject(CrmMultilocationInjectionToken) private readonly multiLocationConfig: CrmMultiLocationDependencies,\n private readonly crmFieldService: CrmFieldService,\n private readonly crmObjectService: CrmObjectService,\n ) {\n super();\n }\n}\n","import { Component, Inject, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BlankValueComponent, CustomCellComponent, MODULE_IMPORTS } from '@vendasta/galaxy/table';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CrmMultilocationInjectionToken, CrmMultiLocationDependencies } from '../../../tokens-and-interfaces';\nimport { take } from 'rxjs/operators';\nimport { AccountGroupService, ProjectionFilter } from '@galaxy/account-group';\n\ninterface AccountGroupResponse {\n accountGroupId: string;\n napData: {\n companyName: string;\n address: string;\n };\n}\n\n@Component({\n selector: 'crm-location-cell',\n styleUrls: ['../shared.scss', './location.component.scss'],\n templateUrl: './location.component.html',\n imports: [\n CommonModule,\n BlankValueComponent,\n GalaxyPipesModule,\n TranslateModule,\n MatIconModule,\n MatButtonModule,\n BlankValueComponent,\n MODULE_IMPORTS,\n ],\n})\nexport class LocationCellComponent extends CustomCellComponent implements OnInit {\n accountGroupInfo: AccountGroupResponse | null = null;\n isMultiLocation = false;\n private namespace: string | null = null;\n\n constructor(\n @Inject(CrmMultilocationInjectionToken) private multiLocationConfig: CrmMultiLocationDependencies,\n private accountGroupService: AccountGroupService,\n ) {\n super();\n }\n\n @Input()\n override set value(cellData: { namespace: string }) {\n if (!cellData?.namespace) {\n return;\n }\n this.namespace = cellData.namespace;\n if (this.isMultiLocation) {\n this.loadAccountGroupInfo();\n }\n }\n\n ngOnInit(): void {\n this.multiLocationConfig.multiLocationContext$?.pipe(take(1)).subscribe((context) => {\n this.isMultiLocation = !!context?.groupId;\n if (this.isMultiLocation && this.namespace) {\n this.loadAccountGroupInfo();\n }\n });\n }\n\n private loadAccountGroupInfo(): void {\n if (!this.namespace) {\n return;\n }\n\n this.accountGroupService\n .get(\n this.namespace,\n new ProjectionFilter({\n napData: true,\n accountGroupExternalIdentifiers: true,\n associations: true,\n }),\n )\n .pipe(take(1))\n .subscribe((accountGroup) => {\n this.accountGroupInfo = {\n accountGroupId: accountGroup.accountGroupId,\n napData: {\n companyName: accountGroup.napData?.companyName || '',\n address: accountGroup.napData?.address || '',\n },\n };\n });\n }\n}\n","@if (isMultiLocation && accountGroupInfo?.napData) {\n
\n
{{ accountGroupInfo.napData.companyName }}
\n
{{ accountGroupInfo.napData.address }}
\n
\n} @else {\n \n}\n","import { Inject, Injectable, OnDestroy, signal } from '@angular/core';\nimport { ColumnDataInterface, TableCustomizationService } from './_abstract-table-customization.service';\nimport { BehaviorSubject, combineLatest, firstValueFrom, Observable, of, Subject } from 'rxjs';\nimport {\n CrmDependencies,\n CrmInjectionToken,\n CrmMultiLocationDependencies,\n CrmMultilocationInjectionToken,\n} from '../../tokens-and-interfaces';\nimport {\n ContactCustomColumns,\n CrmFieldService,\n StandardExternalIds,\n StandardIds,\n SystemFieldIds,\n} from '../crm-services/field.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { map, mergeMap, take, tap } from 'rxjs/operators';\nimport { PAGE_ROUTES } from '../../constants';\nimport { CrmObjectInterface, FieldSchemaInterface, PhoneFieldsInterface } from '@vendasta/crm';\nimport { PrimaryCompanyNameComponent } from '../../shared-components/custom-table-cells/primary-company-name.component';\nimport { format, ParsedNumber, parseNumber } from 'libphonenumber-js';\nimport { CustomCell, GalaxyColumnDef } from '@vendasta/galaxy/table';\nimport {\n GalaxyFilterDefinitionInterface,\n GalaxyFilterInterface,\n GalaxyFilterOperator,\n} from '@vendasta/galaxy/filter/chips';\nimport { RestrictedGroupService } from '../restricted-group.service';\nimport { CrmObjectDisplayService } from '../crm-object-display.service';\nimport { LocationCellComponent } from '../../shared-components/custom-table-cells/multilocation/location.component';\n\n@Injectable()\nexport class ContactTableCustomizationService extends TableCustomizationService implements OnDestroy {\n private destroy$ = new Subject();\n private contactLinkBuild$$ = new BehaviorSubject('');\n private shouldShowLocationColumn$$ = new BehaviorSubject(false);\n private isMultiLocation = signal(false);\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n @Inject(CrmMultilocationInjectionToken) private readonly multiLocationConfig: CrmMultiLocationDependencies,\n protected override readonly crmFieldService: CrmFieldService,\n private readonly translate: TranslateService,\n private readonly restrictedGroupService: RestrictedGroupService,\n private readonly objectDisplayService: CrmObjectDisplayService,\n ) {\n super(crmFieldService);\n const isMultiLocation$ = multiLocationConfig.isMultiLocation$ ?? of(false);\n combineLatest([this.config.viewProfileFlag$, isMultiLocation$])\n .pipe(\n take(1),\n tap(([_, isMultiLocation]) => {\n this.shouldShowLocationColumn$$.next(isMultiLocation);\n this.isMultiLocation.set(isMultiLocation);\n }),\n mergeMap(([featureFlag, isMultiLocation]) => {\n if (!featureFlag) {\n return of('');\n }\n return isMultiLocation ? this.multiLocationConfig.routePrefix$ : this.config.routePrefix$;\n }),\n )\n .subscribe((routePrefix) => {\n if (!routePrefix) {\n return;\n }\n\n const contactProfileViewRoute = this.isMultiLocation()\n ? `${PAGE_ROUTES.MULTI_LOCATION.CONTACTS.ROOT}/${PAGE_ROUTES.MULTI_LOCATION.CONTACTS.SUBROUTES.PROFILE}`\n : `${PAGE_ROUTES.CONTACT.ROOT}/${PAGE_ROUTES.CONTACT.SUBROUTES.PROFILE}`;\n\n this.contactLinkBuild$$.next(`${routePrefix}/${contactProfileViewRoute}`);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private hideIDColumns(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n const columnIdentifiersToHide = [\n this.crmFieldService.getFieldId(StandardExternalIds.FirstName),\n this.crmFieldService.getFieldId(StandardExternalIds.LastName),\n SystemFieldIds.ContactExternalID,\n SystemFieldIds.ContactID,\n StandardIds.ContactPrimaryCompanyID,\n ContactCustomColumns.FullAddress,\n SystemFieldIds.ContactGroupID,\n SystemFieldIds.ContactOwnerID,\n StandardIds.ContactAdditionalTeamMemberIDs,\n ];\n for (const identifier of columnIdentifiersToHide) {\n const index = columns.findIndex((c) => c.id === identifier);\n if (index >= 0) {\n columns[index].hidden = true;\n }\n }\n return columns;\n }\n\n private addPrimaryCompanyNameColumn(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n return [\n {\n id: ContactCustomColumns.PrimaryCompanyName,\n title: this.translate.instant('CONTACT.LIST_OBJECTS_TABLE.CUSTOM_COLUMNS.PRIMARY_COMPANY_NAME'),\n hidden: true,\n },\n ...columns,\n ];\n }\n\n private async addPrimaryCompanyNameRowData(\n crmObject: CrmObjectInterface,\n schemaMap: { [schemaId: string]: FieldSchemaInterface },\n columnData: ColumnDataInterface,\n ): Promise {\n let contactPrimaryCompanyID = '';\n const contactPrimaryCompanyIDFieldValue = this.crmFieldService.getFieldValueFromCrmObject(\n crmObject,\n StandardIds.ContactPrimaryCompanyID,\n );\n if (contactPrimaryCompanyIDFieldValue?.stringValue) {\n contactPrimaryCompanyID = contactPrimaryCompanyIDFieldValue.stringValue;\n }\n\n columnData[ContactCustomColumns.PrimaryCompanyName] = {\n cellType: 'custom',\n value: {\n namespace: crmObject.namespace,\n objectId: contactPrimaryCompanyID,\n },\n component: PrimaryCompanyNameComponent,\n } as CustomCell;\n }\n\n private addFullNameColumn(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n return [\n {\n id: ContactCustomColumns.FullName,\n title: this.translate.instant('CONTACT.LIST_OBJECTS_TABLE.CUSTOM_COLUMNS.FULL_NAME'),\n sticky: true,\n sortable: false,\n },\n ...columns,\n ];\n }\n\n private formatPhoneNumber(phoneNumber: string): string {\n const parsedNumber = parseNumber(phoneNumber, {\n defaultCountry: 'US',\n });\n if (Object.keys(parsedNumber).length === 0) {\n return '';\n }\n\n return format(parsedNumber as ParsedNumber, 'INTERNATIONAL');\n }\n\n private formatPhoneNumberFields(phoneNumber: PhoneFieldsInterface): string {\n if (phoneNumber.nationalNumber === '') {\n return '';\n }\n const parsed = {\n country: phoneNumber.isoCountryCode,\n phone: phoneNumber.nationalNumber,\n ext: phoneNumber.extension,\n } as ParsedNumber;\n const internationalNumber = format(parsed, 'INTERNATIONAL');\n return internationalNumber;\n }\n\n private addFullNameRowData(\n crmObject: CrmObjectInterface,\n schemaMap: { [schemaId: string]: FieldSchemaInterface },\n columnData: ColumnDataInterface,\n ): void {\n const crmObjectId = crmObject.crmObjectId || '';\n const namespace = crmObject.namespace || '';\n const link = this.isMultiLocation()\n ? this.contactLinkBuild$$.value.replace(':crmObjectId', crmObjectId).replace(':namespace', namespace)\n : this.contactLinkBuild$$.value.replace(':crmObjectId', crmObjectId);\n\n columnData[ContactCustomColumns.FullName] = {\n cellType: 'text',\n value: this.getRowFullName(crmObject),\n link: link,\n };\n }\n\n getRowFullName(crmObject: CrmObjectInterface): string {\n return this.objectDisplayService.getObjectDisplayName('Contact', crmObject);\n }\n\n getAssociationInfo(crmObject: CrmObjectInterface): string {\n return this.objectDisplayService.getAssociationInfo('Contact', crmObject);\n }\n\n private addFullAddressColumnData(\n crmObject: CrmObjectInterface,\n schemaMap: { [schemaId: string]: FieldSchemaInterface },\n columnData: ColumnDataInterface,\n ): void {\n columnData[ContactCustomColumns.FullAddress] = {\n cellType: 'text',\n value: this.getRowFullAddress(crmObject),\n };\n }\n\n customizeRowData(\n crmObject: CrmObjectInterface,\n schemaMap: { [schemaId: string]: FieldSchemaInterface },\n columnData: ColumnDataInterface,\n ): void {\n this.customizeNextTaskDueDateCellData(columnData);\n this.addFullNameRowData(crmObject, schemaMap, columnData);\n this.addPrimaryCompanyNameRowData(crmObject, schemaMap, columnData);\n this.addFullAddressColumnData(crmObject, schemaMap, columnData);\n\n if (this.shouldShowLocationColumn$$.getValue()) {\n this.addLocationCustomCell(crmObject, columnData);\n }\n\n this.addCustomCells(this.config.contact?.tableCustomCells || [], crmObject, columnData);\n }\n\n private customizeNextTaskDueDateCellData(columnData: ColumnDataInterface): void {\n const cell = columnData[this.crmFieldService.getFieldId(StandardIds.ContactNextTaskDueDate)];\n if (cell) {\n cell.cellType = 'timestamp';\n }\n }\n\n customizeColumns(columns: GalaxyColumnDef[], isMobile: boolean): GalaxyColumnDef[] {\n let customizedColumns = this.hideIDColumns(columns);\n customizedColumns = this.addPrimaryCompanyNameColumn(customizedColumns);\n customizedColumns = this.addFullNameColumn(customizedColumns);\n customizedColumns = this.addFullAddressColumn(customizedColumns);\n\n if (this.shouldShowLocationColumn$$.getValue()) {\n customizedColumns = this.addLocationColumn(customizedColumns);\n }\n\n const customCells = this.config.contact?.tableCustomCells || [];\n customizedColumns = this.addCustomColumns(\n customCells.map((c) => c.columnDefinition),\n customizedColumns,\n );\n if (isMobile) {\n customizedColumns = this.customizeColumnsMobile(customizedColumns);\n }\n return [...customizedColumns];\n }\n\n customizeColumnsMobile(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n const columnIdentifiersToShow = new Map([\n [this.crmFieldService.getFieldId(StandardExternalIds.Email), true],\n [ContactCustomColumns.FullName, true],\n ]);\n\n columns.forEach((column) => {\n column.hidden = !columnIdentifiersToShow.get(column.id);\n });\n return [...columns];\n }\n\n getRowFullAddress(crmObject: CrmObjectInterface): string {\n const addressLineOne = this.crmFieldService.getFieldId(StandardIds.ContactPrimaryAddressLine1);\n const addressLineTwo = this.crmFieldService.getFieldId(StandardIds.ContactPrimaryAddressLine2);\n const city = this.crmFieldService.getFieldId(StandardIds.ContactPrimaryAddressCity);\n const state = this.crmFieldService.getFieldId(StandardIds.ContactPrimaryAddressState);\n const postalCode = this.crmFieldService.getFieldId(StandardIds.ContactPrimaryAddressPostalCode);\n const country = this.crmFieldService.getFieldId(StandardIds.ContactPrimaryAddressCountry);\n\n const addressLineOneData = crmObject.fields?.find((f) => f.fieldId === addressLineOne);\n const addressLineTwoData = crmObject.fields?.find((f) => f.fieldId === addressLineTwo);\n const cityData = crmObject.fields?.find((f) => f.fieldId === city);\n const stateData = crmObject.fields?.find((f) => f.fieldId === state);\n const postalCodeData = crmObject.fields?.find((f) => f.fieldId === postalCode);\n const countryData = crmObject.fields?.find((f) => f.fieldId === country);\n\n const fullAddress = [\n addressLineOneData?.stringValue,\n addressLineTwoData?.stringValue,\n cityData?.stringValue,\n stateData?.stringValue,\n countryData?.stringValue,\n postalCodeData?.stringValue,\n ];\n\n return fullAddress.filter((value) => value !== undefined).join(', ');\n }\n\n private addFullAddressColumn(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n return [\n {\n id: ContactCustomColumns.FullAddress,\n title: this.translate.instant('LIST_OBJECTS_TABLE.CUSTOM_COLUMNS.FULL_ADDRESS'),\n hidden: true,\n sortable: false,\n },\n ...columns,\n ];\n }\n\n private addLocationColumn(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n return [\n {\n id: ContactCustomColumns.Location,\n title: 'Location',\n },\n ...columns,\n ];\n }\n\n private addLocationCustomCell(crmObject: CrmObjectInterface, columnData: ColumnDataInterface): void {\n if (!crmObject.namespace) {\n return;\n }\n columnData[ContactCustomColumns.Location] = {\n cellType: 'custom',\n value: {\n objectId: crmObject.crmObjectId,\n objectType: 'Contact',\n namespace: crmObject.namespace,\n },\n component: LocationCellComponent,\n } as CustomCell;\n }\n\n private makeGroupFilterRestricted(\n restrictedToGroupId: string,\n filters: GalaxyFilterDefinitionInterface[],\n ): GalaxyFilterDefinitionInterface[] {\n if (restrictedToGroupId) {\n const groupIDIndex = filters.findIndex((f) => f.fieldId === SystemFieldIds.ContactGroupID);\n if (groupIDIndex > -1) {\n filters[groupIDIndex].preset = true;\n filters[groupIDIndex].lockedValue = true;\n }\n }\n return filters;\n }\n\n customizeFilters(filters: GalaxyFilterDefinitionInterface[]): Observable {\n const overrides$ = this.config.contact?.filterInputOverrides$ ?? of([]);\n const appliedOverrides$ = overrides$.pipe(map((overrides) => this.overrideCustomFilters(filters, overrides)));\n return combineLatest([this.restrictedGroupService.getCurrentGroupId(), appliedOverrides$]).pipe(\n map(([restrictedMarketId, filters]: [string, GalaxyFilterDefinitionInterface[]]) =>\n this.makeGroupFilterRestricted(restrictedMarketId, filters),\n ),\n );\n }\n\n buildInitialFilter(\n filterDefinitions: GalaxyFilterDefinitionInterface[],\n identifier: string,\n filterId: string,\n ): GalaxyFilterInterface {\n const fieldId = this.crmFieldService.getFieldId(identifier);\n const defn = filterDefinitions.find((f) => f.fieldId === fieldId);\n if (defn) {\n defn.preset = true;\n }\n const filter = {\n fieldId: fieldId,\n filterId: filterId,\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [],\n definition: defn,\n };\n return filter;\n }\n\n async getInitialFilters(\n filterDefinitions$: Observable,\n ): Promise {\n return firstValueFrom(\n combineLatest([\n this.restrictedGroupService.getCurrentGroupId(),\n filterDefinitions$,\n this.config.contact?.initialFilters$ || of([]),\n ]),\n ).then(([selectedGroupId, filterDefinitions, initialFilters]) => {\n const filters = initialFilters.map((filter) => {\n return this.buildInitialFilter(filterDefinitions, filter.fieldId, filter.filterId);\n });\n if (selectedGroupId) {\n const groupIdDefn = filterDefinitions.find(\n (f) => f.fieldId === this.crmFieldService.getFieldId(SystemFieldIds.ContactGroupID),\n );\n if (groupIdDefn) {\n groupIdDefn.preset = true;\n }\n filters.push({\n fieldId: SystemFieldIds.ContactGroupID,\n filterId: 'filterContactByRestrictedGroupID',\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: selectedGroupId,\n },\n ],\n definition: groupIdDefn,\n });\n }\n return filters;\n });\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, combineLatest, firstValueFrom, Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { CrmObjectService } from './crm-object-service/crm-object.service';\nimport { GalaxyFilterDefinitionInterface, GalaxyFilterInterface } from '@vendasta/galaxy/filter/chips';\nimport { ContactTableCustomizationService } from '../table-customization/contact-table-customization.service';\nimport { CompanyTableCustomizationService } from '../table-customization/company-table-customization.service';\nimport { ActivityCustomizationService } from '../table-customization/activity-customization.service';\nimport {\n CrmInjectionToken,\n ActivityType,\n CrmDependencies,\n ObjectType,\n TaskTableCustomizationServiceToken,\n CrmObjectDependencies,\n} from '../../tokens-and-interfaces';\nimport { FilterType } from '@vendasta/crm';\nimport { convertToGalaxyFilterOperators, convertToGalaxyFilterType } from '../../utils';\nimport { ActivityTableCustomizationService } from '../../shared-services/table-customization/_abstract-table-customization.service';\nimport { OpportunityTableCustomizationService } from '../table-customization';\n\n// right now filters are sorted manually in the backend, the page size needs to cover the amount of system + standard + extensions + custom filters (up to 100)\nconst FILTER_PAGE_SIZE = 200;\n\n@Injectable()\nexport class CrmFiltersService {\n private initialFilters$$ = new BehaviorSubject([]);\n initialFilters$ = this.initialFilters$$.asObservable();\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly crmObjectService: CrmObjectService,\n private readonly contactTableCustomization: ContactTableCustomizationService,\n private readonly companyTableCustomization: CompanyTableCustomizationService,\n private readonly activityCustomizationService: ActivityCustomizationService,\n private readonly opportunityTableCustomization: OpportunityTableCustomizationService,\n @Optional()\n @Inject(TaskTableCustomizationServiceToken)\n private readonly taskTableCustomization?: ActivityTableCustomizationService,\n ) {}\n\n private customizeFilters(\n filters: GalaxyFilterDefinitionInterface[],\n objectType: ObjectType,\n activityType?: ActivityType,\n ): Observable {\n switch (objectType) {\n case 'Contact':\n return this.contactTableCustomization.customizeFilters(filters);\n case 'Company':\n return this.companyTableCustomization.customizeFilters(filters);\n case 'Activity':\n switch (activityType) {\n case 'Task':\n return this.taskTableCustomization?.customizeFilters(filters) ?? of(filters);\n default:\n return of(filters);\n }\n case 'Opportunity':\n return this.opportunityTableCustomization.customizeFilters(filters);\n default:\n return of(filters);\n }\n }\n\n listObjectFilters$(\n searchTerm: string,\n objectType: ObjectType,\n activityType?: ActivityType,\n objectSubtype$?: Observable,\n withNamespace?: string,\n ): Observable {\n return combineLatest([this.config.namespace$, objectSubtype$ ?? of('')]).pipe(\n switchMap(([namespace, objectSubtype]) => {\n return this.crmObjectService.listObjectsFilters(\n objectType,\n {\n namespace: namespace,\n paging: {\n pageSize: FILTER_PAGE_SIZE,\n },\n searchTerm: searchTerm,\n crmObjectSubtype: objectSubtype,\n },\n withNamespace,\n );\n }),\n map((resp) => {\n if (!resp.filters) {\n return [] as GalaxyFilterDefinitionInterface[];\n }\n return resp.filters.map((filterDef) => ({\n fieldId: filterDef.fieldId,\n type: convertToGalaxyFilterType(filterDef.typeV2 || FilterType.FILTER_TYPE_INVALID),\n hasFilterOptions: filterDef.hasFilterOptions,\n supportedOperators: convertToGalaxyFilterOperators(filterDef.supportedOperatorsV2 || []),\n fieldName: filterDef.fieldName,\n }));\n }),\n switchMap((filters) => this.customizeFilters(filters, objectType, activityType)),\n );\n }\n\n async getInitialAppliedFilters$(\n objectType: ObjectType,\n crmObjectDependencies?: CrmObjectDependencies,\n activityType?: ActivityType,\n useUrlFilters?: boolean,\n withNamespace?: string,\n ): Promise {\n if (objectType === 'Activity' && activityType === 'Task') {\n const urlFilters = firstValueFrom(this.initialFilters$);\n return urlFilters.then((filters) => {\n if (filters?.length > 0 && useUrlFilters) return filters;\n if (this.taskTableCustomization?.getInitialFilters()) {\n return this.taskTableCustomization.getInitialFilters();\n }\n console.error('No getInitialFilters method found in taskTableCustomization service');\n return [];\n });\n }\n\n if (crmObjectDependencies) {\n const urlFilters = await firstValueFrom(this.initialFilters$);\n const initialObjectFilters =\n (await crmObjectDependencies.services?.tableCustomizationService?.getInitialFilters(\n this.listObjectFilters$('', objectType, undefined, undefined, withNamespace),\n )) ?? [];\n if (urlFilters?.length > 0 && useUrlFilters) {\n const joinedFilters = [...urlFilters, ...initialObjectFilters];\n return joinedFilters.filter((filter, index) => {\n return index === joinedFilters.findIndex((f) => filter.filterId === f.filterId);\n });\n }\n return initialObjectFilters;\n }\n\n if (objectType === 'Activity') {\n const urlFilters = await firstValueFrom(this.initialFilters$);\n const initialActivityFilters = await this.activityCustomizationService.getInitialFilters(\n this.listObjectFilters$('', objectType, undefined, undefined, withNamespace),\n );\n if (urlFilters?.length > 0 && useUrlFilters) {\n const joinedFilters = [...urlFilters, ...initialActivityFilters];\n return joinedFilters.filter((filter, index) => {\n return index === joinedFilters.findIndex((f) => filter.filterId === f.filterId);\n });\n }\n return initialActivityFilters;\n }\n if (objectType === 'Contact') {\n const urlFilters = await firstValueFrom(this.initialFilters$);\n const initialContactFilters = await this.contactTableCustomization.getInitialFilters(\n this.listObjectFilters$('', objectType, undefined, undefined, withNamespace),\n );\n if (urlFilters?.length > 0 && useUrlFilters) {\n const joinedFilters = [...urlFilters, ...initialContactFilters];\n return joinedFilters.filter((filter, index) => {\n return index === joinedFilters.findIndex((f) => filter.filterId === f.filterId);\n });\n }\n return initialContactFilters;\n }\n if (objectType === 'Company') {\n const urlFilters = await firstValueFrom(this.initialFilters$);\n const initialCompanyFilters = await this.companyTableCustomization.getInitialFilters(\n this.listObjectFilters$('', objectType, undefined, undefined, withNamespace),\n );\n if (urlFilters?.length > 0 && useUrlFilters) {\n const joinedFilters = [...urlFilters, ...initialCompanyFilters];\n return joinedFilters.filter((filter, index) => {\n return index === joinedFilters.findIndex((f) => filter.filterId === f.filterId);\n });\n }\n return initialCompanyFilters;\n }\n if (objectType === 'Opportunity') {\n const urlFilters = await firstValueFrom(this.initialFilters$);\n const initialOpportunityFilters = await this.opportunityTableCustomization.getInitialFilters(\n this.listObjectFilters$('', objectType, undefined, undefined, withNamespace),\n );\n if (urlFilters?.length > 0 && useUrlFilters) {\n const joinedFilters = [...urlFilters, ...initialOpportunityFilters];\n return joinedFilters.filter((filter, index) => {\n return index === joinedFilters.findIndex((f) => filter.filterId === f.filterId);\n });\n }\n return initialOpportunityFilters;\n }\n return firstValueFrom(this.initialFilters$);\n }\n\n setInitialFilters(filters: GalaxyFilterInterface[]) {\n this.initialFilters$$.next(filters);\n }\n}\n","import {\n GalaxyFilterChipDependencies,\n GalaxyFilterDefinitionInterface,\n GalaxyFilterInputOverride,\n GalaxyFilterInterface,\n} from '@vendasta/galaxy/filter/chips';\nimport {\n CrmObjectInterface,\n FieldType,\n FieldValueInterface as SdkFieldValueInterface,\n GetMultiCrmObjectResponse,\n} from '@vendasta/crm';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { AbstractControl, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { CustomCellComponent, GalaxyColumnDef, Row } from '@vendasta/galaxy/table';\nimport { Directive, inject, InjectionToken, input, Type, ViewContainerRef } from '@angular/core';\nimport { Properties } from 'posthog-js';\nimport { CardDataType } from '@vendasta/galaxy/contact-info-card';\nimport { CrmFieldOptionsService } from './shared-services/crm-services/crm-field-options.service';\nimport { CrmFiltersService } from './shared-services/crm-services/crm-filters.service';\nimport { CRMTrackingService } from './shared-services/page-analytics.service';\nimport { FieldValidation } from './shared-components/model-driven-form/field-validation';\nimport { User } from '@vendasta/iamv2';\nimport { ConversationChannel } from '@vendasta/conversation';\nimport { FormFieldAssociation, PresetFilters } from './shared-components';\nimport {\n ActivityTableCustomizationService,\n CrmObjectDisplayService,\n Pipeline,\n TableCustomizationService,\n} from './shared-services';\nimport { ActivatedRoute } from '@angular/router';\nimport { map, shareReplay, switchMap } from 'rxjs/operators';\nimport { ObjectNames } from './shared-services/crm-object-display.service';\n\nexport { FieldType } from '@vendasta/crm';\n\nexport interface ObjectRouteInterface {\n ROOT: string;\n SUBROUTES: {\n PROFILE: string;\n };\n}\n\nexport interface ProfileCard {\n component: any;\n}\n\nexport interface ProfileHeaderComponentInterface {\n crmObjectType: ObjectType | undefined;\n crmObject: CrmObjectInterface | undefined;\n}\n\nexport interface ProfileHeader {\n component: Type;\n position?: 'top' | 'bottom';\n}\n\nexport interface ProfileTitle {\n component: any;\n}\n\nexport interface CRMSelectAllOptions {\n filters?: GalaxyFilterInterface[];\n search?: string;\n useSelectAll?: boolean;\n totalObjects?: number;\n}\n\nexport interface UserWithDisplayName extends User {\n displayName: string;\n}\n\nexport type OnProfilePageInitFunc = (object: CrmObjectInterface) => void;\nexport type MultiRowActionFunc = (rows: Row[]) => void;\nexport type SelectAllActionFunc = (rows: Row[], selectOptions?: CRMSelectAllOptions) => void;\nexport type SingleRowActionFunc = (row: Row) => void;\nexport type ObjectType = 'Contact' | 'Company' | 'Activity' | 'Opportunity' | 'CustomObject';\nexport const ObjectTypes: ObjectType[] = ['Contact', 'Company', 'Activity', 'Opportunity', 'CustomObject'];\nexport type ObjectDependencyKey = 'contact' | 'company' | 'opportunity' | 'customObject';\n// Extra object types that can be associated with an activity\nexport type ObjectAssociationType = 'Opportunity' | 'User';\nexport type RowVisibilityFunc = (row: Row, type: ObjectType) => boolean;\nexport type GetDisplayNameFunc = (crmObject: CrmObjectInterface) => string;\n\nexport interface MultiRowAction {\n label: string;\n callback: MultiRowActionFunc;\n}\n\nexport interface SelectAllAction {\n label: string;\n callback: SelectAllActionFunc;\n selectAllVisible?: boolean;\n}\n\nexport interface SingleRowAction {\n label: string;\n callback: SingleRowActionFunc;\n visible?: RowVisibilityFunc;\n}\n\nexport interface CRMRowObject {\n namespace: string;\n objectId: string;\n objectType: ObjectType;\n}\n\nexport interface TableCustomCell {\n fieldIds: string[];\n customCellComponent: Type;\n columnDefinition: GalaxyColumnDef;\n}\n\nexport interface CRMFilterOverride extends GalaxyFilterInputOverride {\n title: string;\n}\n\nexport interface ActionButton {\n component: any;\n}\n\nexport type RequiresField = T & { [P in K]-?: T[P] };\nexport type FieldValueInterface = RequiresField;\n\n@Directive()\nexport abstract class FormInputComponent {\n readOnly = false;\n inlineEdit$: Observable = of(false);\n objectType: ObjectType = 'Contact';\n isEditing = false;\n objectId = input('');\n\n abstract set control(control: UntypedFormControl);\n abstract get control(): UntypedFormControl;\n\n abstract set formGroup(group: UntypedFormGroup);\n\n abstract set fieldId(fieldId: string);\n\n abstract set label(label: string);\n\n abstract get hasModification(): boolean;\n\n abstract get value(): FieldValueInterface;\n}\n\nexport interface FormCustomInput {\n fieldId: string;\n component: Type;\n}\n\nexport interface FormDefaultInputValue {\n fieldId: string;\n value: any;\n}\n\nexport interface SimplifiedUser {\n userId: string;\n firstName: string;\n lastName: string;\n displayName: string;\n profileImageUrl?: string;\n}\n\nexport interface UserService {\n searchUsers?(searchTerm?: string): Observable;\n\n getMultiUsers(userIds: string[]): Observable;\n}\n\nexport interface AccessService {\n canViewAllCampaigns$?: Observable;\n canModifyAutomations$?: Observable;\n hasPartnerPermissions$?: Observable;\n canAccessSales$?: Observable;\n canAccessTaskManager$?: Observable;\n canAccessAutomations$?: Observable;\n canAccessInbox$?: Observable;\n\n canAccessProductPage$?(partnerId: string, marketId: string): Observable;\n canAccessCrmObjectType$?(objectType: ObjectType): Observable;\n}\n\nexport const CRM_ACCESS_SERVICE_TOKEN = new InjectionToken('Service for the crm for user access checks');\n\nexport interface SimplifiedOpportunity {\n opportunityId: string;\n name: string;\n}\n\nexport interface SalesOpportunityService {\n searchOpportunities(searchTerm: string): Observable;\n getMultiOpportunity(opportunityIds: string[]): Observable;\n setAccountGroupId(accountGroupId: string): void;\n}\n\nexport interface InitialFilters {\n fieldId: string;\n filterId: string;\n}\n\nexport interface CreateAssociationFields {\n objectTypes: ObjectType[];\n required?: boolean;\n}\n\nexport interface PipelineService {\n getPipeline$(pipelineId: string): Observable;\n getMultiPipeline$(pipelineIds: string[]): Observable;\n}\n\n// Dependencies related to specific object types\nexport interface CrmObjectDependencies {\n multiRowTableActions$?: Observable;\n singleRowTableActions$?: Observable;\n selectAllTableActions$?: Observable;\n onProfilePageInit?: OnProfilePageInitFunc;\n profileCards$?: Observable;\n profileHeader$?: Observable;\n profileTitle$?: Observable;\n actionButtons$?: Observable;\n baseColumnIds?: string[];\n filterInputOverrides$?: Observable;\n initialFilters$?: Observable;\n tableCustomCells?: TableCustomCell[];\n formCustomInputs?: FormCustomInput[];\n formDefaultOnCreateInputValues$?: Observable;\n showRightHandProfilePanel$?: Observable; // default to show right hand profile panel\n presetFilters$?: Observable;\n syncIds$?: Observable;\n accountId$?: (crmObject: Observable) => Observable;\n showCampaigns$?: Observable;\n createAssociationFields?: CreateAssociationFields;\n additionalBaseFormFieldIds$?: Observable;\n objectSubtype$?: Observable;\n singularObjectName$?: Observable;\n pluralObjectName$?: Observable;\n defaultPageUrl$?: Observable;\n services?: {\n tableCustomizationService?: TableCustomizationService;\n };\n getDisplayName?: GetDisplayNameFunc;\n}\n\nexport interface CrmActivityDependencies {\n filterInputOverrides$?: Observable;\n initialFilters$?: Observable;\n}\n\nexport interface CrmListsDependencies {\n canStartManualAutomation$?: Observable;\n}\n\nexport interface CrmMultiLocationDependencies {\n multiLocationContext$: Observable;\n routePrefix$: Observable;\n currentLocationName$: Observable;\n isMultiLocation$: Observable;\n}\n\nexport interface MultiLocationContext {\n groupId: string;\n accountGroupsIds: string[];\n}\n\nexport interface CrmDependencies {\n appID?: string;\n // the prefix for the route, e.g. /crm. necessary to avoid using relative routing with CRM lib subrouter\n routePrefix$: Observable;\n\n // A namespace is an instance of the CRM\n // e.g. VUNI for a partner managing their contacts in Partner Center,\n // or AG-12345 for an SMB managing their contacts in Business Center.\n // (This distinction gets weirder in the future when we start merging these Centers,\n // but just roll with it for now.)\n namespace$: Observable;\n\n // When the CRM is used in Business Center, the namespace is the account group id.\n // This will give you the parent namespace, which is the partner id.\n parentNamespace$: Observable;\n\n // featureFlags$\n viewProfileFlag$: Observable;\n hasCrmAssociationModalFeatureFlag$: Observable;\n customObjectFeatureFlag?: string;\n hasTimelineActivitiesFeatureFlag$: Observable;\n\n // the unified user id of the current user\n currentUserId$: Observable;\n\n locale$?: Observable;\n\n // dependencies by object type\n activity?: CrmActivityDependencies;\n company?: CrmObjectDependencies;\n contact?: CrmObjectDependencies;\n task?: CrmObjectDependencies;\n opportunity?: CrmObjectDependencies;\n lists?: CrmListsDependencies;\n customObject?: CrmObjectDependencies;\n\n showBackToAccountsButton?: boolean;\n\n // dependencies for namespace specific shared-services\n services?: {\n userService?: UserService;\n opportunityService?: SalesOpportunityService;\n accessService?: AccessService;\n pipelineService?: PipelineService;\n };\n\n hasInboxAccess$: Observable;\n canShowInboxForContact$: Observable;\n openAccountGroupConversation?: (accountGroupId: string) => void | Promise;\n openContactConversation?: (\n namespace: string,\n parentNamespace: string,\n contactId: string,\n channel: ConversationChannel,\n ) => void | Promise;\n\n // Helps determine whether a partner has access to a feature\n hasAccessToFeature$?: (feature: string) => Observable;\n openRestrictedDialog?: (featureId: string) => void;\n showLeadProspector$?: Observable;\n\n // Client specific actions to shared components\n customActions?: {\n // navigates to the fulfillment projects page for a given company\n navigateToFulfillmentProjects?: (row: CRMRowObject) => void;\n openOpportunitiesDetails?: (opportunityId: string, accountGroupId: string) => void;\n };\n\n isMeetingIconNeeded$?: Observable;\n meetingAction?: (\n contactId: string,\n currentUserId: Observable,\n namespace: Observable,\n parentNamespace: Observable,\n ) => void;\n}\n\nexport const CrmInjectionToken = new InjectionToken('dependencies for the crm');\n\nexport const CrmObjectInjectionToken = new InjectionToken(\n 'dependencies for the crm object type',\n);\n\nexport const CrmMultilocationInjectionToken = new InjectionToken(\n 'dependencies for the multi-location context',\n);\n\nexport function crmObjectDependenciesTokenGenerator(\n crm: CrmDependencies,\n objectTableCustomizationService: TableCustomizationService,\n route: ActivatedRoute,\n objectUrlRoot: string,\n crmObjectDependencies?: CrmObjectDependencies,\n): CrmObjectDependencies {\n if (!crmObjectDependencies) {\n return {} as CrmObjectDependencies;\n }\n const crmObjectDisplayService = inject(CrmObjectDisplayService);\n\n // parameter isn't available at the route level passed through,\n // so we need to traverse to the child route in order to get access to the parameter\n let childRoute = route;\n while (childRoute.firstChild) {\n childRoute = childRoute.firstChild;\n }\n const objectSubtype$: Observable = childRoute.params.pipe(\n map((params) => params['customObjectTypeID']),\n shareReplay(1),\n );\n crmObjectDependencies.objectSubtype$ = objectSubtype$;\n\n const names$: Observable = objectSubtype$.pipe(\n switchMap((objectSubtype: string | undefined) =>\n crmObjectDisplayService.getObjectNames(crm.namespace$, objectSubtype),\n ),\n shareReplay(1),\n );\n crmObjectDependencies.singularObjectName$ = names$.pipe(map((names: ObjectNames) => names.singularObjectName));\n crmObjectDependencies.pluralObjectName$ = names$.pipe(map((names: ObjectNames) => names.pluralObjectName));\n\n crmObjectDependencies.defaultPageUrl$ = combineLatest([crm.routePrefix$, objectSubtype$]).pipe(\n map(([routePrefix, objectSubtype]) => {\n if (objectSubtype) {\n return `${routePrefix}/${objectUrlRoot}/${objectSubtype}`;\n }\n return `${routePrefix}/${objectUrlRoot}`;\n }),\n shareReplay(1),\n );\n\n crmObjectDependencies.services = {\n tableCustomizationService: objectTableCustomizationService,\n };\n\n return crmObjectDependencies as CrmObjectDependencies;\n}\n\nexport interface CompanyProfileCardData {\n company_id: string;\n account_group_id?: string;\n name?: string;\n group_id?: string;\n}\n\nexport const COMPANY_PROFILE_CARD_DATA_TOKEN = new InjectionToken('company-profile-card-data');\n\nexport interface PageAnalyticsDependencies {\n trackEvent(action: string, properties?: Properties): void;\n}\n\nexport const PageAnalyticsInjectionToken = new InjectionToken(\n 'dependencies for page analytics',\n);\nexport type ActivityType = 'Note' | 'Email' | 'Call' | 'Meeting' | 'Task' | 'Communication';\nexport type CommunicationSubType = 'SMS' | 'LinkedIn' | 'Inbox';\nexport type RecordChangeType = 'CREATED' | 'IMPORTANT_FIELD_UPDATED';\n\nexport interface CardData extends CardDataType {\n tags?: string[];\n hideAvatar?: boolean;\n accountGroupCompanyName?: string;\n accountGroupCompanyId?: string;\n associationId?: string;\n}\n\nexport function tableFiltersInjectionTokenGenerator(\n objectType: ObjectType,\n activityType?: ActivityType,\n): () => GalaxyFilterChipDependencies {\n if (!objectType) {\n console.error('objectType is required for tableFiltersInjectionTokenGenerator');\n return () => ({}) as GalaxyFilterChipDependencies;\n }\n\n return () => {\n const crmFieldOptionsService = inject(CrmFieldOptionsService);\n const crmFiltersService = inject(CrmFiltersService);\n const crmConfigDependencies = inject(CrmInjectionToken);\n const crmObjectDependencies = inject(CrmObjectInjectionToken, { optional: true });\n const deps: GalaxyFilterChipDependencies = {\n listObjectFilters(searchTerm: string): Observable {\n return crmFiltersService.listObjectFilters$(\n searchTerm,\n objectType,\n activityType,\n crmObjectDependencies?.objectSubtype$,\n );\n },\n getFieldOptions(fieldId: string, search: string): Observable {\n return crmFieldOptionsService.getFieldOptions(\n fieldId,\n search,\n objectType,\n crmObjectDependencies?.objectSubtype$,\n );\n },\n getFilterInputOverrides(): Observable {\n if (crmObjectDependencies) {\n return crmObjectDependencies.filterInputOverrides$ ?? of([] as GalaxyFilterInputOverride[]);\n }\n switch (objectType) {\n case 'Contact':\n return crmConfigDependencies.contact?.filterInputOverrides$ ?? of([] as GalaxyFilterInputOverride[]);\n case 'Company':\n return crmConfigDependencies.company?.filterInputOverrides$ ?? of([] as GalaxyFilterInputOverride[]);\n case 'Activity':\n switch (activityType) {\n case 'Task':\n return crmConfigDependencies.task?.filterInputOverrides$ ?? of([] as GalaxyFilterInputOverride[]);\n default:\n return crmConfigDependencies.activity?.filterInputOverrides$ ?? of([] as GalaxyFilterInputOverride[]);\n }\n case 'Opportunity':\n return crmConfigDependencies.opportunity?.filterInputOverrides$ ?? of([] as GalaxyFilterInputOverride[]);\n default:\n return of([] as GalaxyFilterInputOverride[]);\n }\n },\n getInitialAppliedFilters(): Promise {\n return crmFiltersService.getInitialAppliedFilters$(\n objectType,\n crmObjectDependencies ?? undefined,\n activityType,\n true,\n );\n },\n setInitialAppliedFilters(filters: GalaxyFilterInterface[]): void {\n return crmFiltersService.setInitialFilters(filters);\n },\n };\n return deps;\n };\n}\n\nexport function pageAnalyticsInjectionTokenGenerator(objectType: ObjectType): () => PageAnalyticsDependencies {\n return () => {\n const crmTrackingService = inject(CRMTrackingService);\n const deps: PageAnalyticsDependencies = {\n trackEvent(action: string, properties?: Properties): void {\n crmTrackingService.trackEvent(objectType, action, properties);\n },\n };\n return deps;\n };\n}\n\nexport interface DropdownOptionInterface {\n label?: string;\n value?: string;\n}\n\nexport interface FieldSchemaInterface {\n fieldId: string;\n fieldType: FieldType;\n fieldName: string;\n fieldDescription: string;\n dropdownOptions: DropdownOptionInterface[];\n currencyCode: string;\n value: any;\n readOnly: boolean;\n hasDefaultValue?: boolean;\n}\n\nexport interface AssociationFormField {\n type: ObjectType;\n associations: FormFieldAssociation[];\n associationsRequired?: boolean;\n subtype?: string;\n}\n\nexport interface FieldInterface {\n fieldId: string;\n name: string;\n value: any;\n description: string;\n\n // Gets the field value for the backend\n fieldValue(): FieldValueInterface;\n\n // Checks if the field received a update\n hasModification(): boolean;\n}\n\nexport interface FieldGroupInterface {\n description?: string;\n fieldIds: string[];\n}\n\nexport const ActivityTaskStatus = {\n Open: 'Open',\n Completed: 'Completed',\n};\n\nexport interface FieldOptionsDependencies {\n getFieldOptions(fieldId: string, search: string): Observable;\n}\n\nexport const FieldOptionsInjectionToken = new InjectionToken(\n 'dependencies for getting field options in the model-driven form',\n);\n\nexport enum LoadingStatus {\n LOADING = 1,\n OK = 2,\n EMPTY = 3,\n ERROR = 4,\n}\n\nexport enum SavingStatus {\n NOT_SAVING = 1,\n SAVING = 2,\n OK = 3,\n ERROR = 4,\n}\n\nexport enum NullValue {\n NULL_VALUE = 0,\n}\n\nexport interface RenderableFieldInterface extends FieldInterface {\n formControl: AbstractControl;\n validation: FieldValidation;\n objectType: ObjectType;\n readOnly: boolean;\n\n // Chooses the correct component to display information\n render(viewContainerRef: ViewContainerRef): void;\n\n setValidation(validation: FieldValidation): void;\n}\n\nexport interface RenderableFieldGroupInterface {\n description?: string;\n fields: RenderableFieldInterface[];\n editableFieldCount: number;\n}\n\nexport interface FieldConfigInterface {\n fieldSchemas?: FieldSchemaInterface[];\n fieldGroups?: FieldGroupInterface[];\n}\n\nexport function modelDrivenFormFieldOptionsInjectionTokenGenerator(\n objectType: ObjectType,\n): () => FieldOptionsDependencies {\n return () => {\n const crmFieldOptionsService = inject(CrmFieldOptionsService);\n const crmObjectDependencies = inject(CrmObjectInjectionToken, { optional: true });\n const deps: FieldOptionsDependencies = {\n getFieldOptions(fieldId: string, search: string): Observable {\n return crmFieldOptionsService.getFieldOptions(\n fieldId,\n search,\n objectType,\n crmObjectDependencies?.objectSubtype$,\n );\n },\n };\n return deps;\n };\n}\n\nexport interface ProfileCardData {\n id: string;\n name: string;\n objectType: ObjectType;\n}\n\nexport interface ProfilePageData {\n accountGroupId?: string;\n crmObject?: CrmObjectInterface;\n onChangeCallback?: (crmObject: CrmObjectInterface) => void;\n}\n\nexport const PROFILE_PAGE_DATA_TOKEN = new InjectionToken(\n 'CRM object data loaded in the profile page',\n);\n\nexport const PrimaryAccountGroupIDForCrmObject = new InjectionToken>(\n 'primary account group ID for crm object in a given context',\n);\n\nexport const TaskTableCustomizationServiceToken = new InjectionToken(\n 'Injection token for the task table customization service to be provided in the dynamic CRM module',\n);\n\nexport type ListObjectView = 'board' | 'table' | 'unknown';\n","import { inject, Injectable } from '@angular/core';\nimport {\n CRMMultiLocationActivityApiService,\n ListCrmObjectsRequestInterface,\n ListCrmObjectsResponseInterface,\n ListFieldOptionsRequestInterface,\n ListFieldOptionsResponseInterface,\n ListFiltersRequestInterface,\n ListFiltersResponseInterface,\n ListMultiLocationActivitiesRequestInterface,\n ListMultiLocationFieldOptionsRequest,\n ListMultiLocationFiltersRequest,\n} from '@vendasta/crm';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { CrmMultilocationInjectionToken, MultiLocationContext } from '../../../tokens-and-interfaces';\nimport { ActivityObjectService } from './_activity_object.service';\n\n@Injectable({ providedIn: 'root' })\nexport class MultiLocationActivityService extends ActivityObjectService {\n private multiLocationActivityService = inject(CRMMultiLocationActivityApiService);\n private multiLocationConfig = inject(CrmMultilocationInjectionToken);\n\n override listObjects(request: ListCrmObjectsRequestInterface): Observable {\n return (this.multiLocationConfig.multiLocationContext$ ?? of({} as MultiLocationContext)).pipe(\n switchMap((multiLocationContext) => {\n const req: ListMultiLocationActivitiesRequestInterface = {\n multiLocationPath: multiLocationContext.groupId || '',\n namespaces: multiLocationContext.accountGroupsIds || [],\n sortBy: request.sortBy || [],\n filtersV2: request.filtersV2 || {},\n pagingOptions: request.pagingOptions || {},\n };\n return this.multiLocationActivityService.listMultiLocationActivities(req);\n }),\n map((response) => {\n return {\n crmObjects: response.activities || [],\n pagingMetadata: response.pagingMetadata || {},\n } as ListCrmObjectsResponseInterface;\n }),\n );\n }\n\n override listObjectsFilters(request: ListFiltersRequestInterface): Observable {\n return (this.multiLocationConfig.multiLocationContext$ ?? of({} as MultiLocationContext)).pipe(\n switchMap((multiLocationContext) => {\n const req = {\n multiLocationPath: multiLocationContext.groupId || '',\n namespaces: multiLocationContext.accountGroupsIds || [],\n searchTerm: request.searchTerm || '',\n paging: request.paging || {},\n } as ListMultiLocationFiltersRequest;\n return this.multiLocationActivityService.listMultiLocationActivityFilters(req);\n }),\n map((response) => {\n return {\n filters: response.filters || [],\n paging: response.paging || {},\n } as ListFiltersResponseInterface;\n }),\n );\n }\n\n override listFieldOptions(request: ListFieldOptionsRequestInterface): Observable {\n return (this.multiLocationConfig.multiLocationContext$ ?? of({} as MultiLocationContext)).pipe(\n switchMap((multiLocationContext) => {\n const req = {\n multiLocationPath: multiLocationContext.groupId || '',\n namespaces: multiLocationContext.accountGroupsIds || [],\n fieldId: request.fieldId || '',\n pageSize: request.pageSize || 0,\n searchTerm: request.searchTerm || '',\n } as ListMultiLocationFieldOptionsRequest;\n return this.multiLocationActivityService.listMultiLocationActivityFieldOptions(req);\n }),\n map((response) => {\n return {\n options: response.options || [],\n } as ListFieldOptionsResponseInterface;\n }),\n );\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n CRMCustomObjectApiService,\n CreateCrmObjectRequestInterface,\n CreateCrmObjectResponseInterface,\n DeleteCrmObjectRequestInterface,\n GetMultiCrmObjectRequestInterface,\n GetMultiCrmObjectResponseInterface,\n ListCrmObjectsRequestInterface,\n ListCrmObjectsResponseInterface,\n ListFieldOptionsRequestInterface,\n ListFieldOptionsResponseInterface,\n ListFiltersRequestInterface,\n ListFiltersResponseInterface,\n UpdateCrmObjectRequestInterface,\n ValidateCrmObjectRequestInterface,\n ValidateCrmObjectResponseInterface,\n} from '@vendasta/crm';\nimport { Observable } from 'rxjs';\nimport { AbstractCrmObjectService } from './_abstract.service';\n\n@Injectable({ providedIn: 'root' })\nexport class CustomObjectService implements AbstractCrmObjectService {\n constructor(private readonly service: CRMCustomObjectApiService) {}\n\n createCrmObject(request: CreateCrmObjectRequestInterface): Observable {\n return this.service.createCustomObject(request);\n }\n\n deleteCrmObject(request: DeleteCrmObjectRequestInterface): Observable> {\n return this.service.deleteCustomObject(request);\n }\n\n validateCrmObject(request: ValidateCrmObjectRequestInterface): Observable {\n return this.service.validateCustomObject(request);\n }\n\n updateCrmObject(request: UpdateCrmObjectRequestInterface): Observable> {\n return this.service.updateCustomObject(request);\n }\n\n listObjects(request: ListCrmObjectsRequestInterface): Observable {\n return this.service.listCustomObjects(request);\n }\n\n listObjectsFilters(request: ListFiltersRequestInterface): Observable {\n return this.service.listCustomObjectFilters(request);\n }\n\n getMultiObject(request: GetMultiCrmObjectRequestInterface): Observable {\n return this.service.getMultiCustomObject(request);\n }\n\n listFieldOptions(request: ListFieldOptionsRequestInterface): Observable {\n return this.service.listCustomObjectFieldOptions(request);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport {\n CRMMultiLocationContactApiService,\n ListCrmObjectsRequestInterface,\n ListCrmObjectsResponseInterface,\n ListFieldOptionsRequestInterface,\n ListFieldOptionsResponseInterface,\n ListFiltersRequestInterface,\n ListFiltersResponseInterface,\n ListMultiLocationCrmObjectsRequest,\n ListMultiLocationFieldOptionsRequest,\n ListMultiLocationFiltersRequest,\n} from '@vendasta/crm';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { CrmMultilocationInjectionToken, MultiLocationContext } from '../../../tokens-and-interfaces';\nimport { ContactService } from './_contact.service';\n\n@Injectable({ providedIn: 'root' })\nexport class MultiLocationContactService extends ContactService {\n private multiLocationContactService = inject(CRMMultiLocationContactApiService);\n private multiLocationConfig = inject(CrmMultilocationInjectionToken);\n\n override listObjects(request: ListCrmObjectsRequestInterface): Observable {\n return (this.multiLocationConfig.multiLocationContext$ ?? of({} as MultiLocationContext)).pipe(\n switchMap((multiLocationContext) => {\n const req = {\n multiLocationPath: multiLocationContext.groupId || '',\n namespaces: multiLocationContext.accountGroupsIds || [],\n sortBy: request.sortBy || [],\n filtersV2: request.filtersV2 || {},\n pagingOptions: request.pagingOptions || {},\n } as ListMultiLocationCrmObjectsRequest;\n return this.multiLocationContactService.listMultiLocationContacts(req);\n }),\n map((response) => {\n return {\n crmObjects: response.crmObjects || [],\n pagingMetadata: response.pagingMetadata || {},\n } as ListCrmObjectsResponseInterface;\n }),\n );\n }\n\n override listObjectsFilters(request: ListFiltersRequestInterface): Observable {\n return (this.multiLocationConfig.multiLocationContext$ ?? of({} as MultiLocationContext)).pipe(\n switchMap((multiLocationContext) => {\n const req = {\n multiLocationPath: multiLocationContext.groupId || '',\n namespaces: multiLocationContext.accountGroupsIds || [],\n searchTerm: request.searchTerm || '',\n paging: request.paging || {},\n } as ListMultiLocationFiltersRequest;\n return this.multiLocationContactService.listMultiLocationContactFilters(req);\n }),\n map((response) => {\n return {\n filters: response.filters || [],\n paging: response.paging || {},\n } as ListFiltersResponseInterface;\n }),\n );\n }\n\n override listFieldOptions(request: ListFieldOptionsRequestInterface): Observable {\n return (this.multiLocationConfig.multiLocationContext$ ?? of({} as MultiLocationContext)).pipe(\n switchMap((multiLocationContext) => {\n const req = {\n multiLocationPath: multiLocationContext.groupId || '',\n namespaces: multiLocationContext.accountGroupsIds || [],\n fieldId: request.fieldId || '',\n searchTerm: request.searchTerm || '',\n pageSize: request.pageSize || 0,\n } as ListMultiLocationFieldOptionsRequest;\n return this.multiLocationContactService.listMultiLocationContactFieldOptions(req);\n }),\n map((response) => {\n return {\n options: response.options || [],\n } as ListFieldOptionsResponseInterface;\n }),\n );\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport {\n CreateCrmObjectRequestInterface,\n CreateCrmObjectResponseInterface,\n CrmObjectInterface,\n DeleteCrmObjectRequestInterface,\n GetMultiCrmObjectRequestInterface,\n GetMultiCrmObjectResponseInterface,\n ListCrmObjectsRequestInterface,\n ListCrmObjectsResponseInterface,\n ListFieldOptionsRequestInterface,\n ListFieldOptionsResponseInterface,\n ListFiltersRequestInterface,\n ListFiltersResponseInterface,\n ObjectProjectionFilterInterface,\n SortByInterface,\n SortDirection,\n StartBulkCompanyCreateRequestInterface,\n UpdateCrmObjectRequestInterface,\n ValidateCrmObjectRequestInterface,\n ValidateCrmObjectResponseInterface,\n} from '@vendasta/crm';\nimport { combineLatest, map, Observable, of, switchMap, take } from 'rxjs';\nimport { AbstractCrmObjectService } from './_abstract.service';\nimport { ContactService } from './_contact.service';\nimport { CompanyService } from './_company.service';\nimport { GalaxyFilterInterface } from '@vendasta/galaxy/filter/chips';\nimport { FilterGroupInterface } from '@vendasta/crm/lib/_internal/interfaces/galaxy-filters.interface';\nimport { ActivityObjectService } from './_activity_object.service';\nimport { MatSort } from '@angular/material/sort';\nimport {\n CrmDependencies,\n CrmInjectionToken,\n CrmMultiLocationDependencies,\n CrmMultilocationInjectionToken,\n FieldValueInterface,\n ObjectType,\n} from '../../../tokens-and-interfaces';\nimport { convertGalaxyFilters } from '../../../utils';\nimport { SystemFieldIds } from '../field.service';\nimport { OpportunityService } from './_opportunity.service';\nimport { MultiLocationActivityService } from './multi-location-activity.service';\nimport { CustomObjectService } from './_custom_object.service';\nimport { MultiLocationContactService } from './multi-location-contact.service';\n\n@Injectable()\nexport class CrmObjectService {\n private handledObjectTypes: ObjectType[] = ['Company', 'Contact', 'Activity', 'Opportunity', 'CustomObject'];\n isMultiLocationPage$: Observable;\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n @Inject(CrmMultilocationInjectionToken) private readonly multiLocationConfig: CrmMultiLocationDependencies,\n private readonly contactService: ContactService,\n private readonly companyService: CompanyService,\n private readonly activityService: ActivityObjectService,\n private readonly opportunityService: OpportunityService,\n private readonly multiLocationActivityService: MultiLocationActivityService,\n private readonly multiLocationContactService: MultiLocationContactService,\n private readonly customObjectService: CustomObjectService,\n ) {\n this.isMultiLocationPage$ = multiLocationConfig.isMultiLocation$\n ? combineLatest([multiLocationConfig.isMultiLocation$, config.namespace$]).pipe(\n map(([isMultiLocation, namespace]) => {\n if (namespace !== '') {\n return false;\n }\n return isMultiLocation;\n }),\n )\n : of(false);\n }\n\n createCrmObject(objectType: ObjectType, crmObject: CrmObjectInterface): Observable {\n if (crmObject.fields !== undefined) {\n crmObject.fields = this.setSystemFields(crmObject, crmObject.fields as FieldValueInterface[]);\n }\n\n return this.config.namespace$.pipe(\n take(1),\n switchMap((namespace: string) => {\n const request: CreateCrmObjectRequestInterface = {\n namespace: namespace,\n crmObject: crmObject,\n };\n return this.selectService(objectType).createCrmObject(request);\n }),\n take(1),\n );\n }\n\n deleteCrmObject(namespace: string, objectType: ObjectType, objectId: string): Observable> {\n const request: DeleteCrmObjectRequestInterface = {\n namespace: namespace,\n crmObjectId: objectId,\n };\n return this.selectService(objectType).deleteCrmObject(request).pipe(take(1));\n }\n\n validateCrmObject(\n objectType: ObjectType,\n crmObject: CrmObjectInterface,\n ): Observable {\n const crmObjectCopy = { ...crmObject };\n if (crmObjectCopy.fields !== undefined) {\n crmObjectCopy.fields = this.setSystemFields(crmObjectCopy, crmObjectCopy.fields as FieldValueInterface[]);\n }\n return this.config.namespace$.pipe(\n take(1),\n switchMap((namespace: string) => {\n const request: ValidateCrmObjectRequestInterface = {\n namespace: namespace,\n crmObject: crmObjectCopy,\n };\n return this.selectService(objectType).validateCrmObject(request);\n }),\n take(1),\n );\n }\n\n private setSystemFields(crmObject: CrmObjectInterface, fieldValues: FieldValueInterface[]): FieldValueInterface[] {\n const contactOwnerID = fieldValues.find((field) => field.fieldId === SystemFieldIds.ContactOwnerID);\n if (contactOwnerID) {\n crmObject.ownerId = contactOwnerID.stringValue;\n fieldValues = fieldValues.filter((field) => field.fieldId !== SystemFieldIds.ContactOwnerID);\n }\n const contactGroupID = fieldValues.find((field) => field.fieldId === SystemFieldIds.ContactGroupID);\n if (contactGroupID) {\n crmObject.groupId = contactGroupID.stringValue;\n fieldValues = fieldValues.filter((field) => field.fieldId !== SystemFieldIds.ContactGroupID);\n }\n const contactExternalID = fieldValues.find((field) => field.fieldId === SystemFieldIds.ContactExternalID);\n if (contactExternalID) {\n crmObject.externalId = contactExternalID.stringValue;\n fieldValues = fieldValues.filter((field) => field.fieldId !== SystemFieldIds.ContactExternalID);\n }\n const companyOwnerID = fieldValues.find((field) => field.fieldId === SystemFieldIds.CompanyOwnerID);\n if (companyOwnerID) {\n crmObject.ownerId = companyOwnerID.stringValue;\n fieldValues = fieldValues.filter((field) => field.fieldId !== SystemFieldIds.CompanyOwnerID);\n }\n const companyGroupID = fieldValues.find((field) => field.fieldId === SystemFieldIds.CompanyGroupID);\n if (companyGroupID) {\n crmObject.groupId = companyGroupID.stringValue;\n fieldValues = fieldValues.filter((field) => field.fieldId !== SystemFieldIds.CompanyGroupID);\n }\n const companyExternalID = fieldValues.find((field) => field.fieldId === SystemFieldIds.CompanyExternalID);\n if (companyExternalID) {\n crmObject.externalId = companyExternalID.stringValue;\n fieldValues = fieldValues.filter((field) => field.fieldId !== SystemFieldIds.CompanyExternalID);\n }\n const opportunityOwnerID = fieldValues.find((field) => field.fieldId === SystemFieldIds.OpportunityOwnerID);\n if (opportunityOwnerID) {\n crmObject.ownerId = opportunityOwnerID.stringValue;\n fieldValues = fieldValues.filter((field) => field.fieldId !== SystemFieldIds.OpportunityOwnerID);\n }\n const customObjectOwnerID = fieldValues.find((field) => field.fieldId === SystemFieldIds.CustomObjectOwnerID);\n if (customObjectOwnerID) {\n crmObject.ownerId = customObjectOwnerID.stringValue;\n fieldValues = fieldValues.filter((field) => field.fieldId !== SystemFieldIds.CustomObjectOwnerID);\n }\n const customObjectExternalID = fieldValues.find((field) => field.fieldId === SystemFieldIds.CustomObjectExternalID);\n if (customObjectExternalID) {\n crmObject.externalId = customObjectExternalID.stringValue;\n fieldValues = fieldValues.filter((field) => field.fieldId !== SystemFieldIds.CustomObjectExternalID);\n }\n return fieldValues;\n }\n\n updateCrmObject(objectType: ObjectType, crmObject: CrmObjectInterface): Observable> {\n if (crmObject.fields !== undefined) {\n crmObject.fields = this.setSystemFields(crmObject, crmObject.fields as FieldValueInterface[]);\n }\n const paths: string[] = [];\n crmObject.fields?.forEach((field) => {\n paths.push(`fields.${field.fieldId}`);\n });\n if (crmObject.ownerId) {\n paths.push('OwnerID');\n }\n if (crmObject.groupId) {\n paths.push('GroupID');\n }\n if (crmObject.externalId) {\n paths.push('ExternalId');\n }\n\n return this.config.namespace$.pipe(\n take(1),\n switchMap((namespace: string) => {\n const request: UpdateCrmObjectRequestInterface = {\n namespace: namespace,\n crmObject: crmObject,\n fieldMask: {\n paths: paths,\n },\n };\n return this.selectService(objectType).updateCrmObject(request);\n }),\n take(1),\n );\n }\n\n convertSortBy(sorting: MatSort[] | undefined): SortByInterface[] | undefined {\n if (!sorting) {\n return undefined;\n }\n const sortBy: SortByInterface[] = [];\n\n for (const sort of sorting) {\n if (sort.direction === '') {\n return;\n }\n if (sort.direction === 'asc') {\n sortBy.push({\n fieldId: sort.active,\n sortDirection: SortDirection.SORT_DIRECTION_ASCENDING,\n });\n }\n if (sort.direction === 'desc') {\n sortBy.push({\n fieldId: sort.active,\n sortDirection: SortDirection.SORT_DIRECTION_DESCENDING,\n });\n }\n }\n return sortBy;\n }\n\n convertFilters(filters: GalaxyFilterInterface[] | undefined): FilterGroupInterface | undefined {\n return convertGalaxyFilters(filters);\n }\n\n listObjects(\n objectType: ObjectType,\n request: ListCrmObjectsRequestInterface,\n withNamespace?: string,\n ): Observable {\n return combineLatest([this.config.namespace$, this.isMultiLocationPage$]).pipe(\n switchMap(([namespace, isMultiLocation]) => {\n if (withNamespace) {\n return this.selectService(objectType, false)\n .listObjects({ ...request, namespace: withNamespace })\n .pipe(take(1));\n }\n return this.selectService(objectType, isMultiLocation)\n .listObjects({ ...request, namespace: namespace })\n .pipe(take(1));\n }),\n );\n }\n\n listObjectsFilters(\n objectType: ObjectType,\n request: ListFiltersRequestInterface,\n withNamespace?: string,\n ): Observable {\n return combineLatest([this.config.namespace$, this.isMultiLocationPage$]).pipe(\n switchMap(([namespace, isMultiLocation]) => {\n if (withNamespace) {\n return this.selectService(objectType, false)\n .listObjectsFilters({ ...request, namespace: withNamespace })\n .pipe(take(1));\n }\n return this.selectService(objectType, isMultiLocation)\n .listObjectsFilters({ ...request, namespace: namespace })\n .pipe(take(1));\n }),\n );\n }\n\n getMultiObject(\n objectType: ObjectType,\n crmObjectIds: string[],\n projectionFilter: ObjectProjectionFilterInterface[] = [],\n withNamespaceOverride?: string,\n ): Observable {\n return this.config.namespace$.pipe(\n take(1),\n switchMap((configNamespace) => {\n const namespace = withNamespaceOverride || configNamespace;\n const request: GetMultiCrmObjectRequestInterface = {\n namespace: namespace,\n crmObjectIds: crmObjectIds,\n projectionFilters: projectionFilter,\n };\n return this.selectService(objectType).getMultiObject(request);\n }),\n );\n }\n\n listFieldOptions(\n objectType: ObjectType,\n request: ListFieldOptionsRequestInterface,\n ): Observable {\n return combineLatest([this.config.namespace$, this.isMultiLocationPage$]).pipe(\n switchMap(([namespace, isMultiLocation]) => {\n return this.selectService(objectType, isMultiLocation)\n .listFieldOptions({ ...request, namespace: namespace })\n .pipe(take(1));\n }),\n );\n }\n\n private selectService(objectType: ObjectType, isMultiLocation?: boolean): AbstractCrmObjectService {\n if (!this.handledObjectTypes.includes(objectType)) {\n console.error('Object Type unhandled. The CRM Object Service will be undefined');\n }\n switch (objectType) {\n case 'Contact':\n if (isMultiLocation) {\n return this.multiLocationContactService;\n }\n return this.contactService;\n case 'Company':\n return this.companyService;\n case 'Activity':\n if (isMultiLocation) {\n return this.multiLocationActivityService;\n }\n return this.activityService;\n case 'Opportunity':\n return this.opportunityService;\n case 'CustomObject':\n return this.customObjectService;\n }\n }\n\n startBulkCreate(objectType: ObjectType, searchTerm: string, crmObjects: CrmObjectInterface[]): Observable {\n if (objectType !== 'Company') {\n console.error('Bulk create only supported for Company');\n throw new Error('Bulk create only supported for Company');\n }\n\n return this.config.namespace$.pipe(\n switchMap((namespace) => {\n crmObjects.forEach((crmObject) => {\n crmObject.fields = this.setSystemFields(crmObject, crmObject.fields as FieldValueInterface[]);\n });\n const request: StartBulkCompanyCreateRequestInterface = {\n namespace: namespace,\n searchTerm: searchTerm,\n crmObjects: crmObjects,\n };\n return this.companyService.startBulkCreate(request);\n }),\n map((response) => response?.filterTag),\n take(1),\n );\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CrmObjectInjectionToken, CrmObjectDependencies, ObjectType, ActivityType } from '../../tokens-and-interfaces';\nimport { combineLatest, map, Observable, of } from 'rxjs';\nimport { ObjectNames } from '../../shared-services/crm-object-display.service';\nimport { distinctUntilChanged, shareReplay, take } from 'rxjs/operators';\nimport { TranslateByObjectTypeService } from '../translate-by-object-type/translate-by-object-type.service';\nimport { SentenceCasePipe } from '@vendasta/galaxy/pipes';\nimport { TitleCasePipe } from '@angular/common';\n\ninterface InterpolationParamsWithNames {\n singularObjectName?: string;\n pluralObjectName?: string;\n [key: string]: any;\n}\n\n@Injectable()\nexport class TranslateForCrmObjectService {\n private readonly objectNames$: Observable;\n private readonly sentenceCasePipe = new SentenceCasePipe(new TitleCasePipe());\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly translateByObjectTypeService: TranslateByObjectTypeService,\n @Optional()\n @Inject(CrmObjectInjectionToken)\n private readonly crmObjectDependencies: CrmObjectDependencies,\n ) {\n this.objectNames$ = combineLatest([\n crmObjectDependencies?.singularObjectName$ ?? of(''),\n crmObjectDependencies?.pluralObjectName$ ?? of(''),\n ]).pipe(\n map(([singularObjectName, pluralObjectName]) => {\n return {\n singularObjectName,\n pluralObjectName,\n } as ObjectNames;\n }),\n distinctUntilChanged(),\n shareReplay(1),\n );\n }\n\n getTranslationForCrmObject(\n objectType: ObjectType | ActivityType,\n key: string,\n interpolationParams?: object,\n ): Observable {\n //TODO: remove translateByObjectTypeService call and objectType once crmObjectDependencies is used in all cases\n if (!this.crmObjectDependencies) {\n return of(this.translateByObjectTypeService.getTranslationByObjectType(objectType, key, interpolationParams));\n }\n\n const interpolationParamsWithNames$ = this.addNamesToInterpolateParams(interpolationParams);\n return interpolationParamsWithNames$.pipe(\n map((interpolationParamsWithNames) => {\n const objectKey = `OBJECT.${key}`;\n const translation = this.translateService.instant(objectKey, interpolationParamsWithNames);\n return this.sentenceCasePipe.transform(translation);\n }),\n take(1),\n );\n }\n\n addNamesToInterpolateParams(\n interpolationParams?: InterpolationParamsWithNames,\n ): Observable {\n const interpolationParamsWithNames: InterpolationParamsWithNames = interpolationParams ?? {};\n return this.objectNames$.pipe(\n map(({ singularObjectName, pluralObjectName }: ObjectNames) => {\n interpolationParamsWithNames.singularObjectName = singularObjectName;\n interpolationParamsWithNames.pluralObjectName = pluralObjectName;\n return interpolationParamsWithNames;\n }),\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateByObjectTypeService } from './translate-by-object-type.service';\nimport { ActivityType, ObjectType } from '../../tokens-and-interfaces';\n\n@Pipe({\n name: 'translateByObjectType',\n standalone: true,\n})\nexport class TranslateByObjectTypePipe implements PipeTransform {\n constructor(private readonly translateByObjectType: TranslateByObjectTypeService) {}\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n transform(value: string, objectType: ObjectType | ActivityType, interpolationParams?: Object): string {\n return this.translateByObjectType.getTranslationByObjectType(objectType, value, interpolationParams);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateForCrmObjectService } from './translate-for-crm-object.service';\nimport { Observable } from 'rxjs';\nimport { ActivityType, ObjectType } from '../../tokens-and-interfaces';\n\n@Pipe({\n name: 'translateForCrmObject',\n standalone: true,\n})\nexport class TranslateForCrmObjectPipe implements PipeTransform {\n constructor(private readonly translateForCrmObjectService: TranslateForCrmObjectService) {}\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n transform(value: string, objectType: ObjectType | ActivityType, interpolationParams?: Object): Observable {\n return this.translateForCrmObjectService.getTranslationForCrmObject(objectType, value, interpolationParams);\n }\n}\n","export { TranslationModule } from './translation-module';\nexport { TranslateByObjectTypePipe } from './translate-by-object-type/translate-by-object-type.pipe';\nexport { TranslateByObjectTypeService } from './translate-by-object-type/translate-by-object-type.service';\nexport { TranslateForCrmObjectPipe } from './translate-for-crm-object/translate-for-crm-object.pipe';\nexport { TranslateForCrmObjectService } from './translate-for-crm-object/translate-for-crm-object.service';\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport const LoadingBehavior = trigger('loadingBehavior', [\n state(\n 'loading',\n style({\n visibility: 'hidden',\n opacity: 0,\n }),\n ),\n state(\n 'finished',\n style({\n visibility: 'visible',\n opacity: 1,\n }),\n ),\n transition('loading => finished', [animate('200ms')]),\n transition('finished => loading', [animate('200ms')]),\n]);\n\nexport const FadeIn = trigger('fadeIn', [\n transition(':enter', [style({ opacity: 0 }), animate('200ms', style({ opacity: 1 }))]),\n transition(':leave', [animate('200ms', style({ opacity: 0 }))]),\n]);\n\nexport const AutoFill = trigger('autoFill', [\n state(\n 'highlight',\n style({\n backgroundColor: 'rgba(88, 179, 243, 0.2)',\n }),\n ),\n state(\n 'default',\n style({\n backgroundColor: 'unset',\n }),\n ),\n transition('default => highlight', [animate('1s')]),\n transition('highlight => default', [animate('1s')]),\n]);\n","export * from './src';\n","export * from './public_api';\n","import { booleanAttribute, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'glxy-sticky-footer',\n templateUrl: './sticky-footer.component.html',\n styleUrls: ['./sticky-footer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class StickyFooterComponent {\n @HostBinding('class') class = 'glxy-sticky-footer';\n\n @HostBinding('class.right-aligned')\n @Input({ transform: booleanAttribute })\n rightAligned = false;\n}\n","\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: 'glxy-sticky-footer-secondary, [glxyStickyFooterSecondary]',\n standalone: false,\n})\nexport class StickyFooterSecondaryDirective {\n @HostBinding('class') class = 'glxy-sticky-footer-secondary';\n}\n","import { NgModule } from '@angular/core';\nimport { StickyFooterComponent } from './sticky-footer.component';\nimport { StickyFooterSecondaryDirective } from './directives/sticky-footer-secondary.directive';\nimport { CommonModule } from '@angular/common';\nexport { StickyFooterSecondaryDirective } from './directives/sticky-footer-secondary.directive';\nexport { StickyFooterComponent } from './sticky-footer.component';\n\nexport const MODULE_EXPORTS = [StickyFooterComponent, StickyFooterSecondaryDirective];\n\nexport const MODULE_DECLARATIONS = [StickyFooterComponent, StickyFooterSecondaryDirective];\n\nexport const MODULE_IMPORTS = [CommonModule];\n@NgModule({\n declarations: MODULE_DECLARATIONS,\n imports: MODULE_IMPORTS,\n exports: MODULE_EXPORTS,\n})\nexport class GalaxyStickyFooterModule {}\n","export * from './src/sticky-footer.module';\n","// Export things like public API, and interfaces from here.\nexport * from './public_api';\n","import { MediaMatcher } from '@angular/cdk/layout';\nimport { ChangeDetectorRef, Component, HostBinding, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { MatSidenav } from '@angular/material/sidenav';\n\n@Component({\n selector: 'glxy-in-page-nav',\n templateUrl: './page-nav.component.html',\n styleUrls: ['./page-nav.component.scss'],\n standalone: false,\n})\nexport class PageNavComponent implements OnDestroy {\n @HostBinding('class') class = 'glxy-in-page-nav';\n @ViewChild('pageNav') pageNav?: MatSidenav;\n\n /** Override the label of the mobile nav toggle button. Default: \"Contents\" */\n @Input() toggleLabel?: string;\n\n mobileQuery: MediaQueryList;\n private _mobileQueryListener: () => void;\n\n constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher) {\n this.mobileQuery = media.matchMedia('(max-width: 768px)');\n this._mobileQueryListener = () => changeDetectorRef.detectChanges();\n window.addEventListener('resize', this._mobileQueryListener);\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('resize', this._mobileQueryListener);\n }\n\n togglePageNav(): void {\n this.pageNav?.toggle();\n }\n}\n","\n \n \n \n \n @if (mobileQuery.matches) {\n \n }\n \n @if (mobileQuery.matches) {\n
\n }\n
\n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PageNavComponent } from './page-nav.component';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nexport { PageNavComponent };\n\nexport const MODULE_IMPORTS = [CommonModule];\n\nexport const MODULE_DECLARATIONS = [PageNavComponent];\n\n@NgModule({\n declarations: MODULE_DECLARATIONS,\n imports: [MODULE_IMPORTS, MatSidenavModule, MatIconModule, MatButtonModule, TranslateModule],\n exports: [PageNavComponent],\n})\nexport class GalaxyPageNavModule {}\n","export * from './src/page-nav.module';\n","// Export things like public API, and interfaces from here.\nexport * from './public_api';\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'glxy-nav-layout',\n templateUrl: './nav-layout.component.html',\n styleUrls: ['./nav-layout.component.scss'],\n standalone: false,\n})\nexport class GalaxyNavLayoutComponent {\n @HostBinding('class') class = 'glxy-nav-layout';\n}\n","\n\n
\n \n
\n\n\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { booleanAttribute, Component, HostBinding, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'glxy-nav-item-list',\n templateUrl: './nav-item-list.component.html',\n styleUrls: ['./nav-item-list.component.scss'],\n animations: [\n trigger('openClose', [\n state(\n 'open',\n style({\n height: '*',\n opacity: 1,\n }),\n ),\n state(\n 'closed',\n style({\n height: '0px',\n opacity: 0,\n }),\n ),\n transition('* => *', [animate('0.2s')]),\n ]),\n ],\n standalone: false,\n})\nexport class GalaxyNavItemListComponent implements OnInit {\n @HostBinding('class') class = 'glxy-nav-item-list';\n\n /** Material icon name, or custom SVG icon **/\n @Input() icon?: string;\n\n /** If your icon is a custom SVG **/\n @Input({ transform: booleanAttribute }) isSvg = false;\n\n /** Should the submenu start in the expanded state or not **/\n @Input({ transform: booleanAttribute }) startExpanded = false;\n\n _isOpen = false;\n\n get isOpen(): boolean {\n return this._isOpen;\n }\n set isOpen(open: boolean) {\n this._isOpen = open;\n }\n\n ngOnInit(): void {\n this._isOpen = this.startExpanded;\n }\n\n toggleOpen(): void {\n this.isOpen = !this.isOpen;\n }\n}\n","
\n \n
\n
\n
\n \n
\n
\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: 'glxy-nav-item-list-items, [glxyNavItemListItems]',\n standalone: false,\n})\nexport class GalaxyNavItemListItemsDirective {\n @HostBinding('class') class = 'glxy-nav-item-list-items';\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: 'glxy-nav-item-accessory, [glxyNavItemAccessory]',\n standalone: false,\n})\nexport class GalaxyNavItemAccessoryDirective {\n @HostBinding('class') class = 'glxy-nav-item-accessory';\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { GalaxyNavLayoutComponent } from './nav-layout.component';\nexport { GalaxyNavLayoutComponent };\n\nimport { GalaxyNavItemListComponent } from './components/nav-item-list/nav-item-list.component';\nexport { GalaxyNavItemListComponent };\n\nimport { GalaxyNavItemListItemsDirective } from './directives/nav-item-list-items.directive';\nexport { GalaxyNavItemListItemsDirective };\n\nimport { GalaxyNavHeaderDirective } from './directives/nav-header.directive';\nexport { GalaxyNavHeaderDirective };\n\nimport { GalaxyNavFooterDirective } from './directives/nav-footer.directive';\nexport { GalaxyNavFooterDirective };\n\nimport { GalaxyNavSubheaderDirective } from './directives/nav-subheader.directive';\nexport { GalaxyNavSubheaderDirective };\n\nimport { GalaxyNavItemAccessoryDirective } from './directives/nav-item-accessory.directive';\nexport { GalaxyNavItemAccessoryDirective };\n\nexport const MODULE_IMPORTS = [CommonModule, RouterModule, MatIconModule, MatRippleModule, TranslateModule];\n\nexport const MODULE_DECLARATIONS = [\n GalaxyNavLayoutComponent,\n GalaxyNavHeaderDirective,\n GalaxyNavFooterDirective,\n GalaxyNavSubheaderDirective,\n GalaxyNavItemAccessoryDirective,\n GalaxyNavItemListItemsDirective,\n GalaxyNavItemListComponent,\n];\n\n@NgModule({\n declarations: MODULE_DECLARATIONS,\n imports: MODULE_IMPORTS,\n exports: [\n GalaxyNavLayoutComponent,\n GalaxyNavHeaderDirective,\n GalaxyNavFooterDirective,\n GalaxyNavSubheaderDirective,\n GalaxyNavItemAccessoryDirective,\n GalaxyNavItemListItemsDirective,\n GalaxyNavItemListComponent,\n ],\n})\nexport class GalaxyNavLayoutModule {}\n","export * from './src/nav-layout.module';\n","// Export things like public API, and interfaces from here.\nexport * from './public_api';\n","import { EventEmitter, inject, signal } from '@angular/core';\nimport {\n BehaviorSubject,\n debounceTime,\n distinctUntilChanged,\n firstValueFrom,\n from,\n map,\n Observable,\n switchMap,\n withLatestFrom,\n} from 'rxjs';\nimport { ListCrmObjectsRequestInterface } from '@vendasta/crm';\nimport {\n AssociationFormField,\n CrmInjectionToken,\n ObjectAssociationType,\n ObjectType,\n} from '../../tokens-and-interfaces';\nimport { CrmFiltersService, CrmObjectDisplayService, CrmObjectService } from '../../shared-services';\n\nexport interface FormFieldAssociation {\n name?: string;\n associationInfo?: string;\n crmObjectType?: ObjectType | ObjectAssociationType;\n crmObjectId?: string;\n crmObjectSubtype?: string;\n}\n\nexport interface UpdateAssociationFormFieldParams {\n associationFormFields: AssociationFormField[];\n actionEventEmitter: EventEmitter;\n}\n\nexport abstract class CrmAssociationFormField {\n protected readonly customizationService = inject(CrmObjectDisplayService);\n protected abstract crmObjectType: T;\n\n protected readonly config = inject(CrmInjectionToken);\n protected readonly crmObjectService = inject(CrmObjectService);\n protected readonly crmFiltersService = inject(CrmFiltersService);\n protected readonly associationsList = signal([]);\n protected readonly searchTerm$$ = new BehaviorSubject('');\n protected readonly options$ = this.setupSearchTerm();\n\n protected abstract fetchObjects(objectIds: string[], withNamespace?: string): Promise;\n protected abstract setupSearchTerm(): Observable;\n\n protected readonly namespaceForAssociations = signal('');\n protected setNamespace(n: string): void {\n this.namespaceForAssociations.set(n);\n }\n\n protected async setAssociations(associations: FormFieldAssociation[]): Promise {\n const existingAssociations = this.associationsList();\n // Infer existing names from existing associations\n associations\n .filter((association) => !association.name)\n .forEach((association) => {\n const existing = existingAssociations.find((item) => item.crmObjectId === association.crmObjectId);\n association.name = existing?.name || '';\n });\n // fetch missing names\n const objectsToFetch = associations\n .filter((association) => !association.name)\n .map((association) => association.crmObjectId!);\n if (objectsToFetch.length > 0) {\n const objects = await this.fetchObjects(objectsToFetch, this.namespaceForAssociations());\n objects.forEach((object) => {\n const association = associations.find((item) => item.crmObjectId === object.crmObjectId);\n if (association) {\n association!.name = object.name;\n }\n });\n }\n this.associationsList.set(associations);\n }\n\n protected updateSearchTerm(searchTerm?: unknown): void {\n if (typeof searchTerm === 'string') {\n this.searchTerm$$.next(searchTerm.trim());\n } else {\n this.searchTerm$$.next('');\n }\n }\n}\n\nexport abstract class CrmObjectAssociationFormField extends CrmAssociationFormField {\n protected async fetchObjects(objectIds: string[], withNamespace?: string): Promise {\n const crmObjs = await firstValueFrom(\n this.crmObjectService.getMultiObject(this.crmObjectType, objectIds, [], withNamespace),\n );\n return (\n crmObjs?.crmObjects?.map(\n (obj) =>\n ({\n name: this.customizationService.getObjectDisplayName(this.crmObjectType, obj),\n crmObjectId: obj.crmObjectId,\n crmObjectType: this.crmObjectType,\n }) as FormFieldAssociation,\n ) ?? []\n );\n }\n\n async buildListCrmObjectsRequest(namespace: string, searchTerm: string): Promise {\n const initialFilters = await this.crmFiltersService.getInitialAppliedFilters$(\n this.crmObjectType,\n undefined,\n undefined,\n false,\n this.namespaceForAssociations(),\n );\n return {\n namespace,\n search: { searchTerm },\n pagingOptions: { cursor: '', pageSize: 10 },\n filtersV2: this.crmObjectService.convertFilters(initialFilters),\n } as ListCrmObjectsRequestInterface;\n }\n\n protected setupSearchTerm(): Observable {\n return this.searchTerm$$.asObservable().pipe(\n debounceTime(300),\n distinctUntilChanged(),\n withLatestFrom(this.config.namespace$),\n switchMap(([searchTerm, namespace]) => from(this.buildListCrmObjectsRequest(namespace, searchTerm))),\n switchMap((r: ListCrmObjectsRequestInterface) =>\n this.crmObjectService.listObjects(this.crmObjectType, r, this.namespaceForAssociations()),\n ),\n map(\n (filteredOptions) =>\n filteredOptions?.crmObjects?.map(\n (option) =>\n ({\n name: this.customizationService.getObjectDisplayName(this.crmObjectType, option),\n associationInfo: this.customizationService.getAssociationInfo(this.crmObjectType, option),\n crmObjectId: option.crmObjectId,\n crmObjectType: this.crmObjectType,\n }) as FormFieldAssociation,\n ) || [],\n ),\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nconst DefaultMaxChars = 20;\n\n@Pipe({\n name: 'crmTruncate',\n standalone: true,\n})\nexport class CrmTruncatePipe implements PipeTransform {\n transform(text?: string, maxChars?: number, hideEllipsis?: boolean): string {\n const max = maxChars || DefaultMaxChars;\n if (!text) {\n return '';\n }\n if (text.length <= max) {\n return text;\n }\n\n if (hideEllipsis) {\n return text.slice(0, max);\n }\n return text.slice(0, max) + '...';\n }\n}\n","import {\n Component,\n computed,\n effect,\n EventEmitter,\n Inject,\n InputSignal,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { GalaxyPageNavModule } from '@vendasta/galaxy/page-nav';\nimport { GalaxyNavItemComponent } from '@vendasta/galaxy/nav';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogRef } from '@angular/material/dialog';\nimport { CrmDependencies, CrmInjectionToken, ObjectType } from '../../../tokens-and-interfaces';\nimport { UpdateAssociationFormFieldParams, FormFieldAssociation } from '../interface';\nimport { GalaxyNavLayoutModule } from '@vendasta/galaxy/nav-layout';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { AssociationFormField } from '../../../tokens-and-interfaces';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatButton } from '@angular/material/button';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { CRMCustomObjectTypeApiService, ListCustomObjectTypesRequestInterface } from '@vendasta/crm';\nimport { map, shareReplay, switchMap, take } from 'rxjs/operators';\nimport { ListCustomObjectTypesResponse } from '@vendasta/crm/lib/_internal/objects';\nimport { BehaviorSubject, combineLatest, Observable, of, tap, distinctUntilChanged } from 'rxjs';\nimport { AsyncPipe } from '@angular/common';\nimport { GalaxyPopoverModule } from '@vendasta/galaxy/popover';\nimport { TranslateByObjectTypeService } from '../../../i18n';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport interface AssociationFormModalData {\n isMobile: InputSignal;\n initialObjectType: ObjectType;\n initialObjectSubtype?: string;\n associationFormFields: AssociationFormField[];\n options: InputSignal;\n updateAssociation: (associationParams: UpdateAssociationFormFieldParams) => void;\n updateAssociationEventEmitter: EventEmitter;\n searchTermChangeEventEmitter: EventEmitter;\n objectTypeEmitter: EventEmitter<[ObjectType, string?]>;\n}\n\ninterface AssociationGroup {\n name: string;\n objectType: ObjectType;\n objectSubtype?: string;\n associations?: FormFieldAssociation[];\n}\n\n@Component({\n // requires selector to prevent ID collision\n selector: 'crm-association-form-modal',\n templateUrl: './association-form-modal.component.html',\n styleUrls: ['./association-form-modal.component.scss'],\n imports: [\n GalaxyPageModule,\n GalaxyPageNavModule,\n GalaxyNavItemComponent,\n GalaxyNavLayoutModule,\n GalaxyBadgeModule,\n FormsModule,\n GalaxyFormFieldModule,\n ReactiveFormsModule,\n MatCheckbox,\n MatButton,\n MatDialogActions,\n TranslateModule,\n GalaxyLoadingSpinnerModule,\n AsyncPipe,\n GalaxyPopoverModule,\n MatMenuModule,\n MatDivider,\n MatIconModule,\n ],\n})\nexport class CrmAssociationFormModalComponent {\n protected objectType: WritableSignal;\n protected objectSubtype: WritableSignal;\n protected viewAllSelected = signal(true);\n\n protected searchCtrl = new FormControl('');\n private searchTerm$$ = new BehaviorSubject(null);\n protected isLoadingOptions = true;\n private isLoadingSelectedView = true;\n protected isLoadingSelectedView$: Observable;\n\n protected totalAssociations: Signal = computed(() => {\n return this.associationFormFields().reduce((count, field) => count + (field.associations?.length || 0), 0);\n });\n protected associationTabs$: Observable = of([]);\n private displayedAssociationFormFields$$: BehaviorSubject = new BehaviorSubject<\n AssociationFormField[]\n >([]);\n protected displayedAssociationGroups$: Observable = of([]);\n\n protected isMobile: InputSignal;\n private readonly associationFormFields: WritableSignal;\n protected options: InputSignal;\n private readonly updateAssociation: (associationParams: UpdateAssociationFormFieldParams) => void;\n private readonly updateAssociationEventEmitter: EventEmitter;\n private readonly searchTermChangeEventEmitter: EventEmitter;\n private readonly objectTypeEmitter: EventEmitter<[ObjectType, string?]>;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: AssociationFormModalData,\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private dialogRef: MatDialogRef,\n private readonly customObjectTypeService: CRMCustomObjectTypeApiService,\n private readonly translateByObjectTypeService: TranslateByObjectTypeService,\n private readonly translateService: TranslateService,\n ) {\n this.isMobile = data.isMobile;\n this.objectType = signal(data.initialObjectType);\n this.objectSubtype = signal(data.initialObjectSubtype);\n this.associationFormFields = signal(data.associationFormFields);\n this.options = data.options;\n this.updateAssociation = data.updateAssociation;\n this.updateAssociationEventEmitter = data.updateAssociationEventEmitter;\n this.searchTermChangeEventEmitter = data.searchTermChangeEventEmitter;\n this.objectTypeEmitter = data.objectTypeEmitter;\n\n this.handleTabChange(this.objectType(), true, this.objectSubtype());\n this.updateSearchTerm(null);\n\n this.searchCtrl.valueChanges\n .pipe(takeUntilDestroyed())\n .subscribe((searchTerm: string | null) => this.updateSearchTerm(searchTerm));\n\n this.associationTabs$ = this.getAssociationTabs();\n\n this.displayedAssociationGroups$ = combineLatest([\n this.displayedAssociationFormFields$$,\n this.associationTabs$,\n this.searchTerm$$,\n ]).pipe(\n tap(() => (this.isLoadingSelectedView = true)),\n map(\n ([displayedAssociationFormFields, associationTabs, searchTerm]: [\n AssociationFormField[],\n AssociationGroup[],\n string | null,\n ]) => {\n const filteredAssociationFormFields = this.filterAssociationFormFields(\n displayedAssociationFormFields,\n searchTerm,\n );\n return associationTabs.map((associationTab) => {\n let associations =\n filteredAssociationFormFields.find((field) => {\n return field.type === associationTab.objectType;\n })?.associations || [];\n if (associationTab.objectType === 'CustomObject') {\n associations = associations.filter((association) => {\n return association.crmObjectSubtype === associationTab.objectSubtype;\n });\n }\n return {\n ...associationTab,\n associations,\n } as AssociationGroup;\n });\n },\n ),\n tap(() => (this.isLoadingSelectedView = false)),\n shareReplay(),\n );\n\n this.isLoadingSelectedView$ = this.displayedAssociationGroups$.pipe(map(() => this.isLoadingSelectedView));\n\n effect(() => {\n this.options();\n this.isLoadingOptions = false;\n });\n }\n\n private filterAssociationFormFields(\n displayedAssociationFormFields: AssociationFormField[],\n searchTerm: string | null,\n ): AssociationFormField[] {\n return displayedAssociationFormFields.map((field) => {\n return {\n ...field,\n associations: field.associations.filter((association: FormFieldAssociation) => {\n return (\n !searchTerm || !association.name || association.name.toLowerCase().includes(searchTerm.toLowerCase().trim())\n );\n }),\n } as AssociationFormField;\n });\n }\n\n protected onCheckboxChange(event: MatCheckboxChange, option: FormFieldAssociation, objectType: ObjectType): void {\n if (event.checked) {\n this.handleAddAssociation(option, objectType);\n } else {\n this.handleRemoveAssociation(option, objectType);\n }\n }\n\n private handleAddAssociation(association: FormFieldAssociation, objectType: ObjectType): void {\n if (!association.crmObjectType || !association.crmObjectId) {\n return;\n }\n this.associationFormFields.update((associationFormFields) =>\n associationFormFields.map((field: AssociationFormField) => {\n if (field.type === objectType) {\n if (!field.associations.find((a) => a.crmObjectId === association.crmObjectId)) {\n return { ...field, associations: [...field.associations, association] };\n }\n }\n return field;\n }),\n );\n }\n\n private handleRemoveAssociation(association: FormFieldAssociation, objectType: ObjectType): void {\n if (!association.crmObjectType || !association.crmObjectId) {\n return;\n }\n this.associationFormFields.update((associationFormFields) =>\n associationFormFields.map((field: AssociationFormField) => {\n if (field.type === objectType) {\n const updatedAssociations = field.associations.filter((a) => a.crmObjectId !== association.crmObjectId);\n return { ...field, associations: updatedAssociations };\n }\n return field;\n }),\n );\n }\n\n protected isLastAssociation(association: FormFieldAssociation): boolean {\n if (this.totalAssociations() > 1) {\n return false;\n }\n return !!this.associationFormFields().find((field) => {\n if (field.type === association.crmObjectType) {\n return field.associations.find((a) => a.crmObjectId === association.crmObjectId);\n }\n return false;\n });\n }\n\n protected handleTabChange(objectType: ObjectType, setViewAllSelected: boolean, objectSubtype?: string): void {\n this.viewAllSelected.set(setViewAllSelected);\n if (setViewAllSelected) {\n this.isLoadingSelectedView = true;\n this.displayedAssociationFormFields$$.next(JSON.parse(JSON.stringify(this.associationFormFields())));\n }\n if (objectType !== this.objectType() || objectSubtype !== this.objectSubtype()) {\n this.isLoadingOptions = true;\n this.objectType.set(objectType);\n this.objectSubtype.set(objectSubtype);\n this.objectTypeEmitter.emit([this.objectType(), this.objectSubtype()]);\n }\n }\n\n private getAssociationTabs(): Observable {\n const associationTabs: AssociationGroup[] = [];\n let customObjectTabs$: Observable | null = null;\n\n for (const association of this.associationFormFields()) {\n if (association.type === 'CustomObject') {\n customObjectTabs$ = this.getCustomObjectTypes().pipe(\n map((response) => {\n if (!response.customObjectTypes) {\n return [];\n }\n return response.customObjectTypes.map((customObjectType) => {\n return {\n name: this.translateService.instant('OBJECT.TITLE_SINGLE', {\n singularObjectName: customObjectType.singularObjectName,\n }),\n objectType: association.type,\n objectSubtype: customObjectType.customObjectTypeId,\n } as AssociationGroup;\n });\n }),\n );\n } else {\n associationTabs.push({\n name: this.translateByObjectTypeService.getTranslatedObjectType(association.type),\n objectType: association.type,\n } as AssociationGroup);\n }\n }\n\n if (customObjectTabs$) {\n return customObjectTabs$.pipe(\n take(1),\n map((customObjectTabs) => {\n return [...associationTabs, ...customObjectTabs];\n }),\n shareReplay(1),\n );\n } else {\n return of(associationTabs).pipe(take(1), shareReplay(1));\n }\n }\n\n getCurrentTabName(): Observable {\n return this.associationTabs$.pipe(\n distinctUntilChanged(),\n map((associationTabs) => {\n if (this.viewAllSelected()) {\n return this.translateService.instant('ACTIONS.SELECTED');\n }\n const currentTab = associationTabs.find(\n (tab) => tab.objectType === this.objectType() && tab.objectSubtype === this.objectSubtype(),\n );\n return currentTab?.name ?? '';\n }),\n shareReplay(1),\n );\n }\n\n private getCustomObjectTypes(): Observable {\n return this.config.namespace$.pipe(\n take(1),\n switchMap((namespace) => {\n return this.customObjectTypeService.listCustomObjectTypes({\n namespace: namespace,\n } as ListCustomObjectTypesRequestInterface);\n }),\n shareReplay(1),\n );\n }\n\n protected getGroupTotalAssociations(objectType: ObjectType, objectSubtype?: string) {\n return computed(() => {\n const associations =\n this.associationFormFields().find((field) => {\n return field.type === objectType;\n })?.associations || [];\n if (objectType === 'CustomObject') {\n return associations.filter((association) => {\n return association.crmObjectSubtype === objectSubtype;\n }).length;\n }\n return associations.length;\n });\n }\n\n private updateSearchTerm(searchTerm: string | null): void {\n this.searchTerm$$.next(searchTerm);\n this.searchTermChangeEventEmitter.emit(searchTerm);\n }\n\n protected isSelectedAssociation(association: FormFieldAssociation, objectType: ObjectType): boolean {\n return this.associationFormFields().some(\n (field) => field.type === objectType && field.associations.some((a) => a.crmObjectId === association.crmObjectId),\n );\n }\n\n protected isSelectedTab(objectType: ObjectType, objectSubtype?: string): Signal {\n return computed(\n () => !this.viewAllSelected() && this.objectType() === objectType && this.objectSubtype() === objectSubtype,\n );\n }\n\n protected handleSave(): void {\n this.updateAssociation({\n associationFormFields: this.associationFormFields(),\n actionEventEmitter: this.updateAssociationEventEmitter,\n } as UpdateAssociationFormFieldParams);\n this.dialogRef.close();\n }\n\n protected handleCancel(): void {\n this.dialogRef.close();\n }\n}\n","
\n @if (!isMobile()) {\n \n \n
{{ 'ACTIONS.SELECTED' | translate }}
\n \n \n {{ totalAssociations() }}\n \n \n \n @for (tab of associationTabs$ | async; track tab) {\n @let isSelected = isSelectedTab(tab.objectType, tab.objectSubtype)();\n \n
{{ tab.name }}
\n \n \n {{ getGroupTotalAssociations(tab.objectType, tab.objectSubtype)() }}\n \n \n \n }\n
\n }\n \n
\n @if (isMobile()) {\n
{{ 'ASSOCIATIONS.ACTIONS.TITLE' | translate }}
\n
\n \n \n \n @for (tab of associationTabs$ | async; track tab) {\n \n }\n \n
\n \n }\n \n \n \n @if (viewAllSelected()) {\n @if ((isLoadingSelectedView$ | async) === false) {\n @for (group of displayedAssociationGroups$ | async; track group) {\n @if (group.associations?.length > 0) {\n \n
\n {{ group.name }}\n
\n @for (association of group.associations; track association.crmObjectId) {\n @let isLast = isLastAssociation(association);\n \n \n {{ association.name }}\n \n
\n \n
{{ 'ACTIVITY_LOGGER.EMPTY_ASSOCIATIONS' | translate }}
\n
\n }\n \n }\n }\n } @else {\n \n }\n } @else {\n @if (!isLoadingOptions) {\n \n @for (option of options(); track option.crmObjectId) {\n @let isLast = isLastAssociation(option);\n
\n \n {{ option.name }}\n \n
\n \n
{{ 'ACTIVITY_LOGGER.EMPTY_ASSOCIATIONS' | translate }}
\n
\n }\n
\n } @else {\n \n }\n }\n
\n \n \n \n \n \n\n","import { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, EventEmitter, input, Input, Output, signal } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CrmTruncatePipe } from '../../shared-pipes/truncate.pipe';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { UpdateAssociationFormFieldParams, FormFieldAssociation } from './interface';\nimport { AssociationFormField, ObjectType } from '../../tokens-and-interfaces';\nimport {\n AssociationFormModalData,\n CrmAssociationFormModalComponent,\n} from './association-form-modal/association-form-modal.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { take } from 'rxjs/operators';\n\n@Component({\n selector: 'crm-association-form-field',\n templateUrl: './association-form-field.component.html',\n styleUrls: ['./association-form-field.component.scss'],\n imports: [\n CommonModule,\n MatIconModule,\n MatChipsModule,\n MatInputModule,\n ReactiveFormsModule,\n TextFieldModule,\n MatAutocompleteModule,\n MatTooltipModule,\n CrmTruncatePipe,\n ],\n})\nexport class CrmAssociationFormFieldComponent {\n useAssociationFormFields = input(false);\n\n private _associations = signal([]);\n @Input() set associations(associationList: FormFieldAssociation[]) {\n this._associations.set(associationList);\n }\n get associations(): FormFieldAssociation[] {\n return this._associations();\n }\n\n protected _associationFormFields = signal([]);\n @Input() set associationFormFields(associationFormFieldList: AssociationFormField[]) {\n this._associationFormFields.update(() => associationFormFieldList);\n }\n get associationFormFields(): AssociationFormField[] {\n return this._associationFormFields();\n }\n\n editableAssociations = computed(() => {\n const formFields = this._associationFormFields();\n if (this.useAssociationFormFields()) {\n const editableFormFieldAssociations = [];\n for (const associationFormField of formFields) {\n const curEditableFormFieldAssociations =\n associationFormField.associations?.filter((association) => association?.name !== '') || [];\n editableFormFieldAssociations.push(...curEditableFormFieldAssociations);\n }\n return editableFormFieldAssociations;\n } else {\n return this._associations().filter((association) => association?.name !== '');\n }\n });\n\n @Input() fixedId: string | null = null;\n @Input({ transform: coerceBooleanProperty }) mobile: boolean | null = null;\n @Input() placeholder = '';\n @Input() currentSearchTermObjectType: ObjectType = 'Contact';\n @Input() currentSearchTermObjectSubtype: string | undefined;\n options = input([]);\n isMobile = input(false);\n\n @Output() add = new EventEmitter();\n @Output() remove = new EventEmitter();\n @Output() update = new EventEmitter();\n @Output() searchTermChange = new EventEmitter();\n @Output() objectType = new EventEmitter<[ObjectType, string?]>();\n\n protected showAdditionalChips = false;\n protected readonly separatorKeyCodes: number[] = [ENTER, COMMA];\n\n searchCtrl = new FormControl('');\n\n constructor(private readonly dialog: MatDialog) {\n this.searchCtrl.valueChanges\n .pipe(takeUntilDestroyed())\n .subscribe((searchTerm) => this.searchTermChange.emit(searchTerm));\n }\n\n protected handleRemoveOption(option: FormFieldAssociation): void {\n if (this.useAssociationFormFields()) {\n this.removeAssociationFromAssociationFormFields(option);\n } else {\n this.removeAssociation(option);\n }\n }\n\n protected handleSelectOption(event: MatAutocompleteSelectedEvent): void {\n if (!event.option.value) {\n return;\n }\n this.addAssociation(event.option.value);\n this.searchCtrl.setValue('');\n }\n\n private removeAssociation(association: FormFieldAssociation) {\n if (association.crmObjectId !== this.fixedId) {\n this.remove.emit(association);\n }\n }\n\n private removeAssociationFromAssociationFormFields(option: FormFieldAssociation) {\n this.remove.emit(option);\n }\n\n private addAssociation(association: FormFieldAssociation): void {\n if (!association.crmObjectType || !association.crmObjectId) {\n return;\n }\n if (!this.associations.find((a) => a.crmObjectId === association.crmObjectId)) {\n this.add.emit(association);\n }\n }\n\n private updateAssociationFormFields(associationParams: UpdateAssociationFormFieldParams): void {\n associationParams.actionEventEmitter.emit(associationParams.associationFormFields);\n }\n\n protected openAssociationFormModal(): void {\n this.dialog\n .open(CrmAssociationFormModalComponent, {\n width: '500px',\n height: '350px',\n autoFocus: false,\n data: {\n isMobile: this.isMobile,\n initialObjectType: this.currentSearchTermObjectType,\n initialObjectSubtype: this.currentSearchTermObjectSubtype,\n associationFormFields: this._associationFormFields(),\n options: this.options,\n updateAssociation: this.updateAssociationFormFields,\n updateAssociationEventEmitter: this.update,\n searchTermChangeEventEmitter: this.searchTermChange,\n objectTypeEmitter: this.objectType,\n } as AssociationFormModalData,\n })\n .afterClosed()\n .pipe(take(1))\n .subscribe();\n }\n}\n","\n @for (association of editableAssociations(); track association; let first = $first) {\n @if (first || showAdditionalChips) {\n \n {{ association.name | crmTruncate }}\n @if (association.crmObjectId !== fixedId) {\n \n }\n \n }\n }\n @if (editableAssociations().length > 1 && !showAdditionalChips) {\n \n {{ editableAssociations().length - 1 }}\n more\n \n }\n\n @if (useAssociationFormFields()) {\n \n } @else {\n \n }\n\n\n @for (option of options(); track option.crmObjectId) {\n \n {{ option.name }}\n {{ option.associationInfo }}\n \n }\n\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { Observable, switchMap, map, withLatestFrom } from 'rxjs';\nimport { CrmAssociationService } from '../../../shared-services';\nimport { CrmObjectAssociationFormField, FormFieldAssociation } from '../interface';\nimport { CrmAssociationFormFieldComponent } from '../association-form-field.component';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n@Component({\n selector: 'crm-contact-to-company-association-form-field',\n templateUrl: './contact-to-company-association.component.html',\n imports: [CommonModule, CrmAssociationFormFieldComponent],\n})\nexport class CrmContactToCompanyAssociationFormFieldComponent extends CrmObjectAssociationFormField {\n @Input() set namespace(n: string) {\n this.setNamespace(n);\n }\n @Input({ required: true }) set associations(value: FormFieldAssociation[]) {\n this.setAssociations(value);\n }\n @Input() fixedId: string | null = null;\n @Input({ transform: coerceBooleanProperty }) mobile: boolean | null = null;\n @Input() placeholder = '';\n\n @Output() associationsChange = new EventEmitter();\n protected readonly crmObjectType = 'Contact';\n protected readonly crmAssociationService = inject(CrmAssociationService);\n\n protected handleAdd(association: FormFieldAssociation): void {\n const associations = this.associationsList();\n if (!associations.find((a) => a.crmObjectId === association.crmObjectId)) {\n const newAssociations = [...associations, association];\n this.associationsList.set(newAssociations);\n this.associationsChange.emit(newAssociations);\n }\n }\n\n protected handleRemove(association: FormFieldAssociation): void {\n const associations = this.associationsList().filter((a) => a.crmObjectId !== association.crmObjectId);\n this.associationsList.set(associations);\n this.associationsChange.emit(associations);\n }\n\n protected handleSearchTermChange(searchTerm?: unknown): void {\n this.updateSearchTerm(searchTerm);\n }\n\n protected override setupSearchTerm(): Observable {\n return super.setupSearchTerm().pipe(\n withLatestFrom(this.searchTerm$$.asObservable()),\n switchMap((values: [FormFieldAssociation[], string]) => {\n let allAssociations: FormFieldAssociation[] = values[0];\n const searchTerm: string = values[1];\n return this.crmAssociationService.getCachedContactAssociationsForCompany$(this.fixedId || '').pipe(\n map((contacts) => {\n let associatedContacts =\n contacts\n .filter((c) => c.associatedObject)\n .map(\n (contact) =>\n ({\n name: this.customizationService.getObjectDisplayName('Contact', contact.associatedObject),\n associationInfo: this.customizationService.getAssociationInfo(\n 'Contact',\n contact.associatedObject,\n ),\n crmObjectId: contact.associatedObject.crmObjectId,\n crmObjectType: this.crmObjectType,\n }) as FormFieldAssociation,\n ) || [];\n associatedContacts = associatedContacts.filter((c) => contactContains(c, searchTerm));\n allAssociations = allAssociations.filter((a) => !contactIncludes(associatedContacts, a));\n if (associatedContacts.length > 10) {\n associatedContacts = associatedContacts.slice(0, 10);\n }\n return associatedContacts.concat(allAssociations);\n }),\n ) as Observable;\n }),\n );\n }\n}\n\nfunction contactContains(contact: FormFieldAssociation, search: string): boolean {\n if (!search || search === '') return true;\n return (\n contact.name?.toLowerCase().includes(search.toLowerCase()) ||\n contact.associationInfo?.toLowerCase().includes(search.toLowerCase()) ||\n false\n );\n}\n\nfunction contactIncludes(array: FormFieldAssociation[], searchElement: FormFieldAssociation, fromIndex = 0): boolean {\n const len = array.length;\n const startIndex = fromIndex < 0 ? Math.max(0, len + fromIndex) : fromIndex;\n\n for (let i = startIndex; i < len; i++) {\n const currentElement = array[i];\n if (searchElement.crmObjectId === currentElement.crmObjectId) {\n return true;\n }\n if (searchElement === currentElement) {\n return true; // Handles NaN case\n }\n }\n\n return false;\n}\n","\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CrmObjectAssociationFormField, FormFieldAssociation } from '../interface';\nimport { CrmAssociationFormFieldComponent } from '../association-form-field.component';\n\n@Component({\n selector: 'crm-company-association-form-field',\n templateUrl: './company-association.component.html',\n imports: [CommonModule, CrmAssociationFormFieldComponent],\n})\nexport class CrmCompanyAssociationFormFieldComponent extends CrmObjectAssociationFormField {\n @Input({ required: true }) set associations(value: FormFieldAssociation[]) {\n this.setAssociations(value);\n }\n @Input() fixedId: string | null = null;\n @Input({ transform: coerceBooleanProperty }) mobile: boolean | null = null;\n @Input() placeholder = '';\n\n @Output() associationsChange = new EventEmitter();\n\n protected readonly crmObjectType = 'Company';\n\n protected handleAdd(association: FormFieldAssociation): void {\n const associations = this.associationsList();\n if (!associations.find((a) => a.crmObjectId === association.crmObjectId)) {\n const newAssociations = [...associations, association];\n this.associationsList.set(newAssociations);\n this.associationsChange.emit(newAssociations);\n }\n }\n\n protected handleRemove(association: FormFieldAssociation): void {\n const associations = this.associationsList().filter((a) => a.crmObjectId !== association.crmObjectId);\n this.associationsList.set(associations);\n this.associationsChange.emit(associations);\n }\n\n protected handleSearchTermChange(searchTerm?: unknown): void {\n this.updateSearchTerm(searchTerm);\n }\n}\n","\n","import { inject, Injectable } from '@angular/core';\nimport {\n CurrencyInterface,\n FilterGroupOperator,\n FilterOperator,\n GetOpportunityValueSummaryResponseInterface,\n} from '@vendasta/crm';\nimport { combineLatest, of, ReplaySubject, shareReplay } from 'rxjs';\nimport { CrmInjectionToken, ObjectType } from '../../tokens-and-interfaces';\nimport { filter, map, switchMap } from 'rxjs/operators';\nimport { OpportunityService, StandardIds } from '../../shared-services';\n\nexport interface StageAmount {\n stageId?: string;\n amounts?: Amounts;\n}\n\nexport interface ValueSummary {\n pipeline?: Amounts;\n stages?: StageAmount[];\n}\n\nexport interface Amounts {\n total?: CurrencyInterface;\n estimated?: CurrencyInterface;\n}\n\n@Injectable()\nexport class ValueSummaryService {\n protected readonly opportunityService = inject(OpportunityService);\n private readonly config = inject(CrmInjectionToken);\n\n private objectType$$ = new ReplaySubject();\n private pipelineID$$ = new ReplaySubject();\n\n setPipelineId(pipelineId: string) {\n this.pipelineID$$.next(pipelineId);\n }\n\n setObjectType(objectType: ObjectType): void {\n this.objectType$$.next(objectType);\n }\n\n valueSummary$ = combineLatest([this.config.namespace$, this.objectType$$, this.pipelineID$$]).pipe(\n filter(([namespace, objectType, pipelineId]) => !!namespace && !!objectType && !!pipelineId),\n switchMap(([namespace, objectType, pipelineId]) => {\n switch (objectType) {\n case 'Opportunity':\n return this.opportunityService.getValueSummary({\n namespace,\n filters: {\n operator: FilterGroupOperator.FILTER_GROUP_OPERATOR_AND,\n filters: [\n {\n fieldId: StandardIds.OpportunityPipelineID,\n operator: FilterOperator.FILTER_OPERATOR_IS,\n values: [{ string: pipelineId }],\n },\n ],\n },\n });\n default:\n return of(null);\n }\n }),\n map((response) => this.mapValueSummary(response)),\n shareReplay(1),\n );\n\n private mapValueSummary(response: GetOpportunityValueSummaryResponseInterface | null): ValueSummary {\n if (!response) {\n return {};\n }\n\n return {\n pipeline: {\n total: response?.pipeline?.total,\n estimated: response?.pipeline?.estimated,\n },\n stages: response?.stages?.map((stage) => ({\n stageId: stage?.stageId,\n amounts: {\n total: stage?.amounts?.total,\n estimated: stage?.amounts?.estimated,\n },\n })),\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { PaginatedAPIInterface } from '@vendasta/galaxy/table';\nimport { Observable } from 'rxjs';\n\nexport interface CrmBoardDatasourceInterface\n extends PaginatedAPIInterface {\n readonly searchTerm$: Observable;\n readonly filters$: Observable;\n readonly sorting$: Observable;\n\n setSearchTerm(searchTerm?: string): void;\n setFilters(filters?: FilterType[]): void;\n setSorting(sorting?: SortType[]): void;\n}\n\nexport interface CrmBoardColumnInterface {\n id: string;\n name: string;\n filters: FilterType[];\n mutation?: (row: RowType) => Promise;\n probability?: number;\n}\n\nexport interface CrmBoardItemUpdatedEvent {\n item: RowType;\n column: CrmBoardColumnInterface;\n from: CrmBoardColumnInterface;\n}\n\nexport type ItemUpdateStrategy = 'none' | 'cache' | 'refresh';\n\nexport type ItemCompareFn = (a: RowType, b: RowType) => boolean;\nexport type ItemClickedEventFn = (r: RowType) => CrmBoardItemClickedEvent;\n\nexport const CrmBoardItemCompareToken = new InjectionToken>('CrmBoardItemCompareToken');\nexport const CrmBoardItemClickedToken = new InjectionToken>('CrmBoardItemClickedToken');\n\nexport interface CrmBoardColumnMetadataInterface {\n hasMore: boolean;\n totalResults?: number;\n}\n\nexport interface CrmBoardItemClickedEvent {\n objectId: string;\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { JsonPipe } from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'crm-board-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n imports: [MatCardModule, JsonPipe, CommonModule],\n})\nexport class CrmBoardCardComponent {\n @Input({ required: true }) item?: T;\n @Input() cardTemplate?: TemplateRef;\n @Output() clicked: EventEmitter = new EventEmitter();\n\n public handleClick(): void {\n this.clicked.emit();\n }\n}\n","\n \n \n \n\n\n\n {{ item | json }}\n\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n numberAttribute,\n OnInit,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { GalaxyInfiniteScrollTriggerModule } from '@vendasta/galaxy/infinite-scroll-trigger';\nimport { PagedListRequestInterface } from '@vendasta/galaxy/table';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n Subscription,\n switchMap,\n take,\n} from 'rxjs';\nimport {\n CrmBoardColumnInterface,\n CrmBoardColumnMetadataInterface,\n CrmBoardDatasourceInterface,\n CrmBoardItemClickedEvent,\n CrmBoardItemClickedToken,\n CrmBoardItemCompareToken,\n} from '../interfaces';\nimport { CrmBoardCardComponent } from '../card/card.component';\nimport { CdkDragDrop, DragDropModule } from '@angular/cdk/drag-drop';\nimport { DropItemEvent, ItemCacheMutation, ItemCacheOperation } from '../internal';\n\ninterface RequiredInputs {\n datasource: CrmBoardDatasourceInterface;\n column: CrmBoardColumnInterface;\n}\n\n@Component({\n selector: 'crm-board-column',\n templateUrl: './column.component.html',\n styleUrl: './column.component.scss',\n imports: [\n CommonModule,\n GalaxyInfiniteScrollTriggerModule,\n MatProgressBarModule,\n CrmBoardCardComponent,\n DragDropModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrmBoardColumnComponent implements OnInit {\n @Input({ required: true }) datasource?: CrmBoardDatasourceInterface;\n private _column?: CrmBoardColumnInterface;\n @Input({ required: true })\n set column(value: CrmBoardColumnInterface) {\n this._column = value;\n this.reset();\n }\n get column(): CrmBoardColumnInterface | undefined {\n return this._column;\n }\n @Input({ transform: numberAttribute }) pageSize = 5;\n @Input() headerTemplate?: TemplateRef;\n @Input() cardTemplate?: TemplateRef;\n @Output() itemDropped = new EventEmitter>();\n @Output() itemEntered = new EventEmitter();\n @Output() itemClicked = new EventEmitter();\n @Output() columnVisible = new EventEmitter();\n @Output() columnHidden = new EventEmitter();\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly compareFn? = inject(CrmBoardItemCompareToken, { optional: true });\n private readonly clickedFn? = inject(CrmBoardItemClickedToken, { optional: true });\n\n private fetchSubscription?: Subscription;\n\n private readonly cachedMutations$$ = new BehaviorSubject[]>([]);\n private readonly items$$ = new BehaviorSubject([]);\n protected readonly items$ = combineLatest([this.items$$, this.cachedMutations$$]).pipe(\n map(([items, mutations]) => this.applyMutations(items, mutations)),\n );\n private readonly metadata$$ = new BehaviorSubject({ hasMore: false });\n protected readonly metadata$ = combineLatest([this.metadata$$, this.cachedMutations$$]).pipe(\n map(([metadata, mutations]) => this.applyMetadataMutations(metadata, mutations)),\n );\n protected readonly hasMore$ = this.metadata$.pipe(\n map((m) => m.hasMore),\n distinctUntilChanged(),\n );\n protected readonly nextCursor$$ = new BehaviorSubject(null);\n protected readonly loading$$ = new BehaviorSubject(false);\n protected readonly loadMore$$ = new BehaviorSubject(null);\n protected isDroppingTarget = false;\n\n ngOnInit() {\n const { datasource } = this.requireInputs();\n // load more\n combineLatest([this.hasMore$, this.loadMore$$])\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter(([hasMore]) => hasMore),\n debounceTime(100),\n )\n .subscribe({ next: () => this.loadMore() });\n // new search\n combineLatest([datasource.searchTerm$, datasource.filters$, datasource.sorting$])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({ next: () => this.reset() });\n }\n\n reset(): void {\n if (this.fetchSubscription?.closed === false) {\n this.fetchSubscription.unsubscribe();\n }\n this.items$$.next([]);\n this.cachedMutations$$.next([]);\n this.nextCursor$$.next(null);\n this.metadata$$.next({ hasMore: true });\n this.loading$$.next(false);\n }\n\n cacheMutation(operation: ItemCacheOperation, item: RowType): void {\n const mutation: ItemCacheMutation = { operation, item };\n const currentMutations = this.cachedMutations$$.value;\n const existingMutationIndex = currentMutations.findIndex((m) => this.compareItems(m.item, item));\n if (existingMutationIndex >= 0) {\n // remove existing mutation if they offset, do nothing if they are the same\n const existingMutation = currentMutations[existingMutationIndex];\n if (existingMutation.operation !== operation) {\n currentMutations.splice(existingMutationIndex, 1);\n }\n } else {\n currentMutations.push(mutation);\n }\n this.cachedMutations$$.next([...currentMutations]);\n }\n\n protected canDropItem(): boolean {\n return this.column?.mutation !== undefined;\n }\n\n protected dropItemDropped(\n e: CdkDragDrop, CrmBoardColumnInterface, RowType>,\n ): void {\n this.isDroppingTarget = false;\n const event: DropItemEvent = {\n item: e.item.data,\n from: e.previousContainer.data.id,\n to: e.container.data.id,\n };\n if (event.from !== event.to) {\n this.itemDropped.emit(event);\n }\n }\n\n protected dropItemEntered(): void {\n this.isDroppingTarget = true;\n this.itemEntered.emit();\n }\n\n protected dropItemExited(): void {\n this.isDroppingTarget = false;\n }\n\n protected scrollAreaVisible(): void {\n this.loadMore$$.next(null);\n }\n\n protected loadMore(): void {\n const { datasource, column } = this.requireInputs();\n const req = combineLatest([\n datasource.searchTerm$,\n datasource.filters$,\n datasource.sorting$,\n this.nextCursor$$,\n ]).pipe(\n take(1),\n map(([searchTerm, viewFilters, sorting, cursor]) => {\n const columnFilters = column.filters ?? [];\n const compoundFilters = [...viewFilters, ...columnFilters];\n return {\n searchOptions: { text: searchTerm },\n filters: compoundFilters,\n sorting: sorting,\n pagingOptions: { cursor: cursor || '', pageSize: this.pageSize },\n } as PagedListRequestInterface;\n }),\n switchMap((request) => datasource.get(request)),\n );\n\n this.loading$$.next(true);\n this.fetchSubscription = req.subscribe({\n next: (res) => {\n this.items$$.next([...this.items$$.value, ...res.data]);\n this.metadata$$.next({\n hasMore: res.pagingMetadata.hasMore ?? false,\n totalResults: res.pagingMetadata.totalResults,\n });\n this.nextCursor$$.next(res.pagingMetadata?.nextCursor ?? null);\n this.loading$$.next(false);\n },\n error: (err) => {\n console.error(err);\n this.loading$$.next(false);\n },\n });\n }\n\n /** Validate all required inputs for strict template assertion */\n private requireInputs(): RequiredInputs {\n if (!this.datasource) {\n throw new Error('datasource is required');\n }\n if (!this.column) {\n throw new Error('column is required');\n }\n return { datasource: this.datasource, column: this.column };\n }\n\n private compareItems(a: RowType, b: RowType): boolean {\n if (this.compareFn) {\n return this.compareFn(a, b);\n }\n return JSON.stringify(a) === JSON.stringify(b);\n }\n\n private applyMutations(list: RowType[], mutations: ItemCacheMutation[]): RowType[] {\n const addItems = mutations.filter((m) => m.operation === 'add').map((m) => m.item);\n const rmvItems = mutations.filter((m) => m.operation === 'remove').map((m) => m.item);\n return [...addItems, ...list].filter((item) => !rmvItems.some((ri) => this.compareItems(ri, item)));\n }\n\n private applyMetadataMutations(\n metadata: CrmBoardColumnMetadataInterface,\n mutations: ItemCacheMutation[],\n ): CrmBoardColumnMetadataInterface {\n if (metadata.totalResults === undefined) {\n return metadata;\n }\n const addItems = mutations.filter((m) => m.operation === 'add').map((m) => m.item).length;\n const rmvItems = mutations.filter((m) => m.operation === 'remove').map((m) => m.item).length;\n const totalResults = Math.max(0, metadata.totalResults + addItems - rmvItems);\n return { ...metadata, totalResults };\n }\n\n protected handleCardClickEvent(item: RowType): void {\n if (this.clickedFn) {\n const event = this.clickedFn(item);\n this.itemClicked.emit(event);\n }\n }\n}\n","
\n
\n \n \n
\n \n @for (item of items$ | async; track $index) {\n \n
\n \n }\n @if ((loading$$ | async) === false) {\n \n } @else {\n
\n \n
\n }\n
\n\n\n\n
{{ column.name }}
\n
\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[crm-board-column-header], [crmBoardColumnHeader]',\n standalone: true,\n})\nexport class CrmBoardColumnHeaderDirective {\n constructor(public templateRef: TemplateRef) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[crm-board-card-content], [crmBoardCardContent]',\n standalone: true,\n})\nexport class CrmBoardCardContentDirective {\n constructor(public templateRef: TemplateRef) {}\n}\n","import {\n Component,\n computed,\n ContentChild,\n effect,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n input,\n numberAttribute,\n OnDestroy,\n Output,\n signal,\n ViewChildren,\n} from '@angular/core';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { map } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport {\n CrmBoardColumnInterface,\n CrmBoardDatasourceInterface,\n CrmBoardItemClickedEvent,\n CrmBoardItemUpdatedEvent,\n ItemUpdateStrategy,\n} from '../interfaces';\nimport { CrmBoardColumnComponent } from '../column/column.component';\nimport { CrmBoardColumnHeaderDirective } from '../column/column-header.directive';\nimport { CrmBoardCardContentDirective } from '../card/card-content.directive';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { DropItemEvent } from '../internal';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\ninterface NavItem {\n id: string;\n active: boolean;\n}\n/**\n * Visibility options for the carousel\n * - `never`: The carousel is never visible\n * - `mobile`: The carousel is visible on mobile devices\n * - `always`: The carousel is always visible\n * - `auto`: The carousel is visible on mobile or when the board width is less than the sum of the column widths\n */\ntype CarouselVisibility = 'never' | 'mobile' | 'always' | 'auto';\n\n@Component({\n selector: 'crm-board',\n templateUrl: `./board.component.html`,\n styleUrls: ['./board.component.scss'],\n imports: [MatIcon, CrmBoardColumnComponent, DragDropModule, MatProgressBarModule],\n})\nexport class CrmBoardComponent implements OnDestroy {\n @Input({ required: true }) datasource?: CrmBoardDatasourceInterface;\n readonly columns = input.required[]>();\n @Input() itemUpdateStrategy: ItemUpdateStrategy = 'none';\n readonly minColumnWidth = input(0, { transform: numberAttribute });\n readonly carousel = input('mobile');\n @Output() itemUpdateFailed = new EventEmitter>();\n @Output() itemClicked = new EventEmitter();\n\n @ContentChild(CrmBoardColumnHeaderDirective) columnHeader?: CrmBoardColumnHeaderDirective;\n @ContentChild(CrmBoardCardContentDirective) cardContent?: CrmBoardCardContentDirective;\n @ViewChildren(CrmBoardColumnComponent) columnComponents?: CrmBoardColumnComponent[];\n\n protected readonly updateInProgress = signal(false);\n protected readonly columnNavItems = signal([]);\n protected readonly showCarousel = computed(() => this.computeShowCarousel());\n\n private readonly mobileBreakpoint$ = this.breakpointObserver\n .observe([Breakpoints.TabletPortrait, Breakpoints.HandsetPortrait])\n .pipe(map((breakpoints) => breakpoints.matches));\n protected readonly mobileBreakpoint = toSignal(this.mobileBreakpoint$);\n\n private readonly elementWidth = signal(0);\n private readonly resizeObserver = new ResizeObserver((entries) =>\n this.elementWidth.set(entries[0]?.contentRect.width ?? 0),\n );\n\n constructor(\n private readonly breakpointObserver: BreakpointObserver,\n private readonly elementRef: ElementRef,\n @Inject(DOCUMENT) private readonly document: Document,\n ) {\n this.resizeObserver.observe(this.elementRef.nativeElement);\n effect(() => {\n const minColumnWidth = this.minColumnWidth() ?? 0;\n this.document.documentElement.style.setProperty('--min-column-width', `${minColumnWidth}px`);\n });\n effect(() => {\n const columns = this.columns();\n const breadcrumbs: NavItem[] = columns.map((column) => ({ id: column.id, active: false }));\n this.columnNavItems.set(breadcrumbs);\n });\n }\n\n ngOnDestroy(): void {\n this.resizeObserver.unobserve(this.elementRef.nativeElement);\n }\n\n protected nextColumn(): void {\n const breadcrumbs = [...this.columnNavItems()].reverse();\n const lastVisibleIndex = breadcrumbs.findIndex((breadcrumb) => breadcrumb.active);\n if (lastVisibleIndex > 0) {\n const previousColumnId = breadcrumbs[lastVisibleIndex - 1].id;\n this.scrollColumnIntoView(previousColumnId);\n }\n }\n\n protected previousColumn(): void {\n const breadcrumbs = [...this.columnNavItems()];\n const firstVisibleIndex = breadcrumbs.findIndex((breadcrumb) => breadcrumb.active);\n if (firstVisibleIndex > 0) {\n const previousColumnId = breadcrumbs[firstVisibleIndex - 1].id;\n this.scrollColumnIntoView(previousColumnId);\n }\n }\n\n protected scrollColumnIntoView(columnId: string): void {\n this.document.querySelector(`[data-column-id=\"${columnId}\"]`)?.scrollIntoView({ behavior: 'smooth' });\n }\n\n protected onColumnVisible(columnId: string): void {\n this.columnNavItems.update((breadcrumbs) => {\n const item = breadcrumbs.find((breadcrumb) => breadcrumb.id === columnId);\n if (item) {\n item.active = true;\n }\n return breadcrumbs;\n });\n }\n\n protected onColumnHidden(columnId: string): void {\n this.columnNavItems.update((breadcrumbs) => {\n const item = breadcrumbs.find((breadcrumb) => breadcrumb.id === columnId);\n if (item) {\n item.active = false;\n }\n return breadcrumbs;\n });\n }\n\n protected onItemDropped(event: DropItemEvent): void {\n const columns = this.columns();\n const fromColumn = columns.find((c) => c.id === event.from);\n const toColumn = columns.find((c) => c.id === event.to);\n if (!fromColumn || !toColumn) {\n throw new Error('Invalid drop event');\n }\n if (toColumn.mutation === undefined) {\n return;\n }\n const mutation = toColumn.mutation(event.item);\n const updateEvent: CrmBoardItemUpdatedEvent = {\n item: event.item,\n column: toColumn,\n from: fromColumn,\n };\n this.applyPreUpdateStrategy(updateEvent);\n this.updateInProgress.set(true);\n mutation\n .then(() => {\n this.applyPostUpdateStrategy(updateEvent);\n })\n .catch(() => {\n this.rollbackPreUpdateStrategy(updateEvent);\n this.itemUpdateFailed.emit(updateEvent);\n })\n .finally(() => this.updateInProgress.set(false));\n }\n\n private applyPreUpdateStrategy(updateEvent: CrmBoardItemUpdatedEvent): void {\n if (this.itemUpdateStrategy === 'none') {\n return;\n }\n if (this.itemUpdateStrategy === 'cache') {\n const fromColumn = this.columnComponents?.find((c) => c.column?.id === updateEvent.from.id);\n const toColumn = this.columnComponents?.find((c) => c.column?.id === updateEvent.column.id);\n fromColumn?.cacheMutation('remove', updateEvent.item);\n toColumn?.cacheMutation('add', updateEvent.item);\n }\n }\n\n private applyPostUpdateStrategy(updateEvent: CrmBoardItemUpdatedEvent): void {\n if (this.itemUpdateStrategy === 'none') {\n return;\n }\n if (this.itemUpdateStrategy === 'refresh') {\n const fromColumn = this.columnComponents?.find((c) => c.column?.id === updateEvent.from.id);\n const toColumn = this.columnComponents?.find((c) => c.column?.id === updateEvent.column.id);\n fromColumn?.reset();\n toColumn?.reset();\n }\n }\n\n private rollbackPreUpdateStrategy(updateEvent: CrmBoardItemUpdatedEvent): void {\n if (this.itemUpdateStrategy === 'none') {\n return;\n }\n if (this.itemUpdateStrategy === 'cache') {\n const fromColumn = this.columnComponents?.find((c) => c.column?.id === updateEvent.from.id);\n const toColumn = this.columnComponents?.find((c) => c.column?.id === updateEvent.column.id);\n fromColumn?.cacheMutation('add', updateEvent.item);\n toColumn?.cacheMutation('remove', updateEvent.item);\n }\n }\n\n private computeShowCarousel(): boolean {\n const mobileBreakpoint = this.mobileBreakpoint();\n const minColumnWidth = this.minColumnWidth();\n const boardWidth = this.elementWidth();\n const columnCount = this.columns()?.length ?? 0;\n const carouselVisibility = this.carousel();\n\n switch (carouselVisibility) {\n case 'never':\n return false;\n case 'always':\n return true;\n case 'mobile':\n return !!mobileBreakpoint;\n case 'auto':\n return minColumnWidth > 0 && boardWidth < minColumnWidth * columnCount;\n default:\n return false;\n }\n }\n\n protected onItemClicked(itemClickEvent: CrmBoardItemClickedEvent): void {\n this.itemClicked.emit(itemClickEvent);\n }\n}\n","@if (updateInProgress()) {\n \n}\n
\n @if (showCarousel()) {\n
\n keyboard_arrow_left\n
\n @for (navItem of columnNavItems(); track $index) {\n
\n }\n
\n keyboard_arrow_right\n
\n }\n \n @for (column of columns(); track column) {\n \n }\n \n\n","import { PagedListRequestInterface, PagedResponseInterface, PaginatedAPIInterface } from '@vendasta/galaxy/table';\nimport { BehaviorSubject, Observable, distinctUntilChanged } from 'rxjs';\nimport { CrmBoardDatasourceInterface } from './interfaces';\n\nexport class CrmBoardDatasource\n implements CrmBoardDatasourceInterface\n{\n private readonly searchTerm$$ = new BehaviorSubject('');\n readonly searchTerm$ = this.searchTerm$$.asObservable().pipe(distinctUntilChanged());\n private readonly filters$$ = new BehaviorSubject([]);\n readonly filters$ = this.filters$$.asObservable().pipe(distinctUntilChanged());\n private readonly sorting$$ = new BehaviorSubject([]);\n readonly sorting$ = this.sorting$$.asObservable().pipe(distinctUntilChanged());\n\n constructor(private api: PaginatedAPIInterface) {\n this.api = api;\n }\n\n setSearchTerm(searchTerm?: string): void {\n this.searchTerm$$.next(searchTerm ?? '');\n }\n\n setFilters(filters?: FilterType[]): void {\n this.filters$$.next(filters ?? []);\n }\n\n setSorting(sorting?: SortType[]): void {\n this.sorting$$.next(sorting ?? []);\n }\n\n get(request: PagedListRequestInterface): Observable> {\n return this.api.get(request);\n }\n}\n","export * from './board/board.component';\nexport * from './card/card.component';\nexport * from './card/card-content.directive';\nexport * from './column/column.component';\nexport * from './column/column-header.directive';\nexport * from './interfaces';\nexport * from './datasource';\n","export * from './src';\n","export * from './public_api';\n","import { Inject, Injectable, OnDestroy, Optional } from '@angular/core';\nimport { MatSort } from '@angular/material/sort';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n ActivityInterface,\n CrmObjectInterface,\n FieldSchemaInterface,\n FieldType,\n FieldValueInterface,\n FilterOperator,\n ListCrmObjectsRequestInterface,\n ListCrmObjectsResponseInterface,\n ObjectProjectionFilterInterface,\n PagedResponseMetadataInterface,\n PhoneFieldsInterface,\n} from '@vendasta/crm';\nimport { GalaxyFilterInterface, GalaxyFilterOperator } from '@vendasta/galaxy/filter/chips';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport {\n CellData,\n CustomCell,\n DateData,\n GalaxyDataSource,\n PagedListRequestInterface,\n PagedResponseInterface,\n PhoneData,\n Row,\n TextData,\n} from '@vendasta/galaxy/table';\nimport { GalaxyColumnDef } from '@vendasta/galaxy/table/src/table.interface';\nimport {\n animationFrameScheduler,\n BehaviorSubject,\n catchError,\n combineLatest,\n distinctUntilChanged,\n firstValueFrom,\n map,\n Observable,\n observeOn,\n of,\n ReplaySubject,\n shareReplay,\n switchMap,\n take,\n tap,\n withLatestFrom,\n startWith,\n} from 'rxjs';\nimport { CrmFormService } from '../../shared-services/crm-services/crm-form.service';\nimport { CrmObjectService } from '../../shared-services/crm-services/crm-object-service/crm-object.service';\nimport { CrmTableStateService } from '../../shared-services/crm-services/crm-object-service/crm-table-state.service';\nimport {\n ActivityType,\n CrmDependencies,\n CrmInjectionToken,\n CrmObjectDependencies,\n CrmObjectInjectionToken,\n ObjectType,\n TaskTableCustomizationServiceToken,\n} from '../../tokens-and-interfaces';\nimport { CRMTrackingService } from '../../shared-services/page-analytics.service';\nimport { CrmObjectManagementTableChangesService } from '../../shared-services/crm-object-management-table-changes.service';\nimport {\n ActivityTableCustomizationService,\n ColumnDataInterface,\n CompanyTableCustomizationService,\n ContactTableCustomizationService,\n OpportunityTableCustomizationService,\n StandardIds,\n SystemFieldIds,\n TableCustomizationServiceInterface,\n Pipeline,\n} from '../../shared-services';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { format, ParsedNumber } from 'libphonenumber-js';\nimport { CrmBoardColumnInterface, CrmBoardDatasource, CrmBoardDatasourceInterface } from '@galaxy/crm/components/board';\n\ninterface ColumnDef extends GalaxyColumnDef {\n external_id?: string;\n}\n\n@Injectable()\nexport class ListObjectsTableService implements OnDestroy {\n // use ReplaySubject, this should only emit when explicitly set / actually have values to be used by the component\n private objectType$$ = new ReplaySubject();\n private objectSubtype$ = this.crmObjectDependencies?.objectSubtype$ ?? of('');\n private fieldSchemas$$ = new ReplaySubject();\n private columns$$ = new ReplaySubject();\n private groupConfigs$$ = new ReplaySubject();\n private activityType$$ = new BehaviorSubject('');\n private objectChanges$ = toObservable(this.crmObjectManagementTableChangesService.getCrmObjectChanges());\n private refreshedRows$$ = new BehaviorSubject>(new Map());\n private initialLoadingCompleted$$ = new BehaviorSubject(true);\n private receivedObject$$ = new BehaviorSubject(false);\n private baseColumnIds$$ = new BehaviorSubject([]);\n private showActions$$ = new BehaviorSubject(true);\n private data$$ = new BehaviorSubject([]);\n\n dataSource: GalaxyDataSource;\n boardSource: CrmBoardDatasourceInterface;\n initialLoadingCompleted$: Observable = this.initialLoadingCompleted$$.asObservable();\n columns$: Observable = this.columns$$.asObservable();\n groupConfigs$: Observable = this.groupConfigs$$.asObservable();\n\n showEmptyState$: Observable = combineLatest([this.initialLoadingCompleted$$, this.receivedObject$$]).pipe(\n map(([loading, hasObjects]) => !loading && !hasObjects),\n );\n showObjects$: Observable = combineLatest([this.initialLoadingCompleted$, this.showEmptyState$]).pipe(\n map(([loading, showEmptyState]) => !loading && !showEmptyState),\n );\n\n private latestRequestPayload$$ = new ReplaySubject>();\n // this reference has to be shared or else we get blinking behaviour on the table\n // when new observables are returned each time\n private latestResponse$: Observable = this.latestRequestPayload$$.pipe(\n observeOn(animationFrameScheduler),\n withLatestFrom(this.objectType$$, this.activityType$$, this.objectSubtype$),\n tap(([, objectType, activityType, objectSubtype]) => {\n this.refreshedRows$$.next(new Map());\n this.crmObjectManagementTableChangesService.clearAllChanges(objectType, activityType || objectSubtype);\n }),\n switchMap(([req]) => this.fetchObjects(req)),\n withLatestFrom(this.latestRequestPayload$$),\n tap(([resp]) => {\n const receivedObject = this.receivedObject$$.value;\n if (!receivedObject && (resp?.crmObjects || []).length > 0) {\n this.receivedObject$$.next(true);\n }\n }),\n tap(async ([, req]) => {\n if (req.searchOptions?.text) {\n const objectType = await firstValueFrom(this.objectType$$);\n this.trackingService.trackEvent(objectType, 'searched-crm-object', {\n searchFields: req.searchOptions.fields,\n });\n }\n }),\n tap(([resp]) => this.data$$.next(resp.crmObjects || [])),\n map(([resp]) => resp),\n );\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly objectsService: CrmObjectService,\n private readonly fieldsService: CrmFormService,\n private readonly translate: TranslateService,\n private readonly trackingService: CRMTrackingService,\n private readonly contactCustomization: ContactTableCustomizationService,\n private readonly companyCustomization: CompanyTableCustomizationService,\n private readonly opportunityCustomization: OpportunityTableCustomizationService,\n private readonly tableStateService: CrmTableStateService,\n private readonly snackService: SnackbarService,\n private readonly crmFormService: CrmFormService,\n private readonly crmObjectManagementTableChangesService: CrmObjectManagementTableChangesService,\n @Optional()\n @Inject(TaskTableCustomizationServiceToken)\n private readonly taskCustomization?: ActivityTableCustomizationService,\n @Optional()\n @Inject(CrmObjectInjectionToken)\n private readonly crmObjectDependencies?: CrmObjectDependencies,\n ) {\n const schemas$: Observable = combineLatest([\n this.config.namespace$,\n this.objectType$$,\n this.objectSubtype$,\n ]).pipe(\n observeOn(animationFrameScheduler),\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n switchMap(([, objectType, objectSubtype]) => this.fieldsService.listAllObjectFields$(objectType, objectSubtype)),\n shareReplay(1),\n );\n schemas$.pipe(takeUntilDestroyed()).subscribe((schemas) => {\n this.fieldSchemas$$.next(schemas);\n });\n const columnGroups$ = schemas$.pipe(\n map((schemas: FieldSchemaInterface[]) => schemas.map((schema) => this.fieldSchemaToTableColumn(schema))),\n switchMap((columns: GalaxyColumnDef[]) =>\n combineLatest([\n this.applyColumnLayout$(columns, this.objectSubtype$),\n this.objectType$$,\n this.activityType$$.pipe(startWith('' as ActivityType)),\n ]),\n ),\n map(([columns, objectType, activityType]) => this.customizedColumns(activityType || objectType, columns, false)),\n map((columns) => this.addStaticColumns(columns)),\n switchMap((columns) => {\n return this.showBaseColumns(columns);\n }),\n switchMap((columns) => {\n return this.tableStateService.initializeLocalStorageColumns(columns);\n }),\n switchMap((columns) => this.addColumnGroups(columns, this.objectSubtype$)),\n shareReplay(1),\n );\n columnGroups$.pipe(takeUntilDestroyed()).subscribe(({ columns, groupConfigs }) => {\n this.columns$$.next(columns);\n this.groupConfigs$$.next(groupConfigs);\n });\n this.config.namespace$\n .pipe(\n takeUntilDestroyed(),\n distinctUntilChanged(),\n tap(() => this.initialLoadingCompleted$$.next(true)),\n )\n .subscribe();\n\n const paginatedAPI = {\n get: (\n req: PagedListRequestInterface,\n ): Observable> => {\n const results = this.listObjects(req).pipe(\n catchError(() => {\n this.snackService.openErrorSnack('ERRORS.GENERIC_MESSAGE');\n return of({\n crmObjects: [],\n pagingMetadata: {\n nextCursor: '',\n hasMore: false,\n },\n }) as Observable;\n }),\n );\n\n return combineLatest([results, this.objectChanges$, this.refreshedRows$$]).pipe(\n withLatestFrom(this.fieldSchemas$$, this.objectType$$, this.activityType$$, this.objectSubtype$),\n map(([[results, changes, refreshedRows], schemas, objectType, activityType, objectSubtype]) => {\n const deleted = changes.deleted;\n const updated = changes.updated;\n const created = changes.created;\n\n const type = activityType || objectSubtype || objectType;\n const objects = [...(created.get(type) || [])];\n objects.push(...(results?.crmObjects || []));\n\n const filteredObjects = objects.filter((object) => !deleted.get(type)?.includes(object.crmObjectId ?? ''));\n updated.get(type)?.forEach((updatedObject) => {\n const index = filteredObjects.findIndex((object) => object.crmObjectId === updatedObject.crmObjectId);\n if (index > -1) {\n filteredObjects[index] = updatedObject;\n }\n });\n\n const rows = this.transformToPagedResponse(\n filteredObjects || [],\n schemas,\n objectType,\n activityType,\n results?.pagingMetadata,\n );\n rows.data.map((r) => refreshedRows.get(r.id) || r);\n return rows;\n }),\n tap(() => {\n this.initialLoadingCompleted$$.next(false);\n }),\n );\n },\n };\n this.dataSource = new GalaxyDataSource(paginatedAPI);\n\n const boardAPI = {\n get: (\n req: PagedListRequestInterface,\n ): Observable> => {\n return this.fetchObjects(req).pipe(\n catchError(() => {\n this.snackService.openErrorSnack('ERRORS.GENERIC_MESSAGE');\n return of({} as ListCrmObjectsResponseInterface);\n }),\n withLatestFrom(this.fieldSchemas$$, this.objectType$$, this.activityType$$),\n map(([objectListResp, schemas, objectType, activityType]) =>\n this.transformToPagedResponse(\n objectListResp?.crmObjects || [],\n schemas,\n objectType,\n activityType,\n objectListResp?.pagingMetadata,\n ),\n ),\n );\n },\n };\n this.boardSource = new CrmBoardDatasource(boardAPI);\n }\n\n applyColumnLayout$(columns: ColumnDef[], objectSubtype$?: Observable): Observable {\n return combineLatest([this.objectType$$, objectSubtype$ ?? of('')]).pipe(\n switchMap(([objectType, objectSubtype]) =>\n this.fieldsService.listAllObjectFieldGroups$(objectType, objectSubtype),\n ),\n map((fieldGroups) => {\n const fieldIds: string[] = fieldGroups.reduce(\n (r: string[], fieldGroup) => r.concat(fieldGroup.fieldIds ?? []),\n [],\n );\n\n const sortedColumns: ColumnDef[] = JSON.parse(JSON.stringify(columns));\n sortedColumns.sort((a, b) => {\n let indexA = fieldIds.indexOf(a.id);\n if (indexA === -1 && a.external_id) {\n indexA = fieldIds.indexOf(a.external_id);\n }\n let indexB = fieldIds.indexOf(b.id);\n if (indexB === -1 && b.external_id) {\n indexB = fieldIds.indexOf(b.external_id);\n }\n if (indexA === -1) {\n return 1;\n }\n if (indexB === -1) {\n return -1;\n }\n return indexA - indexB;\n });\n\n const firstFieldGroupFieldIds = fieldGroups[0]?.fieldIds ?? [];\n for (const column of sortedColumns) {\n if (firstFieldGroupFieldIds.includes(column.id)) {\n continue;\n }\n column.hidden = true;\n }\n\n return sortedColumns;\n }),\n );\n }\n\n addStaticColumns(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n if (!this.showActions$$.value) {\n return columns;\n }\n const actionsColumn: GalaxyColumnDef = {\n id: 'actions',\n title: this.translate.instant('LIST_OBJECTS_TABLE.ACTIONS_COLUMN.TITLE'),\n pinned: true,\n stickyEnd: true,\n sortable: false,\n };\n return [...columns, actionsColumn];\n }\n\n addColumnGroups(\n columns: GalaxyColumnDef[],\n objectSubtype$?: Observable,\n ): Observable<{ columns: GalaxyColumnDef[]; groupConfigs: GalaxyColumnDef[] }> {\n const subtype$ = objectSubtype$ ?? of('');\n return combineLatest([this.objectType$$, subtype$]).pipe(\n switchMap(([objectType, objectSubtype]) => {\n return this.crmFormService.listAllObjectFieldGroups$(objectType, objectSubtype);\n }),\n map((groups) => {\n return groups\n .map((group) => {\n return {\n id: this.translate.instant(group.fieldGroupId ?? 'Custom'),\n title: this.translate.instant(group.description ?? 'Custom fields'),\n columns: (group.fieldIds || []).map((fieldId) => {\n return columns.find((column) => {\n return column.id === fieldId;\n });\n }),\n } as GalaxyColumnDef;\n })\n .filter((g) => g !== undefined);\n }),\n map((groups) => {\n return {\n columns: columns,\n groupConfigs: groups,\n };\n }),\n );\n }\n\n private moveItemsToBeginning(columns: GalaxyColumnDef[], identifiersToMove: string[]): GalaxyColumnDef[] {\n const movedToFront: GalaxyColumnDef[] = [];\n\n for (const id of identifiersToMove) {\n const col = columns.find((c) => c.id === id);\n if (col) {\n movedToFront.push(col);\n }\n }\n const movedToBack = columns.filter((c) => !movedToFront.find((m) => m.id === c.id));\n return [...movedToFront, ...movedToBack];\n }\n\n showBaseColumns(columns: GalaxyColumnDef[]): Observable {\n return this.baseColumnIds$$.pipe(\n map((baseColumnIds) => {\n for (const col of baseColumnIds) {\n const index = columns.findIndex((c) => c.id === col);\n if (index > -1) {\n columns[index].hidden = false;\n }\n }\n return this.moveItemsToBeginning(columns, baseColumnIds);\n }),\n );\n }\n\n deleteObject(namespace: string, objectId: string): Observable {\n return combineLatest([this.objectType$$, this.activityType$$, this.objectSubtype$]).pipe(\n switchMap(([objectType, activityType, objectSubtype]) =>\n this.objectsService\n .deleteCrmObject(namespace, objectType, objectId)\n .pipe(map(() => [objectType, activityType, objectSubtype] as [ObjectType, ActivityType | '', string])),\n ),\n tap(([objectType, activityType, objectSubtype]) => {\n this.crmObjectManagementTableChangesService.addDeletedCrmObjectId(\n objectType,\n objectId,\n activityType || objectSubtype,\n );\n }),\n take(1),\n );\n }\n\n async refreshRows(rows: string[]): Promise {\n try {\n const objectType = await firstValueFrom(this.objectType$$);\n const objects = (await firstValueFrom(this.objectsService.getMultiObject(objectType, rows)))?.crmObjects;\n if (!objects?.length) {\n return;\n }\n\n const newRefreshedRows = await firstValueFrom(\n combineLatest([this.fieldSchemas$$, this.objectType$$, this.activityType$$]).pipe(\n map(([schemas, objectType, activityType]) =>\n this.crmObjectsToTableRows(objects, schemas, objectType, activityType),\n ),\n ),\n );\n const currentRefreshedRows = await firstValueFrom(this.refreshedRows$$);\n for (const row of newRefreshedRows) {\n currentRefreshedRows.set(row.id, row);\n }\n this.refreshedRows$$.next(currentRefreshedRows);\n } catch (e) {\n console.error('Error refreshing rows', e);\n }\n }\n\n setObjectType(objectType: ObjectType): void {\n this.objectType$$.next(objectType);\n }\n\n setActivityType(activityType: ActivityType): void {\n this.activityType$$.next(activityType);\n }\n\n setBaseColumns(baseColumnIds: string[]): void {\n this.baseColumnIds$$.next(baseColumnIds);\n }\n\n setShowActions(showActions: boolean): void {\n this.showActions$$.next(showActions);\n }\n\n private listObjects(\n req: PagedListRequestInterface,\n ): Observable {\n this.latestRequestPayload$$.next(req);\n return this.latestResponse$;\n }\n\n private getTableCustomizationService(\n objectType: ObjectType | ActivityType,\n ): TableCustomizationServiceInterface | undefined {\n if (this.crmObjectDependencies) {\n return this.crmObjectDependencies.services?.tableCustomizationService ?? undefined;\n }\n switch (objectType) {\n case 'Contact':\n return this.contactCustomization;\n case 'Company':\n return this.companyCustomization;\n case 'Task':\n return this.taskCustomization;\n case 'Opportunity':\n return this.opportunityCustomization;\n }\n return undefined;\n }\n\n private getActivityTypeFilter(activityType: ActivityType) {\n return {\n fieldId: SystemFieldIds.ActivityType,\n operator: FilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: activityType,\n },\n ],\n };\n }\n\n private fieldSchemaToTableColumn(schema: FieldSchemaInterface): ColumnDef {\n return {\n id: schema.fieldId || '',\n external_id: schema.externalId || '',\n title: schema.fieldName,\n sortable: true,\n };\n }\n\n private crmObjectsToTableRows(\n objects: CrmObjectInterface[],\n schemas: FieldSchemaInterface[],\n objectType: ObjectType,\n activityType: ActivityType | '',\n ): Row[] {\n const schemaMap: { [schemaId: string]: FieldSchemaInterface } = {};\n schemas.forEach((schema) => {\n if (!schema?.fieldId) {\n return;\n }\n schemaMap[schema.fieldId] = schema;\n });\n\n const objType = activityType || objectType;\n return (\n objects?.map((obj) => {\n const columnData: ColumnDataInterface = {};\n obj?.fields?.forEach((field) => {\n if (!field?.fieldId) {\n return;\n }\n columnData[field.fieldId] = this.getValueByType(field, schemaMap[field.fieldId]);\n });\n this.customizeRowData(objType, obj, schemaMap, columnData);\n\n return {\n id: obj?.crmObjectId || '',\n data: columnData,\n };\n }) || []\n );\n }\n\n private getValueByType(field: FieldValueInterface, schema: FieldSchemaInterface): CellData {\n switch (schema?.fieldType) {\n case FieldType.FIELD_TYPE_CURRENCY:\n return {\n cellType: 'currency',\n value: field.currencyValue?.value || 0,\n code: field.currencyValue?.currencyCode,\n };\n case FieldType.FIELD_TYPE_INTEGER:\n return {\n cellType: 'integer',\n value: field.integerValue,\n };\n case FieldType.FIELD_TYPE_FLOAT:\n return {\n cellType: 'float',\n value: field.floatValue,\n };\n case FieldType.FIELD_TYPE_DATETIME:\n case FieldType.FIELD_TYPE_DATE:\n return this.dateData(field.dateValue);\n case FieldType.FIELD_TYPE_PHONE:\n if (field.phoneFieldValues) {\n return this.phoneData(field.phoneFieldValues);\n }\n return this.phoneData(field.stringValue);\n case FieldType.FIELD_TYPE_STRING:\n case FieldType.FIELD_TYPE_EMAIL:\n return this.textData(field.stringValue);\n case FieldType.FIELD_TYPE_DROPDOWN:\n return this.dropDownOptionData(schema, field.stringValue);\n case FieldType.FIELD_TYPE_BOOLEAN:\n return {\n cellType: 'boolean',\n value: field.booleanValue,\n };\n case FieldType.FIELD_TYPE_TAG:\n case FieldType.FIELD_TYPE_STRING_LIST:\n return {\n cellType: 'tags',\n value: field?.stringValues?.values || [],\n };\n default:\n return undefined;\n }\n }\n\n private dropDownOptionData(schema: FieldSchemaInterface, value?: string): TextData {\n const label = schema?.dropdownOptions?.find((o) => o?.value === value)?.label;\n return this.textData(label || value);\n }\n\n private textData(value?: string, link?: string): TextData {\n return {\n cellType: 'text',\n value: value || '',\n link: link || '',\n };\n }\n\n private phoneData(value?: string | PhoneFieldsInterface): PhoneData {\n if (typeof value === 'string') {\n return {\n cellType: 'phone',\n value: value,\n };\n }\n //format phone number\n if (value?.nationalNumber === '') {\n return {\n cellType: 'phone',\n value: '',\n };\n }\n if (!value?.e164Compliant) {\n return {\n cellType: 'phone',\n value: value?.nationalNumber,\n };\n }\n const parsed = {\n country: value?.isoCountryCode,\n phone: value?.nationalNumber,\n ext: value?.extension,\n } as ParsedNumber;\n\n let internationalNumber = value?.nationalNumber;\n try {\n internationalNumber = format(parsed, 'INTERNATIONAL');\n } catch (e) {\n console.warn('Failed formatting phone number', parsed, e);\n }\n\n return {\n cellType: 'phone',\n value: internationalNumber,\n };\n }\n\n private dateData(value?: Date): DateData {\n return {\n cellType: 'date',\n value: value,\n };\n }\n\n private customizedColumns(\n objectType: ObjectType | ActivityType,\n columns: ColumnDef[],\n isMobile: boolean,\n ): GalaxyColumnDef[] {\n return this.getTableCustomizationService(objectType)?.customizeColumns(columns, isMobile) || [];\n }\n\n private async addNamespaceMetadata(crmObject: ActivityInterface, columnData: ColumnDataInterface): Promise {\n const namespaceFromConfig = await firstValueFrom(this.config.namespace$);\n columnData['namespace'] = {\n cellType: 'custom',\n // this field is just used as metadata, nothing loads for a cell component\n value: crmObject?.namespace ?? namespaceFromConfig,\n } as CustomCell;\n }\n\n private async customizeRowData(\n objectType: ObjectType | ActivityType,\n obj: CrmObjectInterface,\n schemaMap: { [schemaId: string]: FieldSchemaInterface },\n columnData: ColumnDataInterface,\n ) {\n await this.addNamespaceMetadata(obj, columnData);\n this.getTableCustomizationService(objectType)?.customizeRowData(obj, schemaMap, columnData);\n }\n\n lookupRowDisplayName(id: string): Observable {\n return this.data$$.pipe(\n map((rows) => {\n const row = rows.find((r) => r.crmObjectId == id);\n if (!row) {\n return id;\n }\n const firstName = row?.fields?.find((f) => f.externalId == 'standard__first_name')?.stringValue;\n const lastName = row?.fields?.find((f) => f.externalId == 'standard__last_name')?.stringValue;\n if (firstName || lastName) {\n return `${firstName} ${lastName}`.trim();\n }\n const email = row?.fields?.find((f) => f.externalId == 'standard__email')?.stringValue;\n if (email) {\n return email;\n }\n const phone = row?.fields?.find((f) => f.externalId == 'standard__phone_number')?.stringValue;\n if (phone) {\n return phone;\n }\n return id;\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.crmObjectManagementTableChangesService.clearAllChanges();\n }\n\n private buildRequest(\n req: PagedListRequestInterface,\n ): Observable {\n return combineLatest([this.objectType$$, this.activityType$$, this.objectSubtype$]).pipe(\n map(([objectType, activityType, objectSubtype]) => {\n const filterGroup = this.objectsService.convertFilters([...(req.filters || [])]);\n if (filterGroup && objectType === 'Activity') {\n if (activityType !== '') {\n filterGroup.filters?.push(this.getActivityTypeFilter(activityType));\n }\n }\n\n let sortBy = this.objectsService.convertSortBy(req.sorting);\n if (!sortBy?.length) {\n const objType = activityType || objectType;\n sortBy = this.getTableCustomizationService(objType)?.defaultSortingOptions;\n }\n const listCrmObjectReq = {\n search: {\n searchTerm: req?.searchOptions?.text || '',\n },\n filtersV2: filterGroup,\n pagingOptions: {\n cursor: req?.pagingOptions?.cursor,\n pageSize: req?.pagingOptions?.pageSize,\n },\n sortBy: sortBy ?? [],\n projectionFilters: [\n { filterType: 1, fromFieldType: FieldType.FIELD_TYPE_PHONE, toFieldType: FieldType.FIELD_TYPE_PHONE },\n ] as ObjectProjectionFilterInterface[],\n crmObjectSubtype: objectSubtype,\n } as ListCrmObjectsRequestInterface;\n\n return listCrmObjectReq;\n }),\n );\n }\n\n private fetchObjects(\n req: PagedListRequestInterface,\n ): Observable {\n const crmRequest = this.buildRequest(req);\n return combineLatest([this.objectType$$, crmRequest]).pipe(\n switchMap(([objectType, request]) => this.objectsService.listObjects(objectType, request)),\n );\n }\n\n private transformToPagedResponse(\n crmObjects: CrmObjectInterface[],\n schemas: FieldSchemaInterface[],\n objectType: ObjectType,\n activityType: ActivityType | '',\n metadata?: PagedResponseMetadataInterface,\n ): PagedResponseInterface {\n const rows = this.crmObjectsToTableRows(crmObjects, schemas, objectType, activityType);\n return {\n data: rows,\n pagingMetadata: {\n nextCursor: metadata?.nextCursor || '',\n hasMore: metadata?.hasMore || false,\n totalResults: metadata?.totalResults || 0,\n },\n } as PagedResponseInterface;\n }\n\n defaultBoardColumns(\n objectType: ObjectType,\n activityType?: ActivityType,\n pipeline?: Pipeline,\n ): CrmBoardColumnInterface[] {\n const lifecycleStages: string[] = [\n 'Visitor',\n 'Lead',\n 'Marketing qualified lead',\n 'Sales accepted lead',\n 'Sales qualified lead',\n 'Prospect',\n 'Customer',\n 'Former customer',\n ];\n\n const taskStages: string[] = ['Open', 'Completed'];\n\n if (objectType === 'Contact') {\n return lifecycleStages.map(\n (stage, index) =>\n ({\n id: index.toString(),\n name: stage,\n filters: [\n {\n fieldId: StandardIds.ContactLifecycleStage,\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [{ string: stage }],\n },\n ],\n mutation: (object: Row) =>\n firstValueFrom(\n this.objectsService.updateCrmObject(objectType, {\n crmObjectId: object.id,\n fields: [{ fieldId: StandardIds.ContactLifecycleStage, stringValue: stage }],\n }),\n ),\n }) as CrmBoardColumnInterface,\n );\n }\n if (objectType === 'Company') {\n return lifecycleStages.map(\n (stage, index) =>\n ({\n id: index.toString(),\n name: stage,\n filters: [\n {\n fieldId: StandardIds.CompanyLifecycleStage,\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [{ string: stage }],\n },\n ],\n mutation: (object: Row) =>\n firstValueFrom(\n this.objectsService.updateCrmObject(objectType, {\n crmObjectId: object.id,\n fields: [{ fieldId: StandardIds.CompanyLifecycleStage, stringValue: stage }],\n }),\n ),\n }) as CrmBoardColumnInterface,\n );\n }\n if (objectType === 'Opportunity') {\n return (\n pipeline?.stages?.map(\n (stage) =>\n ({\n id: stage.id,\n name: stage.name,\n probability: stage.mutations.find((mutation) => mutation.fieldId === StandardIds.OpportunityProbability)\n ?.floatValue,\n filters: stage.filters,\n mutation: (object: Row) =>\n firstValueFrom(\n this.objectsService.updateCrmObject(objectType, {\n crmObjectId: object.id,\n fields: stage.mutations,\n }),\n ),\n }) as CrmBoardColumnInterface,\n ) ?? []\n );\n }\n\n if (objectType === 'Activity' && activityType === 'Task') {\n return taskStages.map(\n (stage, index) =>\n ({\n id: index.toString(),\n name: stage,\n filters: [\n {\n fieldId: StandardIds.ActivityTaskStatus,\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [{ string: stage }],\n },\n ],\n mutation: (object: Row) =>\n firstValueFrom(\n this.objectsService.updateCrmObject(objectType, {\n crmObjectId: object.id,\n fields: [{ fieldId: StandardIds.ActivityTaskStatus, stringValue: stage }],\n }),\n ),\n }) as CrmBoardColumnInterface,\n );\n }\n return [];\n }\n}\n","import { ComponentRef, Injectable, Type, ViewContainerRef } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class SidepanelService {\n private readonly isOpenSource$$ = new ReplaySubject(1);\n isOpen$ = this.isOpenSource$$.pipe(startWith(false));\n private readonly headerTitle$$ = new ReplaySubject(1);\n headerTitle$ = this.headerTitle$$.pipe(startWith(''));\n\n private viewContainerRef?: ViewContainerRef;\n\n public openSidepanel(content: Type): ComponentRef | undefined {\n this.isOpenSource$$.next(true);\n return this.createView(content);\n }\n\n public closeSidepanel(): void {\n this.isOpenSource$$.next(false);\n this.viewContainerRef?.clear();\n }\n\n public setViewContainer(viewContainerRef?: ViewContainerRef): void {\n this.viewContainerRef = viewContainerRef;\n }\n\n private createView(content: Type): ComponentRef | undefined {\n this.viewContainerRef?.clear();\n return this.viewContainerRef?.createComponent(content);\n }\n\n public setHeaderTitle(headerTitle: string): void {\n this.headerTitle$$.next(headerTitle);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { AfterContentInit, Component, ViewChild, ViewContainerRef } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { Observable } from 'rxjs';\nimport { SidepanelService } from './side-panel.service';\n\n@Component({\n selector: 'crm-sidepanel',\n templateUrl: './side-panel.component.html',\n styleUrls: ['./side-panel.component.scss'],\n imports: [MatSidenavModule, MatIconModule, CommonModule, GalaxyEmptyStateModule, MatToolbarModule, MatButtonModule],\n})\nexport class SidepanelComponent implements AfterContentInit {\n @ViewChild('content', { static: true, read: ViewContainerRef }) contentContainerRef?: ViewContainerRef;\n\n headerTitle$: Observable;\n isOpen$: Observable;\n\n constructor(private sidepanelService: SidepanelService) {\n this.isOpen$ = this.sidepanelService.isOpen$;\n this.headerTitle$ = this.sidepanelService.headerTitle$;\n }\n\n ngAfterContentInit(): void {\n this.sidepanelService.setViewContainer(this.contentContainerRef);\n }\n\n public closeSidepanel(): void {\n this.sidepanelService.closeSidepanel();\n }\n}\n","\n \n \n {{ headerTitle$ | async }}\n \n \n \n \n \n\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Row } from '@vendasta/galaxy/table';\nimport { ObjectType, SingleRowAction } from '../tokens-and-interfaces';\n\ntype PipeInput = SingleRowAction[] | null | undefined;\ntype PipeOutput = PipeInput;\n\ninterface PipeParams {\n row: Row;\n objectType: ObjectType;\n}\n\n@Pipe({\n name: 'filterVisibleActions',\n standalone: true,\n})\nexport class FilterVisibleActionsPipe implements PipeTransform {\n transform(actions: PipeInput, params: PipeParams): PipeOutput {\n return actions?.filter((action) => action?.visible?.(params?.row, params?.objectType) ?? true);\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { CrmFieldService, SystemFieldIds } from '../shared-services/crm-services/field.service';\n\n@Pipe({\n name: 'crmActivityEffectiveDate',\n standalone: true,\n})\nexport class CrmActivityEffectiveDatePipe implements PipeTransform {\n private readonly fieldService? = inject(CrmFieldService);\n\n transform(activity?: ActivityInterface): Date | null {\n if (!activity || !this.fieldService) {\n return null;\n }\n return (\n this.fieldService.getFieldValueFromCrmObject(activity, SystemFieldIds.ActivityEffectiveDate)?.dateValue ?? null\n );\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { CrmFieldService, StandardIds, SystemFieldIds } from '../shared-services/crm-services/field.service';\n\n@Pipe({\n name: 'crmIsTaskOverdue',\n standalone: true,\n})\nexport class CrmIsTaskOverduePipe implements PipeTransform {\n private readonly fieldService? = inject(CrmFieldService);\n\n transform(activity?: ActivityInterface): boolean {\n if (!activity || !this.fieldService) {\n return false;\n }\n const taskStatus = this.fieldService.getFieldValueFromCrmObject(\n activity,\n StandardIds.ActivityTaskStatus,\n )?.stringValue;\n if (taskStatus === 'Completed') {\n return false;\n }\n const effectiveDate = this.fieldService.getFieldValueFromCrmObject(\n activity,\n SystemFieldIds.ActivityEffectiveDate,\n )?.dateValue;\n if (!effectiveDate) {\n return false;\n }\n return effectiveDate.getTime() < Date.now();\n }\n}\n","export { FilterVisibleActionsPipe } from './filter-visible-actions.pipe';\nexport * from './activity-effective-date.pipe';\nexport * from './is-task-overdue.pipe';\nexport * from './truncate.pipe';\n","import { GalaxyFilterInterface } from './interface';\n\nexport function encodeFilters(filters: GalaxyFilterInterface[]): string {\n return encodeURIComponent(JSON.stringify(filters));\n}\n\nexport function decodeFilters(filters: string): GalaxyFilterInterface[] {\n return JSON.parse(decodeURIComponent(filters));\n}\n\nexport function validateFilters(filters: GalaxyFilterInterface[]): boolean {\n for (const filter of filters) {\n if (!filter.fieldId && !filter.filterId) {\n return false;\n }\n if (!filter.operator) {\n return false;\n }\n }\n return true;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n computed,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { GalaxyFilterInterface } from '@vendasta/galaxy/filter/chips';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyPopoverModule, PopoverComponent, PopoverPositions } from '@vendasta/galaxy/popover';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { PresetFilter, PresetFilters, SavedFilter, SavedFilters } from './interfaces';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { GalaxyButtonGroupModule } from '@vendasta/galaxy/button-group';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { firstValueFrom } from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BREAKPOINT_WIDTH } from '../../constants';\n\ntype Mode = 'list' | 'create';\n\n@Component({\n selector: 'crm-filter-view',\n templateUrl: './filter-view.component.html',\n styleUrls: ['./filter-view.component.scss'],\n imports: [\n CommonModule,\n GalaxyButtonGroupModule,\n GalaxyFormFieldModule,\n GalaxyPopoverModule,\n GalaxyEmptyStateModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n ReactiveFormsModule,\n TranslateModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterViewComponent {\n private _filters = signal([]);\n @Input({ required: true })\n set filters(value: GalaxyFilterInterface[]) {\n const currentFilters = this._filters();\n this._filters.set(value);\n if (!this.filterAreEqual(currentFilters, value)) {\n this.selectedFilter.set(undefined);\n }\n }\n @Output() filtersChange = new EventEmitter();\n\n private _keys = signal([]);\n @Input({ required: true })\n set keys(value: string[]) {\n this._keys.set(value);\n }\n\n private _presetFilters = signal([]);\n @Input() set presetFilters(value: PresetFilters) {\n const filters = value?.map((f) => ({ ...f, preset: true }) as PresetFilter);\n this._presetFilters.set(filters ?? []);\n }\n\n @ViewChild('viewsMenu') viewsMenu?: PopoverComponent;\n\n private readonly snackbarService = inject(SnackbarService);\n private readonly confirmationModalService = inject(OpenConfirmationModalService);\n private readonly translateService = inject(TranslateService);\n\n private readonly i18n = {\n views: toSignal(this.translateService.stream('VIEWS.VIEWS')),\n };\n\n protected mode: Mode = 'list';\n protected readonly savedFilters = signal([]);\n protected readonly allFilters = computed(() => [\n ...this.sortFilters(this.savedFilters()),\n ...this.sortFilters(this._presetFilters()),\n ]);\n protected readonly hasFilters = computed(() => Object.keys(this.allFilters()).length > 0);\n protected readonly newViewNameCtrl = new FormControl('', {\n validators: [Validators.required, this.nameExistsValidator(), this.nameLengthValidator()],\n });\n protected readonly mobileWidth = BREAKPOINT_WIDTH.MOBILE;\n protected readonly popoverPosition = [\n PopoverPositions['BottomRight'],\n PopoverPositions['BottomLeft'],\n PopoverPositions['Right'],\n PopoverPositions['Left'],\n ];\n protected readonly selectedFilter = signal(undefined);\n protected readonly selectedFilterName = computed(() => this.selectedFilter() ?? this.i18n.views());\n\n constructor() {\n effect(() => {\n this.loadSavedFilters(this._keys());\n });\n }\n\n protected handleCancelClick(): void {\n this.mode = 'list';\n }\n\n protected handleCreateViewClick(): void {\n if (this._filters().length > 0) {\n this.newViewNameCtrl.setValue('');\n this.newViewNameCtrl.markAsUntouched();\n this.mode = 'create';\n } else {\n this.snackbarService.openErrorSnack('VIEWS.ERRORS.NO_FILTERS');\n }\n }\n\n protected async handleDeleteFilterClick(filter: SavedFilter): Promise {\n const confirm = await firstValueFrom(\n this.confirmationModalService.openModal({\n title: 'VIEWS.DELETE_CONFIRMATION.TITLE',\n cancelOnEscapeKeyOrBackgroundClick: true,\n message: this.translateService.instant('VIEWS.DELETE_CONFIRMATION.MESSAGE', { viewName: filter.name }),\n type: 'warn',\n confirmButtonText: 'ACTIONS.DELETE',\n }),\n );\n if (confirm) {\n if (this.selectedFilter() === filter.name) {\n this.selectedFilter.set(undefined);\n }\n const savedFilters = this.savedFilters().filter((f) => f.name !== filter.name);\n this.savedFilters.set(savedFilters);\n localStorage.setItem(this._keys()[0], JSON.stringify(savedFilters));\n }\n }\n\n protected handleSaveClick(): void {\n this.newViewNameCtrl.markAsTouched();\n if (this.newViewNameCtrl.valid) {\n const name = this.newViewNameCtrl.value!;\n const savedFilter: SavedFilter = { name, filters: this._filters() };\n const savedFilters = this.sortFilters(this.savedFilters().concat(savedFilter));\n if (this._keys()[0]) {\n localStorage.setItem(this._keys()[0], JSON.stringify(savedFilters));\n }\n this.savedFilters.set(savedFilters);\n this.selectedFilter.set(name);\n this.viewsMenu?.close();\n }\n }\n\n protected handleSelectFilterClick(filter: PresetFilter | SavedFilter): void {\n this.selectedFilter.set(filter.name);\n this._filters.set(filter.filters);\n this.filtersChange.emit(filter.filters);\n this.viewsMenu?.close();\n }\n\n protected handleViewsClick(): void {\n this.viewsMenu?.open();\n this.mode = 'list';\n }\n\n private filterAreEqual(a: GalaxyFilterInterface[], b: GalaxyFilterInterface[]): boolean {\n // remove preset filters of the comparison\n const filterOutPresetsFn = (f: GalaxyFilterInterface): boolean => !f.definition?.preset;\n // filter out irrelevant attributes\n const mapRelevantFieldsFn = (f: GalaxyFilterInterface) => ({\n fieldId: f.fieldId,\n operator: f.operator,\n values: f.values,\n });\n\n let filterA = a.filter(filterOutPresetsFn).map(mapRelevantFieldsFn);\n let filterB = b.filter(filterOutPresetsFn).map(mapRelevantFieldsFn);\n // sort by fieldId\n filterA = filterA.sort((x, y) => x.fieldId.localeCompare(y.fieldId));\n filterB = filterB.sort((x, y) => x.fieldId.localeCompare(y.fieldId));\n // compare\n return JSON.stringify(filterA) === JSON.stringify(filterB);\n }\n\n private loadSavedFilters(keys: string[]): void {\n for (const key of keys) {\n const savedFilters = key ? localStorage.getItem(key) : undefined;\n if (savedFilters) {\n try {\n const filters = JSON.parse(savedFilters);\n this.savedFilters.set(this.sortFilters(filters));\n break;\n } catch {\n this.savedFilters.set([]);\n localStorage.removeItem(key);\n }\n }\n }\n }\n\n private nameExistsValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value as string;\n const exists = Boolean(this.allFilters().find((f) => f.name === value));\n return exists ? { presetName: true } : null;\n };\n }\n\n private nameLengthValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value as string;\n if (value.length > 36) {\n return { nameLength: true };\n }\n return null;\n };\n }\n\n private sortFilters(filters: SavedFilters): SavedFilters {\n return filters.sort((a, b) => a.name.toLocaleLowerCase().localeCompare(b.name.toLocaleLowerCase()));\n }\n}\n","\n\n\n \n {{ 'VIEWS.VIEWS' | translate }}\n \n \n \n \n \n\n\n\n
\n
\n \n \n delete\n \n
\n
\n
\n\n \n\n\n\n \n \n filter_list\n \n

{{ 'VIEWS.EMPTY' | translate }}

\n
\n
\n\n\n \n {{ 'VIEWS.VIEW_NAME' | translate }}\n \n \n \n {{ 'VIEWS.ERRORS.VIEW_NAME_REQUIRED' | translate }}\n \n \n {{ 'VIEWS.ERRORS.EQUAL_TO_PRESET_NAME' | translate }}\n \n \n {{ 'VIEWS.ERRORS.VIEW_NAME_TOO_LONG' | translate }}\n \n \n \n\n\n \n \n\n","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiaW50ZXJmYWNlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHYWxheHlGaWx0ZXJJbnRlcmZhY2UgfSBmcm9tICdAdmVuZGFzdGEvZ2FsYXh5L2ZpbHRlci9jaGlwcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2V0RmlsdGVyIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmaWx0ZXJzOiBHYWxheHlGaWx0ZXJJbnRlcmZhY2VbXTtcbn1cbmV4cG9ydCB0eXBlIFByZXNldEZpbHRlcnMgPSBQcmVzZXRGaWx0ZXJbXTtcblxuZXhwb3J0IGludGVyZmFjZSBTYXZlZEZpbHRlciBleHRlbmRzIFByZXNldEZpbHRlciB7XG4gIHByZXNldD86IGJvb2xlYW47XG59XG5leHBvcnQgdHlwZSBTYXZlZEZpbHRlcnMgPSBTYXZlZEZpbHRlcltdO1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119","export { FilterViewComponent } from './filter-view.component';\nexport * from './interfaces';\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CrmBoardColumnInterface, CrmBoardColumnMetadataInterface } from '@galaxy/crm/components/board';\nimport { GalaxyFilterInterface } from '@vendasta/galaxy/filter/chips';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { MatIcon } from '@angular/material/icon';\nimport { ValueSummary } from '../value-summary.service';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Component({\n selector: 'crm-list-objects-board-column-header',\n templateUrl: './column-header.component.html',\n styleUrls: ['./column-header.component.scss'],\n imports: [CommonModule, GalaxyPipesModule, MatIcon, TranslateModule, MatTooltip],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListObjectsBoardColumnHeaderComponent {\n column = input>();\n metadata = input();\n summary = input();\n\n probability = computed(() => {\n const column = this.column();\n return Math.trunc(100 * (column?.probability || 0));\n });\n columnAmounts = computed(() => {\n const column = this.column();\n const summary = this.summary();\n if (!column || !summary) {\n return;\n }\n\n return summary.stages?.find((stage) => stage.stageId === column.id)?.amounts;\n });\n\n total = computed(() => this.columnAmounts()?.total);\n estimated = computed(() => this.columnAmounts()?.estimated);\n}\n","
\n
{{ column().name }}
\n \n @if (columnAmounts()) {\n
\n {{ total().value | glxyCurrency: total().currencyCode }}\n @if (estimated()?.value) {\n balance\n {{ estimated().value | glxyCurrency: estimated().currencyCode }}\n }\n
\n }\n
\n","import { Component, Inject, inject, Input, OnInit } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { CustomCellComponent } from '@vendasta/galaxy/table';\nimport { ActivityInterface, FieldMaskInterface, FieldValueInterface } from '@vendasta/crm';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { firstValueFrom, of } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { ActivityService } from '../../../shared-services/crm-services/activity.service';\nimport {\n ActivityTaskStatus,\n CrmMultilocationInjectionToken,\n CrmMultiLocationDependencies,\n} from '../../../tokens-and-interfaces';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { StandardIds, SystemFieldIds } from '../../../shared-services';\n\ninterface TaskStatusCellData {\n namespace: string;\n objectId: string;\n}\n\n@Component({\n template: `\n \n radio_button_unchecked\n \n check_circle\n \n \n `,\n styleUrls: ['./task-status.component.scss'],\n imports: [CommonModule, GalaxyPipesModule, TranslateModule, MatIconModule, MatButtonModule],\n})\nexport class TaskStatusCellComponent extends CustomCellComponent implements OnInit {\n protected taskOpen = false;\n private activityId = '';\n private readonly activitySubtype = 'Task';\n private readonly analyticsService = inject(ProductAnalyticsService);\n\n @Input() multilocationNamespace = '';\n\n set values(cellData: TaskStatusCellData) {\n this.multilocationNamespace = cellData.namespace;\n this.activityId = cellData.objectId;\n }\n\n set value(newValues: (FieldValueInterface | null)[]) {\n const firstValue = newValues[0];\n if (firstValue && typeof firstValue === 'object' && 'namespace' in firstValue) {\n this.values = firstValue as TaskStatusCellData;\n return;\n }\n\n const statusField = newValues.filter(Boolean).find((field) => field?.fieldId === StandardIds.ActivityTaskStatus);\n this.taskOpen = statusField?.stringValue === ActivityTaskStatus.Open;\n\n if (!this.activityId) {\n const idField = newValues.filter(Boolean).find((field) => field?.fieldId === SystemFieldIds.ActivityID);\n if (idField?.stringValue) {\n this.activityId = idField.stringValue;\n }\n }\n\n const namespaceValue = newValues[newValues.length - 1];\n if (namespaceValue?.fieldId === 'namespace') {\n this.multilocationNamespace = namespaceValue.stringValue || '';\n }\n }\n\n updateTaskCompletionStatus() {\n const newStatus = this.taskOpen ? ActivityTaskStatus.Completed : ActivityTaskStatus.Open;\n const activity: ActivityInterface = {\n crmObjectId: this.activityId,\n crmObjectSubtype: this.activitySubtype,\n fields: [{ fieldId: StandardIds.ActivityTaskStatus, stringValue: newStatus }],\n };\n const mask: FieldMaskInterface = {\n paths: [StandardIds.ActivityTaskStatus],\n };\n try {\n firstValueFrom(this.activityService.updateActivity(activity, mask)).then(() => {\n this.snack.openSuccessSnack('TASK.STATUS_UPDATE.SUCCESS');\n this.taskOpen = !this.taskOpen;\n });\n } catch {\n this.snack.openErrorSnack('TASK.STATUS_UPDATE.ERROR');\n }\n\n this.analyticsService.trackEvent('task-table-update-status', 'sales-tasks', 'click', 1, {\n status: newStatus,\n });\n }\n\n updateTaskCompletionStatusMultilocation() {\n const newStatus = this.taskOpen ? ActivityTaskStatus.Completed : ActivityTaskStatus.Open;\n if (!this.multilocationNamespace) {\n this.snack.openErrorSnack('TASK.STATUS_UPDATE.ERROR');\n return;\n }\n\n const activity: ActivityInterface = {\n crmObjectId: this.activityId,\n crmObjectSubtype: this.activitySubtype,\n fields: [{ fieldId: StandardIds.ActivityTaskStatus, stringValue: newStatus }],\n };\n const mask: FieldMaskInterface = {\n paths: [StandardIds.ActivityTaskStatus],\n };\n try {\n firstValueFrom(\n this.activityService.updateActivityMultilocation(activity, mask, this.multilocationNamespace) ?? of(null),\n ).then(() => {\n this.snack.openSuccessSnack('TASK.STATUS_UPDATE.SUCCESS');\n this.taskOpen = !this.taskOpen;\n });\n } catch {\n this.snack.openErrorSnack('TASK.STATUS_UPDATE.ERROR');\n }\n\n this.analyticsService.trackEvent('task-table-update-status', 'sales-tasks', 'click', 1, {\n status: newStatus,\n });\n }\n\n private readonly multiLocationSignal = toSignal(\n (this.multiLocationConfig.multiLocationContext$ ?? of({})).pipe(\n take(1),\n map((context: { groupId?: string }) => !!context?.groupId),\n ),\n { initialValue: false },\n );\n\n isMultiLocation = false;\n\n ngOnInit() {\n this.isMultiLocation = this.multiLocationSignal();\n }\n\n constructor(\n private readonly activityService: ActivityService,\n private readonly snack: SnackbarService,\n @Inject(CrmMultilocationInjectionToken) private readonly multiLocationConfig: CrmMultiLocationDependencies,\n ) {\n super();\n }\n}\n","import { Component, signal, computed, WritableSignal } from '@angular/core';\nimport { switchMap } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { BlankValueComponent, CustomCellComponent } from '@vendasta/galaxy/table';\nimport { FieldValueInterface } from '@vendasta/crm';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { SystemFieldIds } from '../../../shared-services';\nimport { UserWithDisplayName } from '../../../tokens-and-interfaces';\nimport { ActivityAssigneeService } from '../../../shared-services';\n\nconst NO_VALUE_FOR_USER = '';\n\n@Component({\n template: `\n \n
\n {{ userName() }}\n
\n
\n \n
\n
\n \n \n \n `,\n imports: [CommonModule, BlankValueComponent],\n})\nexport class UserCellComponent extends CustomCellComponent {\n NO_VALUE_FOR_USER = NO_VALUE_FOR_USER;\n private fieldValues = signal([]);\n\n set value(newValues: FieldValueInterface[]) {\n this.fieldValues.set(newValues);\n }\n\n user: WritableSignal' | null> = signal(null);\n userName = computed(() => {\n const user = this.user();\n if (user === NO_VALUE_FOR_USER) {\n return '';\n }\n return user?.displayName ?? '';\n });\n\n constructor(private readonly userService: ActivityAssigneeService) {\n super();\n toObservable(this.fieldValues)\n .pipe(\n switchMap((fieldValues) => {\n const userId =\n fieldValues.find((fieldValue) => fieldValue?.fieldId === SystemFieldIds.ActivityOwnerID) ?? null;\n if (!userId || !userId?.stringValue) {\n return of(NO_VALUE_FOR_USER);\n }\n return this.userService.getMultiUsers([userId.stringValue]);\n }),\n takeUntilDestroyed(),\n )\n .subscribe((result) => {\n if (result === NO_VALUE_FOR_USER || !result.length) {\n this.user.set(NO_VALUE_FOR_USER);\n return;\n }\n const user = result[0] as UserWithDisplayName;\n if (!user?.userId) {\n this.user.set(NO_VALUE_FOR_USER);\n return;\n }\n this.user.set(user);\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FieldValueInterface } from '@vendasta/crm';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { BlankValueComponent, CustomCellComponent } from '@vendasta/galaxy/table';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { StandardIds } from '../../../shared-services';\nimport { ActivityTaskStatus } from '../../../tokens-and-interfaces';\n\n@Component({\n template: `\n \n
\n {{ date | glxyDate: dateFormat }}\n 0; else showInHours\">\n ({{ 'TASK.LIST_OBJECTS_TABLE.CUSTOM_COLUMNS.DAYS_OVERDUE' | translate: { amount: daysOverdue } }})\n \n ({{\n 'TASK.LIST_OBJECTS_TABLE.CUSTOM_COLUMNS.HOURS_OVERDUE' | translate: { amount: hoursOverdue }\n }})\n
\n \n {{ date | glxyDate: dateFormat }}\n \n
\n\n \n \n \n `,\n imports: [CommonModule, BlankValueComponent, GalaxyPipesModule, TranslateModule],\n styleUrls: ['./due-date.component.scss'],\n})\nexport class DueDateCellComponent extends CustomCellComponent {\n protected date: Date | undefined;\n protected isOverdue = false;\n protected daysOverdue = 0;\n protected hoursOverdue = 0;\n protected dateFormat = DateFormat.medium;\n private readonly milisecToHours = 3600000;\n\n set value(newValues: FieldValueInterface[]) {\n const dueDateField = newValues.filter(Boolean).find((field) => field?.fieldId === StandardIds.ActivityTaskDueDate);\n this.date = dueDateField?.dateValue || undefined;\n\n const statusField = newValues.filter(Boolean).find((field) => field?.fieldId === StandardIds.ActivityTaskStatus);\n const timeOverdue = this.getTimeOverdue(this.date);\n this.isOverdue = timeOverdue.isOverdue && statusField?.stringValue === ActivityTaskStatus.Open;\n this.daysOverdue = timeOverdue.days;\n this.hoursOverdue = timeOverdue.hours;\n }\n\n /*\n Check if a dueDate has passed and calculate the days and hours it is overdue by\n Something is overdue if the current time is at least an hour past the due date\n */\n private getTimeOverdue(dueDate?: Date): { days: number; hours: number; isOverdue: boolean } {\n if (!dueDate) {\n return { days: 0, hours: 0, isOverdue: false };\n }\n const todayHours = Date.now() / this.milisecToHours || 0;\n const dueDateHours = dueDate?.getTime() / this.milisecToHours || 0;\n if (todayHours === 0 || dueDateHours === 0) {\n return { days: 0, hours: 0, isOverdue: false };\n }\n const hoursOverdue = todayHours - dueDateHours;\n return {\n days: Math.floor(hoursOverdue / 24),\n hours: Math.floor(hoursOverdue),\n isOverdue: Math.floor(hoursOverdue) > 0,\n };\n }\n\n constructor() {\n super();\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { CrmObjectDisplayService, CrmObjectService } from '../../../shared-services';\nimport {\n CrmDependencies,\n CrmInjectionToken,\n CrmMultiLocationDependencies,\n CrmMultilocationInjectionToken,\n ObjectType,\n} from '../../../tokens-and-interfaces';\nimport { Observable, catchError, combineLatest, map, of, switchMap } from 'rxjs';\nimport { CrmObjectInterface } from '@vendasta/crm';\nimport { PAGE_ROUTES } from '../../../constants';\n\n@Injectable()\nexport class AssociatedCrmObjectService {\n private readonly config: CrmDependencies = inject(CrmInjectionToken);\n private readonly multiLocation: CrmMultiLocationDependencies = inject(CrmMultilocationInjectionToken);\n private readonly crmObjectService = inject(CrmObjectService);\n private readonly objectDisplayService = inject(CrmObjectDisplayService);\n\n public getCrmObjectName(namespace?: string, objectType?: ObjectType, objectId?: string): Observable {\n if (!namespace || !objectType || !objectId) {\n return of('');\n }\n return this.getCrmObject(namespace, objectType, objectId).pipe(\n map((crmObject) => {\n if (crmObject) {\n return this.objectDisplayService.getObjectDisplayName(objectType, crmObject);\n }\n return '';\n }),\n );\n }\n\n private getCrmObject(\n namespace: string,\n objectType: ObjectType,\n objectId: string,\n ): Observable {\n return this.crmObjectService.getMultiObject(objectType, [objectId], [], namespace).pipe(\n map((response) => response?.crmObjects?.[0]),\n catchError(() => of(undefined)),\n );\n }\n\n public getCrmObjectUrl(namespace?: string, objectType?: ObjectType, objectId?: string): Observable {\n if (!namespace || !objectType || !objectId) {\n return of('');\n }\n const isMultiLocation$ = this.multiLocation.isMultiLocation$ ?? of(false);\n const routePrefix$ = isMultiLocation$.pipe(\n switchMap((isMultiLocation) => {\n return isMultiLocation ? this.multiLocation.routePrefix$ : this.config.routePrefix$;\n }),\n );\n return combineLatest([routePrefix$, isMultiLocation$]).pipe(\n map(([pathRoot, isMultiLocation]) => {\n let pathTemplate = '';\n switch (objectType) {\n case 'Company':\n if (isMultiLocation) {\n return '';\n }\n pathTemplate = `${PAGE_ROUTES.COMPANY.ROOT}/${PAGE_ROUTES.COMPANY.SUBROUTES.PROFILE}`;\n break;\n case 'Contact':\n if (isMultiLocation) {\n pathTemplate = `${PAGE_ROUTES.MULTI_LOCATION.CONTACTS.ROOT}/${PAGE_ROUTES.MULTI_LOCATION.CONTACTS.SUBROUTES.PROFILE}`;\n break;\n }\n pathTemplate = `${PAGE_ROUTES.CONTACT.ROOT}/${PAGE_ROUTES.CONTACT.SUBROUTES.PROFILE}`;\n break;\n default:\n return '';\n }\n\n return `${pathRoot}/${pathTemplate}`.replace(':crmObjectId', objectId).replace(':namespace', namespace);\n }),\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Signal, computed, signal } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { BlankValueComponent, CustomCellComponent } from '@vendasta/galaxy/table';\nimport { switchMap } from 'rxjs';\nimport { ObjectType } from '../../../tokens-and-interfaces';\nimport { AssociatedCrmObjectService } from './associated-crm-object.service';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\n\ninterface AssociationIdentifier {\n objectType: ObjectType;\n namespace: string;\n objectId: string;\n}\n\n@Component({\n styleUrls: ['../shared.scss'],\n templateUrl: './associated-crm-object.component.html',\n providers: [AssociatedCrmObjectService],\n imports: [RouterLink, CommonModule, BlankValueComponent],\n})\nexport class AssociatedCrmObjectComponent extends CustomCellComponent {\n private associationIdentifier = signal(undefined);\n\n set value(identifiers: AssociationIdentifier) {\n this.associationIdentifier.set(identifiers);\n }\n\n protected displayName: Signal;\n protected redirectUrl: Signal;\n protected isLoaded: Signal = computed(() => this.displayName() !== undefined);\n\n constructor(private service: AssociatedCrmObjectService) {\n super();\n\n const key = toObservable(this.associationIdentifier);\n this.displayName = toSignal(\n key.pipe(switchMap((key) => this.service.getCrmObjectName(key?.namespace, key?.objectType, key?.objectId))),\n );\n this.redirectUrl = toSignal(\n key.pipe(switchMap((key) => this.service.getCrmObjectUrl(key?.namespace, key?.objectType, key?.objectId))),\n );\n }\n}\n","@defer (when isLoaded()) {\n @if (redirectUrl()) {\n \n @if (displayName()) {\n {{ displayName() }}\n } @else {\n \n }\n \n } @else {\n
\n @if (displayName()) {\n {{ displayName() }}\n } @else {\n \n }\n
\n }\n} @placeholder {\n
\n}\n","import { Component, Signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CustomCellComponent } from '@vendasta/galaxy/table';\nimport { FieldValueInterface } from '@vendasta/crm';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { StandardIds } from '../../../shared-services';\nimport { CrmTruncatePipe } from '../../../shared-pipes';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { map } from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n template: `\n
\n {{ body | crmTruncate: taskBodyLimit : true }}\n @if (showTooltip) {\n ...\n }\n
\n `,\n imports: [CommonModule, GalaxyPipesModule, CrmTruncatePipe, GalaxyTooltipModule],\n})\nexport class TaskBodyCellComponent extends CustomCellComponent {\n protected taskBodyLimit = 20;\n protected body = '';\n protected showTooltip = false;\n protected isMobile: Signal;\n\n constructor(private breakpointObserver: BreakpointObserver) {\n super();\n this.isMobile = toSignal(\n this.breakpointObserver.observe([Breakpoints.XSmall]).pipe(map((result) => result.matches)),\n );\n }\n\n set value(newValues: (FieldValueInterface | null)[]) {\n const bodyField = newValues.filter(Boolean).find((field) => field?.fieldId === StandardIds.ActivityTaskBody);\n this.body = bodyField?.stringValue ? this.escapeHtml(bodyField.stringValue) : '';\n this.showTooltip = this.body.length > this.taskBodyLimit;\n }\n\n protected escapeHtml(html: string): string {\n const tempElement = document.createElement('div');\n tempElement.innerHTML = html;\n return tempElement.textContent || '';\n }\n}\n","export { TaskStatusCellComponent } from './task-status/task-status.component';\nexport { PrimaryCompanyNameComponent } from './primary-company-name.component';\nexport { ParentCompanyNameComponent } from './parent-company-name.component';\nexport { UserCellComponent } from './user/user.component';\nexport { DueDateCellComponent } from './due-date/due-date.component';\nexport { CompanyBatchGetterService } from './company-batch-getter.service';\nexport { AssociatedCrmObjectComponent } from './associated-crm-object/associated-crm-object.component';\nexport { PrimaryAssociationCellComponent } from './primary-association-cell/primary-association-cell.component';\nexport { LocationCellComponent } from './multilocation/location.component';\nexport { TaskBodyCellComponent } from './task-body/task-body.component';\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Row, RowData } from '@vendasta/galaxy/table';\nimport { CrmFieldService, StandardExternalIds, StandardIds, SystemFieldIds } from '../../../shared-services';\nimport { CrmInjectionToken, ObjectType } from '../../../tokens-and-interfaces';\nimport { format, ParsedNumber, parseNumber } from 'libphonenumber-js';\nimport { GalaxyCurrencyPipe, GalaxyDatePipe } from '@vendasta/galaxy/pipes';\nimport { TranslateService } from '@ngx-translate/core';\nimport { firstValueFrom } from 'rxjs';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { FieldValueInterface } from '@vendasta/crm';\nimport { PrimaryAssociationCellComponent } from '../../custom-table-cells';\n\ninterface DisplayComponent {\n component?: any;\n inputs?: any;\n}\n\nconst asString = (value: unknown): string => {\n if (!value) {\n return '';\n }\n if (isFieldValueInterface(value)) {\n return asString(value[0]?.stringValue);\n }\n return String(value);\n};\n\nconst isFieldValueInterface = (value: unknown): value is FieldValueInterface[] => {\n return Array.isArray(value);\n};\n\n@Component({\n selector: 'crm-list-objects-board-card-content',\n templateUrl: './card-content.component.html',\n styleUrls: ['./card-content.component.scss'],\n imports: [CommonModule, GalaxyLoadingSpinnerModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListObjectsBoardCardContentComponent {\n private readonly userService = inject(CrmInjectionToken).services?.userService;\n\n readonly objectType = input.required();\n readonly row = input.required();\n\n private readonly crmFieldService = inject(CrmFieldService);\n private readonly fieldIDs = {\n FirstName: this.crmFieldService.getFieldId(StandardExternalIds.FirstName),\n LastName: this.crmFieldService.getFieldId(StandardExternalIds.LastName),\n PhoneNumber: this.crmFieldService.getFieldId(StandardExternalIds.PhoneNumber),\n Email: this.crmFieldService.getFieldId(StandardExternalIds.Email),\n };\n\n protected readonly title = computed(() => this.computeTitle());\n protected readonly subtitle = computed(() => this.computeSubtitle());\n protected readonly details = computed(() => this.computeDetails());\n protected readonly bottomLeft = computed(() => this.computeBottomLeft());\n\n protected readonly bottomRight = signal('');\n protected readonly isLoadingBottomRight = signal(false);\n protected readonly ownerId = computed(() => this.computeOwnerId());\n protected readonly showFooter = computed(() => this.bottomLeft().length > 0 || this.ownerId());\n\n constructor(private readonly translate: TranslateService) {\n effect(async () => {\n const ownerId = this.ownerId();\n if (ownerId && this.userService) {\n this.isLoadingBottomRight.set(true);\n const users = await firstValueFrom(this.userService.getMultiUsers([ownerId]));\n const ownerName = users?.[0]?.displayName || '';\n this.bottomRight.set(ownerName);\n this.isLoadingBottomRight.set(false);\n }\n });\n }\n\n private computeTitle(): string {\n const data = this.row()?.data;\n const objectType = this.objectType();\n if (objectType === 'Contact') {\n return this.getContactName(data);\n }\n if (objectType === 'Company') {\n return this.getCompanyName(data);\n }\n if (objectType === 'Opportunity') {\n return this.getOpportunityName(data);\n }\n if (objectType === 'Activity') {\n return asString(data?.[StandardIds.ActivityName]?.value?.name) || '';\n }\n return '--';\n }\n\n private computeSubtitle(): DisplayComponent {\n const objectId = this.row()?.id;\n const objectType = this.objectType();\n switch (objectType) {\n case 'Opportunity':\n return {\n component: PrimaryAssociationCellComponent,\n inputs: {\n value: {\n objectType: objectType,\n objectId: objectId,\n showUrl: false,\n },\n },\n };\n }\n return {};\n }\n\n private computeDetails(): string[] {\n const data = this.row()?.data;\n const objectType = this.objectType();\n switch (objectType) {\n case 'Contact':\n return this.getContactDetails(data);\n case 'Company':\n return this.getCompanyDetails(data);\n case 'Opportunity':\n return this.getOpportunityDetails(data);\n default:\n break;\n }\n return [];\n }\n\n private computeBottomLeft(): string {\n const data = this.row()?.data;\n const objectType = this.objectType();\n if (objectType === 'Opportunity') {\n return this.getOpportunityValue(data);\n }\n return '';\n }\n\n private computeOwnerId() {\n const data = this.row()?.data;\n const objectType = this.objectType();\n switch (objectType) {\n case 'Opportunity':\n return asString(data?.[SystemFieldIds.OpportunityOwnerID]?.value);\n default:\n break;\n }\n return '';\n }\n\n private getContactName(data?: RowData): string {\n const firstNameData = asString(data?.[this.fieldIDs.FirstName]?.value);\n const lastNameData = asString(data?.[this.fieldIDs.LastName]?.value);\n if (firstNameData || lastNameData) {\n return `${firstNameData} ${lastNameData}`.trim();\n }\n return '--';\n }\n\n private getContactDetails(data?: RowData): string[] {\n const phoneValue = asString(data?.[this.fieldIDs.PhoneNumber]?.value);\n const phoneNumber = phoneValue\n ? format(parseNumber(phoneValue, { defaultCountry: 'US' }) as ParsedNumber, 'INTERNATIONAL')\n : '';\n\n const details: string[] = [\n asString(data?.[this.fieldIDs.Email]?.value),\n asString(data?.[StandardIds.ContactJobTitle]?.value),\n phoneNumber,\n data?.[StandardIds.ContactLinkedInURL]?.value,\n ];\n return details.filter((d) => d?.length > 0);\n }\n\n private getCompanyName(data?: RowData): string {\n return asString(data?.[StandardIds.CompanyName]?.value) || '--';\n }\n\n private getCompanyDetails(data?: RowData): string[] {\n const phoneValue = asString(data?.[StandardIds.CompanyPhoneNumber]?.value);\n const phoneNumber = phoneValue\n ? format(parseNumber(phoneValue, { defaultCountry: 'US' }) as ParsedNumber, 'INTERNATIONAL')\n : '';\n\n const address = [\n asString(data?.[StandardIds.CompanyPrimaryAddressLine1]?.value),\n asString(data?.[StandardIds.CompanyPrimaryAddressLine2]?.value),\n asString(data?.[StandardIds.CompanyPrimaryAddressCity]?.value),\n asString(data?.[StandardIds.CompanyPrimaryAddressState]?.value),\n asString(data?.[StandardIds.CompanyPrimaryAddressPostalCode]?.value),\n ]\n .filter(Boolean)\n .join(', ');\n\n const details: string[] = [asString(data?.[StandardIds.CompanyWebsite]?.value), address, phoneNumber];\n return details.filter((d) => d?.length > 0);\n }\n\n private getOpportunityName(data?: RowData): string {\n return asString(data?.[StandardIds.OpportunityName]?.value) || '--';\n }\n\n private getOpportunityValue(data?: RowData): string {\n const currencyValue = data?.[StandardIds.OpportunityAmount];\n const amount = currencyValue?.value ?? 0;\n if (currencyValue?.cellType == 'currency' && currencyValue?.code) {\n return new GalaxyCurrencyPipe().transform(amount, currencyValue.code);\n }\n return '';\n }\n\n private getOpportunityDetails(data?: RowData): string[] {\n const details = [];\n if (data) {\n details.push(this.getObjectRowDetails(data, SystemFieldIds.OpportunityLastActivityDate));\n if (data[StandardIds.OpportunityActualCloseDate]?.value) {\n details.push(this.getObjectRowDetails(data, StandardIds.OpportunityActualCloseDate));\n } else {\n details.push(this.getObjectRowDetails(data, StandardIds.OpportunityExpectedCloseDate));\n }\n }\n return details.filter((d) => d?.length > 0);\n }\n\n private getObjectRowDetails(data: RowData, fieldId: string): string {\n const cellValue = data[fieldId]?.value;\n const cellType = data[fieldId]?.cellType;\n if (cellValue) {\n let formattedValue = '';\n switch (cellType) {\n case 'date':\n formattedValue = new GalaxyDatePipe().transform(cellValue);\n break;\n default:\n formattedValue = asString(cellValue);\n break;\n }\n const translationKey = FieldTranslationKeys[fieldId];\n return `${this.translate.instant(translationKey)}: ${formattedValue}`;\n }\n\n return '';\n }\n}\n\nconst FieldTranslationKeys: { [name: string]: string } = {\n [SystemFieldIds.OpportunityLastActivityDate]: 'OPPORTUNITY.PIPELINE.LAST_ACTIVITY',\n [StandardIds.OpportunityExpectedCloseDate]: 'OPPORTUNITY.PIPELINE.EXPECTED_CLOSE_DATE',\n [StandardIds.OpportunityActualCloseDate]: 'OPPORTUNITY.PIPELINE.ACTUAL_CLOSE_DATE',\n};\n","
\n
{{ title() }}
\n @if (subtitle().component) {\n \n }\n @for (detail of details(); track $index; let first = $first) {\n @if (first) {\n
\n }\n
{{ detail }}
\n }\n\n @if (showFooter()) {\n
\n
\n
{{ bottomLeft() }}
\n
\n @if (bottomRight() || isLoadingBottomRight()) {\n @if (isLoadingBottomRight()) {\n \n } @else {\n {{ bottomRight() }}\n }\n }\n
\n
\n }\n
\n","import { Component, DestroyRef, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport {\n CrmPipelineService,\n Pipeline,\n} from '../../shared-services/crm-services/crm-object-service/crm-pipeline.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, combineLatest, Observable, take } from 'rxjs';\nimport { CrmInjectionToken, ObjectType } from '../../tokens-and-interfaces';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { MatDivider } from '@angular/material/divider';\n\nimport { Router } from '@angular/router';\nimport { PAGE_ROUTES } from '../../constants';\n\nexport const SUPPORTED_OBJECT_TYPES = ['Opportunity'];\n\n@Component({\n selector: 'crm-pipeline-selector',\n imports: [CommonModule, ReactiveFormsModule, MatSelectModule, GalaxyFormFieldModule, TranslateModule, MatDivider],\n templateUrl: './pipeline-selector.component.html',\n styleUrl: './pipeline-selector.component.scss',\n})\nexport class PipelineSelectorComponent implements OnInit {\n private readonly config = inject(CrmInjectionToken);\n\n private selectedPipelineId$$ = new BehaviorSubject('');\n @Input() set selectedPipelineId(id: string) {\n this.selectedPipelineId$$.next(id);\n }\n @Input() objectType: ObjectType = 'Opportunity';\n @Output() selectionChanged = new EventEmitter();\n private lastEmittedPipelineId$$ = new BehaviorSubject('');\n\n selectedPipelineControl = new FormControl(null);\n protected allPipelines$ = new Observable();\n\n protected readonly noPipelinesOption = 'NO_PIPELINES';\n constructor(\n private readonly pipelineService: CrmPipelineService,\n private readonly destroyRef: DestroyRef,\n private readonly router: Router,\n ) {}\n\n ngOnInit(): void {\n if (!SUPPORTED_OBJECT_TYPES.includes(this.objectType)) {\n return;\n }\n this.allPipelines$ = this.pipelineService.listPipelines$(this.objectType);\n\n this.selectedPipelineControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((pipeline) => {\n this.emitPipeline(pipeline);\n });\n\n combineLatest([this.allPipelines$, this.selectedPipelineId$$])\n .pipe(takeUntilDestroyed(this.destroyRef), distinctUntilChanged())\n .subscribe(([pipelines, selectedPipelineId]) => {\n let selectedPipeline = pipelines?.find((pipeline) => pipeline?.id === selectedPipelineId);\n if (!selectedPipeline) {\n selectedPipeline = pipelines?.[0];\n }\n this.selectedPipelineControl.setValue(selectedPipeline);\n });\n }\n\n comparePipelines(p1: Pipeline, p2: Pipeline): boolean {\n return p1?.id === p2?.id;\n }\n\n openPipelineSettings(): void {\n combineLatest([this.config.routePrefix$, this.lastEmittedPipelineId$$])\n .pipe(take(1))\n .subscribe(([routePrefix, lastEmittedPipelineId]) => {\n this.router.navigateByUrl(`${routePrefix}/${PAGE_ROUTES.PIPELINE_SETTINGS.ROOT}/${lastEmittedPipelineId}`);\n });\n }\n\n private emitPipeline(pipeline: Pipeline | null) {\n this.selectionChanged.emit(pipeline);\n if (pipeline) {\n this.lastEmittedPipelineId$$.next(pipeline.id);\n }\n }\n}\n","@if (objectType === 'Opportunity') {\n
\n \n {{ 'OPPORTUNITY.PIPELINE.SELECTOR.TITLE' | translate }}\n \n @let pipelines = allPipelines$ | async;\n @if (pipelines && pipelines.length > 0) {\n @for (pipeline of pipelines; track pipeline) {\n {{ pipeline.name }}\n }\n } @else {\n {{\n 'OPPORTUNITY.PIPELINE.SELECTOR.NO_PIPELINES' | translate\n }}\n }\n \n \n {{ 'PIPELINES.SETTINGS.TITLE' | translate }}\n \n \n \n
\n}\n","export { PipelineSelectorComponent } from './pipeline-selector.component';\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n effect,\n EventEmitter,\n inject,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n signal,\n ViewChild,\n WritableSignal,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTableModule } from '@angular/material/table';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { RxState } from '@rx-angular/state';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { GalaxySnackbarModule, SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { GalaxyDataSource, GalaxyTableModule, Row } from '@vendasta/galaxy/table';\nimport { GalaxyColumnDef } from '@vendasta/galaxy/table/src/table.interface';\nimport { BehaviorSubject, combineLatest, firstValueFrom, forkJoin, Observable, of, Subscription } from 'rxjs';\nimport {\n ActivityType,\n CrmDependencies,\n CrmInjectionToken,\n CrmMultiLocationDependencies,\n CrmMultilocationInjectionToken,\n CrmObjectDependencies,\n CrmObjectInjectionToken,\n CRMRowObject,\n ListObjectView,\n MultiRowAction,\n ObjectType,\n SelectAllAction,\n SingleRowAction,\n} from '../../tokens-and-interfaces';\nimport { LIST_OBJECTS_DEFAULT_PAGE_SIZE, LIST_OBJECTS_PAGE_SIZE_OPTIONS, PAGE_ROUTES } from '../../constants';\nimport { TranslationModule } from '../../i18n/translation-module';\nimport { ListObjectsTableService } from './list-objects-table.service';\nimport { bufferTime, catchError, filter, map, startWith, switchMap, take, tap, withLatestFrom } from 'rxjs/operators';\nimport { SidepanelComponent } from '../side-panel/side-panel.component';\nimport { FilterVisibleActionsPipe } from '../../shared-pipes';\nimport { CrmTableStateService } from '../../shared-services/crm-services/crm-object-service/crm-table-state.service';\nimport { GalaxyFilterChipsModule, GalaxyFilterInterface, GalaxyFilterOperator } from '@vendasta/galaxy/filter/chips';\nimport { MatSort, MatSortModule } from '@angular/material/sort';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { CrmFiltersService } from '../../shared-services/crm-services/crm-filters.service';\nimport { decodeFilters, encodeFilters, validateFilters } from '@vendasta/galaxy/filter/chips/src/utils';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { FilterViewComponent, PresetFilters } from '../filter-view';\nimport { GalaxyFilterChipsComponent } from '@vendasta/galaxy/filter/chips/src/galaxy-filter-chips.component';\nimport { CustomRowStyle } from '../../shared-services/table-customization/_abstract-table-customization.service';\nimport { FeatureFlagsApiService } from '@vendasta/partner';\nimport { ContactCustomColumns, CRMTrackingService, Pipeline, StandardIds } from '../../shared-services';\nimport { FadeIn, LoadingBehavior } from '@galaxy/crm/components/animations';\nimport {\n CrmBoardCardContentDirective,\n CrmBoardColumnHeaderDirective,\n CrmBoardComponent,\n CrmBoardDatasourceInterface,\n CrmBoardItemClickedEvent,\n CrmBoardItemClickedToken,\n CrmBoardItemCompareToken,\n} from '@galaxy/crm/components/board';\nimport { ListObjectsBoardColumnHeaderComponent } from './board/column-header.component';\nimport { ListObjectsBoardCardContentComponent } from './board/card-content.component';\nimport { PipelineSelectorComponent } from '../pipeline-selector';\nimport { GalaxyTableSelectionCustomization, GalaxyTableSelectionCustomizationToken } from '@vendasta/galaxy/table/';\nimport { ValueSummary, ValueSummaryService } from './value-summary.service';\nimport { TranslateForCrmObjectPipe, TranslateForCrmObjectService } from '../../i18n';\n\n@Component({\n selector: 'crm-list-objects-table',\n templateUrl: `./list-objects-table.component.html`,\n styleUrls: ['./list-objects-table.component.scss'],\n imports: [\n CommonModule,\n GalaxyEmptyStateModule,\n GalaxyLoadingSpinnerModule,\n GalaxyTableModule,\n MatTableModule,\n MatIconModule,\n MatMenuModule,\n MatButtonModule,\n TranslationModule,\n MatDialogModule,\n GalaxySnackbarModule,\n GalaxyBadgeModule,\n GalaxyPageModule,\n SidepanelComponent,\n FilterVisibleActionsPipe,\n GalaxyFilterChipsModule,\n MatSortModule,\n FilterViewComponent,\n CrmBoardComponent,\n CrmBoardColumnHeaderDirective,\n CrmBoardCardContentDirective,\n ListObjectsBoardColumnHeaderComponent,\n ListObjectsBoardCardContentComponent,\n PipelineSelectorComponent,\n TranslateForCrmObjectPipe,\n ],\n animations: [LoadingBehavior, FadeIn],\n providers: [\n ListObjectsTableService,\n CrmTableStateService,\n RxState,\n {\n provide: CrmBoardItemCompareToken,\n useValue: (a: Row, b: Row) => a.id === b.id,\n },\n {\n provide: CrmBoardItemClickedToken,\n useValue: (r: Row): CrmBoardItemClickedEvent => {\n return { objectId: r.id };\n },\n },\n {\n provide: GalaxyTableSelectionCustomizationToken,\n useValue: {\n rowsSelectionLimit: 100,\n } as GalaxyTableSelectionCustomization,\n },\n ],\n})\nexport class ListObjectsTableComponent implements OnInit, OnDestroy {\n protected readonly view: WritableSignal<'grid' | 'list'> = signal('list');\n protected readonly selectedPipeline: WritableSignal = signal(undefined);\n protected readonly initialPipeline: WritableSignal = signal('');\n protected readonly isBoardView = computed(() => {\n const view = this.view();\n return view === 'grid';\n });\n private readonly isBoardView$ = toObservable(this.isBoardView);\n protected readonly isOnBoardFeatureFlag$: Observable;\n protected readonly showBoardEmptyState = signal(false);\n protected readonly isMultiLocation$: Observable;\n\n protected readonly boardColumnLayout = computed(() =>\n this.service.defaultBoardColumns(this._objectType(), this.activityType, this.selectedPipeline()),\n );\n\n @Input() rowStyle: CustomRowStyle | undefined;\n\n private readonly multiActions$$ = new BehaviorSubject([]);\n\n @Input() set multiActions(actions: MultiRowAction[]) {\n this.multiActions$$.next(actions);\n }\n\n private readonly singleActions$$ = new BehaviorSubject([]);\n\n @Input() set singleActions(actions: SingleRowAction[]) {\n this.singleActions$$.next(actions);\n }\n\n private readonly _objectType = signal('Contact');\n protected readonly objectType$ = toObservable(this._objectType);\n @Input({ required: true }) set objectType(o: ObjectType) {\n this._objectType.set(o);\n this.tableStateService.setLocalStorageKey(this._objectType());\n this.service.setObjectType(this._objectType());\n this.summaryService.setObjectType(this._objectType());\n this.loadFilterBarState();\n }\n\n get objectType(): ObjectType {\n return this._objectType();\n }\n\n get objectTypeForTranslation(): ObjectType | ActivityType {\n return this.activityType ?? this.objectType;\n }\n\n get totalDataMembers(): number {\n return this.dataSource.state.totalDataMembers ?? 0;\n }\n\n readOnlyMode$$ = new BehaviorSubject(false);\n isReadOnlyMode = toSignal(this.readOnlyMode$$);\n readonly filterBarOpen = signal(false);\n readonly showFiltersOpen = computed(() => !this.isReadOnlyMode() && this.filterBarOpen());\n\n @Input() set readOnlyMode(value: boolean) {\n this.readOnlyMode$$.next(value ?? false);\n }\n\n filtersAreForced = false;\n\n @Input() set forceFilters(filters: GalaxyFilterInterface[]) {\n if (filters && filters.length > 0) {\n this.filtersAreForced = true;\n this.updateFilters([...filters], true);\n }\n }\n\n protected readonly multiRowActions$: Observable = this.objectType$.pipe(\n switchMap((objectType) => {\n return this.createMultiRowActions(objectType);\n }),\n );\n\n protected readonly selectAllActions$: Observable = this.objectType$.pipe(\n switchMap((objectType) => {\n return this.createSelectAllActions(objectType);\n }),\n );\n\n protected readonly singleRowActions$: Observable = this.objectType$.pipe(\n switchMap((objectType) => {\n return this.createSingleRowActions(objectType);\n }),\n );\n protected readonly showMultiRowActions$: Observable = combineLatest([\n this.multiRowActions$,\n this.isBoardView$,\n this.readOnlyMode$$,\n ]).pipe(map(([actions, isBoardView, readOnlyMode]) => actions.length > 0 && !isBoardView && !readOnlyMode));\n\n private _activityType: ActivityType | undefined;\n @Input() set activityType(o: ActivityType | undefined) {\n if (o) {\n this._activityType = o;\n this.service.setActivityType(this._activityType);\n }\n }\n\n get activityType(): ActivityType | undefined {\n return this._activityType;\n }\n\n @Input() presetFilters?: PresetFilters;\n @Input() refreshRow$?: Observable;\n\n @Output() editClick: EventEmitter = new EventEmitter();\n @Output() selected: EventEmitter = new EventEmitter();\n @Output() pipelineSelected = new EventEmitter();\n @Output() currentView = new EventEmitter();\n\n @ViewChild('filterChipRef') filterChipRef?: GalaxyFilterChipsComponent;\n\n protected readonly dataSource: GalaxyDataSource = this.service.dataSource;\n protected readonly boardSource: CrmBoardDatasourceInterface =\n this.service.boardSource;\n protected readonly columns$: Observable = combineLatest([\n this.service.columns$,\n this.readOnlyMode$$,\n ]).pipe(\n map(([columns, isReadOnlyMode]) => {\n if (isReadOnlyMode) {\n return columns.filter((c) => c.id !== 'actions');\n }\n return columns;\n }),\n );\n protected readonly groupConfigs$: Observable = this.service.groupConfigs$;\n protected readonly showEmptyState$: Observable = combineLatest([\n this.service.showEmptyState$,\n this.isBoardView$,\n ]).pipe(map(([showEmptyState, isBoardView]) => showEmptyState && !isBoardView && !this.filtersAreForced));\n protected selectedRows: Row[] = [];\n\n protected readonly filters = signal([]);\n protected readonly showFiltersApplied$: Observable = combineLatest([\n this.dataSource.filtersApplied$,\n toObservable(this.filters),\n ]).pipe(\n map(\n ([filtersApplied, filters]) =>\n filtersApplied &&\n filters.filter(\n (f) =>\n !!f.values?.length ||\n f.operator === GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_EMPTY ||\n f.operator === GalaxyFilterOperator.FILTER_OPERATOR_IS_EMPTY,\n ).length > 0,\n ),\n );\n\n protected readonly pageSizeOptions: number[] = LIST_OBJECTS_PAGE_SIZE_OPTIONS;\n protected readonly pageSize: number = LIST_OBJECTS_DEFAULT_PAGE_SIZE;\n\n protected viewKeys: string[] = [];\n\n private readonly confirmationModalService = inject(OpenConfirmationModalService);\n\n protected tableId = '';\n\n private readonly subscriptions: Subscription[] = [];\n\n protected readonly useSelectAll$ = this.dataSource.selectAll$;\n\n protected readonly hasSelectAllActions$ = combineLatest([this.isBoardView$, this.selectAllActions$]).pipe(\n map(([isBoardView, actions]) => actions.length > 0 && !isBoardView),\n );\n protected readonly initialLoadingCompleted$ = this.service.initialLoadingCompleted$;\n\n protected readonly boardValueSummary$: Observable = this.summaryService.valueSummary$;\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n @Inject(CrmMultilocationInjectionToken) private readonly multiLocationConfig: CrmMultiLocationDependencies,\n @Inject(FeatureFlagsApiService) private readonly featureFlagService: FeatureFlagsApiService,\n private readonly service: ListObjectsTableService,\n private readonly router: Router,\n private readonly snackService: SnackbarService,\n protected readonly dialog: MatDialog,\n private readonly tableStateService: CrmTableStateService,\n private readonly activatedRoute: ActivatedRoute,\n private readonly crmFiltersService: CrmFiltersService,\n private readonly trackingService: CRMTrackingService,\n private readonly summaryService: ValueSummaryService,\n private readonly translateForCrmObjectService: TranslateForCrmObjectService,\n @Optional()\n @Inject(CrmObjectInjectionToken)\n private readonly crmObjectDependencies: CrmObjectDependencies,\n ) {\n this.isMultiLocation$ = this.multiLocationConfig.isMultiLocation$ ?? of(false);\n this.activatedRoute.data\n .pipe(\n map((data) => (data?.['view'] === 'board' ? 'grid' : 'list')),\n take(1),\n )\n .subscribe((routeView: 'grid' | 'list') => {\n this.view.set(routeView);\n });\n this.isOnBoardFeatureFlag$ = combineLatest([\n this.config.namespace$,\n this.config.parentNamespace$,\n this.objectType$,\n ]).pipe(\n switchMap(([namespace, parentNamespace, objectType]) => {\n if (objectType === 'Opportunity') {\n return of(true);\n }\n if (objectType === 'Company' || objectType === 'Contact') {\n return this.featureFlagService\n .batchGetStatus({\n featureIds: ['crm_contact_company_board_view'],\n partnerId: (parentNamespace as string) || (namespace as string),\n })\n .pipe(\n map((response) => {\n return response?.hasAccess.length > 0 && response?.hasAccess[0];\n }),\n );\n }\n return this.featureFlagService\n .batchGetStatus({\n featureIds: ['crm_object_board_view'],\n partnerId: (parentNamespace as string) || (namespace as string),\n })\n .pipe(\n map((response) => {\n return response?.hasAccess.length > 0 && response?.hasAccess[0];\n }),\n );\n }),\n startWith(false),\n );\n this.dataSource.clearSelectionOnChange = true;\n const filterParam = this.activatedRoute.snapshot.queryParamMap.get('filter');\n let filters: GalaxyFilterInterface[] = [];\n if (filterParam) {\n const f = decodeFilters(filterParam);\n if (validateFilters(f) && f.length > 0) {\n filters = f;\n }\n }\n\n const pipelineId = this.activatedRoute.snapshot.queryParamMap.get('pipelineId');\n if (pipelineId) {\n const decodedPipelineId = decodeURIComponent(pipelineId);\n this.initialPipeline.set(decodedPipelineId);\n }\n\n if (this.isBoardView()) {\n const pipelineFieldIds = [StandardIds.ActivityTaskStatus, StandardIds.OpportunityPipelineID];\n const pipelineFilterIndex = filters.findIndex((filter) => pipelineFieldIds.includes(filter.fieldId));\n if (pipelineFilterIndex > -1) {\n filters.splice(pipelineFilterIndex, 1);\n }\n } else {\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams: { pipelineId: null },\n queryParamsHandling: 'merge',\n });\n }\n this.crmFiltersService.setInitialFilters(filters);\n this.boardSource.setFilters(filters);\n\n const sub = combineLatest([this.activatedRoute.queryParams, this.dataSource.state$])\n .pipe(\n tap(([queryParams, state]) => {\n const newQueryParams = { ...queryParams };\n let filterParam: string | null = null;\n if (state.filters && state.filters.length > 0) {\n const readyFilters = state.filters.filter(\n (filter) => !(filter.operator === GalaxyFilterOperator.FILTER_OPERATOR_IS && filter.values?.length === 0),\n );\n if (readyFilters.length > 0) {\n filterParam = encodeFilters(readyFilters);\n newQueryParams['filter'] = filterParam;\n } else {\n delete newQueryParams['filter'];\n }\n } else {\n delete newQueryParams['filter'];\n }\n // Note: `queryParamsHandling: 'merge'` doesn't work when multiple shared-components are adjusting the query params\n // at the same time. Without this other shared-components may not be able to write to the query params.\n if (queryParams['filter'] === newQueryParams['filter']) {\n return;\n }\n if (this.filtersAreForced) {\n return;\n }\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams: newQueryParams,\n });\n }),\n )\n .subscribe();\n\n this.subscriptions.push(sub);\n\n const currentView = this.isBoardView$.subscribe((isBoardView) => {\n const view = isBoardView ? 'board' : 'table';\n this.currentView.emit(view);\n });\n\n this.subscriptions.push(currentView);\n effect(() => {\n const sortingChanged = this.dataSource.sortingChanged();\n sortingChanged.forEach((sort) => {\n this.trackingService.trackEvent(this.objectType, 'sorted-crm-object-table', {\n columnId: sort.active,\n direction: sort.direction,\n objectType: this.objectType,\n });\n });\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n ngOnInit() {\n if (this.crmObjectDependencies) {\n if (this.crmObjectDependencies.baseColumnIds && this.crmObjectDependencies.baseColumnIds.length > 0) {\n this.service.setBaseColumns(this.crmObjectDependencies.baseColumnIds);\n }\n } else {\n switch (this.objectType) {\n case 'Contact':\n if (this.config.contact?.baseColumnIds && this.config.contact.baseColumnIds.length > 0) {\n this.service.setBaseColumns(this.config.contact.baseColumnIds);\n }\n break;\n case 'Company':\n if (this.config.company?.baseColumnIds && this.config.company.baseColumnIds.length > 0) {\n this.service.setBaseColumns(this.config.company.baseColumnIds);\n }\n break;\n case 'Activity':\n switch (this.activityType) {\n case 'Task':\n if (this.config.task?.baseColumnIds && this.config.task.baseColumnIds.length > 0) {\n this.service.setBaseColumns(this.config.task.baseColumnIds);\n }\n break;\n }\n break;\n case 'Opportunity':\n if (this.config.opportunity?.baseColumnIds && this.config.opportunity.baseColumnIds.length > 0) {\n this.service.setBaseColumns(this.config.opportunity.baseColumnIds);\n }\n break;\n }\n }\n\n const viewKeys: string[] = [];\n if (this.config.appID) {\n viewKeys.push('crm:' + this.config.appID + ':list-' + this.objectType + ':table');\n }\n viewKeys.push('crm:list-' + this.objectType + ':table');\n this.viewKeys = viewKeys;\n\n this.tableId = this.config.appID + '-' + this.objectType;\n\n if (this.refreshRow$) {\n this.subscriptions.push(\n this.refreshRow$\n .pipe(\n bufferTime(1000),\n map((rows) => rows.filter((row) => Boolean(row))),\n filter((rows) => rows.length > 0),\n )\n .subscribe((rowsToRefresh) => {\n this.service.refreshRows(rowsToRefresh);\n }),\n );\n }\n }\n\n protected editObject(row: Row): void {\n const namespace = row?.data['namespace']?.value ?? '';\n this.editClick.emit({\n namespace: namespace,\n objectId: row.id,\n objectType: this.objectType,\n });\n\n const routePrefix$ = this.isMultiLocation$.pipe(\n switchMap((isMultiLocation) => {\n return isMultiLocation ? this.multiLocationConfig.routePrefix$ : this.config.routePrefix$;\n }),\n );\n combineLatest([routePrefix$, this.crmObjectDependencies?.defaultPageUrl$ ?? of(''), this.isMultiLocation$])\n .pipe(take(1))\n .subscribe(([routePrefix, defaultPageUrl, isMultiLocation]) => {\n let editRouteTemplate;\n if (this.crmObjectDependencies) {\n editRouteTemplate = `${defaultPageUrl}/${PAGE_ROUTES.CUSTOM_OBJECT.SUBROUTES.EDIT}`;\n } else {\n switch (this.objectType) {\n case 'Contact':\n if (isMultiLocation) {\n editRouteTemplate = `${routePrefix}/${PAGE_ROUTES.MULTI_LOCATION.CONTACTS.ROOT}/${PAGE_ROUTES.MULTI_LOCATION.CONTACTS.SUBROUTES.EDIT}`;\n } else {\n editRouteTemplate = `${routePrefix}/${PAGE_ROUTES.CONTACT.ROOT}/${PAGE_ROUTES.CONTACT.SUBROUTES.EDIT}`;\n }\n break;\n case 'Company':\n editRouteTemplate = `${routePrefix}/${PAGE_ROUTES.COMPANY.ROOT}/${PAGE_ROUTES.COMPANY.SUBROUTES.EDIT}`;\n break;\n case 'Opportunity':\n editRouteTemplate = `${routePrefix}/${PAGE_ROUTES.OPPORTUNITY.ROOT}/${PAGE_ROUTES.OPPORTUNITY.SUBROUTES.EDIT}`;\n break;\n }\n }\n if (editRouteTemplate) {\n const editRoute = editRouteTemplate.replace(':crmObjectId', row.id).replace(':namespace', namespace);\n this.router.navigateByUrl(editRoute);\n }\n });\n }\n\n protected deleteObject(row: Row): void {\n let name: string;\n switch (this.objectTypeForTranslation) {\n case 'Company':\n name = (row?.data?.[StandardIds.CompanyName]?.value as string) || 'company';\n break;\n case 'Contact':\n name = (row?.data?.[ContactCustomColumns.FullName]?.value as string) || 'contact';\n break;\n case 'Task':\n name = (row?.data?.[StandardIds.ActivityName]?.value?.name as string) || 'task';\n break;\n default:\n name = '';\n break;\n }\n\n combineLatest([\n this.translateForCrmObjectService.getTranslationForCrmObject(\n this.objectTypeForTranslation,\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE.TITLE',\n { name: name },\n ),\n this.translateForCrmObjectService.getTranslationForCrmObject(\n this.objectTypeForTranslation,\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE.CONFIRMATION_MESSAGE',\n ),\n this.translateForCrmObjectService.getTranslationForCrmObject(\n this.objectTypeForTranslation,\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.CONFIRM',\n ),\n this.translateForCrmObjectService.getTranslationForCrmObject(\n this.objectTypeForTranslation,\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.CANCEL',\n ),\n ])\n .pipe(\n switchMap(([title, message, confirmationButtonText, cancelButtonText]) => {\n return this.confirmationModalService.openModal({\n type: 'warn',\n title: title,\n message: message,\n confirmButtonText: confirmationButtonText,\n cancelButtonText: cancelButtonText,\n });\n }),\n withLatestFrom(\n this.translateForCrmObjectService.getTranslationForCrmObject(\n this.objectTypeForTranslation,\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE.SUCCESS',\n ),\n this.translateForCrmObjectService.getTranslationForCrmObject(\n this.objectTypeForTranslation,\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE.ERROR',\n ),\n ),\n )\n .subscribe(([confirmed, success, error]: [boolean, string, string]) => {\n if (confirmed) {\n this.service.deleteObject(row.data['namespace']?.value ?? '', row.id).subscribe({\n next: () => {\n this.snackService.openSuccessSnack(success);\n },\n error: (err) => {\n console.error(err);\n this.snackService.openErrorSnack(error);\n },\n });\n }\n });\n }\n\n protected viewObject(objectId: string): void {\n if (!objectId) {\n console.error('ObjectID required when navigating to a profile page');\n }\n this.config.routePrefix$.subscribe((routePrefix) => {\n let viewRoute;\n switch (this.objectType) {\n case 'Contact':\n viewRoute = `${PAGE_ROUTES.CONTACT.ROOT}/${PAGE_ROUTES.CONTACT.SUBROUTES.PROFILE}`;\n break;\n case 'Company':\n viewRoute = `${PAGE_ROUTES.COMPANY.ROOT}/${PAGE_ROUTES.COMPANY.SUBROUTES.PROFILE}`;\n break;\n case 'Opportunity':\n viewRoute = `${PAGE_ROUTES.OPPORTUNITY.ROOT}/${PAGE_ROUTES.OPPORTUNITY.SUBROUTES.PROFILE}`;\n break;\n }\n\n if (viewRoute) {\n viewRoute = viewRoute.replace(':crmObjectId', objectId);\n this.router.navigateByUrl(`${routePrefix}/${viewRoute}`);\n }\n });\n }\n\n protected async selectViewFilters(filters: GalaxyFilterInterface[]): Promise {\n const initialFilters = await this.crmFiltersService.getInitialAppliedFilters$(\n this.objectType,\n this.crmObjectDependencies ?? undefined,\n );\n const existingPresetFilters = initialFilters.filter((filter) => filter.definition?.preset);\n this.updateFilters([...existingPresetFilters, ...filters], true);\n }\n\n pipelineChanged(pipeline: Pipeline | null) {\n if (pipeline) {\n this.selectedPipeline.set(pipeline);\n this.summaryService.setPipelineId(pipeline.id);\n this.updatePipelineQueryParam(pipeline.id);\n this.pipelineSelected.emit(true);\n } else {\n this.setStateForNoPipelineSelected();\n }\n }\n\n setStateForNoPipelineSelected() {\n this.showBoardEmptyState.set(true);\n this.pipelineSelected.emit(false);\n }\n\n updatePipelineQueryParam(pipelineId: string) {\n let encodedPipelineId = null;\n if (pipelineId) {\n encodedPipelineId = encodeURIComponent(pipelineId);\n }\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams: { pipelineId: encodedPipelineId },\n queryParamsHandling: 'merge',\n });\n }\n\n protected updateFilters(filters: GalaxyFilterInterface[], updateChipList?: boolean): void {\n this.dataSource.setFilters(filters);\n this.boardSource.setFilters(filters);\n this.filters.set(filters);\n if (updateChipList) {\n this.filterChipRef?.filters.set(filters);\n }\n this.trackingService.trackFilterUsage(this.objectType, filters);\n }\n\n protected selectionChanged(rows: Row[]): void {\n this.selectedRows = rows;\n this.selected.emit(rows);\n }\n\n protected columnsChanged(columns: GalaxyColumnDef[]): void {\n // there's a select column at the start of every table execution with an advanced selector\n // the columns shouldn't be saved if only the select column is available\n // in the list of columns\n const columnCount = columns.filter((c) => c.id !== 'select').length;\n if (columnCount > 0) {\n this.tableStateService.setLocalStorageColumns(columns);\n }\n }\n\n protected searchTermChanged(searchTerm: string): void {\n this.boardSource.setSearchTerm(searchTerm);\n }\n\n private createSingleRowActions(objectType: ObjectType): Observable {\n let typeSingleActions$: Observable;\n\n switch (objectType) {\n case 'Contact':\n typeSingleActions$ = this.config.contact?.singleRowTableActions$ ?? of([]);\n break;\n case 'Company':\n typeSingleActions$ = this.config.company?.singleRowTableActions$ ?? of([]);\n break;\n case 'Activity':\n typeSingleActions$ = this.config.task?.singleRowTableActions$ ?? of([]);\n break;\n case 'Opportunity':\n typeSingleActions$ = this.config.opportunity?.singleRowTableActions$ ?? of([]);\n break;\n default:\n typeSingleActions$ = of([]);\n break;\n }\n\n return combineLatest([typeSingleActions$, this.singleActions$$]).pipe(\n map(([typeActions, singleActions]) => [...typeActions, ...singleActions]),\n );\n }\n\n private deleteRows(rows: Row[]): void {\n combineLatest([\n this.translateForCrmObjectService.getTranslationForCrmObject(\n this.objectTypeForTranslation,\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.TITLE',\n ),\n this.translateForCrmObjectService.getTranslationForCrmObject(\n this.objectTypeForTranslation,\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.CONFIRMATION_MESSAGE',\n ),\n this.translateForCrmObjectService.getTranslationForCrmObject(\n this.objectTypeForTranslation,\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.CONFIRM',\n ),\n this.translateForCrmObjectService.getTranslationForCrmObject(\n this.objectTypeForTranslation,\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.CANCEL',\n ),\n ])\n .pipe(\n switchMap(([title, message, confirmationButtonText, cancelButtonText]) => {\n return this.confirmationModalService.openModal({\n type: 'warn',\n title: title,\n message: message,\n confirmButtonText: confirmationButtonText,\n cancelButtonText: cancelButtonText,\n });\n }),\n )\n .subscribe((confirmed) => {\n if (confirmed) {\n const objectKeys = rows.map((row) => ({ id: row.id, namespace: row.data['namespace']?.value }));\n forkJoin(\n objectKeys.map((key) => {\n return this.service.deleteObject(key.namespace, key.id).pipe(\n map(() => ''),\n catchError(() => {\n return of(key.id);\n }),\n );\n }),\n )\n .pipe(\n withLatestFrom(\n this.translateForCrmObjectService.getTranslationForCrmObject(\n this.objectTypeForTranslation,\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.SUCCESS',\n ),\n this.translateForCrmObjectService.getTranslationForCrmObject(\n this.objectTypeForTranslation,\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.ERROR',\n ),\n ),\n )\n .subscribe(([resp, success, error]: [string[], string, string]) => {\n const failedIDs = resp.filter((address) => address !== '');\n if (failedIDs.length === 0) {\n this.snackService.openSuccessSnack(success);\n } else {\n console.error('Failed to delete IDs: ', failedIDs);\n this.snackService.openErrorSnack(error);\n }\n if (resp.length - failedIDs.length > 0) {\n // If anything has been deleted, clear the selection\n this.dataSource.clearSelection();\n }\n });\n }\n });\n }\n\n private createMultiRowActions(objectType: ObjectType): Observable {\n let typeMultiActions$: Observable;\n\n switch (objectType) {\n case 'Contact':\n typeMultiActions$ = this.config.contact?.multiRowTableActions$ ?? of([]);\n break;\n case 'Company':\n typeMultiActions$ = this.config.company?.multiRowTableActions$ ?? of([]);\n break;\n case 'Activity':\n typeMultiActions$ = this.config.task?.multiRowTableActions$ ?? of([]);\n break;\n case 'Opportunity':\n typeMultiActions$ = this.config.opportunity?.multiRowTableActions$ ?? of([]);\n break;\n default:\n typeMultiActions$ = of([]);\n break;\n }\n\n const deleteRowsAction$ = this.translateForCrmObjectService\n .getTranslationForCrmObject(this.objectTypeForTranslation, 'LIST_OBJECTS_TABLE.ACTIONS.DELETE_SELECTED.ACTION')\n .pipe(\n map((label) => {\n return {\n label: label,\n callback: (rows: Row[]) => this.deleteRows(rows),\n selectAllVisible: false,\n };\n }),\n );\n\n return combineLatest([typeMultiActions$, this.multiActions$$, deleteRowsAction$]).pipe(\n map(([typeActions, multiActions, deleteRowsAction]) => [...typeActions, ...multiActions, deleteRowsAction]),\n );\n }\n\n private createSelectAllActions(objectType: ObjectType): Observable {\n let selectAllActions$: Observable;\n\n switch (objectType) {\n case 'Contact':\n selectAllActions$ = this.config.contact?.selectAllTableActions$ ?? of([]);\n break;\n case 'Company':\n selectAllActions$ = this.config.company?.selectAllTableActions$ ?? of([]);\n break;\n case 'Activity':\n selectAllActions$ = this.config.task?.selectAllTableActions$ ?? of([]);\n break;\n case 'Opportunity':\n selectAllActions$ = this.config.opportunity?.selectAllTableActions$ ?? of([]);\n break;\n default:\n selectAllActions$ = of([]);\n break;\n }\n\n return selectAllActions$;\n }\n\n protected handleSelectAll() {\n this.dataSource.toggleSelectAll();\n }\n\n protected async changeDisplay(display: 'grid' | 'list'): Promise {\n const routeDisplay = display === 'grid' ? 'board' : display;\n let routeObject;\n if (this.objectType === 'Contact') {\n routeObject = `${PAGE_ROUTES.CONTACT.ROOT}`;\n } else if (this.objectType === 'Company') {\n routeObject = `${PAGE_ROUTES.COMPANY.ROOT}`;\n } else if (this.objectType === 'Activity' && this._activityType === 'Task') {\n routeObject = `${PAGE_ROUTES.TASK.ROOT}`;\n } else if (this.objectType === 'Opportunity') {\n routeObject = `${PAGE_ROUTES.OPPORTUNITY.ROOT}`;\n } else {\n throw new Error(`Invalid object type: ${this.objectType}`);\n }\n const routePrefix = await firstValueFrom(this.config.routePrefix$);\n await this.router.navigate([`${routePrefix}/${routeObject}/${routeDisplay}`], {\n queryParamsHandling: 'merge',\n });\n }\n\n protected boardItemUpdateFailed(): void {\n this.snackService.openErrorSnack('ERRORS.GENERIC_EDIT_MESSAGE');\n }\n\n protected boardItemClicked(event: CrmBoardItemClickedEvent): void {\n this.viewObject(event.objectId);\n }\n\n protected handleFilterOpenChange(open: boolean): void {\n if (!this.isReadOnlyMode()) {\n // save filter bar state to local storage\n const key = this.tableStateService.tableState().filterBarOpenStorageKey;\n if (key) {\n localStorage.setItem(key, open ? 'open' : 'closed');\n }\n }\n this.filterBarOpen.set(open);\n }\n\n private loadFilterBarState(): void {\n const key = this.tableStateService.tableState().filterBarOpenStorageKey;\n if (key) {\n const open = localStorage.getItem(key) !== 'closed';\n this.filterBarOpen.set(open);\n } else {\n this.filterBarOpen.set(true);\n }\n }\n\n openAndSetupPipelineSettings(): void {\n this.config.routePrefix$.pipe(take(1)).subscribe((routePrefix) => {\n const settingPage = `${routePrefix}/${PAGE_ROUTES.PIPELINE_SETTINGS.ROOT}`;\n this.router.navigateByUrl(this.router.createUrlTree([settingPage], { queryParams: { create: true } }));\n });\n }\n}\n","\n\n\n@if (columns$ | async) {\n \n \n @if (!isReadOnlyMode()) {\n \n \n }\n @if (hasSelectAllActions$ | async) {\n
\n
\n @if (useSelectAll$ | async) {\n
\n {{\n 'LIST_OBJECTS_TABLE.SELECT_ALL.TOTAL_SELECTED'\n | translateForCrmObject: objectType : { totalSelected: dataSource.state.totalDataMembers }\n | async\n }}\n
\n \n {{ 'LIST_OBJECTS_TABLE.SELECT_ALL.CLEAR_SELECTION' | translateForCrmObject: objectType | async }}\n \n } @else {\n \n {{\n 'LIST_OBJECTS_TABLE.SELECT_ALL.SELECT_ALL_OBJECTS'\n | translateForCrmObject: objectType : { totalObjects: dataSource.state.totalDataMembers }\n | async\n }}\n \n }\n
\n
\n }\n @if (useSelectAll$ | async) {\n \n {{ action.label | translate }}\n \n } @else {\n \n }\n @if (!isReadOnlyMode()) {\n
\n @if (isBoardView()) {\n \n }\n \n
\n }\n \n @switch (view()) {\n @case ('grid') {\n @if (showBoardEmptyState()) {\n \n \n \n \n \n {{\n 'LIST_OBJECTS_TABLE.PIPELINE.EMPTY_STATE.TITLE'\n | translateForCrmObject: objectTypeForTranslation\n | async\n }}\n \n

\n {{\n 'LIST_OBJECTS_TABLE.PIPELINE.EMPTY_STATE.MESSAGE'\n | translateForCrmObject: objectTypeForTranslation\n | async\n }}\n

\n \n \n \n
\n } @else {\n \n \n \n \n \n \n \n \n \n \n }\n }\n @default {\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n more_vert\n \n \n \n \n \n \n \n {{\n 'LIST_OBJECTS_TABLE.ACTIONS.EDIT.TITLE'\n | translateForCrmObject: objectTypeForTranslation\n | async\n }}\n \n \n \n \n {{\n 'LIST_OBJECTS_TABLE.ACTIONS.DELETE.ACTION'\n | translateForCrmObject: objectTypeForTranslation\n | async\n }}\n \n \n \n
\n \n
\n \n \n }\n }\n @if (showEmptyState$ | async) {\n \n \n \n \n \n {{ 'LIST_OBJECTS_TABLE.EMPTY_TABLE.HEADER' | translateForCrmObject: objectTypeForTranslation | async }}\n \n

\n {{ 'LIST_OBJECTS_TABLE.EMPTY_TABLE.HINT' | translateForCrmObject: objectTypeForTranslation | async }}\n

\n
\n }\n \n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n EventEmitter,\n Inject,\n input,\n Input,\n Optional,\n Output,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { Router, RouterModule } from '@angular/router';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { combineLatest, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport {\n ActivityType,\n CrmDependencies,\n CrmInjectionToken,\n CrmObjectDependencies,\n CrmObjectInjectionToken,\n CRMRowObject,\n ListObjectView,\n MultiRowAction,\n ObjectType,\n SingleRowAction,\n} from '../../tokens-and-interfaces';\nimport { TranslationModule } from '../../i18n/translation-module';\nimport { ListObjectsTableComponent } from './list-objects-table.component';\nimport { CustomRowStyle } from '../../shared-services/table-customization/_abstract-table-customization.service';\nimport { PresetFilters } from '../filter-view';\nimport { Row } from '@vendasta/galaxy/table';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { TranslateForCrmObjectPipe } from '../../i18n';\n\n@Component({\n selector: 'crm-list-objects-page',\n templateUrl: './list-objects-page.component.html',\n imports: [\n CommonModule,\n MatMenuModule,\n GalaxyPageModule,\n GalaxyTooltipModule,\n ListObjectsTableComponent,\n MatButtonModule,\n MatIconModule,\n RouterModule,\n TranslationModule,\n TranslateForCrmObjectPipe,\n ],\n styleUrls: ['./list-objects-page.component.scss'],\n})\nexport class ListObjectsPageComponent {\n @Input({ required: true }) objectType!: ObjectType;\n @Input() activityType: ActivityType | undefined;\n @Input() customRowStyle: CustomRowStyle | undefined;\n @Input() multiActions: MultiRowAction[] = [];\n @Input() singleActions: SingleRowAction[] = [];\n @Input() createObjectRoute = '';\n @Input() accountPageRoute = '';\n @Input() presetFilters?: PresetFilters;\n @Input() refreshRow$?: Observable;\n importCSVRoute = input();\n private readonly importCSVRoute$ = toObservable(this.importCSVRoute);\n readonly canCreateObject = computed(() => {\n if (this.currentView() === 'table' || this.objectType !== 'Opportunity') {\n return true;\n }\n return this.isPipelineSelected();\n });\n readonly currentView: WritableSignal = signal('unknown');\n readonly isPipelineSelected = signal(false);\n\n @Output() editClick: EventEmitter = new EventEmitter();\n @Output() selectionChange: EventEmitter = new EventEmitter();\n\n protected readonly mobileView$ = this.breakpointObserver\n .observe('(max-width: 768px)')\n .pipe(map((breakpoints) => breakpoints.matches));\n\n protected get typeForTitle(): ObjectType | ActivityType {\n return this.activityType ?? this.objectType;\n }\n\n protected readonly createObjectRoute$: Observable = this.config.routePrefix$.pipe(\n filter(() => !!this.createObjectRoute),\n map((crm) => {\n if (this.crmObjectDependencies) {\n return this.createObjectRoute;\n }\n return `/${crm}/${this.createObjectRoute}`;\n }),\n );\n\n protected readonly importCSVRouteWithPrefix$: Observable = combineLatest([\n this.config.routePrefix$,\n this.importCSVRoute$,\n ]).pipe(\n filter(([_, importCSVRoute]) => !!importCSVRoute),\n map(([crm, route]) => `${crm}/${route}`),\n );\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private router: Router,\n private breakpointObserver: BreakpointObserver,\n @Optional()\n @Inject(CrmObjectInjectionToken)\n private readonly crmObjectDependencies: CrmObjectDependencies,\n ) {}\n\n navigateToCsvImportRoute(route: string): void {\n this.router.navigate([route], {\n state: { previousPageObjectType: this.objectType },\n });\n }\n\n setPipelineSelected(isPipelineSelected: boolean): void {\n this.isPipelineSelected.set(isPipelineSelected);\n }\n\n storeCurrentView(view: ListObjectView): void {\n this.currentView.set(view);\n }\n}\n","@if (mobileView$ | async; as mobileView) {\n
\n \n
\n} @else {\n \n}\n\n\n \n \n {{ 'TITLE' | translateForCrmObject: typeForTitle | async }}\n\n \n \n \n \n {{ 'ACTIONS.IMPORT' | translate }}\n \n \n \n @if (mobileView) {\n \n add\n \n } @else {\n \n {{ 'ADD_OBJECT_BUTTON' | translateForCrmObject: typeForTitle | async }}\n \n }\n \n \n \n \n \n \n \n\n","import { Directive, Input } from '@angular/core';\n\ntype Placement = 'page-actions';\n\n@Directive({\n selector: '[crmTableContent]',\n standalone: true,\n})\nexport class ListObjectsTableContentDirective {\n @Input() set crmTableContent(value: Placement) {\n this.placement = value;\n }\n placement?: Placement;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[crmPageActions], crm-page-actions',\n standalone: true,\n})\nexport class PageActionsDirective {}\n","import { Component, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatDrawer, MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'crm-drawer',\n templateUrl: 'drawer.component.html',\n styleUrls: ['drawer.component.scss'],\n imports: [CommonModule, MatButtonModule, MatIconModule, MatSidenavModule, MatToolbarModule],\n})\nexport class CrmDrawerComponent {\n @ViewChild('drawer') drawer?: MatDrawer;\n @ViewChild('drawerContentRef', { read: ViewContainerRef })\n set drawerContentRef(value: ViewContainerRef) {\n this._drawerContentRef = value;\n }\n private _drawerContentRef?: ViewContainerRef;\n\n protected title = '';\n\n close(): void {\n this._drawerContentRef?.clear();\n this.drawer?.close();\n }\n\n open(content: TemplateRef, title?: string): void {\n if (this._drawerContentRef && this.drawer) {\n this._drawerContentRef.clear();\n this._drawerContentRef.createEmbeddedView(content);\n this.title = title || '';\n this.drawer.open();\n }\n }\n}\n","\n \n \n \n {{ title }}\n \n \n \n
\n \n
\n
\n \n \n \n
\n","export { CrmDrawerComponent } from './drawer.component';\nexport { SidepanelComponent } from './side-panel.component';\nexport { SidepanelService } from './side-panel.service';\n","import { ActivityTaskStatus } from '../../../../tokens-and-interfaces';\n\nexport const STANDARD_DATE_FORMAT = \"yyyy-MM-dd'T'HH:mm\";\nexport const DEFAULT_TASK_STATUS = ActivityTaskStatus.Open;\n\nexport const DEFAULT_RICH_TEXT_PLUGINS = 'link lists';\nexport const DEFAULT_RICH_TEXT_TOOLBAR = [\n 'styleselect | bold italic link unlink | forecolor backcolor | alignleft aligncenter alignright | bullist numlist | removeformat',\n];\n","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = requiredArgs;\nfunction requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDate;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nfunction isDate(value) {\n (0, _index.default)(1, arguments);\n return value instanceof Date || (0, _typeof2.default)(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toDate;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nfunction toDate(argument) {\n (0, _index.default)(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || (0, _typeof2.default)(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isValid;\nvar _index = _interopRequireDefault(require(\"../isDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid(dirtyDate) {\n (0, _index3.default)(1, arguments);\n if (!(0, _index.default)(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = (0, _index2.default)(dirtyDate);\n return !isNaN(Number(date));\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toInteger;\nfunction toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addMilliseconds;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n (0, _index3.default)(2, arguments);\n var timestamp = (0, _index2.default)(dirtyDate).getTime();\n var amount = (0, _index.default)(dirtyAmount);\n return new Date(timestamp + amount);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = subMilliseconds;\nvar _index = _interopRequireDefault(require(\"../addMilliseconds/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds(dirtyDate, dirtyAmount) {\n (0, _index2.default)(2, arguments);\n var amount = (0, _index3.default)(dirtyAmount);\n return (0, _index.default)(dirtyDate, -amount);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCDayOfYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_DAY = 86400000;\nfunction getUTCDayOfYear(dirtyDate) {\n (0, _index2.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction startOfUTCISOWeek(dirtyDate) {\n (0, _index2.default)(1, arguments);\n var weekStartsOn = 1;\n var date = (0, _index.default)(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nfunction getUTCISOWeekYear(dirtyDate) {\n (0, _index2.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = (0, _index3.default)(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = (0, _index3.default)(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../getUTCISOWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction startOfUTCISOWeekYear(dirtyDate) {\n (0, _index3.default)(1, arguments);\n var year = (0, _index.default)(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = (0, _index2.default)(fourthOfJanuary);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\nfunction getUTCISOWeek(dirtyDate) {\n (0, _index4.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var diff = (0, _index2.default)(date).getTime() - (0, _index3.default)(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getDefaultOptions = getDefaultOptions;\nexports.setDefaultOptions = setDefaultOptions;\nvar defaultOptions = {};\nfunction getDefaultOptions() {\n return defaultOptions;\n}\nfunction setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index4 = require(\"../defaultOptions/index.js\");\nfunction startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n (0, _index2.default)(1, arguments);\n var defaultOptions = (0, _index4.getDefaultOptions)();\n var weekStartsOn = (0, _index3.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = (0, _index.default)(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCWeekYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index5 = require(\"../defaultOptions/index.js\");\nfunction getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n (0, _index2.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = (0, _index5.getDefaultOptions)();\n var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = (0, _index3.default)(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = (0, _index3.default)(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCWeekYear;\nvar _index = _interopRequireDefault(require(\"../getUTCWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index5 = require(\"../defaultOptions/index.js\");\nfunction startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n (0, _index2.default)(1, arguments);\n var defaultOptions = (0, _index5.getDefaultOptions)();\n var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = (0, _index.default)(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = (0, _index3.default)(firstWeek, options);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\nfunction getUTCWeek(dirtyDate, options) {\n (0, _index4.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var diff = (0, _index2.default)(date, options).getTime() - (0, _index3.default)(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addLeadingZeros;\nfunction addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return (0, _index.default)(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : (0, _index.default)(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return (0, _index.default)(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return (0, _index.default)(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return (0, _index.default)(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return (0, _index.default)(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return (0, _index.default)(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return (0, _index.default)(fractionalSeconds, token.length);\n }\n};\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/getUTCDayOfYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../../../_lib/getUTCWeek/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../../../_lib/getUTCWeekYear/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\nvar _index7 = _interopRequireDefault(require(\"../lightFormatters/index.js\"));\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return _index7.default.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = (0, _index5.default)(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return (0, _index6.default)(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return (0, _index6.default)(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = (0, _index3.default)(date);\n\n // Padding\n return (0, _index6.default)(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return (0, _index6.default)(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return (0, _index6.default)(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return (0, _index6.default)(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return _index7.default.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return (0, _index6.default)(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = (0, _index4.default)(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return (0, _index6.default)(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = (0, _index2.default)(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return (0, _index6.default)(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return _index7.default.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = (0, _index.default)(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return (0, _index6.default)(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return (0, _index6.default)(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return (0, _index6.default)(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return (0, _index6.default)(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return _index7.default.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return _index7.default.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return (0, _index6.default)(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return (0, _index6.default)(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return _index7.default.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return _index7.default.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return _index7.default.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return (0, _index6.default)(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return (0, _index6.default)(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + (0, _index6.default)(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + (0, _index6.default)(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = (0, _index6.default)(Math.floor(absOffset / 60), 2);\n var minutes = (0, _index6.default)(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nvar _default = longFormatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getTimezoneOffsetInMilliseconds;\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isProtectedDayOfYearToken = isProtectedDayOfYearToken;\nexports.isProtectedWeekYearToken = isProtectedWeekYearToken;\nexports.throwProtectedError = throwProtectedError;\nvar protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nfunction isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nfunction isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nfunction throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nvar _default = formatDistance;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildFormatLongFn;\nfunction buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildFormatLongFn/index.js\"));\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: (0, _index.default)({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: (0, _index.default)({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: (0, _index.default)({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nvar _default = formatLong;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nvar _default = formatRelative;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildLocalizeFn;\nfunction buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildLocalizeFn/index.js\"));\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: (0, _index.default)({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: (0, _index.default)({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: (0, _index.default)({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: (0, _index.default)({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: (0, _index.default)({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nvar _default = localize;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildMatchFn;\nfunction buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildMatchPatternFn;\nfunction buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildMatchFn/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/buildMatchPatternFn/index.js\"));\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: (0, _index2.default)({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: (0, _index.default)({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: (0, _index.default)({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: (0, _index.default)({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: (0, _index.default)({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: (0, _index.default)({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nvar _default = match;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"./_lib/formatDistance/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"./_lib/formatLong/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"./_lib/formatRelative/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"./_lib/localize/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"./_lib/match/index.js\"));\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: _index.default,\n formatLong: _index2.default,\n formatRelative: _index3.default,\n localize: _index4.default,\n match: _index5.default,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nvar _default = locale;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../locale/en-US/index.js\"));\nvar _default = _index.default;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = format;\nvar _index = _interopRequireDefault(require(\"../isValid/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../subMilliseconds/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../_lib/format/formatters/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../_lib/format/longFormatters/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../_lib/getTimezoneOffsetInMilliseconds/index.js\"));\nvar _index7 = require(\"../_lib/protectedTokens/index.js\");\nvar _index8 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index9 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index10 = require(\"../_lib/defaultOptions/index.js\");\nvar _index11 = _interopRequireDefault(require(\"../_lib/defaultLocale/index.js\"));\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nfunction format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n (0, _index9.default)(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = (0, _index10.getDefaultOptions)();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : _index11.default;\n var firstWeekContainsDate = (0, _index8.default)((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = (0, _index8.default)((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = (0, _index3.default)(dirtyDate);\n if (!(0, _index.default)(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = (0, _index6.default)(originalDate);\n var utcDate = (0, _index2.default)(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = _index5.default[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = _index4.default[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && (0, _index7.isProtectedWeekYearToken)(substring)) {\n (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && (0, _index7.isProtectedDayOfYearToken)(substring)) {\n (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\nmodule.exports = exports.default;","/**\n * Returns the formatted time zone name of the provided `timeZone` or the current\n * system time zone if omitted, accounting for DST according to the UTC value of\n * the date.\n */\nexport default function tzIntlTimeZoneName(length, date, options) {\n var dtf = getDTF(length, options.timeZone, options.locale);\n return dtf.formatToParts ? partsTimeZone(dtf, date) : hackyTimeZone(dtf, date);\n}\nfunction partsTimeZone(dtf, date) {\n var formatted = dtf.formatToParts(date);\n for (var i = formatted.length - 1; i >= 0; --i) {\n if (formatted[i].type === 'timeZoneName') {\n return formatted[i].value;\n }\n }\n}\nfunction hackyTimeZone(dtf, date) {\n var formatted = dtf.format(date).replace(/\\u200E/g, '');\n var tzNameMatch = / [\\w-+ ]+$/.exec(formatted);\n return tzNameMatch ? tzNameMatch[0].substr(1) : '';\n}\n\n// If a locale has been provided `en-US` is used as a fallback in case it is an\n// invalid locale, otherwise the locale is left undefined to use the system locale.\nfunction getDTF(length, timeZone, locale) {\n if (locale && !locale.code) {\n throw new Error(\"date-fns-tz error: Please set a language code on the locale object imported from date-fns, e.g. `locale.code = 'en-US'`\");\n }\n return new Intl.DateTimeFormat(locale ? [locale.code, 'en-US'] : undefined, {\n timeZone: timeZone,\n timeZoneName: length\n });\n}","/**\r\n * Returns the [year, month, day, hour, minute, seconds] tokens of the provided\r\n * `date` as it will be rendered in the `timeZone`.\r\n */\nexport default function tzTokenizeDate(date, timeZone) {\n var dtf = getDateTimeFormat(timeZone);\n return dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date);\n}\nvar typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5\n};\nfunction partsOffset(dtf, date) {\n try {\n var formatted = dtf.formatToParts(date);\n var filled = [];\n for (var i = 0; i < formatted.length; i++) {\n var pos = typeToPos[formatted[i].type];\n if (pos >= 0) {\n filled[pos] = parseInt(formatted[i].value, 10);\n }\n }\n return filled;\n } catch (error) {\n if (error instanceof RangeError) {\n return [NaN];\n }\n throw error;\n }\n}\nfunction hackyOffset(dtf, date) {\n var formatted = dtf.format(date);\n var parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted);\n // var [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed\n // return [fYear, fMonth, fDay, fHour, fMinute, fSecond]\n return [parsed[3], parsed[1], parsed[2], parsed[4], parsed[5], parsed[6]];\n}\n\n// Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used\n// to get deterministic local date/time output according to the `en-US` locale which\n// can be used to extract local time parts as necessary.\nvar dtfCache = {};\nfunction getDateTimeFormat(timeZone) {\n if (!dtfCache[timeZone]) {\n // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`\n var testDateFormatted = new Intl.DateTimeFormat('en-US', {\n hourCycle: 'h23',\n timeZone: 'America/New_York',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit'\n }).format(new Date('2014-06-25T04:00:00.123Z'));\n var hourCycleSupported = testDateFormatted === '06/25/2014, 00:00:00' || testDateFormatted === '‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00';\n dtfCache[timeZone] = hourCycleSupported ? new Intl.DateTimeFormat('en-US', {\n hourCycle: 'h23',\n timeZone: timeZone,\n year: 'numeric',\n month: 'numeric',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit'\n }) : new Intl.DateTimeFormat('en-US', {\n hour12: false,\n timeZone: timeZone,\n year: 'numeric',\n month: 'numeric',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit'\n });\n }\n return dtfCache[timeZone];\n}","/**\n * Use instead of `new Date(Date.UTC(...))` to support years below 100 which doesn't work\n * otherwise due to the nature of the\n * [`Date` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years.\n *\n * For `Date.UTC(...)`, use `newDateUTC(...).getTime()`.\n */\nexport default function newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {\n var utcDate = new Date(0);\n utcDate.setUTCFullYear(fullYear, month, day);\n utcDate.setUTCHours(hour, minute, second, millisecond);\n return utcDate;\n}","import tzTokenizeDate from '../tzTokenizeDate/index.js';\nimport newDateUTC from '../newDateUTC/index.js';\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar patterns = {\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-]\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/\n};\n\n// Parse various time zone offset formats to an offset in milliseconds\nexport default function tzParseTimezone(timezoneString, date, isUtcDate) {\n var token;\n var absoluteOffset;\n\n // Empty string\n if (!timezoneString) {\n return 0;\n }\n\n // Z\n token = patterns.timezoneZ.exec(timezoneString);\n if (token) {\n return 0;\n }\n var hours;\n\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString);\n if (token) {\n hours = parseInt(token[1], 10);\n if (!validateTimezone(hours)) {\n return NaN;\n }\n return -(hours * MILLISECONDS_IN_HOUR);\n }\n\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString);\n if (token) {\n hours = parseInt(token[2], 10);\n var minutes = parseInt(token[3], 10);\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;\n return token[1] === '+' ? -absoluteOffset : absoluteOffset;\n }\n\n // IANA time zone\n if (isValidTimezoneIANAString(timezoneString)) {\n date = new Date(date || Date.now());\n var utcDate = isUtcDate ? date : toUtcDate(date);\n var offset = calcOffset(utcDate, timezoneString);\n var fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString);\n return -fixedOffset;\n }\n return NaN;\n}\nfunction toUtcDate(date) {\n return newDateUTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n}\nfunction calcOffset(date, timezoneString) {\n var tokens = tzTokenizeDate(date, timezoneString);\n\n // ms dropped because it's not provided by tzTokenizeDate\n var asUTC = newDateUTC(tokens[0], tokens[1] - 1, tokens[2], tokens[3] % 24, tokens[4], tokens[5], 0).getTime();\n var asTS = date.getTime();\n var over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return asUTC - asTS;\n}\nfunction fixOffset(date, offset, timezoneString) {\n var localTS = date.getTime();\n\n // Our UTC time is just a guess because our offset is just a guess\n var utcGuess = localTS - offset;\n\n // Test whether the zone matches the offset for this ts\n var o2 = calcOffset(new Date(utcGuess), timezoneString);\n\n // If so, offset didn't change, and we're done\n if (offset === o2) {\n return offset;\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= o2 - offset;\n\n // If that gives us the local time we want, we're done\n var o3 = calcOffset(new Date(utcGuess), timezoneString);\n if (o2 === o3) {\n return o2;\n }\n\n // If it's different, we're in a hole time. The offset has changed, but we don't adjust the time\n return Math.max(o2, o3);\n}\nfunction validateTimezone(hours, minutes) {\n return -23 <= hours && hours <= 23 && (minutes == null || 0 <= minutes && minutes <= 59);\n}\nvar validIANATimezoneCache = {};\nfunction isValidTimezoneIANAString(timeZoneString) {\n if (validIANATimezoneCache[timeZoneString]) return true;\n try {\n new Intl.DateTimeFormat(undefined, {\n timeZone: timeZoneString\n });\n validIANATimezoneCache[timeZoneString] = true;\n return true;\n } catch (error) {\n return false;\n }\n}","import tzIntlTimeZoneName from '../../_lib/tzIntlTimeZoneName/index.js';\nimport tzParseTimezone from '../../_lib/tzParseTimezone/index.js';\nvar MILLISECONDS_IN_MINUTE = 60 * 1000;\nvar formatters = {\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, localize, options) {\n var timezoneOffset = getTimeZoneOffset(options.timeZone, date);\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, localize, options) {\n var timezoneOffset = getTimeZoneOffset(options.timeZone, date);\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, localize, options) {\n var timezoneOffset = getTimeZoneOffset(options.timeZone, date);\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, localize, options) {\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return tzIntlTimeZoneName('short', date, options);\n // Long\n case 'zzzz':\n default:\n return tzIntlTimeZoneName('long', date, options);\n }\n }\n};\nfunction getTimeZoneOffset(timeZone, originalDate) {\n var timeZoneOffset = timeZone ? tzParseTimezone(timeZone, originalDate, true) / MILLISECONDS_IN_MINUTE : originalDate.getTimezoneOffset();\n if (Number.isNaN(timeZoneOffset)) {\n throw new RangeError('Invalid time zone specified: ' + timeZone);\n }\n return timeZoneOffset;\n}\nfunction addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}\nfunction formatTimezone(offset, dirtyDelimeter) {\n var delimeter = dirtyDelimeter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(Math.floor(absOffset % 60), 2);\n return sign + hours + delimeter + minutes;\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimeter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimeter);\n}\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nexport default formatters;","/** Regex to identify the presence of a time zone specifier in a date string */\nvar tzPattern = /(Z|[+-]\\d{2}(?::?\\d{2})?| UTC| [a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?)$/;\nexport default tzPattern;","import toInteger from 'date-fns/_lib/toInteger/index.js';\nimport getTimezoneOffsetInMilliseconds from 'date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport tzParseTimezone from '../_lib/tzParseTimezone/index.js';\nimport tzPattern from '../_lib/tzPattern/index.js';\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\nvar patterns = {\n dateTimePattern: /^([0-9W+-]+)(T| )(.*)/,\n datePattern: /^([0-9W+-]+)(.*)/,\n plainTime: /:/,\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [/^([+-]\\d{2})$/,\n // 0 additional digits\n /^([+-]\\d{3})$/,\n // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [/^([+-]\\d{4})/,\n // 0 additional digits\n /^([+-]\\d{5})/,\n // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n ],\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n // time zone tokens (to identify the presence of a tz)\n timeZone: tzPattern\n};\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function toDate(argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n if (argument === null) {\n return new Date(NaN);\n }\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n\n // Clone the date\n if (argument instanceof Date || typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || Object.prototype.toString.call(argument) === '[object Number]') {\n return new Date(argument);\n } else if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n var year = parseYearResult.year;\n var restDateString = parseYearResult.restDateString;\n var date = parseDate(restDateString, year);\n if (isNaN(date)) {\n return new Date(NaN);\n }\n if (date) {\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timeZone || options.timeZone) {\n offset = tzParseTimezone(dateStrings.timeZone || options.timeZone, new Date(timestamp + time));\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n // get offset accurate to hour in time zones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time));\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset));\n }\n return new Date(timestamp + time + offset);\n } else {\n return new Date(NaN);\n }\n}\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var parts = patterns.dateTimePattern.exec(dateString);\n var timeString;\n if (!parts) {\n parts = patterns.datePattern.exec(dateString);\n if (parts) {\n dateStrings.date = parts[1];\n timeString = parts[2];\n } else {\n dateStrings.date = null;\n timeString = dateString;\n }\n } else {\n dateStrings.date = parts[1];\n timeString = parts[3];\n }\n if (timeString) {\n var token = patterns.timeZone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timeZone = token[1].trim();\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits];\n var patternYYYYY = patterns.YYYYY[additionalDigits];\n var token;\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString);\n if (token) {\n var yearString = token[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n };\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString);\n if (token) {\n var centuryString = token[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n };\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null;\n }\n var token;\n var date;\n var month;\n var week;\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0);\n date.setUTCFullYear(year);\n return date;\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n if (!validateDate(year, month)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month);\n return date;\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString);\n if (token) {\n date = new Date(0);\n var dayOfYear = parseInt(token[1], 10);\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, 0, dayOfYear);\n return date;\n }\n\n // yyyy-MM-dd or YYYYMMDD\n token = patterns.MMDD.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n var day = parseInt(token[2], 10);\n if (!validateDate(year, month, day)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, day);\n return date;\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n if (!validateWeekDate(year, week)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week);\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n var dayOfWeek = parseInt(token[2], 10) - 1;\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n }\n\n // Invalid ISO-formatted date\n return null;\n}\nfunction parseTime(timeString) {\n var token;\n var hours;\n var minutes;\n\n // hh\n token = patterns.HH.exec(timeString);\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'));\n if (!validateTime(hours)) {\n return NaN;\n }\n return hours % 24 * MILLISECONDS_IN_HOUR;\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseFloat(token[2].replace(',', '.'));\n if (!validateTime(hours, minutes)) {\n return NaN;\n }\n return hours % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseInt(token[2], 10);\n var seconds = parseFloat(token[3].replace(',', '.'));\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000;\n }\n\n // Invalid ISO-formatted time\n return null;\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n week = week || 0;\n day = day || 0;\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n if (month < 0 || month > 11) {\n return false;\n }\n if (date != null) {\n if (date < 1) {\n return false;\n }\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false;\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false;\n }\n }\n return true;\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n if (dayOfYear < 1) {\n return false;\n }\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && dayOfYear > 366) {\n return false;\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false;\n }\n return true;\n}\nfunction validateWeekDate(year, week, day) {\n if (week < 0 || week > 52) {\n return false;\n }\n if (day != null && (day < 0 || day > 6)) {\n return false;\n }\n return true;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours != null && (hours < 0 || hours >= 25)) {\n return false;\n }\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false;\n }\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false;\n }\n return true;\n}","import dateFnsFormat from 'date-fns/format/index.js';\nimport formatters from './formatters/index.js';\nimport toDate from '../toDate/index.js';\nvar tzFormattingTokensRegExp = /([xXOz]+)|''|'(''|[^'])+('|$)/g;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | PDT, EST, CEST | 6 |\n * | | zzzz | Pacific Daylight Time | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are created using the Intl browser API. The output is determined by the\n * preferred standard of the current locale (en-US by default) which may not always give the expected result.\n * For this reason it is recommended to supply a `locale` in the format options when formatting a time zone name.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole\n * library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard\n * #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table). See [this\n * post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link\n * https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See\n * [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens\n * (`yy`, `yyyy`). See: https://git.io/fxCyr\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @param {Date|Number} [options.originalDate] - can be used to pass the original unmodified date to `format` to\n * improve correctness of the replaced timezone token close to the DST threshold.\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see:\n * https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var matches = formatStr.match(tzFormattingTokensRegExp);\n if (matches) {\n var date = toDate(options.originalDate || dirtyDate, options);\n // Work through each match and replace the tz token in the format string with the quoted\n // formatted time zone so the remaining tokens can be filled in by date-fns#format.\n formatStr = matches.reduce(function (result, token) {\n if (token[0] === \"'\") {\n return result; // This is a quoted portion, matched only to ensure we don't match inside it\n }\n var pos = result.indexOf(token);\n var precededByQuotedSection = result[pos - 1] === \"'\";\n var replaced = result.replace(token, \"'\" + formatters[token[0]](date, token, null, options) + \"'\");\n // If the replacement results in two adjoining quoted strings, the back to back quotes\n // are removed, so it doesn't look like an escaped quote.\n return precededByQuotedSection ? replaced.substring(0, pos - 1) + replaced.substring(pos + 1) : replaced;\n }, formatStr);\n }\n return dateFnsFormat(dirtyDate, formatStr, options);\n}","// This file is generated automatically by `scripts/build/indices.js`. Please, don't change it.\n\nexport { default as format } from './format/index.js';\nexport { default as formatInTimeZone } from './formatInTimeZone/index.js';\nexport { default as getTimezoneOffset } from './getTimezoneOffset/index.js';\nexport { default as toDate } from './toDate/index.js';\nexport { default as utcToZonedTime } from './utcToZonedTime/index.js';\nexport { default as zonedTimeToUtc } from './zonedTimeToUtc/index.js';","import { ObjectType } from '../../../tokens-and-interfaces';\n\nexport const ActivityTaskType = {\n ToDo: 'To-do',\n Email: 'Email',\n Call: 'Call',\n Message: 'Message',\n Meeting: 'Meeting',\n LinkedIn: 'LinkedIn',\n};\n\nexport const ActivityTaskTypeTranslationKeys = [\n { nameKey: 'ACTIVITY.TASK.TO_DO', value: ActivityTaskType.ToDo },\n { nameKey: 'ACTIVITY.TASK.EMAIL', value: ActivityTaskType.Email },\n { nameKey: 'ACTIVITY.TASK.CALL', value: ActivityTaskType.Call },\n { nameKey: 'ACTIVITY.TASK.MESSAGE', value: ActivityTaskType.Message },\n { nameKey: 'ACTIVITY.TASK.MEETING', value: ActivityTaskType.Meeting },\n { nameKey: 'ACTIVITY.TASK.LINKEDIN', value: ActivityTaskType.LinkedIn },\n];\n\nexport const ActivityDirection = {\n Outbound: 'Outbound',\n Inbound: 'Inbound',\n Forwarded: 'Forwarded',\n};\n\nexport const CallStatus = {\n Connected: 'Connected',\n Busy: 'Busy',\n Rejected: 'Rejected',\n Voicemail: 'Left voicemail',\n NoAnswer: 'No answer',\n NotInService: 'Not in service',\n WrongNumber: 'Wrong number',\n};\n\nexport const ActivityOutcome = {\n BusinessReview: 'Business review',\n Demo: 'Demo scheduled',\n DemoCompleted: 'Demo completed',\n Discovery: 'Discovery',\n Interested: 'Interested',\n NoInterest: 'No interest',\n Presentation: 'Presentation',\n QualityConnect: 'Quality connect',\n Rescheduling: 'Rescheduling',\n Referred: 'Referred to other representatives',\n Timeline: 'Timeline 6-12 months',\n};\n\nexport const MeetingDuration = {\n FiveMin: 300000,\n FifteenMin: 900000,\n ThirtyMin: 1800000,\n OneHour: 3600000,\n OneHourThirtyMin: 5400000,\n TwoHoursPlus: 7200000,\n};\n\nexport const MeetingStatus = {\n Scheduled: 'Scheduled',\n Rescheduled: 'Rescheduled',\n Completed: 'Completed',\n Cancelled: 'Cancelled',\n NoShow: 'No show',\n};\n\nexport interface CrmObjectIdentifier {\n crmObjectId: string;\n objectType: ObjectType;\n}\n\nexport const ActivityTypes = {\n Email: 'Email',\n Note: 'Note',\n Meeting: 'Meeting',\n Call: 'Call',\n RecordChange: 'RecordChange',\n Task: 'Task',\n Communication: 'Communication',\n OpportunityChange: 'OpportunityChange',\n};\n\nexport const ActivityIcons = {\n [ActivityTypes.Note]: 'notes',\n [ActivityTypes.Email]: 'email',\n [ActivityTypes.Call]: 'call',\n [ActivityTypes.Meeting]: 'calendar_today',\n [ActivityTypes.Task]: 'assignment_turned_in',\n [ActivityTypes.Communication]: 'message',\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function requiredFieldsIf(predicate: () => boolean, fields: AbstractControl[]): ValidatorFn {\n return (): ValidationErrors | null => {\n const when = predicate();\n if (when) {\n fields.forEach((field) => validateRequired(field));\n } else {\n fields.forEach((field) => clearRequired(field));\n }\n return null;\n };\n}\n\nexport function requiredFormGroupFieldsIf(predicate: () => boolean, fieldNames: string[]): ValidatorFn {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const when = predicate();\n const controls = fieldNames.map((name) => formGroup.get(name)).filter((c): c is AbstractControl => Boolean(c));\n if (when) {\n controls.forEach((c) => validateRequired(c));\n } else {\n controls.forEach((c) => clearRequired(c));\n }\n\n return null;\n };\n}\n\nfunction validateRequired(control: AbstractControl): void {\n if (control.value) {\n if (control.hasError('required')) {\n delete control.errors?.['required'];\n }\n } else {\n control.setErrors({ required: true });\n }\n}\n\nfunction clearRequired(control: AbstractControl): void {\n if (control.hasError('required')) {\n delete control.errors?.['required'];\n }\n}\n","import { Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n BehaviorSubject,\n Observable,\n catchError,\n debounceTime,\n distinctUntilChanged,\n firstValueFrom,\n map,\n of,\n switchMap,\n} from 'rxjs';\nimport { CrmInjectionToken, SimplifiedUser } from '../../../tokens-and-interfaces';\n\ninterface OwnerOption {\n id: string;\n displayName: string;\n}\n\ntype OnChangeFnType = (ownerId: string | undefined) => void;\ntype OnTouchedFnType = () => void;\n\n@Component({\n selector: 'crm-form-field-activity-owner',\n templateUrl: './activity-owner.component.html',\n styleUrls: ['./activity-owner.component.scss'],\n imports: [CommonModule, GalaxyFormFieldModule, MatInputModule, ReactiveFormsModule, MatAutocompleteModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: CrmFormFieldActivityOwnerComponent,\n },\n ],\n})\nexport class CrmFormFieldActivityOwnerComponent implements ControlValueAccessor {\n @Input() placeholder = '';\n @ViewChild('searchInput') searchInput?: ElementRef;\n\n onChange?: OnChangeFnType;\n onTouched?: OnTouchedFnType;\n touched = false;\n disabled = false;\n\n private readonly config = inject(CrmInjectionToken);\n private readonly searchTerm$$ = new BehaviorSubject('');\n readonly options$: Observable;\n ownerId?: string;\n searchCtrl = new FormControl();\n\n constructor() {\n this.options$ = this.searchTerm$$.pipe(\n takeUntilDestroyed(),\n debounceTime(300),\n distinctUntilChanged(),\n switchMap((searchTerm) => this.config.services?.userService?.searchUsers?.(searchTerm) ?? []),\n map((users) => this.mapSimplifiedUserToOwner(users)),\n );\n this.searchCtrl.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => this.handleOptionSelected(value));\n this.validateSearchPermission();\n }\n\n writeValue(ownerId: string) {\n this.setCurrentValue(ownerId);\n }\n\n registerOnChange(onChange: OnChangeFnType) {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: OnTouchedFnType) {\n this.onTouched = onTouched;\n }\n\n markAsTouched() {\n if (!this.touched) {\n this.onTouched?.();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled = disabled;\n if (this.disabled) {\n this.searchCtrl.disable();\n } else {\n this.searchCtrl.enable();\n }\n }\n\n displayFn(option?: OwnerOption): string {\n return option?.displayName || '';\n }\n\n private handleOptionSelected(option?: OwnerOption): void {\n if (this.searchCtrl.enabled) {\n this.ownerId = option?.id;\n this.onChange?.(this.ownerId);\n this.markAsTouched();\n }\n }\n\n handleSearchTermInput(): void {\n const searchTerm = this.searchInput?.nativeElement.value ?? '';\n this.searchTerm$$.next(searchTerm);\n }\n\n private mapSimplifiedUserToOwner(users: SimplifiedUser[]): OwnerOption[] {\n return users.map((u) => ({ id: u.userId, displayName: u.displayName }));\n }\n\n private setCurrentValue(ownerId: string): void {\n if (this.ownerId !== ownerId) {\n this.ownerId = ownerId;\n if (this.ownerId) {\n const fetch$ =\n this.config.services?.userService?.getMultiUsers?.([ownerId]).pipe(\n map((users) => users[0]),\n map((user) => user?.displayName || ''),\n catchError(() => of('')),\n ) ?? of('');\n const displayName = firstValueFrom(fetch$);\n displayName.then((displayName) => {\n if (this.searchInput?.nativeElement) {\n // without the timeout to force execution outside\n // the angular lifecycle\n // the value isn't properly set on first edit sometimes\n setTimeout(() => {\n this.searchInput!.nativeElement.value = displayName;\n }, 0);\n }\n });\n }\n }\n }\n\n private async validateSearchPermission(): Promise {\n // disable the input if the searchUsers function is not available or the user don't have access to the results\n let validResult: Promise;\n if (this.config.services?.userService?.searchUsers) {\n validResult = firstValueFrom(this.config.services.userService.searchUsers('')).then(() => undefined);\n } else {\n validResult = Promise.reject();\n }\n validResult.catch(() => this.searchCtrl.disable());\n }\n}\n","\n\n \n {{ option?.displayName }}\n \n\n","import { TextFieldModule } from '@angular/cdk/text-field';\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n ViewChild,\n Output,\n EventEmitter,\n input,\n effect,\n} from '@angular/core';\nimport { FormBuilder, FormGroupDirective, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ActivityInterface, FieldValueInterface } from '@vendasta/crm';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport {\n DEFAULT_RICH_TEXT_PLUGINS,\n DEFAULT_RICH_TEXT_TOOLBAR,\n DEFAULT_TASK_STATUS,\n STANDARD_DATE_FORMAT,\n} from './constants';\nimport { TranslationModule } from '../../../../i18n/translation-module';\nimport { format as formatDate } from 'date-fns-tz';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatSelectModule } from '@angular/material/select';\nimport {\n ActivityOutcome,\n ActivityTaskType,\n MeetingDuration,\n MeetingStatus,\n ActivityTaskTypeTranslationKeys,\n} from '../activity.interface';\nimport { User } from '@vendasta/iamv2';\nimport { LoggerComponentInterface, UserWithFullName } from './interfaces';\nimport { requiredFormGroupFieldsIf } from './validators';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged } from 'rxjs';\nimport { CrmFieldService, StandardIds, SystemFieldIds } from '../../../../shared-services';\nimport { CrmFormFieldActivityOwnerComponent } from '../../../form-fields/activity-owner/activity-owner.component';\nimport { GalaxyRichTextEditorModule } from '@vendasta/galaxy/rich-text-editor';\nimport { FormFieldAssociation } from '../../../association-form-field/interface';\n\n@Component({\n selector: 'crm-activity-logger-task',\n templateUrl: './task.component.html',\n styleUrls: ['./shared.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n GalaxyFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n TextFieldModule,\n MatDatepickerModule,\n MatSelectModule,\n CrmFormFieldActivityOwnerComponent,\n GalaxyRichTextEditorModule,\n ],\n})\nexport class CrmActivityLoggerTaskComponent implements LoggerComponentInterface, AfterViewInit {\n @Input() set activity(value: ActivityInterface | null) {\n this.setValues(value);\n }\n @Input({ transform: coerceBooleanProperty }) mobile: boolean | null = null;\n user = input();\n activityOwner = input();\n @Input()\n set description(value: string | null) {\n // only patch value when values are different\n // or else rte cursor will go back to the beginning of input\n if (value !== this.formGroup?.controls['taskInstructions']?.getRawValue()) {\n this.formGroup.patchValue({ taskInstructions: value || '' }, { emitEvent: false });\n }\n }\n @Output() descriptionChange = new EventEmitter();\n @Input() associations?: FormFieldAssociation[];\n @Output() associationsChange = new EventEmitter();\n\n @ViewChild('form') formGroupDirective!: FormGroupDirective;\n @ViewChild('defaultInput') defaultInput?: ElementRef;\n\n DEFAULT_RICH_TEXT_PLUGINS = DEFAULT_RICH_TEXT_PLUGINS;\n DEFAULT_RICH_TEXT_TOOLBAR = DEFAULT_RICH_TEXT_TOOLBAR;\n\n protected showErrors = false;\n protected readonly ActivityOutcome = ActivityOutcome;\n protected readonly MeetingDuration = MeetingDuration;\n protected readonly MeetingStatus = MeetingStatus;\n protected readonly textRows = 6;\n\n private today = new Date();\n formGroup = new FormBuilder().nonNullable.group(\n {\n taskName: '',\n taskInstructions: '',\n taskDueDate: formatDate(this.today.setDate(this.today.getDate() + 3), STANDARD_DATE_FORMAT),\n taskType: ActivityTaskType.ToDo,\n taskPriority: '',\n taskOwner: '',\n },\n {\n validators: requiredFormGroupFieldsIf(\n () => this.showErrors,\n ['taskName', 'taskType', 'taskDueDate', 'taskOwner'],\n ),\n },\n );\n\n protected readonly taskTypes = ActivityTaskTypeTranslationKeys;\n\n constructor(private readonly fieldsService: CrmFieldService) {\n this.formGroup.controls.taskInstructions.valueChanges\n .pipe(takeUntilDestroyed(), distinctUntilChanged())\n .subscribe((value) => this.descriptionChange.emit(value));\n effect(() => {\n const user = this.user();\n const owner = this.activityOwner();\n this.setDefaultUser(owner ?? user ?? undefined);\n });\n this.formGroup.controls.taskOwner.valueChanges\n .pipe(takeUntilDestroyed(), distinctUntilChanged())\n .subscribe((ownerId) => this.replaceUserAssociation(ownerId));\n }\n\n ngAfterViewInit(): void {\n this.defaultInput?.nativeElement?.focus();\n }\n\n resetForm(): void {\n this.showErrors = false;\n const today = new Date();\n this.formGroup.reset({\n taskInstructions: this.description || '',\n taskOwner: this.user()?.userId || '',\n taskDueDate: formatDate(today.setDate(today.getDate() + 3), STANDARD_DATE_FORMAT),\n });\n this.updateValueAndValidity();\n }\n\n getValues(): FieldValueInterface[] {\n const formValues = this.formGroup.getRawValue();\n return [\n {\n fieldId: this.fieldsService.getFieldId(StandardIds.ActivityName),\n stringValue: formValues.taskName,\n },\n {\n fieldId: this.fieldsService.getFieldId(StandardIds.ActivityTaskBody),\n stringValue: formValues.taskInstructions,\n },\n {\n fieldId: this.fieldsService.getFieldId(StandardIds.ActivityTaskDueDate),\n dateValue: formValues.taskDueDate ? new Date(formValues.taskDueDate) : undefined,\n },\n {\n fieldId: this.fieldsService.getFieldId(SystemFieldIds.ActivityOwnerID),\n stringValue: formValues.taskOwner,\n },\n {\n fieldId: this.fieldsService.getFieldId(StandardIds.ActivityTaskPriority),\n stringValue: formValues.taskPriority,\n },\n {\n fieldId: this.fieldsService.getFieldId(StandardIds.ActivityTaskStatus),\n stringValue: DEFAULT_TASK_STATUS,\n },\n {\n fieldId: this.fieldsService.getFieldId(StandardIds.ActivityTaskType),\n stringValue: formValues.taskType,\n },\n ] as FieldValueInterface[];\n }\n\n private setValues(activity: ActivityInterface | null): void {\n if (activity) {\n const taskName = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityName);\n const taskBody = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityTaskBody);\n const taskDueDate = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityTaskDueDate);\n const taskPriority = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityTaskPriority);\n const taskType = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityTaskType);\n const taskOwner = activity?.ownerId || this.user()?.userId;\n\n this.formGroup.setValue({\n taskName: taskName?.stringValue || '',\n taskInstructions: taskBody?.stringValue || '',\n taskDueDate: taskDueDate?.dateValue ? formatDate(taskDueDate.dateValue, STANDARD_DATE_FORMAT) : '',\n taskPriority: taskPriority?.stringValue || '',\n taskType: taskType?.stringValue || '',\n taskOwner: taskOwner || '',\n });\n } else if (this.formGroup.dirty) {\n this.resetForm();\n }\n }\n\n private setDefaultUser(user?: User): void {\n const userId = user?.userId;\n if (!this.formGroup.getRawValue().taskOwner) {\n this.formGroup.patchValue({\n taskOwner: userId,\n });\n }\n }\n\n private replaceUserAssociation(ownerId: string): void {\n const ownerAssociation = this.associations?.find((a) => a.crmObjectType === 'User');\n if (ownerAssociation) {\n ownerAssociation.crmObjectId = ownerId;\n this.associationsChange.emit(this.associations);\n }\n }\n\n validate(): void {\n this.showErrors = true;\n this.formGroup.markAllAsTouched();\n this.updateValueAndValidity();\n }\n\n updateValueAndValidity(): void {\n this.formGroup.updateValueAndValidity();\n }\n\n get ownerId(): string | undefined {\n return this.formGroup.getRawValue().taskOwner || undefined;\n }\n}\n","
\n
\n \n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_TASK_NAME_REQUIRED' | translate }}\n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_TASK_DUE_DATE' | translate }}\n \n \n \n \n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_TASK_ASSIGNEE' | translate }}\n \n \n \n \n \n \n \n \n {{ type.nameKey | translate }}\n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_TASK_TYPE' | translate }}\n \n \n \n \n \n {{ 'ACTIVITY.TASK.LOW' | translate }}\n {{ 'ACTIVITY.TASK.MEDIUM' | translate }}\n {{ 'ACTIVITY.TASK.HIGH' | translate }}\n \n \n \n \n
\n
\n","export const SMSConnectionID = 'CONNECTION-sms';\n\nexport const VoiceConnectionID = 'CONNECTION-voice';\n\nexport const knowledgeAppType = 'AIAssistant';\n\nexport const DEFAULT_CHAT_RECEPTIONIST_AVATAR_SVG_ICON = 'ai-chat-receptionist';\nexport const DEFAULT_AVATAR_SVG_ICON = 'galaxy-ai-icon-with-background';\n\nexport const AI_ASSISTANTS = 'ai_assistant_feature';\nexport const VOICE_AI = 'voice_ai';\nexport const ASSISTANT_GOALS = 'assistant_goals';\nexport const AI_MEETING_BOOKING = 'ai_meeting_booking';\nexport const NEW_CUSTOM_AI_GOALS = 'custom_ai_goals';\n\nexport const WEBCHAT_WIDGET_CONNECTION_TYPE = 'WebchatWidget';\n\nexport const ASSISTANT_ID_CHAT_RECEPTIONIST = 'ASSISTANT-chat-receptionist';\nexport const ASSISTANT_ID_VOICE_RECEPTIONIST = 'ASSISTANT-voice-receptionist';\nexport const ASSISTANT_ID_CONTENT_CREATOR = 'ASSISTANT-content-creator';\nexport const ASSISTANT_ID_REVIEW_MANAGER = 'ASSISTANT-review-manager';\nexport const ASSISTANT_ID_SEO_ANALYST = 'ASSISTANT-seo-analyst';\nexport const ASSISTANT_ID_SALES_COACH = 'ASSISTANT-sales-coach';\nexport const disabled_card_colour = '#e0e0e0';\nexport const DEFAULT_CONNECTION_PREFIX = 'default-';\n\nexport const WEBCHAT_ICON = 'https://vstatic-prod.apigateway.co/business-center-client.9223372035111590735.prod/assets/webchat-icon.svg';\nexport const SMS_ICON = 'https://vstatic-prod.apigateway.co/business-center-client.9223372035111590735.prod/assets/phone.svg';\nexport const VOICE_ICON = 'https://vstatic-prod.apigateway.co/business-center-client.9223372035111590735.prod/assets/old-phone.svg';\n","import { AssistantInterface, ConnectionInterface } from '@vendasta/ai-assistants';\n\nexport const MY_LISTING_CONNECTION_NAME = 'My Listing Chat Widget';\nexport const WEBCHAT_CONNECTION_NAME = 'Web Chat';\n\nexport enum ConnectionType {\n WebchatWidget = 'WebchatWidget',\n SMS = 'SMS',\n SocialMarketing = 'SocialMarketing',\n System = 'System',\n Unspecified = 'Unspecified',\n Voice = 'Voice',\n}\n\nexport interface AiAssistant {\n assistant: AssistantInterface;\n subtitleKey?: string;\n descriptionKey?: string;\n decoration?: AiAssistantDecoration;\n connections?: AiConnection[];\n isDefault?: boolean;\n showConfigButtonOnDefault?: boolean;\n isDisabled?: boolean;\n isComingSoon?: boolean;\n cta?: CTAction;\n}\n\nexport interface AiConnection {\n connection: ConnectionInterface;\n isDefault?: boolean;\n cta?: CTAction;\n}\n\nexport interface AiAssistantDecoration {\n defaultAvatarIcon?: string;\n gradientColor?: string;\n avatarIconUrl?: string;\n}\n\nexport type Action = ActionWithUrl | ActionWithPath | ActionWithCallback;\n\nexport interface CTAction {\n label?: string;\n action?: Action;\n}\n\ninterface ActionBase {\n showButton?: boolean;\n disabled?: boolean;\n}\n\nexport interface ActionWithUrl extends ActionBase {\n url: string;\n relativeRoute?: boolean;\n newTab?: boolean;\n pathCommands?: never;\n callback?: never;\n}\n\nexport interface ActionWithPath extends ActionBase {\n url?: never;\n relativeRoute?: boolean;\n newTab?: never;\n pathCommands: unknown[];\n callback?: never;\n}\n\nexport interface ActionWithCallback extends ActionBase {\n url?: never;\n relativeRoute?: never;\n newTab?: never;\n pathCommands?: never;\n callback: () => void;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AiAssistantConfig } from './interfaces/config.interface';\nimport { AiAssistant, AiConnection } from './interfaces/ai-assistant.interface';\n\nexport const AI_ASSISTANT_CONFIG_TOKEN = new InjectionToken(\n '[AiAssistant]: token for configuration',\n);\n\nexport const ACCOUNT_GROUP_ID_TOKEN: InjectionToken> = new InjectionToken(\n '[AiAssistant]: token for accountGroupId',\n);\n\nexport const MARKET_ID_TOKEN: InjectionToken> = new InjectionToken(\n '[AiAssistant]: token for marketId',\n);\n\nexport const PARTNER_ID_TOKEN: InjectionToken> = new InjectionToken(\n '[AiAssistant]: token for partnerId',\n);\n\nexport const AI_DEFAULT_WORKFORCE_TOKEN: InjectionToken> = new InjectionToken(\n '[AiAssistant]: token for ai default workforce',\n);\n\nexport const AI_DEFAULT_CONNECTIONS_TOKEN: InjectionToken> = new InjectionToken(\n '[AiAssistant]: token for ai default connections',\n);\n\nexport const CURRENT_USER_ID_TOKEN: InjectionToken> = new InjectionToken(\n '[AiAssistant]: token for currentUserId',\n);\n","import * as i0 from '@angular/core';\nimport { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'ai-assistants-api.vendasta-local.com',\n 'test': '',\n 'demo': 'ai-assistants-demo.apigateway.co',\n 'prod': 'ai-assistants-prod.apigateway.co',\n 'production': 'ai-assistants-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar FunctionParameterParameterLocation = /*#__PURE__*/function (FunctionParameterParameterLocation) {\n FunctionParameterParameterLocation[FunctionParameterParameterLocation[\"LOCATION_BODY\"] = 0] = \"LOCATION_BODY\";\n FunctionParameterParameterLocation[FunctionParameterParameterLocation[\"LOCATION_QUERY_PARAM\"] = 1] = \"LOCATION_QUERY_PARAM\";\n return FunctionParameterParameterLocation;\n}(FunctionParameterParameterLocation || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar GoalChannel = /*#__PURE__*/function (GoalChannel) {\n GoalChannel[GoalChannel[\"GOAL_CHANNEL_INVALID\"] = 0] = \"GOAL_CHANNEL_INVALID\";\n GoalChannel[GoalChannel[\"GOAL_CHANNEL_SMS\"] = 1] = \"GOAL_CHANNEL_SMS\";\n GoalChannel[GoalChannel[\"GOAL_CHANNEL_EMAIL\"] = 2] = \"GOAL_CHANNEL_EMAIL\";\n GoalChannel[GoalChannel[\"GOAL_CHANNEL_PLATFORM\"] = 3] = \"GOAL_CHANNEL_PLATFORM\";\n GoalChannel[GoalChannel[\"GOAL_CHANNEL_WEBCHAT\"] = 4] = \"GOAL_CHANNEL_WEBCHAT\";\n GoalChannel[GoalChannel[\"GOAL_CHANNEL_VOICE\"] = 5] = \"GOAL_CHANNEL_VOICE\";\n GoalChannel[GoalChannel[\"GOAL_CHANNEL_WHATSAPP\"] = 6] = \"GOAL_CHANNEL_WHATSAPP\";\n GoalChannel[GoalChannel[\"GOAL_CHANNEL_INSTAGRAM\"] = 7] = \"GOAL_CHANNEL_INSTAGRAM\";\n GoalChannel[GoalChannel[\"GOAL_CHANNEL_FACEBOOK\"] = 8] = \"GOAL_CHANNEL_FACEBOOK\";\n return GoalChannel;\n}(GoalChannel || {});\nvar GoalType = /*#__PURE__*/function (GoalType) {\n GoalType[GoalType[\"GOAL_TYPE_INVALID\"] = 0] = \"GOAL_TYPE_INVALID\";\n GoalType[GoalType[\"GOAL_TYPE_GOAL\"] = 1] = \"GOAL_TYPE_GOAL\";\n GoalType[GoalType[\"GOAL_TYPE_KNOWLEDGE\"] = 2] = \"GOAL_TYPE_KNOWLEDGE\";\n GoalType[GoalType[\"GOAL_TYPE_PERSONALITY\"] = 3] = \"GOAL_TYPE_PERSONALITY\";\n GoalType[GoalType[\"GOAL_TYPE_CUSTOM\"] = 4] = \"GOAL_TYPE_CUSTOM\";\n return GoalType;\n}(GoalType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar AssistantType = /*#__PURE__*/function (AssistantType) {\n AssistantType[AssistantType[\"ASSISTANT_TYPE_UNSPECIFIED\"] = 0] = \"ASSISTANT_TYPE_UNSPECIFIED\";\n AssistantType[AssistantType[\"ASSISTANT_TYPE_SYSTEM\"] = 1] = \"ASSISTANT_TYPE_SYSTEM\";\n AssistantType[AssistantType[\"ASSISTANT_TYPE_INBOX\"] = 2] = \"ASSISTANT_TYPE_INBOX\";\n AssistantType[AssistantType[\"ASSISTANT_TYPE_SOCIAL_MARKETING\"] = 3] = \"ASSISTANT_TYPE_SOCIAL_MARKETING\";\n AssistantType[AssistantType[\"ASSISTANT_TYPE_VOICE_RECEPTIONIST\"] = 4] = \"ASSISTANT_TYPE_VOICE_RECEPTIONIST\";\n return AssistantType;\n}(AssistantType || {});\nvar VendorModel = /*#__PURE__*/function (VendorModel) {\n VendorModel[VendorModel[\"VENDOR_MODEL_UNSPECIFIED\"] = 0] = \"VENDOR_MODEL_UNSPECIFIED\";\n VendorModel[VendorModel[\"VENDOR_MODEL_OPEN_AI_REALTIME\"] = 1] = \"VENDOR_MODEL_OPEN_AI_REALTIME\";\n VendorModel[VendorModel[\"VENDOR_MODEL_DEEPGRAM\"] = 2] = \"VENDOR_MODEL_DEEPGRAM\";\n return VendorModel;\n}(VendorModel || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ChatAnswerFunctionExecutionJobStatus = /*#__PURE__*/function (ChatAnswerFunctionExecutionJobStatus) {\n ChatAnswerFunctionExecutionJobStatus[ChatAnswerFunctionExecutionJobStatus[\"FUNCTION_EXECUTION_JOB_STATUS_INVALID\"] = 0] = \"FUNCTION_EXECUTION_JOB_STATUS_INVALID\";\n ChatAnswerFunctionExecutionJobStatus[ChatAnswerFunctionExecutionJobStatus[\"FUNCTION_EXECUTION_JOB_STATUS_QUEUED\"] = 1] = \"FUNCTION_EXECUTION_JOB_STATUS_QUEUED\";\n ChatAnswerFunctionExecutionJobStatus[ChatAnswerFunctionExecutionJobStatus[\"FUNCTION_EXECUTION_JOB_STATUS_RUNNING\"] = 2] = \"FUNCTION_EXECUTION_JOB_STATUS_RUNNING\";\n ChatAnswerFunctionExecutionJobStatus[ChatAnswerFunctionExecutionJobStatus[\"FUNCTION_EXECUTION_JOB_STATUS_COMPLETE\"] = 3] = \"FUNCTION_EXECUTION_JOB_STATUS_COMPLETE\";\n return ChatAnswerFunctionExecutionJobStatus;\n}(ChatAnswerFunctionExecutionJobStatus || {});\nvar ChatChannel = /*#__PURE__*/function (ChatChannel) {\n ChatChannel[ChatChannel[\"CHAT_CHANNEL_INVALID\"] = 0] = \"CHAT_CHANNEL_INVALID\";\n ChatChannel[ChatChannel[\"CHAT_CHANNEL_UNSPECIFIED\"] = 1] = \"CHAT_CHANNEL_UNSPECIFIED\";\n ChatChannel[ChatChannel[\"CHAT_CHANNEL_WEB\"] = 2] = \"CHAT_CHANNEL_WEB\";\n ChatChannel[ChatChannel[\"CHAT_CHANNEL_SMS\"] = 3] = \"CHAT_CHANNEL_SMS\";\n ChatChannel[ChatChannel[\"CHAT_CHANNEL_WHATSAPP\"] = 4] = \"CHAT_CHANNEL_WHATSAPP\";\n ChatChannel[ChatChannel[\"CHAT_CHANNEL_FACEBOOK\"] = 5] = \"CHAT_CHANNEL_FACEBOOK\";\n ChatChannel[ChatChannel[\"CHAT_CHANNEL_INSTAGRAM\"] = 7] = \"CHAT_CHANNEL_INSTAGRAM\";\n return ChatChannel;\n}(ChatChannel || {});\nvar ChatMessageRole = /*#__PURE__*/function (ChatMessageRole) {\n ChatMessageRole[ChatMessageRole[\"CHAT_MESSAGE_ROLE_INVALID\"] = 0] = \"CHAT_MESSAGE_ROLE_INVALID\";\n ChatMessageRole[ChatMessageRole[\"CHAT_MESSAGE_ROLE_USER\"] = 1] = \"CHAT_MESSAGE_ROLE_USER\";\n ChatMessageRole[ChatMessageRole[\"CHAT_MESSAGE_ROLE_ASSISTANT\"] = 2] = \"CHAT_MESSAGE_ROLE_ASSISTANT\";\n return ChatMessageRole;\n}(ChatMessageRole || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$a(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass NamespaceAccountGroupNamespace {\n static fromProto(proto) {\n let m = new NamespaceAccountGroupNamespace();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass NamespaceAccountGroupsForGroupNamespace {\n static fromProto(proto) {\n let m = new NamespaceAccountGroupsForGroupNamespace();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.groupPath !== 'undefined') {\n toReturn['groupPath'] = this.groupPath;\n }\n return toReturn;\n }\n}\nclass NamespaceAccountGroupsForPartnerNamespace {\n static fromProto(proto) {\n let m = new NamespaceAccountGroupsForPartnerNamespace();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass NamespaceGlobalNamespace {\n static fromProto(proto) {\n let m = new NamespaceGlobalNamespace();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass Namespace {\n static fromProto(proto) {\n let m = new Namespace();\n m = Object.assign(m, proto);\n if (proto.accountGroupNamespace) {\n m.accountGroupNamespace = NamespaceAccountGroupNamespace.fromProto(proto.accountGroupNamespace);\n }\n if (proto.partnerNamespace) {\n m.partnerNamespace = NamespacePartnerNamespace.fromProto(proto.partnerNamespace);\n }\n if (proto.systemNamespace) {\n m.systemNamespace = NamespaceSystemNamespace.fromProto(proto.systemNamespace);\n }\n if (proto.accountGroupsForPartnerNamespace) {\n m.accountGroupsForPartnerNamespace = NamespaceAccountGroupsForPartnerNamespace.fromProto(proto.accountGroupsForPartnerNamespace);\n }\n if (proto.accountGroupsForGroupNamespace) {\n m.accountGroupsForGroupNamespace = NamespaceAccountGroupsForGroupNamespace.fromProto(proto.accountGroupsForGroupNamespace);\n }\n if (proto.globalNamespace) {\n m.globalNamespace = NamespaceGlobalNamespace.fromProto(proto.globalNamespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupNamespace !== 'undefined' && this.accountGroupNamespace !== null) {\n toReturn['accountGroupNamespace'] = 'toApiJson' in this.accountGroupNamespace ? this.accountGroupNamespace.toApiJson() : this.accountGroupNamespace;\n }\n if (typeof this.partnerNamespace !== 'undefined' && this.partnerNamespace !== null) {\n toReturn['partnerNamespace'] = 'toApiJson' in this.partnerNamespace ? this.partnerNamespace.toApiJson() : this.partnerNamespace;\n }\n if (typeof this.systemNamespace !== 'undefined' && this.systemNamespace !== null) {\n toReturn['systemNamespace'] = 'toApiJson' in this.systemNamespace ? this.systemNamespace.toApiJson() : this.systemNamespace;\n }\n if (typeof this.accountGroupsForPartnerNamespace !== 'undefined' && this.accountGroupsForPartnerNamespace !== null) {\n toReturn['accountGroupsForPartnerNamespace'] = 'toApiJson' in this.accountGroupsForPartnerNamespace ? this.accountGroupsForPartnerNamespace.toApiJson() : this.accountGroupsForPartnerNamespace;\n }\n if (typeof this.accountGroupsForGroupNamespace !== 'undefined' && this.accountGroupsForGroupNamespace !== null) {\n toReturn['accountGroupsForGroupNamespace'] = 'toApiJson' in this.accountGroupsForGroupNamespace ? this.accountGroupsForGroupNamespace.toApiJson() : this.accountGroupsForGroupNamespace;\n }\n if (typeof this.globalNamespace !== 'undefined' && this.globalNamespace !== null) {\n toReturn['globalNamespace'] = 'toApiJson' in this.globalNamespace ? this.globalNamespace.toApiJson() : this.globalNamespace;\n }\n return toReturn;\n }\n}\nclass NamespacePartnerNamespace {\n static fromProto(proto) {\n let m = new NamespacePartnerNamespace();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass NamespaceSystemNamespace {\n static fromProto(proto) {\n let m = new NamespaceSystemNamespace();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nfunction enumStringToValue$9(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Function {\n static fromProto(proto) {\n let m = new Function();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.functionParameters) {\n m.functionParameters = proto.functionParameters.map(FunctionParameter.fromProto);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.headers) {\n m.headers = proto.headers.map(FunctionHeader.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.methodType !== 'undefined') {\n toReturn['methodType'] = this.methodType;\n }\n if (typeof this.functionParameters !== 'undefined' && this.functionParameters !== null) {\n toReturn['functionParameters'] = 'toApiJson' in this.functionParameters ? this.functionParameters.toApiJson() : this.functionParameters;\n }\n if (typeof this.generatesAnswer !== 'undefined') {\n toReturn['generatesAnswer'] = this.generatesAnswer;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.headers !== 'undefined' && this.headers !== null) {\n toReturn['headers'] = 'toApiJson' in this.headers ? this.headers.toApiJson() : this.headers;\n }\n if (typeof this.managed !== 'undefined') {\n toReturn['managed'] = this.managed;\n }\n return toReturn;\n }\n}\nclass FunctionHeader {\n static fromProto(proto) {\n let m = new FunctionHeader();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass FunctionKey {\n static fromProto(proto) {\n let m = new FunctionKey();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass FunctionParameter {\n static fromProto(proto) {\n let m = new FunctionParameter();\n m = Object.assign(m, proto);\n if (proto.properties) {\n m.properties = proto.properties.map(FunctionParameter.fromProto);\n }\n if (proto.items) {\n m.items = FunctionParameter.fromProto(proto.items);\n }\n if (proto.location) {\n m.location = enumStringToValue$9(FunctionParameterParameterLocation, proto.location);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.properties !== 'undefined' && this.properties !== null) {\n toReturn['properties'] = 'toApiJson' in this.properties ? this.properties.toApiJson() : this.properties;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n if (typeof this.location !== 'undefined') {\n toReturn['location'] = this.location;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$8(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Prompt {\n static fromProto(proto) {\n let m = new Prompt();\n m = Object.assign(m, proto);\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.deployed) {\n m.deployed = new Date(proto.deployed);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.deployedVersion !== 'undefined') {\n toReturn['deployedVersion'] = this.deployedVersion;\n }\n if (typeof this.deployedBy !== 'undefined') {\n toReturn['deployedBy'] = this.deployedBy;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.deployed !== 'undefined' && this.deployed !== null) {\n toReturn['deployed'] = 'toApiJson' in this.deployed ? this.deployed.toApiJson() : this.deployed;\n }\n return toReturn;\n }\n}\nclass PromptModule {\n static fromProto(proto) {\n let m = new PromptModule();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.deployed) {\n m.deployed = new Date(proto.deployed);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.deployedVersion !== 'undefined') {\n toReturn['deployedVersion'] = this.deployedVersion;\n }\n if (typeof this.deployedBy !== 'undefined') {\n toReturn['deployedBy'] = this.deployedBy;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.deployed !== 'undefined' && this.deployed !== null) {\n toReturn['deployed'] = 'toApiJson' in this.deployed ? this.deployed.toApiJson() : this.deployed;\n }\n if (typeof this.managed !== 'undefined') {\n toReturn['managed'] = this.managed;\n }\n return toReturn;\n }\n}\nclass PromptModuleKey {\n static fromProto(proto) {\n let m = new PromptModuleKey();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass PromptModuleVersion {\n static fromProto(proto) {\n let m = new PromptModuleVersion();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n if (typeof this.createdBy !== 'undefined') {\n toReturn['createdBy'] = this.createdBy;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n return toReturn;\n }\n}\nclass PromptVersion {\n static fromProto(proto) {\n let m = new PromptVersion();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n if (typeof this.createdBy !== 'undefined') {\n toReturn['createdBy'] = this.createdBy;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$7(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Goal {\n static fromProto(proto) {\n let m = new Goal();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.type) {\n m.type = enumStringToValue$7(GoalType, proto.type);\n }\n if (proto.promptModules) {\n m.promptModules = proto.promptModules.map(PromptModule.fromProto);\n }\n if (proto.functions) {\n m.functions = proto.functions.map(Function.fromProto);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.supportedChannels) {\n m.supportedChannels = proto.supportedChannels.map(v => enumStringToValue$7(GoalChannel, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.promptModules !== 'undefined' && this.promptModules !== null) {\n toReturn['promptModules'] = 'toApiJson' in this.promptModules ? this.promptModules.toApiJson() : this.promptModules;\n }\n if (typeof this.functions !== 'undefined' && this.functions !== null) {\n toReturn['functions'] = 'toApiJson' in this.functions ? this.functions.toApiJson() : this.functions;\n }\n if (typeof this.updatedBy !== 'undefined') {\n toReturn['updatedBy'] = this.updatedBy;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.supportedChannels !== 'undefined') {\n toReturn['supportedChannels'] = this.supportedChannels;\n }\n if (typeof this.managed !== 'undefined') {\n toReturn['managed'] = this.managed;\n }\n return toReturn;\n }\n}\nclass GoalKey {\n static fromProto(proto) {\n let m = new GoalKey();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$6(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass KeyValuePair {\n static fromProto(proto) {\n let m = new KeyValuePair();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$5(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Assistant {\n static fromProto(proto) {\n let m = new Assistant();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.type) {\n m.type = enumStringToValue$5(AssistantType, proto.type);\n }\n if (proto.config) {\n m.config = Config.fromProto(proto.config);\n }\n if (proto.configurableGoals) {\n m.configurableGoals = proto.configurableGoals.map(ConfigurableGoal.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.avatarUrl !== 'undefined') {\n toReturn['avatarUrl'] = this.avatarUrl;\n }\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n if (typeof this.configurableGoals !== 'undefined' && this.configurableGoals !== null) {\n toReturn['configurableGoals'] = 'toApiJson' in this.configurableGoals ? this.configurableGoals.toApiJson() : this.configurableGoals;\n }\n return toReturn;\n }\n}\nclass AssistantKey {\n static fromProto(proto) {\n let m = new AssistantKey();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass Config {\n static fromProto(proto) {\n let m = new Config();\n m = Object.assign(m, proto);\n if (proto.inboxConfig) {\n m.inboxConfig = ConfigInboxConfig.fromProto(proto.inboxConfig);\n }\n if (proto.voiceConfig) {\n m.voiceConfig = ConfigVoiceConfig.fromProto(proto.voiceConfig);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.inboxConfig !== 'undefined' && this.inboxConfig !== null) {\n toReturn['inboxConfig'] = 'toApiJson' in this.inboxConfig ? this.inboxConfig.toApiJson() : this.inboxConfig;\n }\n if (typeof this.voiceConfig !== 'undefined' && this.voiceConfig !== null) {\n toReturn['voiceConfig'] = 'toApiJson' in this.voiceConfig ? this.voiceConfig.toApiJson() : this.voiceConfig;\n }\n return toReturn;\n }\n}\nclass ConfigurableGoal {\n static fromProto(proto) {\n let m = new ConfigurableGoal();\n m = Object.assign(m, proto);\n if (proto.goal) {\n m.goal = Goal.fromProto(proto.goal);\n }\n if (proto.configuration) {\n m.configuration = proto.configuration.map(KeyValuePair.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.goal !== 'undefined' && this.goal !== null) {\n toReturn['goal'] = 'toApiJson' in this.goal ? this.goal.toApiJson() : this.goal;\n }\n if (typeof this.configuration !== 'undefined' && this.configuration !== null) {\n toReturn['configuration'] = 'toApiJson' in this.configuration ? this.configuration.toApiJson() : this.configuration;\n }\n return toReturn;\n }\n}\nclass DeepgramConfig {\n static fromProto(proto) {\n let m = new DeepgramConfig();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.voice !== 'undefined') {\n toReturn['voice'] = this.voice;\n }\n return toReturn;\n }\n}\nclass ConfigInboxConfig {\n static fromProto(proto) {\n let m = new ConfigInboxConfig();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.leadCaptureEnabled !== 'undefined') {\n toReturn['leadCaptureEnabled'] = this.leadCaptureEnabled;\n }\n if (typeof this.additionalInstructions !== 'undefined') {\n toReturn['additionalInstructions'] = this.additionalInstructions;\n }\n return toReturn;\n }\n}\nclass ModelConfig {\n static fromProto(proto) {\n let m = new ModelConfig();\n m = Object.assign(m, proto);\n if (proto.openaiRealtimeConfig) {\n m.openaiRealtimeConfig = OpenAIRealtimeConfig.fromProto(proto.openaiRealtimeConfig);\n }\n if (proto.deepgramConfig) {\n m.deepgramConfig = DeepgramConfig.fromProto(proto.deepgramConfig);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.openaiRealtimeConfig !== 'undefined' && this.openaiRealtimeConfig !== null) {\n toReturn['openaiRealtimeConfig'] = 'toApiJson' in this.openaiRealtimeConfig ? this.openaiRealtimeConfig.toApiJson() : this.openaiRealtimeConfig;\n }\n if (typeof this.deepgramConfig !== 'undefined' && this.deepgramConfig !== null) {\n toReturn['deepgramConfig'] = 'toApiJson' in this.deepgramConfig ? this.deepgramConfig.toApiJson() : this.deepgramConfig;\n }\n return toReturn;\n }\n}\nclass OpenAIRealtimeConfig {\n static fromProto(proto) {\n let m = new OpenAIRealtimeConfig();\n m = Object.assign(m, proto);\n if (proto.turnDetection) {\n m.turnDetection = OpenAIRealtimeConfigTurnDetection.fromProto(proto.turnDetection);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.voice !== 'undefined') {\n toReturn['voice'] = this.voice;\n }\n if (typeof this.turnDetection !== 'undefined' && this.turnDetection !== null) {\n toReturn['turnDetection'] = 'toApiJson' in this.turnDetection ? this.turnDetection.toApiJson() : this.turnDetection;\n }\n return toReturn;\n }\n}\nclass OpenAIRealtimeConfigTurnDetection {\n static fromProto(proto) {\n let m = new OpenAIRealtimeConfigTurnDetection();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.threshold !== 'undefined') {\n toReturn['threshold'] = this.threshold;\n }\n if (typeof this.prefixPadding !== 'undefined') {\n toReturn['prefixPadding'] = this.prefixPadding;\n }\n if (typeof this.silenceDuration !== 'undefined') {\n toReturn['silenceDuration'] = this.silenceDuration;\n }\n return toReturn;\n }\n}\nclass ConfigVoiceConfig {\n static fromProto(proto) {\n let m = new ConfigVoiceConfig();\n m = Object.assign(m, proto);\n if (proto.vendorModel) {\n m.vendorModel = enumStringToValue$5(VendorModel, proto.vendorModel);\n }\n if (proto.modelConfig) {\n m.modelConfig = ModelConfig.fromProto(proto.modelConfig);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.vendorModel !== 'undefined') {\n toReturn['vendorModel'] = this.vendorModel;\n }\n if (typeof this.modelConfig !== 'undefined' && this.modelConfig !== null) {\n toReturn['modelConfig'] = 'toApiJson' in this.modelConfig ? this.modelConfig.toApiJson() : this.modelConfig;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$4(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Connection {\n static fromProto(proto) {\n let m = new Connection();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.assistantKeys) {\n m.assistantKeys = proto.assistantKeys.map(AssistantKey.fromProto);\n }\n if (proto.supportedAssistantTypes) {\n m.supportedAssistantTypes = proto.supportedAssistantTypes.map(v => enumStringToValue$4(AssistantType, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.configurationUrl !== 'undefined') {\n toReturn['configurationUrl'] = this.configurationUrl;\n }\n if (typeof this.assistantKeys !== 'undefined' && this.assistantKeys !== null) {\n toReturn['assistantKeys'] = 'toApiJson' in this.assistantKeys ? this.assistantKeys.toApiJson() : this.assistantKeys;\n }\n if (typeof this.connectionType !== 'undefined') {\n toReturn['connectionType'] = this.connectionType;\n }\n if (typeof this.connectionTypeName !== 'undefined') {\n toReturn['connectionTypeName'] = this.connectionTypeName;\n }\n if (typeof this.iconUrl !== 'undefined') {\n toReturn['iconUrl'] = this.iconUrl;\n }\n if (typeof this.isConnectionLocked !== 'undefined') {\n toReturn['isConnectionLocked'] = this.isConnectionLocked;\n }\n if (typeof this.supportedAssistantTypes !== 'undefined') {\n toReturn['supportedAssistantTypes'] = this.supportedAssistantTypes;\n }\n return toReturn;\n }\n}\nclass ConnectionKey {\n static fromProto(proto) {\n let m = new ConnectionKey();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.connectionType !== 'undefined') {\n toReturn['connectionType'] = this.connectionType;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ChatAnswerFunctionExecutionJob {\n static fromProto(proto) {\n let m = new ChatAnswerFunctionExecutionJob();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue$3(ChatAnswerFunctionExecutionJobStatus, proto.status);\n }\n if (proto.result) {\n m.result = ChatAnswerFunctionExecutionJobResult.fromProto(proto.result);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.result !== 'undefined' && this.result !== null) {\n toReturn['result'] = 'toApiJson' in this.result ? this.result.toApiJson() : this.result;\n }\n if (typeof this.nextJobId !== 'undefined') {\n toReturn['nextJobId'] = this.nextJobId;\n }\n return toReturn;\n }\n}\nclass ChatAnswerFunctionExecutionJobResult {\n static fromProto(proto) {\n let m = new ChatAnswerFunctionExecutionJobResult();\n m = Object.assign(m, proto);\n if (proto.metadata) {\n m.metadata = proto.metadata.map(KeyValuePair.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass ChatMessage {\n static fromProto(proto) {\n let m = new ChatMessage();\n m = Object.assign(m, proto);\n if (proto.role) {\n m.role = enumStringToValue$3(ChatMessageRole, proto.role);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.role !== 'undefined') {\n toReturn['role'] = this.role;\n }\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n return toReturn;\n }\n}\nclass ChatUserInfo {\n static fromProto(proto) {\n let m = new ChatUserInfo();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.phone !== 'undefined') {\n toReturn['phone'] = this.phone;\n }\n if (typeof this.address1 !== 'undefined') {\n toReturn['address1'] = this.address1;\n }\n if (typeof this.address2 !== 'undefined') {\n toReturn['address2'] = this.address2;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.zipCode !== 'undefined') {\n toReturn['zipCode'] = this.zipCode;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n if (proto.totalResults) {\n m.totalResults = parseInt(proto.totalResults, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n if (typeof this.totalResults !== 'undefined') {\n toReturn['totalResults'] = this.totalResults;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass BuildDefaultAssistantRequest {\n static fromProto(proto) {\n let m = new BuildDefaultAssistantRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.type) {\n m.type = enumStringToValue(AssistantType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n return toReturn;\n }\n}\nclass BuildDefaultAssistantResponse {\n static fromProto(proto) {\n let m = new BuildDefaultAssistantResponse();\n m = Object.assign(m, proto);\n if (proto.assistant) {\n m.assistant = Assistant.fromProto(proto.assistant);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.assistant !== 'undefined' && this.assistant !== null) {\n toReturn['assistant'] = 'toApiJson' in this.assistant ? this.assistant.toApiJson() : this.assistant;\n }\n return toReturn;\n }\n}\nclass SetAssistantConnectionsRequestConnectionState {\n static fromProto(proto) {\n let m = new SetAssistantConnectionsRequestConnectionState();\n m = Object.assign(m, proto);\n if (proto.connectionKey) {\n m.connectionKey = ConnectionKey.fromProto(proto.connectionKey);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.connectionKey !== 'undefined' && this.connectionKey !== null) {\n toReturn['connectionKey'] = 'toApiJson' in this.connectionKey ? this.connectionKey.toApiJson() : this.connectionKey;\n }\n if (typeof this.isAssociated !== 'undefined') {\n toReturn['isAssociated'] = this.isAssociated;\n }\n return toReturn;\n }\n}\nclass CreateGoalRequest {\n static fromProto(proto) {\n let m = new CreateGoalRequest();\n m = Object.assign(m, proto);\n if (proto.goal) {\n m.goal = Goal.fromProto(proto.goal);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.goal !== 'undefined' && this.goal !== null) {\n toReturn['goal'] = 'toApiJson' in this.goal ? this.goal.toApiJson() : this.goal;\n }\n return toReturn;\n }\n}\nclass CreateGoalResponse {\n static fromProto(proto) {\n let m = new CreateGoalResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass CreatePromptModuleRequest {\n static fromProto(proto) {\n let m = new CreatePromptModuleRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n if (typeof this.managed !== 'undefined') {\n toReturn['managed'] = this.managed;\n }\n return toReturn;\n }\n}\nclass CreatePromptModuleResponse {\n static fromProto(proto) {\n let m = new CreatePromptModuleResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass CreatePromptModuleVersionRequest {\n static fromProto(proto) {\n let m = new CreatePromptModuleVersionRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.options) {\n m.options = CreatePromptModuleVersionRequestOptions.fromProto(proto.options);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n if (typeof this.options !== 'undefined' && this.options !== null) {\n toReturn['options'] = 'toApiJson' in this.options ? this.options.toApiJson() : this.options;\n }\n return toReturn;\n }\n}\nclass CreatePromptRequest {\n static fromProto(proto) {\n let m = new CreatePromptRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass DeleteAssistantRequest {\n static fromProto(proto) {\n let m = new DeleteAssistantRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass DeleteConnectionRequest {\n static fromProto(proto) {\n let m = new DeleteConnectionRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.connectionType !== 'undefined') {\n toReturn['connectionType'] = this.connectionType;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass DeleteFunctionRequest {\n static fromProto(proto) {\n let m = new DeleteFunctionRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass DeleteGoalRequest {\n static fromProto(proto) {\n let m = new DeleteGoalRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass DeletePromptModuleRequest {\n static fromProto(proto) {\n let m = new DeletePromptModuleRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass DeletePromptRequest {\n static fromProto(proto) {\n let m = new DeletePromptRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass DeployPromptModuleRequest {\n static fromProto(proto) {\n let m = new DeployPromptModuleRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n return toReturn;\n }\n}\nclass DeployPromptRequest {\n static fromProto(proto) {\n let m = new DeployPromptRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n return toReturn;\n }\n}\nclass ListConnectionsRequestFilters {\n static fromProto(proto) {\n let m = new ListConnectionsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.assistantType) {\n m.assistantType = enumStringToValue(AssistantType, proto.assistantType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.assistantType !== 'undefined') {\n toReturn['assistantType'] = this.assistantType;\n }\n return toReturn;\n }\n}\nclass ListPromptModuleRequestFilters {\n static fromProto(proto) {\n let m = new ListPromptModuleRequestFilters();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass ListAllAssistantsAssociatedToConnectionRequestFilters {\n static fromProto(proto) {\n let m = new ListAllAssistantsAssociatedToConnectionRequestFilters();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue(AssistantType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n return toReturn;\n }\n}\nclass ListAssistantRequestFilters {\n static fromProto(proto) {\n let m = new ListAssistantRequestFilters();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.type) {\n m.type = enumStringToValue(AssistantType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n return toReturn;\n }\n}\nclass ListFunctionRequestFilters {\n static fromProto(proto) {\n let m = new ListFunctionRequestFilters();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass ListGoalsRequestFilters {\n static fromProto(proto) {\n let m = new ListGoalsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.type) {\n m.type = enumStringToValue(GoalType, proto.type);\n }\n if (proto.supportedChannels) {\n m.supportedChannels = proto.supportedChannels.map(v => enumStringToValue(GoalChannel, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.supportedChannels !== 'undefined') {\n toReturn['supportedChannels'] = this.supportedChannels;\n }\n return toReturn;\n }\n}\nclass GenerateChatAnswerRequest {\n static fromProto(proto) {\n let m = new GenerateChatAnswerRequest();\n m = Object.assign(m, proto);\n if (proto.connectionKey) {\n m.connectionKey = ConnectionKey.fromProto(proto.connectionKey);\n }\n if (proto.chatHistory) {\n m.chatHistory = proto.chatHistory.map(ChatMessage.fromProto);\n }\n if (proto.chatUserInfo) {\n m.chatUserInfo = ChatUserInfo.fromProto(proto.chatUserInfo);\n }\n if (proto.chatChannel) {\n m.chatChannel = enumStringToValue(ChatChannel, proto.chatChannel);\n }\n if (proto.options) {\n m.options = GenerateChatAnswerRequestOptions.fromProto(proto.options);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.connectionKey !== 'undefined' && this.connectionKey !== null) {\n toReturn['connectionKey'] = 'toApiJson' in this.connectionKey ? this.connectionKey.toApiJson() : this.connectionKey;\n }\n if (typeof this.chatHistory !== 'undefined' && this.chatHistory !== null) {\n toReturn['chatHistory'] = 'toApiJson' in this.chatHistory ? this.chatHistory.toApiJson() : this.chatHistory;\n }\n if (typeof this.chatUserInfo !== 'undefined' && this.chatUserInfo !== null) {\n toReturn['chatUserInfo'] = 'toApiJson' in this.chatUserInfo ? this.chatUserInfo.toApiJson() : this.chatUserInfo;\n }\n if (typeof this.chatChannel !== 'undefined') {\n toReturn['chatChannel'] = this.chatChannel;\n }\n if (typeof this.options !== 'undefined' && this.options !== null) {\n toReturn['options'] = 'toApiJson' in this.options ? this.options.toApiJson() : this.options;\n }\n return toReturn;\n }\n}\nclass GenerateChatAnswerResponse {\n static fromProto(proto) {\n let m = new GenerateChatAnswerResponse();\n m = Object.assign(m, proto);\n if (proto.metadata) {\n m.metadata = proto.metadata.map(KeyValuePair.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.answer !== 'undefined') {\n toReturn['answer'] = this.answer;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n if (typeof this.pendingJobId !== 'undefined') {\n toReturn['pendingJobId'] = this.pendingJobId;\n }\n return toReturn;\n }\n}\nclass GetAssistantRequest {\n static fromProto(proto) {\n let m = new GetAssistantRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass GetAssistantResponse {\n static fromProto(proto) {\n let m = new GetAssistantResponse();\n m = Object.assign(m, proto);\n if (proto.assistant) {\n m.assistant = Assistant.fromProto(proto.assistant);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.assistant !== 'undefined' && this.assistant !== null) {\n toReturn['assistant'] = 'toApiJson' in this.assistant ? this.assistant.toApiJson() : this.assistant;\n }\n return toReturn;\n }\n}\nclass GetChatAnswerFunctionExecutionJobRequest {\n static fromProto(proto) {\n let m = new GetChatAnswerFunctionExecutionJobRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass GetChatAnswerFunctionExecutionJobResponse {\n static fromProto(proto) {\n let m = new GetChatAnswerFunctionExecutionJobResponse();\n m = Object.assign(m, proto);\n if (proto.job) {\n m.job = ChatAnswerFunctionExecutionJob.fromProto(proto.job);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.job !== 'undefined' && this.job !== null) {\n toReturn['job'] = 'toApiJson' in this.job ? this.job.toApiJson() : this.job;\n }\n return toReturn;\n }\n}\nclass GetConnectionRequest {\n static fromProto(proto) {\n let m = new GetConnectionRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.connectionType !== 'undefined') {\n toReturn['connectionType'] = this.connectionType;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.includeAssistantKeys !== 'undefined') {\n toReturn['includeAssistantKeys'] = this.includeAssistantKeys;\n }\n return toReturn;\n }\n}\nclass GetConnectionResponse {\n static fromProto(proto) {\n let m = new GetConnectionResponse();\n m = Object.assign(m, proto);\n if (proto.connection) {\n m.connection = Connection.fromProto(proto.connection);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.connection !== 'undefined' && this.connection !== null) {\n toReturn['connection'] = 'toApiJson' in this.connection ? this.connection.toApiJson() : this.connection;\n }\n return toReturn;\n }\n}\nclass GetDeployedPromptModuleVersionRequest {\n static fromProto(proto) {\n let m = new GetDeployedPromptModuleVersionRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass GetDeployedPromptModuleVersionResponse {\n static fromProto(proto) {\n let m = new GetDeployedPromptModuleVersionResponse();\n m = Object.assign(m, proto);\n if (proto.promptModule) {\n m.promptModule = PromptModule.fromProto(proto.promptModule);\n }\n if (proto.deployedPromptModuleVersion) {\n m.deployedPromptModuleVersion = PromptModuleVersion.fromProto(proto.deployedPromptModuleVersion);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.promptModule !== 'undefined' && this.promptModule !== null) {\n toReturn['promptModule'] = 'toApiJson' in this.promptModule ? this.promptModule.toApiJson() : this.promptModule;\n }\n if (typeof this.deployedPromptModuleVersion !== 'undefined' && this.deployedPromptModuleVersion !== null) {\n toReturn['deployedPromptModuleVersion'] = 'toApiJson' in this.deployedPromptModuleVersion ? this.deployedPromptModuleVersion.toApiJson() : this.deployedPromptModuleVersion;\n }\n return toReturn;\n }\n}\nclass GetDeployedPromptVersionRequest {\n static fromProto(proto) {\n let m = new GetDeployedPromptVersionRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass GetDeployedPromptVersionResponse {\n static fromProto(proto) {\n let m = new GetDeployedPromptVersionResponse();\n m = Object.assign(m, proto);\n if (proto.prompt) {\n m.prompt = Prompt.fromProto(proto.prompt);\n }\n if (proto.deployedPromptVersion) {\n m.deployedPromptVersion = PromptVersion.fromProto(proto.deployedPromptVersion);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.prompt !== 'undefined' && this.prompt !== null) {\n toReturn['prompt'] = 'toApiJson' in this.prompt ? this.prompt.toApiJson() : this.prompt;\n }\n if (typeof this.deployedPromptVersion !== 'undefined' && this.deployedPromptVersion !== null) {\n toReturn['deployedPromptVersion'] = 'toApiJson' in this.deployedPromptVersion ? this.deployedPromptVersion.toApiJson() : this.deployedPromptVersion;\n }\n return toReturn;\n }\n}\nclass GetFunctionRequest {\n static fromProto(proto) {\n let m = new GetFunctionRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass GetFunctionResponse {\n static fromProto(proto) {\n let m = new GetFunctionResponse();\n m = Object.assign(m, proto);\n if (proto.function) {\n m.function = Function.fromProto(proto.function);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.function !== 'undefined' && this.function !== null) {\n toReturn['function'] = 'toApiJson' in this.function ? this.function.toApiJson() : this.function;\n }\n return toReturn;\n }\n}\nclass GetGoalRequest {\n static fromProto(proto) {\n let m = new GetGoalRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass GetGoalResponse {\n static fromProto(proto) {\n let m = new GetGoalResponse();\n m = Object.assign(m, proto);\n if (proto.goal) {\n m.goal = Goal.fromProto(proto.goal);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.goal !== 'undefined' && this.goal !== null) {\n toReturn['goal'] = 'toApiJson' in this.goal ? this.goal.toApiJson() : this.goal;\n }\n return toReturn;\n }\n}\nclass GetHydratedDeployedPromptModuleVersionRequest {\n static fromProto(proto) {\n let m = new GetHydratedDeployedPromptModuleVersionRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.variables) {\n m.variables = proto.variables.map(KeyValuePair.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.variables !== 'undefined' && this.variables !== null) {\n toReturn['variables'] = 'toApiJson' in this.variables ? this.variables.toApiJson() : this.variables;\n }\n return toReturn;\n }\n}\nclass GetHydratedDeployedPromptModuleVersionResponse {\n static fromProto(proto) {\n let m = new GetHydratedDeployedPromptModuleVersionResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n return toReturn;\n }\n}\nclass GetMultiDeployedPromptVersionRequest {\n static fromProto(proto) {\n let m = new GetMultiDeployedPromptVersionRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.ids !== 'undefined') {\n toReturn['ids'] = this.ids;\n }\n return toReturn;\n }\n}\nclass GetMultiDeployedPromptVersionResponse {\n static fromProto(proto) {\n let m = new GetMultiDeployedPromptVersionResponse();\n m = Object.assign(m, proto);\n if (proto.prompts) {\n m.prompts = proto.prompts.map(Prompt.fromProto);\n }\n if (proto.deployedPromptVersions) {\n m.deployedPromptVersions = proto.deployedPromptVersions.map(PromptVersion.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.prompts !== 'undefined' && this.prompts !== null) {\n toReturn['prompts'] = 'toApiJson' in this.prompts ? this.prompts.toApiJson() : this.prompts;\n }\n if (typeof this.deployedPromptVersions !== 'undefined' && this.deployedPromptVersions !== null) {\n toReturn['deployedPromptVersions'] = 'toApiJson' in this.deployedPromptVersions ? this.deployedPromptVersions.toApiJson() : this.deployedPromptVersions;\n }\n return toReturn;\n }\n}\nclass GetMultiFunctionRequest {\n static fromProto(proto) {\n let m = new GetMultiFunctionRequest();\n m = Object.assign(m, proto);\n if (proto.keys) {\n m.keys = proto.keys.map(FunctionKey.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.keys !== 'undefined' && this.keys !== null) {\n toReturn['keys'] = 'toApiJson' in this.keys ? this.keys.toApiJson() : this.keys;\n }\n return toReturn;\n }\n}\nclass GetMultiFunctionResponse {\n static fromProto(proto) {\n let m = new GetMultiFunctionResponse();\n m = Object.assign(m, proto);\n if (proto.functions) {\n m.functions = proto.functions.map(Function.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.functions !== 'undefined' && this.functions !== null) {\n toReturn['functions'] = 'toApiJson' in this.functions ? this.functions.toApiJson() : this.functions;\n }\n return toReturn;\n }\n}\nclass GetMultiGoalRequest {\n static fromProto(proto) {\n let m = new GetMultiGoalRequest();\n m = Object.assign(m, proto);\n if (proto.keys) {\n m.keys = proto.keys.map(GoalKey.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.keys !== 'undefined' && this.keys !== null) {\n toReturn['keys'] = 'toApiJson' in this.keys ? this.keys.toApiJson() : this.keys;\n }\n return toReturn;\n }\n}\nclass GetMultiGoalResponse {\n static fromProto(proto) {\n let m = new GetMultiGoalResponse();\n m = Object.assign(m, proto);\n if (proto.goals) {\n m.goals = proto.goals.map(Goal.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.goals !== 'undefined' && this.goals !== null) {\n toReturn['goals'] = 'toApiJson' in this.goals ? this.goals.toApiJson() : this.goals;\n }\n return toReturn;\n }\n}\nclass GetMultiHydratedDeployedPromptModuleVersionRequest {\n static fromProto(proto) {\n let m = new GetMultiHydratedDeployedPromptModuleVersionRequest();\n m = Object.assign(m, proto);\n if (proto.keys) {\n m.keys = proto.keys.map(PromptModuleKey.fromProto);\n }\n if (proto.variables) {\n m.variables = proto.variables.map(KeyValuePair.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.keys !== 'undefined' && this.keys !== null) {\n toReturn['keys'] = 'toApiJson' in this.keys ? this.keys.toApiJson() : this.keys;\n }\n if (typeof this.variables !== 'undefined' && this.variables !== null) {\n toReturn['variables'] = 'toApiJson' in this.variables ? this.variables.toApiJson() : this.variables;\n }\n return toReturn;\n }\n}\nclass GetMultiHydratedDeployedPromptModuleVersionResponse {\n static fromProto(proto) {\n let m = new GetMultiHydratedDeployedPromptModuleVersionResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contents !== 'undefined') {\n toReturn['contents'] = this.contents;\n }\n return toReturn;\n }\n}\nclass GetPromptModuleRequest {\n static fromProto(proto) {\n let m = new GetPromptModuleRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass GetPromptModuleResponse {\n static fromProto(proto) {\n let m = new GetPromptModuleResponse();\n m = Object.assign(m, proto);\n if (proto.promptModule) {\n m.promptModule = PromptModule.fromProto(proto.promptModule);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.promptModule !== 'undefined' && this.promptModule !== null) {\n toReturn['promptModule'] = 'toApiJson' in this.promptModule ? this.promptModule.toApiJson() : this.promptModule;\n }\n return toReturn;\n }\n}\nclass GetPromptModuleVersionRequest {\n static fromProto(proto) {\n let m = new GetPromptModuleVersionRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n return toReturn;\n }\n}\nclass GetPromptModuleVersionResponse {\n static fromProto(proto) {\n let m = new GetPromptModuleVersionResponse();\n m = Object.assign(m, proto);\n if (proto.promptModuleVersion) {\n m.promptModuleVersion = PromptModuleVersion.fromProto(proto.promptModuleVersion);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.promptModuleVersion !== 'undefined' && this.promptModuleVersion !== null) {\n toReturn['promptModuleVersion'] = 'toApiJson' in this.promptModuleVersion ? this.promptModuleVersion.toApiJson() : this.promptModuleVersion;\n }\n return toReturn;\n }\n}\nclass GetPromptRequest {\n static fromProto(proto) {\n let m = new GetPromptRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass GetPromptResponse {\n static fromProto(proto) {\n let m = new GetPromptResponse();\n m = Object.assign(m, proto);\n if (proto.prompt) {\n m.prompt = Prompt.fromProto(proto.prompt);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.prompt !== 'undefined' && this.prompt !== null) {\n toReturn['prompt'] = 'toApiJson' in this.prompt ? this.prompt.toApiJson() : this.prompt;\n }\n return toReturn;\n }\n}\nclass GetPromptVersionRequest {\n static fromProto(proto) {\n let m = new GetPromptVersionRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n return toReturn;\n }\n}\nclass GetPromptVersionResponse {\n static fromProto(proto) {\n let m = new GetPromptVersionResponse();\n m = Object.assign(m, proto);\n if (proto.promptVersion) {\n m.promptVersion = PromptVersion.fromProto(proto.promptVersion);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.promptVersion !== 'undefined' && this.promptVersion !== null) {\n toReturn['promptVersion'] = 'toApiJson' in this.promptVersion ? this.promptVersion.toApiJson() : this.promptVersion;\n }\n return toReturn;\n }\n}\nclass GoalsDisabledForAccountGroupRequest {\n static fromProto(proto) {\n let m = new GoalsDisabledForAccountGroupRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass GoalsDisabledForAccountGroupResponse {\n static fromProto(proto) {\n let m = new GoalsDisabledForAccountGroupResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.goalsDisabled !== 'undefined') {\n toReturn['goalsDisabled'] = this.goalsDisabled;\n }\n return toReturn;\n }\n}\nclass ListAllAssistantsAssociatedToConnectionRequest {\n static fromProto(proto) {\n let m = new ListAllAssistantsAssociatedToConnectionRequest();\n m = Object.assign(m, proto);\n if (proto.connectionKey) {\n m.connectionKey = ConnectionKey.fromProto(proto.connectionKey);\n }\n if (proto.filters) {\n m.filters = ListAllAssistantsAssociatedToConnectionRequestFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.connectionKey !== 'undefined' && this.connectionKey !== null) {\n toReturn['connectionKey'] = 'toApiJson' in this.connectionKey ? this.connectionKey.toApiJson() : this.connectionKey;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass ListAllAssistantsAssociatedToConnectionResponse {\n static fromProto(proto) {\n let m = new ListAllAssistantsAssociatedToConnectionResponse();\n m = Object.assign(m, proto);\n if (proto.assistants) {\n m.assistants = proto.assistants.map(Assistant.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.assistants !== 'undefined' && this.assistants !== null) {\n toReturn['assistants'] = 'toApiJson' in this.assistants ? this.assistants.toApiJson() : this.assistants;\n }\n return toReturn;\n }\n}\nclass ListAssistantRequest {\n static fromProto(proto) {\n let m = new ListAssistantRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListAssistantRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListAssistantResponse {\n static fromProto(proto) {\n let m = new ListAssistantResponse();\n m = Object.assign(m, proto);\n if (proto.assistants) {\n m.assistants = proto.assistants.map(Assistant.fromProto);\n }\n if (proto.metadata) {\n m.metadata = PagedResponseMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.assistants !== 'undefined' && this.assistants !== null) {\n toReturn['assistants'] = 'toApiJson' in this.assistants ? this.assistants.toApiJson() : this.assistants;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass ListConnectionsRequest {\n static fromProto(proto) {\n let m = new ListConnectionsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListConnectionsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.includeAssistantKeys !== 'undefined') {\n toReturn['includeAssistantKeys'] = this.includeAssistantKeys;\n }\n return toReturn;\n }\n}\nclass ListConnectionsResponse {\n static fromProto(proto) {\n let m = new ListConnectionsResponse();\n m = Object.assign(m, proto);\n if (proto.connections) {\n m.connections = proto.connections.map(Connection.fromProto);\n }\n if (proto.metadata) {\n m.metadata = PagedResponseMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.connections !== 'undefined' && this.connections !== null) {\n toReturn['connections'] = 'toApiJson' in this.connections ? this.connections.toApiJson() : this.connections;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass ListFunctionRequest {\n static fromProto(proto) {\n let m = new ListFunctionRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListFunctionRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListFunctionResponse {\n static fromProto(proto) {\n let m = new ListFunctionResponse();\n m = Object.assign(m, proto);\n if (proto.functions) {\n m.functions = proto.functions.map(Function.fromProto);\n }\n if (proto.metadata) {\n m.metadata = PagedResponseMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.functions !== 'undefined' && this.functions !== null) {\n toReturn['functions'] = 'toApiJson' in this.functions ? this.functions.toApiJson() : this.functions;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass ListGoalsRequest {\n static fromProto(proto) {\n let m = new ListGoalsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListGoalsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListGoalsResponse {\n static fromProto(proto) {\n let m = new ListGoalsResponse();\n m = Object.assign(m, proto);\n if (proto.goals) {\n m.goals = proto.goals.map(Goal.fromProto);\n }\n if (proto.metadata) {\n m.metadata = PagedResponseMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.goals !== 'undefined' && this.goals !== null) {\n toReturn['goals'] = 'toApiJson' in this.goals ? this.goals.toApiJson() : this.goals;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass ListPromptModuleRequest {\n static fromProto(proto) {\n let m = new ListPromptModuleRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListPromptModuleRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListPromptModuleResponse {\n static fromProto(proto) {\n let m = new ListPromptModuleResponse();\n m = Object.assign(m, proto);\n if (proto.promptModules) {\n m.promptModules = proto.promptModules.map(PromptModule.fromProto);\n }\n if (proto.deployedPromptModuleVersions) {\n m.deployedPromptModuleVersions = proto.deployedPromptModuleVersions.map(PromptModuleVersion.fromProto);\n }\n if (proto.metadata) {\n m.metadata = PagedResponseMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.promptModules !== 'undefined' && this.promptModules !== null) {\n toReturn['promptModules'] = 'toApiJson' in this.promptModules ? this.promptModules.toApiJson() : this.promptModules;\n }\n if (typeof this.deployedPromptModuleVersions !== 'undefined' && this.deployedPromptModuleVersions !== null) {\n toReturn['deployedPromptModuleVersions'] = 'toApiJson' in this.deployedPromptModuleVersions ? this.deployedPromptModuleVersions.toApiJson() : this.deployedPromptModuleVersions;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass ListPromptModuleVersionsRequest {\n static fromProto(proto) {\n let m = new ListPromptModuleVersionsRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListPromptModuleVersionsResponse {\n static fromProto(proto) {\n let m = new ListPromptModuleVersionsResponse();\n m = Object.assign(m, proto);\n if (proto.promptModuleVersions) {\n m.promptModuleVersions = proto.promptModuleVersions.map(PromptModuleVersion.fromProto);\n }\n if (proto.metadata) {\n m.metadata = PagedResponseMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.promptModuleVersions !== 'undefined' && this.promptModuleVersions !== null) {\n toReturn['promptModuleVersions'] = 'toApiJson' in this.promptModuleVersions ? this.promptModuleVersions.toApiJson() : this.promptModuleVersions;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass ListPromptRequest {\n static fromProto(proto) {\n let m = new ListPromptRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListPromptResponse {\n static fromProto(proto) {\n let m = new ListPromptResponse();\n m = Object.assign(m, proto);\n if (proto.prompts) {\n m.prompts = proto.prompts.map(Prompt.fromProto);\n }\n if (proto.deployedPromptVersions) {\n m.deployedPromptVersions = proto.deployedPromptVersions.map(PromptVersion.fromProto);\n }\n if (proto.metadata) {\n m.metadata = PagedResponseMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.prompts !== 'undefined' && this.prompts !== null) {\n toReturn['prompts'] = 'toApiJson' in this.prompts ? this.prompts.toApiJson() : this.prompts;\n }\n if (typeof this.deployedPromptVersions !== 'undefined' && this.deployedPromptVersions !== null) {\n toReturn['deployedPromptVersions'] = 'toApiJson' in this.deployedPromptVersions ? this.deployedPromptVersions.toApiJson() : this.deployedPromptVersions;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass ListPromptVersionsRequest {\n static fromProto(proto) {\n let m = new ListPromptVersionsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListPromptVersionsResponse {\n static fromProto(proto) {\n let m = new ListPromptVersionsResponse();\n m = Object.assign(m, proto);\n if (proto.promptVersions) {\n m.promptVersions = proto.promptVersions.map(PromptVersion.fromProto);\n }\n if (proto.metadata) {\n m.metadata = PagedResponseMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.promptVersions !== 'undefined' && this.promptVersions !== null) {\n toReturn['promptVersions'] = 'toApiJson' in this.promptVersions ? this.promptVersions.toApiJson() : this.promptVersions;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass CreatePromptModuleVersionRequestOptions {\n static fromProto(proto) {\n let m = new CreatePromptModuleVersionRequestOptions();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.shouldDeploy !== 'undefined') {\n toReturn['shouldDeploy'] = this.shouldDeploy;\n }\n return toReturn;\n }\n}\nclass UpsertAssistantRequestOptions {\n static fromProto(proto) {\n let m = new UpsertAssistantRequestOptions();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.applyDefaults !== 'undefined') {\n toReturn['applyDefaults'] = this.applyDefaults;\n }\n return toReturn;\n }\n}\nclass GenerateChatAnswerRequestOptions {\n static fromProto(proto) {\n let m = new GenerateChatAnswerRequestOptions();\n m = Object.assign(m, proto);\n if (proto.maxTokens) {\n m.maxTokens = parseInt(proto.maxTokens, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.includeAllCitations !== 'undefined') {\n toReturn['includeAllCitations'] = this.includeAllCitations;\n }\n if (typeof this.enableAsyncFunctions !== 'undefined') {\n toReturn['enableAsyncFunctions'] = this.enableAsyncFunctions;\n }\n if (typeof this.maxTokens !== 'undefined') {\n toReturn['maxTokens'] = this.maxTokens;\n }\n return toReturn;\n }\n}\nclass SetAssistantConnectionsRequest {\n static fromProto(proto) {\n let m = new SetAssistantConnectionsRequest();\n m = Object.assign(m, proto);\n if (proto.associationStates) {\n m.associationStates = proto.associationStates.map(SetAssistantConnectionsRequestConnectionState.fromProto);\n }\n if (proto.assistantKey) {\n m.assistantKey = AssistantKey.fromProto(proto.assistantKey);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.associationStates !== 'undefined' && this.associationStates !== null) {\n toReturn['associationStates'] = 'toApiJson' in this.associationStates ? this.associationStates.toApiJson() : this.associationStates;\n }\n if (typeof this.assistantKey !== 'undefined' && this.assistantKey !== null) {\n toReturn['assistantKey'] = 'toApiJson' in this.assistantKey ? this.assistantKey.toApiJson() : this.assistantKey;\n }\n return toReturn;\n }\n}\nclass UpdateGoalRequest {\n static fromProto(proto) {\n let m = new UpdateGoalRequest();\n m = Object.assign(m, proto);\n if (proto.goal) {\n m.goal = Goal.fromProto(proto.goal);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.goal !== 'undefined' && this.goal !== null) {\n toReturn['goal'] = 'toApiJson' in this.goal ? this.goal.toApiJson() : this.goal;\n }\n return toReturn;\n }\n}\nclass UpdatePromptModuleRequest {\n static fromProto(proto) {\n let m = new UpdatePromptModuleRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass UpdatePromptRequest {\n static fromProto(proto) {\n let m = new UpdatePromptRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass UpsertAssistantRequest {\n static fromProto(proto) {\n let m = new UpsertAssistantRequest();\n m = Object.assign(m, proto);\n if (proto.assistant) {\n m.assistant = Assistant.fromProto(proto.assistant);\n }\n if (proto.options) {\n m.options = UpsertAssistantRequestOptions.fromProto(proto.options);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.assistant !== 'undefined' && this.assistant !== null) {\n toReturn['assistant'] = 'toApiJson' in this.assistant ? this.assistant.toApiJson() : this.assistant;\n }\n if (typeof this.options !== 'undefined' && this.options !== null) {\n toReturn['options'] = 'toApiJson' in this.options ? this.options.toApiJson() : this.options;\n }\n return toReturn;\n }\n}\nclass UpsertAssistantResponse {\n static fromProto(proto) {\n let m = new UpsertAssistantResponse();\n m = Object.assign(m, proto);\n if (proto.assistant) {\n m.assistant = Assistant.fromProto(proto.assistant);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.assistant !== 'undefined' && this.assistant !== null) {\n toReturn['assistant'] = 'toApiJson' in this.assistant ? this.assistant.toApiJson() : this.assistant;\n }\n return toReturn;\n }\n}\nclass UpsertConnectionRequest {\n static fromProto(proto) {\n let m = new UpsertConnectionRequest();\n m = Object.assign(m, proto);\n if (proto.connection) {\n m.connection = Connection.fromProto(proto.connection);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.connection !== 'undefined' && this.connection !== null) {\n toReturn['connection'] = 'toApiJson' in this.connection ? this.connection.toApiJson() : this.connection;\n }\n return toReturn;\n }\n}\nclass UpsertFunctionRequest {\n static fromProto(proto) {\n let m = new UpsertFunctionRequest();\n m = Object.assign(m, proto);\n if (proto.function) {\n m.function = Function.fromProto(proto.function);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.function !== 'undefined' && this.function !== null) {\n toReturn['function'] = 'toApiJson' in this.function ? this.function.toApiJson() : this.function;\n }\n return toReturn;\n }\n}\nclass UpsertGoalRequest {\n static fromProto(proto) {\n let m = new UpsertGoalRequest();\n m = Object.assign(m, proto);\n if (proto.goal) {\n m.goal = Goal.fromProto(proto.goal);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.goal !== 'undefined' && this.goal !== null) {\n toReturn['goal'] = 'toApiJson' in this.goal ? this.goal.toApiJson() : this.goal;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet AssistantApiService = /*#__PURE__*/(() => {\n class AssistantApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n upsertAssistant(r) {\n const request = r.toApiJson ? r : new UpsertAssistantRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.AssistantService/UpsertAssistant\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpsertAssistantResponse.fromProto(resp)));\n }\n getAssistant(r) {\n const request = r.toApiJson ? r : new GetAssistantRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.AssistantService/GetAssistant\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetAssistantResponse.fromProto(resp)));\n }\n buildDefaultAssistant(r) {\n const request = r.toApiJson ? r : new BuildDefaultAssistantRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.AssistantService/BuildDefaultAssistant\", request.toApiJson(), this.apiOptions()).pipe(map(resp => BuildDefaultAssistantResponse.fromProto(resp)));\n }\n deleteAssistant(r) {\n const request = r.toApiJson ? r : new DeleteAssistantRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.AssistantService/DeleteAssistant\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listAssistant(r) {\n const request = r.toApiJson ? r : new ListAssistantRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.AssistantService/ListAssistant\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListAssistantResponse.fromProto(resp)));\n }\n listAllAssistantsAssociatedToConnection(r) {\n const request = r.toApiJson ? r : new ListAllAssistantsAssociatedToConnectionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.AssistantService/ListAllAssistantsAssociatedToConnection\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListAllAssistantsAssociatedToConnectionResponse.fromProto(resp)));\n }\n generateChatAnswer(r) {\n const request = r.toApiJson ? r : new GenerateChatAnswerRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.AssistantService/GenerateChatAnswer\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GenerateChatAnswerResponse.fromProto(resp)));\n }\n getChatAnswerFunctionExecutionJob(r) {\n const request = r.toApiJson ? r : new GetChatAnswerFunctionExecutionJobRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.AssistantService/GetChatAnswerFunctionExecutionJob\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetChatAnswerFunctionExecutionJobResponse.fromProto(resp)));\n }\n setAssistantConnections(r) {\n const request = r.toApiJson ? r : new SetAssistantConnectionsRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.AssistantService/SetAssistantConnections\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n AssistantApiService.ɵfac = function AssistantApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AssistantApiService)();\n };\n AssistantApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: AssistantApiService,\n factory: AssistantApiService.ɵfac,\n providedIn: 'root'\n });\n return AssistantApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ConnectionApiService = /*#__PURE__*/(() => {\n class ConnectionApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n upsertConnection(r) {\n const request = r.toApiJson ? r : new UpsertConnectionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.ConnectionService/UpsertConnection\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getConnection(r) {\n const request = r.toApiJson ? r : new GetConnectionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.ConnectionService/GetConnection\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetConnectionResponse.fromProto(resp)));\n }\n deleteConnection(r) {\n const request = r.toApiJson ? r : new DeleteConnectionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.ConnectionService/DeleteConnection\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listConnections(r) {\n const request = r.toApiJson ? r : new ListConnectionsRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.ConnectionService/ListConnections\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListConnectionsResponse.fromProto(resp)));\n }\n }\n ConnectionApiService.ɵfac = function ConnectionApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ConnectionApiService)();\n };\n ConnectionApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ConnectionApiService,\n factory: ConnectionApiService.ɵfac,\n providedIn: 'root'\n });\n return ConnectionApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet FunctionApiService = /*#__PURE__*/(() => {\n class FunctionApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n upsert(r) {\n const request = r.toApiJson ? r : new UpsertFunctionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.FunctionService/Upsert\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n get(r) {\n const request = r.toApiJson ? r : new GetFunctionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.FunctionService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetFunctionResponse.fromProto(resp)));\n }\n getMulti(r) {\n const request = r.toApiJson ? r : new GetMultiFunctionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.FunctionService/GetMulti\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiFunctionResponse.fromProto(resp)));\n }\n list(r) {\n const request = r.toApiJson ? r : new ListFunctionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.FunctionService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListFunctionResponse.fromProto(resp)));\n }\n delete(r) {\n const request = r.toApiJson ? r : new DeleteFunctionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.FunctionService/Delete\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n FunctionApiService.ɵfac = function FunctionApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FunctionApiService)();\n };\n FunctionApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FunctionApiService,\n factory: FunctionApiService.ɵfac,\n providedIn: 'root'\n });\n return FunctionApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet GoalApiService = /*#__PURE__*/(() => {\n class GoalApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n upsert(r) {\n const request = r.toApiJson ? r : new UpsertGoalRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.GoalService/Upsert\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateGoalRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.GoalService/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateGoalResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateGoalRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.GoalService/Update\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n get(r) {\n const request = r.toApiJson ? r : new GetGoalRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.GoalService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetGoalResponse.fromProto(resp)));\n }\n getMulti(r) {\n const request = r.toApiJson ? r : new GetMultiGoalRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.GoalService/GetMulti\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiGoalResponse.fromProto(resp)));\n }\n delete(r) {\n const request = r.toApiJson ? r : new DeleteGoalRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.GoalService/Delete\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n list(r) {\n const request = r.toApiJson ? r : new ListGoalsRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.GoalService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListGoalsResponse.fromProto(resp)));\n }\n goalsDisabledForAccountGroup(r) {\n const request = r.toApiJson ? r : new GoalsDisabledForAccountGroupRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.GoalService/GoalsDisabledForAccountGroup\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GoalsDisabledForAccountGroupResponse.fromProto(resp)));\n }\n }\n GoalApiService.ɵfac = function GoalApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GoalApiService)();\n };\n GoalApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: GoalApiService,\n factory: GoalApiService.ɵfac,\n providedIn: 'root'\n });\n return GoalApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PromptModuleApiService = /*#__PURE__*/(() => {\n class PromptModuleApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreatePromptModuleRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptModuleService/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreatePromptModuleResponse.fromProto(resp)));\n }\n createVersion(r) {\n const request = r.toApiJson ? r : new CreatePromptModuleVersionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptModuleService/CreateVersion\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n get(r) {\n const request = r.toApiJson ? r : new GetPromptModuleRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptModuleService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPromptModuleResponse.fromProto(resp)));\n }\n getVersion(r) {\n const request = r.toApiJson ? r : new GetPromptModuleVersionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptModuleService/GetVersion\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPromptModuleVersionResponse.fromProto(resp)));\n }\n getDeployedVersion(r) {\n const request = r.toApiJson ? r : new GetDeployedPromptModuleVersionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptModuleService/GetDeployedVersion\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetDeployedPromptModuleVersionResponse.fromProto(resp)));\n }\n getHydratedDeployedVersion(r) {\n const request = r.toApiJson ? r : new GetHydratedDeployedPromptModuleVersionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptModuleService/GetHydratedDeployedVersion\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetHydratedDeployedPromptModuleVersionResponse.fromProto(resp)));\n }\n getMultiHydratedDeployedVersion(r) {\n const request = r.toApiJson ? r : new GetMultiHydratedDeployedPromptModuleVersionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptModuleService/GetMultiHydratedDeployedVersion\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiHydratedDeployedPromptModuleVersionResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdatePromptModuleRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptModuleService/Update\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deploy(r) {\n const request = r.toApiJson ? r : new DeployPromptModuleRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptModuleService/Deploy\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n list(r) {\n const request = r.toApiJson ? r : new ListPromptModuleRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptModuleService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPromptModuleResponse.fromProto(resp)));\n }\n listVersions(r) {\n const request = r.toApiJson ? r : new ListPromptModuleVersionsRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptModuleService/ListVersions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPromptModuleVersionsResponse.fromProto(resp)));\n }\n delete(r) {\n const request = r.toApiJson ? r : new DeletePromptModuleRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptModuleService/Delete\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n PromptModuleApiService.ɵfac = function PromptModuleApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PromptModuleApiService)();\n };\n PromptModuleApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PromptModuleApiService,\n factory: PromptModuleApiService.ɵfac,\n providedIn: 'root'\n });\n return PromptModuleApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PromptApiService = /*#__PURE__*/(() => {\n class PromptApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreatePromptRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptService/Create\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n get(r) {\n const request = r.toApiJson ? r : new GetPromptRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPromptResponse.fromProto(resp)));\n }\n getVersion(r) {\n const request = r.toApiJson ? r : new GetPromptVersionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptService/GetVersion\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPromptVersionResponse.fromProto(resp)));\n }\n getDeployedVersion(r) {\n const request = r.toApiJson ? r : new GetDeployedPromptVersionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptService/GetDeployedVersion\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetDeployedPromptVersionResponse.fromProto(resp)));\n }\n getMultiDeployedVersion(r) {\n const request = r.toApiJson ? r : new GetMultiDeployedPromptVersionRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptService/GetMultiDeployedVersion\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiDeployedPromptVersionResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdatePromptRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptService/Update\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deploy(r) {\n const request = r.toApiJson ? r : new DeployPromptRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptService/Deploy\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n list(r) {\n const request = r.toApiJson ? r : new ListPromptRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPromptResponse.fromProto(resp)));\n }\n listVersions(r) {\n const request = r.toApiJson ? r : new ListPromptVersionsRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptService/ListVersions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPromptVersionsResponse.fromProto(resp)));\n }\n delete(r) {\n const request = r.toApiJson ? r : new DeletePromptRequest(r);\n return this.http.post(this._host + \"/ai_assistants.v1alpha1.PromptService/Delete\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n PromptApiService.ɵfac = function PromptApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PromptApiService)();\n };\n PromptApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PromptApiService,\n factory: PromptApiService.ɵfac,\n providedIn: 'root'\n });\n return PromptApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Access, Assistant, AssistantApiService, AssistantKey, AssistantType, BuildDefaultAssistantRequest, BuildDefaultAssistantResponse, ChatAnswerFunctionExecutionJob, ChatAnswerFunctionExecutionJobResult, ChatAnswerFunctionExecutionJobStatus, ChatChannel, ChatMessage, ChatMessageRole, ChatUserInfo, Config, ConfigInboxConfig, ConfigVoiceConfig, ConfigurableGoal, Connection, ConnectionApiService, ConnectionKey, CreateGoalRequest, CreateGoalResponse, CreatePromptModuleRequest, CreatePromptModuleResponse, CreatePromptModuleVersionRequest, CreatePromptModuleVersionRequestOptions, CreatePromptRequest, DeepgramConfig, DeleteAssistantRequest, DeleteConnectionRequest, DeleteFunctionRequest, DeleteGoalRequest, DeletePromptModuleRequest, DeletePromptRequest, DeployPromptModuleRequest, DeployPromptRequest, Function, FunctionApiService, FunctionHeader, FunctionKey, FunctionParameter, FunctionParameterParameterLocation, GenerateChatAnswerRequest, GenerateChatAnswerRequestOptions, GenerateChatAnswerResponse, GetAssistantRequest, GetAssistantResponse, GetChatAnswerFunctionExecutionJobRequest, GetChatAnswerFunctionExecutionJobResponse, GetConnectionRequest, GetConnectionResponse, GetDeployedPromptModuleVersionRequest, GetDeployedPromptModuleVersionResponse, GetDeployedPromptVersionRequest, GetDeployedPromptVersionResponse, GetFunctionRequest, GetFunctionResponse, GetGoalRequest, GetGoalResponse, GetHydratedDeployedPromptModuleVersionRequest, GetHydratedDeployedPromptModuleVersionResponse, GetMultiDeployedPromptVersionRequest, GetMultiDeployedPromptVersionResponse, GetMultiFunctionRequest, GetMultiFunctionResponse, GetMultiGoalRequest, GetMultiGoalResponse, GetMultiHydratedDeployedPromptModuleVersionRequest, GetMultiHydratedDeployedPromptModuleVersionResponse, GetPromptModuleRequest, GetPromptModuleResponse, GetPromptModuleVersionRequest, GetPromptModuleVersionResponse, GetPromptRequest, GetPromptResponse, GetPromptVersionRequest, GetPromptVersionResponse, Goal, GoalApiService, GoalChannel, GoalKey, GoalType, GoalsDisabledForAccountGroupRequest, GoalsDisabledForAccountGroupResponse, HostService, KeyValuePair, ListAllAssistantsAssociatedToConnectionRequest, ListAllAssistantsAssociatedToConnectionRequestFilters, ListAllAssistantsAssociatedToConnectionResponse, ListAssistantRequest, ListAssistantRequestFilters, ListAssistantResponse, ListConnectionsRequest, ListConnectionsRequestFilters, ListConnectionsResponse, ListFunctionRequest, ListFunctionRequestFilters, ListFunctionResponse, ListGoalsRequest, ListGoalsRequestFilters, ListGoalsResponse, ListPromptModuleRequest, ListPromptModuleRequestFilters, ListPromptModuleResponse, ListPromptModuleVersionsRequest, ListPromptModuleVersionsResponse, ListPromptRequest, ListPromptResponse, ListPromptVersionsRequest, ListPromptVersionsResponse, ModelConfig, Namespace, NamespaceAccountGroupNamespace, NamespaceAccountGroupsForGroupNamespace, NamespaceAccountGroupsForPartnerNamespace, NamespaceGlobalNamespace, NamespacePartnerNamespace, NamespaceSystemNamespace, OpenAIRealtimeConfig, OpenAIRealtimeConfigTurnDetection, PagedRequestOptions, PagedResponseMetadata, Prompt, PromptApiService, PromptModule, PromptModuleApiService, PromptModuleKey, PromptModuleVersion, PromptVersion, SetAssistantConnectionsRequest, SetAssistantConnectionsRequestConnectionState, UpdateGoalRequest, UpdatePromptModuleRequest, UpdatePromptRequest, UpsertAssistantRequest, UpsertAssistantRequestOptions, UpsertAssistantResponse, UpsertConnectionRequest, UpsertFunctionRequest, UpsertGoalRequest, VendorModel };\n","import { AssistantType, Namespace, VendorModel } from '@vendasta/ai-assistants';\nimport {\n ASSISTANT_ID_CHAT_RECEPTIONIST,\n ASSISTANT_ID_CONTENT_CREATOR,\n ASSISTANT_ID_REVIEW_MANAGER,\n ASSISTANT_ID_SALES_COACH,\n ASSISTANT_ID_SEO_ANALYST,\n ASSISTANT_ID_VOICE_RECEPTIONIST,\n} from '../ai-assistant.constants';\nimport { AiVoiceFamily } from '../interfaces/config.interface';\n\nexport function convertAssistantTypeToDefaultID(type: AssistantType): string {\n switch (type) {\n case AssistantType.ASSISTANT_TYPE_INBOX:\n return ASSISTANT_ID_CHAT_RECEPTIONIST;\n case AssistantType.ASSISTANT_TYPE_SOCIAL_MARKETING:\n return ASSISTANT_ID_CONTENT_CREATOR;\n case AssistantType.ASSISTANT_TYPE_VOICE_RECEPTIONIST:\n return ASSISTANT_ID_VOICE_RECEPTIONIST;\n default:\n return 'unspecified';\n }\n}\n\nexport function AssistantIdToAssistantType(id: string): AssistantType {\n switch (id) {\n case ASSISTANT_ID_CHAT_RECEPTIONIST:\n return AssistantType.ASSISTANT_TYPE_INBOX;\n case ASSISTANT_ID_CONTENT_CREATOR:\n return AssistantType.ASSISTANT_TYPE_SOCIAL_MARKETING;\n case ASSISTANT_ID_VOICE_RECEPTIONIST:\n return AssistantType.ASSISTANT_TYPE_VOICE_RECEPTIONIST;\n default:\n return AssistantType.ASSISTANT_TYPE_UNSPECIFIED;\n }\n}\n\nexport function AssistantIdToDefaultAssistantName(id: string): string {\n switch (id) {\n case ASSISTANT_ID_CHAT_RECEPTIONIST:\n return 'AI_ASSISTANT.WORKFORCE.DEFAULT_ASSISTANTS.CHAT_RECEPTIONIST.TITLE';\n case ASSISTANT_ID_CONTENT_CREATOR:\n return 'AI_ASSISTANT.WORKFORCE.DEFAULT_ASSISTANTS.CONTENT_CREATOR.TITLE';\n case ASSISTANT_ID_VOICE_RECEPTIONIST:\n return 'AI_ASSISTANT.WORKFORCE.DEFAULT_ASSISTANTS.VOICE_RECEPTIONIST.TITLE';\n case ASSISTANT_ID_REVIEW_MANAGER:\n return 'AI_ASSISTANT.WORKFORCE.DEFAULT_ASSISTANTS.REVIEW_MANAGER.TITLE';\n case ASSISTANT_ID_SEO_ANALYST:\n return 'AI_ASSISTANT.WORKFORCE.DEFAULT_ASSISTANTS.SEO_ANALYST.TITLE';\n case ASSISTANT_ID_SALES_COACH:\n return 'AI_ASSISTANT.WORKFORCE.DEFAULT_ASSISTANTS.SALES_COACH.TITLE';\n default:\n return '';\n }\n}\n\nconst voiceFamilies: AiVoiceFamily[] = [\n {\n name: 'OpenAI GPT-4o Realtime (Sep. 17 Preview)',\n provider: VendorModel.VENDOR_MODEL_OPEN_AI_REALTIME,\n description_key: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.FAMILY_DESCRIPTION.GPT_RT_PREVIEW_SEPT_2024',\n voices: [\n {\n name: 'Alloy',\n value: 'alloy',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.FEMALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl: 'https://storage.googleapis.com/voice-receptionist-preview-audios/Openai%20audios/alloy.wav',\n },\n {\n name: 'Echo',\n value: 'echo',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.MALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl: 'https://storage.googleapis.com/voice-receptionist-preview-audios/Openai%20audios/echo.wav',\n },\n {\n name: 'Shimmer',\n value: 'shimmer',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.FEMALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl: 'https://storage.googleapis.com/voice-receptionist-preview-audios/Openai%20audios/shimmer.wav',\n },\n ],\n },\n {\n name: 'OpenAI GPT-4o Realtime (Dec. 17 Preview)',\n provider: VendorModel.VENDOR_MODEL_OPEN_AI_REALTIME,\n description_key: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.FAMILY_DESCRIPTION.GPT_RT_PREVIEW_DEC_2024',\n voices: [\n {\n name: 'Ash',\n value: 'ash',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.MALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl: 'https://storage.googleapis.com/voice-receptionist-preview-audios/Openai%20audios/ash.wav',\n },\n {\n name: 'Ballad',\n value: 'ballad',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.MALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.UK',\n previewAudioUrl: 'https://storage.googleapis.com/voice-receptionist-preview-audios/Openai%20audios/ballad.wav',\n },\n {\n name: 'Coral',\n value: 'coral',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.FEMALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl: 'https://storage.googleapis.com/voice-receptionist-preview-audios/Openai%20audios/coral.wav',\n },\n {\n name: 'Sage',\n value: 'sage',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.FEMALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl: 'https://storage.googleapis.com/voice-receptionist-preview-audios/Openai%20audios/sage.wav',\n },\n {\n name: 'Verse',\n value: 'verse',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.MALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl: 'https://storage.googleapis.com/voice-receptionist-preview-audios/Openai%20audios/verse.wav',\n },\n ],\n },\n {\n name: 'Deepgram Aura',\n provider: VendorModel.VENDOR_MODEL_DEEPGRAM,\n description_key: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.FAMILY_DESCRIPTION.DEEPGRAM_AURA',\n voices: [\n {\n name: 'Asteria',\n value: 'aura-asteria-en',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.FEMALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl:\n 'https://storage.googleapis.com/voice-receptionist-preview-audios/Deepgram%20audios/Deepgram%20Asteria.mp3',\n },\n {\n name: 'Luna',\n value: 'aura-luna-en',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.FEMALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl:\n 'https://storage.googleapis.com/voice-receptionist-preview-audios/Deepgram%20audios/Deepgram%20Luna.mp3',\n },\n {\n name: 'Stella',\n value: 'aura-stella-en',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.FEMALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl:\n 'https://storage.googleapis.com/voice-receptionist-preview-audios/Deepgram%20audios/Deepgram%20Stella.mp3',\n },\n {\n name: 'Athena',\n value: 'aura-athena-en',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.FEMALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.UK',\n previewAudioUrl:\n 'https://storage.googleapis.com/voice-receptionist-preview-audios/Deepgram%20audios/Deepgram%20Athena.mp3',\n },\n {\n name: 'Hera',\n value: 'aura-hera-en',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.FEMALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl:\n 'https://storage.googleapis.com/voice-receptionist-preview-audios/Deepgram%20audios/Deepgram%20Hera.mp3',\n },\n {\n name: 'Orion',\n value: 'aura-orion-en',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.MALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl:\n 'https://storage.googleapis.com/voice-receptionist-preview-audios/Deepgram%20audios/Deepgram%20Orion.mp3',\n },\n {\n name: 'Arcas',\n value: 'aura-arcas-en',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.MALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl:\n 'https://storage.googleapis.com/voice-receptionist-preview-audios/Deepgram%20audios/Deepgram%20Arcas.mp3',\n },\n {\n name: 'Perseus',\n value: 'aura-perseus-en',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.MALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl:\n 'https://storage.googleapis.com/voice-receptionist-preview-audios/Deepgram%20audios/Deepgram%20Perseus.mp3',\n },\n {\n name: 'Angus',\n value: 'aura-angus-en',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.MALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.IRELAND',\n previewAudioUrl:\n 'https://storage.googleapis.com/voice-receptionist-preview-audios/Deepgram%20audios/Deepgram%20Angus.mp3',\n },\n {\n name: 'Orpheus',\n value: 'aura-orpheus-en',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.MALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl:\n 'https://storage.googleapis.com/voice-receptionist-preview-audios/Deepgram%20audios/Deepgram%20Orpheus.mp3',\n },\n {\n name: 'Helios',\n value: 'aura-helios-en',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.MALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.UK',\n previewAudioUrl:\n 'https://storage.googleapis.com/voice-receptionist-preview-audios/Deepgram%20audios/Deepgram%20Helios.mp3',\n },\n {\n name: 'Zeus',\n value: 'aura-zeus-en',\n gender: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.GENDER.MALE',\n region: 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.REGION.US',\n previewAudioUrl:\n 'https://storage.googleapis.com/voice-receptionist-preview-audios/Deepgram%20audios/Deepgram%20Zeus.mp3',\n },\n ],\n },\n];\n\nexport function getVoiceFamilies(deepgramEnabled: boolean): AiVoiceFamily[] {\n const results: AiVoiceFamily[] = [];\n for (const family of voiceFamilies) {\n if (family.provider === VendorModel.VENDOR_MODEL_OPEN_AI_REALTIME) {\n results.push(family);\n }\n if (family.provider === VendorModel.VENDOR_MODEL_DEEPGRAM && deepgramEnabled) {\n results.push(family);\n }\n }\n return results;\n}\n\nexport function familyFromVoice(voice?: string) {\n return voiceFamilies.find((family) => family.voices.find((v) => v.value === voice));\n}\n\nexport function voicesForFamily(family: string) {\n return voiceFamilies.find((f) => f.name === family)?.voices || [];\n}\n\nexport function previewUrlFromVoice(voice: string) {\n for (const family of voiceFamilies) {\n const foundVoice = family.voices.find((v) => v.value === voice);\n if (foundVoice) {\n return foundVoice.previewAudioUrl;\n }\n }\n return undefined;\n}\n\nexport function getNamespace(accountGroupId: string, partnerId: string): Namespace | undefined {\n if (accountGroupId) {\n return new Namespace({\n accountGroupNamespace: {\n accountGroupId: accountGroupId,\n },\n });\n } else if (partnerId) {\n return new Namespace({\n partnerNamespace: {\n partnerId: partnerId,\n },\n });\n }\n return;\n}\n","import { computed, inject, Injectable } from '@angular/core';\nimport {\n AI_ASSISTANTS,\n AI_MEETING_BOOKING,\n ASSISTANT_GOALS,\n NEW_CUSTOM_AI_GOALS,\n VOICE_AI,\n} from '../ai-assistant.constants';\nimport {\n AiAssistant,\n AiConnection,\n ConnectionType,\n CTAction,\n MY_LISTING_CONNECTION_NAME,\n} from '../interfaces/ai-assistant.interface';\n\nimport {\n ACCOUNT_GROUP_ID_TOKEN,\n AI_DEFAULT_CONNECTIONS_TOKEN,\n AI_DEFAULT_WORKFORCE_TOKEN,\n MARKET_ID_TOKEN,\n PARTNER_ID_TOKEN,\n} from '../tokens';\nimport {\n Assistant,\n AssistantApiService,\n AssistantInterface,\n AssistantType,\n Connection,\n ConnectionApiService,\n FunctionApiService,\n GetAssistantRequest,\n GoalApiService,\n GoalKey,\n GoalType,\n ListAssistantRequest,\n ListAssistantRequestFilters,\n NamespaceInterface,\n PromptModuleApiService,\n PromptModuleKey,\n} from '@vendasta/ai-assistants';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { catchError, combineLatest, firstValueFrom, map, Observable, of, shareReplay, switchMap } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\n\nimport { FeatureFlagService, FeatureFlagStatusInterface } from '@galaxy/partner';\nimport { AssistantIdToAssistantType, getNamespace } from './ai-assistant-utils';\nimport { isNotNullOrUndefined } from '@vendasta/rx-utils';\nimport { Router } from '@angular/router';\n\nconst ADDITIONAL_INSTRUCTIONS_GOAL_ID = 'AdditionalInstructions';\nconst ADDITIONAL_INSTRUCTIONS_PROMPT_MODULE_ID = 'AdditionalInstructions';\n\n@Injectable()\nexport class AiAssistantService {\n private readonly partnerId$ = inject(PARTNER_ID_TOKEN);\n private readonly accountGroupId$ = inject(ACCOUNT_GROUP_ID_TOKEN);\n private readonly accountGroupId = toSignal(this.accountGroupId$, { requireSync: true });\n private readonly marketId$ = inject(MARKET_ID_TOKEN);\n readonly defaultWorkforce$ = inject(AI_DEFAULT_WORKFORCE_TOKEN);\n\n readonly defaultConnections$ = inject(AI_DEFAULT_CONNECTIONS_TOKEN);\n\n private readonly aiConnectionApiService = inject(ConnectionApiService);\n private readonly aiAssistantApiService = inject(AssistantApiService);\n private readonly translateService = inject(TranslateService);\n private readonly featureFlagService = inject(FeatureFlagService);\n private readonly goalApiService = inject(GoalApiService);\n private readonly promptModuleApiService = inject(PromptModuleApiService);\n private readonly functionApiService = inject(FunctionApiService);\n private readonly router = inject(Router);\n\n private readonly $featureFlags = toSignal(\n combineLatest([this.partnerId$, this.marketId$]).pipe(\n switchMap(([partnerId, marketId]) =>\n this.featureFlagService.batchGetStatus(partnerId, marketId, [\n AI_ASSISTANTS,\n VOICE_AI,\n ASSISTANT_GOALS,\n AI_MEETING_BOOKING,\n NEW_CUSTOM_AI_GOALS,\n ]),\n ),\n shareReplay(1),\n ),\n { initialValue: {} as FeatureFlagStatusInterface },\n );\n\n public readonly $goalsDisabled = toSignal(\n this.accountGroupId$.pipe(\n switchMap((accountGroupId) => {\n if (!accountGroupId) {\n return of(false);\n }\n return this.goalApiService\n .goalsDisabledForAccountGroup({\n accountGroupId: accountGroupId,\n })\n .pipe(\n map((resp) => !!resp.goalsDisabled),\n catchError(() => of(false)),\n );\n }),\n shareReplay(1),\n ),\n { initialValue: false },\n );\n\n public readonly $isAiAssistantEnabled = computed(() => this.$featureFlags()[AI_ASSISTANTS]);\n public readonly $isVoiceAiEnabled = computed(() => this.$featureFlags()[VOICE_AI]);\n public readonly $isAssistantGoalsEnabled = computed(() => this.$featureFlags()[ASSISTANT_GOALS]);\n public readonly $isAIMeetingBookingEnabled = computed(() => this.$featureFlags()[AI_MEETING_BOOKING]);\n public readonly $isNewCustomAIGoalsEnabled = computed(() => this.$featureFlags()[NEW_CUSTOM_AI_GOALS]);\n\n activeConnectionsForAssistant(assistantId: string): Observable {\n return combineLatest([this.partnerId$, this.accountGroupId$]).pipe(\n switchMap(([partnerId, accountGroupId]) =>\n this.listConnectionsForAssistant(partnerId, accountGroupId, assistantId),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n getAssistant(partnerId: string, accountGroupId: string, assistantId: string): Observable {\n const req = new GetAssistantRequest({ id: assistantId });\n const namespace = getNamespace(accountGroupId, partnerId);\n if (namespace) {\n req.namespace = namespace;\n }\n\n return this.aiAssistantApiService.getAssistant(req).pipe(\n map((resp) => resp.assistant),\n catchError((err) => {\n console.error('Error getting AI assistant information', err);\n throw err;\n }),\n );\n }\n\n listAssistants(partnerId: string, accountGroupId: string, type?: AssistantType): Observable {\n const namespace = getNamespace(accountGroupId, partnerId);\n const req = new ListAssistantRequest();\n const filters = new ListAssistantRequestFilters();\n filters.type = type ?? AssistantType.ASSISTANT_TYPE_UNSPECIFIED;\n\n if (namespace) {\n filters.namespace = namespace;\n } else {\n throw new Error('No account group or partner ID found');\n }\n\n req.filters = filters;\n\n return this.aiAssistantApiService.listAssistant(req).pipe(\n map((resp) => resp.assistants),\n catchError((e) => {\n console.error('Error getting AI workforce', e);\n throw new Error('Error getting AI workforce');\n }),\n );\n }\n\n getDefaultAssistant(partnerId: string, accountGroupId: string, assistantId: string): Observable {\n const namespace = getNamespace(accountGroupId, partnerId);\n const type = AssistantIdToAssistantType(assistantId);\n\n return this.aiAssistantApiService\n .buildDefaultAssistant({\n id: assistantId,\n namespace: namespace,\n type: type,\n })\n .pipe(\n map((resp) => {\n return {\n assistant: resp.assistant,\n };\n }),\n catchError((err) => {\n throw new Error('Error getting default assistant', { cause: err });\n }),\n );\n }\n\n listConnections(\n partnerId: string,\n accountGroupId: string,\n includeAssistantKeys: boolean,\n ): Observable {\n const namespace = getNamespace(accountGroupId, partnerId);\n return this.defaultConnections$.pipe(\n switchMap((defaultAiConnections) =>\n this.aiConnectionApiService\n .listConnections({\n filters: {\n namespace: namespace,\n },\n includeAssistantKeys: includeAssistantKeys,\n })\n .pipe(\n map((resp): AiConnection[] => {\n const connections = resp?.connections || [];\n return connections.map((connection) => ({\n connection: connection,\n isDefault: false,\n cta: this.buildConnectionCTAFromUrl(connection),\n }));\n }),\n map((aiConnections) => {\n defaultAiConnections?.forEach((defaultAiConnection) => {\n const connection = aiConnections.find((c) => {\n if (defaultAiConnection.connection.name === MY_LISTING_CONNECTION_NAME) {\n return c.connection.name === defaultAiConnection.connection.name;\n }\n return (\n c.connection.connectionType === defaultAiConnection.connection.connectionType ||\n c.connection.name === defaultAiConnection.connection.name\n );\n });\n if (!connection) {\n // Default connections will only be added to the namespace if the connection type isn't in the existing connections\n aiConnections.push(defaultAiConnection);\n }\n });\n return aiConnections;\n }),\n catchError(() => {\n throw new Error('Error getting namespace connections');\n }),\n ),\n ),\n );\n }\n\n listConnectionsForAssistant(\n partnerId: string,\n accountGroupId: string,\n assistantId: string,\n ): Observable {\n return this.listConnections(partnerId, accountGroupId, true).pipe(\n map((aiConnections) => {\n const assistantType = AssistantIdToAssistantType(assistantId);\n\n // Only include connections that are associated with this assistant\n return aiConnections\n .filter((aiConnection) => {\n return aiConnection?.connection?.supportedAssistantTypes?.includes(assistantType);\n })\n .filter(isNotNullOrUndefined);\n }),\n );\n }\n\n listAllAssistantsAssociatedToConnection(\n partnerId: string | undefined,\n accountGroupId: string | undefined,\n connectionID: string,\n connectionType: ConnectionType,\n assistantType?: AssistantType,\n ): Observable {\n if (!connectionID) {\n throw new Error('Connection ID is required');\n }\n return this.aiAssistantApiService\n .listAllAssistantsAssociatedToConnection({\n connectionKey: {\n id: connectionID,\n namespace: getNamespace(accountGroupId, partnerId),\n connectionType: connectionType,\n },\n filters: {\n type: assistantType,\n },\n })\n .pipe(\n map((resp) => resp.assistants),\n catchError(() => {\n throw new Error('Error getting assistants associated to connection');\n }),\n );\n }\n\n buildAiKnowledgeAppConfigurationUrl(assistantId: string): Observable {\n return this.accountGroupId$.pipe(\n map((accountGroupId) => {\n if (accountGroupId) {\n return `/account/location/${accountGroupId}/ai/assistants/${assistantId}/edit`;\n }\n return `/ai/assistants/${assistantId}/edit`;\n }),\n );\n }\n\n buildAppId(assistantId?: string): string {\n return assistantId ? `APP-AI${assistantId}` : '';\n }\n\n buildAssistantConfigurationUrl(accountGroupId: string, assistantId: string): string {\n if (accountGroupId) {\n return `/account/location/${accountGroupId}/ai/assistants/${assistantId}/edit`;\n }\n return `/ai/assistants/${assistantId}/edit`;\n }\n\n hydrateAssistantWithDefaultInfo(assistant: AssistantInterface, defaultAssistants: AiAssistant[]): AiAssistant | null {\n if (!assistant) return null;\n\n const defaultInfo = defaultAssistants?.find((defaultAssistant) => defaultAssistant.assistant.id === assistant.id);\n if (!defaultInfo) {\n return {\n assistant: assistant,\n };\n }\n const aiAssistant = structuredClone(defaultInfo);\n aiAssistant.isDefault = false;\n\n const defaultName = aiAssistant.assistant.name ?? '';\n const translatedName = this.translateService.instant(defaultName);\n if (!assistant.name) {\n assistant.name = translatedName;\n } else if (translatedName.toLowerCase() !== assistant.name.toLowerCase()) {\n aiAssistant.subtitleKey = defaultName;\n }\n aiAssistant.assistant = assistant;\n return aiAssistant;\n }\n\n protected buildConnectionCTAFromUrl(connection: Connection): CTAction {\n const configurationUrl = connection.configurationUrl;\n if (!configurationUrl) {\n return {};\n }\n\n const cta: CTAction = {\n label: 'AI_ASSISTANT.SETTINGS.SETTINGS',\n action: {\n url: configurationUrl,\n relativeRoute: false,\n showButton: true,\n },\n };\n\n if (connection.namespace?.accountGroupNamespace) {\n cta.action.relativeRoute = true;\n }\n\n return cta;\n }\n\n async upsertAdditionalInstructions(\n assistantId: string | undefined,\n namespace: NamespaceInterface | undefined,\n additionalInstructions: string,\n ): Promise {\n if (!assistantId) {\n throw new Error('Assistant ID is required to upsert additional instructions');\n }\n\n if (!namespace) {\n throw new Error('Namespace is required to upsert additional instructions');\n }\n\n try {\n const promptModule = await firstValueFrom(\n this.promptModuleApiService\n .get({\n id: this.buildSpecificID(ADDITIONAL_INSTRUCTIONS_PROMPT_MODULE_ID, assistantId),\n namespace: namespace,\n })\n .pipe(\n map((resp) => resp.promptModule),\n catchError((err) => {\n if (err.status === 404) {\n return of(null);\n }\n throw err;\n }),\n ),\n );\n if (!promptModule) {\n await firstValueFrom(\n this.promptModuleApiService\n .create({\n id: this.buildSpecificID(ADDITIONAL_INSTRUCTIONS_PROMPT_MODULE_ID, assistantId),\n namespace: namespace,\n name: 'Additional Instructions',\n description: 'User specific instructions for the AI Employee',\n content: additionalInstructions,\n })\n .pipe(\n catchError((err) => {\n throw new Error('Failed to create additional instructions prompt module', { cause: err });\n }),\n ),\n );\n } else {\n await firstValueFrom(\n this.promptModuleApiService\n .createVersion({\n id: this.buildSpecificID(ADDITIONAL_INSTRUCTIONS_PROMPT_MODULE_ID, assistantId),\n namespace: namespace,\n content: additionalInstructions,\n options: {\n shouldDeploy: true,\n },\n })\n .pipe(\n catchError((err) => {\n throw new Error('Failed to create additional instructions prompt module version', { cause: err });\n }),\n ),\n );\n }\n\n const goal = await firstValueFrom(\n this.goalApiService\n .get({ id: this.buildSpecificID(ADDITIONAL_INSTRUCTIONS_GOAL_ID, assistantId), namespace: namespace })\n .pipe(\n map((resp) => resp.goal),\n catchError((err) => {\n if (err.status === 404) {\n return of(null);\n }\n throw err;\n }),\n ),\n );\n if (!goal) {\n await firstValueFrom(\n this.goalApiService\n .upsert({\n goal: {\n id: this.buildSpecificID(ADDITIONAL_INSTRUCTIONS_GOAL_ID, assistantId),\n namespace: namespace,\n name: 'Additional Instructions',\n description: 'User specific goal for the AI Employee',\n type: GoalType.GOAL_TYPE_CUSTOM,\n promptModules: [\n new PromptModuleKey({\n id: this.buildSpecificID(ADDITIONAL_INSTRUCTIONS_PROMPT_MODULE_ID, assistantId),\n namespace: namespace,\n }),\n ],\n },\n })\n .pipe(\n catchError((err) => {\n throw new Error('Failed to upsert additional instructions goal', { cause: err });\n }),\n ),\n );\n }\n } catch (err) {\n throw new Error('Failed to upsert additional instructions goal', { cause: err });\n }\n\n return new GoalKey({\n id: this.buildSpecificID(ADDITIONAL_INSTRUCTIONS_GOAL_ID, assistantId),\n namespace: namespace,\n });\n }\n\n private buildSpecificID(defaultID: string, assistantId: string): string {\n return `${defaultID}-${assistantId}`;\n }\n\n getPromptModuleVersion(id: string, namespace: NamespaceInterface, version: string): Observable {\n return this.promptModuleApiService.getVersion({ id: id, namespace: namespace, version: version }).pipe(\n map((resp) => resp.promptModuleVersion),\n map((promptModuleVersion) => promptModuleVersion?.content || ''),\n );\n }\n}\n","export const ChatReceptionistAvatar = `\n\n\n\n\n\n\n\n\n\n\n\n`;\n\nexport const VoiceReceptionistAvatar = `\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n`;\n\nexport const ContentWriterAvatar = `\n\n\n\n\n\n\n\n\n\n\n\n`;\n\nexport const ReviewManagerAvatar = `\n\n\n\n\n\n\n\n\n\n\n\n`;\n\nexport const SalesCoachAvatar = `\n\n\n\n\n\n\n`;\n\nexport const SEOAnalystAvatar = `\n\n\n\n\n\n\n\n\n\n\n\n\n\n`;\n\nexport const webchatIcon = `\n \n \n \n \n`;\n\nexport const smsIcon = `\n`;\n\nexport const voiceIcon = `\n x\n \n \n \n`;\n\nexport const whatsappIcon = `\n\n\n\n\n\n\n\n\n\n\n`;\n","import { ConfigApiService, OwnerType, ParticipantType, SmsService } from '@vendasta/smsv2';\nimport { combineLatest, map, shareReplay, switchMap } from 'rxjs';\nimport { inject, Injectable } from '@angular/core';\nimport { ACCOUNT_GROUP_ID_TOKEN, PARTNER_ID_TOKEN } from '../tokens';\n\n@Injectable()\nexport class SmsDetailsService {\n private readonly accountGroupId$ = inject(ACCOUNT_GROUP_ID_TOKEN);\n private readonly partnerId$ = inject(PARTNER_ID_TOKEN);\n private readonly smsService = inject(SmsService);\n private readonly configApiService = inject(ConfigApiService);\n\n public readonly phoneNumber$ = combineLatest([this.accountGroupId$, this.partnerId$]).pipe(\n switchMap(([accountGroupId, partnerId]) => {\n let ownerId = '',\n participantType = ParticipantType.PARTICIPANT_TYPE_UNKNOWN;\n\n if (accountGroupId) {\n ownerId = accountGroupId;\n participantType = ParticipantType.PARTICIPANT_TYPE_ACCOUNT_GROUP;\n } else if (partnerId) {\n ownerId = partnerId;\n participantType = ParticipantType.PARTICIPANT_TYPE_PARTNER;\n }\n\n return this.smsService.getAccountInfo({\n internalId: ownerId,\n type: participantType,\n });\n }),\n map((accountInfo) => accountInfo?.phoneNumber),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n public readonly isRoutingToVoiceAi$ = combineLatest([this.accountGroupId$, this.partnerId$]).pipe(\n switchMap(([accountGroupId, partnerId]) => {\n return this.configApiService.getPhoneNumberConfig({\n ownerId: accountGroupId || partnerId,\n ownerType: accountGroupId ? OwnerType.OWNER_TYPE_ACCOUNT_GROUP : OwnerType.OWNER_TYPE_PARTNER,\n });\n }),\n map((response) => !!response.phoneNumberConfig?.voiceAi?.enabled),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n","import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\nimport { map, mapTo, share, switchMap } from 'rxjs/operators';\nimport { EMPTY, throwError, of } from 'rxjs';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Archived = /*#__PURE__*/function (Archived) {\n Archived[Archived[\"ARCHIVED_ANY\"] = 0] = \"ARCHIVED_ANY\";\n Archived[Archived[\"ARCHIVED_YES\"] = 1] = \"ARCHIVED_YES\";\n Archived[Archived[\"ARCHIVED_NO\"] = 2] = \"ARCHIVED_NO\";\n return Archived;\n}(Archived || {});\nvar Campaign = /*#__PURE__*/function (Campaign) {\n Campaign[Campaign[\"CAMPAIGN_ANY\"] = 0] = \"CAMPAIGN_ANY\";\n Campaign[Campaign[\"CAMPAIGN_ON\"] = 1] = \"CAMPAIGN_ON\";\n Campaign[Campaign[\"CAMPAIGN_OFF\"] = 2] = \"CAMPAIGN_OFF\";\n return Campaign;\n}(Campaign || {});\nvar LifecycleStage = /*#__PURE__*/function (LifecycleStage) {\n LifecycleStage[LifecycleStage[\"LIFECYCLE_STAGE_UNSET\"] = 0] = \"LIFECYCLE_STAGE_UNSET\";\n LifecycleStage[LifecycleStage[\"LIFECYCLE_STAGE_LEAD\"] = 1] = \"LIFECYCLE_STAGE_LEAD\";\n LifecycleStage[LifecycleStage[\"LIFECYCLE_STAGE_PROSPECT\"] = 2] = \"LIFECYCLE_STAGE_PROSPECT\";\n LifecycleStage[LifecycleStage[\"LIFECYCLE_STAGE_CUSTOMER\"] = 3] = \"LIFECYCLE_STAGE_CUSTOMER\";\n return LifecycleStage;\n}(LifecycleStage || {});\nvar Snapshot = /*#__PURE__*/function (Snapshot) {\n Snapshot[Snapshot[\"SNAPSHOT_ANY\"] = 0] = \"SNAPSHOT_ANY\";\n Snapshot[Snapshot[\"SNAPSHOT_SENT\"] = 1] = \"SNAPSHOT_SENT\";\n Snapshot[Snapshot[\"SNAPSHOT_NOT_SENT\"] = 2] = \"SNAPSHOT_NOT_SENT\";\n return Snapshot;\n}(Snapshot || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ActionCategory = /*#__PURE__*/function (ActionCategory) {\n ActionCategory[ActionCategory[\"ACTION_CATEGORY_UNKNOWN\"] = 0] = \"ACTION_CATEGORY_UNKNOWN\";\n ActionCategory[ActionCategory[\"ACTION_CATEGORY_CLICK\"] = 1] = \"ACTION_CATEGORY_CLICK\";\n ActionCategory[ActionCategory[\"ACTION_CATEGORY_VIEW\"] = 2] = \"ACTION_CATEGORY_VIEW\";\n ActionCategory[ActionCategory[\"ACTION_CATEGORY_LINGER\"] = 3] = \"ACTION_CATEGORY_LINGER\";\n ActionCategory[ActionCategory[\"ACTION_CATEGORY_TYPED\"] = 4] = \"ACTION_CATEGORY_TYPED\";\n ActionCategory[ActionCategory[\"ACTION_CATEGORY_PURCHASED\"] = 5] = \"ACTION_CATEGORY_PURCHASED\";\n ActionCategory[ActionCategory[\"ACTION_CATEGORY_ADDED_TO_CART\"] = 6] = \"ACTION_CATEGORY_ADDED_TO_CART\";\n return ActionCategory;\n}(ActionCategory || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar TicketPriority = /*#__PURE__*/function (TicketPriority) {\n TicketPriority[TicketPriority[\"TICKET_PRIORITY_UNSET\"] = 0] = \"TICKET_PRIORITY_UNSET\";\n TicketPriority[TicketPriority[\"TICKET_PRIORITY_LOW\"] = 1] = \"TICKET_PRIORITY_LOW\";\n TicketPriority[TicketPriority[\"TICKET_PRIORITY_MEDIUM\"] = 2] = \"TICKET_PRIORITY_MEDIUM\";\n TicketPriority[TicketPriority[\"TICKET_PRIORITY_HIGH\"] = 3] = \"TICKET_PRIORITY_HIGH\";\n TicketPriority[TicketPriority[\"TICKET_PRIORITY_URGENT\"] = 4] = \"TICKET_PRIORITY_URGENT\";\n return TicketPriority;\n}(TicketPriority || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar CriteriaMatchType = /*#__PURE__*/function (CriteriaMatchType) {\n CriteriaMatchType[CriteriaMatchType[\"CRITERIA_MATCH_TYPE_ALL\"] = 0] = \"CRITERIA_MATCH_TYPE_ALL\";\n CriteriaMatchType[CriteriaMatchType[\"CRITERIA_MATCH_TYPE_ANY\"] = 1] = \"CRITERIA_MATCH_TYPE_ANY\";\n return CriteriaMatchType;\n}(CriteriaMatchType || {});\nvar TagMatchType = /*#__PURE__*/function (TagMatchType) {\n TagMatchType[TagMatchType[\"TAG_MATCH_TYPE_ALL\"] = 0] = \"TAG_MATCH_TYPE_ALL\";\n TagMatchType[TagMatchType[\"TAG_MATCH_TYPE_ANY\"] = 1] = \"TAG_MATCH_TYPE_ANY\";\n return TagMatchType;\n}(TagMatchType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Frequency = /*#__PURE__*/function (Frequency) {\n Frequency[Frequency[\"FREQUENCY_ONETIME\"] = 0] = \"FREQUENCY_ONETIME\";\n Frequency[Frequency[\"FREQUENCY_DAILY\"] = 1] = \"FREQUENCY_DAILY\";\n Frequency[Frequency[\"FREQUENCY_WEEKLY\"] = 2] = \"FREQUENCY_WEEKLY\";\n Frequency[Frequency[\"FREQUENCY_BIWEEKLY\"] = 3] = \"FREQUENCY_BIWEEKLY\";\n Frequency[Frequency[\"FREQUENCY_MONTHLY\"] = 4] = \"FREQUENCY_MONTHLY\";\n Frequency[Frequency[\"FREQUENCY_YEARLY\"] = 5] = \"FREQUENCY_YEARLY\";\n return Frequency;\n}(Frequency || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Currency = /*#__PURE__*/function (Currency) {\n Currency[Currency[\"USD\"] = 0] = \"USD\";\n Currency[Currency[\"CAD\"] = 1] = \"CAD\";\n Currency[Currency[\"EUR\"] = 2] = \"EUR\";\n Currency[Currency[\"AUD\"] = 3] = \"AUD\";\n Currency[Currency[\"GBP\"] = 4] = \"GBP\";\n Currency[Currency[\"NZD\"] = 5] = \"NZD\";\n Currency[Currency[\"ZAR\"] = 6] = \"ZAR\";\n return Currency;\n}(Currency || {});\nvar DurationPeriod = /*#__PURE__*/function (DurationPeriod) {\n DurationPeriod[DurationPeriod[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n DurationPeriod[DurationPeriod[\"MONTH\"] = 1] = \"MONTH\";\n DurationPeriod[DurationPeriod[\"YEAR\"] = 2] = \"YEAR\";\n DurationPeriod[DurationPeriod[\"DAY\"] = 3] = \"DAY\";\n DurationPeriod[DurationPeriod[\"WEEK\"] = 4] = \"WEEK\";\n return DurationPeriod;\n}(DurationPeriod || {});\nvar RevenuePeriod = /*#__PURE__*/function (RevenuePeriod) {\n RevenuePeriod[RevenuePeriod[\"ONETIME\"] = 0] = \"ONETIME\";\n RevenuePeriod[RevenuePeriod[\"DAILY\"] = 1] = \"DAILY\";\n RevenuePeriod[RevenuePeriod[\"WEEKLY\"] = 2] = \"WEEKLY\";\n RevenuePeriod[RevenuePeriod[\"BIWEEKLY\"] = 3] = \"BIWEEKLY\";\n RevenuePeriod[RevenuePeriod[\"MONTHLY\"] = 4] = \"MONTHLY\";\n RevenuePeriod[RevenuePeriod[\"YEARLY\"] = 5] = \"YEARLY\";\n return RevenuePeriod;\n}(RevenuePeriod || {});\n// *********************************\n\nfunction enumStringToValue$a(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Salesperson {\n static fromProto(proto) {\n let m = new Salesperson();\n m = Object.assign(m, proto);\n if (proto.lastLogin) {\n m.lastLogin = new Date(proto.lastLogin);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salespersonId !== 'undefined') {\n toReturn['salespersonId'] = this.salespersonId;\n }\n if (typeof this.firstName !== 'undefined') {\n toReturn['firstName'] = this.firstName;\n }\n if (typeof this.lastName !== 'undefined') {\n toReturn['lastName'] = this.lastName;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n if (typeof this.countryCode !== 'undefined') {\n toReturn['countryCode'] = this.countryCode;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.photoUrlHttps !== 'undefined') {\n toReturn['photoUrlHttps'] = this.photoUrlHttps;\n }\n if (typeof this.lastLogin !== 'undefined' && this.lastLogin !== null) {\n toReturn['lastLogin'] = 'toApiJson' in this.lastLogin ? this.lastLogin.toApiJson() : this.lastLogin;\n }\n if (typeof this.jobTitle !== 'undefined') {\n toReturn['jobTitle'] = this.jobTitle;\n }\n if (typeof this.isSalesManager !== 'undefined') {\n toReturn['isSalesManager'] = this.isSalesManager;\n }\n if (typeof this.meetingBookingUrl !== 'undefined') {\n toReturn['meetingBookingUrl'] = this.meetingBookingUrl;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$9(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass SalesTeam {\n static fromProto(proto) {\n let m = new SalesTeam();\n m = Object.assign(m, proto);\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.teamName !== 'undefined') {\n toReturn['teamName'] = this.teamName;\n }\n if (typeof this.groupId !== 'undefined') {\n toReturn['groupId'] = this.groupId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$8(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass SalesActivity {\n static fromProto(proto) {\n let m = new SalesActivity();\n m = Object.assign(m, proto);\n if (proto.key) {\n m.key = SalesActivityKey.fromProto(proto.key);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.lastEdited) {\n m.lastEdited = new Date(proto.lastEdited);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined' && this.key !== null) {\n toReturn['key'] = 'toApiJson' in this.key ? this.key.toApiJson() : this.key;\n }\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.salespersonId !== 'undefined') {\n toReturn['salespersonId'] = this.salespersonId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.salesStatus !== 'undefined') {\n toReturn['salesStatus'] = this.salesStatus;\n }\n if (typeof this.previousSalesStatus !== 'undefined') {\n toReturn['previousSalesStatus'] = this.previousSalesStatus;\n }\n if (typeof this.salespersonAction !== 'undefined') {\n toReturn['salespersonAction'] = this.salespersonAction;\n }\n if (typeof this.customActionName !== 'undefined') {\n toReturn['customActionName'] = this.customActionName;\n }\n if (typeof this.productName !== 'undefined') {\n toReturn['productName'] = this.productName;\n }\n if (typeof this.productPrice !== 'undefined') {\n toReturn['productPrice'] = this.productPrice;\n }\n if (typeof this.connected !== 'undefined') {\n toReturn['connected'] = this.connected;\n }\n if (typeof this.notes !== 'undefined') {\n toReturn['notes'] = this.notes;\n }\n if (typeof this.closedLostReason !== 'undefined') {\n toReturn['closedLostReason'] = this.closedLostReason;\n }\n if (typeof this.audioKey !== 'undefined') {\n toReturn['audioKey'] = this.audioKey;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.lastEdited !== 'undefined' && this.lastEdited !== null) {\n toReturn['lastEdited'] = 'toApiJson' in this.lastEdited ? this.lastEdited.toApiJson() : this.lastEdited;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n if (typeof this.opportunityName !== 'undefined') {\n toReturn['opportunityName'] = this.opportunityName;\n }\n if (typeof this.salesPersonName !== 'undefined') {\n toReturn['salesPersonName'] = this.salesPersonName;\n }\n return toReturn;\n }\n}\nclass SalesActivityKey {\n static fromProto(proto) {\n let m = new SalesActivityKey();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salesActivityId !== 'undefined') {\n toReturn['salesActivityId'] = this.salesActivityId;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$7(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Business {\n static fromProto(proto) {\n let m = new Business();\n m = Object.assign(m, proto);\n if (proto.hotness) {\n m.hotness = parseInt(proto.hotness, 10);\n }\n if (proto.lastSalesActivityDate) {\n m.lastSalesActivityDate = new Date(proto.lastSalesActivityDate);\n }\n if (proto.lastCustomerActivityDate) {\n m.lastCustomerActivityDate = new Date(proto.lastCustomerActivityDate);\n }\n if (proto.latestSnapshotExpiry) {\n m.latestSnapshotExpiry = new Date(proto.latestSnapshotExpiry);\n }\n if (proto.lastConnectedDate) {\n m.lastConnectedDate = new Date(proto.lastConnectedDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.hotness !== 'undefined') {\n toReturn['hotness'] = this.hotness;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.zip !== 'undefined') {\n toReturn['zip'] = this.zip;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.salespersonId !== 'undefined') {\n toReturn['salespersonId'] = this.salespersonId;\n }\n if (typeof this.lastSalesActivityDate !== 'undefined' && this.lastSalesActivityDate !== null) {\n toReturn['lastSalesActivityDate'] = 'toApiJson' in this.lastSalesActivityDate ? this.lastSalesActivityDate.toApiJson() : this.lastSalesActivityDate;\n }\n if (typeof this.lastCustomerActivityDate !== 'undefined' && this.lastCustomerActivityDate !== null) {\n toReturn['lastCustomerActivityDate'] = 'toApiJson' in this.lastCustomerActivityDate ? this.lastCustomerActivityDate.toApiJson() : this.lastCustomerActivityDate;\n }\n if (typeof this.salesStatus !== 'undefined') {\n toReturn['salesStatus'] = this.salesStatus;\n }\n if (typeof this.isRead !== 'undefined') {\n toReturn['isRead'] = this.isRead;\n }\n if (typeof this.salesPersonAction !== 'undefined') {\n toReturn['salesPersonAction'] = this.salesPersonAction;\n }\n if (typeof this.latestSnapshotExpiry !== 'undefined' && this.latestSnapshotExpiry !== null) {\n toReturn['latestSnapshotExpiry'] = 'toApiJson' in this.latestSnapshotExpiry ? this.latestSnapshotExpiry.toApiJson() : this.latestSnapshotExpiry;\n }\n if (typeof this.snapshotOrCampaignEmailStatus !== 'undefined') {\n toReturn['snapshotOrCampaignEmailStatus'] = this.snapshotOrCampaignEmailStatus;\n }\n if (typeof this.activityType !== 'undefined') {\n toReturn['activityType'] = this.activityType;\n }\n if (typeof this.lastConnectedDate !== 'undefined' && this.lastConnectedDate !== null) {\n toReturn['lastConnectedDate'] = 'toApiJson' in this.lastConnectedDate ? this.lastConnectedDate.toApiJson() : this.lastConnectedDate;\n }\n if (typeof this.lifecycleStage !== 'undefined') {\n toReturn['lifecycleStage'] = this.lifecycleStage;\n }\n return toReturn;\n }\n}\nclass BusinessPagedResponseMetadata {\n static fromProto(proto) {\n let m = new BusinessPagedResponseMetadata();\n m = Object.assign(m, proto);\n if (proto.totalResults) {\n m.totalResults = parseInt(proto.totalResults, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n if (typeof this.totalResults !== 'undefined') {\n toReturn['totalResults'] = this.totalResults;\n }\n return toReturn;\n }\n}\nclass BusinessSearchFilters {\n static fromProto(proto) {\n let m = new BusinessSearchFilters();\n m = Object.assign(m, proto);\n if (proto.fromDate) {\n m.fromDate = new Date(proto.fromDate);\n }\n if (proto.toDate) {\n m.toDate = new Date(proto.toDate);\n }\n if (proto.archived) {\n m.archived = enumStringToValue$7(Archived, proto.archived);\n }\n if (proto.onCampaign) {\n m.onCampaign = enumStringToValue$7(Campaign, proto.onCampaign);\n }\n if (proto.snapshotSent) {\n m.snapshotSent = enumStringToValue$7(Snapshot, proto.snapshotSent);\n }\n if (proto.lifecycleStage) {\n m.lifecycleStage = enumStringToValue$7(LifecycleStage, proto.lifecycleStage);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.salesStatuses !== 'undefined') {\n toReturn['salesStatuses'] = this.salesStatuses;\n }\n if (typeof this.salesAction !== 'undefined') {\n toReturn['salesAction'] = this.salesAction;\n }\n if (typeof this.fromDate !== 'undefined' && this.fromDate !== null) {\n toReturn['fromDate'] = 'toApiJson' in this.fromDate ? this.fromDate.toApiJson() : this.fromDate;\n }\n if (typeof this.toDate !== 'undefined' && this.toDate !== null) {\n toReturn['toDate'] = 'toApiJson' in this.toDate ? this.toDate.toApiJson() : this.toDate;\n }\n if (typeof this.archived !== 'undefined') {\n toReturn['archived'] = this.archived;\n }\n if (typeof this.accountTags !== 'undefined') {\n toReturn['accountTags'] = this.accountTags;\n }\n if (typeof this.businessCategories !== 'undefined') {\n toReturn['businessCategories'] = this.businessCategories;\n }\n if (typeof this.onCampaign !== 'undefined') {\n toReturn['onCampaign'] = this.onCampaign;\n }\n if (typeof this.snapshotSent !== 'undefined') {\n toReturn['snapshotSent'] = this.snapshotSent;\n }\n if (typeof this.query !== 'undefined') {\n toReturn['query'] = this.query;\n }\n if (typeof this.assignees !== 'undefined') {\n toReturn['assignees'] = this.assignees;\n }\n if (typeof this.goal !== 'undefined') {\n toReturn['goal'] = this.goal;\n }\n if (typeof this.trainingPriorities !== 'undefined') {\n toReturn['trainingPriorities'] = this.trainingPriorities;\n }\n if (typeof this.customFieldPartnerId !== 'undefined') {\n toReturn['customFieldPartnerId'] = this.customFieldPartnerId;\n }\n if (typeof this.lifecycleStage !== 'undefined') {\n toReturn['lifecycleStage'] = this.lifecycleStage;\n }\n return toReturn;\n }\n}\nclass BusinessSearchSortOptions {\n static fromProto(proto) {\n let m = new BusinessSearchSortOptions();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sortKey !== 'undefined') {\n toReturn['sortKey'] = this.sortKey;\n }\n if (typeof this.sortAscending !== 'undefined') {\n toReturn['sortAscending'] = this.sortAscending;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$6(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass BulkUploadUserActionsRequest {\n static fromProto(proto) {\n let m = new BulkUploadUserActionsRequest();\n m = Object.assign(m, proto);\n if (proto.userActions) {\n m.userActions = proto.userActions.map(UserActionsRequest.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.userActions !== 'undefined' && this.userActions !== null) {\n toReturn['userActions'] = 'toApiJson' in this.userActions ? this.userActions.toApiJson() : this.userActions;\n }\n return toReturn;\n }\n}\nclass GetUserActionsRequest {\n static fromProto(proto) {\n let m = new GetUserActionsRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass UploadUserActionForCustomerIDRequest {\n static fromProto(proto) {\n let m = new UploadUserActionForCustomerIDRequest();\n m = Object.assign(m, proto);\n if (proto.category) {\n m.category = enumStringToValue$6(ActionCategory, proto.category);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.category !== 'undefined') {\n toReturn['category'] = this.category;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass UserAction {\n static fromProto(proto) {\n let m = new UserAction();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.category) {\n m.category = enumStringToValue$6(ActionCategory, proto.category);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.category !== 'undefined') {\n toReturn['category'] = this.category;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass UserActionsPagedResponseMetadata {\n static fromProto(proto) {\n let m = new UserActionsPagedResponseMetadata();\n m = Object.assign(m, proto);\n if (proto.totalResults) {\n m.totalResults = parseInt(proto.totalResults, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n if (typeof this.totalResults !== 'undefined') {\n toReturn['totalResults'] = this.totalResults;\n }\n return toReturn;\n }\n}\nclass UserActionsRequest {\n static fromProto(proto) {\n let m = new UserActionsRequest();\n m = Object.assign(m, proto);\n if (proto.category) {\n m.category = enumStringToValue$6(ActionCategory, proto.category);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.category !== 'undefined') {\n toReturn['category'] = this.category;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass UserActionsResponse {\n static fromProto(proto) {\n let m = new UserActionsResponse();\n m = Object.assign(m, proto);\n if (proto.userActions) {\n m.userActions = proto.userActions.map(UserAction.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = UserActionsPagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.userActions !== 'undefined' && this.userActions !== null) {\n toReturn['userActions'] = 'toApiJson' in this.userActions ? this.userActions.toApiJson() : this.userActions;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$5(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Contact {\n static fromProto(proto) {\n let m = new Contact();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.contactId !== 'undefined') {\n toReturn['contactId'] = this.contactId;\n }\n if (typeof this.firstName !== 'undefined') {\n toReturn['firstName'] = this.firstName;\n }\n if (typeof this.lastName !== 'undefined') {\n toReturn['lastName'] = this.lastName;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.phoneExtension !== 'undefined') {\n toReturn['phoneExtension'] = this.phoneExtension;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.notes !== 'undefined') {\n toReturn['notes'] = this.notes;\n }\n if (typeof this.vbcUserId !== 'undefined') {\n toReturn['vbcUserId'] = this.vbcUserId;\n }\n if (typeof this.deleted !== 'undefined') {\n toReturn['deleted'] = this.deleted;\n }\n if (typeof this.deletedDate !== 'undefined') {\n toReturn['deletedDate'] = this.deletedDate;\n }\n if (typeof this.created !== 'undefined') {\n toReturn['created'] = this.created;\n }\n if (typeof this.updated !== 'undefined') {\n toReturn['updated'] = this.updated;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$4(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Attachment {\n static fromProto(proto) {\n let m = new Attachment();\n m = Object.assign(m, proto);\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.thumbnailUrl !== 'undefined') {\n toReturn['thumbnailUrl'] = this.thumbnailUrl;\n }\n return toReturn;\n }\n}\nclass Conversation {\n static fromProto(proto) {\n let m = new Conversation();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.attachments) {\n m.attachments = proto.attachments.map(Attachment.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.message !== 'undefined') {\n toReturn['message'] = this.message;\n }\n if (typeof this.fromEmail !== 'undefined') {\n toReturn['fromEmail'] = this.fromEmail;\n }\n if (typeof this.toEmails !== 'undefined') {\n toReturn['toEmails'] = this.toEmails;\n }\n if (typeof this.ticketId !== 'undefined') {\n toReturn['ticketId'] = this.ticketId;\n }\n if (typeof this.attachments !== 'undefined' && this.attachments !== null) {\n toReturn['attachments'] = 'toApiJson' in this.attachments ? this.attachments.toApiJson() : this.attachments;\n }\n return toReturn;\n }\n}\nclass Pagination {\n static fromProto(proto) {\n let m = new Pagination();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pageIndex !== 'undefined') {\n toReturn['pageIndex'] = this.pageIndex;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass Ticket {\n static fromProto(proto) {\n let m = new Ticket();\n m = Object.assign(m, proto);\n if (proto.id) {\n m.id = parseInt(proto.id, 10);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.requested) {\n m.requested = new Date(proto.requested);\n }\n if (proto.requesterId) {\n m.requesterId = parseInt(proto.requesterId, 10);\n }\n if (proto.responderId) {\n m.responderId = parseInt(proto.responderId, 10);\n }\n if (proto.statusId) {\n m.statusId = parseInt(proto.statusId, 10);\n }\n if (proto.sourceId) {\n m.sourceId = parseInt(proto.sourceId, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.requested !== 'undefined' && this.requested !== null) {\n toReturn['requested'] = 'toApiJson' in this.requested ? this.requested.toApiJson() : this.requested;\n }\n if (typeof this.requesterId !== 'undefined') {\n toReturn['requesterId'] = this.requesterId;\n }\n if (typeof this.responderId !== 'undefined') {\n toReturn['responderId'] = this.responderId;\n }\n if (typeof this.subject !== 'undefined') {\n toReturn['subject'] = this.subject;\n }\n if (typeof this.statusId !== 'undefined') {\n toReturn['statusId'] = this.statusId;\n }\n if (typeof this.sourceId !== 'undefined') {\n toReturn['sourceId'] = this.sourceId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AutoAssignCriteriaAccountOriginCriteria {\n static fromProto(proto) {\n let m = new AutoAssignCriteriaAccountOriginCriteria();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.origin !== 'undefined') {\n toReturn['origin'] = this.origin;\n }\n return toReturn;\n }\n}\nclass AddContactToCampaignRequest {\n static fromProto(proto) {\n let m = new AddContactToCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.contact) {\n m.contact = AddContactToCampaignRequestRecipient.fromProto(proto.contact);\n }\n if (proto.sender) {\n m.sender = AddContactToCampaignRequestSender.fromProto(proto.sender);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.contact !== 'undefined' && this.contact !== null) {\n toReturn['contact'] = 'toApiJson' in this.contact ? this.contact.toApiJson() : this.contact;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n return toReturn;\n }\n}\nclass AutoAssignRuleAppKey {\n static fromProto(proto) {\n let m = new AutoAssignRuleAppKey();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.appId !== 'undefined') {\n toReturn['appId'] = this.appId;\n }\n if (typeof this.editionId !== 'undefined') {\n toReturn['editionId'] = this.editionId;\n }\n return toReturn;\n }\n}\nclass AssignSalesTaskRequest {\n static fromProto(proto) {\n let m = new AssignSalesTaskRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.taskId !== 'undefined') {\n toReturn['taskId'] = this.taskId;\n }\n if (typeof this.salespersonUserId !== 'undefined') {\n toReturn['salespersonUserId'] = this.salespersonUserId;\n }\n return toReturn;\n }\n}\nclass AutoAssignCriteria {\n static fromProto(proto) {\n let m = new AutoAssignCriteria();\n m = Object.assign(m, proto);\n if (proto.locationCriteria) {\n m.locationCriteria = AutoAssignCriteriaLocationCriteria.fromProto(proto.locationCriteria);\n }\n if (proto.categoryCriteria) {\n m.categoryCriteria = AutoAssignCriteriaCategoryCriteria.fromProto(proto.categoryCriteria);\n }\n if (proto.tagCriteria) {\n m.tagCriteria = AutoAssignCriteriaTagCriteria.fromProto(proto.tagCriteria);\n }\n if (proto.conversionPointCriteria) {\n m.conversionPointCriteria = AutoAssignCriteriaConversionPointCriteria.fromProto(proto.conversionPointCriteria);\n }\n if (proto.accountOriginCriteria) {\n m.accountOriginCriteria = AutoAssignCriteriaAccountOriginCriteria.fromProto(proto.accountOriginCriteria);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.locationCriteria !== 'undefined' && this.locationCriteria !== null) {\n toReturn['locationCriteria'] = 'toApiJson' in this.locationCriteria ? this.locationCriteria.toApiJson() : this.locationCriteria;\n }\n if (typeof this.categoryCriteria !== 'undefined' && this.categoryCriteria !== null) {\n toReturn['categoryCriteria'] = 'toApiJson' in this.categoryCriteria ? this.categoryCriteria.toApiJson() : this.categoryCriteria;\n }\n if (typeof this.tagCriteria !== 'undefined' && this.tagCriteria !== null) {\n toReturn['tagCriteria'] = 'toApiJson' in this.tagCriteria ? this.tagCriteria.toApiJson() : this.tagCriteria;\n }\n if (typeof this.conversionPointCriteria !== 'undefined' && this.conversionPointCriteria !== null) {\n toReturn['conversionPointCriteria'] = 'toApiJson' in this.conversionPointCriteria ? this.conversionPointCriteria.toApiJson() : this.conversionPointCriteria;\n }\n if (typeof this.accountOriginCriteria !== 'undefined' && this.accountOriginCriteria !== null) {\n toReturn['accountOriginCriteria'] = 'toApiJson' in this.accountOriginCriteria ? this.accountOriginCriteria.toApiJson() : this.accountOriginCriteria;\n }\n return toReturn;\n }\n}\nclass AutoAssignRule {\n static fromProto(proto) {\n let m = new AutoAssignRule();\n m = Object.assign(m, proto);\n if (proto.criteria) {\n m.criteria = proto.criteria.map(AutoAssignCriteria.fromProto);\n }\n if (proto.criteriaMatchType) {\n m.criteriaMatchType = enumStringToValue$2(CriteriaMatchType, proto.criteriaMatchType);\n }\n if (proto.appKeys) {\n m.appKeys = proto.appKeys.map(AutoAssignRuleAppKey.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.criteria !== 'undefined' && this.criteria !== null) {\n toReturn['criteria'] = 'toApiJson' in this.criteria ? this.criteria.toApiJson() : this.criteria;\n }\n if (typeof this.salespersonIds !== 'undefined') {\n toReturn['salespersonIds'] = this.salespersonIds;\n }\n if (typeof this.criteriaMatchType !== 'undefined') {\n toReturn['criteriaMatchType'] = this.criteriaMatchType;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.appKeys !== 'undefined' && this.appKeys !== null) {\n toReturn['appKeys'] = 'toApiJson' in this.appKeys ? this.appKeys.toApiJson() : this.appKeys;\n }\n return toReturn;\n }\n}\nclass BusinessListRequest {\n static fromProto(proto) {\n let m = new BusinessListRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketIds !== 'undefined') {\n toReturn['marketIds'] = this.marketIds;\n }\n if (typeof this.contactEmail !== 'undefined') {\n toReturn['contactEmail'] = this.contactEmail;\n }\n return toReturn;\n }\n}\nclass BusinessListResponse {\n static fromProto(proto) {\n let m = new BusinessListResponse();\n m = Object.assign(m, proto);\n if (proto.businesses) {\n m.businesses = proto.businesses.map(BusinessListResponseSalestoolBusiness.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businesses !== 'undefined' && this.businesses !== null) {\n toReturn['businesses'] = 'toApiJson' in this.businesses ? this.businesses.toApiJson() : this.businesses;\n }\n return toReturn;\n }\n}\nclass BusinessSearchRequest {\n static fromProto(proto) {\n let m = new BusinessSearchRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = BusinessSearchFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.sortOptions) {\n m.sortOptions = BusinessSearchSortOptions.fromProto(proto.sortOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.sortOptions !== 'undefined' && this.sortOptions !== null) {\n toReturn['sortOptions'] = 'toApiJson' in this.sortOptions ? this.sortOptions.toApiJson() : this.sortOptions;\n }\n return toReturn;\n }\n}\nclass BusinessSearchResponse {\n static fromProto(proto) {\n let m = new BusinessSearchResponse();\n m = Object.assign(m, proto);\n if (proto.businesses) {\n m.businesses = proto.businesses.map(Business.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = BusinessPagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businesses !== 'undefined' && this.businesses !== null) {\n toReturn['businesses'] = 'toApiJson' in this.businesses ? this.businesses.toApiJson() : this.businesses;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass AutoAssignCriteriaCategoryCriteria {\n static fromProto(proto) {\n let m = new AutoAssignCriteriaCategoryCriteria();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.categories !== 'undefined') {\n toReturn['categories'] = this.categories;\n }\n return toReturn;\n }\n}\nclass ContactCreateRequest {\n static fromProto(proto) {\n let m = new ContactCreateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.firstName !== 'undefined') {\n toReturn['firstName'] = this.firstName;\n }\n if (typeof this.lastName !== 'undefined') {\n toReturn['lastName'] = this.lastName;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.phoneNumberCountry !== 'undefined') {\n toReturn['phoneNumberCountry'] = this.phoneNumberCountry;\n }\n if (typeof this.phoneExtension !== 'undefined') {\n toReturn['phoneExtension'] = this.phoneExtension;\n }\n if (typeof this.notes !== 'undefined') {\n toReturn['notes'] = this.notes;\n }\n return toReturn;\n }\n}\nclass ContactCreateResponse {\n static fromProto(proto) {\n let m = new ContactCreateResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contactId !== 'undefined') {\n toReturn['contactId'] = this.contactId;\n }\n return toReturn;\n }\n}\nclass AutoAssignCriteriaConversionPointCriteria {\n static fromProto(proto) {\n let m = new AutoAssignCriteriaConversionPointCriteria();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.conversionPoint !== 'undefined') {\n toReturn['conversionPoint'] = this.conversionPoint;\n }\n return toReturn;\n }\n}\nclass CreateBusinessActivityRequest {\n static fromProto(proto) {\n let m = new CreateBusinessActivityRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.activityType !== 'undefined') {\n toReturn['activityType'] = this.activityType;\n }\n if (typeof this.activityDetail !== 'undefined') {\n toReturn['activityDetail'] = this.activityDetail;\n }\n if (typeof this.productName !== 'undefined') {\n toReturn['productName'] = this.productName;\n }\n if (typeof this.productId !== 'undefined') {\n toReturn['productId'] = this.productId;\n }\n if (typeof this.doNotSendEmail !== 'undefined') {\n toReturn['doNotSendEmail'] = this.doNotSendEmail;\n }\n return toReturn;\n }\n}\nclass CreateOrUpdateAutoAssignConfigRequest {\n static fromProto(proto) {\n let m = new CreateOrUpdateAutoAssignConfigRequest();\n m = Object.assign(m, proto);\n if (proto.rules) {\n m.rules = proto.rules.map(AutoAssignRule.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.rules !== 'undefined' && this.rules !== null) {\n toReturn['rules'] = 'toApiJson' in this.rules ? this.rules.toApiJson() : this.rules;\n }\n return toReturn;\n }\n}\nclass CreateSalesActivityRequest {\n static fromProto(proto) {\n let m = new CreateSalesActivityRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.salespersonId !== 'undefined') {\n toReturn['salespersonId'] = this.salespersonId;\n }\n if (typeof this.submittedBy !== 'undefined') {\n toReturn['submittedBy'] = this.submittedBy;\n }\n if (typeof this.action !== 'undefined') {\n toReturn['action'] = this.action;\n }\n if (typeof this.customActionName !== 'undefined') {\n toReturn['customActionName'] = this.customActionName;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.notes !== 'undefined') {\n toReturn['notes'] = this.notes;\n }\n return toReturn;\n }\n}\nclass CreateSalesActivityResponse {\n static fromProto(proto) {\n let m = new CreateSalesActivityResponse();\n m = Object.assign(m, proto);\n if (proto.salesActivity) {\n m.salesActivity = SalesActivity.fromProto(proto.salesActivity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salesActivity !== 'undefined' && this.salesActivity !== null) {\n toReturn['salesActivity'] = 'toApiJson' in this.salesActivity ? this.salesActivity.toApiJson() : this.salesActivity;\n }\n return toReturn;\n }\n}\nclass CreateSalesTaskRequest {\n static fromProto(proto) {\n let m = new CreateSalesTaskRequest();\n m = Object.assign(m, proto);\n if (proto.dueDate) {\n m.dueDate = new Date(proto.dueDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.dueDate !== 'undefined' && this.dueDate !== null) {\n toReturn['dueDate'] = 'toApiJson' in this.dueDate ? this.dueDate.toApiJson() : this.dueDate;\n }\n if (typeof this.salespersonIds !== 'undefined') {\n toReturn['salespersonIds'] = this.salespersonIds;\n }\n return toReturn;\n }\n}\nclass CreateSalesTaskResponse {\n static fromProto(proto) {\n let m = new CreateSalesTaskResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.taskId !== 'undefined') {\n toReturn['taskId'] = this.taskId;\n }\n if (typeof this.taskNamespace !== 'undefined') {\n toReturn['taskNamespace'] = this.taskNamespace;\n }\n return toReturn;\n }\n}\nclass ExternalIdentifierCreateRequest {\n static fromProto(proto) {\n let m = new ExternalIdentifierCreateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.externalIdProvider !== 'undefined') {\n toReturn['externalIdProvider'] = this.externalIdProvider;\n }\n if (typeof this.internalId !== 'undefined') {\n toReturn['internalId'] = this.internalId;\n }\n if (typeof this.externalId !== 'undefined') {\n toReturn['externalId'] = this.externalId;\n }\n return toReturn;\n }\n}\nclass ExternalIdentifierGetByInternalIDRequest {\n static fromProto(proto) {\n let m = new ExternalIdentifierGetByInternalIDRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.externalIdProvider !== 'undefined') {\n toReturn['externalIdProvider'] = this.externalIdProvider;\n }\n if (typeof this.internalId !== 'undefined') {\n toReturn['internalId'] = this.internalId;\n }\n return toReturn;\n }\n}\nclass ExternalIdentifierGetByInternalIDResponse {\n static fromProto(proto) {\n let m = new ExternalIdentifierGetByInternalIDResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.externalId !== 'undefined') {\n toReturn['externalId'] = this.externalId;\n }\n return toReturn;\n }\n}\nclass GetAssignedSalespersonForPartnerRequest {\n static fromProto(proto) {\n let m = new GetAssignedSalespersonForPartnerRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n return toReturn;\n }\n}\nclass GetAssignedSalespersonForPartnerResponse {\n static fromProto(proto) {\n let m = new GetAssignedSalespersonForPartnerResponse();\n m = Object.assign(m, proto);\n if (proto.salesperson) {\n m.salesperson = Salesperson.fromProto(proto.salesperson);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salesperson !== 'undefined' && this.salesperson !== null) {\n toReturn['salesperson'] = 'toApiJson' in this.salesperson ? this.salesperson.toApiJson() : this.salesperson;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass GetAutoAssignConfigRequest {\n static fromProto(proto) {\n let m = new GetAutoAssignConfigRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n return toReturn;\n }\n}\nclass GetAutoAssignConfigResponse {\n static fromProto(proto) {\n let m = new GetAutoAssignConfigResponse();\n m = Object.assign(m, proto);\n if (proto.rules) {\n m.rules = proto.rules.map(AutoAssignRule.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.rules !== 'undefined' && this.rules !== null) {\n toReturn['rules'] = 'toApiJson' in this.rules ? this.rules.toApiJson() : this.rules;\n }\n return toReturn;\n }\n}\nclass GetConfigurationRequest {\n static fromProto(proto) {\n let m = new GetConfigurationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass GetConfigurationResponse {\n static fromProto(proto) {\n let m = new GetConfigurationResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.isValid !== 'undefined') {\n toReturn['isValid'] = this.isValid;\n }\n return toReturn;\n }\n}\nclass GetContactsByEmailRequest {\n static fromProto(proto) {\n let m = new GetContactsByEmailRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n return toReturn;\n }\n}\nclass GetContactsResponse {\n static fromProto(proto) {\n let m = new GetContactsResponse();\n m = Object.assign(m, proto);\n if (proto.contacts) {\n m.contacts = proto.contacts.map(Contact.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contacts !== 'undefined' && this.contacts !== null) {\n toReturn['contacts'] = 'toApiJson' in this.contacts ? this.contacts.toApiJson() : this.contacts;\n }\n return toReturn;\n }\n}\nclass GetMembersRequest {\n static fromProto(proto) {\n let m = new GetMembersRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.groupId !== 'undefined') {\n toReturn['groupId'] = this.groupId;\n }\n return toReturn;\n }\n}\nclass GetMembersResponse {\n static fromProto(proto) {\n let m = new GetMembersResponse();\n m = Object.assign(m, proto);\n if (proto.salesPeople) {\n m.salesPeople = proto.salesPeople.map(Salesperson.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salesPeople !== 'undefined' && this.salesPeople !== null) {\n toReturn['salesPeople'] = 'toApiJson' in this.salesPeople ? this.salesPeople.toApiJson() : this.salesPeople;\n }\n return toReturn;\n }\n}\nclass GetMultiCampaignsRequest {\n static fromProto(proto) {\n let m = new GetMultiCampaignsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.campaignIds !== 'undefined') {\n toReturn['campaignIds'] = this.campaignIds;\n }\n return toReturn;\n }\n}\nclass GetMultiCampaignsResponse {\n static fromProto(proto) {\n let m = new GetMultiCampaignsResponse();\n m = Object.assign(m, proto);\n if (proto.campaigns) {\n m.campaigns = proto.campaigns.map(SalesCampaign.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaigns !== 'undefined' && this.campaigns !== null) {\n toReturn['campaigns'] = 'toApiJson' in this.campaigns ? this.campaigns.toApiJson() : this.campaigns;\n }\n return toReturn;\n }\n}\nclass GetMultiSalesActivityRequest {\n static fromProto(proto) {\n let m = new GetMultiSalesActivityRequest();\n m = Object.assign(m, proto);\n if (proto.keys) {\n m.keys = proto.keys.map(SalesActivityKey.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.keys !== 'undefined' && this.keys !== null) {\n toReturn['keys'] = 'toApiJson' in this.keys ? this.keys.toApiJson() : this.keys;\n }\n return toReturn;\n }\n}\nclass GetMultiSalesActivityResponse {\n static fromProto(proto) {\n let m = new GetMultiSalesActivityResponse();\n m = Object.assign(m, proto);\n if (proto.salesActivities) {\n m.salesActivities = proto.salesActivities.map(GetMultiSalesActivityResponseSalesActivityContainer.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salesActivities !== 'undefined' && this.salesActivities !== null) {\n toReturn['salesActivities'] = 'toApiJson' in this.salesActivities ? this.salesActivities.toApiJson() : this.salesActivities;\n }\n return toReturn;\n }\n}\nclass GetMultiSalesTeamRequest {\n static fromProto(proto) {\n let m = new GetMultiSalesTeamRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.groupIds !== 'undefined') {\n toReturn['groupIds'] = this.groupIds;\n }\n return toReturn;\n }\n}\nclass GetMultiSalesTeamResponse {\n static fromProto(proto) {\n let m = new GetMultiSalesTeamResponse();\n m = Object.assign(m, proto);\n if (proto.salesTeams) {\n m.salesTeams = proto.salesTeams.map(SalesTeam.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salesTeams !== 'undefined' && this.salesTeams !== null) {\n toReturn['salesTeams'] = 'toApiJson' in this.salesTeams ? this.salesTeams.toApiJson() : this.salesTeams;\n }\n return toReturn;\n }\n}\nclass GetMultiSalespersonRequest {\n static fromProto(proto) {\n let m = new GetMultiSalespersonRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.salespersonIds !== 'undefined') {\n toReturn['salespersonIds'] = this.salespersonIds;\n }\n return toReturn;\n }\n}\nclass GetMultiSalespersonResponse {\n static fromProto(proto) {\n let m = new GetMultiSalespersonResponse();\n m = Object.assign(m, proto);\n if (proto.salespersons) {\n m.salespersons = proto.salespersons.map(Salesperson.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salespersons !== 'undefined' && this.salespersons !== null) {\n toReturn['salespersons'] = 'toApiJson' in this.salespersons ? this.salespersons.toApiJson() : this.salespersons;\n }\n return toReturn;\n }\n}\nclass GetSalespersonRequest {\n static fromProto(proto) {\n let m = new GetSalespersonRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.salespersonId !== 'undefined') {\n toReturn['salespersonId'] = this.salespersonId;\n }\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n return toReturn;\n }\n}\nclass GetTeamsBySalespersonsRequest {\n static fromProto(proto) {\n let m = new GetTeamsBySalespersonsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salespersonIds !== 'undefined') {\n toReturn['salespersonIds'] = this.salespersonIds;\n }\n return toReturn;\n }\n}\nclass GetTeamsBySalespersonsResponse {\n static fromProto(proto) {\n let m = new GetTeamsBySalespersonsResponse();\n m = Object.assign(m, proto);\n if (proto.teamMapping) {\n m.teamMapping = proto.teamMapping.map(GetTeamsBySalespersonsResponseTeamsForSalesperson.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.teamMapping !== 'undefined' && this.teamMapping !== null) {\n toReturn['teamMapping'] = 'toApiJson' in this.teamMapping ? this.teamMapping.toApiJson() : this.teamMapping;\n }\n return toReturn;\n }\n}\nclass GetZoomMeetingInfoRequest {\n static fromProto(proto) {\n let m = new GetZoomMeetingInfoRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.meetingId !== 'undefined') {\n toReturn['meetingId'] = this.meetingId;\n }\n return toReturn;\n }\n}\nclass GetZoomMeetingInfoResponse {\n static fromProto(proto) {\n let m = new GetZoomMeetingInfoResponse();\n m = Object.assign(m, proto);\n if (proto.zoomMeeting) {\n m.zoomMeeting = ZoomMeeting.fromProto(proto.zoomMeeting);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.zoomMeeting !== 'undefined' && this.zoomMeeting !== null) {\n toReturn['zoomMeeting'] = 'toApiJson' in this.zoomMeeting ? this.zoomMeeting.toApiJson() : this.zoomMeeting;\n }\n return toReturn;\n }\n}\nclass ListSalesTeamsRequestListSalesTeamsFilters {\n static fromProto(proto) {\n let m = new ListSalesTeamsRequestListSalesTeamsFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n return toReturn;\n }\n}\nclass ListSalesTeamsRequest {\n static fromProto(proto) {\n let m = new ListSalesTeamsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListSalesTeamsRequestListSalesTeamsFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListSalesTeamsResponse {\n static fromProto(proto) {\n let m = new ListSalesTeamsResponse();\n m = Object.assign(m, proto);\n if (proto.salesTeams) {\n m.salesTeams = proto.salesTeams.map(SalesTeam.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salesTeams !== 'undefined' && this.salesTeams !== null) {\n toReturn['salesTeams'] = 'toApiJson' in this.salesTeams ? this.salesTeams.toApiJson() : this.salesTeams;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListSalespersonsRequestListSalespersonsFilters {\n static fromProto(proto) {\n let m = new ListSalespersonsRequestListSalespersonsFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.onlySalesManagers !== 'undefined') {\n toReturn['onlySalesManagers'] = this.onlySalesManagers;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n return toReturn;\n }\n}\nclass ListSalespersonsRequest {\n static fromProto(proto) {\n let m = new ListSalespersonsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListSalespersonsRequestListSalespersonsFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListSalespersonsResponse {\n static fromProto(proto) {\n let m = new ListSalespersonsResponse();\n m = Object.assign(m, proto);\n if (proto.salespersons) {\n m.salespersons = proto.salespersons.map(Salesperson.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salespersons !== 'undefined' && this.salespersons !== null) {\n toReturn['salespersons'] = 'toApiJson' in this.salespersons ? this.salespersons.toApiJson() : this.salespersons;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass AutoAssignCriteriaLocationCriteria {\n static fromProto(proto) {\n let m = new AutoAssignCriteriaLocationCriteria();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n return toReturn;\n }\n}\nclass LookupCampaignsRequest {\n static fromProto(proto) {\n let m = new LookupCampaignsRequest();\n m = Object.assign(m, proto);\n if (proto.offset) {\n m.offset = parseInt(proto.offset, 10);\n }\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.focus !== 'undefined') {\n toReturn['focus'] = this.focus;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.offset !== 'undefined') {\n toReturn['offset'] = this.offset;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n return toReturn;\n }\n}\nclass LookupCampaignsResponse {\n static fromProto(proto) {\n let m = new LookupCampaignsResponse();\n m = Object.assign(m, proto);\n if (proto.campaigns) {\n m.campaigns = proto.campaigns.map(SalesCampaign.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaigns !== 'undefined' && this.campaigns !== null) {\n toReturn['campaigns'] = 'toApiJson' in this.campaigns ? this.campaigns.toApiJson() : this.campaigns;\n }\n return toReturn;\n }\n}\nclass LookupSalespersonsRequest {\n static fromProto(proto) {\n let m = new LookupSalespersonsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.marketIds !== 'undefined') {\n toReturn['marketIds'] = this.marketIds;\n }\n if (typeof this.includeLastLogin !== 'undefined') {\n toReturn['includeLastLogin'] = this.includeLastLogin;\n }\n return toReturn;\n }\n}\nclass LookupSalespersonsResponse {\n static fromProto(proto) {\n let m = new LookupSalespersonsResponse();\n m = Object.assign(m, proto);\n if (proto.salespersons) {\n m.salespersons = proto.salespersons.map(Salesperson.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salespersons !== 'undefined' && this.salespersons !== null) {\n toReturn['salespersons'] = 'toApiJson' in this.salespersons ? this.salespersons.toApiJson() : this.salespersons;\n }\n return toReturn;\n }\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass PartnerSalesDomainRequest {\n static fromProto(proto) {\n let m = new PartnerSalesDomainRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass PartnerSalesDomainResponse {\n static fromProto(proto) {\n let m = new PartnerSalesDomainResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n return toReturn;\n }\n}\nclass PublishAskQuestionEventRequest {\n static fromProto(proto) {\n let m = new PublishAskQuestionEventRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.vbcUserId !== 'undefined') {\n toReturn['vbcUserId'] = this.vbcUserId;\n }\n return toReturn;\n }\n}\nclass PublishClaimAccountEventRequest {\n static fromProto(proto) {\n let m = new PublishClaimAccountEventRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.userEmail !== 'undefined') {\n toReturn['userEmail'] = this.userEmail;\n }\n return toReturn;\n }\n}\nclass PublishPackageInterestEventRequest {\n static fromProto(proto) {\n let m = new PublishPackageInterestEventRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.packageId !== 'undefined') {\n toReturn['packageId'] = this.packageId;\n }\n if (typeof this.vbcUserId !== 'undefined') {\n toReturn['vbcUserId'] = this.vbcUserId;\n }\n if (typeof this.userEmail !== 'undefined') {\n toReturn['userEmail'] = this.userEmail;\n }\n return toReturn;\n }\n}\nclass PublishProductInterestEventRequest {\n static fromProto(proto) {\n let m = new PublishProductInterestEventRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.vbcUserId !== 'undefined') {\n toReturn['vbcUserId'] = this.vbcUserId;\n }\n if (typeof this.productId !== 'undefined') {\n toReturn['productId'] = this.productId;\n }\n if (typeof this.message !== 'undefined') {\n toReturn['message'] = this.message;\n }\n if (typeof this.userEmail !== 'undefined') {\n toReturn['userEmail'] = this.userEmail;\n }\n return toReturn;\n }\n}\nclass PublishSnapshotOpenEventRequest {\n static fromProto(proto) {\n let m = new PublishSnapshotOpenEventRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass AddContactToCampaignRequestRecipient {\n static fromProto(proto) {\n let m = new AddContactToCampaignRequestRecipient();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.emailAddress !== 'undefined') {\n toReturn['emailAddress'] = this.emailAddress;\n }\n return toReturn;\n }\n}\nclass RequestSubscriptionChangeRequest {\n static fromProto(proto) {\n let m = new RequestSubscriptionChangeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.message !== 'undefined') {\n toReturn['message'] = this.message;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nclass GetMultiSalesActivityResponseSalesActivityContainer {\n static fromProto(proto) {\n let m = new GetMultiSalesActivityResponseSalesActivityContainer();\n m = Object.assign(m, proto);\n if (proto.salesActivity) {\n m.salesActivity = SalesActivity.fromProto(proto.salesActivity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salesActivity !== 'undefined' && this.salesActivity !== null) {\n toReturn['salesActivity'] = 'toApiJson' in this.salesActivity ? this.salesActivity.toApiJson() : this.salesActivity;\n }\n return toReturn;\n }\n}\nclass SalesCampaign {\n static fromProto(proto) {\n let m = new SalesCampaign();\n m = Object.assign(m, proto);\n if (proto.campaignSchedule) {\n m.campaignSchedule = proto.campaignSchedule.map(ScheduleStep.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.campaignStatus !== 'undefined') {\n toReturn['campaignStatus'] = this.campaignStatus;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.campaignSchedule !== 'undefined' && this.campaignSchedule !== null) {\n toReturn['campaignSchedule'] = 'toApiJson' in this.campaignSchedule ? this.campaignSchedule.toApiJson() : this.campaignSchedule;\n }\n return toReturn;\n }\n}\nclass BusinessListResponseSalestoolBusiness {\n static fromProto(proto) {\n let m = new BusinessListResponseSalestoolBusiness();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.zip !== 'undefined') {\n toReturn['zip'] = this.zip;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.contactFirstName !== 'undefined') {\n toReturn['contactFirstName'] = this.contactFirstName;\n }\n if (typeof this.contactLastName !== 'undefined') {\n toReturn['contactLastName'] = this.contactLastName;\n }\n if (typeof this.contactEmail !== 'undefined') {\n toReturn['contactEmail'] = this.contactEmail;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n return toReturn;\n }\n}\nclass ScheduleStep {\n static fromProto(proto) {\n let m = new ScheduleStep();\n m = Object.assign(m, proto);\n if (proto.secondsAfterLastEmail) {\n m.secondsAfterLastEmail = parseInt(proto.secondsAfterLastEmail, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stepType !== 'undefined') {\n toReturn['stepType'] = this.stepType;\n }\n if (typeof this.secondsAfterLastEmail !== 'undefined') {\n toReturn['secondsAfterLastEmail'] = this.secondsAfterLastEmail;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n return toReturn;\n }\n}\nclass SearchTicketsRequest {\n static fromProto(proto) {\n let m = new SearchTicketsRequest();\n m = Object.assign(m, proto);\n if (proto.pagination) {\n m.pagination = Pagination.fromProto(proto.pagination);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.pagination !== 'undefined' && this.pagination !== null) {\n toReturn['pagination'] = 'toApiJson' in this.pagination ? this.pagination.toApiJson() : this.pagination;\n }\n return toReturn;\n }\n}\nclass SearchTicketsResponse {\n static fromProto(proto) {\n let m = new SearchTicketsResponse();\n m = Object.assign(m, proto);\n if (proto.tickets) {\n m.tickets = proto.tickets.map(Ticket.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.tickets !== 'undefined' && this.tickets !== null) {\n toReturn['tickets'] = 'toApiJson' in this.tickets ? this.tickets.toApiJson() : this.tickets;\n }\n return toReturn;\n }\n}\nclass SendResetPasswordEmailRequest {\n static fromProto(proto) {\n let m = new SendResetPasswordEmailRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.salespersonId !== 'undefined') {\n toReturn['salespersonId'] = this.salespersonId;\n }\n return toReturn;\n }\n}\nclass AddContactToCampaignRequestSender {\n static fromProto(proto) {\n let m = new AddContactToCampaignRequestSender();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.emailAddress !== 'undefined') {\n toReturn['emailAddress'] = this.emailAddress;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.salespersonId !== 'undefined') {\n toReturn['salespersonId'] = this.salespersonId;\n }\n return toReturn;\n }\n}\nclass SetConfigurationRequest {\n static fromProto(proto) {\n let m = new SetConfigurationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.apiKey !== 'undefined') {\n toReturn['apiKey'] = this.apiKey;\n }\n return toReturn;\n }\n}\nclass StoreZoomMeetingInfoRequest {\n static fromProto(proto) {\n let m = new StoreZoomMeetingInfoRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.meetingId !== 'undefined') {\n toReturn['meetingId'] = this.meetingId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.salesPersonId !== 'undefined') {\n toReturn['salesPersonId'] = this.salesPersonId;\n }\n return toReturn;\n }\n}\nclass AutoAssignCriteriaTagCriteria {\n static fromProto(proto) {\n let m = new AutoAssignCriteriaTagCriteria();\n m = Object.assign(m, proto);\n if (proto.matchType) {\n m.matchType = enumStringToValue$2(TagMatchType, proto.matchType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.tags !== 'undefined') {\n toReturn['tags'] = this.tags;\n }\n if (typeof this.matchType !== 'undefined') {\n toReturn['matchType'] = this.matchType;\n }\n return toReturn;\n }\n}\nclass GetTeamsBySalespersonsResponseTeamsForSalesperson {\n static fromProto(proto) {\n let m = new GetTeamsBySalespersonsResponseTeamsForSalesperson();\n m = Object.assign(m, proto);\n if (proto.salesTeams) {\n m.salesTeams = proto.salesTeams.map(SalesTeam.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salespersonId !== 'undefined') {\n toReturn['salespersonId'] = this.salespersonId;\n }\n if (typeof this.salesTeams !== 'undefined' && this.salesTeams !== null) {\n toReturn['salesTeams'] = 'toApiJson' in this.salesTeams ? this.salesTeams.toApiJson() : this.salesTeams;\n }\n return toReturn;\n }\n}\nclass UpdatePartnerSalesDomainRequest {\n static fromProto(proto) {\n let m = new UpdatePartnerSalesDomainRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n return toReturn;\n }\n}\nclass UpdateTeamNameRequest {\n static fromProto(proto) {\n let m = new UpdateTeamNameRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.groupId !== 'undefined') {\n toReturn['groupId'] = this.groupId;\n }\n if (typeof this.newTeamName !== 'undefined') {\n toReturn['newTeamName'] = this.newTeamName;\n }\n return toReturn;\n }\n}\nclass ViewTicketIncludeFields {\n static fromProto(proto) {\n let m = new ViewTicketIncludeFields();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.conversations !== 'undefined') {\n toReturn['conversations'] = this.conversations;\n }\n if (typeof this.requester !== 'undefined') {\n toReturn['requester'] = this.requester;\n }\n if (typeof this.company !== 'undefined') {\n toReturn['company'] = this.company;\n }\n if (typeof this.stats !== 'undefined') {\n toReturn['stats'] = this.stats;\n }\n return toReturn;\n }\n}\nclass ViewTicketRequest {\n static fromProto(proto) {\n let m = new ViewTicketRequest();\n m = Object.assign(m, proto);\n if (proto.ticketId) {\n m.ticketId = parseInt(proto.ticketId, 10);\n }\n if (proto.includeFields) {\n m.includeFields = ViewTicketIncludeFields.fromProto(proto.includeFields);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.ticketId !== 'undefined') {\n toReturn['ticketId'] = this.ticketId;\n }\n if (typeof this.includeFields !== 'undefined' && this.includeFields !== null) {\n toReturn['includeFields'] = 'toApiJson' in this.includeFields ? this.includeFields.toApiJson() : this.includeFields;\n }\n return toReturn;\n }\n}\nclass ViewTicketResponse {\n static fromProto(proto) {\n let m = new ViewTicketResponse();\n m = Object.assign(m, proto);\n if (proto.baseTicket) {\n m.baseTicket = Ticket.fromProto(proto.baseTicket);\n }\n if (proto.conversations) {\n m.conversations = proto.conversations.map(Conversation.fromProto);\n }\n if (proto.priority) {\n m.priority = enumStringToValue$2(TicketPriority, proto.priority);\n }\n if (proto.dueBy) {\n m.dueBy = new Date(proto.dueBy);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.baseTicket !== 'undefined' && this.baseTicket !== null) {\n toReturn['baseTicket'] = 'toApiJson' in this.baseTicket ? this.baseTicket.toApiJson() : this.baseTicket;\n }\n if (typeof this.tags !== 'undefined') {\n toReturn['tags'] = this.tags;\n }\n if (typeof this.conversations !== 'undefined' && this.conversations !== null) {\n toReturn['conversations'] = 'toApiJson' in this.conversations ? this.conversations.toApiJson() : this.conversations;\n }\n if (typeof this.priority !== 'undefined') {\n toReturn['priority'] = this.priority;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.dueBy !== 'undefined' && this.dueBy !== null) {\n toReturn['dueBy'] = 'toApiJson' in this.dueBy ? this.dueBy.toApiJson() : this.dueBy;\n }\n return toReturn;\n }\n}\nclass ZoomMeeting {\n static fromProto(proto) {\n let m = new ZoomMeeting();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.meetingId !== 'undefined') {\n toReturn['meetingId'] = this.meetingId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.salesPersonId !== 'undefined') {\n toReturn['salesPersonId'] = this.salesPersonId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass PriceComponent {\n static fromProto(proto) {\n let m = new PriceComponent();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$1(Frequency, proto.frequency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass LineItemAppKey {\n static fromProto(proto) {\n let m = new LineItemAppKey();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.appId !== 'undefined') {\n toReturn['appId'] = this.appId;\n }\n if (typeof this.editionId !== 'undefined') {\n toReturn['editionId'] = this.editionId;\n }\n if (typeof this.packageId !== 'undefined') {\n toReturn['packageId'] = this.packageId;\n }\n if (typeof this.packageInstanceId !== 'undefined') {\n toReturn['packageInstanceId'] = this.packageInstanceId;\n }\n return toReturn;\n }\n}\nclass BillingPeriod {\n static fromProto(proto) {\n let m = new BillingPeriod();\n m = Object.assign(m, proto);\n if (proto.startDate) {\n m.startDate = new Date(proto.startDate);\n }\n if (proto.endDate) {\n m.endDate = new Date(proto.endDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.startDate !== 'undefined' && this.startDate !== null) {\n toReturn['startDate'] = 'toApiJson' in this.startDate ? this.startDate.toApiJson() : this.startDate;\n }\n if (typeof this.endDate !== 'undefined' && this.endDate !== null) {\n toReturn['endDate'] = 'toApiJson' in this.endDate ? this.endDate.toApiJson() : this.endDate;\n }\n return toReturn;\n }\n}\nclass Cost {\n static fromProto(proto) {\n let m = new Cost();\n m = Object.assign(m, proto);\n if (proto.customPrice) {\n m.customPrice = parseInt(proto.customPrice, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customPrice !== 'undefined') {\n toReturn['customPrice'] = this.customPrice;\n }\n return toReturn;\n }\n}\nclass CustomPriceMapping {\n static fromProto(proto) {\n let m = new CustomPriceMapping();\n m = Object.assign(m, proto);\n if (proto.customPrice) {\n m.customPrice = parseInt(proto.customPrice, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.productId !== 'undefined') {\n toReturn['productId'] = this.productId;\n }\n if (typeof this.customPrice !== 'undefined') {\n toReturn['customPrice'] = this.customPrice;\n }\n return toReturn;\n }\n}\nclass Duration {\n static fromProto(proto) {\n let m = new Duration();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n if (proto.duration) {\n m.duration = enumStringToValue(DurationPeriod, proto.duration);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n if (typeof this.duration !== 'undefined') {\n toReturn['duration'] = this.duration;\n }\n return toReturn;\n }\n}\nclass LineItem {\n static fromProto(proto) {\n let m = new LineItem();\n m = Object.assign(m, proto);\n if (proto.appKey) {\n m.appKey = LineItemAppKey.fromProto(proto.appKey);\n }\n if (proto.currency) {\n m.currency = enumStringToValue(Currency, proto.currency);\n }\n if (proto.initialRevenue) {\n m.initialRevenue = Revenue.fromProto(proto.initialRevenue);\n }\n if (proto.currentRevenue) {\n m.currentRevenue = Revenue.fromProto(proto.currentRevenue);\n }\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n if (proto.cost) {\n m.cost = Cost.fromProto(proto.cost);\n }\n if (proto.customPrices) {\n m.customPrices = proto.customPrices.map(CustomPriceMapping.fromProto);\n }\n if (proto.billingPeriod) {\n m.billingPeriod = BillingPeriod.fromProto(proto.billingPeriod);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.appKey !== 'undefined' && this.appKey !== null) {\n toReturn['appKey'] = 'toApiJson' in this.appKey ? this.appKey.toApiJson() : this.appKey;\n }\n if (typeof this.packageId !== 'undefined') {\n toReturn['packageId'] = this.packageId;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.initialRevenue !== 'undefined' && this.initialRevenue !== null) {\n toReturn['initialRevenue'] = 'toApiJson' in this.initialRevenue ? this.initialRevenue.toApiJson() : this.initialRevenue;\n }\n if (typeof this.currentRevenue !== 'undefined' && this.currentRevenue !== null) {\n toReturn['currentRevenue'] = 'toApiJson' in this.currentRevenue ? this.currentRevenue.toApiJson() : this.currentRevenue;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.isTrial !== 'undefined') {\n toReturn['isTrial'] = this.isTrial;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.cost !== 'undefined' && this.cost !== null) {\n toReturn['cost'] = 'toApiJson' in this.cost ? this.cost.toApiJson() : this.cost;\n }\n if (typeof this.customPrices !== 'undefined' && this.customPrices !== null) {\n toReturn['customPrices'] = 'toApiJson' in this.customPrices ? this.customPrices.toApiJson() : this.customPrices;\n }\n if (typeof this.billingPeriod !== 'undefined' && this.billingPeriod !== null) {\n toReturn['billingPeriod'] = 'toApiJson' in this.billingPeriod ? this.billingPeriod.toApiJson() : this.billingPeriod;\n }\n if (typeof this.autoBillable !== 'undefined') {\n toReturn['autoBillable'] = this.autoBillable;\n }\n if (typeof this.nonBillable !== 'undefined') {\n toReturn['nonBillable'] = this.nonBillable;\n }\n return toReturn;\n }\n}\nclass Revenue {\n static fromProto(proto) {\n let m = new Revenue();\n m = Object.assign(m, proto);\n if (proto.revenueComponents) {\n m.revenueComponents = proto.revenueComponents.map(RevenueComponent.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.revenueComponents !== 'undefined' && this.revenueComponents !== null) {\n toReturn['revenueComponents'] = 'toApiJson' in this.revenueComponents ? this.revenueComponents.toApiJson() : this.revenueComponents;\n }\n return toReturn;\n }\n}\nclass RevenueComponent {\n static fromProto(proto) {\n let m = new RevenueComponent();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n if (proto.period) {\n m.period = enumStringToValue(RevenuePeriod, proto.period);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n if (typeof this.period !== 'undefined') {\n toReturn['period'] = this.period;\n }\n if (typeof this.isStartingRevenue !== 'undefined') {\n toReturn['isStartingRevenue'] = this.isStartingRevenue;\n }\n return toReturn;\n }\n}\n\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'sales-api.vendasta-local.com',\n 'test': '',\n 'demo': 'sales-api-demo.apigateway.co',\n 'prod': 'sales-api-prod.apigateway.co',\n 'production': 'sales-api-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet BusinessActivityApiService = /*#__PURE__*/(() => {\n class BusinessActivityApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createBusinessActivity(r) {\n const request = r.toApiJson ? r : new CreateBusinessActivityRequest(r);\n return this.http.post(this._host + \"/sales.v1.BusinessActivity/CreateBusinessActivity\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n BusinessActivityApiService.ɵfac = function BusinessActivityApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BusinessActivityApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n BusinessActivityApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BusinessActivityApiService,\n factory: BusinessActivityApiService.ɵfac,\n providedIn: 'root'\n });\n return BusinessActivityApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet BusinessApiService = /*#__PURE__*/(() => {\n class BusinessApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n search(r) {\n const request = r.toApiJson ? r : new BusinessSearchRequest(r);\n return this.http.post(this._host + \"/sales.v1.BusinessService/Search\", request.toApiJson(), this.apiOptions()).pipe(map(resp => BusinessSearchResponse.fromProto(resp)));\n }\n requestSubscriptionChange(r) {\n const request = r.toApiJson ? r : new RequestSubscriptionChangeRequest(r);\n return this.http.post(this._host + \"/sales.v1.BusinessService/RequestSubscriptionChange\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n list(r) {\n const request = r.toApiJson ? r : new BusinessListRequest(r);\n return this.http.post(this._host + \"/sales.v1.BusinessService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => BusinessListResponse.fromProto(resp)));\n }\n }\n BusinessApiService.ɵfac = function BusinessApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BusinessApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n BusinessApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BusinessApiService,\n factory: BusinessApiService.ɵfac,\n providedIn: 'root'\n });\n return BusinessApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet CampaignApiService = /*#__PURE__*/(() => {\n class CampaignApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getMultiCampaigns(r) {\n const request = r.toApiJson ? r : new GetMultiCampaignsRequest(r);\n return this.http.post(this._host + \"/sales.v1.CampaignService/GetMultiCampaigns\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiCampaignsResponse.fromProto(resp)));\n }\n lookupCampaigns(r) {\n const request = r.toApiJson ? r : new LookupCampaignsRequest(r);\n return this.http.post(this._host + \"/sales.v1.CampaignService/LookupCampaigns\", request.toApiJson(), this.apiOptions()).pipe(map(resp => LookupCampaignsResponse.fromProto(resp)));\n }\n addContactToCampaign(r) {\n const request = r.toApiJson ? r : new AddContactToCampaignRequest(r);\n return this.http.post(this._host + \"/sales.v1.CampaignService/AddContactToCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n CampaignApiService.ɵfac = function CampaignApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CampaignApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n CampaignApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CampaignApiService,\n factory: CampaignApiService.ɵfac,\n providedIn: 'root'\n });\n return CampaignApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet ContactsApiService = /*#__PURE__*/(() => {\n class ContactsApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new ContactCreateRequest(r);\n return this.http.post(this._host + \"/sales.v1.Contacts/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ContactCreateResponse.fromProto(resp)));\n }\n getContactsByEmail(r) {\n const request = r.toApiJson ? r : new GetContactsByEmailRequest(r);\n return this.http.post(this._host + \"/sales.v1.Contacts/GetContactsByEmail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetContactsResponse.fromProto(resp)));\n }\n }\n ContactsApiService.ɵfac = function ContactsApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ContactsApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n ContactsApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ContactsApiService,\n factory: ContactsApiService.ɵfac,\n providedIn: 'root'\n });\n return ContactsApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet ExternalIdentifiersApiService = /*#__PURE__*/(() => {\n class ExternalIdentifiersApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new ExternalIdentifierCreateRequest(r);\n return this.http.post(this._host + \"/sales.v1.ExternalIdentifiers/Create\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getByInternalId(r) {\n const request = r.toApiJson ? r : new ExternalIdentifierGetByInternalIDRequest(r);\n return this.http.post(this._host + \"/sales.v1.ExternalIdentifiers/GetByInternalID\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ExternalIdentifierGetByInternalIDResponse.fromProto(resp)));\n }\n }\n ExternalIdentifiersApiService.ɵfac = function ExternalIdentifiersApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExternalIdentifiersApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n ExternalIdentifiersApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ExternalIdentifiersApiService,\n factory: ExternalIdentifiersApiService.ɵfac,\n providedIn: 'root'\n });\n return ExternalIdentifiersApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet FreshdeskApiService = /*#__PURE__*/(() => {\n class FreshdeskApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n setConfiguration(r) {\n const request = r.toApiJson ? r : new SetConfigurationRequest(r);\n return this.http.post(this._host + \"/sales.v1.Freshdesk/SetConfiguration\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getConfiguration(r) {\n const request = r.toApiJson ? r : new GetConfigurationRequest(r);\n return this.http.post(this._host + \"/sales.v1.Freshdesk/GetConfiguration\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetConfigurationResponse.fromProto(resp)));\n }\n searchTickets(r) {\n const request = r.toApiJson ? r : new SearchTicketsRequest(r);\n return this.http.post(this._host + \"/sales.v1.Freshdesk/SearchTickets\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SearchTicketsResponse.fromProto(resp)));\n }\n viewTicket(r) {\n const request = r.toApiJson ? r : new ViewTicketRequest(r);\n return this.http.post(this._host + \"/sales.v1.Freshdesk/ViewTicket\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ViewTicketResponse.fromProto(resp)));\n }\n }\n FreshdeskApiService.ɵfac = function FreshdeskApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FreshdeskApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n FreshdeskApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FreshdeskApiService,\n factory: FreshdeskApiService.ɵfac,\n providedIn: 'root'\n });\n return FreshdeskApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet LegacyEventsApiService = /*#__PURE__*/(() => {\n class LegacyEventsApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n publishSnapshotOpenEvent(r) {\n const request = r.toApiJson ? r : new PublishSnapshotOpenEventRequest(r);\n return this.http.post(this._host + \"/sales.v1.LegacyEvents/PublishSnapshotOpenEvent\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n publishAskQuestionEvent(r) {\n const request = r.toApiJson ? r : new PublishAskQuestionEventRequest(r);\n return this.http.post(this._host + \"/sales.v1.LegacyEvents/PublishAskQuestionEvent\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n publishClaimAccountEvent(r) {\n const request = r.toApiJson ? r : new PublishClaimAccountEventRequest(r);\n return this.http.post(this._host + \"/sales.v1.LegacyEvents/PublishClaimAccountEvent\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n publishProductInterestEvent(r) {\n const request = r.toApiJson ? r : new PublishProductInterestEventRequest(r);\n return this.http.post(this._host + \"/sales.v1.LegacyEvents/PublishProductInterestEvent\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n publishPackageInterestEvent(r) {\n const request = r.toApiJson ? r : new PublishPackageInterestEventRequest(r);\n return this.http.post(this._host + \"/sales.v1.LegacyEvents/PublishPackageInterestEvent\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n LegacyEventsApiService.ɵfac = function LegacyEventsApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LegacyEventsApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n LegacyEventsApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: LegacyEventsApiService,\n factory: LegacyEventsApiService.ɵfac,\n providedIn: 'root'\n });\n return LegacyEventsApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet MeetingApiService = /*#__PURE__*/(() => {\n class MeetingApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n storeZoomMeetingInfo(r) {\n const request = r.toApiJson ? r : new StoreZoomMeetingInfoRequest(r);\n return this.http.post(this._host + \"/sales.v1.Meeting/StoreZoomMeetingInfo\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getZoomMeetingInfo(r) {\n const request = r.toApiJson ? r : new GetZoomMeetingInfoRequest(r);\n return this.http.post(this._host + \"/sales.v1.Meeting/GetZoomMeetingInfo\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetZoomMeetingInfoResponse.fromProto(resp)));\n }\n }\n MeetingApiService.ɵfac = function MeetingApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MeetingApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n MeetingApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MeetingApiService,\n factory: MeetingApiService.ɵfac,\n providedIn: 'root'\n });\n return MeetingApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet PartnerApiService = /*#__PURE__*/(() => {\n class PartnerApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getPartnerSalesDomain(r) {\n const request = r.toApiJson ? r : new PartnerSalesDomainRequest(r);\n return this.http.post(this._host + \"/sales.v1.PartnerService/GetPartnerSalesDomain\", request.toApiJson(), this.apiOptions()).pipe(map(resp => PartnerSalesDomainResponse.fromProto(resp)));\n }\n updatePartnerSalesDomain(r) {\n const request = r.toApiJson ? r : new UpdatePartnerSalesDomainRequest(r);\n return this.http.post(this._host + \"/sales.v1.PartnerService/UpdatePartnerSalesDomain\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n PartnerApiService.ɵfac = function PartnerApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PartnerApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n PartnerApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PartnerApiService,\n factory: PartnerApiService.ɵfac,\n providedIn: 'root'\n });\n return PartnerApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet SalesApiService = /*#__PURE__*/(() => {\n class SalesApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getAutoAssignConfig(r) {\n const request = r.toApiJson ? r : new GetAutoAssignConfigRequest(r);\n return this.http.post(this._host + \"/sales.v1.Sales/GetAutoAssignConfig\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetAutoAssignConfigResponse.fromProto(resp)));\n }\n createOrUpdateAutoAssignConfig(r) {\n const request = r.toApiJson ? r : new CreateOrUpdateAutoAssignConfigRequest(r);\n return this.http.post(this._host + \"/sales.v1.Sales/CreateOrUpdateAutoAssignConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getSalesperson(r) {\n const request = r.toApiJson ? r : new GetSalespersonRequest(r);\n return this.http.post(this._host + \"/sales.v1.Sales/GetSalesperson\", request.toApiJson(), this.apiOptions()).pipe(map(resp => Salesperson.fromProto(resp)));\n }\n getMultiSalesperson(r) {\n const request = r.toApiJson ? r : new GetMultiSalespersonRequest(r);\n return this.http.post(this._host + \"/sales.v1.Sales/GetMultiSalesperson\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiSalespersonResponse.fromProto(resp)));\n }\n listSalespersons(r) {\n const request = r.toApiJson ? r : new ListSalespersonsRequest(r);\n return this.http.post(this._host + \"/sales.v1.Sales/ListSalespersons\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSalespersonsResponse.fromProto(resp)));\n }\n getAssignedSalespersonForPartner(r) {\n const request = r.toApiJson ? r : new GetAssignedSalespersonForPartnerRequest(r);\n return this.http.post(this._host + \"/sales.v1.Sales/GetAssignedSalespersonForPartner\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetAssignedSalespersonForPartnerResponse.fromProto(resp)));\n }\n lookupSalespersons(r) {\n const request = r.toApiJson ? r : new LookupSalespersonsRequest(r);\n return this.http.post(this._host + \"/sales.v1.Sales/LookupSalespersons\", request.toApiJson(), this.apiOptions()).pipe(map(resp => LookupSalespersonsResponse.fromProto(resp)));\n }\n sendResetPasswordEmail(r) {\n const request = r.toApiJson ? r : new SendResetPasswordEmailRequest(r);\n return this.http.post(this._host + \"/sales.v1.Sales/SendResetPasswordEmail\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n SalesApiService.ɵfac = function SalesApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SalesApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n SalesApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SalesApiService,\n factory: SalesApiService.ɵfac,\n providedIn: 'root'\n });\n return SalesApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet SalesActivityApiService = /*#__PURE__*/(() => {\n class SalesActivityApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getMulti(r) {\n const request = r.toApiJson ? r : new GetMultiSalesActivityRequest(r);\n return this.http.post(this._host + \"/sales.v1.SalesActivityService/GetMulti\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiSalesActivityResponse.fromProto(resp)));\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateSalesActivityRequest(r);\n return this.http.post(this._host + \"/sales.v1.SalesActivityService/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateSalesActivityResponse.fromProto(resp)));\n }\n }\n SalesActivityApiService.ɵfac = function SalesActivityApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SalesActivityApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n SalesActivityApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SalesActivityApiService,\n factory: SalesActivityApiService.ɵfac,\n providedIn: 'root'\n });\n return SalesActivityApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet SalesTeamApiService = /*#__PURE__*/(() => {\n class SalesTeamApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n list(r) {\n const request = r.toApiJson ? r : new ListSalesTeamsRequest(r);\n return this.http.post(this._host + \"/sales.v1.SalesTeamService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSalesTeamsResponse.fromProto(resp)));\n }\n getMulti(r) {\n const request = r.toApiJson ? r : new GetMultiSalesTeamRequest(r);\n return this.http.post(this._host + \"/sales.v1.SalesTeamService/GetMulti\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiSalesTeamResponse.fromProto(resp)));\n }\n getMembers(r) {\n const request = r.toApiJson ? r : new GetMembersRequest(r);\n return this.http.post(this._host + \"/sales.v1.SalesTeamService/GetMembers\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMembersResponse.fromProto(resp)));\n }\n getTeamsBySalespersons(r) {\n const request = r.toApiJson ? r : new GetTeamsBySalespersonsRequest(r);\n return this.http.post(this._host + \"/sales.v1.SalesTeamService/GetTeamsBySalespersons\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetTeamsBySalespersonsResponse.fromProto(resp)));\n }\n updateTeamName(r) {\n const request = r.toApiJson ? r : new UpdateTeamNameRequest(r);\n return this.http.post(this._host + \"/sales.v1.SalesTeamService/UpdateTeamName\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n SalesTeamApiService.ɵfac = function SalesTeamApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SalesTeamApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n SalesTeamApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SalesTeamApiService,\n factory: SalesTeamApiService.ɵfac,\n providedIn: 'root'\n });\n return SalesTeamApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet TasksApiService = /*#__PURE__*/(() => {\n class TasksApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createSalesTask(r) {\n const request = r.toApiJson ? r : new CreateSalesTaskRequest(r);\n return this.http.post(this._host + \"/sales.v1.Tasks/CreateSalesTask\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateSalesTaskResponse.fromProto(resp)));\n }\n assignSalesTask(r) {\n const request = r.toApiJson ? r : new AssignSalesTaskRequest(r);\n return this.http.post(this._host + \"/sales.v1.Tasks/AssignSalesTask\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n TasksApiService.ɵfac = function TasksApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TasksApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n TasksApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TasksApiService,\n factory: TasksApiService.ɵfac,\n providedIn: 'root'\n });\n return TasksApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet UserActionsProviderApiService = /*#__PURE__*/(() => {\n class UserActionsProviderApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n uploadUserAction(r) {\n const request = r.toApiJson ? r : new UserActionsRequest(r);\n return this.http.post(this._host + \"/sales.v1.UserActionsProvider/UploadUserAction\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n uploadUserActionForCustomerId(r) {\n const request = r.toApiJson ? r : new UploadUserActionForCustomerIDRequest(r);\n return this.http.post(this._host + \"/sales.v1.UserActionsProvider/UploadUserActionForCustomerID\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n bulkUploadUserActions(r) {\n const request = r.toApiJson ? r : new BulkUploadUserActionsRequest(r);\n return this.http.post(this._host + \"/sales.v1.UserActionsProvider/BulkUploadUserActions\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listUserActions(r) {\n const request = r.toApiJson ? r : new GetUserActionsRequest(r);\n return this.http.post(this._host + \"/sales.v1.UserActionsProvider/ListUserActions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UserActionsResponse.fromProto(resp)));\n }\n }\n UserActionsProviderApiService.ɵfac = function UserActionsProviderApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || UserActionsProviderApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n UserActionsProviderApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UserActionsProviderApiService,\n factory: UserActionsProviderApiService.ɵfac,\n providedIn: 'root'\n });\n return UserActionsProviderApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet SalespersonService = /*#__PURE__*/(() => {\n class SalespersonService {\n constructor(_api) {\n this._api = _api;\n }\n /** @deprecated Use getSalespersonBySubjectId or getSalespersonByUserId */\n getSalesperson(partnerId, salespersonId, userId) {\n return salespersonId ? this.getSalespersonBySubjectId(partnerId, salespersonId) : this.getSalespersonByUserId(partnerId, userId || '');\n }\n getSalespersons(partnerId, markets, options) {\n const params = {\n partnerId: partnerId,\n marketIds: markets,\n includeLastLogin: options?.includeLastLogin ?? false\n };\n if (!!options?.searchTerm) {\n params.searchTerm = options.searchTerm;\n }\n if (!!options?.pageSize && !!options?.cursor) {\n params.pagingOptions = {\n pageSize: options.pageSize,\n cursor: options.cursor\n };\n }\n if (!!options?.pageSize && !options?.cursor) {\n params.pagingOptions = {\n pageSize: options.pageSize\n };\n }\n return this._api.lookupSalespersons(params).pipe(map(r => r.salespersons));\n }\n getSalespersonBySubjectId(partnerId, salespersonId) {\n return this._api.getSalesperson({\n partnerId: partnerId,\n salespersonId: salespersonId\n });\n }\n getSalespersonByUserId(partnerId, userId) {\n return this._api.getSalesperson({\n partnerId: partnerId,\n userId: userId\n });\n }\n listSalespersons(filters, cursor, pageSize) {\n return this._api.listSalespersons({\n filters: filters,\n pagingOptions: {\n cursor: cursor,\n pageSize: pageSize\n }\n }).pipe(map(resp => {\n return {\n results: resp.salespersons,\n nextCursor: resp.pagingMetadata.nextCursor,\n hasMore: resp.pagingMetadata.hasMore\n };\n }));\n }\n getAssignedSalespersonForPartner(partnerId, marketId) {\n return this._api.getAssignedSalespersonForPartner({\n partnerId: partnerId,\n marketId: marketId\n });\n }\n sendResetPasswordEmail(partnerId, salespersonId) {\n return this._api.sendResetPasswordEmail({\n partnerId: partnerId,\n salespersonId: salespersonId\n });\n }\n getMultiSalesperson(partnerId, salespersonIds) {\n return this._api.getMultiSalesperson({\n partnerId: partnerId,\n salespersonIds: salespersonIds\n }).pipe(map(resp => resp.salespersons));\n }\n }\n SalespersonService.ɵfac = function SalespersonService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SalespersonService)(i0.ɵɵinject(SalesApiService));\n };\n SalespersonService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SalespersonService,\n factory: SalespersonService.ɵfac,\n providedIn: 'root'\n });\n return SalespersonService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet PagedResponse$2 = class PagedResponse {\n constructor(results, nextCursor, hasMore) {\n this.results = results;\n this.nextCursor = nextCursor;\n this.hasMore = hasMore;\n }\n};\nlet SalesTeamService = /*#__PURE__*/(() => {\n class SalesTeamService {\n constructor(_api) {\n this._api = _api;\n }\n list(partnerId, marketId, cursor, pageSize) {\n return this._api.list({\n filters: {\n partnerId: partnerId,\n marketId: marketId\n },\n pagingOptions: {\n cursor: cursor,\n pageSize: pageSize\n }\n }).pipe(map(resp => ({\n results: resp.salesTeams,\n nextCursor: resp.pagingMetadata.nextCursor,\n hasMore: resp.pagingMetadata.hasMore\n })));\n }\n getMembers(groupId) {\n return this._api.getMembers({\n groupId: groupId\n }).pipe(map(resp => resp.salesPeople || []));\n }\n updateTeamName(groupId, newTeamName) {\n return this._api.updateTeamName({\n groupId: groupId,\n newTeamName: newTeamName\n }).pipe(mapTo(null));\n }\n getSalesTeamsBySalesperson(salespersonId) {\n return this._api.getTeamsBySalespersons({\n salespersonIds: [salespersonId]\n }).pipe(map(resp => {\n if (!resp || !resp.teamMapping) {\n return [];\n }\n return resp.teamMapping.reduce((salesTeams, mapping) => {\n return [...salesTeams, ...((mapping || {\n salesTeams: []\n }).salesTeams || [])];\n }, []);\n }));\n }\n getMulti(groupIds) {\n return this._api.getMulti({\n groupIds: groupIds\n }).pipe(map(resp => resp.salesTeams || []));\n }\n }\n SalesTeamService.ɵfac = function SalesTeamService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SalesTeamService)(i0.ɵɵinject(SalesTeamApiService));\n };\n SalesTeamService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SalesTeamService,\n factory: SalesTeamService.ɵfac,\n providedIn: 'root'\n });\n return SalesTeamService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet PagedResponse$1 = class PagedResponse {\n constructor(results, nextCursor, hasMore) {\n this.results = results;\n this.nextCursor = nextCursor;\n this.hasMore = hasMore;\n }\n};\nlet CampaignSDKService = /*#__PURE__*/(() => {\n class CampaignSDKService {\n constructor(campaignApiService) {\n this.campaignApiService = campaignApiService;\n }\n getMultiCampaigns(partnerId, marketId, accountGroupId, campaignIds) {\n return this.campaignApiService.getMultiCampaigns({\n partnerId: partnerId,\n marketId: marketId,\n accountGroupId: accountGroupId,\n campaignIds: campaignIds\n }).pipe(map(resp => resp.campaigns));\n }\n lookupCampaigns(partnerId, marketId, searchTerm, options) {\n const request = {\n partnerId: partnerId,\n marketId: marketId\n };\n if (!!searchTerm) {\n request.searchTerm = searchTerm;\n }\n request.offset = options?.offset || request.offset;\n request.pageSize = options?.pageSize || request.pageSize;\n request.focus = options?.filters?.focus || request.focus;\n request.state = options?.filters?.state || request.state;\n request.status = options?.filters?.status || request.status;\n return this.campaignApiService.lookupCampaigns(request).pipe(map(resp => resp.campaigns));\n }\n }\n CampaignSDKService.ɵfac = function CampaignSDKService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CampaignSDKService)(i0.ɵɵinject(CampaignApiService));\n };\n CampaignSDKService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CampaignSDKService,\n factory: CampaignSDKService.ɵfac,\n providedIn: 'root'\n });\n return CampaignSDKService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst defaultOptions = {\n withCredentials: true\n};\nlet Businesses = /*#__PURE__*/(() => {\n class Businesses {\n constructor(internal) {\n this.internal = internal;\n }\n search(partnerId, marketId, sortKey, sortAscending, searchOptions) {\n const options = searchOptions || {};\n const request = {\n filters: {\n partnerId: partnerId,\n marketId: marketId,\n query: options.searchTerm,\n salesStatuses: options.salesStatuses,\n salesAction: options.salesAction,\n fromDate: options.fromDate,\n toDate: options.toDate,\n archived: options.archived,\n accountTags: options.accountTags,\n businessCategories: options.businessCategories,\n onCampaign: options.onCampaign,\n snapshotSent: options.snapshotSent,\n assignees: options.assignees,\n goal: options.goal,\n trainingPriorities: options.trainingPriorities,\n customFieldPartnerId: options.customFieldPartnerId,\n lifecycleStage: options.lifecycleStage\n },\n pagingOptions: {\n cursor: options.cursor,\n pageSize: options.pageSize\n },\n sortOptions: {\n sortKey: sortKey,\n sortAscending: sortAscending\n }\n };\n return this.internal.search(request).pipe(map(resp => {\n const respBusinesses = resp.businesses || [];\n return {\n pagingMetadata: resp.pagingMetadata,\n businesses: respBusinesses\n };\n }), share());\n }\n requestSubscriptionChange(businessId, name, phoneNumber, message) {\n return this.internal.requestSubscriptionChange({\n businessId: businessId,\n message: message,\n phoneNumber: phoneNumber,\n name: name\n }).pipe(map(() => true));\n }\n }\n Businesses.ɵfac = function Businesses_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || Businesses)(i0.ɵɵinject(BusinessApiService));\n };\n Businesses.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Businesses,\n factory: Businesses.ɵfac,\n providedIn: 'root'\n });\n return Businesses;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet UserActionService = /*#__PURE__*/(() => {\n class UserActionService {\n constructor(_api) {\n this._api = _api;\n }\n listUserActions(accountGroupId, cursor, pageSize) {\n return this._api.listUserActions({\n accountGroupId: accountGroupId,\n cursor: cursor,\n pageSize: pageSize\n }).pipe(map(resp => ({\n results: resp.userActions,\n nextCursor: resp.pagingMetadata.nextCursor,\n hasMore: resp.pagingMetadata.hasMore\n })));\n }\n }\n UserActionService.ɵfac = function UserActionService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || UserActionService)(i0.ɵɵinject(UserActionsProviderApiService));\n };\n UserActionService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UserActionService,\n factory: UserActionService.ɵfac,\n providedIn: 'root'\n });\n return UserActionService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass PagedResponse {\n constructor(results, nextCursor, hasMore) {\n this.results = results;\n this.nextCursor = nextCursor;\n this.hasMore = hasMore;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar DiscountType = /*#__PURE__*/function (DiscountType) {\n DiscountType[DiscountType[\"DISCOUNT_TYPE_NO_DISCOUNT\"] = 0] = \"DISCOUNT_TYPE_NO_DISCOUNT\";\n DiscountType[DiscountType[\"DISCOUNT_TYPE_PERCENTAGE\"] = 1] = \"DISCOUNT_TYPE_PERCENTAGE\";\n DiscountType[DiscountType[\"DISCOUNT_TYPE_FIXED_AMOUNT\"] = 2] = \"DISCOUNT_TYPE_FIXED_AMOUNT\";\n return DiscountType;\n}(DiscountType || {});\nvar SortFields = /*#__PURE__*/function (SortFields) {\n SortFields[SortFields[\"SORT_FIELDS_CREATED\"] = 0] = \"SORT_FIELDS_CREATED\";\n SortFields[SortFields[\"SORT_FIELDS_UPDATED\"] = 1] = \"SORT_FIELDS_UPDATED\";\n return SortFields;\n}(SortFields || {});\nlet FreshdeskService = /*#__PURE__*/(() => {\n class FreshdeskService {\n constructor(_api) {\n this._api = _api;\n }\n getConfiguration(partnerId) {\n return this._api.getConfiguration(new GetConfigurationRequest({\n partnerId: partnerId\n }));\n }\n setConfiguration(partnerId, domain, apiKey) {\n const r = new SetConfigurationRequest({\n partnerId: partnerId,\n domain: domain,\n apiKey: apiKey\n });\n const errorInterceptor = httpResponse => httpResponse.pipe(switchMap(res => res.ok ? EMPTY : throwError(res.status)));\n return this._api.setConfiguration(r).pipe(errorInterceptor);\n }\n /**\n * Retrieves all tickets from Freshdesk for a given account group id\n * @param partnerID - Scopes the ticket search to a specific partner\n * @param accountGroupID - Scopes the ticket search to a particular accountGroupID\n * @param pagination - Includes pageIndex and pageSize used for paginating results\n *\n * @remarks\n * Freshdesk's API and the underlying µs explicitly uses 1-based page indexing, however this SDK uses 0-based page indexing.\n * Supplying `pageIndex=0` results in a call to the datasource using `pageIndex=1`\n **/\n searchTickets(partnerID, accountGroupID, pagination) {\n const req = new SearchTicketsRequest({\n pagination: {\n ...pagination,\n pageIndex: (pagination?.pageIndex || 0) + 1\n },\n accountGroupId: accountGroupID,\n partnerId: partnerID\n });\n return this._api.searchTickets(req).pipe(map(resp => {\n return resp.tickets ?? [];\n }));\n }\n viewTicket(partnerID, accountGroupId, ticketId, includeFields) {\n const req = new ViewTicketRequest({\n partnerId: partnerID,\n accountGroupId: accountGroupId,\n ticketId: ticketId,\n includeFields: includeFields\n });\n return this._api.viewTicket(req);\n }\n }\n FreshdeskService.ɵfac = function FreshdeskService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FreshdeskService)(i0.ɵɵinject(FreshdeskApiService));\n };\n FreshdeskService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FreshdeskService,\n factory: FreshdeskService.ɵfac,\n providedIn: \"root\"\n });\n return FreshdeskService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet PartnerService = /*#__PURE__*/(() => {\n class PartnerService {\n constructor(_api) {\n this._api = _api;\n }\n getPartnerSalesDomain(partnerId) {\n const r = new PartnerSalesDomainRequest({\n partnerId: partnerId\n });\n return this._api.getPartnerSalesDomain(r).pipe(map(resp => resp.domain));\n }\n updatePartnerSalesDomain(partnerId, domain) {\n const r = new UpdatePartnerSalesDomainRequest({\n partnerId: partnerId,\n domain: domain\n });\n return this._api.updatePartnerSalesDomain(r).pipe(mapTo(null));\n }\n }\n PartnerService.ɵfac = function PartnerService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PartnerService)(i0.ɵɵinject(PartnerApiService));\n };\n PartnerService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PartnerService,\n factory: PartnerService.ɵfac,\n providedIn: 'root'\n });\n return PartnerService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet TasksService = /*#__PURE__*/(() => {\n class TasksService {\n constructor(_api) {\n this._api = _api;\n }\n createSalesTask(title, partnerId, marketId, accountGroupId, dueDate, salespersonIds) {\n const req = {\n partnerId: partnerId,\n marketId: marketId,\n accountGroupId: accountGroupId,\n dueDate: dueDate,\n salespersonIds: salespersonIds,\n title: title\n };\n return this._api.createSalesTask(req).pipe(switchMap(resp => {\n if (!resp.taskId) {\n return throwError('No task ID returned');\n }\n if (!resp.taskNamespace) {\n return throwError('No task namespace returned');\n }\n return of({\n taskId: resp.taskId,\n taskNamespace: resp.taskNamespace\n });\n }));\n }\n assignSalesTask(partnerId, marketId, taskId, salespersonUserId, accountGroupId) {\n const req = {\n partnerId: partnerId,\n marketId: marketId,\n accountGroupId: accountGroupId,\n taskId: taskId,\n salespersonUserId: salespersonUserId\n };\n return this._api.assignSalesTask(req).pipe(map(v => v.body));\n }\n }\n TasksService.ɵfac = function TasksService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TasksService)(i0.ɵɵinject(TasksApiService));\n };\n TasksService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TasksService,\n factory: TasksService.ɵfac,\n providedIn: 'root'\n });\n return TasksService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Archived, AutoAssignCriteria, AutoAssignCriteriaAccountOriginCriteria, AutoAssignCriteriaCategoryCriteria, AutoAssignCriteriaConversionPointCriteria, AutoAssignCriteriaLocationCriteria, AutoAssignCriteriaTagCriteria, AutoAssignRule, Businesses, Campaign, CampaignSDKService, CriteriaMatchType, DiscountType, FreshdeskService, GetAutoAssignConfigResponse, LifecycleStage, PagedResponse$1 as PagedResponse, PartnerService, SalesApiService, SalesTeamService, Salesperson, SalespersonService, Snapshot, SortFields, TagMatchType, TasksService, TicketPriority, UserAction, UserActionService };\n","import { inject, Injectable } from '@angular/core';\nimport {\n combineLatest,\n distinctUntilChanged,\n forkJoin,\n map,\n mergeMap,\n Observable,\n shareReplay,\n switchMap,\n catchError,\n of,\n filter,\n} from 'rxjs';\nimport {\n CalendarType,\n HostService,\n newBusinessCenterApplicationContextProperties,\n newPartnerCenterApplicationContextProperties,\n} from '@vendasta/meetings';\nimport { CalendarWithMeetingTypes } from '../interfaces/config.interface';\nimport { SalespersonService, SalesTeamService } from '@vendasta/sales';\n\nimport { ACCOUNT_GROUP_ID_TOKEN, CURRENT_USER_ID_TOKEN, PARTNER_ID_TOKEN } from '../tokens';\n\n@Injectable()\nexport class BookingConfigService {\n private readonly currentUserId$ = inject(CURRENT_USER_ID_TOKEN);\n private readonly partnerId$ = inject(PARTNER_ID_TOKEN);\n private readonly accountGroupId$ = inject(ACCOUNT_GROUP_ID_TOKEN);\n\n private readonly meetingService = inject(HostService);\n private readonly salespersonService = inject(SalespersonService);\n private readonly salesTeamService = inject(SalesTeamService);\n\n private readonly partnerIdAndAccountGroupId$ = combineLatest([this.partnerId$, this.accountGroupId$]).pipe(\n distinctUntilChanged((a, b) => a[0] === b[0] && a[1] === b[1]),\n );\n\n private readonly salesPersonId$ = combineLatest([this.partnerId$, this.currentUserId$]).pipe(\n switchMap(([partnerId, userId]) => this.salespersonService.getSalespersonByUserId(partnerId, userId)),\n catchError(() => of(undefined)),\n map((salesperson) => salesperson?.salespersonId || ''),\n shareReplay(1),\n );\n\n private readonly salesTeamIDs$ = this.salesPersonId$.pipe(\n switchMap((id) => (id ? this.salesTeamService.getSalesTeamsBySalesperson(id) : of([]))),\n catchError(() => of([])),\n map((teams) => teams.map((team) => team?.groupId).filter((groupId): groupId is string => groupId !== undefined)),\n );\n\n private readonly personalCalendar$ = combineLatest([this.partnerIdAndAccountGroupId$, this.currentUserId$]).pipe(\n switchMap(([[partnerId, accountGroupId], userId]) => {\n if (accountGroupId) {\n return this.meetingService.ensurePersonalCalendarExists({\n applicationContextProperties: newBusinessCenterApplicationContextProperties({ business_id: accountGroupId }),\n userId: userId,\n });\n } else {\n return this.salesPersonId$.pipe(\n filter((salespersonId) => !!salespersonId),\n switchMap(() =>\n this.meetingService.ensurePersonalCalendarExists({\n applicationContextProperties: newPartnerCenterApplicationContextProperties({ partner_id: partnerId }),\n userId: userId,\n }),\n ),\n );\n }\n }),\n switchMap((calendarId) => this.meetingService.getCalendar({ calendarId: calendarId })),\n );\n\n private readonly groupCalendars$ = this.partnerIdAndAccountGroupId$.pipe(\n switchMap(([_, accountGroupId]) => {\n if (accountGroupId) {\n return this.meetingService.ensureGroupCalendarsExist({ externalIds: [accountGroupId] });\n } else {\n return this.salesTeamIDs$.pipe(\n switchMap((salesTeamIds) =>\n salesTeamIds.length === 0\n ? of([])\n : this.meetingService.ensureGroupCalendarsExist({\n externalIds: salesTeamIds,\n }),\n ),\n );\n }\n }),\n mergeMap((calendarIds) => {\n if (calendarIds.length === 0) {\n return of([]);\n }\n return forkJoin(calendarIds.map((calendarId) => this.meetingService.getCalendar({ calendarId })));\n }),\n );\n\n private readonly allCalendars$ = combineLatest([this.personalCalendar$, this.groupCalendars$]).pipe(\n map(([personalCalendar, groupCalendars]) => [personalCalendar, ...groupCalendars]),\n shareReplay(1),\n );\n\n private readonly calendarEvents$ = this.allCalendars$.pipe(\n switchMap((calendars) => {\n const calendarIds = calendars.map((calendar) => calendar.id);\n\n return this.meetingService.getMeetingTypesForCalendars({\n calendarIds: calendarIds,\n metadata: {},\n });\n }),\n );\n\n getCalendarsWithTypes(): Observable {\n return combineLatest([this.allCalendars$, this.calendarEvents$]).pipe(\n map(([calendars, events]) =>\n calendars\n .filter((calendar) => calendar.calendarType !== CalendarType.CALENDAR_TYPE_INVALID)\n .map(\n (calendar) =>\n ({\n calendarName: calendar.displayName,\n calendarId: calendar.id,\n meetingTypes:\n events?.[calendar.id]?.map((mt) => ({\n name: mt.name,\n meetingTypeId: mt.id,\n calendarId: calendar.id,\n })) || [],\n isPersonal: calendar.calendarType === CalendarType.CALENDAR_TYPE_PERSONAL,\n }) as CalendarWithMeetingTypes,\n )\n .sort((a, _) => (a.isPersonal ? -1 : 1)),\n ),\n );\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { AiAssistantService } from './services/ai-assistant.service';\nimport { AiAssistantConfig } from './interfaces/config.interface';\nimport {\n ACCOUNT_GROUP_ID_TOKEN,\n AI_ASSISTANT_CONFIG_TOKEN,\n AI_DEFAULT_CONNECTIONS_TOKEN,\n AI_DEFAULT_WORKFORCE_TOKEN,\n CURRENT_USER_ID_TOKEN,\n MARKET_ID_TOKEN,\n PARTNER_ID_TOKEN,\n} from './tokens';\nimport { isObservable, Observable, of } from 'rxjs';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport {\n ChatReceptionistAvatar,\n ContentWriterAvatar,\n ReviewManagerAvatar,\n SalesCoachAvatar,\n SEOAnalystAvatar,\n smsIcon,\n voiceIcon,\n VoiceReceptionistAvatar,\n webchatIcon,\n whatsappIcon,\n} from '../assets/avatars/avatar-svg-string';\nimport { SmsDetailsService } from './services/sms-details.service';\nimport { BookingConfigService } from './services/booking-config.service';\nimport { AiAssistant, AiConnection } from './interfaces/ai-assistant.interface';\nimport { DEFAULT_CHAT_RECEPTIONIST_AVATAR_SVG_ICON } from './ai-assistant.constants';\n\n@NgModule()\nexport class AiAssistantModule {\n static forRoot(c: { config: InjectionToken }): ModuleWithProviders {\n return {\n ngModule: AiAssistantModule,\n providers: [\n AiAssistantService,\n BookingConfigService,\n SmsDetailsService,\n { provide: AI_ASSISTANT_CONFIG_TOKEN, useExisting: c.config },\n { provide: ACCOUNT_GROUP_ID_TOKEN, deps: [AI_ASSISTANT_CONFIG_TOKEN], useFactory: accountGroupIdFactory },\n { provide: MARKET_ID_TOKEN, deps: [AI_ASSISTANT_CONFIG_TOKEN], useFactory: marketIdFactory },\n { provide: PARTNER_ID_TOKEN, deps: [AI_ASSISTANT_CONFIG_TOKEN], useFactory: partnerIdFactory },\n {\n provide: AI_DEFAULT_WORKFORCE_TOKEN,\n deps: [AI_ASSISTANT_CONFIG_TOKEN],\n useFactory: aiDefaultWorkforceFactory,\n },\n {\n provide: AI_DEFAULT_CONNECTIONS_TOKEN,\n deps: [AI_ASSISTANT_CONFIG_TOKEN],\n useFactory: aiDefaultConnectionsFactory,\n },\n {\n provide: CURRENT_USER_ID_TOKEN,\n deps: [AI_ASSISTANT_CONFIG_TOKEN],\n useFactory: currentUserIdFactory,\n },\n ],\n };\n }\n\n constructor(iconRegistry: MatIconRegistry, sanitizer: DomSanitizer) {\n iconRegistry.addSvgIconLiteral(\n DEFAULT_CHAT_RECEPTIONIST_AVATAR_SVG_ICON,\n sanitizer.bypassSecurityTrustHtml(ChatReceptionistAvatar),\n );\n iconRegistry.addSvgIconLiteral('ai-voice-receptionist', sanitizer.bypassSecurityTrustHtml(VoiceReceptionistAvatar));\n iconRegistry.addSvgIconLiteral('ai-content-writer', sanitizer.bypassSecurityTrustHtml(ContentWriterAvatar));\n iconRegistry.addSvgIconLiteral('ai-review-manager', sanitizer.bypassSecurityTrustHtml(ReviewManagerAvatar));\n iconRegistry.addSvgIconLiteral('ai-sales-coach', sanitizer.bypassSecurityTrustHtml(SalesCoachAvatar));\n iconRegistry.addSvgIconLiteral('ai-seo-analyst', sanitizer.bypassSecurityTrustHtml(SEOAnalystAvatar));\n iconRegistry.addSvgIconLiteral('WebchatWidget', sanitizer.bypassSecurityTrustHtml(webchatIcon));\n iconRegistry.addSvgIconLiteral('SMS', sanitizer.bypassSecurityTrustHtml(smsIcon));\n iconRegistry.addSvgIconLiteral('Voice', sanitizer.bypassSecurityTrustHtml(voiceIcon));\n iconRegistry.addSvgIconLiteral('Whatsapp', sanitizer.bypassSecurityTrustHtml(whatsappIcon));\n }\n}\n\nfunction accountGroupIdFactory(config: AiAssistantConfig): Observable {\n return isObservable(config.accountGroupId$) ? config.accountGroupId$ : of(config.accountGroupId$);\n}\n\nfunction marketIdFactory(config: AiAssistantConfig): Observable {\n return isObservable(config.marketId$) ? config.marketId$ : of(config.marketId$);\n}\n\nfunction partnerIdFactory(config: AiAssistantConfig): Observable {\n return isObservable(config.partnerId$) ? config.partnerId$ : of(config.partnerId$);\n}\n\nfunction aiDefaultWorkforceFactory(config: AiAssistantConfig): Observable {\n return isObservable(config.defaultAIWorkforce$) ? config.defaultAIWorkforce$ : of(config.defaultAIWorkforce$);\n}\n\nfunction aiDefaultConnectionsFactory(config: AiAssistantConfig): Observable {\n return isObservable(config.defaultConnections$) ? config.defaultConnections$ : of(config.defaultConnections$);\n}\n\nfunction currentUserIdFactory(config: AiAssistantConfig): Observable {\n return isObservable(config.currentUserId$) ? config.currentUserId$ : of(config.currentUserId$);\n}\n","import * as i0 from '@angular/core';\nimport { Injectable, inject } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar EmbeddingRerankerMethod = /*#__PURE__*/function (EmbeddingRerankerMethod) {\n EmbeddingRerankerMethod[EmbeddingRerankerMethod[\"EMBEDDING_RERANKER_METHOD_INVALID\"] = 0] = \"EMBEDDING_RERANKER_METHOD_INVALID\";\n EmbeddingRerankerMethod[EmbeddingRerankerMethod[\"EMBEDDING_RERANKER_METHOD_PREQUERY_HYDE\"] = 1] = \"EMBEDDING_RERANKER_METHOD_PREQUERY_HYDE\";\n return EmbeddingRerankerMethod;\n}(EmbeddingRerankerMethod || {});\nvar EmbeddingSourceType = /*#__PURE__*/function (EmbeddingSourceType) {\n EmbeddingSourceType[EmbeddingSourceType[\"EMBEDDING_SOURCE_TYPE_INVALID\"] = 0] = \"EMBEDDING_SOURCE_TYPE_INVALID\";\n EmbeddingSourceType[EmbeddingSourceType[\"EMBEDDING_SOURCE_TYPE_USER_INPUT\"] = 1] = \"EMBEDDING_SOURCE_TYPE_USER_INPUT\";\n EmbeddingSourceType[EmbeddingSourceType[\"EMBEDDING_SOURCE_TYPE_WEBSITE\"] = 2] = \"EMBEDDING_SOURCE_TYPE_WEBSITE\";\n EmbeddingSourceType[EmbeddingSourceType[\"EMBEDDING_SOURCE_TYPE_BUSINESS_PROFILE\"] = 3] = \"EMBEDDING_SOURCE_TYPE_BUSINESS_PROFILE\";\n EmbeddingSourceType[EmbeddingSourceType[\"EMBEDDING_SOURCE_TYPE_CATEGORIES\"] = 4] = \"EMBEDDING_SOURCE_TYPE_CATEGORIES\";\n return EmbeddingSourceType;\n}(EmbeddingSourceType || {});\nvar EmbeddingVendorModel = /*#__PURE__*/function (EmbeddingVendorModel) {\n EmbeddingVendorModel[EmbeddingVendorModel[\"EMBEDDING_MODEL_INVALID\"] = 0] = \"EMBEDDING_MODEL_INVALID\";\n EmbeddingVendorModel[EmbeddingVendorModel[\"EMBEDDING_MODEL_OPENAI_ADA_V2\"] = 1] = \"EMBEDDING_MODEL_OPENAI_ADA_V2\";\n EmbeddingVendorModel[EmbeddingVendorModel[\"EMBEDDING_MODEL_GOOGLE_GECKO_V2\"] = 2] = \"EMBEDDING_MODEL_GOOGLE_GECKO_V2\";\n EmbeddingVendorModel[EmbeddingVendorModel[\"EMBEDDING_MODEL_TUNED_CATEGORY\"] = 3] = \"EMBEDDING_MODEL_TUNED_CATEGORY\";\n return EmbeddingVendorModel;\n}(EmbeddingVendorModel || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar KnowledgeSourceConfigType = /*#__PURE__*/function (KnowledgeSourceConfigType) {\n KnowledgeSourceConfigType[KnowledgeSourceConfigType[\"KNOWLEDGE_SOURCE_CONFIG_TYPE_INVALID\"] = 0] = \"KNOWLEDGE_SOURCE_CONFIG_TYPE_INVALID\";\n KnowledgeSourceConfigType[KnowledgeSourceConfigType[\"KNOWLEDGE_SOURCE_CONFIG_TYPE_BUSINESS_PROFILE\"] = 1] = \"KNOWLEDGE_SOURCE_CONFIG_TYPE_BUSINESS_PROFILE\";\n KnowledgeSourceConfigType[KnowledgeSourceConfigType[\"KNOWLEDGE_SOURCE_CONFIG_TYPE_CUSTOM_DATA\"] = 2] = \"KNOWLEDGE_SOURCE_CONFIG_TYPE_CUSTOM_DATA\";\n KnowledgeSourceConfigType[KnowledgeSourceConfigType[\"KNOWLEDGE_SOURCE_CONFIG_TYPE_WEBSITE_SCRAPE\"] = 3] = \"KNOWLEDGE_SOURCE_CONFIG_TYPE_WEBSITE_SCRAPE\";\n return KnowledgeSourceConfigType;\n}(KnowledgeSourceConfigType || {});\nvar TrainingProgress = /*#__PURE__*/function (TrainingProgress) {\n TrainingProgress[TrainingProgress[\"TRAINING_INVALID\"] = 0] = \"TRAINING_INVALID\";\n TrainingProgress[TrainingProgress[\"TRAINING_QUEUED\"] = 1] = \"TRAINING_QUEUED\";\n TrainingProgress[TrainingProgress[\"TRAINING_IN_PROGRESS\"] = 2] = \"TRAINING_IN_PROGRESS\";\n TrainingProgress[TrainingProgress[\"TRAINING_DONE\"] = 3] = \"TRAINING_DONE\";\n return TrainingProgress;\n}(TrainingProgress || {});\nvar WebsiteScrapeConfigCrawlMode = /*#__PURE__*/function (WebsiteScrapeConfigCrawlMode) {\n WebsiteScrapeConfigCrawlMode[WebsiteScrapeConfigCrawlMode[\"WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_INVALID\"] = 0] = \"WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_INVALID\";\n WebsiteScrapeConfigCrawlMode[WebsiteScrapeConfigCrawlMode[\"WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SINGLE\"] = 1] = \"WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SINGLE\";\n WebsiteScrapeConfigCrawlMode[WebsiteScrapeConfigCrawlMode[\"WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_RECURSIVE\"] = 2] = \"WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_RECURSIVE\";\n WebsiteScrapeConfigCrawlMode[WebsiteScrapeConfigCrawlMode[\"WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SITEMAP\"] = 3] = \"WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SITEMAP\";\n return WebsiteScrapeConfigCrawlMode;\n}(WebsiteScrapeConfigCrawlMode || {});\nvar WebsiteScrapeConfigProgress = /*#__PURE__*/function (WebsiteScrapeConfigProgress) {\n WebsiteScrapeConfigProgress[WebsiteScrapeConfigProgress[\"WEBSITE_SCRAPE_CONFIG_PROGRESS_INVALID\"] = 0] = \"WEBSITE_SCRAPE_CONFIG_PROGRESS_INVALID\";\n WebsiteScrapeConfigProgress[WebsiteScrapeConfigProgress[\"WEBSITE_SCRAPE_CONFIG_PROGRESS_QUEUED\"] = 1] = \"WEBSITE_SCRAPE_CONFIG_PROGRESS_QUEUED\";\n WebsiteScrapeConfigProgress[WebsiteScrapeConfigProgress[\"WEBSITE_SCRAPE_CONFIG_PROGRESS_IN_PROGRESS\"] = 2] = \"WEBSITE_SCRAPE_CONFIG_PROGRESS_IN_PROGRESS\";\n WebsiteScrapeConfigProgress[WebsiteScrapeConfigProgress[\"WEBSITE_SCRAPE_CONFIG_PROGRESS_DONE\"] = 3] = \"WEBSITE_SCRAPE_CONFIG_PROGRESS_DONE\";\n return WebsiteScrapeConfigProgress;\n}(WebsiteScrapeConfigProgress || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ChatMessageRole = /*#__PURE__*/function (ChatMessageRole) {\n ChatMessageRole[ChatMessageRole[\"CHAT_MESSAGE_ROLE_INVALID\"] = 0] = \"CHAT_MESSAGE_ROLE_INVALID\";\n ChatMessageRole[ChatMessageRole[\"CHAT_MESSAGE_ROLE_USER\"] = 1] = \"CHAT_MESSAGE_ROLE_USER\";\n ChatMessageRole[ChatMessageRole[\"CHAT_MESSAGE_ROLE_ASSISTANT\"] = 2] = \"CHAT_MESSAGE_ROLE_ASSISTANT\";\n return ChatMessageRole;\n}(ChatMessageRole || {});\nvar FunctionExecutionJobStatus = /*#__PURE__*/function (FunctionExecutionJobStatus) {\n FunctionExecutionJobStatus[FunctionExecutionJobStatus[\"FUNCTION_EXECUTION_JOB_STATUS_INVALID\"] = 0] = \"FUNCTION_EXECUTION_JOB_STATUS_INVALID\";\n FunctionExecutionJobStatus[FunctionExecutionJobStatus[\"FUNCTION_EXECUTION_JOB_STATUS_QUEUED\"] = 1] = \"FUNCTION_EXECUTION_JOB_STATUS_QUEUED\";\n FunctionExecutionJobStatus[FunctionExecutionJobStatus[\"FUNCTION_EXECUTION_JOB_STATUS_RUNNING\"] = 2] = \"FUNCTION_EXECUTION_JOB_STATUS_RUNNING\";\n FunctionExecutionJobStatus[FunctionExecutionJobStatus[\"FUNCTION_EXECUTION_JOB_STATUS_COMPLETE\"] = 3] = \"FUNCTION_EXECUTION_JOB_STATUS_COMPLETE\";\n return FunctionExecutionJobStatus;\n}(FunctionExecutionJobStatus || {});\nvar RefreshAccountGroupWebsiteEmbeddingsProgress = /*#__PURE__*/function (RefreshAccountGroupWebsiteEmbeddingsProgress) {\n RefreshAccountGroupWebsiteEmbeddingsProgress[RefreshAccountGroupWebsiteEmbeddingsProgress[\"REFRESH_WEBSITE_EMBEDDINGS_PROGRESS_INVALID\"] = 0] = \"REFRESH_WEBSITE_EMBEDDINGS_PROGRESS_INVALID\";\n RefreshAccountGroupWebsiteEmbeddingsProgress[RefreshAccountGroupWebsiteEmbeddingsProgress[\"REFRESH_WEBSITE_EMBEDDINGS_PROGRESS_SCRAPE_STARTED\"] = 1] = \"REFRESH_WEBSITE_EMBEDDINGS_PROGRESS_SCRAPE_STARTED\";\n RefreshAccountGroupWebsiteEmbeddingsProgress[RefreshAccountGroupWebsiteEmbeddingsProgress[\"REFRESH_WEBSITE_EMBEDDINGS_PROGRESS_ANALYSIS_STARTED\"] = 2] = \"REFRESH_WEBSITE_EMBEDDINGS_PROGRESS_ANALYSIS_STARTED\";\n RefreshAccountGroupWebsiteEmbeddingsProgress[RefreshAccountGroupWebsiteEmbeddingsProgress[\"REFRESH_WEBSITE_EMBEDDINGS_PROGRESS_COMPLETE\"] = 3] = \"REFRESH_WEBSITE_EMBEDDINGS_PROGRESS_COMPLETE\";\n RefreshAccountGroupWebsiteEmbeddingsProgress[RefreshAccountGroupWebsiteEmbeddingsProgress[\"REFRESH_WEBSITE_EMBEDDINGS_PROGRESS_FAILED\"] = 4] = \"REFRESH_WEBSITE_EMBEDDINGS_PROGRESS_FAILED\";\n return RefreshAccountGroupWebsiteEmbeddingsProgress;\n}(RefreshAccountGroupWebsiteEmbeddingsProgress || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$5(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Embedding {\n static fromProto(proto) {\n let m = new Embedding();\n m = Object.assign(m, proto);\n if (proto.metadata) {\n m.metadata = EmbeddingMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass EmbeddingCitation {\n static fromProto(proto) {\n let m = new EmbeddingCitation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.link !== 'undefined') {\n toReturn['link'] = this.link;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass EmbeddingMetadata {\n static fromProto(proto) {\n let m = new EmbeddingMetadata();\n m = Object.assign(m, proto);\n if (proto.createdAt) {\n m.createdAt = new Date(proto.createdAt);\n }\n if (proto.updatedAt) {\n m.updatedAt = new Date(proto.updatedAt);\n }\n if (proto.relationship) {\n m.relationship = EmbeddingRelationship.fromProto(proto.relationship);\n }\n if (proto.sourceType) {\n m.sourceType = enumStringToValue$5(EmbeddingSourceType, proto.sourceType);\n }\n if (proto.vendorModel) {\n m.vendorModel = enumStringToValue$5(EmbeddingVendorModel, proto.vendorModel);\n }\n if (proto.citation) {\n m.citation = EmbeddingCitation.fromProto(proto.citation);\n }\n if (proto.tags) {\n m.tags = proto.tags.map(Tag.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.createdBy !== 'undefined') {\n toReturn['createdBy'] = this.createdBy;\n }\n if (typeof this.createdAt !== 'undefined' && this.createdAt !== null) {\n toReturn['createdAt'] = 'toApiJson' in this.createdAt ? this.createdAt.toApiJson() : this.createdAt;\n }\n if (typeof this.updatedAt !== 'undefined' && this.updatedAt !== null) {\n toReturn['updatedAt'] = 'toApiJson' in this.updatedAt ? this.updatedAt.toApiJson() : this.updatedAt;\n }\n if (typeof this.relationship !== 'undefined' && this.relationship !== null) {\n toReturn['relationship'] = 'toApiJson' in this.relationship ? this.relationship.toApiJson() : this.relationship;\n }\n if (typeof this.sourceType !== 'undefined') {\n toReturn['sourceType'] = this.sourceType;\n }\n if (typeof this.sourceFeature !== 'undefined') {\n toReturn['sourceFeature'] = this.sourceFeature;\n }\n if (typeof this.vendorModel !== 'undefined') {\n toReturn['vendorModel'] = this.vendorModel;\n }\n if (typeof this.citation !== 'undefined' && this.citation !== null) {\n toReturn['citation'] = 'toApiJson' in this.citation ? this.citation.toApiJson() : this.citation;\n }\n if (typeof this.disabled !== 'undefined') {\n toReturn['disabled'] = this.disabled;\n }\n if (typeof this.tags !== 'undefined' && this.tags !== null) {\n toReturn['tags'] = 'toApiJson' in this.tags ? this.tags.toApiJson() : this.tags;\n }\n return toReturn;\n }\n}\nclass EmbeddingRelationship {\n static fromProto(proto) {\n let m = new EmbeddingRelationship();\n m = Object.assign(m, proto);\n if (proto.accountGroup) {\n m.accountGroup = EmbeddingRelationshipAccountGroup.fromProto(proto.accountGroup);\n }\n if (proto.partner) {\n m.partner = EmbeddingRelationshipPartner.fromProto(proto.partner);\n }\n if (proto.admin) {\n m.admin = EmbeddingRelationshipAdmin.fromProto(proto.admin);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroup !== 'undefined' && this.accountGroup !== null) {\n toReturn['accountGroup'] = 'toApiJson' in this.accountGroup ? this.accountGroup.toApiJson() : this.accountGroup;\n }\n if (typeof this.partner !== 'undefined' && this.partner !== null) {\n toReturn['partner'] = 'toApiJson' in this.partner ? this.partner.toApiJson() : this.partner;\n }\n if (typeof this.admin !== 'undefined' && this.admin !== null) {\n toReturn['admin'] = 'toApiJson' in this.admin ? this.admin.toApiJson() : this.admin;\n }\n return toReturn;\n }\n}\nclass EmbeddingRelationshipAccountGroup {\n static fromProto(proto) {\n let m = new EmbeddingRelationshipAccountGroup();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass EmbeddingRelationshipAdmin {\n static fromProto(proto) {\n let m = new EmbeddingRelationshipAdmin();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass EmbeddingRelationshipPartner {\n static fromProto(proto) {\n let m = new EmbeddingRelationshipPartner();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass Tag {\n static fromProto(proto) {\n let m = new Tag();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$4(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass NamespaceAccountGroupNamespace {\n static fromProto(proto) {\n let m = new NamespaceAccountGroupNamespace();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass NamespaceAdminNamespace {\n static fromProto(proto) {\n let m = new NamespaceAdminNamespace();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass App {\n static fromProto(proto) {\n let m = new App();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.knowledgeBaseKeys) {\n m.knowledgeBaseKeys = proto.knowledgeBaseKeys.map(KnowledgeBaseKey.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.configurationUrl !== 'undefined') {\n toReturn['configurationUrl'] = this.configurationUrl;\n }\n if (typeof this.knowledgeBaseKeys !== 'undefined' && this.knowledgeBaseKeys !== null) {\n toReturn['knowledgeBaseKeys'] = 'toApiJson' in this.knowledgeBaseKeys ? this.knowledgeBaseKeys.toApiJson() : this.knowledgeBaseKeys;\n }\n if (typeof this.appType !== 'undefined') {\n toReturn['appType'] = this.appType;\n }\n if (typeof this.appTypeName !== 'undefined') {\n toReturn['appTypeName'] = this.appTypeName;\n }\n if (typeof this.iconUrl !== 'undefined') {\n toReturn['iconUrl'] = this.iconUrl;\n }\n return toReturn;\n }\n}\nclass AppKey {\n static fromProto(proto) {\n let m = new AppKey();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.appId !== 'undefined') {\n toReturn['appId'] = this.appId;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass KnowledgeSourceConfigBusinessProfileConfig {\n static fromProto(proto) {\n let m = new KnowledgeSourceConfigBusinessProfileConfig();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass KnowledgeSourceConfigCustomDataConfig {\n static fromProto(proto) {\n let m = new KnowledgeSourceConfigCustomDataConfig();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.text !== 'undefined') {\n toReturn['text'] = this.text;\n }\n if (typeof this.fileUrl !== 'undefined') {\n toReturn['fileUrl'] = this.fileUrl;\n }\n return toReturn;\n }\n}\nclass KnowledgeBase {\n static fromProto(proto) {\n let m = new KnowledgeBase();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.knowledgeSourceKeys) {\n m.knowledgeSourceKeys = proto.knowledgeSourceKeys.map(KnowledgeSourceKey.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.knowledgeSourceKeys !== 'undefined' && this.knowledgeSourceKeys !== null) {\n toReturn['knowledgeSourceKeys'] = 'toApiJson' in this.knowledgeSourceKeys ? this.knowledgeSourceKeys.toApiJson() : this.knowledgeSourceKeys;\n }\n return toReturn;\n }\n}\nclass KnowledgeBaseKey {\n static fromProto(proto) {\n let m = new KnowledgeBaseKey();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.knowledgeBaseId !== 'undefined') {\n toReturn['knowledgeBaseId'] = this.knowledgeBaseId;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass KnowledgeSource {\n static fromProto(proto) {\n let m = new KnowledgeSource();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.config) {\n m.config = KnowledgeSourceConfig.fromProto(proto.config);\n }\n if (proto.knowledgeBaseKeys) {\n m.knowledgeBaseKeys = proto.knowledgeBaseKeys.map(KnowledgeBaseKey.fromProto);\n }\n if (proto.training) {\n m.training = KnowledgeSourceTraining.fromProto(proto.training);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n if (typeof this.knowledgeBaseKeys !== 'undefined' && this.knowledgeBaseKeys !== null) {\n toReturn['knowledgeBaseKeys'] = 'toApiJson' in this.knowledgeBaseKeys ? this.knowledgeBaseKeys.toApiJson() : this.knowledgeBaseKeys;\n }\n if (typeof this.training !== 'undefined' && this.training !== null) {\n toReturn['training'] = 'toApiJson' in this.training ? this.training.toApiJson() : this.training;\n }\n return toReturn;\n }\n}\nclass KnowledgeSourceConfig {\n static fromProto(proto) {\n let m = new KnowledgeSourceConfig();\n m = Object.assign(m, proto);\n if (proto.businessProfileConfig) {\n m.businessProfileConfig = KnowledgeSourceConfigBusinessProfileConfig.fromProto(proto.businessProfileConfig);\n }\n if (proto.customDataConfig) {\n m.customDataConfig = KnowledgeSourceConfigCustomDataConfig.fromProto(proto.customDataConfig);\n }\n if (proto.websiteScrapeConfig) {\n m.websiteScrapeConfig = KnowledgeSourceConfigWebsiteScrapeConfig.fromProto(proto.websiteScrapeConfig);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessProfileConfig !== 'undefined' && this.businessProfileConfig !== null) {\n toReturn['businessProfileConfig'] = 'toApiJson' in this.businessProfileConfig ? this.businessProfileConfig.toApiJson() : this.businessProfileConfig;\n }\n if (typeof this.customDataConfig !== 'undefined' && this.customDataConfig !== null) {\n toReturn['customDataConfig'] = 'toApiJson' in this.customDataConfig ? this.customDataConfig.toApiJson() : this.customDataConfig;\n }\n if (typeof this.websiteScrapeConfig !== 'undefined' && this.websiteScrapeConfig !== null) {\n toReturn['websiteScrapeConfig'] = 'toApiJson' in this.websiteScrapeConfig ? this.websiteScrapeConfig.toApiJson() : this.websiteScrapeConfig;\n }\n return toReturn;\n }\n}\nclass KnowledgeSourceKey {\n static fromProto(proto) {\n let m = new KnowledgeSourceKey();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.knowledgeSourceId !== 'undefined') {\n toReturn['knowledgeSourceId'] = this.knowledgeSourceId;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass KnowledgeSourceTraining {\n static fromProto(proto) {\n let m = new KnowledgeSourceTraining();\n m = Object.assign(m, proto);\n if (proto.progress) {\n m.progress = enumStringToValue$4(TrainingProgress, proto.progress);\n }\n if (proto.totalUnits) {\n m.totalUnits = parseInt(proto.totalUnits, 10);\n }\n if (proto.completedUnits) {\n m.completedUnits = parseInt(proto.completedUnits, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.progress !== 'undefined') {\n toReturn['progress'] = this.progress;\n }\n if (typeof this.totalUnits !== 'undefined') {\n toReturn['totalUnits'] = this.totalUnits;\n }\n if (typeof this.completedUnits !== 'undefined') {\n toReturn['completedUnits'] = this.completedUnits;\n }\n return toReturn;\n }\n}\nclass Namespace {\n static fromProto(proto) {\n let m = new Namespace();\n m = Object.assign(m, proto);\n if (proto.accountGroupNamespace) {\n m.accountGroupNamespace = NamespaceAccountGroupNamespace.fromProto(proto.accountGroupNamespace);\n }\n if (proto.partnerNamespace) {\n m.partnerNamespace = NamespacePartnerNamespace.fromProto(proto.partnerNamespace);\n }\n if (proto.adminNamespace) {\n m.adminNamespace = NamespaceAdminNamespace.fromProto(proto.adminNamespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupNamespace !== 'undefined' && this.accountGroupNamespace !== null) {\n toReturn['accountGroupNamespace'] = 'toApiJson' in this.accountGroupNamespace ? this.accountGroupNamespace.toApiJson() : this.accountGroupNamespace;\n }\n if (typeof this.partnerNamespace !== 'undefined' && this.partnerNamespace !== null) {\n toReturn['partnerNamespace'] = 'toApiJson' in this.partnerNamespace ? this.partnerNamespace.toApiJson() : this.partnerNamespace;\n }\n if (typeof this.adminNamespace !== 'undefined' && this.adminNamespace !== null) {\n toReturn['adminNamespace'] = 'toApiJson' in this.adminNamespace ? this.adminNamespace.toApiJson() : this.adminNamespace;\n }\n return toReturn;\n }\n}\nclass NamespacePartnerNamespace {\n static fromProto(proto) {\n let m = new NamespacePartnerNamespace();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass KnowledgeSourceConfigWebsiteScrapeConfigScrapedPage {\n static fromProto(proto) {\n let m = new KnowledgeSourceConfigWebsiteScrapeConfigScrapedPage();\n m = Object.assign(m, proto);\n if (proto.lastScraped) {\n m.lastScraped = new Date(proto.lastScraped);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.errorMessage !== 'undefined') {\n toReturn['errorMessage'] = this.errorMessage;\n }\n if (typeof this.trainingEnabled !== 'undefined') {\n toReturn['trainingEnabled'] = this.trainingEnabled;\n }\n if (typeof this.lastScraped !== 'undefined' && this.lastScraped !== null) {\n toReturn['lastScraped'] = 'toApiJson' in this.lastScraped ? this.lastScraped.toApiJson() : this.lastScraped;\n }\n if (typeof this.doneScraping !== 'undefined') {\n toReturn['doneScraping'] = this.doneScraping;\n }\n return toReturn;\n }\n}\nclass KnowledgeSourceConfigWebsiteScrapeConfig {\n static fromProto(proto) {\n let m = new KnowledgeSourceConfigWebsiteScrapeConfig();\n m = Object.assign(m, proto);\n if (proto.crawlMode) {\n m.crawlMode = enumStringToValue$4(WebsiteScrapeConfigCrawlMode, proto.crawlMode);\n }\n if (proto.scrapedPages) {\n m.scrapedPages = proto.scrapedPages.map(KnowledgeSourceConfigWebsiteScrapeConfigScrapedPage.fromProto);\n }\n if (proto.scrapeProgress) {\n m.scrapeProgress = enumStringToValue$4(WebsiteScrapeConfigProgress, proto.scrapeProgress);\n }\n if (proto.lastScraped) {\n m.lastScraped = new Date(proto.lastScraped);\n }\n if (proto.error) {\n m.error = KnowledgeSourceConfigWebsiteScrapeConfigWebsiteScrapeConfigError.fromProto(proto.error);\n }\n if (proto.inProgressScrapedPages) {\n m.inProgressScrapedPages = proto.inProgressScrapedPages.map(KnowledgeSourceConfigWebsiteScrapeConfigScrapedPage.fromProto);\n }\n if (proto.options) {\n m.options = KnowledgeSourceConfigWebsiteScrapeConfigWebsiteScrapeOptions.fromProto(proto.options);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.crawlMode !== 'undefined') {\n toReturn['crawlMode'] = this.crawlMode;\n }\n if (typeof this.scrapedPages !== 'undefined' && this.scrapedPages !== null) {\n toReturn['scrapedPages'] = 'toApiJson' in this.scrapedPages ? this.scrapedPages.toApiJson() : this.scrapedPages;\n }\n if (typeof this.scrapeProgress !== 'undefined') {\n toReturn['scrapeProgress'] = this.scrapeProgress;\n }\n if (typeof this.lastScraped !== 'undefined' && this.lastScraped !== null) {\n toReturn['lastScraped'] = 'toApiJson' in this.lastScraped ? this.lastScraped.toApiJson() : this.lastScraped;\n }\n if (typeof this.error !== 'undefined' && this.error !== null) {\n toReturn['error'] = 'toApiJson' in this.error ? this.error.toApiJson() : this.error;\n }\n if (typeof this.inProgressScrapedPages !== 'undefined' && this.inProgressScrapedPages !== null) {\n toReturn['inProgressScrapedPages'] = 'toApiJson' in this.inProgressScrapedPages ? this.inProgressScrapedPages.toApiJson() : this.inProgressScrapedPages;\n }\n if (typeof this.options !== 'undefined' && this.options !== null) {\n toReturn['options'] = 'toApiJson' in this.options ? this.options.toApiJson() : this.options;\n }\n return toReturn;\n }\n}\nclass KnowledgeSourceConfigWebsiteScrapeConfigWebsiteScrapeConfigError {\n static fromProto(proto) {\n let m = new KnowledgeSourceConfigWebsiteScrapeConfigWebsiteScrapeConfigError();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.errorMessage !== 'undefined') {\n toReturn['errorMessage'] = this.errorMessage;\n }\n return toReturn;\n }\n}\nclass KnowledgeSourceConfigWebsiteScrapeConfigWebsiteScrapeOptions {\n static fromProto(proto) {\n let m = new KnowledgeSourceConfigWebsiteScrapeConfigWebsiteScrapeOptions();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.disableAutoTraining !== 'undefined') {\n toReturn['disableAutoTraining'] = this.disableAutoTraining;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass FieldMask {\n static fromProto(proto) {\n let m = new FieldMask();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paths !== 'undefined') {\n toReturn['paths'] = this.paths;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n if (proto.totalResults) {\n m.totalResults = parseInt(proto.totalResults, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n if (typeof this.totalResults !== 'undefined') {\n toReturn['totalResults'] = this.totalResults;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ChatAnswerCitation {\n static fromProto(proto) {\n let m = new ChatAnswerCitation();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue(EmbeddingSourceType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.link !== 'undefined') {\n toReturn['link'] = this.link;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n return toReturn;\n }\n}\nclass ChatBookingOption {\n static fromProto(proto) {\n let m = new ChatBookingOption();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.displayText !== 'undefined') {\n toReturn['displayText'] = this.displayText;\n }\n if (typeof this.scheduleId !== 'undefined') {\n toReturn['scheduleId'] = this.scheduleId;\n }\n return toReturn;\n }\n}\nclass ChatMessage {\n static fromProto(proto) {\n let m = new ChatMessage();\n m = Object.assign(m, proto);\n if (proto.role) {\n m.role = enumStringToValue(ChatMessageRole, proto.role);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.role !== 'undefined') {\n toReturn['role'] = this.role;\n }\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n return toReturn;\n }\n}\nclass CreateEmbeddingRequest {\n static fromProto(proto) {\n let m = new CreateEmbeddingRequest();\n m = Object.assign(m, proto);\n if (proto.metadata) {\n m.metadata = EmbeddingMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass CreateEmbeddingResponse {\n static fromProto(proto) {\n let m = new CreateEmbeddingResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass CreateKnowledgeBaseRequest {\n static fromProto(proto) {\n let m = new CreateKnowledgeBaseRequest();\n m = Object.assign(m, proto);\n if (proto.knowledgeBase) {\n m.knowledgeBase = KnowledgeBase.fromProto(proto.knowledgeBase);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.knowledgeBase !== 'undefined' && this.knowledgeBase !== null) {\n toReturn['knowledgeBase'] = 'toApiJson' in this.knowledgeBase ? this.knowledgeBase.toApiJson() : this.knowledgeBase;\n }\n return toReturn;\n }\n}\nclass CreateKnowledgeBaseResponse {\n static fromProto(proto) {\n let m = new CreateKnowledgeBaseResponse();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass CreateKnowledgeSourceRequest {\n static fromProto(proto) {\n let m = new CreateKnowledgeSourceRequest();\n m = Object.assign(m, proto);\n if (proto.knowledgeSource) {\n m.knowledgeSource = KnowledgeSource.fromProto(proto.knowledgeSource);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.knowledgeSource !== 'undefined' && this.knowledgeSource !== null) {\n toReturn['knowledgeSource'] = 'toApiJson' in this.knowledgeSource ? this.knowledgeSource.toApiJson() : this.knowledgeSource;\n }\n return toReturn;\n }\n}\nclass CreateKnowledgeSourceResponse {\n static fromProto(proto) {\n let m = new CreateKnowledgeSourceResponse();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass DeleteAppRequest {\n static fromProto(proto) {\n let m = new DeleteAppRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass DeleteEmbeddingRequest {\n static fromProto(proto) {\n let m = new DeleteEmbeddingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.embeddingId !== 'undefined') {\n toReturn['embeddingId'] = this.embeddingId;\n }\n return toReturn;\n }\n}\nclass DeleteKnowledgeBaseRequest {\n static fromProto(proto) {\n let m = new DeleteKnowledgeBaseRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass DeleteKnowledgeSourceRequest {\n static fromProto(proto) {\n let m = new DeleteKnowledgeSourceRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass FindSimilarEmbeddingsRequestFilters {\n static fromProto(proto) {\n let m = new FindSimilarEmbeddingsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.relationship) {\n m.relationship = EmbeddingRelationship.fromProto(proto.relationship);\n }\n if (proto.sourceType) {\n m.sourceType = proto.sourceType.map(v => enumStringToValue(EmbeddingSourceType, v));\n }\n if (proto.vendorModel) {\n m.vendorModel = enumStringToValue(EmbeddingVendorModel, proto.vendorModel);\n }\n if (proto.tags) {\n m.tags = proto.tags.map(Tag.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.relationship !== 'undefined' && this.relationship !== null) {\n toReturn['relationship'] = 'toApiJson' in this.relationship ? this.relationship.toApiJson() : this.relationship;\n }\n if (typeof this.sourceType !== 'undefined') {\n toReturn['sourceType'] = this.sourceType;\n }\n if (typeof this.vendorModel !== 'undefined') {\n toReturn['vendorModel'] = this.vendorModel;\n }\n if (typeof this.associatedAppId !== 'undefined') {\n toReturn['associatedAppId'] = this.associatedAppId;\n }\n if (typeof this.tags !== 'undefined' && this.tags !== null) {\n toReturn['tags'] = 'toApiJson' in this.tags ? this.tags.toApiJson() : this.tags;\n }\n return toReturn;\n }\n}\nclass ListAllKnowledgeSourcesForAppRequestFilters {\n static fromProto(proto) {\n let m = new ListAllKnowledgeSourcesForAppRequestFilters();\n m = Object.assign(m, proto);\n if (proto.configTypes) {\n m.configTypes = proto.configTypes.map(v => enumStringToValue(KnowledgeSourceConfigType, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.configTypes !== 'undefined') {\n toReturn['configTypes'] = this.configTypes;\n }\n return toReturn;\n }\n}\nclass ListAppsRequestFilters {\n static fromProto(proto) {\n let m = new ListAppsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass ListEmbeddingsRequestFilters {\n static fromProto(proto) {\n let m = new ListEmbeddingsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.relationship) {\n m.relationship = EmbeddingRelationship.fromProto(proto.relationship);\n }\n if (proto.sourceType) {\n m.sourceType = proto.sourceType.map(v => enumStringToValue(EmbeddingSourceType, v));\n }\n if (proto.vendorModel) {\n m.vendorModel = enumStringToValue(EmbeddingVendorModel, proto.vendorModel);\n }\n if (proto.tags) {\n m.tags = proto.tags.map(Tag.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.relationship !== 'undefined' && this.relationship !== null) {\n toReturn['relationship'] = 'toApiJson' in this.relationship ? this.relationship.toApiJson() : this.relationship;\n }\n if (typeof this.sourceType !== 'undefined') {\n toReturn['sourceType'] = this.sourceType;\n }\n if (typeof this.vendorModel !== 'undefined') {\n toReturn['vendorModel'] = this.vendorModel;\n }\n if (typeof this.associatedAppId !== 'undefined') {\n toReturn['associatedAppId'] = this.associatedAppId;\n }\n if (typeof this.tags !== 'undefined' && this.tags !== null) {\n toReturn['tags'] = 'toApiJson' in this.tags ? this.tags.toApiJson() : this.tags;\n }\n return toReturn;\n }\n}\nclass ListKnowledgeBasesRequestFilters {\n static fromProto(proto) {\n let m = new ListKnowledgeBasesRequestFilters();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass ListKnowledgeSourcesRequestFilters {\n static fromProto(proto) {\n let m = new ListKnowledgeSourcesRequestFilters();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.configTypes) {\n m.configTypes = proto.configTypes.map(v => enumStringToValue(KnowledgeSourceConfigType, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.configTypes !== 'undefined') {\n toReturn['configTypes'] = this.configTypes;\n }\n return toReturn;\n }\n}\nclass FindSimilarEmbeddingsRequest {\n static fromProto(proto) {\n let m = new FindSimilarEmbeddingsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = FindSimilarEmbeddingsRequestFilters.fromProto(proto.filters);\n }\n if (proto.limit) {\n m.limit = parseInt(proto.limit, 10);\n }\n if (proto.rerankOptions) {\n m.rerankOptions = FindSimilarEmbeddingsRequestRerankOptions.fromProto(proto.rerankOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.query !== 'undefined') {\n toReturn['query'] = this.query;\n }\n if (typeof this.limit !== 'undefined') {\n toReturn['limit'] = this.limit;\n }\n if (typeof this.rerankOptions !== 'undefined' && this.rerankOptions !== null) {\n toReturn['rerankOptions'] = 'toApiJson' in this.rerankOptions ? this.rerankOptions.toApiJson() : this.rerankOptions;\n }\n return toReturn;\n }\n}\nclass FindSimilarEmbeddingsResponse {\n static fromProto(proto) {\n let m = new FindSimilarEmbeddingsResponse();\n m = Object.assign(m, proto);\n if (proto.embeddings) {\n m.embeddings = proto.embeddings.map(FindSimilarEmbeddingsResponseMatch.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.embeddings !== 'undefined' && this.embeddings !== null) {\n toReturn['embeddings'] = 'toApiJson' in this.embeddings ? this.embeddings.toApiJson() : this.embeddings;\n }\n return toReturn;\n }\n}\nclass FunctionExecutionJob {\n static fromProto(proto) {\n let m = new FunctionExecutionJob();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue(FunctionExecutionJobStatus, proto.status);\n }\n if (proto.result) {\n m.result = FunctionExecutionJobResult.fromProto(proto.result);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.result !== 'undefined' && this.result !== null) {\n toReturn['result'] = 'toApiJson' in this.result ? this.result.toApiJson() : this.result;\n }\n if (typeof this.nextJobId !== 'undefined') {\n toReturn['nextJobId'] = this.nextJobId;\n }\n return toReturn;\n }\n}\nclass FunctionExecutionJobResult {\n static fromProto(proto) {\n let m = new FunctionExecutionJobResult();\n m = Object.assign(m, proto);\n if (proto.metadata) {\n m.metadata = proto.metadata.map(KeyValuePair.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass GenerateChatAnswerWithEmbeddingsRequest {\n static fromProto(proto) {\n let m = new GenerateChatAnswerWithEmbeddingsRequest();\n m = Object.assign(m, proto);\n if (proto.appKey) {\n m.appKey = AppKey.fromProto(proto.appKey);\n }\n if (proto.chatHistory) {\n m.chatHistory = proto.chatHistory.map(ChatMessage.fromProto);\n }\n if (proto.options) {\n m.options = GenerateChatAnswerWithEmbeddingsRequestOptions.fromProto(proto.options);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.appKey !== 'undefined' && this.appKey !== null) {\n toReturn['appKey'] = 'toApiJson' in this.appKey ? this.appKey.toApiJson() : this.appKey;\n }\n if (typeof this.chatHistory !== 'undefined' && this.chatHistory !== null) {\n toReturn['chatHistory'] = 'toApiJson' in this.chatHistory ? this.chatHistory.toApiJson() : this.chatHistory;\n }\n if (typeof this.systemPrompt !== 'undefined') {\n toReturn['systemPrompt'] = this.systemPrompt;\n }\n if (typeof this.additionalInstructions !== 'undefined') {\n toReturn['additionalInstructions'] = this.additionalInstructions;\n }\n if (typeof this.options !== 'undefined' && this.options !== null) {\n toReturn['options'] = 'toApiJson' in this.options ? this.options.toApiJson() : this.options;\n }\n return toReturn;\n }\n}\nclass GenerateChatAnswerWithEmbeddingsResponse {\n static fromProto(proto) {\n let m = new GenerateChatAnswerWithEmbeddingsResponse();\n m = Object.assign(m, proto);\n if (proto.citations) {\n m.citations = proto.citations.map(ChatAnswerCitation.fromProto);\n }\n if (proto.bookingOptions) {\n m.bookingOptions = proto.bookingOptions.map(ChatBookingOption.fromProto);\n }\n if (proto.metadata) {\n m.metadata = proto.metadata.map(KeyValuePair.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.answer !== 'undefined') {\n toReturn['answer'] = this.answer;\n }\n if (typeof this.citations !== 'undefined' && this.citations !== null) {\n toReturn['citations'] = 'toApiJson' in this.citations ? this.citations.toApiJson() : this.citations;\n }\n if (typeof this.bookingOptions !== 'undefined' && this.bookingOptions !== null) {\n toReturn['bookingOptions'] = 'toApiJson' in this.bookingOptions ? this.bookingOptions.toApiJson() : this.bookingOptions;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n if (typeof this.pendingJobId !== 'undefined') {\n toReturn['pendingJobId'] = this.pendingJobId;\n }\n return toReturn;\n }\n}\nclass GetAppRequest {\n static fromProto(proto) {\n let m = new GetAppRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.includeKnowledgeBaseKeys !== 'undefined') {\n toReturn['includeKnowledgeBaseKeys'] = this.includeKnowledgeBaseKeys;\n }\n return toReturn;\n }\n}\nclass GetAppResponse {\n static fromProto(proto) {\n let m = new GetAppResponse();\n m = Object.assign(m, proto);\n if (proto.app) {\n m.app = App.fromProto(proto.app);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.app !== 'undefined' && this.app !== null) {\n toReturn['app'] = 'toApiJson' in this.app ? this.app.toApiJson() : this.app;\n }\n return toReturn;\n }\n}\nclass GetEmbeddingRequest {\n static fromProto(proto) {\n let m = new GetEmbeddingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass GetEmbeddingResponse {\n static fromProto(proto) {\n let m = new GetEmbeddingResponse();\n m = Object.assign(m, proto);\n if (proto.embedding) {\n m.embedding = Embedding.fromProto(proto.embedding);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.embedding !== 'undefined' && this.embedding !== null) {\n toReturn['embedding'] = 'toApiJson' in this.embedding ? this.embedding.toApiJson() : this.embedding;\n }\n return toReturn;\n }\n}\nclass GetFunctionExecutionJobRequest {\n static fromProto(proto) {\n let m = new GetFunctionExecutionJobRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass GetFunctionExecutionJobResponse {\n static fromProto(proto) {\n let m = new GetFunctionExecutionJobResponse();\n m = Object.assign(m, proto);\n if (proto.job) {\n m.job = FunctionExecutionJob.fromProto(proto.job);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.job !== 'undefined' && this.job !== null) {\n toReturn['job'] = 'toApiJson' in this.job ? this.job.toApiJson() : this.job;\n }\n return toReturn;\n }\n}\nclass GetKnowledgeBaseRequest {\n static fromProto(proto) {\n let m = new GetKnowledgeBaseRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.includeKnowledgeSourceKeys !== 'undefined') {\n toReturn['includeKnowledgeSourceKeys'] = this.includeKnowledgeSourceKeys;\n }\n return toReturn;\n }\n}\nclass GetKnowledgeBaseResponse {\n static fromProto(proto) {\n let m = new GetKnowledgeBaseResponse();\n m = Object.assign(m, proto);\n if (proto.knowledgeBase) {\n m.knowledgeBase = KnowledgeBase.fromProto(proto.knowledgeBase);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.knowledgeBase !== 'undefined' && this.knowledgeBase !== null) {\n toReturn['knowledgeBase'] = 'toApiJson' in this.knowledgeBase ? this.knowledgeBase.toApiJson() : this.knowledgeBase;\n }\n return toReturn;\n }\n}\nclass GetKnowledgeSourceRequest {\n static fromProto(proto) {\n let m = new GetKnowledgeSourceRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.includeKnowledgeBaseKeys !== 'undefined') {\n toReturn['includeKnowledgeBaseKeys'] = this.includeKnowledgeBaseKeys;\n }\n return toReturn;\n }\n}\nclass GetKnowledgeSourceResponse {\n static fromProto(proto) {\n let m = new GetKnowledgeSourceResponse();\n m = Object.assign(m, proto);\n if (proto.knowledgeSource) {\n m.knowledgeSource = KnowledgeSource.fromProto(proto.knowledgeSource);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.knowledgeSource !== 'undefined' && this.knowledgeSource !== null) {\n toReturn['knowledgeSource'] = 'toApiJson' in this.knowledgeSource ? this.knowledgeSource.toApiJson() : this.knowledgeSource;\n }\n return toReturn;\n }\n}\nclass KeyValuePair {\n static fromProto(proto) {\n let m = new KeyValuePair();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass ListAllAppsForKnowledgeSourceRequest {\n static fromProto(proto) {\n let m = new ListAllAppsForKnowledgeSourceRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.knowledgeSourceId !== 'undefined') {\n toReturn['knowledgeSourceId'] = this.knowledgeSourceId;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass ListAllAppsForKnowledgeSourceResponse {\n static fromProto(proto) {\n let m = new ListAllAppsForKnowledgeSourceResponse();\n m = Object.assign(m, proto);\n if (proto.apps) {\n m.apps = proto.apps.map(App.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.apps !== 'undefined' && this.apps !== null) {\n toReturn['apps'] = 'toApiJson' in this.apps ? this.apps.toApiJson() : this.apps;\n }\n return toReturn;\n }\n}\nclass ListAllKnowledgeSourcesForAppRequest {\n static fromProto(proto) {\n let m = new ListAllKnowledgeSourcesForAppRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.filters) {\n m.filters = ListAllKnowledgeSourcesForAppRequestFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.appId !== 'undefined') {\n toReturn['appId'] = this.appId;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass ListAllKnowledgeSourcesForAppResponse {\n static fromProto(proto) {\n let m = new ListAllKnowledgeSourcesForAppResponse();\n m = Object.assign(m, proto);\n if (proto.knowledgeSources) {\n m.knowledgeSources = proto.knowledgeSources.map(KnowledgeSource.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.knowledgeSources !== 'undefined' && this.knowledgeSources !== null) {\n toReturn['knowledgeSources'] = 'toApiJson' in this.knowledgeSources ? this.knowledgeSources.toApiJson() : this.knowledgeSources;\n }\n return toReturn;\n }\n}\nclass ListAppsRequest {\n static fromProto(proto) {\n let m = new ListAppsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListAppsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.includeKnowledgeBaseKeys !== 'undefined') {\n toReturn['includeKnowledgeBaseKeys'] = this.includeKnowledgeBaseKeys;\n }\n return toReturn;\n }\n}\nclass ListAppsResponse {\n static fromProto(proto) {\n let m = new ListAppsResponse();\n m = Object.assign(m, proto);\n if (proto.apps) {\n m.apps = proto.apps.map(App.fromProto);\n }\n if (proto.metadata) {\n m.metadata = PagedResponseMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.apps !== 'undefined' && this.apps !== null) {\n toReturn['apps'] = 'toApiJson' in this.apps ? this.apps.toApiJson() : this.apps;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass ListEmbeddingsRequest {\n static fromProto(proto) {\n let m = new ListEmbeddingsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListEmbeddingsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListEmbeddingsResponse {\n static fromProto(proto) {\n let m = new ListEmbeddingsResponse();\n m = Object.assign(m, proto);\n if (proto.embeddings) {\n m.embeddings = proto.embeddings.map(Embedding.fromProto);\n }\n if (proto.metadata) {\n m.metadata = PagedResponseMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.embeddings !== 'undefined' && this.embeddings !== null) {\n toReturn['embeddings'] = 'toApiJson' in this.embeddings ? this.embeddings.toApiJson() : this.embeddings;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass ListKnowledgeBasesRequest {\n static fromProto(proto) {\n let m = new ListKnowledgeBasesRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListKnowledgeBasesRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.includeKnowledgeSourceKeys !== 'undefined') {\n toReturn['includeKnowledgeSourceKeys'] = this.includeKnowledgeSourceKeys;\n }\n return toReturn;\n }\n}\nclass ListKnowledgeBasesResponse {\n static fromProto(proto) {\n let m = new ListKnowledgeBasesResponse();\n m = Object.assign(m, proto);\n if (proto.knowledgeBases) {\n m.knowledgeBases = proto.knowledgeBases.map(KnowledgeBase.fromProto);\n }\n if (proto.metadata) {\n m.metadata = PagedResponseMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.knowledgeBases !== 'undefined' && this.knowledgeBases !== null) {\n toReturn['knowledgeBases'] = 'toApiJson' in this.knowledgeBases ? this.knowledgeBases.toApiJson() : this.knowledgeBases;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass ListKnowledgeSourcesRequest {\n static fromProto(proto) {\n let m = new ListKnowledgeSourcesRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListKnowledgeSourcesRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.includeKnowledgeBaseKeys !== 'undefined') {\n toReturn['includeKnowledgeBaseKeys'] = this.includeKnowledgeBaseKeys;\n }\n return toReturn;\n }\n}\nclass ListKnowledgeSourcesResponse {\n static fromProto(proto) {\n let m = new ListKnowledgeSourcesResponse();\n m = Object.assign(m, proto);\n if (proto.knowledgeSources) {\n m.knowledgeSources = proto.knowledgeSources.map(KnowledgeSource.fromProto);\n }\n if (proto.metadata) {\n m.metadata = PagedResponseMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.knowledgeSources !== 'undefined' && this.knowledgeSources !== null) {\n toReturn['knowledgeSources'] = 'toApiJson' in this.knowledgeSources ? this.knowledgeSources.toApiJson() : this.knowledgeSources;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass FindSimilarEmbeddingsResponseMatch {\n static fromProto(proto) {\n let m = new FindSimilarEmbeddingsResponseMatch();\n m = Object.assign(m, proto);\n if (proto.embedding) {\n m.embedding = Embedding.fromProto(proto.embedding);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.embedding !== 'undefined' && this.embedding !== null) {\n toReturn['embedding'] = 'toApiJson' in this.embedding ? this.embedding.toApiJson() : this.embedding;\n }\n if (typeof this.similarity !== 'undefined') {\n toReturn['similarity'] = this.similarity;\n }\n return toReturn;\n }\n}\nclass GenerateChatAnswerWithEmbeddingsRequestOptions {\n static fromProto(proto) {\n let m = new GenerateChatAnswerWithEmbeddingsRequestOptions();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.includeAllCitations !== 'undefined') {\n toReturn['includeAllCitations'] = this.includeAllCitations;\n }\n if (typeof this.enableAsyncFunctions !== 'undefined') {\n toReturn['enableAsyncFunctions'] = this.enableAsyncFunctions;\n }\n return toReturn;\n }\n}\nclass RefreshBusinessProfileEmbeddingsRequest {\n static fromProto(proto) {\n let m = new RefreshBusinessProfileEmbeddingsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass FindSimilarEmbeddingsRequestRerankOptions {\n static fromProto(proto) {\n let m = new FindSimilarEmbeddingsRequestRerankOptions();\n m = Object.assign(m, proto);\n if (proto.method) {\n m.method = enumStringToValue(EmbeddingRerankerMethod, proto.method);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.method !== 'undefined') {\n toReturn['method'] = this.method;\n }\n return toReturn;\n }\n}\nclass ScrapeWebsiteRequest {\n static fromProto(proto) {\n let m = new ScrapeWebsiteRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.knowledgeSourceId !== 'undefined') {\n toReturn['knowledgeSourceId'] = this.knowledgeSourceId;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass ScrapeWebsiteResponse {\n static fromProto(proto) {\n let m = new ScrapeWebsiteResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass SetAppsForKnowledgeSourceRequest {\n static fromProto(proto) {\n let m = new SetAppsForKnowledgeSourceRequest();\n m = Object.assign(m, proto);\n if (proto.knowledgeSourceKey) {\n m.knowledgeSourceKey = KnowledgeSourceKey.fromProto(proto.knowledgeSourceKey);\n }\n if (proto.appKeys) {\n m.appKeys = proto.appKeys.map(AppKey.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.knowledgeSourceKey !== 'undefined' && this.knowledgeSourceKey !== null) {\n toReturn['knowledgeSourceKey'] = 'toApiJson' in this.knowledgeSourceKey ? this.knowledgeSourceKey.toApiJson() : this.knowledgeSourceKey;\n }\n if (typeof this.appKeys !== 'undefined' && this.appKeys !== null) {\n toReturn['appKeys'] = 'toApiJson' in this.appKeys ? this.appKeys.toApiJson() : this.appKeys;\n }\n return toReturn;\n }\n}\nclass TuneAIModelRequest {\n static fromProto(proto) {\n let m = new TuneAIModelRequest();\n m = Object.assign(m, proto);\n if (proto.vendorModel) {\n m.vendorModel = enumStringToValue(EmbeddingVendorModel, proto.vendorModel);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.vendorModel !== 'undefined') {\n toReturn['vendorModel'] = this.vendorModel;\n }\n if (typeof this.outputPath !== 'undefined') {\n toReturn['outputPath'] = this.outputPath;\n }\n if (typeof this.queriesPath !== 'undefined') {\n toReturn['queriesPath'] = this.queriesPath;\n }\n if (typeof this.corpusPath !== 'undefined') {\n toReturn['corpusPath'] = this.corpusPath;\n }\n if (typeof this.trainingLabelPath !== 'undefined') {\n toReturn['trainingLabelPath'] = this.trainingLabelPath;\n }\n if (typeof this.modelDisplayName !== 'undefined') {\n toReturn['modelDisplayName'] = this.modelDisplayName;\n }\n return toReturn;\n }\n}\nclass UpdateEmbeddingRequest {\n static fromProto(proto) {\n let m = new UpdateEmbeddingRequest();\n m = Object.assign(m, proto);\n if (proto.embedding) {\n m.embedding = Embedding.fromProto(proto.embedding);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.embedding !== 'undefined' && this.embedding !== null) {\n toReturn['embedding'] = 'toApiJson' in this.embedding ? this.embedding.toApiJson() : this.embedding;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateKnowledgeBaseRequest {\n static fromProto(proto) {\n let m = new UpdateKnowledgeBaseRequest();\n m = Object.assign(m, proto);\n if (proto.knowledgeBase) {\n m.knowledgeBase = KnowledgeBase.fromProto(proto.knowledgeBase);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.knowledgeBase !== 'undefined' && this.knowledgeBase !== null) {\n toReturn['knowledgeBase'] = 'toApiJson' in this.knowledgeBase ? this.knowledgeBase.toApiJson() : this.knowledgeBase;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateKnowledgeSourceRequest {\n static fromProto(proto) {\n let m = new UpdateKnowledgeSourceRequest();\n m = Object.assign(m, proto);\n if (proto.knowledgeSource) {\n m.knowledgeSource = KnowledgeSource.fromProto(proto.knowledgeSource);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.knowledgeSource !== 'undefined' && this.knowledgeSource !== null) {\n toReturn['knowledgeSource'] = 'toApiJson' in this.knowledgeSource ? this.knowledgeSource.toApiJson() : this.knowledgeSource;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpsertAppRequest {\n static fromProto(proto) {\n let m = new UpsertAppRequest();\n m = Object.assign(m, proto);\n if (proto.app) {\n m.app = App.fromProto(proto.app);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.app !== 'undefined' && this.app !== null) {\n toReturn['app'] = 'toApiJson' in this.app ? this.app.toApiJson() : this.app;\n }\n return toReturn;\n }\n}\nclass UpsertKnowledgeForAppRequest {\n static fromProto(proto) {\n let m = new UpsertKnowledgeForAppRequest();\n m = Object.assign(m, proto);\n if (proto.app) {\n m.app = App.fromProto(proto.app);\n }\n if (proto.knowledgeSourceKeys) {\n m.knowledgeSourceKeys = proto.knowledgeSourceKeys.map(KnowledgeSourceKey.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.app !== 'undefined' && this.app !== null) {\n toReturn['app'] = 'toApiJson' in this.app ? this.app.toApiJson() : this.app;\n }\n if (typeof this.knowledgeSourceKeys !== 'undefined' && this.knowledgeSourceKeys !== null) {\n toReturn['knowledgeSourceKeys'] = 'toApiJson' in this.knowledgeSourceKeys ? this.knowledgeSourceKeys.toApiJson() : this.knowledgeSourceKeys;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'embeddings-api.vendasta-local.com',\n 'test': '',\n 'demo': 'embeddings-demo.apigateway.co',\n 'prod': 'embeddings-prod.apigateway.co',\n 'production': 'embeddings-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet EmbeddingApiService = /*#__PURE__*/(() => {\n class EmbeddingApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createEmbedding(r) {\n const request = r.toApiJson ? r : new CreateEmbeddingRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.EmbeddingService/CreateEmbedding\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateEmbeddingResponse.fromProto(resp)));\n }\n getEmbedding(r) {\n const request = r.toApiJson ? r : new GetEmbeddingRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.EmbeddingService/GetEmbedding\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetEmbeddingResponse.fromProto(resp)));\n }\n updateEmbedding(r) {\n const request = r.toApiJson ? r : new UpdateEmbeddingRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.EmbeddingService/UpdateEmbedding\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteEmbedding(r) {\n const request = r.toApiJson ? r : new DeleteEmbeddingRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.EmbeddingService/DeleteEmbedding\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listEmbeddings(r) {\n const request = r.toApiJson ? r : new ListEmbeddingsRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.EmbeddingService/ListEmbeddings\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListEmbeddingsResponse.fromProto(resp)));\n }\n findSimilarEmbeddings(r) {\n const request = r.toApiJson ? r : new FindSimilarEmbeddingsRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.EmbeddingService/FindSimilarEmbeddings\", request.toApiJson(), this.apiOptions()).pipe(map(resp => FindSimilarEmbeddingsResponse.fromProto(resp)));\n }\n }\n EmbeddingApiService.ɵfac = function EmbeddingApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || EmbeddingApiService)();\n };\n EmbeddingApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: EmbeddingApiService,\n factory: EmbeddingApiService.ɵfac,\n providedIn: 'root'\n });\n return EmbeddingApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet EmbeddingService = /*#__PURE__*/(() => {\n class EmbeddingService {\n constructor(api) {\n this.api = api;\n }\n createEmbedding(req) {\n return this.api.createEmbedding(req).pipe(map(resp => resp.id));\n }\n getEmbedding(req) {\n return this.api.getEmbedding(req).pipe(map(resp => resp.embedding));\n }\n updateEmbedding(req) {\n return this.api.updateEmbedding(req).pipe(map(() => true));\n }\n listEmbeddings(req) {\n return this.api.listEmbeddings(req);\n }\n deleteEmbedding(req) {\n return this.api.deleteEmbedding(req).pipe(map(() => true));\n }\n }\n EmbeddingService.ɵfac = function EmbeddingService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || EmbeddingService)(i0.ɵɵinject(EmbeddingApiService));\n };\n EmbeddingService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: EmbeddingService,\n factory: EmbeddingService.ɵfac,\n providedIn: 'root'\n });\n return EmbeddingService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet AIAssistantApiService = /*#__PURE__*/(() => {\n class AIAssistantApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n generateChatAnswerWithEmbeddings(r) {\n const request = r.toApiJson ? r : new GenerateChatAnswerWithEmbeddingsRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.AIAssistantService/GenerateChatAnswerWithEmbeddings\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GenerateChatAnswerWithEmbeddingsResponse.fromProto(resp)));\n }\n getFunctionExecutionJob(r) {\n const request = r.toApiJson ? r : new GetFunctionExecutionJobRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.AIAssistantService/GetFunctionExecutionJob\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetFunctionExecutionJobResponse.fromProto(resp)));\n }\n }\n AIAssistantApiService.ɵfac = function AIAssistantApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AIAssistantApiService)();\n };\n AIAssistantApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: AIAssistantApiService,\n factory: AIAssistantApiService.ɵfac,\n providedIn: 'root'\n });\n return AIAssistantApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet AutomatedEmbeddingsApiService = /*#__PURE__*/(() => {\n class AutomatedEmbeddingsApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n scrapeWebsite(r) {\n const request = r.toApiJson ? r : new ScrapeWebsiteRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.AutomatedEmbeddingsService/ScrapeWebsite\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ScrapeWebsiteResponse.fromProto(resp)));\n }\n refreshBusinessProfileEmbeddings(r) {\n const request = r.toApiJson ? r : new RefreshBusinessProfileEmbeddingsRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.AutomatedEmbeddingsService/RefreshBusinessProfileEmbeddings\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n refreshAllBusinessProfileEmbeddings() {\n return this.http.post(this._host + \"/embeddings.v1alpha1.AutomatedEmbeddingsService/RefreshAllBusinessProfileEmbeddings\", {}, {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n AutomatedEmbeddingsApiService.ɵfac = function AutomatedEmbeddingsApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AutomatedEmbeddingsApiService)();\n };\n AutomatedEmbeddingsApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: AutomatedEmbeddingsApiService,\n factory: AutomatedEmbeddingsApiService.ɵfac,\n providedIn: 'root'\n });\n return AutomatedEmbeddingsApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet KnowledgeBaseApiService = /*#__PURE__*/(() => {\n class KnowledgeBaseApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createKnowledgeBase(r) {\n const request = r.toApiJson ? r : new CreateKnowledgeBaseRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/CreateKnowledgeBase\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateKnowledgeBaseResponse.fromProto(resp)));\n }\n getKnowledgeBase(r) {\n const request = r.toApiJson ? r : new GetKnowledgeBaseRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/GetKnowledgeBase\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetKnowledgeBaseResponse.fromProto(resp)));\n }\n updateKnowledgeBase(r) {\n const request = r.toApiJson ? r : new UpdateKnowledgeBaseRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/UpdateKnowledgeBase\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteKnowledgeBase(r) {\n const request = r.toApiJson ? r : new DeleteKnowledgeBaseRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/DeleteKnowledgeBase\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listKnowledgeBases(r) {\n const request = r.toApiJson ? r : new ListKnowledgeBasesRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/ListKnowledgeBases\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListKnowledgeBasesResponse.fromProto(resp)));\n }\n createKnowledgeSource(r) {\n const request = r.toApiJson ? r : new CreateKnowledgeSourceRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/CreateKnowledgeSource\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateKnowledgeSourceResponse.fromProto(resp)));\n }\n getKnowledgeSource(r) {\n const request = r.toApiJson ? r : new GetKnowledgeSourceRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/GetKnowledgeSource\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetKnowledgeSourceResponse.fromProto(resp)));\n }\n updateKnowledgeSource(r) {\n const request = r.toApiJson ? r : new UpdateKnowledgeSourceRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/UpdateKnowledgeSource\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteKnowledgeSource(r) {\n const request = r.toApiJson ? r : new DeleteKnowledgeSourceRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/DeleteKnowledgeSource\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listKnowledgeSources(r) {\n const request = r.toApiJson ? r : new ListKnowledgeSourcesRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/ListKnowledgeSources\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListKnowledgeSourcesResponse.fromProto(resp)));\n }\n upsertApp(r) {\n const request = r.toApiJson ? r : new UpsertAppRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/UpsertApp\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getApp(r) {\n const request = r.toApiJson ? r : new GetAppRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/GetApp\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetAppResponse.fromProto(resp)));\n }\n deleteApp(r) {\n const request = r.toApiJson ? r : new DeleteAppRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/DeleteApp\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listApps(r) {\n const request = r.toApiJson ? r : new ListAppsRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/ListApps\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListAppsResponse.fromProto(resp)));\n }\n listAllKnowledgeSourcesForApp(r) {\n const request = r.toApiJson ? r : new ListAllKnowledgeSourcesForAppRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/ListAllKnowledgeSourcesForApp\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListAllKnowledgeSourcesForAppResponse.fromProto(resp)));\n }\n listAllAppsForKnowledgeSource(r) {\n const request = r.toApiJson ? r : new ListAllAppsForKnowledgeSourceRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/ListAllAppsForKnowledgeSource\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListAllAppsForKnowledgeSourceResponse.fromProto(resp)));\n }\n upsertKnowledgeForApp(r) {\n const request = r.toApiJson ? r : new UpsertKnowledgeForAppRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/UpsertKnowledgeForApp\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setAppsForKnowledgeSource(r) {\n const request = r.toApiJson ? r : new SetAppsForKnowledgeSourceRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/SetAppsForKnowledgeSource\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n tuneAiModel(r) {\n const request = r.toApiJson ? r : new TuneAIModelRequest(r);\n return this.http.post(this._host + \"/embeddings.v1alpha1.KnowledgeBaseService/TuneAIModel\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n KnowledgeBaseApiService.ɵfac = function KnowledgeBaseApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || KnowledgeBaseApiService)();\n };\n KnowledgeBaseApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: KnowledgeBaseApiService,\n factory: KnowledgeBaseApiService.ɵfac,\n providedIn: 'root'\n });\n return KnowledgeBaseApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\nlet KnowledgeBaseService = /*#__PURE__*/(() => {\n class KnowledgeBaseService {\n constructor(api, automatedServiceApi) {\n this.api = api;\n this.automatedServiceApi = automatedServiceApi;\n }\n getApp(req) {\n return this.api.getApp(req).pipe(map(resp => resp.app));\n }\n listApps(req) {\n return this.api.listApps(req).pipe(map(resp => resp));\n }\n updateKnowledgeBase(req) {\n return this.api.updateKnowledgeBase(req).pipe(map(() => true));\n }\n getKnowledgeSource(req) {\n return this.api.getKnowledgeSource(req).pipe(map(resp => resp.knowledgeSource));\n }\n createKnowledgeSource(req) {\n return this.api.createKnowledgeSource(req).pipe(map(resp => resp));\n }\n updateKnowledgeSource(req) {\n return this.api.updateKnowledgeSource(req).pipe(map(() => true));\n }\n deleteKnowledgeSource(req) {\n return this.api.deleteKnowledgeSource(req).pipe(map(() => true));\n }\n listKnowledgeSources(req) {\n return this.api.listKnowledgeSources(req).pipe(map(resp => resp));\n }\n listAllKnowledgeSourcesForApp(req) {\n return this.api.listAllKnowledgeSourcesForApp(req);\n }\n listAllAppsForKnowledgeSource(req) {\n return this.api.listAllAppsForKnowledgeSource(req);\n }\n upsertKnowledgeForApp(req) {\n return this.api.upsertKnowledgeForApp(req).pipe(map(() => true));\n }\n setAppsForKnowledgeSource(req) {\n return this.api.setAppsForKnowledgeSource(req).pipe(map(() => true));\n }\n scrapeWebsite(req) {\n return this.automatedServiceApi.scrapeWebsite(req);\n }\n }\n KnowledgeBaseService.ɵfac = function KnowledgeBaseService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || KnowledgeBaseService)(i0.ɵɵinject(KnowledgeBaseApiService), i0.ɵɵinject(AutomatedEmbeddingsApiService));\n };\n KnowledgeBaseService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: KnowledgeBaseService,\n factory: KnowledgeBaseService.ɵfac,\n providedIn: 'root'\n });\n return KnowledgeBaseService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Access, App, AppKey, ChatAnswerCitation, ChatBookingOption, ChatMessage, ChatMessageRole, CreateEmbeddingRequest, CreateEmbeddingResponse, CreateKnowledgeBaseRequest, CreateKnowledgeBaseResponse, CreateKnowledgeSourceRequest, CreateKnowledgeSourceResponse, DeleteAppRequest, DeleteEmbeddingRequest, DeleteKnowledgeBaseRequest, DeleteKnowledgeSourceRequest, Embedding, EmbeddingCitation, EmbeddingMetadata, EmbeddingRelationship, EmbeddingRelationshipAccountGroup, EmbeddingRelationshipAdmin, EmbeddingRelationshipPartner, EmbeddingRerankerMethod, EmbeddingService, EmbeddingSourceType, EmbeddingVendorModel, FieldMask, FindSimilarEmbeddingsRequest, FindSimilarEmbeddingsRequestFilters, FindSimilarEmbeddingsRequestRerankOptions, FindSimilarEmbeddingsResponse, FindSimilarEmbeddingsResponseMatch, FunctionExecutionJob, FunctionExecutionJobResult, FunctionExecutionJobStatus, GenerateChatAnswerWithEmbeddingsRequest, GenerateChatAnswerWithEmbeddingsRequestOptions, GenerateChatAnswerWithEmbeddingsResponse, GetAppRequest, GetAppResponse, GetEmbeddingRequest, GetEmbeddingResponse, GetFunctionExecutionJobRequest, GetFunctionExecutionJobResponse, GetKnowledgeBaseRequest, GetKnowledgeBaseResponse, GetKnowledgeSourceRequest, GetKnowledgeSourceResponse, KeyValuePair, KnowledgeBase, KnowledgeBaseKey, KnowledgeBaseService, KnowledgeSource, KnowledgeSourceConfig, KnowledgeSourceConfigBusinessProfileConfig, KnowledgeSourceConfigCustomDataConfig, KnowledgeSourceConfigType, KnowledgeSourceConfigWebsiteScrapeConfig, KnowledgeSourceConfigWebsiteScrapeConfigScrapedPage, KnowledgeSourceConfigWebsiteScrapeConfigWebsiteScrapeConfigError, KnowledgeSourceConfigWebsiteScrapeConfigWebsiteScrapeOptions, KnowledgeSourceKey, KnowledgeSourceTraining, ListAllAppsForKnowledgeSourceRequest, ListAllAppsForKnowledgeSourceResponse, ListAllKnowledgeSourcesForAppRequest, ListAllKnowledgeSourcesForAppRequestFilters, ListAllKnowledgeSourcesForAppResponse, ListAppsRequest, ListAppsRequestFilters, ListAppsResponse, ListEmbeddingsRequest, ListEmbeddingsRequestFilters, ListEmbeddingsResponse, ListKnowledgeBasesRequest, ListKnowledgeBasesRequestFilters, ListKnowledgeBasesResponse, ListKnowledgeSourcesRequest, ListKnowledgeSourcesRequestFilters, ListKnowledgeSourcesResponse, Namespace, NamespaceAccountGroupNamespace, NamespaceAdminNamespace, NamespacePartnerNamespace, PagedRequestOptions, PagedResponseMetadata, RefreshAccountGroupWebsiteEmbeddingsProgress, RefreshBusinessProfileEmbeddingsRequest, ScrapeWebsiteRequest, ScrapeWebsiteResponse, SetAppsForKnowledgeSourceRequest, Tag, TrainingProgress, TuneAIModelRequest, UpdateEmbeddingRequest, UpdateKnowledgeBaseRequest, UpdateKnowledgeSourceRequest, UpsertAppRequest, UpsertKnowledgeForAppRequest, WebsiteScrapeConfigCrawlMode, WebsiteScrapeConfigProgress };\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AiKnowledgeConfig, RouteCommand } from './interface/config.interface';\n\nexport const AI_KNOWLEDGE_CONFIG_TOKEN = new InjectionToken(\n '[AiKnowledge]: token for configuration',\n);\n\nexport const ACCOUNT_GROUP_ID_TOKEN: InjectionToken> = new InjectionToken(\n '[AiKnowledge]: token for accountGroupId',\n);\n\nexport const MARKET_ID_TOKEN: InjectionToken> = new InjectionToken(\n '[AiKnowledge]: token for marketId',\n);\n\nexport const PARTNER_ID_TOKEN: InjectionToken> = new InjectionToken(\n '[AiKnowledge]: token for partnerId',\n);\n\nexport const MANAGE_KNOWLEDGE_URL_TOKEN: InjectionToken> = new InjectionToken(\n '[AiKnowledge]: token for manageKnowledgeUrl',\n);\n\nexport const BUSINESS_PROFILE_URL_TOKEN: InjectionToken> = new InjectionToken(\n '[AiKnowledge]: token for businessProfileUrl',\n);\n\nexport const SHOW_BUSINESS_PROFILE_SOURCE_TOKEN: InjectionToken> = new InjectionToken(\n '[AiKnowledge]: token for showBusinessProfileSource',\n);\n\nexport const WEB_CHAT_WIDGET_EDIT_ROUTE_TOKEN: InjectionToken> = new InjectionToken(\n '[AiKnowledge]: token for webChatWidgetEditRoute',\n);\n","import { KnowledgeSource } from '@vendasta/embeddings';\n\nexport class KnowledgeSourceWithSuggestedFlag extends KnowledgeSource {\n isSuggested?: boolean;\n}\n\nexport const WebChatWidgetAppType = 'WebChatWidget';\nexport const AIAssistantAppType = 'AIAssistant';\n","import { inject, Injectable } from '@angular/core';\nimport {\n App,\n CreateKnowledgeSourceRequestInterface,\n DeleteKnowledgeSourceRequestInterface,\n KnowledgeBaseService,\n KnowledgeSource,\n KnowledgeSourceConfig,\n KnowledgeSourceConfigInterface,\n KnowledgeSourceConfigType,\n KnowledgeSourceInterface,\n ListAllAppsForKnowledgeSourceRequestInterface,\n ListAllKnowledgeSourcesForAppRequestInterface,\n ListKnowledgeSourcesRequestInterface,\n ListKnowledgeSourcesResponse,\n NamespaceInterface,\n PagedRequestOptionsInterface,\n UpdateKnowledgeSourceRequestInterface,\n UpsertKnowledgeForAppRequestInterface,\n WebsiteScrapeConfigCrawlMode,\n WebsiteScrapeConfigProgress,\n} from '@vendasta/embeddings';\nimport { catchError, firstValueFrom, map, of, shareReplay, throwError } from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport {\n ACCOUNT_GROUP_ID_TOKEN,\n BUSINESS_PROFILE_URL_TOKEN,\n WEB_CHAT_WIDGET_EDIT_ROUTE_TOKEN,\n MANAGE_KNOWLEDGE_URL_TOKEN,\n MARKET_ID_TOKEN,\n PARTNER_ID_TOKEN,\n} from './tokens';\nimport { TranslateService } from '@ngx-translate/core';\nimport { RouteCommand } from './interface/config.interface';\nimport dayjs from 'dayjs';\nimport UTC from 'dayjs/plugin/utc';\nimport { SetAppsForKnowledgeSourceRequestInterface } from '@vendasta/embeddings/lib/_internal/interfaces/api.interface';\nimport { AIAssistantAppType, KnowledgeSourceWithSuggestedFlag, WebChatWidgetAppType } from './ai-knowledge-util';\nimport { FeatureFlagService } from '@galaxy/partner';\nimport { GoalApiService } from '@vendasta/ai-assistants';\n\ndayjs.extend(UTC);\n\nconst AI_ASSISTANTS_FEATURE_FLAG = 'ai_assistant_feature';\nconst VENDASTA_PARTNER_ID = 'VA';\n@Injectable()\nexport class AiKnowledgeService {\n private readonly knowledgeBaseService = inject(KnowledgeBaseService);\n private readonly translateService = inject(TranslateService);\n private readonly featureFlagService = inject(FeatureFlagService);\n private readonly goalApiService = inject(GoalApiService);\n\n readonly partnerId = toSignal(inject(PARTNER_ID_TOKEN));\n readonly marketId = toSignal(inject(MARKET_ID_TOKEN));\n readonly accountGroupId = toSignal(inject(ACCOUNT_GROUP_ID_TOKEN));\n private readonly manageKnowledgeUrl = toSignal(inject(MANAGE_KNOWLEDGE_URL_TOKEN));\n private readonly businessProfileUrl = toSignal(inject(BUSINESS_PROFILE_URL_TOKEN));\n private readonly webChatWidgetEditRoute = toSignal(inject(WEB_CHAT_WIDGET_EDIT_ROUTE_TOKEN));\n\n async getApp(id: string, includeKnowledgeBaseKeys?: boolean): Promise {\n return await firstValueFrom(\n this.knowledgeBaseService.getApp({\n id: id,\n namespace: this.buildNamespaceInterface(),\n includeKnowledgeBaseKeys: includeKnowledgeBaseKeys,\n }),\n );\n }\n\n async listAllApps(includeKnowledgeBaseKeys?: boolean): Promise {\n let cursor = '';\n let hasMore = true;\n const apps: App[] = [];\n while (hasMore) {\n const response = await firstValueFrom(\n this.knowledgeBaseService.listApps({\n filters: {\n namespace: this.buildNamespaceInterface(),\n },\n pagingOptions: {\n cursor: cursor,\n pageSize: 100,\n },\n includeKnowledgeBaseKeys: includeKnowledgeBaseKeys,\n }),\n );\n\n cursor = response.metadata.nextCursor;\n hasMore = response.metadata.hasMore;\n\n apps.push(...(response.apps || []));\n }\n\n return await this.filterAIAssistantsInApps(apps);\n }\n\n private async filterAIAssistantsInApps(apps: App[]): Promise {\n const ffResults = await firstValueFrom(\n this.featureFlagService.batchGetStatus(this.partnerId(), this.marketId(), [AI_ASSISTANTS_FEATURE_FLAG]),\n );\n const aiAssistantsEnabled = ffResults[AI_ASSISTANTS_FEATURE_FLAG];\n const goalsDisabled = await firstValueFrom(\n this.goalApiService\n .goalsDisabledForAccountGroup({\n accountGroupId: this.accountGroupId(),\n })\n .pipe(\n map((resp) => !!resp.goalsDisabled),\n catchError(() => of(false)),\n shareReplay(1),\n ),\n );\n return apps.filter(\n (app) => app.appType != (aiAssistantsEnabled && !goalsDisabled ? WebChatWidgetAppType : AIAssistantAppType),\n );\n }\n\n async getKnowledgeSource(\n id: string,\n namespace: NamespaceInterface,\n includeKnowledgeBaseKeys?: boolean,\n ): Promise {\n return await firstValueFrom(\n this.knowledgeBaseService.getKnowledgeSource({\n id: id,\n namespace: namespace,\n includeKnowledgeBaseKeys: includeKnowledgeBaseKeys,\n }),\n );\n }\n\n // TODO paging\n async listKnowledgeSources(\n configTypes?: KnowledgeSourceConfigType[],\n pagingOptions?: PagedRequestOptionsInterface,\n ): Promise {\n const request: ListKnowledgeSourcesRequestInterface = {\n filters: {\n namespace: this.buildNamespaceInterface(),\n configTypes: configTypes,\n },\n pagingOptions: pagingOptions,\n };\n return await firstValueFrom(this.knowledgeBaseService.listKnowledgeSources(request));\n }\n\n async updateKnowledgeSourceNameAndConfig(source: KnowledgeSource): Promise {\n const request: UpdateKnowledgeSourceRequestInterface = {\n knowledgeSource: source,\n fieldMask: {\n paths: ['name', 'config'],\n },\n };\n await firstValueFrom(this.knowledgeBaseService.updateKnowledgeSource(request));\n }\n\n async createKnowledgeSource(name: string, config: KnowledgeSourceConfigInterface): Promise {\n const request: CreateKnowledgeSourceRequestInterface = {\n knowledgeSource: {\n namespace: this.buildNamespaceInterface(),\n name: name,\n config: config,\n },\n };\n const result = await firstValueFrom(this.knowledgeBaseService.createKnowledgeSource(request));\n return result.id;\n }\n\n async createOrUpdateKnowledgeSource(\n knowledgeSource: KnowledgeSource,\n name: string,\n config: KnowledgeSourceConfigInterface,\n ): Promise {\n if (knowledgeSource) {\n const source = knowledgeSource;\n source.name = name;\n source.config = config as KnowledgeSourceConfig;\n await this.updateKnowledgeSourceNameAndConfig(source);\n return source.id;\n } else {\n return await this.createKnowledgeSource(name, config);\n }\n }\n\n async deleteKnowledgeSource(id: string): Promise {\n const request: DeleteKnowledgeSourceRequestInterface = {\n id: id,\n namespace: this.buildNamespaceInterface(),\n };\n await firstValueFrom(this.knowledgeBaseService.deleteKnowledgeSource(request));\n }\n\n async listAllAppsForKnowledgeSource(knowledgeSourceId: string): Promise {\n const request: ListAllAppsForKnowledgeSourceRequestInterface = {\n knowledgeSourceId: knowledgeSourceId,\n namespace: this.buildNamespaceInterface(),\n };\n const results = await firstValueFrom(this.knowledgeBaseService.listAllAppsForKnowledgeSource(request));\n return await this.filterAIAssistantsInApps(results.apps || []);\n }\n\n async listAllKnowledgeSourcesForApp(\n appId: string,\n configTypes?: KnowledgeSourceConfigType[],\n ): Promise {\n const request: ListAllKnowledgeSourcesForAppRequestInterface = {\n appId: appId,\n namespace: this.buildNamespaceInterface(),\n filters: {\n configTypes: configTypes,\n },\n };\n const results = await firstValueFrom(this.knowledgeBaseService.listAllKnowledgeSourcesForApp(request));\n return results.knowledgeSources || [];\n }\n\n async upsertKnowledgeForApp(\n appId: string,\n name: string,\n configurationUrl: string,\n appType: string,\n knowledgeSources?: KnowledgeSourceInterface[],\n ): Promise {\n const knowledgeSourceKeys = [];\n\n for (const source of knowledgeSources) {\n knowledgeSourceKeys.push({\n knowledgeSourceId: source.id,\n namespace: source.namespace,\n });\n }\n\n const request: UpsertKnowledgeForAppRequestInterface = {\n app: {\n id: appId,\n namespace: this.buildNamespaceInterface(),\n name: name,\n configurationUrl: configurationUrl,\n appType: appType,\n },\n knowledgeSourceKeys: knowledgeSourceKeys,\n };\n await firstValueFrom(\n this.knowledgeBaseService.upsertKnowledgeForApp(request).pipe(catchError((err) => throwError(() => err))),\n );\n }\n\n async setAppsForKnowledgeSource(knowledgeSourceId: string, apps: App[]): Promise {\n const appKeys = [];\n\n for (const app of apps) {\n appKeys.push({\n appId: app.id,\n namespace: app.namespace,\n });\n }\n\n const request: SetAppsForKnowledgeSourceRequestInterface = {\n knowledgeSourceKey: {\n knowledgeSourceId: knowledgeSourceId,\n namespace: this.buildNamespaceInterface(),\n },\n appKeys: appKeys,\n };\n await firstValueFrom(\n this.knowledgeBaseService.setAppsForKnowledgeSource(request).pipe(catchError((err) => throwError(() => err))),\n );\n }\n\n buildNamespaceInterface(): NamespaceInterface {\n if (this.accountGroupId()) {\n return {\n accountGroupNamespace: {\n accountGroupId: this.accountGroupId(),\n },\n };\n }\n if (this.partnerId() && this.partnerId() !== VENDASTA_PARTNER_ID) {\n return {\n partnerNamespace: {\n partnerId: this.partnerId(),\n },\n };\n }\n return {\n adminNamespace: {},\n };\n }\n\n buildManageKnowledgeUrl(): string {\n return this.manageKnowledgeUrl();\n }\n\n buildBusinessProfileUrl(): string {\n return this.businessProfileUrl();\n }\n\n isWebChatCreateRouteSet(): boolean {\n return this.webChatWidgetEditRoute()?.length > 0;\n }\n\n buildWebChatWidgetEditRoute(widgetId: string): RouteCommand[] {\n return this.webChatWidgetEditRoute().map((segment) => {\n if (typeof segment === 'string') {\n return segment === ':id' ? widgetId : segment;\n }\n if (segment['outlets']) {\n for (const [key, value] of Object.entries(segment['outlets'])) {\n if (typeof value === 'string') {\n segment['outlets'][key] = value === ':id' ? widgetId : value;\n } else {\n const valueArray = value as string[];\n segment['outlets'][key] = valueArray.map((item) => (item === ':id' ? widgetId : item));\n }\n }\n }\n return segment;\n });\n }\n\n buildBusinessProfileKnowledgeSourceId(): string {\n if (this.accountGroupId()) {\n return `KS-business-profile-${this.accountGroupId()}`;\n }\n return '';\n }\n\n buildBusinessProfileKnowledgeSource(shouldSuggest = false): KnowledgeSourceWithSuggestedFlag | null {\n if (this.accountGroupId()) {\n return {\n id: this.buildBusinessProfileKnowledgeSourceId(),\n namespace: this.buildNamespaceInterface(),\n name: 'Business Profile', // untranslated because that is how the name is in the backend\n config: {\n businessProfileConfig: {\n accountGroupId: this.accountGroupId(),\n },\n },\n isSuggested: shouldSuggest,\n } as KnowledgeSourceWithSuggestedFlag;\n }\n return null;\n }\n\n buildBusinessWebsiteKnowledgeSourceId(): string {\n if (this.accountGroupId()) {\n return `KS-business-website-${this.accountGroupId()}`;\n }\n return '';\n }\n\n buildBusinessWebsiteKnowledgeSource(url: string, shouldSuggest = false): KnowledgeSourceWithSuggestedFlag | null {\n if (url) {\n return {\n id: this.buildBusinessWebsiteKnowledgeSourceId(),\n namespace: this.buildNamespaceInterface(),\n name: 'Business Website', // untranslated because that is how the name is in the backend\n config: {\n websiteScrapeConfig: {\n url: url,\n crawlMode: WebsiteScrapeConfigCrawlMode.WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SINGLE,\n scrapeProgress: WebsiteScrapeConfigProgress.WEBSITE_SCRAPE_CONFIG_PROGRESS_QUEUED,\n },\n },\n isSuggested: shouldSuggest,\n } as KnowledgeSourceWithSuggestedFlag;\n }\n return null;\n }\n\n getKnowledgePreview(source: KnowledgeSource): string {\n if (source?.config?.businessProfileConfig?.accountGroupId) {\n return this.translateService.instant('INBOX.WEBCHAT.SETTINGS.BUSINESS_PROFILE.DESCRIPTION');\n }\n if (source?.config?.customDataConfig) {\n return source?.config?.customDataConfig?.text;\n }\n if (source?.config?.websiteScrapeConfig) {\n return source?.config?.websiteScrapeConfig?.url;\n }\n\n return '';\n }\n\n getLastScraped(source: KnowledgeSource): string {\n const lastScraped = source?.config?.websiteScrapeConfig?.lastScraped;\n if (!lastScraped) {\n return 'unknown';\n }\n\n return dayjs.utc(lastScraped).format('MMM D, YYYY');\n }\n\n async rescrapeWebsite(source: KnowledgeSource): Promise {\n await firstValueFrom(\n this.knowledgeBaseService.scrapeWebsite({ knowledgeSourceId: source.id, namespace: source.namespace }),\n );\n }\n\n getAppDisplayName(app: App): string {\n if (app.appTypeName) {\n return app.name + ' • ' + app.appTypeName;\n }\n return app.name;\n }\n\n async getOtherAIDisclaimerText(knowledgeSourceId: string, currentAppId: string): Promise {\n if (knowledgeSourceId && currentAppId) {\n const apps = await this.listAllAppsForKnowledgeSource(knowledgeSourceId);\n const filteredApps = apps.filter((app) => currentAppId != app.id);\n if (filteredApps.length > 0) {\n return this.translateService.instant('EDIT_KNOWLEDGE.OTHER_AI', { count: filteredApps.length });\n }\n }\n return '';\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { AiKnowledgeConfig, RouteCommand } from './interface/config.interface';\nimport { AiKnowledgeService } from './ai-knowledge.service';\nimport {\n ACCOUNT_GROUP_ID_TOKEN,\n AI_KNOWLEDGE_CONFIG_TOKEN,\n BUSINESS_PROFILE_URL_TOKEN,\n WEB_CHAT_WIDGET_EDIT_ROUTE_TOKEN,\n MANAGE_KNOWLEDGE_URL_TOKEN,\n MARKET_ID_TOKEN,\n PARTNER_ID_TOKEN,\n SHOW_BUSINESS_PROFILE_SOURCE_TOKEN,\n} from './tokens';\nimport { isObservable, Observable, of } from 'rxjs';\n\n@NgModule()\nexport class AiKnowledgeModule {\n static forRoot(c: { config: InjectionToken }): ModuleWithProviders {\n const result = {\n ngModule: AiKnowledgeModule,\n providers: [\n AiKnowledgeService,\n { provide: AI_KNOWLEDGE_CONFIG_TOKEN, useExisting: c.config },\n { provide: ACCOUNT_GROUP_ID_TOKEN, deps: [AI_KNOWLEDGE_CONFIG_TOKEN], useFactory: accountGroupIdFactory },\n { provide: MARKET_ID_TOKEN, deps: [AI_KNOWLEDGE_CONFIG_TOKEN], useFactory: marketIdFactory },\n { provide: PARTNER_ID_TOKEN, deps: [AI_KNOWLEDGE_CONFIG_TOKEN], useFactory: partnerIdFactory },\n {\n provide: MANAGE_KNOWLEDGE_URL_TOKEN,\n deps: [AI_KNOWLEDGE_CONFIG_TOKEN],\n useFactory: manageKnowledgeUrlFactory,\n },\n {\n provide: BUSINESS_PROFILE_URL_TOKEN,\n deps: [AI_KNOWLEDGE_CONFIG_TOKEN],\n useFactory: businessProfileUrlFactory,\n },\n {\n provide: SHOW_BUSINESS_PROFILE_SOURCE_TOKEN,\n deps: [AI_KNOWLEDGE_CONFIG_TOKEN],\n useFactory: showBusinessProfileSourceFactory,\n },\n {\n provide: WEB_CHAT_WIDGET_EDIT_ROUTE_TOKEN,\n deps: [AI_KNOWLEDGE_CONFIG_TOKEN],\n useFactory: webChatWidgetEditRouteFactory,\n },\n ],\n };\n return result;\n }\n}\n\nfunction accountGroupIdFactory(config: AiKnowledgeConfig): Observable {\n return isObservable(config.accountGroupId$) ? config.accountGroupId$ : of(config.accountGroupId$);\n}\n\nfunction marketIdFactory(config: AiKnowledgeConfig): Observable {\n return isObservable(config.marketId$) ? config.marketId$ : of(config.marketId$);\n}\n\nfunction partnerIdFactory(config: AiKnowledgeConfig): Observable {\n return isObservable(config.partnerId$) ? config.partnerId$ : of(config.partnerId$);\n}\n\nfunction manageKnowledgeUrlFactory(config: AiKnowledgeConfig): Observable {\n return isObservable(config.manageKnowledgeUrl$) ? config.manageKnowledgeUrl$ : of(config.manageKnowledgeUrl$);\n}\n\nfunction businessProfileUrlFactory(config: AiKnowledgeConfig): Observable {\n return isObservable(config.businessProfileUrl$) ? config.businessProfileUrl$ : of(config.businessProfileUrl$);\n}\n\nfunction showBusinessProfileSourceFactory(config: AiKnowledgeConfig): Observable {\n return isObservable(config.showBusinessProfileSource$)\n ? config.showBusinessProfileSource$\n : of(config.showBusinessProfileSource$);\n}\n\nfunction webChatWidgetEditRouteFactory(config: AiKnowledgeConfig): Observable {\n return isObservable(config.webChatWidgetEditRoute$)\n ? config.webChatWidgetEditRoute$\n : of(config.webChatWidgetEditRoute$);\n}\n","import { _IdGenerator, FocusKeyManager } from '@angular/cdk/a11y';\nimport { Directionality, BidiModule } from '@angular/cdk/bidi';\nimport { hasModifierKey, SPACE, ENTER } from '@angular/cdk/keycodes';\nimport * as i0 from '@angular/core';\nimport { inject, ElementRef, Directive, TemplateRef, InjectionToken, EventEmitter, booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChild, ContentChildren, ViewChild, Input, Output, ChangeDetectorRef, QueryList, numberAttribute, NgModule } from '@angular/core';\nimport { ControlContainer } from '@angular/forms';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { Subject, of } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nconst _c0 = [\"*\"];\nfunction CdkStep_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0);\n }\n}\nlet CdkStepHeader = /*#__PURE__*/(() => {\n class CdkStepHeader {\n _elementRef = inject(ElementRef);\n constructor() {}\n /** Focuses the step header. */\n focus() {\n this._elementRef.nativeElement.focus();\n }\n static ɵfac = function CdkStepHeader_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkStepHeader)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkStepHeader,\n selectors: [[\"\", \"cdkStepHeader\", \"\"]],\n hostAttrs: [\"role\", \"tab\"]\n });\n }\n return CdkStepHeader;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CdkStepLabel = /*#__PURE__*/(() => {\n class CdkStepLabel {\n template = inject(TemplateRef);\n constructor() {}\n static ɵfac = function CdkStepLabel_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkStepLabel)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkStepLabel,\n selectors: [[\"\", \"cdkStepLabel\", \"\"]]\n });\n }\n return CdkStepLabel;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Change event emitted on selection changes. */\nclass StepperSelectionEvent {\n /** Index of the step now selected. */\n selectedIndex;\n /** Index of the step previously selected. */\n previouslySelectedIndex;\n /** The step instance now selected. */\n selectedStep;\n /** The step instance previously selected. */\n previouslySelectedStep;\n}\n/** Enum to represent the different states of the steps. */\nconst STEP_STATE = {\n NUMBER: 'number',\n EDIT: 'edit',\n DONE: 'done',\n ERROR: 'error'\n};\n/** InjectionToken that can be used to specify the global stepper options. */\nconst STEPPER_GLOBAL_OPTIONS = /*#__PURE__*/new InjectionToken('STEPPER_GLOBAL_OPTIONS');\nlet CdkStep = /*#__PURE__*/(() => {\n class CdkStep {\n _stepperOptions;\n _stepper = inject(CdkStepper);\n _displayDefaultIndicatorType;\n /** Template for step label if it exists. */\n stepLabel;\n /** Forms that have been projected into the step. */\n _childForms;\n /** Template for step content. */\n content;\n /** The top level abstract control of the step. */\n stepControl;\n /** Whether user has attempted to move away from the step. */\n interacted = false;\n /** Emits when the user has attempted to move away from the step. */\n interactedStream = new EventEmitter();\n /** Plain text label of the step. */\n label;\n /** Error message to display when there's an error. */\n errorMessage;\n /** Aria label for the tab. */\n ariaLabel;\n /**\n * Reference to the element that the tab is labelled by.\n * Will be cleared if `aria-label` is set at the same time.\n */\n ariaLabelledby;\n /** State of the step. */\n state;\n /** Whether the user can return to this step once it has been marked as completed. */\n editable = true;\n /** Whether the completion of step is optional. */\n optional = false;\n /** Whether step is marked as completed. */\n get completed() {\n return this._completedOverride == null ? this._getDefaultCompleted() : this._completedOverride;\n }\n set completed(value) {\n this._completedOverride = value;\n }\n _completedOverride = null;\n _getDefaultCompleted() {\n return this.stepControl ? this.stepControl.valid && this.interacted : this.interacted;\n }\n /** Whether step has an error. */\n get hasError() {\n return this._customError == null ? this._getDefaultError() : this._customError;\n }\n set hasError(value) {\n this._customError = value;\n }\n _customError = null;\n _getDefaultError() {\n return this.stepControl && this.stepControl.invalid && this.interacted;\n }\n constructor() {\n const stepperOptions = inject(STEPPER_GLOBAL_OPTIONS, {\n optional: true\n });\n this._stepperOptions = stepperOptions ? stepperOptions : {};\n this._displayDefaultIndicatorType = this._stepperOptions.displayDefaultIndicatorType !== false;\n }\n /** Selects this step component. */\n select() {\n this._stepper.selected = this;\n }\n /** Resets the step to its initial state. Note that this includes resetting form data. */\n reset() {\n this.interacted = false;\n if (this._completedOverride != null) {\n this._completedOverride = false;\n }\n if (this._customError != null) {\n this._customError = false;\n }\n if (this.stepControl) {\n // Reset the forms since the default error state matchers will show errors on submit and we\n // want the form to be back to its initial state (see #29781). Submitted state is on the\n // individual directives, rather than the control, so we need to reset them ourselves.\n this._childForms?.forEach(form => form.resetForm?.());\n this.stepControl.reset();\n }\n }\n ngOnChanges() {\n // Since basically all inputs of the MatStep get proxied through the view down to the\n // underlying MatStepHeader, we have to make sure that change detection runs correctly.\n this._stepper._stateChanged();\n }\n _markAsInteracted() {\n if (!this.interacted) {\n this.interacted = true;\n this.interactedStream.emit(this);\n }\n }\n /** Determines whether the error state can be shown. */\n _showError() {\n // We want to show the error state either if the user opted into/out of it using the\n // global options, or if they've explicitly set it through the `hasError` input.\n return this._stepperOptions.showError ?? this._customError != null;\n }\n static ɵfac = function CdkStep_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkStep)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CdkStep,\n selectors: [[\"cdk-step\"]],\n contentQueries: function CdkStep_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, CdkStepLabel, 5);\n i0.ɵɵcontentQuery(dirIndex,\n // Note: we look for `ControlContainer` here, because both `NgForm` and `FormGroupDirective`\n // provides themselves as such, but we don't want to have a concrete reference to both of\n // the directives. The type is marked as `Partial` in case we run into a class that provides\n // itself as `ControlContainer` but doesn't have the same interface as the directives.\n ControlContainer, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.stepLabel = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._childForms = _t);\n }\n },\n viewQuery: function CdkStep_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(TemplateRef, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.content = _t.first);\n }\n },\n inputs: {\n stepControl: \"stepControl\",\n label: \"label\",\n errorMessage: \"errorMessage\",\n ariaLabel: [0, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [0, \"aria-labelledby\", \"ariaLabelledby\"],\n state: \"state\",\n editable: [2, \"editable\", \"editable\", booleanAttribute],\n optional: [2, \"optional\", \"optional\", booleanAttribute],\n completed: [2, \"completed\", \"completed\", booleanAttribute],\n hasError: [2, \"hasError\", \"hasError\", booleanAttribute]\n },\n outputs: {\n interactedStream: \"interacted\"\n },\n exportAs: [\"cdkStep\"],\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function CdkStep_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, CdkStep_ng_template_0_Template, 1, 0, \"ng-template\");\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n return CdkStep;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CdkStepper = /*#__PURE__*/(() => {\n class CdkStepper {\n _dir = inject(Directionality, {\n optional: true\n });\n _changeDetectorRef = inject(ChangeDetectorRef);\n _elementRef = inject(ElementRef);\n /** Emits when the component is destroyed. */\n _destroyed = new Subject();\n /** Used for managing keyboard focus. */\n _keyManager;\n /** Full list of steps inside the stepper, including inside nested steppers. */\n _steps;\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n steps = new QueryList();\n /** The list of step headers of the steps in the stepper. */\n _stepHeader;\n /** List of step headers sorted based on their DOM order. */\n _sortedHeaders = new QueryList();\n /** Whether the validity of previous steps should be checked or not. */\n linear = false;\n /** The index of the selected step. */\n get selectedIndex() {\n return this._selectedIndex;\n }\n set selectedIndex(index) {\n if (this.steps && this._steps) {\n // Ensure that the index can't be out of bounds.\n if (!this._isValidIndex(index) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('cdkStepper: Cannot assign out-of-bounds value to `selectedIndex`.');\n }\n this.selected?._markAsInteracted();\n if (this._selectedIndex !== index && !this._anyControlsInvalidOrPending(index) && (index >= this._selectedIndex || this.steps.toArray()[index].editable)) {\n this._updateSelectedItemIndex(index);\n }\n } else {\n this._selectedIndex = index;\n }\n }\n _selectedIndex = 0;\n /** The step that is selected. */\n get selected() {\n return this.steps ? this.steps.toArray()[this.selectedIndex] : undefined;\n }\n set selected(step) {\n this.selectedIndex = step && this.steps ? this.steps.toArray().indexOf(step) : -1;\n }\n /** Event emitted when the selected step has changed. */\n selectionChange = new EventEmitter();\n /** Output to support two-way binding on `[(selectedIndex)]` */\n selectedIndexChange = new EventEmitter();\n /** Used to track unique ID for each stepper component. */\n _groupId = inject(_IdGenerator).getId('cdk-stepper-');\n /** Orientation of the stepper. */\n get orientation() {\n return this._orientation;\n }\n set orientation(value) {\n // This is a protected method so that `MatStepper` can hook into it.\n this._orientation = value;\n if (this._keyManager) {\n this._keyManager.withVerticalOrientation(value === 'vertical');\n }\n }\n _orientation = 'horizontal';\n constructor() {}\n ngAfterContentInit() {\n this._steps.changes.pipe(startWith(this._steps), takeUntil(this._destroyed)).subscribe(steps => {\n this.steps.reset(steps.filter(step => step._stepper === this));\n this.steps.notifyOnChanges();\n });\n }\n ngAfterViewInit() {\n // If the step headers are defined outside of the `ngFor` that renders the steps, like in the\n // Material stepper, they won't appear in the `QueryList` in the same order as they're\n // rendered in the DOM which will lead to incorrect keyboard navigation. We need to sort\n // them manually to ensure that they're correct. Alternatively, we can change the Material\n // template to inline the headers in the `ngFor`, but that'll result in a lot of\n // code duplication. See #23539.\n this._stepHeader.changes.pipe(startWith(this._stepHeader), takeUntil(this._destroyed)).subscribe(headers => {\n this._sortedHeaders.reset(headers.toArray().sort((a, b) => {\n const documentPosition = a._elementRef.nativeElement.compareDocumentPosition(b._elementRef.nativeElement);\n // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // tslint:disable-next-line:no-bitwise\n return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n }));\n this._sortedHeaders.notifyOnChanges();\n });\n // Note that while the step headers are content children by default, any components that\n // extend this one might have them as view children. We initialize the keyboard handling in\n // AfterViewInit so we're guaranteed for both view and content children to be defined.\n this._keyManager = new FocusKeyManager(this._sortedHeaders).withWrap().withHomeAndEnd().withVerticalOrientation(this._orientation === 'vertical');\n (this._dir ? this._dir.change : of()).pipe(startWith(this._layoutDirection()), takeUntil(this._destroyed)).subscribe(direction => this._keyManager.withHorizontalOrientation(direction));\n this._keyManager.updateActiveItem(this._selectedIndex);\n // No need to `takeUntil` here, because we're the ones destroying `steps`.\n this.steps.changes.subscribe(() => {\n if (!this.selected) {\n this._selectedIndex = Math.max(this._selectedIndex - 1, 0);\n }\n });\n // The logic which asserts that the selected index is within bounds doesn't run before the\n // steps are initialized, because we don't how many steps there are yet so we may have an\n // invalid index on init. If that's the case, auto-correct to the default so we don't throw.\n if (!this._isValidIndex(this._selectedIndex)) {\n this._selectedIndex = 0;\n }\n }\n ngOnDestroy() {\n this._keyManager?.destroy();\n this.steps.destroy();\n this._sortedHeaders.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Selects and focuses the next step in list. */\n next() {\n this.selectedIndex = Math.min(this._selectedIndex + 1, this.steps.length - 1);\n }\n /** Selects and focuses the previous step in list. */\n previous() {\n this.selectedIndex = Math.max(this._selectedIndex - 1, 0);\n }\n /** Resets the stepper to its initial state. Note that this includes clearing form data. */\n reset() {\n this._updateSelectedItemIndex(0);\n this.steps.forEach(step => step.reset());\n this._stateChanged();\n }\n /** Returns a unique id for each step label element. */\n _getStepLabelId(i) {\n return `${this._groupId}-label-${i}`;\n }\n /** Returns unique id for each step content element. */\n _getStepContentId(i) {\n return `${this._groupId}-content-${i}`;\n }\n /** Marks the component to be change detected. */\n _stateChanged() {\n this._changeDetectorRef.markForCheck();\n }\n /** Returns position state of the step with the given index. */\n _getAnimationDirection(index) {\n const position = index - this._selectedIndex;\n if (position < 0) {\n return this._layoutDirection() === 'rtl' ? 'next' : 'previous';\n } else if (position > 0) {\n return this._layoutDirection() === 'rtl' ? 'previous' : 'next';\n }\n return 'current';\n }\n /** Returns the type of icon to be displayed. */\n _getIndicatorType(index, state = STEP_STATE.NUMBER) {\n const step = this.steps.toArray()[index];\n const isCurrentStep = this._isCurrentStep(index);\n return step._displayDefaultIndicatorType ? this._getDefaultIndicatorLogic(step, isCurrentStep) : this._getGuidelineLogic(step, isCurrentStep, state);\n }\n _getDefaultIndicatorLogic(step, isCurrentStep) {\n if (step._showError() && step.hasError && !isCurrentStep) {\n return STEP_STATE.ERROR;\n } else if (!step.completed || isCurrentStep) {\n return STEP_STATE.NUMBER;\n } else {\n return step.editable ? STEP_STATE.EDIT : STEP_STATE.DONE;\n }\n }\n _getGuidelineLogic(step, isCurrentStep, state = STEP_STATE.NUMBER) {\n if (step._showError() && step.hasError && !isCurrentStep) {\n return STEP_STATE.ERROR;\n } else if (step.completed && !isCurrentStep) {\n return STEP_STATE.DONE;\n } else if (step.completed && isCurrentStep) {\n return state;\n } else if (step.editable && isCurrentStep) {\n return STEP_STATE.EDIT;\n } else {\n return state;\n }\n }\n _isCurrentStep(index) {\n return this._selectedIndex === index;\n }\n /** Returns the index of the currently-focused step header. */\n _getFocusIndex() {\n return this._keyManager ? this._keyManager.activeItemIndex : this._selectedIndex;\n }\n _updateSelectedItemIndex(newIndex) {\n const stepsArray = this.steps.toArray();\n this.selectionChange.emit({\n selectedIndex: newIndex,\n previouslySelectedIndex: this._selectedIndex,\n selectedStep: stepsArray[newIndex],\n previouslySelectedStep: stepsArray[this._selectedIndex]\n });\n // If focus is inside the stepper, move it to the next header, otherwise it may become\n // lost when the active step content is hidden. We can't be more granular with the check\n // (e.g. checking whether focus is inside the active step), because we don't have a\n // reference to the elements that are rendering out the content.\n this._containsFocus() ? this._keyManager.setActiveItem(newIndex) : this._keyManager.updateActiveItem(newIndex);\n this._selectedIndex = newIndex;\n this.selectedIndexChange.emit(this._selectedIndex);\n this._stateChanged();\n }\n _onKeydown(event) {\n const hasModifier = hasModifierKey(event);\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n if (manager.activeItemIndex != null && !hasModifier && (keyCode === SPACE || keyCode === ENTER)) {\n this.selectedIndex = manager.activeItemIndex;\n event.preventDefault();\n } else {\n manager.setFocusOrigin('keyboard').onKeydown(event);\n }\n }\n _anyControlsInvalidOrPending(index) {\n if (this.linear && index >= 0) {\n return this.steps.toArray().slice(0, index).some(step => {\n const control = step.stepControl;\n const isIncomplete = control ? control.invalid || control.pending || !step.interacted : !step.completed;\n return isIncomplete && !step.optional && !step._completedOverride;\n });\n }\n return false;\n }\n _layoutDirection() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Checks whether the stepper contains the focused element. */\n _containsFocus() {\n const stepperElement = this._elementRef.nativeElement;\n const focusedElement = _getFocusedElementPierceShadowDom();\n return stepperElement === focusedElement || stepperElement.contains(focusedElement);\n }\n /** Checks whether the passed-in index is a valid step index. */\n _isValidIndex(index) {\n return index > -1 && (!this.steps || index < this.steps.length);\n }\n static ɵfac = function CdkStepper_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkStepper)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkStepper,\n selectors: [[\"\", \"cdkStepper\", \"\"]],\n contentQueries: function CdkStepper_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, CdkStep, 5);\n i0.ɵɵcontentQuery(dirIndex, CdkStepHeader, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._steps = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._stepHeader = _t);\n }\n },\n inputs: {\n linear: [2, \"linear\", \"linear\", booleanAttribute],\n selectedIndex: [2, \"selectedIndex\", \"selectedIndex\", numberAttribute],\n selected: \"selected\",\n orientation: \"orientation\"\n },\n outputs: {\n selectionChange: \"selectionChange\",\n selectedIndexChange: \"selectedIndexChange\"\n },\n exportAs: [\"cdkStepper\"],\n features: [i0.ɵɵInputTransformsFeature]\n });\n }\n return CdkStepper;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Button that moves to the next step in a stepper workflow. */\nlet CdkStepperNext = /*#__PURE__*/(() => {\n class CdkStepperNext {\n _stepper = inject(CdkStepper);\n /** Type of the next button. Defaults to \"submit\" if not specified. */\n type = 'submit';\n constructor() {}\n static ɵfac = function CdkStepperNext_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkStepperNext)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkStepperNext,\n selectors: [[\"button\", \"cdkStepperNext\", \"\"]],\n hostVars: 1,\n hostBindings: function CdkStepperNext_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function CdkStepperNext_click_HostBindingHandler() {\n return ctx._stepper.next();\n });\n }\n if (rf & 2) {\n i0.ɵɵhostProperty(\"type\", ctx.type);\n }\n },\n inputs: {\n type: \"type\"\n }\n });\n }\n return CdkStepperNext;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Button that moves to the previous step in a stepper workflow. */\nlet CdkStepperPrevious = /*#__PURE__*/(() => {\n class CdkStepperPrevious {\n _stepper = inject(CdkStepper);\n /** Type of the previous button. Defaults to \"button\" if not specified. */\n type = 'button';\n constructor() {}\n static ɵfac = function CdkStepperPrevious_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkStepperPrevious)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkStepperPrevious,\n selectors: [[\"button\", \"cdkStepperPrevious\", \"\"]],\n hostVars: 1,\n hostBindings: function CdkStepperPrevious_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function CdkStepperPrevious_click_HostBindingHandler() {\n return ctx._stepper.previous();\n });\n }\n if (rf & 2) {\n i0.ɵɵhostProperty(\"type\", ctx.type);\n }\n },\n inputs: {\n type: \"type\"\n }\n });\n }\n return CdkStepperPrevious;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CdkStepperModule = /*#__PURE__*/(() => {\n class CdkStepperModule {\n static ɵfac = function CdkStepperModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkStepperModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: CdkStepperModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [BidiModule]\n });\n }\n return CdkStepperModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkStep, CdkStepHeader, CdkStepLabel, CdkStepper, CdkStepperModule, CdkStepperNext, CdkStepperPrevious, STEPPER_GLOBAL_OPTIONS, STEP_STATE, StepperSelectionEvent };\n","import { TemplatePortal, CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';\nimport { CdkStepLabel, CdkStepHeader, CdkStep, CdkStepper, CdkStepperNext, CdkStepperPrevious, CdkStepperModule } from '@angular/cdk/stepper';\nimport * as i0 from '@angular/core';\nimport { Directive, Injectable, Optional, SkipSelf, inject, ChangeDetectorRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, TemplateRef, ViewContainerRef, ContentChild, QueryList, EventEmitter, ElementRef, ViewChildren, ContentChildren, Output, NgModule } from '@angular/core';\nimport { _StructuralStylesLoader, MatRipple, ErrorStateMatcher, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport { MatIcon, MatIconModule } from '@angular/material/icon';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Subject, Subscription } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { _CdkPrivateStyleLoader, _VisuallyHiddenLoader } from '@angular/cdk/private';\nimport { switchMap, map, startWith, takeUntil } from 'rxjs/operators';\nimport { trigger, state, style, transition, group, animate, query, animateChild } from '@angular/animations';\nimport { Platform } from '@angular/cdk/platform';\nfunction MatStepHeader_Conditional_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 2);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.iconOverrides[ctx_r0.state])(\"ngTemplateOutletContext\", ctx_r0._getIconContext());\n }\n}\nfunction MatStepHeader_Conditional_4_Case_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 7);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0._getDefaultTextForState(ctx_r0.state));\n }\n}\nfunction MatStepHeader_Conditional_4_Case_1_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 8);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0._intl.completedLabel);\n }\n}\nfunction MatStepHeader_Conditional_4_Case_1_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 8);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0._intl.editableLabel);\n }\n}\nfunction MatStepHeader_Conditional_4_Case_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MatStepHeader_Conditional_4_Case_1_Conditional_0_Template, 2, 1, \"span\", 8)(1, MatStepHeader_Conditional_4_Case_1_Conditional_1_Template, 2, 1, \"span\", 8);\n i0.ɵɵelementStart(2, \"mat-icon\", 7);\n i0.ɵɵtext(3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵconditional(ctx_r0.state === \"done\" ? 0 : ctx_r0.state === \"edit\" ? 1 : -1);\n i0.ɵɵadvance(3);\n i0.ɵɵtextInterpolate(ctx_r0._getDefaultTextForState(ctx_r0.state));\n }\n}\nfunction MatStepHeader_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MatStepHeader_Conditional_4_Case_0_Template, 2, 1, \"span\", 7)(1, MatStepHeader_Conditional_4_Case_1_Template, 4, 2);\n }\n if (rf & 2) {\n let tmp_1_0;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵconditional((tmp_1_0 = ctx_r0.state) === \"number\" ? 0 : 1);\n }\n}\nfunction MatStepHeader_Conditional_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 4);\n i0.ɵɵelementContainer(1, 9);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.template);\n }\n}\nfunction MatStepHeader_Conditional_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 4);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0.label);\n }\n}\nfunction MatStepHeader_Conditional_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 5);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0._intl.optionalLabel);\n }\n}\nfunction MatStepHeader_Conditional_9_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 6);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0.errorMessage);\n }\n}\nconst _c0 = [\"*\"];\nfunction MatStep_ng_template_0_ng_template_1_Template(rf, ctx) {}\nfunction MatStep_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0);\n i0.ɵɵtemplate(1, MatStep_ng_template_0_ng_template_1_Template, 0, 0, \"ng-template\", 0);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"cdkPortalOutlet\", ctx_r0._portal);\n }\n}\nconst _c1 = (a0, a1) => ({\n step: a0,\n i: a1\n});\nconst _c2 = a0 => ({\n \"animationDuration\": a0\n});\nconst _c3 = (a0, a1) => ({\n \"value\": a0,\n \"params\": a1\n});\nfunction MatStepper_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0);\n }\n}\nfunction MatStepper_Case_1_For_3_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 6);\n }\n}\nfunction MatStepper_Case_1_For_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 5);\n i0.ɵɵtemplate(1, MatStepper_Case_1_For_3_Conditional_1_Template, 1, 0, \"div\", 6);\n }\n if (rf & 2) {\n const step_r1 = ctx.$implicit;\n const ɵ$index_8_r2 = ctx.$index;\n const ɵ$count_8_r3 = ctx.$count;\n i0.ɵɵnextContext(2);\n const stepTemplate_r4 = i0.ɵɵreference(4);\n i0.ɵɵproperty(\"ngTemplateOutlet\", stepTemplate_r4)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(3, _c1, step_r1, ɵ$index_8_r2));\n i0.ɵɵadvance();\n i0.ɵɵconditional(!(ɵ$index_8_r2 === ɵ$count_8_r3 - 1) ? 1 : -1);\n }\n}\nfunction MatStepper_Case_1_For_6_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 7);\n i0.ɵɵlistener(\"@horizontalStepTransition.done\", function MatStepper_Case_1_For_6_Template_div_animation_horizontalStepTransition_done_0_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r5 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r5._animationDone.next($event));\n });\n i0.ɵɵelementContainer(1, 8);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const step_r7 = ctx.$implicit;\n const ɵ$index_16_r8 = ctx.$index;\n const ctx_r5 = i0.ɵɵnextContext(2);\n i0.ɵɵclassProp(\"mat-horizontal-stepper-content-inactive\", ctx_r5.selectedIndex !== ɵ$index_16_r8);\n i0.ɵɵproperty(\"@horizontalStepTransition\", i0.ɵɵpureFunction2(8, _c3, ctx_r5._getAnimationDirection(ɵ$index_16_r8), i0.ɵɵpureFunction1(6, _c2, ctx_r5._getAnimationDuration())))(\"id\", ctx_r5._getStepContentId(ɵ$index_16_r8));\n i0.ɵɵattribute(\"aria-labelledby\", ctx_r5._getStepLabelId(ɵ$index_16_r8));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", step_r7.content);\n }\n}\nfunction MatStepper_Case_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 1)(1, \"div\", 2);\n i0.ɵɵrepeaterCreate(2, MatStepper_Case_1_For_3_Template, 2, 6, null, null, i0.ɵɵrepeaterTrackByIdentity);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"div\", 3);\n i0.ɵɵrepeaterCreate(5, MatStepper_Case_1_For_6_Template, 2, 11, \"div\", 4, i0.ɵɵrepeaterTrackByIdentity);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r5 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵrepeater(ctx_r5.steps);\n i0.ɵɵadvance(3);\n i0.ɵɵrepeater(ctx_r5.steps);\n }\n}\nfunction MatStepper_Case_2_For_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 9);\n i0.ɵɵelementContainer(1, 5);\n i0.ɵɵelementStart(2, \"div\", 10)(3, \"div\", 11);\n i0.ɵɵlistener(\"@verticalStepTransition.done\", function MatStepper_Case_2_For_1_Template_div_animation_verticalStepTransition_done_3_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r5 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r5._animationDone.next($event));\n });\n i0.ɵɵelementStart(4, \"div\", 12);\n i0.ɵɵelementContainer(5, 8);\n i0.ɵɵelementEnd()()()();\n }\n if (rf & 2) {\n const step_r10 = ctx.$implicit;\n const ɵ$index_22_r11 = ctx.$index;\n const ɵ$count_22_r12 = ctx.$count;\n const ctx_r5 = i0.ɵɵnextContext(2);\n const stepTemplate_r4 = i0.ɵɵreference(4);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", stepTemplate_r4)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(10, _c1, step_r10, ɵ$index_22_r11));\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"mat-stepper-vertical-line\", !(ɵ$index_22_r11 === ɵ$count_22_r12 - 1));\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"mat-vertical-stepper-content-inactive\", ctx_r5.selectedIndex !== ɵ$index_22_r11);\n i0.ɵɵproperty(\"@verticalStepTransition\", i0.ɵɵpureFunction2(15, _c3, ctx_r5._getAnimationDirection(ɵ$index_22_r11), i0.ɵɵpureFunction1(13, _c2, ctx_r5._getAnimationDuration())))(\"id\", ctx_r5._getStepContentId(ɵ$index_22_r11));\n i0.ɵɵattribute(\"aria-labelledby\", ctx_r5._getStepLabelId(ɵ$index_22_r11));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", step_r10.content);\n }\n}\nfunction MatStepper_Case_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵrepeaterCreate(0, MatStepper_Case_2_For_1_Template, 6, 18, \"div\", 9, i0.ɵɵrepeaterTrackByIdentity);\n }\n if (rf & 2) {\n const ctx_r5 = i0.ɵɵnextContext();\n i0.ɵɵrepeater(ctx_r5.steps);\n }\n}\nfunction MatStepper_ng_template_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r13 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"mat-step-header\", 13);\n i0.ɵɵlistener(\"click\", function MatStepper_ng_template_3_Template_mat_step_header_click_0_listener() {\n const step_r14 = i0.ɵɵrestoreView(_r13).step;\n return i0.ɵɵresetView(step_r14.select());\n })(\"keydown\", function MatStepper_ng_template_3_Template_mat_step_header_keydown_0_listener($event) {\n i0.ɵɵrestoreView(_r13);\n const ctx_r5 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r5._onKeydown($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const step_r14 = ctx.step;\n const i_r15 = ctx.i;\n const ctx_r5 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"mat-horizontal-stepper-header\", ctx_r5.orientation === \"horizontal\")(\"mat-vertical-stepper-header\", ctx_r5.orientation === \"vertical\");\n i0.ɵɵproperty(\"tabIndex\", ctx_r5._getFocusIndex() === i_r15 ? 0 : -1)(\"id\", ctx_r5._getStepLabelId(i_r15))(\"index\", i_r15)(\"state\", ctx_r5._getIndicatorType(i_r15, step_r14.state))(\"label\", step_r14.stepLabel || step_r14.label)(\"selected\", ctx_r5.selectedIndex === i_r15)(\"active\", ctx_r5._stepIsNavigable(i_r15, step_r14))(\"optional\", step_r14.optional)(\"errorMessage\", step_r14.errorMessage)(\"iconOverrides\", ctx_r5._iconOverrides)(\"disableRipple\", ctx_r5.disableRipple || !ctx_r5._stepIsNavigable(i_r15, step_r14))(\"color\", step_r14.color || ctx_r5.color);\n i0.ɵɵattribute(\"aria-posinset\", i_r15 + 1)(\"aria-setsize\", ctx_r5.steps.length)(\"aria-controls\", ctx_r5._getStepContentId(i_r15))(\"aria-selected\", ctx_r5.selectedIndex == i_r15)(\"aria-label\", step_r14.ariaLabel || null)(\"aria-labelledby\", !step_r14.ariaLabel && step_r14.ariaLabelledby ? step_r14.ariaLabelledby : null)(\"aria-disabled\", ctx_r5._stepIsNavigable(i_r15, step_r14) ? null : true);\n }\n}\nlet MatStepLabel = /*#__PURE__*/(() => {\n class MatStepLabel extends CdkStepLabel {\n static ɵfac = /* @__PURE__ */(() => {\n let ɵMatStepLabel_BaseFactory;\n return function MatStepLabel_Factory(__ngFactoryType__) {\n return (ɵMatStepLabel_BaseFactory || (ɵMatStepLabel_BaseFactory = i0.ɵɵgetInheritedFactory(MatStepLabel)))(__ngFactoryType__ || MatStepLabel);\n };\n })();\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatStepLabel,\n selectors: [[\"\", \"matStepLabel\", \"\"]],\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n return MatStepLabel;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Stepper data that is required for internationalization. */\nlet MatStepperIntl = /*#__PURE__*/(() => {\n class MatStepperIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n changes = new Subject();\n /** Label that is rendered below optional steps. */\n optionalLabel = 'Optional';\n /** Label that is used to indicate step as completed to screen readers. */\n completedLabel = 'Completed';\n /** Label that is used to indicate step as editable to screen readers. */\n editableLabel = 'Editable';\n static ɵfac = function MatStepperIntl_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatStepperIntl)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MatStepperIntl,\n factory: MatStepperIntl.ɵfac,\n providedIn: 'root'\n });\n }\n return MatStepperIntl;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** @docs-private */\nfunction MAT_STEPPER_INTL_PROVIDER_FACTORY(parentIntl) {\n return parentIntl || new MatStepperIntl();\n}\n/** @docs-private */\nconst MAT_STEPPER_INTL_PROVIDER = {\n provide: MatStepperIntl,\n deps: [[/*#__PURE__*/new Optional(), /*#__PURE__*/new SkipSelf(), MatStepperIntl]],\n useFactory: MAT_STEPPER_INTL_PROVIDER_FACTORY\n};\nlet MatStepHeader = /*#__PURE__*/(() => {\n class MatStepHeader extends CdkStepHeader {\n _intl = inject(MatStepperIntl);\n _focusMonitor = inject(FocusMonitor);\n _intlSubscription;\n /** State of the given step. */\n state;\n /** Label of the given step. */\n label;\n /** Error message to display when there's an error. */\n errorMessage;\n /** Overrides for the header icons, passed in via the stepper. */\n iconOverrides;\n /** Index of the given step. */\n index;\n /** Whether the given step is selected. */\n selected;\n /** Whether the given step label is active. */\n active;\n /** Whether the given step is optional. */\n optional;\n /** Whether the ripple should be disabled. */\n disableRipple;\n /**\n * Theme color of the step header. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.io/components/stepper/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.io/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color;\n constructor() {\n super();\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n inject(_CdkPrivateStyleLoader).load(_VisuallyHiddenLoader);\n const changeDetectorRef = inject(ChangeDetectorRef);\n this._intlSubscription = this._intl.changes.subscribe(() => changeDetectorRef.markForCheck());\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n ngOnDestroy() {\n this._intlSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n /** Focuses the step header. */\n focus(origin, options) {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef, origin, options);\n } else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n /** Returns string label of given step if it is a text label. */\n _stringLabel() {\n return this.label instanceof MatStepLabel ? null : this.label;\n }\n /** Returns MatStepLabel if the label of given step is a template label. */\n _templateLabel() {\n return this.label instanceof MatStepLabel ? this.label : null;\n }\n /** Returns the host HTML element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n /** Template context variables that are exposed to the `matStepperIcon` instances. */\n _getIconContext() {\n return {\n index: this.index,\n active: this.active,\n optional: this.optional\n };\n }\n _getDefaultTextForState(state) {\n if (state == 'number') {\n return `${this.index + 1}`;\n }\n if (state == 'edit') {\n return 'create';\n }\n if (state == 'error') {\n return 'warning';\n }\n return state;\n }\n static ɵfac = function MatStepHeader_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatStepHeader)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatStepHeader,\n selectors: [[\"mat-step-header\"]],\n hostAttrs: [\"role\", \"tab\", 1, \"mat-step-header\"],\n hostVars: 2,\n hostBindings: function MatStepHeader_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassMap(\"mat-\" + (ctx.color || \"primary\"));\n }\n },\n inputs: {\n state: \"state\",\n label: \"label\",\n errorMessage: \"errorMessage\",\n iconOverrides: \"iconOverrides\",\n index: \"index\",\n selected: \"selected\",\n active: \"active\",\n optional: \"optional\",\n disableRipple: \"disableRipple\",\n color: \"color\"\n },\n features: [i0.ɵɵInheritDefinitionFeature],\n decls: 10,\n vars: 17,\n consts: [[\"matRipple\", \"\", 1, \"mat-step-header-ripple\", \"mat-focus-indicator\", 3, \"matRippleTrigger\", \"matRippleDisabled\"], [1, \"mat-step-icon-content\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"mat-step-label\"], [1, \"mat-step-text-label\"], [1, \"mat-step-optional\"], [1, \"mat-step-sub-label-error\"], [\"aria-hidden\", \"true\"], [1, \"cdk-visually-hidden\"], [3, \"ngTemplateOutlet\"]],\n template: function MatStepHeader_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 0);\n i0.ɵɵelementStart(1, \"div\")(2, \"div\", 1);\n i0.ɵɵtemplate(3, MatStepHeader_Conditional_3_Template, 1, 2, \"ng-container\", 2)(4, MatStepHeader_Conditional_4_Template, 2, 1);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(5, \"div\", 3);\n i0.ɵɵtemplate(6, MatStepHeader_Conditional_6_Template, 2, 1, \"div\", 4)(7, MatStepHeader_Conditional_7_Template, 2, 1, \"div\", 4)(8, MatStepHeader_Conditional_8_Template, 2, 1, \"div\", 5)(9, MatStepHeader_Conditional_9_Template, 2, 1, \"div\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n let tmp_8_0;\n i0.ɵɵproperty(\"matRippleTrigger\", ctx._getHostElement())(\"matRippleDisabled\", ctx.disableRipple);\n i0.ɵɵadvance();\n i0.ɵɵclassMapInterpolate1(\"mat-step-icon-state-\", ctx.state, \" mat-step-icon\");\n i0.ɵɵclassProp(\"mat-step-icon-selected\", ctx.selected);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(ctx.iconOverrides && ctx.iconOverrides[ctx.state] ? 3 : 4);\n i0.ɵɵadvance(2);\n i0.ɵɵclassProp(\"mat-step-label-active\", ctx.active)(\"mat-step-label-selected\", ctx.selected)(\"mat-step-label-error\", ctx.state == \"error\");\n i0.ɵɵadvance();\n i0.ɵɵconditional((tmp_8_0 = ctx._templateLabel()) ? 6 : ctx._stringLabel() ? 7 : -1, tmp_8_0);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(ctx.optional && ctx.state != \"error\" ? 8 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.state === \"error\" ? 9 : -1);\n }\n },\n dependencies: [MatRipple, NgTemplateOutlet, MatIcon],\n styles: [\".mat-step-header{overflow:hidden;outline:none;cursor:pointer;position:relative;box-sizing:content-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-step-header:focus .mat-focus-indicator::before{content:\\\"\\\"}.mat-step-header:hover[aria-disabled=true]{cursor:default}.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:var(--mat-stepper-header-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-inverse-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent));border-radius:var(--mat-stepper-header-hover-state-layer-shape, var(--mat-sys-corner-medium))}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused{background-color:var(--mat-stepper-header-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-inverse-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent));border-radius:var(--mat-stepper-header-focus-state-layer-shape, var(--mat-sys-corner-medium))}@media(hover: none){.mat-step-header:hover{background:none}}@media(forced-colors: active){.mat-step-header{outline:solid 1px}.mat-step-header[aria-selected=true] .mat-step-label{text-decoration:underline}.mat-step-header[aria-disabled=true]{outline-color:GrayText}.mat-step-header[aria-disabled=true] .mat-step-label,.mat-step-header[aria-disabled=true] .mat-step-icon,.mat-step-header[aria-disabled=true] .mat-step-optional{color:GrayText}}.mat-step-optional{font-size:12px;color:var(--mat-stepper-header-optional-label-text-color, var(--mat-sys-on-surface-variant))}.mat-step-sub-label-error{font-size:12px;font-weight:normal}.mat-step-icon{border-radius:50%;height:24px;width:24px;flex-shrink:0;position:relative;color:var(--mat-stepper-header-icon-foreground-color, var(--mat-sys-surface));background-color:var(--mat-stepper-header-icon-background-color, var(--mat-sys-on-surface-variant))}.mat-step-icon-content{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);display:flex}.mat-step-icon .mat-icon{font-size:16px;height:16px;width:16px}.mat-step-icon-state-error{background-color:var(--mat-stepper-header-error-state-icon-background-color, transparent);color:var(--mat-stepper-header-error-state-icon-foreground-color, var(--mat-sys-error))}.mat-step-icon-state-error .mat-icon{font-size:24px;height:24px;width:24px}.mat-step-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:50px;vertical-align:middle;font-family:var(--mat-stepper-header-label-text-font, var(--mat-sys-title-small-font));font-size:var(--mat-stepper-header-label-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-stepper-header-label-text-weight, var(--mat-sys-title-small-weight));color:var(--mat-stepper-header-label-text-color, var(--mat-sys-on-surface-variant))}.mat-step-label.mat-step-label-active{color:var(--mat-stepper-header-selected-state-label-text-color, var(--mat-sys-on-surface-variant))}.mat-step-label.mat-step-label-error{color:var(--mat-stepper-header-error-state-label-text-color, var(--mat-sys-error));font-size:var(--mat-stepper-header-error-state-label-text-size, var(--mat-sys-title-small-size))}.mat-step-label.mat-step-label-selected{font-size:var(--mat-stepper-header-selected-state-label-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-stepper-header-selected-state-label-text-weight, var(--mat-sys-title-small-weight))}.mat-step-text-label{text-overflow:ellipsis;overflow:hidden}.mat-step-header .mat-step-header-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-step-icon-selected{background-color:var(--mat-stepper-header-selected-state-icon-background-color, var(--mat-sys-primary));color:var(--mat-stepper-header-selected-state-icon-foreground-color, var(--mat-sys-on-primary))}.mat-step-icon-state-done{background-color:var(--mat-stepper-header-done-state-icon-background-color);color:var(--mat-stepper-header-done-state-icon-foreground-color)}.mat-step-icon-state-edit{background-color:var(--mat-stepper-header-edit-state-icon-background-color, var(--mat-sys-primary));color:var(--mat-stepper-header-edit-state-icon-foreground-color, var(--mat-sys-on-primary))}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n return MatStepHeader;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DEFAULT_HORIZONTAL_ANIMATION_DURATION = '500ms';\nconst DEFAULT_VERTICAL_ANIMATION_DURATION = '225ms';\n/**\n * Animations used by the Material steppers.\n * @docs-private\n */\nconst matStepperAnimations = {\n /** Animation that transitions the step along the X axis in a horizontal stepper. */\n horizontalStepTransition: /*#__PURE__*/trigger('horizontalStepTransition', [/*#__PURE__*/state('previous', /*#__PURE__*/style({\n transform: 'translate3d(-100%, 0, 0)',\n visibility: 'hidden'\n })),\n /*#__PURE__*/\n // Transition to `inherit`, rather than `visible`,\n // because visibility on a child element the one from the parent,\n // making this element focusable inside of a `hidden` element.\n state('current', /*#__PURE__*/style({\n transform: 'none',\n visibility: 'inherit'\n })), /*#__PURE__*/state('next', /*#__PURE__*/style({\n transform: 'translate3d(100%, 0, 0)',\n visibility: 'hidden'\n })), /*#__PURE__*/transition('* => *', /*#__PURE__*/group([/*#__PURE__*/animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)'), /*#__PURE__*/query('@*', /*#__PURE__*/animateChild(), {\n optional: true\n })]), {\n params: {\n 'animationDuration': DEFAULT_HORIZONTAL_ANIMATION_DURATION\n }\n })]),\n /** Animation that transitions the step along the Y axis in a vertical stepper. */\n verticalStepTransition: /*#__PURE__*/trigger('verticalStepTransition', [/*#__PURE__*/state('previous', /*#__PURE__*/style({\n height: '0px',\n visibility: 'hidden'\n })), /*#__PURE__*/state('next', /*#__PURE__*/style({\n height: '0px',\n visibility: 'hidden'\n })),\n /*#__PURE__*/\n // Transition to `inherit`, rather than `visible`,\n // because visibility on a child element the one from the parent,\n // making this element focusable inside of a `hidden` element.\n state('current', /*#__PURE__*/style({\n height: '*',\n visibility: 'inherit'\n })), /*#__PURE__*/transition('* <=> current', /*#__PURE__*/group([/*#__PURE__*/animate('{{animationDuration}} cubic-bezier(0.4, 0.0, 0.2, 1)'), /*#__PURE__*/query('@*', /*#__PURE__*/animateChild(), {\n optional: true\n })]), {\n params: {\n 'animationDuration': DEFAULT_VERTICAL_ANIMATION_DURATION\n }\n })])\n};\n\n/**\n * Template to be used to override the icons inside the step header.\n */\nlet MatStepperIcon = /*#__PURE__*/(() => {\n class MatStepperIcon {\n templateRef = inject(TemplateRef);\n /** Name of the icon to be overridden. */\n name;\n constructor() {}\n static ɵfac = function MatStepperIcon_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatStepperIcon)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatStepperIcon,\n selectors: [[\"ng-template\", \"matStepperIcon\", \"\"]],\n inputs: {\n name: [0, \"matStepperIcon\", \"name\"]\n }\n });\n }\n return MatStepperIcon;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Content for a `mat-step` that will be rendered lazily.\n */\nlet MatStepContent = /*#__PURE__*/(() => {\n class MatStepContent {\n _template = inject(TemplateRef);\n constructor() {}\n static ɵfac = function MatStepContent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatStepContent)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatStepContent,\n selectors: [[\"ng-template\", \"matStepContent\", \"\"]]\n });\n }\n return MatStepContent;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatStep = /*#__PURE__*/(() => {\n class MatStep extends CdkStep {\n _errorStateMatcher = inject(ErrorStateMatcher, {\n skipSelf: true\n });\n _viewContainerRef = inject(ViewContainerRef);\n _isSelected = Subscription.EMPTY;\n /** Content for step label given by ``. */\n // We need an initializer here to avoid a TS error.\n stepLabel = undefined;\n /**\n * Theme color for the particular step. This API is supported in M2 themes\n * only, it has no effect in M3 themes. For color customization in M3, see https://material.angular.io/components/stepper/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.io/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color;\n /** Content that will be rendered lazily. */\n _lazyContent;\n /** Currently-attached portal containing the lazy content. */\n _portal;\n ngAfterContentInit() {\n this._isSelected = this._stepper.steps.changes.pipe(switchMap(() => {\n return this._stepper.selectionChange.pipe(map(event => event.selectedStep === this), startWith(this._stepper.selected === this));\n })).subscribe(isSelected => {\n if (isSelected && this._lazyContent && !this._portal) {\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef);\n }\n });\n }\n ngOnDestroy() {\n this._isSelected.unsubscribe();\n }\n /** Custom error state matcher that additionally checks for validity of interacted form. */\n isErrorState(control, form) {\n const originalErrorState = this._errorStateMatcher.isErrorState(control, form);\n // Custom error state checks for the validity of form that is not submitted or touched\n // since user can trigger a form change by calling for another step without directly\n // interacting with the current form.\n const customErrorState = !!(control && control.invalid && this.interacted);\n return originalErrorState || customErrorState;\n }\n static ɵfac = /* @__PURE__ */(() => {\n let ɵMatStep_BaseFactory;\n return function MatStep_Factory(__ngFactoryType__) {\n return (ɵMatStep_BaseFactory || (ɵMatStep_BaseFactory = i0.ɵɵgetInheritedFactory(MatStep)))(__ngFactoryType__ || MatStep);\n };\n })();\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatStep,\n selectors: [[\"mat-step\"]],\n contentQueries: function MatStep_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatStepLabel, 5);\n i0.ɵɵcontentQuery(dirIndex, MatStepContent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.stepLabel = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._lazyContent = _t.first);\n }\n },\n hostAttrs: [\"hidden\", \"\"],\n inputs: {\n color: \"color\"\n },\n exportAs: [\"matStep\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: ErrorStateMatcher,\n useExisting: MatStep\n }, {\n provide: CdkStep,\n useExisting: MatStep\n }]), i0.ɵɵInheritDefinitionFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n consts: [[3, \"cdkPortalOutlet\"]],\n template: function MatStep_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, MatStep_ng_template_0_Template, 2, 1, \"ng-template\");\n }\n },\n dependencies: [CdkPortalOutlet],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n return MatStep;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatStepper = /*#__PURE__*/(() => {\n class MatStepper extends CdkStepper {\n /** The list of step headers of the steps in the stepper. */\n // We need an initializer here to avoid a TS error.\n _stepHeader = undefined;\n /** Full list of steps inside the stepper, including inside nested steppers. */\n // We need an initializer here to avoid a TS error.\n _steps = undefined;\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n steps = new QueryList();\n /** Custom icon overrides passed in by the consumer. */\n _icons;\n /** Event emitted when the current step is done transitioning in. */\n animationDone = new EventEmitter();\n /** Whether ripples should be disabled for the step headers. */\n disableRipple;\n /**\n * Theme color for all of the steps in stepper. This API is supported in M2\n * themes only, it has no effect in M3 themes. For color customization in M3, see https://material.angular.io/components/stepper/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.io/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color;\n /**\n * Whether the label should display in bottom or end position.\n * Only applies in the `horizontal` orientation.\n */\n labelPosition = 'end';\n /**\n * Position of the stepper's header.\n * Only applies in the `horizontal` orientation.\n */\n headerPosition = 'top';\n /** Consumer-specified template-refs to be used to override the header icons. */\n _iconOverrides = {};\n /** Stream of animation `done` events when the body expands/collapses. */\n _animationDone = new Subject();\n /** Duration for the animation. Will be normalized to milliseconds if no units are set. */\n get animationDuration() {\n return this._animationDuration;\n }\n set animationDuration(value) {\n this._animationDuration = /^\\d+$/.test(value) ? value + 'ms' : value;\n }\n _animationDuration = '';\n /** Whether the stepper is rendering on the server. */\n _isServer = !inject(Platform).isBrowser;\n constructor() {\n super();\n const elementRef = inject(ElementRef);\n const nodeName = elementRef.nativeElement.nodeName.toLowerCase();\n this.orientation = nodeName === 'mat-vertical-stepper' ? 'vertical' : 'horizontal';\n }\n ngAfterContentInit() {\n super.ngAfterContentInit();\n this._icons.forEach(({\n name,\n templateRef\n }) => this._iconOverrides[name] = templateRef);\n // Mark the component for change detection whenever the content children query changes\n this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._stateChanged();\n });\n this._animationDone.pipe(takeUntil(this._destroyed)).subscribe(event => {\n if (event.toState === 'current') {\n this.animationDone.emit();\n }\n });\n }\n _stepIsNavigable(index, step) {\n return step.completed || this.selectedIndex === index || !this.linear;\n }\n _getAnimationDuration() {\n if (this.animationDuration) {\n return this.animationDuration;\n }\n return this.orientation === 'horizontal' ? DEFAULT_HORIZONTAL_ANIMATION_DURATION : DEFAULT_VERTICAL_ANIMATION_DURATION;\n }\n static ɵfac = function MatStepper_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatStepper)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatStepper,\n selectors: [[\"mat-stepper\"], [\"mat-vertical-stepper\"], [\"mat-horizontal-stepper\"], [\"\", \"matStepper\", \"\"]],\n contentQueries: function MatStepper_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatStep, 5);\n i0.ɵɵcontentQuery(dirIndex, MatStepperIcon, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._steps = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._icons = _t);\n }\n },\n viewQuery: function MatStepper_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(MatStepHeader, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._stepHeader = _t);\n }\n },\n hostAttrs: [\"role\", \"tablist\"],\n hostVars: 11,\n hostBindings: function MatStepper_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-orientation\", ctx.orientation);\n i0.ɵɵclassProp(\"mat-stepper-horizontal\", ctx.orientation === \"horizontal\")(\"mat-stepper-vertical\", ctx.orientation === \"vertical\")(\"mat-stepper-label-position-end\", ctx.orientation === \"horizontal\" && ctx.labelPosition == \"end\")(\"mat-stepper-label-position-bottom\", ctx.orientation === \"horizontal\" && ctx.labelPosition == \"bottom\")(\"mat-stepper-header-position-bottom\", ctx.headerPosition === \"bottom\");\n }\n },\n inputs: {\n disableRipple: \"disableRipple\",\n color: \"color\",\n labelPosition: \"labelPosition\",\n headerPosition: \"headerPosition\",\n animationDuration: \"animationDuration\"\n },\n outputs: {\n animationDone: \"animationDone\"\n },\n exportAs: [\"matStepper\", \"matVerticalStepper\", \"matHorizontalStepper\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: CdkStepper,\n useExisting: MatStepper\n }]), i0.ɵɵInheritDefinitionFeature],\n ngContentSelectors: _c0,\n decls: 5,\n vars: 2,\n consts: [[\"stepTemplate\", \"\"], [1, \"mat-horizontal-stepper-wrapper\"], [1, \"mat-horizontal-stepper-header-container\"], [1, \"mat-horizontal-content-container\"], [\"role\", \"tabpanel\", 1, \"mat-horizontal-stepper-content\", 3, \"id\", \"mat-horizontal-stepper-content-inactive\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"mat-stepper-horizontal-line\"], [\"role\", \"tabpanel\", 1, \"mat-horizontal-stepper-content\", 3, \"id\"], [3, \"ngTemplateOutlet\"], [1, \"mat-step\"], [1, \"mat-vertical-content-container\"], [\"role\", \"tabpanel\", 1, \"mat-vertical-stepper-content\", 3, \"id\"], [1, \"mat-vertical-content\"], [3, \"click\", \"keydown\", \"tabIndex\", \"id\", \"index\", \"state\", \"label\", \"selected\", \"active\", \"optional\", \"errorMessage\", \"iconOverrides\", \"disableRipple\", \"color\"]],\n template: function MatStepper_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, MatStepper_Conditional_0_Template, 1, 0)(1, MatStepper_Case_1_Template, 7, 0, \"div\", 1)(2, MatStepper_Case_2_Template, 2, 0)(3, MatStepper_ng_template_3_Template, 1, 23, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n let tmp_2_0;\n i0.ɵɵconditional(ctx._isServer ? 0 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional((tmp_2_0 = ctx.orientation) === \"horizontal\" ? 1 : tmp_2_0 === \"vertical\" ? 2 : -1);\n }\n },\n dependencies: [NgTemplateOutlet, MatStepHeader],\n styles: [\".mat-stepper-vertical,.mat-stepper-horizontal{display:block;font-family:var(--mat-stepper-container-text-font, var(--mat-sys-body-medium-font));background:var(--mat-stepper-container-color, var(--mat-sys-surface))}.mat-horizontal-stepper-header-container{white-space:nowrap;display:flex;align-items:center}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header-container{align-items:flex-start}.mat-stepper-header-position-bottom .mat-horizontal-stepper-header-container{order:1}.mat-stepper-horizontal-line{border-top-width:1px;border-top-style:solid;flex:auto;height:0;margin:0 -16px;min-width:32px;border-top-color:var(--mat-stepper-line-color, var(--mat-sys-outline))}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{margin:0;min-width:0;position:relative;top:calc(calc((var(--mat-stepper-header-height, 72px) - 24px) / 2) + 12px)}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::before,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::after,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::after{border-top-width:1px;border-top-style:solid;content:\\\"\\\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px)}.mat-horizontal-stepper-header{display:flex;height:72px;overflow:hidden;align-items:center;padding:0 24px;height:var(--mat-stepper-header-height, 72px)}.mat-horizontal-stepper-header .mat-step-icon{margin-right:8px;flex:none}[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon{margin-right:0;margin-left:8px}.mat-horizontal-stepper-header::before,.mat-horizontal-stepper-header::after{border-top-color:var(--mat-stepper-line-color, var(--mat-sys-outline))}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header{padding:calc((var(--mat-stepper-header-height, 72px) - 24px) / 2) 24px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header::before,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header::after{top:calc(calc((var(--mat-stepper-header-height, 72px) - 24px) / 2) + 12px)}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header{box-sizing:border-box;flex-direction:column;height:auto}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::after,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::after{right:0}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::before{left:0}[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:last-child::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:first-child::after{display:none}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header .mat-step-icon{margin-right:0;margin-left:0}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header .mat-step-label{padding:16px 0 0 0;text-align:center;width:100%}.mat-vertical-stepper-header{display:flex;align-items:center;height:24px;padding:calc((var(--mat-stepper-header-height, 72px) - 24px) / 2) 24px}.mat-vertical-stepper-header .mat-step-icon{margin-right:12px}[dir=rtl] .mat-vertical-stepper-header .mat-step-icon{margin-right:0;margin-left:12px}.mat-horizontal-stepper-wrapper{display:flex;flex-direction:column}.mat-horizontal-stepper-content{outline:0}.mat-horizontal-stepper-content.mat-horizontal-stepper-content-inactive{height:0;overflow:hidden}.mat-horizontal-stepper-content:not(.mat-horizontal-stepper-content-inactive){visibility:inherit !important}.mat-horizontal-content-container{overflow:hidden;padding:0 24px 24px 24px}@media(forced-colors: active){.mat-horizontal-content-container{outline:solid 1px}}.mat-stepper-header-position-bottom .mat-horizontal-content-container{padding:24px 24px 0 24px}.mat-vertical-content-container{margin-left:36px;border:0;position:relative}@media(forced-colors: active){.mat-vertical-content-container{outline:solid 1px}}[dir=rtl] .mat-vertical-content-container{margin-left:0;margin-right:36px}.mat-stepper-vertical-line::before{content:\\\"\\\";position:absolute;left:0;border-left-width:1px;border-left-style:solid;border-left-color:var(--mat-stepper-line-color, var(--mat-sys-outline));top:calc(8px - calc((var(--mat-stepper-header-height, 72px) - 24px) / 2));bottom:calc(8px - calc((var(--mat-stepper-header-height, 72px) - 24px) / 2))}[dir=rtl] .mat-stepper-vertical-line::before{left:auto;right:0}.mat-vertical-stepper-content{overflow:hidden;outline:0}.mat-vertical-stepper-content:not(.mat-vertical-stepper-content-inactive){visibility:inherit !important}.mat-vertical-content{padding:0 24px 24px 24px}.mat-step:last-child .mat-vertical-content-container{border:none}\"],\n encapsulation: 2,\n data: {\n animation: [matStepperAnimations.horizontalStepTransition, matStepperAnimations.verticalStepTransition]\n },\n changeDetection: 0\n });\n }\n return MatStepper;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Button that moves to the next step in a stepper workflow. */\nlet MatStepperNext = /*#__PURE__*/(() => {\n class MatStepperNext extends CdkStepperNext {\n static ɵfac = /* @__PURE__ */(() => {\n let ɵMatStepperNext_BaseFactory;\n return function MatStepperNext_Factory(__ngFactoryType__) {\n return (ɵMatStepperNext_BaseFactory || (ɵMatStepperNext_BaseFactory = i0.ɵɵgetInheritedFactory(MatStepperNext)))(__ngFactoryType__ || MatStepperNext);\n };\n })();\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatStepperNext,\n selectors: [[\"button\", \"matStepperNext\", \"\"]],\n hostAttrs: [1, \"mat-stepper-next\"],\n hostVars: 1,\n hostBindings: function MatStepperNext_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"type\", ctx.type);\n }\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n return MatStepperNext;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Button that moves to the previous step in a stepper workflow. */\nlet MatStepperPrevious = /*#__PURE__*/(() => {\n class MatStepperPrevious extends CdkStepperPrevious {\n static ɵfac = /* @__PURE__ */(() => {\n let ɵMatStepperPrevious_BaseFactory;\n return function MatStepperPrevious_Factory(__ngFactoryType__) {\n return (ɵMatStepperPrevious_BaseFactory || (ɵMatStepperPrevious_BaseFactory = i0.ɵɵgetInheritedFactory(MatStepperPrevious)))(__ngFactoryType__ || MatStepperPrevious);\n };\n })();\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatStepperPrevious,\n selectors: [[\"button\", \"matStepperPrevious\", \"\"]],\n hostAttrs: [1, \"mat-stepper-previous\"],\n hostVars: 1,\n hostBindings: function MatStepperPrevious_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"type\", ctx.type);\n }\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n return MatStepperPrevious;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatStepperModule = /*#__PURE__*/(() => {\n class MatStepperModule {\n static ɵfac = function MatStepperModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatStepperModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatStepperModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MAT_STEPPER_INTL_PROVIDER, ErrorStateMatcher],\n imports: [MatCommonModule, PortalModule, CdkStepperModule, MatIconModule, MatRippleModule, MatStepper, MatStepHeader, MatCommonModule]\n });\n }\n return MatStepperModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_STEPPER_INTL_PROVIDER, MAT_STEPPER_INTL_PROVIDER_FACTORY, MatStep, MatStepContent, MatStepHeader, MatStepLabel, MatStepper, MatStepperIcon, MatStepperIntl, MatStepperModule, MatStepperNext, MatStepperPrevious, matStepperAnimations };\n","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiY29uZmlnLmludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIE91dGxldHMgPSB7IG91dGxldHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfSB9O1xuZXhwb3J0IHR5cGUgUXVlcnlQYXJhbXMgPSB7IHF1ZXJ5UGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IH07XG4vLyBSb3V0ZUNvbW1hbmQgaXMgYSB1cmwgcGF0aCBmcmFnbWVudCwgb3V0bGV0cywgb3IgcXVlcnlQYXJhbXMgb3B0aW9uXG5leHBvcnQgdHlwZSBSb3V0ZUNvbW1hbmQgPSBzdHJpbmcgfCBPdXRsZXRzIHwgUXVlcnlQYXJhbXM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWlLbm93bGVkZ2VDb25maWcge1xuICAvLyBUaGUgVVJMIHdoZXJlIHRoZSBLbm93bGVkZ2VTb3VyY2VNYW5hZ2VtZW50Q29tcG9uZW50IGlzIGhvc3RlZFxuICBtYW5hZ2VLbm93bGVkZ2VVcmwkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+O1xuXG4gIC8vIEN1cnJlbnQgcGFydG5lciBJRC5cbiAgcGFydG5lcklkJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPjtcblxuICAvLyBPcHRpb25hbDogQ3VycmVudCBtYXJrZXQgSURcbiAgbWFya2V0SWQkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+O1xuXG4gIC8vIE9wdGlvbmFsOiBDdXJyZW50IGFjY291bnQgZ3JvdXAgSUQuXG4gIGFjY291bnRHcm91cElkJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPjtcblxuICAvLyBPcHRpb25hbDogVGhlIFVSTCB3aGVyZSB0aGUgYnVzaW5lc3MgcHJvZmlsZSBjYW4gYmUgdXBkYXRlZFxuICBidXNpbmVzc1Byb2ZpbGVVcmwkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+O1xuXG4gIC8vIE9wdGlvbmFsOiBXaWxsIGluY2x1ZGUgdGhlIEJ1c2luZXNzIFByb2ZpbGUgYXMgYSBLbm93bGVkZ2UgU291cmNlIGlmIHNldCB0byB0cnVlIGFuZCBhY2NvdW50R3JvdXBJZCBpcyBhbHNvIHNldFxuICBzaG93QnVzaW5lc3NQcm9maWxlU291cmNlJDogT2JzZXJ2YWJsZTxib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbD47XG5cbiAgLy8gT3B0aW9uYWw6IEEgcm91dGUgY29tbWFuZCB0byBuYXZpZ2F0ZSB0byBlZGl0IGEgd2ViIGNoYXQgd2lkZ2V0LiBUaGlzIGFzc3VtZXMgdGhhdCBhIHNlZ21lbnQgb2YgdGhlIHJvdXRlIGNvbW1hbmQgd2lsbCBiZSAnOmlkJyBpbiBvcmRlciB0b1xuICAvLyBpbmplY3QgYSB3aWRnZXQgaWQgaW50byB0aGUgcm91dGUuXG4gIHdlYkNoYXRXaWRnZXRFZGl0Um91dGUkOiBPYnNlcnZhYmxlPFJvdXRlQ29tbWFuZFtdIHwgdW5kZWZpbmVkIHwgbnVsbD47XG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=","{\n \"COMMON\": {\n \"SAVE\": \"Save\",\n \"SAVE_AND_CONTINUE\": \"Save and continue\",\n \"NEXT\": \"Next\",\n \"BACK\": \"Back\",\n \"EDIT\": \"Edit\",\n \"CANCEL\": \"Cancel\",\n \"CLOSE\": \"Close\",\n \"DELETE\": \"Delete\",\n \"INVALID_FORM\": \"Form is invalid\",\n \"ERROR_OCCURRED\": \"An error occurred\",\n \"YES\": \"Yes\",\n \"NO\": \"No\",\n \"NO_RESULTS\": \"No results\",\n \"RETRY\": \"Retry\"\n },\n \"AI_KNOWLEDGE_BASE\": \"AI knowledge base\",\n \"MANAGE_KNOWLEDGE\": \"Manage knowledge\",\n \"MANAGE_KNOWLEDGE_DESCRIPTION\": \"Provide information AI can use when creating content or answering inquiries\",\n \"REFRESH_OPTIONS\": \"Refresh options\",\n \"KNOWLEDGE_SOURCES\": \"Knowledge sources\",\n \"ADD_KNOWLEDGE\": \"Add knowledge\",\n \"ADD_NEW_KNOWLEDGE\": \"+ Add new knowledge\",\n \"SELECT_KNOWLEDGE\": \"Select knowledge\",\n \"APPLICATION_SETTINGS\": \"Settings\",\n \"APPS_WARNING\": \"This knowledge will be removed from the following:\",\n \"NO_APPS\": \"This knowledge is not currently being used.\",\n \"NO_MATCHING_KNOWLEDGE_SOURCES\": \"No knowledge available\",\n \"SUGGESTED\": \"Suggested\",\n \"WEBSITE_SCRAPE\": {\n \"SCRAPE_NOT_DONE\": \"Finding pages...\",\n \"TRAINING_NOT_DONE\": \"Training pages...\",\n \"LAST_SCRAPED\": \"Last refreshed {{lastScraped}}\",\n \"NUMBER_OF_PAGES_TRAINED\": \"Trained on {{trainedPagesCount}} of {{scrapedPagesCount}} pages\",\n \"RESCRAPE\": \"Refresh\",\n \"RESCRAPE_CONFIRMATION\": {\n \"TITLE\": \"Refresh this website?\",\n \"MESSAGE\": \"This will update the content from the website. Pages found previously will be replaced.\",\n \"MESSAGE_LOSE_CHANGES\": \"Any unsaved changes will be lost\"\n },\n \"ERRORS\": {\n \"TITLE\": \"Unable to find pages for {{ url }}\",\n \"ERROR\": \"You can go back and change it or try again if this looks correct\",\n \"SITEMAP_INDIRECT\": \"Did not find a sitemap (.xml or robots.txt) at {{ url }}. Provide a direct URL to the sitemap or try a different method.\",\n \"ACTIONS\": {\n \"TRY_AGAIN\": \"Try again\",\n \"GO_BACK\": \"Go back\"\n }\n }\n },\n \"EDIT_KNOWLEDGE\": {\n \"TITLE\": \"Edit knowledge\",\n \"NAME\": \"Name\",\n \"CUSTOM_DATA_CONFIG\": {\n \"TITLE\": \"Text\",\n \"DESCRIPTION\": \"Content related to your business such as FAQs or custom information\",\n \"CONTENT\": \"Content\",\n \"CONTENT_HINT\": \"Provide frequently asked questions and answers or other text the AI can use in responses. This does not give special instructions to AI\"\n },\n \"WEBSITE_SCRAPE_CONFIG\": {\n \"TITLE\": \"Website\",\n \"DESCRIPTION\": \"Retrieve content from a website\",\n \"URL\": \"URL\",\n \"INVALID_URL\": \"Please enter a valid URL\",\n \"CRAWL_MODE\": \"Mode\",\n \"SINGLE_PAGE\": \"Single page\",\n \"FOLLOW_LINKS\": \"Follow links\",\n \"FOLLOW_LINKS_HINT\": \"Will find up to {{pageLimit}} pages by following links from this domain starting on the provided URL\",\n \"SITEMAP\": \"Sitemap\",\n \"SITEMAP_HINT\": \"Uses sitemap (.xml or robots.txt) to find up to {{pageLimit}} pages. You may optionally provide the sitemap URL, or we'll try to find it on the provided URL\",\n \"URL_HINT\": \"The URL must be publicly accessible. A URL is publicly accessible if you can access it in incognito mode (in Chrome) or private browsing mode (in Safari/Firefox) without logging in.\",\n \"PAGES\": \"Pages\",\n \"NUMBER_OF_PAGES_TRAINED\": \"Trained on {{trainedPagesCount}} of {{scrapedPagesCount}} pages\",\n \"SELECT_PAGES_TO_TRAIN\": \"Choose pages to train on:\",\n \"SELECT_ALL\": \"Select all\",\n \"SELECT_NONE\": \"Select none\",\n \"PAGE_COUNT\": \"Pages: {{scrapedPagesCount}}\",\n \"UNABLE_TO_LOAD\": \"Unable to load\",\n \"SCRAPE_WILL_BE_QUEUED\": \"Knowledge will be retrieved after widget is created\",\n \"SCRAPE_QUEUED\": \"Finding pages...\",\n \"SCRAPE_IN_PROGRESS\": \"Pages found: \",\n \"SCRAPE_IN_PROGRESS_CLARIFICATION_DEFAULT\": \"This may take a few minutes. Pages will appear here when done. You can close this panel and continue later without losing progress.\",\n \"PAGE_TITLE\": \"Page title\",\n \"FIND_PAGES\": \"Find pages\",\n \"TRAIN\": \"Train\",\n \"MY_WEBSITE\": \"My Website\"\n },\n \"TRAINING\": {\n \"TRAINING_QUEUED\": \"Training queued\",\n \"TRAINING_IN_PROGRESS\": \"Pages trained: \",\n \"TRAINING_IN_PROGRESS_CLARIFICATION\": \"This may take a few minutes. After training, select where to use the new knowledge. You can close this panel and continue later.\",\n \"INITIAL_TRAINING\": \"This training was automatically started for you. It will train the main page for the provided URL. You can add more pages when this is done.\"\n },\n \"REQUIRED_FIELD\": \"Required\",\n \"ENTER_KNOWLEDGE\": \"Enter knowledge\",\n \"ADD_TO_AI\": \"Add to AI\",\n \"SUCCESSFULLY_SAVED\": \"Knowledge saved\",\n \"OTHER_AI\": \"Changes made here will also apply to {{count}} other AI\"\n },\n \"DELETE_KNOWLEDGE\": {\n \"TITLE\": \"Delete custom knowledge?\",\n \"SUCCESSFULLY_DELETED\": \"Knowledge deleted\"\n },\n \"APPLICATION_SELECTOR\": {\n \"NO_APPS_TITLE\": \"Create your first AI enabled application\",\n \"NO_APPS_BODY\": \"A Web Chat widget can use this knowledge to answer inquires from visitors on your website.\",\n \"CREATE_WIDGET\": \"Create widget\",\n \"ADD_KNOWLEDGE_TO\": \"Add knowledge to:\",\n \"PLACEHOLDER\": \"Choose applications...\"\n },\n \"BUSINESS_PROFILE\": {\n \"SHARE_FIELDS\": \"Share Business Profile fields with your AI assistant\",\n \"SHARE_FIELDS_TOOLTIP\": \"Information shared: business name, address and/or service areas, website, email, phone number, categories, hours, services offered, short description, long description, social media URLs, and booking URL.\",\n \"BUSINESS_PROFILE\": \"Business Profile\",\n \"ALLOW_ACCESS\": \"Allow access to your business profile\",\n \"DESCRIPTION\": \"Answer questions about your business contact information, hours, products and services you offer.\",\n \"MANAGE_BUSINESS_PROFILE\": \"Manage business profile\"\n },\n \"UNSAVED_CHANGES\": {\n \"TITLE\": \"Any unsaved changes will be lost\",\n \"MESSAGE\": \"Do you wish to proceed?\"\n },\n \"CREATE_WEB_CHAT_WIDGET\": {\n \"LOADING_DESCRIPTION\": \"Creating web chat widget...\",\n \"SUCCESS\": {\n \"TITLE\": \"Web chat widget successfully created\",\n \"KEEP_EDITING\": \"Keep editing\",\n \"GO_TO_WEB_CHAT_SETTINGS\": \"Go to web chat settings\"\n },\n \"ERROR\": {\n \"TITLE\": \"An error occurred while creating the web chat widget\",\n \"MESSAGE\": \"Try again?\",\n \"YES\": \"Retry create widget\"\n },\n \"NO_WEB_CHAT_WIDGET\": {\n \"TITLE\": \"There are no Web Chat widgets to add this knowledge to\",\n \"BODY\": \"Would you like to create one now?\",\n \"YES\": \"Yes, create widget\"\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport En from './en_devel.json';\n\n@NgModule({\n imports: [\n TranslateModule,\n LexiconModule.forChild({\n componentName: 'common/ai-knowledge',\n baseTranslation: En,\n }),\n ],\n})\nexport class AiKnowledgeI18nModule {}\n","import { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, EventEmitter, inject, Input, Output, OnChanges, SimpleChanges } from '@angular/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { AiKnowledgeService } from '../../../ai-knowledge.service';\nimport { AiKnowledgeI18nModule } from '../../../assets/i18n/ai-knowledge-i18n.module';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { KnowledgeSource, WebsiteScrapeConfigProgress, TrainingProgress } from '@vendasta/embeddings';\nimport { defer, from, map, retry, Subject, take, takeUntil } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KnowledgeSourceWithSuggestedFlag } from '../../../ai-knowledge-util';\n\n@Component({\n selector: 'ai-knowledge-last-scraped',\n imports: [CommonModule, TranslateModule, AiKnowledgeI18nModule],\n providers: [AiKnowledgeService],\n templateUrl: './last-scraped.component.html',\n styleUrls: ['./last-scraped.component.scss'],\n})\nexport class LastScrapedComponent implements OnChanges {\n @Input() knowledgeSource: KnowledgeSourceWithSuggestedFlag;\n @Input() allowRescrapeWebsite: boolean;\n @Input() hasUnsavedChanges: boolean;\n @Output() rescrapeInitiated = new EventEmitter();\n\n private readonly knowledgeService = inject(AiKnowledgeService);\n private readonly confirmationModal = inject(OpenConfirmationModalService);\n private readonly translateService = inject(TranslateService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly stopPolling$$: Subject = new Subject();\n\n WebsiteScrapeConfigProgress = WebsiteScrapeConfigProgress;\n TrainingProgress = TrainingProgress;\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['knowledgeSource'] && this.knowledgeSourceInProgress() && !this.knowledgeSource?.isSuggested) {\n this.pollUntilWebsiteProgressIsDone();\n }\n }\n\n getLastScraped(): string {\n return this.knowledgeService.getLastScraped(this.knowledgeSource);\n }\n\n getTrainedPagesCount(): number {\n return (\n this.knowledgeSource?.config?.websiteScrapeConfig?.scrapedPages?.filter((p) => p.trainingEnabled)?.length || 0\n );\n }\n\n getScrapedPagesCount(): number {\n return this.knowledgeSource?.config?.websiteScrapeConfig?.scrapedPages?.length || 0;\n }\n\n async rescrape(): Promise {\n this.confirmationModal\n .openModal({\n title: this.translateService.instant('WEBSITE_SCRAPE.RESCRAPE_CONFIRMATION.TITLE'),\n message: this.hasUnsavedChanges\n ? this.translateService.instant('WEBSITE_SCRAPE.RESCRAPE_CONFIRMATION.MESSAGE_LOSE_CHANGES')\n : this.translateService.instant('WEBSITE_SCRAPE.RESCRAPE_CONFIRMATION.MESSAGE'),\n confirmButtonText: this.translateService.instant('COMMON.YES'),\n cancelButtonText: this.translateService.instant('COMMON.NO'),\n })\n .subscribe(async (confirmed) => {\n if (confirmed) {\n await this.knowledgeService.rescrapeWebsite(this.knowledgeSource);\n this.rescrapeInitiated.emit(this.knowledgeSource);\n this.pollUntilWebsiteProgressIsDone();\n }\n });\n }\n\n pollUntilWebsiteProgressIsDone(): void {\n // stop previous polling\n this.stopPolling$$.next();\n\n defer(() =>\n from(this.knowledgeService.getKnowledgeSource(this.knowledgeSource?.id, this.knowledgeSource?.namespace)),\n )\n .pipe(\n map((ks) => {\n this.knowledgeSource = ks;\n if (this.knowledgeSourceInProgress()) {\n // throw error to poll again\n throw false;\n }\n }),\n retry({ delay: 5000 }),\n take(1),\n takeUntilDestroyed(this.destroyRef),\n takeUntil(this.stopPolling$$),\n )\n .subscribe();\n }\n\n knowledgeSourceInProgress(): boolean {\n return (\n this.knowledgeSource?.config?.websiteScrapeConfig &&\n (this.knowledgeSource?.config?.websiteScrapeConfig?.scrapeProgress !==\n WebsiteScrapeConfigProgress.WEBSITE_SCRAPE_CONFIG_PROGRESS_DONE ||\n this.knowledgeSource?.training?.progress !== TrainingProgress.TRAINING_DONE)\n );\n }\n}\n","@if (knowledgeSource?.config?.websiteScrapeConfig && !knowledgeSource.isSuggested) {\n @if (\n knowledgeSource?.config?.websiteScrapeConfig?.scrapeProgress !==\n WebsiteScrapeConfigProgress.WEBSITE_SCRAPE_CONFIG_PROGRESS_DONE\n ) {\n {{ 'WEBSITE_SCRAPE.SCRAPE_NOT_DONE' | translate }}\n } @else if (knowledgeSource?.training?.progress !== TrainingProgress.TRAINING_DONE) {\n {{ 'WEBSITE_SCRAPE.TRAINING_NOT_DONE' | translate }}\n } @else if (knowledgeSource?.config?.websiteScrapeConfig?.lastScraped) {\n {{ 'WEBSITE_SCRAPE.LAST_SCRAPED' | translate: { lastScraped: getLastScraped() } }}\n \n -\n {{\n 'WEBSITE_SCRAPE.NUMBER_OF_PAGES_TRAINED'\n | translate: { trainedPagesCount: getTrainedPagesCount(), scrapedPagesCount: getScrapedPagesCount() }\n }}\n \n \n - {{ 'WEBSITE_SCRAPE.RESCRAPE' | translate }}\n \n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { KnowledgeSource } from '@vendasta/embeddings';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { AiKnowledgeService } from '../ai-knowledge.service';\nimport { AiKnowledgeI18nModule } from '../assets/i18n/ai-knowledge-i18n.module';\nimport { LastScrapedComponent } from '../knowledge-editor/website-scrape/last-scraped/last-scraped.component';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { KnowledgeSourceWithSuggestedFlag } from '../ai-knowledge-util';\n\n@Component({\n selector: 'ai-knowledge-knowledge-list',\n imports: [\n CommonModule,\n TranslateModule,\n AiKnowledgeI18nModule,\n MatIconModule,\n MatListModule,\n LastScrapedComponent,\n GalaxyBadgeModule,\n ],\n templateUrl: './knowledge-list.component.html',\n styleUrls: ['./knowledge-list.component.scss'],\n})\nexport class KnowledgeListComponent {\n @Input()\n get knowledgeSources(): KnowledgeSourceWithSuggestedFlag[] {\n return this._knowledgeSources;\n }\n set knowledgeSources(sources: KnowledgeSourceWithSuggestedFlag[]) {\n this._knowledgeSources = (sources || []).sort((a, b) => {\n if (a?.config?.businessProfileConfig?.accountGroupId) {\n return -1;\n }\n if (b?.config?.businessProfileConfig?.accountGroupId) {\n return 1;\n }\n return a?.name?.localeCompare(b?.name) || 0;\n });\n }\n _knowledgeSources: KnowledgeSourceWithSuggestedFlag[];\n\n @Input() allowRemoveBusinessProfile: boolean;\n @Input() allowRescrapeWebsite: boolean;\n @Output() titleClicked = new EventEmitter();\n @Output() removeClicked = new EventEmitter();\n @Output() websiteRescrapeInitiated = new EventEmitter();\n\n private readonly knowledgeService = inject(AiKnowledgeService);\n\n getKnowledgePreview(source: KnowledgeSource): string {\n return this.knowledgeService.getKnowledgePreview(source);\n }\n\n clickTitle(source: KnowledgeSource): void {\n this.titleClicked.emit(source);\n }\n\n clickRemove(source: KnowledgeSource): void {\n this.removeClicked.emit(source);\n }\n\n canRemoveSource(source: KnowledgeSource): boolean {\n if (source?.config?.businessProfileConfig?.accountGroupId) {\n return this.allowRemoveBusinessProfile;\n }\n return true;\n }\n\n async rescrapeInitiated(source: KnowledgeSource): Promise {\n this.websiteRescrapeInitiated.emit(source);\n }\n}\n","\n \n \n \n
\n {{ source.name }}\n @if (source.isSuggested) {\n Suggested\n }\n
\n\n \n
\n {{ getKnowledgePreview(source) }}\n
\n \n\n \n {{ getKnowledgePreview(source) }}\n\n
\n
\n close\n
\n
\n
\n \n
\n
\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { App } from '@vendasta/embeddings';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { AiKnowledgeI18nModule } from '../assets/i18n/ai-knowledge-i18n.module';\nimport { AiKnowledgeService } from '../ai-knowledge.service';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n selector: 'ai-knowledge-application-list',\n imports: [\n CommonModule,\n TranslateModule,\n AiKnowledgeI18nModule,\n MatIconModule,\n MatListModule,\n GalaxyAvatarModule,\n RouterModule,\n ],\n templateUrl: './application-list.component.html',\n styleUrls: ['./application-list.component.scss'],\n})\nexport class ApplicationListComponent {\n @Input() hideRemove: boolean;\n @Input()\n get apps(): App[] {\n return this._apps;\n }\n set apps(apps: App[]) {\n this._apps = (apps || []).sort((a, b) => {\n return a?.name?.localeCompare(b?.name) || 0;\n });\n }\n _apps: App[];\n\n @Output() removeClicked = new EventEmitter();\n\n private readonly knowledgeService = inject(AiKnowledgeService);\n\n clickRemove(app: App): void {\n this.removeClicked.emit(app);\n }\n\n getAppDisplayName(app: App): string {\n return this.knowledgeService.getAppDisplayName(app);\n }\n}\n","\n @for (app of apps; track app.id; let last = $last) {\n \n \n {{ getAppDisplayName(app) }}\n {{ 'APPLICATION_SETTINGS' | translate }}\n\n @if (!hideRemove) {\n \n close\n \n }\n \n @if (!last) {\n \n }\n }\n\n","import {\n Component,\n computed,\n DestroyRef,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocomplete, MatAutocompleteModule, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { App } from '@vendasta/embeddings';\nimport { AiKnowledgeService } from '../ai-knowledge.service';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { AiKnowledgeI18nModule } from '../assets/i18n/ai-knowledge-i18n.module';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatListModule } from '@angular/material/list';\nimport { ApplicationListComponent } from '../app-list/application-list.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { firstValueFrom } from 'rxjs';\n\n@Component({\n selector: 'ai-knowledge-application-selector',\n imports: [\n CommonModule,\n TranslateModule,\n AiKnowledgeI18nModule,\n MatButtonModule,\n MatInputModule,\n MatFormFieldModule,\n MatAutocompleteModule,\n FormsModule,\n ReactiveFormsModule,\n MatProgressSpinnerModule,\n MatChipsModule,\n GalaxyLoadingSpinnerModule,\n GalaxyFormFieldModule,\n MatDividerModule,\n MatListModule,\n ApplicationListComponent,\n GalaxyEmptyStateModule,\n ],\n providers: [AiKnowledgeService],\n templateUrl: './application-selector.component.html',\n styleUrls: ['./application-selector.component.scss'],\n})\nexport class ApplicationSelectorComponent implements OnInit {\n @Input() knowledgeSourceId: string;\n @Output() createWidgetClicked = new EventEmitter();\n hasUnsavedChanges = false;\n forceSubmit = false;\n\n private readonly knowledgeService = inject(AiKnowledgeService);\n private confirmationModal = inject(OpenConfirmationModalService);\n private readonly translateService = inject(TranslateService);\n destroyRef = inject(DestroyRef);\n apps = signal([]);\n searchValue = signal('');\n selectedApps = signal(null);\n filteredApps = computed(() =>\n this.apps().filter(\n (app) =>\n app.name.toLowerCase().indexOf(this.searchValue()) >= 0 &&\n !this.selectedApps().some((selected) => selected.id === app.id),\n ),\n );\n readonly isLoading = signal(true);\n readonly isCreatingWidget = signal(false);\n\n selectedAppControl = new FormControl();\n\n @ViewChild('appInput') appInput: ElementRef;\n @ViewChild('auto') matAutocomplete: MatAutocomplete;\n @ViewChild('trigger') matAutocompleteTrigger: MatAutocompleteTrigger;\n\n async ngOnInit(): Promise {\n await this.loadApps();\n\n this.selectedAppControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((searchValue) => {\n if (typeof searchValue === 'string') {\n this.searchValue.set(searchValue?.toLowerCase());\n }\n });\n }\n\n async loadApps(): Promise {\n this.isLoading.set(true);\n this.apps.set(await this.knowledgeService.listAllApps());\n this.forceSubmit = this.apps()?.length == 0;\n if (this.knowledgeSourceId) {\n this.selectedApps.set(await this.knowledgeService.listAllAppsForKnowledgeSource(this.knowledgeSourceId));\n }\n this.isLoading.set(false);\n }\n\n isCreateWidgetRouteSet(): boolean {\n return this.knowledgeService.isWebChatCreateRouteSet();\n }\n\n createWidgetClick(): void {\n this.createWidgetClicked.emit(true);\n }\n\n removeApp(app: App): void {\n this.selectedApps.update((selectedApps) => {\n const index = selectedApps.indexOf(app);\n if (index >= 0) {\n selectedApps.splice(index, 1);\n }\n return [...selectedApps];\n });\n this.hasUnsavedChanges = true;\n }\n\n addApp(app: App): void {\n this.selectedApps.update((selectedApps) => {\n const appIds = selectedApps.map((a) => a.id);\n if (!appIds.includes(app.id)) {\n selectedApps.push(app);\n }\n this.clearInputFields();\n this.matAutocompleteTrigger.closePanel();\n return [...selectedApps];\n });\n this.hasUnsavedChanges = true;\n }\n\n chooseMatch(event: any): void {\n event.preventDefault();\n if (this.filteredApps().length > 1) {\n // Do not select if there are multiple matches\n return;\n }\n if (this.filteredApps().length === 1) {\n const sourceToAdd = this.filteredApps()[0];\n this.addApp(sourceToAdd);\n }\n }\n\n clearInputFields(): void {\n if (this.appInput?.nativeElement?.value) {\n this.appInput.nativeElement.value = '';\n }\n this.selectedAppControl.setValue('');\n }\n\n async setAppsForKnowledgeSource(): Promise {\n if (this.apps()?.length == 0) {\n const confirmed = await firstValueFrom(\n this.confirmationModal.openModal({\n title: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.NO_WEB_CHAT_WIDGET.TITLE'),\n message: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.NO_WEB_CHAT_WIDGET.BODY'),\n confirmButtonText: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.NO_WEB_CHAT_WIDGET.YES'),\n cancelButtonText: this.translateService.instant('COMMON.NO'),\n }),\n );\n if (confirmed) {\n this.createWidgetClicked.emit(true);\n this.hasUnsavedChanges = false;\n }\n return !confirmed;\n }\n await this.knowledgeService.setAppsForKnowledgeSource(this.knowledgeSourceId, this.selectedApps());\n this.hasUnsavedChanges = false;\n return true;\n }\n}\n","@if (isCreatingWidget()) {\n

{{ 'CREATE_WEB_CHAT_WIDGET.LOADING_DESCRIPTION' | translate }}

\n}\n@if (isLoading() || isCreatingWidget()) {\n \n} @else {\n @if (apps()?.length === 0 && isCreateWidgetRouteSet()) {\n \n \n {{ 'APPLICATION_SELECTOR.NO_APPS_TITLE' | translate }}\n \n

{{ 'APPLICATION_SELECTOR.NO_APPS_BODY' | translate }}

\n \n \n \n
\n } @else {\n
{{ 'APPLICATION_SELECTOR.ADD_KNOWLEDGE_TO' | translate }}
\n\n \n\n \n \n \n @if (filteredApps().length === 0) {\n \n
{{ 'COMMON.NO_RESULTS' | translate }}
\n
\n }\n\n @for (app of filteredApps(); track app) {\n \n
{{ app.name }}
\n
{{ app.appTypeName }}
\n
\n }\n
\n
\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, EventEmitter, Inject, inject, OnInit, signal, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { AiKnowledgeService } from '../../ai-knowledge.service';\nimport { Router, RouterModule } from '@angular/router';\nimport { AiKnowledgeI18nModule } from '../../assets/i18n/ai-knowledge-i18n.module';\nimport { GalaxySnackbarModule, SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatStepper, MatStepperModule } from '@angular/material/stepper';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ApplicationSelectorComponent } from '../../application-selector/application-selector.component';\nimport { STEPPER_GLOBAL_OPTIONS, StepperSelectionEvent } from '@angular/cdk/stepper';\nimport { KnowledgeSourceWithSuggestedFlag } from '../../ai-knowledge-util';\nimport { catchError, firstValueFrom, throwError } from 'rxjs';\nimport { ConversationApiService } from '@vendasta/conversation';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef } from '@angular/material/dialog';\n\nimport { MatButton } from '@angular/material/button';\nimport { KnowledgeSourceConfig, KnowledgeSourceKey } from '@vendasta/embeddings';\nimport { KnowledgeCreatedEvent, StepChangeEvent } from '../common/interfaces';\n\nconst WebChatWidgetAppType = 'WebChatWidget';\n\ninterface Data {\n knowledgeSourceKey?: KnowledgeSourceKey;\n config?: KnowledgeSourceConfig;\n isSuggested?: boolean;\n stepOption?: string;\n excludeAddToAIStep?: boolean;\n currentAppId?: string;\n}\n\n@Component({\n selector: 'ai-knowledge-custom-data',\n imports: [\n CommonModule,\n TranslateModule,\n AiKnowledgeI18nModule,\n MatInputModule,\n ReactiveFormsModule,\n FormsModule,\n GalaxyFormFieldModule,\n GalaxyLoadingSpinnerModule,\n RouterModule,\n GalaxySnackbarModule,\n MatStepperModule,\n MatIconModule,\n ApplicationSelectorComponent,\n MatButton,\n MatDialogActions,\n MatDialogContent,\n ],\n providers: [\n AiKnowledgeService,\n {\n provide: STEPPER_GLOBAL_OPTIONS,\n useValue: { displayDefaultIndicatorType: false },\n },\n ],\n templateUrl: './custom-data.component.html',\n styleUrls: ['./custom-data.component.scss'],\n})\nexport class CustomDataComponent implements OnInit, KnowledgeCreatedEvent, StepChangeEvent {\n @ViewChild('stepper') stepper: MatStepper;\n @ViewChild('applicationSelector') applicationSelector: ApplicationSelectorComponent;\n\n private readonly snackbarService = inject(SnackbarService);\n private readonly knowledgeService = inject(AiKnowledgeService);\n private readonly conversationApi = inject(ConversationApiService);\n private readonly confirmationModal = inject(OpenConfirmationModalService);\n private readonly translateService = inject(TranslateService);\n private readonly router = inject(Router);\n\n readonly otherAIDisclaimer = signal('');\n readonly isLoading = signal(true);\n\n // a string corresponding to the current step should be emitted whenever a step changes\n // this will be used to update the address to the current step, so that it can be linked to directly\n stepChange = new EventEmitter();\n excludeAddToAIStep: boolean;\n // a list of strings corresponding to the step indexes for a stepper\n steps: string[] = [''];\n // the current step\n selectedStep = 0;\n\n form: FormGroup;\n knowledgeSource: KnowledgeSourceWithSuggestedFlag;\n knowledgeCreated = new EventEmitter();\n\n constructor(\n readonly destroyRef: DestroyRef,\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: Data,\n ) {\n this.form = new FormGroup({\n name: new FormControl('', [Validators.required]),\n content: new FormControl('', [Validators.required]),\n });\n }\n\n async ngOnInit(): Promise {\n this.dialogRef.disableClose = true;\n\n if (this.data) {\n if (this.data?.knowledgeSourceKey) {\n await this.knowledgeService\n .getKnowledgeSource(this.data.knowledgeSourceKey.knowledgeSourceId, this.data.knowledgeSourceKey.namespace)\n .then(\n (knowledgeSource) => {\n this.knowledgeSource = knowledgeSource as KnowledgeSourceWithSuggestedFlag;\n },\n (_) => {\n this.knowledgeSource = null;\n },\n );\n\n this.otherAIDisclaimer.set(\n await this.knowledgeService.getOtherAIDisclaimerText(\n this.data.knowledgeSourceKey.knowledgeSourceId,\n this.data.currentAppId,\n ),\n );\n }\n\n this.excludeAddToAIStep = this.data.excludeAddToAIStep;\n }\n\n if (!this.excludeAddToAIStep) {\n this.steps.push('appSelection');\n }\n this.form = new FormGroup({\n name: new FormControl(this.knowledgeSource?.name || '', [Validators.required]),\n content: new FormControl(this.knowledgeSource?.config?.customDataConfig?.text || '', [Validators.required]),\n });\n\n this.isLoading.set(false);\n }\n\n async submit(): Promise {\n if (!this.isFormValid()) {\n this.snackbarService.openErrorSnack('COMMON.INVALID_FORM');\n return;\n }\n switch (this.selectedStep) {\n case 0: {\n const name = this.form.get('name').value;\n const config = {\n customDataConfig: {\n text: this.form.get('content')?.value,\n },\n };\n const ksId = await this.knowledgeService.createOrUpdateKnowledgeSource(this.knowledgeSource, name, config);\n this.knowledgeCreated.emit(ksId);\n\n this.form.markAsPristine();\n if (!this.onLastStep()) {\n this.knowledgeSource = await this.knowledgeService.getKnowledgeSource(\n ksId,\n this.knowledgeService.buildNamespaceInterface(),\n );\n this.stepper.next();\n } else {\n this.close();\n }\n return;\n }\n case 1: {\n await this.applicationSelector.setAppsForKnowledgeSource();\n this.close();\n return;\n }\n }\n }\n\n private isFormValid(): boolean {\n switch (this.selectedStep) {\n case 0: {\n const controls = [this.form.get('name'), this.form.get('content')];\n let valid = true;\n controls.forEach((c) => {\n c?.markAsDirty();\n if (!c?.valid) {\n valid = false;\n }\n });\n return valid;\n }\n case 1: {\n return true;\n }\n }\n return false;\n }\n\n hasUnsavedChanges(): boolean {\n switch (this.selectedStep) {\n case 0: {\n return this.form?.dirty;\n }\n case 1: {\n return this.applicationSelector?.hasUnsavedChanges;\n }\n }\n return false;\n }\n\n stepChanged(event: StepperSelectionEvent): void {\n this.selectedStep = event?.selectedIndex;\n this.stepChange.emit(this.steps[this.selectedStep]);\n }\n\n showBack(): boolean {\n return this.selectedStep > 0;\n }\n\n back(): void {\n this.warnUnsavedChanged(() => {\n this.stepper?.previous();\n });\n }\n\n onLastStep(): boolean {\n return this.selectedStep === this.steps.length - 1;\n }\n\n async createWebChatWidget(): Promise {\n this.applicationSelector?.isCreatingWidget.set(true);\n const resp = await firstValueFrom(\n this.conversationApi\n .createWidget({\n name: 'Web Chat',\n namespace: this.knowledgeService.accountGroupId() || this.knowledgeService.partnerId(),\n })\n .pipe(\n catchError((err) => {\n this.confirmationModal\n .openModal({\n title: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.ERROR.TITLE'),\n message: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.ERROR.MESSAGE'),\n confirmButtonText: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.ERROR.YES'),\n cancelButtonText: this.translateService.instant('COMMON.NO'),\n })\n .subscribe((confirmed) => {\n this.applicationSelector?.isCreatingWidget.set(false);\n if (confirmed) {\n this.createWebChatWidget();\n }\n });\n return throwError(() => err);\n }),\n ),\n );\n\n const widgetId = resp.widget.widgetId;\n const configurationUrl = await this.buildAiKnowledgeAppConfigurationUrl(widgetId);\n await this.knowledgeService\n .upsertKnowledgeForApp(this.buildAppId(widgetId), resp.widget.name, configurationUrl, WebChatWidgetAppType, [\n {\n id: this.knowledgeSource?.id,\n namespace: this.knowledgeSource?.namespace,\n },\n ])\n .catch(\n // ignore error here for now because it could orphan the widget otherwise\n () => console.warn('Failed to save knowledge for widget'),\n );\n this.confirmationModal\n .openModal({\n title: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.SUCCESS.TITLE'),\n confirmButtonText: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.SUCCESS.GO_TO_WEB_CHAT_SETTINGS'),\n cancelButtonText: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.SUCCESS.KEEP_EDITING'),\n })\n .subscribe((confirmed) => {\n if (confirmed) {\n this.dialogRef.close(true);\n this.router.navigate(this.knowledgeService.buildWebChatWidgetEditRoute(widgetId));\n } else {\n this.applicationSelector.loadApps();\n this.applicationSelector?.isCreatingWidget.set(false);\n }\n });\n }\n\n async buildAiKnowledgeAppConfigurationUrl(widgetId: string): Promise {\n if (this.knowledgeService.accountGroupId()) {\n return `/account/location/${this.knowledgeService.accountGroupId()}/settings/widgets/${widgetId}/edit`;\n }\n return `/(inbox:inbox/widgets/${widgetId}/edit)`;\n }\n\n buildAppId(widgetId: string): string {\n return `APP-WEBCHAT-${widgetId}`;\n }\n\n getTitle(): string {\n if (!this.data?.knowledgeSourceKey) {\n return 'ADD_KNOWLEDGE';\n }\n return 'EDIT_KNOWLEDGE.TITLE';\n }\n\n warnUnsavedChanged(func: () => void): void {\n if (!this.hasUnsavedChanges()) {\n func();\n return;\n }\n\n this.confirmationModal\n .openModal({\n type: 'warn',\n title: this.translateService.instant('UNSAVED_CHANGES.TITLE'),\n message: this.translateService.instant('UNSAVED_CHANGES.MESSAGE'),\n confirmButtonText: this.translateService.instant('COMMON.YES'),\n cancelButtonText: this.translateService.instant('COMMON.NO'),\n })\n .subscribe((confirmed) => {\n if (confirmed) {\n func();\n }\n });\n }\n\n close(): void {\n this.warnUnsavedChanged(() => {\n this.stepChange.emit('');\n this.dialogRef.close();\n });\n }\n\n getSubmitAction(): string {\n if (this.onLastStep()) {\n return 'COMMON.SAVE';\n }\n return 'COMMON.NEXT';\n }\n}\n","
\n
{{ getTitle() | translate }}
\n
\n
\n \n @if (steps.length > 1) {\n \n \n {{ 'EDIT_KNOWLEDGE.ENTER_KNOWLEDGE' | translate }}\n \n \n \n \n @if (!excludeAddToAIStep) {\n \n {{ 'EDIT_KNOWLEDGE.ADD_TO_AI' | translate }}\n \n \n \n \n }\n \n } @else {\n \n }\n\n \n \n \n {{ 'EDIT_KNOWLEDGE.NAME' | translate }}\n \n @if (form.get('name')?.hasError('required') && form.get('name')?.dirty) {\n \n {{ 'EDIT_KNOWLEDGE.REQUIRED_FIELD' | translate }}\n \n }\n \n \n {{ 'EDIT_KNOWLEDGE.CUSTOM_DATA_CONFIG.CONTENT' | translate }}\n {{\n 'EDIT_KNOWLEDGE.CUSTOM_DATA_CONFIG.CONTENT_HINT' | translate\n }}\n \n @if (form.get('content')?.hasError('required') && form.get('content')?.dirty) {\n \n {{ 'EDIT_KNOWLEDGE.REQUIRED_FIELD' | translate }}\n \n }\n \n \n \n \n \n
\n @if (otherAIDisclaimer()) {\n
{{ otherAIDisclaimer() }}
\n }\n
\n @if (showBack()) {\n
\n \n
\n }\n\n
\n \n \n
\n
\n
\n
\n
\n\n\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ai-knowledge-loading-spinner',\n standalone: true,\n templateUrl: './ai-loading-spinner.component.html',\n styleUrls: ['./ai-loading-spinner.component.scss'],\n})\nexport class AiLoadingSpinnerComponent {}\n","
\n
\n
\n
\n
\n
\n
\n \n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n","import { Component, DestroyRef, inject, Input, OnChanges, signal, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { FormArray, FormControl, FormGroup, FormsModule, ReactiveFormsModule, UntypedFormArray } from '@angular/forms';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { AiKnowledgeService } from '../../../ai-knowledge.service';\nimport {\n KnowledgeSource,\n KnowledgeSourceConfig,\n KnowledgeSourceConfigWebsiteScrapeConfig,\n KnowledgeSourceConfigWebsiteScrapeConfigScrapedPage,\n KnowledgeSourceTraining,\n TrainingProgress,\n} from '@vendasta/embeddings';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { map } from 'rxjs';\nimport { AiKnowledgeI18nModule } from '../../../assets/i18n/ai-knowledge-i18n.module';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIcon } from '@angular/material/icon';\nimport { AiLoadingSpinnerComponent } from '../../../shared/ai-loading-spinner/ai-loading-spinner.component';\n\nexport const STEP_OPTION = 'scrapedPages';\n\n@Component({\n selector: 'ai-knowledge-scraped-pages',\n imports: [\n CommonModule,\n TranslateModule,\n AiKnowledgeI18nModule,\n MatCheckboxModule,\n ReactiveFormsModule,\n FormsModule,\n GalaxyFormFieldModule,\n GalaxyEmptyStateModule,\n GalaxyLoadingSpinnerModule,\n MatExpansionModule,\n MatIcon,\n AiLoadingSpinnerComponent,\n ],\n providers: [AiKnowledgeService],\n templateUrl: './scraped-pages.component.html',\n styleUrls: ['./scraped-pages.component.scss'],\n})\nexport class ScrapedPagesComponent implements OnChanges {\n @Input() knowledgeSource: KnowledgeSource;\n private readonly knowledgeService = inject(AiKnowledgeService);\n destroyRef = inject(DestroyRef);\n form: FormGroup;\n websiteScrapeConfig: KnowledgeSourceConfigWebsiteScrapeConfig;\n trainingInfo: KnowledgeSourceTraining;\n readonly isLoading = signal(true);\n delayProgressScreenClosure = false;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.knowledgeSource) {\n this.websiteScrapeConfig = this.knowledgeSource?.config?.websiteScrapeConfig;\n this.trainingInfo = this.knowledgeSource?.training;\n\n if (!this.knowledgeSource || !this.websiteScrapeConfig.scrapedPages) return;\n\n this.websiteScrapeConfig?.scrapedPages?.sort((a, b) =>\n a?.trainingEnabled === b?.trainingEnabled ? a?.url?.localeCompare(b?.url) : a?.trainingEnabled ? -1 : 1,\n );\n\n this.form = new FormGroup({\n scrapedPages: new FormArray([]),\n });\n const controls = this.websiteScrapeConfig?.scrapedPages?.map((page) => new FormControl(page.trainingEnabled));\n this.form.controls.scrapedPages = new FormArray(controls);\n this.form.controls.scrapedPages.valueChanges\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n map(() => this.form.markAsDirty()),\n )\n .subscribe();\n\n this.isLoading.set(false);\n }\n }\n\n get scrapedPagesArray(): UntypedFormArray {\n return this.form.controls['scrapedPages'] as UntypedFormArray;\n }\n\n setAllScrapedPages(value: boolean): void {\n this.form.controls.scrapedPages = new FormArray(\n this.websiteScrapeConfig?.scrapedPages?.map((p) => {\n const training = p?.errorMessage ? false : value;\n return new FormControl(training);\n }),\n );\n this.form.markAsDirty();\n }\n\n getSuccessfullyScrapedPagesCount(): number {\n return this.websiteScrapeConfig?.scrapedPages?.filter((p) => !p?.errorMessage).length || 0;\n }\n\n getErroredScrapedPages(): KnowledgeSourceConfigWebsiteScrapeConfigScrapedPage[] {\n return this.websiteScrapeConfig?.scrapedPages?.filter((p) => p?.errorMessage);\n }\n\n getErroredScrapedPagesCount(): number {\n return this.getErroredScrapedPages().length || 0;\n }\n\n hasUnsavedChanges(): boolean {\n return this.form?.dirty;\n }\n\n async submit(): Promise {\n this.scrapedPagesArray.controls.forEach((pageControl, index) => {\n this.websiteScrapeConfig.scrapedPages[index].trainingEnabled = pageControl.value;\n });\n const config = {\n websiteScrapeConfig: this.websiteScrapeConfig,\n } as KnowledgeSourceConfig;\n if (this.knowledgeSource) {\n const source = this.knowledgeSource;\n source.config = config;\n await this.knowledgeService.updateKnowledgeSourceNameAndConfig(source);\n this.form.markAsPristine();\n return source.id;\n }\n throw new Error('No knowledge source');\n }\n\n getTrainingProgressTitle(): string {\n if (this.knowledgeSource.training.progress === TrainingProgress.TRAINING_QUEUED) {\n return 'EDIT_KNOWLEDGE.TRAINING.TRAINING_QUEUED';\n } else {\n if (this.getTrainingProgressCount() > 0) {\n return 'EDIT_KNOWLEDGE.TRAINING.TRAINING_IN_PROGRESS';\n } else {\n return 'EDIT_KNOWLEDGE.TRAINING.TRAINING_QUEUED';\n }\n }\n }\n\n getTrainingProgressCount(): number {\n let trainingEnabledPageCount = 0;\n for (const page of this.websiteScrapeConfig.scrapedPages) {\n if (page.trainingEnabled) {\n trainingEnabledPageCount++;\n }\n }\n\n if (this.trainingInfo.totalUnits > 0 && this.trainingInfo.completedUnits > 0) {\n return Math.round((this.trainingInfo.completedUnits / this.trainingInfo.totalUnits) * trainingEnabledPageCount);\n } else {\n return 0;\n }\n }\n\n protected readonly TrainingProgress = TrainingProgress;\n protected readonly Math = Math;\n}\n","@if ((trainingInfo && trainingInfo.progress !== TrainingProgress.TRAINING_DONE) || delayProgressScreenClosure) {\n \n \n \n \n \n {{ getTrainingProgressTitle() | translate }}\n @if (\n (trainingInfo.progress === TrainingProgress.TRAINING_IN_PROGRESS && getTrainingProgressCount() > 0) ||\n (trainingInfo.progress === TrainingProgress.TRAINING_DONE && delayProgressScreenClosure)\n ) {\n {{ getTrainingProgressCount() }}\n }\n \n

{{ 'EDIT_KNOWLEDGE.TRAINING.TRAINING_IN_PROGRESS_CLARIFICATION' | translate }}

\n
\n} @else {\n @if (!isLoading()) {\n \n \n \n @if (getErroredScrapedPagesCount() > 0) {\n \n \n \n warning\n {{ 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.UNABLE_TO_LOAD' | translate }}\n \n \n {{\n 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.PAGE_COUNT'\n | translate: { scrapedPagesCount: getErroredScrapedPagesCount() }\n }}\n \n \n @for (page of getErroredScrapedPages(); track page) {\n \n }\n \n }\n
\n @for (pageControl of scrapedPagesArray.controls; track pageControl; let i = $index) {\n @if (!websiteScrapeConfig?.scrapedPages[i]?.errorMessage) {\n \n {{ websiteScrapeConfig?.scrapedPages[i]?.title }}\n {{ websiteScrapeConfig?.scrapedPages[i]?.url }}\n \n }\n }\n
\n
\n
\n } @else {\n \n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n Inject,\n inject,\n OnInit,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { urlValidator } from '@vendasta/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport {\n KnowledgeSourceConfig,\n KnowledgeSourceConfigWebsiteScrapeConfig,\n KnowledgeSourceConfigWebsiteScrapeConfigScrapedPage,\n KnowledgeSourceKey,\n TrainingProgress,\n WebsiteScrapeConfigCrawlMode,\n WebsiteScrapeConfigProgress,\n} from '@vendasta/embeddings';\nimport { AiKnowledgeService } from '../../ai-knowledge.service';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AiKnowledgeI18nModule } from '../../assets/i18n/ai-knowledge-i18n.module';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { GalaxySnackbarModule, SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { MatInputModule } from '@angular/material/input';\nimport { catchError, defer, firstValueFrom, from, map, retry, take, throwError } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { MatStepper, MatStepperModule } from '@angular/material/stepper';\nimport { ApplicationSelectorComponent } from '../../application-selector/application-selector.component';\nimport { ScrapedPagesComponent, STEP_OPTION } from './scraped-pages/scraped-pages.component';\nimport { STEPPER_GLOBAL_OPTIONS, StepperSelectionEvent } from '@angular/cdk/stepper';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { MatButtonModule } from '@angular/material/button';\nimport { KnowledgeSourceWithSuggestedFlag } from '../../ai-knowledge-util';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { ConversationApiService } from '@vendasta/conversation';\nimport { Router } from '@angular/router';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef } from '@angular/material/dialog';\nimport { LastScrapedComponent } from './last-scraped/last-scraped.component';\nimport { KnowledgeCreatedEvent, StepChangeEvent } from '../common/interfaces';\nimport { AiLoadingSpinnerComponent } from '../../shared/ai-loading-spinner/ai-loading-spinner.component';\n\nconst WebChatWidgetAppType = 'WebChatWidget';\n\ninterface Data {\n knowledgeSourceKey?: KnowledgeSourceKey;\n config?: KnowledgeSourceConfig;\n isSuggested?: boolean;\n stepOption?: string;\n excludeAddToAIStep?: boolean;\n currentAppId?: string;\n}\n\n@Component({\n selector: 'ai-knowledge-website-scrape',\n imports: [\n CommonModule,\n TranslateModule,\n AiKnowledgeI18nModule,\n MatIconModule,\n MatSelectModule,\n MatOptionModule,\n ReactiveFormsModule,\n FormsModule,\n GalaxyFormFieldModule,\n GalaxySnackbarModule,\n GalaxyLoadingSpinnerModule,\n MatInputModule,\n MatStepperModule,\n ScrapedPagesComponent,\n ApplicationSelectorComponent,\n GalaxyEmptyStateModule,\n MatButtonModule,\n LastScrapedComponent,\n MatDialogActions,\n MatDialogContent,\n AiLoadingSpinnerComponent,\n ],\n providers: [\n AiKnowledgeService,\n {\n provide: STEPPER_GLOBAL_OPTIONS,\n useValue: { displayDefaultIndicatorType: false },\n },\n ],\n templateUrl: './website-scrape.component.html',\n styleUrls: ['./website-scrape.component.scss'],\n})\nexport class WebsiteScrapeComponent implements AfterViewInit, OnInit, KnowledgeCreatedEvent, StepChangeEvent {\n @ViewChild('stepper') stepper: MatStepper;\n @ViewChild('scrapedPagesComponent') scrapedPagesComponent: ScrapedPagesComponent;\n @ViewChild('applicationSelector') applicationSelector: ApplicationSelectorComponent;\n\n private readonly snackbarService = inject(SnackbarService);\n private readonly environmentService = inject(EnvironmentService);\n private readonly knowledgeService = inject(AiKnowledgeService);\n private readonly translateService = inject(TranslateService);\n private readonly confirmationModal = inject(OpenConfirmationModalService);\n private readonly conversationApi = inject(ConversationApiService);\n private readonly router = inject(Router);\n private readonly cdr = inject(ChangeDetectorRef);\n readonly isLoading = signal(true);\n readonly otherAIDisclaimer = signal('');\n\n websiteScrapeConfig: KnowledgeSourceConfigWebsiteScrapeConfig;\n crawlModes = WebsiteScrapeConfigCrawlMode;\n scrapeProgressStates = WebsiteScrapeConfigProgress;\n enableEditingWithError = false;\n form: FormGroup;\n\n steps = ['', STEP_OPTION];\n selectedStep = 0;\n // a string corresponding to the current step should be emitted whenever a step changes\n // this will be used to update the address to the current step, so that it can be linked to directly\n stepChange = new EventEmitter();\n stepOption: string;\n\n scrapeProgressPagesFound = 0;\n delayProgressScreenClosure = false;\n excludeAddToAIStep: boolean;\n knowledgeSource: KnowledgeSourceWithSuggestedFlag;\n disableSubmit = false;\n knowledgeCreated = new EventEmitter();\n\n constructor(\n readonly destroyRef: DestroyRef,\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: Data,\n ) {\n this.form = new FormGroup({\n name: new FormControl(''),\n url: new FormControl('', [urlValidator, Validators.required]),\n crawlMode: new FormControl(WebsiteScrapeConfigCrawlMode.WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SINGLE),\n });\n }\n\n async ngOnInit(): Promise {\n this.dialogRef.disableClose = true;\n\n if (this.data) {\n if (this.data?.knowledgeSourceKey) {\n await this.knowledgeService\n .getKnowledgeSource(this.data.knowledgeSourceKey.knowledgeSourceId, this.data.knowledgeSourceKey.namespace)\n .then(\n (knowledgeSource) => {\n this.knowledgeSource = knowledgeSource as KnowledgeSourceWithSuggestedFlag;\n },\n (_) => {\n this.knowledgeSource = null;\n },\n );\n\n this.otherAIDisclaimer.set(\n await this.knowledgeService.getOtherAIDisclaimerText(\n this.data.knowledgeSourceKey.knowledgeSourceId,\n this.data.currentAppId,\n ),\n );\n\n if (!this.knowledgeSource) {\n if (\n this.data.knowledgeSourceKey.knowledgeSourceId ===\n this.knowledgeService.buildBusinessWebsiteKnowledgeSourceId()\n ) {\n this.knowledgeSource = this.knowledgeService.buildBusinessWebsiteKnowledgeSource(\n this.data.config.websiteScrapeConfig.url,\n this.data.isSuggested,\n );\n this.cdr.detectChanges();\n }\n }\n\n this.configureStepper();\n }\n\n this.excludeAddToAIStep = this.data.excludeAddToAIStep;\n }\n this.isLoading.set(false);\n\n if (!this.excludeAddToAIStep) {\n this.steps.push('appSelection');\n }\n\n this.checkProgress();\n this.form = new FormGroup({\n name: new FormControl(this.knowledgeSource?.name || ''),\n url: new FormControl(this.websiteScrapeConfig?.url || '', [urlValidator, Validators.required]),\n crawlMode: new FormControl(\n this.websiteScrapeConfig?.crawlMode || WebsiteScrapeConfigCrawlMode.WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SINGLE,\n ),\n });\n }\n\n checkProgress(): void {\n if (this.knowledgeSource) {\n this.websiteScrapeConfig = this.knowledgeSource?.config?.websiteScrapeConfig;\n if (!this.knowledgeSource.isSuggested) {\n if (\n this.websiteScrapeConfig?.scrapeProgress !== WebsiteScrapeConfigProgress.WEBSITE_SCRAPE_CONFIG_PROGRESS_DONE\n ) {\n this.pollUntilScrapingFinishes();\n }\n if (this.knowledgeSource.training?.progress !== TrainingProgress.TRAINING_DONE) {\n this.pollUntilTrainingFinishes();\n }\n }\n }\n }\n\n shouldShowError(): boolean {\n return this.knowledgeSource?.config?.websiteScrapeConfig?.error && !this.enableEditingWithError;\n }\n\n pollUntilScrapingFinishes(): void {\n this.enableEditingWithError = false;\n this.disableSubmit = true;\n defer(() =>\n from(this.knowledgeService.getKnowledgeSource(this.knowledgeSource?.id, this.knowledgeSource?.namespace)),\n )\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n map((ks) => {\n this.knowledgeSource = ks;\n this.websiteScrapeConfig = ks?.config?.websiteScrapeConfig;\n // Update progress\n this.setTotalPagesFound(this.websiteScrapeConfig?.inProgressScrapedPages);\n if (\n this.websiteScrapeConfig?.scrapeProgress !== WebsiteScrapeConfigProgress.WEBSITE_SCRAPE_CONFIG_PROGRESS_DONE\n ) {\n this.disableSubmit = true;\n this.delayProgressScreenClosure = true;\n // throw error to poll again\n throw false;\n }\n if (!this.shouldShowError()) {\n if (this.selectedStep == 0) {\n setTimeout(() => {\n this.stepper.next();\n // This line fixes the console error message: \"ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.\"\n this.cdr.detectChanges();\n }, 1000);\n }\n }\n setTimeout(() => {\n this.delayProgressScreenClosure = false;\n this.disableSubmit = false;\n }, 1000);\n }),\n retry({ delay: 5000 }),\n take(1),\n )\n .subscribe();\n }\n\n private setTotalPagesFound(inProgressScrapedPages: KnowledgeSourceConfigWebsiteScrapeConfigScrapedPage[]) {\n if (inProgressScrapedPages && inProgressScrapedPages.length > 0) {\n let count = 0;\n for (const page of inProgressScrapedPages) {\n if (page.doneScraping) count++;\n }\n this.scrapeProgressPagesFound = count;\n return;\n }\n\n if (this.websiteScrapeConfig?.scrapeProgress !== WebsiteScrapeConfigProgress.WEBSITE_SCRAPE_CONFIG_PROGRESS_DONE) {\n this.scrapeProgressPagesFound = 0;\n } else {\n this.scrapeProgressPagesFound = this.websiteScrapeConfig.scrapedPages.length;\n }\n }\n\n pollUntilTrainingFinishes(): void {\n this.disableSubmit = true;\n defer(() =>\n from(this.knowledgeService.getKnowledgeSource(this.knowledgeSource?.id, this.knowledgeSource?.namespace)),\n )\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n map((ks) => {\n this.knowledgeSource = ks;\n if (this.knowledgeSource.training.progress !== TrainingProgress.TRAINING_DONE) {\n this.disableSubmit = true;\n this.scrapedPagesComponent.delayProgressScreenClosure = true;\n // throw error to poll again\n throw false;\n }\n if (!this.shouldShowError()) {\n if (this.selectedStep == 1) {\n setTimeout(() => {\n if (!this.onLastStep()) {\n this.stepper.next();\n // This line fixes the console error message: \"ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.\"\n this.cdr.detectChanges();\n }\n }, 1000);\n }\n }\n setTimeout(() => {\n this.scrapedPagesComponent.delayProgressScreenClosure = false;\n this.disableSubmit = false;\n }, 1000);\n }),\n retry({ delay: 5000 }),\n take(1),\n )\n .subscribe();\n }\n\n stepChanged(event: StepperSelectionEvent) {\n this.selectedStep = event?.selectedIndex;\n this.stepChange.emit(this.steps[this.selectedStep]);\n\n if (event.selectedIndex > event.previouslySelectedIndex) {\n event.previouslySelectedStep.completed = true;\n }\n switch (event.selectedIndex) {\n case 1:\n event.selectedStep.completed = true;\n if (this.knowledgeSource?.training?.progress !== TrainingProgress.TRAINING_DONE) {\n this.pollUntilTrainingFinishes();\n }\n break;\n case 2:\n event.selectedStep.completed = true;\n break;\n }\n }\n\n getCrawlModeOptions(): WebsiteScrapeConfigCrawlMode[] {\n return [\n WebsiteScrapeConfigCrawlMode.WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SINGLE,\n WebsiteScrapeConfigCrawlMode.WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_RECURSIVE,\n WebsiteScrapeConfigCrawlMode.WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SITEMAP,\n ];\n }\n\n getCrawlModeTranslationKey(crawlMode: WebsiteScrapeConfigCrawlMode): string {\n switch (crawlMode) {\n case WebsiteScrapeConfigCrawlMode.WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SINGLE: {\n return 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.SINGLE_PAGE';\n }\n case WebsiteScrapeConfigCrawlMode.WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_RECURSIVE: {\n return 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.FOLLOW_LINKS';\n }\n case WebsiteScrapeConfigCrawlMode.WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SITEMAP: {\n return 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.SITEMAP';\n }\n default: {\n return '';\n }\n }\n }\n\n getScrapeProgressTitle(): string {\n if (\n this.websiteScrapeConfig?.scrapeProgress === WebsiteScrapeConfigProgress.WEBSITE_SCRAPE_CONFIG_PROGRESS_QUEUED\n ) {\n return 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.SCRAPE_QUEUED';\n } else {\n if (this.scrapeProgressPagesFound > 0) {\n return 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.SCRAPE_IN_PROGRESS';\n } else {\n return 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.SCRAPE_QUEUED';\n }\n }\n }\n\n getPageLimit(): number {\n switch (this.environmentService.getEnvironment()) {\n case Environment.LOCAL:\n case Environment.DEMO:\n return 10;\n case Environment.PROD:\n return 100;\n default:\n return 0;\n }\n }\n\n async submit(): Promise {\n if (!this.hasUnsavedChanges()) {\n if (!this.onLastStep()) this.stepper.next();\n else this.close();\n\n return;\n }\n\n if (!this.isFormValid()) {\n this.snackbarService.openErrorSnack('COMMON.INVALID_FORM');\n return;\n }\n\n switch (this.selectedStep) {\n case 0: {\n const name =\n this.form.get('name').value ||\n this.translateService.instant('EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.MY_WEBSITE');\n const url = this.form.get('url')?.value;\n const config = {\n websiteScrapeConfig: {\n url: url,\n crawlMode: this.form.get('crawlMode')?.value,\n scrapedPages: this.websiteScrapeConfig?.scrapedPages,\n },\n };\n const id = await this.knowledgeService.createOrUpdateKnowledgeSource(this.knowledgeSource, name, config);\n this.knowledgeCreated.emit(id);\n this.disableSubmit = true;\n this.enableEditingWithError = false;\n this.form.markAsPristine();\n this.scrapeProgressPagesFound = 0;\n await this.refreshKnowledgeSource(id);\n this.configureStepper();\n this.pollUntilScrapingFinishes();\n break;\n }\n case 1: {\n const id = await this.scrapedPagesComponent?.submit();\n await this.refreshKnowledgeSource(id);\n this.configureStepper();\n this.pollUntilTrainingFinishes();\n break;\n }\n case 2: {\n await this.applicationSelector.setAppsForKnowledgeSource();\n this.close();\n break;\n }\n }\n }\n\n private async refreshKnowledgeSource(id: string) {\n const ks = await this.knowledgeService.getKnowledgeSource(id, this.knowledgeService.buildNamespaceInterface());\n this.knowledgeSource = ks;\n this.websiteScrapeConfig = ks?.config?.websiteScrapeConfig;\n }\n\n private isFormValid(): boolean {\n switch (this.selectedStep) {\n case 0: {\n const controls = [this.form.get('name'), this.form.get('url')];\n let valid = true;\n controls.forEach((c) => {\n c?.markAsDirty();\n if (!c?.valid) {\n valid = false;\n }\n });\n return valid;\n }\n case 1: {\n return true;\n }\n case 2: {\n return true;\n }\n }\n return false;\n }\n\n hasUnsavedChanges(): boolean {\n switch (this.selectedStep) {\n case 0: {\n return this.form?.dirty;\n }\n case 1: {\n return this.scrapedPagesComponent?.hasUnsavedChanges();\n }\n case 2: {\n return this.applicationSelector?.hasUnsavedChanges;\n }\n }\n return false;\n }\n\n async rescrape(): Promise {\n await this.knowledgeService.rescrapeWebsite(this.knowledgeSource);\n this.knowledgeSource = await this.knowledgeService.getKnowledgeSource(\n this.knowledgeSource.id,\n this.knowledgeService.buildNamespaceInterface(),\n );\n this.goToStep(0);\n this.checkProgress();\n }\n\n editError(): void {\n this.disableSubmit = false;\n this.enableEditingWithError = true;\n }\n\n ngAfterViewInit() {\n if (this.stepper) {\n if (this.stepOption) {\n const stepIndex = this.steps.indexOf(this.stepOption);\n if (stepIndex > 0) {\n this.stepper.steps.get(0).completed = false;\n this.goToStep(stepIndex);\n }\n }\n this.stepper.steps.forEach((step, idx) => {\n step.select = () => {\n // do not allow a latter step to be jumped to if stepper is linear\n if (this.stepper.linear && !step.completed) {\n return;\n }\n\n if (!this.hasUnsavedChanges()) {\n this.stepper.selectedIndex = idx;\n return;\n }\n\n this.confirmationModal\n .openModal({\n type: 'warn',\n title: this.translateService.instant('UNSAVED_CHANGES.TITLE'),\n message: this.translateService.instant('UNSAVED_CHANGES.MESSAGE'),\n confirmButtonText: this.translateService.instant('COMMON.YES'),\n cancelButtonText: this.translateService.instant('COMMON.NO'),\n })\n .subscribe((confirmed) => {\n if (confirmed) {\n this.stepper.selectedIndex = idx;\n }\n });\n };\n });\n this.configureStepper();\n }\n }\n\n async createWebChatWidget(): Promise {\n this.applicationSelector?.isCreatingWidget.set(true);\n const resp = await firstValueFrom(\n this.conversationApi\n .createWidget({\n name: 'Web Chat',\n namespace: this.knowledgeService.accountGroupId() || this.knowledgeService.partnerId(),\n })\n .pipe(\n catchError((err) => {\n this.confirmationModal\n .openModal({\n title: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.ERROR.TITLE'),\n message: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.ERROR.MESSAGE'),\n confirmButtonText: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.ERROR.YES'),\n cancelButtonText: this.translateService.instant('COMMON.NO'),\n })\n .subscribe((confirmed) => {\n this.applicationSelector?.isCreatingWidget.set(false);\n if (confirmed) {\n this.createWebChatWidget();\n }\n });\n return throwError(() => err);\n }),\n ),\n );\n\n const widgetId = resp.widget.widgetId;\n const configurationUrl = await this.buildAiKnowledgeAppConfigurationUrl(widgetId);\n await this.knowledgeService\n .upsertKnowledgeForApp(this.buildAppId(widgetId), resp.widget.name, configurationUrl, WebChatWidgetAppType, [\n {\n id: this.knowledgeSource?.id,\n namespace: this.knowledgeSource?.namespace,\n },\n ])\n .catch(\n // ignore error here for now because it could orphan the widget otherwise\n () => console.warn('Failed to save knowledge for widget'),\n );\n this.confirmationModal\n .openModal({\n title: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.SUCCESS.TITLE'),\n confirmButtonText: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.SUCCESS.GO_TO_WEB_CHAT_SETTINGS'),\n cancelButtonText: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.SUCCESS.KEEP_EDITING'),\n })\n .subscribe((confirmed) => {\n if (confirmed) {\n this.dialogRef.close(true);\n this.router.navigate(this.knowledgeService.buildWebChatWidgetEditRoute(widgetId));\n } else {\n this.applicationSelector.loadApps();\n this.applicationSelector?.isCreatingWidget.set(false);\n }\n });\n }\n\n async buildAiKnowledgeAppConfigurationUrl(widgetId: string): Promise {\n if (this.knowledgeService.accountGroupId()) {\n return `/account/location/${this.knowledgeService.accountGroupId()}/settings/widgets/${widgetId}/edit`;\n }\n return `/(inbox:inbox/widgets/${widgetId}/edit)`;\n }\n\n buildAppId(widgetId: string): string {\n return `APP-WEBCHAT-${widgetId}`;\n }\n\n getTitle(): string {\n if (this.knowledgeSource?.isSuggested) {\n return this.knowledgeSource?.name;\n }\n if (!this.data?.knowledgeSourceKey) {\n return 'ADD_KNOWLEDGE';\n }\n return 'EDIT_KNOWLEDGE.TITLE';\n }\n\n showBack(): boolean {\n return this.selectedStep > 0;\n }\n\n private configureStepper() {\n if (this.knowledgeSource?.isSuggested) return;\n\n this.stepper.linear = true;\n if (this.knowledgeSource && !this.knowledgeSource.isSuggested) {\n if (\n this.knowledgeSource.config.websiteScrapeConfig.scrapeProgress !==\n WebsiteScrapeConfigProgress.WEBSITE_SCRAPE_CONFIG_PROGRESS_DONE ||\n this.knowledgeSource.config.websiteScrapeConfig.error\n ) {\n this.stepper.selectedIndex = 0;\n this.stepper.steps.get(1).completed = false;\n if (this.stepper.steps.get(2)) {\n this.stepper.steps.get(2).completed = false;\n }\n } else if (this.knowledgeSource.training.progress !== TrainingProgress.TRAINING_DONE) {\n this.stepper.selectedIndex = 1;\n if (this.stepper.steps.get(2)) {\n this.stepper.steps.get(2).completed = false;\n }\n } else {\n this.stepper.linear = false;\n this.stepper.steps.get(1).completed = true;\n if (this.stepper.steps.get(2)) {\n this.stepper.steps.get(2).completed = true;\n }\n }\n }\n }\n\n goToStep(stepIndex: number): void {\n this.selectedStep = stepIndex;\n this.stepper.selectedIndex = this.selectedStep;\n }\n\n back(): void {\n this.warnUnsavedChanged(() => {\n this.stepper.previous();\n });\n }\n\n onLastStep(): boolean {\n return this.selectedStep === this.steps.length - 1;\n }\n\n warnUnsavedChanged(func: () => void): void {\n if (!this.hasUnsavedChanges()) {\n func();\n return;\n }\n\n this.confirmationModal\n .openModal({\n type: 'warn',\n title: this.translateService.instant('UNSAVED_CHANGES.TITLE'),\n message: this.translateService.instant('UNSAVED_CHANGES.MESSAGE'),\n confirmButtonText: this.translateService.instant('COMMON.YES'),\n cancelButtonText: this.translateService.instant('COMMON.NO'),\n })\n .subscribe((confirmed) => {\n if (confirmed) {\n func();\n }\n });\n }\n\n close(): void {\n this.warnUnsavedChanged(() => {\n this.stepChange.emit('');\n this.dialogRef.close();\n });\n }\n\n getSubmitAction(): string {\n if (this.onLastStep()) {\n return 'COMMON.SAVE';\n }\n return 'COMMON.NEXT';\n }\n\n async rescrapeInitiated(): Promise {\n // rescrape can only be initiated for website scrape component, go to the scraped pages step\n this.knowledgeSource = await this.knowledgeService.getKnowledgeSource(\n this.knowledgeSource.id,\n this.knowledgeService.buildNamespaceInterface(),\n );\n this.goToStep(0);\n this.checkProgress();\n }\n}\n","
\n
{{ getTitle() | translate }}
\n
\n \n \n
\n
\n
\n \n @if (knowledgeSource?.isSuggested) {\n
\n \n
\n {{ getCrawlModeTranslationKey(websiteScrapeConfig?.crawlMode) | translate }}\n
\n
\n \n } @else {\n \n \n {{ 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.FIND_PAGES' | translate }}\n \n @if (\n (websiteScrapeConfig &&\n websiteScrapeConfig.scrapeProgress !== scrapeProgressStates.WEBSITE_SCRAPE_CONFIG_PROGRESS_DONE) ||\n delayProgressScreenClosure\n ) {\n \n \n \n \n \n {{ getScrapeProgressTitle() | translate }}\n @if (\n (websiteScrapeConfig.scrapeProgress ===\n scrapeProgressStates.WEBSITE_SCRAPE_CONFIG_PROGRESS_IN_PROGRESS &&\n scrapeProgressPagesFound > 0) ||\n (delayProgressScreenClosure &&\n websiteScrapeConfig.scrapeProgress === scrapeProgressStates.WEBSITE_SCRAPE_CONFIG_PROGRESS_DONE)\n ) {\n {{ scrapeProgressPagesFound }}\n }\n \n

{{ 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.SCRAPE_IN_PROGRESS_CLARIFICATION_DEFAULT' | translate }}

\n
\n } @else {\n @if (shouldShowError()) {\n \n \n warning\n \n \n {{\n 'WEBSITE_SCRAPE.ERRORS.TITLE'\n | translate: { url: knowledgeSource?.config?.websiteScrapeConfig?.url }\n }}\n \n

\n {{\n knowledgeSource.config.websiteScrapeConfig.error?.errorMessage\n | translate: { url: knowledgeSource?.config?.websiteScrapeConfig?.url }\n }}\n

\n \n \n \n \n
\n } @else {\n \n \n {{ 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.URL' | translate }}\n \n @if (form.get('url')?.errors && form.get('url')?.dirty) {\n \n {{ 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.INVALID_URL' | translate }}\n \n }\n \n {{ 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.URL_HINT' | translate }}\n \n \n \n {{ 'EDIT_KNOWLEDGE.NAME' | translate }}\n \n \n \n {{ 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.CRAWL_MODE' | translate }}\n \n @for (crawlModeOption of getCrawlModeOptions(); track crawlModeOption) {\n \n {{ getCrawlModeTranslationKey(crawlModeOption) | translate }}\n \n }\n \n @if (form.get('crawlMode')?.value === crawlModes.WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_RECURSIVE) {\n \n {{\n 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.FOLLOW_LINKS_HINT'\n | translate: { pageLimit: getPageLimit() }\n }}\n \n } @else if (form.get('crawlMode')?.value === crawlModes.WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SITEMAP) {\n \n {{\n 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.SITEMAP_HINT' | translate: { pageLimit: getPageLimit() }\n }}\n \n }\n \n \n \n }\n }\n
\n
\n \n {{ 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.TRAIN' | translate }}\n \n \n \n \n @if (!excludeAddToAIStep) {\n \n {{ 'EDIT_KNOWLEDGE.ADD_TO_AI' | translate }}\n \n \n \n \n }\n
\n }\n\n \n @if (knowledgeSource) {\n
\n @if (knowledgeSource.isSuggested) {\n
\n {{ 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.SCRAPE_WILL_BE_QUEUED' | translate }}\n
\n } @else if (\n websiteScrapeConfig?.scrapeProgress !== scrapeProgressStates.WEBSITE_SCRAPE_CONFIG_PROGRESS_DONE\n ) {\n
\n \n {{ getScrapeProgressTitle() | translate }}\n
\n }\n
\n }\n
\n
\n \n
\n @if (otherAIDisclaimer()) {\n
{{ otherAIDisclaimer() }}
\n }\n
\n @if (showBack()) {\n
\n \n
\n }\n\n
\n \n @if (!knowledgeSource?.isSuggested) {\n \n }\n
\n
\n
\n
\n
\n\n\n","import { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, EventEmitter, Inject, inject, OnInit } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AiKnowledgeService } from '../../ai-knowledge.service';\nimport { AiKnowledgeI18nModule } from '../../assets/i18n/ai-knowledge-i18n.module';\nimport { MatCardModule } from '@angular/material/card';\nimport { CustomDataComponent } from '../custom-data/custom-data.component';\nimport { WebsiteScrapeComponent } from '../website-scrape/website-scrape.component';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\n\nimport { MatButton } from '@angular/material/button';\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogActions,\n MatDialogConfig,\n MatDialogContent,\n MatDialogRef,\n} from '@angular/material/dialog';\n\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { KnowledgeCreatedEvent } from '../common/interfaces';\nimport { KnowledgeSourceConfig, KnowledgeSourceKey } from '@vendasta/embeddings';\n\ninterface Choice {\n title: string;\n description: string;\n component: any;\n}\n\ninterface Data {\n knowledgeSourceKey?: KnowledgeSourceKey;\n config?: KnowledgeSourceConfig;\n isSuggested?: boolean;\n stepOption?: string;\n excludeAddToAIStep?: boolean;\n}\n\n@Component({\n selector: 'ai-knowledge-add-knowledge',\n imports: [\n CommonModule,\n TranslateModule,\n AiKnowledgeI18nModule,\n MatCardModule,\n GalaxyLoadingSpinnerModule,\n MatButton,\n MatDialogActions,\n MatDialogContent,\n ],\n providers: [AiKnowledgeService],\n templateUrl: './add-knowledge.component.html',\n styleUrls: ['./add-knowledge.component.scss'],\n})\nexport class AddKnowledgeComponent implements OnInit {\n private readonly DIALOG_WIDTH = '660px';\n private readonly bpObserver = inject(BreakpointObserver);\n private readonly dialog = inject(MatDialog);\n choices: Choice[] = [\n {\n title: 'EDIT_KNOWLEDGE.CUSTOM_DATA_CONFIG.TITLE',\n description: 'EDIT_KNOWLEDGE.CUSTOM_DATA_CONFIG.DESCRIPTION',\n component: CustomDataComponent,\n },\n {\n title: 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.TITLE',\n description: 'EDIT_KNOWLEDGE.WEBSITE_SCRAPE_CONFIG.DESCRIPTION',\n component: WebsiteScrapeComponent,\n },\n ];\n componentSelected = new EventEmitter<{ knowledgeCreated: EventEmitter; destroyRef: DestroyRef }>();\n\n constructor(\n public dialogRef: MatDialogRef,\n public readonly destroyRef: DestroyRef,\n @Inject(MAT_DIALOG_DATA) public data: Data,\n ) {}\n\n ngOnInit(): void {\n this.dialogRef.disableClose = true;\n }\n\n selectComponent(choice: Choice): void {\n const component = this.openDialog(choice.component);\n this.componentSelected.emit({ knowledgeCreated: component.knowledgeCreated, destroyRef: component.destroyRef });\n this.close();\n }\n\n private openDialog(type: ComponentType): KnowledgeCreatedEvent {\n const conf: MatDialogConfig = {\n width: this.DIALOG_WIDTH,\n data: { excludeAddToAIStep: this.data?.excludeAddToAIStep },\n };\n\n const isSmallScreen = this.bpObserver.isMatched(Breakpoints.XSmall);\n if (isSmallScreen) {\n conf.maxWidth = '100vw';\n conf.maxHeight = '100vh';\n }\n const editor = this.dialog.open(type, conf);\n return editor.componentInstance;\n }\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","
\n
{{ 'ADD_KNOWLEDGE' | translate }}
\n
\n
\n \n
\n \n \n \n

{{ choice.title | translate }}

\n

\n {{ choice.description | translate }}\n

\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n Inject,\n inject,\n OnInit,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { AiKnowledgeService } from '../../ai-knowledge.service';\nimport { Router, RouterModule } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AiKnowledgeI18nModule } from '../../assets/i18n/ai-knowledge-i18n.module';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { GalaxySnackbarModule } from '@vendasta/galaxy/snackbar-service';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { ApplicationSelectorComponent } from '../../application-selector/application-selector.component';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ACCOUNT_GROUP_ID_TOKEN } from '../../tokens';\nimport { KnowledgeSourceWithSuggestedFlag, WebChatWidgetAppType } from '../../ai-knowledge-util';\nimport { catchError, firstValueFrom, throwError } from 'rxjs';\nimport { ConversationApiService } from '@vendasta/conversation';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\n\nimport { KnowledgeSourceConfig, KnowledgeSourceKey } from '@vendasta/embeddings';\nimport { KnowledgeCreatedEvent, StepChangeEvent } from '../common/interfaces';\n\ninterface Data {\n knowledgeSourceKey?: KnowledgeSourceKey;\n config?: KnowledgeSourceConfig;\n isSuggested?: boolean;\n stepOption?: string;\n excludeAddToAIStep?: boolean;\n currentAppId?: string;\n}\n\n@Component({\n selector: 'ai-knowledge-business-profile',\n imports: [\n CommonModule,\n TranslateModule,\n AiKnowledgeI18nModule,\n MatButtonModule,\n MatDialogModule,\n MatIconModule,\n MatTabsModule,\n MatSelectModule,\n MatOptionModule,\n MatExpansionModule,\n MatCheckboxModule,\n ReactiveFormsModule,\n FormsModule,\n GalaxyFormFieldModule,\n GalaxyLoadingSpinnerModule,\n RouterModule,\n GalaxySnackbarModule,\n MatInputModule,\n MatStepperModule,\n MatIconModule,\n GalaxyTooltipModule,\n ApplicationSelectorComponent,\n ],\n providers: [AiKnowledgeService],\n templateUrl: './business-profile.component.html',\n styleUrls: ['./business-profile.component.scss'],\n})\nexport class BusinessProfileComponent implements OnInit, KnowledgeCreatedEvent, StepChangeEvent {\n @ViewChild('applicationSelector') applicationSelector: ApplicationSelectorComponent;\n\n private readonly accountGroupId = toSignal(inject(ACCOUNT_GROUP_ID_TOKEN));\n private readonly knowledgeService = inject(AiKnowledgeService);\n private readonly conversationApi = inject(ConversationApiService);\n private readonly confirmationModal = inject(OpenConfirmationModalService);\n private readonly translateService = inject(TranslateService);\n private readonly router = inject(Router);\n private readonly cdr = inject(ChangeDetectorRef);\n\n readonly isLoading = signal(true);\n\n knowledgeSource: KnowledgeSourceWithSuggestedFlag;\n knowledgeCreated = new EventEmitter();\n stepChange = new EventEmitter();\n readonly otherAIDisclaimer = signal('');\n\n constructor(\n readonly destroyRef: DestroyRef,\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: Data,\n ) {}\n\n async ngOnInit(): Promise {\n this.dialogRef.disableClose = true;\n\n if (this.data?.knowledgeSourceKey) {\n await this.knowledgeService\n .getKnowledgeSource(this.data.knowledgeSourceKey.knowledgeSourceId, this.data.knowledgeSourceKey.namespace)\n .then(\n (knowledgeSource) => {\n this.knowledgeSource = knowledgeSource as KnowledgeSourceWithSuggestedFlag;\n },\n (_) => {\n this.knowledgeSource = null;\n },\n );\n\n this.otherAIDisclaimer.set(\n await this.knowledgeService.getOtherAIDisclaimerText(\n this.data.knowledgeSourceKey.knowledgeSourceId,\n this.data.currentAppId,\n ),\n );\n\n if (!this.knowledgeSource) {\n this.knowledgeSource = this.knowledgeService.buildBusinessProfileKnowledgeSource(this.data.isSuggested);\n this.cdr.detectChanges();\n }\n }\n this.isLoading.set(false);\n }\n\n async submit(): Promise {\n if (!this.knowledgeSource) {\n await this.knowledgeService.createKnowledgeSource('Business Profile', {\n businessProfileConfig: {\n accountGroupId: this.accountGroupId(),\n },\n });\n }\n await this.applicationSelector.setAppsForKnowledgeSource();\n this.close();\n }\n\n hasUnsavedChanges(): boolean {\n return this.applicationSelector?.hasUnsavedChanges;\n }\n\n shouldSubmit(): boolean {\n return this.hasUnsavedChanges() || !this.knowledgeSource || this.applicationSelector?.forceSubmit;\n }\n\n customButton = {\n text: 'BUSINESS_PROFILE.MANAGE_BUSINESS_PROFILE',\n link: this.knowledgeService.buildBusinessProfileUrl(),\n };\n\n async createWebChatWidget(): Promise {\n this.applicationSelector?.isCreatingWidget.set(true);\n const resp = await firstValueFrom(\n this.conversationApi\n .createWidget({\n name: 'Web Chat',\n namespace: this.knowledgeService.accountGroupId() || this.knowledgeService.partnerId(),\n })\n .pipe(\n catchError((err) => {\n this.confirmationModal\n .openModal({\n title: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.ERROR.TITLE'),\n message: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.ERROR.MESSAGE'),\n confirmButtonText: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.ERROR.YES'),\n cancelButtonText: this.translateService.instant('COMMON.NO'),\n })\n .subscribe((confirmed) => {\n this.applicationSelector?.isCreatingWidget.set(false);\n if (confirmed) {\n this.createWebChatWidget();\n }\n });\n return throwError(() => err);\n }),\n ),\n );\n\n const widgetId = resp.widget.widgetId;\n const configurationUrl = await this.buildAiKnowledgeAppConfigurationUrl(widgetId);\n await this.knowledgeService\n .upsertKnowledgeForApp(this.buildAppId(widgetId), resp.widget.name, configurationUrl, WebChatWidgetAppType, [\n {\n id: this.knowledgeSource?.id,\n namespace: this.knowledgeSource?.namespace,\n },\n ])\n .catch(\n // ignore error here for now because it could orphan the widget otherwise\n () => console.warn('Failed to save knowledge for widget'),\n );\n this.confirmationModal\n .openModal({\n title: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.SUCCESS.TITLE'),\n confirmButtonText: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.SUCCESS.GO_TO_WEB_CHAT_SETTINGS'),\n cancelButtonText: this.translateService.instant('CREATE_WEB_CHAT_WIDGET.SUCCESS.KEEP_EDITING'),\n })\n .subscribe((confirmed) => {\n if (confirmed) {\n this.dialogRef.close(true);\n this.router.navigate(this.knowledgeService.buildWebChatWidgetEditRoute(widgetId));\n } else {\n this.applicationSelector.loadApps();\n this.applicationSelector?.isCreatingWidget.set(false);\n }\n });\n }\n\n async buildAiKnowledgeAppConfigurationUrl(widgetId: string): Promise {\n if (this.knowledgeService.accountGroupId()) {\n return `/account/location/${this.knowledgeService.accountGroupId()}/settings/widgets/${widgetId}/edit`;\n }\n return `/(inbox:inbox/widgets/${widgetId}/edit)`;\n }\n\n buildAppId(widgetId: string): string {\n return `APP-WEBCHAT-${widgetId}`;\n }\n\n getTitle(): string {\n if (!this.data?.knowledgeSourceKey) {\n return 'ADD_KNOWLEDGE';\n }\n return 'EDIT_KNOWLEDGE.TITLE';\n }\n\n warnUnsavedChanged(func: () => void): void {\n if (!this.hasUnsavedChanges()) {\n func();\n return;\n }\n\n this.confirmationModal\n .openModal({\n type: 'warn',\n title: this.translateService.instant('UNSAVED_CHANGES.TITLE'),\n message: this.translateService.instant('UNSAVED_CHANGES.MESSAGE'),\n confirmButtonText: this.translateService.instant('COMMON.YES'),\n cancelButtonText: this.translateService.instant('COMMON.NO'),\n })\n .subscribe((confirmed) => {\n if (confirmed) {\n func();\n }\n });\n }\n\n close(): void {\n this.warnUnsavedChanged(() => {\n this.dialogRef.close();\n });\n }\n}\n","
\n
{{ getTitle() | translate }}
\n
\n
\n \n
\n {{ 'BUSINESS_PROFILE.SHARE_FIELDS' | translate }}\n \n info_outline\n \n
\n\n @if (!data.excludeAddToAIStep) {\n \n }\n
\n \n
\n @if (customButton?.link && otherAIDisclaimer()) {\n
{{ otherAIDisclaimer() }}
\n }\n
\n @if (customButton?.link) {\n \n }\n\n
\n @if (data?.excludeAddToAIStep) {\n \n } @else {\n \n \n }\n
\n
\n
\n
\n
\n\n\n","import {\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocomplete, MatAutocompleteModule, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { KnowledgeSource, KnowledgeSourceConfigType } from '@vendasta/embeddings';\nimport { AiKnowledgeService } from '../ai-knowledge.service';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { RouterModule } from '@angular/router';\nimport { KnowledgeListComponent } from '../knowledge-list/knowledge-list.component';\nimport { MatDialog, MatDialogConfig, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { ACCOUNT_GROUP_ID_TOKEN, PARTNER_ID_TOKEN, SHOW_BUSINESS_PROFILE_SOURCE_TOKEN } from '../tokens';\nimport { AiKnowledgeI18nModule } from '../assets/i18n/ai-knowledge-i18n.module';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { firstValueFrom, map, switchMap, take } from 'rxjs';\nimport { KnowledgeSourceWithSuggestedFlag } from '../ai-knowledge-util';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { AccountGroupService, ProjectionFilter } from '@galaxy/account-group';\nimport { FeatureFlagService } from '@galaxy/partner';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { AddKnowledgeComponent } from '../knowledge-editor/add-knowledge/add-knowledge.component';\nimport { WebsiteScrapeComponent } from '../knowledge-editor/website-scrape/website-scrape.component';\nimport { CustomDataComponent } from '../knowledge-editor/custom-data/custom-data.component';\nimport { BusinessProfileComponent } from '../knowledge-editor/business-profile/business-profile.component';\nimport { StepChangeEvent } from '../knowledge-editor/common/interfaces';\n\nexport const WEBSITE_KNOWLEDGE = 'website_knowledge';\n\n@Component({\n selector: 'ai-knowledge-application-knowledge',\n imports: [\n CommonModule,\n RouterModule,\n TranslateModule,\n AiKnowledgeI18nModule,\n MatIconModule,\n MatButtonModule,\n MatInputModule,\n MatFormFieldModule,\n MatAutocompleteModule,\n FormsModule,\n ReactiveFormsModule,\n MatProgressSpinnerModule,\n MatChipsModule,\n GalaxyLoadingSpinnerModule,\n GalaxyFormFieldModule,\n KnowledgeListComponent,\n MatDialogModule,\n MatDividerModule,\n GalaxyBadgeModule,\n MatCheckboxModule,\n ],\n providers: [AiKnowledgeService],\n templateUrl: './application-knowledge.component.html',\n styleUrls: ['./application-knowledge.component.scss'],\n})\nexport class ApplicationKnowledgeComponent implements OnInit {\n @Input() appId: string;\n @Input() disabled: boolean;\n\n @Output() selectedSourcesChange = new EventEmitter();\n\n DIALOG_WIDTH = '660px';\n private readonly dialog = inject(MatDialog);\n private readonly bpObserver = inject(BreakpointObserver);\n\n private readonly accountGroupID = toSignal(inject(ACCOUNT_GROUP_ID_TOKEN));\n\n private readonly partnerId = toSignal(inject(PARTNER_ID_TOKEN));\n private featureFlagService = inject(FeatureFlagService);\n private isWebsiteKnowledgeFeatureFlagEnabled = false;\n\n private readonly knowledgeService = inject(AiKnowledgeService);\n private readonly showBusinessProfileSource = toSignal(inject(SHOW_BUSINESS_PROFILE_SOURCE_TOKEN));\n\n private readonly accountGroupService: AccountGroupService;\n\n private suggestedWebsiteURL = '';\n private hasWebsiteKS = false;\n\n sources = signal([]);\n searchValue = signal('');\n selectedSources = signal(null);\n filteredSources = computed(() =>\n this.sources().filter(\n (source) =>\n source.name.toLowerCase().indexOf(this.searchValue()) >= 0 &&\n !this.selectedSources().some((selected) => selected.id === source.id),\n ),\n );\n readonly isLoading = signal(true);\n\n selectedSourceControl = new FormControl();\n\n @ViewChild('knowledgeSourceInput') knowledgeSourceInput: ElementRef;\n @ViewChild('auto') matAutocomplete: MatAutocomplete;\n @ViewChild('trigger') matAutocompleteTrigger: MatAutocompleteTrigger;\n\n constructor(private readonly destroyRef: DestroyRef) {\n if (this.accountGroupID()) {\n this.accountGroupService = inject(AccountGroupService);\n }\n effect(() => this.selectedSourcesChange.emit(this.selectedSources()));\n }\n\n async ngOnInit(): Promise {\n this.isWebsiteKnowledgeFeatureFlagEnabled = await this.checkWebsiteKnowledgeFeatureFlag();\n\n await this.checkWebsiteKnowledgeSource();\n await this.refreshSources();\n\n let initialSources: KnowledgeSourceWithSuggestedFlag[] = [];\n if (this.appId) {\n initialSources = await this.knowledgeService.listAllKnowledgeSourcesForApp(this.appId);\n } else if (this.showBusinessProfileSource()) {\n const businessProfileSource = this.knowledgeService.buildBusinessProfileKnowledgeSource(true);\n if (businessProfileSource) {\n initialSources.push(businessProfileSource);\n }\n\n // Adds a suggestion to add a new website source if there are none available and we have a website URL\n if (this.isWebsiteKnowledgeFeatureFlagEnabled && this.suggestedWebsiteURL && !this.hasWebsiteKS) {\n const businessWebsiteSource = this.knowledgeService.buildBusinessWebsiteKnowledgeSource(\n this.suggestedWebsiteURL,\n true,\n );\n if (businessWebsiteSource) {\n initialSources.push(businessWebsiteSource);\n }\n }\n }\n this.selectedSources.set(initialSources);\n this.isLoading.set(false);\n\n this.selectedSourceControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((searchValue) => {\n if (typeof searchValue === 'string') {\n this.searchValue.set(searchValue?.toLowerCase());\n }\n });\n }\n\n async checkWebsiteKnowledgeFeatureFlag(): Promise {\n if (!this.partnerId()) {\n return true;\n }\n const results = await firstValueFrom(\n this.featureFlagService.batchGetStatus(this.partnerId(), '', [WEBSITE_KNOWLEDGE]),\n );\n return results[WEBSITE_KNOWLEDGE];\n }\n\n // Checks if a website source is available and if there is a website URL available\n // Register all results in local variables\n async checkWebsiteKnowledgeSource() {\n if (this.showBusinessProfileSource() && this.isWebsiteKnowledgeFeatureFlagEnabled) {\n // Gets the website URL from the account group\n const accountGroup = await firstValueFrom(\n this.accountGroupService.get(this.accountGroupID(), new ProjectionFilter({ napData: true })),\n );\n this.suggestedWebsiteURL = accountGroup?.napData?.website;\n\n // Checks if there are any website sources\n const existingWebsiteKnowledgeSources = await this.knowledgeService.listKnowledgeSources(\n [KnowledgeSourceConfigType.KNOWLEDGE_SOURCE_CONFIG_TYPE_WEBSITE_SCRAPE],\n { pageSize: 1 },\n );\n this.hasWebsiteKS = existingWebsiteKnowledgeSources?.knowledgeSources?.length > 0;\n }\n }\n\n async refreshSources(): Promise {\n // TODO: actually page and search on value changes\n const sourcesResult = await this.knowledgeService.listKnowledgeSources(\n [\n KnowledgeSourceConfigType.KNOWLEDGE_SOURCE_CONFIG_TYPE_CUSTOM_DATA,\n KnowledgeSourceConfigType.KNOWLEDGE_SOURCE_CONFIG_TYPE_WEBSITE_SCRAPE,\n ],\n { pageSize: 100 },\n );\n const knowledgeSources = sourcesResult.knowledgeSources || [];\n if (this.showBusinessProfileSource()) {\n // manually insert business profile source because it may not exist yet\n const businessProfileSource = this.knowledgeService.buildBusinessProfileKnowledgeSource(true);\n if (businessProfileSource) {\n knowledgeSources.unshift(businessProfileSource);\n }\n\n // Adds a suggestion to add a new website source if there are none available and we have a website URL\n if (this.isWebsiteKnowledgeFeatureFlagEnabled && this.suggestedWebsiteURL && !this.hasWebsiteKS) {\n const businessWebsiteSource = this.knowledgeService.buildBusinessWebsiteKnowledgeSource(\n this.suggestedWebsiteURL,\n true,\n );\n if (businessWebsiteSource) {\n knowledgeSources.unshift(businessWebsiteSource);\n }\n }\n }\n this.sources.set(knowledgeSources);\n this.clearInputFields();\n }\n\n async forceRefreshSources(): Promise {\n this.isLoading.set(true);\n await this.refreshSources();\n this.isLoading.set(false);\n }\n\n async viewSource(source: KnowledgeSourceWithSuggestedFlag): Promise {\n const conf: MatDialogConfig = {\n width: this.DIALOG_WIDTH,\n data: {\n knowledgeSourceKey: { knowledgeSourceId: source?.id, namespace: source?.namespace },\n excludeAddToAIStep: true,\n config: source?.config,\n isSuggested: source?.isSuggested,\n currentAppId: this.appId,\n },\n };\n\n const isSmallScreen = this.bpObserver.isMatched(Breakpoints.XSmall);\n if (isSmallScreen) {\n conf.maxWidth = '100vw';\n conf.maxHeight = '100vh';\n }\n\n let editor: MatDialogRef;\n if (source?.config?.websiteScrapeConfig) {\n editor = this.dialog.open(WebsiteScrapeComponent, conf);\n } else if (source?.config?.customDataConfig) {\n editor = this.dialog.open(CustomDataComponent, conf);\n } else {\n editor = this.dialog.open(BusinessProfileComponent, conf);\n }\n const navigatingAway = await firstValueFrom(editor.afterClosed());\n if (!navigatingAway && !source?.isSuggested) {\n this.isLoading.set(true);\n const updatedKnowledge = await this.knowledgeService.getKnowledgeSource(source?.id, source?.namespace);\n this.selectedSources.update((current) => {\n const index = current.findIndex((item) => item.id === source?.id);\n if (index !== -1) {\n current[index] = updatedKnowledge;\n }\n return current;\n });\n this.isLoading.set(false);\n }\n }\n\n removeSource(source: KnowledgeSource): void {\n this.selectedSources.update((selectedSources) => {\n const index = selectedSources.indexOf(source);\n if (index >= 0) {\n selectedSources.splice(index, 1);\n }\n return [...selectedSources];\n });\n }\n\n addSource(source: KnowledgeSource | undefined): void {\n if (!source) {\n this.addKnowledge();\n return;\n }\n\n this.selectedSources.update((selectedSources) => {\n const sourceIds = selectedSources.map((g) => g.id);\n if (!sourceIds.includes(source.id)) {\n selectedSources.push(source);\n }\n this.clearInputFields();\n this.matAutocompleteTrigger.closePanel();\n return [...selectedSources];\n });\n }\n\n chooseMatch(event: any): void {\n event.preventDefault();\n if (this.filteredSources().length > 1) {\n // Do not select if there are multiple matches\n return;\n }\n if (this.filteredSources().length === 1) {\n const sourceToAdd = this.filteredSources()[0];\n this.addSource(sourceToAdd);\n }\n }\n\n clearInputFields(): void {\n if (this.knowledgeSourceInput?.nativeElement?.value) {\n this.knowledgeSourceInput.nativeElement.value = '';\n }\n this.selectedSourceControl.setValue('');\n }\n\n async addKnowledge(): Promise {\n const conf: MatDialogConfig = {\n width: this.DIALOG_WIDTH,\n data: { excludeAddToAIStep: true },\n };\n\n const isSmallScreen = this.bpObserver.isMatched(Breakpoints.XSmall);\n if (isSmallScreen) {\n conf.maxWidth = '100vw';\n conf.maxHeight = '100vh';\n }\n const editor = this.dialog.open(AddKnowledgeComponent, conf);\n editor.componentInstance.componentSelected\n .pipe(takeUntilDestroyed(editor.componentInstance.destroyRef))\n .subscribe((event) => {\n this.subscribeToKnowledgeCreated(event.knowledgeCreated, event.destroyRef);\n });\n await firstValueFrom(editor.afterClosed());\n }\n\n private subscribeToKnowledgeCreated(event: EventEmitter, destroyRef: DestroyRef): void {\n event\n .pipe(\n takeUntilDestroyed(destroyRef),\n take(1),\n switchMap((sourceId) =>\n this.knowledgeService.getKnowledgeSource(sourceId, this.knowledgeService.buildNamespaceInterface(), false),\n ),\n map((ks) => this.selectedSources().push(ks)),\n map(() => this.selectedSourcesChange.emit(this.selectedSources())),\n switchMap(() => this.forceRefreshSources()),\n )\n .subscribe();\n }\n\n getKnowledgePreview(source: KnowledgeSource): string {\n return this.knowledgeService.getKnowledgePreview(source);\n }\n}\n","\n \n \n \n \n \n \n \n {{ 'ADD_NEW_KNOWLEDGE' | translate }}\n \n \n 0\">\n \n
\n {{ source.name }}\n {{ 'SUGGESTED' | translate }}\n
\n
{{ getKnowledgePreview(source) }}
\n
\n
\n
\n
\n\n\n \n\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, Inject, OnInit, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { AiKnowledgeService } from '../ai-knowledge.service';\nimport { AiKnowledgeI18nModule } from '../assets/i18n/ai-knowledge-i18n.module';\nimport { ApplicationListComponent } from '../app-list/application-list.component';\nimport { App } from '@vendasta/embeddings';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { GalaxySnackbarModule, SnackbarService } from '@vendasta/galaxy/snackbar-service';\n\nexport interface DeleteCustomKnowledgeData {\n knowledgeSourceId: string;\n}\n\n@Component({\n selector: 'ai-knowledge-delete-custom-knowledge-dialog',\n imports: [\n CommonModule,\n TranslateModule,\n AiKnowledgeI18nModule,\n MatButtonModule,\n MatDialogModule,\n ApplicationListComponent,\n GalaxyLoadingSpinnerModule,\n GalaxySnackbarModule,\n ],\n providers: [AiKnowledgeService],\n templateUrl: './delete-custom-knowledge.component.html',\n})\nexport class DeleteCustomKnowledgeComponent implements OnInit {\n private readonly knowledgeService = inject(AiKnowledgeService);\n private readonly snackbarService = inject(SnackbarService);\n readonly isLoading = signal(true);\n associatedApps = signal(null);\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: DeleteCustomKnowledgeData,\n ) {}\n\n async ngOnInit(): Promise {\n this.associatedApps.set(await this.knowledgeService.listAllAppsForKnowledgeSource(this.data.knowledgeSourceId));\n this.isLoading.set(false);\n }\n\n cancel(): void {\n this.dialogRef.close();\n }\n\n async delete(): Promise {\n await this.knowledgeService.deleteKnowledgeSource(this.data.knowledgeSourceId);\n this.snackbarService.openSuccessSnack('DELETE_KNOWLEDGE.SUCCESSFULLY_DELETED');\n this.dialogRef.close(true);\n }\n}\n","

{{ 'DELETE_KNOWLEDGE.TITLE' | translate }}

\n\n @if (isLoading()) {\n \n } @else {\n @if (associatedApps().length > 0) {\n
{{ 'APPS_WARNING' | translate }}
\n \n } @else {\n {{ 'NO_APPS' | translate }}\n }\n }\n
\n\n \n \n\n","import { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnInit, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { KnowledgeSource, KnowledgeSourceConfigType } from '@vendasta/embeddings';\nimport { AiKnowledgeService } from '../ai-knowledge.service';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { MatListModule } from '@angular/material/list';\nimport { MatDialog, MatDialogConfig, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { firstValueFrom, map, switchMap, take } from 'rxjs';\nimport { DeleteCustomKnowledgeComponent } from '../delete-custom-knowledge/delete-custom-knowledge.component';\nimport { MatCardModule } from '@angular/material/card';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { KnowledgeListComponent } from '../knowledge-list/knowledge-list.component';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { SHOW_BUSINESS_PROFILE_SOURCE_TOKEN } from '../tokens';\nimport { AiKnowledgeI18nModule } from '../assets/i18n/ai-knowledge-i18n.module';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { STEP_OPTION } from '../knowledge-editor/website-scrape/scraped-pages/scraped-pages.component';\nimport { AddKnowledgeComponent } from '../knowledge-editor/add-knowledge/add-knowledge.component';\nimport { StepChangeEvent } from '../knowledge-editor/common/interfaces';\nimport { WebsiteScrapeComponent } from '../knowledge-editor/website-scrape/website-scrape.component';\nimport { CustomDataComponent } from '../knowledge-editor/custom-data/custom-data.component';\nimport { BusinessProfileComponent } from '../knowledge-editor/business-profile/business-profile.component';\n\n@Component({\n selector: 'ai-knowledge-knowledge-source-management',\n imports: [\n CommonModule,\n TranslateModule,\n AiKnowledgeI18nModule,\n GalaxyPageModule,\n MatButtonModule,\n MatIconModule,\n RouterModule,\n MatListModule,\n MatCardModule,\n MatDialogModule,\n KnowledgeListComponent,\n ],\n providers: [AiKnowledgeService],\n templateUrl: './knowledge-source-management.component.html',\n styleUrls: ['./knowledge-source-management.component.scss'],\n})\nexport class KnowledgeSourceManagementComponent implements OnInit {\n @Input() previousPageTitle?: string;\n @Input() previousPageUrl?: string;\n DIALOG_WIDTH = '660px';\n SCRAPED_PAGES_STEP_OPTION = STEP_OPTION;\n private readonly dialog = inject(MatDialog);\n private readonly bpObserver = inject(BreakpointObserver);\n private readonly activeRoute = inject(ActivatedRoute);\n\n readonly knowledgeSources = signal([]);\n private readonly showBusinessProfileSource = toSignal(inject(SHOW_BUSINESS_PROFILE_SOURCE_TOKEN));\n private knowledgeService = inject(AiKnowledgeService);\n confirmationModal = inject(OpenConfirmationModalService);\n router = inject(Router);\n\n readonly isLoading = signal(true);\n\n async ngOnInit(): Promise {\n await this.refreshSources();\n const editSourceParam = this.activeRoute.snapshot.queryParamMap.get('editSource');\n if (editSourceParam) {\n const [sourceId, option] = this.sourceIdAndOptionFromEditSourceParam(editSourceParam);\n const source = this.knowledgeSources().find((s) => s.id == sourceId);\n if (source) {\n await this.editKnowledgeSource(source, option);\n }\n }\n if (this.activeRoute.snapshot.queryParamMap.get('addSource')) {\n await this.addNewKnowledgeSource();\n }\n }\n\n sourceIdAndOptionFromEditSourceParam(editSourceParam: string): [string, string] {\n const colonIndex = editSourceParam.indexOf(':');\n if (colonIndex === -1) {\n return [editSourceParam, ''];\n } else {\n return [editSourceParam.substring(0, colonIndex), editSourceParam.substring(colonIndex + 1)];\n }\n }\n\n async refreshSources(): Promise {\n this.isLoading.set(true);\n const result = await this.knowledgeService.listKnowledgeSources(\n [\n KnowledgeSourceConfigType.KNOWLEDGE_SOURCE_CONFIG_TYPE_CUSTOM_DATA,\n KnowledgeSourceConfigType.KNOWLEDGE_SOURCE_CONFIG_TYPE_WEBSITE_SCRAPE,\n ],\n { pageSize: 100 },\n );\n const knowledgeSources = result.knowledgeSources || [];\n if (this.showBusinessProfileSource()) {\n // manually insert business profile source because it may not exist yet\n const businessProfileSource = this.knowledgeService.buildBusinessProfileKnowledgeSource();\n if (businessProfileSource) {\n knowledgeSources.unshift(businessProfileSource);\n }\n }\n this.knowledgeSources.set(knowledgeSources);\n this.isLoading.set(false);\n }\n\n async addNewKnowledgeSource(): Promise {\n const conf: MatDialogConfig = {\n width: this.DIALOG_WIDTH,\n };\n\n const isSmallScreen = this.bpObserver.isMatched(Breakpoints.XSmall);\n if (isSmallScreen) {\n conf.maxWidth = '100vw';\n conf.maxHeight = '100vh';\n }\n const editor = this.dialog.open(AddKnowledgeComponent, conf);\n editor.componentInstance.componentSelected\n .pipe(takeUntilDestroyed(editor.componentInstance.destroyRef), take(1))\n .subscribe((event) => {\n this.subscribeToKnowledgeCreated(event.knowledgeCreated, event.destroyRef);\n });\n await firstValueFrom(editor.afterClosed());\n }\n\n private subscribeToKnowledgeCreated(event: EventEmitter, destroyRef: DestroyRef): void {\n event\n .pipe(\n takeUntilDestroyed(destroyRef),\n take(1),\n switchMap(() => this.refreshSources()),\n )\n .subscribe();\n }\n async editKnowledgeSource(source: KnowledgeSource, option?: string): Promise {\n const conf: MatDialogConfig = {\n width: this.DIALOG_WIDTH,\n data: {\n knowledgeSourceKey: { knowledgeSourceId: source?.id, namespace: source?.namespace },\n config: source?.config,\n stepOption: option,\n },\n };\n\n const isSmallScreen = this.bpObserver.isMatched(Breakpoints.XSmall);\n if (isSmallScreen) {\n conf.maxWidth = '100vw';\n conf.maxHeight = '100vh';\n }\n\n let editor: MatDialogRef;\n if (source.config?.websiteScrapeConfig) {\n editor = this.dialog.open(WebsiteScrapeComponent, conf);\n } else if (source.config?.customDataConfig) {\n editor = this.dialog.open(CustomDataComponent, conf);\n } else {\n editor = this.dialog.open(BusinessProfileComponent, conf);\n }\n this.setEditSourceQueryParam(source?.id, option);\n editor.componentInstance.stepChange\n .pipe(\n takeUntilDestroyed(editor.componentInstance.destroyRef),\n map((stepOption) => this.setEditSourceQueryParam(source?.id, stepOption)),\n )\n .subscribe();\n\n const navigatingAway = await firstValueFrom(editor.afterClosed());\n if (!navigatingAway) {\n this.setEditSourceQueryParam(null);\n await this.refreshSources();\n }\n }\n\n async deleteKnowledgeSource(source: KnowledgeSource): Promise {\n const result = await firstValueFrom(\n this.dialog\n .open(DeleteCustomKnowledgeComponent, {\n width: this.DIALOG_WIDTH,\n data: { knowledgeSourceId: source.id },\n })\n .afterClosed(),\n );\n if (result) {\n await this.refreshSources();\n }\n }\n\n setEditSourceQueryParam(editSource: string | null, option?: string): void {\n if (option) {\n editSource = editSource + ':' + option;\n }\n const queryParams = { editSource: editSource };\n this.router.navigate([], {\n relativeTo: this.activeRoute,\n queryParams,\n queryParamsHandling: 'merge',\n });\n }\n}\n","\n \n \n \n \n {{ 'AI_KNOWLEDGE_BASE' | translate }}\n \n\n \n
\n \n \n {{ 'MANAGE_KNOWLEDGE' | translate }}\n \n \n
\n {{ 'MANAGE_KNOWLEDGE_DESCRIPTION' | translate }}\n \n \n\n
\n \n
\n
\n
\n
\n
\n
\n
\n","export * from './ai-knowledge.module';\nexport * from './ai-knowledge.service';\nexport * from './interface/config.interface';\nexport * from './application-knowledge-control/application-knowledge.component';\nexport * from './knowledge-source-management/knowledge-source-management.component';\nexport * from './tokens';\n","export * from './lib/index';\n","import { Component, HostBinding, Input } from '@angular/core';\nimport { ComponentWithSizesComponent } from '@vendasta/galaxy/utility/component-with-sizes';\n\n@Component({\n selector: 'glxy-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss'],\n standalone: false,\n})\nexport class ProgressBarComponent extends ComponentWithSizesComponent {\n // Progress is a number from 0-100 indicating the progress as a percentage\n @Input() progress = 0;\n\n // Color scheme ('primary', 'warn', 'error', 'success')\n @Input() color = 'primary';\n\n // Indicates that the progress data has not yet been loaded\n @Input() isLoading = false;\n\n @HostBinding('style.height.px')\n get padding(): number {\n switch (this.size) {\n case 'large':\n return 16;\n case 'small':\n return 8;\n default:\n return 12;\n }\n }\n}\n","\n
\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ProgressBarComponent } from './progress-bar.component';\nexport { ProgressBarComponent };\n\nexport const MODULE_IMPORTS = [CommonModule];\n\nexport const MODULE_DECLARATIONS = [ProgressBarComponent];\n\n@NgModule({\n imports: MODULE_IMPORTS,\n declarations: MODULE_DECLARATIONS,\n exports: [ProgressBarComponent],\n})\nexport class GalaxyProgressBarModule {}\n","export * from './src/progress-bar.module';\n","// Export things like public API, and interfaces from here.\nexport * from './public_api';\n","export * from './interfaces/ai-assistant.interface';\nexport * from './services/ai-assistant.service';\nexport * from './ai-assistant.constants';\nexport * from './ai-assistant.module';\n","{\n \"AI_ASSISTANT\": {\n \"SHARED\": {\n \"STATUS\": {\n \"ACTIVE\": \"Active\",\n \"INACTIVE\": \"Inactive\"\n },\n \"COMING_SOON\": \"Coming soon\",\n \"BETA\": \"BETA\",\n \"SAVE\": \"Save\",\n \"CANCEL\": \"Cancel\",\n \"CLOSE\": \"Close\",\n \"UPGRADE\": \"Upgrade to gain access\",\n \"UNSAVED_CHANGES\": {\n \"TITLE\": \"Unsaved changes\",\n \"MESSAGE\": \"Are you sure you want to leave? You will lose any unsaved changes.\",\n \"CONFIRM\": \"Discard changes\"\n }\n },\n \"WORKFORCE\": {\n \"TITLE\": \"AI Workforce\",\n \"CONFIGURE_BUTTON\": \"Configure\",\n \"TRY_IT\": \"Try it\",\n \"CREATE_WITH_AI\": \"Create with AI\",\n \"RESPOND_WITH_AI\": \"Respond with AI\",\n \"CHANNEL\": {\n \"ACTIVE\": \"active\",\n \"NOT_YET_ACTIVE\": \"not active\"\n },\n \"DEFAULT_ASSISTANTS\": {\n \"AUTOMATED_ASSISTANT\": {\n \"TITLE\": \"Automated assistant\",\n \"SUBTITLE\": \"Chat receptionist\",\n \"DESCRIPTION\": \"Provides a fast, helpful response to anyone messaging your business. Answers questions, promotes your products and services, and captures contact info for your team to follow up.\"\n },\n \"CHAT_RECEPTIONIST\": {\n \"TITLE\": \"Chat receptionist\",\n \"SUBTITLE\": \"\",\n \"DESCRIPTION\": \"Provides a fast, helpful response to anyone messaging your business. Answers questions, promotes your products and services, and captures contact info for your team to follow up.\"\n },\n \"VOICE_RECEPTIONIST\": {\n \"TITLE\": \"Voice receptionist\",\n \"SUBTITLE\": \"\",\n \"DESCRIPTION\": \"Answers calls to your business with a professional, friendly voice. Handles inquiries, promotes your products and services, and captures new leads—24/7.\",\n \"TRY_IT_TITLE\": \"Try the voice receptionist\",\n \"TRY_IT_INSTRUCTIONS\": \"Enable the voice receptionist and call your number, {{phoneNumber}}.\",\n \"ERRORS\": {\n \"PHONE_NUMBER\": \"Error fetching phone number\",\n \"ASSISTANT_CONNECTIONS\": \"Error fetching assistant connections\"\n },\n \"STATUS\": {\n \"PROVISIONING\": {\n \"TITLE\": \"Provisioning\",\n \"MESSAGE\": \"Your voice receptionist is being provisioned and will be ready in a few minutes.\"\n },\n \"INACTIVE\": {\n \"TITLE\": \"Inactive\",\n \"MESSAGE\": \"Your voice receptionist is inactive and will not answer calls.\"\n },\n \"UNAVAILABLE\": {\n \"TITLE\": \"Unavailable\",\n \"MESSAGE\": \"Your voice receptionist is unavailable.\"\n }\n },\n \"MINUTES_USED\": \"{{ used }}/{{ limit }} minutes used\",\n \"USAGE_PROGRESS\": \"{{ startDay }} to {{ endDay }}\"\n },\n \"CONTENT_CREATOR\": {\n \"TITLE\": \"Content creator\",\n \"SUBTITLE\": \"\",\n \"DESCRIPTION\": \"Creates content for your website blog, and social media platforms. Can help you draft, schedule and post content that drives awareness of your brand and engagement with current and future customers.\"\n },\n \"REVIEW_MANAGER\": {\n \"TITLE\": \"Review manager\",\n \"SUBTITLE\": \"\",\n \"DESCRIPTION\": \"Crafts a thoughtful response to reviews to manage your online reputation. Provides smart suggestions to get more positive reviews and handle negative ones.\"\n },\n \"SEO_ANALYST\": {\n \"TITLE\": \"SEO analyst\",\n \"SUBTITLE\": \"Coming soon\",\n \"DESCRIPTION\": \"Analyzes your keywords and suggests improvements to optimize traffic from search engines and ads.\"\n },\n \"SALES_COACH\": {\n \"TITLE\": \"Sales coach\",\n \"SUBTITLE\": \"Coming soon\",\n \"DESCRIPTION\": \"Analyzes your recorded sales calls to highlight keywords and areas for improvement, helping you hone your skills and close deals more effectively.\"\n }\n }\n },\n \"GOALS\": {\n \"CONFIGURE_GOAL\": {\n \"TITLE\": \"Configure capability\",\n \"NAME\": \"Name\",\n \"DESCRIPTION\": \"Description\",\n \"TYPE\": \"Type\",\n \"SUPPORTED_CHANNELS\": \"Supported channels\",\n \"CHANNELS\": {\n \"ALL_CHANNELS\": \"All channels\",\n \"PLATFORM_CHAT\": \"Platform chat\",\n \"WEB_CHAT\": \"Web chat\",\n \"SMS\": \"SMS\",\n \"EMAIL\": \"Email\",\n \"VOICE\": \"Voice\",\n \"FACEBOOK\": \"Facebook\",\n \"INSTAGRAM\": \"Instagram\",\n \"WHATSAPP\": \"WhatsApp\"\n },\n \"PROMPT\": \"Prompt\",\n \"FUNCTIONS\": \"Functions\",\n \"ADD_FUNCTION\": \"+ Add a function\",\n \"SAVE_ERROR\": \"Error saving capability\",\n \"SAVE_SUCCESS\": \"Capability saved successfully\",\n \"FORM_INVALID\": \"Please fill out all required fields\"\n }\n },\n \"SETTINGS\": {\n \"SETUP\": \"Setup\",\n \"SETUP_CONNECTIONS\": \"Setup {{ connectionName }}\",\n \"SETTINGS\": \"Settings\",\n \"TITLE\": \"Configure {{assistantName}}\",\n \"APPEARANCE\": \"Appearance\",\n \"APPEARANCE_DESCRIPTION\": \"How your AI's name and avatar appear in Web Chat and SMS\",\n \"GOALS_INSTRUCTIONS\": \"Goals and instructions\",\n \"KNOWLEDGE_SOURCES\": \"Knowledge sources\",\n \"KNOWLEDGE_SOURCES_DESCRIPTION\": \"Choose what information the AI assistant can reference when responding\",\n \"LEARN_MORE\": \"Learn more\",\n \"SOMETHING_WENT_WRONG\": \"Something went wrong.\",\n \"ASSISTANT_UPDATED\": \"Assistant updated successfully.\",\n \"ASSISTANT_UPDATE_ERROR\": \"Error updating Assistant.\",\n \"ASSISTANT_VALIDATION_ERROR\": \"Please correct the invalid fields before saving.\",\n \"ASSISTANT_TITLE\": \"AI assistant\",\n \"DEFAULT_ASSISTANT_NAME\": \"Chat Receptionist\",\n \"ASSISTANT_NAME\": \"Name\",\n \"ASSISTANT_NAME_TOOLTIP\": \"It’s recommended you include a title after the name that clearly indicates to your users that they are interacting with an AI, and not a human employee, to set proper expectations.\",\n \"ASSISTANT_AVATAR\": \"Avatar\",\n \"ASSISTANT_PRIMARY_GOAL\": \"Primary goal\",\n \"CUSTOM_CAPABILITIES\": \"Custom capabilities\",\n \"ASSISTANT_ADDITIONAL_INSTRUCTIONS\": \"Additional instructions\",\n \"ASSISTANT_ADDITIONAL_INSTRUCTIONS_DESCRIPTION\": \"Add any additional instructions for your AI assistant to follow.\",\n \"ASSISTANT_ADDITIONAL_INSTRUCTIONS_LIMIT_EXCEEDED\": \"Too many characters\",\n \"VOICE_BETA_BANNER_MESSAGE\": \"Voice AI is currently in beta preview. Currently calls limited to 5-minutes per call, and 300 minutes of calling per month. If you exceed this monthly limit, the feature will continue to work but might experience rate limits. In the future, you'll be able to see your monthly usage and have the option to pay per-minute for usage beyond the included minutes.\",\n \"CHANNELS\": {\n \"TITLE\": \"Channels\",\n \"SUBTITLE\": \"Choose which communication channels your AI assistant is assigned to.\",\n \"FETCH_ERROR\": \"Error fetching channels.\",\n \"FETCH_WIDGET_NAME_WARNING\": \"Unable to load widget names.\",\n \"WEB_CHAT\": \"Web Chat\",\n \"SMS\": \"SMS\",\n \"NO_CHANNELS_AVAILABLE\": \"No channels available. Upgrade to gain access.\"\n },\n \"ENABLE_LEAD_CAPTURE\": {\n \"DESCRIPTION\": \"Capture lead information\",\n \"INFORMATION\": \"The AI will prioritize getting a name and contact information, create a new contact, and let the user know someone on your team will follow up.\"\n },\n \"ENABLE_MEETING_BOOKING\": {\n \"LABEL\": \"Select calendar to book with:\",\n \"DESCRIPTION\": \"Book appointments\",\n \"INFORMATION\": \"The AI will assist in scheduling a meeting by finding a suitable time, confirming the details, and ensuring the appointment is added to the calendar.\",\n \"CREATE_NEW_CALENDAR\": \"Create new calendar\"\n },\n \"IMAGE_UPLOAD\": {\n \"CHANGE_APPEARANCE\": \"Change your AI assistant's appearance\",\n \"REMOVE_IMAGE\": \"Remove image\",\n \"HINT\": \"Pick an assistant profile picture.\",\n \"CHANGE\": \"Change\",\n \"REMOVE\": \"Remove\"\n },\n \"ENABLE_LEAD_CAPTURE_DIALOG\": {\n \"INFORMATION\": \"The AI has the mission of capturing a lead for your team to follow up and get a customer. It will ask for their name and phone number, or email address as a fallback.\",\n \"INFORMATION_2\": \"The moment a lead provides single piece of contact info – phone number or email, a new contact will be created in the CRM, along with their name, what URL the conversation was captured on, and any UTM fields present – which is great for attributing leads to certain ad campaigns.\",\n \"INFORMATION_3\": \"If you disable this option, the AI assistant will act more like a help agent and answer questions, but will not ask for contact information, nor tell the user anyone will follow up, and leads will not be captured in the CRM.\"\n },\n \"ADDITIONAL_INSTRUCTIONS_DIALOG\": {\n \"TITLE\": \"Additional instructions information\",\n \"INFORMATION_WARNING\": \"Warning:\",\n \"INFORMATION\": \"These instructions will affect the main instructions and conversational behavior of your AI assistant. Make sure to test your assistant thoroughly after making any changes, because this has the potential for unintended consequences for your AI assistant’s behavior. Use plain text or markdown format.\",\n \"EXAMPLE_HEADING\": \"Example instructions that you can use:\",\n \"EXAMPLE_1\": \"Link sharing: Describe when the AI assistant should direct someone to a link, like if they want to book a meeting or create a support ticket.\",\n \"EXAMPLE_2\": \"Ask additional qualifying questions, like if the user is within service area, or more details about their project.\",\n \"EXAMPLE_3\": \"Adjust the assistant’s tone and personality, to match your brand voice.\",\n \"EXAMPLE_4\": \"Localizations – for example, you could ask it to use British English instead of American English.\",\n \"EXAMPLE_5\": \"Adjust the conversation flow, like ask for both the phone number and email address, or ask for the email address first.\",\n \"EXAMPLE_6\": \"Ask for additional contact fields; these fields will be added to the contact if found within the conversation:\",\n \"FIELD_1\": \"First name\",\n \"FIELD_2\": \"Last name\",\n \"FIELD_3\": \"Phone number\",\n \"FIELD_4\": \"Email address\",\n \"FIELD_5\": \"Address\",\n \"FIELD_6\": \"City\",\n \"FIELD_7\": \"State/Province\",\n \"FIELD_8\": \"Zip/Postal code\",\n \"FIELD_9\": \"Country\",\n \"DO_NOT_WORK_HEADING\": \"Instructions that do not work yet:\",\n \"DO_NOT_WORK_DESCRIPTION\": \"You cannot make the AI assistant perform actions outside of the conversation. For example, you cannot say \\\"If a customer asks for [employee], then notify that user.\\\"\"\n },\n \"BUSINESS_PROFILE\": {\n \"BUSINESS_PROFILE\": \"Business Profile\",\n \"ALLOW_ACCESS\": \"Allow access to your business profile\",\n \"DESCRIPTION\": \"Answer questions about your business contact information, hours, products and services you offer.\",\n \"MANAGE_BUSINESS_PROFILE\": \"Manage business profile\",\n \"LEARN_MORE\": {\n \"TITLE\": \"Learn more\",\n \"WHAT_INFORMATION_QUESTION\": \"What information is made available to your AI assistant?\",\n \"WHAT_INFORMATION\": \"These fields are shared from your business profile:\",\n \"BUSINESS_NAME\": \"Business name\",\n \"ADDRESS_SERVICE_AREAS\": \"Address and/or service areas\",\n \"WEBSITE\": \"Website\",\n \"PHONE_NUMBER\": \"Phone number\",\n \"CATEGORIES\": \"Categories\",\n \"HOURS\": \"Hours\",\n \"SERVICES_OFFERED\": \"Services offered\",\n \"SHORT_DESCRIPTION\": \"Short description\",\n \"LONG_DESCRIPTION\": \"Long description\",\n \"SOCIAL_MEDIA_URLS\": \"Social media URLs\",\n \"BOOKING_URL\": \"Booking URL\"\n }\n },\n \"VOICE_CONFIG\": {\n \"VOICE_CONFIG\": \"Voice Configuration\",\n \"FAMILY\": \"Provider\",\n \"FAMILY_DESCRIPTION\": {\n \"ASTRA\": \"Multilingual, less expressive, slower speaking\",\n \"HORIZON\": \"Multilingual, very expressive\",\n \"ECHOES\": \"English-only, less expressive, slower response times\",\n \"GPT_RT_PREVIEW_SEPT_2024\": \"Multilingual, less expressive, slower speaking\",\n \"GPT_RT_PREVIEW_DEC_2024\": \"Multilingual, very expressive\",\n \"DEEPGRAM_AURA\": \"English-only, more accurate, less expressive, slower response times\"\n },\n \"VOICE\": \"Voice\",\n \"GENDER\": {\n \"MALE\": \"Male\",\n \"FEMALE\": \"Female\"\n },\n \"REGION\": {\n \"US\": \"US\",\n \"UK\": \"UK\",\n \"IRELAND\": \"Ireland\"\n },\n \"ADVANCED\": \"Advanced voice options\",\n \"TURN_DETECTION\": {\n \"THRESHOLD\": {\n \"LABEL\": \"Interruption threshold\",\n \"DESCRIPTION\": \"This threshold helps the AI tell the difference between background noise and a human speaking, with a higher value meaning the AI is less likely to be interrupted. Recommended range is 0.60 to 0.75\"\n },\n \"PREFIX_PADDING\": {\n \"LABEL\": \"Prefix padding\",\n \"DESCRIPTION\": \"Specifies the amount of audio (in milliseconds) to include before the detected start of speech. This ensures that the beginning of the speech isn't cut off.\"\n },\n \"SILENCE_DURATION\": {\n \"LABEL\": \"Silence duration\",\n \"DESCRIPTION\": \"Determines the length of silence (in milliseconds) that indicates the end of speech. Adjusting this helps in managing how quickly the AI responds after a user stops speaking.\"\n }\n }\n },\n \"CUSTOM_KNOWLEDGE\": {\n \"AI_KNOWLEDGE_BASE\": \"AI knowledge base\",\n \"MANAGE_KNOWLEDGE\": \"Manage knowledge\",\n \"MANAGE_KNOWLEDGE_DESCRIPTION\": \"Create and manage facts and information that can be added to AI assistants\",\n \"REFRESH_OPTIONS\": \"Refresh options\",\n \"ADD_KNOWLEDGE\": \"Add knowledge\",\n \"SELECT_KNOWLEDGE\": \"Select knowledge\",\n \"CUSTOM_KNOWLEDGE\": \"Q&A\",\n \"DESCRIPTION\": \"Provide additional facts and answers to frequently asked questions your Chat Receptionist can use when responding to inquiries.\",\n \"MAX_CHARACTER_EXCEEDED\": \"Maximum character limit exceeded\",\n \"APPLICATION_SETTINGS\": \"Settings\",\n \"APPS_WARNING\": \"This knowledge is currently being used by the following:\",\n \"NO_APPS\": \"This knowledge is not currently being used.\",\n \"EDIT\": {\n \"TITLE\": \"Custom knowledge\",\n \"NAME\": \"Name\",\n \"CONTENT\": \"Content\"\n },\n \"DELETE\": {\n \"TITLE\": \"Delete custom knowledge?\"\n }\n },\n \"CONNECTIONS\": {\n \"WEBCHAT_CREATING\": \"Webchat being created. Please check back in a minute.\",\n \"TRY_MY_LISTING\": \"Enable and Try\"\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport En from './en_devel.json';\n\n@NgModule({\n imports: [\n TranslateModule,\n LexiconModule.forChild({\n componentName: 'common/ai-assistant',\n baseTranslation: En,\n }),\n ],\n exports: [TranslateModule],\n})\nexport class AiAssistantI18nModule {}\n","import * as i0 from '@angular/core';\nimport { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar CallType = /*#__PURE__*/function (CallType) {\n CallType[CallType[\"CALL_TYPE_INVALID\"] = 0] = \"CALL_TYPE_INVALID\";\n CallType[CallType[\"CALL_TYPE_INBOUND\"] = 1] = \"CALL_TYPE_INBOUND\";\n CallType[CallType[\"CALL_TYPE_OUTBOUND\"] = 2] = \"CALL_TYPE_OUTBOUND\";\n return CallType;\n}(CallType || {});\nvar Participant = /*#__PURE__*/function (Participant) {\n Participant[Participant[\"PARTICIPANT_INVALID\"] = 0] = \"PARTICIPANT_INVALID\";\n Participant[Participant[\"PARTICIPANT_FROM\"] = 1] = \"PARTICIPANT_FROM\";\n Participant[Participant[\"PARTICIPANT_TO\"] = 2] = \"PARTICIPANT_TO\";\n return Participant;\n}(Participant || {});\nvar VendorModel = /*#__PURE__*/function (VendorModel) {\n VendorModel[VendorModel[\"VENDOR_MODEL_UNSPECIFIED\"] = 0] = \"VENDOR_MODEL_UNSPECIFIED\";\n VendorModel[VendorModel[\"VENDOR_MODEL_OPEN_AI_REALTIME\"] = 1] = \"VENDOR_MODEL_OPEN_AI_REALTIME\";\n return VendorModel;\n}(VendorModel || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass NamespaceAccountGroupNamespace {\n static fromProto(proto) {\n let m = new NamespaceAccountGroupNamespace();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass Namespace {\n static fromProto(proto) {\n let m = new Namespace();\n m = Object.assign(m, proto);\n if (proto.accountGroupNamespace) {\n m.accountGroupNamespace = NamespaceAccountGroupNamespace.fromProto(proto.accountGroupNamespace);\n }\n if (proto.partnerNamespace) {\n m.partnerNamespace = NamespacePartnerNamespace.fromProto(proto.partnerNamespace);\n }\n if (proto.systemNamespace) {\n m.systemNamespace = NamespaceSystemNamespace.fromProto(proto.systemNamespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupNamespace !== 'undefined' && this.accountGroupNamespace !== null) {\n toReturn['accountGroupNamespace'] = 'toApiJson' in this.accountGroupNamespace ? this.accountGroupNamespace.toApiJson() : this.accountGroupNamespace;\n }\n if (typeof this.partnerNamespace !== 'undefined' && this.partnerNamespace !== null) {\n toReturn['partnerNamespace'] = 'toApiJson' in this.partnerNamespace ? this.partnerNamespace.toApiJson() : this.partnerNamespace;\n }\n if (typeof this.systemNamespace !== 'undefined' && this.systemNamespace !== null) {\n toReturn['systemNamespace'] = 'toApiJson' in this.systemNamespace ? this.systemNamespace.toApiJson() : this.systemNamespace;\n }\n return toReturn;\n }\n}\nclass NamespacePartnerNamespace {\n static fromProto(proto) {\n let m = new NamespacePartnerNamespace();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass NamespaceSystemNamespace {\n static fromProto(proto) {\n let m = new NamespaceSystemNamespace();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CallRecord {\n static fromProto(proto) {\n let m = new CallRecord();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n if (proto.transcript) {\n m.transcript = proto.transcript.map(TranscriptMessage.fromProto);\n }\n if (proto.callType) {\n m.callType = enumStringToValue$1(CallType, proto.callType);\n }\n if (proto.callDuration) {\n m.callDuration = parseInt(proto.callDuration, 10);\n }\n if (proto.metadata) {\n m.metadata = Metadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n if (typeof this.transcript !== 'undefined' && this.transcript !== null) {\n toReturn['transcript'] = 'toApiJson' in this.transcript ? this.transcript.toApiJson() : this.transcript;\n }\n if (typeof this.audioRecordingUrl !== 'undefined') {\n toReturn['audioRecordingUrl'] = this.audioRecordingUrl;\n }\n if (typeof this.callType !== 'undefined') {\n toReturn['callType'] = this.callType;\n }\n if (typeof this.fromPhoneNumber !== 'undefined') {\n toReturn['fromPhoneNumber'] = this.fromPhoneNumber;\n }\n if (typeof this.toPhoneNumber !== 'undefined') {\n toReturn['toPhoneNumber'] = this.toPhoneNumber;\n }\n if (typeof this.callDuration !== 'undefined') {\n toReturn['callDuration'] = this.callDuration;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass Metadata {\n static fromProto(proto) {\n let m = new Metadata();\n m = Object.assign(m, proto);\n if (proto.voiceConfig) {\n m.voiceConfig = VoiceConfig.fromProto(proto.voiceConfig);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.voiceConfig !== 'undefined' && this.voiceConfig !== null) {\n toReturn['voiceConfig'] = 'toApiJson' in this.voiceConfig ? this.voiceConfig.toApiJson() : this.voiceConfig;\n }\n if (typeof this.assistantId !== 'undefined') {\n toReturn['assistantId'] = this.assistantId;\n }\n return toReturn;\n }\n}\nclass OpenAIRealtimeConfig {\n static fromProto(proto) {\n let m = new OpenAIRealtimeConfig();\n m = Object.assign(m, proto);\n if (proto.turnDetection) {\n m.turnDetection = OpenAIRealtimeConfigTurnDetection.fromProto(proto.turnDetection);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.voice !== 'undefined') {\n toReturn['voice'] = this.voice;\n }\n if (typeof this.turnDetection !== 'undefined' && this.turnDetection !== null) {\n toReturn['turnDetection'] = 'toApiJson' in this.turnDetection ? this.turnDetection.toApiJson() : this.turnDetection;\n }\n return toReturn;\n }\n}\nclass TranscriptMessage {\n static fromProto(proto) {\n let m = new TranscriptMessage();\n m = Object.assign(m, proto);\n if (proto.participant) {\n m.participant = enumStringToValue$1(Participant, proto.participant);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n if (typeof this.itemId !== 'undefined') {\n toReturn['itemId'] = this.itemId;\n }\n if (typeof this.participant !== 'undefined') {\n toReturn['participant'] = this.participant;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n return toReturn;\n }\n}\nclass OpenAIRealtimeConfigTurnDetection {\n static fromProto(proto) {\n let m = new OpenAIRealtimeConfigTurnDetection();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.threshold !== 'undefined') {\n toReturn['threshold'] = this.threshold;\n }\n if (typeof this.prefixPadding !== 'undefined') {\n toReturn['prefixPadding'] = this.prefixPadding;\n }\n if (typeof this.silenceDuration !== 'undefined') {\n toReturn['silenceDuration'] = this.silenceDuration;\n }\n return toReturn;\n }\n}\nclass VoiceConfig {\n static fromProto(proto) {\n let m = new VoiceConfig();\n m = Object.assign(m, proto);\n if (proto.vendorModel) {\n m.vendorModel = enumStringToValue$1(VendorModel, proto.vendorModel);\n }\n if (proto.openaiRealtimeConfig) {\n m.openaiRealtimeConfig = OpenAIRealtimeConfig.fromProto(proto.openaiRealtimeConfig);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.vendorModel !== 'undefined') {\n toReturn['vendorModel'] = this.vendorModel;\n }\n if (typeof this.openaiRealtimeConfig !== 'undefined' && this.openaiRealtimeConfig !== null) {\n toReturn['openaiRealtimeConfig'] = 'toApiJson' in this.openaiRealtimeConfig ? this.openaiRealtimeConfig.toApiJson() : this.openaiRealtimeConfig;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass GetCallRecordRequest {\n static fromProto(proto) {\n let m = new GetCallRecordRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass GetCallRecordResponse {\n static fromProto(proto) {\n let m = new GetCallRecordResponse();\n m = Object.assign(m, proto);\n if (proto.callRecord) {\n m.callRecord = CallRecord.fromProto(proto.callRecord);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.callRecord !== 'undefined' && this.callRecord !== null) {\n toReturn['callRecord'] = 'toApiJson' in this.callRecord ? this.callRecord.toApiJson() : this.callRecord;\n }\n return toReturn;\n }\n}\nclass GetCallUsageRequest {\n static fromProto(proto) {\n let m = new GetCallUsageRequest();\n m = Object.assign(m, proto);\n if (proto.namespace) {\n m.namespace = Namespace.fromProto(proto.namespace);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined' && this.namespace !== null) {\n toReturn['namespace'] = 'toApiJson' in this.namespace ? this.namespace.toApiJson() : this.namespace;\n }\n return toReturn;\n }\n}\nclass GetCallUsageResponse {\n static fromProto(proto) {\n let m = new GetCallUsageResponse();\n m = Object.assign(m, proto);\n if (proto.startTime) {\n m.startTime = new Date(proto.startTime);\n }\n if (proto.endTime) {\n m.endTime = new Date(proto.endTime);\n }\n if (proto.totalDuration) {\n m.totalDuration = parseInt(proto.totalDuration, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.startTime !== 'undefined' && this.startTime !== null) {\n toReturn['startTime'] = 'toApiJson' in this.startTime ? this.startTime.toApiJson() : this.startTime;\n }\n if (typeof this.endTime !== 'undefined' && this.endTime !== null) {\n toReturn['endTime'] = 'toApiJson' in this.endTime ? this.endTime.toApiJson() : this.endTime;\n }\n if (typeof this.totalDuration !== 'undefined') {\n toReturn['totalDuration'] = this.totalDuration;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'voice-api.vendasta-local.com',\n 'test': '',\n 'demo': 'voice-demo.apigateway.co',\n 'prod': 'voice-prod.apigateway.co',\n 'production': 'voice-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet VoiceApiService = /*#__PURE__*/(() => {\n class VoiceApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getCallRecord(r) {\n const request = r.toApiJson ? r : new GetCallRecordRequest(r);\n return this.http.post(this._host + \"/voice.v1alpha1.VoiceService/GetCallRecord\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetCallRecordResponse.fromProto(resp)));\n }\n getCallUsage(r) {\n const request = r.toApiJson ? r : new GetCallUsageRequest(r);\n return this.http.post(this._host + \"/voice.v1alpha1.VoiceService/GetCallUsage\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetCallUsageResponse.fromProto(resp)));\n }\n }\n VoiceApiService.ɵfac = function VoiceApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || VoiceApiService)();\n };\n VoiceApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: VoiceApiService,\n factory: VoiceApiService.ɵfac,\n providedIn: 'root'\n });\n return VoiceApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Access, CallRecord, CallType, GetCallRecordRequest, GetCallRecordResponse, GetCallUsageRequest, GetCallUsageResponse, HostService, Metadata, Namespace, NamespaceAccountGroupNamespace, NamespacePartnerNamespace, NamespaceSystemNamespace, OpenAIRealtimeConfig, OpenAIRealtimeConfigTurnDetection, Participant, TranscriptMessage, VendorModel, VoiceApiService, VoiceConfig };\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n DestroyRef,\n ElementRef,\n HostBinding,\n inject,\n input,\n OnInit,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { TranslateService } from '@ngx-translate/core';\nimport { GalaxyAiIconService } from '@vendasta/galaxy/ai-icon';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { interval, map, Subscription, takeWhile } from 'rxjs';\nimport { AiAssistantI18nModule } from '../../assets/i18n/ai-assistant-i18n.module';\nimport { AiAssistant } from '../../core/interfaces/ai-assistant.interface';\nimport { MatAnchor, MatButtonModule } from '@angular/material/button';\nimport { Router, RouterLink } from '@angular/router';\nimport { AiAssistantService } from '../../core/services/ai-assistant.service';\nimport { ASSISTANT_ID_VOICE_RECEPTIONIST, DEFAULT_AVATAR_SVG_ICON } from '../../core/ai-assistant.constants';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { SmsDetailsService } from '../../core/services/sms-details.service';\nimport { ACCOUNT_GROUP_ID_TOKEN } from '../../core/tokens';\nimport { VoiceApiService } from '@vendasta/voice';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'ai-assistant-card',\n imports: [\n CommonModule,\n GalaxyAvatarModule,\n AiAssistantI18nModule,\n MatAnchor,\n RouterLink,\n MatButtonModule,\n GalaxyBadgeModule,\n GalaxyTooltipModule,\n MatIcon,\n ],\n templateUrl: './ai-assistant-card.component.html',\n styleUrls: ['./ai-assistant-card.component.scss'],\n})\nexport class AiAssistantCardComponent implements OnInit {\n @HostBinding('class') class = 'ai-assistant';\n\n protected readonly translationService = inject(TranslateService);\n protected readonly aiIconService = inject(GalaxyAiIconService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly aiAssistantService = inject(AiAssistantService);\n private readonly voiceApiService = inject(VoiceApiService);\n private readonly accountGroupId = toSignal(inject(ACCOUNT_GROUP_ID_TOKEN));\n private readonly router = inject(Router);\n readonly aiAssistant = input.required();\n readonly showCTAButton = input(false);\n readonly isDisabled = input(false);\n readonly isComingSoon = input(false);\n readonly ctaClicked = output();\n protected readonly currentUrl = this.router?.url;\n readonly defaultAvatarIcon = DEFAULT_AVATAR_SVG_ICON;\n\n aiAssistantConfigUrl = computed(() => {\n return this.aiAssistantService.buildAssistantConfigurationUrl(\n this.accountGroupId() ?? '',\n this.aiAssistant().assistant.id ?? '',\n );\n });\n\n private gradientBorderMask = viewChild.required('gradientBorderMask');\n\n protected readonly gradientColor = signal('');\n protected readonly gradient = signal('');\n\n private animationSubscription?: Subscription;\n\n protected readonly isVoiceReceptionistCard = computed(() => {\n return this.aiAssistant().assistant.id === ASSISTANT_ID_VOICE_RECEPTIONIST;\n });\n\n // To avoid showing the same icon multiple times in the list of connection icons when multiple connections of the same type exist\n protected readonly uniqueConnections = computed(() => {\n const assistant = this.aiAssistant();\n if (!assistant.connections?.length) {\n return [];\n }\n\n return assistant.connections\n .filter(\n (connection, index, self) =>\n self.findIndex((c) => c.connection.connectionTypeName === connection.connection.connectionTypeName) === index,\n )\n .map((aiConnection) => ({\n ...aiConnection,\n isGreyscale: !aiConnection.connection.assistantKeys?.length,\n tooltip: aiConnection.connection.assistantKeys?.length\n ? 'AI_ASSISTANT.WORKFORCE.CHANNEL.ACTIVE'\n : 'AI_ASSISTANT.WORKFORCE.CHANNEL.NOT_YET_ACTIVE',\n }))\n .sort((a, b) => Number(a.isGreyscale) - Number(b.isGreyscale));\n });\n\n protected stopReset() {\n this.animationSubscription?.unsubscribe();\n }\n\n private getMousePosition(event: MouseEvent): { x: number; y: number } {\n const rect = this.gradientBorderMask().nativeElement.getBoundingClientRect();\n const x = event.clientX - rect.left;\n const y = event.clientY - rect.top;\n return { x, y };\n }\n\n ngOnInit() {\n if (this.aiAssistant()) {\n this.initializeGradient();\n }\n }\n\n protected move(event: MouseEvent) {\n const { x, y } = this.getMousePosition(event);\n this.applyGradient(x, y);\n }\n\n protected leave(event: MouseEvent) {\n const { x: startX, y: startY } = this.getMousePosition(event);\n\n const duration = 1500;\n const frameRate = 60;\n const intervalMs = 1000 / frameRate;\n\n const startTime = performance.now();\n\n this.animationSubscription = interval(intervalMs)\n .pipe(\n map(() => {\n const elapsed = performance.now() - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const easedProgress = this.easeOutCubic(progress);\n return {\n x: startX * (1 - easedProgress),\n y: startY * (1 - easedProgress),\n };\n }),\n takeWhile(({ x, y }) => Math.floor(x) > 0 || Math.floor(y) > 0),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((coords) => {\n this.applyGradient(coords.x, coords.y);\n });\n }\n\n private easeOutCubic(t: number): number {\n return --t * t * t + 1;\n }\n\n private applyGradient(x: number, y: number) {\n this.gradient.set(\n `radial-gradient(circle at ${x}px ${y}px, ${this.aiAssistant().decoration?.gradientColor} 40%, transparent 60%)`,\n );\n }\n\n private initializeGradient() {\n if (this.aiAssistant()?.decoration) {\n this.gradientColor.set(this.aiAssistant().decoration?.gradientColor || '#fff');\n this.applyGradient(0, 0);\n }\n }\n\n protected readonly showConfigButton = computed(() => {\n return (\n (!this.aiAssistant().isDefault || this.aiAssistant().showConfigButtonOnDefault) &&\n this.aiAssistantService.$isAiAssistantEnabled() &&\n !this.aiAssistantService.$goalsDisabled()\n );\n });\n\n protected readonly phoneNumber$ = inject(SmsDetailsService).phoneNumber$;\n}\n","
\n
\n
\n
\n @if (aiAssistant().assistant.avatarUrl) {\n \n } @else {\n \n }\n
\n

{{ aiAssistant().assistant.name }}

\n @if (aiAssistant().subtitleKey) {\n

{{ aiAssistant().subtitleKey | translate }}

\n }\n
\n @if (isVoiceReceptionistCard()) {\n {{ 'AI_ASSISTANT.SHARED.BETA' | translate }}\n }\n
\n

\n {{ aiAssistant().descriptionKey | translate }}\n

\n @let aiConnections = uniqueConnections();\n @if (aiConnections?.length > 0) {\n
\n @for (aiConnection of aiConnections; track aiConnection) {\n @if (aiConnection.connection) {\n @if (aiConnection.connection.connectionType === 'WhatsApp') {\n \n } @else {\n \n \n }\n }\n }\n
\n }\n
\n @if (showCTAButton()) {\n \n }\n @if (isDisabled()) {\n {{ 'AI_ASSISTANT.SHARED.UPGRADE' | translate }}\n } @else if (isComingSoon()) {\n {{ 'AI_ASSISTANT.SHARED.COMING_SOON' | translate }}\n }\n @if (showConfigButton()) {\n \n {{ 'AI_ASSISTANT.WORKFORCE.CONFIGURE_BUTTON' | translate }}\n \n }\n
\n
\n
\n","import { Component, computed, inject } from '@angular/core';\nimport { MatDialogContent, MatDialogTitle } from '@angular/material/dialog';\nimport { CommonModule } from '@angular/common';\nimport { AiAssistantI18nModule } from '../../assets/i18n/ai-assistant-i18n.module';\nimport { AiAssistantService } from '../../core/services/ai-assistant.service';\nimport { ASSISTANT_ID_VOICE_RECEPTIONIST, ConnectionType } from '../../core';\nimport { catchError, map, of } from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { SmsDetailsService } from '../../core/services/sms-details.service';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\n\n@Component({\n selector: 'ai-voice-try-it-modal',\n imports: [\n MatDialogTitle,\n MatDialogContent,\n AiAssistantI18nModule,\n CommonModule,\n GalaxyLoadingSpinnerModule,\n GalaxyAlertModule,\n ],\n templateUrl: './ai-voice-try-it-modal.component.html',\n styleUrl: './ai-voice-try-it-modal.component.scss',\n})\nexport class AiVoiceTryItModalComponent {\n private readonly assistantService = inject(AiAssistantService);\n private readonly smsDetailsService = inject(SmsDetailsService);\n private readonly snackbarService = inject(SnackbarService);\n\n protected readonly phoneNumber = toSignal(\n this.smsDetailsService.phoneNumber$.pipe(\n catchError((err) => {\n if (err.status !== 404) {\n this.snackbarService.openErrorSnack('Error getting phone number');\n }\n return of('');\n }),\n ),\n );\n // Is the feature flag for voice ai enabled?\n protected readonly isVoiceAiFeatureEnabled = this.assistantService.$isVoiceAiEnabled;\n // Is the phone number set to direct calls to the voice ai?\n protected readonly isRoutingCallsToVoiceAi = toSignal(\n this.smsDetailsService.isRoutingToVoiceAi$.pipe(\n catchError((err) => {\n if (err.status !== 404) {\n this.snackbarService.openErrorSnack(\n 'AI_ASSISTANT.WORKFORCE.DEFAULT_ASSISTANTS.VOICE_RECEPTIONIST.ERRORS.ASSISTANT_CONNECTIONS',\n );\n }\n return of(false);\n }),\n ),\n );\n // Is the voice ai assistant active on the phone channel?\n protected readonly isVoiceAssistantActive = toSignal(\n this.assistantService.activeConnectionsForAssistant(ASSISTANT_ID_VOICE_RECEPTIONIST).pipe(\n map((aiConnections) =>\n aiConnections.some((aiConnection) => aiConnection.connection.connectionType === ConnectionType.Voice),\n ),\n catchError((err) => {\n if (err.status !== 404) {\n this.snackbarService.openErrorSnack(\n 'AI_ASSISTANT.WORKFORCE.DEFAULT_ASSISTANTS.VOICE_RECEPTIONIST.ERRORS.PHONE_NUMBER',\n );\n }\n return of(false);\n }),\n ),\n );\n // The final determined status of the voice assistant\n protected readonly assistantStatus = computed(() => {\n if (this.isLoading()) {\n return undefined;\n }\n\n if (!this.isVoiceAiFeatureEnabled()) {\n return 'Unavailable';\n }\n\n if (!this.isVoiceAssistantActive() && !this.isRoutingCallsToVoiceAi()) {\n return 'Inactive';\n }\n\n // If there is a mismatch between the assistant being active on the phone channel, and the phone config routing to the AI, then\n // we consider it to be in a provisioning state.\n if (this.isVoiceAssistantActive() !== this.isRoutingCallsToVoiceAi()) {\n return 'Provisioning';\n }\n\n return 'Active';\n });\n\n // Whether we're still waiting for the signals to resolve\n protected readonly isLoading = computed(() =>\n [\n this.isVoiceAiFeatureEnabled(),\n this.isVoiceAssistantActive(),\n this.isRoutingCallsToVoiceAi(),\n this.phoneNumber(),\n ].includes(undefined),\n );\n\n protected readonly alertType = computed(() => {\n switch (this.assistantStatus()) {\n case 'Active':\n return 'success';\n case 'Provisioning':\n return 'warning';\n case 'Inactive':\n return 'tip';\n case 'Unavailable':\n return 'tip';\n default:\n return 'tip';\n }\n });\n\n protected readonly alertTitle = computed(() => {\n return `AI_ASSISTANT.WORKFORCE.DEFAULT_ASSISTANTS.VOICE_RECEPTIONIST.STATUS.${(this.assistantStatus() || 'Unavailable').toUpperCase()}.TITLE`;\n });\n\n protected readonly alertMessage = computed(() => {\n return `AI_ASSISTANT.WORKFORCE.DEFAULT_ASSISTANTS.VOICE_RECEPTIONIST.STATUS.${(this.assistantStatus() || 'Unavailable').toUpperCase()}.MESSAGE`;\n });\n}\n","@if (isLoading() === false) {\n @let status = assistantStatus();\n

\n {{ 'AI_ASSISTANT.WORKFORCE.DEFAULT_ASSISTANTS.VOICE_RECEPTIONIST.TRY_IT_TITLE' | translate }}\n

\n \n @if (status !== 'Active') {\n \n {{ alertMessage() | translate }}\n \n } @else {\n \n }\n \n} @else {\n \n \n \n}\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AiAssistant, AiAssistantService, ASSISTANT_ID_VOICE_RECEPTIONIST } from '../../core';\nimport { AiAssistantCardComponent } from '../ai-assistant-card/ai-assistant-card.component';\nimport { catchError, combineLatest, map, merge, Observable, of, switchMap } from 'rxjs';\nimport { convertAssistantTypeToDefaultID } from '../../core/services/ai-assistant-utils';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { AssistantType } from '@vendasta/ai-assistants';\nimport { SmsDetailsService } from '../../core/services/sms-details.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ACCOUNT_GROUP_ID_TOKEN, AI_DEFAULT_WORKFORCE_TOKEN, PARTNER_ID_TOKEN } from '../../core/tokens';\nimport { AiAssistantI18nModule } from '../../assets/i18n/ai-assistant-i18n.module';\nimport { isNotNullOrUndefined } from '@vendasta/rx-utils';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { AiVoiceTryItModalComponent } from '../ai-voice-try-it-modal/ai-voice-try-it-modal.component';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'ai-assistant-page',\n imports: [\n CommonModule,\n GalaxyPageModule,\n AiAssistantCardComponent,\n AiAssistantI18nModule,\n GalaxyLoadingSpinnerModule,\n ],\n templateUrl: './ai-assistant-page.component.html',\n styleUrl: './ai-assistant-page.component.scss',\n})\nexport class AiAssistantPageComponent {\n protected readonly aiAssistantService = inject(AiAssistantService);\n protected readonly translateService = inject(TranslateService);\n private readonly partnerId$ = inject(PARTNER_ID_TOKEN);\n private readonly accountGroupId$ = inject(ACCOUNT_GROUP_ID_TOKEN);\n private readonly defaultWorkforce$ = inject(AI_DEFAULT_WORKFORCE_TOKEN);\n private matDialog = inject(MatDialog);\n private readonly router = inject(Router);\n smsDetailsService = inject(SmsDetailsService);\n private readonly phoneNumber$ = this.smsDetailsService.phoneNumber$;\n private readonly isVoiceAiEnabled$ = toObservable(this.aiAssistantService.$isVoiceAiEnabled);\n\n private readonly aiWorkforce$ = this.getAiWorkforce();\n\n private readonly fetching$ = merge(\n combineLatest([this.partnerId$, this.accountGroupId$]).pipe(map(() => true)),\n this.aiWorkforce$.pipe(map(() => false)),\n );\n\n protected readonly $fetching = toSignal(this.fetching$, {\n requireSync: true,\n });\n\n protected readonly aiWorkforce = toSignal(this.aiWorkforce$);\n\n private getAiWorkforce(): Observable {\n return combineLatest([this.partnerId$, this.accountGroupId$, this.isVoiceAiEnabled$, this.defaultWorkforce$]).pipe(\n switchMap(([partnerId, accountGroupId, isVoiceAiEnabled, defaultWorkforce]) => {\n return this.aiAssistantService.listAssistants(partnerId, accountGroupId).pipe(\n map((assistantRes) => {\n let assistants =\n assistantRes\n ?.map((assistant) =>\n this.aiAssistantService.hydrateAssistantWithDefaultInfo(assistant, defaultWorkforce),\n )\n ?.filter(isNotNullOrUndefined) ?? [];\n\n // Add default assistants if they are not already in the list of assistants allocated for this account\n defaultWorkforce.forEach((defaultAssistant) => {\n if (\n !assistants.find((assistant) => {\n return (\n convertAssistantTypeToDefaultID(\n assistant.assistant.type ?? AssistantType.ASSISTANT_TYPE_UNSPECIFIED,\n ) === defaultAssistant.assistant.id\n );\n })\n ) {\n // Ensure we're not updating the default assistant by cloning it before\n const defaultAssistantCopy = structuredClone(defaultAssistant);\n\n defaultAssistantCopy.assistant.name = this.translateService.instant(\n defaultAssistantCopy.assistant.name ?? '',\n );\n assistants.push(defaultAssistantCopy);\n }\n });\n\n if (!isVoiceAiEnabled) {\n assistants = assistants.filter((assistant) => {\n return assistant.assistant.id !== ASSISTANT_ID_VOICE_RECEPTIONIST;\n });\n } else {\n // Hydrate the voice assistant with the try it modal action\n const voiceAssistant = assistants.find(\n (assistant) => assistant.assistant.id === ASSISTANT_ID_VOICE_RECEPTIONIST,\n );\n if (voiceAssistant?.cta) {\n voiceAssistant.cta.action = {\n showButton: true,\n callback: this.openVoiceReceptionistTryItModal.bind(this),\n };\n }\n }\n\n return assistants;\n }),\n switchMap((assistants) => {\n const connections$ = this.aiAssistantService.listConnections(partnerId, accountGroupId, true);\n return connections$.pipe(\n map((aiConnections) => {\n return assistants.map((assistant) => {\n assistant.connections = aiConnections.filter((aiConnection) => {\n return (\n assistant.assistant.type !== undefined &&\n aiConnection.connection.supportedAssistantTypes?.includes(assistant.assistant.type)\n );\n });\n return assistant;\n });\n }),\n );\n }),\n catchError((e) => {\n console.error('error getting AI workforce', e);\n return of([]);\n }),\n );\n }),\n );\n }\n\n protected async openVoiceReceptionistTryItModal(): Promise {\n this.matDialog.open(AiVoiceTryItModalComponent);\n }\n\n protected triggerAction(aiAssistant: AiAssistant): void {\n if (aiAssistant) {\n this.buildAssistantActionCallback(aiAssistant)?.();\n }\n }\n\n protected buildAssistantActionCallback(aiAssistant: AiAssistant): (() => void) | undefined {\n if (!aiAssistant?.cta || !aiAssistant?.cta.action?.showButton) {\n return undefined;\n }\n\n const action = aiAssistant?.cta?.action;\n if (action?.url) {\n return () => window.open(action.url, '_blank');\n }\n\n if (action?.pathCommands) {\n return () => this.router.navigate(action.pathCommands);\n }\n\n if (action?.callback) {\n return action.callback;\n }\n return undefined;\n }\n}\n","\n \n {{ 'AI_ASSISTANT.WORKFORCE.TITLE' | translate }}\n \n \n @if ($fetching()) {\n
\n \n
\n } @else {\n
\n @for (aiAssistant of aiWorkforce(); track aiAssistant) {\n \n \n }\n
\n }\n
\n
\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, ElementRef, inject, input } from '@angular/core';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { Router, RouterLink } from '@angular/router';\nimport { AiAssistantService } from '../../core/services/ai-assistant.service';\nimport { AiAssistantI18nModule } from '../../assets/i18n/ai-assistant-i18n.module';\nimport { Assistant } from '@vendasta/ai-assistants';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ACCOUNT_GROUP_ID_TOKEN } from '../../core/tokens';\n\n@Component({\n selector: 'ai-assistant-reference-card',\n imports: [CommonModule, GalaxyAvatarModule, RouterLink, MatButtonModule, AiAssistantI18nModule],\n templateUrl: './ai-assistant-reference-card.component.html',\n styleUrl: './ai-assistant-reference-card.component.scss',\n})\nexport class AiAssistantReferenceCardComponent {\n readonly assistant = input.required();\n readonly accountGroupId = toSignal(inject(ACCOUNT_GROUP_ID_TOKEN));\n\n private readonly aiAssistantService = inject(AiAssistantService);\n private readonly router = inject(Router);\n protected readonly currentUrl = this.router.url;\n defaultWorkforce = toSignal(this.aiAssistantService.defaultWorkforce$, { initialValue: [] });\n\n aiAssistant = computed(() =>\n this.aiAssistantService.hydrateAssistantWithDefaultInfo(this.assistant(), this.defaultWorkforce()),\n );\n gradientColor = computed(() => this.aiAssistant()?.decoration?.gradientColor);\n\n aiAssistantConfigUrl = computed(() => {\n return this.assistant()\n ? this.aiAssistantService.buildAssistantConfigurationUrl(this.accountGroupId() ?? '', this.assistant().id ?? '')\n : '';\n });\n\n constructor(private elementRef: ElementRef) {\n const element = this.elementRef.nativeElement;\n effect(() => {\n element.style.setProperty('--gradient-start-color', this.gradientColor());\n });\n }\n}\n","
\n
\n
\n
\n @if (aiAssistant()?.assistant?.avatarUrl) {\n \n } @else {\n \n }\n
\n

{{ aiAssistant()?.assistant?.name }}

\n @if (aiAssistant()?.subtitleKey) {\n

{{ aiAssistant()?.subtitleKey ?? '' | translate }}

\n }\n
\n
\n \n {{ 'INBOX.WEBCHAT.SETTINGS.WEBCHAT_ASSISTANT.CONFIGURE' | translate }}\n \n
\n
\n
\n","export * from './ai-assistant-card/ai-assistant-card.component';\nexport * from './ai-assistant-page/ai-assistant-page.component';\nexport * from './ai-assistant-reference-card/ai-assistant-reference-card.component';\n","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiY29uZmlnLmludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBaUFzc2lzdGFudCwgQWlDb25uZWN0aW9uLCBBY3Rpb24gfSBmcm9tICcuL2FpLWFzc2lzdGFudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVmVuZG9yTW9kZWwgfSBmcm9tICdAdmVuZGFzdGEvYWktYXNzaXN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzaXN0YW50SW5mbyB7XG4gIGFzc2lzdGFudElkOiBzdHJpbmc7XG4gIGljb25Vcmw/OiBzdHJpbmc7XG4gIGNhcmREaXNhYmxlZD86IGJvb2xlYW47XG4gIGN0YT86IEFjdGlvbjtcbiAgaGlkZUNhcmQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBBaUFzc2lzdGFudENvbmZpZyB7XG4gIC8vIEN1cnJlbnQgcGFydG5lciBJRC5cbiAgcGFydG5lcklkJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPjtcblxuICAvLyBPcHRpb25hbDogQ3VycmVudCBtYXJrZXQgSURcbiAgbWFya2V0SWQkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+O1xuXG4gIC8vIE9wdGlvbmFsOiBDdXJyZW50IGFjY291bnQgZ3JvdXAgSUQuXG4gIGFjY291bnRHcm91cElkJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPjtcblxuICAvLyBPcHRpb25hbDogZGVmYXVsdCBhaSBhc3Npc3RhbnQgbGlzdC5cbiAgZGVmYXVsdEFJV29ya2ZvcmNlJDogT2JzZXJ2YWJsZTxBaUFzc2lzdGFudFtdIHwgdW5kZWZpbmVkIHwgbnVsbD47XG5cbiAgLy8gT3B0aW9uYWw6IGRlZmF1bHQgY29ubmVjdGlvbiBsaXN0LlxuICBkZWZhdWx0Q29ubmVjdGlvbnMkOiBPYnNlcnZhYmxlPEFpQ29ubmVjdGlvbltdIHwgdW5kZWZpbmVkIHwgbnVsbD47XG5cbiAgLy8gT3B0aW9uYWw6IGN1cnJlbnQgdXNlciBJRC5cbiAgY3VycmVudFVzZXJJZCQ6IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWlWb2ljZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZ2VuZGVyOiBzdHJpbmc7XG4gIHJlZ2lvbjogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBwcmV2aWV3QXVkaW9Vcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWlWb2ljZUZhbWlseSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb25fa2V5OiBzdHJpbmc7XG4gIHZvaWNlczogQWlWb2ljZVtdO1xuICBwcm92aWRlcjogVmVuZG9yTW9kZWw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVldGluZ1R5cGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIG1lZXRpbmdUeXBlSWQ6IHN0cmluZztcbiAgY2FsZW5kYXJJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbGVuZGFyV2l0aE1lZXRpbmdUeXBlcyB7XG4gIGNhbGVuZGFyTmFtZTogc3RyaW5nO1xuICBjYWxlbmRhcklkOiBzdHJpbmc7XG4gIGlzUGVyc29uYWw6IGJvb2xlYW47XG4gIG1lZXRpbmdUeXBlczogTWVldGluZ1R5cGVbXTtcbn1cbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'ai-enable-lead-capture-dialog',\n imports: [CommonModule, MatDialogModule, MatButtonModule, TranslateModule],\n templateUrl: './enable-lead-capture-dialog.component.html',\n})\nexport class EnableLeadCaptureDialogComponent {}\n","

{{ 'AI_ASSISTANT.SETTINGS.ENABLE_LEAD_CAPTURE.DESCRIPTION' | translate }}

\n\n

{{ 'AI_ASSISTANT.SETTINGS.ENABLE_LEAD_CAPTURE_DIALOG.INFORMATION' | translate }}

\n

{{ 'AI_ASSISTANT.SETTINGS.ENABLE_LEAD_CAPTURE_DIALOG.INFORMATION_2' | translate }}

\n

{{ 'AI_ASSISTANT.SETTINGS.ENABLE_LEAD_CAPTURE_DIALOG.INFORMATION_3' | translate }}

\n
\n\n \n\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { AiAssistantI18nModule } from '../../assets/i18n/ai-assistant-i18n.module';\n@Component({\n selector: 'ai-additional-instructions-dialog',\n imports: [CommonModule, MatDialogModule, MatButtonModule, AiAssistantI18nModule, GalaxyBadgeModule],\n templateUrl: './additional-instructions-dialog.component.html',\n})\nexport class AdditionalInstructionsDialogComponent {}\n","

\n {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.TITLE' | translate }}\n \n {{ 'AI_ASSISTANT.SHARED.BETA' | translate }}\n \n

\n\n\n

\n {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.INFORMATION_WARNING' | translate }}\n {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.INFORMATION' | translate }}\n

\n

{{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.EXAMPLE_HEADING' | translate }}

\n
    \n
  1. {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.EXAMPLE_1' | translate }}
  2. \n
  3. {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.EXAMPLE_2' | translate }}
  4. \n
  5. {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.EXAMPLE_3' | translate }}
  6. \n
  7. {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.EXAMPLE_4' | translate }}
  8. \n
  9. {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.EXAMPLE_5' | translate }}
  10. \n
  11. \n {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.EXAMPLE_6' | translate }}\n
      \n
    1. {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.FIELD_1' | translate }}
    2. \n
    3. {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.FIELD_2' | translate }}
    4. \n
    5. {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.FIELD_3' | translate }}
    6. \n
    7. {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.FIELD_4' | translate }}
    8. \n
    9. {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.FIELD_5' | translate }}
    10. \n
    11. {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.FIELD_6' | translate }}
    12. \n
    13. {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.FIELD_7' | translate }}
    14. \n
    15. {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.FIELD_8' | translate }}
    16. \n
    17. {{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.FIELD_9' | translate }}
    18. \n
    \n
  12. \n
\n

{{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.DO_NOT_WORK_HEADING' | translate }}

\n

{{ 'AI_ASSISTANT.SETTINGS.ADDITIONAL_INSTRUCTIONS_DIALOG.DO_NOT_WORK_DESCRIPTION' | translate }}

\n
\n\n \n\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { RouterModule } from '@angular/router';\nimport { GalaxyStickyFooterModule } from '@vendasta/galaxy/sticky-footer';\nimport { AiAssistantI18nModule } from '../../assets/i18n/ai-assistant-i18n.module';\n@Component({\n selector: 'ai-sticky-footer',\n imports: [\n CommonModule,\n RouterModule,\n MatCardModule,\n MatButtonModule,\n AiAssistantI18nModule,\n GalaxyStickyFooterModule,\n ],\n templateUrl: './sticky-footer.component.html',\n})\nexport class StickyFooterComponent {\n @Output() public submitClick = new EventEmitter();\n @Output() public cancelClick = new EventEmitter();\n @Input() public cancelLink?: string;\n @Input() public disabled = false;\n @Input() public submitOverride?: string;\n @Input() public cancelOverride?: string;\n}\n","\n \n @if (cancelLink) {\n \n {{ cancelOverride || 'AI_ASSISTANT.SHARED.CANCEL' | translate }}\n \n } @else {\n \n }\n\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { FileInfo, GalaxyImageUploaderService, UploadResponse } from '@vendasta/galaxy/uploader';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class ImageUploadService extends GalaxyImageUploaderService {\n constructor(\n private httpClient: HttpClient,\n private environmentService: EnvironmentService,\n ) {\n super(httpClient);\n }\n\n public getURL(): string {\n switch (this.environmentService.getEnvironment()) {\n case Environment.DEMO: {\n return 'https://media-demo.apigateway.co/image/upload';\n }\n case Environment.PROD: {\n return 'https://media-prod.apigateway.co/image/upload';\n }\n default: {\n return 'https://media-demo.apigateway.co/image/upload';\n }\n }\n }\n\n buildRequest(fileInfo: FileInfo): Observable {\n const imageToUpload = fileInfo?.data?.croppedImage || fileInfo.file;\n const formData = new FormData();\n\n formData.append('image', imageToUpload);\n return this.httpClient.post(this.getURL(), formData, { withCredentials: true });\n }\n}\n","import { Component, Inject, inject, signal } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport {\n FileInfo,\n FileUploadError,\n GALAXY_UPLOADER_SERVICE_TOKEN,\n GalaxyUploaderModule,\n} from '@vendasta/galaxy/uploader';\nimport { ImageUploadService } from '../image-upload.service';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { firstValueFrom } from 'rxjs';\n\n@Component({\n selector: 'ai-image-upload-modal',\n imports: [MatDialogModule, GalaxyUploaderModule, TranslateModule, GalaxyAvatarModule, MatButtonModule, MatIconModule],\n templateUrl: './image-upload-modal.component.html',\n styleUrl: './image-upload-modal.component.scss',\n providers: [{ provide: GALAXY_UPLOADER_SERVICE_TOKEN, useClass: ImageUploadService }],\n})\nexport class ImageUploadModalComponent {\n file = signal(null);\n private readonly uploadService = inject(GALAXY_UPLOADER_SERVICE_TOKEN) as ImageUploadService;\n protected readonly state = signal('change');\n\n private readonly dialogRef = inject(MatDialogRef);\n\n private readonly snack = inject(SnackbarService);\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: { imageURL: string; defaultSvg: string }) {\n this.state.set(data.imageURL ? 'view' : 'change');\n }\n\n onRemove(): void {\n this.dialogRef.close({ removed: true });\n }\n\n onError(event: FileUploadError): void {\n this.snack.openErrorSnack(event.error.message);\n this.dialogRef.close();\n }\n\n onUpload(fileInfo: FileInfo | null): void {\n if (!fileInfo) return;\n this.uploadService.clear();\n this.dialogRef.close({ newImageUrl: fileInfo.url });\n }\n\n onFilesChanged(files: FileInfo[]): void {\n const fileInfo = files?.[0];\n if (fileInfo) {\n this.file.set(fileInfo);\n }\n }\n\n async endEdit(blob?: Blob | null): Promise {\n const currentFile = this.file();\n if (blob && currentFile) {\n this.uploadService.setCroppedImage(currentFile, blob);\n this.uploadService.uploadQueuedFiles();\n\n firstValueFrom(this.uploadService.fileUploaded$).then((fileInfo) => {\n this.dialogRef.close({\n newImageUrl: fileInfo.url,\n });\n });\n } else {\n this.uploadService.clear();\n this.file.set(null);\n this.dialogRef.close();\n }\n }\n}\n","

{{ 'AI_ASSISTANT.SETTINGS.IMAGE_UPLOAD.CHANGE_APPEARANCE' | translate }}

\n\n\n @switch (state()) {\n @case ('view') {\n
\n \n\n
\n \n @if (data.imageURL) {\n \n }\n
\n
\n }\n @case ('change') {\n @if (!file()) {\n \n } @else {\n \n }\n }\n }\n
\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, inject, input, Output, signal } from '@angular/core';\nimport { GALAXY_UPLOADER_SERVICE_TOKEN, GalaxyUploaderModule } from '@vendasta/galaxy/uploader';\nimport { ImageUploadService } from './image-upload.service';\nimport { MatButtonModule } from '@angular/material/button';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ImageUploadModalComponent } from './image-upload-modal/image-upload-modal.component';\n\n@Component({\n selector: 'ai-image-upload',\n imports: [\n CommonModule,\n TranslateModule,\n GalaxyUploaderModule,\n MatButtonModule,\n GalaxyAvatarModule,\n MatIconModule,\n MatMenuModule,\n ],\n providers: [{ provide: GALAXY_UPLOADER_SERVICE_TOKEN, useClass: ImageUploadService }],\n templateUrl: './image-upload.component.html',\n styleUrls: ['./image-upload.component.scss'],\n})\nexport class ImageUploadComponent {\n imageUrl = input();\n defaultSvg = input();\n @Output() imageUrlChanged = new EventEmitter();\n\n newUploadedImageUrl = signal(null);\n private readonly dialog = inject(MatDialog);\n\n onChangeImage(): void {\n const dialogRef = this.dialog.open(ImageUploadModalComponent, {\n width: '500px',\n data: {\n imageURL: this.imageUrl(),\n defaultSvg: this.defaultSvg(),\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n if (result.remove) {\n this.imageUrlChanged.emit('');\n } else {\n this.imageUrlChanged.emit(result.newImageUrl);\n this.newUploadedImageUrl.set(result.newImageUrl);\n }\n }\n });\n }\n}\n","
\n \n\n
\n photo_camera\n
\n\n @if (newUploadedImageUrl() || imageUrl()) {\n
\n \n
\n }\n
\n","import { inject, Injectable, signal } from '@angular/core';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { MaybeAsync } from '@angular/router';\nimport { map } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class UnsavedChangesGuard {\n private readonly confirmationModal = inject(OpenConfirmationModalService);\n private readonly hasUnsavedChanges = signal(false);\n\n canDeactivate(): MaybeAsync {\n if (this.hasUnsavedChanges()) {\n return this.confirmationModal\n .openModal({\n type: 'warn',\n title: 'AI_ASSISTANT.SHARED.UNSAVED_CHANGES.TITLE',\n message: 'AI_ASSISTANT.SHARED.UNSAVED_CHANGES.MESSAGE',\n confirmButtonText: 'AI_ASSISTANT.SHARED.UNSAVED_CHANGES.CONFIRM',\n })\n .pipe(map((confirmation) => !!confirmation));\n }\n return true;\n }\n\n notifyStateChanged(hasChanges: boolean): void {\n this.hasUnsavedChanges.set(hasChanges);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, input } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { filter, map, shareReplay, switchMap } from 'rxjs';\nimport { AiAssistantI18nModule } from '../../assets/i18n/ai-assistant-i18n.module';\nimport { GalaxyProgressBarModule } from '@vendasta/galaxy/progress-bar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { VoiceApiService } from '@vendasta/voice';\nimport { NamespaceInterface } from '@vendasta/ai-assistants/lib/_internal/interfaces/namespace.interface';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ai-assistant-voice-usage',\n imports: [CommonModule, AiAssistantI18nModule, GalaxyProgressBarModule, MatIconModule, GalaxyTooltipModule],\n templateUrl: './ai-assistant-voice-usage.component.html',\n styleUrls: ['./ai-assistant-voice-usage.component.scss'],\n})\nexport class AiAssistantVoiceUsageComponent {\n namespace = input();\n\n protected readonly translationService = inject(TranslateService);\n private readonly voiceApiService = inject(VoiceApiService);\n\n readonly callUsageLimitMinutes = 300;\n\n callUsage$ = toObservable(this.namespace).pipe(\n filter((namespace) => !!namespace),\n switchMap((namespace) => this.voiceApiService.getCallUsage({ namespace: namespace })),\n map((r) => {\n // nanoseconds to minutes, rounded down to the nearest minute\n const totalMinutes = Math.floor(r?.totalDuration / 60_000_000_000);\n return {\n totalMinutes: totalMinutes,\n startDate: r?.startTime,\n endDate: r?.endTime,\n limitPercent: Math.min(Math.round((totalMinutes / this.callUsageLimitMinutes) * 100), 100),\n };\n }),\n shareReplay(1),\n );\n}\n","@let callUsage = callUsage$ | async;\n
\n
\n {{\n 'AI_ASSISTANT.WORKFORCE.DEFAULT_ASSISTANTS.VOICE_RECEPTIONIST.MINUTES_USED'\n | translate\n : {\n used: callUsage?.totalMinutes || 0,\n limit: callUsageLimitMinutes,\n }\n }}\n
\n \n
\n {{\n 'AI_ASSISTANT.WORKFORCE.DEFAULT_ASSISTANTS.VOICE_RECEPTIONIST.USAGE_PROGRESS'\n | translate\n : {\n startDay: callUsage?.startDate | date: 'MMM d' : 'UTC',\n endDay: callUsage?.endDate | date: 'MMM d' : 'UTC',\n }\n }}\n
\n
\n
\n","import { Directionality } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, inject, ChangeDetectorRef, NgZone, Renderer2, ElementRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, ANIMATION_MODULE_TYPE, booleanAttribute, numberAttribute, ViewChildren, ContentChild, ContentChildren, forwardRef, EventEmitter, signal, Directive, Output, NgModule } from '@angular/core';\nimport { RippleState, MatRipple, MAT_RIPPLE_GLOBAL_OPTIONS, _StructuralStylesLoader, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\n/**\n * Thumb types: range slider has two thumbs (START, END) whereas single point\n * slider only has one thumb (END).\n */\nconst _c0 = [\"knob\"];\nconst _c1 = [\"valueIndicatorContainer\"];\nfunction MatSliderVisualThumb_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2, 1)(2, \"div\", 5)(3, \"span\", 6);\n i0.ɵɵtext(4);\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance(4);\n i0.ɵɵtextInterpolate(ctx_r0.valueIndicatorText);\n }\n}\nconst _c2 = [\"trackActive\"];\nconst _c3 = [\"*\"];\nfunction MatSlider_Conditional_6_Conditional_2_For_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\");\n }\n if (rf & 2) {\n const tickMark_r1 = ctx.$implicit;\n const ɵ$index_14_r2 = ctx.$index;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵclassMap(tickMark_r1 === 0 ? \"mdc-slider__tick-mark--active\" : \"mdc-slider__tick-mark--inactive\");\n i0.ɵɵstyleProp(\"transform\", ctx_r2._calcTickMarkTransform(ɵ$index_14_r2));\n }\n}\nfunction MatSlider_Conditional_6_Conditional_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵrepeaterCreate(0, MatSlider_Conditional_6_Conditional_2_For_1_Template, 1, 4, \"div\", 8, i0.ɵɵrepeaterTrackByIndex);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵrepeater(ctx_r2._tickMarks);\n }\n}\nfunction MatSlider_Conditional_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 6, 1);\n i0.ɵɵtemplate(2, MatSlider_Conditional_6_Conditional_2_Template, 2, 0);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(ctx_r2._cachedWidth ? 2 : -1);\n }\n}\nfunction MatSlider_Conditional_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"mat-slider-visual-thumb\", 7);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"discrete\", ctx_r2.discrete)(\"thumbPosition\", 1)(\"valueIndicatorText\", ctx_r2.startValueIndicatorText);\n }\n}\nvar _MatThumb = /*#__PURE__*/function (_MatThumb) {\n _MatThumb[_MatThumb[\"START\"] = 1] = \"START\";\n _MatThumb[_MatThumb[\"END\"] = 2] = \"END\";\n return _MatThumb;\n}(_MatThumb || {});\n/** Tick mark enum, for discrete sliders. */\nvar _MatTickMark = /*#__PURE__*/function (_MatTickMark) {\n _MatTickMark[_MatTickMark[\"ACTIVE\"] = 0] = \"ACTIVE\";\n _MatTickMark[_MatTickMark[\"INACTIVE\"] = 1] = \"INACTIVE\";\n return _MatTickMark;\n}(_MatTickMark || {});\n/**\n * Injection token that can be used for a `MatSlider` to provide itself as a\n * parent to the `MatSliderThumb` and `MatSliderRangeThumb`.\n * Used primarily to avoid circular imports.\n * @docs-private\n */\nconst MAT_SLIDER = /*#__PURE__*/new InjectionToken('_MatSlider');\n/**\n * Injection token that can be used to query for a `MatSliderThumb`.\n * Used primarily to avoid circular imports.\n * @docs-private\n */\nconst MAT_SLIDER_THUMB = /*#__PURE__*/new InjectionToken('_MatSliderThumb');\n/**\n * Injection token that can be used to query for a `MatSliderRangeThumb`.\n * Used primarily to avoid circular imports.\n * @docs-private\n */\nconst MAT_SLIDER_RANGE_THUMB = /*#__PURE__*/new InjectionToken('_MatSliderRangeThumb');\n/**\n * Injection token that can be used to query for a `MatSliderVisualThumb`.\n * Used primarily to avoid circular imports.\n * @docs-private\n */\nconst MAT_SLIDER_VISUAL_THUMB = /*#__PURE__*/new InjectionToken('_MatSliderVisualThumb');\n/**\n * A simple change event emitted by the MatSlider component.\n * @deprecated Use event bindings directly on the MatSliderThumbs for `change` and `input` events. See https://v17.material.angular.io/guide/mdc-migration for information about migrating.\n * @breaking-change 17.0.0\n */\nclass MatSliderChange {\n /** The MatSliderThumb that was interacted with. */\n source;\n /** The MatSlider that was interacted with. */\n parent;\n /** The new value of the source slider. */\n value;\n}\n\n/**\n * The visual slider thumb.\n *\n * Handles the slider thumb ripple states (hover, focus, and active),\n * and displaying the value tooltip on discrete sliders.\n * @docs-private\n */\nlet MatSliderVisualThumb = /*#__PURE__*/(() => {\n class MatSliderVisualThumb {\n _cdr = inject(ChangeDetectorRef);\n _ngZone = inject(NgZone);\n _slider = inject(MAT_SLIDER);\n _renderer = inject(Renderer2);\n _listenerCleanups;\n /** Whether the slider displays a numeric value label upon pressing the thumb. */\n discrete;\n /** Indicates which slider thumb this input corresponds to. */\n thumbPosition;\n /** The display value of the slider thumb. */\n valueIndicatorText;\n /** The MatRipple for this slider thumb. */\n _ripple;\n /** The slider thumb knob. */\n _knob;\n /** The slider thumb value indicator container. */\n _valueIndicatorContainer;\n /** The slider input corresponding to this slider thumb. */\n _sliderInput;\n /** The native html element of the slider input corresponding to this thumb. */\n _sliderInputEl;\n /** The RippleRef for the slider thumbs hover state. */\n _hoverRippleRef;\n /** The RippleRef for the slider thumbs focus state. */\n _focusRippleRef;\n /** The RippleRef for the slider thumbs active state. */\n _activeRippleRef;\n /** Whether the slider thumb is currently being hovered. */\n _isHovered = false;\n /** Whether the slider thumb is currently being pressed. */\n _isActive = false;\n /** Whether the value indicator tooltip is visible. */\n _isValueIndicatorVisible = false;\n /** The host native HTML input element. */\n _hostElement = inject(ElementRef).nativeElement;\n _platform = inject(Platform);\n constructor() {}\n ngAfterViewInit() {\n const sliderInput = this._slider._getInput(this.thumbPosition);\n // No-op if the slider isn't configured properly. `MatSlider` will\n // throw an error instructing the user how to set up the slider.\n if (!sliderInput) {\n return;\n }\n this._ripple.radius = 24;\n this._sliderInput = sliderInput;\n this._sliderInputEl = this._sliderInput._hostElement;\n // These listeners don't update any data bindings so we bind them outside\n // of the NgZone to prevent Angular from needlessly running change detection.\n this._ngZone.runOutsideAngular(() => {\n const input = this._sliderInputEl;\n const renderer = this._renderer;\n this._listenerCleanups = [renderer.listen(input, 'pointermove', this._onPointerMove), renderer.listen(input, 'pointerdown', this._onDragStart), renderer.listen(input, 'pointerup', this._onDragEnd), renderer.listen(input, 'pointerleave', this._onMouseLeave), renderer.listen(input, 'focus', this._onFocus), renderer.listen(input, 'blur', this._onBlur)];\n });\n }\n ngOnDestroy() {\n this._listenerCleanups?.forEach(cleanup => cleanup());\n }\n _onPointerMove = event => {\n if (this._sliderInput._isFocused) {\n return;\n }\n const rect = this._hostElement.getBoundingClientRect();\n const isHovered = this._slider._isCursorOnSliderThumb(event, rect);\n this._isHovered = isHovered;\n if (isHovered) {\n this._showHoverRipple();\n } else {\n this._hideRipple(this._hoverRippleRef);\n }\n };\n _onMouseLeave = () => {\n this._isHovered = false;\n this._hideRipple(this._hoverRippleRef);\n };\n _onFocus = () => {\n // We don't want to show the hover ripple on top of the focus ripple.\n // Happen when the users cursor is over a thumb and then the user tabs to it.\n this._hideRipple(this._hoverRippleRef);\n this._showFocusRipple();\n this._hostElement.classList.add('mdc-slider__thumb--focused');\n };\n _onBlur = () => {\n // Happens when the user tabs away while still dragging a thumb.\n if (!this._isActive) {\n this._hideRipple(this._focusRippleRef);\n }\n // Happens when the user tabs away from a thumb but their cursor is still over it.\n if (this._isHovered) {\n this._showHoverRipple();\n }\n this._hostElement.classList.remove('mdc-slider__thumb--focused');\n };\n _onDragStart = event => {\n if (event.button !== 0) {\n return;\n }\n this._isActive = true;\n this._showActiveRipple();\n };\n _onDragEnd = () => {\n this._isActive = false;\n this._hideRipple(this._activeRippleRef);\n // Happens when the user starts dragging a thumb, tabs away, and then stops dragging.\n if (!this._sliderInput._isFocused) {\n this._hideRipple(this._focusRippleRef);\n }\n // On Safari we need to immediately re-show the hover ripple because\n // sliders do not retain focus from pointer events on that platform.\n if (this._platform.SAFARI) {\n this._showHoverRipple();\n }\n };\n /** Handles displaying the hover ripple. */\n _showHoverRipple() {\n if (!this._isShowingRipple(this._hoverRippleRef)) {\n this._hoverRippleRef = this._showRipple({\n enterDuration: 0,\n exitDuration: 0\n });\n this._hoverRippleRef?.element.classList.add('mat-mdc-slider-hover-ripple');\n }\n }\n /** Handles displaying the focus ripple. */\n _showFocusRipple() {\n // Show the focus ripple event if noop animations are enabled.\n if (!this._isShowingRipple(this._focusRippleRef)) {\n this._focusRippleRef = this._showRipple({\n enterDuration: 0,\n exitDuration: 0\n }, true);\n this._focusRippleRef?.element.classList.add('mat-mdc-slider-focus-ripple');\n }\n }\n /** Handles displaying the active ripple. */\n _showActiveRipple() {\n if (!this._isShowingRipple(this._activeRippleRef)) {\n this._activeRippleRef = this._showRipple({\n enterDuration: 225,\n exitDuration: 400\n });\n this._activeRippleRef?.element.classList.add('mat-mdc-slider-active-ripple');\n }\n }\n /** Whether the given rippleRef is currently fading in or visible. */\n _isShowingRipple(rippleRef) {\n return rippleRef?.state === RippleState.FADING_IN || rippleRef?.state === RippleState.VISIBLE;\n }\n /** Manually launches the slider thumb ripple using the specified ripple animation config. */\n _showRipple(animation, ignoreGlobalRippleConfig) {\n if (this._slider.disabled) {\n return;\n }\n this._showValueIndicator();\n if (this._slider._isRange) {\n const sibling = this._slider._getThumb(this.thumbPosition === _MatThumb.START ? _MatThumb.END : _MatThumb.START);\n sibling._showValueIndicator();\n }\n if (this._slider._globalRippleOptions?.disabled && !ignoreGlobalRippleConfig) {\n return;\n }\n return this._ripple.launch({\n animation: this._slider._noopAnimations ? {\n enterDuration: 0,\n exitDuration: 0\n } : animation,\n centered: true,\n persistent: true\n });\n }\n /**\n * Fades out the given ripple.\n * Also hides the value indicator if no ripple is showing.\n */\n _hideRipple(rippleRef) {\n rippleRef?.fadeOut();\n if (this._isShowingAnyRipple()) {\n return;\n }\n if (!this._slider._isRange) {\n this._hideValueIndicator();\n }\n const sibling = this._getSibling();\n if (!sibling._isShowingAnyRipple()) {\n this._hideValueIndicator();\n sibling._hideValueIndicator();\n }\n }\n /** Shows the value indicator ui. */\n _showValueIndicator() {\n this._hostElement.classList.add('mdc-slider__thumb--with-indicator');\n }\n /** Hides the value indicator ui. */\n _hideValueIndicator() {\n this._hostElement.classList.remove('mdc-slider__thumb--with-indicator');\n }\n _getSibling() {\n return this._slider._getThumb(this.thumbPosition === _MatThumb.START ? _MatThumb.END : _MatThumb.START);\n }\n /** Gets the value indicator container's native HTML element. */\n _getValueIndicatorContainer() {\n return this._valueIndicatorContainer?.nativeElement;\n }\n /** Gets the native HTML element of the slider thumb knob. */\n _getKnob() {\n return this._knob.nativeElement;\n }\n _isShowingAnyRipple() {\n return this._isShowingRipple(this._hoverRippleRef) || this._isShowingRipple(this._focusRippleRef) || this._isShowingRipple(this._activeRippleRef);\n }\n static ɵfac = function MatSliderVisualThumb_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSliderVisualThumb)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSliderVisualThumb,\n selectors: [[\"mat-slider-visual-thumb\"]],\n viewQuery: function MatSliderVisualThumb_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(MatRipple, 5);\n i0.ɵɵviewQuery(_c0, 5);\n i0.ɵɵviewQuery(_c1, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._ripple = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._knob = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._valueIndicatorContainer = _t.first);\n }\n },\n hostAttrs: [1, \"mdc-slider__thumb\", \"mat-mdc-slider-visual-thumb\"],\n inputs: {\n discrete: \"discrete\",\n thumbPosition: \"thumbPosition\",\n valueIndicatorText: \"valueIndicatorText\"\n },\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_SLIDER_VISUAL_THUMB,\n useExisting: MatSliderVisualThumb\n }])],\n decls: 4,\n vars: 2,\n consts: [[\"knob\", \"\"], [\"valueIndicatorContainer\", \"\"], [1, \"mdc-slider__value-indicator-container\"], [1, \"mdc-slider__thumb-knob\"], [\"matRipple\", \"\", 1, \"mat-focus-indicator\", 3, \"matRippleDisabled\"], [1, \"mdc-slider__value-indicator\"], [1, \"mdc-slider__value-indicator-text\"]],\n template: function MatSliderVisualThumb_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MatSliderVisualThumb_Conditional_0_Template, 5, 1, \"div\", 2);\n i0.ɵɵelement(1, \"div\", 3, 0)(3, \"div\", 4);\n }\n if (rf & 2) {\n i0.ɵɵconditional(ctx.discrete ? 0 : -1);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"matRippleDisabled\", true);\n }\n },\n dependencies: [MatRipple],\n styles: [\".mat-mdc-slider-visual-thumb .mat-ripple{height:100%;width:100%}.mat-mdc-slider .mdc-slider__tick-marks{justify-content:start}.mat-mdc-slider .mdc-slider__tick-marks .mdc-slider__tick-mark--active,.mat-mdc-slider .mdc-slider__tick-marks .mdc-slider__tick-mark--inactive{position:absolute;left:2px}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n return MatSliderVisualThumb;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// TODO(wagnermaciel): maybe handle the following edge case:\n// 1. start dragging discrete slider\n// 2. tab to disable checkbox\n// 3. without ending drag, disable the slider\n/**\n * Allows users to select from a range of values by moving the slider thumb. It is similar in\n * behavior to the native `` element.\n */\nlet MatSlider = /*#__PURE__*/(() => {\n class MatSlider {\n _ngZone = inject(NgZone);\n _cdr = inject(ChangeDetectorRef);\n _elementRef = inject(ElementRef);\n _dir = inject(Directionality, {\n optional: true\n });\n _globalRippleOptions = inject(MAT_RIPPLE_GLOBAL_OPTIONS, {\n optional: true\n });\n /** The active portion of the slider track. */\n _trackActive;\n /** The slider thumb(s). */\n _thumbs;\n /** The sliders hidden range input(s). */\n _input;\n /** The sliders hidden range input(s). */\n _inputs;\n /** Whether the slider is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(v) {\n this._disabled = v;\n const endInput = this._getInput(_MatThumb.END);\n const startInput = this._getInput(_MatThumb.START);\n if (endInput) {\n endInput.disabled = this._disabled;\n }\n if (startInput) {\n startInput.disabled = this._disabled;\n }\n }\n _disabled = false;\n /** Whether the slider displays a numeric value label upon pressing the thumb. */\n get discrete() {\n return this._discrete;\n }\n set discrete(v) {\n this._discrete = v;\n this._updateValueIndicatorUIs();\n }\n _discrete = false;\n /** Whether the slider displays tick marks along the slider track. */\n showTickMarks = false;\n /** The minimum value that the slider can have. */\n get min() {\n return this._min;\n }\n set min(v) {\n const min = isNaN(v) ? this._min : v;\n if (this._min !== min) {\n this._updateMin(min);\n }\n }\n _min = 0;\n /**\n * Theme color of the slider. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.io/components/slider/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.io/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color;\n /** Whether ripples are disabled in the slider. */\n disableRipple = false;\n _updateMin(min) {\n const prevMin = this._min;\n this._min = min;\n this._isRange ? this._updateMinRange({\n old: prevMin,\n new: min\n }) : this._updateMinNonRange(min);\n this._onMinMaxOrStepChange();\n }\n _updateMinRange(min) {\n const endInput = this._getInput(_MatThumb.END);\n const startInput = this._getInput(_MatThumb.START);\n const oldEndValue = endInput.value;\n const oldStartValue = startInput.value;\n startInput.min = min.new;\n endInput.min = Math.max(min.new, startInput.value);\n startInput.max = Math.min(endInput.max, endInput.value);\n startInput._updateWidthInactive();\n endInput._updateWidthInactive();\n min.new < min.old ? this._onTranslateXChangeBySideEffect(endInput, startInput) : this._onTranslateXChangeBySideEffect(startInput, endInput);\n if (oldEndValue !== endInput.value) {\n this._onValueChange(endInput);\n }\n if (oldStartValue !== startInput.value) {\n this._onValueChange(startInput);\n }\n }\n _updateMinNonRange(min) {\n const input = this._getInput(_MatThumb.END);\n if (input) {\n const oldValue = input.value;\n input.min = min;\n input._updateThumbUIByValue();\n this._updateTrackUI(input);\n if (oldValue !== input.value) {\n this._onValueChange(input);\n }\n }\n }\n /** The maximum value that the slider can have. */\n get max() {\n return this._max;\n }\n set max(v) {\n const max = isNaN(v) ? this._max : v;\n if (this._max !== max) {\n this._updateMax(max);\n }\n }\n _max = 100;\n _updateMax(max) {\n const prevMax = this._max;\n this._max = max;\n this._isRange ? this._updateMaxRange({\n old: prevMax,\n new: max\n }) : this._updateMaxNonRange(max);\n this._onMinMaxOrStepChange();\n }\n _updateMaxRange(max) {\n const endInput = this._getInput(_MatThumb.END);\n const startInput = this._getInput(_MatThumb.START);\n const oldEndValue = endInput.value;\n const oldStartValue = startInput.value;\n endInput.max = max.new;\n startInput.max = Math.min(max.new, endInput.value);\n endInput.min = startInput.value;\n endInput._updateWidthInactive();\n startInput._updateWidthInactive();\n max.new > max.old ? this._onTranslateXChangeBySideEffect(startInput, endInput) : this._onTranslateXChangeBySideEffect(endInput, startInput);\n if (oldEndValue !== endInput.value) {\n this._onValueChange(endInput);\n }\n if (oldStartValue !== startInput.value) {\n this._onValueChange(startInput);\n }\n }\n _updateMaxNonRange(max) {\n const input = this._getInput(_MatThumb.END);\n if (input) {\n const oldValue = input.value;\n input.max = max;\n input._updateThumbUIByValue();\n this._updateTrackUI(input);\n if (oldValue !== input.value) {\n this._onValueChange(input);\n }\n }\n }\n /** The values at which the thumb will snap. */\n get step() {\n return this._step;\n }\n set step(v) {\n const step = isNaN(v) ? this._step : v;\n if (this._step !== step) {\n this._updateStep(step);\n }\n }\n _step = 1;\n _updateStep(step) {\n this._step = step;\n this._isRange ? this._updateStepRange() : this._updateStepNonRange();\n this._onMinMaxOrStepChange();\n }\n _updateStepRange() {\n const endInput = this._getInput(_MatThumb.END);\n const startInput = this._getInput(_MatThumb.START);\n const oldEndValue = endInput.value;\n const oldStartValue = startInput.value;\n const prevStartValue = startInput.value;\n endInput.min = this._min;\n startInput.max = this._max;\n endInput.step = this._step;\n startInput.step = this._step;\n if (this._platform.SAFARI) {\n endInput.value = endInput.value;\n startInput.value = startInput.value;\n }\n endInput.min = Math.max(this._min, startInput.value);\n startInput.max = Math.min(this._max, endInput.value);\n startInput._updateWidthInactive();\n endInput._updateWidthInactive();\n endInput.value < prevStartValue ? this._onTranslateXChangeBySideEffect(startInput, endInput) : this._onTranslateXChangeBySideEffect(endInput, startInput);\n if (oldEndValue !== endInput.value) {\n this._onValueChange(endInput);\n }\n if (oldStartValue !== startInput.value) {\n this._onValueChange(startInput);\n }\n }\n _updateStepNonRange() {\n const input = this._getInput(_MatThumb.END);\n if (input) {\n const oldValue = input.value;\n input.step = this._step;\n if (this._platform.SAFARI) {\n input.value = input.value;\n }\n input._updateThumbUIByValue();\n if (oldValue !== input.value) {\n this._onValueChange(input);\n }\n }\n }\n /**\n * Function that will be used to format the value before it is displayed\n * in the thumb label. Can be used to format very large number in order\n * for them to fit into the slider thumb.\n */\n displayWith = value => `${value}`;\n /** Used to keep track of & render the active & inactive tick marks on the slider track. */\n _tickMarks;\n /** Whether animations have been disabled. */\n _noopAnimations;\n /** Subscription to changes to the directionality (LTR / RTL) context for the application. */\n _dirChangeSubscription;\n /** Observer used to monitor size changes in the slider. */\n _resizeObserver;\n // Stored dimensions to avoid calling getBoundingClientRect redundantly.\n _cachedWidth;\n _cachedLeft;\n _rippleRadius = 24;\n // The value indicator tooltip text for the visual slider thumb(s).\n /** @docs-private */\n startValueIndicatorText = '';\n /** @docs-private */\n endValueIndicatorText = '';\n // Used to control the translateX of the visual slider thumb(s).\n _endThumbTransform;\n _startThumbTransform;\n _isRange = false;\n /** Whether the slider is rtl. */\n _isRtl = false;\n _hasViewInitialized = false;\n /**\n * The width of the tick mark track.\n * The tick mark track width is different from full track width\n */\n _tickMarkTrackWidth = 0;\n _hasAnimation = false;\n _resizeTimer = null;\n _platform = inject(Platform);\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const animationMode = inject(ANIMATION_MODULE_TYPE, {\n optional: true\n });\n this._noopAnimations = animationMode === 'NoopAnimations';\n if (this._dir) {\n this._dirChangeSubscription = this._dir.change.subscribe(() => this._onDirChange());\n this._isRtl = this._dir.value === 'rtl';\n }\n }\n /** The radius of the native slider's knob. AFAIK there is no way to avoid hardcoding this. */\n _knobRadius = 8;\n _inputPadding;\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._updateDimensions();\n }\n const eInput = this._getInput(_MatThumb.END);\n const sInput = this._getInput(_MatThumb.START);\n this._isRange = !!eInput && !!sInput;\n this._cdr.detectChanges();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n _validateInputs(this._isRange, this._getInput(_MatThumb.END), this._getInput(_MatThumb.START));\n }\n const thumb = this._getThumb(_MatThumb.END);\n this._rippleRadius = thumb._ripple.radius;\n this._inputPadding = this._rippleRadius - this._knobRadius;\n this._isRange ? this._initUIRange(eInput, sInput) : this._initUINonRange(eInput);\n this._updateTrackUI(eInput);\n this._updateTickMarkUI();\n this._updateTickMarkTrackUI();\n this._observeHostResize();\n this._cdr.detectChanges();\n }\n _initUINonRange(eInput) {\n eInput.initProps();\n eInput.initUI();\n this._updateValueIndicatorUI(eInput);\n this._hasViewInitialized = true;\n eInput._updateThumbUIByValue();\n }\n _initUIRange(eInput, sInput) {\n eInput.initProps();\n eInput.initUI();\n sInput.initProps();\n sInput.initUI();\n eInput._updateMinMax();\n sInput._updateMinMax();\n eInput._updateStaticStyles();\n sInput._updateStaticStyles();\n this._updateValueIndicatorUIs();\n this._hasViewInitialized = true;\n eInput._updateThumbUIByValue();\n sInput._updateThumbUIByValue();\n }\n ngOnDestroy() {\n this._dirChangeSubscription.unsubscribe();\n this._resizeObserver?.disconnect();\n this._resizeObserver = null;\n }\n /** Handles updating the slider ui after a dir change. */\n _onDirChange() {\n this._isRtl = this._dir?.value === 'rtl';\n this._isRange ? this._onDirChangeRange() : this._onDirChangeNonRange();\n this._updateTickMarkUI();\n }\n _onDirChangeRange() {\n const endInput = this._getInput(_MatThumb.END);\n const startInput = this._getInput(_MatThumb.START);\n endInput._setIsLeftThumb();\n startInput._setIsLeftThumb();\n endInput.translateX = endInput._calcTranslateXByValue();\n startInput.translateX = startInput._calcTranslateXByValue();\n endInput._updateStaticStyles();\n startInput._updateStaticStyles();\n endInput._updateWidthInactive();\n startInput._updateWidthInactive();\n endInput._updateThumbUIByValue();\n startInput._updateThumbUIByValue();\n }\n _onDirChangeNonRange() {\n const input = this._getInput(_MatThumb.END);\n input._updateThumbUIByValue();\n }\n /** Starts observing and updating the slider if the host changes its size. */\n _observeHostResize() {\n if (typeof ResizeObserver === 'undefined' || !ResizeObserver) {\n return;\n }\n this._ngZone.runOutsideAngular(() => {\n this._resizeObserver = new ResizeObserver(() => {\n if (this._isActive()) {\n return;\n }\n if (this._resizeTimer) {\n clearTimeout(this._resizeTimer);\n }\n this._onResize();\n });\n this._resizeObserver.observe(this._elementRef.nativeElement);\n });\n }\n /** Whether any of the thumbs are currently active. */\n _isActive() {\n return this._getThumb(_MatThumb.START)._isActive || this._getThumb(_MatThumb.END)._isActive;\n }\n _getValue(thumbPosition = _MatThumb.END) {\n const input = this._getInput(thumbPosition);\n if (!input) {\n return this.min;\n }\n return input.value;\n }\n _skipUpdate() {\n return !!(this._getInput(_MatThumb.START)?._skipUIUpdate || this._getInput(_MatThumb.END)?._skipUIUpdate);\n }\n /** Stores the slider dimensions. */\n _updateDimensions() {\n this._cachedWidth = this._elementRef.nativeElement.offsetWidth;\n this._cachedLeft = this._elementRef.nativeElement.getBoundingClientRect().left;\n }\n /** Sets the styles for the active portion of the track. */\n _setTrackActiveStyles(styles) {\n const trackStyle = this._trackActive.nativeElement.style;\n trackStyle.left = styles.left;\n trackStyle.right = styles.right;\n trackStyle.transformOrigin = styles.transformOrigin;\n trackStyle.transform = styles.transform;\n }\n /** Returns the translateX positioning for a tick mark based on it's index. */\n _calcTickMarkTransform(index) {\n // TODO(wagnermaciel): See if we can avoid doing this and just using flex to position these.\n const offset = index * (this._tickMarkTrackWidth / (this._tickMarks.length - 1));\n const translateX = this._isRtl ? this._cachedWidth - 6 - offset : offset;\n return `translateX(${translateX}px`;\n }\n // Handlers for updating the slider ui.\n _onTranslateXChange(source) {\n if (!this._hasViewInitialized) {\n return;\n }\n this._updateThumbUI(source);\n this._updateTrackUI(source);\n this._updateOverlappingThumbUI(source);\n }\n _onTranslateXChangeBySideEffect(input1, input2) {\n if (!this._hasViewInitialized) {\n return;\n }\n input1._updateThumbUIByValue();\n input2._updateThumbUIByValue();\n }\n _onValueChange(source) {\n if (!this._hasViewInitialized) {\n return;\n }\n this._updateValueIndicatorUI(source);\n this._updateTickMarkUI();\n this._cdr.detectChanges();\n }\n _onMinMaxOrStepChange() {\n if (!this._hasViewInitialized) {\n return;\n }\n this._updateTickMarkUI();\n this._updateTickMarkTrackUI();\n this._cdr.markForCheck();\n }\n _onResize() {\n if (!this._hasViewInitialized) {\n return;\n }\n this._updateDimensions();\n if (this._isRange) {\n const eInput = this._getInput(_MatThumb.END);\n const sInput = this._getInput(_MatThumb.START);\n eInput._updateThumbUIByValue();\n sInput._updateThumbUIByValue();\n eInput._updateStaticStyles();\n sInput._updateStaticStyles();\n eInput._updateMinMax();\n sInput._updateMinMax();\n eInput._updateWidthInactive();\n sInput._updateWidthInactive();\n } else {\n const eInput = this._getInput(_MatThumb.END);\n if (eInput) {\n eInput._updateThumbUIByValue();\n }\n }\n this._updateTickMarkUI();\n this._updateTickMarkTrackUI();\n this._cdr.detectChanges();\n }\n /** Whether or not the slider thumbs overlap. */\n _thumbsOverlap = false;\n /** Returns true if the slider knobs are overlapping one another. */\n _areThumbsOverlapping() {\n const startInput = this._getInput(_MatThumb.START);\n const endInput = this._getInput(_MatThumb.END);\n if (!startInput || !endInput) {\n return false;\n }\n return endInput.translateX - startInput.translateX < 20;\n }\n /**\n * Updates the class names of overlapping slider thumbs so\n * that the current active thumb is styled to be on \"top\".\n */\n _updateOverlappingThumbClassNames(source) {\n const sibling = source.getSibling();\n const sourceThumb = this._getThumb(source.thumbPosition);\n const siblingThumb = this._getThumb(sibling.thumbPosition);\n siblingThumb._hostElement.classList.remove('mdc-slider__thumb--top');\n sourceThumb._hostElement.classList.toggle('mdc-slider__thumb--top', this._thumbsOverlap);\n }\n /** Updates the UI of slider thumbs when they begin or stop overlapping. */\n _updateOverlappingThumbUI(source) {\n if (!this._isRange || this._skipUpdate()) {\n return;\n }\n if (this._thumbsOverlap !== this._areThumbsOverlapping()) {\n this._thumbsOverlap = !this._thumbsOverlap;\n this._updateOverlappingThumbClassNames(source);\n }\n }\n // _MatThumb styles update conditions\n //\n // 1. TranslateX, resize, or dir change\n // - Reason: The thumb styles need to be updated according to the new translateX.\n // 2. Min, max, or step\n // - Reason: The value may have silently changed.\n /** Updates the translateX of the given thumb. */\n _updateThumbUI(source) {\n if (this._skipUpdate()) {\n return;\n }\n const thumb = this._getThumb(source.thumbPosition === _MatThumb.END ? _MatThumb.END : _MatThumb.START);\n thumb._hostElement.style.transform = `translateX(${source.translateX}px)`;\n }\n // Value indicator text update conditions\n //\n // 1. Value\n // - Reason: The value displayed needs to be updated.\n // 2. Min, max, or step\n // - Reason: The value may have silently changed.\n /** Updates the value indicator tooltip ui for the given thumb. */\n _updateValueIndicatorUI(source) {\n if (this._skipUpdate()) {\n return;\n }\n const valuetext = this.displayWith(source.value);\n this._hasViewInitialized ? source._valuetext.set(valuetext) : source._hostElement.setAttribute('aria-valuetext', valuetext);\n if (this.discrete) {\n source.thumbPosition === _MatThumb.START ? this.startValueIndicatorText = valuetext : this.endValueIndicatorText = valuetext;\n const visualThumb = this._getThumb(source.thumbPosition);\n valuetext.length < 3 ? visualThumb._hostElement.classList.add('mdc-slider__thumb--short-value') : visualThumb._hostElement.classList.remove('mdc-slider__thumb--short-value');\n }\n }\n /** Updates all value indicator UIs in the slider. */\n _updateValueIndicatorUIs() {\n const eInput = this._getInput(_MatThumb.END);\n const sInput = this._getInput(_MatThumb.START);\n if (eInput) {\n this._updateValueIndicatorUI(eInput);\n }\n if (sInput) {\n this._updateValueIndicatorUI(sInput);\n }\n }\n // Update Tick Mark Track Width\n //\n // 1. Min, max, or step\n // - Reason: The maximum reachable value may have changed.\n // - Side note: The maximum reachable value is different from the maximum value set by the\n // user. For example, a slider with [min: 5, max: 100, step: 10] would have a maximum\n // reachable value of 95.\n // 2. Resize\n // - Reason: The position for the maximum reachable value needs to be recalculated.\n /** Updates the width of the tick mark track. */\n _updateTickMarkTrackUI() {\n if (!this.showTickMarks || this._skipUpdate()) {\n return;\n }\n const step = this._step && this._step > 0 ? this._step : 1;\n const maxValue = Math.floor(this.max / step) * step;\n const percentage = (maxValue - this.min) / (this.max - this.min);\n this._tickMarkTrackWidth = (this._cachedWidth - 6) * percentage;\n }\n // Track active update conditions\n //\n // 1. TranslateX\n // - Reason: The track active should line up with the new thumb position.\n // 2. Min or max\n // - Reason #1: The 'active' percentage needs to be recalculated.\n // - Reason #2: The value may have silently changed.\n // 3. Step\n // - Reason: The value may have silently changed causing the thumb(s) to shift.\n // 4. Dir change\n // - Reason: The track active will need to be updated according to the new thumb position(s).\n // 5. Resize\n // - Reason: The total width the 'active' tracks translateX is based on has changed.\n /** Updates the scale on the active portion of the track. */\n _updateTrackUI(source) {\n if (this._skipUpdate()) {\n return;\n }\n this._isRange ? this._updateTrackUIRange(source) : this._updateTrackUINonRange(source);\n }\n _updateTrackUIRange(source) {\n const sibling = source.getSibling();\n if (!sibling || !this._cachedWidth) {\n return;\n }\n const activePercentage = Math.abs(sibling.translateX - source.translateX) / this._cachedWidth;\n if (source._isLeftThumb && this._cachedWidth) {\n this._setTrackActiveStyles({\n left: 'auto',\n right: `${this._cachedWidth - sibling.translateX}px`,\n transformOrigin: 'right',\n transform: `scaleX(${activePercentage})`\n });\n } else {\n this._setTrackActiveStyles({\n left: `${sibling.translateX}px`,\n right: 'auto',\n transformOrigin: 'left',\n transform: `scaleX(${activePercentage})`\n });\n }\n }\n _updateTrackUINonRange(source) {\n this._isRtl ? this._setTrackActiveStyles({\n left: 'auto',\n right: '0px',\n transformOrigin: 'right',\n transform: `scaleX(${1 - source.fillPercentage})`\n }) : this._setTrackActiveStyles({\n left: '0px',\n right: 'auto',\n transformOrigin: 'left',\n transform: `scaleX(${source.fillPercentage})`\n });\n }\n // Tick mark update conditions\n //\n // 1. Value\n // - Reason: a tick mark which was once active might now be inactive or vice versa.\n // 2. Min, max, or step\n // - Reason #1: the number of tick marks may have changed.\n // - Reason #2: The value may have silently changed.\n /** Updates the dots along the slider track. */\n _updateTickMarkUI() {\n if (!this.showTickMarks || this.step === undefined || this.min === undefined || this.max === undefined) {\n return;\n }\n const step = this.step > 0 ? this.step : 1;\n this._isRange ? this._updateTickMarkUIRange(step) : this._updateTickMarkUINonRange(step);\n }\n _updateTickMarkUINonRange(step) {\n const value = this._getValue();\n let numActive = Math.max(Math.round((value - this.min) / step), 0) + 1;\n let numInactive = Math.max(Math.round((this.max - value) / step), 0) - 1;\n this._isRtl ? numActive++ : numInactive++;\n this._tickMarks = Array(numActive).fill(_MatTickMark.ACTIVE).concat(Array(numInactive).fill(_MatTickMark.INACTIVE));\n }\n _updateTickMarkUIRange(step) {\n const endValue = this._getValue();\n const startValue = this._getValue(_MatThumb.START);\n const numInactiveBeforeStartThumb = Math.max(Math.round((startValue - this.min) / step), 0);\n const numActive = Math.max(Math.round((endValue - startValue) / step) + 1, 0);\n const numInactiveAfterEndThumb = Math.max(Math.round((this.max - endValue) / step), 0);\n this._tickMarks = Array(numInactiveBeforeStartThumb).fill(_MatTickMark.INACTIVE).concat(Array(numActive).fill(_MatTickMark.ACTIVE), Array(numInactiveAfterEndThumb).fill(_MatTickMark.INACTIVE));\n }\n /** Gets the slider thumb input of the given thumb position. */\n _getInput(thumbPosition) {\n if (thumbPosition === _MatThumb.END && this._input) {\n return this._input;\n }\n if (this._inputs?.length) {\n return thumbPosition === _MatThumb.START ? this._inputs.first : this._inputs.last;\n }\n return;\n }\n /** Gets the slider thumb HTML input element of the given thumb position. */\n _getThumb(thumbPosition) {\n return thumbPosition === _MatThumb.END ? this._thumbs?.last : this._thumbs?.first;\n }\n _setTransition(withAnimation) {\n this._hasAnimation = !this._platform.IOS && withAnimation && !this._noopAnimations;\n this._elementRef.nativeElement.classList.toggle('mat-mdc-slider-with-animation', this._hasAnimation);\n }\n /** Whether the given pointer event occurred within the bounds of the slider pointer's DOM Rect. */\n _isCursorOnSliderThumb(event, rect) {\n const radius = rect.width / 2;\n const centerX = rect.x + radius;\n const centerY = rect.y + radius;\n const dx = event.clientX - centerX;\n const dy = event.clientY - centerY;\n return Math.pow(dx, 2) + Math.pow(dy, 2) < Math.pow(radius, 2);\n }\n static ɵfac = function MatSlider_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSlider)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSlider,\n selectors: [[\"mat-slider\"]],\n contentQueries: function MatSlider_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MAT_SLIDER_THUMB, 5);\n i0.ɵɵcontentQuery(dirIndex, MAT_SLIDER_RANGE_THUMB, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._input = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._inputs = _t);\n }\n },\n viewQuery: function MatSlider_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c2, 5);\n i0.ɵɵviewQuery(MAT_SLIDER_VISUAL_THUMB, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._trackActive = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._thumbs = _t);\n }\n },\n hostAttrs: [1, \"mat-mdc-slider\", \"mdc-slider\"],\n hostVars: 12,\n hostBindings: function MatSlider_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassMap(\"mat-\" + (ctx.color || \"primary\"));\n i0.ɵɵclassProp(\"mdc-slider--range\", ctx._isRange)(\"mdc-slider--disabled\", ctx.disabled)(\"mdc-slider--discrete\", ctx.discrete)(\"mdc-slider--tick-marks\", ctx.showTickMarks)(\"_mat-animation-noopable\", ctx._noopAnimations);\n }\n },\n inputs: {\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n discrete: [2, \"discrete\", \"discrete\", booleanAttribute],\n showTickMarks: [2, \"showTickMarks\", \"showTickMarks\", booleanAttribute],\n min: [2, \"min\", \"min\", numberAttribute],\n color: \"color\",\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute],\n max: [2, \"max\", \"max\", numberAttribute],\n step: [2, \"step\", \"step\", numberAttribute],\n displayWith: \"displayWith\"\n },\n exportAs: [\"matSlider\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_SLIDER,\n useExisting: MatSlider\n }]), i0.ɵɵInputTransformsFeature],\n ngContentSelectors: _c3,\n decls: 9,\n vars: 5,\n consts: [[\"trackActive\", \"\"], [\"tickMarkContainer\", \"\"], [1, \"mdc-slider__track\"], [1, \"mdc-slider__track--inactive\"], [1, \"mdc-slider__track--active\"], [1, \"mdc-slider__track--active_fill\"], [1, \"mdc-slider__tick-marks\"], [3, \"discrete\", \"thumbPosition\", \"valueIndicatorText\"], [3, \"class\", \"transform\"]],\n template: function MatSlider_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n i0.ɵɵelementStart(1, \"div\", 2);\n i0.ɵɵelement(2, \"div\", 3);\n i0.ɵɵelementStart(3, \"div\", 4);\n i0.ɵɵelement(4, \"div\", 5, 0);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(6, MatSlider_Conditional_6_Template, 3, 1, \"div\", 6);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(7, MatSlider_Conditional_7_Template, 1, 3, \"mat-slider-visual-thumb\", 7);\n i0.ɵɵelement(8, \"mat-slider-visual-thumb\", 7);\n }\n if (rf & 2) {\n i0.ɵɵadvance(6);\n i0.ɵɵconditional(ctx.showTickMarks ? 6 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx._isRange ? 7 : -1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"discrete\", ctx.discrete)(\"thumbPosition\", 2)(\"valueIndicatorText\", ctx.endValueIndicatorText);\n }\n },\n dependencies: [MatSliderVisualThumb],\n styles: [\".mdc-slider__track{position:absolute;top:50%;transform:translateY(-50%);width:100%;pointer-events:none;height:var(--mdc-slider-inactive-track-height, 4px)}.mdc-slider__track--active,.mdc-slider__track--inactive{display:flex;height:100%;position:absolute;width:100%}.mdc-slider__track--active{overflow:hidden;border-radius:var(--mdc-slider-active-track-shape, var(--mat-sys-corner-full));height:var(--mdc-slider-active-track-height, 4px);top:calc((var(--mdc-slider-inactive-track-height, 4px) - var(--mdc-slider-active-track-height, 4px))/2)}.mdc-slider__track--active_fill{border-top-style:solid;box-sizing:border-box;height:100%;width:100%;position:relative;transform-origin:left;transition:transform 80ms ease;border-color:var(--mdc-slider-active-track-color, var(--mat-sys-primary));border-top-width:var(--mdc-slider-active-track-height, 4px)}.mdc-slider--disabled .mdc-slider__track--active_fill{border-color:var(--mdc-slider-disabled-active-track-color, var(--mat-sys-on-surface))}[dir=rtl] .mdc-slider__track--active_fill{-webkit-transform-origin:right;transform-origin:right}.mdc-slider__track--inactive{left:0;top:0;opacity:.24;background-color:var(--mdc-slider-inactive-track-color, var(--mat-sys-surface-variant));height:var(--mdc-slider-inactive-track-height, 4px);border-radius:var(--mdc-slider-inactive-track-shape, var(--mat-sys-corner-full))}.mdc-slider--disabled .mdc-slider__track--inactive{background-color:var(--mdc-slider-disabled-inactive-track-color, var(--mat-sys-on-surface));opacity:.24}.mdc-slider__track--inactive::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}@media(forced-colors: active){.mdc-slider__track--inactive::before{border-color:CanvasText}}.mdc-slider__value-indicator-container{bottom:44px;left:50%;pointer-events:none;position:absolute;transform:translateX(-50%);transform:var(--mat-slider-value-indicator-container-transform, translateX(-50%) rotate(-45deg))}.mdc-slider__thumb--with-indicator .mdc-slider__value-indicator-container{pointer-events:auto}.mdc-slider__value-indicator{display:flex;align-items:center;border-radius:4px;height:32px;padding:0 12px;transform:scale(0);transform-origin:bottom;opacity:1;transition:transform 100ms cubic-bezier(0.4, 0, 1, 1);word-break:normal;background-color:var(--mdc-slider-label-container-color, var(--mat-sys-primary));color:var(--mdc-slider-label-label-text-color, var(--mat-sys-on-primary));width:var(--mat-slider-value-indicator-width, 28px);height:var(--mat-slider-value-indicator-height, 28px);padding:var(--mat-slider-value-indicator-padding, 0);opacity:var(--mat-slider-value-indicator-opacity, 1);border-radius:var(--mat-slider-value-indicator-border-radius, 50% 50% 50% 0)}.mdc-slider__thumb--with-indicator .mdc-slider__value-indicator{transition:transform 100ms cubic-bezier(0, 0, 0.2, 1);transform:scale(1)}.mdc-slider__value-indicator::before{border-left:6px solid rgba(0,0,0,0);border-right:6px solid rgba(0,0,0,0);border-top:6px solid;bottom:-5px;content:\\\"\\\";height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;display:var(--mat-slider-value-indicator-caret-display, none);border-top-color:var(--mdc-slider-label-container-color, var(--mat-sys-primary))}.mdc-slider__value-indicator::after{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}@media(forced-colors: active){.mdc-slider__value-indicator::after{border-color:CanvasText}}.mdc-slider__value-indicator-text{text-align:center;width:var(--mat-slider-value-indicator-width, 28px);transform:var(--mat-slider-value-indicator-text-transform, rotate(45deg));font-family:var(--mdc-slider-label-label-text-font, var(--mat-sys-label-medium-font));font-size:var(--mdc-slider-label-label-text-size, var(--mat-sys-label-medium-size));font-weight:var(--mdc-slider-label-label-text-weight, var(--mat-sys-label-medium-weight));line-height:var(--mdc-slider-label-label-text-line-height, var(--mat-sys-label-medium-line-height));letter-spacing:var(--mdc-slider-label-label-text-tracking, var(--mat-sys-label-medium-tracking))}.mdc-slider__thumb{-webkit-user-select:none;user-select:none;display:flex;left:-24px;outline:none;position:absolute;height:48px;width:48px;pointer-events:none}.mdc-slider--discrete .mdc-slider__thumb{transition:transform 80ms ease}.mdc-slider--disabled .mdc-slider__thumb{pointer-events:none}.mdc-slider__thumb--top{z-index:1}.mdc-slider__thumb-knob{position:absolute;box-sizing:border-box;left:50%;top:50%;transform:translate(-50%, -50%);border-style:solid;width:var(--mdc-slider-handle-width, 20px);height:var(--mdc-slider-handle-height, 20px);border-width:calc(var(--mdc-slider-handle-height, 20px)/2) calc(var(--mdc-slider-handle-width, 20px)/2);box-shadow:var(--mdc-slider-handle-elevation, var(--mat-sys-level1));background-color:var(--mdc-slider-handle-color, var(--mat-sys-primary));border-color:var(--mdc-slider-handle-color, var(--mat-sys-primary));border-radius:var(--mdc-slider-handle-shape, var(--mat-sys-corner-full))}.mdc-slider__thumb:hover .mdc-slider__thumb-knob{background-color:var(--mdc-slider-hover-handle-color, var(--mat-sys-primary));border-color:var(--mdc-slider-hover-handle-color, var(--mat-sys-primary))}.mdc-slider__thumb--focused .mdc-slider__thumb-knob{background-color:var(--mdc-slider-focus-handle-color, var(--mat-sys-primary));border-color:var(--mdc-slider-focus-handle-color, var(--mat-sys-primary))}.mdc-slider--disabled .mdc-slider__thumb-knob{background-color:var(--mdc-slider-disabled-handle-color, var(--mat-sys-on-surface));border-color:var(--mdc-slider-disabled-handle-color, var(--mat-sys-on-surface))}.mdc-slider__thumb--top .mdc-slider__thumb-knob,.mdc-slider__thumb--top.mdc-slider__thumb:hover .mdc-slider__thumb-knob,.mdc-slider__thumb--top.mdc-slider__thumb--focused .mdc-slider__thumb-knob{border:solid 1px #fff;box-sizing:content-box;border-color:var(--mdc-slider-with-overlap-handle-outline-color, var(--mat-sys-on-primary));border-width:var(--mdc-slider-with-overlap-handle-outline-width, 1px)}.mdc-slider__tick-marks{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;padding:0 1px;position:absolute;width:100%}.mdc-slider__tick-mark--active,.mdc-slider__tick-mark--inactive{width:var(--mdc-slider-with-tick-marks-container-size, 2px);height:var(--mdc-slider-with-tick-marks-container-size, 2px);border-radius:var(--mdc-slider-with-tick-marks-container-shape, var(--mat-sys-corner-full))}.mdc-slider__tick-mark--inactive{opacity:var(--mdc-slider-with-tick-marks-inactive-container-opacity, 0.38);background-color:var(--mdc-slider-with-tick-marks-inactive-container-color, var(--mat-sys-on-surface-variant))}.mdc-slider--disabled .mdc-slider__tick-mark--inactive{opacity:var(--mdc-slider-with-tick-marks-inactive-container-opacity, 0.38);background-color:var(--mdc-slider-with-tick-marks-disabled-container-color, var(--mat-sys-on-surface))}.mdc-slider__tick-mark--active{opacity:var(--mdc-slider-with-tick-marks-active-container-opacity, 0.38);background-color:var(--mdc-slider-with-tick-marks-active-container-color, var(--mat-sys-on-primary))}.mdc-slider__input{cursor:pointer;left:2px;margin:0;height:44px;opacity:0;position:absolute;top:2px;width:44px;box-sizing:content-box}.mdc-slider__input.mat-mdc-slider-input-no-pointer-events{pointer-events:none}.mdc-slider__input.mat-slider__right-input{left:auto;right:0}.mat-mdc-slider{display:inline-block;box-sizing:border-box;outline:none;vertical-align:middle;cursor:pointer;height:48px;margin:0 8px;position:relative;touch-action:pan-y;width:auto;min-width:112px;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-slider.mdc-slider--disabled{cursor:auto;opacity:.38}.mat-mdc-slider .mdc-slider__thumb,.mat-mdc-slider .mdc-slider__track--active_fill{transition-duration:0ms}.mat-mdc-slider.mat-mdc-slider-with-animation .mdc-slider__thumb,.mat-mdc-slider.mat-mdc-slider-with-animation .mdc-slider__track--active_fill{transition-duration:80ms}.mat-mdc-slider.mdc-slider--discrete .mdc-slider__thumb,.mat-mdc-slider.mdc-slider--discrete .mdc-slider__track--active_fill{transition-duration:0ms}.mat-mdc-slider.mat-mdc-slider-with-animation .mdc-slider__thumb,.mat-mdc-slider.mat-mdc-slider-with-animation .mdc-slider__track--active_fill{transition-duration:80ms}.mat-mdc-slider .mat-ripple .mat-ripple-element{background-color:var(--mat-slider-ripple-color, var(--mat-sys-primary))}.mat-mdc-slider .mat-ripple .mat-mdc-slider-hover-ripple{background-color:var(--mat-slider-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-primary) 5%, transparent))}.mat-mdc-slider .mat-ripple .mat-mdc-slider-focus-ripple,.mat-mdc-slider .mat-ripple .mat-mdc-slider-active-ripple{background-color:var(--mat-slider-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-primary) 20%, transparent))}.mat-mdc-slider._mat-animation-noopable.mdc-slider--discrete .mdc-slider__thumb,.mat-mdc-slider._mat-animation-noopable.mdc-slider--discrete .mdc-slider__track--active_fill,.mat-mdc-slider._mat-animation-noopable .mdc-slider__value-indicator{transition:none}.mat-mdc-slider .mat-focus-indicator::before{border-radius:50%}.mdc-slider__thumb--focused .mat-focus-indicator::before{content:\\\"\\\"}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n return MatSlider;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Ensures that there is not an invalid configuration for the slider thumb inputs. */\nfunction _validateInputs(isRange, endInputElement, startInputElement) {\n const startValid = !isRange || startInputElement?._hostElement.hasAttribute('matSliderStartThumb');\n const endValid = endInputElement?._hostElement.hasAttribute(isRange ? 'matSliderEndThumb' : 'matSliderThumb');\n if (!startValid || !endValid) {\n _throwInvalidInputConfigurationError();\n }\n}\nfunction _throwInvalidInputConfigurationError() {\n throw Error(`Invalid slider thumb input configuration!\n\n Valid configurations are as follows:\n\n \n \n \n\n or\n\n \n \n \n \n `);\n}\n\n/**\n * Provider that allows the slider thumb to register as a ControlValueAccessor.\n * @docs-private\n */\nconst MAT_SLIDER_THUMB_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: /*#__PURE__*/forwardRef(() => MatSliderThumb),\n multi: true\n};\n/**\n * Provider that allows the range slider thumb to register as a ControlValueAccessor.\n * @docs-private\n */\nconst MAT_SLIDER_RANGE_THUMB_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: /*#__PURE__*/forwardRef(() => MatSliderRangeThumb),\n multi: true\n};\n/**\n * Directive that adds slider-specific behaviors to an input element inside ``.\n * Up to two may be placed inside of a ``.\n *\n * If one is used, the selector `matSliderThumb` must be used, and the outcome will be a normal\n * slider. If two are used, the selectors `matSliderStartThumb` and `matSliderEndThumb` must be\n * used, and the outcome will be a range slider with two slider thumbs.\n */\nlet MatSliderThumb = /*#__PURE__*/(() => {\n class MatSliderThumb {\n _ngZone = inject(NgZone);\n _elementRef = inject(ElementRef);\n _cdr = inject(ChangeDetectorRef);\n _slider = inject(MAT_SLIDER);\n _platform = inject(Platform);\n _listenerCleanups;\n get value() {\n return numberAttribute(this._hostElement.value, 0);\n }\n set value(value) {\n value = isNaN(value) ? 0 : value;\n const stringValue = value + '';\n if (!this._hasSetInitialValue) {\n this._initialValue = stringValue;\n return;\n }\n if (this._isActive) {\n return;\n }\n this._setValue(stringValue);\n }\n /**\n * Handles programmatic value setting. This has been split out to\n * allow the range thumb to override it and add additional necessary logic.\n */\n _setValue(value) {\n this._hostElement.value = value;\n this._updateThumbUIByValue();\n this._slider._onValueChange(this);\n this._cdr.detectChanges();\n this._slider._cdr.markForCheck();\n }\n /** Event emitted when the `value` is changed. */\n valueChange = new EventEmitter();\n /** Event emitted when the slider thumb starts being dragged. */\n dragStart = new EventEmitter();\n /** Event emitted when the slider thumb stops being dragged. */\n dragEnd = new EventEmitter();\n /**\n * The current translateX in px of the slider visual thumb.\n * @docs-private\n */\n get translateX() {\n if (this._slider.min >= this._slider.max) {\n this._translateX = this._tickMarkOffset;\n return this._translateX;\n }\n if (this._translateX === undefined) {\n this._translateX = this._calcTranslateXByValue();\n }\n return this._translateX;\n }\n set translateX(v) {\n this._translateX = v;\n }\n _translateX;\n /**\n * Indicates whether this thumb is the start or end thumb.\n * @docs-private\n */\n thumbPosition = _MatThumb.END;\n /** @docs-private */\n get min() {\n return numberAttribute(this._hostElement.min, 0);\n }\n set min(v) {\n this._hostElement.min = v + '';\n this._cdr.detectChanges();\n }\n /** @docs-private */\n get max() {\n return numberAttribute(this._hostElement.max, 0);\n }\n set max(v) {\n this._hostElement.max = v + '';\n this._cdr.detectChanges();\n }\n get step() {\n return numberAttribute(this._hostElement.step, 0);\n }\n set step(v) {\n this._hostElement.step = v + '';\n this._cdr.detectChanges();\n }\n /** @docs-private */\n get disabled() {\n return booleanAttribute(this._hostElement.disabled);\n }\n set disabled(v) {\n this._hostElement.disabled = v;\n this._cdr.detectChanges();\n if (this._slider.disabled !== this.disabled) {\n this._slider.disabled = this.disabled;\n }\n }\n /** The percentage of the slider that coincides with the value. */\n get percentage() {\n if (this._slider.min >= this._slider.max) {\n return this._slider._isRtl ? 1 : 0;\n }\n return (this.value - this._slider.min) / (this._slider.max - this._slider.min);\n }\n /** @docs-private */\n get fillPercentage() {\n if (!this._slider._cachedWidth) {\n return this._slider._isRtl ? 1 : 0;\n }\n if (this._translateX === 0) {\n return 0;\n }\n return this.translateX / this._slider._cachedWidth;\n }\n /** The host native HTML input element. */\n _hostElement = this._elementRef.nativeElement;\n /** The aria-valuetext string representation of the input's value. */\n _valuetext = signal('');\n /** The radius of a native html slider's knob. */\n _knobRadius = 8;\n /** The distance in px from the start of the slider track to the first tick mark. */\n _tickMarkOffset = 3;\n /** Whether user's cursor is currently in a mouse down state on the input. */\n _isActive = false;\n /** Whether the input is currently focused (either by tab or after clicking). */\n _isFocused = false;\n /** Used to relay updates to _isFocused to the slider visual thumbs. */\n _setIsFocused(v) {\n this._isFocused = v;\n }\n /**\n * Whether the initial value has been set.\n * This exists because the initial value cannot be immediately set because the min and max\n * must first be relayed from the parent MatSlider component, which can only happen later\n * in the component lifecycle.\n */\n _hasSetInitialValue = false;\n /** The stored initial value. */\n _initialValue;\n /** Defined when a user is using a form control to manage slider value & validation. */\n _formControl;\n /** Emits when the component is destroyed. */\n _destroyed = new Subject();\n /**\n * Indicates whether UI updates should be skipped.\n *\n * This flag is used to avoid flickering\n * when correcting values on pointer up/down.\n */\n _skipUIUpdate = false;\n /** Callback called when the slider input value changes. */\n _onChangeFn;\n /** Callback called when the slider input has been touched. */\n _onTouchedFn = () => {};\n /**\n * Whether the NgModel has been initialized.\n *\n * This flag is used to ignore ghost null calls to\n * writeValue which can break slider initialization.\n *\n * See https://github.com/angular/angular/issues/14988.\n */\n _isControlInitialized = false;\n constructor() {\n const renderer = inject(Renderer2);\n this._ngZone.runOutsideAngular(() => {\n this._listenerCleanups = [renderer.listen(this._hostElement, 'pointerdown', this._onPointerDown.bind(this)), renderer.listen(this._hostElement, 'pointermove', this._onPointerMove.bind(this)), renderer.listen(this._hostElement, 'pointerup', this._onPointerUp.bind(this))];\n });\n }\n ngOnDestroy() {\n this._listenerCleanups.forEach(cleanup => cleanup());\n this._destroyed.next();\n this._destroyed.complete();\n this.dragStart.complete();\n this.dragEnd.complete();\n }\n /** @docs-private */\n initProps() {\n this._updateWidthInactive();\n // If this or the parent slider is disabled, just make everything disabled.\n if (this.disabled !== this._slider.disabled) {\n // The MatSlider setter for disabled will relay this and disable both inputs.\n this._slider.disabled = true;\n }\n this.step = this._slider.step;\n this.min = this._slider.min;\n this.max = this._slider.max;\n this._initValue();\n }\n /** @docs-private */\n initUI() {\n this._updateThumbUIByValue();\n }\n _initValue() {\n this._hasSetInitialValue = true;\n if (this._initialValue === undefined) {\n this.value = this._getDefaultValue();\n } else {\n this._hostElement.value = this._initialValue;\n this._updateThumbUIByValue();\n this._slider._onValueChange(this);\n this._cdr.detectChanges();\n }\n }\n _getDefaultValue() {\n return this.min;\n }\n _onBlur() {\n this._setIsFocused(false);\n this._onTouchedFn();\n }\n _onFocus() {\n this._slider._setTransition(false);\n this._slider._updateTrackUI(this);\n this._setIsFocused(true);\n }\n _onChange() {\n this.valueChange.emit(this.value);\n // only used to handle the edge case where user\n // mousedown on the slider then uses arrow keys.\n if (this._isActive) {\n this._updateThumbUIByValue({\n withAnimation: true\n });\n }\n }\n _onInput() {\n this._onChangeFn?.(this.value);\n // handles arrowing and updating the value when\n // a step is defined.\n if (this._slider.step || !this._isActive) {\n this._updateThumbUIByValue({\n withAnimation: true\n });\n }\n this._slider._onValueChange(this);\n }\n _onNgControlValueChange() {\n // only used to handle when the value change\n // originates outside of the slider.\n if (!this._isActive || !this._isFocused) {\n this._slider._onValueChange(this);\n this._updateThumbUIByValue();\n }\n this._slider.disabled = this._formControl.disabled;\n }\n _onPointerDown(event) {\n if (this.disabled || event.button !== 0) {\n return;\n }\n // On IOS, dragging only works if the pointer down happens on the\n // slider thumb and the slider does not receive focus from pointer events.\n if (this._platform.IOS) {\n const isCursorOnSliderThumb = this._slider._isCursorOnSliderThumb(event, this._slider._getThumb(this.thumbPosition)._hostElement.getBoundingClientRect());\n this._isActive = isCursorOnSliderThumb;\n this._updateWidthActive();\n this._slider._updateDimensions();\n return;\n }\n this._isActive = true;\n this._setIsFocused(true);\n this._updateWidthActive();\n this._slider._updateDimensions();\n // Does nothing if a step is defined because we\n // want the value to snap to the values on input.\n if (!this._slider.step) {\n this._updateThumbUIByPointerEvent(event, {\n withAnimation: true\n });\n }\n if (!this.disabled) {\n this._handleValueCorrection(event);\n this.dragStart.emit({\n source: this,\n parent: this._slider,\n value: this.value\n });\n }\n }\n /**\n * Corrects the value of the slider on pointer up/down.\n *\n * Called on pointer down and up because the value is set based\n * on the inactive width instead of the active width.\n */\n _handleValueCorrection(event) {\n // Don't update the UI with the current value! The value on pointerdown\n // and pointerup is calculated in the split second before the input(s)\n // resize. See _updateWidthInactive() and _updateWidthActive() for more\n // details.\n this._skipUIUpdate = true;\n // Note that this function gets triggered before the actual value of the\n // slider is updated. This means if we were to set the value here, it\n // would immediately be overwritten. Using setTimeout ensures the setting\n // of the value happens after the value has been updated by the\n // pointerdown event.\n setTimeout(() => {\n this._skipUIUpdate = false;\n this._fixValue(event);\n }, 0);\n }\n /** Corrects the value of the slider based on the pointer event's position. */\n _fixValue(event) {\n const xPos = event.clientX - this._slider._cachedLeft;\n const width = this._slider._cachedWidth;\n const step = this._slider.step === 0 ? 1 : this._slider.step;\n const numSteps = Math.floor((this._slider.max - this._slider.min) / step);\n const percentage = this._slider._isRtl ? 1 - xPos / width : xPos / width;\n // To ensure the percentage is rounded to the necessary number of decimals.\n const fixedPercentage = Math.round(percentage * numSteps) / numSteps;\n const impreciseValue = fixedPercentage * (this._slider.max - this._slider.min) + this._slider.min;\n const value = Math.round(impreciseValue / step) * step;\n const prevValue = this.value;\n if (value === prevValue) {\n // Because we prevented UI updates, if it turns out that the race\n // condition didn't happen and the value is already correct, we\n // have to apply the ui updates now.\n this._slider._onValueChange(this);\n this._slider.step > 0 ? this._updateThumbUIByValue() : this._updateThumbUIByPointerEvent(event, {\n withAnimation: this._slider._hasAnimation\n });\n return;\n }\n this.value = value;\n this.valueChange.emit(this.value);\n this._onChangeFn?.(this.value);\n this._slider._onValueChange(this);\n this._slider.step > 0 ? this._updateThumbUIByValue() : this._updateThumbUIByPointerEvent(event, {\n withAnimation: this._slider._hasAnimation\n });\n }\n _onPointerMove(event) {\n // Again, does nothing if a step is defined because\n // we want the value to snap to the values on input.\n if (!this._slider.step && this._isActive) {\n this._updateThumbUIByPointerEvent(event);\n }\n }\n _onPointerUp() {\n if (this._isActive) {\n this._isActive = false;\n if (this._platform.SAFARI) {\n this._setIsFocused(false);\n }\n this.dragEnd.emit({\n source: this,\n parent: this._slider,\n value: this.value\n });\n // This setTimeout is to prevent the pointerup from triggering a value\n // change on the input based on the inactive width. It's not clear why\n // but for some reason on IOS this race condition is even more common so\n // the timeout needs to be increased.\n setTimeout(() => this._updateWidthInactive(), this._platform.IOS ? 10 : 0);\n }\n }\n _clamp(v) {\n const min = this._tickMarkOffset;\n const max = this._slider._cachedWidth - this._tickMarkOffset;\n return Math.max(Math.min(v, max), min);\n }\n _calcTranslateXByValue() {\n if (this._slider._isRtl) {\n return (1 - this.percentage) * (this._slider._cachedWidth - this._tickMarkOffset * 2) + this._tickMarkOffset;\n }\n return this.percentage * (this._slider._cachedWidth - this._tickMarkOffset * 2) + this._tickMarkOffset;\n }\n _calcTranslateXByPointerEvent(event) {\n return event.clientX - this._slider._cachedLeft;\n }\n /**\n * Used to set the slider width to the correct\n * dimensions while the user is dragging.\n */\n _updateWidthActive() {}\n /**\n * Sets the slider input to disproportionate dimensions to allow for touch\n * events to be captured on touch devices.\n */\n _updateWidthInactive() {\n this._hostElement.style.padding = `0 ${this._slider._inputPadding}px`;\n this._hostElement.style.width = `calc(100% + ${this._slider._inputPadding - this._tickMarkOffset * 2}px)`;\n this._hostElement.style.left = `-${this._slider._rippleRadius - this._tickMarkOffset}px`;\n }\n _updateThumbUIByValue(options) {\n this.translateX = this._clamp(this._calcTranslateXByValue());\n this._updateThumbUI(options);\n }\n _updateThumbUIByPointerEvent(event, options) {\n this.translateX = this._clamp(this._calcTranslateXByPointerEvent(event));\n this._updateThumbUI(options);\n }\n _updateThumbUI(options) {\n this._slider._setTransition(!!options?.withAnimation);\n this._slider._onTranslateXChange(this);\n }\n /**\n * Sets the input's value.\n * @param value The new value of the input\n * @docs-private\n */\n writeValue(value) {\n if (this._isControlInitialized || value !== null) {\n this.value = value;\n }\n }\n /**\n * Registers a callback to be invoked when the input's value changes from user input.\n * @param fn The callback to register\n * @docs-private\n */\n registerOnChange(fn) {\n this._onChangeFn = fn;\n this._isControlInitialized = true;\n }\n /**\n * Registers a callback to be invoked when the input is blurred by the user.\n * @param fn The callback to register\n * @docs-private\n */\n registerOnTouched(fn) {\n this._onTouchedFn = fn;\n }\n /**\n * Sets the disabled state of the slider.\n * @param isDisabled The new disabled state\n * @docs-private\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n focus() {\n this._hostElement.focus();\n }\n blur() {\n this._hostElement.blur();\n }\n static ɵfac = function MatSliderThumb_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSliderThumb)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSliderThumb,\n selectors: [[\"input\", \"matSliderThumb\", \"\"]],\n hostAttrs: [\"type\", \"range\", 1, \"mdc-slider__input\"],\n hostVars: 1,\n hostBindings: function MatSliderThumb_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"change\", function MatSliderThumb_change_HostBindingHandler() {\n return ctx._onChange();\n })(\"input\", function MatSliderThumb_input_HostBindingHandler() {\n return ctx._onInput();\n })(\"blur\", function MatSliderThumb_blur_HostBindingHandler() {\n return ctx._onBlur();\n })(\"focus\", function MatSliderThumb_focus_HostBindingHandler() {\n return ctx._onFocus();\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-valuetext\", ctx._valuetext());\n }\n },\n inputs: {\n value: [2, \"value\", \"value\", numberAttribute]\n },\n outputs: {\n valueChange: \"valueChange\",\n dragStart: \"dragStart\",\n dragEnd: \"dragEnd\"\n },\n exportAs: [\"matSliderThumb\"],\n features: [i0.ɵɵProvidersFeature([MAT_SLIDER_THUMB_VALUE_ACCESSOR, {\n provide: MAT_SLIDER_THUMB,\n useExisting: MatSliderThumb\n }]), i0.ɵɵInputTransformsFeature]\n });\n }\n return MatSliderThumb;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatSliderRangeThumb = /*#__PURE__*/(() => {\n class MatSliderRangeThumb extends MatSliderThumb {\n _cdr = inject(ChangeDetectorRef);\n /** @docs-private */\n getSibling() {\n if (!this._sibling) {\n this._sibling = this._slider._getInput(this._isEndThumb ? _MatThumb.START : _MatThumb.END);\n }\n return this._sibling;\n }\n _sibling;\n /**\n * Returns the minimum translateX position allowed for this slider input's visual thumb.\n * @docs-private\n */\n getMinPos() {\n const sibling = this.getSibling();\n if (!this._isLeftThumb && sibling) {\n return sibling.translateX;\n }\n return this._tickMarkOffset;\n }\n /**\n * Returns the maximum translateX position allowed for this slider input's visual thumb.\n * @docs-private\n */\n getMaxPos() {\n const sibling = this.getSibling();\n if (this._isLeftThumb && sibling) {\n return sibling.translateX;\n }\n return this._slider._cachedWidth - this._tickMarkOffset;\n }\n _setIsLeftThumb() {\n this._isLeftThumb = this._isEndThumb && this._slider._isRtl || !this._isEndThumb && !this._slider._isRtl;\n }\n /** Whether this slider corresponds to the input on the left hand side. */\n _isLeftThumb;\n /** Whether this slider corresponds to the input with greater value. */\n _isEndThumb;\n constructor() {\n super();\n this._isEndThumb = this._hostElement.hasAttribute('matSliderEndThumb');\n this._setIsLeftThumb();\n this.thumbPosition = this._isEndThumb ? _MatThumb.END : _MatThumb.START;\n }\n _getDefaultValue() {\n return this._isEndThumb && this._slider._isRange ? this.max : this.min;\n }\n _onInput() {\n super._onInput();\n this._updateSibling();\n if (!this._isActive) {\n this._updateWidthInactive();\n }\n }\n _onNgControlValueChange() {\n super._onNgControlValueChange();\n this.getSibling()?._updateMinMax();\n }\n _onPointerDown(event) {\n if (this.disabled || event.button !== 0) {\n return;\n }\n if (this._sibling) {\n this._sibling._updateWidthActive();\n this._sibling._hostElement.classList.add('mat-mdc-slider-input-no-pointer-events');\n }\n super._onPointerDown(event);\n }\n _onPointerUp() {\n super._onPointerUp();\n if (this._sibling) {\n setTimeout(() => {\n this._sibling._updateWidthInactive();\n this._sibling._hostElement.classList.remove('mat-mdc-slider-input-no-pointer-events');\n });\n }\n }\n _onPointerMove(event) {\n super._onPointerMove(event);\n if (!this._slider.step && this._isActive) {\n this._updateSibling();\n }\n }\n _fixValue(event) {\n super._fixValue(event);\n this._sibling?._updateMinMax();\n }\n _clamp(v) {\n return Math.max(Math.min(v, this.getMaxPos()), this.getMinPos());\n }\n _updateMinMax() {\n const sibling = this.getSibling();\n if (!sibling) {\n return;\n }\n if (this._isEndThumb) {\n this.min = Math.max(this._slider.min, sibling.value);\n this.max = this._slider.max;\n } else {\n this.min = this._slider.min;\n this.max = Math.min(this._slider.max, sibling.value);\n }\n }\n _updateWidthActive() {\n const minWidth = this._slider._rippleRadius * 2 - this._slider._inputPadding * 2;\n const maxWidth = this._slider._cachedWidth + this._slider._inputPadding - minWidth - this._tickMarkOffset * 2;\n const percentage = this._slider.min < this._slider.max ? (this.max - this.min) / (this._slider.max - this._slider.min) : 1;\n const width = maxWidth * percentage + minWidth;\n this._hostElement.style.width = `${width}px`;\n this._hostElement.style.padding = `0 ${this._slider._inputPadding}px`;\n }\n _updateWidthInactive() {\n const sibling = this.getSibling();\n if (!sibling) {\n return;\n }\n const maxWidth = this._slider._cachedWidth - this._tickMarkOffset * 2;\n const midValue = this._isEndThumb ? this.value - (this.value - sibling.value) / 2 : this.value + (sibling.value - this.value) / 2;\n const _percentage = this._isEndThumb ? (this.max - midValue) / (this._slider.max - this._slider.min) : (midValue - this.min) / (this._slider.max - this._slider.min);\n const percentage = this._slider.min < this._slider.max ? _percentage : 1;\n // Extend the native input width by the radius of the ripple\n let ripplePadding = this._slider._rippleRadius;\n // If one of the inputs is maximally sized (the value of both thumbs is\n // equal to the min or max), make that input take up all of the width and\n // make the other unselectable.\n if (percentage === 1) {\n ripplePadding = 48;\n } else if (percentage === 0) {\n ripplePadding = 0;\n }\n const width = maxWidth * percentage + ripplePadding;\n this._hostElement.style.width = `${width}px`;\n this._hostElement.style.padding = '0px';\n if (this._isLeftThumb) {\n this._hostElement.style.left = `-${this._slider._rippleRadius - this._tickMarkOffset}px`;\n this._hostElement.style.right = 'auto';\n } else {\n this._hostElement.style.left = 'auto';\n this._hostElement.style.right = `-${this._slider._rippleRadius - this._tickMarkOffset}px`;\n }\n }\n _updateStaticStyles() {\n this._hostElement.classList.toggle('mat-slider__right-input', !this._isLeftThumb);\n }\n _updateSibling() {\n const sibling = this.getSibling();\n if (!sibling) {\n return;\n }\n sibling._updateMinMax();\n if (this._isActive) {\n sibling._updateWidthActive();\n } else {\n sibling._updateWidthInactive();\n }\n }\n /**\n * Sets the input's value.\n * @param value The new value of the input\n * @docs-private\n */\n writeValue(value) {\n if (this._isControlInitialized || value !== null) {\n this.value = value;\n this._updateWidthInactive();\n this._updateSibling();\n }\n }\n _setValue(value) {\n super._setValue(value);\n this._updateWidthInactive();\n this._updateSibling();\n }\n static ɵfac = function MatSliderRangeThumb_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSliderRangeThumb)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSliderRangeThumb,\n selectors: [[\"input\", \"matSliderStartThumb\", \"\"], [\"input\", \"matSliderEndThumb\", \"\"]],\n exportAs: [\"matSliderRangeThumb\"],\n features: [i0.ɵɵProvidersFeature([MAT_SLIDER_RANGE_THUMB_VALUE_ACCESSOR, {\n provide: MAT_SLIDER_RANGE_THUMB,\n useExisting: MatSliderRangeThumb\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n return MatSliderRangeThumb;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatSliderModule = /*#__PURE__*/(() => {\n class MatSliderModule {\n static ɵfac = function MatSliderModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSliderModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatSliderModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule, MatRippleModule]\n });\n }\n return MatSliderModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSlider, MatSliderChange, MatSliderModule, MatSliderRangeThumb, MatSliderThumb, MatSliderVisualThumb };\n","import { Component, input, output } from '@angular/core';\nimport { GoalInterface } from '@vendasta/ai-assistants/lib/_internal/interfaces/goal.interface';\nimport { MatListModule } from '@angular/material/list';\nimport { MatCardModule } from '@angular/material/card';\nimport { AiAssistantI18nModule } from '../../../assets/i18n/ai-assistant-i18n.module';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ai-goals-list',\n imports: [CommonModule, MatCardModule, MatListModule, AiAssistantI18nModule],\n templateUrl: './goals-list.component.html',\n styleUrl: './goals-list.component.scss',\n})\nexport class GoalsListComponent {\n readonly goals = input.required();\n goalClicked = output();\n}\n","
\n @for (goal of goals(); track goal) {\n \n \n
\n {{ goal.name }}\n
\n
\n {{ goal.description }}\n
\n
\n
\n }\n
\n","import { inject, Injectable } from '@angular/core';\nimport {\n FunctionApiService,\n GoalApiService,\n GoalInterface,\n PromptModuleApiService,\n PromptModuleInterface,\n PromptVersion,\n} from '@vendasta/ai-assistants';\nimport { getNamespace } from './ai-assistant-utils';\nimport { map, Observable } from 'rxjs';\nimport { HttpResponse } from '@angular/common/http';\nimport { PromptModuleKeyInterface } from '@vendasta/ai-assistants/lib/_internal/interfaces/prompt.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AiGoalService {\n private readonly goalApiService = inject(GoalApiService);\n private readonly promptModuleApiService = inject(PromptModuleApiService);\n private readonly functionApiService = inject(FunctionApiService);\n\n buildGoalConfigurationUrl(accountGroupId: string, goalId: string): string {\n if (accountGroupId) {\n return `/account/location/${accountGroupId}/ai/goals/${goalId}/edit`;\n }\n return `/ai/goals/${goalId}/edit`;\n }\n\n getGoal(accountGroupId: string, partnerId: string, goalId: string): Observable {\n return this.goalApiService\n .get({\n id: goalId,\n namespace: getNamespace(accountGroupId, partnerId),\n })\n .pipe(map((response) => response?.goal));\n }\n\n getPromptModule(promptModuleId: PromptModuleKeyInterface): Observable<{\n promptModule: PromptModuleInterface;\n promptVersion: PromptVersion;\n }> {\n return this.promptModuleApiService\n .getDeployedVersion({\n id: promptModuleId.id,\n namespace: promptModuleId.namespace,\n })\n .pipe(\n map((response) => ({\n promptModule: response?.promptModule,\n promptVersion: response?.deployedPromptModuleVersion,\n })),\n );\n }\n\n upsertGoal(goal: GoalInterface): Observable> {\n return this.goalApiService.upsert({ goal });\n }\n}\n","import { CommonModule, Location } from '@angular/common';\nimport {\n Component,\n computed,\n DestroyRef,\n effect,\n EnvironmentInjector,\n HostListener,\n inject,\n OnDestroy,\n runInInjectionContext,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { FormArray, FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { KnowledgeSource } from '@vendasta/embeddings';\nimport { AiKnowledgeService, ApplicationKnowledgeComponent } from '@galaxy/ai-knowledge';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { GalaxyPageNoAccessUnauthorizedModule } from '@vendasta/galaxy/page-no-access-unauthorized';\nimport {\n catchError,\n combineLatest,\n distinctUntilChanged,\n EMPTY,\n firstValueFrom,\n map,\n of,\n shareReplay,\n startWith,\n switchMap,\n take,\n throwError,\n} from 'rxjs';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport {\n AssistantApiService,\n AssistantInterface,\n AssistantType,\n ConfigurableGoal,\n ConfigurableGoalInterface,\n ConnectionInterface,\n KeyValuePairInterface,\n Namespace,\n VendorModel,\n} from '@vendasta/ai-assistants';\n\nimport { AiAssistantService } from '../../../core/services/ai-assistant.service';\nimport { BookingConfigService } from '../../../core/services/booking-config.service';\nimport {\n DEFAULT_CONNECTION_PREFIX,\n knowledgeAppType,\n WEBCHAT_WIDGET_CONNECTION_TYPE,\n} from '../../../core/ai-assistant.constants';\nimport { EnableLeadCaptureDialogComponent } from '../enable-lead-capture-dialog/enable-lead-capture-dialog.component';\nimport { AdditionalInstructionsDialogComponent } from '../../additional-instructions-dialog/additional-instructions-dialog.component';\nimport { StickyFooterComponent } from '../../sticky-footer/sticky-footer.component';\nimport { ImageUploadComponent } from '../image-upload/image-upload.component';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { AiAssistantI18nModule } from '../../../assets/i18n/ai-assistant-i18n.module';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport {\n AssistantIdToAssistantType,\n familyFromVoice,\n getVoiceFamilies,\n previewUrlFromVoice,\n voicesForFamily,\n} from '../../../core/services/ai-assistant-utils';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { ACCOUNT_GROUP_ID_TOKEN, AI_DEFAULT_WORKFORCE_TOKEN, PARTNER_ID_TOKEN } from '../../../core/tokens';\nimport { UnsavedChangesGuard } from './unsaved-changes.guard';\nimport { ConversationApiService, Widget } from '@vendasta/conversation';\nimport { AiAssistantVoiceUsageComponent } from '../../ai-assistant-voice-usage/ai-assistant-voice-usage.component';\nimport { PopoverPositions } from '@vendasta/galaxy/popover';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { CdkAccordionModule } from '@angular/cdk/accordion';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { AiVoice, AiVoiceFamily, MeetingType } from '../../../core/interfaces/config.interface';\nimport { FeatureFlagService } from '@galaxy/partner';\nimport {\n AiConnection,\n ConnectionType,\n MY_LISTING_CONNECTION_NAME,\n} from '../../../core/interfaces/ai-assistant.interface';\nimport { TranslateService } from '@galaxy/lexicon';\nimport { GoalsListComponent } from '../goals-and-instructions/goals-list.component';\nimport { AiGoalService } from '../../../core/services/ai-goal.service';\n\nconst ADDITIONAL_INSTRUCTIONS_LIMIT = 10000;\nconst FALLBACK_BACK_URL = '../../';\nconst MEETING_URL = '../../../../events-and-meetings';\n\n// Default global goals\nconst DEFAULT_LEAD_CAPTURE_GOAL_ID = 'DefaultLeadCapture';\nconst DEFAULT_MEETING_BOOKING_GOAL_ID = 'BookAppointmentsWithBookMeNow';\nconst ADDITIONAL_INSTRUCTIONS_GOAL_ID = 'AdditionalInstructions';\nconst DEEPGRAM_SPEAK_FEATURE_FLAG = 'deepgram_speak';\n\n// Goal configuration keys\nconst GOAL_CONFIG_KEY_CALENDAR_ID = 'calendarId';\nconst GOAL_CONFIG_KEY_MEETING_TYPE_ID = 'meetingTypeId';\n\n@Component({\n selector: 'ai-assistant-form',\n imports: [\n CommonModule,\n MatInputModule,\n MatCardModule,\n MatOptionModule,\n MatSelectModule,\n MatSliderModule,\n CdkAccordionModule,\n ReactiveFormsModule,\n FormsModule,\n MatButtonModule,\n GalaxyFormFieldModule,\n GalaxyLoadingSpinnerModule,\n GalaxyPageNoAccessUnauthorizedModule,\n AiAssistantI18nModule,\n MatCheckboxModule,\n RouterModule,\n MatIconModule,\n MatButtonToggleModule,\n MatDialogModule,\n MatDividerModule,\n ApplicationKnowledgeComponent,\n GalaxyBadgeModule,\n ImageUploadComponent,\n GalaxyTooltipModule,\n StickyFooterComponent,\n GalaxyPageModule,\n GalaxyAlertModule,\n GalaxyEmptyStateModule,\n GalaxyAvatarModule,\n AiAssistantVoiceUsageComponent,\n GoalsListComponent,\n ],\n templateUrl: './ai-assistant-form.component.html',\n styleUrls: ['./ai-assistant-form.component.scss'],\n})\nexport class AiAssistantFormComponent implements OnDestroy {\n private destroyRef = inject(DestroyRef);\n\n PopoverPositions = PopoverPositions;\n\n static connectionsFormGroupFactory(assistant?: AssistantInterface, aiConnections?: AiConnection[]): FormGroup {\n const formArray =\n aiConnections?.map(\n (aiConnection) =>\n new FormControl({\n value: aiConnection.connection.assistantKeys?.some((assistantKey) => assistantKey.id === assistant?.id),\n disabled: aiConnection.connection.isConnectionLocked || aiConnection.isDefault,\n }),\n ) || [];\n\n return new FormGroup({\n connections: new FormArray(formArray),\n });\n }\n\n static assistantFormGroupFactory(\n assistantService: AiAssistantService,\n assistant?: AssistantInterface,\n additionalInstructions?: string,\n ) {\n let leadCaptureEnabled = false;\n if (assistantService.$isAssistantGoalsEnabled()) {\n leadCaptureEnabled =\n assistant?.configurableGoals?.some((goal) => goal.goal?.id === DEFAULT_LEAD_CAPTURE_GOAL_ID) || false;\n } else {\n leadCaptureEnabled = assistant?.config?.inboxConfig?.leadCaptureEnabled || false;\n additionalInstructions = assistant?.config?.inboxConfig?.additionalInstructions || '';\n }\n\n let meetingBookingEnabled = false;\n let calendarId = '';\n let meetingTypeId = '';\n if (assistantService.$isAIMeetingBookingEnabled()) {\n const bookingGoal = assistant?.configurableGoals?.find(\n (goal) => goal.goal?.id === DEFAULT_MEETING_BOOKING_GOAL_ID,\n );\n\n meetingBookingEnabled = Boolean(bookingGoal);\n calendarId =\n bookingGoal?.configuration?.find((config) => config.key === GOAL_CONFIG_KEY_CALENDAR_ID)?.value || '';\n meetingTypeId =\n bookingGoal?.configuration?.find((config) => config.key === GOAL_CONFIG_KEY_MEETING_TYPE_ID)?.value || '';\n }\n\n return new FormGroup({\n name: new FormControl(assistant?.name || ''),\n assistantAvatarUrl: new FormControl(assistant?.avatarUrl || ''),\n enableLeadCapture: new FormControl(leadCaptureEnabled || false),\n enableMeetingBooking: new FormControl(meetingBookingEnabled || false),\n calendarAndMeetingType: new FormControl({\n calendarId: calendarId || '',\n meetingTypeId: meetingTypeId || '',\n }),\n additionalPrompt: new FormControl(additionalInstructions || '', [\n Validators.maxLength(ADDITIONAL_INSTRUCTIONS_LIMIT),\n ]),\n assistantId: new FormControl(assistant?.id || ''),\n namespace: new FormControl(assistant?.namespace),\n });\n }\n\n static voiceConfigFormGroupFactory(assistant?: AssistantInterface) {\n // There is a translation here between the options we present to the user, and which models/config-options those become.\n let voice = assistant?.config?.voiceConfig?.modelConfig?.openaiRealtimeConfig?.voice || 'alloy';\n let family = familyFromVoice(voice);\n const vendorModel = assistant?.config?.voiceConfig?.vendorModel ?? VendorModel.VENDOR_MODEL_OPEN_AI_REALTIME;\n\n if (vendorModel === VendorModel.VENDOR_MODEL_DEEPGRAM) {\n voice = assistant?.config?.voiceConfig?.modelConfig?.deepgramConfig?.voice ?? 'aura-asteria-en';\n family = familyFromVoice(voice);\n }\n\n return new FormGroup({\n family: new FormControl(family?.name ?? 'OpenAI GPT-4o Realtime (Sep. 17 Preview)'),\n voice: new FormControl(voice),\n advanced: new FormGroup({\n turnDetectionThreshold: new FormControl(\n assistant?.config?.voiceConfig?.modelConfig?.openaiRealtimeConfig?.turnDetection?.threshold || 0.75,\n ),\n turnDetectionPrefixPadding: new FormControl(\n assistant?.config?.voiceConfig?.modelConfig?.openaiRealtimeConfig?.turnDetection?.prefixPadding || 300,\n ),\n turnDetectionSilenceDuration: new FormControl(\n assistant?.config?.voiceConfig?.modelConfig?.openaiRealtimeConfig?.turnDetection?.silenceDuration || 500,\n ),\n }),\n });\n }\n\n static knowledgeFormGroupFactory(assistantId?: string) {\n const kID = inject(AiAssistantService).buildAppId(assistantId);\n return new FormGroup({\n knowledgeSources: new FormControl([]),\n // following is used only to store web chat state\n knowledgeAppId: new FormControl(kID),\n });\n }\n\n private readonly assistantAPI = inject(AssistantApiService);\n private readonly snackbarService = inject(SnackbarService);\n private readonly knowledgeService = inject(AiKnowledgeService);\n private readonly assistantService = inject(AiAssistantService);\n private readonly goalService = inject(AiGoalService);\n private readonly featureFlagService = inject(FeatureFlagService);\n private readonly bookingConfigService = inject(BookingConfigService);\n private readonly router = inject(Router);\n private readonly route = inject(ActivatedRoute);\n private readonly unsavedGuard = inject(UnsavedChangesGuard);\n private readonly dialog = inject(MatDialog);\n private readonly injector = inject(EnvironmentInjector);\n private readonly accountGroupId$ = inject(ACCOUNT_GROUP_ID_TOKEN);\n private readonly partnerId$ = inject(PARTNER_ID_TOKEN);\n private readonly conversationApiService = inject(ConversationApiService);\n private readonly translateService = inject(TranslateService);\n protected readonly DEFAULT_CONNECTION_PREFIX = DEFAULT_CONNECTION_PREFIX;\n protected voiceFamilies: AiVoiceFamily[] = [];\n protected readonly vendorModels = VendorModel;\n protected availableVoices = signal([]);\n private readonly defaultWorkforce$ = inject(AI_DEFAULT_WORKFORCE_TOKEN);\n protected readonly voiceFamily = signal(null);\n private readonly navHistory: string[] = [];\n protected previewAudio = signal(new Audio(''));\n protected currentlyPlayingPreview = signal(false);\n\n // combine the accountGroupId$ and partnerId$ into a single observable that only emits when one of them changes\n private readonly partnerIdAndAccountGroupId$ = combineLatest([this.partnerId$, this.accountGroupId$]).pipe(\n distinctUntilChanged((a, b) => a[0] === b[0] && a[1] === b[1]),\n );\n\n protected readonly $isSaving = signal(false);\n protected readonly error = signal(null);\n\n protected readonly additionalInstructionsLimit = ADDITIONAL_INSTRUCTIONS_LIMIT;\n\n private readonly $hasUnsavedChanges = signal(false);\n private readonly $initialSources = signal(null);\n protected readonly $canSave = computed(() => !this.$isLoading() && this.$hasUnsavedChanges());\n\n protected assistantForm = AiAssistantFormComponent.assistantFormGroupFactory(this.assistantService);\n protected knowledgeForm = AiAssistantFormComponent.knowledgeFormGroupFactory();\n protected connectionForm = AiAssistantFormComponent.connectionsFormGroupFactory();\n protected voiceConfigForm = AiAssistantFormComponent.voiceConfigFormGroupFactory();\n private previousUrl: string | undefined;\n\n public readonly showCustomGoals = computed(() => {\n return this.assistantService.$isNewCustomAIGoalsEnabled() && this.assistantService.$isAssistantGoalsEnabled();\n });\n\n private readonly assistantId = this.route.snapshot.params['assistantId'];\n\n readonly aiAssistant$ = combineLatest([this.partnerIdAndAccountGroupId$, this.defaultWorkforce$]).pipe(\n switchMap(([partnerIdAndAccountGroupId, defaultWorkforce]) => {\n const partnerId = partnerIdAndAccountGroupId[0];\n const accountGroupId = partnerIdAndAccountGroupId[1];\n return this.assistantService.getAssistant(partnerId, accountGroupId, this.assistantId).pipe(\n map((assistant) => {\n return this.assistantService.hydrateAssistantWithDefaultInfo(assistant, defaultWorkforce);\n }),\n catchError((err) => {\n // create the assistant if it does not exist\n if (err.status === 404) {\n return this.assistantService.getDefaultAssistant(partnerId, accountGroupId, this.assistantId).pipe(\n map((assistant) => assistant),\n catchError((err) => {\n this.error.set(err.message);\n return EMPTY;\n }),\n );\n } else {\n this.error.set(err.message);\n return EMPTY;\n }\n }),\n );\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n readonly aiAssistant = toSignal(this.aiAssistant$, {\n initialValue: null,\n });\n\n readonly assistant = computed(() => this.aiAssistant()?.assistant);\n\n readonly goals = computed(() => {\n return (this.assistant()?.configurableGoals || [])\n .map((configurableGoal) => configurableGoal.goal)\n .filter((goal) => !goal?.namespace?.globalNamespace);\n });\n\n readonly additionalInstructions$ = this.aiAssistant$.pipe(\n switchMap((aiAssistant) => {\n const additionalInstructionsPromptModule = aiAssistant?.assistant?.configurableGoals?.find(\n (goal) => goal.goal?.id === this.buildAdditionalInstructionsGoalID(aiAssistant?.assistant?.id || ''),\n )?.goal?.promptModules?.[0];\n if (additionalInstructionsPromptModule) {\n return this.assistantService\n .getPromptModuleVersion(\n additionalInstructionsPromptModule.id ?? '',\n additionalInstructionsPromptModule.namespace ?? {},\n additionalInstructionsPromptModule.deployedVersion ?? '',\n )\n .pipe(map((instructions) => instructions || ''));\n }\n return of('');\n }),\n );\n\n readonly $additionalInstructions = toSignal(this.additionalInstructions$, {\n initialValue: '',\n });\n\n readonly connections$ = this.partnerIdAndAccountGroupId$.pipe(\n switchMap(([partnerId, accountGroupId]) =>\n this.assistantService.listConnectionsForAssistant(partnerId, accountGroupId, this.assistantId),\n ),\n catchError(() => {\n this.snackbarService.openErrorSnack('AI_ASSISTANT.SETTINGS.CHANNELS.FETCH_ERROR');\n return of([] as AiConnection[]);\n }),\n );\n readonly $connections = toSignal(this.connections$);\n\n protected readonly $isVoiceAssistant = computed(() => {\n return this.assistant() && this.assistant()?.type === AssistantType.ASSISTANT_TYPE_VOICE_RECEPTIONIST;\n });\n\n protected readonly $showPrimaryGoalCheckbox = computed(() => {\n return this.assistant() && this.assistant()?.type !== AssistantType.ASSISTANT_TYPE_VOICE_RECEPTIONIST;\n });\n\n protected readonly $isMeetingBookingEnabled = this.assistantService.$isAIMeetingBookingEnabled;\n\n protected readonly $showBetaBadge = computed(() => {\n return this.assistant() && this.assistant()?.type === AssistantType.ASSISTANT_TYPE_VOICE_RECEPTIONIST;\n });\n\n protected readonly widgetConnections$ = this.connections$.pipe(\n map((aiConnections) =>\n aiConnections\n .filter((aiConnection) => aiConnection.connection.connectionType === WEBCHAT_WIDGET_CONNECTION_TYPE)\n .map((aiConnection) => aiConnection.connection.id),\n ),\n switchMap((webchatWidgetConnectionIds) => {\n const widgetIds = webchatWidgetConnectionIds.filter((id) => !id.includes('default'));\n if (widgetIds?.length > 0) {\n return this.conversationApiService.getMultiWidget({ widgetIds: widgetIds }).pipe(\n map((response) => response.widgets),\n catchError(() => {\n this.snackbarService.openErrorSnack('AI_ASSISTANT.SETTINGS.CHANNELS.FETCH_WIDGET_NAME_WARNING');\n return of([]);\n }),\n );\n }\n return of([]);\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n private readonly fetching$ = combineLatest([this.connections$, this.widgetConnections$, this.aiAssistant$]).pipe(\n map(() => false),\n startWith(true),\n );\n private readonly $fetching = toSignal(this.fetching$, {\n requireSync: true,\n });\n protected readonly $isLoading = computed(() => this.$fetching() || this.$isSaving());\n\n protected readonly calendarsWithTypes$ = this.bookingConfigService.getCalendarsWithTypes();\n\n constructor(private location: Location) {\n // leverage the unsavedGuard to prevent leaving current route if there are unsaved changes\n // unsavedGuard uses private signal to manage state so we need to allow signal writes\n effect(() => this.unsavedGuard.notifyStateChanged(this.$hasUnsavedChanges()));\n\n effect(() => {\n const assistant = this.assistant();\n const additionalInstructions = this.$additionalInstructions();\n if (assistant) {\n this.knowledgeForm.get('knowledgeAppId')?.setValue(this.assistantService.buildAppId(assistant.id));\n }\n const aiConnections = this.$connections();\n if (assistant && aiConnections) {\n // Initialize assistantForm once $assistant has a value\n this.assistantForm = runInInjectionContext<\n ReturnType\n >(this.injector, () =>\n AiAssistantFormComponent.assistantFormGroupFactory(this.assistantService, assistant, additionalInstructions),\n );\n this.connectionForm = runInInjectionContext<\n ReturnType\n >(this.injector, () => AiAssistantFormComponent.connectionsFormGroupFactory(assistant, aiConnections));\n\n this.voiceConfigForm = runInInjectionContext<\n ReturnType\n >(this.injector, () => AiAssistantFormComponent.voiceConfigFormGroupFactory(assistant));\n // Once initialized, we typically don't re-create form group unless required\n // for specific scenarios.\n this.subscribeToFormChanges();\n\n this.voiceFamily.set(\n this.voiceFamilies.find((f) => f.name === this.voiceConfigForm.controls.family.value) ?? null,\n );\n\n this.previewAudio.set(new Audio(previewUrlFromVoice(this.voiceConfigForm.controls.voice.value ?? '') ?? ''));\n\n this.availableVoices.set(voicesForFamily(this.voiceConfigForm.controls.family.value ?? ''));\n }\n this.partnerId$\n .pipe(\n switchMap((partnerId) =>\n this.featureFlagService.batchGetStatus(partnerId, '', [DEEPGRAM_SPEAK_FEATURE_FLAG]).pipe(\n map((resp) => resp[DEEPGRAM_SPEAK_FEATURE_FLAG]),\n catchError(() => of(false)),\n ),\n ),\n take(1),\n )\n .subscribe((deepgramEnabled) => {\n this.voiceFamilies = getVoiceFamilies(deepgramEnabled);\n });\n });\n\n this.route.queryParams.subscribe((params) => {\n this.previousUrl = params['returnUrl'];\n });\n }\n\n private subscribeToFormChanges(): void {\n this.assistantForm.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.markChanges();\n this.updateBookingValidator();\n });\n\n this.connectionForm.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.markChanges();\n });\n\n this.knowledgeForm.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.markChanges();\n });\n\n this.voiceConfigForm.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.markChanges();\n });\n\n this.voiceConfigForm.controls.family.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((familyName) => {\n if (!familyName) {\n this.availableVoices.set([]);\n return;\n }\n\n this.availableVoices.set(voicesForFamily(familyName));\n this.voiceFamily.set(this.voiceFamilies.find((f) => f.name === familyName) ?? null);\n\n if (this.availableVoices().length > 0) {\n this.voiceConfigForm.controls.voice.setValue(this.availableVoices()[0].value);\n }\n });\n\n this.voiceConfigForm.controls.voice.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((voice) => {\n this.stopPlayingPreview();\n this.previewAudio.set(new Audio(previewUrlFromVoice(voice ?? '') ?? ''));\n });\n }\n\n protected togglePreview() {\n if (this.currentlyPlayingPreview()) {\n this.stopPlayingPreview();\n return;\n }\n\n this.currentlyPlayingPreview.set(true);\n\n const handleEnded = () => {\n this.currentlyPlayingPreview.set(false);\n this.previewAudio().removeEventListener('ended', handleEnded);\n };\n\n this.previewAudio()\n ?.play()\n .then(() => {\n this.audioEndedHandler = handleEnded;\n this.previewAudio().addEventListener('ended', handleEnded);\n });\n }\n\n private stopPlayingPreview() {\n this.previewAudio().pause();\n this.previewAudio().currentTime = 0;\n this.currentlyPlayingPreview.set(false);\n this.cleanupAudioEventListeners();\n }\n\n private audioEndedHandler: ((this: HTMLAudioElement, ev: Event) => void) | null = null;\n\n private cleanupAudioEventListeners() {\n if (this.audioEndedHandler) {\n this.previewAudio().removeEventListener('ended', this.audioEndedHandler);\n this.audioEndedHandler = null;\n }\n }\n\n private knowledgeSourcesHaveChanged(): boolean {\n const currentSources = this.knowledgeForm.get('knowledgeSources')?.value;\n if (this.$initialSources()?.length !== currentSources?.length) {\n return true;\n }\n for (const source of this.$initialSources() || []) {\n if (!(currentSources || []).some((s) => s.id === source.id)) {\n return true;\n }\n }\n return false;\n }\n\n protected getConnectionName(connection: ConnectionInterface, widgets: Widget[]): string {\n if (\n connection.namespace?.accountGroupNamespace &&\n connection.connectionType === ConnectionType.WebchatWidget &&\n connection.name !== MY_LISTING_CONNECTION_NAME &&\n !connection.assistantKeys?.length\n ) {\n return this.translateService.instant('AI_ASSISTANT.SETTINGS.CONNECTIONS.WEBCHAT_CREATING');\n }\n\n const widget = widgets?.find((widget) => widget.widgetId === connection.id);\n return widget ? widget.name || '' : connection.name || '';\n }\n\n protected updateSelectedSources(sources: KnowledgeSource[] | null): void {\n if (this.$initialSources() === null && sources !== null) {\n this.$initialSources.set(JSON.parse(JSON.stringify(sources)));\n }\n this.knowledgeForm.get('knowledgeSources')?.setValue(sources);\n }\n\n protected async editGoal(goalId: string): Promise {\n const accountGroupId = await firstValueFrom(this.accountGroupId$);\n const goalConfigurationUrl = this.goalService.buildGoalConfigurationUrl(accountGroupId, goalId);\n\n this.router.navigate([goalConfigurationUrl], { relativeTo: this.route });\n }\n\n @HostListener('window: beforeunload', ['$event'])\n onBeforeUnload(event: BeforeUnloadEvent): void {\n if (this.$hasUnsavedChanges()) {\n event.preventDefault();\n event.stopPropagation();\n event.returnValue = false;\n }\n }\n\n protected async submit(): Promise {\n this.assistantForm.markAllAsTouched();\n\n if (\n this.assistantForm.invalid ||\n this.knowledgeForm.invalid ||\n (!this.assistantForm.dirty &&\n !this.connectionForm.dirty &&\n !this.knowledgeSourcesHaveChanged() &&\n !this.voiceConfigForm.dirty)\n ) {\n return;\n }\n\n let assistantPromise: Promise | undefined;\n let connectionPromise: Promise | undefined;\n if (this.assistantForm.dirty || this.knowledgeSourcesHaveChanged() || this.voiceConfigForm.dirty) {\n assistantPromise = this.updateAssistant();\n }\n if (this.connectionForm.dirty) {\n connectionPromise = this.updateConnections();\n }\n\n this.$isSaving.set(true);\n try {\n await Promise.all([assistantPromise, connectionPromise]);\n this.markAsSaved();\n this.snackbarService.openSuccessSnack('AI_ASSISTANT.SETTINGS.ASSISTANT_UPDATED');\n } catch (e) {\n this.snackbarService.openErrorSnack('AI_ASSISTANT.SETTINGS.ASSISTANT_UPDATE_ERROR');\n } finally {\n this.$isSaving.set(false);\n }\n }\n\n private markChanges(): void {\n const hasChanges =\n this.assistantForm.dirty ||\n this.knowledgeForm.dirty ||\n this.knowledgeSourcesHaveChanged() ||\n this.connectionForm.dirty ||\n this.voiceConfigForm.dirty;\n this.$hasUnsavedChanges.set(hasChanges);\n }\n\n private markAsSaved() {\n this.assistantForm.markAsPristine();\n this.knowledgeForm.markAsPristine();\n this.connectionForm.markAsPristine();\n this.voiceConfigForm.markAsPristine();\n this.$initialSources.set(JSON.parse(JSON.stringify(this.knowledgeForm.get('knowledgeSources')?.value)));\n this.$hasUnsavedChanges.set(false);\n }\n\n private updateBookingValidator(): void {\n const enableMeetingBooking = this.assistantForm.get('enableMeetingBooking')?.value;\n const calendarAndMeetingType = this.assistantForm.get('calendarAndMeetingType');\n if (enableMeetingBooking) {\n calendarAndMeetingType?.setValidators([\n (control) => (!control?.value?.calendarId || !control?.value?.meetingTypeId ? { bothRequired: true } : null),\n ]);\n } else {\n calendarAndMeetingType?.clearValidators();\n }\n calendarAndMeetingType?.updateValueAndValidity({ emitEvent: false });\n }\n\n private async updateAssistant(): Promise {\n const assistant = this.toAssistant();\n\n try {\n await this.updateGoals(assistant);\n } catch (err) {\n throw new Error('Failed to update assistant goals', { cause: err });\n }\n\n const assistantId = this.assistantId;\n const configurationUrl = await firstValueFrom(\n this.assistantService.buildAiKnowledgeAppConfigurationUrl(assistantId),\n );\n const knowledge = this.toKnowledgeSource();\n await this.knowledgeService.upsertKnowledgeForApp(\n this.assistantService.buildAppId(assistantId),\n assistant?.name || '',\n configurationUrl,\n knowledgeAppType,\n knowledge,\n );\n await firstValueFrom(\n this.assistantAPI\n .upsertAssistant({\n assistant: assistant,\n })\n .pipe(catchError((err) => throwError(() => err))),\n );\n }\n\n private async updateGoals(assistant: AssistantInterface): Promise {\n // Initialize configurableGoals if it is undefined\n if (!assistant.configurableGoals) {\n assistant.configurableGoals = [];\n }\n\n const globalNamespace = new Namespace({\n globalNamespace: {},\n });\n\n switch (assistant.type) {\n case AssistantType.ASSISTANT_TYPE_INBOX:\n if (this.assistantForm.get('enableLeadCapture')?.value) {\n this.updateGoal(DEFAULT_LEAD_CAPTURE_GOAL_ID, globalNamespace, assistant.configurableGoals);\n } else {\n assistant.configurableGoals = assistant.configurableGoals?.filter(\n (goal) => goal.goal?.id !== DEFAULT_LEAD_CAPTURE_GOAL_ID,\n );\n }\n\n if (this.assistantForm.get('enableMeetingBooking')?.value) {\n const goalConfig: KeyValuePairInterface[] = [\n {\n key: GOAL_CONFIG_KEY_CALENDAR_ID,\n value: this.assistantForm.get('calendarAndMeetingType')?.value?.calendarId || '',\n },\n {\n key: GOAL_CONFIG_KEY_MEETING_TYPE_ID,\n value: this.assistantForm.get('calendarAndMeetingType')?.value?.meetingTypeId || '',\n },\n ];\n this.updateGoal(DEFAULT_MEETING_BOOKING_GOAL_ID, globalNamespace, assistant.configurableGoals, goalConfig);\n } else {\n assistant.configurableGoals = assistant.configurableGoals?.filter(\n (goal) => goal.goal?.id !== DEFAULT_MEETING_BOOKING_GOAL_ID,\n );\n }\n break;\n case AssistantType.ASSISTANT_TYPE_VOICE_RECEPTIONIST:\n // TODO: Create configurable settings for voice goals (i.e: Lead Capture and Appointment Booking)\n break;\n }\n\n try {\n await this.addAdditionalInstructionsGoal(assistant);\n } catch (err) {\n throw new Error('Failed to add additional instructions', { cause: err });\n }\n }\n\n private updateGoal(\n defaultGoalId: string,\n namespace: Namespace,\n existingGoals: ConfigurableGoalInterface[],\n goalConfig?: KeyValuePairInterface[],\n ): void {\n const goalIndex = existingGoals.findIndex((goal) => goal?.goal?.id === defaultGoalId);\n if (goalIndex === -1) {\n existingGoals.push(\n new ConfigurableGoal({\n goal: {\n id: defaultGoalId,\n namespace: namespace,\n },\n configuration: goalConfig,\n }),\n );\n } else {\n existingGoals[goalIndex].configuration = goalConfig;\n }\n }\n\n private async addAdditionalInstructionsGoal(assistant: AssistantInterface): Promise {\n const hasAdditionalInstructionsGoal = assistant.configurableGoals?.some(\n (goal) => goal.goal?.id === this.buildAdditionalInstructionsGoalID(assistant.id),\n );\n const additionalInstructionsFormValue = this.assistantForm.get('additionalPrompt')?.value;\n if (additionalInstructionsFormValue) {\n try {\n const goalKey = await this.assistantService.upsertAdditionalInstructions(\n assistant.id,\n assistant.namespace,\n additionalInstructionsFormValue,\n );\n\n if (!hasAdditionalInstructionsGoal) {\n assistant.configurableGoals?.push(\n new ConfigurableGoal({\n goal: goalKey,\n }),\n );\n }\n } catch (err) {\n throw new Error('Failed to upsert additional instructions goal', { cause: err });\n }\n } else if (hasAdditionalInstructionsGoal) {\n assistant.configurableGoals = assistant.configurableGoals?.filter(\n (goal) => goal.goal?.id !== this.buildAdditionalInstructionsGoalID(assistant.id),\n );\n }\n }\n\n private buildAdditionalInstructionsGoalID(assistantId?: string): string {\n if (assistantId === undefined) {\n console.warn('Assistant ID is undefined');\n return '';\n }\n return `${ADDITIONAL_INSTRUCTIONS_GOAL_ID}-${assistantId}`;\n }\n\n private async updateConnections(): Promise {\n await firstValueFrom(\n this.assistantAPI.setAssistantConnections({\n assistantKey: {\n id: this.assistant()?.id,\n namespace: this.assistant()?.namespace,\n },\n associationStates: this.$connections()\n ?.map((aiConnection, index) =>\n !aiConnection?.connection.isConnectionLocked\n ? {\n connectionKey: {\n id: aiConnection.connection.id,\n namespace: aiConnection.connection.namespace,\n connectionType: aiConnection.connection.connectionType,\n },\n isAssociated: this.connectionForm.getRawValue().connections[index],\n }\n : null,\n )\n .filter((connection) => connection !== null),\n }),\n );\n }\n\n private toAssistant(): AssistantInterface {\n return {\n name: this.assistantForm.get('name')?.value || '',\n id: this.assistantForm.get('assistantId')?.value || '',\n namespace: this.assistantForm.get('namespace')?.value || ({} as Namespace),\n type: AssistantIdToAssistantType(this.assistantForm.get('assistantId')?.value || ''),\n config: {\n inboxConfig: {\n leadCaptureEnabled: this.assistantForm.get('enableLeadCapture')?.value || false,\n additionalInstructions: this.assistantForm.get('additionalPrompt')?.value || '',\n },\n voiceConfig: this.$isVoiceAssistant()\n ? {\n vendorModel: this.voiceFamily()?.provider,\n modelConfig: this.buildVoiceModelConfig(),\n }\n : undefined,\n },\n avatarUrl: this.assistantForm.get('assistantAvatarUrl')?.value || '',\n configurableGoals: this.assistant()?.configurableGoals,\n };\n }\n\n private buildVoiceModelConfig() {\n const family = this.voiceConfigForm.get('family')?.value;\n const voice = this.voiceConfigForm.get('voice')?.value || '';\n const voiceFamily = this.voiceFamilies.find((f) => f.name === family);\n\n if (voiceFamily?.provider === VendorModel.VENDOR_MODEL_DEEPGRAM) {\n return {\n deepgramConfig: {\n voice: voice,\n },\n };\n }\n\n return {\n openaiRealtimeConfig: {\n voice: voice,\n turnDetection: {\n threshold: this.voiceConfigForm.get('advanced')?.get('turnDetectionThreshold')?.value ?? 0.75,\n prefixPadding: this.voiceConfigForm.get('advanced')?.get('turnDetectionPrefixPadding')?.value ?? 300,\n silenceDuration: this.voiceConfigForm.get('advanced')?.get('turnDetectionSilenceDuration')?.value ?? 500,\n },\n },\n };\n }\n\n private toKnowledgeSource(): KnowledgeSource[] {\n return this.knowledgeForm.get('knowledgeSources')?.value || [];\n }\n\n openEnableLeadCaptureDialog(): void {\n this.dialog.open(EnableLeadCaptureDialogComponent, {\n width: '550px',\n });\n }\n\n openAdditionalInstructionsDialog(): void {\n this.dialog.open(AdditionalInstructionsDialogComponent, {\n width: '100vh',\n });\n }\n\n onImageChanged(imageUrl: string): void {\n this.assistantForm.get('assistantAvatarUrl')?.markAsDirty();\n this.assistantForm.get('assistantAvatarUrl')?.setValue(imageUrl);\n }\n\n protected triggerAction(aiConnection: AiConnection): void {\n if (aiConnection) {\n this.buildConnectionActionCallback(aiConnection)?.();\n }\n }\n\n protected buildConnectionActionCallback(aiConnection: AiConnection): (() => void) | undefined {\n if (!aiConnection?.cta || !aiConnection?.cta.action?.showButton) {\n return undefined;\n }\n\n const action = aiConnection?.cta?.action;\n\n if (action?.url) {\n //TODO: MEGA-1856 - Remove this if clause once the inbox settings are moved out from side panel\n if (\n aiConnection.connection.namespace?.partnerNamespace &&\n action.url.includes('inbox') &&\n !action.url.includes('restricted')\n ) {\n return () => this.router.navigate(['', { outlets: { inbox: action.url } }]);\n }\n\n if (action.newTab && !action.relativeRoute) {\n return () => window.open(action.url, '_blank');\n }\n\n return () => this.router.navigate([action.url], action.relativeRoute ? { relativeTo: this.route } : undefined);\n }\n\n if (action?.pathCommands) {\n return () => this.router.navigate(action.pathCommands);\n }\n\n if (action?.callback) {\n return action.callback;\n }\n return undefined;\n }\n\n protected backUrl(): string {\n return FALLBACK_BACK_URL;\n }\n\n protected async back(): Promise {\n try {\n const accountGroupId = await firstValueFrom(this.accountGroupId$.pipe(take(1)));\n\n if (accountGroupId && this.previousUrl?.includes(accountGroupId)) {\n await this.router.navigate([this.previousUrl]);\n } else {\n await this.router.navigate([FALLBACK_BACK_URL], { relativeTo: this.route });\n }\n } catch (error) {\n console.error('Error navigating back:', error);\n }\n }\n\n protected goToMeetings(): void {\n this.markAsSaved();\n this.router.navigate([MEETING_URL], { relativeTo: this.route });\n }\n\n protected compareBookingOptions(a: MeetingType, b: MeetingType): boolean {\n return a.calendarId === b.calendarId && a.meetingTypeId === b.meetingTypeId;\n }\n\n ngOnDestroy(): void {\n this.stopPlayingPreview();\n }\n}\n","\n \n \n \n \n\n {{ 'AI_ASSISTANT.SETTINGS.TITLE' | translate: { assistantName: aiAssistant()?.assistant?.name } }}\n @if ($showBetaBadge()) {\n  \n {{ 'AI_ASSISTANT.SHARED.BETA' | translate }}\n }\n \n \n \n @if (!!error()) {\n \n } @else {\n
\n
\n \n
\n \n
\n @if ($isLoading()) {\n \n } @else {\n \n }\n
\n\n \n \n \n {{ 'AI_ASSISTANT.SETTINGS.ASSISTANT_NAME' | translate }}\n \n info_outline\n \n \n \n \n
\n
\n\n
\n
\n
\n @if ($isVoiceAssistant()) {\n \n Important\n — {{ 'AI_ASSISTANT.SETTINGS.VOICE_BETA_BANNER_MESSAGE' | translate }}\n \n \n }\n \n \n {{ 'AI_ASSISTANT.SETTINGS.CHANNELS.TITLE' | translate }}\n {{ 'AI_ASSISTANT.SETTINGS.CHANNELS.SUBTITLE' | translate }}\n \n \n @if ($isLoading()) {\n \n } @else {\n @let aiConnections = connections$ | async;\n @if (aiConnections?.length === 0) {\n \n \n forum\n \n {{ 'AI_ASSISTANT.SETTINGS.CHANNELS.NO_CHANNELS_AVAILABLE' | translate }}\n \n \n \n } @else {\n @let widgetConnections = widgetConnections$ | async;\n @for (aiConnection of aiConnections; track i; let i = $index) {\n \n \n
\n \"avatar\"\n
\n
\n {{ getConnectionName(aiConnection.connection, widgetConnections || []) }}\n
\n \n @if (aiConnection.cta?.action?.showButton) {\n \n @if (aiConnection.isDefault && !aiConnection.cta?.label) {\n {{\n 'AI_ASSISTANT.SETTINGS.SETUP_CONNECTIONS'\n | translate: { connectionName: aiConnection?.connection.name }\n }}\n } @else {\n {{ aiConnection.cta?.label || 'AI_ASSISTANT.SETTINGS.SETTINGS' | translate }}\n }\n \n }\n
\n
\n
\n
\n }\n }\n }\n
\n
\n
\n
\n @if ($isVoiceAssistant()) {\n
\n
\n \n \n {{ 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.VOICE_CONFIG' | translate }}\n \n \n \n \n {{ 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.FAMILY' | translate }}\n \n \n @for (family of voiceFamilies; track family) {\n \n
{{ family.name }}
\n
\n }\n
\n @let selectedVoiceFamily = voiceFamily();\n @if (selectedVoiceFamily) {\n \n {{ selectedVoiceFamily.description_key | translate }}\n \n }\n
\n
\n
\n {{ 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.VOICE' | translate }}\n
\n
\n \n \n @for (voice of availableVoices(); track voice) {\n \n {{ voice.name }} ({{ voice.region | translate }}, {{ voice.gender | translate }})\n \n }\n \n \n \n
\n
\n @if (voiceFamily()?.provider === vendorModels.VENDOR_MODEL_OPEN_AI_REALTIME) {\n \n \n \n {{ accordionItem.expanded ? 'expand_less' : 'expand_more' }}\n \n {{ 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.ADVANCED' | translate }}\n \n @if (accordionItem.expanded) {\n
\n \n \n {{ 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.TURN_DETECTION.THRESHOLD.LABEL' | translate }}\n \n \n \n \n {{\n 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.TURN_DETECTION.THRESHOLD.DESCRIPTION'\n | translate\n }}\n \n \n \n \n {{\n 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.TURN_DETECTION.PREFIX_PADDING.LABEL' | translate\n }}\n \n \n \n \n {{\n 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.TURN_DETECTION.PREFIX_PADDING.DESCRIPTION'\n | translate\n }}\n \n \n \n \n {{\n 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.TURN_DETECTION.SILENCE_DURATION.LABEL'\n | translate\n }}\n \n \n \n \n {{\n 'AI_ASSISTANT.SETTINGS.VOICE_CONFIG.TURN_DETECTION.SILENCE_DURATION.DESCRIPTION'\n | translate\n }}\n \n \n
\n }\n
\n
\n }\n
\n
\n
\n
\n }\n\n
\n
\n \n \n {{ 'AI_ASSISTANT.SETTINGS.GOALS_INSTRUCTIONS' | translate }}\n \n \n @if ($showPrimaryGoalCheckbox()) {\n

{{ 'AI_ASSISTANT.SETTINGS.ASSISTANT_PRIMARY_GOAL' | translate }}

\n \n \n {{ 'AI_ASSISTANT.SETTINGS.ENABLE_LEAD_CAPTURE.DESCRIPTION' | translate }}\n \n {{ 'AI_ASSISTANT.SETTINGS.ENABLE_LEAD_CAPTURE.INFORMATION' | translate }}\n \n {{ 'AI_ASSISTANT.SETTINGS.LEARN_MORE' | translate }}\n \n \n \n \n @if ($isMeetingBookingEnabled()) {\n \n \n {{ 'AI_ASSISTANT.SETTINGS.ENABLE_MEETING_BOOKING.DESCRIPTION' | translate }}\n \n @if (assistantForm?.get('enableMeetingBooking')?.value) {\n \n \n {{ 'AI_ASSISTANT.SETTINGS.ENABLE_MEETING_BOOKING.LABEL' | translate }}\n \n \n @for (calendar of calendarsWithTypes$ | async; track calendar) {\n \n @for (type of calendar.meetingTypes; track type) {\n \n @if (calendar.isPersonal) {\n person\n } @else {\n group\n }\n {{ type.name }}\n \n }\n \n }\n \n add\n \n {{ 'AI_ASSISTANT.SETTINGS.ENABLE_MEETING_BOOKING.CREATE_NEW_CALENDAR' | translate }}\n \n \n \n \n }\n \n }\n }\n @if (!showCustomGoals()) {\n

\n {{ 'AI_ASSISTANT.SETTINGS.ASSISTANT_ADDITIONAL_INSTRUCTIONS' | translate }}\n \n {{ 'AI_ASSISTANT.SHARED.BETA' | translate }}\n \n

\n \n \n {{ 'AI_ASSISTANT.SETTINGS.ASSISTANT_ADDITIONAL_INSTRUCTIONS_DESCRIPTION' | translate }}\n \n {{ 'AI_ASSISTANT.SETTINGS.LEARN_MORE' | translate }}\n \n \n \n \n {{ additionalPromptSoftLimit.value?.length || 0 }}/{{ additionalInstructionsLimit }}\n \n additionalInstructionsLimit\"\n >\n {{ 'AI_ASSISTANT.SETTINGS.ASSISTANT_ADDITIONAL_INSTRUCTIONS_LIMIT_EXCEEDED' | translate }}\n   {{ additionalPromptSoftLimit.value?.length || 0 }} /{{ additionalInstructionsLimit }}\n \n \n } @else {\n

{{ 'AI_ASSISTANT.SETTINGS.CUSTOM_CAPABILITIES' | translate }}

\n \n }\n
\n
\n \n \n {{ 'AI_ASSISTANT.SETTINGS.KNOWLEDGE_SOURCES' | translate }}\n {{ 'AI_ASSISTANT.SETTINGS.KNOWLEDGE_SOURCES_DESCRIPTION' | translate }}\n \n \n \n @if ($isLoading()) {\n \n } @else {\n \n }\n \n \n
\n
\n
\n
\n \n\n \n }\n
\n
\n\n\n \n {{ 'AI_ASSISTANT.SETTINGS.SOMETHING_WENT_WRONG' | translate }}\n \n {{ errorMessage }}\n \n \n\n","import { GoalChannel } from '@vendasta/ai-assistants';\n\nexport const goalChannels = new Map([\n [GoalChannel.GOAL_CHANNEL_PLATFORM, 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.CHANNELS.PLATFORM_CHAT'],\n [GoalChannel.GOAL_CHANNEL_WEBCHAT, 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.CHANNELS.WEB_CHAT'],\n [GoalChannel.GOAL_CHANNEL_SMS, 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.CHANNELS.SMS'],\n [GoalChannel.GOAL_CHANNEL_EMAIL, 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.CHANNELS.EMAIL'],\n [GoalChannel.GOAL_CHANNEL_VOICE, 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.CHANNELS.VOICE'],\n [GoalChannel.GOAL_CHANNEL_FACEBOOK, 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.CHANNELS.FACEBOOK'],\n [GoalChannel.GOAL_CHANNEL_INSTAGRAM, 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.CHANNELS.INSTAGRAM'],\n [GoalChannel.GOAL_CHANNEL_WHATSAPP, 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.CHANNELS.WHATSAPP'],\n]);\n\nexport const goalChannelIcons = new Map([\n [GoalChannel.GOAL_CHANNEL_WEBCHAT, 'WebchatWidget'],\n [GoalChannel.GOAL_CHANNEL_SMS, 'SMS'],\n [GoalChannel.GOAL_CHANNEL_VOICE, 'Voice'],\n [GoalChannel.GOAL_CHANNEL_WHATSAPP, 'Whatsapp'],\n]);\n","import { Component, computed, DestroyRef, effect, inject, signal } from '@angular/core';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AiGoalService } from '../../core/services/ai-goal.service';\nimport { ACCOUNT_GROUP_ID_TOKEN, PARTNER_ID_TOKEN } from '../../core/tokens';\nimport { combineLatest, firstValueFrom, map, Observable, of, switchMap } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { GoalChannel, GoalInterface } from '@vendasta/ai-assistants';\nimport { goalChannelIcons, goalChannels } from '../../core/services/ai-goal-util';\nimport { MatSelectModule } from '@angular/material/select';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { MatCardModule } from '@angular/material/card';\nimport { StickyFooterComponent } from '../sticky-footer/sticky-footer.component';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { PageService } from '@vendasta/galaxy/page/src/page.service';\nimport { AiAssistantI18nModule } from '../../assets/i18n/ai-assistant-i18n.module';\nimport { MatInputModule } from '@angular/material/input';\n\nconst AVAILABLE_CHANNELS = [\n GoalChannel.GOAL_CHANNEL_SMS,\n GoalChannel.GOAL_CHANNEL_WEBCHAT,\n GoalChannel.GOAL_CHANNEL_WHATSAPP,\n];\nconst FALLBACK_BACK_URL = '../../../assistants';\n\n@Component({\n selector: 'ai-ai-goal-form',\n imports: [\n CommonModule,\n GalaxyPageModule,\n GalaxyFormFieldModule,\n ReactiveFormsModule,\n MatSelectModule,\n GalaxyBadgeModule,\n MatChipsModule,\n GalaxyAvatarModule,\n MatCardModule,\n StickyFooterComponent,\n AiAssistantI18nModule,\n FormsModule,\n MatInputModule,\n ],\n templateUrl: './ai-goal-form.component.html',\n styleUrl: './ai-goal-form.component.scss',\n})\nexport class AiGoalFormComponent {\n private readonly route = inject(ActivatedRoute);\n private readonly goalService = inject(AiGoalService);\n private readonly snackbarService = inject(SnackbarService);\n private readonly pageService = inject(PageService);\n private readonly router = inject(Router);\n\n private readonly accountGroupId$ = inject(ACCOUNT_GROUP_ID_TOKEN);\n private readonly partnerId$ = inject(PARTNER_ID_TOKEN);\n\n protected readonly goalChannelIcons = goalChannelIcons;\n protected readonly GoalChannel = GoalChannel;\n protected readonly availableGoalChannels = AVAILABLE_CHANNELS.map((channel) => ({\n id: channel,\n name: goalChannels.get(channel),\n icon: goalChannelIcons.get(channel),\n }));\n\n private readonly goalId = this.route.snapshot.params['goalId'];\n\n protected readonly goal$ = combineLatest([this.partnerId$, this.accountGroupId$]).pipe(\n switchMap(([partnerId, accountGroupId]) => this.goalService.getGoal(accountGroupId, partnerId, this.goalId)),\n );\n\n protected readonly promptModule$ = this.goal$.pipe(\n switchMap((goal) => {\n if (!goal.promptModules || goal.promptModules.length === 0) {\n return of(null);\n }\n return this.goalService.getPromptModule(goal.promptModules[0]);\n }),\n );\n\n protected readonly form = toSignal(\n combineLatest([this.goal$, this.promptModule$]).pipe(\n map(([goal, promptModule]) => this.initForm(goal, promptModule?.promptVersion?.content || '')),\n ),\n );\n\n protected readonly isLoading = computed(() => !this.form());\n protected readonly isSubmitting = signal(false);\n protected readonly hasUnsavedChanges = signal(false);\n protected readonly canSave = computed(() => !this.isLoading() && !this.isSubmitting() && this.hasUnsavedChanges());\n\n constructor(private destroyRef: DestroyRef) {\n effect(() => {\n this.form()\n ?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.hasUnsavedChanges.set(true));\n });\n }\n\n private initForm(goal: GoalInterface, promptContent: string): FormGroup {\n return new FormGroup({\n name: new FormControl(goal?.name, [Validators.required]),\n description: new FormControl(goal?.description),\n supportedChannels: new FormControl(goal?.supportedChannels || []),\n prompt: new FormControl(promptContent || ''),\n functions: new FormControl(goal.functions || []),\n });\n }\n\n toggleChannelSelection(channelKey: number): void {\n const control = this.form()?.get('supportedChannels');\n if (control) {\n let currentValue = (control.value as number[]) || [];\n\n if (currentValue.includes(channelKey)) {\n currentValue = currentValue.filter((key) => key !== channelKey);\n } else {\n currentValue = [...currentValue, channelKey];\n }\n control.setValue(currentValue);\n }\n }\n\n selectAllChannels(): void {\n const control = this.form()?.get('supportedChannels');\n if (control) {\n control.setValue([]);\n }\n }\n\n getGoalFromForm(formValue: any): Observable {\n // copy the goal object and add the form values\n return this.goal$.pipe(\n map((goal) => {\n const newGoal = { ...goal };\n newGoal.name = formValue.name;\n newGoal.description = formValue.description;\n newGoal.supportedChannels = formValue.supportedChannels;\n return newGoal;\n }),\n );\n }\n\n async submit(): Promise {\n if (!this.form()?.valid) {\n this.snackbarService.openErrorSnack('AI_ASSISTANT.GOALS.CONFIGURE_GOAL.FORM_INVALID');\n return;\n }\n\n this.isSubmitting.set(true);\n try {\n const goal = await firstValueFrom(this.getGoalFromForm(this.form()?.value));\n await firstValueFrom(this.goalService.upsertGoal(goal));\n this.snackbarService.openSuccessSnack('AI_ASSISTANT.GOALS.CONFIGURE_GOAL.SAVE_SUCCESS');\n } catch (error) {\n this.snackbarService.openErrorSnack('AI_ASSISTANT.GOALS.CONFIGURE_GOAL.SAVE_ERROR');\n }\n this.isSubmitting.set(false);\n }\n\n protected cancel(): void {\n const path = this.pageService.getPreviousPageUrl('');\n if (path) {\n this.router.navigate([path]);\n } else {\n this.router.navigate([FALLBACK_BACK_URL], { relativeTo: this.route });\n }\n }\n}\n","\n \n \n \n \n {{ 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.TITLE' | translate }}\n \n \n @if (form(); as form) {\n
\n \n \n {{ 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.NAME' | translate }}\n \n \n\n \n \n {{ 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.DESCRIPTION' | translate }}\n \n \n\n \n \n {{ 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.SUPPORTED_CHANNELS' | translate }}\n \n \n {{ 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.CHANNELS.ALL_CHANNELS' | translate }}\n \n @for (channel of availableGoalChannels; track channel.id) {\n \n
\n @if (goalChannelIcons.get(channel.id)) {\n \n }\n {{ channel?.name | translate }}\n
\n \n }\n
\n
\n\n \n \n {{ 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.PROMPT' | translate }}\n \n \n\n \n \n {{ 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.FUNCTIONS' | translate }}\n
\n @for (goalFunction of form.get('functions')?.value; track goalFunction.id) {\n \n \n {{ goalFunction.id }}\n
\n {{ goalFunction.description }}\n
\n
\n
\n }\n \n {{ 'AI_ASSISTANT.GOALS.CONFIGURE_GOAL.ADD_FUNCTION' | translate }}\n \n
\n
\n
\n\n \n }\n
\n
\n","import { Route } from '@angular/router';\nimport { AiAssistantPageComponent } from '../index';\nimport { AiAssistantFormComponent } from '../components/ai-assistant-configuration/ai-assistant-form/ai-assistant-form.component';\nimport { UnsavedChangesGuard } from '../components/ai-assistant-configuration/ai-assistant-form/unsaved-changes.guard';\nimport { AiGoalFormComponent } from '../components/ai-goal-form/ai-goal-form.component';\n\nexport const AI_ASSISTANT_ROUTES: Route[] = [\n {\n path: 'assistants',\n children: [\n {\n path: '',\n component: AiAssistantPageComponent,\n },\n {\n path: ':assistantId/edit',\n component: AiAssistantFormComponent,\n canDeactivate: [UnsavedChangesGuard],\n },\n ],\n },\n {\n path: 'goals',\n children: [\n {\n path: ':goalId/edit',\n component: AiGoalFormComponent,\n },\n ],\n },\n];\n","export * from './core';\nexport * from './components';\nexport * from './core/tokens';\nexport * from './core/interfaces/config.interface';\nexport * from './core/interfaces/ai-assistant.interface';\nexport * from './lib/routes';\n","import { BadgeColor } from '@vendasta/galaxy/badge';\n\nexport const DefaultChipStyling = {\n selectedChipColor: 'blue' as BadgeColor,\n unselectedChipColor: 'grey' as BadgeColor,\n};\n","import { ChangeDetectionStrategy, Component, Input, computed, signal } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DefaultChipStyling } from './interfaces';\nimport { MatRippleModule } from '@angular/material/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\ntype ComponentSize = 'default' | 'large';\nconst SelectedChipIcon = 'done';\n\n@Component({\n selector: 'crm-chip',\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n imports: [CommonModule, GalaxyBadgeModule, MatIconModule, MatRippleModule, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChipComponent {\n private readonly _icon = signal(undefined);\n private readonly _selected = signal(false);\n private readonly _hideLabelWhenSelected = signal(false);\n\n @Input({ transform: coerceBooleanProperty })\n set hideLabelWhenSelected(value: boolean) {\n this._hideLabelWhenSelected.set(value);\n }\n @Input()\n set icon(value: string | undefined) {\n this._icon.set(value);\n }\n get icon(): string | undefined {\n return this._icon();\n }\n @Input({ required: true }) label = '';\n @Input({ transform: coerceBooleanProperty })\n set selected(value: boolean) {\n this._selected.set(value);\n }\n get selected(): boolean {\n return this._selected();\n }\n @Input() size: ComponentSize = 'default';\n\n protected readonly color = computed(() => {\n return this._selected() ? DefaultChipStyling.selectedChipColor! : DefaultChipStyling.unselectedChipColor!;\n });\n protected readonly chipIcon = computed(() => {\n if (this._selected() && !this._hideLabelWhenSelected()) {\n return SelectedChipIcon;\n }\n return this._icon();\n });\n\n protected readonly hideLabel = computed(() => {\n if (!this._icon()) {\n return false;\n }\n if (this._selected()) {\n return false;\n }\n return this._hideLabelWhenSelected() || false;\n });\n}\n","\n \n \n {{ chipIcon }}\n \n \n {{ label | translate }}\n \n\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { ChipComponent } from '../chip/chip.component';\nimport { CommonModule } from '@angular/common';\nimport { ChipListItem } from './interfaces';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\ntype ComponentSize = 'default' | 'large';\n\n@Component({\n selector: 'crm-chip-list',\n templateUrl: './chip-list.component.html',\n styleUrls: ['./chip-list.component.scss'],\n imports: [ChipComponent, CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChipListComponent {\n @Input({ transform: coerceBooleanProperty }) hideLabelWhenSelected = false;\n\n @Input({ required: true }) items: ChipListItem[] = [];\n\n @Input() selected?: T;\n @Output() selectedChange = new EventEmitter();\n\n @Input() size: ComponentSize = 'default';\n\n @HostListener('focusin') onFocusIn(): void {\n this.captureFocus = true;\n this.focusedIndex = this.items?.findIndex((item) => item.value === this.selected) ?? -1;\n }\n @HostListener('focusout') onFocusOut(): void {\n this.captureFocus = false;\n this.focusedIndex = -1;\n }\n\n protected focusedIndex = -1;\n protected captureFocus = false;\n\n protected handleChipClick(value: T): void {\n this.setSelected(value);\n }\n\n protected handleKeyDown(event: KeyboardEvent): void {\n switch (event.code) {\n case 'ArrowLeft':\n if (--this.focusedIndex < 0) {\n this.focusedIndex = this.items.length - 1;\n }\n break;\n case 'ArrowRight':\n if (++this.focusedIndex >= this.items.length) {\n this.focusedIndex = 0;\n }\n break;\n case 'Enter':\n case 'Space':\n this.setSelected(this.items?.[this.focusedIndex]?.value);\n if (event.target instanceof HTMLElement) {\n if (event.target?.nextElementSibling instanceof HTMLElement) {\n event.target.nextElementSibling.focus();\n }\n }\n break;\n default:\n return;\n }\n event.preventDefault();\n }\n\n protected setSelected(value: T): void {\n if (this.selected === value) {\n return;\n }\n this.selected = value;\n this.selectedChange.emit(value);\n }\n}\n","\n
\n
\n \n
\n \n\n","export { ChipListComponent } from './chip-list.component';\nexport { ChipListItem } from './interfaces';\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { AVATAR_WIDTH } from '../../constants';\n\n// We should switch to using the GalaxyAvatarModule in the future if it gets an option for this.\n\n@Component({\n selector: 'crm-unknown-user-avatar',\n template: `\n \n \n `,\n providers: [],\n imports: [CommonModule, GalaxyAvatarModule],\n})\nexport class CrmUnknownUserAvatarComponent {\n @Input() width: number = AVATAR_WIDTH;\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivityAssociationInterface, ActivityInterface, FieldValueInterface } from '@vendasta/crm';\nimport { IAMService, UserIdentifier } from '@vendasta/iamv2';\nimport { Observable, of } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, switchMap, tap } from 'rxjs/operators';\nimport { UserWithFullName } from './logger/interfaces';\nimport { CrmInjectionToken, ActivityType, CrmDependencies } from '../../../tokens-and-interfaces';\nimport { ActivityService, CRMTrackingService } from '../../../shared-services';\n\n@Injectable()\nexport class ActivityLoggerService {\n user$ = new Observable();\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private activityService: ActivityService,\n private readonly iamService: IAMService,\n private readonly trackingService: CRMTrackingService,\n ) {\n this.user$ = this.config.currentUserId$.pipe(\n distinctUntilChanged(),\n switchMap((currentUserId) => {\n return this.iamService.getUser(new UserIdentifier({ userId: currentUserId }));\n }),\n map((user) => ({\n ...user,\n fullName: `${user.firstName} ${user.lastName}`.trim(),\n })),\n shareReplay(1),\n );\n }\n\n addActivity(\n activityType: ActivityType,\n fields: FieldValueInterface[],\n associations: ActivityAssociationInterface[],\n ownerId?: string,\n ): Observable {\n const cleanAssociations = associations.map(\n (association) =>\n ({\n crmObjectId: association.crmObjectId,\n crmObjectType: association.crmObjectType,\n crmObjectSubtype: association.crmObjectSubtype,\n }) as ActivityAssociationInterface,\n );\n const activity = {\n crmObjectSubtype: activityType,\n fields: fields,\n associations: cleanAssociations,\n ownerId: ownerId,\n } as ActivityInterface;\n\n return this.activityService.createActivity(activity).pipe(\n tap(() => {\n this.trackingService.trackEvent('Activity', 'added-crm-activity', {\n activityType: activityType,\n });\n }),\n );\n }\n\n getActivity(activityId: string): Observable {\n return this.activityService.getMultiActivities([activityId]).pipe(map((activities) => activities[0]));\n }\n\n updateActivity(\n activityId: string,\n activityType: ActivityType,\n fields: FieldValueInterface[],\n associations: ActivityAssociationInterface[],\n ownerId?: string,\n fieldMask?: string[],\n ): Observable {\n const cleanAssociations = [] as ActivityAssociationInterface[];\n associations.forEach((association) => {\n cleanAssociations.push({\n crmObjectId: association.crmObjectId,\n crmObjectType: association.crmObjectType,\n crmObjectSubtype: association.crmObjectSubtype,\n } as ActivityAssociationInterface);\n });\n const activity = {\n crmObjectId: activityId,\n crmObjectSubtype: activityType,\n fields: fields,\n associations: cleanAssociations,\n ownerId: ownerId,\n } as ActivityInterface;\n\n if (!fieldMask?.length) {\n return of(activityId);\n }\n return this.activityService.updateActivity(activity, { paths: fieldMask }).pipe(\n map(() => activityId),\n tap(() => {\n this.trackingService.trackEvent('Activity', 'updated-crm-activity', {\n activityType: activityType,\n activityId: activityId,\n });\n }),\n );\n }\n}\n","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiaW50ZXJmYWNlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkVmFsdWVJbnRlcmZhY2UgfSBmcm9tICdAdmVuZGFzdGEvY3JtJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICdAdmVuZGFzdGEvaWFtdjInO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlckNvbXBvbmVudEludGVyZmFjZSB7XG4gIHJlYWRvbmx5IGZvcm1Hcm91cERpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlO1xuICByZWFkb25seSBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgcmVhZG9ubHkgb3duZXJJZD86IHN0cmluZztcbiAgZ2V0VmFsdWVzKCk6IEZpZWxkVmFsdWVJbnRlcmZhY2VbXTtcbiAgdmFsaWRhdGUoKTogdm9pZDtcbiAgcmVzZXRGb3JtKCk6IHZvaWQ7XG4gIHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyV2l0aEZ1bGxOYW1lIGV4dGVuZHMgVXNlciB7XG4gIGZ1bGxOYW1lOiBzdHJpbmc7XG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=","import { Directive, Input } from '@angular/core';\n\ntype Placement = 'after-description' | 'fields';\n\n@Directive({\n selector: '[crmLoggerContent]',\n standalone: true,\n})\nexport class CrmLoggerContentDirective {\n @Input() set crmLoggerContent(value: Placement) {\n this.placement = value;\n }\n placement?: Placement;\n}\n","import { TextFieldModule } from '@angular/cdk/text-field';\nimport { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, Input, ViewChild, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroupDirective, ReactiveFormsModule } from '@angular/forms';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ActivityInterface, FieldValueInterface } from '@vendasta/crm';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { format as formatDate } from 'date-fns-tz';\nimport { CrmFieldService, StandardIds } from '../../../../shared-services/crm-services/field.service';\nimport { TranslationModule } from '../../../../i18n/translation-module';\nimport { ActivityDirection, ActivityOutcome, CallStatus } from '../activity.interface';\n\nimport { LoggerComponentInterface } from './interfaces';\nimport { requiredFormGroupFieldsIf } from './validators';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged } from 'rxjs';\nimport { GalaxyRichTextEditorModule } from '@vendasta/galaxy/rich-text-editor';\nimport { DEFAULT_RICH_TEXT_PLUGINS, DEFAULT_RICH_TEXT_TOOLBAR } from './constants';\n\n@Component({\n selector: 'crm-activity-logger-call',\n templateUrl: './call.component.html',\n styleUrls: ['./shared.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n GalaxyFormFieldModule,\n MatSelectModule,\n MatDatepickerModule,\n MatInputModule,\n ReactiveFormsModule,\n TextFieldModule,\n GalaxyRichTextEditorModule,\n ],\n})\nexport class CrmActivityLoggerCallComponent implements LoggerComponentInterface, AfterViewInit {\n @Input() set activity(value: ActivityInterface | null) {\n this.setValues(value);\n }\n @Input({ transform: coerceBooleanProperty }) mobile: boolean | null = null;\n @Input()\n set description(value: string | null) {\n // only patch value when values are different\n // or else rte cursor will go back to the beginning of input\n if (value !== this.formGroup.controls['loggedCallNote']?.getRawValue()) {\n this.formGroup.patchValue({ loggedCallNote: value || '' }, { emitEvent: false });\n }\n }\n @Output() descriptionChange = new EventEmitter();\n\n @ViewChild('form') formGroupDirective!: FormGroupDirective;\n @ViewChild('defaultInput') defaultInput?: ElementRef;\n\n protected showErrors = false;\n protected readonly ActivityDirection = ActivityDirection;\n protected readonly CallStatus = CallStatus;\n protected readonly ActivityOutcome = ActivityOutcome;\n protected readonly textRows = 6;\n\n DEFAULT_RICH_TEXT_PLUGINS = DEFAULT_RICH_TEXT_PLUGINS;\n DEFAULT_RICH_TEXT_TOOLBAR = DEFAULT_RICH_TEXT_TOOLBAR;\n\n formGroup = new FormBuilder().nonNullable.group(\n {\n loggedCallNote: '',\n loggedCallDirection: '',\n loggedCallDate: formatDate(new Date(), \"yyyy-MM-dd'T'HH:mm\"),\n loggedCallStatus: '',\n loggedCallOutcome: '',\n },\n {\n validators: requiredFormGroupFieldsIf(\n () => this.showErrors,\n ['loggedCallNote', 'loggedCallDirection', 'loggedCallDate'],\n ),\n },\n );\n\n constructor(private readonly fieldsService: CrmFieldService) {\n this.formGroup.controls.loggedCallNote.valueChanges\n .pipe(takeUntilDestroyed(), distinctUntilChanged())\n .subscribe((value) => this.descriptionChange.emit(value));\n }\n\n ngAfterViewInit(): void {\n this.defaultInput?.nativeElement?.focus();\n }\n\n validate(): void {\n this.showErrors = true;\n this.formGroup.markAllAsTouched();\n this.updateValueAndValidity();\n }\n\n updateValueAndValidity(): void {\n this.formGroup.updateValueAndValidity();\n }\n\n private setValues(activity: ActivityInterface | null): void {\n if (activity) {\n const callDate = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityCallDate);\n const callBody = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityCallBody);\n const callDirection = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityCallDirection);\n const callStatus = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityCallStatus);\n const callOutcome = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityCallOutcome);\n\n this.formGroup.setValue({\n loggedCallNote: callBody?.stringValue || '',\n loggedCallDirection: callDirection?.stringValue || '',\n loggedCallDate: callDate?.dateValue ? formatDate(callDate.dateValue, \"yyyy-MM-dd'T'HH:mm\") : '',\n loggedCallStatus: callStatus?.stringValue || '',\n loggedCallOutcome: callOutcome?.stringValue || '',\n });\n } else if (this.formGroup.dirty) {\n this.resetForm();\n }\n }\n\n getValues(): FieldValueInterface[] {\n const formValues = this.formGroup.getRawValue();\n return [\n {\n fieldId: StandardIds.ActivityCallDate,\n dateValue: formValues.loggedCallDate ? new Date(formValues.loggedCallDate) : undefined,\n },\n {\n fieldId: StandardIds.ActivityCallBody,\n stringValue: formValues.loggedCallNote,\n },\n {\n fieldId: StandardIds.ActivityCallDirection,\n stringValue: formValues.loggedCallDirection,\n },\n {\n fieldId: StandardIds.ActivityCallStatus,\n stringValue: formValues.loggedCallStatus,\n },\n {\n fieldId: StandardIds.ActivityCallOutcome,\n stringValue: formValues.loggedCallOutcome,\n },\n ] as FieldValueInterface[];\n }\n\n resetForm(): void {\n this.showErrors = false;\n this.formGroup.reset({\n loggedCallNote: this.description || '',\n loggedCallDate: formatDate(new Date(), \"yyyy-MM-dd'T'HH:mm\"),\n });\n this.updateValueAndValidity();\n }\n}\n","
\n
\n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_DESCRIPTION' | translate }}\n \n \n \n
\n \n
\n \n \n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_CALL_DATE' | translate }}\n \n \n \n \n \n {{ 'ACTIVITY.OUTBOUND' | translate }}\n {{ 'ACTIVITY.INBOUND' | translate }}\n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_CALL_DIRECTION' | translate }}\n \n \n \n \n \n \n \n {{ 'ACTIVITY.CALL.CONNECTED' | translate }}\n {{ 'ACTIVITY.CALL.BUSY' | translate }}\n {{ 'ACTIVITY.CALL.REJECTED' | translate }}\n \n {{ 'ACTIVITY.CALL.LEFT_VOICEMAIL' | translate }}\n \n {{ 'ACTIVITY.CALL.NO_ANSWER' | translate }}\n \n {{ 'ACTIVITY.CALL.NOT_IN_SERVICE' | translate }}\n \n \n {{ 'ACTIVITY.CALL.WRONG_NUMBER' | translate }}\n \n \n \n \n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.NO_INTEREST' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.INTERESTED' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.QUALITY_CONNECT' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.DEMO_SCHEDULED' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.TIMELINE_6_12_MONTHS' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.RESCHEDULING' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.REFERRED' | translate }}\n \n \n \n \n \n
\n
\n","import { TextFieldModule } from '@angular/cdk/text-field';\nimport { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroupDirective, ReactiveFormsModule } from '@angular/forms';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ActivityInterface, FieldValueInterface } from '@vendasta/crm';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { format as formatDate } from 'date-fns-tz';\nimport { CrmFieldService, StandardIds } from '../../../../shared-services';\nimport { TranslationModule } from '../../../../i18n/translation-module';\nimport { ActivityDirection } from '../activity.interface';\n\nimport { LoggerComponentInterface } from './interfaces';\nimport { requiredFormGroupFieldsIf } from './validators';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged } from 'rxjs';\nimport { GalaxyRichTextEditorModule } from '@vendasta/galaxy/rich-text-editor';\nimport { DEFAULT_RICH_TEXT_PLUGINS, DEFAULT_RICH_TEXT_TOOLBAR } from './constants';\n\n@Component({\n selector: 'crm-activity-logger-email',\n templateUrl: './email.component.html',\n styleUrls: ['./shared.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n MatIconModule,\n GalaxyFormFieldModule,\n MatSelectModule,\n MatDatepickerModule,\n MatInputModule,\n ReactiveFormsModule,\n TextFieldModule,\n GalaxyRichTextEditorModule,\n ],\n})\nexport class CrmActivityLoggerEmailComponent implements LoggerComponentInterface, AfterViewInit {\n @Input() set activity(value: ActivityInterface | null) {\n this.setValues(value);\n }\n @Input({ transform: coerceBooleanProperty }) mobile: boolean | null = null;\n @Input()\n set description(value: string | null) {\n // only patch value when values are different\n // or else rte cursor will go back to the beginning of input\n if (value !== this.formGroup.controls['loggedEmailDescription']?.getRawValue()) {\n this.formGroup.patchValue({ loggedEmailDescription: value || '' }, { emitEvent: false });\n }\n }\n @Output() descriptionChange = new EventEmitter();\n\n @ViewChild('form') formGroupDirective!: FormGroupDirective;\n @ViewChild('defaultInput') defaultInput?: ElementRef;\n\n protected showErrors = false;\n protected readonly ActivityDirection = ActivityDirection;\n protected readonly textRows = 6;\n\n DEFAULT_RICH_TEXT_PLUGINS = DEFAULT_RICH_TEXT_PLUGINS;\n DEFAULT_RICH_TEXT_TOOLBAR = DEFAULT_RICH_TEXT_TOOLBAR;\n\n formGroup = new FormBuilder().nonNullable.group(\n {\n loggedEmailDescription: '',\n loggedEmailDirection: '',\n loggedEmailDate: formatDate(new Date(), \"yyyy-MM-dd'T'HH:mm\"),\n },\n {\n validators: requiredFormGroupFieldsIf(\n () => this.showErrors,\n ['loggedEmailDescription', 'loggedEmailDirection', 'loggedEmailDate'],\n ),\n },\n );\n\n constructor(private readonly fieldsService: CrmFieldService) {\n this.formGroup.controls.loggedEmailDescription.valueChanges\n .pipe(takeUntilDestroyed(), distinctUntilChanged())\n .subscribe((value) => this.descriptionChange.emit(value));\n }\n\n ngAfterViewInit(): void {\n this.defaultInput?.nativeElement?.focus();\n }\n\n validate(): void {\n this.showErrors = true;\n this.formGroup.markAllAsTouched();\n this.updateValueAndValidity();\n }\n\n updateValueAndValidity(): void {\n this.formGroup.updateValueAndValidity();\n }\n\n private setValues(activity: ActivityInterface | null): void {\n if (activity) {\n const emailDate = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityEmailDate);\n const emailBody = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityEmailBody);\n const emailDirection = this.fieldsService.getFieldValueFromCrmObject(\n activity,\n StandardIds.ActivityEmailDirection,\n );\n\n this.formGroup.setValue({\n loggedEmailDescription: emailBody?.stringValue || '',\n loggedEmailDirection: emailDirection?.stringValue || '',\n loggedEmailDate: emailDate?.dateValue ? formatDate(emailDate.dateValue, \"yyyy-MM-dd'T'HH:mm\") : '',\n });\n } else if (this.formGroup.dirty) {\n this.resetForm();\n }\n }\n\n getValues(): FieldValueInterface[] {\n const formValues = this.formGroup.getRawValue();\n return [\n {\n fieldId: StandardIds.ActivityEmailDate,\n dateValue: formValues.loggedEmailDate ? new Date(formValues.loggedEmailDate) : undefined,\n },\n {\n fieldId: StandardIds.ActivityEmailBody,\n stringValue: formValues.loggedEmailDescription,\n },\n {\n fieldId: StandardIds.ActivityEmailDirection,\n stringValue: formValues.loggedEmailDirection,\n },\n ] as FieldValueInterface[];\n }\n\n resetForm(): void {\n this.showErrors = false;\n this.formGroup.reset({\n loggedEmailDescription: this.description || '',\n loggedEmailDate: formatDate(new Date(), \"yyyy-MM-dd'T'HH:mm\"),\n });\n this.updateValueAndValidity();\n }\n}\n","
\n
\n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_DESCRIPTION' | translate }}\n \n \n \n
\n \n
\n \n \n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_EMAIL_DATE' | translate }}\n \n \n \n \n \n {{ 'ACTIVITY.OUTBOUND' | translate }}\n {{ 'ACTIVITY.INBOUND' | translate }}\n \n {{ 'ACTIVITY.FORWARDED' | translate }}\n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_EMAIL_DIRECTION' | translate }}\n \n \n \n \n \n
\n
\n","import { TextFieldModule } from '@angular/cdk/text-field';\nimport { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroupDirective, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ActivityInterface, FieldValueInterface } from '@vendasta/crm';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { CrmFieldService, StandardIds } from '../../../../shared-services/crm-services/field.service';\nimport { TranslationModule } from '../../../../i18n/translation-module';\nimport { format as formatDate } from 'date-fns-tz';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ActivityOutcome, MeetingDuration, MeetingStatus } from '../activity.interface';\nimport { LoggerComponentInterface } from './interfaces';\nimport { requiredFormGroupFieldsIf } from './validators';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged } from 'rxjs';\nimport { GalaxyRichTextEditorModule } from '@vendasta/galaxy/rich-text-editor';\nimport { DEFAULT_RICH_TEXT_PLUGINS, DEFAULT_RICH_TEXT_TOOLBAR } from './constants';\n\n@Component({\n selector: 'crm-activity-logger-meeting',\n templateUrl: './meeting.component.html',\n styleUrls: ['./shared.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n GalaxyFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n TextFieldModule,\n MatDatepickerModule,\n MatSelectModule,\n GalaxyRichTextEditorModule,\n ],\n})\nexport class CrmActivityLoggerMeetingComponent implements LoggerComponentInterface, AfterViewInit {\n @Input() set activity(value: ActivityInterface | null) {\n this.setValues(value);\n }\n @Input({ transform: coerceBooleanProperty }) mobile: boolean | null = null;\n @Input()\n set description(value: string | null) {\n // only patch value when values are different\n // or else rte cursor will go back to the beginning of input\n if (value !== this.formGroup.controls['loggedMeetingNote']?.getRawValue()) {\n this.formGroup.patchValue({ loggedMeetingNote: value || '' }, { emitEvent: false });\n }\n }\n @Output() descriptionChange = new EventEmitter();\n\n @ViewChild('form') formGroupDirective!: FormGroupDirective;\n @ViewChild('defaultInput') defaultInput?: ElementRef;\n\n protected showErrors = false;\n protected readonly ActivityOutcome = ActivityOutcome;\n protected readonly MeetingDuration = MeetingDuration;\n protected readonly MeetingStatus = MeetingStatus;\n protected readonly textRows = 6;\n\n DEFAULT_RICH_TEXT_PLUGINS = DEFAULT_RICH_TEXT_PLUGINS;\n DEFAULT_RICH_TEXT_TOOLBAR = DEFAULT_RICH_TEXT_TOOLBAR;\n\n formGroup = new FormBuilder().nonNullable.group(\n {\n loggedMeetingNote: '',\n loggedMeetingStatus: '',\n loggedMeetingOutcome: '',\n loggedMeetingDuration: 0,\n loggedMeetingDate: formatDate(new Date(), \"yyyy-MM-dd'T'HH:mm\"),\n },\n {\n validators: requiredFormGroupFieldsIf(() => this.showErrors, ['loggedMeetingNote', 'loggedMeetingDate']),\n },\n );\n\n constructor(private readonly fieldsService: CrmFieldService) {\n this.formGroup.controls.loggedMeetingNote.valueChanges\n .pipe(takeUntilDestroyed(), distinctUntilChanged())\n .subscribe((value) => this.descriptionChange.emit(value));\n }\n\n ngAfterViewInit(): void {\n this.defaultInput?.nativeElement?.focus();\n }\n\n resetForm(): void {\n this.showErrors = false;\n this.formGroup.reset({\n loggedMeetingNote: this.description || '',\n loggedMeetingDate: formatDate(new Date(), \"yyyy-MM-dd'T'HH:mm\"),\n });\n this.updateValueAndValidity();\n }\n\n getValues(): FieldValueInterface[] {\n const formValues = this.formGroup.getRawValue();\n return [\n {\n fieldId: StandardIds.ActivityMeetingStartTime,\n dateValue: formValues.loggedMeetingDate ? new Date(formValues.loggedMeetingDate) : undefined,\n },\n {\n fieldId: StandardIds.ActivityMeetingBody,\n stringValue: formValues.loggedMeetingNote,\n },\n {\n fieldId: StandardIds.ActivityMeetingStatus,\n stringValue: formValues.loggedMeetingStatus,\n },\n {\n fieldId: StandardIds.ActivityMeetingOutcome,\n stringValue: formValues.loggedMeetingOutcome,\n },\n {\n fieldId: StandardIds.ActivityMeetingDuration,\n integerValue: formValues.loggedMeetingDuration,\n },\n ] as FieldValueInterface[];\n }\n\n private setValues(activity: ActivityInterface | null): void {\n if (activity) {\n const meetingDate = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityMeetingStartTime);\n const meetingBody = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityMeetingBody);\n const meetingStatus = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityMeetingStatus);\n const meetingOutcome = this.fieldsService.getFieldValueFromCrmObject(\n activity,\n StandardIds.ActivityMeetingOutcome,\n );\n const meetingDuration = this.fieldsService.getFieldValueFromCrmObject(\n activity,\n StandardIds.ActivityMeetingDuration,\n );\n\n this.formGroup.setValue({\n loggedMeetingDate: meetingDate?.dateValue ? formatDate(meetingDate.dateValue, \"yyyy-MM-dd'T'HH:mm\") : '',\n loggedMeetingNote: (meetingBody?.stringValue || '').replace(/\\n/g, '
'),\n loggedMeetingStatus: meetingStatus?.stringValue || '',\n loggedMeetingOutcome: meetingOutcome?.stringValue || '',\n loggedMeetingDuration: meetingDuration?.integerValue || 0,\n });\n } else if (this.formGroup.dirty) {\n this.resetForm();\n }\n }\n\n validate(): void {\n this.showErrors = true;\n this.formGroup.markAllAsTouched();\n this.updateValueAndValidity();\n }\n\n updateValueAndValidity(): void {\n this.formGroup.updateValueAndValidity();\n }\n}\n","
\n
\n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_DESCRIPTION' | translate }}\n \n \n \n
\n \n
\n \n \n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_MEETING_DATE' | translate }}\n \n \n \n \n \n \n {{ 'ACTIVITY.MEETING.5_MIN' | translate }}\n \n \n {{ 'ACTIVITY.MEETING.15_MIN' | translate }}\n \n \n {{ 'ACTIVITY.MEETING.30_MIN' | translate }}\n \n \n {{ 'ACTIVITY.MEETING.1_HOUR' | translate }}\n \n \n {{ 'ACTIVITY.MEETING.1_HOUR_30_MIN' | translate }}\n \n \n {{ 'ACTIVITY.MEETING.2_HOURS_OR_MORE' | translate }}\n \n \n \n \n \n \n \n \n {{ 'ACTIVITY.MEETING.SCHEDULED' | translate }}\n \n \n {{ 'ACTIVITY.MEETING.RESCHEDULED' | translate }}\n \n \n {{ 'ACTIVITY.MEETING.COMPLETED' | translate }}\n \n \n {{ 'ACTIVITY.MEETING.CANCELLED' | translate }}\n \n {{ 'ACTIVITY.MEETING.NO_SHOW' | translate }}\n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_MEETING_STATUS' | translate }}\n \n \n \n \n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.NO_INTEREST' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.INTERESTED' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.QUALITY_CONNECT' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.DEMO_SCHEDULED' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.TIMELINE_6_12_MONTHS' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.RESCHEDULING' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.REFERRED' | translate }}\n \n \n \n \n \n
\n
\n","import { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Input, Output, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroupDirective, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ActivityInterface, FieldValueInterface } from '@vendasta/crm';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { CrmFieldService, StandardIds } from '../../../../shared-services/crm-services/field.service';\nimport { TranslationModule } from '../../../../i18n/translation-module';\nimport { LoggerComponentInterface } from './interfaces';\nimport { requiredFormGroupFieldsIf } from './validators';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged } from 'rxjs';\nimport { CrmDependencies, CrmInjectionToken } from '../../../../tokens-and-interfaces';\nimport { GalaxyRichTextEditorModule } from '@vendasta/galaxy/rich-text-editor';\nimport { DEFAULT_RICH_TEXT_PLUGINS, DEFAULT_RICH_TEXT_TOOLBAR } from './constants';\n\n@Component({\n selector: 'crm-activity-logger-note',\n templateUrl: './note.component.html',\n styleUrls: ['./shared.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n MatIconModule,\n MatChipsModule,\n GalaxyFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n TextFieldModule,\n MatAutocompleteModule,\n MatTooltipModule,\n GalaxyRichTextEditorModule,\n ],\n})\nexport class CrmActivityLoggerNoteComponent implements LoggerComponentInterface, AfterViewInit {\n @Input() set activity(value: ActivityInterface | null) {\n this.setValues(value);\n }\n @Input({ transform: coerceBooleanProperty }) mobile: boolean | null = null;\n @Input()\n set description(value: string | null) {\n // only patch value when values are different\n // or else rte cursor will go back to the beginning of input\n if (this.formGroup?.controls['noteBody']?.getRawValue() !== value) {\n this.formGroup.patchValue({ noteBody: value || '' }, { emitEvent: false });\n }\n }\n @Output() descriptionChange = new EventEmitter();\n\n @ViewChild('form') formGroupDirective!: FormGroupDirective;\n @ViewChild('defaultInput') defaultInput?: ElementRef;\n\n protected showErrors = false;\n protected readonly textRows = 6;\n\n DEFAULT_RICH_TEXT_PLUGINS = DEFAULT_RICH_TEXT_PLUGINS;\n DEFAULT_RICH_TEXT_TOOLBAR = DEFAULT_RICH_TEXT_TOOLBAR;\n\n formGroup = new FormBuilder().nonNullable.group(\n {\n noteBody: '',\n },\n {\n validators: requiredFormGroupFieldsIf(() => this.showErrors, ['noteBody']),\n },\n );\n\n separatorKeyCodes: number[] = [ENTER, COMMA];\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly fieldsService: CrmFieldService,\n ) {\n this.formGroup.controls.noteBody.valueChanges\n .pipe(takeUntilDestroyed(), distinctUntilChanged())\n .subscribe((value) => this.descriptionChange.emit(value));\n }\n\n ngAfterViewInit(): void {\n this.defaultInput?.nativeElement?.focus();\n }\n\n resetForm(): void {\n this.showErrors = false;\n this.formGroup.reset({ noteBody: this.description || '' });\n this.updateValueAndValidity();\n }\n\n getValues(): FieldValueInterface[] {\n const formValues = this.formGroup.getRawValue();\n const loggedNoteField = {\n fieldId: StandardIds.ActivityNoteBody,\n stringValue: formValues.noteBody,\n } as FieldValueInterface;\n\n return [loggedNoteField];\n }\n\n private setValues(activity: ActivityInterface | null): void {\n if (activity) {\n const noteBody = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityNoteBody);\n\n this.formGroup.setValue({\n noteBody: (noteBody?.stringValue || '').replace(/\\n/g, '
'),\n });\n } else if (this.formGroup.dirty) {\n this.resetForm();\n }\n }\n\n validate(): void {\n this.showErrors = true;\n this.formGroup.markAllAsTouched();\n this.updateValueAndValidity();\n }\n\n updateValueAndValidity(): void {\n this.formGroup.updateValueAndValidity();\n }\n}\n","
\n
\n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_DESCRIPTION' | translate }}\n \n \n \n
\n \n
\n \n
\n
\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Inject, Input, Output, signal } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatChipEvent, MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { Observable, combineLatest, debounceTime, map } from 'rxjs';\nimport { startWith, switchMap } from 'rxjs/operators';\nimport { CrmInjectionToken, CrmDependencies } from '../../../../tokens-and-interfaces';\nimport { TranslationModule } from '../../../../i18n/translation-module';\nimport { CrmObjectService, StandardIds } from '../../../../shared-services';\n\n@Component({\n selector: 'crm-activity-logger-tags',\n templateUrl: './tags.component.html',\n imports: [\n CommonModule,\n GalaxyFormFieldModule,\n ReactiveFormsModule,\n MatChipsModule,\n MatIconModule,\n TranslationModule,\n MatAutocompleteModule,\n MatTooltipModule,\n ],\n})\nexport class CrmActivityLoggerTagsComponent {\n @Input({ transform: coerceBooleanProperty }) mobile: boolean | null = null;\n\n @Input({ required: true }) set tags(value: string[]) {\n this.activityTags.set(value);\n }\n @Output() tagsChanged = new EventEmitter();\n\n protected showErrors = false;\n\n noteTagsCtrl = new FormControl([]);\n formGroup = new FormGroup({\n loggedNoteTags: this.noteTagsCtrl,\n });\n\n filteredTags$: Observable;\n separatorKeyCodes: number[] = [ENTER, COMMA];\n tagsCtrl = new FormControl('');\n protected readonly activityTags = signal([]);\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly crmObjectService: CrmObjectService,\n ) {\n const tagTextSearch$ = this.tagsCtrl.valueChanges.pipe(startWith(''));\n this.filteredTags$ = combineLatest([tagTextSearch$, this.config.namespace$]).pipe(\n debounceTime(300),\n switchMap(([searchTerm, namespace]) => {\n return this.crmObjectService.listFieldOptions('Activity', {\n namespace: namespace,\n fieldId: StandardIds.ActivityTags,\n pageSize: 50,\n searchTerm: searchTerm ?? '',\n });\n }),\n map((resp) => resp.options ?? []),\n );\n }\n\n addNewTag(event: MatChipInputEvent): void {\n this.addTag(event.value);\n this.tagsCtrl.setValue(null);\n }\n\n selectedTag(tag: MatAutocompleteSelectedEvent): void {\n if (!tag?.option?.value) {\n return;\n }\n this.addTag(tag.option.value);\n this.tagsCtrl.setValue(null);\n }\n\n private addTag(tag: string): void {\n const tags = this.activityTags();\n if (!tags.includes(tag)) {\n tags.push(tag);\n this.activityTags.set(tags);\n this.noteTagsCtrl.setValue(tags);\n this.noteTagsCtrl.markAsDirty();\n this.tagsChanged.emit(tags);\n }\n }\n\n removeTag(event: MatChipEvent): void {\n const tag = event.chip.value;\n const tags = this.activityTags().filter((t) => t !== tag);\n this.activityTags.set(tags);\n this.noteTagsCtrl.setValue(tags);\n this.noteTagsCtrl.markAsDirty();\n this.tagsChanged.emit(tags);\n }\n}\n","\n \n \n {{ tag }}\n \n \n \n \n\n\n \n \n {{ tag }}\n \n \n\n","import { Component, EventEmitter, Input, OnDestroy, Output, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BehaviorSubject, tap } from 'rxjs';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FormBuilder, FormGroupDirective, ReactiveFormsModule } from '@angular/forms';\nimport { format as formatDate } from 'date-fns-tz';\nimport { ActivityTaskType, ActivityTaskTypeTranslationKeys } from '../activity.interface';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FieldValueInterface } from '@vendasta/crm';\nimport { CrmFieldService, StandardIds } from '../../../../shared-services';\nimport { DEFAULT_TASK_STATUS, STANDARD_DATE_FORMAT } from './constants';\nimport { TranslationModule } from '../../../../i18n';\n\n@Component({\n selector: 'crm-activity-logger-follow-up-task',\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n GalaxyFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n TextFieldModule,\n MatDatepickerModule,\n MatSelectModule,\n MatButtonModule,\n MatIconModule,\n ],\n templateUrl: './follow-up-task.component.html',\n styleUrls: ['./follow-up-task.component.scss'],\n})\nexport class CrmActivityLoggerFollowUpTaskComponent implements OnDestroy {\n @Input({ transform: coerceBooleanProperty }) mobile: boolean | null = null;\n @ViewChild('form') formGroupDirective!: FormGroupDirective;\n\n @Output() expandedChanged = new EventEmitter();\n private isExpanded$$ = new BehaviorSubject(false);\n isExpanded$ = this.isExpanded$$.asObservable().pipe(tap((isExpanded) => this.expandedChanged.emit(isExpanded)));\n\n private today = new Date();\n formGroup = new FormBuilder().nonNullable.group({\n taskDueDate: formatDate(this.today.setDate(this.today.getDate() + 3), STANDARD_DATE_FORMAT),\n taskType: ActivityTaskType.ToDo,\n });\n\n protected readonly taskTypes = ActivityTaskTypeTranslationKeys;\n\n constructor(\n private readonly fieldsService: CrmFieldService,\n private readonly translateService: TranslateService,\n ) {}\n\n toggleExpanded(isExpanded: boolean) {\n this.isExpanded$$.next(isExpanded);\n }\n\n getValues(crmObjectName: string): FieldValueInterface[] {\n const formValues = this.formGroup.getRawValue();\n const followUpWith = this.translateService.instant('ACTIVITY_LOGGER.LOGGED_FOLLOW_UP_TASK.FOLLOW_UP_WITH');\n return [\n {\n fieldId: this.fieldsService.getFieldId(StandardIds.ActivityName),\n stringValue: `${followUpWith} ${crmObjectName}`,\n },\n {\n fieldId: this.fieldsService.getFieldId(StandardIds.ActivityTaskDueDate),\n dateValue: formValues.taskDueDate ? new Date(formValues.taskDueDate) : undefined,\n },\n {\n fieldId: this.fieldsService.getFieldId(StandardIds.ActivityTaskType),\n stringValue: formValues.taskType,\n },\n {\n fieldId: this.fieldsService.getFieldId(StandardIds.ActivityTaskStatus),\n stringValue: DEFAULT_TASK_STATUS,\n },\n ] as FieldValueInterface[];\n }\n\n ngOnDestroy(): void {\n this.expandedChanged.emit(false);\n }\n}\n","\n + {{ 'ACTIVITY_LOGGER.LOGGED_FOLLOW_UP_TASK.CREATE' | translate }}\n\n\n {{ 'ACTIVITY_LOGGER.LOGGED_FOLLOW_UP_TASK.TITLE' | translate }}\n
\n \n \n \n \n \n \n \n \n {{ type.nameKey | translate }}\n \n \n \n \n \n
\n \n
\n","export * from './interfaces';\nexport * from './logger-content.directive';\nexport * from './call.component';\nexport * from './email.component';\nexport * from './meeting.component';\nexport * from './note.component';\nexport * from './task.component';\nexport * from './tags.component';\nexport * from './follow-up-task.component';\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommunicationSubType } from '../../../../tokens-and-interfaces';\nimport { TranslationModule } from '../../../../i18n/translation-module';\nimport { MatIconModule } from '@angular/material/icon';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormBuilder, FormGroupDirective, ReactiveFormsModule } from '@angular/forms';\nimport { TextFieldModule } from '@angular/cdk/text-field';\n\nimport { LoggerComponentInterface } from './interfaces';\nimport { ActivityInterface, FieldValueInterface } from '@vendasta/crm';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { requiredFormGroupFieldsIf } from './validators';\nimport { ActivityOutcome } from '../activity.interface';\nimport { format as formatDate } from 'date-fns-tz';\nimport { CrmFieldService, StandardIds } from '../../../../shared-services/crm-services/field.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged } from 'rxjs';\nimport { GalaxyRichTextEditorModule } from '@vendasta/galaxy/rich-text-editor';\nimport { DEFAULT_RICH_TEXT_PLUGINS, DEFAULT_RICH_TEXT_TOOLBAR } from './constants';\n\n@Component({\n selector: 'crm-activity-logger-communication',\n templateUrl: './communication.component.html',\n styleUrls: ['./shared.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n MatIconModule,\n GalaxyFormFieldModule,\n MatSelectModule,\n MatDatepickerModule,\n MatInputModule,\n ReactiveFormsModule,\n TextFieldModule,\n GalaxyRichTextEditorModule,\n ],\n})\nexport class CrmActivityLoggerCommunicationComponent implements LoggerComponentInterface, AfterViewInit {\n @Input() set communicationType(value: CommunicationSubType) {\n // only patch value when values are different\n // or else rte cursor will go back to the beginning of input\n if (value !== this.formGroup.controls['loggedCommunicationChannel'].getRawValue()) {\n this.formGroup.patchValue({ loggedCommunicationChannel: value });\n }\n }\n @Input() set activity(value: ActivityInterface | null) {\n this.setValues(value);\n }\n @Input({ transform: coerceBooleanProperty }) mobile: boolean | null = null;\n\n @Input()\n set description(value: string | null) {\n // only patch value when values are different\n // or else rte cursor will go back to the beginning of input\n if (value !== this.formGroup.controls['loggedCommunicationBody']?.getRawValue()) {\n this.formGroup.patchValue({ loggedCommunicationBody: value || '' }, { emitEvent: false });\n }\n }\n @Output() descriptionChange = new EventEmitter();\n\n @ViewChild('form') formGroupDirective!: FormGroupDirective;\n @ViewChild('defaultInput') defaultInput?: ElementRef;\n\n protected showErrors = false;\n protected readonly textRows = 6;\n protected readonly ActivityOutcome = ActivityOutcome;\n\n DEFAULT_RICH_TEXT_PLUGINS = DEFAULT_RICH_TEXT_PLUGINS;\n DEFAULT_RICH_TEXT_TOOLBAR = DEFAULT_RICH_TEXT_TOOLBAR;\n\n formGroup = new FormBuilder().nonNullable.group(\n {\n loggedCommunicationChannel: '',\n loggedCommunicationOutcome: '',\n loggedCommunicationFromId: '',\n loggedCommunicationToId: '',\n loggedCommunicationBody: '',\n loggedCommunicationDate: formatDate(new Date(), \"yyyy-MM-dd'T'HH:mm\"),\n },\n {\n validators: requiredFormGroupFieldsIf(\n () => this.showErrors,\n ['loggedCommunicationBody', 'loggedCommunicationDate'],\n ),\n },\n );\n\n constructor(private readonly fieldsService: CrmFieldService) {\n this.formGroup.controls.loggedCommunicationBody.valueChanges\n .pipe(takeUntilDestroyed(), distinctUntilChanged())\n .subscribe((value) => this.descriptionChange.emit(value));\n }\n\n ngAfterViewInit(): void {\n this.defaultInput?.nativeElement?.focus();\n }\n\n validate(): void {\n this.showErrors = true;\n this.formGroup.markAllAsTouched();\n this.updateValueAndValidity();\n }\n\n updateValueAndValidity(): void {\n this.formGroup.updateValueAndValidity();\n }\n\n private setValues(activity: ActivityInterface | null): void {\n if (activity) {\n const communicationChannel = this.fieldsService.getFieldValueFromCrmObject(\n activity,\n StandardIds.ActivityCommunicationChannel,\n );\n const communicationOutcome = this.fieldsService.getFieldValueFromCrmObject(\n activity,\n StandardIds.ActivityCommunicationOutcome,\n );\n const communicationFromId = this.fieldsService.getFieldValueFromCrmObject(\n activity,\n StandardIds.ActivityCommunicationFromId,\n );\n const communicationToId = this.fieldsService.getFieldValueFromCrmObject(\n activity,\n StandardIds.ActivityCommunicationToId,\n );\n const communicationBody = this.fieldsService.getFieldValueFromCrmObject(\n activity,\n StandardIds.ActivityCommunicationBody,\n );\n const communicationDate = this.fieldsService.getFieldValueFromCrmObject(\n activity,\n StandardIds.ActivityCommunicationDate,\n );\n\n this.formGroup.setValue({\n loggedCommunicationChannel: communicationChannel?.stringValue || '',\n loggedCommunicationOutcome: communicationOutcome?.stringValue || '',\n loggedCommunicationFromId: communicationFromId?.stringValue || '',\n loggedCommunicationToId: communicationToId?.stringValue || '',\n loggedCommunicationBody: communicationBody?.stringValue || '',\n loggedCommunicationDate: communicationDate?.dateValue\n ? formatDate(communicationDate.dateValue, \"yyyy-MM-dd'T'HH:mm\")\n : '',\n });\n } else if (this.formGroup.dirty) {\n this.resetForm();\n }\n }\n\n getValues(): FieldValueInterface[] {\n const formValues = this.formGroup.getRawValue();\n return [\n {\n fieldId: StandardIds.ActivityCommunicationChannel,\n stringValue: formValues.loggedCommunicationChannel,\n },\n {\n fieldId: StandardIds.ActivityCommunicationBody,\n stringValue: formValues.loggedCommunicationBody,\n },\n {\n fieldId: StandardIds.ActivityCommunicationOutcome,\n stringValue: formValues.loggedCommunicationOutcome,\n },\n {\n fieldId: StandardIds.ActivityCommunicationToId,\n stringValue: formValues.loggedCommunicationToId,\n },\n {\n fieldId: StandardIds.ActivityCommunicationFromId,\n stringValue: formValues.loggedCommunicationFromId,\n },\n {\n fieldId: StandardIds.ActivityCommunicationDate,\n dateValue: formValues.loggedCommunicationDate ? new Date(formValues.loggedCommunicationDate) : undefined,\n },\n ] as FieldValueInterface[];\n }\n\n resetForm(): void {\n this.showErrors = false;\n this.formGroup.reset({\n loggedCommunicationBody: this.description || '',\n loggedCommunicationDate: formatDate(new Date(), \"yyyy-MM-dd'T'HH:mm\"),\n });\n this.updateValueAndValidity();\n }\n}\n","
\n
\n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_DESCRIPTION' | translate }}\n \n \n \n
\n \n
\n \n \n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_COMMUNICATION_DATE' | translate }}\n \n \n \n \n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.NO_INTEREST' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.INTERESTED' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.QUALITY_CONNECT' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.DEMO_SCHEDULED' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.TIMELINE_6_12_MONTHS' | translate }}\n \n \n {{ 'ACTIVITY.OUTCOME_OPTIONS.REFERRED' | translate }}\n \n \n \n \n {{ 'ACTIVITY_LOGGER.ERROR_REQUIRE_COMMUNICATION_OUTCOME' | translate }}\n \n \n \n \n \n
\n
\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, computed } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Observable, debounceTime, distinctUntilChanged, firstValueFrom, map, of, switchMap } from 'rxjs';\nimport { ObjectAssociationType } from '../../../tokens-and-interfaces';\nimport { SimplifiedUser } from '../../../tokens-and-interfaces';\nimport { CrmAssociationFormField, FormFieldAssociation } from '../interface';\nimport { CrmAssociationFormFieldComponent } from '../association-form-field.component';\n\n@Component({\n selector: 'crm-team-association-form-field',\n templateUrl: './team-association.component.html',\n imports: [CommonModule, CrmAssociationFormFieldComponent],\n})\nexport class CrmTeamAssociationFormFieldComponent extends CrmAssociationFormField {\n @Input({ required: true }) set associations(value: FormFieldAssociation[]) {\n this.setAssociations(value);\n }\n @Input() fixedId: string | null = null;\n @Input({ transform: coerceBooleanProperty }) mobile: boolean | null = null;\n @Input() placeholder = '';\n\n @Output() associationsChange = new EventEmitter();\n\n protected readonly crmObjectType = 'User';\n protected readonly userService = this.config.services?.userService;\n protected readonly filteredAssociationsList = computed(() => {\n const associations = this.associationsList();\n return associations.filter((association) => association.crmObjectId !== this.fixedId);\n });\n\n protected override async fetchObjects(objectIds: string[]): Promise {\n const users = this.userService ? await firstValueFrom(this.userService.getMultiUsers(objectIds)) : [];\n return this.mapAssociations(users);\n }\n\n protected override setupSearchTerm(): Observable {\n return this.searchTerm$$.asObservable().pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap((search) => this.userService?.searchUsers?.(search) ?? of([])),\n map((filteredOptions) => this.mapAssociations(filteredOptions)),\n map((filteredOptions) => filteredOptions.filter((o) => o.crmObjectId !== this.fixedId)),\n );\n }\n\n private mapAssociations(users: SimplifiedUser[]): FormFieldAssociation[] {\n return (\n users?.map(\n (option) =>\n ({\n name: option.displayName,\n crmObjectId: option.userId,\n crmObjectType: this.crmObjectType,\n }) as FormFieldAssociation,\n ) || []\n );\n }\n\n handleAdd(association: FormFieldAssociation): void {\n const associations = this.associationsList();\n if (!associations.find((a) => a.crmObjectId === association.crmObjectId)) {\n const newAssociations = [...associations, association];\n this.associationsList.set(newAssociations);\n this.associationsChange.emit(newAssociations);\n }\n }\n\n handleRemove(association: FormFieldAssociation): void {\n const associations = this.associationsList().filter((a) => a.crmObjectId !== association.crmObjectId);\n this.associationsList.set(associations);\n this.associationsChange.emit(associations);\n }\n\n handleSearchTermChange(searchTerm?: unknown): void {\n this.updateSearchTerm(searchTerm);\n }\n}\n","\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Observable, debounceTime, distinctUntilChanged, firstValueFrom, map, of, switchMap } from 'rxjs';\nimport { ObjectAssociationType } from '../../../tokens-and-interfaces';\nimport { SimplifiedOpportunity } from '../../../tokens-and-interfaces';\nimport { CrmAssociationFormField, FormFieldAssociation } from '../interface';\nimport { CrmAssociationFormFieldComponent } from '../association-form-field.component';\n\n@Component({\n selector: 'crm-sales-opportunity-association-form-field',\n templateUrl: './sales-opportunity-association.component.html',\n imports: [CommonModule, CrmAssociationFormFieldComponent],\n})\nexport class CrmSalesOpportunityAssociationFormFieldComponent extends CrmAssociationFormField {\n @Input({ required: true }) set accountGroupId(value: string | null) {\n this.opportunityService?.setAccountGroupId(value ?? '');\n }\n @Input({ required: true }) set associations(value: FormFieldAssociation[]) {\n this.setAssociations(value);\n }\n @Input({ transform: coerceBooleanProperty }) mobile: boolean | null = null;\n @Input() placeholder = '';\n\n @Output() associationsChange = new EventEmitter();\n\n protected readonly crmObjectType = 'Opportunity';\n protected readonly opportunityService = this.config.services?.opportunityService;\n\n protected override async fetchObjects(objectIds: string[]): Promise {\n const opportunities = this.opportunityService\n ? await firstValueFrom(this.opportunityService.getMultiOpportunity(objectIds))\n : [];\n return this.mapAssociations(opportunities);\n }\n\n protected override setupSearchTerm(): Observable {\n return this.searchTerm$$.asObservable().pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap((search) => (this.opportunityService ? this.opportunityService.searchOpportunities(search) : of([]))),\n map((filteredOptions) => this.mapAssociations(filteredOptions)),\n );\n }\n\n private mapAssociations(opportunities: SimplifiedOpportunity[]): FormFieldAssociation[] {\n return (\n opportunities?.map(\n (option) =>\n ({\n name: option.name,\n crmObjectId: option.opportunityId,\n crmObjectType: this.crmObjectType,\n }) as FormFieldAssociation,\n ) || []\n );\n }\n\n handleAdd(association: FormFieldAssociation): void {\n const associations = this.associationsList();\n if (!associations.find((a) => a.crmObjectId === association.crmObjectId)) {\n const newAssociations = [...associations, association];\n this.associationsList.set(newAssociations);\n this.associationsChange.emit(newAssociations);\n }\n }\n\n handleRemove(association: FormFieldAssociation): void {\n const associations = this.associationsList().filter((a) => a.crmObjectId !== association.crmObjectId);\n this.associationsList.set(associations);\n this.associationsChange.emit(associations);\n }\n\n handleSearchTermChange(searchTerm?: unknown): void {\n this.updateSearchTerm(searchTerm);\n }\n}\n","\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, input, model } from '@angular/core';\nimport { FormFieldAssociation } from '../interface';\nimport { CrmAssociationFormFieldComponent } from '../association-form-field.component';\nimport { CrmInjectionToken, CrmObjectInjectionToken, ObjectType } from '../../../tokens-and-interfaces';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n from,\n map,\n Observable,\n switchMap,\n} from 'rxjs';\nimport { ListCrmObjectsRequestInterface } from '@vendasta/crm';\nimport { CrmFiltersService, CrmObjectDisplayService, CrmObjectService } from '../../../shared-services';\nimport { TranslateByObjectTypePipe } from '../../../i18n';\n\n@Component({\n selector: 'crm-object-association-form-field',\n templateUrl: './crm-object-association.component.html',\n imports: [CommonModule, CrmAssociationFormFieldComponent, TranslateByObjectTypePipe],\n})\nexport class CrmObjectAssociationFormFieldComponent {\n objectType = input.required();\n associationsList = model([]);\n private readonly customizationService = inject(CrmObjectDisplayService);\n private readonly searchTerm$$ = new BehaviorSubject('');\n private readonly searchTerm$ = this.searchTerm$$.asObservable();\n private readonly config = inject(CrmInjectionToken);\n private readonly crmObjectService = inject(CrmObjectService);\n private readonly crmFiltersService = inject(CrmFiltersService);\n protected readonly options$ = this.setupSearchTerm();\n private readonly crmObjectDependencies = inject(CrmObjectInjectionToken, { optional: true });\n protected updateSearchTerm(searchTerm?: unknown): void {\n if (typeof searchTerm === 'string') {\n this.searchTerm$$.next(searchTerm.trim());\n } else {\n this.searchTerm$$.next('');\n }\n }\n protected handleAdd(association: FormFieldAssociation): void {\n this.associationsList.update((prevAssociations) => {\n if (!prevAssociations.find((a) => a.crmObjectId === association.crmObjectId)) {\n return [...prevAssociations, association];\n }\n return prevAssociations;\n });\n }\n\n protected handleRemove(association: FormFieldAssociation): void {\n this.associationsList.update((prevAssociations) => {\n return prevAssociations.filter((a) => a.crmObjectId !== association.crmObjectId);\n });\n }\n\n async buildListCrmObjectsRequest(namespace: string, searchTerm: string): Promise {\n const initialFilters = await this.crmFiltersService.getInitialAppliedFilters$(this.objectType());\n return {\n namespace,\n search: { searchTerm },\n pagingOptions: { cursor: '', pageSize: 10 },\n filtersV2: this.crmObjectService.convertFilters(initialFilters),\n } as ListCrmObjectsRequestInterface;\n }\n\n protected setupSearchTerm(): Observable {\n return combineLatest([this.searchTerm$, this.config.namespace$]).pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap(([searchTerm, namespace]) => from(this.buildListCrmObjectsRequest(namespace, searchTerm))),\n switchMap((r: ListCrmObjectsRequestInterface) => this.crmObjectService.listObjects(this.objectType(), r)),\n map(\n (filteredOptions) =>\n filteredOptions?.crmObjects?.map(\n (option) =>\n ({\n name: this.crmObjectDependencies?.getDisplayName\n ? this.crmObjectDependencies?.getDisplayName(option)\n : this.customizationService.getObjectDisplayName(this.objectType(), option),\n associationInfo: this.customizationService.getAssociationInfo(this.objectType(), option),\n crmObjectId: option.crmObjectId,\n crmObjectType: this.objectType(),\n }) as FormFieldAssociation,\n ) || [],\n ),\n );\n }\n}\n","\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, inject, Input, model, Output, input, computed } from '@angular/core';\nimport { FormFieldAssociation } from '../interface';\nimport { CrmAssociationFormFieldComponent } from '../association-form-field.component';\nimport {\n AssociationFormField,\n CrmInjectionToken,\n CrmObjectInjectionToken,\n ObjectType,\n SimplifiedOpportunity,\n} from '../../../tokens-and-interfaces';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n from,\n map,\n Observable,\n of,\n switchMap,\n} from 'rxjs';\nimport { ListCrmObjectsRequestInterface, ListCrmObjectsResponseInterface } from '@vendasta/crm';\nimport { CrmFiltersService, CrmObjectDisplayService, CrmObjectService } from '../../../shared-services';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'crm-multi-object-association-form-field',\n templateUrl: './crm-multi-object-association.component.html',\n imports: [CommonModule, CrmAssociationFormFieldComponent, TranslateModule],\n})\nexport class CrmMultiObjectAssociationFormFieldComponent {\n @Input({ required: true }) set accountGroupId(value: string | null) {\n this.opportunityService?.setAccountGroupId(value ?? '');\n }\n\n isMobile = input(false);\n\n protected objectType = model('Contact');\n private readonly objectType$ = toObservable(this.objectType);\n protected objectSubtype = model();\n private readonly objectSubtype$ = toObservable(this.objectSubtype);\n\n availableObjectTypes = input();\n associationFormFields = model([]);\n filteredAssociationFormFields = computed(() => {\n const availableObjectTypes = this.availableObjectTypes();\n return this.associationFormFields().filter((field) => {\n if (!availableObjectTypes) {\n return true;\n }\n return availableObjectTypes.includes(field.type);\n });\n });\n\n @Output() associationFormFieldsOutput = new EventEmitter();\n\n private readonly customizationService = inject(CrmObjectDisplayService);\n private readonly searchTerm$$ = new BehaviorSubject('');\n private readonly searchTerm$ = this.searchTerm$$.asObservable();\n private readonly config = inject(CrmInjectionToken);\n private readonly crmObjectService = inject(CrmObjectService);\n private readonly crmFiltersService = inject(CrmFiltersService);\n protected readonly opportunityService = this.config.services?.opportunityService;\n protected readonly options$ = this.setupSearchTerm();\n private readonly crmObjectDependencies = inject(CrmObjectInjectionToken, { optional: true });\n\n protected updateSearchTerm(searchTerm?: unknown): void {\n if (typeof searchTerm === 'string') {\n this.searchTerm$$.next(searchTerm.trim());\n } else {\n this.searchTerm$$.next('');\n }\n }\n\n protected handleRemove(association: FormFieldAssociation): void {\n this.associationFormFields.update((associationFormFields) => {\n let found = false;\n const updatedAssociationFormFields = associationFormFields.map((field) => {\n if (field.type === association.crmObjectType) {\n found = true;\n const updatedAssociations = field.associations.filter((a) => a.crmObjectId !== association.crmObjectId);\n return { ...field, associations: updatedAssociations };\n }\n return field;\n });\n if (!found) {\n console.warn(`Association form field for ${association.crmObjectType} not found`);\n }\n this.associationFormFieldsOutput.emit([...updatedAssociationFormFields]);\n return updatedAssociationFormFields;\n });\n }\n\n protected handleUpdate(associationFormFields: AssociationFormField[]): void {\n this.associationFormFields.update((fields) => {\n return fields.map((field) => {\n const newAssociations =\n associationFormFields.find((f) => f.type === field.type)?.associations || field.associations;\n return { ...field, associations: newAssociations };\n });\n });\n this.associationFormFieldsOutput.emit(this.associationFormFields());\n }\n\n protected updateObjectType([objectType, objectSubtype]: [ObjectType, string?]): void {\n this.objectType.set(objectType);\n this.objectSubtype.set(objectSubtype);\n }\n\n private async buildListCrmObjectsRequest(\n namespace: string,\n searchTerm: string,\n ): Promise {\n const initialFilters = await this.crmFiltersService.getInitialAppliedFilters$(this.objectType());\n return {\n namespace,\n search: { searchTerm },\n pagingOptions: { cursor: '', pageSize: 10 },\n filtersV2: this.crmObjectService.convertFilters(initialFilters),\n crmObjectSubtype: this.objectSubtype(),\n } as ListCrmObjectsRequestInterface;\n }\n\n protected setupSearchTerm(): Observable {\n return combineLatest([this.searchTerm$, this.config.namespace$, this.objectType$, this.objectSubtype$]).pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap(([searchTerm, namespace, objectType, objectSubtype]) => {\n return from(this.buildListCrmObjectsRequest(namespace, searchTerm)).pipe(\n map(\n (r) =>\n [r, objectType, objectSubtype, searchTerm] as [\n ListCrmObjectsRequestInterface,\n ObjectType,\n string | undefined,\n string,\n ],\n ),\n );\n }),\n switchMap(\n ([r, objectType, objectSubtype, searchTerm]: [\n ListCrmObjectsRequestInterface,\n ObjectType,\n string | undefined,\n string,\n ]) => {\n if (objectType === 'Opportunity') {\n if (this.opportunityService) {\n return this.opportunityService.searchOpportunities(searchTerm).pipe(\n map((opportunities) => {\n return this.mapOpportunityAssociations(opportunities);\n }),\n );\n } else {\n return of([]);\n }\n }\n return this.crmObjectService.listObjects(objectType, r).pipe(\n map((filteredOptions) => {\n return this.mapFilteredOptions(filteredOptions, objectType, objectSubtype);\n }),\n );\n },\n ),\n );\n }\n\n private mapFilteredOptions(\n filteredOptions: ListCrmObjectsResponseInterface,\n objectType: ObjectType,\n objectSubtype?: string,\n ): FormFieldAssociation[] {\n return (\n filteredOptions?.crmObjects?.map(\n (option) =>\n ({\n name: this.crmObjectDependencies?.getDisplayName\n ? this.crmObjectDependencies?.getDisplayName(option)\n : this.customizationService.getObjectDisplayName(objectType, option),\n associationInfo: this.customizationService.getAssociationInfo(objectType, option),\n crmObjectId: option.crmObjectId,\n crmObjectType: objectType,\n crmObjectSubtype: objectSubtype,\n }) as FormFieldAssociation,\n ) || []\n );\n }\n\n private mapOpportunityAssociations(opportunities: SimplifiedOpportunity[]): FormFieldAssociation[] {\n return (\n opportunities?.map(\n (option) =>\n ({\n name: option.name,\n crmObjectId: option.opportunityId,\n crmObjectType: this.objectType(),\n }) as FormFieldAssociation,\n ) || []\n );\n }\n}\n","\n","export * from './contact-to-company-association/contact-to-company-association.component';\nexport * from './company-association/company-association.component';\nexport * from './team-association/team-association.component';\nexport * from './sales-opportunity-association/sales-opportunity-association.component';\nexport * from './crm-object-association/crm-object-association.component';\nexport * from './crm-multi-object-association/crm-multi-object-association.component';\nexport { FormFieldAssociation } from './interface';\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Inject, Input, Output, signal, ViewChild } from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport {\n ActivityAssociationInterface,\n ActivityInterface,\n CrmObjectInterface,\n FieldValueInterface,\n StringListInterface,\n} from '@vendasta/crm';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { GalaxyButtonLoadingIndicatorModule } from '@vendasta/galaxy/button-loading-indicator';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { User } from '@vendasta/iamv2';\nimport { switchWhenFalsy } from '@vendasta/rx-utils';\nimport { ObservableWorkState } from '@vendasta/rx-utils/work-state';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n firstValueFrom,\n from,\n map,\n Observable,\n of,\n ReplaySubject,\n shareReplay,\n tap,\n} from 'rxjs';\nimport { distinctUntilChanged, filter, mergeMap, startWith, switchMap, take, withLatestFrom } from 'rxjs/operators';\nimport { ChipListComponent, ChipListItem } from '../../chip-list';\nimport { DropDownOptionsButton } from '../../chip-list/interfaces';\nimport { CrmUnknownUserAvatarComponent } from '../../unknown-user-avatar/unknown-user-avatar.component';\nimport {\n ActivityType,\n AssociationFormField,\n CommunicationSubType,\n CrmDependencies,\n CrmInjectionToken,\n ObjectType,\n} from '../../../tokens-and-interfaces';\nimport { AVATAR_WIDTH, SNACKBAR_DURATION } from '../../../constants';\n\nimport { TranslationModule } from '../../../i18n';\nimport { ActivityLoggerService } from './activity-logger.service';\nimport {\n CrmActivityLoggerCallComponent,\n CrmActivityLoggerEmailComponent,\n CrmActivityLoggerFollowUpTaskComponent,\n CrmActivityLoggerMeetingComponent,\n CrmActivityLoggerNoteComponent,\n CrmActivityLoggerTagsComponent,\n CrmActivityLoggerTaskComponent,\n CrmLoggerContentDirective,\n LoggerComponentInterface,\n} from './logger';\nimport { CrmActivityLoggerCommunicationComponent } from './logger/communication.component';\nimport {\n CrmAssociationService,\n CrmFieldService,\n CrmObjectDisplayService,\n CrmObjectService,\n PlatformExtensionFieldIds,\n StandardIds,\n} from '../../../shared-services';\nimport {\n CrmMultiObjectAssociationFormFieldComponent,\n CrmObjectAssociationFormFieldComponent,\n CrmSalesOpportunityAssociationFormFieldComponent,\n CrmTeamAssociationFormFieldComponent,\n FormFieldAssociation,\n} from '../../association-form-field';\n\nconst DEFAULT_SELECTED_ACTIVITY_TYPE: ActivityType = 'Note';\n// matches the `sm` column size\nconst DEFAULT_MOBILE_BREAKPOINT = '600px';\n\ntype SelectableActivityType = ChipListItem;\n\nconst SELECTABLE_ACTIVITY_TYPES: SelectableActivityType[] = [\n {\n value: 'Note',\n label: 'ACTIVITY_TYPES.NOTE',\n icon: 'notes',\n },\n {\n value: 'Email',\n label: 'ACTIVITY_TYPES.EMAIL',\n icon: 'email',\n },\n {\n value: 'Call',\n label: 'ACTIVITY_TYPES.CALL',\n icon: 'phone',\n },\n {\n value: 'Meeting',\n label: 'ACTIVITY_TYPES.MEETING',\n icon: 'calendar_today',\n },\n {\n value: 'Task',\n label: 'ACTIVITY_TYPES.TASK',\n icon: 'assignment_turned_in',\n },\n];\n\ntype SelectableCommunicationType = DropDownOptionsButton;\n\nconst SELECTABLE_COMMUNICATION_TYPES: SelectableCommunicationType[] = [\n {\n value: 'SMS',\n label: 'ACTIVITY_TYPES.COMMUNICATION_SUBTYPES.SMS',\n },\n {\n value: 'Inbox',\n label: 'ACTIVITY_TYPES.COMMUNICATION_SUBTYPES.INBOX',\n },\n {\n value: 'LinkedIn',\n label: 'ACTIVITY_TYPES.COMMUNICATION_SUBTYPES.LINKEDIN',\n },\n];\n\ntype Layout = 'auto' | 'mobile';\n\nconst manuallyLoggedFieldValue: FieldValueInterface = {\n fieldId: StandardIds.ActivityManuallyLogged,\n booleanValue: true,\n};\n\n@Component({\n selector: 'crm-activity-logger',\n templateUrl: './activity-logger.component.html',\n styleUrls: ['./activity-logger.component.scss', './logger/shared.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n MatCardModule,\n MatIconModule,\n MatAutocompleteModule,\n MatChipsModule,\n MatButtonModule,\n GalaxyAvatarModule,\n GalaxyFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n CrmUnknownUserAvatarComponent,\n MatTooltipModule,\n GalaxyButtonLoadingIndicatorModule,\n ChipListComponent,\n CrmLoggerContentDirective,\n CrmActivityLoggerNoteComponent,\n CrmActivityLoggerEmailComponent,\n CrmActivityLoggerCallComponent,\n CrmActivityLoggerMeetingComponent,\n CrmActivityLoggerTaskComponent,\n CrmTeamAssociationFormFieldComponent,\n CrmSalesOpportunityAssociationFormFieldComponent,\n CrmActivityLoggerCommunicationComponent,\n MatMenuModule,\n CrmActivityLoggerTagsComponent,\n CrmActivityLoggerFollowUpTaskComponent,\n CrmObjectAssociationFormFieldComponent,\n CrmMultiObjectAssociationFormFieldComponent,\n ],\n providers: [ActivityLoggerService],\n})\nexport class CrmActivityLoggerComponent {\n @ViewChild(CrmActivityLoggerNoteComponent) loggerNoteComponent?: CrmActivityLoggerNoteComponent;\n @ViewChild(CrmActivityLoggerEmailComponent) loggerEmailComponent?: CrmActivityLoggerEmailComponent;\n @ViewChild(CrmActivityLoggerCallComponent) loggerCallComponent?: CrmActivityLoggerCallComponent;\n @ViewChild(CrmActivityLoggerMeetingComponent) loggerMeetingComponent?: CrmActivityLoggerMeetingComponent;\n @ViewChild(CrmActivityLoggerTaskComponent) loggerTaskComponent?: CrmActivityLoggerTaskComponent;\n @ViewChild(CrmActivityLoggerCommunicationComponent)\n loggerCommunicationComponent?: CrmActivityLoggerCommunicationComponent;\n @ViewChild(CrmActivityLoggerFollowUpTaskComponent)\n loggerFollowUpTaskComponent?: CrmActivityLoggerFollowUpTaskComponent;\n\n AVATAR_WIDTH = AVATAR_WIDTH;\n SELECTABLE_ACTIVITY_TYPES = SELECTABLE_ACTIVITY_TYPES;\n SELECTABLE_COMMUNICATION_TYPES = SELECTABLE_COMMUNICATION_TYPES;\n activityTypeSelected?: ActivityType;\n communicationSubTypeSelected?: CommunicationSubType;\n collapsed = signal(true);\n sharedDescription: string | null = '';\n\n private readonly layout$$: BehaviorSubject = new BehaviorSubject('auto');\n readonly mobileLayout$: Observable;\n\n private readonly objectType$$ = new ReplaySubject(1);\n protected objectType$ = this.objectType$$.asObservable();\n protected isCompany$: Observable = this.objectType$.pipe(map((objectType) => objectType === 'Company'));\n @Input({ required: true }) set objectType(value: ObjectType) {\n this.objectType$$.next(value);\n }\n\n private readonly crmObjectId$$ = new ReplaySubject(1);\n protected crmObjectId$ = this.crmObjectId$$.asObservable();\n @Input({ required: true }) set crmObjectId(value: string) {\n this.crmObjectId$$.next(value);\n }\n\n public user$ = this.activityLoggerService.user$;\n protected activityOwnerId$: Observable;\n @Input() activityOwner?: User;\n\n /**\n * Associations to be added to the activity. These are not visible to the user.\n */\n @Input() extraAssociations?: ActivityAssociationInterface[];\n /**\n * Hide Company and Contact association fields.\n */\n @Input() hideCrmObjectAssociations = false;\n\n /**\n * Expand and select the activity type when provided.\n */\n @Input() set expandAndSelectType(value: string | undefined) {\n const activityType = value ? (value as ActivityType) : DEFAULT_SELECTED_ACTIVITY_TYPE;\n this.onActivityTypeChanged(activityType);\n }\n\n /**\n * Layout of the activity logger.\n * Use `mobile` to display the activity logger in a mobile layout disregarding the screen size.\n */\n @Input() set layout(value: Layout) {\n this.layout$$.next(value);\n }\n /**\n * When an Activity ID is passed in assume we are editing.\n */\n private readonly crmActivityId$$ = new BehaviorSubject('');\n protected crmActivityId$ = this.crmActivityId$$.asObservable();\n protected isEditing$: Observable;\n @Input() set crmActivityId(value: string) {\n this.crmActivityId$$.next(value);\n }\n\n @Output() activityCreated: EventEmitter = new EventEmitter();\n @Output() activityUpdated: EventEmitter = new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() cancel: EventEmitter = new EventEmitter();\n\n activity$$ = new BehaviorSubject(null);\n activity$ = this.activity$$.asObservable();\n\n protected teamAssociations = signal([]);\n protected objectAssociations = signal([]);\n protected availableObjectTypes$: Observable;\n protected hasOpportunityType$: Observable;\n\n protected get contactAssociations(): FormFieldAssociation[] {\n return this.objectAssociations().find((field) => field.type === 'Contact')?.associations || [];\n }\n protected set contactAssociations(newAssociations: FormFieldAssociation[]) {\n this.objectAssociations.update((fields) => {\n return fields.map((field) => (field.type === 'Contact' ? { ...field, associations: newAssociations } : field));\n });\n }\n\n protected get companyAssociations(): FormFieldAssociation[] {\n return this.objectAssociations().find((field) => field.type === 'Company')?.associations || [];\n }\n protected set companyAssociations(newAssociations: FormFieldAssociation[]) {\n this.objectAssociations.update((fields) => {\n return fields.map((field) => (field.type === 'Company' ? { ...field, associations: newAssociations } : field));\n });\n }\n\n protected get opportunityAssociations(): FormFieldAssociation[] {\n return this.objectAssociations().find((field) => field.type === 'Opportunity')?.associations || [];\n }\n protected set opportunityAssociations(newAssociations: FormFieldAssociation[]) {\n this.objectAssociations.update((fields) => {\n return fields.map((field) =>\n field.type === 'Opportunity' ? { ...field, associations: newAssociations } : field,\n );\n });\n }\n\n tags$$ = new BehaviorSubject([]);\n tags$ = this.tags$$.asObservable();\n\n private readonly upsertActivityWorkState$ = new ObservableWorkState();\n protected readonly upsertActivityButtonLoading$ = this.upsertActivityWorkState$.isLoading$;\n\n protected showTeamMemberInput = false;\n protected showOpportunityInput = false;\n protected showAssociationModal$ = this.config.hasCrmAssociationModalFeatureFlag$ ?? of(false);\n protected readonly primaryAccountGroupId$: Observable;\n private readonly crmObjectName$: Observable;\n private readonly crmObject$: Observable;\n private readonly followUpExpanded$$ = new BehaviorSubject(false);\n protected hasTimelineActivitiesFeatureFlag = toSignal(this.config?.hasTimelineActivitiesFeatureFlag$ ?? of(false));\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly displayService: CrmObjectDisplayService,\n private activityLoggerService: ActivityLoggerService,\n private crmObjectService: CrmObjectService,\n private readonly snackService: SnackbarService,\n private readonly fieldsService: CrmFieldService,\n private readonly associationService: CrmAssociationService,\n private readonly breakpointObserver: BreakpointObserver,\n ) {\n this.crmActivityId$\n .pipe(\n takeUntilDestroyed(),\n switchMap((crmActivityId) =>\n crmActivityId ? this.activityLoggerService.getActivity(crmActivityId) : of(null),\n ),\n tap((activity) => {\n this.activity$$.next(activity);\n if (activity) {\n const tags = this.fieldsService.getFieldValueFromCrmObject(activity, StandardIds.ActivityTags);\n this.tags$$.next(tags?.stringValues?.values || []);\n } else {\n this.tags$$.next([]);\n }\n }),\n )\n .subscribe();\n this.activityOwnerId$ = combineLatest([this.activity$, this.user$]).pipe(\n takeUntilDestroyed(),\n map(([activity, user]): string => activity?.ownerId || user?.userId || ''),\n distinctUntilChanged(),\n );\n\n this.isEditing$ = this.crmActivityId$.pipe(map((crmActivityId) => Boolean(crmActivityId)));\n this.showTeamMemberInput = Boolean(this.config?.services?.userService?.searchUsers);\n this.showOpportunityInput = Boolean(this.config?.services?.opportunityService);\n this.crmObject$ = combineLatest([this.crmObjectId$, this.objectType$]).pipe(\n switchMap(([crmObjectId, crmObjectType]) => this.crmObjectService.getMultiObject(crmObjectType, [crmObjectId])),\n map((response) => response?.crmObjects?.[0]),\n filter(Boolean),\n shareReplay(1),\n );\n\n this.crmObjectName$ = combineLatest([this.crmObject$, this.objectType$]).pipe(\n map(([crmObject, objectType]) => this.displayService.getObjectDisplayName(objectType, crmObject)),\n );\n this.primaryAccountGroupId$ = this.crmObject$.pipe(map((crmObject) => this.getPrimaryAccountGroupId(crmObject)));\n this.availableObjectTypes$ = combineLatest([\n this.isCompany$,\n this.primaryAccountGroupId$,\n this.config.parentNamespace$,\n ]).pipe(\n map(([isCompany, accountGroupId, parentNamespace]) => {\n if (\n isCompany &&\n (parentNamespace || accountGroupId) &&\n this.showOpportunityInput &&\n !this.hideCrmObjectAssociations\n ) {\n return ['Contact', 'Company', 'Opportunity', 'CustomObject'] as ObjectType[];\n } else {\n return ['Contact', 'Company', 'CustomObject'] as ObjectType[];\n }\n }),\n startWith([] as ObjectType[]),\n );\n this.hasOpportunityType$ = this.availableObjectTypes$.pipe(map((types) => types.includes('Opportunity')));\n\n this.mobileLayout$ = this.setupMobileMatcher();\n\n this.upsertActivityWorkState$.workResults$\n .pipe(\n takeUntilDestroyed(),\n switchMap((crmIds) => from(crmIds)),\n mergeMap((crmId) => this.activityLoggerService.getActivity(crmId)),\n tap((activity) => {\n const wasCreated = activity?.created?.getTime() === activity?.updated?.getTime();\n if (wasCreated) {\n this.activityCreated.emit(activity);\n } else {\n this.activityUpdated.emit(activity);\n }\n }),\n )\n .subscribe();\n\n this.upsertActivityWorkState$.successEvents$.pipe(takeUntilDestroyed()).subscribe(async (success) => {\n const isEditing = await firstValueFrom(this.isEditing$);\n const successMsg = isEditing ? 'ACTIVITY_LOGGER.EDIT_SUCCESS_MESSAGE' : 'ACTIVITY_LOGGER.SUCCESS_MESSAGE';\n const errorMsg = isEditing ? 'ACTIVITY_LOGGER.EDIT_ERROR_MESSAGE' : 'ACTIVITY_LOGGER.ERROR_MESSAGE';\n if (!success) {\n this.snackService.openErrorSnack(errorMsg, {\n duration: SNACKBAR_DURATION,\n });\n } else {\n this.snackService.openSuccessSnack(successMsg, {\n duration: SNACKBAR_DURATION,\n });\n if (!isEditing) this.collapse();\n }\n });\n\n this.initializeActivity();\n }\n\n private initializeActivity() {\n toObservable(this.collapsed)\n .pipe(\n takeUntilDestroyed(),\n filter((isCollapsed) => !isCollapsed),\n withLatestFrom(this.isEditing$),\n switchMap(([_, isEditing]) => {\n if (isEditing) {\n return this.crmActivityId$.pipe(\n switchMap((crmActivityId) => this.activityLoggerService.getActivity(crmActivityId)),\n map((activity) => {\n return {\n activity: activity,\n isEditing: isEditing,\n };\n }),\n );\n } else {\n return of({\n activity: {} as ActivityInterface,\n isEditing: isEditing,\n });\n }\n }),\n )\n .subscribe((activity) => {\n // set the default values for the logger\n const activityType = activity.activity?.crmObjectSubtype as ActivityType;\n if (activityType) {\n this.onActivityTypeChanged(activityType);\n }\n if (activity.activity) {\n this.updateValueAndValidity();\n }\n if (!activity.isEditing) {\n this.setDefaultActivity();\n } else {\n this.setDefaultObjectAssociations();\n this.setAssociationValues(activity.activity.associations ?? []);\n }\n });\n }\n\n private setDefaultActivity(): void {\n this.setDefaultUserAssociation();\n\n this.setDefaultObjectAssociations();\n this.setDefaultAssociationsByObjectType('Contact');\n this.setDefaultAssociationsByObjectType('Company');\n this.setDefaultAssociationsByObjectType('CustomObject');\n this.setDefaultCurrentObjectAssociation();\n }\n\n private setDefaultCurrentObjectAssociation(): void {\n combineLatest([this.objectType$, this.crmObject$])\n .pipe(take(1))\n .subscribe(([objectType, crmObject]) => {\n const objectDefault: FormFieldAssociation = {\n name: this.displayService.getObjectDisplayName(objectType, crmObject),\n crmObjectId: crmObject.crmObjectId,\n crmObjectType: objectType,\n };\n\n this.setAssociationsInObjectAssociations(objectType, [objectDefault], false);\n });\n }\n\n private setDefaultUserAssociation(): void {\n this.user$.pipe(take(1)).subscribe((user) =>\n this.teamAssociations.update((existing) => {\n const userDefault: FormFieldAssociation = {\n crmObjectId: user?.userId || '',\n crmObjectType: 'User',\n };\n return [...existing, userDefault];\n }),\n );\n }\n\n private setDefaultAssociationsByObjectType(objectType: ObjectType): void {\n this.getDefaultAssociationsByObjectType(objectType)\n .pipe(take(1))\n .subscribe((associations) => this.setAssociationsInObjectAssociations(objectType, associations, false));\n }\n\n private setDefaultObjectAssociations(): void {\n this.objectAssociations.set([\n {\n type: 'Contact',\n associations: [],\n } as AssociationFormField,\n {\n type: 'Company',\n associations: [],\n } as AssociationFormField,\n {\n type: 'Opportunity',\n associations: [],\n } as AssociationFormField,\n {\n type: 'CustomObject',\n associations: [],\n } as AssociationFormField,\n ]);\n }\n\n getDefaultAssociationsByObjectType(\n associationObjectType: ObjectType,\n hideForObjectTypes?: ObjectType[],\n ): Observable {\n return combineLatest([this.objectType$, this.crmObjectId$]).pipe(\n switchMap(([objectType, objectId]) => {\n if (this.hideCrmObjectAssociations || hideForObjectTypes?.find((type) => type === objectType)) {\n return of([]);\n }\n return this.associationService.getAssociationsWithAssociatedObjectForObject$(\n objectId,\n objectType,\n associationObjectType,\n );\n }),\n map((associations) => {\n return associations.map((association) => {\n return {\n name: this.displayService.getObjectDisplayName(associationObjectType, association.associatedObject),\n crmObjectType: associationObjectType,\n crmObjectSubtype: association.associatedObject.crmObjectSubtype,\n crmObjectId: association.associatedObject.crmObjectId,\n } as FormFieldAssociation;\n });\n }),\n catchError((_) => {\n return of([] as FormFieldAssociation[]);\n }),\n );\n }\n\n protected handleObjectAssociationsUpdate(updatedAssociations: AssociationFormField[]): void {\n this.objectAssociations.set([...updatedAssociations]);\n }\n\n onActivityTypeChanged(value: ActivityType | null) {\n this.expand();\n this.activityTypeSelected = value || undefined;\n this.communicationSubTypeSelected = undefined;\n }\n\n onCommunicationTypeChanged(activityType: ActivityType, communicationSubType: CommunicationSubType) {\n this.expand();\n this.activityTypeSelected = activityType;\n this.communicationSubTypeSelected = communicationSubType;\n }\n\n getTranslatedCommunicationType(): string {\n return this.communicationSubTypeSelected\n ? `ACTIVITY_TYPES.COMMUNICATION_SUBTYPES.${this.communicationSubTypeSelected.toUpperCase()}`\n : 'ACTIVITY_TYPES.MORE';\n }\n\n upsertActivity() {\n if (!this.validateForm()) {\n this.snackService.openErrorSnack('ACTIVITY_LOGGER.ERROR_SET_REQUIRED_FIELDS', {\n duration: SNACKBAR_DURATION,\n });\n return;\n }\n\n const fieldValues = this.getSelectedComponent()?.getValues() || [];\n const ownerId = this.getSelectedComponent()?.ownerId;\n const work$ = combineLatest([this.isEditing$, this.tags$, this.crmObjectName$, this.followUpExpanded$$]).pipe(\n switchMap(([isEditing, tags, crmObjectName, isFollowUpExpanded]) => {\n const tagsField: FieldValueInterface = {\n fieldId: StandardIds.ActivityTags,\n stringValues: { values: tags },\n };\n let apiCalls: Observable[];\n if (isEditing) {\n apiCalls = [\n this.crmActivityId$.pipe(\n switchMap((activityId) => {\n const fieldMask = [\n 'associations',\n ...this.fieldsService.getFieldMaskFromFormGroup(this.getSelectedComponent()?.formGroup),\n StandardIds.ActivityTags,\n ];\n if (ownerId && ownerId !== this.activity$$.getValue()?.ownerId) {\n fieldMask.push('ownerId');\n }\n return this.activityLoggerService.updateActivity(\n activityId,\n this.activityTypeSelected!,\n [...fieldValues, tagsField],\n this.mergeAssociations(),\n ownerId,\n fieldMask,\n );\n }),\n ),\n ];\n } else {\n apiCalls = [\n this.activityLoggerService.addActivity(\n this.activityTypeSelected!,\n [...fieldValues, manuallyLoggedFieldValue, tagsField],\n this.mergeAssociations(),\n ownerId,\n ),\n ];\n if (isFollowUpExpanded) {\n const followUpFieldValues = this.loggerFollowUpTaskComponent?.getValues(crmObjectName) || [];\n apiCalls.push(\n this.activityLoggerService.addActivity(\n 'Task',\n [...followUpFieldValues, manuallyLoggedFieldValue],\n this.mergeAssociations(),\n ownerId,\n ),\n );\n }\n }\n return combineLatest(apiCalls);\n }),\n );\n\n this.upsertActivityWorkState$.startWork(work$);\n }\n\n private getSelectedComponent(): LoggerComponentInterface | undefined {\n switch (this.activityTypeSelected) {\n case 'Note':\n return this.loggerNoteComponent;\n case 'Email':\n return this.loggerEmailComponent;\n case 'Call':\n return this.loggerCallComponent;\n case 'Meeting':\n return this.loggerMeetingComponent;\n case 'Task':\n return this.loggerTaskComponent;\n case 'Communication':\n return this.loggerCommunicationComponent;\n default:\n return;\n }\n }\n\n isFormValid(): boolean {\n return Boolean(this.getSelectedComponent()?.formGroup?.valid);\n }\n\n validateForm(): boolean {\n this.updateValueAndValidity();\n return this.isFormValid();\n }\n\n setAssociationValues(associations: ActivityAssociationInterface[]): void {\n const teamAssociations = associations\n .filter((item) => item.crmObjectType === 'User')\n .map((association) => {\n return {\n crmObjectId: association.crmObjectId,\n crmObjectType: association.crmObjectType,\n } as FormFieldAssociation;\n });\n this.teamAssociations.set(teamAssociations);\n\n const opportunityAssociations = associations\n .filter((item) => item.crmObjectType === 'Opportunity')\n .map((association) => {\n return {\n crmObjectId: association.crmObjectId,\n crmObjectType: association.crmObjectType,\n } as FormFieldAssociation;\n });\n this.setAssociationsInObjectAssociations('Opportunity', opportunityAssociations, true);\n\n const contactAssociations = associations\n .filter((item) => item.crmObjectType === 'Contact')\n .map((association) => {\n return {\n crmObjectId: association.crmObjectId,\n crmObjectType: association.crmObjectType,\n } as FormFieldAssociation;\n });\n this.setAssociationsByObjectType('Contact', contactAssociations);\n\n const companyAssociations = associations\n .filter((item) => item.crmObjectType === 'Company')\n .map((association) => {\n return {\n crmObjectId: association.crmObjectId,\n crmObjectType: association.crmObjectType,\n } as FormFieldAssociation;\n });\n this.setAssociationsByObjectType('Company', companyAssociations);\n\n const customObjectAssociation = associations\n .filter((item) => item.crmObjectType === 'CustomObject')\n .map((association) => {\n return {\n crmObjectId: association.crmObjectId,\n crmObjectType: association.crmObjectType,\n crmObjectSubtype: association.crmObjectSubtype,\n } as FormFieldAssociation;\n });\n this.setAssociationsByObjectType('CustomObject', customObjectAssociation);\n }\n\n private async setAssociationsByObjectType(\n objectType: ObjectType,\n associations: FormFieldAssociation[],\n ): Promise {\n this.getAssociationObjects(associations, objectType).then((formFields) => {\n this.setAssociationsInObjectAssociations(objectType, formFields, true);\n });\n }\n\n private async getAssociationObjects(\n associations: FormFieldAssociation[],\n objectType: ObjectType,\n ): Promise {\n const objectIds = associations.map((association) => association.crmObjectId ?? '');\n const objects = await firstValueFrom(this.crmObjectService.getMultiObject(objectType, objectIds));\n return (objects?.crmObjects ?? []).map((crmObject) => {\n return {\n name: this.displayService.getObjectDisplayName(objectType, crmObject),\n crmObjectType: objectType,\n crmObjectId: crmObject.crmObjectId,\n crmObjectSubtype: crmObject.crmObjectSubtype,\n } as FormFieldAssociation;\n });\n }\n\n private setAssociationsInObjectAssociations(\n objectType: ObjectType,\n newAssociations: FormFieldAssociation[],\n setAssociations: boolean,\n ): void {\n this.objectAssociations.update((fields) => {\n return fields.map((field) => {\n if (field.type === objectType) {\n return {\n ...field,\n associations: setAssociations ? newAssociations : [...field.associations, ...newAssociations],\n };\n }\n return field;\n });\n });\n }\n\n updateValueAndValidity(): void {\n this.getSelectedComponent()?.validate();\n }\n\n expand(): void {\n this.collapsed.set(false);\n }\n\n collapse(): void {\n this.activityTypeSelected = undefined;\n this.collapsed.set(true);\n this.clearFields();\n this.activityTypeSelected = undefined;\n this.communicationSubTypeSelected = undefined;\n }\n\n followUpExpandedChanged(isExpanded: boolean): void {\n this.followUpExpanded$$.next(isExpanded);\n }\n\n handleCancelClicked(): void {\n this.collapse();\n this.cancel.emit();\n }\n\n handleDefaultStateFocus(): void {\n this.onActivityTypeChanged(DEFAULT_SELECTED_ACTIVITY_TYPE);\n }\n\n clearFields(): void {\n this.loggerNoteComponent?.resetForm();\n this.loggerEmailComponent?.resetForm();\n this.loggerCallComponent?.resetForm();\n this.loggerMeetingComponent?.resetForm();\n this.loggerTaskComponent?.resetForm();\n this.loggerCommunicationComponent?.resetForm();\n this.setDefaultObjectAssociations();\n this.teamAssociations.set([]);\n this.tags$$.next([]);\n this.sharedDescription = '';\n }\n\n private mergeAssociations(): ActivityAssociationInterface[] {\n const extraAssociations = this.extraAssociations || [];\n const mergedAssociations = [] as ActivityAssociationInterface[];\n this.objectAssociations().forEach((association) => {\n mergedAssociations.push(...association.associations);\n });\n return [...mergedAssociations, ...this.teamAssociations(), ...extraAssociations];\n }\n\n private getPrimaryAccountGroupId(crmObject: CrmObjectInterface): string | null {\n const fieldValue = this.fieldsService.getFieldValueFromCrmObject(\n crmObject,\n PlatformExtensionFieldIds.AccountGroupID,\n );\n return fieldValue?.stringValue ?? null;\n }\n\n /**\n * Create a mobile layout observable.\n * If layout is set to `mobile`, it will always be `true`.\n * Otherwise, it will match the screen size (<= `768px`).\n * @returns `Observable`: `true` if the layout is mobile, `false` otherwise.\n */\n private setupMobileMatcher(): Observable {\n const mobileMedia$ = this.breakpointObserver.observe(`(max-width: ${DEFAULT_MOBILE_BREAKPOINT})`).pipe(\n distinctUntilChanged(),\n map((result) => result.matches),\n );\n return this.layout$$.pipe(\n map((layout) => layout === 'mobile'),\n switchWhenFalsy(mobileMedia$),\n );\n }\n\n updateTags(tagEvent: string[]): void {\n this.tags$$?.next(tagEvent);\n }\n}\n","\n @let showAssociationModal = showAssociationModal$ | async;\n \n \n @if (!hasTimelineActivitiesFeatureFlag()) {\n \n }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n
\n
\n \n \n \n \n \n
\n \n \n
\n \n \n \n
\n\n \n
\n \n
\n \n \n \n
\n \n
\n
\n \n \n \n \n \n {{ communicationType.label | translate }}\n \n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n @if (!hasTimelineActivitiesFeatureFlag()) {\n \n }\n \n \n \n {{ 'ACTIVITY_LOGGER.SAVE' | translate }}\n \n \n \n {{ 'ACTIVITY_LOGGER.CREATE_TASK' | translate }}\n \n \n {{ 'ACTIVITY_LOGGER.LOG_ACTIVITY' | translate }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n","import { DestroyRef, Inject, inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslateService } from '@ngx-translate/core';\nimport { RxState } from '@rx-angular/state';\nimport {\n ActivityInterface,\n DateDefault,\n FilterGroupInterface,\n FilterGroupOperator,\n FilterInterface,\n FilterOperator,\n ListActivitiesRequestInterface,\n ListActivitiesResponseInterface,\n PagedResponseMetadataInterface,\n} from '@vendasta/crm';\nimport { GalaxyFilterInterface } from '@vendasta/galaxy/filter/chips';\nimport { IAMService, User } from '@vendasta/iamv2';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n of,\n skipWhile,\n switchMap,\n tap,\n} from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { ACTIVITIES_TIMELINE_PAGE_SIZE } from '../../../constants';\nimport {\n ActivityTaskStatus,\n CrmDependencies,\n CrmInjectionToken,\n ObjectType,\n SimplifiedUser,\n} from '../../../tokens-and-interfaces';\nimport { ObjectAssociationType } from '../../../tokens-and-interfaces';\nimport {\n StandardIds,\n CrmFieldService,\n CrmObjectService,\n ActivityService,\n SystemFieldIds,\n} from '../../../shared-services';\nimport { getMultiUsers } from '../../../utils';\n\nexport interface ActivityExtended extends ActivityInterface {\n ownerUser?: User;\n isLoggedActivity?: boolean;\n}\n\ninterface ActivityExtendedWithEffectiveDate extends ActivityExtended {\n effectiveDate: Date;\n}\n\ninterface MergedActivity {\n mostRecentActivity: ActivityExtended;\n relatedActivities: ActivityExtended[];\n}\n\nexport interface ActivitySectionInterface {\n name: string;\n activities: ActivityExtended[];\n}\n\ninterface ActivitySectionInterfaceWithDate extends ActivitySectionInterface {\n date: Date | null; // date used to bin the section, empty means \"upcoming\" section\n}\n\ninterface ComponentState {\n activitiesLoading: boolean;\n activitiesLoadMore: boolean;\n activitiesChanged: boolean; // used to determine if the content has changed and the scroll position should be restored\n searchFilterInitialized: boolean;\n activitiesPagedResponseMetadata: PagedResponseMetadataInterface | null;\n activities: ActivityInterface[];\n mergedActivities: MergedActivity[];\n activitySections: ActivitySectionInterface[];\n\n lockedActivityEffectiveDate: Map;\n uniqueUserIds: string[];\n\n uniqueUsers: User[] | SimplifiedUser[];\n searchTerm: string;\n filters: GalaxyFilterInterface[];\n\n initialized: boolean;\n}\n\nconst OpenOverdueTaskFilters: FilterGroupInterface = {\n operator: FilterGroupOperator.FILTER_GROUP_OPERATOR_AND,\n filters: [\n {\n fieldId: StandardIds.ActivityTaskStatus,\n operator: FilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: ActivityTaskStatus.Open,\n },\n ],\n } as FilterInterface,\n {\n fieldId: StandardIds.ActivityTaskDueDate,\n operator: FilterOperator.FILTER_OPERATOR_IS_BEFORE,\n values: [\n {\n dateDefault: DateDefault.DATE_DEFAULT_TODAY,\n },\n ],\n } as FilterInterface,\n ],\n};\n\n@Injectable()\nexport class ActivitiesTimelineService {\n readonly upcomingSectionName = this.translateService.instant('CONTACT.ACTIVITIES_TIMELINE.SECTIONS.UPCOMING');\n readonly crmObjectId$$ = new BehaviorSubject(null);\n readonly objectType$$ = new BehaviorSubject(null);\n private destroyRef = inject(DestroyRef);\n\n constructor(\n public readonly state: RxState,\n private readonly activityService: ActivityService,\n private readonly fieldService: CrmFieldService,\n private readonly translateService: TranslateService,\n private readonly iamService: IAMService,\n private readonly crmObjectService: CrmObjectService,\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n ) {\n this.state.set({\n activitiesLoading: false,\n activitiesLoadMore: false,\n activitiesChanged: false,\n activitiesPagedResponseMetadata: null,\n activities: [],\n activitySections: [],\n uniqueUserIds: [],\n searchTerm: '',\n filters: [],\n lockedActivityEffectiveDate: new Map(),\n initialized: false,\n });\n this.setupReloadActivities();\n this.setupLoadMore();\n this.setupUniqueUsers();\n }\n\n getActivitySections(activities: ActivityExtended[], prioritizeOverdueTask: boolean): ActivitySectionInterface[] {\n const activitySections: ActivitySectionInterface[] = [];\n\n const activitiesWithEffectiveDate = activities.map((activity) => {\n const atv = this.toActivityWithEffectiveDate(activity);\n if (atv?.crmObjectId) {\n atv.effectiveDate = this.state.get('lockedActivityEffectiveDate').get(atv.crmObjectId) ?? atv.effectiveDate;\n }\n return atv;\n });\n\n let overdueTasks: ActivityExtendedWithEffectiveDate[] = [];\n if (prioritizeOverdueTask) {\n overdueTasks = activitiesWithEffectiveDate\n .filter((activity) => {\n return (\n this.fieldService.getFieldValueFromCrmObject(activity, StandardIds.ActivityTaskStatus)?.stringValue ===\n ActivityTaskStatus.Open && activity.effectiveDate.getTime() < Date.now()\n );\n })\n .sort((a, b) => a.effectiveDate.getTime() - b.effectiveDate.getTime());\n }\n\n // split into upcoming and past activities\n const upcomingActivities = activitiesWithEffectiveDate.filter(\n (activity) => activity.effectiveDate.getTime() > Date.now(),\n );\n\n const overdueTasksAndUpcomingActivities = [...overdueTasks, ...upcomingActivities];\n\n const pastActivities = activitiesWithEffectiveDate.filter(\n (activity) => !overdueTasksAndUpcomingActivities?.find((item) => item.crmObjectId === activity.crmObjectId),\n );\n\n // add upcoming section if there are upcoming activities\n if (overdueTasksAndUpcomingActivities.length > 0) {\n activitySections.push({\n name: this.upcomingSectionName,\n activities: overdueTasksAndUpcomingActivities,\n });\n }\n\n // make a new section for each (month, year) pair\n const pastSectionsMap = new Map();\n for (const activity of pastActivities) {\n const startOfMonth = new Date(activity.effectiveDate.getFullYear(), activity.effectiveDate.getMonth());\n const startOfMonthTime = startOfMonth.getTime();\n if (!pastSectionsMap.has(startOfMonthTime)) {\n pastSectionsMap.set(startOfMonthTime, {\n name: `${startOfMonth.toLocaleString('default', { month: 'long' })} ${startOfMonth.getFullYear()}`,\n activities: [activity],\n date: startOfMonth,\n });\n continue;\n }\n pastSectionsMap.get(startOfMonthTime)?.activities.push(activity);\n }\n\n // map iteration undefined, so convert to descending array\n const pastSections = [...pastSectionsMap.values()].sort((a, b) => {\n if (a.date === null) {\n return -1;\n }\n if (b.date === null) {\n return 1;\n }\n if (a.date === b.date) {\n return 0;\n }\n return b.date.getTime() - a.date.getTime();\n });\n activitySections.push(...pastSections);\n\n return activitySections;\n }\n\n private toActivityWithEffectiveDate(crmActivity: ActivityInterface): ActivityExtendedWithEffectiveDate {\n const effectiveDate: Date | null =\n this.fieldService.getFieldValueFromCrmObject(crmActivity, SystemFieldIds.ActivityEffectiveDate)?.dateValue ??\n null;\n const isLoggedActivity =\n this.fieldService.getFieldValueFromCrmObject(crmActivity, StandardIds.ActivityManuallyLogged)?.booleanValue ??\n false;\n if (effectiveDate === null) {\n throw new Error(`Activity has no effective date, ${crmActivity.crmObjectId}`);\n }\n return {\n ...crmActivity,\n isLoggedActivity: isLoggedActivity,\n effectiveDate: effectiveDate,\n };\n }\n\n initializeState(searchTerm: string, filters: GalaxyFilterInterface[]): void {\n this.state.set({\n searchTerm: searchTerm,\n filters: filters,\n initialized: true,\n });\n }\n\n setupLoadMore(): void {\n combineLatest([\n this.state.select('initialized'),\n this.state.select('activitiesLoadMore'),\n this.state.select('searchTerm'),\n this.state.select('filters'),\n this.crmObjectId$$.asObservable(),\n this.objectType$$.asObservable(),\n ])\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n skipWhile(([initialized]) => !initialized),\n debounceTime(100),\n filter(([, activitiesLoadMore]) => activitiesLoadMore),\n // save the scroll position because Angular will reset it when the content changes\n tap(() => {\n this.state.set({ activitiesLoading: true });\n }),\n switchMap(([, , searchTerm, filters, crmObjectId, objectType]) => {\n const activitiesPagedResponseMetadata = this.state.get('activitiesPagedResponseMetadata');\n if (activitiesPagedResponseMetadata?.hasMore === false) {\n return of({});\n }\n const crmFilters = this.crmObjectService.convertFilters(filters);\n const request = {\n crmObjectId: crmObjectId,\n crmObjectType: objectType,\n pagingOptions: {\n pageSize: ACTIVITIES_TIMELINE_PAGE_SIZE,\n cursor: activitiesPagedResponseMetadata?.nextCursor ?? '',\n },\n search: {\n searchTerm: searchTerm,\n },\n filtersV2: this.addPredefinedFilters(crmFilters, !crmObjectId),\n } as ListActivitiesRequestInterface;\n const activities$ = this.activityService.listActivities(request);\n\n if (activitiesPagedResponseMetadata?.nextCursor || filters.length > 0 || searchTerm.length > 0) {\n return activities$;\n }\n\n let overdueTasks$: Observable = of({ activities: [] });\n if (crmObjectId) {\n const overdueRequest = {\n crmObjectId: crmObjectId,\n crmObjectType: objectType,\n pagingOptions: {\n pageSize: 100,\n cursor: '',\n },\n search: {\n searchTerm: searchTerm,\n },\n filtersV2: OpenOverdueTaskFilters,\n } as ListActivitiesRequestInterface;\n overdueTasks$ = this.activityService.listActivities(overdueRequest);\n }\n\n return combineLatest([activities$, overdueTasks$]).pipe(\n map(([activities, overdueTasks]) => {\n const response = activities;\n const allActivities = [...(activities?.activities ?? []), ...(overdueTasks?.activities ?? [])];\n response.activities = allActivities;\n return response;\n }),\n );\n }),\n tap((response: ListActivitiesResponseInterface) => {\n if (!response) {\n return;\n }\n\n this.state.set({\n activitiesLoadMore: false,\n activitiesPagedResponseMetadata: {\n nextCursor: response?.pagingMetadata?.nextCursor ?? '',\n hasMore: response?.pagingMetadata?.hasMore ?? false,\n },\n });\n }),\n map((response) => response?.activities ?? []),\n tap((activities) => {\n const filteredActivities = this.filterActivities([...this.state.get('activities'), ...activities]);\n const mergedActivities = this.state.get('mergedActivities');\n const [updatedMergedActivities, updatedActivities] = this.mergeEmailActivities(\n filteredActivities,\n mergedActivities,\n );\n this.state.set({\n activities: updatedActivities,\n activitiesLoading: false,\n activitiesChanged: true,\n mergedActivities: updatedMergedActivities,\n });\n }),\n )\n .subscribe();\n }\n\n setupUniqueUsers(): void {\n this.state.connect(\n 'uniqueUserIds',\n this.state.select('activities').pipe(\n map((activities) => {\n const uniqueUserIds = [...this.state.get('uniqueUserIds')];\n for (const activity of activities) {\n if (activity.ownerId && !uniqueUserIds.includes(activity.ownerId)) {\n uniqueUserIds.push(activity.ownerId);\n }\n }\n return uniqueUserIds;\n }),\n ),\n );\n\n this.state.connect(\n 'uniqueUsers',\n this.state\n .select('uniqueUserIds')\n .pipe(switchMap((uniqueUserIds) => getMultiUsers(uniqueUserIds, this.config, this.iamService))),\n );\n }\n\n setupReloadActivities(): void {\n combineLatest([this.crmObjectId$$.asObservable(), this.objectType$$.asObservable()])\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n distinctUntilChanged((a, b) => a[0] === b[0] && a[1] === b[1]),\n tap(([crmObjectId, objectType]) => {\n if (crmObjectId && objectType) {\n // triggers initial load of activities\n this.reloadActivities();\n }\n }),\n )\n .subscribe();\n }\n\n loadMoreActivities(): void {\n const activitiesPagedResponseMetadata = this.state.get('activitiesPagedResponseMetadata');\n if (activitiesPagedResponseMetadata?.hasMore === false) {\n return;\n }\n this.state.set({\n activitiesLoadMore: true,\n });\n }\n\n reloadActivities(): void {\n this.state.set({\n activitiesLoading: false,\n activitiesLoadMore: true,\n activitiesChanged: false,\n activitiesPagedResponseMetadata: null,\n activities: [],\n activitySections: [],\n lockedActivityEffectiveDate: new Map(),\n });\n }\n\n filterActivities(activities: ActivityInterface[]): ActivityInterface[] {\n const activitiesWithEffectiveDateMap = new Map();\n\n activities.map((activity) => {\n if (!activity.crmObjectId) {\n throw new Error('activity has no crmObjectId');\n }\n activitiesWithEffectiveDateMap.set(activity.crmObjectId, this.toActivityWithEffectiveDate(activity));\n });\n\n return [...activitiesWithEffectiveDateMap.values()];\n }\n\n lockActivityEffectiveDate(activity: ActivityInterface): void {\n if (activity.crmObjectId) {\n const lockedActivityEffectiveDate = this.state.get('lockedActivityEffectiveDate');\n if (lockedActivityEffectiveDate.get(activity.crmObjectId)) {\n return; // already locked\n }\n let effectiveDate = activity.created ?? new Date();\n try {\n effectiveDate = this.toActivityWithEffectiveDate(activity).effectiveDate;\n } catch (e) {\n // do nothing\n }\n\n lockedActivityEffectiveDate.set(activity.crmObjectId, effectiveDate);\n this.state.set({ lockedActivityEffectiveDate: lockedActivityEffectiveDate });\n }\n }\n\n addPredefinedFilters(\n filters: FilterGroupInterface | undefined,\n hideTaskAndSystemActivities: boolean,\n ): FilterGroupInterface | undefined {\n const predefFilter: FilterInterface[] = [\n {\n fieldId: 'FieldID-fb7ca0a7-e1a9-43a9-8ead-dd6ea20dda11',\n operator: 4,\n values: [{ string: 'UPDATED' }],\n },\n ];\n\n if (hideTaskAndSystemActivities) {\n predefFilter.push({\n fieldId: StandardIds.ActivityManuallyLogged,\n operator: 3,\n values: [{ boolean: true }],\n } as FilterInterface);\n predefFilter.push({\n fieldId: SystemFieldIds.ActivityType,\n operator: 4,\n values: [{ string: 'Task' }],\n } as FilterInterface);\n }\n\n if (!filters) {\n filters = {\n operator: 1,\n filters: predefFilter,\n };\n } else {\n filters.filters = [...filters.filters, ...predefFilter];\n }\n\n return filters;\n }\n\n mergeEmailActivities(\n activities: ActivityExtended[],\n mergedActivities: MergedActivity[],\n ): [MergedActivity[], ActivityExtended[]] {\n const emailActivitiesMap = this.addEmailActivities(mergedActivities);\n\n activities.forEach((activity) => {\n const emailType = this.fieldService.getFieldValueFromCrmObject(\n activity,\n StandardIds.ActivityEmailType,\n )?.stringValue;\n const emailID = this.fieldService.getFieldValueFromCrmObject(activity, StandardIds.ActivityEmailID)?.stringValue;\n\n if (\n emailID &&\n (emailType == 'marketing_campaign_email' ||\n emailType == 'yesware_campaign_email' ||\n emailType == 'yesware_tracked_email')\n ) {\n const existingCampaignActivity = emailActivitiesMap.get(emailID) || {\n mostRecentActivity: activity,\n relatedActivities: [],\n };\n\n if (!emailActivitiesMap.has(emailID)) {\n existingCampaignActivity.relatedActivities.push(activity);\n emailActivitiesMap.set(emailID, existingCampaignActivity);\n } else {\n // Check if activity already exists in relatedActivities by crmObjectId\n const activityExists = existingCampaignActivity.relatedActivities.some(\n (relatedActivity) => relatedActivity.crmObjectId === activity.crmObjectId,\n );\n\n if (!activityExists) {\n existingCampaignActivity.relatedActivities.push(activity);\n }\n }\n }\n });\n\n const updatedMergedActivities = Array.from(emailActivitiesMap.values());\n return this.filterCampaignActivities(updatedMergedActivities, activities);\n }\n\n private addEmailActivities(mergedActivities: MergedActivity[]): Map {\n const existingCampaignActivities = new Map();\n mergedActivities?.forEach((activity) => {\n const emailID = this.fieldService.getFieldValueFromCrmObject(\n activity.mostRecentActivity,\n StandardIds.ActivityEmailID,\n )?.stringValue;\n if (emailID) {\n existingCampaignActivities.set(emailID, activity);\n }\n });\n return existingCampaignActivities;\n }\n\n private filterCampaignActivities(\n mergedActivities: MergedActivity[],\n activities: ActivityExtended[],\n ): [MergedActivity[], ActivityExtended[]] {\n const activitiesToRemove = new Set();\n\n mergedActivities.forEach((activity) => {\n activity.relatedActivities.sort((a, b) => (b.updated?.getTime() ?? 0) - (a.updated?.getTime() ?? 0));\n\n if (activity.relatedActivities.length > 0) {\n // Set the most recent activity first\n activity.mostRecentActivity = activity.relatedActivities[0];\n activity.relatedActivities = activity.relatedActivities.slice(1);\n\n // Check if the most recent activity has an empty subject or body\n let subject = this.fieldService.getFieldValueFromCrmObject(\n activity.mostRecentActivity,\n StandardIds.ActivityEmailSubject,\n )?.stringValue;\n\n let body = this.fieldService.getFieldValueFromCrmObject(\n activity.mostRecentActivity,\n StandardIds.ActivityEmailBody,\n )?.stringValue;\n\n let needSubject = !subject || subject.length === 0;\n let needBody = !body || body.length === 0;\n\n // If we need either subject or body, look through all related activities\n if (needSubject || needBody) {\n for (const relatedActivity of activity.relatedActivities) {\n // Skip if we already have both subject and body\n if (!needSubject && !needBody) break;\n\n // Check for subject if needed\n if (needSubject) {\n const relatedSubject = this.fieldService.getFieldValueFromCrmObject(\n relatedActivity,\n StandardIds.ActivityEmailSubject,\n )?.stringValue;\n\n if (relatedSubject && relatedSubject.length > 0) {\n activity.mostRecentActivity = this.fieldService.setFieldValueOnCrmObject(\n activity.mostRecentActivity,\n StandardIds.ActivityEmailSubject,\n relatedSubject,\n );\n subject = relatedSubject;\n // No longer need subject\n needSubject = false;\n }\n }\n\n // Check for body if needed\n if (needBody) {\n const relatedBody = this.fieldService.getFieldValueFromCrmObject(\n relatedActivity,\n StandardIds.ActivityEmailBody,\n )?.stringValue;\n\n if (relatedBody && relatedBody.length > 0) {\n activity.mostRecentActivity = this.fieldService.setFieldValueOnCrmObject(\n activity.mostRecentActivity,\n StandardIds.ActivityEmailBody,\n relatedBody,\n );\n body = relatedBody;\n // No longer need body\n needBody = false;\n }\n }\n }\n }\n }\n\n activity.relatedActivities.forEach((activity) => {\n if (!activity.crmObjectId) {\n throw new Error('activity has no crmObjectId');\n }\n activitiesToRemove.add(activity.crmObjectId);\n });\n });\n\n const filteredActivities = activities.filter(\n (activity) => activity.crmObjectId && !activitiesToRemove.has(activity.crmObjectId),\n );\n\n return [mergedActivities, filteredActivities];\n }\n\n getRelatedCampaignActivities(activityID: string | undefined): ActivityExtended[] {\n if (!activityID) {\n throw new Error('activity has no crmObjectId');\n }\n return (\n this.state\n .get('mergedActivities')\n ?.filter((campaignActivity) => campaignActivity.mostRecentActivity?.crmObjectId === activityID)\n .flatMap((campaignActivity) => campaignActivity.relatedActivities) ?? []\n );\n }\n}\n","import * as i0 from '@angular/core';\nimport { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { map, take, mapTo } from 'rxjs/operators';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Currency = /*#__PURE__*/function (Currency) {\n Currency[Currency[\"USD\"] = 0] = \"USD\";\n Currency[Currency[\"CAD\"] = 1] = \"CAD\";\n Currency[Currency[\"EUR\"] = 2] = \"EUR\";\n Currency[Currency[\"AUD\"] = 3] = \"AUD\";\n Currency[Currency[\"GBP\"] = 4] = \"GBP\";\n Currency[Currency[\"NZD\"] = 5] = \"NZD\";\n Currency[Currency[\"ZAR\"] = 6] = \"ZAR\";\n return Currency;\n}(Currency || {});\nvar DurationPeriod = /*#__PURE__*/function (DurationPeriod) {\n DurationPeriod[DurationPeriod[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n DurationPeriod[DurationPeriod[\"MONTH\"] = 1] = \"MONTH\";\n DurationPeriod[DurationPeriod[\"YEAR\"] = 2] = \"YEAR\";\n DurationPeriod[DurationPeriod[\"DAY\"] = 3] = \"DAY\";\n DurationPeriod[DurationPeriod[\"WEEK\"] = 4] = \"WEEK\";\n return DurationPeriod;\n}(DurationPeriod || {});\nvar RevenuePeriod = /*#__PURE__*/function (RevenuePeriod) {\n RevenuePeriod[RevenuePeriod[\"ONETIME\"] = 0] = \"ONETIME\";\n RevenuePeriod[RevenuePeriod[\"DAILY\"] = 1] = \"DAILY\";\n RevenuePeriod[RevenuePeriod[\"WEEKLY\"] = 2] = \"WEEKLY\";\n RevenuePeriod[RevenuePeriod[\"BIWEEKLY\"] = 3] = \"BIWEEKLY\";\n RevenuePeriod[RevenuePeriod[\"MONTHLY\"] = 4] = \"MONTHLY\";\n RevenuePeriod[RevenuePeriod[\"YEARLY\"] = 5] = \"YEARLY\";\n return RevenuePeriod;\n}(RevenuePeriod || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar MEDDICSection = /*#__PURE__*/function (MEDDICSection) {\n MEDDICSection[MEDDICSection[\"MEDDIC_SECTION_UNDEFINED\"] = 0] = \"MEDDIC_SECTION_UNDEFINED\";\n MEDDICSection[MEDDICSection[\"MEDDIC_SECTION_METRICS\"] = 1] = \"MEDDIC_SECTION_METRICS\";\n MEDDICSection[MEDDICSection[\"MEDDIC_SECTION_ECONOMIC_BUYER\"] = 2] = \"MEDDIC_SECTION_ECONOMIC_BUYER\";\n MEDDICSection[MEDDICSection[\"MEDDIC_SECTION_DECISION_CRITERIA\"] = 3] = \"MEDDIC_SECTION_DECISION_CRITERIA\";\n MEDDICSection[MEDDICSection[\"MEDDIC_SECTION_DECISION_PROCESS\"] = 4] = \"MEDDIC_SECTION_DECISION_PROCESS\";\n MEDDICSection[MEDDICSection[\"MEDDIC_SECTION_IDENTIFY_PAIN\"] = 5] = \"MEDDIC_SECTION_IDENTIFY_PAIN\";\n MEDDICSection[MEDDICSection[\"MEDDIC_SECTION_CHAMPION_SCORE\"] = 6] = \"MEDDIC_SECTION_CHAMPION_SCORE\";\n MEDDICSection[MEDDICSection[\"MEDDIC_SECTION_COMPETITION\"] = 7] = \"MEDDIC_SECTION_COMPETITION\";\n MEDDICSection[MEDDICSection[\"MEDDIC_SECTION_PAPER_PROCESS\"] = 8] = \"MEDDIC_SECTION_PAPER_PROCESS\";\n return MEDDICSection;\n}(MEDDICSection || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ClientOrigin = /*#__PURE__*/function (ClientOrigin) {\n ClientOrigin[ClientOrigin[\"CLIENT_ORIGIN_UNSET\"] = 0] = \"CLIENT_ORIGIN_UNSET\";\n ClientOrigin[ClientOrigin[\"CLIENT_ORIGIN_SALES_CENTER\"] = 1] = \"CLIENT_ORIGIN_SALES_CENTER\";\n ClientOrigin[ClientOrigin[\"CLIENT_ORIGIN_PARTNER_CENTER\"] = 2] = \"CLIENT_ORIGIN_PARTNER_CENTER\";\n return ClientOrigin;\n}(ClientOrigin || {});\nvar ClosedLostReasonOption = /*#__PURE__*/function (ClosedLostReasonOption) {\n ClosedLostReasonOption[ClosedLostReasonOption[\"PRICE\"] = 0] = \"PRICE\";\n ClosedLostReasonOption[ClosedLostReasonOption[\"NO_BUDGET\"] = 1] = \"NO_BUDGET\";\n ClosedLostReasonOption[ClosedLostReasonOption[\"LOST_TO_COMPETITOR\"] = 2] = \"LOST_TO_COMPETITOR\";\n ClosedLostReasonOption[ClosedLostReasonOption[\"NOT_READY\"] = 3] = \"NOT_READY\";\n ClosedLostReasonOption[ClosedLostReasonOption[\"OTHER\"] = 4] = \"OTHER\";\n return ClosedLostReasonOption;\n}(ClosedLostReasonOption || {});\nvar OpportunityRevenuePeriod = /*#__PURE__*/function (OpportunityRevenuePeriod) {\n OpportunityRevenuePeriod[OpportunityRevenuePeriod[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n OpportunityRevenuePeriod[OpportunityRevenuePeriod[\"SELECTED_MONTH\"] = 1] = \"SELECTED_MONTH\";\n return OpportunityRevenuePeriod;\n}(OpportunityRevenuePeriod || {});\nvar SortDirection = /*#__PURE__*/function (SortDirection) {\n SortDirection[SortDirection[\"ASCENDING\"] = 0] = \"ASCENDING\";\n SortDirection[SortDirection[\"DESCENDING\"] = 1] = \"DESCENDING\";\n return SortDirection;\n}(SortDirection || {});\nvar ListOpportunitiesRequestSortField = /*#__PURE__*/function (ListOpportunitiesRequestSortField) {\n ListOpportunitiesRequestSortField[ListOpportunitiesRequestSortField[\"PROJECTED_FIRST_YEAR_VALUE\"] = 0] = \"PROJECTED_FIRST_YEAR_VALUE\";\n ListOpportunitiesRequestSortField[ListOpportunitiesRequestSortField[\"PROBABILITY\"] = 1] = \"PROBABILITY\";\n ListOpportunitiesRequestSortField[ListOpportunitiesRequestSortField[\"CREATED\"] = 2] = \"CREATED\";\n ListOpportunitiesRequestSortField[ListOpportunitiesRequestSortField[\"EXPECTED_CLOSE\"] = 3] = \"EXPECTED_CLOSE\";\n ListOpportunitiesRequestSortField[ListOpportunitiesRequestSortField[\"NAME\"] = 4] = \"NAME\";\n ListOpportunitiesRequestSortField[ListOpportunitiesRequestSortField[\"LAST_ACTIVITY\"] = 5] = \"LAST_ACTIVITY\";\n ListOpportunitiesRequestSortField[ListOpportunitiesRequestSortField[\"LAST_CONNECTED\"] = 6] = \"LAST_CONNECTED\";\n ListOpportunitiesRequestSortField[ListOpportunitiesRequestSortField[\"ACTUAL_CLOSE\"] = 7] = \"ACTUAL_CLOSE\";\n ListOpportunitiesRequestSortField[ListOpportunitiesRequestSortField[\"PIPELINE_STAGE\"] = 8] = \"PIPELINE_STAGE\";\n ListOpportunitiesRequestSortField[ListOpportunitiesRequestSortField[\"MEDDIC\"] = 9] = \"MEDDIC\";\n ListOpportunitiesRequestSortField[ListOpportunitiesRequestSortField[\"ASSIGNED_DATE\"] = 10] = \"ASSIGNED_DATE\";\n return ListOpportunitiesRequestSortField;\n}(ListOpportunitiesRequestSortField || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar GoalType = /*#__PURE__*/function (GoalType) {\n GoalType[GoalType[\"GOAL_TYPE_UNSPECIFIED\"] = 0] = \"GOAL_TYPE_UNSPECIFIED\";\n GoalType[GoalType[\"REVENUE\"] = 1] = \"REVENUE\";\n GoalType[GoalType[\"NEW_REVENUE\"] = 2] = \"NEW_REVENUE\";\n GoalType[GoalType[\"EXPANSION_REVENUE\"] = 3] = \"EXPANSION_REVENUE\";\n GoalType[GoalType[\"EMAIL\"] = 4] = \"EMAIL\";\n GoalType[GoalType[\"CALL\"] = 5] = \"CALL\";\n GoalType[GoalType[\"MEETING\"] = 6] = \"MEETING\";\n GoalType[GoalType[\"OPPORTUNITY\"] = 7] = \"OPPORTUNITY\";\n return GoalType;\n}(GoalType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ListGoalsRequestSortDirection = /*#__PURE__*/function (ListGoalsRequestSortDirection) {\n ListGoalsRequestSortDirection[ListGoalsRequestSortDirection[\"ASCENDING\"] = 0] = \"ASCENDING\";\n ListGoalsRequestSortDirection[ListGoalsRequestSortDirection[\"DESCENDING\"] = 1] = \"DESCENDING\";\n return ListGoalsRequestSortDirection;\n}(ListGoalsRequestSortDirection || {});\nvar ListGoalsRequestSortField = /*#__PURE__*/function (ListGoalsRequestSortField) {\n ListGoalsRequestSortField[ListGoalsRequestSortField[\"SORT_FIELD_UNSET\"] = 0] = \"SORT_FIELD_UNSET\";\n ListGoalsRequestSortField[ListGoalsRequestSortField[\"SORT_FIELD_CREATED\"] = 1] = \"SORT_FIELD_CREATED\";\n return ListGoalsRequestSortField;\n}(ListGoalsRequestSortField || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$8(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass LineItemAppKey {\n static fromProto(proto) {\n let m = new LineItemAppKey();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.appId !== 'undefined') {\n toReturn['appId'] = this.appId;\n }\n if (typeof this.editionId !== 'undefined') {\n toReturn['editionId'] = this.editionId;\n }\n if (typeof this.packageId !== 'undefined') {\n toReturn['packageId'] = this.packageId;\n }\n if (typeof this.packageInstanceId !== 'undefined') {\n toReturn['packageInstanceId'] = this.packageInstanceId;\n }\n return toReturn;\n }\n}\nclass BillingPeriod {\n static fromProto(proto) {\n let m = new BillingPeriod();\n m = Object.assign(m, proto);\n if (proto.startDate) {\n m.startDate = new Date(proto.startDate);\n }\n if (proto.endDate) {\n m.endDate = new Date(proto.endDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.startDate !== 'undefined' && this.startDate !== null) {\n toReturn['startDate'] = 'toApiJson' in this.startDate ? this.startDate.toApiJson() : this.startDate;\n }\n if (typeof this.endDate !== 'undefined' && this.endDate !== null) {\n toReturn['endDate'] = 'toApiJson' in this.endDate ? this.endDate.toApiJson() : this.endDate;\n }\n return toReturn;\n }\n}\nclass Cost {\n static fromProto(proto) {\n let m = new Cost();\n m = Object.assign(m, proto);\n if (proto.customPrice) {\n m.customPrice = parseInt(proto.customPrice, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customPrice !== 'undefined') {\n toReturn['customPrice'] = this.customPrice;\n }\n return toReturn;\n }\n}\nclass CustomPriceMapping {\n static fromProto(proto) {\n let m = new CustomPriceMapping();\n m = Object.assign(m, proto);\n if (proto.customPrice) {\n m.customPrice = parseInt(proto.customPrice, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.productId !== 'undefined') {\n toReturn['productId'] = this.productId;\n }\n if (typeof this.customPrice !== 'undefined') {\n toReturn['customPrice'] = this.customPrice;\n }\n return toReturn;\n }\n}\nclass Duration {\n static fromProto(proto) {\n let m = new Duration();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n if (proto.duration) {\n m.duration = enumStringToValue$8(DurationPeriod, proto.duration);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n if (typeof this.duration !== 'undefined') {\n toReturn['duration'] = this.duration;\n }\n return toReturn;\n }\n}\nclass LineItem {\n static fromProto(proto) {\n let m = new LineItem();\n m = Object.assign(m, proto);\n if (proto.appKey) {\n m.appKey = LineItemAppKey.fromProto(proto.appKey);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$8(Currency, proto.currency);\n }\n if (proto.initialRevenue) {\n m.initialRevenue = Revenue.fromProto(proto.initialRevenue);\n }\n if (proto.currentRevenue) {\n m.currentRevenue = Revenue.fromProto(proto.currentRevenue);\n }\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n if (proto.cost) {\n m.cost = Cost.fromProto(proto.cost);\n }\n if (proto.customPrices) {\n m.customPrices = proto.customPrices.map(CustomPriceMapping.fromProto);\n }\n if (proto.billingPeriod) {\n m.billingPeriod = BillingPeriod.fromProto(proto.billingPeriod);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.appKey !== 'undefined' && this.appKey !== null) {\n toReturn['appKey'] = 'toApiJson' in this.appKey ? this.appKey.toApiJson() : this.appKey;\n }\n if (typeof this.packageId !== 'undefined') {\n toReturn['packageId'] = this.packageId;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.initialRevenue !== 'undefined' && this.initialRevenue !== null) {\n toReturn['initialRevenue'] = 'toApiJson' in this.initialRevenue ? this.initialRevenue.toApiJson() : this.initialRevenue;\n }\n if (typeof this.currentRevenue !== 'undefined' && this.currentRevenue !== null) {\n toReturn['currentRevenue'] = 'toApiJson' in this.currentRevenue ? this.currentRevenue.toApiJson() : this.currentRevenue;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.isTrial !== 'undefined') {\n toReturn['isTrial'] = this.isTrial;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.cost !== 'undefined' && this.cost !== null) {\n toReturn['cost'] = 'toApiJson' in this.cost ? this.cost.toApiJson() : this.cost;\n }\n if (typeof this.customPrices !== 'undefined' && this.customPrices !== null) {\n toReturn['customPrices'] = 'toApiJson' in this.customPrices ? this.customPrices.toApiJson() : this.customPrices;\n }\n if (typeof this.billingPeriod !== 'undefined' && this.billingPeriod !== null) {\n toReturn['billingPeriod'] = 'toApiJson' in this.billingPeriod ? this.billingPeriod.toApiJson() : this.billingPeriod;\n }\n if (typeof this.autoBillable !== 'undefined') {\n toReturn['autoBillable'] = this.autoBillable;\n }\n if (typeof this.nonBillable !== 'undefined') {\n toReturn['nonBillable'] = this.nonBillable;\n }\n if (typeof this.taxRateIds !== 'undefined') {\n toReturn['taxRateIds'] = this.taxRateIds;\n }\n return toReturn;\n }\n}\nclass Revenue {\n static fromProto(proto) {\n let m = new Revenue();\n m = Object.assign(m, proto);\n if (proto.revenueComponents) {\n m.revenueComponents = proto.revenueComponents.map(RevenueComponent.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.revenueComponents !== 'undefined' && this.revenueComponents !== null) {\n toReturn['revenueComponents'] = 'toApiJson' in this.revenueComponents ? this.revenueComponents.toApiJson() : this.revenueComponents;\n }\n return toReturn;\n }\n}\nclass RevenueComponent {\n static fromProto(proto) {\n let m = new RevenueComponent();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n if (proto.period) {\n m.period = enumStringToValue$8(RevenuePeriod, proto.period);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n if (typeof this.period !== 'undefined') {\n toReturn['period'] = this.period;\n }\n if (typeof this.isStartingRevenue !== 'undefined') {\n toReturn['isStartingRevenue'] = this.isStartingRevenue;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$7(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass MEDDICScores {\n static fromProto(proto) {\n let m = new MEDDICScores();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.metric !== 'undefined') {\n toReturn['metric'] = this.metric;\n }\n if (typeof this.economicBuyer !== 'undefined') {\n toReturn['economicBuyer'] = this.economicBuyer;\n }\n if (typeof this.decisionCriteria !== 'undefined') {\n toReturn['decisionCriteria'] = this.decisionCriteria;\n }\n if (typeof this.decisionProcess !== 'undefined') {\n toReturn['decisionProcess'] = this.decisionProcess;\n }\n if (typeof this.identifyPain !== 'undefined') {\n toReturn['identifyPain'] = this.identifyPain;\n }\n if (typeof this.champion !== 'undefined') {\n toReturn['champion'] = this.champion;\n }\n if (typeof this.competition !== 'undefined') {\n toReturn['competition'] = this.competition;\n }\n if (typeof this.paperProcess !== 'undefined') {\n toReturn['paperProcess'] = this.paperProcess;\n }\n return toReturn;\n }\n}\nclass ScoringScore {\n static fromProto(proto) {\n let m = new ScoringScore();\n m = Object.assign(m, proto);\n if (proto.section) {\n m.section = enumStringToValue$7(MEDDICSection, proto.section);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sectionId !== 'undefined') {\n toReturn['sectionId'] = this.sectionId;\n }\n if (typeof this.scoreValue !== 'undefined') {\n toReturn['scoreValue'] = this.scoreValue;\n }\n if (typeof this.notes !== 'undefined') {\n toReturn['notes'] = this.notes;\n }\n if (typeof this.section !== 'undefined') {\n toReturn['section'] = this.section;\n }\n return toReturn;\n }\n}\nclass Scoring {\n static fromProto(proto) {\n let m = new Scoring();\n m = Object.assign(m, proto);\n if (proto.scores) {\n m.scores = proto.scores.map(ScoringScore.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scores !== 'undefined' && this.scores !== null) {\n toReturn['scores'] = 'toApiJson' in this.scores ? this.scores.toApiJson() : this.scores;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$6(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Forecasting {\n static fromProto(proto) {\n let m = new Forecasting();\n m = Object.assign(m, proto);\n if (proto.revenueInMonth) {\n m.revenueInMonth = RevenueInMonth.fromProto(proto.revenueInMonth);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.revenueInMonth !== 'undefined' && this.revenueInMonth !== null) {\n toReturn['revenueInMonth'] = 'toApiJson' in this.revenueInMonth ? this.revenueInMonth.toApiJson() : this.revenueInMonth;\n }\n return toReturn;\n }\n}\nclass RevenueInMonth {\n static fromProto(proto) {\n let m = new RevenueInMonth();\n m = Object.assign(m, proto);\n if (proto.initialRevenue) {\n m.initialRevenue = parseInt(proto.initialRevenue, 10);\n }\n if (proto.recurringRevenue) {\n m.recurringRevenue = parseInt(proto.recurringRevenue, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.initialRevenue !== 'undefined') {\n toReturn['initialRevenue'] = this.initialRevenue;\n }\n if (typeof this.recurringRevenue !== 'undefined') {\n toReturn['recurringRevenue'] = this.recurringRevenue;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$5(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Attachment {\n static fromProto(proto) {\n let m = new Attachment();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.attachmentId !== 'undefined') {\n toReturn['attachmentId'] = this.attachmentId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n return toReturn;\n }\n}\nclass CSVExports {\n static fromProto(proto) {\n let m = new CSVExports();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunities !== 'undefined') {\n toReturn['opportunities'] = this.opportunities;\n }\n if (typeof this.opportunityHistory !== 'undefined') {\n toReturn['opportunityHistory'] = this.opportunityHistory;\n }\n return toReturn;\n }\n}\nclass CSVFormatOptions {\n static fromProto(proto) {\n let m = new CSVFormatOptions();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n return toReturn;\n }\n}\nclass ClosedLostReason {\n static fromProto(proto) {\n let m = new ClosedLostReason();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = enumStringToValue$5(ClosedLostReasonOption, proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass CurrentOpportunityPoint {\n static fromProto(proto) {\n let m = new CurrentOpportunityPoint();\n m = Object.assign(m, proto);\n if (proto.day) {\n m.day = new Date(proto.day);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.day !== 'undefined' && this.day !== null) {\n toReturn['day'] = 'toApiJson' in this.day ? this.day.toApiJson() : this.day;\n }\n if (typeof this.openOpportunities !== 'undefined') {\n toReturn['openOpportunities'] = this.openOpportunities;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.salesPersonId !== 'undefined') {\n toReturn['salesPersonId'] = this.salesPersonId;\n }\n return toReturn;\n }\n}\nclass DateRangeFilter {\n static fromProto(proto) {\n let m = new DateRangeFilter();\n m = Object.assign(m, proto);\n if (proto.beginRange) {\n m.beginRange = new Date(proto.beginRange);\n }\n if (proto.endRange) {\n m.endRange = new Date(proto.endRange);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.beginRange !== 'undefined' && this.beginRange !== null) {\n toReturn['beginRange'] = 'toApiJson' in this.beginRange ? this.beginRange.toApiJson() : this.beginRange;\n }\n if (typeof this.endRange !== 'undefined' && this.endRange !== null) {\n toReturn['endRange'] = 'toApiJson' in this.endRange ? this.endRange.toApiJson() : this.endRange;\n }\n return toReturn;\n }\n}\nclass ListOpportunitiesRequestFilters {\n static fromProto(proto) {\n let m = new ListOpportunitiesRequestFilters();\n m = Object.assign(m, proto);\n if (proto.createdDateFilter) {\n m.createdDateFilter = DateRangeFilter.fromProto(proto.createdDateFilter);\n }\n if (proto.expectedCloseDateFilter) {\n m.expectedCloseDateFilter = DateRangeFilter.fromProto(proto.expectedCloseDateFilter);\n }\n if (proto.probabilityRangeFilter) {\n m.probabilityRangeFilter = ProbabilityRangeFilter.fromProto(proto.probabilityRangeFilter);\n }\n if (proto.actualCloseDateFilter) {\n m.actualCloseDateFilter = DateRangeFilter.fromProto(proto.actualCloseDateFilter);\n }\n if (proto.revenuePeriodFilter) {\n m.revenuePeriodFilter = RevenuePeriodFilter.fromProto(proto.revenuePeriodFilter);\n }\n if (proto.assignedDate) {\n m.assignedDate = DateRangeFilter.fromProto(proto.assignedDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.salesPersonIds !== 'undefined') {\n toReturn['salesPersonIds'] = this.salesPersonIds;\n }\n if (typeof this.pipelineStages !== 'undefined') {\n toReturn['pipelineStages'] = this.pipelineStages;\n }\n if (typeof this.createdDateFilter !== 'undefined' && this.createdDateFilter !== null) {\n toReturn['createdDateFilter'] = 'toApiJson' in this.createdDateFilter ? this.createdDateFilter.toApiJson() : this.createdDateFilter;\n }\n if (typeof this.expectedCloseDateFilter !== 'undefined' && this.expectedCloseDateFilter !== null) {\n toReturn['expectedCloseDateFilter'] = 'toApiJson' in this.expectedCloseDateFilter ? this.expectedCloseDateFilter.toApiJson() : this.expectedCloseDateFilter;\n }\n if (typeof this.probabilityRangeFilter !== 'undefined' && this.probabilityRangeFilter !== null) {\n toReturn['probabilityRangeFilter'] = 'toApiJson' in this.probabilityRangeFilter ? this.probabilityRangeFilter.toApiJson() : this.probabilityRangeFilter;\n }\n if (typeof this.packageIds !== 'undefined') {\n toReturn['packageIds'] = this.packageIds;\n }\n if (typeof this.actualCloseDateFilter !== 'undefined' && this.actualCloseDateFilter !== null) {\n toReturn['actualCloseDateFilter'] = 'toApiJson' in this.actualCloseDateFilter ? this.actualCloseDateFilter.toApiJson() : this.actualCloseDateFilter;\n }\n if (typeof this.tags !== 'undefined') {\n toReturn['tags'] = this.tags;\n }\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n if (typeof this.accountGroupIdsForTag !== 'undefined') {\n toReturn['accountGroupIdsForTag'] = this.accountGroupIdsForTag;\n }\n if (typeof this.lineItemProductIds !== 'undefined') {\n toReturn['lineItemProductIds'] = this.lineItemProductIds;\n }\n if (typeof this.revenuePeriodFilter !== 'undefined' && this.revenuePeriodFilter !== null) {\n toReturn['revenuePeriodFilter'] = 'toApiJson' in this.revenuePeriodFilter ? this.revenuePeriodFilter.toApiJson() : this.revenuePeriodFilter;\n }\n if (typeof this.pipelineIds !== 'undefined') {\n toReturn['pipelineIds'] = this.pipelineIds;\n }\n if (typeof this.assignedDate !== 'undefined' && this.assignedDate !== null) {\n toReturn['assignedDate'] = 'toApiJson' in this.assignedDate ? this.assignedDate.toApiJson() : this.assignedDate;\n }\n if (typeof this.opportunityTypes !== 'undefined') {\n toReturn['opportunityTypes'] = this.opportunityTypes;\n }\n return toReturn;\n }\n}\nclass InitiateOpportunityExportRequest {\n static fromProto(proto) {\n let m = new InitiateOpportunityExportRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListOpportunitiesRequestFilters.fromProto(proto.filters);\n }\n if (proto.sortOption) {\n m.sortOption = ListOpportunitiesRequestSortOption.fromProto(proto.sortOption);\n }\n if (proto.csvFormatOptions) {\n m.csvFormatOptions = CSVFormatOptions.fromProto(proto.csvFormatOptions);\n }\n if (proto.csvExports) {\n m.csvExports = CSVExports.fromProto(proto.csvExports);\n }\n if (proto.clientOrigin) {\n m.clientOrigin = enumStringToValue$5(ClientOrigin, proto.clientOrigin);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.sortOption !== 'undefined' && this.sortOption !== null) {\n toReturn['sortOption'] = 'toApiJson' in this.sortOption ? this.sortOption.toApiJson() : this.sortOption;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.csvFormatOptions !== 'undefined' && this.csvFormatOptions !== null) {\n toReturn['csvFormatOptions'] = 'toApiJson' in this.csvFormatOptions ? this.csvFormatOptions.toApiJson() : this.csvFormatOptions;\n }\n if (typeof this.csvExports !== 'undefined' && this.csvExports !== null) {\n toReturn['csvExports'] = 'toApiJson' in this.csvExports ? this.csvExports.toApiJson() : this.csvExports;\n }\n if (typeof this.clientOrigin !== 'undefined') {\n toReturn['clientOrigin'] = this.clientOrigin;\n }\n return toReturn;\n }\n}\nclass ListOpportunitiesRequest {\n static fromProto(proto) {\n let m = new ListOpportunitiesRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n if (proto.filters) {\n m.filters = ListOpportunitiesRequestFilters.fromProto(proto.filters);\n }\n if (proto.sortOption) {\n m.sortOption = ListOpportunitiesRequestSortOption.fromProto(proto.sortOption);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.salesPersonIds !== 'undefined') {\n toReturn['salesPersonIds'] = this.salesPersonIds;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.sortOption !== 'undefined' && this.sortOption !== null) {\n toReturn['sortOption'] = 'toApiJson' in this.sortOption ? this.sortOption.toApiJson() : this.sortOption;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n return toReturn;\n }\n}\nclass Opportunity {\n static fromProto(proto) {\n let m = new Opportunity();\n m = Object.assign(m, proto);\n if (proto.packages) {\n m.packages = proto.packages.map(Package.fromProto);\n }\n if (proto.expectedCloseDate) {\n m.expectedCloseDate = new Date(proto.expectedCloseDate);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.projectedFirstYearValue) {\n m.projectedFirstYearValue = parseInt(proto.projectedFirstYearValue, 10);\n }\n if (proto.probableFirstYearValue) {\n m.probableFirstYearValue = parseInt(proto.probableFirstYearValue, 10);\n }\n if (proto.closedLostReason) {\n m.closedLostReason = ClosedLostReason.fromProto(proto.closedLostReason);\n }\n if (proto.actualClosedDate) {\n m.actualClosedDate = new Date(proto.actualClosedDate);\n }\n if (proto.lastConnectedDate) {\n m.lastConnectedDate = new Date(proto.lastConnectedDate);\n }\n if (proto.lastActivityDate) {\n m.lastActivityDate = new Date(proto.lastActivityDate);\n }\n if (proto.attachments) {\n m.attachments = proto.attachments.map(Attachment.fromProto);\n }\n if (proto.expectedContractDuration) {\n m.expectedContractDuration = Duration.fromProto(proto.expectedContractDuration);\n }\n if (proto.lineItems) {\n m.lineItems = proto.lineItems.map(LineItem.fromProto);\n }\n if (proto.scoring) {\n m.scoring = Scoring.fromProto(proto.scoring);\n }\n if (proto.forecasting) {\n m.forecasting = Forecasting.fromProto(proto.forecasting);\n }\n if (proto.assignedDate) {\n m.assignedDate = new Date(proto.assignedDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.salesPersonId !== 'undefined') {\n toReturn['salesPersonId'] = this.salesPersonId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.packages !== 'undefined' && this.packages !== null) {\n toReturn['packages'] = 'toApiJson' in this.packages ? this.packages.toApiJson() : this.packages;\n }\n if (typeof this.expectedCloseDate !== 'undefined' && this.expectedCloseDate !== null) {\n toReturn['expectedCloseDate'] = 'toApiJson' in this.expectedCloseDate ? this.expectedCloseDate.toApiJson() : this.expectedCloseDate;\n }\n if (typeof this.probability !== 'undefined') {\n toReturn['probability'] = this.probability;\n }\n if (typeof this.notes !== 'undefined') {\n toReturn['notes'] = this.notes;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.projectedFirstYearValue !== 'undefined') {\n toReturn['projectedFirstYearValue'] = this.projectedFirstYearValue;\n }\n if (typeof this.probableFirstYearValue !== 'undefined') {\n toReturn['probableFirstYearValue'] = this.probableFirstYearValue;\n }\n if (typeof this.pipelineStage !== 'undefined') {\n toReturn['pipelineStage'] = this.pipelineStage;\n }\n if (typeof this.isClosed !== 'undefined') {\n toReturn['isClosed'] = this.isClosed;\n }\n if (typeof this.closedLostReason !== 'undefined' && this.closedLostReason !== null) {\n toReturn['closedLostReason'] = 'toApiJson' in this.closedLostReason ? this.closedLostReason.toApiJson() : this.closedLostReason;\n }\n if (typeof this.actualClosedDate !== 'undefined' && this.actualClosedDate !== null) {\n toReturn['actualClosedDate'] = 'toApiJson' in this.actualClosedDate ? this.actualClosedDate.toApiJson() : this.actualClosedDate;\n }\n if (typeof this.lastConnectedDate !== 'undefined' && this.lastConnectedDate !== null) {\n toReturn['lastConnectedDate'] = 'toApiJson' in this.lastConnectedDate ? this.lastConnectedDate.toApiJson() : this.lastConnectedDate;\n }\n if (typeof this.lastActivityDate !== 'undefined' && this.lastActivityDate !== null) {\n toReturn['lastActivityDate'] = 'toApiJson' in this.lastActivityDate ? this.lastActivityDate.toApiJson() : this.lastActivityDate;\n }\n if (typeof this.reopenedReason !== 'undefined') {\n toReturn['reopenedReason'] = this.reopenedReason;\n }\n if (typeof this.tags !== 'undefined') {\n toReturn['tags'] = this.tags;\n }\n if (typeof this.attachments !== 'undefined' && this.attachments !== null) {\n toReturn['attachments'] = 'toApiJson' in this.attachments ? this.attachments.toApiJson() : this.attachments;\n }\n if (typeof this.expectedContractDuration !== 'undefined' && this.expectedContractDuration !== null) {\n toReturn['expectedContractDuration'] = 'toApiJson' in this.expectedContractDuration ? this.expectedContractDuration.toApiJson() : this.expectedContractDuration;\n }\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n if (typeof this.canReopen !== 'undefined') {\n toReturn['canReopen'] = this.canReopen;\n }\n if (typeof this.lineItems !== 'undefined' && this.lineItems !== null) {\n toReturn['lineItems'] = 'toApiJson' in this.lineItems ? this.lineItems.toApiJson() : this.lineItems;\n }\n if (typeof this.scoring !== 'undefined' && this.scoring !== null) {\n toReturn['scoring'] = 'toApiJson' in this.scoring ? this.scoring.toApiJson() : this.scoring;\n }\n if (typeof this.forecasting !== 'undefined' && this.forecasting !== null) {\n toReturn['forecasting'] = 'toApiJson' in this.forecasting ? this.forecasting.toApiJson() : this.forecasting;\n }\n if (typeof this.subscriberUserIds !== 'undefined') {\n toReturn['subscriberUserIds'] = this.subscriberUserIds;\n }\n if (typeof this.idempotencyKey !== 'undefined') {\n toReturn['idempotencyKey'] = this.idempotencyKey;\n }\n if (typeof this.assignedDate !== 'undefined' && this.assignedDate !== null) {\n toReturn['assignedDate'] = 'toApiJson' in this.assignedDate ? this.assignedDate.toApiJson() : this.assignedDate;\n }\n if (typeof this.opportunityType !== 'undefined') {\n toReturn['opportunityType'] = this.opportunityType;\n }\n return toReturn;\n }\n}\nclass OpportunityCount {\n static fromProto(proto) {\n let m = new OpportunityCount();\n m = Object.assign(m, proto);\n if (proto.count) {\n m.count = parseInt(proto.count, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.count !== 'undefined') {\n toReturn['count'] = this.count;\n }\n return toReturn;\n }\n}\nclass OpportunityValue {\n static fromProto(proto) {\n let m = new OpportunityValue();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass Package {\n static fromProto(proto) {\n let m = new Package();\n m = Object.assign(m, proto);\n if (proto.currency) {\n m.currency = enumStringToValue$5(Currency, proto.currency);\n }\n if (proto.initialRevenue) {\n m.initialRevenue = Revenue.fromProto(proto.initialRevenue);\n }\n if (proto.currentRevenue) {\n m.currentRevenue = Revenue.fromProto(proto.currentRevenue);\n }\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.packageId !== 'undefined') {\n toReturn['packageId'] = this.packageId;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.initialRevenue !== 'undefined' && this.initialRevenue !== null) {\n toReturn['initialRevenue'] = 'toApiJson' in this.initialRevenue ? this.initialRevenue.toApiJson() : this.initialRevenue;\n }\n if (typeof this.currentRevenue !== 'undefined' && this.currentRevenue !== null) {\n toReturn['currentRevenue'] = 'toApiJson' in this.currentRevenue ? this.currentRevenue.toApiJson() : this.currentRevenue;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n return toReturn;\n }\n}\nclass PipelineClosePoint {\n static fromProto(proto) {\n let m = new PipelineClosePoint();\n m = Object.assign(m, proto);\n if (proto.month) {\n m.month = new Date(proto.month);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.month !== 'undefined' && this.month !== null) {\n toReturn['month'] = 'toApiJson' in this.month ? this.month.toApiJson() : this.month;\n }\n if (typeof this.wonOpportunities !== 'undefined') {\n toReturn['wonOpportunities'] = this.wonOpportunities;\n }\n if (typeof this.lostOpportunities !== 'undefined') {\n toReturn['lostOpportunities'] = this.lostOpportunities;\n }\n if (typeof this.totalOpportunities !== 'undefined') {\n toReturn['totalOpportunities'] = this.totalOpportunities;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.salesPersonId !== 'undefined') {\n toReturn['salesPersonId'] = this.salesPersonId;\n }\n return toReturn;\n }\n}\nclass PipelineCreationPoint {\n static fromProto(proto) {\n let m = new PipelineCreationPoint();\n m = Object.assign(m, proto);\n if (proto.month) {\n m.month = new Date(proto.month);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.month !== 'undefined' && this.month !== null) {\n toReturn['month'] = 'toApiJson' in this.month ? this.month.toApiJson() : this.month;\n }\n if (typeof this.createdOpportunities !== 'undefined') {\n toReturn['createdOpportunities'] = this.createdOpportunities;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.salesPersonId !== 'undefined') {\n toReturn['salesPersonId'] = this.salesPersonId;\n }\n return toReturn;\n }\n}\nclass ProbabilityRangeFilter {\n static fromProto(proto) {\n let m = new ProbabilityRangeFilter();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.minimum !== 'undefined') {\n toReturn['minimum'] = this.minimum;\n }\n if (typeof this.maximum !== 'undefined') {\n toReturn['maximum'] = this.maximum;\n }\n return toReturn;\n }\n}\nclass RevenuePeriodFilter {\n static fromProto(proto) {\n let m = new RevenuePeriodFilter();\n m = Object.assign(m, proto);\n if (proto.revenueDate) {\n m.revenueDate = new Date(proto.revenueDate);\n }\n if (proto.revenuePeriod) {\n m.revenuePeriod = enumStringToValue$5(OpportunityRevenuePeriod, proto.revenuePeriod);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.revenueDate !== 'undefined' && this.revenueDate !== null) {\n toReturn['revenueDate'] = 'toApiJson' in this.revenueDate ? this.revenueDate.toApiJson() : this.revenueDate;\n }\n if (typeof this.revenuePeriod !== 'undefined') {\n toReturn['revenuePeriod'] = this.revenuePeriod;\n }\n return toReturn;\n }\n}\nclass ListOpportunitiesRequestSortOption {\n static fromProto(proto) {\n let m = new ListOpportunitiesRequestSortOption();\n m = Object.assign(m, proto);\n if (proto.direction) {\n m.direction = enumStringToValue$5(SortDirection, proto.direction);\n }\n if (proto.field) {\n m.field = enumStringToValue$5(ListOpportunitiesRequestSortField, proto.field);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.direction !== 'undefined') {\n toReturn['direction'] = this.direction;\n }\n if (typeof this.field !== 'undefined') {\n toReturn['field'] = this.field;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$4(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Pipeline {\n static fromProto(proto) {\n let m = new Pipeline();\n m = Object.assign(m, proto);\n if (proto.stages) {\n m.stages = proto.stages.map(Stage.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.stages !== 'undefined' && this.stages !== null) {\n toReturn['stages'] = 'toApiJson' in this.stages ? this.stages.toApiJson() : this.stages;\n }\n return toReturn;\n }\n}\nclass Stage {\n static fromProto(proto) {\n let m = new Stage();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stageId !== 'undefined') {\n toReturn['stageId'] = this.stageId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.probability !== 'undefined') {\n toReturn['probability'] = this.probability;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Goal {\n static fromProto(proto) {\n let m = new Goal();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue$2(GoalType, proto.type);\n }\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.targets) {\n m.targets = proto.targets.map(Target.fromProto);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.contributorId !== 'undefined') {\n toReturn['contributorId'] = this.contributorId;\n }\n if (typeof this.contributorType !== 'undefined') {\n toReturn['contributorType'] = this.contributorType;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.pipelineIds !== 'undefined') {\n toReturn['pipelineIds'] = this.pipelineIds;\n }\n if (typeof this.interval !== 'undefined') {\n toReturn['interval'] = this.interval;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.targets !== 'undefined' && this.targets !== null) {\n toReturn['targets'] = 'toApiJson' in this.targets ? this.targets.toApiJson() : this.targets;\n }\n if (typeof this.createdBy !== 'undefined') {\n toReturn['createdBy'] = this.createdBy;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n return toReturn;\n }\n}\nclass Target {\n static fromProto(proto) {\n let m = new Target();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass FieldMask {\n static fromProto(proto) {\n let m = new FieldMask();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paths !== 'undefined') {\n toReturn['paths'] = this.paths;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AddAttachmentToOpportunityRequest {\n static fromProto(proto) {\n let m = new AddAttachmentToOpportunityRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n return toReturn;\n }\n}\nclass AddOpportunityPackagesRequest {\n static fromProto(proto) {\n let m = new AddOpportunityPackagesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.packageIds !== 'undefined') {\n toReturn['packageIds'] = this.packageIds;\n }\n return toReturn;\n }\n}\nclass AddOpportunityPackagesResponse {\n static fromProto(proto) {\n let m = new AddOpportunityPackagesResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass AddPipelineStagesRequestAddPipelineStage {\n static fromProto(proto) {\n let m = new AddPipelineStagesRequestAddPipelineStage();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.probability !== 'undefined') {\n toReturn['probability'] = this.probability;\n }\n return toReturn;\n }\n}\nclass AddPipelineStagesRequest {\n static fromProto(proto) {\n let m = new AddPipelineStagesRequest();\n m = Object.assign(m, proto);\n if (proto.stages) {\n m.stages = proto.stages.map(AddPipelineStagesRequestAddPipelineStage.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n if (typeof this.stages !== 'undefined' && this.stages !== null) {\n toReturn['stages'] = 'toApiJson' in this.stages ? this.stages.toApiJson() : this.stages;\n }\n return toReturn;\n }\n}\nclass AddPipelineStagesResponse {\n static fromProto(proto) {\n let m = new AddPipelineStagesResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass ArchiveGoalRequest {\n static fromProto(proto) {\n let m = new ArchiveGoalRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass CloseAsLostOpportunityRequest {\n static fromProto(proto) {\n let m = new CloseAsLostOpportunityRequest();\n m = Object.assign(m, proto);\n if (proto.reason) {\n m.reason = enumStringToValue(ClosedLostReasonOption, proto.reason);\n }\n if (proto.closeDate) {\n m.closeDate = new Date(proto.closeDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n if (typeof this.closeDate !== 'undefined' && this.closeDate !== null) {\n toReturn['closeDate'] = 'toApiJson' in this.closeDate ? this.closeDate.toApiJson() : this.closeDate;\n }\n if (typeof this.notes !== 'undefined') {\n toReturn['notes'] = this.notes;\n }\n return toReturn;\n }\n}\nclass CloseAsLostOpportunityResponse {\n static fromProto(proto) {\n let m = new CloseAsLostOpportunityResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass CloseAsWonOpportunityRequest {\n static fromProto(proto) {\n let m = new CloseAsWonOpportunityRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.notes !== 'undefined') {\n toReturn['notes'] = this.notes;\n }\n return toReturn;\n }\n}\nclass CloseAsWonOpportunityResponse {\n static fromProto(proto) {\n let m = new CloseAsWonOpportunityResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass CreateGoalRequest {\n static fromProto(proto) {\n let m = new CreateGoalRequest();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.targets) {\n m.targets = proto.targets.map(Target.fromProto);\n }\n if (proto.goalType) {\n m.goalType = enumStringToValue(GoalType, proto.goalType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.contributorId !== 'undefined') {\n toReturn['contributorId'] = this.contributorId;\n }\n if (typeof this.contributorType !== 'undefined') {\n toReturn['contributorType'] = this.contributorType;\n }\n if (typeof this.pipelineIds !== 'undefined') {\n toReturn['pipelineIds'] = this.pipelineIds;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.targets !== 'undefined' && this.targets !== null) {\n toReturn['targets'] = 'toApiJson' in this.targets ? this.targets.toApiJson() : this.targets;\n }\n if (typeof this.goalType !== 'undefined') {\n toReturn['goalType'] = this.goalType;\n }\n return toReturn;\n }\n}\nclass CreateOpportunityRequestCreateOpportunityPackage {\n static fromProto(proto) {\n let m = new CreateOpportunityRequestCreateOpportunityPackage();\n m = Object.assign(m, proto);\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.packageId !== 'undefined') {\n toReturn['packageId'] = this.packageId;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n return toReturn;\n }\n}\nclass CreateOpportunityRequest {\n static fromProto(proto) {\n let m = new CreateOpportunityRequest();\n m = Object.assign(m, proto);\n if (proto.expectedCloseDate) {\n m.expectedCloseDate = new Date(proto.expectedCloseDate);\n }\n if (proto.packages) {\n m.packages = proto.packages.map(CreateOpportunityRequestCreateOpportunityPackage.fromProto);\n }\n if (proto.expectedContractDuration) {\n m.expectedContractDuration = Duration.fromProto(proto.expectedContractDuration);\n }\n if (proto.lineItems) {\n m.lineItems = proto.lineItems.map(LineItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.salesPersonId !== 'undefined') {\n toReturn['salesPersonId'] = this.salesPersonId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.packageIds !== 'undefined') {\n toReturn['packageIds'] = this.packageIds;\n }\n if (typeof this.expectedCloseDate !== 'undefined' && this.expectedCloseDate !== null) {\n toReturn['expectedCloseDate'] = 'toApiJson' in this.expectedCloseDate ? this.expectedCloseDate.toApiJson() : this.expectedCloseDate;\n }\n if (typeof this.probability !== 'undefined') {\n toReturn['probability'] = this.probability;\n }\n if (typeof this.notes !== 'undefined') {\n toReturn['notes'] = this.notes;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.packages !== 'undefined' && this.packages !== null) {\n toReturn['packages'] = 'toApiJson' in this.packages ? this.packages.toApiJson() : this.packages;\n }\n if (typeof this.tags !== 'undefined') {\n toReturn['tags'] = this.tags;\n }\n if (typeof this.expectedContractDuration !== 'undefined' && this.expectedContractDuration !== null) {\n toReturn['expectedContractDuration'] = 'toApiJson' in this.expectedContractDuration ? this.expectedContractDuration.toApiJson() : this.expectedContractDuration;\n }\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n if (typeof this.lineItems !== 'undefined' && this.lineItems !== null) {\n toReturn['lineItems'] = 'toApiJson' in this.lineItems ? this.lineItems.toApiJson() : this.lineItems;\n }\n if (typeof this.subscriberUserIds !== 'undefined') {\n toReturn['subscriberUserIds'] = this.subscriberUserIds;\n }\n if (typeof this.idempotencyKey !== 'undefined') {\n toReturn['idempotencyKey'] = this.idempotencyKey;\n }\n if (typeof this.opportunityType !== 'undefined') {\n toReturn['opportunityType'] = this.opportunityType;\n }\n return toReturn;\n }\n}\nclass CreateOpportunityResponse {\n static fromProto(proto) {\n let m = new CreateOpportunityResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass CreatePipelineRequest {\n static fromProto(proto) {\n let m = new CreatePipelineRequest();\n m = Object.assign(m, proto);\n if (proto.stages) {\n m.stages = proto.stages.map(CreatePipelineRequestCreatePipelineStage.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.stages !== 'undefined' && this.stages !== null) {\n toReturn['stages'] = 'toApiJson' in this.stages ? this.stages.toApiJson() : this.stages;\n }\n return toReturn;\n }\n}\nclass CreatePipelineResponse {\n static fromProto(proto) {\n let m = new CreatePipelineResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n return toReturn;\n }\n}\nclass CreatePipelineRequestCreatePipelineStage {\n static fromProto(proto) {\n let m = new CreatePipelineRequestCreatePipelineStage();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.probability !== 'undefined') {\n toReturn['probability'] = this.probability;\n }\n return toReturn;\n }\n}\nclass DeleteGoalRequest {\n static fromProto(proto) {\n let m = new DeleteGoalRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass DeleteOpportunityRequest {\n static fromProto(proto) {\n let m = new DeleteOpportunityRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n return toReturn;\n }\n}\nclass DeletePipelineRequest {\n static fromProto(proto) {\n let m = new DeletePipelineRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n return toReturn;\n }\n}\nclass DeletePipelineResponse {\n static fromProto(proto) {\n let m = new DeletePipelineResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass ListGoalsRequestFilters {\n static fromProto(proto) {\n let m = new ListGoalsRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contributorId !== 'undefined') {\n toReturn['contributorId'] = this.contributorId;\n }\n if (typeof this.contributorType !== 'undefined') {\n toReturn['contributorType'] = this.contributorType;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nclass GetGoalRequest {\n static fromProto(proto) {\n let m = new GetGoalRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass GetMEDDICScoresRequest {\n static fromProto(proto) {\n let m = new GetMEDDICScoresRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n return toReturn;\n }\n}\nclass GetMEDDICScoresResponse {\n static fromProto(proto) {\n let m = new GetMEDDICScoresResponse();\n m = Object.assign(m, proto);\n if (proto.scores) {\n m.scores = MEDDICScores.fromProto(proto.scores);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scores !== 'undefined' && this.scores !== null) {\n toReturn['scores'] = 'toApiJson' in this.scores ? this.scores.toApiJson() : this.scores;\n }\n return toReturn;\n }\n}\nclass GetMEDDICSectionsRequest {\n static fromProto(proto) {\n let m = new GetMEDDICSectionsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n return toReturn;\n }\n}\nclass GetMEDDICSectionsResponse {\n static fromProto(proto) {\n let m = new GetMEDDICSectionsResponse();\n m = Object.assign(m, proto);\n if (proto.sections) {\n m.sections = Scoring.fromProto(proto.sections);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sections !== 'undefined' && this.sections !== null) {\n toReturn['sections'] = 'toApiJson' in this.sections ? this.sections.toApiJson() : this.sections;\n }\n return toReturn;\n }\n}\nclass GetOpportunityByIdempotencyKeyRequest {\n static fromProto(proto) {\n let m = new GetOpportunityByIdempotencyKeyRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.idempotencyKey !== 'undefined') {\n toReturn['idempotencyKey'] = this.idempotencyKey;\n }\n return toReturn;\n }\n}\nclass GetOpportunityCountByAccountGroupsRequest {\n static fromProto(proto) {\n let m = new GetOpportunityCountByAccountGroupsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupIds !== 'undefined') {\n toReturn['accountGroupIds'] = this.accountGroupIds;\n }\n if (typeof this.onlyUnclosed !== 'undefined') {\n toReturn['onlyUnclosed'] = this.onlyUnclosed;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n return toReturn;\n }\n}\nclass GetOpportunityCountByAccountGroupsResponse {\n static fromProto(proto) {\n let m = new GetOpportunityCountByAccountGroupsResponse();\n m = Object.assign(m, proto);\n if (proto.results) {\n m.results = proto.results.map(OpportunityCount.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.results !== 'undefined' && this.results !== null) {\n toReturn['results'] = 'toApiJson' in this.results ? this.results.toApiJson() : this.results;\n }\n return toReturn;\n }\n}\nclass GetOpportunityRequest {\n static fromProto(proto) {\n let m = new GetOpportunityRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass GetOpportunityResponse {\n static fromProto(proto) {\n let m = new GetOpportunityResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass GetOpportunityValueByAccountGroupsRequest {\n static fromProto(proto) {\n let m = new GetOpportunityValueByAccountGroupsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupIds !== 'undefined') {\n toReturn['accountGroupIds'] = this.accountGroupIds;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n return toReturn;\n }\n}\nclass GetOpportunityValueByAccountGroupsResponse {\n static fromProto(proto) {\n let m = new GetOpportunityValueByAccountGroupsResponse();\n m = Object.assign(m, proto);\n if (proto.results) {\n m.results = proto.results.map(OpportunityValue.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.results !== 'undefined' && this.results !== null) {\n toReturn['results'] = 'toApiJson' in this.results ? this.results.toApiJson() : this.results;\n }\n return toReturn;\n }\n}\nclass GetTagsForOpportunitiesRequest {\n static fromProto(proto) {\n let m = new GetTagsForOpportunitiesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n return toReturn;\n }\n}\nclass GetTagsForOpportunitiesResponse {\n static fromProto(proto) {\n let m = new GetTagsForOpportunitiesResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.tags !== 'undefined') {\n toReturn['tags'] = this.tags;\n }\n return toReturn;\n }\n}\nclass GoalResponse {\n static fromProto(proto) {\n let m = new GoalResponse();\n m = Object.assign(m, proto);\n if (proto.goal) {\n m.goal = Goal.fromProto(proto.goal);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.goal !== 'undefined' && this.goal !== null) {\n toReturn['goal'] = 'toApiJson' in this.goal ? this.goal.toApiJson() : this.goal;\n }\n return toReturn;\n }\n}\nclass InitiateOpportunityExportResponse {\n static fromProto(proto) {\n let m = new InitiateOpportunityExportResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.exportId !== 'undefined') {\n toReturn['exportId'] = this.exportId;\n }\n return toReturn;\n }\n}\nclass ListGoalsRequest {\n static fromProto(proto) {\n let m = new ListGoalsRequest();\n m = Object.assign(m, proto);\n if (proto.pageOptions) {\n m.pageOptions = PagedRequestOptions.fromProto(proto.pageOptions);\n }\n if (proto.filters) {\n m.filters = ListGoalsRequestFilters.fromProto(proto.filters);\n }\n if (proto.sortOption) {\n m.sortOption = ListGoalsRequestSortOption.fromProto(proto.sortOption);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.pageOptions !== 'undefined' && this.pageOptions !== null) {\n toReturn['pageOptions'] = 'toApiJson' in this.pageOptions ? this.pageOptions.toApiJson() : this.pageOptions;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.sortOption !== 'undefined' && this.sortOption !== null) {\n toReturn['sortOption'] = 'toApiJson' in this.sortOption ? this.sortOption.toApiJson() : this.sortOption;\n }\n return toReturn;\n }\n}\nclass ListGoalsResponse {\n static fromProto(proto) {\n let m = new ListGoalsResponse();\n m = Object.assign(m, proto);\n if (proto.goals) {\n m.goals = proto.goals.map(Goal.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.goals !== 'undefined' && this.goals !== null) {\n toReturn['goals'] = 'toApiJson' in this.goals ? this.goals.toApiJson() : this.goals;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListOpportunitiesResponse {\n static fromProto(proto) {\n let m = new ListOpportunitiesResponse();\n m = Object.assign(m, proto);\n if (proto.results) {\n m.results = proto.results.map(Opportunity.fromProto);\n }\n if (proto.totalResults) {\n m.totalResults = parseInt(proto.totalResults, 10);\n }\n if (proto.totalProjectedFirstYearValue) {\n m.totalProjectedFirstYearValue = parseInt(proto.totalProjectedFirstYearValue, 10);\n }\n if (proto.totalRevenueForRevenuePeriod) {\n m.totalRevenueForRevenuePeriod = parseInt(proto.totalRevenueForRevenuePeriod, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.results !== 'undefined' && this.results !== null) {\n toReturn['results'] = 'toApiJson' in this.results ? this.results.toApiJson() : this.results;\n }\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n if (typeof this.totalResults !== 'undefined') {\n toReturn['totalResults'] = this.totalResults;\n }\n if (typeof this.totalProjectedFirstYearValue !== 'undefined') {\n toReturn['totalProjectedFirstYearValue'] = this.totalProjectedFirstYearValue;\n }\n if (typeof this.totalRevenueForRevenuePeriod !== 'undefined') {\n toReturn['totalRevenueForRevenuePeriod'] = this.totalRevenueForRevenuePeriod;\n }\n return toReturn;\n }\n}\nclass ListPipelinesRequest {\n static fromProto(proto) {\n let m = new ListPipelinesRequest();\n m = Object.assign(m, proto);\n if (proto.pageOptions) {\n m.pageOptions = PagedRequestOptions.fromProto(proto.pageOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.pageOptions !== 'undefined' && this.pageOptions !== null) {\n toReturn['pageOptions'] = 'toApiJson' in this.pageOptions ? this.pageOptions.toApiJson() : this.pageOptions;\n }\n return toReturn;\n }\n}\nclass ListPipelinesResponse {\n static fromProto(proto) {\n let m = new ListPipelinesResponse();\n m = Object.assign(m, proto);\n if (proto.results) {\n m.results = proto.results.map(Pipeline.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.results !== 'undefined' && this.results !== null) {\n toReturn['results'] = 'toApiJson' in this.results ? this.results.toApiJson() : this.results;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass RemoveOpportunityPackagesRequest {\n static fromProto(proto) {\n let m = new RemoveOpportunityPackagesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.packageIds !== 'undefined') {\n toReturn['packageIds'] = this.packageIds;\n }\n return toReturn;\n }\n}\nclass RemoveOpportunityPackagesResponse {\n static fromProto(proto) {\n let m = new RemoveOpportunityPackagesResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass RemovePipelineStagesRequest {\n static fromProto(proto) {\n let m = new RemovePipelineStagesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n if (typeof this.stageIds !== 'undefined') {\n toReturn['stageIds'] = this.stageIds;\n }\n return toReturn;\n }\n}\nclass RemovePipelineStagesResponse {\n static fromProto(proto) {\n let m = new RemovePipelineStagesResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass ReopenClosedOpportunityRequest {\n static fromProto(proto) {\n let m = new ReopenClosedOpportunityRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n return toReturn;\n }\n}\nclass RestoreDeletedPipelineRequest {\n static fromProto(proto) {\n let m = new RestoreDeletedPipelineRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n return toReturn;\n }\n}\nclass RestoreDeletedPipelineResponse {\n static fromProto(proto) {\n let m = new RestoreDeletedPipelineResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass SalespersonStatsRequest {\n static fromProto(proto) {\n let m = new SalespersonStatsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salespersonId !== 'undefined') {\n toReturn['salespersonId'] = this.salespersonId;\n }\n return toReturn;\n }\n}\nclass SalespersonStatsResponse {\n static fromProto(proto) {\n let m = new SalespersonStatsResponse();\n m = Object.assign(m, proto);\n if (proto.pipelineCloseRates) {\n m.pipelineCloseRates = proto.pipelineCloseRates.map(PipelineClosePoint.fromProto);\n }\n if (proto.pipelineCreationRates) {\n m.pipelineCreationRates = proto.pipelineCreationRates.map(PipelineCreationPoint.fromProto);\n }\n if (proto.currentOpporunities) {\n m.currentOpporunities = proto.currentOpporunities.map(CurrentOpportunityPoint.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pipelineCloseRates !== 'undefined' && this.pipelineCloseRates !== null) {\n toReturn['pipelineCloseRates'] = 'toApiJson' in this.pipelineCloseRates ? this.pipelineCloseRates.toApiJson() : this.pipelineCloseRates;\n }\n if (typeof this.pipelineCreationRates !== 'undefined' && this.pipelineCreationRates !== null) {\n toReturn['pipelineCreationRates'] = 'toApiJson' in this.pipelineCreationRates ? this.pipelineCreationRates.toApiJson() : this.pipelineCreationRates;\n }\n if (typeof this.currentOpporunities !== 'undefined' && this.currentOpporunities !== null) {\n toReturn['currentOpporunities'] = 'toApiJson' in this.currentOpporunities ? this.currentOpporunities.toApiJson() : this.currentOpporunities;\n }\n return toReturn;\n }\n}\nclass SetPipelineStagesRequest {\n static fromProto(proto) {\n let m = new SetPipelineStagesRequest();\n m = Object.assign(m, proto);\n if (proto.stages) {\n m.stages = proto.stages.map(Stage.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n if (typeof this.stages !== 'undefined' && this.stages !== null) {\n toReturn['stages'] = 'toApiJson' in this.stages ? this.stages.toApiJson() : this.stages;\n }\n return toReturn;\n }\n}\nclass SetPipelineStagesResponse {\n static fromProto(proto) {\n let m = new SetPipelineStagesResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass ListGoalsRequestSortOption {\n static fromProto(proto) {\n let m = new ListGoalsRequestSortOption();\n m = Object.assign(m, proto);\n if (proto.direction) {\n m.direction = enumStringToValue(ListGoalsRequestSortDirection, proto.direction);\n }\n if (proto.field) {\n m.field = enumStringToValue(ListGoalsRequestSortField, proto.field);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.direction !== 'undefined') {\n toReturn['direction'] = this.direction;\n }\n if (typeof this.field !== 'undefined') {\n toReturn['field'] = this.field;\n }\n return toReturn;\n }\n}\nclass UpdateClosedDateRequest {\n static fromProto(proto) {\n let m = new UpdateClosedDateRequest();\n m = Object.assign(m, proto);\n if (proto.closedDate) {\n m.closedDate = new Date(proto.closedDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.closedDate !== 'undefined' && this.closedDate !== null) {\n toReturn['closedDate'] = 'toApiJson' in this.closedDate ? this.closedDate.toApiJson() : this.closedDate;\n }\n return toReturn;\n }\n}\nclass UpdateGoalRequest {\n static fromProto(proto) {\n let m = new UpdateGoalRequest();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.targets) {\n m.targets = proto.targets.map(Target.fromProto);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.contributorId !== 'undefined') {\n toReturn['contributorId'] = this.contributorId;\n }\n if (typeof this.contributorType !== 'undefined') {\n toReturn['contributorType'] = this.contributorType;\n }\n if (typeof this.pipelineIds !== 'undefined') {\n toReturn['pipelineIds'] = this.pipelineIds;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.targets !== 'undefined' && this.targets !== null) {\n toReturn['targets'] = 'toApiJson' in this.targets ? this.targets.toApiJson() : this.targets;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateLastActivityDateRequest {\n static fromProto(proto) {\n let m = new UpdateLastActivityDateRequest();\n m = Object.assign(m, proto);\n if (proto.lastActivityDate) {\n m.lastActivityDate = new Date(proto.lastActivityDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.lastActivityDate !== 'undefined' && this.lastActivityDate !== null) {\n toReturn['lastActivityDate'] = 'toApiJson' in this.lastActivityDate ? this.lastActivityDate.toApiJson() : this.lastActivityDate;\n }\n if (typeof this.connected !== 'undefined') {\n toReturn['connected'] = this.connected;\n }\n return toReturn;\n }\n}\nclass UpdateLastActivityDateResponse {\n static fromProto(proto) {\n let m = new UpdateLastActivityDateResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass UpdateLastConnectedDateRequest {\n static fromProto(proto) {\n let m = new UpdateLastConnectedDateRequest();\n m = Object.assign(m, proto);\n if (proto.lastConnectedDate) {\n m.lastConnectedDate = new Date(proto.lastConnectedDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.lastConnectedDate !== 'undefined' && this.lastConnectedDate !== null) {\n toReturn['lastConnectedDate'] = 'toApiJson' in this.lastConnectedDate ? this.lastConnectedDate.toApiJson() : this.lastConnectedDate;\n }\n return toReturn;\n }\n}\nclass UpdateLastConnectedDateResponse {\n static fromProto(proto) {\n let m = new UpdateLastConnectedDateResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass UpdateLineItemsRequest {\n static fromProto(proto) {\n let m = new UpdateLineItemsRequest();\n m = Object.assign(m, proto);\n if (proto.lineItems) {\n m.lineItems = proto.lineItems.map(LineItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.lineItems !== 'undefined' && this.lineItems !== null) {\n toReturn['lineItems'] = 'toApiJson' in this.lineItems ? this.lineItems.toApiJson() : this.lineItems;\n }\n return toReturn;\n }\n}\nclass UpdateLineItemsResponse {\n static fromProto(proto) {\n let m = new UpdateLineItemsResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass UpdateMEDDICNotesRequest {\n static fromProto(proto) {\n let m = new UpdateMEDDICNotesRequest();\n m = Object.assign(m, proto);\n if (proto.sectionName) {\n m.sectionName = enumStringToValue(MEDDICSection, proto.sectionName);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sectionName !== 'undefined') {\n toReturn['sectionName'] = this.sectionName;\n }\n if (typeof this.sectionNotes !== 'undefined') {\n toReturn['sectionNotes'] = this.sectionNotes;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n return toReturn;\n }\n}\nclass UpdateMEDDICScoringRequest {\n static fromProto(proto) {\n let m = new UpdateMEDDICScoringRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.metricScoreValue !== 'undefined') {\n toReturn['metricScoreValue'] = this.metricScoreValue;\n }\n if (typeof this.economicBuyerScoreValue !== 'undefined') {\n toReturn['economicBuyerScoreValue'] = this.economicBuyerScoreValue;\n }\n if (typeof this.decisionCriteriaScoreValue !== 'undefined') {\n toReturn['decisionCriteriaScoreValue'] = this.decisionCriteriaScoreValue;\n }\n if (typeof this.decisionProcessScoreValue !== 'undefined') {\n toReturn['decisionProcessScoreValue'] = this.decisionProcessScoreValue;\n }\n if (typeof this.identifyPainScoreValue !== 'undefined') {\n toReturn['identifyPainScoreValue'] = this.identifyPainScoreValue;\n }\n if (typeof this.championScoreValue !== 'undefined') {\n toReturn['championScoreValue'] = this.championScoreValue;\n }\n if (typeof this.competitionScoreValue !== 'undefined') {\n toReturn['competitionScoreValue'] = this.competitionScoreValue;\n }\n if (typeof this.paperProcessScoreValue !== 'undefined') {\n toReturn['paperProcessScoreValue'] = this.paperProcessScoreValue;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityDurationRequest {\n static fromProto(proto) {\n let m = new UpdateOpportunityDurationRequest();\n m = Object.assign(m, proto);\n if (proto.expectedContractDuration) {\n m.expectedContractDuration = Duration.fromProto(proto.expectedContractDuration);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.expectedContractDuration !== 'undefined' && this.expectedContractDuration !== null) {\n toReturn['expectedContractDuration'] = 'toApiJson' in this.expectedContractDuration ? this.expectedContractDuration.toApiJson() : this.expectedContractDuration;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityDurationResponse {\n static fromProto(proto) {\n let m = new UpdateOpportunityDurationResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityExpectedCloseDateRequest {\n static fromProto(proto) {\n let m = new UpdateOpportunityExpectedCloseDateRequest();\n m = Object.assign(m, proto);\n if (proto.expectedCloseDate) {\n m.expectedCloseDate = new Date(proto.expectedCloseDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.expectedCloseDate !== 'undefined' && this.expectedCloseDate !== null) {\n toReturn['expectedCloseDate'] = 'toApiJson' in this.expectedCloseDate ? this.expectedCloseDate.toApiJson() : this.expectedCloseDate;\n }\n if (typeof this.createSalesActivity !== 'undefined') {\n toReturn['createSalesActivity'] = this.createSalesActivity;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityExpectedCloseDateResponse {\n static fromProto(proto) {\n let m = new UpdateOpportunityExpectedCloseDateResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityMarketRequest {\n static fromProto(proto) {\n let m = new UpdateOpportunityMarketRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityMarketResponse {\n static fromProto(proto) {\n let m = new UpdateOpportunityMarketResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityNameRequest {\n static fromProto(proto) {\n let m = new UpdateOpportunityNameRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityNameResponse {\n static fromProto(proto) {\n let m = new UpdateOpportunityNameResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityNotesRequest {\n static fromProto(proto) {\n let m = new UpdateOpportunityNotesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.notes !== 'undefined') {\n toReturn['notes'] = this.notes;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityNotesResponse {\n static fromProto(proto) {\n let m = new UpdateOpportunityNotesResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityPackageRequest {\n static fromProto(proto) {\n let m = new UpdateOpportunityPackageRequest();\n m = Object.assign(m, proto);\n if (proto.currentRevenue) {\n m.currentRevenue = Revenue.fromProto(proto.currentRevenue);\n }\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.packageId !== 'undefined') {\n toReturn['packageId'] = this.packageId;\n }\n if (typeof this.currentRevenue !== 'undefined' && this.currentRevenue !== null) {\n toReturn['currentRevenue'] = 'toApiJson' in this.currentRevenue ? this.currentRevenue.toApiJson() : this.currentRevenue;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityPackageResponse {\n static fromProto(proto) {\n let m = new UpdateOpportunityPackageResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityPackageRevenueRequest {\n static fromProto(proto) {\n let m = new UpdateOpportunityPackageRevenueRequest();\n m = Object.assign(m, proto);\n if (proto.revenue) {\n m.revenue = Revenue.fromProto(proto.revenue);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.packageId !== 'undefined') {\n toReturn['packageId'] = this.packageId;\n }\n if (typeof this.revenue !== 'undefined' && this.revenue !== null) {\n toReturn['revenue'] = 'toApiJson' in this.revenue ? this.revenue.toApiJson() : this.revenue;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityPackageRevenueResponse {\n static fromProto(proto) {\n let m = new UpdateOpportunityPackageRevenueResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityPipelineAndProbabilityRequest {\n static fromProto(proto) {\n let m = new UpdateOpportunityPipelineAndProbabilityRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n if (typeof this.probability !== 'undefined') {\n toReturn['probability'] = this.probability;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityPipelineRequest {\n static fromProto(proto) {\n let m = new UpdateOpportunityPipelineRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityPipelineResponse {\n static fromProto(proto) {\n let m = new UpdateOpportunityPipelineResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass UpdateOpportunityProbabilityRequest {\n static fromProto(proto) {\n let m = new UpdateOpportunityProbabilityRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.probability !== 'undefined') {\n toReturn['probability'] = this.probability;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityProbabilityResponse {\n static fromProto(proto) {\n let m = new UpdateOpportunityProbabilityResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunitySalespersonRequest {\n static fromProto(proto) {\n let m = new UpdateOpportunitySalespersonRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.salesPersonId !== 'undefined') {\n toReturn['salesPersonId'] = this.salesPersonId;\n }\n if (typeof this.createSalesActivity !== 'undefined') {\n toReturn['createSalesActivity'] = this.createSalesActivity;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunitySalespersonResponse {\n static fromProto(proto) {\n let m = new UpdateOpportunitySalespersonResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityTagsRequest {\n static fromProto(proto) {\n let m = new UpdateOpportunityTagsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.tags !== 'undefined') {\n toReturn['tags'] = this.tags;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityTagsResponse {\n static fromProto(proto) {\n let m = new UpdateOpportunityTagsResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityTypeRequest {\n static fromProto(proto) {\n let m = new UpdateOpportunityTypeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.opportunityType !== 'undefined') {\n toReturn['opportunityType'] = this.opportunityType;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n return toReturn;\n }\n}\nclass UpdateOpportunityTypeResponse {\n static fromProto(proto) {\n let m = new UpdateOpportunityTypeResponse();\n m = Object.assign(m, proto);\n if (proto.opportunity) {\n m.opportunity = Opportunity.fromProto(proto.opportunity);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunity !== 'undefined' && this.opportunity !== null) {\n toReturn['opportunity'] = 'toApiJson' in this.opportunity ? this.opportunity.toApiJson() : this.opportunity;\n }\n return toReturn;\n }\n}\nclass UpdatePipelineNameRequest {\n static fromProto(proto) {\n let m = new UpdatePipelineNameRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nclass UpdatePipelineNameResponse {\n static fromProto(proto) {\n let m = new UpdatePipelineNameResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass UpdatePipelineStageNameRequest {\n static fromProto(proto) {\n let m = new UpdatePipelineStageNameRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n if (typeof this.stageId !== 'undefined') {\n toReturn['stageId'] = this.stageId;\n }\n if (typeof this.stageName !== 'undefined') {\n toReturn['stageName'] = this.stageName;\n }\n return toReturn;\n }\n}\nclass UpdatePipelineStageNameResponse {\n static fromProto(proto) {\n let m = new UpdatePipelineStageNameResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass UpdatePipelineStageProbabilityRequest {\n static fromProto(proto) {\n let m = new UpdatePipelineStageProbabilityRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n if (typeof this.stageId !== 'undefined') {\n toReturn['stageId'] = this.stageId;\n }\n if (typeof this.probability !== 'undefined') {\n toReturn['probability'] = this.probability;\n }\n return toReturn;\n }\n}\nclass UpdatePipelineStageProbabilityResponse {\n static fromProto(proto) {\n let m = new UpdatePipelineStageProbabilityResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass UpdateSubscriberUserIDsRequest {\n static fromProto(proto) {\n let m = new UpdateSubscriberUserIDsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.opportunityId !== 'undefined') {\n toReturn['opportunityId'] = this.opportunityId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.editSalesPersonId !== 'undefined') {\n toReturn['editSalesPersonId'] = this.editSalesPersonId;\n }\n if (typeof this.subscriberUserIds !== 'undefined') {\n toReturn['subscriberUserIds'] = this.subscriberUserIds;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'sales-opportunities.vendasta-local.com',\n 'test': '',\n 'demo': 'sales-opportunities-demo.apigateway.co',\n 'prod': 'sales-opportunities-prod.apigateway.co',\n 'production': 'sales-opportunities-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet GoalsApiService = /*#__PURE__*/(() => {\n class GoalsApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateGoalRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.Goals/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GoalResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateGoalRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.Goals/Update\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GoalResponse.fromProto(resp)));\n }\n get(r) {\n const request = r.toApiJson ? r : new GetGoalRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.Goals/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GoalResponse.fromProto(resp)));\n }\n list(r) {\n const request = r.toApiJson ? r : new ListGoalsRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.Goals/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListGoalsResponse.fromProto(resp)));\n }\n delete(r) {\n const request = r.toApiJson ? r : new DeleteGoalRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.Goals/Delete\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n archive(r) {\n const request = r.toApiJson ? r : new ArchiveGoalRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.Goals/Archive\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n GoalsApiService.ɵfac = function GoalsApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GoalsApiService)();\n };\n GoalsApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: GoalsApiService,\n factory: GoalsApiService.ɵfac,\n providedIn: 'root'\n });\n return GoalsApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet OpportunityScoringApiService = /*#__PURE__*/(() => {\n class OpportunityScoringApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getMeddicScores(r) {\n const request = r.toApiJson ? r : new GetMEDDICScoresRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.OpportunityScoring/GetMEDDICScores\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMEDDICScoresResponse.fromProto(resp)));\n }\n updateMeddicScoringForOpportunity(r) {\n const request = r.toApiJson ? r : new UpdateMEDDICScoringRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.OpportunityScoring/UpdateMEDDICScoringForOpportunity\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateMeddicNotesForOpportunity(r) {\n const request = r.toApiJson ? r : new UpdateMEDDICNotesRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.OpportunityScoring/UpdateMEDDICNotesForOpportunity\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getMeddicSections(r) {\n const request = r.toApiJson ? r : new GetMEDDICSectionsRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.OpportunityScoring/GetMEDDICSections\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMEDDICSectionsResponse.fromProto(resp)));\n }\n }\n OpportunityScoringApiService.ɵfac = function OpportunityScoringApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || OpportunityScoringApiService)();\n };\n OpportunityScoringApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: OpportunityScoringApiService,\n factory: OpportunityScoringApiService.ɵfac,\n providedIn: 'root'\n });\n return OpportunityScoringApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SalesOpportunitiesApiService = /*#__PURE__*/(() => {\n class SalesOpportunitiesApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createOpportunity(r) {\n const request = r.toApiJson ? r : new CreateOpportunityRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/CreateOpportunity\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateOpportunityResponse.fromProto(resp)));\n }\n getOpportunity(r) {\n const request = r.toApiJson ? r : new GetOpportunityRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/GetOpportunity\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetOpportunityResponse.fromProto(resp)));\n }\n getOpportunityByIdempotencyKey(r) {\n const request = r.toApiJson ? r : new GetOpportunityByIdempotencyKeyRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/GetOpportunityByIdempotencyKey\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetOpportunityResponse.fromProto(resp)));\n }\n listOpportunities(r) {\n const request = r.toApiJson ? r : new ListOpportunitiesRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/ListOpportunities\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListOpportunitiesResponse.fromProto(resp)));\n }\n getOpportunityCountByAccountGroups(r) {\n const request = r.toApiJson ? r : new GetOpportunityCountByAccountGroupsRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/GetOpportunityCountByAccountGroups\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetOpportunityCountByAccountGroupsResponse.fromProto(resp)));\n }\n updateOpportunityName(r) {\n const request = r.toApiJson ? r : new UpdateOpportunityNameRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateOpportunityName\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateOpportunityNameResponse.fromProto(resp)));\n }\n updateOpportunityProbability(r) {\n const request = r.toApiJson ? r : new UpdateOpportunityProbabilityRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateOpportunityProbability\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateOpportunityProbabilityResponse.fromProto(resp)));\n }\n updateOpportunityType(r) {\n const request = r.toApiJson ? r : new UpdateOpportunityTypeRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateOpportunityType\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateOpportunityTypeResponse.fromProto(resp)));\n }\n updateOpportunitySalesperson(r) {\n const request = r.toApiJson ? r : new UpdateOpportunitySalespersonRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateOpportunitySalesperson\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateOpportunitySalespersonResponse.fromProto(resp)));\n }\n updateOpportunityExpectedCloseDate(r) {\n const request = r.toApiJson ? r : new UpdateOpportunityExpectedCloseDateRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateOpportunityExpectedCloseDate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateOpportunityExpectedCloseDateResponse.fromProto(resp)));\n }\n updateOpportunityNotes(r) {\n const request = r.toApiJson ? r : new UpdateOpportunityNotesRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateOpportunityNotes\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateOpportunityNotesResponse.fromProto(resp)));\n }\n addOpportunityPackages(r) {\n const request = r.toApiJson ? r : new AddOpportunityPackagesRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/AddOpportunityPackages\", request.toApiJson(), this.apiOptions()).pipe(map(resp => AddOpportunityPackagesResponse.fromProto(resp)));\n }\n removeOpportunityPackages(r) {\n const request = r.toApiJson ? r : new RemoveOpportunityPackagesRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/RemoveOpportunityPackages\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RemoveOpportunityPackagesResponse.fromProto(resp)));\n }\n updateOpportunityPackageRevenue(r) {\n const request = r.toApiJson ? r : new UpdateOpportunityPackageRevenueRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateOpportunityPackageRevenue\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateOpportunityPackageRevenueResponse.fromProto(resp)));\n }\n updateOpportunityPackage(r) {\n const request = r.toApiJson ? r : new UpdateOpportunityPackageRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateOpportunityPackage\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateOpportunityPackageResponse.fromProto(resp)));\n }\n closeAsWonOpportunity(r) {\n const request = r.toApiJson ? r : new CloseAsWonOpportunityRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/CloseAsWonOpportunity\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CloseAsWonOpportunityResponse.fromProto(resp)));\n }\n closeAsLostOpportunity(r) {\n const request = r.toApiJson ? r : new CloseAsLostOpportunityRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/CloseAsLostOpportunity\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CloseAsLostOpportunityResponse.fromProto(resp)));\n }\n updateLastConnectedDate(r) {\n const request = r.toApiJson ? r : new UpdateLastConnectedDateRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateLastConnectedDate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateLastConnectedDateResponse.fromProto(resp)));\n }\n updateLastActivityDate(r) {\n const request = r.toApiJson ? r : new UpdateLastActivityDateRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateLastActivityDate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateLastActivityDateResponse.fromProto(resp)));\n }\n deleteOpportunity(r) {\n const request = r.toApiJson ? r : new DeleteOpportunityRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/DeleteOpportunity\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n reopenClosedOpportunity(r) {\n const request = r.toApiJson ? r : new ReopenClosedOpportunityRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/ReopenClosedOpportunity\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateOpportunityMarket(r) {\n const request = r.toApiJson ? r : new UpdateOpportunityMarketRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateOpportunityMarket\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateOpportunityMarketResponse.fromProto(resp)));\n }\n getSalespersonStats(r) {\n const request = r.toApiJson ? r : new SalespersonStatsRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/GetSalespersonStats\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SalespersonStatsResponse.fromProto(resp)));\n }\n updateOpportunityTags(r) {\n const request = r.toApiJson ? r : new UpdateOpportunityTagsRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateOpportunityTags\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateOpportunityTagsResponse.fromProto(resp)));\n }\n getTagsForOpportunities(r) {\n const request = r.toApiJson ? r : new GetTagsForOpportunitiesRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/GetTagsForOpportunities\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetTagsForOpportunitiesResponse.fromProto(resp)));\n }\n updateOpportunityDuration(r) {\n const request = r.toApiJson ? r : new UpdateOpportunityDurationRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateOpportunityDuration\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateOpportunityDurationResponse.fromProto(resp)));\n }\n updateOpportunityPipeline(r) {\n const request = r.toApiJson ? r : new UpdateOpportunityPipelineRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateOpportunityPipeline\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n addAttachmentToOpportunity(r) {\n const request = r.toApiJson ? r : new AddAttachmentToOpportunityRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/AddAttachmentToOpportunity\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateClosedDateForOpportunity(r) {\n const request = r.toApiJson ? r : new UpdateClosedDateRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateClosedDateForOpportunity\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateLineItemsForOpportunity(r) {\n const request = r.toApiJson ? r : new UpdateLineItemsRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateLineItemsForOpportunity\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateLineItemsResponse.fromProto(resp)));\n }\n updateSubscriberUserIDsForOpportunity(r) {\n const request = r.toApiJson ? r : new UpdateSubscriberUserIDsRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateSubscriberUserIDsForOpportunity\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getOpportunityValueByAccountGroups(r) {\n const request = r.toApiJson ? r : new GetOpportunityValueByAccountGroupsRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/GetOpportunityValueByAccountGroups\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetOpportunityValueByAccountGroupsResponse.fromProto(resp)));\n }\n initiateOpportunityExport(r) {\n const request = r.toApiJson ? r : new InitiateOpportunityExportRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/InitiateOpportunityExport\", request.toApiJson(), this.apiOptions()).pipe(map(resp => InitiateOpportunityExportResponse.fromProto(resp)));\n }\n updateOpportunityPipelineAndProbability(r) {\n const request = r.toApiJson ? r : new UpdateOpportunityPipelineAndProbabilityRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesOpportunities/UpdateOpportunityPipelineAndProbability\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n SalesOpportunitiesApiService.ɵfac = function SalesOpportunitiesApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SalesOpportunitiesApiService)();\n };\n SalesOpportunitiesApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SalesOpportunitiesApiService,\n factory: SalesOpportunitiesApiService.ɵfac,\n providedIn: 'root'\n });\n return SalesOpportunitiesApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SalesPipelinesApiService = /*#__PURE__*/(() => {\n class SalesPipelinesApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createPipeline(r) {\n const request = r.toApiJson ? r : new CreatePipelineRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesPipelines/CreatePipeline\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreatePipelineResponse.fromProto(resp)));\n }\n listPipelines(r) {\n const request = r.toApiJson ? r : new ListPipelinesRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesPipelines/ListPipelines\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPipelinesResponse.fromProto(resp)));\n }\n updatePipelineName(r) {\n const request = r.toApiJson ? r : new UpdatePipelineNameRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesPipelines/UpdatePipelineName\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdatePipelineNameResponse.fromProto(resp)));\n }\n updatePipelineStageName(r) {\n const request = r.toApiJson ? r : new UpdatePipelineStageNameRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesPipelines/UpdatePipelineStageName\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdatePipelineStageNameResponse.fromProto(resp)));\n }\n updatePipelineStageProbability(r) {\n const request = r.toApiJson ? r : new UpdatePipelineStageProbabilityRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesPipelines/UpdatePipelineStageProbability\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdatePipelineStageProbabilityResponse.fromProto(resp)));\n }\n setPipelineStages(r) {\n const request = r.toApiJson ? r : new SetPipelineStagesRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesPipelines/SetPipelineStages\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SetPipelineStagesResponse.fromProto(resp)));\n }\n addPipelineStages(r) {\n const request = r.toApiJson ? r : new AddPipelineStagesRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesPipelines/AddPipelineStages\", request.toApiJson(), this.apiOptions()).pipe(map(resp => AddPipelineStagesResponse.fromProto(resp)));\n }\n removePipelineStages(r) {\n const request = r.toApiJson ? r : new RemovePipelineStagesRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesPipelines/RemovePipelineStages\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RemovePipelineStagesResponse.fromProto(resp)));\n }\n deletePipeline(r) {\n const request = r.toApiJson ? r : new DeletePipelineRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesPipelines/DeletePipeline\", request.toApiJson(), this.apiOptions()).pipe(map(resp => DeletePipelineResponse.fromProto(resp)));\n }\n }\n SalesPipelinesApiService.ɵfac = function SalesPipelinesApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SalesPipelinesApiService)();\n };\n SalesPipelinesApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SalesPipelinesApiService,\n factory: SalesPipelinesApiService.ɵfac,\n providedIn: 'root'\n });\n return SalesPipelinesApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SalesPipelinesAdminApiService = /*#__PURE__*/(() => {\n class SalesPipelinesAdminApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n restoreDeletedPipeline(r) {\n const request = r.toApiJson ? r : new RestoreDeletedPipelineRequest(r);\n return this.http.post(this._host + \"/salesopportunities.v1.SalesPipelinesAdmin/RestoreDeletedPipeline\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RestoreDeletedPipelineResponse.fromProto(resp)));\n }\n }\n SalesPipelinesAdminApiService.ɵfac = function SalesPipelinesAdminApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SalesPipelinesAdminApiService)();\n };\n SalesPipelinesAdminApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SalesPipelinesAdminApiService,\n factory: SalesPipelinesAdminApiService.ɵfac,\n providedIn: 'root'\n });\n return SalesPipelinesAdminApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\n\nconst DEFAULT_PIPELINE_ID = 'DEFAULT';\nlet SalesOpportunitiesService = /*#__PURE__*/(() => {\n class SalesOpportunitiesService {\n constructor(_api) {\n this._api = _api;\n }\n updateOpportunityExpectedCloseDate(accountGroupId, opportunityId, editSalesPersonId, expectedCloseDate, createSalesActivity) {\n const req = {\n accountGroupId: accountGroupId,\n opportunityId: opportunityId,\n editSalesPersonId: editSalesPersonId,\n expectedCloseDate: expectedCloseDate,\n createSalesActivity: createSalesActivity ?? false\n };\n return this._api.updateOpportunityExpectedCloseDate(req).pipe(map(resp => resp.opportunity));\n }\n updateOpportunitySalesperson(accountGroupId, opportunityId, editSalesPersonId, salesPersonId, createSalesActivity) {\n const req = {\n accountGroupId: accountGroupId,\n opportunityId: opportunityId,\n editSalesPersonId: editSalesPersonId,\n salesPersonId: salesPersonId,\n createSalesActivity: createSalesActivity ?? false\n };\n return this._api.updateOpportunitySalesperson(req).pipe(map(resp => resp.opportunity));\n }\n addAttachment(opportunityId, accountGroupId, name, url) {\n return this._api.addAttachmentToOpportunity({\n opportunityId: opportunityId,\n accountGroupId: accountGroupId,\n name: name,\n url: url\n });\n }\n create(accountGroupId, salesPersonId, marketId, partnerId, expectedCloseDate, probability, pipelineId, name, packages, notes, tags, expectedContractDuration, lineItems, subscriberUserIds, opportunityType) {\n return this._api.createOpportunity(new CreateOpportunityRequest({\n accountGroupId: accountGroupId,\n salesPersonId: salesPersonId,\n marketId: marketId,\n partnerId: partnerId,\n packages: packages,\n expectedCloseDate: expectedCloseDate,\n probability: probability,\n name: name,\n notes: notes,\n tags: tags,\n expectedContractDuration: expectedContractDuration,\n pipelineId: pipelineId,\n lineItems: lineItems,\n subscriberUserIds: subscriberUserIds,\n opportunityType: opportunityType\n })).pipe(map(resp => resp.opportunity));\n }\n get(opportunityId, accountGroupId) {\n return this._api.getOpportunity({\n opportunityId: opportunityId,\n accountGroupId: accountGroupId\n }).pipe(map(resp => resp.opportunity));\n }\n getTags(partnerId, marketId) {\n return this._api.getTagsForOpportunities({\n partnerId,\n marketId\n }).pipe(map(resp => resp.tags || []));\n }\n updateTags(opportunityID, accountGroupID, editSalespersonID, tags) {\n return this._api.updateOpportunityTags({\n opportunityId: opportunityID,\n accountGroupId: accountGroupID,\n editSalesPersonId: editSalespersonID,\n tags: tags\n }).pipe(map(resp => resp.opportunity));\n }\n updateOpportunityNotes(opportunityId, accountGroupId, editSalesPersonId, notes) {\n return this._api.updateOpportunityNotes({\n opportunityId: opportunityId,\n accountGroupId: accountGroupId,\n editSalesPersonId: editSalesPersonId,\n notes: notes\n }).pipe(map(resp => resp.opportunity));\n }\n getOpportunityCountByAccountGroups(accountGroupIds, onlyOpen, partnerId, marketId) {\n return this._api.getOpportunityCountByAccountGroups({\n accountGroupIds: accountGroupIds,\n onlyUnclosed: onlyOpen,\n partnerId: partnerId,\n marketId: marketId\n }).pipe(map(resp => resp.results));\n }\n getOpportunityValueByAccountGroups(accountGroupIds, partnerId, marketId) {\n return this._api.getOpportunityValueByAccountGroups({\n accountGroupIds: accountGroupIds,\n partnerId: partnerId,\n marketId: marketId\n }).pipe(map(resp => resp.results));\n }\n modifyActualCloseDateForOpportunity(requestParams) {\n return this._api.updateClosedDateForOpportunity({\n opportunityId: requestParams.opportunityId,\n accountGroupId: requestParams.accountGroupId,\n editSalesPersonId: requestParams.editSalesPersonId,\n closedDate: requestParams.closedDate\n });\n }\n updateOpportunityPipeline(opportunityId, accountGroupId, editSalesPersonId, pipelineId) {\n return this._api.updateOpportunityPipeline({\n opportunityId: opportunityId,\n accountGroupId: accountGroupId,\n editSalesPersonId: editSalesPersonId,\n pipelineId: pipelineId\n });\n }\n updateOpportunityProbability(opportunityId, accountGroupId, editSalesPersonId, probability) {\n return this._api.updateOpportunityProbability({\n opportunityId: opportunityId,\n accountGroupId: accountGroupId,\n editSalesPersonId: editSalesPersonId,\n probability: probability\n }).pipe(map(resp => resp.opportunity));\n }\n updateOpportunityType(opportunityId, accountGroupId, opportunityType, editSalesPersonId) {\n return this._api.updateOpportunityType({\n opportunityId: opportunityId,\n accountGroupId: accountGroupId,\n opportunityType: opportunityType,\n editSalesPersonId: editSalesPersonId\n }).pipe(map(resp => resp.opportunity));\n }\n updateOpportunityDuration(opportunityId, accountGroupId, editSalesPersonId, expectedContractDuration) {\n return this._api.updateOpportunityDuration({\n opportunityId,\n accountGroupId,\n editSalesPersonId,\n expectedContractDuration\n }).pipe(map(resp => resp.opportunity));\n }\n updateLineItemsForOpportunity(opportunityId, accountGroupId, editSalesPersonId, lineItems) {\n return this._api.updateLineItemsForOpportunity({\n opportunityId,\n accountGroupId,\n editSalesPersonId,\n lineItems\n }).pipe(map(resp => resp.opportunity));\n }\n updateSubscriberUserIdsForOpportunity(opportunityId, accountGroupId, editSalesPersonId, subscriberUserIds) {\n return this._api.updateSubscriberUserIDsForOpportunity({\n opportunityId,\n accountGroupId,\n editSalesPersonId,\n subscriberUserIds\n });\n }\n list(partnerId, marketId, filters, sortOption, searchTerm, pageSize, cursor) {\n return this._api.listOpportunities({\n partnerId: partnerId,\n marketId: marketId,\n filters: filters,\n sortOption: sortOption,\n searchTerm: searchTerm,\n pageSize: pageSize,\n cursor: cursor\n }).pipe(map(resp => {\n if (!!resp.results) {\n resp.results.forEach(r => {\n if (!r.pipelineId || r.pipelineId === '') {\n r.pipelineId = DEFAULT_PIPELINE_ID;\n }\n });\n }\n return resp;\n }));\n }\n reopenOpportunity(opportunityId, accountGroupId, salesPersonId, reason) {\n const request = {\n opportunityId: opportunityId,\n accountGroupId: accountGroupId,\n editSalesPersonId: salesPersonId,\n reason: reason\n };\n return this._api.reopenClosedOpportunity(request).pipe(map(response => {\n return response.status === 200;\n }));\n }\n closeOpportunityAsWon(opportunityId, accountGroupId, salesPersonId, notes) {\n const request = {\n opportunityId: opportunityId,\n accountGroupId: accountGroupId,\n editSalesPersonId: salesPersonId,\n notes: notes\n };\n return this._api.closeAsWonOpportunity(request).pipe(map(response => response.opportunity));\n }\n closeOpportunityAsLost(opportunityId, accountGroupId, salesPersonId, reason, notes) {\n const request = {\n opportunityId: opportunityId,\n accountGroupId: accountGroupId,\n editSalesPersonId: salesPersonId,\n reason: reason,\n notes: notes\n };\n return this._api.closeAsLostOpportunity(request).pipe(map(response => response.opportunity));\n }\n initiateOpportunityExport(partnerId, marketId, filters, sortOption, searchTerm, csvExports, csvOptions, clientOrigin) {\n const request = {\n partnerId: partnerId,\n marketId: marketId,\n filters: filters,\n sortOption: sortOption,\n searchTerm: searchTerm,\n csvFormatOptions: csvOptions,\n csvExports: csvExports,\n clientOrigin: clientOrigin\n };\n return this._api.initiateOpportunityExport(request).pipe(map(response => response.exportId));\n }\n }\n SalesOpportunitiesService.ɵfac = function SalesOpportunitiesService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SalesOpportunitiesService)(i0.ɵɵinject(SalesOpportunitiesApiService));\n };\n SalesOpportunitiesService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SalesOpportunitiesService,\n factory: SalesOpportunitiesService.ɵfac,\n providedIn: 'root'\n });\n return SalesOpportunitiesService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SalesPipelinesService = /*#__PURE__*/(() => {\n class SalesPipelinesService {\n constructor(_api) {\n this._api = _api;\n }\n createPipeline(partnerId, name, stages) {\n const request = {\n partnerId: partnerId,\n name: name,\n stages: stages\n };\n return this._api.createPipeline(request);\n }\n list(partnerId) {\n const request = {\n partnerId: partnerId\n };\n return this._api.listPipelines(request).pipe(map(resp => {\n return resp.results;\n }));\n }\n updatePipelineName(partnerId, pipelineId, name) {\n const request = {\n partnerId: partnerId,\n name: name,\n pipelineId: pipelineId\n };\n return this._api.updatePipelineName(request);\n }\n updatePipelineStageName(partnerId, pipelineId, stageId, stageName) {\n const request = {\n partnerId: partnerId,\n pipelineId: pipelineId,\n stageId: stageId,\n stageName: stageName\n };\n return this._api.updatePipelineStageName(request);\n }\n updatePipelineStageProbability(partnerId, pipelineId, stageId, probability) {\n const request = {\n partnerId: partnerId,\n pipelineId: pipelineId,\n stageId: stageId,\n probability: probability\n };\n return this._api.updatePipelineStageProbability(request);\n }\n addPipelineStages(partnerId, pipelineId, stages) {\n const request = {\n partnerId: partnerId,\n pipelineId: pipelineId,\n stages: stages\n };\n return this._api.addPipelineStages(request);\n }\n setPipelineStages(partnerId, pipelineId, stages) {\n const request = {\n partnerId: partnerId,\n pipelineId: pipelineId,\n stages: stages\n };\n return this._api.setPipelineStages(request);\n }\n removePipelineStages(partnerId, pipelineId, stageIds) {\n const request = {\n partnerId: partnerId,\n pipelineId: pipelineId,\n stageIds: stageIds\n };\n return this._api.removePipelineStages(request);\n }\n deletePipeline(partnerId, pipelineId) {\n const request = {\n partnerId: partnerId,\n pipelineId: pipelineId\n };\n return this._api.deletePipeline(request);\n }\n }\n SalesPipelinesService.ɵfac = function SalesPipelinesService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SalesPipelinesService)(i0.ɵɵinject(SalesPipelinesApiService));\n };\n SalesPipelinesService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SalesPipelinesService,\n factory: SalesPipelinesService.ɵfac,\n providedIn: 'root'\n });\n return SalesPipelinesService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet OpportunityScoringService = /*#__PURE__*/(() => {\n class OpportunityScoringService {\n constructor(api, scoring) {\n this.api = api;\n this.scoring = scoring;\n }\n updateMEDDICScores(accountGroupId, opportunityId, meddicScores) {\n const req = {\n opportunityId: opportunityId,\n accountGroupId: accountGroupId,\n editSalesPersonId: '',\n metricScoreValue: meddicScores.metric,\n economicBuyerScoreValue: meddicScores.economicBuyer,\n decisionCriteriaScoreValue: meddicScores.decisionCriteria,\n decisionProcessScoreValue: meddicScores.decisionProcess,\n identifyPainScoreValue: meddicScores.identifyPain,\n championScoreValue: meddicScores.champion,\n competitionScoreValue: meddicScores.competition,\n paperProcessScoreValue: meddicScores.paperProcess\n };\n return this.scoring.updateMeddicScoringForOpportunity(req).pipe(take(1), mapTo(null));\n }\n getMEDDICScores(accountGroupId, opportunityId) {\n const req = {\n accountGroupId: accountGroupId,\n opportunityId: opportunityId\n };\n return this.scoring.getMeddicScores(req).pipe(map(response => ({\n metric: response.scores.metric || 0,\n economicBuyer: response.scores.economicBuyer || 0,\n decisionProcess: response.scores.decisionProcess || 0,\n decisionCriteria: response.scores.decisionCriteria || 0,\n identifyPain: response.scores.identifyPain || 0,\n champion: response.scores.champion || 0,\n competition: response.scores.competition || 0,\n paperProcess: response.scores.paperProcess || 0\n })));\n }\n updateMEDDICNotes(accountGroupId, opportunityId, editSalesPersonId, meddicSection, notes) {\n const req = {\n accountGroupId: accountGroupId,\n opportunityId: opportunityId,\n editSalesPersonId: editSalesPersonId,\n sectionName: meddicSection,\n sectionNotes: notes\n };\n return this.scoring.updateMeddicNotesForOpportunity(req).pipe(take(1), mapTo(null));\n }\n getMEDDICSections(accountGroupId, opportunityId) {\n const req = {\n accountGroupId: accountGroupId,\n opportunityId: opportunityId\n };\n return this.scoring.getMeddicSections(req).pipe(map(resp => {\n const sections = [];\n const scores = resp.sections.scores || [];\n scores.forEach(score => {\n const section = {\n sectionName: score.section,\n score: score.scoreValue || 0,\n notes: score.notes\n };\n sections.push(section);\n });\n return sections;\n }));\n }\n }\n OpportunityScoringService.ɵfac = function OpportunityScoringService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || OpportunityScoringService)(i0.ɵɵinject(SalesOpportunitiesApiService), i0.ɵɵinject(OpportunityScoringApiService));\n };\n OpportunityScoringService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: OpportunityScoringService,\n factory: OpportunityScoringService.ɵfac,\n providedIn: 'root'\n });\n return OpportunityScoringService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet GoalsService = /*#__PURE__*/(() => {\n class GoalsService {\n constructor(_api) {\n this._api = _api;\n }\n create(createRequest) {\n return this._api.create(createRequest);\n }\n update(updateRequest) {\n return this._api.update(updateRequest);\n }\n list(listRequest) {\n return this._api.list(listRequest);\n }\n get(id) {\n const getRequest = {\n id: id\n };\n return this._api.get(getRequest);\n }\n delete(partnerId, id) {\n const deleteRequest = {\n id: id,\n partnerId: partnerId\n };\n return this._api.delete(deleteRequest);\n }\n archive(partnerId, id) {\n const archiveGoalRequest = {\n id: id,\n partnerId: partnerId\n };\n return this._api.archive(archiveGoalRequest);\n }\n }\n GoalsService.ɵfac = function GoalsService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GoalsService)(i0.ɵɵinject(GoalsApiService));\n };\n GoalsService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: GoalsService,\n factory: GoalsService.ɵfac,\n providedIn: 'root'\n });\n return GoalsService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CSVExports, CSVFormatOptions, ClientOrigin, CreateOpportunityRequest, CreateOpportunityRequestCreateOpportunityPackage, Currency, DateRangeFilter, Duration, DurationPeriod, GetTagsForOpportunitiesRequest, GoalType, GoalsService, LineItem, LineItemAppKey, ListOpportunitiesRequest, ListOpportunitiesRequestFilters, ListOpportunitiesRequestSortField, ListOpportunitiesRequestSortOption, ListOpportunitiesResponse, MEDDICSection, Opportunity, OpportunityCount, OpportunityRevenuePeriod, OpportunityScoringService, OpportunityValue, Package, Revenue, RevenueComponent, RevenuePeriod, RevenuePeriodFilter, SalesOpportunitiesApiService, SalesOpportunitiesService, SalesPipelinesService, Scoring, SortDirection, UpdateLineItemsRequest, UpdateLineItemsResponse };\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'sanitizeHtml',\n standalone: true,\n})\nexport class SanitizeHtmlPipe implements PipeTransform {\n constructor(private _sanitizer: DomSanitizer) {}\n\n transform(value: any): any {\n return this._sanitizer.sanitize(SecurityContext.HTML, value);\n }\n}\n","import { Component, computed, effect, Inject, Input, Signal, signal, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CrmFieldService, StandardIds, SystemFieldIds } from '../../../shared-services/crm-services/field.service';\n\nimport { CrmInjectionToken, CrmDependencies } from '../../../tokens-and-interfaces';\nimport { MatCardModule } from '@angular/material/card';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\n\nimport { ActivityInterface } from '@vendasta/crm';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { AVATAR_WIDTH } from '../../../constants';\nimport { RxState } from '@rx-angular/state';\n\nimport { SalespersonService, SalesSdk } from '@vendasta/sales';\nimport { catchError, map, switchMap, filter } from 'rxjs/operators';\nimport { combineLatest, firstValueFrom, of, take } from 'rxjs';\nimport { toSignal, toObservable } from '@angular/core/rxjs-interop';\nimport { SalesOpportunitiesSdk, SalesOpportunitiesService } from '@vendasta/sales-opportunities';\nimport { CrmPlatformApiService } from '../../../shared-services/platform-api.service';\nimport { SanitizeHtmlPipe } from './sanitize-html.pipe';\n\n@Component({\n selector: 'crm-activity-opportunity-updated',\n templateUrl: './opportunity-change.component.html',\n styleUrls: ['./opportunity-change.component.scss'],\n providers: [RxState, CrmPlatformApiService],\n imports: [CommonModule, TranslateModule, MatCardModule, GalaxyPipesModule, GalaxyAvatarModule, SanitizeHtmlPipe],\n})\nexport class CrmActivityOpportunityUpdatedComponent implements OnInit {\n #activity = signal({});\n isClosedWon = false;\n private checkClosedWon(): void {\n const opportunityChangeStatus =\n this.fieldService.getFieldValueFromCrmObject(this.#activity(), StandardIds.ActivityOpportunityChangePipelineStage)\n ?.stringValue ?? '';\n\n this.isClosedWon = opportunityChangeStatus.toLowerCase() === 'closed-won';\n }\n\n ngOnInit(): void {\n this.checkClosedWon();\n }\n @Input() set activity(activity: ActivityInterface) {\n this.#activity.set(activity);\n }\n\n get activity(): ActivityInterface {\n return this.#activity();\n }\n\n private _showAvatar = true;\n protected readonly AVATAR_WIDTH = AVATAR_WIDTH;\n\n @Input() set showAvatar(showAvatar: boolean) {\n this._showAvatar = showAvatar;\n }\n\n get showAvatar() {\n return this._showAvatar;\n }\n\n dateFormat = DateFormat.medium;\n\n salespersonId: Signal = computed(() => {\n return (\n this.fieldService.getFieldValueFromCrmObject(this.activity, StandardIds.ActivityOpportunityChangeSalespersonID)\n ?.stringValue ?? ''\n );\n });\n\n private readonly namespace = toSignal(this.config.namespace$);\n\n effectResult = signal(undefined);\n\n headerText = computed(() => {\n const effectResult = this.effectResult();\n\n const salesPerson = this.salespersonId();\n if (salesPerson) {\n return (\n this.translateService.instant('COMPANY.OPPORTUNITY_CHANGE_ACTIVITY.OPPORTUNITY_UPDATED_BY') +\n ' ' +\n effectResult?.opportunityUpdatedBy\n );\n }\n return this.translateService.instant('COMPANY.OPPORTUNITY_CHANGE_ACTIVITY.OPPORTUNITY_UPDATED');\n });\n\n cardInfo = computed(() => {\n const headerText = this.headerText();\n const effectiveDate = this.effectiveDate();\n const opportunityName = this.opportunityName();\n const updatedBy = this.effectResult()?.opportunityUpdatedBy;\n\n const opportunityChangeStatus =\n this.fieldService.getFieldValueFromCrmObject(this.#activity(), StandardIds.ActivityOpportunityChangePipelineStage)\n ?.stringValue ?? '';\n const opportunityChangeLostReason =\n this.fieldService.getFieldValueFromCrmObject(this.#activity(), StandardIds.ActivityOpportunityChangeLostReason)\n ?.stringValue ?? '';\n const opportunityChangeNotes =\n this.getStringFieldData(this.#activity(), StandardIds.ActivityOpportunityChangeNotes) ?? '';\n\n const formattedStatus =\n opportunityChangeStatus.charAt(0).toUpperCase() + opportunityChangeStatus.slice(1).toLowerCase();\n const formattedLostReason =\n opportunityChangeLostReason.charAt(0).toUpperCase() + opportunityChangeLostReason.slice(1).toLowerCase();\n\n const activityInfo = {\n status: formattedStatus,\n lostReason: formattedLostReason,\n notes: opportunityChangeNotes,\n opportunityName: opportunityName,\n };\n\n return {\n headerText,\n effectiveDate,\n updatedBy,\n activityInfo,\n };\n });\n\n effectiveDate = computed(() => {\n return (\n this.fieldService.getFieldValueFromCrmObject(this.#activity(), SystemFieldIds.ActivityEffectiveDate)?.dateValue ??\n null\n );\n });\n\n private getStringFieldData(activity: ActivityInterface, fieldId: string): string {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.stringValue ?? '';\n }\n\n accountGroupId$ = toObservable(this.#activity).pipe(\n map(\n (activity) =>\n (activity.associations || []).find((association) => association.crmObjectType === 'Company')?.crmObjectId ?? '',\n ),\n filter((companyId) => !!companyId),\n switchMap((companyId) => this.crmPlatformApiService.getAccountGroupForCompany(companyId)),\n );\n protected async handleOpenOpportunity(): Promise {\n const opportunityId = this.getStringFieldData(this.activity, StandardIds.ActivityOpportunityChangeID);\n const accountGroupId = await firstValueFrom(this.accountGroupId$);\n if (this.config.customActions && this.config.customActions.openOpportunitiesDetails) {\n this.config.customActions.openOpportunitiesDetails(opportunityId, accountGroupId);\n }\n }\n\n opportunityName = toSignal(\n combineLatest([this.accountGroupId$, toObservable(this.#activity)]).pipe(\n switchMap(([accountGroupId, activity]) => {\n const opportunityId = this.getStringFieldData(activity, StandardIds.ActivityOpportunityChangeID);\n return this.opportunityApi.get(opportunityId, accountGroupId).pipe(\n map((opportunity) => opportunity.name),\n catchError(() => of('Unknown')),\n );\n }),\n ),\n );\n\n constructor(\n private readonly fieldService: CrmFieldService,\n private readonly translateService: TranslateService,\n private readonly crmPlatformApiService: CrmPlatformApiService,\n @Inject(SalespersonService) private readonly salespersonService: SalesSdk,\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n @Inject(SalesOpportunitiesService) private readonly opportunityApi: SalesOpportunitiesSdk,\n ) {\n effect(() => {\n const namespace = this.namespace() || '';\n if (this.salespersonId()) {\n return this.salespersonService\n .getSalespersonBySubjectId(namespace, this.salespersonId())\n .pipe(\n map((salesperson) => `${salesperson.firstName} ${salesperson.lastName}`),\n catchError(() => of('Unknown')),\n )\n .pipe(take(1))\n .subscribe((salesperson) => {\n const effectResult = {} as EffectResult;\n effectResult.opportunityUpdatedBy = salesperson;\n this.effectResult.set(effectResult);\n });\n }\n });\n }\n}\n\ninterface EffectResult {\n opportunityUpdatedBy: string;\n effectiveDate: Date | null;\n}\n","\n \n \n
\n \n
\n \n {{ cardInfo.headerText }}\n \n \n

\n {{ cardInfo.effectiveDate | date: dateFormat }}\n

\n
\n
\n \n
\n \n
{{ activityInfo.opportunityName }}
\n
\n
\n {{ 'COMPANY.OPPORTUNITY_CHANGE_ACTIVITY.STATUS_CHANGE_MESSAGE' | translate }}\n {{ activityInfo.status }}\n
\n
\n
\n {{ 'COMPANY.OPPORTUNITY_CHANGE_ACTIVITY.REASON_MESSAGE' | translate }}\n {{ activityInfo.lostReason }}\n
\n
\n
\n {{ 'COMPANY.OPPORTUNITY_CHANGE_ACTIVITY.NOTES_MESSAGE' | translate }}\n \n
\n
\n
\n
\n
\n
\n
\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\n\n/*\n For an wrapper, you'll also want to use CdkObserveContent.\n But directive composition only supports standalone directives, so we can't combine CdkObserveContent here\n\n See: https://material.angular.io/cdk/observers/api\n*/\n\n@Directive({\n selector: '[crmOnResize]',\n standalone: true,\n})\nexport class OnResizeDirective {\n @HostListener('window:resize')\n onWindowResize() {\n this.resizeDetected.emit();\n }\n\n @Output() resizeDetected = new EventEmitter();\n resizeObserver!: ResizeObserver;\n\n constructor(private element: ElementRef) {\n if (window.ResizeObserver) {\n this.resizeObserver = new ResizeObserver(() => {\n this.resizeDetected.emit();\n });\n this.resizeObserver.observe(this.element.nativeElement);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, Input, ViewChild, signal } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TranslationModule } from '../../i18n/translation-module';\nimport { OnResizeDirective } from './on-resize.directive';\nimport { ObserversModule } from '@angular/cdk/observers';\n\n@Component({\n selector: 'crm-collapsible-section',\n template: `\n
\n \n \n
\n \n \n \n {{ (collapsed() ? 'COLLAPSIBLE_SECTION.VIEW_MORE' : 'COLLAPSIBLE_SECTION.VIEW_LESS') | translate }}\n

\n `,\n styleUrls: ['./collapsible-section.component.scss'],\n imports: [CommonModule, TranslateModule, TranslationModule, ObserversModule, OnResizeDirective],\n})\nexport class CollapsibleSectionComponent {\n @ViewChild('collapsibleContentContainer') collapsibleContentContainer!: ElementRef;\n\n @Input() maxHeightPx = 300;\n @Input() showBorderWhenCollapsed = false;\n\n // collapsed must be set initially for overflow to be detected otherwise the max-height won't be set\n collapsed = signal(true);\n collapsible = signal(false);\n\n toggleCollapsed() {\n this.collapsed.update((value) => !value);\n }\n\n checkForOverflow() {\n // collapsible if\n // - scrollable content is higher than the visible content\n // - content is larger than the maximum height\n const element = this.collapsibleContentContainer.nativeElement;\n const isOverflow = element.scrollHeight > element.offsetHeight || element.offsetHeight > this.maxHeightPx;\n this.collapsible.set(isOverflow);\n }\n}\n","import { Component, inject, Inject, signal } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ChatMessageComponent, ChatMessageGroupComponent, GalaxyChatModule } from '@vendasta/galaxy/chat';\nimport { AiAssistantService, DEFAULT_AVATAR_SVG_ICON } from '@galaxy/ai-assistant';\nimport { map, Observable, of, tap } from 'rxjs';\nimport { GalaxyPopoverModule, PopoverPositions } from '@vendasta/galaxy/popover';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { CallRecord, VoiceApiService } from '@vendasta/voice';\nimport { AssistantInterface } from '@vendasta/ai-assistants';\nimport { shareReplay, startWith, switchMap } from 'rxjs/operators';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n selector: 'crm-call-transcript-modal',\n templateUrl: './call-transcript-modal.component.html',\n styleUrl: './call-transcript-modal.component.scss',\n standalone: true,\n imports: [\n MatDialogModule,\n TranslateModule,\n DatePipe,\n CommonModule,\n ChatMessageComponent,\n ChatMessageGroupComponent,\n GalaxyChatModule,\n GalaxyPopoverModule,\n MatIcon,\n MatIconButton,\n ],\n})\nexport class CallTranscriptModalComponent {\n transcript = this.buildTranscriptFromJSON(this.data.transcriptJSON);\n\n readonly OPENAI_BOT_SVG_ICON = DEFAULT_AVATAR_SVG_ICON;\n readonly OPENAI_BOT_BACKGROUND_COLOR = '#f6f6f6';\n\n private readonly assistantService = inject(AiAssistantService);\n\n private readonly voiceApi = inject(VoiceApiService);\n\n callRecord$: Observable;\n callRecordHasVoiceSettings$: Observable;\n\n assistantThatHandledCall$: Observable;\n assistantProfilePic$: Observable;\n assistantLoading$: Observable;\n\n show = signal(false);\n\n route = inject(ActivatedRoute);\n showVoiceConfig$: Observable = this.route.queryParamMap.pipe(\n tap((params) => console.log('query params map:', params)),\n map((params) => params.get('debug') === 'true'),\n );\n\n constructor(\n public dialogRef: MatDialogRef,\n // Is there a way to update this? fields of CallData could be Observables?\n @Inject(MAT_DIALOG_DATA) public data: CallData,\n ) {\n const namespace = data.accountGroupId\n ? {\n accountGroupNamespace: {\n accountGroupId: data.accountGroupId,\n },\n }\n : data.partnerId\n ? {\n partnerNamespace: {\n partnerId: data.partnerId,\n },\n }\n : undefined;\n if (data.callRecordId && namespace) {\n this.callRecord$ = this.voiceApi\n .getCallRecord({\n id: data.callRecordId,\n namespace,\n })\n .pipe(\n map((resp) => resp.callRecord),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n } else {\n this.callRecord$ = of(undefined);\n }\n\n this.callRecordHasVoiceSettings$ = this.callRecord$.pipe(\n map((callRecord) => {\n const config = callRecord?.metadata?.voiceConfig?.openaiRealtimeConfig;\n return Boolean(\n config?.voice ||\n config?.turnDetection?.silenceDuration ||\n config?.turnDetection?.prefixPadding ||\n config?.turnDetection?.threshold,\n );\n }),\n );\n\n if (data.partnerId && data.accountGroupId) {\n const agid = data.accountGroupId;\n const pid = data.partnerId;\n this.assistantThatHandledCall$ = this.callRecord$.pipe(\n switchMap((callRecord) => {\n return this.assistantService.getAssistant(\n pid,\n agid,\n callRecord?.metadata?.assistantId || 'ASSISTANT-voice-receptionist',\n );\n }),\n );\n } else {\n this.assistantThatHandledCall$ = of(undefined);\n }\n\n const assistantDetails$ = this.assistantThatHandledCall$.pipe(\n map((assistant) => ({\n avatarUrl: assistant?.avatarUrl ?? undefined,\n loading: false,\n })),\n startWith({ avatarUrl: undefined, loading: true }),\n );\n this.assistantProfilePic$ = assistantDetails$.pipe(map((details) => details.avatarUrl));\n this.assistantLoading$ = assistantDetails$.pipe(map((details) => details.loading));\n }\n\n closeDialog() {\n this.dialogRef.close();\n }\n\n private buildTranscriptFromJSON(transcriptJSON: string): TranscriptMessageGroup[] {\n const messages: TranscriptMessage[] = JSON.parse(transcriptJSON);\n if (!messages || messages.length === 0) {\n return [];\n }\n const results: TranscriptMessageGroup[] = [\n {\n name: messages[0].name,\n messages: [messages[0]],\n },\n ];\n messages.shift();\n for (const message of messages) {\n if (message.name === results[results.length - 1].name) {\n results[results.length - 1].messages.push(message);\n } else {\n results.push({\n name: message.name,\n messages: [message],\n });\n }\n }\n return results;\n }\n\n protected readonly PopoverPositions = PopoverPositions;\n}\n\ninterface CallData {\n partnerId: string;\n accountGroupId?: string;\n callRecordId: string | undefined;\n transcriptJSON: string;\n toName: string;\n fromName: string;\n}\n\ninterface TranscriptMessage {\n content: string;\n timestamp: string;\n name: string;\n}\n\ninterface TranscriptMessageGroup {\n name: string;\n messages: TranscriptMessage[];\n}\n","
\n
\n

{{ 'INBOX.EVENTS.PHONE.TRANSCRIPT' | translate }}

\n\n @if ((showVoiceConfig$ | async) && (callRecordHasVoiceSettings$ | async)) {\n @let callRecord = callRecord$ | async;\n @let openaiRealtimeConfig = callRecord?.metadata?.voiceConfig?.openaiRealtimeConfig;\n info_outline \n\n \n {{ 'INBOX.EVENTS.PHONE.VOICE_AI_SETTINGS_LABEL' | translate }}\n @if (openaiRealtimeConfig?.voice) {\n
\n {{ ('INBOX.EVENTS.PHONE.VOICE_LABEL' | translate) + ': ' + openaiRealtimeConfig?.voice }}\n
\n }\n @if (openaiRealtimeConfig?.turnDetection?.threshold) {\n
\n {{\n ('INBOX.EVENTS.PHONE.TURN_DETECTION_THRESHOLD_LABEL' | translate) +\n ': ' +\n openaiRealtimeConfig.turnDetection.threshold\n }}\n
\n }\n @if (openaiRealtimeConfig?.turnDetection?.prefixPadding) {\n
\n {{\n ('INBOX.EVENTS.PHONE.TURN_DETECTION_PREFIX_PADDING_LABEL' | translate) +\n ': ' +\n openaiRealtimeConfig.turnDetection.prefixPadding\n }}\n
\n }\n @if (openaiRealtimeConfig?.turnDetection?.silenceDuration) {\n
\n {{\n ('INBOX.EVENTS.PHONE.TURN_DETECTION_SILENCE_DURATION_LABEL' | translate) +\n ': ' +\n openaiRealtimeConfig.turnDetection.silenceDuration\n }}\n
\n }\n \n }\n
\n
\n \n
\n
\n\n \n
\n @let assistantProfilePicUrl = (assistantProfilePic$ | async) ?? undefined;\n @let assistantLoading = assistantLoading$ | async;\n @for (messageGroup of transcript; track messageGroup) {\n \n @for (message of messageGroup.messages; track message) {\n \n }\n \n }\n
\n
\n
\n","import { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Component, computed, inject, input, Signal } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { MatCardModule } from '@angular/material/card';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { RxState } from '@rx-angular/state';\nimport { ActivityInterface, GetMultiCrmObjectResponseInterface } from '@vendasta/crm';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { combineLatest, firstValueFrom, Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { AVATAR_WIDTH } from '../../../constants';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { CrmObjectService } from '../../../shared-services/crm-services/crm-object-service/crm-object.service';\nimport {\n CrmFieldService,\n StandardExternalIds,\n StandardIds,\n SystemFieldIds,\n} from '../../../shared-services/crm-services/field.service';\nimport { CrmInjectionToken, ObjectType } from '../../../tokens-and-interfaces';\nimport { CollapsibleSectionComponent } from '../../collapsible-section/collapsible-section.component';\nimport { ActivityExtended } from '../timeline/timeline.service';\nimport { GalaxyChatModule } from '@vendasta/galaxy/chat';\nimport { CallTranscriptModalComponent } from './call-transcript-modal.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { parsePhoneNumberFromString } from 'libphonenumber-js';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\n\n@Component({\n selector: 'crm-activity-call',\n templateUrl: './call.component.html',\n styleUrls: ['./call.component.scss'],\n providers: [RxState],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n CollapsibleSectionComponent,\n MatCardModule,\n GalaxyAvatarModule,\n GalaxyPipesModule,\n GalaxyChatModule,\n ],\n})\nexport class CrmActivityCallComponent {\n dateFormat = DateFormat.mediumDateShortTime;\n callRecordingSource$: Observable;\n readonly activity = input.required({});\n readonly associatedObjectId = input('');\n private readonly associatedObjectId$ = toObservable(this.associatedObjectId);\n readonly objectType = input('Contact');\n private readonly objectType$ = toObservable(this.objectType);\n readonly showAvatar = input(true);\n\n associatedCrmObject$ = toObservable(this.activity).pipe(switchMap(() => this.getAssociatedObjectName()));\n associatedCrmObject = toSignal(this.associatedCrmObject$);\n\n private readonly config = inject(CrmInjectionToken);\n\n private readonly breakpointObserver = inject(BreakpointObserver);\n private readonly isExtraSmall = this.breakpointObserver.observe(Breakpoints.XSmall);\n\n private getAssociatedObjectName(): Observable {\n return combineLatest([this.objectType$, this.associatedObjectId$]).pipe(\n switchMap(([objectType, associatedObjectId]) => {\n if (objectType === 'Contact') {\n return this.crmObjectService.getMultiObject('Contact', [associatedObjectId]).pipe(\n map((data: GetMultiCrmObjectResponseInterface) => {\n const crmObject = data?.crmObjects[0];\n const firstName =\n this.fieldService.getFieldValueFromCrmObject(crmObject, StandardExternalIds.FirstName)?.stringValue ||\n '';\n const lastName =\n this.fieldService.getFieldValueFromCrmObject(crmObject, StandardExternalIds.LastName)?.stringValue ||\n '';\n return [firstName, lastName].filter(Boolean).join(' ');\n }),\n );\n }\n if (objectType === 'Company') {\n return this.crmObjectService.getMultiObject('Company', [associatedObjectId]).pipe(\n map((data: GetMultiCrmObjectResponseInterface) => {\n const crmObject = data?.crmObjects[0];\n const companyName =\n this.fieldService.getFieldValueFromCrmObject(crmObject, StandardIds.CompanyName)?.stringValue || '';\n return `${companyName}`;\n }),\n );\n }\n return of('');\n }),\n );\n }\n\n headerText = computed(() => {\n const { direction } = this.cardInfo();\n let directionText = '';\n if (direction === 'Inbound') {\n directionText = `Call from ${this.associatedCrmObject()}`;\n } else if (direction === 'Outbound') {\n directionText = `Call to ${this.associatedCrmObject()}`;\n }\n return directionText;\n });\n\n cardTitle = computed(() => {\n const { status, duration } = this.cardInfo();\n const minutes = Math.floor(duration / 60000);\n const seconds = ((duration % 60000) / 1000).toFixed(0);\n if (status === 'Connected') {\n return `Call for ${minutes} minutes, ${seconds} seconds`;\n }\n return `Call - ${status}`;\n });\n\n ownerName = computed(() => {\n const owner = this.activity()?.ownerUser;\n if (owner) {\n return `${owner?.firstName || ''} ${owner?.lastName || ''}`.trim();\n }\n if (!this.activity().ownerId) {\n const sourceName = this.getStringFieldData(this.activity(), StandardIds.ActivitySourceName);\n if (sourceName) {\n return sourceName;\n }\n }\n return 'Unknown';\n });\n\n cardInfo: Signal = computed(() => {\n const cardInfo: ActivityCardInformation = {\n body: this.getStringFieldData(this.activity(), StandardIds.ActivityCallBody),\n status: this.getStringFieldData(this.activity(), StandardIds.ActivityCallStatus),\n direction: this.getStringFieldData(this.activity(), StandardIds.ActivityCallDirection),\n date:\n this.fieldService.getFieldValueFromCrmObject(this.activity(), SystemFieldIds.ActivityEffectiveDate)\n ?.dateValue ?? null,\n to: this.formatPhoneNumber(this.getStringFieldData(this.activity(), StandardIds.ActivityCallToNumber)),\n from: this.formatPhoneNumber(this.getStringFieldData(this.activity(), StandardIds.ActivityCallFromNumber)),\n duration:\n this.fieldService.getFieldValueFromCrmObject(this.activity(), StandardIds.ActivityCallDuration)?.integerValue ??\n 0,\n transcriptJSON: this.getStringFieldData(this.activity(), StandardIds.ActivityCallTranscript),\n };\n const callRecordingUrl = this.getStringFieldData(this.activity(), StandardIds.ActivityCallRecordingUrl);\n if (callRecordingUrl) {\n cardInfo.callRecordingUrl = callRecordingUrl;\n }\n cardInfo.callRecordId = this.getStringFieldData(this.activity(), StandardIds.ActivityCallRecordId);\n\n return cardInfo;\n });\n\n private getStringFieldData(activity: ActivityInterface, fieldId: string): string {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.stringValue ?? '';\n }\n\n private formatPhoneNumber(phoneNumber: string): string {\n const parsedNumber = parsePhoneNumberFromString(phoneNumber, {\n defaultCountry: 'US',\n });\n return parsedNumber?.formatInternational() || phoneNumber;\n }\n\n async openTranscriptModal() {\n let toName = this.ownerName();\n let fromName = this.associatedCrmObject() || '';\n if (this.cardInfo().direction === 'Inbound') {\n toName = this.associatedCrmObject() || '';\n fromName = this.ownerName();\n }\n\n const [namespace, parentNamespace] = await firstValueFrom(\n combineLatest([this.config.namespace$, this.config.parentNamespace$]),\n );\n const partnerId = parentNamespace ? parentNamespace : namespace;\n const accountGroupId = namespace;\n const dialogRef = this.dialog.open(CallTranscriptModalComponent, {\n width: '950px',\n maxWidth: '100vw',\n maxHeight: '100vh',\n data: {\n partnerId,\n accountGroupId,\n callRecordId: this.cardInfo().callRecordId,\n transcriptJSON: this.cardInfo().transcriptJSON,\n toName: toName || this.cardInfo().to,\n fromName: fromName || this.cardInfo().from,\n },\n });\n\n const smallDialogSubscription = this.isExtraSmall.subscribe((size) => {\n if (size.matches) {\n dialogRef.updateSize('100vw', '100vh');\n } else {\n dialogRef.updateSize('950px', '80%');\n }\n });\n dialogRef.afterClosed().subscribe(() => {\n smallDialogSubscription.unsubscribe();\n });\n }\n\n constructor(\n private readonly fieldService: CrmFieldService,\n private readonly http: HttpClient,\n private readonly crmObjectService: CrmObjectService,\n private readonly dialog: MatDialog,\n ) {\n this.callRecordingSource$ = toObservable(this.cardInfo).pipe(\n switchMap((cardInfo) => {\n if (!cardInfo.callRecordingUrl) {\n return of(null);\n }\n return this.http.get(cardInfo.callRecordingUrl, {\n responseType: 'text',\n withCredentials: true,\n });\n }),\n );\n }\n\n protected readonly AVATAR_WIDTH = AVATAR_WIDTH;\n}\n\ninterface ActivityCardInformation {\n body: string;\n status: string;\n direction: string;\n callRecordId?: string;\n callRecordingUrl?: string;\n date?: Date | null;\n to: string;\n from: string;\n duration: number;\n transcriptJSON: string;\n}\n","
\n \n \n
\n \n
\n \n {{ headerText }}\n \n {{ 'ACTIVITY.UNKNOWN_TITLE' | translate }}\n \n \n \n

\n {{ cardInfo.date | date: dateFormat }}\n

\n
\n
\n \n \n \n {{ cardTitle }}\n \n \n
\n @if (cardInfo.direction === 'Inbound') {\n \n @if (this.associatedCrmObject(); as associatedObject) {\n
\n {{ associatedObject }}\n @if (cardInfo.from) {\n ({{ cardInfo.from }})\n }\n
\n
\n to {{ ownerName() }}\n @if (cardInfo.to) {\n ({{ cardInfo.to }})\n }\n
\n }\n
\n } @else {\n \n
\n {{ ownerName() }}\n @if (cardInfo.to) {\n ({{ cardInfo.to }})\n }\n
\n @if (this.associatedCrmObject(); as associatedObject) {\n
\n to {{ associatedObject }}\n @if (cardInfo.from) {\n ({{ cardInfo.from }})\n }\n
\n }\n
\n }\n
\n
\n @if (cardInfo.body) {\n \n \n \n }\n
\n \n \n \n @if (cardInfo.transcriptJSON) {\n {{\n 'ACTIVITY.CALL.VIEW_TRANSCRIPT' | translate\n }}\n }\n
\n
\n
\n
\n
\n","import { inject, Injectable, Signal, signal, WritableSignal } from '@angular/core';\nimport { ActivityInterface, CRMCustomObjectTypeApiService, CrmObject, CRMOpportunityApiService } from '@vendasta/crm';\nimport { combineLatest, map, Observable, of, startWith, switchMap } from 'rxjs';\nimport { CrmInjectionToken, PrimaryAccountGroupIDForCrmObject, SimplifiedUser } from '../../../tokens-and-interfaces';\nimport { ObjectTypePrefix, PAGE_ROUTES } from '../../../constants';\nimport { CrmFieldService, CrmObjectService, StandardExternalIds, StandardIds } from '../../../shared-services';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { GetMultiCustomObjectTypeRequestInterface } from '@vendasta/crm/lib/_internal/interfaces/custom-objects-type.interface';\nimport { GetMultiCustomObjectTypeResponse } from '@vendasta/crm/lib/_internal/objects';\n\nexport interface ActivityAssociationDisplayInfo {\n name?: string;\n linkUrl?: string;\n objectType?: string;\n objectSubtype?: string;\n}\n\nexport interface ActivityAssociationDisplayInfoGroup {\n objectGroupName: string;\n activityAssociationDisplayInfo: ActivityAssociationDisplayInfo[];\n objectSubtype: string;\n}\n\n@Injectable()\nexport class ActivityAssociationService {\n private _activity: WritableSignal = signal({});\n set activity(activity: ActivityInterface) {\n this._activity.set(activity);\n }\n get activity(): ActivityInterface {\n return this._activity();\n }\n\n companies: Signal;\n contacts: Signal;\n customObjects: Signal;\n customObjectGroups: Signal;\n opportunities: Signal;\n teamMembers: Signal;\n primaryAssociation: Signal;\n numberOfAssociations: Signal;\n\n routePrefix: Signal;\n\n protected readonly config = inject(CrmInjectionToken);\n protected readonly primaryAccountGroupId$ = inject(PrimaryAccountGroupIDForCrmObject);\n protected readonly opportunityService = this.config.services?.opportunityService;\n protected readonly userService = this.config.services?.userService;\n private readonly opportunityApiService = inject(CRMOpportunityApiService);\n\n constructor(\n private readonly fieldService: CrmFieldService,\n private readonly objectService: CrmObjectService,\n private readonly customObjectTypeService: CRMCustomObjectTypeApiService,\n ) {\n this.routePrefix = toSignal(this.config.routePrefix$);\n\n const companies$ = toObservable(this._activity).pipe(\n switchMap((activity) => {\n const ids =\n activity?.associations\n ?.filter((a) => a.crmObjectType == 'Company' && a.crmObjectId)\n .map((a) => {\n return a.crmObjectId;\n }) || [];\n if (!!ids && ids.length > 0) {\n return this.objectService.getMultiObject('Company', ids);\n } else {\n return of(null);\n }\n }),\n map((response) => (response?.crmObjects || []).filter((crmObject) => crmObject?.crmObjectId)),\n map((crmObjects) => {\n return crmObjects.map((o) => {\n return this.newActivityAssociationDisplayInfo(\n this.fieldService.getFieldValueFromCrmObject(o, StandardIds.CompanyName)?.stringValue ?? '-',\n `${PAGE_ROUTES.COMPANY.ROOT}/${PAGE_ROUTES.COMPANY.SUBROUTES.PROFILE}`.replace(\n ':crmObjectId',\n o.crmObjectId || '',\n ),\n 'OBJECT_TYPES.COMPANY',\n );\n });\n }),\n );\n\n this.companies = toSignal(companies$, { initialValue: [] });\n\n const contacts$ = toObservable(this._activity).pipe(\n switchMap((activity) => {\n const ids: string[] =\n activity?.associations\n ?.filter((a) => a.crmObjectType == 'Contact' && a.crmObjectId)\n .map((a) => {\n return a.crmObjectId;\n }) || [];\n if (ids.length > 0) {\n return this.objectService.getMultiObject('Contact', ids);\n } else {\n return of(null);\n }\n }),\n map((response) => (response?.crmObjects || []).filter((crmObject) => crmObject?.crmObjectId)),\n map((crmObjects) => {\n return crmObjects.map((o) => {\n const displayName =\n (this.fieldService.getFieldValueFromCrmObject(o, StandardExternalIds.FirstName)?.stringValue ?? '-') +\n ' ' +\n (this.fieldService.getFieldValueFromCrmObject(o, StandardExternalIds.LastName)?.stringValue ?? ' ');\n return this.newActivityAssociationDisplayInfo(\n displayName,\n `${PAGE_ROUTES.CONTACT.ROOT}/${PAGE_ROUTES.CONTACT.SUBROUTES.PROFILE}`.replace(\n ':crmObjectId',\n o.crmObjectId || '',\n ),\n 'OBJECT_TYPES.CONTACT',\n );\n });\n }),\n );\n\n this.contacts = toSignal(contacts$, { initialValue: [] });\n\n const customObjects$ = toObservable(this._activity).pipe(\n switchMap((activity) => {\n const ids: string[] =\n activity?.associations\n ?.filter((a) => a.crmObjectType == 'CustomObject' && a.crmObjectId)\n .map((a) => {\n return a.crmObjectId;\n }) || [];\n if (ids.length > 0) {\n return this.objectService.getMultiObject('CustomObject', ids);\n } else {\n return of(null);\n }\n }),\n map((response) => (response?.crmObjects || []).filter((crmObject) => crmObject?.crmObjectId)),\n map((crmObjects) => {\n return crmObjects.map((o) => {\n const displayName =\n this.fieldService.getFieldValueFromCrmObject(o, StandardIds.CustomObjectName)?.stringValue ?? '-';\n return this.newActivityAssociationDisplayInfo(\n displayName,\n `${PAGE_ROUTES.CUSTOM_OBJECT.ROOT}/${PAGE_ROUTES.CUSTOM_OBJECT.SUBROUTES.PROFILE}`\n .replace(':customObjectTypeID', o.crmObjectSubtype ?? '')\n .replace(':crmObjectId', o.crmObjectId || ''),\n 'OBJECT_TYPES.CUSTOM_OBJECT',\n o.crmObjectSubtype ?? '',\n );\n });\n }),\n );\n\n this.customObjects = toSignal(customObjects$, { initialValue: [] });\n\n const customObjectGroups$ = combineLatest([toObservable(this.customObjects), this.config.namespace$]).pipe(\n switchMap(([customObjects, namespace]) => {\n const customObjectIds = Array.from(new Set(customObjects.map((o) => o.objectSubtype)));\n if (customObjectIds.length === 0) {\n return of([{} as GetMultiCustomObjectTypeResponse, customObjects] as [\n GetMultiCustomObjectTypeResponse,\n ActivityAssociationDisplayInfo[],\n ]);\n }\n return this.customObjectTypeService\n .getMultiCustomObjectType({\n namespace: namespace,\n customObjectTypeIds: customObjectIds,\n } as GetMultiCustomObjectTypeRequestInterface)\n .pipe(\n map(\n (response) =>\n [response, customObjects] as [GetMultiCustomObjectTypeResponse, ActivityAssociationDisplayInfo[]],\n ),\n );\n }),\n map(([response, customObjects]: [GetMultiCustomObjectTypeResponse, ActivityAssociationDisplayInfo[]]) => {\n const customObjectGroups: ActivityAssociationDisplayInfoGroup[] = [];\n if (!response.customObjectTypes) {\n return customObjectGroups;\n }\n for (const customObjectType of response.customObjectTypes) {\n customObjectGroups.push({\n objectSubtype: customObjectType.customObjectTypeId,\n objectGroupName: customObjectType.pluralObjectName,\n activityAssociationDisplayInfo: [],\n } as ActivityAssociationDisplayInfoGroup);\n }\n for (const customObject of customObjects) {\n const group = customObjectGroups.find((group) => group.objectSubtype === customObject.objectSubtype);\n if (group) {\n group.activityAssociationDisplayInfo.push(customObject);\n }\n }\n return customObjectGroups;\n }),\n );\n\n this.customObjectGroups = toSignal(customObjectGroups$, { initialValue: [] });\n\n const opportunityIds$ = toObservable(this._activity).pipe(\n map(\n (activity) =>\n activity?.associations\n ?.filter((a) => a.crmObjectType == 'Opportunity' && a.crmObjectId)\n .map((a) => a.crmObjectId ?? '') || [],\n ),\n );\n const legacyOpportuynities$ = combineLatest([\n this.primaryAccountGroupId$.pipe(startWith('')),\n opportunityIds$,\n ]).pipe(\n switchMap(([accountGroupId, opportunityIds]) => this.fetchLegacyOpportunities(accountGroupId, opportunityIds)),\n );\n const crmOpportunities$ = opportunityIds$.pipe(\n switchMap((opportunityIds) => this.fetchCrmOpportunities(opportunityIds)),\n );\n\n const opportunities$: Observable = combineLatest([\n crmOpportunities$,\n legacyOpportuynities$,\n ]).pipe(map(([opportunities, legacyOpportuynities]) => opportunities.concat(legacyOpportuynities)));\n\n const primaryAssociation$ = combineLatest([contacts$, companies$]).pipe(\n map(([contacts, companies]) => {\n return contacts.length > 0 ? contacts[0] : companies.length > 0 ? companies[0] : null;\n }),\n );\n this.primaryAssociation = toSignal(primaryAssociation$, { initialValue: null });\n\n this.opportunities = toSignal(opportunities$, { initialValue: [] });\n\n const userIds$: Observable = toObservable(this._activity).pipe(\n switchMap((activity: ActivityInterface) => {\n const ids = activity?.associations\n ?.filter((a) => a.crmObjectType == 'User')\n .map((a) => {\n return a.crmObjectId;\n });\n if (ids && ids.length > 0) {\n return this.userService?.getMultiUsers(ids);\n }\n return of([] as SimplifiedUser[]);\n }),\n map((users: SimplifiedUser[]) => (users || []).filter((user) => user?.userId)),\n map((users) => {\n if (!users) {\n return [];\n }\n return users?.map((o) => {\n return this.newActivityAssociationDisplayInfo(o?.displayName ?? '-', '', '');\n });\n }),\n );\n\n this.teamMembers = toSignal(userIds$, { initialValue: [] });\n\n const associationCount$ = combineLatest([companies$, contacts$, customObjects$, opportunities$, userIds$]).pipe(\n map((associations) => associations.reduce((acc, curr) => acc + curr.length, 0)),\n );\n\n this.numberOfAssociations = toSignal(associationCount$, { initialValue: null });\n }\n\n private newActivityAssociationDisplayInfo(\n name: string,\n link: string,\n objectType: string,\n objectSubtype?: string,\n ): ActivityAssociationDisplayInfo {\n return {\n name: name,\n linkUrl: link,\n objectType: objectType,\n objectSubtype: objectSubtype,\n };\n }\n\n private fetchLegacyOpportunities(\n accountGroupId: string,\n opportunityIds: string[],\n ): Observable {\n const legacyIds = opportunityIds.filter((id) => !id.startsWith(ObjectTypePrefix.Opportunity));\n if (accountGroupId && legacyIds.length > 0 && this.opportunityService) {\n this.opportunityService.setAccountGroupId(accountGroupId);\n return this.opportunityService.getMultiOpportunity(legacyIds).pipe(\n map((response) => {\n if (!response) {\n return [];\n }\n return response.map((o) =>\n this.newActivityAssociationDisplayInfo(o?.name ?? '-', '', 'OBJECT_TYPES.OPPORTUNITY'),\n );\n }),\n );\n }\n return of([]);\n }\n\n private fetchCrmOpportunities(opportunityIds: string[]): Observable {\n const ids = opportunityIds.filter((id) => id.startsWith(ObjectTypePrefix.Opportunity));\n if (ids.length > 0) {\n return this.config.namespace$.pipe(\n switchMap((namespace) => this.opportunityApiService.getMultiOpportunity({ namespace, crmObjectIds: ids })),\n map((response) => response?.crmObjects?.map((o) => this.getOpportunityInfo(o)) ?? []),\n );\n }\n return of([]);\n }\n\n private getOpportunityInfo(crmObject: CrmObject): ActivityAssociationDisplayInfo {\n const name = crmObject.fields.find((f) => f.fieldId === StandardIds.OpportunityName)?.stringValue ?? '-';\n const link = `${PAGE_ROUTES.OPPORTUNITY.ROOT}/${PAGE_ROUTES.OPPORTUNITY.SUBROUTES.PROFILE}`.replace(\n ':crmObjectId',\n crmObject.crmObjectId,\n );\n return this.newActivityAssociationDisplayInfo(name, link, 'OBJECT_TYPES.OPPORTUNITY');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, Input, Signal } from '@angular/core';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { RouterLink } from '@angular/router';\nimport {\n ActivityAssociationDisplayInfo,\n ActivityAssociationDisplayInfoGroup,\n ActivityAssociationService,\n} from './activity-association.service';\nimport { GalaxyPopoverModule, PopoverPositions } from '@vendasta/galaxy/popover';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CrmMultiLocationDependencies, CrmMultilocationInjectionToken } from '../../../tokens-and-interfaces';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { of } from 'rxjs';\n\n@Component({\n selector: 'crm-association-popover',\n templateUrl: './association-popover.component.html',\n styleUrls: ['./association-popover.component.scss'],\n imports: [CommonModule, TranslationModule, RouterLink, GalaxyPopoverModule, MatIconModule],\n})\nexport class CrmActivityAssociationPopoverComponent {\n @Input() set activity(activity: ActivityInterface) {\n this.associationService.activity = activity;\n }\n get activity() {\n return this.associationService.activity;\n }\n\n @Input() hideDivider = false;\n\n popupOpen = {};\n PopoverPositions = PopoverPositions;\n\n companies: Signal = this.associationService.companies;\n contacts: Signal = this.associationService.contacts;\n customObjectGroups: Signal = this.associationService.customObjectGroups;\n opportunities: Signal = this.associationService.opportunities;\n teamMembers: Signal = this.associationService.teamMembers;\n routePrefix: Signal = this.associationService.routePrefix;\n numberOfAssociations: Signal = this.associationService.numberOfAssociations;\n isMultiLocation = toSignal(this.multiLocationConfig.isMultiLocation$ ?? of(false));\n\n constructor(\n @Inject(CrmMultilocationInjectionToken) private readonly multiLocationConfig: CrmMultiLocationDependencies,\n private readonly associationService: ActivityAssociationService,\n ) {}\n\n openPopover(activity: ActivityInterface): void {\n this.popupOpen[activity.crmObjectId] = true;\n }\n}\n","\n\n
0\" class=\"association\">\n
{{ 'ACTIVITY.POPOVER.CONTACTS' | translate }}
\n @for (contact of contacts(); track $index) {\n \n }\n
\n
0\" class=\"association\">\n
{{ 'ACTIVITY.POPOVER.COMPANIES' | translate }}
\n @for (company of companies(); track $index) {\n \n }\n
\n
0\">\n @for (customObjectGroup of customObjectGroups(); track $index) {\n
\n
\n {{ 'OBJECT.TITLE' | translate: { pluralObjectName: customObjectGroup.objectGroupName } }}\n
\n @for (customObject of customObjectGroup.activityAssociationDisplayInfo; track customObject) {\n \n }\n
\n }\n
\n
0\" class=\"association\">\n
{{ 'ACTIVITY.POPOVER.OPPORTUNITIES' | translate }}
\n @for (opportunity of opportunities(); track $index) {\n \n }\n
\n
0\" class=\"association\">\n
{{ 'ACTIVITY.POPOVER.TEAM_MEMBERS' | translate }}
\n @for (member of teamMembers(); track $index) {\n \n }\n
\n\n\n\n @if (item.linkUrl && !isMultiLocation()) {\n \n } @else {\n
{{ item.name }}
\n }\n
\n","export function getActivityUrl(activityUrl: string | undefined): string | null {\n if (!activityUrl) {\n return null;\n }\n\n let urlToCheck = activityUrl;\n if (activityUrl.startsWith('www.')) {\n urlToCheck = 'https://' + activityUrl;\n }\n\n try {\n const url = new URL(urlToCheck);\n if (url.host) {\n return url.toString();\n }\n } catch (e) {\n // ignore\n }\n\n const angularAuxiliaryPathPattern = /\\([a-zA-Z0-9]+:[a-zA-Z0-9/-]+\\)/;\n if (angularAuxiliaryPathPattern.test(activityUrl)) {\n const currentUrl = window.location.protocol + '//' + window.location.host + window.location.pathname;\n return currentUrl + activityUrl;\n }\n\n const host = window.location.protocol + '//' + window.location.host;\n return host + activityUrl;\n}\n","import { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { AVATAR_WIDTH } from '../../../constants';\nimport { TranslationModule } from '../../../i18n/translation-module';\n\nimport { ActivityInterface, GetMultiCrmObjectResponseInterface } from '@vendasta/crm';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, Input, Signal, signal, WritableSignal } from '@angular/core';\nimport { CrmFieldService, StandardIds, SystemFieldIds } from '../../../shared-services/crm-services/field.service';\nimport { MatCardModule } from '@angular/material/card';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\n\nimport { getActivityUrl } from './activity-url-builder';\nimport { SanitizeHtmlPipe } from './sanitize-html.pipe';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { CrmObjectDisplayService, CrmObjectService } from '../../../shared-services';\nimport { ObjectType } from '../../../tokens-and-interfaces';\nimport { ActivityExtended } from '../timeline';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'crm-activity-communication',\n templateUrl: './activity-communication.component.html',\n styleUrls: ['./activity-communication.component.scss'],\n imports: [CommonModule, TranslateModule, TranslationModule, MatCardModule, GalaxyAvatarModule, SanitizeHtmlPipe],\n})\nexport class CrmActivityCommunicationComponent {\n private _activity: WritableSignal = signal({});\n private _objectType: WritableSignal = signal('Contact');\n private _associatedObjectId: WritableSignal = signal('');\n\n @Input() set activity(activity: ActivityInterface) {\n this._activity.set(activity);\n }\n\n get activity() {\n return this._activity();\n }\n\n @Input() set objectType(objectType: ObjectType) {\n this._objectType.set(objectType);\n }\n\n @Input() set associatedObjectId(crmObjectId: string) {\n this._associatedObjectId.set(crmObjectId);\n }\n\n @Input() showAvatar = true;\n\n protected readonly AVATAR_WIDTH = AVATAR_WIDTH;\n protected readonly dateFormat = DateFormat.medium;\n\n associatedCrmObjectName$ = toObservable(this._activity).pipe(switchMap(() => this.getAssociatedObjectName()));\n associatedCrmObjectName = toSignal(this.associatedCrmObjectName$);\n\n constructor(\n private readonly fieldService: CrmFieldService,\n private readonly translateService: TranslateService,\n private readonly crmObjectService: CrmObjectService,\n private readonly objectDisplayService: CrmObjectDisplayService,\n ) {}\n\n cardInfo: Signal = computed(() => {\n return {\n activityName: this.getStringFieldData(this.activity, StandardIds.ActivityName) ?? '',\n sourceName: this.getStringFieldData(this.activity, StandardIds.ActivitySourceName),\n body: this.getStringFieldData(this.activity, StandardIds.ActivityCommunicationBody),\n effectiveDate: this.fieldService.getFieldValueFromCrmObject(this.activity, SystemFieldIds.ActivityEffectiveDate)\n ?.dateValue,\n activityUrl: getActivityUrl(this.getStringFieldData(this.activity, StandardIds.ActivityUrl)),\n activityUrlName: this.getStringFieldData(this.activity, StandardIds.ActivityUrlName) ?? '',\n communicationType: this.getStringFieldData(this.activity, StandardIds.ActivityCommunicationType) ?? '',\n communicationStatus: this.getStringFieldData(this.activity, StandardIds.ActivityCommunicationStatus) ?? '',\n };\n });\n\n headerText = computed(() => {\n const { communicationType, communicationStatus } = this.cardInfo();\n if (communicationType !== 'Campaign SMS') {\n return '';\n }\n const baseText = this.translateService.instant('ACTIVITY_TYPES.COMMUNICATION_SUBTYPES.CAMPAIGN_SMS') + ' ';\n const nameText = this.associatedCrmObjectName() || '';\n const verbText = this.getStatusText(communicationStatus);\n return `${baseText}${verbText}${nameText}`.trim();\n });\n\n private getStatusText(status: string): string {\n switch (status) {\n case 'sent':\n return this.translateService.instant('ACTIVITY.SMS_TITLE.SENT') + ' ';\n case 'delivered':\n return this.translateService.instant('ACTIVITY.SMS_TITLE.DELIVERED') + ' ';\n case 'failed':\n return this.translateService.instant('ACTIVITY.SMS_TITLE.FAILED') + ' ';\n case 'undelivered':\n return this.translateService.instant('ACTIVITY.SMS_TITLE.UNDELIVERED') + ' ';\n default:\n return '';\n }\n }\n\n private getStringFieldData(activity: ActivityInterface, fieldId: string): string {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.stringValue ?? '';\n }\n\n isPhoneCall = computed(() => {\n return this.cardInfo().communicationType === 'phone_call';\n });\n\n isCampaignSMS = computed(() => {\n return this.cardInfo().communicationType === 'Campaign SMS';\n });\n\n getAssociatedObjectName(): Observable {\n const associatedContactID = this.activity?.associations?.find(\n (association) => association?.crmObjectType === 'Contact',\n )?.crmObjectId;\n\n if (associatedContactID) {\n return this.getObjectName(associatedContactID, 'Contact');\n } else {\n return this.useAssociatedObjectID();\n }\n }\n\n useAssociatedObjectID(): Observable {\n if (this.objectType === 'Contact') {\n return this.getObjectName(this.associatedObjectId, 'Contact');\n }\n if (this.objectType === 'Company') {\n return this.getObjectName(this.associatedObjectId, 'Company');\n }\n return of('');\n }\n\n private getObjectName(objectID: string, objectName: ObjectType): Observable {\n return this.crmObjectService.getMultiObject(objectName, [objectID]).pipe(\n map((data: GetMultiCrmObjectResponseInterface) => {\n const crmObject = data?.crmObjects[0];\n return this.objectDisplayService.getObjectDisplayName(objectName, crmObject);\n }),\n );\n }\n}\n\ninterface ActivityCardInfo {\n activityName: string;\n sourceName: string;\n body: string;\n effectiveDate: Date | undefined;\n activityUrl: string | null;\n activityUrlName: string;\n communicationType: string;\n communicationStatus: string;\n}\n","@if (cardInfo()) {\n \n @if (!isCampaignSMS()) {\n \n @if (showAvatar) {\n
\n \n
\n }\n \n @if (cardInfo().body) {\n
\n
\n
\n }\n @if (cardInfo().activityUrl) {\n \n }\n
\n \n @if (cardInfo().effectiveDate) {\n

\n {{ cardInfo().effectiveDate | date: dateFormat }}\n

\n }\n
\n
\n } @else {\n \n @if (showAvatar) {\n
\n \n
\n }\n @if (headerText()) {\n \n {{ headerText() }}\n \n } @else {\n \n {{ 'ACTIVITY.UNKNOWN_TITLE' | translate }}\n \n }\n @if (cardInfo().effectiveDate) {\n \n

\n {{ cardInfo().effectiveDate | date: dateFormat }}\n

\n
\n }\n
\n\n \n \n @if (cardInfo().activityName) {\n \n {{ cardInfo().activityName }}\n \n }\n {{ 'CONTACT.ACTIVITIES.CREATED_FROM' | translate }}\n @if (cardInfo().sourceName) {\n \n \n {{ cardInfo().sourceName }}\n \n \n }\n \n \n }\n
\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input, TemplateRef } from '@angular/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { AVATAR_WIDTH } from '../../../constants';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { RxState } from '@rx-angular/state';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { combineLatest, filter, map, tap } from 'rxjs';\nimport { CrmFieldService, SystemFieldIds } from '../../../shared-services/crm-services/field.service';\nimport { User } from '@vendasta/iamv2';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { CrmUnknownUserAvatarComponent } from '../../unknown-user-avatar/unknown-user-avatar.component';\n\nimport { ActivityAssociationService } from './activity-association.service';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n selector: 'crm-activity-template',\n templateUrl: './activity-template.component.html',\n styleUrls: ['./activity-template.component.scss'],\n providers: [RxState],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n MatCardModule,\n MatIconModule,\n GalaxyAvatarModule,\n CrmUnknownUserAvatarComponent,\n RouterLink,\n ],\n})\nexport class CrmActivityTemplateComponent {\n AVATAR_WIDTH = AVATAR_WIDTH;\n dateFormat = DateFormat.medium;\n\n @Input() set activity(activity: ActivityInterface) {\n this.state.set({ activity: activity });\n }\n get activity() {\n return this.state.get().activity;\n }\n\n @Input() set ownerUser(ownerUser: User | undefined) {\n this.state.set({ ownerUser: ownerUser });\n }\n get ownerUser() {\n return this.state.get().ownerUser;\n }\n\n @Input() set isOwnedByServiceAccount(isOwnedByServiceAccount: boolean) {\n this.state.set({ isOwnedByServiceAccount: isOwnedByServiceAccount });\n }\n get isOwnedByServiceAccount() {\n return this.state.get().isOwnedByServiceAccount;\n }\n\n @Input() set headerText(text: string) {\n this.state.set({ headerText: text });\n }\n get headerText() {\n return this.state.get().headerText;\n }\n\n private _showAvatar = true;\n @Input() set showAvatar(showAvatar: boolean) {\n this._showAvatar = showAvatar;\n }\n get showAvatar() {\n return this._showAvatar;\n }\n\n // if this is set, the fullName will be displayed before the headerText\n // e.g. \"John Doe sent an email\"\n @Input() showFullName = true;\n\n // custom template to render in the subtitle section, replacing the formatted date\n @Input() subtitleTemplate?: TemplateRef;\n\n @Input() showPrimaryAssociation = false;\n\n unknownNamePlaceholder = this.translateService.instant('CONTACT.ACTIVITIES.UNKNOWN_NAME');\n fullName$ = this.state.select('fullName');\n readonly headerText$ = this.state\n .select('activity')\n .pipe(map((activity) => this.headerTextFromActivityType(activity?.crmObjectSubtype)));\n effectiveDate$ = this.state.select('effectiveDate');\n\n showUnknownAvatar$ = combineLatest([\n this.state.select('isUnknownUser'),\n this.state.select('isOwnedByServiceAccount'),\n ]).pipe(map(([isUnknownUser, isOwnedByServiceAccount]) => isUnknownUser || isOwnedByServiceAccount));\n\n profileImageUrl$ = this.state.select('ownerUser').pipe(map((user) => user?.profileImageUrl ?? ''));\n\n private readonly associationService = inject(ActivityAssociationService);\n primaryAssociation = this.associationService.primaryAssociation;\n routePrefix = this.associationService.routePrefix;\n\n constructor(\n private readonly state: RxState,\n private readonly fieldService: CrmFieldService,\n private readonly translateService: TranslateService,\n ) {\n this.state.set({\n isOwnedByServiceAccount: false,\n ownerUser: undefined,\n activity: undefined,\n fullName: this.unknownNamePlaceholder,\n isUnknownUser: false,\n effectiveDate: null,\n });\n\n this.state.connect(\n 'fullName',\n this.state.select('ownerUser').pipe(\n filter((user): user is User => user !== null),\n map((user) => `${user.firstName || ''} ${user.lastName || ''}`.trim()),\n tap((fullName) => this.state.set({ isUnknownUser: fullName === '' })),\n map((fullName) => fullName || this.unknownNamePlaceholder),\n ),\n );\n\n this.state.connect(\n 'effectiveDate',\n this.state\n .select('activity')\n .pipe(\n map(\n (activity) =>\n this.fieldService.getFieldValueFromCrmObject(activity, SystemFieldIds.ActivityEffectiveDate)?.dateValue ??\n null,\n ),\n ),\n );\n }\n\n private headerTextFromActivityType(activityType?: string): string {\n switch (activityType) {\n case 'Note':\n return 'CONTACT.ACTIVITIES.HEADER_ADDITIONAL_TEXT.NOTE';\n case 'Email':\n return 'CONTACT.ACTIVITIES.HEADER_ADDITIONAL_TEXT.LOGGED_EMAIL';\n case 'Call':\n return 'CONTACT.ACTIVITIES.HEADER_ADDITIONAL_TEXT.LOGGED_CALL';\n case 'Meeting':\n return 'CONTACT.ACTIVITIES.HEADER_ADDITIONAL_TEXT.LOGGED_MEETING';\n case 'Task':\n return 'CONTACT.ACTIVITIES.HEADER_ADDITIONAL_TEXT.TASK';\n case 'Communication':\n return 'CONTACT.ACTIVITIES.HEADER_ADDITIONAL_TEXT.LOGGED_COMMUNICATION';\n default:\n return '';\n }\n }\n}\n\ninterface ComponentState {\n isOwnedByServiceAccount: boolean;\n ownerUser?: User;\n\n activity: ActivityInterface;\n\n fullName: string;\n headerText: string;\n isUnknownUser: boolean;\n effectiveDate: Date | null;\n}\n","\n \n \n
\n \n
\n \n \n {{ fullName }}\n {{ headerText | translate }}\n \n \n \n {{ 'OBJECT_TYPES.FOR_LABEL' | translate }} {{ primaryAssociation.objectType || '' | translate }}\n {{ primaryAssociation.name }}\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n
\n\n\n \n\n\n\n

\n {{ effectiveDate | date: dateFormat }}\n

\n
\n\n\n
\n \n
\n
\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[crmActivityTemplateOptions]',\n standalone: true,\n})\nexport class CrmActivityTemplateOptionsDirective {}\n","import * as i0 from '@angular/core';\nimport { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { map, mapTo } from 'rxjs/operators';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar EmailBuilderTemplateFocuses = /*#__PURE__*/function (EmailBuilderTemplateFocuses) {\n EmailBuilderTemplateFocuses[EmailBuilderTemplateFocuses[\"EMAIL_BUILDER_TEMPLATE_FOCUSES_UNSPECIFIED\"] = 0] = \"EMAIL_BUILDER_TEMPLATE_FOCUSES_UNSPECIFIED\";\n EmailBuilderTemplateFocuses[EmailBuilderTemplateFocuses[\"EMAIL_BUILDER_TEMPLATE_FOCUSES_ACQUIRE\"] = 1] = \"EMAIL_BUILDER_TEMPLATE_FOCUSES_ACQUIRE\";\n EmailBuilderTemplateFocuses[EmailBuilderTemplateFocuses[\"EMAIL_BUILDER_TEMPLATE_FOCUSES_UPSELL\"] = 2] = \"EMAIL_BUILDER_TEMPLATE_FOCUSES_UPSELL\";\n EmailBuilderTemplateFocuses[EmailBuilderTemplateFocuses[\"EMAIL_BUILDER_TEMPLATE_FOCUSES_ADOPT\"] = 3] = \"EMAIL_BUILDER_TEMPLATE_FOCUSES_ADOPT\";\n return EmailBuilderTemplateFocuses;\n}(EmailBuilderTemplateFocuses || {});\nvar ImageAlign = /*#__PURE__*/function (ImageAlign) {\n ImageAlign[ImageAlign[\"IMAGE_ALIGN_UNSPECIFIED\"] = 0] = \"IMAGE_ALIGN_UNSPECIFIED\";\n ImageAlign[ImageAlign[\"IMAGE_ALIGN_LEFT\"] = 1] = \"IMAGE_ALIGN_LEFT\";\n ImageAlign[ImageAlign[\"IMAGE_ALIGN_CENTER\"] = 2] = \"IMAGE_ALIGN_CENTER\";\n ImageAlign[ImageAlign[\"IMAGE_ALIGN_RIGHT\"] = 3] = \"IMAGE_ALIGN_RIGHT\";\n return ImageAlign;\n}(ImageAlign || {});\nvar EmailBuilderTemplateStatuses = /*#__PURE__*/function (EmailBuilderTemplateStatuses) {\n EmailBuilderTemplateStatuses[EmailBuilderTemplateStatuses[\"EMAIL_BUILDER_TEMPLATE_STATUSES_UNSPECIFIED\"] = 0] = \"EMAIL_BUILDER_TEMPLATE_STATUSES_UNSPECIFIED\";\n EmailBuilderTemplateStatuses[EmailBuilderTemplateStatuses[\"EMAIL_BUILDER_TEMPLATE_STATUSES_DRAFT\"] = 1] = \"EMAIL_BUILDER_TEMPLATE_STATUSES_DRAFT\";\n EmailBuilderTemplateStatuses[EmailBuilderTemplateStatuses[\"EMAIL_BUILDER_TEMPLATE_STATUSES_PUBLISHED\"] = 2] = \"EMAIL_BUILDER_TEMPLATE_STATUSES_PUBLISHED\";\n EmailBuilderTemplateStatuses[EmailBuilderTemplateStatuses[\"EMAIL_BUILDER_TEMPLATE_STATUSES_ACTIVE\"] = 3] = \"EMAIL_BUILDER_TEMPLATE_STATUSES_ACTIVE\";\n EmailBuilderTemplateStatuses[EmailBuilderTemplateStatuses[\"EMAIL_BUILDER_TEMPLATE_STATUSES_ARCHIVED\"] = 4] = \"EMAIL_BUILDER_TEMPLATE_STATUSES_ARCHIVED\";\n return EmailBuilderTemplateStatuses;\n}(EmailBuilderTemplateStatuses || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar DateDefault = /*#__PURE__*/function (DateDefault) {\n DateDefault[DateDefault[\"DATE_DEFAULT_INVALID\"] = 0] = \"DATE_DEFAULT_INVALID\";\n DateDefault[DateDefault[\"DATE_DEFAULT_TODAY\"] = 1] = \"DATE_DEFAULT_TODAY\";\n DateDefault[DateDefault[\"DATE_DEFAULT_YESTERDAY\"] = 2] = \"DATE_DEFAULT_YESTERDAY\";\n DateDefault[DateDefault[\"DATE_DEFAULT_TOMORROW\"] = 3] = \"DATE_DEFAULT_TOMORROW\";\n DateDefault[DateDefault[\"DATE_DEFAULT_THIS_WEEK\"] = 4] = \"DATE_DEFAULT_THIS_WEEK\";\n DateDefault[DateDefault[\"DATE_DEFAULT_LAST_WEEK\"] = 5] = \"DATE_DEFAULT_LAST_WEEK\";\n DateDefault[DateDefault[\"DATE_DEFAULT_NEXT_WEEK\"] = 6] = \"DATE_DEFAULT_NEXT_WEEK\";\n DateDefault[DateDefault[\"DATE_DEFAULT_THIS_MONTH\"] = 7] = \"DATE_DEFAULT_THIS_MONTH\";\n DateDefault[DateDefault[\"DATE_DEFAULT_LAST_MONTH\"] = 8] = \"DATE_DEFAULT_LAST_MONTH\";\n DateDefault[DateDefault[\"DATE_DEFAULT_NEXT_MONTH\"] = 9] = \"DATE_DEFAULT_NEXT_MONTH\";\n DateDefault[DateDefault[\"DATE_DEFAULT_THIS_QUARTER\"] = 10] = \"DATE_DEFAULT_THIS_QUARTER\";\n DateDefault[DateDefault[\"DATE_DEFAULT_LAST_QUARTER\"] = 11] = \"DATE_DEFAULT_LAST_QUARTER\";\n DateDefault[DateDefault[\"DATE_DEFAULT_NEXT_QUARTER\"] = 12] = \"DATE_DEFAULT_NEXT_QUARTER\";\n DateDefault[DateDefault[\"DATE_DEFAULT_THIS_YEAR\"] = 13] = \"DATE_DEFAULT_THIS_YEAR\";\n DateDefault[DateDefault[\"DATE_DEFAULT_LAST_YEAR\"] = 14] = \"DATE_DEFAULT_LAST_YEAR\";\n DateDefault[DateDefault[\"DATE_DEFAULT_NEXT_YEAR\"] = 15] = \"DATE_DEFAULT_NEXT_YEAR\";\n return DateDefault;\n}(DateDefault || {});\nvar FilterGroupOperator = /*#__PURE__*/function (FilterGroupOperator) {\n FilterGroupOperator[FilterGroupOperator[\"FILTER_GROUP_OPERATOR_INVALID\"] = 0] = \"FILTER_GROUP_OPERATOR_INVALID\";\n FilterGroupOperator[FilterGroupOperator[\"FILTER_GROUP_OPERATOR_AND\"] = 1] = \"FILTER_GROUP_OPERATOR_AND\";\n FilterGroupOperator[FilterGroupOperator[\"FILTER_GROUP_OPERATOR_OR\"] = 2] = \"FILTER_GROUP_OPERATOR_OR\";\n return FilterGroupOperator;\n}(FilterGroupOperator || {});\nvar FilterOperator = /*#__PURE__*/function (FilterOperator) {\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_INVALID\"] = 0] = \"FILTER_OPERATOR_INVALID\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_EMPTY\"] = 1] = \"FILTER_OPERATOR_IS_EMPTY\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_NOT_EMPTY\"] = 2] = \"FILTER_OPERATOR_IS_NOT_EMPTY\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS\"] = 3] = \"FILTER_OPERATOR_IS\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_NOT\"] = 4] = \"FILTER_OPERATOR_IS_NOT\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_ANY\"] = 5] = \"FILTER_OPERATOR_IS_ANY\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_NOT_ANY\"] = 6] = \"FILTER_OPERATOR_IS_NOT_ANY\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_ALL\"] = 7] = \"FILTER_OPERATOR_IS_ALL\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_NOT_ALL\"] = 8] = \"FILTER_OPERATOR_IS_NOT_ALL\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_CONTAINS\"] = 9] = \"FILTER_OPERATOR_CONTAINS\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_DOES_NOT_CONTAIN\"] = 10] = \"FILTER_OPERATOR_DOES_NOT_CONTAIN\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_EQUAL_TO\"] = 11] = \"FILTER_OPERATOR_IS_EQUAL_TO\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_NOT_EQUAL_TO\"] = 12] = \"FILTER_OPERATOR_IS_NOT_EQUAL_TO\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_GREATER_THAN\"] = 13] = \"FILTER_OPERATOR_IS_GREATER_THAN\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_GREATER_THAN_OR_EQUAL_TO\"] = 14] = \"FILTER_OPERATOR_IS_GREATER_THAN_OR_EQUAL_TO\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_LESS_THAN\"] = 15] = \"FILTER_OPERATOR_IS_LESS_THAN\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_LESS_THAN_OR_EQUAL_TO\"] = 16] = \"FILTER_OPERATOR_IS_LESS_THAN_OR_EQUAL_TO\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_BEFORE\"] = 17] = \"FILTER_OPERATOR_IS_BEFORE\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_BEFORE_OR_ON\"] = 18] = \"FILTER_OPERATOR_IS_BEFORE_OR_ON\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_AFTER\"] = 19] = \"FILTER_OPERATOR_IS_AFTER\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_AFTER_OR_ON\"] = 20] = \"FILTER_OPERATOR_IS_AFTER_OR_ON\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_BETWEEN\"] = 21] = \"FILTER_OPERATOR_IS_BETWEEN\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_NOT_BETWEEN\"] = 22] = \"FILTER_OPERATOR_IS_NOT_BETWEEN\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_VALID\"] = 23] = \"FILTER_OPERATOR_IS_VALID\";\n FilterOperator[FilterOperator[\"FILTER_OPERATOR_IS_NOT_VALID\"] = 24] = \"FILTER_OPERATOR_IS_NOT_VALID\";\n return FilterOperator;\n}(FilterOperator || {});\nvar FilterType = /*#__PURE__*/function (FilterType) {\n FilterType[FilterType[\"FILTER_TYPE_INVALID\"] = 0] = \"FILTER_TYPE_INVALID\";\n FilterType[FilterType[\"FILTER_TYPE_STRING\"] = 1] = \"FILTER_TYPE_STRING\";\n FilterType[FilterType[\"FILTER_TYPE_INTEGER\"] = 2] = \"FILTER_TYPE_INTEGER\";\n FilterType[FilterType[\"FILTER_TYPE_DATE\"] = 3] = \"FILTER_TYPE_DATE\";\n FilterType[FilterType[\"FILTER_TYPE_FLOAT\"] = 4] = \"FILTER_TYPE_FLOAT\";\n FilterType[FilterType[\"FILTER_TYPE_BOOLEAN\"] = 5] = \"FILTER_TYPE_BOOLEAN\";\n FilterType[FilterType[\"FILTER_TYPE_TAG\"] = 6] = \"FILTER_TYPE_TAG\";\n FilterType[FilterType[\"FILTER_TYPE_PHONE\"] = 8] = \"FILTER_TYPE_PHONE\";\n return FilterType;\n}(FilterType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar AsyncWorkStatus = /*#__PURE__*/function (AsyncWorkStatus) {\n AsyncWorkStatus[AsyncWorkStatus[\"ASYNC_WORK_STATUS_INVALID\"] = 0] = \"ASYNC_WORK_STATUS_INVALID\";\n AsyncWorkStatus[AsyncWorkStatus[\"ASYNC_WORK_STATUS_IN_PROGRESS\"] = 1] = \"ASYNC_WORK_STATUS_IN_PROGRESS\";\n AsyncWorkStatus[AsyncWorkStatus[\"ASYNC_WORK_STATUS_COMPLETE\"] = 2] = \"ASYNC_WORK_STATUS_COMPLETE\";\n AsyncWorkStatus[AsyncWorkStatus[\"ASYNC_WORK_STATUS_ERROR\"] = 3] = \"ASYNC_WORK_STATUS_ERROR\";\n return AsyncWorkStatus;\n}(AsyncWorkStatus || {});\nvar CampaignQuotaCategory = /*#__PURE__*/function (CampaignQuotaCategory) {\n CampaignQuotaCategory[CampaignQuotaCategory[\"CAMPAIGN_QUOTA_TYPE_INVALID\"] = 0] = \"CAMPAIGN_QUOTA_TYPE_INVALID\";\n CampaignQuotaCategory[CampaignQuotaCategory[\"CAMPAIGN_QUOTA_TYPE_EMAIL\"] = 1] = \"CAMPAIGN_QUOTA_TYPE_EMAIL\";\n CampaignQuotaCategory[CampaignQuotaCategory[\"CAMPAIGN_QUOTA_TYPE_SMS\"] = 2] = \"CAMPAIGN_QUOTA_TYPE_SMS\";\n return CampaignQuotaCategory;\n}(CampaignQuotaCategory || {});\nvar CampaignScheduleStatus = /*#__PURE__*/function (CampaignScheduleStatus) {\n CampaignScheduleStatus[CampaignScheduleStatus[\"CAMPAIGN_SCHEDULE_STATUS_UNSPECIFIED\"] = 0] = \"CAMPAIGN_SCHEDULE_STATUS_UNSPECIFIED\";\n CampaignScheduleStatus[CampaignScheduleStatus[\"CAMPAIGN_SCHEDULE_STATUS_ACTIVE\"] = 1] = \"CAMPAIGN_SCHEDULE_STATUS_ACTIVE\";\n CampaignScheduleStatus[CampaignScheduleStatus[\"CAMPAIGN_SCHEDULE_STATUS_WAITING_ON_RATE_LIMIT\"] = 2] = \"CAMPAIGN_SCHEDULE_STATUS_WAITING_ON_RATE_LIMIT\";\n CampaignScheduleStatus[CampaignScheduleStatus[\"CAMPAIGN_SCHEDULE_STATUS_STOPPED\"] = 3] = \"CAMPAIGN_SCHEDULE_STATUS_STOPPED\";\n CampaignScheduleStatus[CampaignScheduleStatus[\"CAMPAIGN_SCHEDULE_STATUS_COMPLETED\"] = 4] = \"CAMPAIGN_SCHEDULE_STATUS_COMPLETED\";\n return CampaignScheduleStatus;\n}(CampaignScheduleStatus || {});\nvar CampaignState = /*#__PURE__*/function (CampaignState) {\n CampaignState[CampaignState[\"CAMPAIGN_STATE_UNSPECIFIED\"] = 0] = \"CAMPAIGN_STATE_UNSPECIFIED\";\n CampaignState[CampaignState[\"CAMPAIGN_STATE_ACTIVE\"] = 1] = \"CAMPAIGN_STATE_ACTIVE\";\n CampaignState[CampaignState[\"CAMPAIGN_STATE_IDLE\"] = 2] = \"CAMPAIGN_STATE_IDLE\";\n return CampaignState;\n}(CampaignState || {});\nvar CampaignStepEventType = /*#__PURE__*/function (CampaignStepEventType) {\n CampaignStepEventType[CampaignStepEventType[\"CAMPAIGN_STEP_EVENT_TYPE_UNSPECIFIED\"] = 0] = \"CAMPAIGN_STEP_EVENT_TYPE_UNSPECIFIED\";\n CampaignStepEventType[CampaignStepEventType[\"CAMPAIGN_STEP_EVENT_TYPE_PROCESSED\"] = 1] = \"CAMPAIGN_STEP_EVENT_TYPE_PROCESSED\";\n CampaignStepEventType[CampaignStepEventType[\"CAMPAIGN_STEP_EVENT_TYPE_DROPPED\"] = 2] = \"CAMPAIGN_STEP_EVENT_TYPE_DROPPED\";\n CampaignStepEventType[CampaignStepEventType[\"CAMPAIGN_STEP_EVENT_TYPE_DELIVERED\"] = 3] = \"CAMPAIGN_STEP_EVENT_TYPE_DELIVERED\";\n CampaignStepEventType[CampaignStepEventType[\"CAMPAIGN_STEP_EVENT_TYPE_DEFERRED\"] = 4] = \"CAMPAIGN_STEP_EVENT_TYPE_DEFERRED\";\n CampaignStepEventType[CampaignStepEventType[\"CAMPAIGN_STEP_EVENT_TYPE_BOUNCE\"] = 5] = \"CAMPAIGN_STEP_EVENT_TYPE_BOUNCE\";\n CampaignStepEventType[CampaignStepEventType[\"CAMPAIGN_STEP_EVENT_TYPE_OPEN\"] = 6] = \"CAMPAIGN_STEP_EVENT_TYPE_OPEN\";\n CampaignStepEventType[CampaignStepEventType[\"CAMPAIGN_STEP_EVENT_TYPE_CLICK\"] = 7] = \"CAMPAIGN_STEP_EVENT_TYPE_CLICK\";\n CampaignStepEventType[CampaignStepEventType[\"CAMPAIGN_STEP_EVENT_TYPE_SPAM_REPORT\"] = 8] = \"CAMPAIGN_STEP_EVENT_TYPE_SPAM_REPORT\";\n CampaignStepEventType[CampaignStepEventType[\"CAMPAIGN_STEP_EVENT_TYPE_UNSUBSCRIBE\"] = 9] = \"CAMPAIGN_STEP_EVENT_TYPE_UNSUBSCRIBE\";\n CampaignStepEventType[CampaignStepEventType[\"CAMPAIGN_STEP_EVENT_TYPE_CREATED\"] = 10] = \"CAMPAIGN_STEP_EVENT_TYPE_CREATED\";\n CampaignStepEventType[CampaignStepEventType[\"CAMPAIGN_STEP_EVENT_TYPE_NOT_REQUIRED\"] = 11] = \"CAMPAIGN_STEP_EVENT_TYPE_NOT_REQUIRED\";\n CampaignStepEventType[CampaignStepEventType[\"CAMPAIGN_STEP_EVENT_TYPE_REFRESHED\"] = 12] = \"CAMPAIGN_STEP_EVENT_TYPE_REFRESHED\";\n return CampaignStepEventType;\n}(CampaignStepEventType || {});\nvar CampaignStepSendStatusType = /*#__PURE__*/function (CampaignStepSendStatusType) {\n CampaignStepSendStatusType[CampaignStepSendStatusType[\"CAMPAIGN_STEP_SEND_STATUS_TYPE_UNSPECIFIED\"] = 0] = \"CAMPAIGN_STEP_SEND_STATUS_TYPE_UNSPECIFIED\";\n CampaignStepSendStatusType[CampaignStepSendStatusType[\"CAMPAIGN_STEP_SEND_STATUS_TYPE_UNSENT\"] = 1] = \"CAMPAIGN_STEP_SEND_STATUS_TYPE_UNSENT\";\n CampaignStepSendStatusType[CampaignStepSendStatusType[\"CAMPAIGN_STEP_SEND_STATUS_TYPE_QUEUED\"] = 2] = \"CAMPAIGN_STEP_SEND_STATUS_TYPE_QUEUED\";\n CampaignStepSendStatusType[CampaignStepSendStatusType[\"CAMPAIGN_STEP_SEND_STATUS_TYPE_SENDING\"] = 3] = \"CAMPAIGN_STEP_SEND_STATUS_TYPE_SENDING\";\n CampaignStepSendStatusType[CampaignStepSendStatusType[\"CAMPAIGN_STEP_SEND_STATUS_TYPE_SENT\"] = 4] = \"CAMPAIGN_STEP_SEND_STATUS_TYPE_SENT\";\n return CampaignStepSendStatusType;\n}(CampaignStepSendStatusType || {});\nvar CampaignStepType = /*#__PURE__*/function (CampaignStepType) {\n CampaignStepType[CampaignStepType[\"CAMPAIGN_STEP_TYPE_UNSPECIFIED\"] = 0] = \"CAMPAIGN_STEP_TYPE_UNSPECIFIED\";\n CampaignStepType[CampaignStepType[\"CAMPAIGN_STEP_TYPE_EMAIL\"] = 1] = \"CAMPAIGN_STEP_TYPE_EMAIL\";\n CampaignStepType[CampaignStepType[\"CAMPAIGN_STEP_TYPE_SNAPSHOT_CREATION\"] = 2] = \"CAMPAIGN_STEP_TYPE_SNAPSHOT_CREATION\";\n CampaignStepType[CampaignStepType[\"CAMPAIGN_STEP_TYPE_SMS\"] = 3] = \"CAMPAIGN_STEP_TYPE_SMS\";\n return CampaignStepType;\n}(CampaignStepType || {});\nvar ContactType = /*#__PURE__*/function (ContactType) {\n ContactType[ContactType[\"CONTACT_TYPE_INVALID\"] = 0] = \"CONTACT_TYPE_INVALID\";\n ContactType[ContactType[\"CONTACT_TYPE_EMAIL\"] = 1] = \"CONTACT_TYPE_EMAIL\";\n return ContactType;\n}(ContactType || {});\nvar DaysOfTheWeek = /*#__PURE__*/function (DaysOfTheWeek) {\n DaysOfTheWeek[DaysOfTheWeek[\"DAYS_OF_THE_WEEK_MONDAY\"] = 0] = \"DAYS_OF_THE_WEEK_MONDAY\";\n DaysOfTheWeek[DaysOfTheWeek[\"DAYS_OF_THE_WEEK_TUESDAY\"] = 1] = \"DAYS_OF_THE_WEEK_TUESDAY\";\n DaysOfTheWeek[DaysOfTheWeek[\"DAYS_OF_THE_WEEK_WEDNESDAY\"] = 2] = \"DAYS_OF_THE_WEEK_WEDNESDAY\";\n DaysOfTheWeek[DaysOfTheWeek[\"DAYS_OF_THE_WEEK_THURSDAY\"] = 3] = \"DAYS_OF_THE_WEEK_THURSDAY\";\n DaysOfTheWeek[DaysOfTheWeek[\"DAYS_OF_THE_WEEK_FRIDAY\"] = 4] = \"DAYS_OF_THE_WEEK_FRIDAY\";\n DaysOfTheWeek[DaysOfTheWeek[\"DAYS_OF_THE_WEEK_SATURDAY\"] = 5] = \"DAYS_OF_THE_WEEK_SATURDAY\";\n DaysOfTheWeek[DaysOfTheWeek[\"DAYS_OF_THE_WEEK_SUNDAY\"] = 6] = \"DAYS_OF_THE_WEEK_SUNDAY\";\n return DaysOfTheWeek;\n}(DaysOfTheWeek || {});\nvar DeletedTagsPolicy = /*#__PURE__*/function (DeletedTagsPolicy) {\n DeletedTagsPolicy[DeletedTagsPolicy[\"DELETED_TAGS_POLICY_EXCLUDE_FROM_RESPONSE\"] = 0] = \"DELETED_TAGS_POLICY_EXCLUDE_FROM_RESPONSE\";\n return DeletedTagsPolicy;\n}(DeletedTagsPolicy || {});\nvar DuplicateCampaignStepStatus = /*#__PURE__*/function (DuplicateCampaignStepStatus) {\n DuplicateCampaignStepStatus[DuplicateCampaignStepStatus[\"DUPLICATE_CAMPAIGN_STEP_STATUS_INVALID\"] = 0] = \"DUPLICATE_CAMPAIGN_STEP_STATUS_INVALID\";\n DuplicateCampaignStepStatus[DuplicateCampaignStepStatus[\"DUPLICATE_CAMPAIGN_STEP_STATUS_IN_PROGRESS\"] = 1] = \"DUPLICATE_CAMPAIGN_STEP_STATUS_IN_PROGRESS\";\n DuplicateCampaignStepStatus[DuplicateCampaignStepStatus[\"DUPLICATE_CAMPAIGN_STEP_STATUS_COMPLETE\"] = 2] = \"DUPLICATE_CAMPAIGN_STEP_STATUS_COMPLETE\";\n return DuplicateCampaignStepStatus;\n}(DuplicateCampaignStepStatus || {});\nvar Feature = /*#__PURE__*/function (Feature) {\n Feature[Feature[\"SEND_UNKNOWN\"] = 0] = \"SEND_UNKNOWN\";\n Feature[Feature[\"SEND_SMS\"] = 1] = \"SEND_SMS\";\n Feature[Feature[\"SEND_EMAIL\"] = 2] = \"SEND_EMAIL\";\n Feature[Feature[\"SEND_SNAPSHOT\"] = 3] = \"SEND_SNAPSHOT\";\n Feature[Feature[\"SEND_EMAIL_ADDONS\"] = 4] = \"SEND_EMAIL_ADDONS\";\n return Feature;\n}(Feature || {});\nvar Focuses = /*#__PURE__*/function (Focuses) {\n Focuses[Focuses[\"FOCUSES_UNSPECIFIED\"] = 0] = \"FOCUSES_UNSPECIFIED\";\n Focuses[Focuses[\"FOCUSES_ACQUIRE\"] = 1] = \"FOCUSES_ACQUIRE\";\n Focuses[Focuses[\"FOCUSES_UPSELL\"] = 2] = \"FOCUSES_UPSELL\";\n Focuses[Focuses[\"FOCUSES_ADOPT\"] = 3] = \"FOCUSES_ADOPT\";\n Focuses[Focuses[\"FOCUSES_NONE\"] = 4] = \"FOCUSES_NONE\";\n return Focuses;\n}(Focuses || {});\nvar Period = /*#__PURE__*/function (Period) {\n Period[Period[\"PERIOD_INVALID\"] = 0] = \"PERIOD_INVALID\";\n Period[Period[\"PERIOD_MONTH\"] = 1] = \"PERIOD_MONTH\";\n return Period;\n}(Period || {});\nvar RecipientCampaignStatus = /*#__PURE__*/function (RecipientCampaignStatus) {\n RecipientCampaignStatus[RecipientCampaignStatus[\"RECIPIENT_CAMPAIGN_STATUS_UNSPECIFIED\"] = 0] = \"RECIPIENT_CAMPAIGN_STATUS_UNSPECIFIED\";\n RecipientCampaignStatus[RecipientCampaignStatus[\"RECIPIENT_CAMPAIGN_STATUS_ACTIVE\"] = 1] = \"RECIPIENT_CAMPAIGN_STATUS_ACTIVE\";\n RecipientCampaignStatus[RecipientCampaignStatus[\"RECIPIENT_CAMPAIGN_STATUS_PAUSED\"] = 2] = \"RECIPIENT_CAMPAIGN_STATUS_PAUSED\";\n RecipientCampaignStatus[RecipientCampaignStatus[\"RECIPIENT_CAMPAIGN_STATUS_COMPLETED\"] = 3] = \"RECIPIENT_CAMPAIGN_STATUS_COMPLETED\";\n return RecipientCampaignStatus;\n}(RecipientCampaignStatus || {});\nvar RecipientType = /*#__PURE__*/function (RecipientType) {\n RecipientType[RecipientType[\"RECIPIENT_TYPE_INVALID\"] = 0] = \"RECIPIENT_TYPE_INVALID\";\n RecipientType[RecipientType[\"RECIPIENT_TYPE_CRM_CONTACT\"] = 1] = \"RECIPIENT_TYPE_CRM_CONTACT\";\n RecipientType[RecipientType[\"RECIPIENT_TYPE_BUSINESS\"] = 2] = \"RECIPIENT_TYPE_BUSINESS\";\n return RecipientType;\n}(RecipientType || {});\nvar SenderType = /*#__PURE__*/function (SenderType) {\n SenderType[SenderType[\"SENDER_TYPE_INVALID\"] = 0] = \"SENDER_TYPE_INVALID\";\n SenderType[SenderType[\"SENDER_TYPE_PARTNER\"] = 1] = \"SENDER_TYPE_PARTNER\";\n SenderType[SenderType[\"SENDER_TYPE_BUSINESS\"] = 2] = \"SENDER_TYPE_BUSINESS\";\n return SenderType;\n}(SenderType || {});\nvar SortDirection = /*#__PURE__*/function (SortDirection) {\n SortDirection[SortDirection[\"SORT_ORDER_INVALID\"] = 0] = \"SORT_ORDER_INVALID\";\n SortDirection[SortDirection[\"SORT_ORDER_ASCENDING\"] = 1] = \"SORT_ORDER_ASCENDING\";\n SortDirection[SortDirection[\"SORT_ORDER_DESCENDING\"] = 2] = \"SORT_ORDER_DESCENDING\";\n return SortDirection;\n}(SortDirection || {});\nvar SortField = /*#__PURE__*/function (SortField) {\n SortField[SortField[\"SORT_FIELDS_INVALID\"] = 0] = \"SORT_FIELDS_INVALID\";\n SortField[SortField[\"SORT_FIELDS_NAME\"] = 1] = \"SORT_FIELDS_NAME\";\n SortField[SortField[\"SORT_FIELDS_CREATED_AT\"] = 2] = \"SORT_FIELDS_CREATED_AT\";\n SortField[SortField[\"SORT_FIELDS_UPDATED_AT\"] = 3] = \"SORT_FIELDS_UPDATED_AT\";\n return SortField;\n}(SortField || {});\nvar Statuses = /*#__PURE__*/function (Statuses) {\n Statuses[Statuses[\"STATUSES_UNSPECIFIED\"] = 0] = \"STATUSES_UNSPECIFIED\";\n Statuses[Statuses[\"STATUSES_DRAFT\"] = 1] = \"STATUSES_DRAFT\";\n Statuses[Statuses[\"STATUSES_PUBLISHED\"] = 2] = \"STATUSES_PUBLISHED\";\n Statuses[Statuses[\"STATUSES_ACTIVE\"] = 3] = \"STATUSES_ACTIVE\";\n Statuses[Statuses[\"STATUSES_ARCHIVED\"] = 4] = \"STATUSES_ARCHIVED\";\n return Statuses;\n}(Statuses || {});\nvar TemplateStatus = /*#__PURE__*/function (TemplateStatus) {\n TemplateStatus[TemplateStatus[\"TEMPLATE_STATUS_INVALID\"] = 0] = \"TEMPLATE_STATUS_INVALID\";\n TemplateStatus[TemplateStatus[\"TEMPLATE_STATUS_DRAFT\"] = 1] = \"TEMPLATE_STATUS_DRAFT\";\n TemplateStatus[TemplateStatus[\"TEMPLATE_STATUS_PUBLISHED\"] = 2] = \"TEMPLATE_STATUS_PUBLISHED\";\n return TemplateStatus;\n}(TemplateStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$4(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Colors {\n static fromProto(proto) {\n let m = new Colors();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.textColor !== 'undefined') {\n toReturn['textColor'] = this.textColor;\n }\n if (typeof this.titleColor !== 'undefined') {\n toReturn['titleColor'] = this.titleColor;\n }\n if (typeof this.subtitleColor !== 'undefined') {\n toReturn['subtitleColor'] = this.subtitleColor;\n }\n if (typeof this.linkColor !== 'undefined') {\n toReturn['linkColor'] = this.linkColor;\n }\n if (typeof this.footerTextColor !== 'undefined') {\n toReturn['footerTextColor'] = this.footerTextColor;\n }\n if (typeof this.textBackground !== 'undefined') {\n toReturn['textBackground'] = this.textBackground;\n }\n if (typeof this.pageBackground !== 'undefined') {\n toReturn['pageBackground'] = this.pageBackground;\n }\n return toReturn;\n }\n}\nclass EmailBuilderConfiguration {\n static fromProto(proto) {\n let m = new EmailBuilderConfiguration();\n m = Object.assign(m, proto);\n if (proto.googleAnalyticsOptions) {\n m.googleAnalyticsOptions = GoogleAnalyticsOptions.fromProto(proto.googleAnalyticsOptions);\n }\n if (proto.pageSetup) {\n m.pageSetup = PageSetup.fromProto(proto.pageSetup);\n }\n if (proto.topLogo) {\n m.topLogo = TopLogo.fromProto(proto.topLogo);\n }\n if (proto.footer) {\n m.footer = Footer.fromProto(proto.footer);\n }\n if (proto.colors) {\n m.colors = Colors.fromProto(proto.colors);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.googleAnalyticsOptions !== 'undefined' && this.googleAnalyticsOptions !== null) {\n toReturn['googleAnalyticsOptions'] = 'toApiJson' in this.googleAnalyticsOptions ? this.googleAnalyticsOptions.toApiJson() : this.googleAnalyticsOptions;\n }\n if (typeof this.pageSetup !== 'undefined' && this.pageSetup !== null) {\n toReturn['pageSetup'] = 'toApiJson' in this.pageSetup ? this.pageSetup.toApiJson() : this.pageSetup;\n }\n if (typeof this.topLogo !== 'undefined' && this.topLogo !== null) {\n toReturn['topLogo'] = 'toApiJson' in this.topLogo ? this.topLogo.toApiJson() : this.topLogo;\n }\n if (typeof this.footer !== 'undefined' && this.footer !== null) {\n toReturn['footer'] = 'toApiJson' in this.footer ? this.footer.toApiJson() : this.footer;\n }\n if (typeof this.contentBlocks !== 'undefined') {\n toReturn['contentBlocks'] = this.contentBlocks;\n }\n if (typeof this.colors !== 'undefined' && this.colors !== null) {\n toReturn['colors'] = 'toApiJson' in this.colors ? this.colors.toApiJson() : this.colors;\n }\n return toReturn;\n }\n}\nclass EmailBuilderTemplate {\n static fromProto(proto) {\n let m = new EmailBuilderTemplate();\n m = Object.assign(m, proto);\n if (proto.emailBuilderConfiguration) {\n m.emailBuilderConfiguration = EmailBuilderConfiguration.fromProto(proto.emailBuilderConfiguration);\n }\n if (proto.campaignFocus) {\n m.campaignFocus = enumStringToValue$4(EmailBuilderTemplateFocuses, proto.campaignFocus);\n }\n if (proto.status) {\n m.status = enumStringToValue$4(EmailBuilderTemplateStatuses, proto.status);\n }\n if (proto.parent) {\n m.parent = TemplateReference.fromProto(proto.parent);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.subjectLine !== 'undefined') {\n toReturn['subjectLine'] = this.subjectLine;\n }\n if (typeof this.previewText !== 'undefined') {\n toReturn['previewText'] = this.previewText;\n }\n if (typeof this.lastModifiedBy !== 'undefined') {\n toReturn['lastModifiedBy'] = this.lastModifiedBy;\n }\n if (typeof this.emailBuilderConfiguration !== 'undefined' && this.emailBuilderConfiguration !== null) {\n toReturn['emailBuilderConfiguration'] = 'toApiJson' in this.emailBuilderConfiguration ? this.emailBuilderConfiguration.toApiJson() : this.emailBuilderConfiguration;\n }\n if (typeof this.createdBy !== 'undefined') {\n toReturn['createdBy'] = this.createdBy;\n }\n if (typeof this.campaignFocus !== 'undefined') {\n toReturn['campaignFocus'] = this.campaignFocus;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.isEditable !== 'undefined') {\n toReturn['isEditable'] = this.isEditable;\n }\n if (typeof this.parent !== 'undefined' && this.parent !== null) {\n toReturn['parent'] = 'toApiJson' in this.parent ? this.parent.toApiJson() : this.parent;\n }\n return toReturn;\n }\n}\nclass Footer {\n static fromProto(proto) {\n let m = new Footer();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.disclaimer !== 'undefined') {\n toReturn['disclaimer'] = this.disclaimer;\n }\n if (typeof this.showContactInfo !== 'undefined') {\n toReturn['showContactInfo'] = this.showContactInfo;\n }\n if (typeof this.showUnsubscribeLinks !== 'undefined') {\n toReturn['showUnsubscribeLinks'] = this.showUnsubscribeLinks;\n }\n return toReturn;\n }\n}\nclass GoogleAnalyticsOptions {\n static fromProto(proto) {\n let m = new GoogleAnalyticsOptions();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignName !== 'undefined') {\n toReturn['campaignName'] = this.campaignName;\n }\n if (typeof this.campaignSource !== 'undefined') {\n toReturn['campaignSource'] = this.campaignSource;\n }\n return toReturn;\n }\n}\nclass PageSetup {\n static fromProto(proto) {\n let m = new PageSetup();\n m = Object.assign(m, proto);\n if (proto.outerWidth) {\n m.outerWidth = parseInt(proto.outerWidth, 10);\n }\n if (proto.innerWidth) {\n m.innerWidth = parseInt(proto.innerWidth, 10);\n }\n if (proto.topPadding) {\n m.topPadding = parseInt(proto.topPadding, 10);\n }\n if (proto.bottomContentPadding) {\n m.bottomContentPadding = parseInt(proto.bottomContentPadding, 10);\n }\n if (proto.innerHorizontalPadding) {\n m.innerHorizontalPadding = parseInt(proto.innerHorizontalPadding, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.outerWidth !== 'undefined') {\n toReturn['outerWidth'] = this.outerWidth;\n }\n if (typeof this.innerWidth !== 'undefined') {\n toReturn['innerWidth'] = this.innerWidth;\n }\n if (typeof this.topPadding !== 'undefined') {\n toReturn['topPadding'] = this.topPadding;\n }\n if (typeof this.bottomContentPadding !== 'undefined') {\n toReturn['bottomContentPadding'] = this.bottomContentPadding;\n }\n if (typeof this.innerHorizontalPadding !== 'undefined') {\n toReturn['innerHorizontalPadding'] = this.innerHorizontalPadding;\n }\n return toReturn;\n }\n}\nclass TemplateReference {\n static fromProto(proto) {\n let m = new TemplateReference();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.appNamespace !== 'undefined') {\n toReturn['appNamespace'] = this.appNamespace;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n return toReturn;\n }\n}\nclass TopLogo {\n static fromProto(proto) {\n let m = new TopLogo();\n m = Object.assign(m, proto);\n if (proto.width) {\n m.width = parseInt(proto.width, 10);\n }\n if (proto.align) {\n m.align = enumStringToValue$4(ImageAlign, proto.align);\n }\n if (proto.topPadding) {\n m.topPadding = parseInt(proto.topPadding, 10);\n }\n if (proto.bottomPadding) {\n m.bottomPadding = parseInt(proto.bottomPadding, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.showLogo !== 'undefined') {\n toReturn['showLogo'] = this.showLogo;\n }\n if (typeof this.customImageUrl !== 'undefined') {\n toReturn['customImageUrl'] = this.customImageUrl;\n }\n if (typeof this.width !== 'undefined') {\n toReturn['width'] = this.width;\n }\n if (typeof this.align !== 'undefined') {\n toReturn['align'] = this.align;\n }\n if (typeof this.topPadding !== 'undefined') {\n toReturn['topPadding'] = this.topPadding;\n }\n if (typeof this.bottomPadding !== 'undefined') {\n toReturn['bottomPadding'] = this.bottomPadding;\n }\n if (typeof this.link !== 'undefined') {\n toReturn['link'] = this.link;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass FieldMask {\n static fromProto(proto) {\n let m = new FieldMask();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paths !== 'undefined') {\n toReturn['paths'] = this.paths;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Filter {\n static fromProto(proto) {\n let m = new Filter();\n m = Object.assign(m, proto);\n if (proto.operator) {\n m.operator = enumStringToValue$1(FilterOperator, proto.operator);\n }\n if (proto.values) {\n m.values = proto.values.map(FilterValue.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fieldId !== 'undefined') {\n toReturn['fieldId'] = this.fieldId;\n }\n if (typeof this.operator !== 'undefined') {\n toReturn['operator'] = this.operator;\n }\n if (typeof this.values !== 'undefined' && this.values !== null) {\n toReturn['values'] = 'toApiJson' in this.values ? this.values.toApiJson() : this.values;\n }\n if (typeof this.floatTolerance !== 'undefined') {\n toReturn['floatTolerance'] = this.floatTolerance;\n }\n return toReturn;\n }\n}\nclass FilterGroup {\n static fromProto(proto) {\n let m = new FilterGroup();\n m = Object.assign(m, proto);\n if (proto.operator) {\n m.operator = enumStringToValue$1(FilterGroupOperator, proto.operator);\n }\n if (proto.filters) {\n m.filters = proto.filters.map(Filter.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.operator !== 'undefined') {\n toReturn['operator'] = this.operator;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass Phone {\n static fromProto(proto) {\n let m = new Phone();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.isoCountryCode !== 'undefined') {\n toReturn['isoCountryCode'] = this.isoCountryCode;\n }\n if (typeof this.nationalNumber !== 'undefined') {\n toReturn['nationalNumber'] = this.nationalNumber;\n }\n if (typeof this.extension !== 'undefined') {\n toReturn['extension'] = this.extension;\n }\n return toReturn;\n }\n}\nclass FilterValue {\n static fromProto(proto) {\n let m = new FilterValue();\n m = Object.assign(m, proto);\n if (proto.integer) {\n m.integer = parseInt(proto.integer, 10);\n }\n if (proto.date) {\n m.date = new Date(proto.date);\n }\n if (proto.dateDefault) {\n m.dateDefault = enumStringToValue$1(DateDefault, proto.dateDefault);\n }\n if (proto.phone) {\n m.phone = Phone.fromProto(proto.phone);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.boolean !== 'undefined') {\n toReturn['boolean'] = this.boolean;\n }\n if (typeof this.integer !== 'undefined') {\n toReturn['integer'] = this.integer;\n }\n if (typeof this.float !== 'undefined') {\n toReturn['float'] = this.float;\n }\n if (typeof this.string !== 'undefined') {\n toReturn['string'] = this.string;\n }\n if (typeof this.date !== 'undefined' && this.date !== null) {\n toReturn['date'] = 'toApiJson' in this.date ? this.date.toApiJson() : this.date;\n }\n if (typeof this.dateDefault !== 'undefined') {\n toReturn['dateDefault'] = this.dateDefault;\n }\n if (typeof this.phone !== 'undefined' && this.phone !== null) {\n toReturn['phone'] = 'toApiJson' in this.phone ? this.phone.toApiJson() : this.phone;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass RecipientClickStatsAccount {\n static fromProto(proto) {\n let m = new RecipientClickStatsAccount();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass ActivateProductForSenderRequest {\n static fromProto(proto) {\n let m = new ActivateProductForSenderRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass AddContactToCampaignRequest {\n static fromProto(proto) {\n let m = new AddContactToCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.recipient) {\n m.recipient = RecipientV2.fromProto(proto.recipient);\n }\n if (proto.date) {\n m.date = new Date(proto.date);\n }\n if (proto.senderOptions) {\n m.senderOptions = SenderOptions.fromProto(proto.senderOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.recipient !== 'undefined' && this.recipient !== null) {\n toReturn['recipient'] = 'toApiJson' in this.recipient ? this.recipient.toApiJson() : this.recipient;\n }\n if (typeof this.date !== 'undefined' && this.date !== null) {\n toReturn['date'] = 'toApiJson' in this.date ? this.date.toApiJson() : this.date;\n }\n if (typeof this.senderOptions !== 'undefined' && this.senderOptions !== null) {\n toReturn['senderOptions'] = 'toApiJson' in this.senderOptions ? this.senderOptions.toApiJson() : this.senderOptions;\n }\n if (typeof this.sendNow !== 'undefined') {\n toReturn['sendNow'] = this.sendNow;\n }\n return toReturn;\n }\n}\nclass AddContactToCampaignResponse {\n static fromProto(proto) {\n let m = new AddContactToCampaignResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientCampaignId !== 'undefined') {\n toReturn['recipientCampaignId'] = this.recipientCampaignId;\n }\n return toReturn;\n }\n}\nclass AddStepToCampaignRequest {\n static fromProto(proto) {\n let m = new AddStepToCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.stepType) {\n m.stepType = enumStringToValue(CampaignStepType, proto.stepType);\n }\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.stepType !== 'undefined') {\n toReturn['stepType'] = this.stepType;\n }\n if (typeof this.contentId !== 'undefined') {\n toReturn['contentId'] = this.contentId;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nclass AddTagToCampaignRequest {\n static fromProto(proto) {\n let m = new AddTagToCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.senderType) {\n m.senderType = enumStringToValue(SenderType, proto.senderType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.senderType !== 'undefined') {\n toReturn['senderType'] = this.senderType;\n }\n if (typeof this.senderId !== 'undefined') {\n toReturn['senderId'] = this.senderId;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.tagId !== 'undefined') {\n toReturn['tagId'] = this.tagId;\n }\n return toReturn;\n }\n}\nclass BulkAddContactIdsToCampaignRequest {\n static fromProto(proto) {\n let m = new BulkAddContactIdsToCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.date) {\n m.date = new Date(proto.date);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.contactIds !== 'undefined') {\n toReturn['contactIds'] = this.contactIds;\n }\n if (typeof this.date !== 'undefined' && this.date !== null) {\n toReturn['date'] = 'toApiJson' in this.date ? this.date.toApiJson() : this.date;\n }\n return toReturn;\n }\n}\nclass BulkAddContactsToCampaignRequest {\n static fromProto(proto) {\n let m = new BulkAddContactsToCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.date) {\n m.date = new Date(proto.date);\n }\n if (proto.criteria) {\n m.criteria = RecipientCriteria.fromProto(proto.criteria);\n }\n if (proto.senderOptions) {\n m.senderOptions = SenderOptions.fromProto(proto.senderOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.date !== 'undefined' && this.date !== null) {\n toReturn['date'] = 'toApiJson' in this.date ? this.date.toApiJson() : this.date;\n }\n if (typeof this.criteria !== 'undefined' && this.criteria !== null) {\n toReturn['criteria'] = 'toApiJson' in this.criteria ? this.criteria.toApiJson() : this.criteria;\n }\n if (typeof this.senderOptions !== 'undefined' && this.senderOptions !== null) {\n toReturn['senderOptions'] = 'toApiJson' in this.senderOptions ? this.senderOptions.toApiJson() : this.senderOptions;\n }\n if (typeof this.sendNow !== 'undefined') {\n toReturn['sendNow'] = this.sendNow;\n }\n return toReturn;\n }\n}\nclass CampaignDetailStats {\n static fromProto(proto) {\n let m = new CampaignDetailStats();\n m = Object.assign(m, proto);\n if (proto.active) {\n m.active = parseInt(proto.active, 10);\n }\n if (proto.clicksPerOpenedEmail) {\n m.clicksPerOpenedEmail = parseInt(proto.clicksPerOpenedEmail, 10);\n }\n if (proto.completed) {\n m.completed = parseInt(proto.completed, 10);\n }\n if (proto.delivered) {\n m.delivered = parseInt(proto.delivered, 10);\n }\n if (proto.opened) {\n m.opened = parseInt(proto.opened, 10);\n }\n if (proto.sent) {\n m.sent = parseInt(proto.sent, 10);\n }\n if (proto.stopped) {\n m.stopped = parseInt(proto.stopped, 10);\n }\n if (proto.totalAccounts) {\n m.totalAccounts = parseInt(proto.totalAccounts, 10);\n }\n if (proto.totalLeads) {\n m.totalLeads = parseInt(proto.totalLeads, 10);\n }\n if (proto.totalRecipients) {\n m.totalRecipients = parseInt(proto.totalRecipients, 10);\n }\n if (proto.undeliverable) {\n m.undeliverable = parseInt(proto.undeliverable, 10);\n }\n if (proto.waitingOnRateLimit) {\n m.waitingOnRateLimit = parseInt(proto.waitingOnRateLimit, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.active !== 'undefined') {\n toReturn['active'] = this.active;\n }\n if (typeof this.clicksPerOpenedEmail !== 'undefined') {\n toReturn['clicksPerOpenedEmail'] = this.clicksPerOpenedEmail;\n }\n if (typeof this.completed !== 'undefined') {\n toReturn['completed'] = this.completed;\n }\n if (typeof this.delivered !== 'undefined') {\n toReturn['delivered'] = this.delivered;\n }\n if (typeof this.opened !== 'undefined') {\n toReturn['opened'] = this.opened;\n }\n if (typeof this.sent !== 'undefined') {\n toReturn['sent'] = this.sent;\n }\n if (typeof this.stopped !== 'undefined') {\n toReturn['stopped'] = this.stopped;\n }\n if (typeof this.totalAccounts !== 'undefined') {\n toReturn['totalAccounts'] = this.totalAccounts;\n }\n if (typeof this.totalLeads !== 'undefined') {\n toReturn['totalLeads'] = this.totalLeads;\n }\n if (typeof this.totalRecipients !== 'undefined') {\n toReturn['totalRecipients'] = this.totalRecipients;\n }\n if (typeof this.undeliverable !== 'undefined') {\n toReturn['undeliverable'] = this.undeliverable;\n }\n if (typeof this.waitingOnRateLimit !== 'undefined') {\n toReturn['waitingOnRateLimit'] = this.waitingOnRateLimit;\n }\n return toReturn;\n }\n}\nclass CampaignRecipient {\n static fromProto(proto) {\n let m = new CampaignRecipient();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientId !== 'undefined') {\n toReturn['recipientId'] = this.recipientId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n return toReturn;\n }\n}\nclass CampaignStepEvent {\n static fromProto(proto) {\n let m = new CampaignStepEvent();\n m = Object.assign(m, proto);\n if (proto.eventType) {\n m.eventType = enumStringToValue(CampaignStepEventType, proto.eventType);\n }\n if (proto.eventDate) {\n m.eventDate = new Date(proto.eventDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.eventType !== 'undefined') {\n toReturn['eventType'] = this.eventType;\n }\n if (typeof this.eventDate !== 'undefined' && this.eventDate !== null) {\n toReturn['eventDate'] = 'toApiJson' in this.eventDate ? this.eventDate.toApiJson() : this.eventDate;\n }\n return toReturn;\n }\n}\nclass CampaignStepInterface {\n static fromProto(proto) {\n let m = new CampaignStepInterface();\n m = Object.assign(m, proto);\n if (proto.stepType) {\n m.stepType = enumStringToValue(CampaignStepType, proto.stepType);\n }\n if (proto.secondsAfterLastEmail) {\n m.secondsAfterLastEmail = parseInt(proto.secondsAfterLastEmail, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignStepId !== 'undefined') {\n toReturn['campaignStepId'] = this.campaignStepId;\n }\n if (typeof this.stepType !== 'undefined') {\n toReturn['stepType'] = this.stepType;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.secondsAfterLastEmail !== 'undefined') {\n toReturn['secondsAfterLastEmail'] = this.secondsAfterLastEmail;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nclass CampaignStepStats {\n static fromProto(proto) {\n let m = new CampaignStepStats();\n m = Object.assign(m, proto);\n if (proto.delivered) {\n m.delivered = parseInt(proto.delivered, 10);\n }\n if (proto.opens) {\n m.opens = parseInt(proto.opens, 10);\n }\n if (proto.bounced) {\n m.bounced = parseInt(proto.bounced, 10);\n }\n if (proto.spam) {\n m.spam = parseInt(proto.spam, 10);\n }\n if (proto.unsubscribed) {\n m.unsubscribed = parseInt(proto.unsubscribed, 10);\n }\n if (proto.dropped) {\n m.dropped = parseInt(proto.dropped, 10);\n }\n if (proto.clicks) {\n m.clicks = parseInt(proto.clicks, 10);\n }\n if (proto.pending) {\n m.pending = parseInt(proto.pending, 10);\n }\n if (proto.created) {\n m.created = parseInt(proto.created, 10);\n }\n if (proto.refreshed) {\n m.refreshed = parseInt(proto.refreshed, 10);\n }\n if (proto.notRequired) {\n m.notRequired = parseInt(proto.notRequired, 10);\n }\n if (proto.sent) {\n m.sent = parseInt(proto.sent, 10);\n }\n if (proto.stopped) {\n m.stopped = parseInt(proto.stopped, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignStepId !== 'undefined') {\n toReturn['campaignStepId'] = this.campaignStepId;\n }\n if (typeof this.delivered !== 'undefined') {\n toReturn['delivered'] = this.delivered;\n }\n if (typeof this.opens !== 'undefined') {\n toReturn['opens'] = this.opens;\n }\n if (typeof this.openRate !== 'undefined') {\n toReturn['openRate'] = this.openRate;\n }\n if (typeof this.clickToOpenRate !== 'undefined') {\n toReturn['clickToOpenRate'] = this.clickToOpenRate;\n }\n if (typeof this.bounced !== 'undefined') {\n toReturn['bounced'] = this.bounced;\n }\n if (typeof this.spam !== 'undefined') {\n toReturn['spam'] = this.spam;\n }\n if (typeof this.unsubscribed !== 'undefined') {\n toReturn['unsubscribed'] = this.unsubscribed;\n }\n if (typeof this.dropped !== 'undefined') {\n toReturn['dropped'] = this.dropped;\n }\n if (typeof this.clicks !== 'undefined') {\n toReturn['clicks'] = this.clicks;\n }\n if (typeof this.pending !== 'undefined') {\n toReturn['pending'] = this.pending;\n }\n if (typeof this.created !== 'undefined') {\n toReturn['created'] = this.created;\n }\n if (typeof this.refreshed !== 'undefined') {\n toReturn['refreshed'] = this.refreshed;\n }\n if (typeof this.notRequired !== 'undefined') {\n toReturn['notRequired'] = this.notRequired;\n }\n if (typeof this.sent !== 'undefined') {\n toReturn['sent'] = this.sent;\n }\n if (typeof this.stopped !== 'undefined') {\n toReturn['stopped'] = this.stopped;\n }\n return toReturn;\n }\n}\nclass CampaignTag {\n static fromProto(proto) {\n let m = new CampaignTag();\n m = Object.assign(m, proto);\n if (proto.senderType) {\n m.senderType = enumStringToValue(SenderType, proto.senderType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.senderType !== 'undefined') {\n toReturn['senderType'] = this.senderType;\n }\n if (typeof this.senderId !== 'undefined') {\n toReturn['senderId'] = this.senderId;\n }\n if (typeof this.tagId !== 'undefined') {\n toReturn['tagId'] = this.tagId;\n }\n if (typeof this.text !== 'undefined') {\n toReturn['text'] = this.text;\n }\n if (typeof this.colour !== 'undefined') {\n toReturn['colour'] = this.colour;\n }\n return toReturn;\n }\n}\nclass CheckDuplicateCampaignStatusRequest {\n static fromProto(proto) {\n let m = new CheckDuplicateCampaignStatusRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.statusId !== 'undefined') {\n toReturn['statusId'] = this.statusId;\n }\n return toReturn;\n }\n}\nclass CheckDuplicateCampaignStatusResponse {\n static fromProto(proto) {\n let m = new CheckDuplicateCampaignStatusResponse();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue(AsyncWorkStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n return toReturn;\n }\n}\nclass CheckDuplicateCampaignStepStatusRequest {\n static fromProto(proto) {\n let m = new CheckDuplicateCampaignStepStatusRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.statusId !== 'undefined') {\n toReturn['statusId'] = this.statusId;\n }\n return toReturn;\n }\n}\nclass CheckDuplicateCampaignStepStatusResponse {\n static fromProto(proto) {\n let m = new CheckDuplicateCampaignStepStatusResponse();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue(DuplicateCampaignStepStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nclass Contact {\n static fromProto(proto) {\n let m = new Contact();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue(ContactType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass ConvertLegacyTemplateRequest {\n static fromProto(proto) {\n let m = new ConvertLegacyTemplateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass ConvertLegacyTemplateResponse {\n static fromProto(proto) {\n let m = new ConvertLegacyTemplateResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n return toReturn;\n }\n}\nclass CreateCampaignRequest {\n static fromProto(proto) {\n let m = new CreateCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.focus) {\n m.focus = enumStringToValue(Focuses, proto.focus);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.focus !== 'undefined') {\n toReturn['focus'] = this.focus;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nclass CreateCampaignResponse {\n static fromProto(proto) {\n let m = new CreateCampaignResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n return toReturn;\n }\n}\nclass CreateEmailTemplateRequest {\n static fromProto(proto) {\n let m = new CreateEmailTemplateRequest();\n m = Object.assign(m, proto);\n if (proto.template) {\n m.template = EmailTemplateStruct.fromProto(proto.template);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.template !== 'undefined' && this.template !== null) {\n toReturn['template'] = 'toApiJson' in this.template ? this.template.toApiJson() : this.template;\n }\n return toReturn;\n }\n}\nclass CreateQuotaRequest {\n static fromProto(proto) {\n let m = new CreateQuotaRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.type) {\n m.type = enumStringToValue(CampaignQuotaCategory, proto.type);\n }\n if (proto.limit) {\n m.limit = parseInt(proto.limit, 10);\n }\n if (proto.quotaStartDate) {\n m.quotaStartDate = new Date(proto.quotaStartDate);\n }\n if (proto.quotaEndDate) {\n m.quotaEndDate = new Date(proto.quotaEndDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.limit !== 'undefined') {\n toReturn['limit'] = this.limit;\n }\n if (typeof this.quotaStartDate !== 'undefined' && this.quotaStartDate !== null) {\n toReturn['quotaStartDate'] = 'toApiJson' in this.quotaStartDate ? this.quotaStartDate.toApiJson() : this.quotaStartDate;\n }\n if (typeof this.quotaEndDate !== 'undefined' && this.quotaEndDate !== null) {\n toReturn['quotaEndDate'] = 'toApiJson' in this.quotaEndDate ? this.quotaEndDate.toApiJson() : this.quotaEndDate;\n }\n return toReturn;\n }\n}\nclass CreateRecipientCampaignStepEventRequest {\n static fromProto(proto) {\n let m = new CreateRecipientCampaignStepEventRequest();\n m = Object.assign(m, proto);\n if (proto.version) {\n m.version = parseInt(proto.version, 10);\n }\n if (proto.eventType) {\n m.eventType = enumStringToValue(CampaignStepEventType, proto.eventType);\n }\n if (proto.eventDate) {\n m.eventDate = new Date(proto.eventDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n if (typeof this.eventId !== 'undefined') {\n toReturn['eventId'] = this.eventId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.campaignStepId !== 'undefined') {\n toReturn['campaignStepId'] = this.campaignStepId;\n }\n if (typeof this.recipientId !== 'undefined') {\n toReturn['recipientId'] = this.recipientId;\n }\n if (typeof this.recipientCampaignId !== 'undefined') {\n toReturn['recipientCampaignId'] = this.recipientCampaignId;\n }\n if (typeof this.recipientCampaignStepId !== 'undefined') {\n toReturn['recipientCampaignStepId'] = this.recipientCampaignStepId;\n }\n if (typeof this.eventType !== 'undefined') {\n toReturn['eventType'] = this.eventType;\n }\n if (typeof this.eventDate !== 'undefined' && this.eventDate !== null) {\n toReturn['eventDate'] = 'toApiJson' in this.eventDate ? this.eventDate.toApiJson() : this.eventDate;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.probablyBot !== 'undefined') {\n toReturn['probablyBot'] = this.probablyBot;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.normalizedUrl !== 'undefined') {\n toReturn['normalizedUrl'] = this.normalizedUrl;\n }\n return toReturn;\n }\n}\nclass CreateRecipientRequest {\n static fromProto(proto) {\n let m = new CreateRecipientRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.recipient) {\n m.recipient = RecipientV2.fromProto(proto.recipient);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientId !== 'undefined') {\n toReturn['recipientId'] = this.recipientId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.recipient !== 'undefined' && this.recipient !== null) {\n toReturn['recipient'] = 'toApiJson' in this.recipient ? this.recipient.toApiJson() : this.recipient;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n return toReturn;\n }\n}\nclass CreateRequest {\n static fromProto(proto) {\n let m = new CreateRequest();\n m = Object.assign(m, proto);\n if (proto.emailBuilderTemplate) {\n m.emailBuilderTemplate = EmailBuilderTemplate.fromProto(proto.emailBuilderTemplate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.emailBuilderTemplate !== 'undefined' && this.emailBuilderTemplate !== null) {\n toReturn['emailBuilderTemplate'] = 'toApiJson' in this.emailBuilderTemplate ? this.emailBuilderTemplate.toApiJson() : this.emailBuilderTemplate;\n }\n return toReturn;\n }\n}\nclass CreateResponse {\n static fromProto(proto) {\n let m = new CreateResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass CreateTagRequest {\n static fromProto(proto) {\n let m = new CreateTagRequest();\n m = Object.assign(m, proto);\n if (proto.senderType) {\n m.senderType = enumStringToValue(SenderType, proto.senderType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.senderType !== 'undefined') {\n toReturn['senderType'] = this.senderType;\n }\n if (typeof this.senderId !== 'undefined') {\n toReturn['senderId'] = this.senderId;\n }\n if (typeof this.text !== 'undefined') {\n toReturn['text'] = this.text;\n }\n if (typeof this.colour !== 'undefined') {\n toReturn['colour'] = this.colour;\n }\n return toReturn;\n }\n}\nclass CreateTagResponse {\n static fromProto(proto) {\n let m = new CreateTagResponse();\n m = Object.assign(m, proto);\n if (proto.campaignTag) {\n m.campaignTag = CampaignTag.fromProto(proto.campaignTag);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignTag !== 'undefined' && this.campaignTag !== null) {\n toReturn['campaignTag'] = 'toApiJson' in this.campaignTag ? this.campaignTag.toApiJson() : this.campaignTag;\n }\n return toReturn;\n }\n}\nclass DateFilter {\n static fromProto(proto) {\n let m = new DateFilter();\n m = Object.assign(m, proto);\n if (proto.dateLte) {\n m.dateLte = new Date(proto.dateLte);\n }\n if (proto.dateGte) {\n m.dateGte = new Date(proto.dateGte);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.dateLte !== 'undefined' && this.dateLte !== null) {\n toReturn['dateLte'] = 'toApiJson' in this.dateLte ? this.dateLte.toApiJson() : this.dateLte;\n }\n if (typeof this.dateGte !== 'undefined' && this.dateGte !== null) {\n toReturn['dateGte'] = 'toApiJson' in this.dateGte ? this.dateGte.toApiJson() : this.dateGte;\n }\n return toReturn;\n }\n}\nclass DeactivateProductForSenderRequest {\n static fromProto(proto) {\n let m = new DeactivateProductForSenderRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass DeleteCampaignRequest {\n static fromProto(proto) {\n let m = new DeleteCampaignRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n return toReturn;\n }\n}\nclass DeleteRequest {\n static fromProto(proto) {\n let m = new DeleteRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass DeleteTagRequest {\n static fromProto(proto) {\n let m = new DeleteTagRequest();\n m = Object.assign(m, proto);\n if (proto.senderType) {\n m.senderType = enumStringToValue(SenderType, proto.senderType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.senderType !== 'undefined') {\n toReturn['senderType'] = this.senderType;\n }\n if (typeof this.senderId !== 'undefined') {\n toReturn['senderId'] = this.senderId;\n }\n if (typeof this.tagId !== 'undefined') {\n toReturn['tagId'] = this.tagId;\n }\n return toReturn;\n }\n}\nclass DuplicateAndRecommendCampaignRequest {\n static fromProto(proto) {\n let m = new DuplicateAndRecommendCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.campaignDetails) {\n m.campaignDetails = DuplicateCampaignDetails.fromProto(proto.campaignDetails);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.campaignDetails !== 'undefined' && this.campaignDetails !== null) {\n toReturn['campaignDetails'] = 'toApiJson' in this.campaignDetails ? this.campaignDetails.toApiJson() : this.campaignDetails;\n }\n return toReturn;\n }\n}\nclass DuplicateCampaignDetails {\n static fromProto(proto) {\n let m = new DuplicateCampaignDetails();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nclass DuplicateCampaignRequest {\n static fromProto(proto) {\n let m = new DuplicateCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.campaignDetails) {\n m.campaignDetails = DuplicateCampaignDetails.fromProto(proto.campaignDetails);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.campaignDetails !== 'undefined' && this.campaignDetails !== null) {\n toReturn['campaignDetails'] = 'toApiJson' in this.campaignDetails ? this.campaignDetails.toApiJson() : this.campaignDetails;\n }\n return toReturn;\n }\n}\nclass DuplicateCampaignRequestV2 {\n static fromProto(proto) {\n let m = new DuplicateCampaignRequestV2();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.campaignDetails) {\n m.campaignDetails = DuplicateCampaignDetails.fromProto(proto.campaignDetails);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.campaignDetails !== 'undefined' && this.campaignDetails !== null) {\n toReturn['campaignDetails'] = 'toApiJson' in this.campaignDetails ? this.campaignDetails.toApiJson() : this.campaignDetails;\n }\n return toReturn;\n }\n}\nclass DuplicateCampaignResponse {\n static fromProto(proto) {\n let m = new DuplicateCampaignResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.statusId !== 'undefined') {\n toReturn['statusId'] = this.statusId;\n }\n return toReturn;\n }\n}\nclass DuplicateCampaignStepRequest {\n static fromProto(proto) {\n let m = new DuplicateCampaignStepRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.campaignStepId !== 'undefined') {\n toReturn['campaignStepId'] = this.campaignStepId;\n }\n return toReturn;\n }\n}\nclass DuplicateCampaignStepResponse {\n static fromProto(proto) {\n let m = new DuplicateCampaignStepResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.statusId !== 'undefined') {\n toReturn['statusId'] = this.statusId;\n }\n return toReturn;\n }\n}\nclass EmailTemplateStruct {\n static fromProto(proto) {\n let m = new EmailTemplateStruct();\n m = Object.assign(m, proto);\n if (proto.campaignFocus) {\n m.campaignFocus = enumStringToValue(Focuses, proto.campaignFocus);\n }\n if (proto.status) {\n m.status = enumStringToValue(TemplateStatus, proto.status);\n }\n if (proto.version) {\n m.version = parseInt(proto.version, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.campaignFocus !== 'undefined') {\n toReturn['campaignFocus'] = this.campaignFocus;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.isEditable !== 'undefined') {\n toReturn['isEditable'] = this.isEditable;\n }\n if (typeof this.updatedByUserEmail !== 'undefined') {\n toReturn['updatedByUserEmail'] = this.updatedByUserEmail;\n }\n if (typeof this.createdByUserEmail !== 'undefined') {\n toReturn['createdByUserEmail'] = this.createdByUserEmail;\n }\n if (typeof this.publishedByUserEmail !== 'undefined') {\n toReturn['publishedByUserEmail'] = this.publishedByUserEmail;\n }\n if (typeof this.subject !== 'undefined') {\n toReturn['subject'] = this.subject;\n }\n if (typeof this.htmlBody !== 'undefined') {\n toReturn['htmlBody'] = this.htmlBody;\n }\n if (typeof this.useFullHtml !== 'undefined') {\n toReturn['useFullHtml'] = this.useFullHtml;\n }\n if (typeof this.fullHtml !== 'undefined') {\n toReturn['fullHtml'] = this.fullHtml;\n }\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n return toReturn;\n }\n}\nclass ExecuteStepRequest {\n static fromProto(proto) {\n let m = new ExecuteStepRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientCampaignId !== 'undefined') {\n toReturn['recipientCampaignId'] = this.recipientCampaignId;\n }\n if (typeof this.recipientCampaignStepId !== 'undefined') {\n toReturn['recipientCampaignStepId'] = this.recipientCampaignStepId;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n return toReturn;\n }\n}\nclass ExportRecipientLinkClickStatsRequest {\n static fromProto(proto) {\n let m = new ExportRecipientLinkClickStatsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.campaignStepId !== 'undefined') {\n toReturn['campaignStepId'] = this.campaignStepId;\n }\n if (typeof this.normalizedUrl !== 'undefined') {\n toReturn['normalizedUrl'] = this.normalizedUrl;\n }\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n return toReturn;\n }\n}\nclass ExtractLinkTrackingDataForTemplateRequest {\n static fromProto(proto) {\n let m = new ExtractLinkTrackingDataForTemplateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.hydratedTemplateContent !== 'undefined') {\n toReturn['hydratedTemplateContent'] = this.hydratedTemplateContent;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n return toReturn;\n }\n}\nclass ExtractLinkTrackingDataForTemplateResponse {\n static fromProto(proto) {\n let m = new ExtractLinkTrackingDataForTemplateResponse();\n m = Object.assign(m, proto);\n if (proto.links) {\n m.links = proto.links.map(LinkTrackingData.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.links !== 'undefined' && this.links !== null) {\n toReturn['links'] = 'toApiJson' in this.links ? this.links.toApiJson() : this.links;\n }\n return toReturn;\n }\n}\nclass GetAggregatedCampaignStatsRequest {\n static fromProto(proto) {\n let m = new GetAggregatedCampaignStatsRequest();\n m = Object.assign(m, proto);\n if (proto.focus) {\n m.focus = enumStringToValue(Focuses, proto.focus);\n }\n if (proto.statuses) {\n m.statuses = proto.statuses.map(v => enumStringToValue(Statuses, v));\n }\n if (proto.states) {\n m.states = proto.states.map(v => enumStringToValue(CampaignState, v));\n }\n if (proto.dateFilter) {\n m.dateFilter = DateFilter.fromProto(proto.dateFilter);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.focus !== 'undefined') {\n toReturn['focus'] = this.focus;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.statuses !== 'undefined') {\n toReturn['statuses'] = this.statuses;\n }\n if (typeof this.states !== 'undefined') {\n toReturn['states'] = this.states;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.dateFilter !== 'undefined' && this.dateFilter !== null) {\n toReturn['dateFilter'] = 'toApiJson' in this.dateFilter ? this.dateFilter.toApiJson() : this.dateFilter;\n }\n return toReturn;\n }\n}\nclass GetAggregatedCampaignStatsResponse {\n static fromProto(proto) {\n let m = new GetAggregatedCampaignStatsResponse();\n m = Object.assign(m, proto);\n if (proto.totalAccounts) {\n m.totalAccounts = parseInt(proto.totalAccounts, 10);\n }\n if (proto.totalActiveCampaigns) {\n m.totalActiveCampaigns = parseInt(proto.totalActiveCampaigns, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.totalAccounts !== 'undefined') {\n toReturn['totalAccounts'] = this.totalAccounts;\n }\n if (typeof this.averageClickThroughRate !== 'undefined') {\n toReturn['averageClickThroughRate'] = this.averageClickThroughRate;\n }\n if (typeof this.averageOpenRate !== 'undefined') {\n toReturn['averageOpenRate'] = this.averageOpenRate;\n }\n if (typeof this.totalActiveCampaigns !== 'undefined') {\n toReturn['totalActiveCampaigns'] = this.totalActiveCampaigns;\n }\n return toReturn;\n }\n}\nclass GetAvailableStepTypesForSenderRequest {\n static fromProto(proto) {\n let m = new GetAvailableStepTypesForSenderRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n return toReturn;\n }\n}\nclass GetAvailableStepTypesForSenderResponse {\n static fromProto(proto) {\n let m = new GetAvailableStepTypesForSenderResponse();\n m = Object.assign(m, proto);\n if (proto.availableStepTypes) {\n m.availableStepTypes = proto.availableStepTypes.map(v => enumStringToValue(Feature, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.availableStepTypes !== 'undefined') {\n toReturn['availableStepTypes'] = this.availableStepTypes;\n }\n return toReturn;\n }\n}\nclass GetCampaignDetailsStatsRequest {\n static fromProto(proto) {\n let m = new GetCampaignDetailsStatsRequest();\n m = Object.assign(m, proto);\n if (proto.dateFilter) {\n m.dateFilter = DateFilter.fromProto(proto.dateFilter);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.dateFilter !== 'undefined' && this.dateFilter !== null) {\n toReturn['dateFilter'] = 'toApiJson' in this.dateFilter ? this.dateFilter.toApiJson() : this.dateFilter;\n }\n return toReturn;\n }\n}\nclass GetCampaignDetailsStatsResponse {\n static fromProto(proto) {\n let m = new GetCampaignDetailsStatsResponse();\n m = Object.assign(m, proto);\n if (proto.stats) {\n m.stats = CampaignDetailStats.fromProto(proto.stats);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stats !== 'undefined' && this.stats !== null) {\n toReturn['stats'] = 'toApiJson' in this.stats ? this.stats.toApiJson() : this.stats;\n }\n return toReturn;\n }\n}\nclass GetCampaignQuotaRequest {\n static fromProto(proto) {\n let m = new GetCampaignQuotaRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.type) {\n m.type = enumStringToValue(CampaignQuotaCategory, proto.type);\n }\n if (proto.datePeriod) {\n m.datePeriod = enumStringToValue(Period, proto.datePeriod);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.datePeriod !== 'undefined') {\n toReturn['datePeriod'] = this.datePeriod;\n }\n return toReturn;\n }\n}\nclass GetCampaignQuotaResponse {\n static fromProto(proto) {\n let m = new GetCampaignQuotaResponse();\n m = Object.assign(m, proto);\n if (proto.count) {\n m.count = parseInt(proto.count, 10);\n }\n if (proto.limit) {\n m.limit = parseInt(proto.limit, 10);\n }\n if (proto.quotaStartDate) {\n m.quotaStartDate = new Date(proto.quotaStartDate);\n }\n if (proto.quotaEndDate) {\n m.quotaEndDate = new Date(proto.quotaEndDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.count !== 'undefined') {\n toReturn['count'] = this.count;\n }\n if (typeof this.limit !== 'undefined') {\n toReturn['limit'] = this.limit;\n }\n if (typeof this.quotaStartDate !== 'undefined' && this.quotaStartDate !== null) {\n toReturn['quotaStartDate'] = 'toApiJson' in this.quotaStartDate ? this.quotaStartDate.toApiJson() : this.quotaStartDate;\n }\n if (typeof this.quotaEndDate !== 'undefined' && this.quotaEndDate !== null) {\n toReturn['quotaEndDate'] = 'toApiJson' in this.quotaEndDate ? this.quotaEndDate.toApiJson() : this.quotaEndDate;\n }\n return toReturn;\n }\n}\nclass GetCampaignRequest {\n static fromProto(proto) {\n let m = new GetCampaignRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n return toReturn;\n }\n}\nclass GetCampaignResponse {\n static fromProto(proto) {\n let m = new GetCampaignResponse();\n m = Object.assign(m, proto);\n if (proto.campaign) {\n m.campaign = GetterCampaignData.fromProto(proto.campaign);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaign !== 'undefined' && this.campaign !== null) {\n toReturn['campaign'] = 'toApiJson' in this.campaign ? this.campaign.toApiJson() : this.campaign;\n }\n return toReturn;\n }\n}\nclass GetCampaignStepContentRequest {\n static fromProto(proto) {\n let m = new GetCampaignStepContentRequest();\n m = Object.assign(m, proto);\n if (proto.stepData) {\n m.stepData = Object.keys(proto.stepData).reduce((obj, k) => {\n obj[k] = proto.stepData[k];\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.campaignStepId !== 'undefined') {\n toReturn['campaignStepId'] = this.campaignStepId;\n }\n if (typeof this.stepData !== 'undefined' && this.stepData !== null) {\n toReturn['stepData'] = 'toApiJson' in this.stepData ? this.stepData.toApiJson() : this.stepData;\n }\n return toReturn;\n }\n}\nclass GetCampaignStepContentResponse {\n static fromProto(proto) {\n let m = new GetCampaignStepContentResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.html !== 'undefined') {\n toReturn['html'] = this.html;\n }\n if (typeof this.subject !== 'undefined') {\n toReturn['subject'] = this.subject;\n }\n return toReturn;\n }\n}\nclass GetCampaignStepStatsRequest {\n static fromProto(proto) {\n let m = new GetCampaignStepStatsRequest();\n m = Object.assign(m, proto);\n if (proto.dateFilter) {\n m.dateFilter = DateFilter.fromProto(proto.dateFilter);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.dateFilter !== 'undefined' && this.dateFilter !== null) {\n toReturn['dateFilter'] = 'toApiJson' in this.dateFilter ? this.dateFilter.toApiJson() : this.dateFilter;\n }\n return toReturn;\n }\n}\nclass GetCampaignStepStatsResponse {\n static fromProto(proto) {\n let m = new GetCampaignStepStatsResponse();\n m = Object.assign(m, proto);\n if (proto.stepStats) {\n m.stepStats = proto.stepStats.map(CampaignStepStats.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stepStats !== 'undefined' && this.stepStats !== null) {\n toReturn['stepStats'] = 'toApiJson' in this.stepStats ? this.stepStats.toApiJson() : this.stepStats;\n }\n return toReturn;\n }\n}\nclass GetConfigRequest {\n static fromProto(proto) {\n let m = new GetConfigRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n return toReturn;\n }\n}\nclass GetConfigResponse {\n static fromProto(proto) {\n let m = new GetConfigResponse();\n m = Object.assign(m, proto);\n if (proto.rateLimit) {\n m.rateLimit = parseInt(proto.rateLimit, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.timezone !== 'undefined') {\n toReturn['timezone'] = this.timezone;\n }\n if (typeof this.days !== 'undefined') {\n toReturn['days'] = this.days;\n }\n if (typeof this.rateLimited !== 'undefined') {\n toReturn['rateLimited'] = this.rateLimited;\n }\n if (typeof this.rateLimit !== 'undefined') {\n toReturn['rateLimit'] = this.rateLimit;\n }\n return toReturn;\n }\n}\nclass GetEmailTemplateRequest {\n static fromProto(proto) {\n let m = new GetEmailTemplateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n return toReturn;\n }\n}\nclass GetEmailTemplateResponse {\n static fromProto(proto) {\n let m = new GetEmailTemplateResponse();\n m = Object.assign(m, proto);\n if (proto.template) {\n m.template = EmailTemplateStruct.fromProto(proto.template);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.template !== 'undefined' && this.template !== null) {\n toReturn['template'] = 'toApiJson' in this.template ? this.template.toApiJson() : this.template;\n }\n return toReturn;\n }\n}\nclass GetEmailTemplatesRequest {\n static fromProto(proto) {\n let m = new GetEmailTemplatesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templateIds !== 'undefined') {\n toReturn['templateIds'] = this.templateIds;\n }\n return toReturn;\n }\n}\nclass GetEmailTemplatesResponse {\n static fromProto(proto) {\n let m = new GetEmailTemplatesResponse();\n m = Object.assign(m, proto);\n if (proto.templates) {\n m.templates = proto.templates.map(EmailTemplateStruct.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templates !== 'undefined' && this.templates !== null) {\n toReturn['templates'] = 'toApiJson' in this.templates ? this.templates.toApiJson() : this.templates;\n }\n return toReturn;\n }\n}\nclass GetLinkStatsRequest {\n static fromProto(proto) {\n let m = new GetLinkStatsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.campaignStepId !== 'undefined') {\n toReturn['campaignStepId'] = this.campaignStepId;\n }\n return toReturn;\n }\n}\nclass GetLinkStatsResponse {\n static fromProto(proto) {\n let m = new GetLinkStatsResponse();\n m = Object.assign(m, proto);\n if (proto.stats) {\n m.stats = proto.stats.map(LinkStats.fromProto);\n }\n if (proto.totalClicksOnCampaignStep) {\n m.totalClicksOnCampaignStep = parseInt(proto.totalClicksOnCampaignStep, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stats !== 'undefined' && this.stats !== null) {\n toReturn['stats'] = 'toApiJson' in this.stats ? this.stats.toApiJson() : this.stats;\n }\n if (typeof this.totalClicksOnCampaignStep !== 'undefined') {\n toReturn['totalClicksOnCampaignStep'] = this.totalClicksOnCampaignStep;\n }\n return toReturn;\n }\n}\nclass GetMultiCampaignsRequest {\n static fromProto(proto) {\n let m = new GetMultiCampaignsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignIds !== 'undefined') {\n toReturn['campaignIds'] = this.campaignIds;\n }\n return toReturn;\n }\n}\nclass GetMultiCampaignsResponse {\n static fromProto(proto) {\n let m = new GetMultiCampaignsResponse();\n m = Object.assign(m, proto);\n if (proto.campaigns) {\n m.campaigns = proto.campaigns.map(GetterCampaignData.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaigns !== 'undefined' && this.campaigns !== null) {\n toReturn['campaigns'] = 'toApiJson' in this.campaigns ? this.campaigns.toApiJson() : this.campaigns;\n }\n return toReturn;\n }\n}\nclass GetRecipientCampaignRequest {\n static fromProto(proto) {\n let m = new GetRecipientCampaignRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientCampaignId !== 'undefined') {\n toReturn['recipientCampaignId'] = this.recipientCampaignId;\n }\n return toReturn;\n }\n}\nclass GetRecipientCampaignResponse {\n static fromProto(proto) {\n let m = new GetRecipientCampaignResponse();\n m = Object.assign(m, proto);\n if (proto.recipientCampaign) {\n m.recipientCampaign = RecipientCampaignStruct.fromProto(proto.recipientCampaign);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientCampaign !== 'undefined' && this.recipientCampaign !== null) {\n toReturn['recipientCampaign'] = 'toApiJson' in this.recipientCampaign ? this.recipientCampaign.toApiJson() : this.recipientCampaign;\n }\n return toReturn;\n }\n}\nclass GetRecipientLinkClickStatsRequest {\n static fromProto(proto) {\n let m = new GetRecipientLinkClickStatsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = GetRecipientLinkClickStatsRequestPagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.campaignStepId !== 'undefined') {\n toReturn['campaignStepId'] = this.campaignStepId;\n }\n if (typeof this.normalizedUrl !== 'undefined') {\n toReturn['normalizedUrl'] = this.normalizedUrl;\n }\n return toReturn;\n }\n}\nclass GetRecipientLinkClickStatsResponse {\n static fromProto(proto) {\n let m = new GetRecipientLinkClickStatsResponse();\n m = Object.assign(m, proto);\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n if (proto.data) {\n m.data = proto.data.map(RecipientClickStats.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n if (typeof this.data !== 'undefined' && this.data !== null) {\n toReturn['data'] = 'toApiJson' in this.data ? this.data.toApiJson() : this.data;\n }\n return toReturn;\n }\n}\nclass GetRecipientRequest {\n static fromProto(proto) {\n let m = new GetRecipientRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientId !== 'undefined') {\n toReturn['recipientId'] = this.recipientId;\n }\n return toReturn;\n }\n}\nclass GetRecipientResponse {\n static fromProto(proto) {\n let m = new GetRecipientResponse();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.recipient) {\n m.recipient = RecipientV2.fromProto(proto.recipient);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientId !== 'undefined') {\n toReturn['recipientId'] = this.recipientId;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.recipient !== 'undefined' && this.recipient !== null) {\n toReturn['recipient'] = 'toApiJson' in this.recipient ? this.recipient.toApiJson() : this.recipient;\n }\n return toReturn;\n }\n}\nclass GetRequest {\n static fromProto(proto) {\n let m = new GetRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass GetResponse {\n static fromProto(proto) {\n let m = new GetResponse();\n m = Object.assign(m, proto);\n if (proto.emailBuilderTemplate) {\n m.emailBuilderTemplate = EmailBuilderTemplate.fromProto(proto.emailBuilderTemplate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.emailBuilderTemplate !== 'undefined' && this.emailBuilderTemplate !== null) {\n toReturn['emailBuilderTemplate'] = 'toApiJson' in this.emailBuilderTemplate ? this.emailBuilderTemplate.toApiJson() : this.emailBuilderTemplate;\n }\n return toReturn;\n }\n}\nclass GetterCampaignData {\n static fromProto(proto) {\n let m = new GetterCampaignData();\n m = Object.assign(m, proto);\n if (proto.version) {\n m.version = parseInt(proto.version, 10);\n }\n if (proto.focus) {\n m.focus = enumStringToValue(Focuses, proto.focus);\n }\n if (proto.campaignSchedule) {\n m.campaignSchedule = proto.campaignSchedule.map(CampaignStepInterface.fromProto);\n }\n if (proto.campaignScheduleVersion) {\n m.campaignScheduleVersion = parseInt(proto.campaignScheduleVersion, 10);\n }\n if (proto.eventsCount) {\n m.eventsCount = parseInt(proto.eventsCount, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue(Statuses, proto.status);\n }\n if (proto.published) {\n m.published = new Date(proto.published);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.focus !== 'undefined') {\n toReturn['focus'] = this.focus;\n }\n if (typeof this.campaignSchedule !== 'undefined' && this.campaignSchedule !== null) {\n toReturn['campaignSchedule'] = 'toApiJson' in this.campaignSchedule ? this.campaignSchedule.toApiJson() : this.campaignSchedule;\n }\n if (typeof this.campaignScheduleVersion !== 'undefined') {\n toReturn['campaignScheduleVersion'] = this.campaignScheduleVersion;\n }\n if (typeof this.eventsCount !== 'undefined') {\n toReturn['eventsCount'] = this.eventsCount;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.locale !== 'undefined') {\n toReturn['locale'] = this.locale;\n }\n if (typeof this.isEnabled !== 'undefined') {\n toReturn['isEnabled'] = this.isEnabled;\n }\n if (typeof this.isEditable !== 'undefined') {\n toReturn['isEditable'] = this.isEditable;\n }\n if (typeof this.hiddenForPartners !== 'undefined') {\n toReturn['hiddenForPartners'] = this.hiddenForPartners;\n }\n if (typeof this.isPremade !== 'undefined') {\n toReturn['isPremade'] = this.isPremade;\n }\n if (typeof this.parentCampaignId !== 'undefined') {\n toReturn['parentCampaignId'] = this.parentCampaignId;\n }\n if (typeof this.rootCampaignId !== 'undefined') {\n toReturn['rootCampaignId'] = this.rootCampaignId;\n }\n if (typeof this.createdUser !== 'undefined') {\n toReturn['createdUser'] = this.createdUser;\n }\n if (typeof this.updatedUser !== 'undefined') {\n toReturn['updatedUser'] = this.updatedUser;\n }\n if (typeof this.publishedUser !== 'undefined') {\n toReturn['publishedUser'] = this.publishedUser;\n }\n if (typeof this.emailCategoryId !== 'undefined') {\n toReturn['emailCategoryId'] = this.emailCategoryId;\n }\n if (typeof this.published !== 'undefined' && this.published !== null) {\n toReturn['published'] = 'toApiJson' in this.published ? this.published.toApiJson() : this.published;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n return toReturn;\n }\n}\nclass IsFeatureActiveForSenderRequest {\n static fromProto(proto) {\n let m = new IsFeatureActiveForSenderRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.featureId) {\n m.featureId = enumStringToValue(Feature, proto.featureId);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.featureId !== 'undefined') {\n toReturn['featureId'] = this.featureId;\n }\n return toReturn;\n }\n}\nclass IsFeatureActiveForSenderResponse {\n static fromProto(proto) {\n let m = new IsFeatureActiveForSenderResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.isActive !== 'undefined') {\n toReturn['isActive'] = this.isActive;\n }\n return toReturn;\n }\n}\nclass IsProductActiveForSenderRequest {\n static fromProto(proto) {\n let m = new IsProductActiveForSenderRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass IsProductActiveForSenderResponse {\n static fromProto(proto) {\n let m = new IsProductActiveForSenderResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.isActive !== 'undefined') {\n toReturn['isActive'] = this.isActive;\n }\n return toReturn;\n }\n}\nclass LegacyAddAccountGroupToCampaignRequest {\n static fromProto(proto) {\n let m = new LegacyAddAccountGroupToCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.scheduledDate) {\n m.scheduledDate = new Date(proto.scheduledDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.scheduledDate !== 'undefined' && this.scheduledDate !== null) {\n toReturn['scheduledDate'] = 'toApiJson' in this.scheduledDate ? this.scheduledDate.toApiJson() : this.scheduledDate;\n }\n return toReturn;\n }\n}\nclass LegacyGetRecipientCampaignsByAgidRequest {\n static fromProto(proto) {\n let m = new LegacyGetRecipientCampaignsByAgidRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass LegacyGetRecipientCampaignsByAgidResponse {\n static fromProto(proto) {\n let m = new LegacyGetRecipientCampaignsByAgidResponse();\n m = Object.assign(m, proto);\n if (proto.recipientCampaignPairs) {\n m.recipientCampaignPairs = proto.recipientCampaignPairs.map(RecipientCampaignPair.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientCampaignPairs !== 'undefined' && this.recipientCampaignPairs !== null) {\n toReturn['recipientCampaignPairs'] = 'toApiJson' in this.recipientCampaignPairs ? this.recipientCampaignPairs.toApiJson() : this.recipientCampaignPairs;\n }\n return toReturn;\n }\n}\nclass LegacyPauseAccountGroupOnCampaignRequest {\n static fromProto(proto) {\n let m = new LegacyPauseAccountGroupOnCampaignRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass LegacyRateLimitedAddToCampaignRequest {\n static fromProto(proto) {\n let m = new LegacyRateLimitedAddToCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.scheduledDate) {\n m.scheduledDate = new Date(proto.scheduledDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.scheduledDate !== 'undefined' && this.scheduledDate !== null) {\n toReturn['scheduledDate'] = 'toApiJson' in this.scheduledDate ? this.scheduledDate.toApiJson() : this.scheduledDate;\n }\n if (typeof this.fromEmail !== 'undefined') {\n toReturn['fromEmail'] = this.fromEmail;\n }\n if (typeof this.fromName !== 'undefined') {\n toReturn['fromName'] = this.fromName;\n }\n if (typeof this.fromId !== 'undefined') {\n toReturn['fromId'] = this.fromId;\n }\n return toReturn;\n }\n}\nclass LegacyRateLimitedAddToCampaignResponse {\n static fromProto(proto) {\n let m = new LegacyRateLimitedAddToCampaignResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientCampaignId !== 'undefined') {\n toReturn['recipientCampaignId'] = this.recipientCampaignId;\n }\n return toReturn;\n }\n}\nclass LegacyUpdateRecipientCampaignStatusRequest {\n static fromProto(proto) {\n let m = new LegacyUpdateRecipientCampaignStatusRequest();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue(RecipientCampaignStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientCampaignId !== 'undefined') {\n toReturn['recipientCampaignId'] = this.recipientCampaignId;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nclass LinkStats {\n static fromProto(proto) {\n let m = new LinkStats();\n m = Object.assign(m, proto);\n if (proto.totalClicks) {\n m.totalClicks = parseInt(proto.totalClicks, 10);\n }\n if (proto.uniqueClicks) {\n m.uniqueClicks = parseInt(proto.uniqueClicks, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.totalClicks !== 'undefined') {\n toReturn['totalClicks'] = this.totalClicks;\n }\n if (typeof this.uniqueClicks !== 'undefined') {\n toReturn['uniqueClicks'] = this.uniqueClicks;\n }\n if (typeof this.clickRate !== 'undefined') {\n toReturn['clickRate'] = this.clickRate;\n }\n return toReturn;\n }\n}\nclass LinkTrackingData {\n static fromProto(proto) {\n let m = new LinkTrackingData();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.normalizedUrl !== 'undefined') {\n toReturn['normalizedUrl'] = this.normalizedUrl;\n }\n if (typeof this.hydratedUrl !== 'undefined') {\n toReturn['hydratedUrl'] = this.hydratedUrl;\n }\n return toReturn;\n }\n}\nclass ListCampaignStatsForSenderRequest {\n static fromProto(proto) {\n let m = new ListCampaignStatsForSenderRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.focus) {\n m.focus = enumStringToValue(Focuses, proto.focus);\n }\n if (proto.statuses) {\n m.statuses = proto.statuses.map(v => enumStringToValue(Statuses, v));\n }\n if (proto.states) {\n m.states = proto.states.map(v => enumStringToValue(CampaignState, v));\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.deletedTagsPolicy) {\n m.deletedTagsPolicy = enumStringToValue(DeletedTagsPolicy, proto.deletedTagsPolicy);\n }\n if (proto.sortOptions) {\n m.sortOptions = SortOptions.fromProto(proto.sortOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.focus !== 'undefined') {\n toReturn['focus'] = this.focus;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.statuses !== 'undefined') {\n toReturn['statuses'] = this.statuses;\n }\n if (typeof this.states !== 'undefined') {\n toReturn['states'] = this.states;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.deletedTagsPolicy !== 'undefined') {\n toReturn['deletedTagsPolicy'] = this.deletedTagsPolicy;\n }\n if (typeof this.tagIds !== 'undefined') {\n toReturn['tagIds'] = this.tagIds;\n }\n if (typeof this.sortOptions !== 'undefined' && this.sortOptions !== null) {\n toReturn['sortOptions'] = 'toApiJson' in this.sortOptions ? this.sortOptions.toApiJson() : this.sortOptions;\n }\n return toReturn;\n }\n}\nclass ListCampaignStatsForSenderResponse {\n static fromProto(proto) {\n let m = new ListCampaignStatsForSenderResponse();\n m = Object.assign(m, proto);\n if (proto.stats) {\n m.stats = proto.stats.map(ListCampaignStatsStruct.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stats !== 'undefined' && this.stats !== null) {\n toReturn['stats'] = 'toApiJson' in this.stats ? this.stats.toApiJson() : this.stats;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListCampaignStatsRequest {\n static fromProto(proto) {\n let m = new ListCampaignStatsRequest();\n m = Object.assign(m, proto);\n if (proto.focus) {\n m.focus = enumStringToValue(Focuses, proto.focus);\n }\n if (proto.statuses) {\n m.statuses = proto.statuses.map(v => enumStringToValue(Statuses, v));\n }\n if (proto.states) {\n m.states = proto.states.map(v => enumStringToValue(CampaignState, v));\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.deletedTagsPolicy) {\n m.deletedTagsPolicy = enumStringToValue(DeletedTagsPolicy, proto.deletedTagsPolicy);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.focus !== 'undefined') {\n toReturn['focus'] = this.focus;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.statuses !== 'undefined') {\n toReturn['statuses'] = this.statuses;\n }\n if (typeof this.states !== 'undefined') {\n toReturn['states'] = this.states;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.deletedTagsPolicy !== 'undefined') {\n toReturn['deletedTagsPolicy'] = this.deletedTagsPolicy;\n }\n if (typeof this.tagIds !== 'undefined') {\n toReturn['tagIds'] = this.tagIds;\n }\n return toReturn;\n }\n}\nclass ListCampaignStatsResponse {\n static fromProto(proto) {\n let m = new ListCampaignStatsResponse();\n m = Object.assign(m, proto);\n if (proto.stats) {\n m.stats = proto.stats.map(ListCampaignStatsStruct.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stats !== 'undefined' && this.stats !== null) {\n toReturn['stats'] = 'toApiJson' in this.stats ? this.stats.toApiJson() : this.stats;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListCampaignStatsStruct {\n static fromProto(proto) {\n let m = new ListCampaignStatsStruct();\n m = Object.assign(m, proto);\n if (proto.totalAccounts) {\n m.totalAccounts = parseInt(proto.totalAccounts, 10);\n }\n if (proto.activeAccounts) {\n m.activeAccounts = parseInt(proto.activeAccounts, 10);\n }\n if (proto.emailsDelivered) {\n m.emailsDelivered = parseInt(proto.emailsDelivered, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue(Statuses, proto.status);\n }\n if (proto.state) {\n m.state = enumStringToValue(CampaignState, proto.state);\n }\n if (proto.eventsCount) {\n m.eventsCount = parseInt(proto.eventsCount, 10);\n }\n if (proto.tags) {\n m.tags = proto.tags.map(ListCampaignTagDetails.fromProto);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.totalAccounts !== 'undefined') {\n toReturn['totalAccounts'] = this.totalAccounts;\n }\n if (typeof this.activeAccounts !== 'undefined') {\n toReturn['activeAccounts'] = this.activeAccounts;\n }\n if (typeof this.emailsDelivered !== 'undefined') {\n toReturn['emailsDelivered'] = this.emailsDelivered;\n }\n if (typeof this.clickThroughRate !== 'undefined') {\n toReturn['clickThroughRate'] = this.clickThroughRate;\n }\n if (typeof this.openRate !== 'undefined') {\n toReturn['openRate'] = this.openRate;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.automations !== 'undefined') {\n toReturn['automations'] = this.automations;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.eventsCount !== 'undefined') {\n toReturn['eventsCount'] = this.eventsCount;\n }\n if (typeof this.isEditable !== 'undefined') {\n toReturn['isEditable'] = this.isEditable;\n }\n if (typeof this.tags !== 'undefined' && this.tags !== null) {\n toReturn['tags'] = 'toApiJson' in this.tags ? this.tags.toApiJson() : this.tags;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n return toReturn;\n }\n}\nclass ListCampaignTagDetails {\n static fromProto(proto) {\n let m = new ListCampaignTagDetails();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.tagId !== 'undefined') {\n toReturn['tagId'] = this.tagId;\n }\n if (typeof this.text !== 'undefined') {\n toReturn['text'] = this.text;\n }\n if (typeof this.color !== 'undefined') {\n toReturn['color'] = this.color;\n }\n return toReturn;\n }\n}\nclass ListCampaignsRequest {\n static fromProto(proto) {\n let m = new ListCampaignsRequest();\n m = Object.assign(m, proto);\n if (proto.focuses) {\n m.focuses = proto.focuses.map(v => enumStringToValue(Focuses, v));\n }\n if (proto.statuses) {\n m.statuses = proto.statuses.map(v => enumStringToValue(Statuses, v));\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.focuses !== 'undefined') {\n toReturn['focuses'] = this.focuses;\n }\n if (typeof this.statuses !== 'undefined') {\n toReturn['statuses'] = this.statuses;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nclass ListCampaignsResponse {\n static fromProto(proto) {\n let m = new ListCampaignsResponse();\n m = Object.assign(m, proto);\n if (proto.campaigns) {\n m.campaigns = proto.campaigns.map(GetterCampaignData.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaigns !== 'undefined' && this.campaigns !== null) {\n toReturn['campaigns'] = 'toApiJson' in this.campaigns ? this.campaigns.toApiJson() : this.campaigns;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListCampaignsV2Request {\n static fromProto(proto) {\n let m = new ListCampaignsV2Request();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.statuses) {\n m.statuses = proto.statuses.map(v => enumStringToValue(Statuses, v));\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.sortOptions) {\n m.sortOptions = SortOptions.fromProto(proto.sortOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.statuses !== 'undefined') {\n toReturn['statuses'] = this.statuses;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.sortOptions !== 'undefined' && this.sortOptions !== null) {\n toReturn['sortOptions'] = 'toApiJson' in this.sortOptions ? this.sortOptions.toApiJson() : this.sortOptions;\n }\n return toReturn;\n }\n}\nclass ListCampaignsV2Response {\n static fromProto(proto) {\n let m = new ListCampaignsV2Response();\n m = Object.assign(m, proto);\n if (proto.campaigns) {\n m.campaigns = proto.campaigns.map(GetterCampaignData.fromProto);\n }\n if (proto.metadata) {\n m.metadata = PagedResponseMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaigns !== 'undefined' && this.campaigns !== null) {\n toReturn['campaigns'] = 'toApiJson' in this.campaigns ? this.campaigns.toApiJson() : this.campaigns;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass ListLinksInTemplateRequest {\n static fromProto(proto) {\n let m = new ListLinksInTemplateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n return toReturn;\n }\n}\nclass ListLinksInTemplateResponse {\n static fromProto(proto) {\n let m = new ListLinksInTemplateResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.links !== 'undefined') {\n toReturn['links'] = this.links;\n }\n return toReturn;\n }\n}\nclass ListRecipientCampaignsRequest {\n static fromProto(proto) {\n let m = new ListRecipientCampaignsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass ListRecipientCampaignsResponse {\n static fromProto(proto) {\n let m = new ListRecipientCampaignsResponse();\n m = Object.assign(m, proto);\n if (proto.recipientCampaign) {\n m.recipientCampaign = proto.recipientCampaign.map(RecipientCampaignStruct.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientCampaign !== 'undefined' && this.recipientCampaign !== null) {\n toReturn['recipientCampaign'] = 'toApiJson' in this.recipientCampaign ? this.recipientCampaign.toApiJson() : this.recipientCampaign;\n }\n return toReturn;\n }\n}\nclass ListRecipientsRequest {\n static fromProto(proto) {\n let m = new ListRecipientsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListRecipientsResponse {\n static fromProto(proto) {\n let m = new ListRecipientsResponse();\n m = Object.assign(m, proto);\n if (proto.recipients) {\n m.recipients = proto.recipients.map(RecipientV2.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipients !== 'undefined' && this.recipients !== null) {\n toReturn['recipients'] = 'toApiJson' in this.recipients ? this.recipients.toApiJson() : this.recipients;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListRecommendedCampaignsRequest {\n static fromProto(proto) {\n let m = new ListRecommendedCampaignsRequest();\n m = Object.assign(m, proto);\n if (proto.focuses) {\n m.focuses = proto.focuses.map(v => enumStringToValue(Focuses, v));\n }\n if (proto.statuses) {\n m.statuses = proto.statuses.map(v => enumStringToValue(Statuses, v));\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.focuses !== 'undefined') {\n toReturn['focuses'] = this.focuses;\n }\n if (typeof this.statuses !== 'undefined') {\n toReturn['statuses'] = this.statuses;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListTagsForCampaignRequest {\n static fromProto(proto) {\n let m = new ListTagsForCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass ListTagsForCampaignResponse {\n static fromProto(proto) {\n let m = new ListTagsForCampaignResponse();\n m = Object.assign(m, proto);\n if (proto.campaignTags) {\n m.campaignTags = proto.campaignTags.map(CampaignTag.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignTags !== 'undefined' && this.campaignTags !== null) {\n toReturn['campaignTags'] = 'toApiJson' in this.campaignTags ? this.campaignTags.toApiJson() : this.campaignTags;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass ListTagsForSenderRequest {\n static fromProto(proto) {\n let m = new ListTagsForSenderRequest();\n m = Object.assign(m, proto);\n if (proto.senderType) {\n m.senderType = enumStringToValue(SenderType, proto.senderType);\n }\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.senderType !== 'undefined') {\n toReturn['senderType'] = this.senderType;\n }\n if (typeof this.senderId !== 'undefined') {\n toReturn['senderId'] = this.senderId;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass ListTagsForSenderResponse {\n static fromProto(proto) {\n let m = new ListTagsForSenderResponse();\n m = Object.assign(m, proto);\n if (proto.campaignTags) {\n m.campaignTags = proto.campaignTags.map(CampaignTag.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignTags !== 'undefined' && this.campaignTags !== null) {\n toReturn['campaignTags'] = 'toApiJson' in this.campaignTags ? this.campaignTags.toApiJson() : this.campaignTags;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass LookupRecipientCampaignRequest {\n static fromProto(proto) {\n let m = new LookupRecipientCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.recipient) {\n m.recipient = RecipientV2.fromProto(proto.recipient);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.recipient !== 'undefined' && this.recipient !== null) {\n toReturn['recipient'] = 'toApiJson' in this.recipient ? this.recipient.toApiJson() : this.recipient;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n return toReturn;\n }\n}\nclass LookupRecipientCampaignResponse {\n static fromProto(proto) {\n let m = new LookupRecipientCampaignResponse();\n m = Object.assign(m, proto);\n if (proto.recipientCampaign) {\n m.recipientCampaign = RecipientCampaignStruct.fromProto(proto.recipientCampaign);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientCampaign !== 'undefined' && this.recipientCampaign !== null) {\n toReturn['recipientCampaign'] = 'toApiJson' in this.recipientCampaign ? this.recipientCampaign.toApiJson() : this.recipientCampaign;\n }\n return toReturn;\n }\n}\nclass LookupRecipientCampaignsRequest {\n static fromProto(proto) {\n let m = new LookupRecipientCampaignsRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.recipients) {\n m.recipients = proto.recipients.map(RecipientV2.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.recipients !== 'undefined' && this.recipients !== null) {\n toReturn['recipients'] = 'toApiJson' in this.recipients ? this.recipients.toApiJson() : this.recipients;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n return toReturn;\n }\n}\nclass LookupRecipientCampaignsResponse {\n static fromProto(proto) {\n let m = new LookupRecipientCampaignsResponse();\n m = Object.assign(m, proto);\n if (proto.recipientCampaigns) {\n m.recipientCampaigns = proto.recipientCampaigns.map(RecipientCampaignStruct.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientCampaigns !== 'undefined' && this.recipientCampaigns !== null) {\n toReturn['recipientCampaigns'] = 'toApiJson' in this.recipientCampaigns ? this.recipientCampaigns.toApiJson() : this.recipientCampaigns;\n }\n return toReturn;\n }\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass GetRecipientLinkClickStatsRequestPagedRequestOptions {\n static fromProto(proto) {\n let m = new GetRecipientLinkClickStatsRequestPagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n if (proto.totalResults) {\n m.totalResults = parseInt(proto.totalResults, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n if (typeof this.totalResults !== 'undefined') {\n toReturn['totalResults'] = this.totalResults;\n }\n return toReturn;\n }\n}\nclass PauseCampaignRequest {\n static fromProto(proto) {\n let m = new PauseCampaignRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n return toReturn;\n }\n}\nclass PauseRecipientCampaignRequest {\n static fromProto(proto) {\n let m = new PauseRecipientCampaignRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientCampaignId !== 'undefined') {\n toReturn['recipientCampaignId'] = this.recipientCampaignId;\n }\n return toReturn;\n }\n}\nclass PreviewEmailTemplateRequest {\n static fromProto(proto) {\n let m = new PreviewEmailTemplateRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.locale !== 'undefined') {\n toReturn['locale'] = this.locale;\n }\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n if (typeof this.contactId !== 'undefined') {\n toReturn['contactId'] = this.contactId;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n return toReturn;\n }\n}\nclass PreviewEmailTemplateResponse {\n static fromProto(proto) {\n let m = new PreviewEmailTemplateResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templateHtml !== 'undefined') {\n toReturn['templateHtml'] = this.templateHtml;\n }\n if (typeof this.subject !== 'undefined') {\n toReturn['subject'] = this.subject;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nclass RecipientClickStatsRecipient {\n static fromProto(proto) {\n let m = new RecipientClickStatsRecipient();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.emailAddress !== 'undefined') {\n toReturn['emailAddress'] = this.emailAddress;\n }\n return toReturn;\n }\n}\nclass RecipientCampaignPair {\n static fromProto(proto) {\n let m = new RecipientCampaignPair();\n m = Object.assign(m, proto);\n if (proto.recipientCampaign) {\n m.recipientCampaign = RecipientCampaignStruct.fromProto(proto.recipientCampaign);\n }\n if (proto.recipient) {\n m.recipient = CampaignRecipient.fromProto(proto.recipient);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientCampaign !== 'undefined' && this.recipientCampaign !== null) {\n toReturn['recipientCampaign'] = 'toApiJson' in this.recipientCampaign ? this.recipientCampaign.toApiJson() : this.recipientCampaign;\n }\n if (typeof this.recipient !== 'undefined' && this.recipient !== null) {\n toReturn['recipient'] = 'toApiJson' in this.recipient ? this.recipient.toApiJson() : this.recipient;\n }\n return toReturn;\n }\n}\nclass RecipientCampaignStepEventStruct {\n static fromProto(proto) {\n let m = new RecipientCampaignStepEventStruct();\n m = Object.assign(m, proto);\n if (proto.version) {\n m.version = parseInt(proto.version, 10);\n }\n if (proto.eventType) {\n m.eventType = enumStringToValue(CampaignStepEventType, proto.eventType);\n }\n if (proto.eventDate) {\n m.eventDate = new Date(proto.eventDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n if (typeof this.eventId !== 'undefined') {\n toReturn['eventId'] = this.eventId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.campaignStepId !== 'undefined') {\n toReturn['campaignStepId'] = this.campaignStepId;\n }\n if (typeof this.recipientId !== 'undefined') {\n toReturn['recipientId'] = this.recipientId;\n }\n if (typeof this.recipientCampaignId !== 'undefined') {\n toReturn['recipientCampaignId'] = this.recipientCampaignId;\n }\n if (typeof this.recipientCampaignStepId !== 'undefined') {\n toReturn['recipientCampaignStepId'] = this.recipientCampaignStepId;\n }\n if (typeof this.eventType !== 'undefined') {\n toReturn['eventType'] = this.eventType;\n }\n if (typeof this.eventDate !== 'undefined' && this.eventDate !== null) {\n toReturn['eventDate'] = 'toApiJson' in this.eventDate ? this.eventDate.toApiJson() : this.eventDate;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.probablyBot !== 'undefined') {\n toReturn['probablyBot'] = this.probablyBot;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.normalizedUrl !== 'undefined') {\n toReturn['normalizedUrl'] = this.normalizedUrl;\n }\n return toReturn;\n }\n}\nclass RecipientCampaignStruct {\n static fromProto(proto) {\n let m = new RecipientCampaignStruct();\n m = Object.assign(m, proto);\n if (proto.version) {\n m.version = parseInt(proto.version, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue(CampaignScheduleStatus, proto.status);\n }\n if (proto.schedule) {\n m.schedule = proto.schedule.map(ScheduledCampaignStepInterface.fromProto);\n }\n if (proto.scheduleStep) {\n m.scheduleStep = parseInt(proto.scheduleStep, 10);\n }\n if (proto.pausedDateTime) {\n m.pausedDateTime = new Date(proto.pausedDateTime);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n if (typeof this.recipientCampaignId !== 'undefined') {\n toReturn['recipientCampaignId'] = this.recipientCampaignId;\n }\n if (typeof this.recipientId !== 'undefined') {\n toReturn['recipientId'] = this.recipientId;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.fromId !== 'undefined') {\n toReturn['fromId'] = this.fromId;\n }\n if (typeof this.fromEmail !== 'undefined') {\n toReturn['fromEmail'] = this.fromEmail;\n }\n if (typeof this.fromName !== 'undefined') {\n toReturn['fromName'] = this.fromName;\n }\n if (typeof this.isActive !== 'undefined') {\n toReturn['isActive'] = this.isActive;\n }\n if (typeof this.isCompleted !== 'undefined') {\n toReturn['isCompleted'] = this.isCompleted;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.schedule !== 'undefined' && this.schedule !== null) {\n toReturn['schedule'] = 'toApiJson' in this.schedule ? this.schedule.toApiJson() : this.schedule;\n }\n if (typeof this.scheduleStep !== 'undefined') {\n toReturn['scheduleStep'] = this.scheduleStep;\n }\n if (typeof this.errorMessage !== 'undefined') {\n toReturn['errorMessage'] = this.errorMessage;\n }\n if (typeof this.pausedDateTime !== 'undefined' && this.pausedDateTime !== null) {\n toReturn['pausedDateTime'] = 'toApiJson' in this.pausedDateTime ? this.pausedDateTime.toApiJson() : this.pausedDateTime;\n }\n return toReturn;\n }\n}\nclass RecipientClickStats {\n static fromProto(proto) {\n let m = new RecipientClickStats();\n m = Object.assign(m, proto);\n if (proto.recipient) {\n m.recipient = RecipientClickStatsRecipient.fromProto(proto.recipient);\n }\n if (proto.account) {\n m.account = RecipientClickStatsAccount.fromProto(proto.account);\n }\n if (proto.recentDate) {\n m.recentDate = new Date(proto.recentDate);\n }\n if (proto.count) {\n m.count = parseInt(proto.count, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipient !== 'undefined' && this.recipient !== null) {\n toReturn['recipient'] = 'toApiJson' in this.recipient ? this.recipient.toApiJson() : this.recipient;\n }\n if (typeof this.account !== 'undefined' && this.account !== null) {\n toReturn['account'] = 'toApiJson' in this.account ? this.account.toApiJson() : this.account;\n }\n if (typeof this.recentDate !== 'undefined' && this.recentDate !== null) {\n toReturn['recentDate'] = 'toApiJson' in this.recentDate ? this.recentDate.toApiJson() : this.recentDate;\n }\n if (typeof this.count !== 'undefined') {\n toReturn['count'] = this.count;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass RecipientCriteria {\n static fromProto(proto) {\n let m = new RecipientCriteria();\n m = Object.assign(m, proto);\n if (proto.filterGroupV2) {\n m.filterGroupV2 = FilterGroup.fromProto(proto.filterGroupV2);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.filterGroupV2 !== 'undefined' && this.filterGroupV2 !== null) {\n toReturn['filterGroupV2'] = 'toApiJson' in this.filterGroupV2 ? this.filterGroupV2.toApiJson() : this.filterGroupV2;\n }\n return toReturn;\n }\n}\nclass RecipientV2 {\n static fromProto(proto) {\n let m = new RecipientV2();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue(RecipientType, proto.type);\n }\n if (proto.contact) {\n m.contact = Contact.fromProto(proto.contact);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.contact !== 'undefined' && this.contact !== null) {\n toReturn['contact'] = 'toApiJson' in this.contact ? this.contact.toApiJson() : this.contact;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.emailAddress !== 'undefined') {\n toReturn['emailAddress'] = this.emailAddress;\n }\n if (typeof this.recipientId !== 'undefined') {\n toReturn['recipientId'] = this.recipientId;\n }\n if (typeof this.externalId !== 'undefined') {\n toReturn['externalId'] = this.externalId;\n }\n return toReturn;\n }\n}\nclass RemoveTagFromCampaignRequest {\n static fromProto(proto) {\n let m = new RemoveTagFromCampaignRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.tagId !== 'undefined') {\n toReturn['tagId'] = this.tagId;\n }\n return toReturn;\n }\n}\nclass RenderRequest {\n static fromProto(proto) {\n let m = new RenderRequest();\n m = Object.assign(m, proto);\n if (proto.emailBuilderTemplate) {\n m.emailBuilderTemplate = EmailBuilderTemplate.fromProto(proto.emailBuilderTemplate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.emailBuilderTemplate !== 'undefined' && this.emailBuilderTemplate !== null) {\n toReturn['emailBuilderTemplate'] = 'toApiJson' in this.emailBuilderTemplate ? this.emailBuilderTemplate.toApiJson() : this.emailBuilderTemplate;\n }\n return toReturn;\n }\n}\nclass RenderResponse {\n static fromProto(proto) {\n let m = new RenderResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n return toReturn;\n }\n}\nclass ResumeRecipientCampaignRequest {\n static fromProto(proto) {\n let m = new ResumeRecipientCampaignRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientCampaignId !== 'undefined') {\n toReturn['recipientCampaignId'] = this.recipientCampaignId;\n }\n return toReturn;\n }\n}\nclass ScheduledCampaignStepInterface {\n static fromProto(proto) {\n let m = new ScheduledCampaignStepInterface();\n m = Object.assign(m, proto);\n if (proto.version) {\n m.version = parseInt(proto.version, 10);\n }\n if (proto.campaignStepType) {\n m.campaignStepType = enumStringToValue(CampaignStepType, proto.campaignStepType);\n }\n if (proto.scheduledDate) {\n m.scheduledDate = new Date(proto.scheduledDate);\n }\n if (proto.dateSent) {\n m.dateSent = new Date(proto.dateSent);\n }\n if (proto.secondsAfterLastEmail) {\n m.secondsAfterLastEmail = parseInt(proto.secondsAfterLastEmail, 10);\n }\n if (proto.sendStatus) {\n m.sendStatus = enumStringToValue(CampaignStepSendStatusType, proto.sendStatus);\n }\n if (proto.events) {\n m.events = proto.events.map(CampaignStepEvent.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n if (typeof this.campaignStepId !== 'undefined') {\n toReturn['campaignStepId'] = this.campaignStepId;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.recipientCampaignId !== 'undefined') {\n toReturn['recipientCampaignId'] = this.recipientCampaignId;\n }\n if (typeof this.stepId !== 'undefined') {\n toReturn['stepId'] = this.stepId;\n }\n if (typeof this.campaignStepType !== 'undefined') {\n toReturn['campaignStepType'] = this.campaignStepType;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.scheduledDate !== 'undefined' && this.scheduledDate !== null) {\n toReturn['scheduledDate'] = 'toApiJson' in this.scheduledDate ? this.scheduledDate.toApiJson() : this.scheduledDate;\n }\n if (typeof this.dateSent !== 'undefined' && this.dateSent !== null) {\n toReturn['dateSent'] = 'toApiJson' in this.dateSent ? this.dateSent.toApiJson() : this.dateSent;\n }\n if (typeof this.secondsAfterLastEmail !== 'undefined') {\n toReturn['secondsAfterLastEmail'] = this.secondsAfterLastEmail;\n }\n if (typeof this.sendStatus !== 'undefined') {\n toReturn['sendStatus'] = this.sendStatus;\n }\n if (typeof this.completed !== 'undefined') {\n toReturn['completed'] = this.completed;\n }\n if (typeof this.events !== 'undefined' && this.events !== null) {\n toReturn['events'] = 'toApiJson' in this.events ? this.events.toApiJson() : this.events;\n }\n return toReturn;\n }\n}\nclass SendCampaignStepTestEmailRequest {\n static fromProto(proto) {\n let m = new SendCampaignStepTestEmailRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.stepData) {\n m.stepData = Object.keys(proto.stepData).reduce((obj, k) => {\n obj[k] = proto.stepData[k];\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.campaignStepId !== 'undefined') {\n toReturn['campaignStepId'] = this.campaignStepId;\n }\n if (typeof this.sendToUserId !== 'undefined') {\n toReturn['sendToUserId'] = this.sendToUserId;\n }\n if (typeof this.stepData !== 'undefined' && this.stepData !== null) {\n toReturn['stepData'] = 'toApiJson' in this.stepData ? this.stepData.toApiJson() : this.stepData;\n }\n return toReturn;\n }\n}\nclass SendCampaignStepTestEmailResponse {\n static fromProto(proto) {\n let m = new SendCampaignStepTestEmailResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.emailId !== 'undefined') {\n toReturn['emailId'] = this.emailId;\n }\n return toReturn;\n }\n}\nclass SendPreviewEmailRequest {\n static fromProto(proto) {\n let m = new SendPreviewEmailRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.htmlContent !== 'undefined') {\n toReturn['htmlContent'] = this.htmlContent;\n }\n if (typeof this.subject !== 'undefined') {\n toReturn['subject'] = this.subject;\n }\n if (typeof this.recipientUserId !== 'undefined') {\n toReturn['recipientUserId'] = this.recipientUserId;\n }\n return toReturn;\n }\n}\nclass SendRecipientCampaignStepEmailRequest {\n static fromProto(proto) {\n let m = new SendRecipientCampaignStepEmailRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.ignoreCampaignState !== 'undefined') {\n toReturn['ignoreCampaignState'] = this.ignoreCampaignState;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.recipientCampaignId !== 'undefined') {\n toReturn['recipientCampaignId'] = this.recipientCampaignId;\n }\n if (typeof this.recipientCampaignStepId !== 'undefined') {\n toReturn['recipientCampaignStepId'] = this.recipientCampaignStepId;\n }\n return toReturn;\n }\n}\nclass Sender {\n static fromProto(proto) {\n let m = new Sender();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue(SenderType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass SenderOptions {\n static fromProto(proto) {\n let m = new SenderOptions();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.username !== 'undefined') {\n toReturn['username'] = this.username;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.replyTo !== 'undefined') {\n toReturn['replyTo'] = this.replyTo;\n }\n if (typeof this.salespersonId !== 'undefined') {\n toReturn['salespersonId'] = this.salespersonId;\n }\n if (typeof this.sendFromAssignedSalesperson !== 'undefined') {\n toReturn['sendFromAssignedSalesperson'] = this.sendFromAssignedSalesperson;\n }\n return toReturn;\n }\n}\nclass SortOptions {\n static fromProto(proto) {\n let m = new SortOptions();\n m = Object.assign(m, proto);\n if (proto.field) {\n m.field = enumStringToValue(SortField, proto.field);\n }\n if (proto.direction) {\n m.direction = enumStringToValue(SortDirection, proto.direction);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.field !== 'undefined') {\n toReturn['field'] = this.field;\n }\n if (typeof this.direction !== 'undefined') {\n toReturn['direction'] = this.direction;\n }\n return toReturn;\n }\n}\nclass GetCampaignStepContentRequestStepDataEntry {\n static fromProto(proto) {\n let m = new GetCampaignStepContentRequestStepDataEntry();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass SendCampaignStepTestEmailRequestStepDataEntry {\n static fromProto(proto) {\n let m = new SendCampaignStepTestEmailRequestStepDataEntry();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass StepDataResponse {\n static fromProto(proto) {\n let m = new StepDataResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.campaignStepId !== 'undefined') {\n toReturn['campaignStepId'] = this.campaignStepId;\n }\n return toReturn;\n }\n}\nclass UnpauseCampaignRequest {\n static fromProto(proto) {\n let m = new UnpauseCampaignRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n return toReturn;\n }\n}\nclass UpdateCampaignNameRequest {\n static fromProto(proto) {\n let m = new UpdateCampaignNameRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.locale !== 'undefined') {\n toReturn['locale'] = this.locale;\n }\n return toReturn;\n }\n}\nclass UpdateConfigRequest {\n static fromProto(proto) {\n let m = new UpdateConfigRequest();\n m = Object.assign(m, proto);\n if (proto.daysEmailsCanBeSent) {\n m.daysEmailsCanBeSent = proto.daysEmailsCanBeSent.map(v => enumStringToValue(DaysOfTheWeek, v));\n }\n if (proto.recipientsAddedRateLimit) {\n m.recipientsAddedRateLimit = parseInt(proto.recipientsAddedRateLimit, 10);\n }\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.timeZoneForEmailsSent !== 'undefined') {\n toReturn['timeZoneForEmailsSent'] = this.timeZoneForEmailsSent;\n }\n if (typeof this.daysEmailsCanBeSent !== 'undefined') {\n toReturn['daysEmailsCanBeSent'] = this.daysEmailsCanBeSent;\n }\n if (typeof this.recipientsAddedRateLimitEnabled !== 'undefined') {\n toReturn['recipientsAddedRateLimitEnabled'] = this.recipientsAddedRateLimitEnabled;\n }\n if (typeof this.recipientsAddedRateLimit !== 'undefined') {\n toReturn['recipientsAddedRateLimit'] = this.recipientsAddedRateLimit;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.emailSchedulingDay !== 'undefined') {\n toReturn['emailSchedulingDay'] = this.emailSchedulingDay;\n }\n return toReturn;\n }\n}\nclass UpdateConfigResponse {\n static fromProto(proto) {\n let m = new UpdateConfigResponse();\n m = Object.assign(m, proto);\n if (proto.rateLimit) {\n m.rateLimit = parseInt(proto.rateLimit, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.timezone !== 'undefined') {\n toReturn['timezone'] = this.timezone;\n }\n if (typeof this.days !== 'undefined') {\n toReturn['days'] = this.days;\n }\n if (typeof this.rateLimited !== 'undefined') {\n toReturn['rateLimited'] = this.rateLimited;\n }\n if (typeof this.rateLimit !== 'undefined') {\n toReturn['rateLimit'] = this.rateLimit;\n }\n return toReturn;\n }\n}\nclass UpdateEmailTemplateRequest {\n static fromProto(proto) {\n let m = new UpdateEmailTemplateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.subject !== 'undefined') {\n toReturn['subject'] = this.subject;\n }\n if (typeof this.htmlBody !== 'undefined') {\n toReturn['htmlBody'] = this.htmlBody;\n }\n if (typeof this.fullHtml !== 'undefined') {\n toReturn['fullHtml'] = this.fullHtml;\n }\n if (typeof this.updatedByUserEmail !== 'undefined') {\n toReturn['updatedByUserEmail'] = this.updatedByUserEmail;\n }\n return toReturn;\n }\n}\nclass UpdateQuotaLimitRequest {\n static fromProto(proto) {\n let m = new UpdateQuotaLimitRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.type) {\n m.type = enumStringToValue(CampaignQuotaCategory, proto.type);\n }\n if (proto.limit) {\n m.limit = parseInt(proto.limit, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.limit !== 'undefined') {\n toReturn['limit'] = this.limit;\n }\n return toReturn;\n }\n}\nclass UpdateRecipientRequest {\n static fromProto(proto) {\n let m = new UpdateRecipientRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.recipient) {\n m.recipient = RecipientV2.fromProto(proto.recipient);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recipientId !== 'undefined') {\n toReturn['recipientId'] = this.recipientId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.recipient !== 'undefined' && this.recipient !== null) {\n toReturn['recipient'] = 'toApiJson' in this.recipient ? this.recipient.toApiJson() : this.recipient;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n return toReturn;\n }\n}\nclass UpdateRequest {\n static fromProto(proto) {\n let m = new UpdateRequest();\n m = Object.assign(m, proto);\n if (proto.emailBuilderTemplate) {\n m.emailBuilderTemplate = EmailBuilderTemplate.fromProto(proto.emailBuilderTemplate);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.emailBuilderTemplate !== 'undefined' && this.emailBuilderTemplate !== null) {\n toReturn['emailBuilderTemplate'] = 'toApiJson' in this.emailBuilderTemplate ? this.emailBuilderTemplate.toApiJson() : this.emailBuilderTemplate;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateStepOnCampaignRequest {\n static fromProto(proto) {\n let m = new UpdateStepOnCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n if (proto.secondsAfterLastStep) {\n m.secondsAfterLastStep = parseInt(proto.secondsAfterLastStep, 10);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.campaignStepId !== 'undefined') {\n toReturn['campaignStepId'] = this.campaignStepId;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.contentId !== 'undefined') {\n toReturn['contentId'] = this.contentId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.secondsAfterLastStep !== 'undefined') {\n toReturn['secondsAfterLastStep'] = this.secondsAfterLastStep;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateTemplateRequest {\n static fromProto(proto) {\n let m = new UpdateTemplateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n return toReturn;\n }\n}\nclass UpsertCampaignRequest {\n static fromProto(proto) {\n let m = new UpsertCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.focus) {\n m.focus = enumStringToValue(Focuses, proto.focus);\n }\n if (proto.status) {\n m.status = enumStringToValue(Statuses, proto.status);\n }\n if (proto.campaignSchedule) {\n m.campaignSchedule = proto.campaignSchedule.map(CampaignStepInterface.fromProto);\n }\n if (proto.campaignScheduleVersion) {\n m.campaignScheduleVersion = parseInt(proto.campaignScheduleVersion, 10);\n }\n if (proto.version) {\n m.version = parseInt(proto.version, 10);\n }\n if (proto.published) {\n m.published = new Date(proto.published);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n if (proto.sender) {\n m.sender = Sender.fromProto(proto.sender);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.focus !== 'undefined') {\n toReturn['focus'] = this.focus;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.parentCampaignId !== 'undefined') {\n toReturn['parentCampaignId'] = this.parentCampaignId;\n }\n if (typeof this.rootCampaignId !== 'undefined') {\n toReturn['rootCampaignId'] = this.rootCampaignId;\n }\n if (typeof this.createdUser !== 'undefined') {\n toReturn['createdUser'] = this.createdUser;\n }\n if (typeof this.updatedUser !== 'undefined') {\n toReturn['updatedUser'] = this.updatedUser;\n }\n if (typeof this.publishedUser !== 'undefined') {\n toReturn['publishedUser'] = this.publishedUser;\n }\n if (typeof this.locale !== 'undefined') {\n toReturn['locale'] = this.locale;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.campaignSchedule !== 'undefined' && this.campaignSchedule !== null) {\n toReturn['campaignSchedule'] = 'toApiJson' in this.campaignSchedule ? this.campaignSchedule.toApiJson() : this.campaignSchedule;\n }\n if (typeof this.isEnabled !== 'undefined') {\n toReturn['isEnabled'] = this.isEnabled;\n }\n if (typeof this.hiddenForPartners !== 'undefined') {\n toReturn['hiddenForPartners'] = this.hiddenForPartners;\n }\n if (typeof this.campaignScheduleVersion !== 'undefined') {\n toReturn['campaignScheduleVersion'] = this.campaignScheduleVersion;\n }\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n if (typeof this.published !== 'undefined' && this.published !== null) {\n toReturn['published'] = 'toApiJson' in this.published ? this.published.toApiJson() : this.published;\n }\n if (typeof this.emailCategoryId !== 'undefined') {\n toReturn['emailCategoryId'] = this.emailCategoryId;\n }\n if (typeof this.isPremade !== 'undefined') {\n toReturn['isPremade'] = this.isPremade;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n return toReturn;\n }\n}\nclass UpsertConfigRequest {\n static fromProto(proto) {\n let m = new UpsertConfigRequest();\n m = Object.assign(m, proto);\n if (proto.daysEmailsCanBeSent) {\n m.daysEmailsCanBeSent = proto.daysEmailsCanBeSent.map(v => enumStringToValue(DaysOfTheWeek, v));\n }\n if (proto.recipientsAddedRateLimit) {\n m.recipientsAddedRateLimit = parseInt(proto.recipientsAddedRateLimit, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.timeZoneForEmailsSent !== 'undefined') {\n toReturn['timeZoneForEmailsSent'] = this.timeZoneForEmailsSent;\n }\n if (typeof this.daysEmailsCanBeSent !== 'undefined') {\n toReturn['daysEmailsCanBeSent'] = this.daysEmailsCanBeSent;\n }\n if (typeof this.recipientsAddedRateLimitEnabled !== 'undefined') {\n toReturn['recipientsAddedRateLimitEnabled'] = this.recipientsAddedRateLimitEnabled;\n }\n if (typeof this.recipientsAddedRateLimit !== 'undefined') {\n toReturn['recipientsAddedRateLimit'] = this.recipientsAddedRateLimit;\n }\n return toReturn;\n }\n}\nclass UpsertRecipientCampaignActivatedEventRequest {\n static fromProto(proto) {\n let m = new UpsertRecipientCampaignActivatedEventRequest();\n m = Object.assign(m, proto);\n if (proto.version) {\n m.version = parseInt(proto.version, 10);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n if (typeof this.recipientCampaignId !== 'undefined') {\n toReturn['recipientCampaignId'] = this.recipientCampaignId;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.fromId !== 'undefined') {\n toReturn['fromId'] = this.fromId;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpsertRecipientCampaignRequest {\n static fromProto(proto) {\n let m = new UpsertRecipientCampaignRequest();\n m = Object.assign(m, proto);\n if (proto.version) {\n m.version = parseInt(proto.version, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue(CampaignScheduleStatus, proto.status);\n }\n if (proto.schedule) {\n m.schedule = proto.schedule.map(ScheduledCampaignStepInterface.fromProto);\n }\n if (proto.scheduleStep) {\n m.scheduleStep = parseInt(proto.scheduleStep, 10);\n }\n if (proto.pausedDateTime) {\n m.pausedDateTime = new Date(proto.pausedDateTime);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n if (typeof this.recipientCampaignId !== 'undefined') {\n toReturn['recipientCampaignId'] = this.recipientCampaignId;\n }\n if (typeof this.recipientId !== 'undefined') {\n toReturn['recipientId'] = this.recipientId;\n }\n if (typeof this.campaignId !== 'undefined') {\n toReturn['campaignId'] = this.campaignId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.fromId !== 'undefined') {\n toReturn['fromId'] = this.fromId;\n }\n if (typeof this.fromEmail !== 'undefined') {\n toReturn['fromEmail'] = this.fromEmail;\n }\n if (typeof this.fromName !== 'undefined') {\n toReturn['fromName'] = this.fromName;\n }\n if (typeof this.isActive !== 'undefined') {\n toReturn['isActive'] = this.isActive;\n }\n if (typeof this.isCompleted !== 'undefined') {\n toReturn['isCompleted'] = this.isCompleted;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.schedule !== 'undefined' && this.schedule !== null) {\n toReturn['schedule'] = 'toApiJson' in this.schedule ? this.schedule.toApiJson() : this.schedule;\n }\n if (typeof this.scheduleStep !== 'undefined') {\n toReturn['scheduleStep'] = this.scheduleStep;\n }\n if (typeof this.errorMessage !== 'undefined') {\n toReturn['errorMessage'] = this.errorMessage;\n }\n if (typeof this.pausedDateTime !== 'undefined' && this.pausedDateTime !== null) {\n toReturn['pausedDateTime'] = 'toApiJson' in this.pausedDateTime ? this.pausedDateTime.toApiJson() : this.pausedDateTime;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n if (typeof this.replyTo !== 'undefined') {\n toReturn['replyTo'] = this.replyTo;\n }\n if (typeof this.sendNow !== 'undefined') {\n toReturn['sendNow'] = this.sendNow;\n }\n return toReturn;\n }\n}\nclass UpsertRecipientCampaignStepEventRequest {\n static fromProto(proto) {\n let m = new UpsertRecipientCampaignStepEventRequest();\n m = Object.assign(m, proto);\n if (proto.stepEvent) {\n m.stepEvent = RecipientCampaignStepEventStruct.fromProto(proto.stepEvent);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stepEvent !== 'undefined' && this.stepEvent !== null) {\n toReturn['stepEvent'] = 'toApiJson' in this.stepEvent ? this.stepEvent.toApiJson() : this.stepEvent;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'campaigns-api.vendasta-local.com',\n 'test': '',\n 'demo': 'campaigns-demo.apigateway.co',\n 'prod': 'campaigns-prod.apigateway.co',\n 'production': 'campaigns-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ActivationsApiService = /*#__PURE__*/(() => {\n class ActivationsApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n activateProductForSender(r) {\n const request = r.toApiJson ? r : new ActivateProductForSenderRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Activations/ActivateProductForSender\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n isProductActive(r) {\n const request = r.toApiJson ? r : new IsProductActiveForSenderRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Activations/IsProductActive\", request.toApiJson(), this.apiOptions()).pipe(map(resp => IsProductActiveForSenderResponse.fromProto(resp)));\n }\n deactivateProduct(r) {\n const request = r.toApiJson ? r : new DeactivateProductForSenderRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Activations/DeactivateProduct\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n isFeatureActive(r) {\n const request = r.toApiJson ? r : new IsFeatureActiveForSenderRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Activations/IsFeatureActive\", request.toApiJson(), this.apiOptions()).pipe(map(resp => IsFeatureActiveForSenderResponse.fromProto(resp)));\n }\n }\n ActivationsApiService.ɵfac = function ActivationsApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ActivationsApiService)();\n };\n ActivationsApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ActivationsApiService,\n factory: ActivationsApiService.ɵfac,\n providedIn: 'root'\n });\n return ActivationsApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet CampaignConfigApiService = /*#__PURE__*/(() => {\n class CampaignConfigApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n upsertConfig(r) {\n const request = r.toApiJson ? r : new UpsertConfigRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignConfig/UpsertConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getConfig(r) {\n const request = r.toApiJson ? r : new GetConfigRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignConfig/GetConfig\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetConfigResponse.fromProto(resp)));\n }\n updateConfig(r) {\n const request = r.toApiJson ? r : new UpdateConfigRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignConfig/UpdateConfig\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateConfigResponse.fromProto(resp)));\n }\n }\n CampaignConfigApiService.ɵfac = function CampaignConfigApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CampaignConfigApiService)();\n };\n CampaignConfigApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CampaignConfigApiService,\n factory: CampaignConfigApiService.ɵfac,\n providedIn: 'root'\n });\n return CampaignConfigApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet CampaignQuotaApiService = /*#__PURE__*/(() => {\n class CampaignQuotaApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getCampaignQuota(r) {\n const request = r.toApiJson ? r : new GetCampaignQuotaRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignQuota/GetCampaignQuota\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetCampaignQuotaResponse.fromProto(resp)));\n }\n createQuota(r) {\n const request = r.toApiJson ? r : new CreateQuotaRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignQuota/CreateQuota\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateQuotaLimit(r) {\n const request = r.toApiJson ? r : new UpdateQuotaLimitRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignQuota/UpdateQuotaLimit\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n CampaignQuotaApiService.ɵfac = function CampaignQuotaApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CampaignQuotaApiService)();\n };\n CampaignQuotaApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CampaignQuotaApiService,\n factory: CampaignQuotaApiService.ɵfac,\n providedIn: 'root'\n });\n return CampaignQuotaApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet CampaignStatsApiService = /*#__PURE__*/(() => {\n class CampaignStatsApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getAggregatedCampaignStats(r) {\n const request = r.toApiJson ? r : new GetAggregatedCampaignStatsRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignStats/GetAggregatedCampaignStats\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetAggregatedCampaignStatsResponse.fromProto(resp)));\n }\n listCampaignStats(r) {\n const request = r.toApiJson ? r : new ListCampaignStatsRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignStats/ListCampaignStats\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListCampaignStatsResponse.fromProto(resp)));\n }\n getCampaignDetailsStats(r) {\n const request = r.toApiJson ? r : new GetCampaignDetailsStatsRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignStats/GetCampaignDetailsStats\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetCampaignDetailsStatsResponse.fromProto(resp)));\n }\n getLinkStats(r) {\n const request = r.toApiJson ? r : new GetLinkStatsRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignStats/GetLinkStats\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetLinkStatsResponse.fromProto(resp)));\n }\n getRecipientLinkClickStats(r) {\n const request = r.toApiJson ? r : new GetRecipientLinkClickStatsRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignStats/GetRecipientLinkClickStats\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRecipientLinkClickStatsResponse.fromProto(resp)));\n }\n getCampaignStepStats(r) {\n const request = r.toApiJson ? r : new GetCampaignStepStatsRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignStats/GetCampaignStepStats\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetCampaignStepStatsResponse.fromProto(resp)));\n }\n exportRecipientLinkClickStats(r) {\n const request = r.toApiJson ? r : new ExportRecipientLinkClickStatsRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignStats/ExportRecipientLinkClickStats\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listCampaignStatsForSender(r) {\n const request = r.toApiJson ? r : new ListCampaignStatsForSenderRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignStats/ListCampaignStatsForSender\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListCampaignStatsForSenderResponse.fromProto(resp)));\n }\n }\n CampaignStatsApiService.ɵfac = function CampaignStatsApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CampaignStatsApiService)();\n };\n CampaignStatsApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CampaignStatsApiService,\n factory: CampaignStatsApiService.ɵfac,\n providedIn: 'root'\n });\n return CampaignStatsApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet CampaignTaggingApiService = /*#__PURE__*/(() => {\n class CampaignTaggingApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateTagRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignTagging/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateTagResponse.fromProto(resp)));\n }\n listTagsForSender(r) {\n const request = r.toApiJson ? r : new ListTagsForSenderRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignTagging/ListTagsForSender\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListTagsForSenderResponse.fromProto(resp)));\n }\n addTagToCampaign(r) {\n const request = r.toApiJson ? r : new AddTagToCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignTagging/AddTagToCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n removeTagFromCampaign(r) {\n const request = r.toApiJson ? r : new RemoveTagFromCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignTagging/RemoveTagFromCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listTagsForCampaign(r) {\n const request = r.toApiJson ? r : new ListTagsForCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignTagging/ListTagsForCampaign\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListTagsForCampaignResponse.fromProto(resp)));\n }\n delete(r) {\n const request = r.toApiJson ? r : new DeleteTagRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.CampaignTagging/Delete\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n CampaignTaggingApiService.ɵfac = function CampaignTaggingApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CampaignTaggingApiService)();\n };\n CampaignTaggingApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CampaignTaggingApiService,\n factory: CampaignTaggingApiService.ɵfac,\n providedIn: 'root'\n });\n return CampaignTaggingApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet CampaignsApiService = /*#__PURE__*/(() => {\n class CampaignsApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n deleteCampaign(r) {\n const request = r.toApiJson ? r : new DeleteCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/DeleteCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n upsertCampaign(r) {\n const request = r.toApiJson ? r : new UpsertCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/UpsertCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateCampaignName(r) {\n const request = r.toApiJson ? r : new UpdateCampaignNameRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/UpdateCampaignName\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listCampaigns(r) {\n const request = r.toApiJson ? r : new ListCampaignsRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/ListCampaigns\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListCampaignsResponse.fromProto(resp)));\n }\n listRecommendedCampaigns(r) {\n const request = r.toApiJson ? r : new ListRecommendedCampaignsRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/ListRecommendedCampaigns\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListCampaignsResponse.fromProto(resp)));\n }\n getCampaign(r) {\n const request = r.toApiJson ? r : new GetCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/GetCampaign\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetCampaignResponse.fromProto(resp)));\n }\n getMultiCampaigns(r) {\n const request = r.toApiJson ? r : new GetMultiCampaignsRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/GetMultiCampaigns\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiCampaignsResponse.fromProto(resp)));\n }\n duplicateCampaignStepAsync(r) {\n const request = r.toApiJson ? r : new DuplicateCampaignStepRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/DuplicateCampaignStepAsync\", request.toApiJson(), this.apiOptions()).pipe(map(resp => DuplicateCampaignStepResponse.fromProto(resp)));\n }\n checkDuplicateCampaignStepStatus(r) {\n const request = r.toApiJson ? r : new CheckDuplicateCampaignStepStatusRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/CheckDuplicateCampaignStepStatus\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CheckDuplicateCampaignStepStatusResponse.fromProto(resp)));\n }\n duplicateCampaignAsync(r) {\n const request = r.toApiJson ? r : new DuplicateCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/DuplicateCampaignAsync\", request.toApiJson(), this.apiOptions()).pipe(map(resp => DuplicateCampaignResponse.fromProto(resp)));\n }\n duplicateCampaignAsyncV2(r) {\n const request = r.toApiJson ? r : new DuplicateCampaignRequestV2(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/DuplicateCampaignAsyncV2\", request.toApiJson(), this.apiOptions()).pipe(map(resp => DuplicateCampaignResponse.fromProto(resp)));\n }\n checkDuplicateCampaignStatus(r) {\n const request = r.toApiJson ? r : new CheckDuplicateCampaignStatusRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/CheckDuplicateCampaignStatus\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CheckDuplicateCampaignStatusResponse.fromProto(resp)));\n }\n duplicateAndRecommendCampaign(r) {\n const request = r.toApiJson ? r : new DuplicateAndRecommendCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/DuplicateAndRecommendCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n sendRecipientCampaignStepEmail(r) {\n const request = r.toApiJson ? r : new SendRecipientCampaignStepEmailRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/SendRecipientCampaignStepEmail\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n executeStep(r) {\n const request = r.toApiJson ? r : new ExecuteStepRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/ExecuteStep\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n createCampaign(r) {\n const request = r.toApiJson ? r : new CreateCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/CreateCampaign\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateCampaignResponse.fromProto(resp)));\n }\n addStepToCampaign(r) {\n const request = r.toApiJson ? r : new AddStepToCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/AddStepToCampaign\", request.toApiJson(), this.apiOptions()).pipe(map(resp => StepDataResponse.fromProto(resp)));\n }\n getCampaignStepContent(r) {\n const request = r.toApiJson ? r : new GetCampaignStepContentRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/GetCampaignStepContent\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetCampaignStepContentResponse.fromProto(resp)));\n }\n sendCampaignStepTestEmail(r) {\n const request = r.toApiJson ? r : new SendCampaignStepTestEmailRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/SendCampaignStepTestEmail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SendCampaignStepTestEmailResponse.fromProto(resp)));\n }\n updateStepOnCampaign(r) {\n const request = r.toApiJson ? r : new UpdateStepOnCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/UpdateStepOnCampaign\", request.toApiJson(), this.apiOptions()).pipe(map(resp => StepDataResponse.fromProto(resp)));\n }\n listCampaignsV2(r) {\n const request = r.toApiJson ? r : new ListCampaignsV2Request(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/ListCampaignsV2\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListCampaignsV2Response.fromProto(resp)));\n }\n pauseCampaign(r) {\n const request = r.toApiJson ? r : new PauseCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/PauseCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n unpauseCampaign(r) {\n const request = r.toApiJson ? r : new UnpauseCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/UnpauseCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getAvailableStepTypesForSender(r) {\n const request = r.toApiJson ? r : new GetAvailableStepTypesForSenderRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Campaigns/GetAvailableStepTypesForSender\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetAvailableStepTypesForSenderResponse.fromProto(resp)));\n }\n }\n CampaignsApiService.ɵfac = function CampaignsApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CampaignsApiService)();\n };\n CampaignsApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CampaignsApiService,\n factory: CampaignsApiService.ɵfac,\n providedIn: 'root'\n });\n return CampaignsApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet EmailBuilderApiService = /*#__PURE__*/(() => {\n class EmailBuilderApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.EmailBuilder/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateResponse.fromProto(resp)));\n }\n get(r) {\n const request = r.toApiJson ? r : new GetRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.EmailBuilder/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.EmailBuilder/Update\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n delete(r) {\n const request = r.toApiJson ? r : new DeleteRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.EmailBuilder/Delete\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n render(r) {\n const request = r.toApiJson ? r : new RenderRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.EmailBuilder/Render\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RenderResponse.fromProto(resp)));\n }\n convert(r) {\n const request = r.toApiJson ? r : new ConvertLegacyTemplateRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.EmailBuilder/Convert\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ConvertLegacyTemplateResponse.fromProto(resp)));\n }\n }\n EmailBuilderApiService.ɵfac = function EmailBuilderApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || EmailBuilderApiService)();\n };\n EmailBuilderApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: EmailBuilderApiService,\n factory: EmailBuilderApiService.ɵfac,\n providedIn: 'root'\n });\n return EmailBuilderApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet EmailTemplateApiService = /*#__PURE__*/(() => {\n class EmailTemplateApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createEmailTemplate(r) {\n const request = r.toApiJson ? r : new CreateEmailTemplateRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.EmailTemplate/CreateEmailTemplate\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateEmailTemplate(r) {\n const request = r.toApiJson ? r : new UpdateEmailTemplateRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.EmailTemplate/UpdateEmailTemplate\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getEmailTemplate(r) {\n const request = r.toApiJson ? r : new GetEmailTemplateRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.EmailTemplate/GetEmailTemplate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetEmailTemplateResponse.fromProto(resp)));\n }\n getEmailTemplates(r) {\n const request = r.toApiJson ? r : new GetEmailTemplatesRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.EmailTemplate/GetEmailTemplates\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetEmailTemplatesResponse.fromProto(resp)));\n }\n previewEmailTemplate(r) {\n const request = r.toApiJson ? r : new PreviewEmailTemplateRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.EmailTemplate/PreviewEmailTemplate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => PreviewEmailTemplateResponse.fromProto(resp)));\n }\n listLinksInTemplate(r) {\n const request = r.toApiJson ? r : new ListLinksInTemplateRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.EmailTemplate/ListLinksInTemplate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListLinksInTemplateResponse.fromProto(resp)));\n }\n extractLinkTrackingDataForTemplate(r) {\n const request = r.toApiJson ? r : new ExtractLinkTrackingDataForTemplateRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.EmailTemplate/ExtractLinkTrackingDataForTemplate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ExtractLinkTrackingDataForTemplateResponse.fromProto(resp)));\n }\n sendPreview(r) {\n const request = r.toApiJson ? r : new SendPreviewEmailRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.EmailTemplate/SendPreview\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n EmailTemplateApiService.ɵfac = function EmailTemplateApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || EmailTemplateApiService)();\n };\n EmailTemplateApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: EmailTemplateApiService,\n factory: EmailTemplateApiService.ɵfac,\n providedIn: 'root'\n });\n return EmailTemplateApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet LegacyAppengineAPIApiService = /*#__PURE__*/(() => {\n class LegacyAppengineAPIApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n rateLimitedAddAccountGroupToCampaign(r) {\n const request = r.toApiJson ? r : new LegacyAddAccountGroupToCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.LegacyAppengineAPIService/RateLimitedAddAccountGroupToCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n rateLimitedAddToCampaign(r) {\n const request = r.toApiJson ? r : new LegacyRateLimitedAddToCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.LegacyAppengineAPIService/RateLimitedAddToCampaign\", request.toApiJson(), this.apiOptions()).pipe(map(resp => LegacyRateLimitedAddToCampaignResponse.fromProto(resp)));\n }\n pauseAccountGroupOnCampaign(r) {\n const request = r.toApiJson ? r : new LegacyPauseAccountGroupOnCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.LegacyAppengineAPIService/PauseAccountGroupOnCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getRecipientCampaignsByAgid(r) {\n const request = r.toApiJson ? r : new LegacyGetRecipientCampaignsByAgidRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.LegacyAppengineAPIService/GetRecipientCampaignsByAgid\", request.toApiJson(), this.apiOptions()).pipe(map(resp => LegacyGetRecipientCampaignsByAgidResponse.fromProto(resp)));\n }\n updateRecipientCampaignStatus(r) {\n const request = r.toApiJson ? r : new LegacyUpdateRecipientCampaignStatusRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.LegacyAppengineAPIService/UpdateRecipientCampaignStatus\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n LegacyAppengineAPIApiService.ɵfac = function LegacyAppengineAPIApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LegacyAppengineAPIApiService)();\n };\n LegacyAppengineAPIApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: LegacyAppengineAPIApiService,\n factory: LegacyAppengineAPIApiService.ɵfac,\n providedIn: 'root'\n });\n return LegacyAppengineAPIApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet RecipientApiService = /*#__PURE__*/(() => {\n class RecipientApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createRecipient(r) {\n const request = r.toApiJson ? r : new CreateRecipientRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Recipient/CreateRecipient\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateRecipient(r) {\n const request = r.toApiJson ? r : new UpdateRecipientRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Recipient/UpdateRecipient\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getRecipient(r) {\n const request = r.toApiJson ? r : new GetRecipientRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Recipient/GetRecipient\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRecipientResponse.fromProto(resp)));\n }\n listRecipients(r) {\n const request = r.toApiJson ? r : new ListRecipientsRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Recipient/ListRecipients\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListRecipientsResponse.fromProto(resp)));\n }\n }\n RecipientApiService.ɵfac = function RecipientApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RecipientApiService)();\n };\n RecipientApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RecipientApiService,\n factory: RecipientApiService.ɵfac,\n providedIn: 'root'\n });\n return RecipientApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet RecipientCampaignApiService = /*#__PURE__*/(() => {\n class RecipientCampaignApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n upsertRecipientCampaign(r) {\n const request = r.toApiJson ? r : new UpsertRecipientCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.RecipientCampaign/UpsertRecipientCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listRecipientCampaigns(r) {\n const request = r.toApiJson ? r : new ListRecipientCampaignsRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.RecipientCampaign/ListRecipientCampaigns\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListRecipientCampaignsResponse.fromProto(resp)));\n }\n pauseRecipientCampaign(r) {\n const request = r.toApiJson ? r : new PauseRecipientCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.RecipientCampaign/PauseRecipientCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n resumeRecipientCampaign(r) {\n const request = r.toApiJson ? r : new ResumeRecipientCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.RecipientCampaign/ResumeRecipientCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getRecipientCampaign(r) {\n const request = r.toApiJson ? r : new GetRecipientCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.RecipientCampaign/GetRecipientCampaign\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRecipientCampaignResponse.fromProto(resp)));\n }\n lookupRecipientCampaign(r) {\n const request = r.toApiJson ? r : new LookupRecipientCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.RecipientCampaign/LookupRecipientCampaign\", request.toApiJson(), this.apiOptions()).pipe(map(resp => LookupRecipientCampaignResponse.fromProto(resp)));\n }\n lookupRecipientCampaigns(r) {\n const request = r.toApiJson ? r : new LookupRecipientCampaignsRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.RecipientCampaign/LookupRecipientCampaigns\", request.toApiJson(), this.apiOptions()).pipe(map(resp => LookupRecipientCampaignsResponse.fromProto(resp)));\n }\n addContactToCampaign(r) {\n const request = r.toApiJson ? r : new AddContactToCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.RecipientCampaign/AddContactToCampaign\", request.toApiJson(), this.apiOptions()).pipe(map(resp => AddContactToCampaignResponse.fromProto(resp)));\n }\n bulkAddContactsToCampaign(r) {\n const request = r.toApiJson ? r : new BulkAddContactsToCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.RecipientCampaign/BulkAddContactsToCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n bulkAddContactsIdsToCampaign(r) {\n const request = r.toApiJson ? r : new BulkAddContactIdsToCampaignRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.RecipientCampaign/BulkAddContactsIdsToCampaign\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n RecipientCampaignApiService.ɵfac = function RecipientCampaignApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RecipientCampaignApiService)();\n };\n RecipientCampaignApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RecipientCampaignApiService,\n factory: RecipientCampaignApiService.ɵfac,\n providedIn: 'root'\n });\n return RecipientCampaignApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet RecipientCampaignActivatedEventApiService = /*#__PURE__*/(() => {\n class RecipientCampaignActivatedEventApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n upsertRecipientCampaignActivatedEvent(r) {\n const request = r.toApiJson ? r : new UpsertRecipientCampaignActivatedEventRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.RecipientCampaignActivatedEvent/UpsertRecipientCampaignActivatedEvent\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n RecipientCampaignActivatedEventApiService.ɵfac = function RecipientCampaignActivatedEventApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RecipientCampaignActivatedEventApiService)();\n };\n RecipientCampaignActivatedEventApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RecipientCampaignActivatedEventApiService,\n factory: RecipientCampaignActivatedEventApiService.ɵfac,\n providedIn: 'root'\n });\n return RecipientCampaignActivatedEventApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet RecipientCampaignStepEventApiService = /*#__PURE__*/(() => {\n class RecipientCampaignStepEventApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createRecipientCampaignStepEvent(r) {\n const request = r.toApiJson ? r : new CreateRecipientCampaignStepEventRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.RecipientCampaignStepEvent/CreateRecipientCampaignStepEvent\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n upsertRecipientCampaignStepEvent(r) {\n const request = r.toApiJson ? r : new UpsertRecipientCampaignStepEventRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.RecipientCampaignStepEvent/UpsertRecipientCampaignStepEvent\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n RecipientCampaignStepEventApiService.ɵfac = function RecipientCampaignStepEventApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RecipientCampaignStepEventApiService)();\n };\n RecipientCampaignStepEventApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RecipientCampaignStepEventApiService,\n factory: RecipientCampaignStepEventApiService.ɵfac,\n providedIn: 'root'\n });\n return RecipientCampaignStepEventApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet TemplatesApiService = /*#__PURE__*/(() => {\n class TemplatesApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateTemplateRequest(r);\n return this.http.post(this._host + \"/campaigns.v1.Templates/Update\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n TemplatesApiService.ɵfac = function TemplatesApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TemplatesApiService)();\n };\n TemplatesApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TemplatesApiService,\n factory: TemplatesApiService.ɵfac,\n providedIn: 'root'\n });\n return TemplatesApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\n\n/**\n * AllDates is a DateFilter which does not apply any filtering. When used in a\n * filter, you can expect to be returned data which spans all possible dates.\n */\nconst AllDates = new DateFilter();\nlet CampaignService = /*#__PURE__*/(() => {\n class CampaignService {\n constructor(api) {\n this.api = api;\n }\n create(sender, name) {\n return this.api.createCampaign({\n name: name,\n sender: sender,\n focus: Focuses.FOCUSES_NONE\n }).pipe(map(v => v.campaignId));\n }\n delete(campaignId) {\n return this.api.deleteCampaign({\n campaignId: campaignId\n }).pipe(map(() => null));\n }\n addStep(sender, campaignId, stepType, contentId, name) {\n const req = {\n campaignId: campaignId,\n stepType: stepType,\n contentId: contentId,\n sender: sender,\n name: name\n };\n return this.api.addStepToCampaign(req).pipe(map(resp => resp));\n }\n updateStep(sender, campaignId, campaignStepId, contentId, name, secondsAfterLastStep, fm) {\n const req = {\n campaignId: campaignId,\n campaignStepId: campaignStepId,\n contentId: contentId,\n sender: sender,\n name: name,\n secondsAfterLastStep: secondsAfterLastStep,\n fieldMask: fm\n };\n return this.api.updateStepOnCampaign(req).pipe(map(resp => resp));\n }\n get(campaignID) {\n return this.api.getCampaign({\n campaignId: campaignID\n }).pipe(map(resp => resp.campaign), map(campaign => {\n campaign.campaignSchedule = campaign.campaignSchedule || [];\n return campaign;\n }));\n }\n getMulti(campaignIDs) {\n return this.api.getMultiCampaigns({\n campaignIds: campaignIDs\n }).pipe(map(resp => resp.campaigns));\n }\n list(partnerID, focuses, statuses, name, pagingOptions) {\n return this.api.listCampaigns(new ListCampaignsRequest({\n partnerId: partnerID,\n focuses: focuses || [],\n statuses: statuses || [],\n pagingOptions: pagingOptions || {},\n name: name\n })).pipe(map(v => (v.campaigns || []).map(vv => {\n vv.campaignSchedule = vv.campaignSchedule || [];\n vv.hiddenForPartners = vv.hiddenForPartners || [];\n return vv;\n })));\n }\n listRecommendedCampaigns(data) {\n return this.api.listRecommendedCampaigns({\n focuses: data.focuses,\n statuses: data.statuses,\n pagingOptions: data.pagingOptions\n }).pipe(map(resp => resp));\n }\n duplicateCampaignStepAsync(campaignId, stepId) {\n const req = {\n campaignId: campaignId,\n campaignStepId: stepId\n };\n return this.api.duplicateCampaignStepAsync(req).pipe(map(v => v.statusId));\n }\n checkCampaignStepDuplicateStatus(workflowStatusId) {\n const req = {\n statusId: workflowStatusId\n };\n return this.api.checkDuplicateCampaignStepStatus(req).pipe(map(v => v.status));\n }\n duplicateCampaignAsync(campaignId, targetPartnerId) {\n const req = {\n campaignId: campaignId,\n partnerId: targetPartnerId\n };\n return this.api.duplicateCampaignAsync(req).pipe(map(v => v.statusId));\n }\n duplicateCampaignAsyncV2(campaignId, sender) {\n const req = {\n campaignId: campaignId,\n sender: sender\n };\n return this.api.duplicateCampaignAsyncV2(req).pipe(map(v => v.statusId));\n }\n checkCampaignDuplicateStatus(workflowStatusId) {\n const req = {\n statusId: workflowStatusId\n };\n return this.api.checkDuplicateCampaignStatus(req);\n }\n getEmailStepContent(campaignId, campaignStepId, data) {\n return this.api.getCampaignStepContent({\n campaignId: campaignId,\n campaignStepId: campaignStepId,\n stepData: data\n });\n }\n sendStepTestEmail(sender, campaignId, campaignStepId, sendToUserId, data) {\n return this.api.sendCampaignStepTestEmail({\n sender: sender,\n campaignId: campaignId,\n campaignStepId: campaignStepId,\n sendToUserId: sendToUserId,\n stepData: data\n });\n }\n updateStatus(sender, campaignID, status) {\n return this.api.upsertCampaign({\n sender: sender,\n campaignId: campaignID,\n status: status,\n fieldMask: {\n paths: [\"Status\"]\n }\n }).pipe(mapTo(undefined));\n }\n updateName(sender, campaignID, name) {\n return this.api.upsertCampaign({\n sender: sender,\n campaignId: campaignID,\n name: name,\n fieldMask: {\n paths: [\"Name\"]\n }\n }).pipe(mapTo(undefined));\n }\n updateCampaignSchedule(sender, campaignID, campaignSchedule) {\n return this.api.upsertCampaign({\n sender: sender,\n campaignId: campaignID,\n campaignSchedule: campaignSchedule,\n fieldMask: {\n paths: [\"CampaignSchedule\"]\n }\n }).pipe(mapTo(undefined));\n }\n updateCampaignLocale(sender, campaignID, locale) {\n return this.api.upsertCampaign({\n sender: sender,\n campaignId: campaignID,\n locale: locale,\n fieldMask: {\n paths: [\"Locale\"]\n }\n }).pipe(mapTo(undefined));\n }\n listCampaignsV2(sender, statuses, searchTerm, pagingOptions, sortOptions) {\n return this.api.listCampaignsV2({\n sender: sender,\n statuses: statuses || [],\n pagingOptions: pagingOptions || {},\n searchTerm: searchTerm,\n sortOptions: sortOptions || {}\n }).pipe(map(resp => resp));\n }\n pauseCampaign(campaignId) {\n return this.api.pauseCampaign({\n campaignId: campaignId\n }).pipe(mapTo(undefined));\n }\n unpauseCampaign(campaignId) {\n return this.api.unpauseCampaign({\n campaignId: campaignId\n }).pipe(mapTo(undefined));\n }\n getAvailableStepTypesForSender(sender) {\n return this.api.getAvailableStepTypesForSender({\n sender: sender\n }).pipe(map(resp => resp));\n }\n }\n CampaignService.ɵfac = function CampaignService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CampaignService)(i0.ɵɵinject(CampaignsApiService));\n };\n CampaignService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CampaignService,\n factory: CampaignService.ɵfac,\n providedIn: 'root'\n });\n return CampaignService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet RecipientCampaignService = /*#__PURE__*/(() => {\n class RecipientCampaignService {\n constructor(api) {\n this.api = api;\n }\n list(accountGroupID) {\n return this.api.listRecipientCampaigns({\n accountGroupId: accountGroupID\n }).pipe(map(resp => resp.recipientCampaign));\n }\n addToCampaign(campaignId, sender, recipient, date, sendNow, senderOptions) {\n return this.api.addContactToCampaign({\n campaignId: campaignId,\n sender: sender,\n recipient: recipient,\n date: date,\n senderOptions: senderOptions,\n sendNow: sendNow\n }).pipe(map(resp => resp));\n }\n bulkAddToCampaign(campaignId, sender, date, sendNow, filterGroup, searchTerm, senderOptions) {\n return this.api.bulkAddContactsToCampaign({\n campaignId: campaignId,\n sender: sender,\n date: date,\n criteria: {\n filterGroupV2: filterGroup,\n searchTerm: searchTerm\n },\n senderOptions: senderOptions,\n sendNow: sendNow\n }).pipe(map(() => null));\n }\n lookupRecipientCampaign(campaignId, sender, recipient) {\n return this.api.lookupRecipientCampaign({\n campaignId: campaignId,\n sender: sender,\n recipient: recipient\n }).pipe(map(resp => resp));\n }\n lookupRecipientCampaigns(campaignId, sender, recipients) {\n return this.api.lookupRecipientCampaigns({\n campaignId: campaignId,\n sender: sender,\n recipients: recipients\n }).pipe(map(resp => resp));\n }\n getRecipientCampaign(recipientCampaignId) {\n return this.api.getRecipientCampaign({\n recipientCampaignId: recipientCampaignId\n }).pipe(map(resp => resp?.recipientCampaign));\n }\n pauseRecipientCampaign(recipientCampaignId) {\n return this.api.pauseRecipientCampaign({\n recipientCampaignId: recipientCampaignId\n }).pipe(mapTo(undefined));\n }\n resumeRecipientCampaign(recipientCampaignId) {\n return this.api.resumeRecipientCampaign({\n recipientCampaignId: recipientCampaignId\n }).pipe(mapTo(undefined));\n }\n }\n RecipientCampaignService.ɵfac = function RecipientCampaignService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RecipientCampaignService)(i0.ɵɵinject(RecipientCampaignApiService));\n };\n RecipientCampaignService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RecipientCampaignService,\n factory: RecipientCampaignService.ɵfac,\n providedIn: 'root'\n });\n return RecipientCampaignService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet EmailTemplateService = /*#__PURE__*/(() => {\n class EmailTemplateService {\n constructor(api) {\n this.api = api;\n }\n get(templateID) {\n return this.api.getEmailTemplate({\n templateId: templateID\n }).pipe(map(resp => resp.template));\n }\n listLinksInTemplate(templateID) {\n return this.api.listLinksInTemplate({\n templateId: templateID\n }).pipe(map(resp => resp.links));\n }\n getMulti(templateIDs) {\n return this.api.getEmailTemplates({\n templateIds: templateIDs\n }).pipe(map(resp => resp.templates));\n }\n previewEmailTemplate(templateId, accountGroupId, partnerId, marketId, locale, userId, sender) {\n const req = {\n templateId: templateId,\n accountGroupId: accountGroupId,\n partnerId: partnerId,\n marketId: marketId,\n locale: locale,\n userId: userId,\n sender: sender\n };\n return this.api.previewEmailTemplate(req).pipe(map(v => ({\n htmlBody: v.templateHtml,\n subject: v.subject,\n name: v.name\n })));\n }\n sendPreview(sender, htmlContent, subject, recipientUserId) {\n const req = {\n sender: sender,\n htmlContent: htmlContent,\n subject: subject,\n recipientUserId: recipientUserId\n };\n return this.api.sendPreview(req);\n }\n }\n EmailTemplateService.ɵfac = function EmailTemplateService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || EmailTemplateService)(i0.ɵɵinject(EmailTemplateApiService));\n };\n EmailTemplateService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: EmailTemplateService,\n factory: EmailTemplateService.ɵfac,\n providedIn: 'root'\n });\n return EmailTemplateService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * EmailBuilderTemplates are used by the new EmailBuilder (from @vendasta/email-ui)\n * to create and edit email templates. They are different from the legacy\n * EmailTemplates because they store their editable content as JSON, not HTML.\n */\nlet EmailBuilderTemplateService = /*#__PURE__*/(() => {\n class EmailBuilderTemplateService {\n constructor(api) {\n this.api = api;\n }\n createNewTemplate(template) {\n const req = {\n emailBuilderTemplate: template\n };\n return this.api.create(req).pipe(map(v => v.id));\n }\n getTemplate(id) {\n const req = {\n id: id\n };\n return this.api.get(req).pipe(map(v => v.emailBuilderTemplate));\n }\n updateExistingTemplate(template) {\n const req = {\n emailBuilderTemplate: template\n };\n return this.api.update(req).pipe(mapTo(null));\n }\n convertLegacyTemplate(templateId, partnerId) {\n const req = {\n templateId: templateId,\n partnerId: partnerId\n };\n return this.api.convert(req).pipe(map(v => v.templateId));\n }\n }\n EmailBuilderTemplateService.ɵfac = function EmailBuilderTemplateService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || EmailBuilderTemplateService)(i0.ɵɵinject(EmailBuilderApiService));\n };\n EmailBuilderTemplateService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: EmailBuilderTemplateService,\n factory: EmailBuilderTemplateService.ɵfac,\n providedIn: 'root'\n });\n return EmailBuilderTemplateService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CampaignStatsService = /*#__PURE__*/(() => {\n class CampaignStatsService {\n constructor(api) {\n this.api = api;\n }\n get(data) {\n return this.api.getAggregatedCampaignStats(data).pipe(map(resp => resp));\n }\n list(data) {\n return this.api.listCampaignStats(data).pipe(map(resp => {\n resp.stats = resp.stats || [];\n resp.stats = resp.stats.map(stat => {\n stat.tags = stat.tags || [];\n return stat;\n });\n return resp;\n }));\n }\n getCampaignDetailsStats(data) {\n return this.api.getCampaignDetailsStats(data).pipe(map(resp => resp));\n }\n getLinkStats(data) {\n return this.api.getLinkStats(data).pipe(map(resp => resp));\n }\n getRecipientLinkClickStats(data) {\n return this.api.getRecipientLinkClickStats(data);\n }\n getCampaignStepStats(data) {\n return this.api.getCampaignStepStats(data).pipe(map(resp => resp));\n }\n exportRecipientLinkClickStats(data) {\n return this.api.exportRecipientLinkClickStats(data).pipe(map(() => null));\n }\n listStatsForSender(data) {\n return this.api.listCampaignStatsForSender(data).pipe(map(v => {\n v.stats = v.stats || [];\n return v;\n }));\n }\n }\n CampaignStatsService.ɵfac = function CampaignStatsService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CampaignStatsService)(i0.ɵɵinject(CampaignStatsApiService));\n };\n CampaignStatsService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CampaignStatsService,\n factory: CampaignStatsService.ɵfac,\n providedIn: 'root'\n });\n return CampaignStatsService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CampaignTaggingService = /*#__PURE__*/(() => {\n class CampaignTaggingService {\n constructor(api) {\n this.api = api;\n }\n create(senderType, senderId, text, colour) {\n const req = {\n senderType: senderType,\n senderId: senderId,\n text: text,\n colour: colour\n };\n return this.api.create(req).pipe(map(resp => resp.campaignTag));\n }\n listTagsForSender(senderType, senderId, cursor, pageSize) {\n const req = {\n senderType: senderType,\n senderId: senderId,\n cursor: cursor,\n pageSize: pageSize\n };\n return this.api.listTagsForSender(req).pipe(map(v => {\n v.campaignTags = v.campaignTags || [];\n return v;\n }));\n }\n addTagToCampaign(senderType, senderId, campaignId, tagId) {\n const req = {\n senderType: senderType,\n senderId: senderId,\n campaignId: campaignId,\n tagId: tagId\n };\n return this.api.addTagToCampaign(req).pipe(map(() => null));\n }\n removeTagFromCampaign(campaignId, tagId) {\n const req = new RemoveTagFromCampaignRequest({\n campaignId: campaignId,\n tagId: tagId\n });\n return this.api.removeTagFromCampaign(req).pipe(map(() => null));\n }\n listTagsForCampaign(campaignId, cursor, pageSize) {\n const req = {\n campaignId: campaignId,\n cursor: cursor,\n pageSize: pageSize\n };\n return this.api.listTagsForCampaign(req).pipe(map(v => {\n v.campaignTags = v.campaignTags || [];\n return v;\n }));\n }\n deleteTag(senderType, senderId, tagId) {\n const req = {\n senderType: senderType,\n senderId: senderId,\n tagId: tagId\n };\n return this.api.delete(req).pipe(map(() => null));\n }\n }\n CampaignTaggingService.ɵfac = function CampaignTaggingService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CampaignTaggingService)(i0.ɵɵinject(CampaignTaggingApiService));\n };\n CampaignTaggingService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CampaignTaggingService,\n factory: CampaignTaggingService.ɵfac,\n providedIn: 'root'\n });\n return CampaignTaggingService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet LegacyAppengineService = /*#__PURE__*/(() => {\n class LegacyAppengineService {\n constructor(api) {\n this.api = api;\n }\n updateRecipientCampaignStatus(recipientCampaignId, status) {\n const req = {\n recipientCampaignId: recipientCampaignId,\n status: status\n };\n return this.api.updateRecipientCampaignStatus(req).pipe(map(() => null));\n }\n }\n LegacyAppengineService.ɵfac = function LegacyAppengineService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LegacyAppengineService)(i0.ɵɵinject(LegacyAppengineAPIApiService));\n };\n LegacyAppengineService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: LegacyAppengineService,\n factory: LegacyAppengineService.ɵfac,\n providedIn: 'root'\n });\n return LegacyAppengineService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ConfigService = /*#__PURE__*/(() => {\n class ConfigService {\n constructor(api) {\n this.api = api;\n }\n getConfig(campaignId) {\n const req = {\n campaignId: campaignId\n };\n return this.api.getConfig(req);\n }\n updateConfig(campaignId, timeZoneForEmailsSent, daysEmailsCanBeSent, recipientsAddedRateLimitEnabled, recipientsAddedRateLimit, sender, emailsCanbeSent) {\n const req = {\n campaignId: campaignId,\n timeZoneForEmailsSent: timeZoneForEmailsSent,\n daysEmailsCanBeSent: daysEmailsCanBeSent,\n recipientsAddedRateLimitEnabled: recipientsAddedRateLimitEnabled,\n recipientsAddedRateLimit: recipientsAddedRateLimit,\n sender: sender,\n emailSchedulingDay: emailsCanbeSent\n };\n return this.api.updateConfig(req);\n }\n }\n ConfigService.ɵfac = function ConfigService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ConfigService)(i0.ɵɵinject(CampaignConfigApiService));\n };\n ConfigService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ConfigService,\n factory: ConfigService.ɵfac,\n providedIn: 'root'\n });\n return ConfigService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ActivationService = /*#__PURE__*/(() => {\n class ActivationService {\n constructor(api) {\n this.api = api;\n }\n isFeatureActive(sender, feature) {\n const req = {\n sender: sender,\n featureId: feature\n };\n return this.api.isFeatureActive(req).pipe(map(v => v));\n }\n }\n ActivationService.ɵfac = function ActivationService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ActivationService)(i0.ɵɵinject(ActivationsApiService));\n };\n ActivationService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ActivationService,\n factory: ActivationService.ɵfac,\n providedIn: 'root'\n });\n return ActivationService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet QuotaService = /*#__PURE__*/(() => {\n class QuotaService {\n constructor(api) {\n this.api = api;\n }\n getCampaignQuota(sender, type, datePeriod) {\n const req = {\n sender: sender,\n type: type,\n datePeriod: datePeriod\n };\n return this.api.getCampaignQuota(req);\n }\n }\n QuotaService.ɵfac = function QuotaService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || QuotaService)(i0.ɵɵinject(CampaignQuotaApiService));\n };\n QuotaService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: QuotaService,\n factory: QuotaService.ɵfac,\n providedIn: 'root'\n });\n return QuotaService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet TemplatesService = /*#__PURE__*/(() => {\n class TemplatesService {\n constructor(api) {\n this.api = api;\n }\n updateSMSTemplate(campaignId, templateId, name, content) {\n const req = {\n campaignId: campaignId,\n templateId: templateId,\n name: name,\n content: content\n };\n return this.api.update(req).pipe(map(() => null));\n }\n }\n TemplatesService.ɵfac = function TemplatesService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TemplatesService)(i0.ɵɵinject(TemplatesApiService));\n };\n TemplatesService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TemplatesService,\n factory: TemplatesService.ɵfac,\n providedIn: 'root'\n });\n return TemplatesService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Access, ActivateProductForSenderRequest, ActivationService, AddContactToCampaignRequest, AddContactToCampaignResponse, AddStepToCampaignRequest, AddTagToCampaignRequest, AllDates, AsyncWorkStatus, BulkAddContactIdsToCampaignRequest, BulkAddContactsToCampaignRequest, CampaignDetailStats, CampaignQuotaCategory, CampaignRecipient, CampaignScheduleStatus, CampaignService, CampaignState, CampaignStatsService, CampaignStepEvent, CampaignStepEventType, CampaignStepInterface, CampaignStepSendStatusType, CampaignStepStats, CampaignStepType, CampaignTag, CampaignTaggingService, CheckDuplicateCampaignStatusRequest, CheckDuplicateCampaignStatusResponse, CheckDuplicateCampaignStepStatusRequest, CheckDuplicateCampaignStepStatusResponse, Colors, ConfigService, Contact, ContactType, ConvertLegacyTemplateRequest, ConvertLegacyTemplateResponse, CreateCampaignRequest, CreateCampaignResponse, CreateEmailTemplateRequest, CreateQuotaRequest, CreateRecipientCampaignStepEventRequest, CreateRecipientRequest, CreateRequest, CreateResponse, CreateTagRequest, CreateTagResponse, DateDefault, DateFilter, DaysOfTheWeek, DeactivateProductForSenderRequest, DeleteCampaignRequest, DeleteRequest, DeleteTagRequest, DeletedTagsPolicy, DuplicateAndRecommendCampaignRequest, DuplicateCampaignDetails, DuplicateCampaignRequest, DuplicateCampaignRequestV2, DuplicateCampaignResponse, DuplicateCampaignStepRequest, DuplicateCampaignStepResponse, DuplicateCampaignStepStatus, EmailBuilderConfiguration, EmailBuilderTemplate, EmailBuilderTemplateFocuses, EmailBuilderTemplateService, EmailBuilderTemplateStatuses, EmailTemplateService, EmailTemplateStruct, ExecuteStepRequest, ExportRecipientLinkClickStatsRequest, ExtractLinkTrackingDataForTemplateRequest, ExtractLinkTrackingDataForTemplateResponse, Feature, FieldMask, Filter, FilterGroup, FilterGroupOperator, FilterOperator, FilterType, FilterValue, Focuses, Footer, GetAggregatedCampaignStatsRequest, GetAggregatedCampaignStatsResponse, GetAvailableStepTypesForSenderRequest, GetAvailableStepTypesForSenderResponse, GetCampaignDetailsStatsRequest, GetCampaignDetailsStatsResponse, GetCampaignQuotaRequest, GetCampaignQuotaResponse, GetCampaignRequest, GetCampaignResponse, GetCampaignStepContentRequest, GetCampaignStepContentRequestStepDataEntry, GetCampaignStepContentResponse, GetCampaignStepStatsRequest, GetCampaignStepStatsResponse, GetConfigRequest, GetConfigResponse, GetEmailTemplateRequest, GetEmailTemplateResponse, GetEmailTemplatesRequest, GetEmailTemplatesResponse, GetLinkStatsRequest, GetLinkStatsResponse, GetMultiCampaignsRequest, GetMultiCampaignsResponse, GetRecipientCampaignRequest, GetRecipientCampaignResponse, GetRecipientLinkClickStatsRequest, GetRecipientLinkClickStatsRequestPagedRequestOptions, GetRecipientLinkClickStatsResponse, GetRecipientRequest, GetRecipientResponse, GetRequest, GetResponse, GetterCampaignData, GoogleAnalyticsOptions, ImageAlign, IsFeatureActiveForSenderRequest, IsFeatureActiveForSenderResponse, IsProductActiveForSenderRequest, IsProductActiveForSenderResponse, LegacyAddAccountGroupToCampaignRequest, LegacyAppengineService, LegacyGetRecipientCampaignsByAgidRequest, LegacyGetRecipientCampaignsByAgidResponse, LegacyPauseAccountGroupOnCampaignRequest, LegacyRateLimitedAddToCampaignRequest, LegacyRateLimitedAddToCampaignResponse, LegacyUpdateRecipientCampaignStatusRequest, LinkStats, LinkTrackingData, ListCampaignStatsForSenderRequest, ListCampaignStatsForSenderResponse, ListCampaignStatsRequest, ListCampaignStatsResponse, ListCampaignStatsStruct, ListCampaignTagDetails, ListCampaignsRequest, ListCampaignsResponse, ListCampaignsV2Request, ListCampaignsV2Response, ListLinksInTemplateRequest, ListLinksInTemplateResponse, ListRecipientCampaignsRequest, ListRecipientCampaignsResponse, ListRecipientsRequest, ListRecipientsResponse, ListRecommendedCampaignsRequest, ListTagsForCampaignRequest, ListTagsForCampaignResponse, ListTagsForSenderRequest, ListTagsForSenderResponse, LookupRecipientCampaignRequest, LookupRecipientCampaignResponse, LookupRecipientCampaignsRequest, LookupRecipientCampaignsResponse, PageSetup, PagedRequestOptions, PagedResponseMetadata, PauseCampaignRequest, PauseRecipientCampaignRequest, Period, Phone, PreviewEmailTemplateRequest, PreviewEmailTemplateResponse, QuotaService, RecipientCampaignPair, RecipientCampaignService, RecipientCampaignStatus, RecipientCampaignStepEventStruct, RecipientCampaignStruct, RecipientClickStats, RecipientClickStatsAccount, RecipientClickStatsRecipient, RecipientCriteria, RecipientType, RecipientV2, RemoveTagFromCampaignRequest, RenderRequest, RenderResponse, ResumeRecipientCampaignRequest, ScheduledCampaignStepInterface, SendCampaignStepTestEmailRequest, SendCampaignStepTestEmailRequestStepDataEntry, SendCampaignStepTestEmailResponse, SendPreviewEmailRequest, SendRecipientCampaignStepEmailRequest, Sender, SenderOptions, SenderType, SortDirection, SortField, SortOptions, Statuses, StepDataResponse, TemplateReference, TemplateStatus, TemplatesService, TopLogo, UnpauseCampaignRequest, UpdateCampaignNameRequest, UpdateConfigRequest, UpdateConfigResponse, UpdateEmailTemplateRequest, UpdateQuotaLimitRequest, UpdateRecipientRequest, UpdateRequest, UpdateStepOnCampaignRequest, UpdateTemplateRequest, UpsertCampaignRequest, UpsertConfigRequest, UpsertRecipientCampaignActivatedEventRequest, UpsertRecipientCampaignRequest, UpsertRecipientCampaignStepEventRequest };\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, Inject, Input, SecurityContext, Signal, signal, WritableSignal } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { RxState } from '@rx-angular/state';\nimport {\n CampaignService,\n GetterCampaignData,\n RecipientCampaignService,\n RecipientCampaignStruct,\n} from '@vendasta/campaigns';\nimport { ActivityInterface, GetMultiCrmObjectResponseInterface } from '@vendasta/crm';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { AVATAR_WIDTH } from '../../../constants';\nimport { TranslationModule } from '../../../i18n';\nimport {\n CrmFieldService,\n CrmObjectDisplayService,\n CrmObjectService,\n StandardExternalIds,\n StandardIds,\n SystemFieldIds,\n} from '../../../shared-services';\nimport { CrmDependencies, CrmInjectionToken, ObjectType } from '../../../tokens-and-interfaces';\nimport { CollapsibleSectionComponent } from '../../collapsible-section/collapsible-section.component';\n\nimport { ActivitiesTimelineService, ActivityExtended } from '../timeline/timeline.service';\n\n@Component({\n selector: 'crm-activity-email',\n templateUrl: './email.component.html',\n styleUrls: ['./email.component.scss'],\n providers: [RxState],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n CollapsibleSectionComponent,\n MatCardModule,\n GalaxyAvatarModule,\n MatIconModule,\n GalaxyPipesModule,\n ],\n})\nexport class CrmActivityEmailComponent {\n unknownNamePlaceholder = this.translateService.instant('CONTACT.ACTIVITIES.UNKNOWN_NAME');\n private _activity: WritableSignal = signal({});\n private _associatedObjectId: WritableSignal = signal('');\n private _objectType: WritableSignal = signal('Contact');\n\n @Input({ required: true }) set activity(activity: ActivityExtended) {\n this._activity.set(activity);\n }\n\n get activity() {\n return this._activity();\n }\n\n @Input() set objectType(objectType: ObjectType) {\n this._objectType.set(objectType);\n }\n\n get objectType() {\n return this._objectType();\n }\n\n @Input() set associatedObjectId(crmObjectId: string) {\n this._associatedObjectId.set(crmObjectId);\n }\n\n get associatedObjectId() {\n return this._associatedObjectId();\n }\n\n private _showAvatar = true;\n @Input() set showAvatar(showAvatar: boolean) {\n this._showAvatar = showAvatar;\n }\n\n get showAvatar() {\n return this._showAvatar;\n }\n\n dateFormat = DateFormat.medium;\n\n showRelatedActivities = signal(false);\n\n associatedCrmObjectName$ = toObservable(this._activity).pipe(switchMap(() => this.getAssociatedObjectName()));\n associatedCrmObjectName = toSignal(this.associatedCrmObjectName$);\n\n contactEmails$ = toObservable(this._activity).pipe(switchMap((activity) => this.getContactEmails(activity)));\n contactEmails = toSignal(this.contactEmails$);\n\n campaignId$ = toObservable(this._activity).pipe(switchMap((activity) => this.getCampaignId(activity)));\n campaignId = toSignal(this.campaignId$);\n\n campaignName$ = toObservable(this._activity).pipe(switchMap((activity) => this.getCampaign(activity)));\n campaignName = toSignal(this.campaignName$);\n\n isDeletedCampaign = computed(() => {\n const name = this.campaignName();\n return name && name.includes(this.translateService.instant('CAMPAIGNS.DELETED_CAMPAIGN'));\n });\n\n accountGroupId$ = toObservable(this._activity).pipe(switchMap((activity) => this.getAccountGroupId(activity)));\n accountGroupId = toSignal(this.accountGroupId$);\n\n relatedActivities = computed(() => {\n return this.activitiesTimelineService.getRelatedCampaignActivities(this._activity().crmObjectId);\n });\n\n cardInfo: Signal = computed(() => {\n return {\n emailBody:\n this.sanitizer.sanitize(\n SecurityContext.HTML,\n this.getStringFieldData(this.activity, StandardIds.ActivityEmailBody),\n ) || '',\n\n emailSubject: this.getStringFieldData(this.activity, StandardIds.ActivityEmailSubject),\n emailStatus: this.getStringFieldData(this.activity, StandardIds.ActivityEmailStatus),\n emailDirection: this.getStringFieldData(this.activity, StandardIds.ActivityEmailDirection)?.toLowerCase(),\n\n emailType: this.getStringFieldData(this.activity, StandardIds.ActivityEmailType),\n emailHeaders: this.getStringFieldData(this.activity, StandardIds.ActivityEmailHeaders) || '',\n sourceName: this.getStringFieldData(this.activity, StandardIds.ActivitySourceName),\n effectiveDate: this.getDateFieldData(this.activity, SystemFieldIds.ActivityEffectiveDate),\n relatedActivities: this.getRelatedActivitiesCardInfo(),\n campaignName: this.getStringFieldData(this.activity, StandardIds.ActivityEmailCampaignName),\n };\n });\n\n ownerName = computed(() => {\n const owner = this.activity?.ownerUser;\n if (owner) {\n return `${owner?.firstName || ''} ${owner?.lastName || ''}`.trim();\n }\n return this.unknownNamePlaceholder;\n });\n\n isCampaign = computed(() => {\n const { emailType } = this.cardInfo();\n return emailType === 'marketing_campaign_email';\n });\n\n isYeswareTrackedEmail = computed(() => {\n const { emailType } = this.cardInfo();\n return emailType === 'yesware_tracked_email';\n });\n\n isYeswareCampaignEmail = computed(() => {\n const { emailType } = this.cardInfo();\n return emailType === 'yesware_campaign_email';\n });\n\n headerText = computed(() => {\n const { emailType, emailDirection, emailStatus } = this.cardInfo();\n let baseText = '';\n const ownerNameText = this.ownerName() + ' ';\n const contactNameText = (this.associatedCrmObjectName() || '') + ' ';\n if (emailType === 'marketing_campaign_email') {\n baseText = this.translateService.instant('ACTIVITY_TYPES.CAMPAIGN') + ' ';\n } else if (emailType === 'yesware_campaign_email') {\n baseText = this.translateService.instant('ACTIVITY_TYPES.YESWARE_CAMPAIGN') + ' ';\n } else {\n baseText = this.translateService.instant('ACTIVITY_TYPES.EMAIL') + ' ';\n }\n\n let verbText = '';\n if (emailDirection === 'outbound') {\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.OUTBOUND') + ' ';\n } else if (emailDirection === 'forwarded') {\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.FORWARDED') + ' ';\n } else if (emailDirection === 'inbound') {\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.INBOUND') + ' ';\n } else {\n switch (emailStatus) {\n case 'bounced':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.BOUNCED') + ' ';\n break;\n case 'clicked':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.CLICKED') + ' ';\n break;\n case 'deferred':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.DEFERRED') + ' ';\n break;\n case 'delivered':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.DELIVERED') + ' ';\n break;\n case 'dropped':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.DROPPED') + ' ';\n break;\n case 'failed':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.FAILED') + ' ';\n break;\n case 'opened':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.OPENED') + ' ';\n break;\n case 'processed':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.PROCESSED') + ' ';\n break;\n case 'received':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.RECEIVED') + ' ';\n break;\n case 'reply':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.REPLY') + ' ';\n break;\n case 'resubscribed':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.RESUBSCRIBED') + ' ';\n break;\n case 'send':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.SEND') + ' ';\n break;\n case 'sent':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.SENT') + ' ';\n break;\n case 'spamreport':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.SPAM') + ' ';\n break;\n case 'unsubscribed':\n verbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.UNSUBSCRIBED') + ' ';\n break;\n }\n }\n\n let ownerVerbText = '';\n let result = '';\n switch (emailType) {\n case 'marketing_campaign_email':\n result = `${baseText}${verbText}${contactNameText}`;\n break;\n case 'yesware_campaign_email':\n ownerVerbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.OUTBOUND') + ' ';\n result = `${baseText}${ownerVerbText}${ownerNameText}${verbText}${contactNameText}`;\n break;\n case 'yesware_tracked_email':\n ownerVerbText = this.translateService.instant('ACTIVITY.EMAIL_TITLE.OUTBOUND') + ' ';\n result = `${baseText}${ownerVerbText}${ownerNameText}${verbText}${contactNameText}`;\n break;\n default:\n result = `${baseText}${verbText}${ownerNameText}`;\n break;\n }\n return result;\n });\n\n campaignLink = computed(() => {\n if (this.useBusinessCenterCampaignLink()) {\n return `/account/location/${this.accountGroupId()}/campaigns/${this.campaignId()}/details`;\n } else {\n return `/marketing/campaign/details/${this.campaignId()}`;\n }\n });\n\n useBusinessCenterCampaignLink: Signal;\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly fieldService: CrmFieldService,\n private readonly campaignService: CampaignService,\n private readonly recipientCampaignService: RecipientCampaignService,\n private readonly crmObjectService: CrmObjectService,\n private readonly translateService: TranslateService,\n protected readonly activitiesTimelineService: ActivitiesTimelineService,\n private readonly sanitizer: DomSanitizer,\n private readonly objectDisplayService: CrmObjectDisplayService,\n ) {\n this.useBusinessCenterCampaignLink = toSignal(\n config.parentNamespace$.pipe(\n map((parentNamespace) => {\n return parentNamespace !== '';\n }),\n ),\n );\n }\n\n protected readonly AVATAR_WIDTH = AVATAR_WIDTH;\n protected readonly INNER_AVATAR_WIDTH = AVATAR_WIDTH / 2;\n\n private getRelatedActivitiesCardInfo() {\n const relatedActivities = this.relatedActivities();\n if (relatedActivities.length === 0) {\n return;\n }\n const relatedActivitiesCardInfo: ActivityCardInformation[] = [];\n\n for (const activity of relatedActivities) {\n const emailStatus = this.getStringFieldData(activity, StandardIds.ActivityEmailStatus);\n const statusText = this.getStatusText(emailStatus);\n const effectiveDate = this.getDateFieldData(activity, SystemFieldIds.ActivityEffectiveDate);\n relatedActivitiesCardInfo.push({\n emailStatus: statusText,\n effectiveDate: effectiveDate,\n });\n }\n\n return relatedActivitiesCardInfo;\n }\n\n private getStatusText(emailStatus: string) {\n switch (emailStatus) {\n case 'bounced':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.BOUNCED');\n case 'clicked':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.CLICKED');\n case 'deferred':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.DEFERRED');\n case 'delivered':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.DELIVERED');\n case 'dropped':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.DROPPED');\n case 'failed':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.FAILED');\n case 'opened':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.OPENED');\n case 'processed':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.PROCESSED');\n case 'received':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.RECEIVED');\n case 'reply':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.REPLY');\n case 'resubscribed':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.RESUBSCRIBED');\n case 'send':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.SEND');\n case 'sent':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.SENT');\n case 'spamreport':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.SPAM');\n case 'unsubscribed':\n return this.translateService.instant('ACTIVITY.EMAIL_STATUS.UNSUBSCRIBED');\n }\n }\n\n private getStringFieldData(activity: ActivityInterface, fieldId: string): string {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.stringValue ?? '';\n }\n\n private getCampaignName(id: string): Observable {\n if (id !== '') {\n return this.campaignService.get(id).pipe(\n map((campaignData: GetterCampaignData) => {\n return campaignData.name;\n }),\n catchError((error) => {\n console.warn(`Campaign with ID ${id} not found`, error);\n return of(`[${this.translateService.instant('CAMPAIGNS.DELETED_CAMPAIGN')}]`);\n }),\n );\n }\n return of('');\n }\n\n private getDateFieldData(activity: ActivityInterface, fieldId: string): Date | null {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.dateValue ?? null;\n }\n\n private getCampaignId(activity: ActivityInterface): Observable {\n const recipientId = this.getStringFieldData(activity, StandardIds.ActivityCampaignID);\n if (recipientId !== '') {\n return this.recipientCampaignService.getRecipientCampaign(recipientId).pipe(\n map((recipientCampaign: RecipientCampaignStruct) => {\n return recipientCampaign.campaignId;\n }),\n );\n }\n return of('');\n }\n\n private getAccountGroupId(activity: ActivityInterface): Observable {\n const recipientId = this.getStringFieldData(activity, StandardIds.ActivityCampaignID);\n if (recipientId !== '') {\n return this.recipientCampaignService.getRecipientCampaign(recipientId).pipe(\n map((recipientCampaign: RecipientCampaignStruct) => {\n const parts = recipientCampaign.partnerId.split('/');\n if (parts.length > 1) {\n return parts[1];\n }\n return '';\n }),\n );\n }\n\n return of('');\n }\n\n private getCampaign(activity: ActivityInterface): Observable {\n const campaignID$ = this.getCampaignId(activity);\n return campaignID$.pipe(\n switchMap((campaignId: string) => {\n return this.getCampaignName(campaignId);\n }),\n );\n }\n\n getAssociatedObjectName(): Observable {\n const associatedContactID = this._activity()?.associations?.find(\n (association) => association?.crmObjectType === 'Contact',\n )?.crmObjectId;\n\n if (associatedContactID) {\n return this.getContactName(associatedContactID);\n } else {\n return this.useAssociatedObjectID();\n }\n }\n\n useAssociatedObjectID(): Observable {\n if (this.objectType === 'Contact') {\n return this.getContactName(this.associatedObjectId);\n }\n if (this.objectType === 'Company') {\n return this.crmObjectService.getMultiObject('Company', [this.associatedObjectId]).pipe(\n map((data: GetMultiCrmObjectResponseInterface) => {\n if (!data?.crmObjects || data.crmObjects.length === 0) {\n return '';\n }\n const crmObject = data.crmObjects[0];\n return this.objectDisplayService.getObjectDisplayName('Company', crmObject);\n }),\n );\n }\n return of('');\n }\n\n private getContactName(objectID: string): Observable {\n return this.crmObjectService.getMultiObject('Contact', [objectID]).pipe(\n map((data: GetMultiCrmObjectResponseInterface) => {\n if (!data?.crmObjects || data.crmObjects.length === 0) {\n return '';\n }\n const crmObject = data.crmObjects[0];\n return this.objectDisplayService.getObjectDisplayName('Contact', crmObject);\n }),\n );\n }\n\n private getContactEmails(activity: ActivityInterface): Observable<(string | undefined)[]> {\n const crmObjectIds: string[] = [];\n activity.associations?.forEach((association) => {\n if (association?.crmObjectType === 'Contact' && association?.crmObjectId) {\n crmObjectIds.push(association.crmObjectId);\n }\n });\n if (crmObjectIds.length > 0) {\n const contactDetails$ = this.crmObjectService.getMultiObject('Contact', crmObjectIds);\n return contactDetails$.pipe(\n map((resp) => {\n return resp?.crmObjects\n ? resp?.crmObjects?.map(\n (contact) =>\n this.fieldService.getFieldValueFromCrmObject(contact, StandardExternalIds.Email)?.stringValue,\n )\n : [];\n }),\n );\n }\n return of([]);\n }\n}\n\ninterface ActivityCardInformation {\n sourceName?: string;\n emailBody?: string;\n emailDirection?: string;\n emailStatus: string;\n emailSubject?: string;\n emailType?: string;\n emailHeaders?: string;\n campaignName?: string;\n effectiveDate: Date | null;\n relatedActivities?: ActivityCardInformation[];\n}\n","
\n \n \n @if (showAvatar && isCampaign()) {\n
\n \n
\n } @else if (showAvatar && !isCampaign()) {\n
\n \n
\n }\n \n {{ headerText }}\n \n {{ 'ACTIVITY.UNKNOWN_TITLE' | translate }}\n \n \n \n

\n {{ cardInfo.effectiveDate | date: dateFormat }}\n

\n
\n
\n \n @if (isCampaign()) {\n \n {{ cardInfo.emailSubject }}\n {{ 'CONTACT.ACTIVITIES.CREATED_FROM' | translate }}\n \n @if (!isDeletedCampaign()) {\n \n {{ campaignName() }}\n \n } @else {\n \n {{ campaignName() }}\n \n }\n @if (relatedActivities().length > 0) {\n
\n @if (showRelatedActivities()) {\n unfold_less\n {{ 'ACTIVITY.HIDE_RELATED_ACTIVITIES' | translate }}\n } @else {\n unfold_more\n {{ 'ACTIVITY.SHOW_RELATED_ACTIVITIES' | translate }}\n }\n
\n @if (showRelatedActivities()) {\n @for (activity of cardInfo.relatedActivities; track activity; let last = $last) {\n
\n \n \n @if (showAvatar) {\n
\n \n
\n }\n @if (activity.emailStatus) {\n \n {{ activity.emailStatus }}\n \n }\n @if (activity.effectiveDate) {\n \n

\n {{ activity.effectiveDate | date: dateFormat }}\n

\n
\n }\n
\n
\n
\n }\n }\n }\n } @else if (isYeswareTrackedEmail() || isYeswareCampaignEmail()) {\n \n {{ cardInfo.emailSubject }}\n @if (cardInfo.campaignName) {\n {{ 'CONTACT.ACTIVITIES.CREATED_FROM' | translate }}\n {{ cardInfo.campaignName }}\n }\n \n @if (cardInfo.emailBody) {\n \n \n
\n \n \n \n
\n
\n
\n }\n @if (relatedActivities().length > 0) {\n
\n @if (showRelatedActivities()) {\n unfold_less\n {{ 'ACTIVITY.HIDE_RELATED_ACTIVITIES' | translate }}\n } @else {\n unfold_more\n {{ 'ACTIVITY.SHOW_RELATED_ACTIVITIES' | translate }}\n }\n
\n }\n @if (showRelatedActivities()) {\n @for (activity of cardInfo.relatedActivities; track activity; let last = $last) {\n
\n \n \n @if (showAvatar) {\n
\n \n
\n }\n @if (activity.emailStatus) {\n \n {{ activity.emailStatus }}\n \n }\n @if (activity.effectiveDate) {\n \n

\n {{ activity.effectiveDate | date: dateFormat }}\n

\n
\n }\n
\n
\n
\n }\n }\n } @else {\n \n \n {{ cardInfo.emailSubject }}\n \n \n
\n \n
\n {{ ownerName }}\n
\n {{ 'ACTIVITY.EMAIL_TITLE.INBOUND' | translate }}\n
\n \n {{ contact }}, \n \n
\n
\n \n \n \n
\n
\n
\n }\n
\n
\n
\n","import { Component, Input } from '@angular/core';\nimport DOMPurify from 'dompurify';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'crm-activity-rich-text',\n template: ``,\n styleUrls: ['activity-rich-text.component.scss'],\n imports: [CommonModule, GalaxyPipesModule],\n})\nexport class ActivityRichTextComponent {\n sanitizedRichText = '';\n\n @Input({ required: true }) set richText(rteValue: string) {\n const cleanedText = rteValue\n // Remove empty paragraphs\n .replace(/

 <\\/p>/g, '')\n // Replace   with normal spaces\n .replace(/ /g, ' ')\n // Only replace newlines that are not part of block-level elements\n .replace(/(?)\\n(?!

)/g, '
');\n\n this.sanitizedRichText = DOMPurify.sanitize(cleanedText);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Component, Input, Signal, WritableSignal, computed, signal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { Observable, of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { CollapsibleSectionComponent } from '../../collapsible-section/collapsible-section.component';\nimport { CrmFieldService, StandardIds, SystemFieldIds } from '../../../shared-services/crm-services/field.service';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { ActivityRichTextComponent } from './activity-rich-text.component';\n\n@Component({\n selector: 'crm-activity-logged-call',\n templateUrl: './logged-call.component.html',\n styleUrls: ['./logged-call.component.scss'],\n providers: [],\n imports: [CommonModule, TranslateModule, TranslationModule, CollapsibleSectionComponent, ActivityRichTextComponent],\n})\nexport class CrmActivityLoggedCallComponent {\n dateFormat = DateFormat.mediumDateShortTime;\n callRecordingSource$: Observable;\n\n private _activity: WritableSignal = signal({});\n @Input({ required: true }) set activity(activity: ActivityInterface) {\n this._activity.set(activity);\n }\n\n get activity() {\n return this._activity();\n }\n\n cardInfo: Signal = computed(() => {\n const cardInfo: any = {\n note: this.getFieldData(this._activity(), StandardIds.ActivityCallBody),\n direction: this.getFieldData(this._activity(), StandardIds.ActivityCallDirection),\n status: this.getFieldData(this._activity(), StandardIds.ActivityCallStatus),\n outcome: this.getFieldData(this._activity(), StandardIds.ActivityCallOutcome),\n date:\n this.fieldService.getFieldValueFromCrmObject(this._activity(), SystemFieldIds.ActivityEffectiveDate)\n ?.dateValue ?? null,\n };\n const callRecordingUrl = this.getFieldData(this._activity(), StandardIds.ActivityCallRecordingUrl);\n if (callRecordingUrl) {\n cardInfo.callRecordingUrl = callRecordingUrl;\n }\n return cardInfo;\n });\n\n private getFieldData(activity: ActivityInterface, fieldId: string): string {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.stringValue ?? '';\n }\n\n constructor(\n private readonly http: HttpClient,\n private readonly fieldService: CrmFieldService,\n ) {\n this.callRecordingSource$ = toObservable(this.cardInfo).pipe(\n switchMap((cardInfo) => {\n if (!cardInfo.callRecordingUrl) {\n return of(null);\n }\n return this.http.get(cardInfo.callRecordingUrl, {\n responseType: 'text',\n withCredentials: true,\n });\n }),\n );\n }\n}\n\ninterface ActivityCardInformation {\n note: string;\n outcome: string;\n status: string;\n direction: string;\n callRecordingUrl?: string;\n date: Date;\n}\n","

\n \n \n \n \n \n \n
\n \n \n \n \n
\n
\n\n\n
\n
\n {{ label | translate }}\n
\n
\n \n \n {{ value }}\n \n
\n
\n
\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, WritableSignal, signal, Signal, computed } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { CrmFieldService, StandardIds, SystemFieldIds } from '../../../shared-services/crm-services/field.service';\nimport { CollapsibleSectionComponent } from '../../collapsible-section/collapsible-section.component';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\n\nimport { ActivityRichTextComponent } from './activity-rich-text.component';\n\n@Component({\n selector: 'crm-activity-logged-communication',\n templateUrl: './logged-communication.component.html',\n styleUrls: ['./logged-communication.component.scss'],\n providers: [],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n CollapsibleSectionComponent,\n GalaxyPipesModule,\n ActivityRichTextComponent,\n ],\n})\nexport class CrmActivityLoggedCommunicationComponent {\n private _activity: WritableSignal = signal({});\n @Input({ required: true }) set activity(activity: ActivityInterface) {\n this._activity.set(activity);\n }\n\n get activity() {\n return this._activity();\n }\n\n dateFormat = DateFormat.mediumDateShortTime;\n\n cardInfo: Signal = computed(() => {\n const cardInfo: any = {\n body: this.getFieldData(this._activity(), StandardIds.ActivityCommunicationBody),\n activityUrl: this.getFieldData(this._activity(), StandardIds.ActivityUrl),\n activityUrlName: this.getFieldData(this._activity(), StandardIds.ActivityUrlName) ?? '',\n channel: this.getFieldData(this._activity(), StandardIds.ActivityCommunicationChannel),\n outcome: this.getFieldData(this._activity(), StandardIds.ActivityCommunicationOutcome),\n date:\n this.fieldService.getFieldValueFromCrmObject(this._activity(), SystemFieldIds.ActivityEffectiveDate)\n ?.dateValue ?? null,\n };\n return cardInfo;\n });\n\n private getFieldData(activity: ActivityInterface, fieldId: string): string {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.stringValue ?? '';\n }\n\n constructor(private readonly fieldService: CrmFieldService) {}\n}\n\ninterface ActivityCardInformation {\n body: string;\n activityUrl: string | null;\n activityUrlName: string;\n channel: string;\n outcome: string;\n date: Date;\n}\n","
\n\n\n
\n
\n {{ label | translate }}\n
\n
\n \n \n {{ value }}\n \n
\n
\n
\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { RxState } from '@rx-angular/state';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { map } from 'rxjs';\nimport { CollapsibleSectionComponent } from '../../collapsible-section/collapsible-section.component';\nimport { CrmFieldService, StandardIds } from '../../../shared-services/crm-services/field.service';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { ActivityRichTextComponent } from './activity-rich-text.component';\n\n@Component({\n selector: 'crm-activity-logged-email',\n templateUrl: './logged-email.component.html',\n styleUrls: ['./logged-email.component.scss'],\n providers: [RxState],\n imports: [CommonModule, TranslateModule, TranslationModule, CollapsibleSectionComponent, ActivityRichTextComponent],\n})\nexport class CrmActivityLoggedEmailComponent {\n @Input() set activity(activity: ActivityInterface) {\n this.state.set({ activity: activity });\n }\n get activity() {\n return this.state.get().activity;\n }\n\n description$ = this.state.select('description');\n direction$ = this.state.select('direction');\n\n constructor(\n private readonly state: RxState,\n private readonly fieldService: CrmFieldService,\n ) {\n this.state.set({\n activity: undefined,\n description: '',\n direction: '',\n });\n\n this.state.connect(\n 'description',\n this.state\n .select('activity')\n .pipe(\n map(\n (activity) =>\n this.fieldService.getFieldValueFromCrmObject(activity, StandardIds.ActivityEmailBody)?.stringValue ?? '',\n ),\n ),\n );\n\n this.state.connect(\n 'direction',\n this.state\n .select('activity')\n .pipe(\n map(\n (activity) =>\n this.fieldService.getFieldValueFromCrmObject(activity, StandardIds.ActivityEmailDirection)?.stringValue ??\n '',\n ),\n ),\n );\n }\n}\n\ninterface ComponentState {\n activity: ActivityInterface;\n\n description: string;\n direction: string;\n}\n","
\n \n \n \n
\n
\n {{ 'ACTIVITY.LOGGED_EMAIL.DIRECTION' | translate }}\n
\n
\n {{ direction === 'Sent' ? 'Outbound' : direction }}\n
\n
\n
\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, Input, Signal, signal, WritableSignal } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { CrmFieldService, StandardIds, SystemFieldIds } from '../../../shared-services/crm-services/field.service';\nimport { CollapsibleSectionComponent } from '../../collapsible-section/collapsible-section.component';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { intervalToDuration } from 'date-fns';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { ActivityRichTextComponent } from './activity-rich-text.component';\n\n@Component({\n selector: 'crm-activity-logged-meeting',\n templateUrl: './logged-meeting.component.html',\n styleUrls: ['./logged-meeting.component.scss'],\n providers: [],\n imports: [CommonModule, TranslateModule, TranslationModule, CollapsibleSectionComponent, ActivityRichTextComponent],\n})\nexport class CrmActivityLoggedMeetingComponent {\n dateFormat = DateFormat.mediumDateShortTime;\n private _activity: WritableSignal = signal({});\n @Input({ required: true }) set activity(activity: ActivityInterface) {\n this._activity.set(activity);\n }\n get activity() {\n return this._activity();\n }\n\n cardInfo: Signal = computed(() => {\n const duration = this.getIntegerFieldData(this._activity(), StandardIds.ActivityMeetingDuration);\n return {\n note: this.getStringFieldData(this._activity(), StandardIds.ActivityMeetingBody),\n status: this.getStringFieldData(this._activity(), StandardIds.ActivityMeetingStatus),\n outcome: this.getStringFieldData(this._activity(), StandardIds.ActivityMeetingOutcome),\n date:\n this.fieldService.getFieldValueFromCrmObject(this._activity(), SystemFieldIds.ActivityEffectiveDate)\n ?.dateValue ?? null,\n duration: this.convertMillisecondsToHoursAndMinutes(duration),\n };\n });\n\n private getStringFieldData(activity: ActivityInterface, fieldId: string): string {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.stringValue ?? '';\n }\n private getIntegerFieldData(activity: ActivityInterface, fieldId: string): number {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.integerValue ?? 0;\n }\n private convertMillisecondsToHoursAndMinutes(duration: number): string {\n if (duration === 0) return '';\n const convertedDuration = intervalToDuration({ start: 0, end: duration });\n if (convertedDuration.hours > 0) {\n return `${convertedDuration.hours}h ${convertedDuration.minutes}m`;\n }\n return `${convertedDuration.minutes}m`;\n }\n\n constructor(private readonly fieldService: CrmFieldService) {}\n}\n\ninterface ActivityCardInformation {\n note: string;\n outcome: string;\n status: string;\n date: Date;\n duration: string;\n}\n","
\n \n \n \n
\n \n \n \n \n
\n
\n\n\n
\n
\n {{ label | translate }}\n
\n
\n \n \n {{ value }}\n \n
\n
\n
\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { RxState } from '@rx-angular/state';\nimport { map } from 'rxjs';\nimport { CrmFieldService, StandardIds } from '../../../shared-services/crm-services/field.service';\nimport { CollapsibleSectionComponent } from '../../collapsible-section/collapsible-section.component';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { ActivityRichTextComponent } from './activity-rich-text.component';\n\n@Component({\n selector: 'crm-activity-logged-note',\n templateUrl: './logged-note.component.html',\n providers: [RxState],\n imports: [CommonModule, TranslateModule, TranslationModule, CollapsibleSectionComponent, ActivityRichTextComponent],\n})\nexport class CrmActivityLoggedNoteComponent {\n @Input() set activity(activity: ActivityInterface) {\n this.state.set({ activity: activity });\n }\n get activity() {\n return this.state.get().activity;\n }\n\n noteBody$ = this.state.select('noteBody');\n\n constructor(\n private readonly state: RxState,\n private readonly fieldService: CrmFieldService,\n ) {\n this.state.set({\n activity: undefined,\n noteBody: '',\n });\n\n this.state.connect(\n 'noteBody',\n this.state\n .select('activity')\n .pipe(\n map(\n (activity) =>\n this.fieldService.getFieldValueFromCrmObject(activity, StandardIds.ActivityNoteBody)?.stringValue ?? '',\n ),\n ),\n );\n }\n}\n\ninterface ComponentState {\n activity: ActivityInterface;\n\n noteBody: string;\n}\n","
\n \n \n \n
\n","import { RxState } from '@rx-angular/state';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AVATAR_WIDTH } from '../../../constants';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { CollapsibleSectionComponent } from '../../collapsible-section/collapsible-section.component';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, Inject, Input, Signal, signal, WritableSignal } from '@angular/core';\nimport { CrmFieldService, StandardIds, SystemFieldIds } from '../../../shared-services/crm-services/field.service';\nimport { MatCardModule } from '@angular/material/card';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { SanitizeHtmlPipe } from './sanitize-html.pipe';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs/operators';\nimport { CrmDependencies, CrmInjectionToken } from '../../../tokens-and-interfaces';\n\n@Component({\n selector: 'crm-activity-note',\n templateUrl: './note.component.html',\n styleUrls: ['./note.component.scss'],\n providers: [RxState],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n CollapsibleSectionComponent,\n MatCardModule,\n GalaxyAvatarModule,\n SanitizeHtmlPipe,\n ],\n})\nexport class CrmActivityNoteComponent {\n private _activity: WritableSignal = signal({});\n @Input({ required: true }) set activity(activity: ActivityInterface) {\n this._activity.set(activity);\n }\n get activity() {\n return this._activity();\n }\n\n private _showAvatar = true;\n @Input() set showAvatar(showAvatar: boolean) {\n this._showAvatar = showAvatar;\n }\n\n get showAvatar() {\n return this._showAvatar;\n }\n dateFormat = DateFormat.medium;\n\n isFormActivity = computed(() => {\n const activitySource = this.getStringFieldData(this.activity, StandardIds.ActivitySourceName);\n return activitySource === 'Form';\n });\n\n namespace = toSignal(this.config.namespace$);\n\n useBusinessCenterLink = toSignal(\n this.config.parentNamespace$.pipe(\n map((parentNamespace) => {\n return parentNamespace !== '';\n }),\n ),\n );\n\n cardInfo: Signal = computed(() => {\n return {\n noteBody: this.getStringFieldData(this.activity, StandardIds.ActivityNoteBody),\n noteTitle: this.getStringFieldData(this.activity, StandardIds.ActivityNoteTitle),\n effectiveDate: this.getDateFieldData(this.activity, SystemFieldIds.ActivityEffectiveDate),\n activityUrl: this.getStringFieldData(this.activity, StandardIds.ActivityUrl),\n activityUrlName: this.getStringFieldData(this.activity, StandardIds.ActivityUrlName),\n formName: this.getStringFieldData(this.activity, StandardIds.ActivityRecordSourceDrillDown1),\n formLink: this.getFormLink(),\n };\n });\n\n private getStringFieldData(activity: ActivityInterface, fieldId: string): string {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.stringValue ?? '';\n }\n\n private getDateFieldData(activity: ActivityInterface, fieldId: string): Date | null {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.dateValue ?? null;\n }\n\n private getFormLink(): string | null {\n const formID = this.getStringFieldData(this.activity, StandardIds.ActivityRecordSourceDrillDown2);\n if (formID === '' || !this.isFormActivity()) {\n return null;\n }\n const link = `/custom-forms/edit/${formID}`;\n if (this.useBusinessCenterLink()) {\n return `/account/location/${this.namespace()}${link}`;\n }\n return link;\n }\n\n constructor(\n private readonly fieldService: CrmFieldService,\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n ) {}\n\n protected readonly AVATAR_WIDTH = AVATAR_WIDTH;\n\n headerText = computed(() => {\n const { noteTitle } = this.cardInfo();\n return noteTitle ?? '';\n });\n}\n\ninterface ActivityCardInformation {\n noteBody: string;\n noteTitle: string;\n effectiveDate: Date | null;\n activityUrl: string | null;\n activityUrlName: string;\n formName: string;\n formLink: string | null;\n}\n","@if (cardInfo(); as cardInfo) {\n
\n \n \n @if (showAvatar) {\n
\n @if (isFormActivity()) {\n \n } @else {\n \n }\n
\n }\n \n @if (headerText()) {\n \n {{ headerText() }}\n @if (isFormActivity()) {\n @if (cardInfo.formLink && cardInfo.formName) {\n - {{ cardInfo.formName }}\n } @else if (cardInfo.formName) {\n - {{ cardInfo.formName }}\n }\n }\n \n } @else {\n {{ 'ACTIVITY.UNKNOWN_TITLE' | translate }}\n }\n \n \n @if (cardInfo.effectiveDate !== null) {\n

\n {{ cardInfo.effectiveDate | date: dateFormat }}\n

\n }\n
\n
\n \n @if (isFormActivity()) {\n \n \n \n \n \n } @else {\n \n }\n \n
\n
\n\n \n @if (cardInfo.noteBody) {\n
\n \n

\n \n

\n
\n
\n }\n @if (cardInfo.activityUrl) {\n \n }\n
\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, Input, computed, effect, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatCardModule } from '@angular/material/card';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ActivityInterface, CRMChangeLogApiService, CrmObjectChangeLogInterface } from '@vendasta/crm';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\n\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { SalesSdk, SalespersonService } from '@vendasta/sales';\nimport { Salesperson } from '@vendasta/sales/lib/_internal/objects';\nimport { EMPTY, combineLatest, of, switchMap, take } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport {\n CrmInjectionToken,\n CrmDependencies,\n SimplifiedUser,\n ObjectType,\n RecordChangeType,\n} from '../../../tokens-and-interfaces';\nimport { TranslateByObjectTypeService } from '../../../i18n/translate-by-object-type/translate-by-object-type.service';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { AVATAR_WIDTH } from '../../../constants';\n\nimport { CrmFieldService, StandardIds, SystemFieldIds, StandardExternalIds } from '../../../shared-services';\n\ninterface EffectResult {\n changeLog: CrmObjectChangeLogInterface;\n changeLogSalesPerson: Salesperson | null;\n changeLogUser: SimplifiedUser[];\n changeLogSalespersonId: string | null;\n}\n\nconst RecordChangeIcons = {\n Default: 'business',\n Opportunity: 'monetization_on',\n};\n\n@Component({\n selector: 'crm-activity-record-change',\n templateUrl: './record-change.component.html',\n styleUrls: ['./record-change.scss'],\n imports: [CommonModule, TranslateModule, TranslationModule, MatCardModule, GalaxyPipesModule, GalaxyAvatarModule],\n})\nexport class CrmActivityRecordChangeComponent {\n AVATAR_WIDTH = AVATAR_WIDTH;\n dateFormat = DateFormat.medium;\n\n #activity = signal({});\n private readonly namespace = toSignal(this.config.namespace$);\n\n private _showAvatar = true;\n\n isReady = signal(false);\n\n @Input() set activity(activity: ActivityInterface) {\n this.#activity.set(activity);\n }\n\n get activity(): ActivityInterface {\n return this.#activity();\n }\n\n get showAvatar() {\n return this._showAvatar;\n }\n\n recordChangeType = computed(() => {\n return this.fieldService.getFieldValueFromCrmObject(this.#activity(), StandardExternalIds.ActivityRecordChangeType)\n ?.stringValue as RecordChangeType;\n });\n\n objectType = computed(() => {\n const activity = this.#activity();\n if (activity.associations === undefined || activity.associations.length === 0) {\n console.warn('No associations found for activity. Could not deduce object type.', this.#activity().crmObjectId);\n return undefined;\n }\n return activity.associations[0].crmObjectType as ObjectType;\n });\n\n icon = computed(() => {\n const objectType = this.objectType();\n if (objectType === 'Opportunity') {\n return RecordChangeIcons.Opportunity;\n }\n return RecordChangeIcons.Default;\n });\n\n sourceName = computed(() => {\n return this.fieldService.getFieldValueFromCrmObject(this.#activity(), StandardIds.ActivitySourceName)?.stringValue;\n });\n\n cardInfo = computed(() => {\n return {\n isReady: this.isReady(),\n headerText: this.headerText(),\n contentText: this.contentText(),\n effectiveDate: this.effectiveDate(),\n isUpdatedRecordChange: this.isUpdatedRecordChange(),\n };\n });\n\n headerText = computed(() => {\n const effectResult = this.effectResult();\n\n let partialKey = '';\n switch (this.recordChangeType()) {\n case 'CREATED':\n partialKey = 'RECORD_CHANGE_ACTIVITY.CREATED';\n break;\n case 'IMPORTANT_FIELD_UPDATED':\n partialKey = 'RECORD_CHANGE_ACTIVITY.IMPORTANT_FIELD_UPDATED';\n break;\n }\n const computedObjectType = this.objectType();\n if (computedObjectType === undefined) {\n return '';\n }\n const sourceName = this.sourceName();\n if (sourceName !== undefined) {\n partialKey = 'RECORD_CHANGE_ACTIVITY.CREATED_VIA';\n }\n const createdVia = this.translateByObjectTypeService.getTranslationByObjectType(computedObjectType, partialKey);\n if (sourceName !== undefined) {\n return `${createdVia} ${sourceName}`;\n }\n\n if (this.recordChangeType() === 'IMPORTANT_FIELD_UPDATED') {\n const partialKey = 'RECORD_CHANGE_ACTIVITY.IMPORTANT_FIELD_UPDATED';\n const updatedByUserPartialKey = this.translateByObjectTypeService.getTranslationByObjectType(\n computedObjectType,\n partialKey,\n {\n updatedField: `Salesperson`,\n },\n );\n return `${updatedByUserPartialKey} ${effectResult?.changeLogUser[0].displayName ?? ''}`.trim();\n }\n return createdVia;\n });\n\n effectiveDate = computed(() => {\n return (\n this.fieldService.getFieldValueFromCrmObject(this.#activity(), SystemFieldIds.ActivityEffectiveDate)?.dateValue ??\n null\n );\n });\n\n effectResult = signal(undefined);\n\n contentText = computed(() => {\n const effectResult = this.effectResult();\n\n const computedObjectType = this.objectType();\n if (computedObjectType === undefined) {\n return '';\n }\n\n if (this.recordChangeType() === 'IMPORTANT_FIELD_UPDATED') {\n if (effectResult?.changeLogSalesPerson === null && effectResult?.changeLogSalespersonId) {\n const unknownKey = 'RECORD_CHANGE_ACTIVITY.IMPORTANT_FIELD_UPDATED_SALESPERSON_UNKNOWN';\n const salespersonUnknownPartialKey = this.translateByObjectTypeService.getTranslationByObjectType(\n computedObjectType,\n unknownKey,\n );\n const partialKey = 'RECORD_CHANGE_ACTIVITY.IMPORTANT_FIELD_UPDATED_SALESPERSON';\n const salespersonUpdatedPartialKey = this.translateByObjectTypeService.getTranslationByObjectType(\n computedObjectType,\n partialKey,\n );\n return `${salespersonUpdatedPartialKey} ${salespersonUnknownPartialKey}`.trim();\n }\n if (effectResult?.changeLogSalesPerson !== null) {\n const partialKey = 'RECORD_CHANGE_ACTIVITY.IMPORTANT_FIELD_UPDATED_SALESPERSON';\n const salespersonFullName = [\n effectResult?.changeLogSalesPerson.firstName ?? '',\n effectResult?.changeLogSalesPerson.lastName ?? '',\n ]\n .map((name) => name.trim())\n .join(' ');\n const salespersonUpdatedPartialKey = this.translateByObjectTypeService.getTranslationByObjectType(\n computedObjectType,\n partialKey,\n );\n return `${salespersonUpdatedPartialKey} ${salespersonFullName}`.trim();\n }\n const partialKey = 'RECORD_CHANGE_ACTIVITY.IMPORTANT_FIELD_UPDATED_SALESPERSON_NOT_ASSIGNED';\n const salespersonNotAssignedPartialKey = this.translateByObjectTypeService.getTranslationByObjectType(\n computedObjectType,\n partialKey,\n );\n return `${salespersonNotAssignedPartialKey}`;\n }\n return '';\n });\n\n isUpdatedRecordChange = computed(() => {\n const effectResult = this.effectResult();\n return effectResult?.changeLog.crmChangeSubtype !== '';\n });\n\n constructor(\n private readonly fieldService: CrmFieldService,\n private readonly translateByObjectTypeService: TranslateByObjectTypeService,\n private readonly changeLogService: CRMChangeLogApiService,\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n @Inject(SalespersonService) private readonly salespersonService: SalesSdk,\n ) {\n effect(() => {\n if (!this.recordChangeType() || this.recordChangeType() !== 'IMPORTANT_FIELD_UPDATED') {\n this.effectResult.set(undefined);\n this.isReady.set(true);\n } else if (this.recordChangeType() === 'IMPORTANT_FIELD_UPDATED') {\n const companyId =\n this.#activity().associations?.find((association) => association.crmObjectType === 'Company')?.crmObjectId ??\n '';\n const changeId =\n this.fieldService.getFieldValueFromCrmObject(this.#activity(), StandardIds.RecordChangeReferenceFieldID)\n ?.stringValue ?? '';\n\n this.changeLogService\n .getMultiChangeLog({\n crmObjectType: this.objectType(),\n namespace: this.namespace(),\n crmChangelogIdentifiers: [\n {\n crmObjectId: companyId,\n crmChangeId: changeId,\n },\n ],\n })\n .pipe(\n switchMap((res) => {\n const object = res.changeLogs[0];\n const salesPersonSubId = this.fieldService.getFieldValueFromCrmObject(\n object,\n StandardIds.CompanyPrimarySalespersonID,\n )?.stringValue;\n const createdByUserId = object.createdByUserId;\n const namespace = this.namespace() || '';\n\n return combineLatest([\n of(object),\n salesPersonSubId\n ? this.salespersonService\n .getSalespersonBySubjectId(namespace, salesPersonSubId)\n .pipe(catchError(() => of(null)))\n : of(null),\n createdByUserId ? this.config.services?.userService?.getMultiUsers([createdByUserId]) || EMPTY : EMPTY,\n of(salesPersonSubId),\n ]);\n }),\n take(1),\n )\n .subscribe(([object, salesPerson, simplifiedUser, salesPersonSubId]) => {\n const effectResult = {} as EffectResult;\n effectResult.changeLog = object;\n effectResult.changeLogSalesPerson = salesPerson;\n effectResult.changeLogUser = simplifiedUser;\n effectResult.changeLogSalespersonId = salesPersonSubId || null;\n this.effectResult.set(effectResult);\n this.isReady.set(true);\n });\n }\n });\n }\n}\n","\n \n \n
\n \n
\n
\n \n {{ cardInfo.headerText }}\n \n \n

\n {{ cardInfo.effectiveDate | date: dateFormat }}\n

\n
\n
\n \n {{ cardInfo.contentText }}\n \n
\n
\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n Input,\n WritableSignal,\n signal,\n Signal,\n computed,\n OnInit,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ActivityTaskStatus } from '../../../tokens-and-interfaces';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { CrmFieldService, StandardIds, ActivityService } from '../../../shared-services';\nimport { ActivityInterface, FieldMaskInterface, ActivityAssociationInterface } from '@vendasta/crm';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { User } from '@vendasta/iamv2';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { firstValueFrom } from 'rxjs';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { CollapsibleSectionComponent } from '../../collapsible-section/collapsible-section.component';\nimport { SanitizeHtmlPipe } from './sanitize-html.pipe';\nimport { CrmObjectIdentifier } from './activity.interface';\n\n@Component({\n selector: 'crm-activity-task',\n templateUrl: './task.component.html',\n styleUrls: ['./task.component.scss'],\n providers: [],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n MatCheckboxModule,\n ReactiveFormsModule,\n GalaxyFormFieldModule,\n MatInputModule,\n MatIconModule,\n CollapsibleSectionComponent,\n SanitizeHtmlPipe,\n ],\n})\nexport class CrmActivityTaskComponent implements OnInit {\n completedTaskControl = new FormControl(false);\n dateFormat = DateFormat.mediumDateShortTime;\n private _activity: WritableSignal = signal({});\n @Input({ required: true }) set activity(activity: ActivityInterface) {\n this._activity.set(activity);\n }\n get activity() {\n return this._activity();\n }\n @Output() activityChange = new EventEmitter();\n\n @Input() users?: User[] | null;\n\n @Input() associatedObject?: CrmObjectIdentifier | null;\n\n private unknownNamePlaceholder = 'CONTACT.ACTIVITIES.UNKNOWN_NAME';\n\n cardInfo: Signal = computed(() => {\n return {\n crmObjectId: this._activity().crmObjectId,\n title: this.getFieldData(this._activity(), StandardIds.ActivityName),\n body: this.getFieldData(this._activity(), StandardIds.ActivityTaskBody),\n status: this.getFieldData(this._activity(), StandardIds.ActivityTaskStatus),\n type: this.getFieldData(this._activity(), StandardIds.ActivityTaskType),\n priority: this.getFieldData(this._activity(), StandardIds.ActivityTaskPriority),\n dueDate:\n this.fieldService.getFieldValueFromCrmObject(this._activity(), StandardIds.ActivityTaskDueDate)?.dateValue ??\n null,\n assignee: this.getAssigneeName(this._activity()),\n associations: this.getAssociations(this._activity()),\n };\n });\n\n ngOnInit(): void {\n const taskIsCompleted =\n this.activity?.fields?.find((field) => field.fieldId === StandardIds.ActivityTaskStatus)?.stringValue ===\n ActivityTaskStatus.Completed;\n this.completedTaskControl.setValue(taskIsCompleted, { emitEvent: false });\n }\n\n private getFieldData(activity: ActivityInterface, fieldId: string): string {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.stringValue ?? '';\n }\n\n private getAssigneeName(activity: ActivityInterface): string {\n const ownerId = activity?.ownerId ?? '';\n const user = this.users?.find((user) => user.userId === ownerId);\n const userName = [user?.firstName, user?.lastName]\n .map((name) => name?.trim())\n .filter((name) => name)\n .join(' ');\n return userName || this.unknownNamePlaceholder;\n }\n\n private getTaskCompletionStatus(): string {\n return this.completedTaskControl.value ? ActivityTaskStatus.Completed : ActivityTaskStatus.Open;\n }\n\n private getAssociations(activity: ActivityInterface): ActivityAssociationInterface[] {\n return activity?.associations;\n }\n\n private emitStatusChange(status: string): void {\n const activity = this.activity;\n const field = this.fieldService.getFieldValueFromCrmObject(activity, StandardIds.ActivityTaskStatus);\n if (field) {\n field.stringValue = status;\n } else {\n activity.fields?.push({ fieldId: StandardIds.ActivityTaskStatus, stringValue: status });\n }\n this._activity.set(activity);\n this.activityChange.emit(activity);\n }\n\n async updateTaskCompletionStatus(): Promise {\n const status = this.getTaskCompletionStatus();\n const activity: ActivityInterface = {\n crmObjectId: this.activity.crmObjectId,\n crmObjectSubtype: this.activity.crmObjectSubtype,\n fields: [{ fieldId: StandardIds.ActivityTaskStatus, stringValue: status }],\n };\n\n const mask: FieldMaskInterface = {\n paths: [StandardIds.ActivityTaskStatus],\n };\n try {\n await firstValueFrom(this.activityService.updateActivity(activity, mask));\n this.snack.openSuccessSnack('TASK.STATUS_UPDATE.SUCCESS');\n this.emitStatusChange(status);\n } catch (_) {\n this.snack.openErrorSnack('TASK.STATUS_UPDATE.ERROR');\n }\n }\n\n constructor(\n private readonly fieldService: CrmFieldService,\n private readonly activityService: ActivityService,\n private readonly snack: SnackbarService,\n ) {}\n}\ninterface ActivityCardInformation {\n title: string;\n body: string;\n status: string;\n type: string;\n priority: string;\n dueDate: Date | null;\n assignee: string;\n associations: ActivityAssociationInterface[];\n}\n","
\n \n \n
\n \n
\n
{{ cardInfo.title }}
\n \n
\n
\n
\n
\n
\n
\n\n
\n \n \n \n \n
\n
\n\n\n
\n
\n {{ label | translate }}\n
\n
\n \n \n {{ value }}\n \n
\n
\n
\n","import * as i0 from '@angular/core';\nimport { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'meeting-analysis-api.vendasta-local.com',\n 'test': '',\n 'demo': 'meeting-analysis-demo.apigateway.co',\n 'prod': 'meeting-analysis-prod.apigateway.co',\n 'production': 'meeting-analysis-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ConversationSortField = /*#__PURE__*/function (ConversationSortField) {\n ConversationSortField[ConversationSortField[\"CONVERSATION_SORT_FIELD_UNSPECIFIED\"] = 0] = \"CONVERSATION_SORT_FIELD_UNSPECIFIED\";\n ConversationSortField[ConversationSortField[\"CONVERSATION_SORT_FIELD_CREATED\"] = 1] = \"CONVERSATION_SORT_FIELD_CREATED\";\n ConversationSortField[ConversationSortField[\"CONVERSATION_SORT_FIELD_UPDATED\"] = 2] = \"CONVERSATION_SORT_FIELD_UPDATED\";\n ConversationSortField[ConversationSortField[\"CONVERSATION_SORT_FIELD_TITLE\"] = 3] = \"CONVERSATION_SORT_FIELD_TITLE\";\n ConversationSortField[ConversationSortField[\"CONVERSATION_SORT_FIELD_SENTIMENT\"] = 4] = \"CONVERSATION_SORT_FIELD_SENTIMENT\";\n ConversationSortField[ConversationSortField[\"CONVERSATION_SORT_FIELD_SALES_SCORE\"] = 5] = \"CONVERSATION_SORT_FIELD_SALES_SCORE\";\n return ConversationSortField;\n}(ConversationSortField || {});\nvar ConversationSource = /*#__PURE__*/function (ConversationSource) {\n ConversationSource[ConversationSource[\"CONVERSATION_SOURCE_UNSPECIFIED\"] = 0] = \"CONVERSATION_SOURCE_UNSPECIFIED\";\n ConversationSource[ConversationSource[\"CONVERSATION_SOURCE_GOOGLE_MEET\"] = 1] = \"CONVERSATION_SOURCE_GOOGLE_MEET\";\n ConversationSource[ConversationSource[\"CONVERSATION_SOURCE_GONG\"] = 2] = \"CONVERSATION_SOURCE_GONG\";\n return ConversationSource;\n}(ConversationSource || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar EvaluationFeedback = /*#__PURE__*/function (EvaluationFeedback) {\n EvaluationFeedback[EvaluationFeedback[\"EVALUATION_FEEDBACK_UNDEFINED\"] = 0] = \"EVALUATION_FEEDBACK_UNDEFINED\";\n EvaluationFeedback[EvaluationFeedback[\"EVALUATION_FEEDBACK_POSITIVE\"] = 1] = \"EVALUATION_FEEDBACK_POSITIVE\";\n EvaluationFeedback[EvaluationFeedback[\"EVALUATION_FEEDBACK_NEGATIVE\"] = 2] = \"EVALUATION_FEEDBACK_NEGATIVE\";\n return EvaluationFeedback;\n}(EvaluationFeedback || {});\nvar EvaluationReason = /*#__PURE__*/function (EvaluationReason) {\n EvaluationReason[EvaluationReason[\"EVALUATION_REASON_UNDEFINED\"] = 0] = \"EVALUATION_REASON_UNDEFINED\";\n EvaluationReason[EvaluationReason[\"EVALUATION_REASON_INACCURATE_SUMMARY\"] = 1] = \"EVALUATION_REASON_INACCURATE_SUMMARY\";\n EvaluationReason[EvaluationReason[\"EVALUATION_REASON_INACCURATE_TAKEAWAYS\"] = 2] = \"EVALUATION_REASON_INACCURATE_TAKEAWAYS\";\n EvaluationReason[EvaluationReason[\"EVALUATION_REASON_INACCURATE_ACTION_ITEMS\"] = 3] = \"EVALUATION_REASON_INACCURATE_ACTION_ITEMS\";\n EvaluationReason[EvaluationReason[\"EVALUATION_REASON_LACK_OF_DETAILS\"] = 4] = \"EVALUATION_REASON_LACK_OF_DETAILS\";\n EvaluationReason[EvaluationReason[\"EVALUATION_REASON_WRONG_SPEAKERS\"] = 5] = \"EVALUATION_REASON_WRONG_SPEAKERS\";\n EvaluationReason[EvaluationReason[\"EVALUATION_REASON_OTHER\"] = 6] = \"EVALUATION_REASON_OTHER\";\n return EvaluationReason;\n}(EvaluationReason || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar SortDirection = /*#__PURE__*/function (SortDirection) {\n SortDirection[SortDirection[\"SORT_DIRECTION_UNSET\"] = 0] = \"SORT_DIRECTION_UNSET\";\n SortDirection[SortDirection[\"SORT_DIRECTION_ASCENDING\"] = 1] = \"SORT_DIRECTION_ASCENDING\";\n SortDirection[SortDirection[\"SORT_DIRECTION_DESCENDING\"] = 2] = \"SORT_DIRECTION_DESCENDING\";\n return SortDirection;\n}(SortDirection || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n if (proto.totalResults) {\n m.totalResults = parseInt(proto.totalResults, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n if (typeof this.totalResults !== 'undefined') {\n toReturn['totalResults'] = this.totalResults;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Conversation {\n static fromProto(proto) {\n let m = new Conversation();\n m = Object.assign(m, proto);\n if (proto.source) {\n m.source = enumStringToValue$1(ConversationSource, proto.source);\n }\n if (proto.meetingDate) {\n m.meetingDate = new Date(proto.meetingDate);\n }\n if (proto.externalAttendees) {\n m.externalAttendees = proto.externalAttendees.map(ExternalAttendee.fromProto);\n }\n if (proto.sentiment) {\n m.sentiment = parseInt(proto.sentiment, 10);\n }\n if (proto.salesScore) {\n m.salesScore = parseInt(proto.salesScore, 10);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.externalId !== 'undefined') {\n toReturn['externalId'] = this.externalId;\n }\n if (typeof this.source !== 'undefined') {\n toReturn['source'] = this.source;\n }\n if (typeof this.rawTranscript !== 'undefined') {\n toReturn['rawTranscript'] = this.rawTranscript;\n }\n if (typeof this.recordingUrl !== 'undefined') {\n toReturn['recordingUrl'] = this.recordingUrl;\n }\n if (typeof this.meetingDate !== 'undefined' && this.meetingDate !== null) {\n toReturn['meetingDate'] = 'toApiJson' in this.meetingDate ? this.meetingDate.toApiJson() : this.meetingDate;\n }\n if (typeof this.internalAttendees !== 'undefined') {\n toReturn['internalAttendees'] = this.internalAttendees;\n }\n if (typeof this.externalAttendees !== 'undefined' && this.externalAttendees !== null) {\n toReturn['externalAttendees'] = 'toApiJson' in this.externalAttendees ? this.externalAttendees.toApiJson() : this.externalAttendees;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.summary !== 'undefined') {\n toReturn['summary'] = this.summary;\n }\n if (typeof this.keywords !== 'undefined') {\n toReturn['keywords'] = this.keywords;\n }\n if (typeof this.keyTakeaways !== 'undefined') {\n toReturn['keyTakeaways'] = this.keyTakeaways;\n }\n if (typeof this.actionItems !== 'undefined') {\n toReturn['actionItems'] = this.actionItems;\n }\n if (typeof this.sentiment !== 'undefined') {\n toReturn['sentiment'] = this.sentiment;\n }\n if (typeof this.sentimentExplanation !== 'undefined') {\n toReturn['sentimentExplanation'] = this.sentimentExplanation;\n }\n if (typeof this.salesScore !== 'undefined') {\n toReturn['salesScore'] = this.salesScore;\n }\n if (typeof this.salesScoreExplanation !== 'undefined') {\n toReturn['salesScoreExplanation'] = this.salesScoreExplanation;\n }\n if (typeof this.analysingModelUsed !== 'undefined') {\n toReturn['analysingModelUsed'] = this.analysingModelUsed;\n }\n if (typeof this.promptUsed !== 'undefined') {\n toReturn['promptUsed'] = this.promptUsed;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n if (typeof this.duration !== 'undefined') {\n toReturn['duration'] = this.duration;\n }\n return toReturn;\n }\n}\nclass ExternalAttendee {\n static fromProto(proto) {\n let m = new ExternalAttendee();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.contactId !== 'undefined') {\n toReturn['contactId'] = this.contactId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateConversationRequest {\n static fromProto(proto) {\n let m = new CreateConversationRequest();\n m = Object.assign(m, proto);\n if (proto.conversation) {\n m.conversation = Conversation.fromProto(proto.conversation);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.conversation !== 'undefined' && this.conversation !== null) {\n toReturn['conversation'] = 'toApiJson' in this.conversation ? this.conversation.toApiJson() : this.conversation;\n }\n return toReturn;\n }\n}\nclass CreateConversationResponse {\n static fromProto(proto) {\n let m = new CreateConversationResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass CreateEvaluationRequest {\n static fromProto(proto) {\n let m = new CreateEvaluationRequest();\n m = Object.assign(m, proto);\n if (proto.feedback) {\n m.feedback = enumStringToValue(EvaluationFeedback, proto.feedback);\n }\n if (proto.reasons) {\n m.reasons = proto.reasons.map(v => enumStringToValue(EvaluationReason, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.conversationId !== 'undefined') {\n toReturn['conversationId'] = this.conversationId;\n }\n if (typeof this.feedback !== 'undefined') {\n toReturn['feedback'] = this.feedback;\n }\n if (typeof this.comment !== 'undefined') {\n toReturn['comment'] = this.comment;\n }\n if (typeof this.reasons !== 'undefined') {\n toReturn['reasons'] = this.reasons;\n }\n return toReturn;\n }\n}\nclass ListConversationsRequestFilters {\n static fromProto(proto) {\n let m = new ListConversationsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.source) {\n m.source = enumStringToValue(ConversationSource, proto.source);\n }\n if (proto.sentiment) {\n m.sentiment = parseInt(proto.sentiment, 10);\n }\n if (proto.salesScore) {\n m.salesScore = parseInt(proto.salesScore, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.namespace !== 'undefined') {\n toReturn['namespace'] = this.namespace;\n }\n if (typeof this.source !== 'undefined') {\n toReturn['source'] = this.source;\n }\n if (typeof this.keywords !== 'undefined') {\n toReturn['keywords'] = this.keywords;\n }\n if (typeof this.sentiment !== 'undefined') {\n toReturn['sentiment'] = this.sentiment;\n }\n if (typeof this.salesScore !== 'undefined') {\n toReturn['salesScore'] = this.salesScore;\n }\n return toReturn;\n }\n}\nclass GetConversationRequest {\n static fromProto(proto) {\n let m = new GetConversationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass GetConversationResponse {\n static fromProto(proto) {\n let m = new GetConversationResponse();\n m = Object.assign(m, proto);\n if (proto.conversation) {\n m.conversation = Conversation.fromProto(proto.conversation);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.conversation !== 'undefined' && this.conversation !== null) {\n toReturn['conversation'] = 'toApiJson' in this.conversation ? this.conversation.toApiJson() : this.conversation;\n }\n return toReturn;\n }\n}\nclass ListConversationsRequest {\n static fromProto(proto) {\n let m = new ListConversationsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListConversationsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.sort) {\n m.sort = ListConversationsRequestSort.fromProto(proto.sort);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.sort !== 'undefined' && this.sort !== null) {\n toReturn['sort'] = 'toApiJson' in this.sort ? this.sort.toApiJson() : this.sort;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n return toReturn;\n }\n}\nclass ListConversationsResponse {\n static fromProto(proto) {\n let m = new ListConversationsResponse();\n m = Object.assign(m, proto);\n if (proto.conversations) {\n m.conversations = proto.conversations.map(Conversation.fromProto);\n }\n if (proto.metadata) {\n m.metadata = PagedResponseMetadata.fromProto(proto.metadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.conversations !== 'undefined' && this.conversations !== null) {\n toReturn['conversations'] = 'toApiJson' in this.conversations ? this.conversations.toApiJson() : this.conversations;\n }\n if (typeof this.metadata !== 'undefined' && this.metadata !== null) {\n toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;\n }\n return toReturn;\n }\n}\nclass ListConversationsRequestSort {\n static fromProto(proto) {\n let m = new ListConversationsRequestSort();\n m = Object.assign(m, proto);\n if (proto.field) {\n m.field = enumStringToValue(ConversationSortField, proto.field);\n }\n if (proto.direction) {\n m.direction = enumStringToValue(SortDirection, proto.direction);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.field !== 'undefined') {\n toReturn['field'] = this.field;\n }\n if (typeof this.direction !== 'undefined') {\n toReturn['direction'] = this.direction;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet MeetingAnalysisApiService = /*#__PURE__*/(() => {\n class MeetingAnalysisApiService {\n constructor() {\n this.hostService = inject(HostService);\n this.http = inject(HttpClient);\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createConversation(r) {\n const request = r.toApiJson ? r : new CreateConversationRequest(r);\n return this.http.post(this._host + \"/meeting_analysis.v1.MeetingAnalysis/CreateConversation\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateConversationResponse.fromProto(resp)));\n }\n listConversations(r) {\n const request = r.toApiJson ? r : new ListConversationsRequest(r);\n return this.http.post(this._host + \"/meeting_analysis.v1.MeetingAnalysis/ListConversations\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListConversationsResponse.fromProto(resp)));\n }\n getConversation(r) {\n const request = r.toApiJson ? r : new GetConversationRequest(r);\n return this.http.post(this._host + \"/meeting_analysis.v1.MeetingAnalysis/GetConversation\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetConversationResponse.fromProto(resp)));\n }\n createEvaluation(r) {\n const request = r.toApiJson ? r : new CreateEvaluationRequest(r);\n return this.http.post(this._host + \"/meeting_analysis.v1.MeetingAnalysis/CreateEvaluation\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n MeetingAnalysisApiService.ɵfac = function MeetingAnalysisApiService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MeetingAnalysisApiService)();\n };\n MeetingAnalysisApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MeetingAnalysisApiService,\n factory: MeetingAnalysisApiService.ɵfac,\n providedIn: 'root'\n });\n return MeetingAnalysisApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Access, Conversation, ConversationSortField, ConversationSource, CreateConversationRequest, CreateConversationResponse, CreateEvaluationRequest, EvaluationFeedback, EvaluationReason, ExternalAttendee, GetConversationRequest, GetConversationResponse, HostService, ListConversationsRequest, ListConversationsRequestFilters, ListConversationsRequestSort, ListConversationsResponse, MeetingAnalysisApiService, PagedRequestOptions, PagedResponseMetadata, SortDirection };\n","import { Component, DestroyRef, Inject, ViewChild } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { FormBuilder, FormGroupDirective, ReactiveFormsModule } from '@angular/forms';\nimport { EvaluationFeedback, EvaluationReason } from '@vendasta/meeting-analysis';\n\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatButton } from '@angular/material/button';\nimport { MatInput } from '@angular/material/input';\nimport { MatCheckbox } from '@angular/material/checkbox';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'crm-feedback-form-modal',\n templateUrl: 'feedback-form-modal.component.html',\n styleUrls: ['./feedback-form-modal.component.scss'],\n imports: [\n TranslateModule,\n TranslationModule,\n ReactiveFormsModule,\n GalaxyFormFieldModule,\n MatDialogModule,\n MatButton,\n MatInput,\n MatCheckbox,\n ],\n})\nexport class FeedbackFormModalComponent {\n @ViewChild('form') formGroupDirective!: FormGroupDirective;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: FeedbackFormModalData,\n private destroyRef: DestroyRef,\n ) {}\n\n ngOnInit() {\n this.formGroup.controls['other'].valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((otherChecked) => {\n if (otherChecked) {\n this.formGroup.controls['comment'].enable();\n }\n });\n }\n\n formGroup = new FormBuilder().group({\n inaccurateSummary: [false],\n inaccurateTakeaways: [false],\n inaccurateActionItems: [false],\n lackOfDetails: [false],\n wrongSpeakers: [false],\n other: [false],\n comment: [''],\n });\n\n submitFeedback() {\n const feedbackReasons: EvaluationReason[] = [];\n const formValues = this.formGroup.value;\n\n if (formValues.inaccurateSummary) feedbackReasons.push(EvaluationReason.EVALUATION_REASON_INACCURATE_SUMMARY);\n if (formValues.inaccurateTakeaways) feedbackReasons.push(EvaluationReason.EVALUATION_REASON_INACCURATE_TAKEAWAYS);\n if (formValues.inaccurateActionItems)\n feedbackReasons.push(EvaluationReason.EVALUATION_REASON_INACCURATE_ACTION_ITEMS);\n if (formValues.lackOfDetails) feedbackReasons.push(EvaluationReason.EVALUATION_REASON_LACK_OF_DETAILS);\n if (formValues.wrongSpeakers) feedbackReasons.push(EvaluationReason.EVALUATION_REASON_WRONG_SPEAKERS);\n if (formValues.other) feedbackReasons.push(EvaluationReason.EVALUATION_REASON_OTHER);\n\n const feedbackData = {\n feedbackReasons: feedbackReasons,\n feedbackType: EvaluationFeedback.EVALUATION_FEEDBACK_NEGATIVE,\n comment: formValues.comment,\n };\n\n this.dialogRef.close(feedbackData);\n }\n}\n\nexport interface FeedbackFormModalData {\n processedTranscriptID: string;\n}\n","

\n {{ 'ACTIVITY.MEETING.MEETING_ANALYSIS.FEEDBACK.TITLE' | translate }}\n

\n\n\n

{{ 'ACTIVITY.MEETING.MEETING_ANALYSIS.FEEDBACK.INSTRUCTIONS' | translate }}

\n\n
\n \n \n {{ 'ACTIVITY.MEETING.MEETING_ANALYSIS.FEEDBACK.INACCURATE_SUMMARY' | translate }}\n \n\n \n {{ 'ACTIVITY.MEETING.MEETING_ANALYSIS.FEEDBACK.INACCURATE_TAKEAWAYS' | translate }}\n \n\n \n {{ 'ACTIVITY.MEETING.MEETING_ANALYSIS.FEEDBACK.INACCURATE_ACTION_ITEMS' | translate }}\n \n\n \n {{ 'ACTIVITY.MEETING.MEETING_ANALYSIS.FEEDBACK.LACK_OF_DETAILS' | translate }}\n \n \n {{ 'ACTIVITY.MEETING.MEETING_ANALYSIS.FEEDBACK.WRONG_SPEAKERS' | translate }}\n \n\n \n {{ 'ACTIVITY.MEETING.MEETING_ANALYSIS.FEEDBACK.OTHER' | translate }}\n \n \n
\n\n \n \n {{ feedbackCommentCounter.value?.length || 0 }}/300\n \n
\n\n\n \n \n\n","import { Component, ElementRef, Inject, ViewChild } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogActions, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ActivityAssociationDisplayInfo, ActivityAssociationService } from './activity-association.service';\nimport { take } from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { FeedbackFormModalComponent } from './feedback-form-modal.component';\nimport { EvaluationFeedback, EvaluationReason, MeetingAnalysisApiService } from '@vendasta/meeting-analysis';\nimport { intervalToDuration } from 'date-fns';\nimport { CrmActivityAssociationPopoverComponent } from './association-popover.component';\nimport { PrimaryAccountGroupIDForCrmObject } from '../../../tokens-and-interfaces';\nimport { of } from 'rxjs';\nimport { ActivityInterface } from '@vendasta/crm';\n\n@Component({\n selector: 'crm-meeting-summary-modal',\n templateUrl: './meeting-summary-modal.component.html',\n styleUrls: ['./meeting-summary-modal.component.scss'],\n imports: [\n MatDialogModule,\n TranslateModule,\n TranslationModule,\n MatCardModule,\n MatIconModule,\n DatePipe,\n MatDialogActions,\n MatButtonModule,\n CommonModule,\n CrmActivityAssociationPopoverComponent,\n ],\n providers: [\n ActivityAssociationService,\n {\n provide: PrimaryAccountGroupIDForCrmObject,\n useFactory: () => {\n // Used for opportunity associations, which we don't need at the moment\n return of('');\n },\n },\n ],\n})\nexport class MeetingSummaryModalComponent {\n @ViewChild('downloadAnchor', { static: true })\n private downloadAnchor: ElementRef;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: MeetingSummaryData,\n private http: HttpClient,\n private snackbarService: SnackbarService,\n private readonly dialog: MatDialog,\n private meetingAnalysisApiService: MeetingAnalysisApiService,\n private readonly activityAssociationService: ActivityAssociationService,\n ) {\n this.activityAssociationService.activity = this.data.activity;\n }\n\n title = this.data.meetingTitle;\n summary = this.data.summary;\n keyTakeaways = this.data.keyTakeaways;\n actionItems = this.data.actionItems;\n duration = this.data.duration;\n meetingDate = this.data.meetingDate;\n recordingUrl = this.data.recordingUrl;\n transcriptUrl = this.data.transcriptUrl;\n sentimentScore = this.data.sentimentScore;\n salesScore = this.data.salesScore;\n companies = this.data.companies;\n processedTranscriptID = this.data.processedTranscriptID;\n\n hasRecording() {\n return !!this.recordingUrl;\n }\n\n viewRecording() {\n if (this.recordingUrl) {\n window.open(this.recordingUrl, '_blank');\n }\n }\n\n downloadTranscript() {\n this.http\n .get(this.transcriptUrl || '', {\n responseType: 'blob',\n withCredentials: true,\n })\n .pipe(take(1))\n .subscribe({\n next: (result) => {\n this.snackbarService.openSuccessSnack('ACTIVITY.MEETING.MEETING_ANALYSIS.DOWNLOAD_WILL_START_SHORTLY');\n this.downloadFile(result, 'transcript.txt');\n },\n error: (error) => {\n console.error(error);\n this.snackbarService.openErrorSnack(error?.message);\n },\n });\n }\n\n downloadFile(file: Blob, filename: string): void {\n // Based off this article: https://www.illucit.com/en/angular/angular-5-httpclient-file-download-with-authentication/\n const url = window.URL.createObjectURL(\n new Blob([file], {\n type: 'text/plain',\n }),\n );\n const link = this.downloadAnchor.nativeElement;\n link.href = url;\n link.download = filename;\n link.click();\n window.URL.revokeObjectURL(url);\n }\n\n thumbsUp() {\n this.submitEvaluation(EvaluationFeedback.EVALUATION_FEEDBACK_POSITIVE, [], '');\n }\n\n thumbsDown() {\n const dialogRef = this.dialog.open(FeedbackFormModalComponent, {\n width: '600px',\n data: { processedTranscriptID: this.processedTranscriptID },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.submitEvaluation(result.feedbackType, result.feedbackReasons, result.comment);\n }\n });\n }\n submitEvaluation(feedbackType: EvaluationFeedback, feedbackReasons: EvaluationReason[], comment: string) {\n const request = {\n conversationId: this.processedTranscriptID,\n feedback: feedbackType,\n comment: comment,\n reasons: feedbackReasons,\n };\n\n this.meetingAnalysisApiService\n .createEvaluation(request)\n .pipe(take(1))\n .subscribe({\n next: () => {\n this.snackbarService.openSuccessSnack('ACTIVITY.MEETING.MEETING_ANALYSIS.FEEDBACK.SUCCESS');\n },\n error: () => {\n this.snackbarService.openErrorSnack('ACTIVITY.MEETING.MEETING_ANALYSIS.FEEDBACK.ERROR');\n },\n });\n }\n\n closeDialog() {\n this.dialogRef.close();\n }\n}\n\nexport interface MeetingSummaryData {\n meetingTitle: string;\n summary: string;\n keyTakeaways: string[];\n actionItems: string[];\n duration: string;\n meetingDate: Date;\n sentimentScore: string;\n salesScore: string;\n companies: ActivityAssociationDisplayInfo[];\n recordingUrl?: string;\n transcriptUrl?: string;\n processedTranscriptID: string;\n activity: ActivityInterface;\n}\n\nexport function convertMillisecondsToHoursAndMinutes(duration: number): string {\n if (duration === 0) return '';\n const convertedDuration = intervalToDuration({ start: 0, end: duration });\n if (convertedDuration.hours !== undefined && convertedDuration.hours > 0) {\n return `${convertedDuration.hours}h ${convertedDuration.minutes}m`;\n }\n return `${convertedDuration.minutes}m`;\n}\n","

{{ title }}

\n\n
\n
\n
{{ 'ACTIVITY.DATE' | translate }}
\n
{{ meetingDate | date: 'MMM d, h:mm a' }}
\n
\n
\n
{{ 'ACTIVITY.DURATION' | translate }}
\n
{{ duration }}
\n
\n
\n
{{ 'ACTIVITY.MEETING.MEETING_ANALYSIS.SALES_SCORE' | translate }}
\n
{{ salesScore }}
\n
\n
\n
{{ 'ACTIVITY.MEETING.MEETING_ANALYSIS.SENTIMENT_SCORE' | translate }}
\n
{{ sentimentScore }}
\n
\n
\n
{{ 'ACTIVITY.MEETING.MEETING_ANALYSIS.ASSOCIATIONS' | translate }}
\n
\n
\n
\n\n
\n\n
\n

{{ 'ACTIVITY.MEETING.MEETING_ANALYSIS.SUMMARY_TITLE' | translate }}

\n

{{ summary }}

\n
\n\n
\n

{{ 'ACTIVITY.MEETING.MEETING_ANALYSIS.KEY_TAKEAWAYS' | translate }}

\n
    \n
  • {{ takeaway }}
  • \n
\n
\n\n
\n

{{ 'ACTIVITY.MEETING.MEETING_ANALYSIS.ACTION_ITEMS' | translate }}

\n
    \n
  • {{ item }}
  • \n
\n
\n
\n\n\n
\n \n \n
\n \n \n \n \n
\n\n\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, Input, SecurityContext, signal, Signal, WritableSignal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { RxState } from '@rx-angular/state';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { AVATAR_WIDTH } from '../../../constants';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { CrmFieldService, StandardIds, SystemFieldIds } from '../../../shared-services/crm-services/field.service';\nimport { ObjectType } from '../../../tokens-and-interfaces';\nimport { CollapsibleSectionComponent } from '../../collapsible-section/collapsible-section.component';\nimport { ActivityExtended } from '../timeline/timeline.service';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { CrmActivityAssociationPopoverComponent } from './association-popover.component';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatDialog } from '@angular/material/dialog';\nimport { convertMillisecondsToHoursAndMinutes, MeetingSummaryModalComponent } from './meeting-summary-modal.component';\nimport { ActivityAssociationDisplayInfo, ActivityAssociationService } from './activity-association.service';\nimport { ActivityAssigneeService } from '../../../shared-services';\nimport { map } from 'rxjs/operators';\nimport { MeetingStatus } from './activity.interface';\n\nexport interface ActivityCardInformation {\n type: 'CardInfo';\n meetingBody: string;\n meetingStatus: string;\n meetingLocation: string;\n meetingDuration: string;\n date: Date | null;\n duration: number;\n meetingSummaryTitle: string;\n meetingSummaryBody: string;\n meetingSummarySentiment: number;\n meetingSalesScore: number;\n meetingKeyTakeAways: string[];\n meetingActionItems: string[];\n meetingTranscriptUrl: string;\n meetingRecordingUrl: string;\n processedTranscriptID: string;\n ownerId: string;\n activity: ActivityInterface;\n}\n\n@Component({\n selector: 'crm-activity-meeting',\n templateUrl: './meeting.component.html',\n styleUrls: ['./meeting.component.scss'],\n providers: [RxState],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n CollapsibleSectionComponent,\n MatCardModule,\n GalaxyAvatarModule,\n GalaxyPipesModule,\n CrmActivityAssociationPopoverComponent,\n MatIcon,\n ],\n})\nexport class CrmActivityMeetingComponent {\n dateFormat = DateFormat.mediumDateShortTime;\n private _cardInfo: WritableSignal> = signal({});\n private _associatedObjectId: WritableSignal = signal('');\n private _objectType: WritableSignal = signal('Contact');\n companies: Signal = this.associationService.companies;\n private isClosed: boolean;\n\n @Input() set objectType(objectType: ObjectType) {\n this._objectType.set(objectType);\n }\n\n get objectType() {\n return this._objectType();\n }\n\n @Input() set associatedObjectId(crmObjectId: string) {\n this._associatedObjectId.set(crmObjectId);\n }\n\n get associatedObjectId() {\n return this._associatedObjectId();\n }\n\n private _showAvatar = true;\n @Input() set showAvatar(showAvatar: boolean) {\n this._showAvatar = showAvatar;\n }\n\n get showAvatar() {\n return this._showAvatar;\n }\n\n @Input({ required: true }) set cardInfo(data: ActivityExtended | Partial) {\n if (this.checkIfActivityCardInformation(data)) {\n this._cardInfo.set(data as ActivityCardInformation);\n } else {\n this.associationService.activity = data as ActivityExtended;\n this._cardInfo.set(this.convertActivityToCardInfo(data as ActivityExtended));\n }\n }\n\n get cardInfo(): Partial {\n return this._cardInfo();\n }\n\n private checkIfActivityCardInformation(data: any): data is ActivityCardInformation {\n return 'type' in data && data.type === 'CardInfo';\n }\n\n private convertActivityToCardInfo(data: ActivityExtended): Partial {\n const duration = this.getIntegerFieldData(data, StandardIds.ActivityMeetingDuration);\n return {\n meetingBody:\n this.sanitizer.sanitize(SecurityContext.HTML, this.getStringFieldData(data, StandardIds.ActivityMeetingBody)) ||\n '',\n meetingStatus: this.getStringFieldData(data, StandardIds.ActivityMeetingStatus),\n meetingLocation: this.getStringFieldData(data, StandardIds.ActivityMeetingLocation),\n date: this.fieldService.getFieldValueFromCrmObject(data, SystemFieldIds.ActivityEffectiveDate)?.dateValue ?? null,\n meetingDuration: convertMillisecondsToHoursAndMinutes(duration),\n duration: duration,\n meetingSummaryTitle: this.getStringFieldData(data, StandardIds.ActivityMeetingSummaryTitle),\n meetingKeyTakeAways: this.getStringValuesFieldData(data, StandardIds.ActivityMeetingKeyTakeaways),\n meetingActionItems: this.getStringValuesFieldData(data, StandardIds.ActivityMeetingActionItems),\n meetingSummaryBody: this.getStringFieldData(data, StandardIds.ActivityMeetingSummaryBody),\n meetingSummarySentiment: this.getIntegerFieldData(data, StandardIds.ActivityMeetingSentiment),\n meetingSalesScore: this.getIntegerFieldData(data, StandardIds.ActivityMeetingSalesScore),\n meetingTranscriptUrl: this.getStringFieldData(data, StandardIds.ActivityMeetingTranscriptUrl),\n meetingRecordingUrl: this.getStringFieldData(data, StandardIds.ActivityMeetingRecordingUrl),\n processedTranscriptID: this.getStringFieldData(data, StandardIds.ActivityMeetingAnalysisProcessedTranscriptID),\n ownerId: this.getStringFieldData(data, SystemFieldIds.ActivityOwnerID),\n activity: data,\n };\n }\n\n headerText$ = computed(() => {\n const cardInfo = this.cardInfo;\n if (!cardInfo || !cardInfo.meetingStatus) {\n return this.translateService.stream('ACTIVITY.MEETING.STATUS_HEADER.UNKNOWN_STATUS');\n }\n\n const statusConfigs: { [key: string]: { i18nKey: string; supportsOwnerSuffix: boolean } } = {\n [MeetingStatus.Scheduled.toLowerCase()]: {\n i18nKey: 'ACTIVITY.MEETING.STATUS_HEADER.SCHEDULED',\n supportsOwnerSuffix: true,\n },\n [MeetingStatus.Rescheduled.toLowerCase()]: {\n i18nKey: 'ACTIVITY.MEETING.STATUS_HEADER.RESCHEDULED',\n supportsOwnerSuffix: true,\n },\n [MeetingStatus.Cancelled.toLowerCase()]: {\n i18nKey: 'ACTIVITY.MEETING.STATUS_HEADER.CANCELLED',\n supportsOwnerSuffix: true,\n },\n [MeetingStatus.Completed.toLowerCase()]: {\n i18nKey: 'ACTIVITY.MEETING.STATUS_HEADER.COMPLETED',\n supportsOwnerSuffix: true,\n },\n [MeetingStatus.NoShow.toLowerCase()]: {\n i18nKey: 'ACTIVITY.MEETING.STATUS_HEADER.NO_SHOW',\n supportsOwnerSuffix: false,\n },\n };\n const statusConfig = statusConfigs[cardInfo.meetingStatus.toLowerCase()];\n if (!statusConfig) {\n return this.translateService.stream('ACTIVITY.MEETING.STATUS_HEADER.UNKNOWN_STATUS');\n }\n if (!statusConfig.supportsOwnerSuffix || !cardInfo.ownerId) {\n return this.translateService.stream(statusConfig.i18nKey);\n }\n\n // Otherwise we want to add the owner suffix and need to look up the user\n return this.userService.getMultiUsers([cardInfo.ownerId]).pipe(\n map((u) => {\n let statusText = this.translateService.instant(statusConfig.i18nKey);\n if (u && u[0]?.displayName) {\n statusText +=\n ' ' +\n this.translateService.instant('ACTIVITY.MEETING.STATUS_HEADER.BY_OWNER', { ownerName: u[0].displayName });\n }\n return statusText;\n }),\n );\n });\n\n cardTitle = computed(() => {\n const { duration } = this.cardInfo;\n const minutes = Math.floor(duration / 60000);\n const hours = Math.floor(minutes / 60);\n if (hours > 0) {\n return `${hours}-hour ${minutes % 60}-minute meeting`;\n }\n return `${minutes}-minute meeting`;\n });\n\n constructor(\n private readonly fieldService: CrmFieldService,\n private readonly translateService: TranslateService,\n private readonly sanitizer: DomSanitizer,\n private readonly dialog: MatDialog,\n private readonly associationService: ActivityAssociationService,\n private readonly userService: ActivityAssigneeService,\n ) {}\n\n protected readonly AVATAR_WIDTH = AVATAR_WIDTH;\n\n private getStringFieldData(activity: ActivityInterface, fieldId: string): string {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.stringValue ?? '';\n }\n\n private getStringValuesFieldData(activity: ActivityInterface, fieldId: string): string[] {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.stringValues?.values ?? [];\n }\n\n private getIntegerFieldData(activity: ActivityInterface, fieldId: string): number {\n return this.fieldService.getFieldValueFromCrmObject(activity, fieldId)?.integerValue ?? 0;\n }\n\n openSummaryModal(): void {\n const cardDetails = this.cardInfo;\n const companyList = this.companies();\n\n const dialogRef = this.dialog.open(MeetingSummaryModalComponent, {\n width: '950px',\n data: {\n meetingTitle: cardDetails.meetingSummaryTitle,\n meetingDate: cardDetails.date,\n duration: cardDetails.meetingDuration,\n sentimentScore: `${cardDetails.meetingSummarySentiment} / 10`,\n salesScore: `${cardDetails.meetingSalesScore} / 10`,\n summary: cardDetails.meetingSummaryBody,\n keyTakeaways: cardDetails.meetingKeyTakeAways,\n actionItems: cardDetails.meetingActionItems,\n transcriptUrl: cardDetails.meetingTranscriptUrl,\n recordingUrl: cardDetails.meetingRecordingUrl,\n companies: companyList,\n processedTranscriptID: cardDetails.processedTranscriptID,\n ownerID: cardDetails.ownerId,\n activity: cardDetails.activity,\n },\n });\n\n dialogRef.afterClosed().subscribe(() => {\n this.isClosed = true;\n });\n }\n}\n","
\n \n \n
\n \n
\n \n \n {{ headerText }}\n \n \n \n \n \n \n

\n {{ cardInfo.date | date: dateFormat }}\n

\n
\n
\n \n \n \n {{ cardTitle }}\n \n\n \n @if (cardInfo.meetingSummaryBody || cardInfo.meetingSummaryTitle) {\n
\n
\n
\n\n
\n
\n \n
{{ 'ACTIVITY.MEETING.SUMMARY_BY_AI' | translate }}
\n
\n
\n \n
\n {{\n 'ACTIVITY.MEETING.MEETING_ANALYSIS.VIEW_SUMMARY' | translate\n }}\n
\n } @else {\n
\n \n \n \n
\n }\n\n
\n \n \n \n \n \n \n
\n \n
\n
\n
\n
\n
\n\n\n
\n
\n {{ label | translate }}\n
\n
\n \n \n {{ value }}\n \n
\n
\n
\n","export * from './activity.interface';\nexport * from './activity-communication.component';\nexport * from './activity-logger.component';\nexport * from './activity-logger.service';\nexport * from './activity-template.component';\nexport * from './activity-template-options.directive';\nexport * from './activity-url-builder';\nexport * from './email.component';\nexport * from './logged-call.component';\nexport * from './logged-communication.component';\nexport * from './logged-email.component';\nexport * from './logged-meeting.component';\nexport * from './logged-note.component';\nexport * from './note.component';\nexport * from './record-change.component';\nexport * from './task.component';\nexport * from './logger';\nexport * from './meeting.component';\nexport * from './activity-association.service';\nexport * from './meeting-summary-modal.component';\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { ObjectAssociationType, ObjectType, ObjectTypes } from '../../../tokens-and-interfaces';\n\ntype Type = ObjectType | ObjectAssociationType;\ninterface Input {\n objectType: Type;\n crmObjectId: string;\n}\ninterface Output {\n objectType: ObjectType;\n crmObjectId: string;\n}\n\n@Pipe({\n name: 'crmTimelineAssociatedObject',\n standalone: true,\n})\nexport class CrmTimelineAssociatedObjectPipe implements PipeTransform {\n transform(activity: ActivityInterface, crmObject?: Input): Output {\n if (crmObject && this.isObjectType(crmObject.objectType)) {\n return {\n objectType: crmObject.objectType,\n crmObjectId: crmObject.crmObjectId,\n };\n }\n\n // Get the first associated Company or Contact\n if (activity?.associations?.length) {\n for (const asc of activity.associations) {\n if (this.isObjectType(asc.crmObjectType)) {\n return {\n objectType: asc.crmObjectType as ObjectType,\n crmObjectId: asc.crmObjectId as string,\n };\n }\n }\n }\n\n return {} as Output;\n }\n\n private isObjectType(objectType?: string): objectType is ObjectType {\n return ObjectTypes.includes(objectType as ObjectType);\n }\n}\n","import { Component, computed, inject, Input, input } from '@angular/core';\nimport { CommonModule, DOCUMENT } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { RecordChangeType } from '../../../tokens-and-interfaces';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { ObjectTypePrefix, VALID_RECORD_CHANGE_TYPES } from '../../../constants';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { CrmActivityOpportunityUpdatedComponent } from '../activities/opportunity-change.component';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CrmActivityCallComponent } from '../activities/call.component';\nimport { CrmActivityAssociationPopoverComponent } from '../activities/association-popover.component';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { ActivityAssociationService } from '../activities/activity-association.service';\nimport { ActivityInterface } from '@vendasta/crm';\nimport {\n CrmActivityCommunicationComponent,\n CrmActivityEmailComponent,\n CrmActivityLoggedCallComponent,\n CrmActivityLoggedCommunicationComponent,\n CrmActivityLoggedEmailComponent,\n CrmActivityLoggedMeetingComponent,\n CrmActivityLoggedNoteComponent,\n CrmActivityLoggerComponent,\n CrmActivityNoteComponent,\n CrmActivityRecordChangeComponent,\n CrmActivityTaskComponent,\n CrmActivityTemplateComponent,\n CrmActivityTemplateOptionsDirective,\n CrmObjectIdentifier,\n} from '../activities';\nimport { CrmActivityEffectiveDatePipe, CrmIsTaskOverduePipe } from '../../../shared-pipes';\nimport { CrmTimelineAssociatedObjectPipe } from './timeline-associated-object.pipe';\nimport { ActivitiesTimelineService, ActivityExtended } from './timeline.service';\nimport { CrmFieldService, StandardExternalIds, StandardIds, SystemFieldIds } from '../../../shared-services';\nimport { CrmActivityMeetingComponent } from '../activities/meeting.component';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { GalaxyFilterInterface, GalaxyFilterOperator } from '@vendasta/galaxy/filter/chips';\nimport { encodeFilters } from '@vendasta/galaxy/filter/chips/src/utils';\nimport { Clipboard } from '@angular/cdk/clipboard';\n\n@Component({\n selector: 'crm-timeline-activity',\n templateUrl: './timeline-activity.component.html',\n styleUrls: ['./timeline-activity.component.scss'],\n providers: [ActivityAssociationService],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n GalaxyEmptyStateModule,\n GalaxyLoadingSpinnerModule,\n MatIconModule,\n CrmActivityTemplateComponent,\n CrmActivityLoggedNoteComponent,\n ObserversModule,\n CrmActivityRecordChangeComponent,\n CrmActivityOpportunityUpdatedComponent,\n CrmActivityLoggedEmailComponent,\n CrmActivityLoggedCallComponent,\n CrmActivityLoggedMeetingComponent,\n CrmActivityEmailComponent,\n CrmActivityLoggedCommunicationComponent,\n GalaxyFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n CrmActivityNoteComponent,\n CrmActivityTaskComponent,\n CrmActivityEffectiveDatePipe,\n CrmIsTaskOverduePipe,\n CrmActivityLoggerComponent,\n CrmActivityTemplateOptionsDirective,\n MatMenuModule,\n MatButtonModule,\n CrmTimelineAssociatedObjectPipe,\n CrmActivityCommunicationComponent,\n CrmActivityCallComponent,\n CrmActivityOpportunityUpdatedComponent,\n CrmActivityAssociationPopoverComponent,\n CrmActivityMeetingComponent,\n ],\n})\nexport class CrmTimelineActivityComponent {\n @Input({ required: true }) activity!: ActivityExtended;\n crmObjectIdentifier = input.required();\n @Input() isLast = false;\n showCopyLink = input(false);\n\n private readonly activitiesTimelineService = inject(ActivitiesTimelineService);\n private readonly fieldService = inject(CrmFieldService);\n private readonly clipboard = inject(Clipboard);\n private readonly document = inject(DOCUMENT);\n private readonly snackbarService = inject(SnackbarService);\n\n uniqueUsers$ = this.activitiesTimelineService.state.select('uniqueUsers');\n\n editMode = false;\n readonly dateFormat = DateFormat.medium;\n protected readonly hideCrmAssociations = computed(() => {\n const objId = this.crmObjectIdentifier();\n return objId.objectType === 'Opportunity' && !objId.crmObjectId.startsWith(ObjectTypePrefix.Opportunity);\n });\n\n isActivityValid() {\n const activity = this.activity;\n if (activity === null || activity === undefined) {\n return false;\n }\n\n switch (activity.crmObjectSubtype) {\n case 'Email':\n return true;\n case 'Note':\n return (\n this.fieldService.getFieldValueFromCrmObject(activity, StandardIds.ActivityNoteTitle)?.stringValue ||\n this.fieldService.getFieldValueFromCrmObject(activity, StandardIds.ActivityNoteBody)?.stringValue\n );\n case 'Meeting':\n return true;\n case 'Call':\n return true;\n case 'RecordChange':\n return VALID_RECORD_CHANGE_TYPES.includes(\n this.fieldService.getFieldValueFromCrmObject(activity, StandardExternalIds.ActivityRecordChangeType)\n ?.stringValue as RecordChangeType,\n );\n case 'Task':\n return true;\n case 'Communication':\n return true;\n case 'OpportunityChange':\n return true;\n default:\n console.error(`Unexpected activity type: ${activity.crmObjectSubtype}`);\n return false;\n }\n }\n\n private constructCopyLink(): string {\n const documentUrl = this.document.URL.split('?')[0];\n\n const glxyFilter: GalaxyFilterInterface = {\n fieldId: SystemFieldIds.ActivityID,\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: this.activity.crmObjectId,\n },\n ],\n };\n const encodedFilter = encodeFilters([glxyFilter]);\n return `${documentUrl}?filter=${encodedFilter}`;\n }\n\n copyLinkToActivity(): void {\n this.clipboard.copy(this.constructCopyLink());\n this.snackbarService.openSuccessSnack('COMMON.SNACKBAR_MESSAGE.COPY_SUCCESS');\n }\n\n updateActivity(activity: ActivityInterface): void {\n const activities = this.activitiesTimelineService.state.get('activities');\n const index = activities.findIndex((a) => a.crmObjectId === this.activity.crmObjectId);\n if (index >= 0) {\n this.activitiesTimelineService.lockActivityEffectiveDate(activities[index]);\n activities[index] = activity;\n this.activitiesTimelineService.state.set({ activities: [...activities] });\n if (this.activity.crmObjectId) {\n this.editMode = false;\n }\n }\n }\n}\n","
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n\n
\n \n \n @if (showCopyLink()) {\n \n }\n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n
{{ 'ACTIVITY.DUE' | translate }}: {{ activity | crmActivityEffectiveDate | date: dateFormat }}
\n
\n\n\n
\n alarm\n {{ 'ACTIVITY.OVERDUE' | translate }}: {{ activity | crmActivityEffectiveDate | date: dateFormat }}\n
\n
\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, Input, model, TemplateRef } from '@angular/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { AVATAR_WIDTH } from '../../../../constants';\nimport { TranslationModule } from '../../../../i18n/translation-module';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { RxState } from '@rx-angular/state';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { CrmFieldService, SystemFieldIds } from '../../../../shared-services/crm-services/field.service';\nimport { User } from '@vendasta/iamv2';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\n\nimport { ActivityAssociationService } from '../../activities/activity-association.service';\nimport { RouterLink } from '@angular/router';\nimport { ActivityIcons, ActivityTypes } from '../../activities';\n\n@Component({\n selector: 'crm-activity-template-v2',\n templateUrl: './activity-template-v2.component.html',\n styleUrls: ['./activity-template-v2.component.scss'],\n providers: [RxState],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n MatCardModule,\n MatIconModule,\n GalaxyAvatarModule,\n RouterLink,\n ],\n})\nexport class CrmActivityTemplateV2Component {\n AVATAR_WIDTH = AVATAR_WIDTH;\n dateFormat = DateFormat.medium;\n unknownNamePlaceholder = this.translateService.instant('CONTACT.ACTIVITIES.UNKNOWN_NAME');\n\n activity = model({});\n ownerUser = model(undefined);\n isOwnedByServiceAccount = model(false);\n showAvatar = model(true);\n\n // custom template to render in the subtitle section, replacing the formatted date\n @Input() subtitleTemplate?: TemplateRef;\n\n showPrimaryAssociation = model(false);\n\n fullName = computed(() => {\n const user = this.ownerUser() as User;\n return `${user?.firstName || ''} ${user?.lastName || ''}`.trim() || this.unknownNamePlaceholder;\n });\n\n readonly headerText = computed(() => this.headerTextFromActivityType(this.activity()?.crmObjectSubtype));\n\n readonly effectiveDate = computed(() => {\n return (\n this.fieldService.getFieldValueFromCrmObject(this.activity(), SystemFieldIds.ActivityEffectiveDate)?.dateValue ??\n null\n );\n });\n\n primaryAssociation = this.associationService.primaryAssociation;\n routePrefix = this.associationService.routePrefix;\n\n activityIcon = computed(() => {\n const activityType = this.activity()?.crmObjectSubtype;\n if (!activityType) {\n return;\n }\n return ActivityIcons[activityType];\n });\n\n constructor(\n private readonly fieldService: CrmFieldService,\n private readonly translateService: TranslateService,\n private readonly associationService: ActivityAssociationService,\n ) {}\n\n private headerTextFromActivityType(activityType?: string): string {\n switch (activityType) {\n case this.ActivityType.Note:\n return 'CONTACT.ACTIVITIES.HEADER_ADDITIONAL_TEXT_V2.NOTE';\n case this.ActivityType.Email:\n return 'CONTACT.ACTIVITIES.HEADER_ADDITIONAL_TEXT_V2.LOGGED_EMAIL';\n case this.ActivityType.Call:\n return 'CONTACT.ACTIVITIES.HEADER_ADDITIONAL_TEXT_V2.LOGGED_CALL';\n case this.ActivityType.Meeting:\n return 'CONTACT.ACTIVITIES.HEADER_ADDITIONAL_TEXT_V2.LOGGED_MEETING';\n case this.ActivityType.Task:\n return 'CONTACT.ACTIVITIES.HEADER_ADDITIONAL_TEXT_V2.TASK';\n case this.ActivityType.Communication:\n return 'CONTACT.ACTIVITIES.HEADER_ADDITIONAL_TEXT_V2.LOGGED_COMMUNICATION';\n default:\n return '';\n }\n }\n\n protected readonly ActivityType = ActivityTypes;\n}\n","@if (fullName(); as fullName) {\n \n \n
\n \n
\n \n \n @if (headerText(); as headerText) {\n {{ headerText | translate }}\n }\n {{ fullName }}\n @if (showPrimaryAssociation()) {\n @if (primaryAssociation(); as primaryAssociation) {\n {{ 'OBJECT_TYPES.FOR_LABEL' | translate }}\n {{ primaryAssociation.name }}\n }\n }\n \n \n \n @if (subtitleTemplate) {\n \n } @else {\n \n }\n \n \n
\n \n \n \n \n \n \n \n
\n}\n\n\n @if (effectiveDate(); as effectiveDate) {\n

\n {{ effectiveDate | date: dateFormat }}\n

\n }\n
\n\n\n
\n \n
\n
\n","import { Component, computed, inject, Input, input } from '@angular/core';\nimport { CommonModule, DOCUMENT } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { RecordChangeType } from '../../../tokens-and-interfaces';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { ObjectTypePrefix, VALID_RECORD_CHANGE_TYPES } from '../../../constants';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { CrmActivityOpportunityUpdatedComponent } from '../activities/opportunity-change.component';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CrmActivityCallComponent } from '../activities/call.component';\nimport { CrmActivityAssociationPopoverComponent } from '../activities/association-popover.component';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { ActivityAssociationService } from '../activities/activity-association.service';\nimport { ActivityInterface } from '@vendasta/crm';\nimport {\n ActivityTypes,\n CrmActivityCommunicationComponent,\n CrmActivityEmailComponent,\n CrmActivityLoggedCallComponent,\n CrmActivityLoggedCommunicationComponent,\n CrmActivityLoggedEmailComponent,\n CrmActivityLoggedMeetingComponent,\n CrmActivityLoggedNoteComponent,\n CrmActivityLoggerComponent,\n CrmActivityNoteComponent,\n CrmActivityRecordChangeComponent,\n CrmActivityTaskComponent,\n CrmActivityTemplateOptionsDirective,\n CrmObjectIdentifier,\n} from '../activities';\nimport { CrmActivityEffectiveDatePipe, CrmIsTaskOverduePipe } from '../../../shared-pipes';\nimport { CrmTimelineAssociatedObjectPipe } from '../timeline/timeline-associated-object.pipe';\nimport { ActivitiesTimelineService, ActivityExtended } from '../timeline/timeline.service';\nimport { CrmFieldService, StandardExternalIds, StandardIds, SystemFieldIds } from '../../../shared-services';\nimport { CrmActivityMeetingComponent } from '../activities/meeting.component';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { GalaxyFilterInterface, GalaxyFilterOperator } from '@vendasta/galaxy/filter/chips';\nimport { encodeFilters } from '@vendasta/galaxy/filter/chips/src/utils';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { CrmActivityTemplateV2Component } from './activities/activity-template-v2.component';\n\n@Component({\n selector: 'crm-timeline-activity-v2',\n templateUrl: './timeline-activity-v2.component.html',\n styleUrls: ['./timeline-activity-v2.component.scss'],\n providers: [ActivityAssociationService],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n GalaxyEmptyStateModule,\n GalaxyLoadingSpinnerModule,\n MatIconModule,\n ObserversModule,\n CrmActivityRecordChangeComponent,\n CrmActivityOpportunityUpdatedComponent,\n CrmActivityLoggedCallComponent,\n CrmActivityLoggedMeetingComponent,\n CrmActivityEmailComponent,\n CrmActivityLoggedCommunicationComponent,\n GalaxyFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n CrmActivityNoteComponent,\n CrmActivityTaskComponent,\n CrmActivityEffectiveDatePipe,\n CrmIsTaskOverduePipe,\n CrmActivityLoggerComponent,\n CrmActivityTemplateOptionsDirective,\n MatMenuModule,\n MatButtonModule,\n CrmTimelineAssociatedObjectPipe,\n CrmActivityCommunicationComponent,\n CrmActivityCallComponent,\n CrmActivityOpportunityUpdatedComponent,\n CrmActivityAssociationPopoverComponent,\n CrmActivityMeetingComponent,\n CrmActivityEmailComponent,\n CrmActivityLoggedEmailComponent,\n CrmActivityLoggedNoteComponent,\n CrmActivityTemplateV2Component,\n ],\n})\nexport class CrmTimelineActivityV2Component {\n @Input({ required: true }) activity!: ActivityExtended;\n crmObjectIdentifier = input.required();\n @Input() isLast = false;\n showCopyLink = input(false);\n\n private readonly activitiesTimelineService = inject(ActivitiesTimelineService);\n private readonly fieldService = inject(CrmFieldService);\n private readonly clipboard = inject(Clipboard);\n private readonly document = inject(DOCUMENT);\n private readonly snackbarService = inject(SnackbarService);\n\n uniqueUsers$ = this.activitiesTimelineService.state.select('uniqueUsers');\n\n editMode = false;\n readonly dateFormat = DateFormat.medium;\n protected readonly hideCrmAssociations = computed(() => {\n const objId = this.crmObjectIdentifier();\n return objId.objectType === 'Opportunity' && !objId.crmObjectId.startsWith(ObjectTypePrefix.Opportunity);\n });\n\n isActivityValid() {\n const activity = this.activity;\n if (activity === null || activity === undefined) {\n return false;\n }\n\n switch (activity.crmObjectSubtype) {\n case this.ActivityType.Email:\n return true;\n case this.ActivityType.Note:\n return (\n this.fieldService.getFieldValueFromCrmObject(activity, StandardIds.ActivityNoteTitle)?.stringValue ||\n this.fieldService.getFieldValueFromCrmObject(activity, StandardIds.ActivityNoteBody)?.stringValue\n );\n case this.ActivityType.Meeting:\n return true;\n case this.ActivityType.Call:\n return true;\n case this.ActivityType.RecordChange:\n return VALID_RECORD_CHANGE_TYPES.includes(\n this.fieldService.getFieldValueFromCrmObject(activity, StandardExternalIds.ActivityRecordChangeType)\n ?.stringValue as RecordChangeType,\n );\n case this.ActivityType.Task:\n return true;\n case this.ActivityType.Communication:\n return true;\n case this.ActivityType.OpportunityChange:\n return true;\n default:\n console.error(`Unexpected activity type: ${activity.crmObjectSubtype}`);\n return false;\n }\n }\n\n private constructCopyLink(): string {\n const documentUrl = this.document.URL.split('?')[0];\n\n const glxyFilter: GalaxyFilterInterface = {\n fieldId: SystemFieldIds.ActivityID,\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: this.activity.crmObjectId,\n },\n ],\n };\n const encodedFilter = encodeFilters([glxyFilter]);\n return `${documentUrl}?filter=${encodedFilter}`;\n }\n\n copyLinkToActivity(): void {\n this.clipboard.copy(this.constructCopyLink());\n this.snackbarService.openSuccessSnack('COMMON.SNACKBAR_MESSAGE.COPY_SUCCESS');\n }\n\n updateActivity(activity: ActivityInterface): void {\n const activities = this.activitiesTimelineService.state.get('activities');\n const index = activities.findIndex((a) => a.crmObjectId === this.activity.crmObjectId);\n if (index >= 0) {\n this.activitiesTimelineService.lockActivityEffectiveDate(activities[index]);\n activities[index] = activity;\n this.activitiesTimelineService.state.set({ activities: [...activities] });\n if (this.activity.crmObjectId) {\n this.editMode = false;\n }\n }\n }\n\n protected readonly ActivityType = ActivityTypes;\n}\n","
\n @if (activity.isLoggedActivity) {\n @if (isActivityValid()) {\n
\n \n \n \n \n @if (!editMode) {\n \n @switch (activity.crmObjectSubtype) {\n @case (ActivityType.Note) {\n \n }\n @case (ActivityType.Email) {\n \n }\n @case (ActivityType.Call) {\n \n }\n @case (ActivityType.Meeting) {\n \n }\n @case (ActivityType.Task) {\n \n }\n @case (ActivityType.Communication) {\n \n }\n }\n \n } @else {\n @if (activity | crmTimelineAssociatedObject: crmObjectIdentifier(); as crmActivity) {\n \n }\n }\n\n \n\n @if (!editMode) {\n
\n \n \n @if (showCopyLink()) {\n \n }\n \n \n
\n }\n \n
\n }\n } @else {\n @if (isActivityValid()) {\n
\n @switch (activity.crmObjectSubtype) {\n @case (ActivityType.RecordChange) {\n \n }\n @case (ActivityType.Note) {\n \n }\n @case (ActivityType.Email) {\n \n }\n @case (ActivityType.Call) {\n \n }\n @case (ActivityType.Communication) {\n \n }\n @case (ActivityType.OpportunityChange) {\n \n }\n @case (ActivityType.Meeting) {\n \n }\n }\n
\n }\n }\n
\n\n\n
{{ 'ACTIVITY.DUE' | translate }}: {{ activity | crmActivityEffectiveDate | date: dateFormat }}
\n
\n\n\n
\n alarm\n {{ 'ACTIVITY.OVERDUE' | translate }}: {{ activity | crmActivityEffectiveDate | date: dateFormat }}\n
\n
\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Inject, input, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CrmDependencies, CrmInjectionToken, ObjectAssociationType, ObjectType } from '../../../tokens-and-interfaces';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { RxState } from '@rx-angular/state';\nimport { combineLatest, distinctUntilChanged, filter, map, Observable } from 'rxjs';\nimport { ActivitiesTimelineService, ActivityExtended, ActivitySectionInterface } from './timeline.service';\nimport { CrmFieldService, StandardIds } from '../../../shared-services/crm-services/field.service';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { GalaxyFilterInterface } from '@vendasta/galaxy/filter/chips';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { DateFormat } from '@vendasta/galaxy/utility/date-utils';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { CrmObjectIdentifier } from '../activities';\nimport { CrmTimelineActivityComponent } from './timeline-activity.component';\nimport { CRMTrackingService } from '../../../shared-services';\nimport { CrmTimelineActivityV2Component } from '../timeline-activities-v2/timeline-activity-v2.component';\n\n@Component({\n selector: 'crm-timeline',\n templateUrl: './timeline.component.html',\n styleUrls: ['./timeline.component.scss'],\n providers: [RxState],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n GalaxyEmptyStateModule,\n GalaxyLoadingSpinnerModule,\n MatIconModule,\n ObserversModule,\n GalaxyFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n MatMenuModule,\n MatButtonModule,\n CrmTimelineActivityComponent,\n CrmTimelineActivityV2Component,\n ],\n})\nexport class CrmTimelineComponent implements OnDestroy, OnInit {\n showCopyLink = input(false);\n\n @Input()\n set crmObjectId(crmObjectId: string) {\n this.activitiesTimelineService.crmObjectId$$.next(crmObjectId);\n }\n\n @Input()\n set objectType(objectType: ObjectType | ObjectAssociationType) {\n this.activitiesTimelineService.objectType$$.next(objectType);\n }\n\n @Output() activitiesChanged = new EventEmitter();\n\n readonly dateFormat = DateFormat.medium;\n readonly now = new Date();\n\n crmIdentifiers$: Observable = combineLatest([\n this.activitiesTimelineService.crmObjectId$$.asObservable(),\n this.activitiesTimelineService.objectType$$.asObservable(),\n ]).pipe(map(([crmObjectId, objectType]) => ({ crmObjectId, objectType }) as CrmObjectIdentifier));\n activitySections$ = this.activitiesTimelineService.state.select('activitySections');\n readonly filters$ = this.activitiesTimelineService.state.select('filters');\n\n loading$ = combineLatest([\n this.activitiesTimelineService.state.select('activitiesLoading'),\n this.activitiesTimelineService.state.select('activitiesLoadMore'),\n ]).pipe(map(([activitiesLoading, activitiesLoadMore]) => activitiesLoading || activitiesLoadMore));\n filtersPristine$ = combineLatest([\n this.activitiesTimelineService.state.select('searchTerm'),\n this.activitiesTimelineService.state.select('filters'),\n ]).pipe(\n map(([searchTerm, filters]) => {\n if (searchTerm.length !== 0) {\n return false;\n }\n if (filters.length !== 0) {\n return false;\n }\n return true;\n }),\n );\n showLoadingAfterActivities$ = combineLatest([\n this.loading$,\n this.activitiesTimelineService.state.select('activitiesPagedResponseMetadata'),\n ]).pipe(map(([loading, paged]) => loading && paged));\n showLoadingReplacingActivities$ = combineLatest([\n this.loading$,\n this.activitiesTimelineService.state.select('activitiesPagedResponseMetadata'),\n ]).pipe(map(([loading, paged]) => loading && !paged));\n\n subscriptions = SubscriptionList.new();\n\n hasCrmTimelineActivitiesFeatureFlag$ = this.config.hasTimelineActivitiesFeatureFlag$;\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly activitiesTimelineService: ActivitiesTimelineService,\n private readonly fieldService: CrmFieldService,\n private readonly trackingService: CRMTrackingService,\n ) {}\n\n ngOnInit() {\n this.setupSplitActivitiesIntoSections(!!this.activitiesTimelineService.crmObjectId$$.getValue());\n this.activitiesTimelineService.state.connect('activitySections', this.activitySections$);\n this.activitiesTimelineService.state\n .select('activitiesChanged')\n .pipe(distinctUntilChanged(), filter(Boolean))\n .subscribe(() => {\n this.activitiesTimelineService.state.set({ activitiesChanged: false });\n this.activitiesChanged.emit(this.activitiesTimelineService.state.get('activities'));\n });\n }\n\n ngOnDestroy() {\n this.subscriptions.destroy();\n }\n\n setFilters(filters: GalaxyFilterInterface[]) {\n this.activitiesTimelineService.state.set({ filters: filters });\n this.activitiesTimelineService.reloadActivities();\n this.trackingService.trackFilterUsage(this.objectType, filters);\n }\n\n setSearchTerm(searchTerm: string) {\n // set searchTerm imperatively since we want it available with the next reload\n this.activitiesTimelineService.state.set({ searchTerm: searchTerm });\n this.activitiesTimelineService.reloadActivities();\n }\n\n setupSplitActivitiesIntoSections(prioritizeOverdueTask: boolean): void {\n this.activitySections$ = combineLatest([\n this.activitiesTimelineService.state.select('activities'),\n this.activitiesTimelineService.state.select('uniqueUsers'),\n ]).pipe(\n map(([activities, uniqueUsers]) => {\n return activities.map((activity) => {\n return {\n ...activity,\n ownerUser: uniqueUsers.find((user) => user.userId === activity.ownerId),\n isLoggedActivity:\n this.fieldService.getFieldValueFromCrmObject(activity, StandardIds.ActivityManuallyLogged)\n ?.booleanValue ?? false,\n } as ActivityExtended;\n });\n }),\n map((activitiesWithOwnerUser) =>\n this.activitiesTimelineService.getActivitySections(activitiesWithOwnerUser, prioritizeOverdueTask),\n ),\n );\n }\n\n addActivity(activity: ActivityInterface): void {\n this.activitiesTimelineService.state.set({\n activities: [activity, ...this.activitiesTimelineService.state.get('activities')],\n });\n }\n\n loadMoreActivities() {\n this.activitiesTimelineService.loadMoreActivities();\n }\n\n trackActivitySectionsBy(index: number, section: ActivitySectionInterface) {\n return `${index}-${section.name}`;\n }\n\n trackActivitiesBy(index: number, activity: ActivityInterface) {\n return `${index}-${activity.crmObjectId}`;\n }\n}\n","
\n \n \n 0; else emptyActivities\">\n
\n
\n

{{ section.name | translate }}

\n
\n \n \n @if (hasCrmTimelineActivitiesFeatureFlag$ | async) {\n \n } @else {\n \n }\n \n \n
\n
\n \n \n \n
\n
\n
\n\n\n \n\n\n\n \n \n \n \n \n \n \n \n {{ 'CONTACT.ACTIVITIES_TIMELINE.EMPTY.HEADER' | translate }}\n \n

{{ 'CONTACT.ACTIVITIES_TIMELINE.EMPTY.HINT' | translate }}

\n
\n \n \n {{ 'CONTACT.ACTIVITIES_TIMELINE.EMPTY_SEARCH.HEADER' | translate }}\n \n

{{ 'CONTACT.ACTIVITIES_TIMELINE.EMPTY_SEARCH.HINT' | translate }}

\n
\n
\n
\n
\n
\n","import { Component, Inject, inject, signal, Signal, input, WritableSignal, effect } from '@angular/core';\nimport { catchError, combineLatest, map, Observable, of, Subject, switchMap, take, tap, delay } from 'rxjs';\nimport { GalaxyAiIconService } from '@vendasta/galaxy/ai-icon';\nimport { CrmDependencies, CrmInjectionToken, ObjectType } from '../../tokens-and-interfaces';\nimport { CRMTrackingService } from '../../shared-services/page-analytics.service';\nimport { TranslationModule } from '../../i18n/translation-module';\nimport { CrmAIApiService } from '@vendasta/crm-integrations';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { startWith, filter } from 'rxjs/operators';\nimport { MatExpansionPanel, MatExpansionModule } from '@angular/material/expansion';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { AsyncPipe } from '@angular/common';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'crm-ai-summary',\n templateUrl: './ai-summary.component.html',\n styleUrls: ['./ai-summary.component.scss'],\n standalone: true,\n imports: [\n MatExpansionPanel,\n MatExpansionModule,\n AsyncPipe,\n TranslateModule,\n TranslationModule,\n GalaxyAlertModule,\n GalaxyLoadingSpinnerModule,\n MatIconModule,\n ],\n})\nexport class CrmAISummaryComponent {\n crmObjectId = input('');\n private readonly crmObjectId$ = toObservable(this.crmObjectId);\n crmObjectType = input(null);\n private readonly crmObjectType$ = toObservable(this.crmObjectType);\n\n private aiSummaryTrigger$$ = new Subject();\n private readonly regenerateAISummary = signal(false);\n private changedIdSinceGeneration = false;\n\n protected readonly aiSummaryIsLoading = signal(true);\n protected readonly noAISummary = signal(false);\n protected readonly showAISummaryRestrictedDialog = signal(false);\n\n protected readonly openAISummaryExpansionPanel: WritableSignal = signal(false);\n protected hasAISummaryParam: Signal;\n protected readonly hasAccessToAISummary$ = this.config.hasAccessToFeature$?.('crm-ai-summary') ?? of(false);\n protected readonly aiSummaryResponse$: Observable;\n\n private readonly translateService = inject(TranslateService);\n private readonly aiIconService = inject(GalaxyAiIconService);\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly activatedRoute: ActivatedRoute,\n private readonly crmAIService: CrmAIApiService,\n private readonly snackbarService: SnackbarService,\n private readonly trackingService: CRMTrackingService,\n ) {\n this.aiIconService.dummyInit();\n\n this.showAISummaryRestrictedDialog.set(!!this.config.openRestrictedDialog);\n this.aiSummaryResponse$ = this.getAISummaryResponse();\n\n // expand AI summary panel at the start if aiSummary query param is true\n const hasAISummaryParam$ = this.activatedRoute.queryParamMap.pipe(\n take(1),\n map((params) => params.get('aiSummary') || ''),\n map((aiSummary) => aiSummary === 'true'),\n tap((hasAISummaryParam) => {\n if (hasAISummaryParam) {\n this.trackingService.trackEvent(this.crmObjectType() as ObjectType, 'used-ai-quick-summary-url-parameter');\n }\n }),\n );\n this.hasAISummaryParam = toSignal(hasAISummaryParam$, { initialValue: false });\n\n effect(() => {\n this.crmObjectId();\n if (this.hasAISummaryParam()) {\n this.hasAISummaryParam = signal(false);\n this.openAISummaryExpansionPanel.set(true);\n } else {\n this.openAISummaryExpansionPanel.set(false);\n }\n });\n\n effect(() => {\n this.crmObjectId();\n this.changedIdSinceGeneration = true;\n });\n }\n\n protected onOpenNoFeatureAISummary() {\n this.config.openRestrictedDialog?.('crm-ai-summary');\n }\n\n protected regenerateSummary(regenerateSummary: boolean) {\n this.regenerateAISummary.set(regenerateSummary);\n this.aiSummaryTrigger$$.next();\n }\n\n protected onExpandedChange(expanded: boolean): void {\n this.openAISummaryExpansionPanel.set(expanded);\n }\n\n private getAISummaryResponse(): Observable {\n return combineLatest([\n this.crmObjectId$,\n this.crmObjectType$,\n this.config.namespace$,\n this.config.locale$ ?? of(''),\n toObservable(this.openAISummaryExpansionPanel),\n this.aiSummaryTrigger$$.pipe(startWith(undefined)),\n ]).pipe(\n tap(() => {\n if (this.shouldGenerateAISummary()) {\n this.aiSummaryIsLoading.set(true);\n }\n }),\n delay(100), // delay so that openAISummaryExpansionPanel is properly calculated before checking it\n filter(() => this.shouldGenerateAISummary()),\n switchMap(([crmObjectId, crmObjectType, namespace, locale]) => {\n const regenerateAISummary = this.regenerateAISummary();\n this.regenerateAISummary.set(false);\n if (!namespace || !crmObjectType || !crmObjectId || !this.openAISummaryExpansionPanel()) {\n return of('');\n }\n return this.crmAIService\n .getAiSummaryForCrmObject({\n crmObjectNamespace: namespace,\n crmObjectType: crmObjectType || '',\n crmObjectId: crmObjectId,\n language: locale,\n regenerateSummary: regenerateAISummary,\n })\n .pipe(\n map((response) => response?.response),\n tap((response) => {\n if (!response) {\n this.noAISummary.set(true);\n } else {\n this.noAISummary.set(false);\n }\n this.changedIdSinceGeneration = false;\n this.trackingService.trackEvent(crmObjectType as ObjectType, 'loaded-crm-object-ai-quick-summary');\n }),\n map((response) => {\n if (this.noAISummary()) {\n return this.translateService.instant('ACTIVITY.AI_SUMMARY.NO_SUMMARY');\n }\n const parser = new DOMParser();\n return parser.parseFromString(response, 'text/html').body.innerHTML;\n }),\n catchError(() => {\n this.snackbarService.openErrorSnack('ACTIVITY.AI_SUMMARY.ERROR');\n this.trackingService.trackEvent(crmObjectType as ObjectType, 'failed-load-crm-object-ai-quick-summary');\n return of('');\n }),\n );\n }),\n tap(() => this.aiSummaryIsLoading.set(false)),\n );\n }\n\n private shouldGenerateAISummary(): boolean {\n return this.regenerateAISummary() || (this.openAISummaryExpansionPanel() && this.changedIdSinceGeneration);\n }\n}\n","@if (hasAccessToAISummary$ | async) {\n
\n \n \n \n \n {{ 'ACTIVITY.AI_SUMMARY.TITLE' | translate }}\n \n \n \n @if (aiSummaryResponse$ | async; as aiSummaryResponse) {\n @if (aiSummaryIsLoading()) {\n \n } @else if (noAISummary()) {\n \n {{ aiSummaryResponse }}\n \n } @else {\n

\n \n }\n } @else {\n \n }\n
\n \n
\n} @else if (showAISummaryRestrictedDialog()) {\n
\n \n \n \n \n {{ 'ACTIVITY.AI_SUMMARY.TITLE' | translate }}\n \n \n \n
\n}\n","export * from './ai-summary.component';\n","import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewChecked,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n Inject,\n input,\n OnDestroy,\n OnInit,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport {\n CrmDependencies,\n CrmInjectionToken,\n ObjectType,\n PrimaryAccountGroupIDForCrmObject,\n tableFiltersInjectionTokenGenerator,\n} from '../../tokens-and-interfaces';\nimport { SEARCH_DEBOUNCE_MS } from '../../constants';\nimport { TranslationModule } from '../../i18n/translation-module';\nimport {\n combineLatest,\n debounceTime,\n filter,\n map,\n of,\n shareReplay,\n skipWhile,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport { CrmActivityLoggerComponent } from './activities/activity-logger.component';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { CrmTimelineComponent } from './timeline/timeline.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { GalaxyFilterChipsComponent } from '@vendasta/galaxy/filter/chips/src/galaxy-filter-chips.component';\nimport {\n GalaxyFilterChipDependencies,\n GalaxyFilterChipInjectionToken,\n GalaxyFilterInterface,\n GalaxyFilterOperator,\n} from '@vendasta/galaxy/filter/chips';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { MatIconModule } from '@angular/material/icon';\nimport { GalaxyInfiniteScrollTriggerModule } from '@vendasta/galaxy/infinite-scroll-trigger';\nimport { ActivityInterface } from '@vendasta/crm';\nimport { RxState } from '@rx-angular/state';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { decodeFilters, encodeFilters, validateFilters } from '@vendasta/galaxy/filter/chips/src/utils';\nimport { ActivitiesTimelineService } from './timeline/timeline.service';\nimport { FilterViewComponent } from '../filter-view/filter-view.component';\nimport { SavedFilters } from '../filter-view/interfaces';\nimport { CrmFieldService, CrmObjectService, PlatformExtensionFieldIds, StandardIds } from '../../shared-services';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { CrmAISummaryComponent } from '../ai-summary';\n\n@Component({\n selector: 'crm-activities-timeline',\n templateUrl: './activities-timeline.component.html',\n styleUrls: ['./activities-timeline.component.scss'],\n providers: [\n RxState,\n ActivitiesTimelineService,\n {\n provide: GalaxyFilterChipInjectionToken,\n useFactory: tableFiltersInjectionTokenGenerator('Activity'),\n },\n {\n provide: PrimaryAccountGroupIDForCrmObject,\n useFactory: (\n comp: CrmActivitiesTimelineComponent,\n objectService: CrmObjectService,\n fieldService: CrmFieldService,\n ) => {\n const crmObjectId$ = toObservable(comp.crmObjectId);\n const crmObjectType$ = toObservable(comp.activityObjectType).pipe(filter(Boolean));\n return combineLatest([crmObjectId$, crmObjectType$]).pipe(\n switchMap((v: [string, ObjectType]) => {\n const crmObjectId = v[0];\n const crmObjectType = v[1];\n return objectService.getMultiObject(crmObjectType, [crmObjectId]);\n }),\n map((response) => response?.crmObjects?.[0]),\n map((crmObject) => {\n return (\n fieldService.getFieldValueFromCrmObject(crmObject!, PlatformExtensionFieldIds.AccountGroupID)\n ?.stringValue ?? null\n );\n }),\n filter(Boolean),\n shareReplay(1),\n );\n },\n deps: [CrmActivitiesTimelineComponent, CrmObjectService, CrmFieldService],\n },\n ],\n animations: [\n trigger('openClose', [\n state(\n 'open',\n style({\n height: '*',\n opacity: 1,\n }),\n ),\n state(\n 'closed',\n style({\n height: '0px',\n opacity: 0,\n }),\n ),\n transition('open <=> closed', [animate('0.2s')]),\n ]),\n ],\n imports: [\n CommonModule,\n TranslateModule,\n TranslationModule,\n CrmActivityLoggerComponent,\n CrmTimelineComponent,\n GalaxyFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n MatButtonModule,\n GalaxyFilterChipsComponent,\n MatIconModule,\n GalaxyInfiniteScrollTriggerModule,\n FilterViewComponent,\n GalaxyAlertModule,\n CrmAISummaryComponent,\n ],\n})\nexport class CrmActivitiesTimelineComponent implements OnDestroy, OnInit, AfterContentInit, AfterViewChecked {\n @ViewChild('crmTimelineRef', { static: true }) timeline!: CrmTimelineComponent;\n @ViewChild('scrollableContainerRef', { static: true }) scrollableContainer!: ElementRef;\n @ViewChild('filterChipRef') filterChipRef?: GalaxyFilterChipsComponent;\n\n crmObjectId = input('');\n\n showFiltersOpen = false;\n\n activityObjectType = input(null);\n enableAISummary = input(false);\n\n hasTimelineActivitiesFeatureFlag = toSignal(this.config?.hasTimelineActivitiesFeatureFlag$ ?? of(false));\n\n objectType: ObjectType = 'Activity';\n\n private readonly translateService = inject(TranslateService);\n private readonly destroyRef = inject(DestroyRef);\n\n protected readonly filters = signal([]);\n protected readonly filtersApplied = computed(() => this.filters().length > 0);\n presetFilters: SavedFilters = [\n { name: this.translateService.instant('VIEWS.PRESET_FILTERS.ALL'), filters: [] },\n {\n name: this.translateService.instant('VIEWS.PRESET_FILTERS.NOTES'),\n filters: [\n {\n fieldId: 'system__activity_activity_type',\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [{ string: 'Note' }],\n },\n ],\n },\n {\n name: this.translateService.instant('VIEWS.PRESET_FILTERS.EMAILS'),\n filters: [\n {\n fieldId: 'system__activity_activity_type',\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [{ string: 'Email' }],\n },\n ],\n },\n {\n name: this.translateService.instant('VIEWS.PRESET_FILTERS.CALLS'),\n filters: [\n {\n fieldId: 'system__activity_activity_type',\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [{ string: 'Call' }],\n },\n ],\n },\n {\n name: this.translateService.instant('VIEWS.PRESET_FILTERS.MEETINGS'),\n filters: [\n {\n fieldId: 'system__activity_activity_type',\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [{ string: 'Meeting' }],\n },\n ],\n },\n {\n name: this.translateService.instant('VIEWS.PRESET_FILTERS.TASKS'),\n filters: [\n {\n fieldId: 'system__activity_activity_type',\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [{ string: 'Task' }],\n },\n ],\n },\n {\n name: this.translateService.instant('VIEWS.PRESET_FILTERS.COMMUNICATIONS'),\n filters: [\n {\n fieldId: 'system__activity_activity_type',\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS,\n values: [{ string: 'Communication' }],\n },\n ],\n },\n {\n name: this.translateService.instant('VIEWS.PRESET_FILTERS.EXCLUDE_CAMPAIGNS'),\n filters: [\n {\n fieldId: StandardIds.ActivityCampaignID,\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS_EMPTY,\n },\n {\n fieldId: StandardIds.ActivityCommunicationType,\n operator: GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT,\n values: [{ string: 'Campaign SMS' }],\n },\n ],\n },\n ];\n searchControl = new FormControl('');\n subscriptions: Subscription[] = [];\n showLoadMore = false;\n private scrollTop = 0;\n\n private initialSearchTerm = '';\n private initialSearchTermSet = false;\n private initialFilters: GalaxyFilterInterface[] = [];\n keys: string[];\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly activitiesTimelineService: ActivitiesTimelineService,\n @Inject(GalaxyFilterChipInjectionToken)\n private readonly activitiesTimelineFilterService: GalaxyFilterChipDependencies,\n private readonly router: Router,\n private readonly activatedRoute: ActivatedRoute,\n ) {\n const filterParam = this.activatedRoute.snapshot.queryParamMap.get('filter');\n let filters: GalaxyFilterInterface[] = [];\n if (filterParam) {\n const f = decodeFilters(filterParam);\n if (validateFilters(f) && f.length > 0) {\n filters = f;\n }\n }\n this.initialFilters = filters;\n this.activitiesTimelineFilterService.setInitialAppliedFilters?.(filters);\n\n const keys: string[] = [];\n if (this.config?.appID) {\n keys.push('crm:' + this.config.appID + ':activities-timeline:views');\n }\n keys.push('crm:activities-timeline:views');\n this.keys = keys;\n\n effect(() => {\n if (!this.crmObjectId()) {\n this.presetFilters = this.presetFilters.filter(\n (filter) => filter.name !== this.translateService.instant('VIEWS.PRESET_FILTERS.TASKS'),\n );\n }\n });\n }\n\n ngOnInit() {\n const searchParam = this.activatedRoute.snapshot.queryParamMap.get('search');\n if (searchParam) {\n this.initialSearchTerm = decodeURI(searchParam);\n }\n this.activitiesTimelineService.initializeState(this.initialSearchTerm, this.initialFilters);\n\n this.subscriptions.push(\n this.searchControl.valueChanges\n .pipe(\n skipWhile((term) => term !== this.initialSearchTerm),\n debounceTime(SEARCH_DEBOUNCE_MS),\n map((value) => value?.trim() ?? ''),\n tap((searchTerm) => {\n let searchParam: string | null = null;\n if (searchTerm) {\n searchParam = encodeURI(searchTerm);\n }\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams: { search: searchParam },\n queryParamsHandling: 'merge',\n });\n this.timeline.setSearchTerm(searchTerm);\n }),\n )\n .subscribe(),\n );\n }\n\n ngAfterViewChecked(): void {\n if (!this.initialSearchTermSet) {\n this.searchControl.setValue(this.initialSearchTerm);\n this.searchControl.updateValueAndValidity();\n this.initialSearchTermSet = true;\n }\n }\n\n ngAfterContentInit(): void {\n this.timeline.filters$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((filters) => this.filters.set(filters));\n }\n\n addActivity(activity: ActivityInterface): void {\n this.timeline.addActivity(activity);\n }\n\n handleActivitiesChanged(activities: ActivityInterface[]): void {\n this.scrollableContainer.nativeElement.scrollTop = this.scrollTop;\n this.showLoadMore = activities?.length > 0;\n }\n\n loadMoreActivities(): void {\n this.scrollTop = this.scrollableContainer?.nativeElement?.scrollTop ?? 0;\n this.timeline?.loadMoreActivities();\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n }\n\n toggleFilterBar(): void {\n this.showFiltersOpen = !this.showFiltersOpen;\n }\n\n updateFilters($event: GalaxyFilterInterface[], updateChipList?: boolean): void {\n if (!this.timeline) {\n return;\n }\n let filterParam: string | null = null;\n if ($event.length > 0) {\n const readyFilters = $event.filter(\n (f) => !(f.operator === GalaxyFilterOperator.FILTER_OPERATOR_IS && f.values?.length === 0),\n );\n if (readyFilters.length > 0) {\n filterParam = encodeFilters(readyFilters);\n }\n }\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams: { filter: filterParam },\n queryParamsHandling: 'merge',\n });\n this.timeline.setFilters($event);\n if (updateChipList) {\n this.filterChipRef?.filters.set($event);\n }\n }\n}\n","@let objectType = activityObjectType();\n\n
\n @if (objectType) {\n \n }\n\n @if (enableAISummary()) {\n \n }\n\n
\n
\n
\n \n \n filter_list\n \n \n {{ 'GALAXY.TABLE.FILTERS.TOGGLE_BUTTON' | translate }}\n \n\n \n \n \n
\n \n
\n
\n
\n \n
\n
\n
\n\n \n \n \n
\n","import { Injectable, inject } from '@angular/core';\nimport {\n CRMActivityApiService,\n FilterGroupInterface,\n FilterGroupOperator,\n FilterOperator,\n GetActivityMetricsRequestInterface,\n MetricCountInterface,\n MetricSummaryInterface,\n MetricType,\n OwnerMetricCountsInterface,\n} from '@vendasta/crm';\nimport { PagedListRequestInterface, PagedResponseInterface, PaginatedAPIInterface } from '@vendasta/galaxy/table';\nimport { BehaviorSubject, Observable, map, switchMap, tap } from 'rxjs';\nimport { Sort } from '@angular/material/sort';\nimport { IAMService } from '@vendasta/iamv2';\nimport { CrmInjectionToken } from '../../tokens-and-interfaces';\nimport { SystemFieldIds } from '../../shared-services/crm-services/field.service';\nimport { DateRange, UserActivity, ActivityCount, Summary } from './interfaces';\nimport { getMultiUsers } from '../../utils';\n\nconst AllMetricTypes: MetricType[] = [\n MetricType.METRIC_TYPE_INBOUND_CALLS,\n MetricType.METRIC_TYPE_OUTBOUND_CALLS,\n MetricType.METRIC_TYPE_EMAILS_RECEIVED,\n MetricType.METRIC_TYPE_EMAILS_SENT,\n MetricType.METRIC_TYPE_MEETINGS,\n];\n\n@Injectable()\nexport class ActivityLeaderboardDatasource implements PaginatedAPIInterface {\n private readonly crmActivityApiService = inject(CRMActivityApiService);\n private readonly iamService = inject(IAMService);\n private readonly config = inject(CrmInjectionToken);\n\n total$$ = new BehaviorSubject({});\n average$$ = new BehaviorSubject({});\n results$$ = new BehaviorSubject(undefined);\n private readonly filter$$ = new BehaviorSubject(undefined);\n private readonly sort$$ = new BehaviorSubject(undefined);\n\n get(req: PagedListRequestInterface): Observable> {\n const filter = req?.filters?.[0];\n const sort = req?.sorting?.[0];\n const fetch$ = this.config.namespace$.pipe(\n tap(() => {\n this.total$$.next({});\n this.average$$.next({});\n this.results$$.next(undefined);\n }),\n map((namespace) => this.buildRequestParams(namespace, filter)),\n switchMap((params) => this.crmActivityApiService.getActivityMetrics(params)),\n tap((response) => {\n const summary = this.mapSummary(response?.summaries);\n this.total$$.next(summary.total);\n this.average$$.next(summary.average);\n }),\n map((response) => this.mapUsersActivities(response?.ownerMetricCounts)),\n switchMap((data) => this.fetchUserInfo(data)),\n tap((response) => {\n this.filter$$.next(filter);\n this.results$$.next(response);\n }),\n );\n const res$ =\n filter && !this.isFilterEqual(filter, this.filter$$.getValue()) ? fetch$ : this.results$$.asObservable();\n return res$.pipe(\n tap(() => (sort ? this.sort$$.next(sort) : undefined)),\n map((data) => this.sortData(data ?? [], this.sort$$.getValue())),\n map((data) => this.mapResponse(data)),\n );\n }\n\n private fetchUserInfo(data: UserActivity[]): Observable {\n const userIds = data.map((item) => item.userId);\n return getMultiUsers(userIds, this.config, this.iamService).pipe(\n map((users) => {\n return data.map((item) => {\n const user = users.find((u) => u.userId === item.userId);\n const fullName = [user?.firstName, user?.lastName].filter(Boolean).join(' ');\n return {\n ...item,\n fullName: fullName,\n profilePicture: user?.profileImageUrl,\n };\n });\n }),\n );\n }\n\n private sortData(data: UserActivity[], sort?: Sort): UserActivity[] {\n const field = sort?.active ?? 'name';\n const isAsc = sort?.direction !== 'desc';\n return data.sort((a, b) => {\n if (field === 'name') {\n return this.compare(a.fullName, b.fullName, isAsc);\n }\n // sort by effort and then by name if effort is equal\n const sortResult = this.compare(a.count[field], b.count[field], isAsc);\n if (sortResult !== 0) {\n return sortResult;\n }\n return this.compare(a.fullName, b.fullName, true);\n });\n }\n\n private compare(a: string | number, b: string | number, isAsc: boolean): number {\n if (typeof a === 'string' && typeof b === 'string') {\n return isAsc ? a.localeCompare(b) : b.localeCompare(a);\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return isAsc ? a - b : b - a;\n }\n return 0;\n }\n\n private isFilterEqual(filterA?: DateRange, filterB?: DateRange): boolean {\n return JSON.stringify(filterA) === JSON.stringify(filterB);\n }\n\n private mapResponse(data: UserActivity[]): PagedResponseInterface {\n return {\n data: data,\n pagingMetadata: { nextCursor: null, hasMore: false },\n };\n }\n\n private buildRequestParams(namespace: string, params?: DateRange): GetActivityMetricsRequestInterface {\n const filters: FilterGroupInterface = {\n operator: FilterGroupOperator.FILTER_GROUP_OPERATOR_AND,\n filters: [\n {\n fieldId: SystemFieldIds.ActivityCreated,\n operator: FilterOperator.FILTER_OPERATOR_IS_BETWEEN,\n values: [{ date: params.dateRangeStart }, { date: params.dateRangeEnd }],\n },\n ],\n };\n return {\n namespace: namespace,\n filters: filters,\n metricTypes: AllMetricTypes,\n };\n }\n\n private mapUsersActivities(metrics?: OwnerMetricCountsInterface[]): UserActivity[] {\n if (!metrics) {\n return [];\n }\n return metrics.map((metric) => {\n return {\n userId: metric.ownerId,\n fullName: '',\n count: this.mapMetricToCount(metric.metricCounts),\n };\n });\n }\n\n private mapMetricToCount(metricCount: MetricCountInterface[]): ActivityCount {\n return {\n inboundCall: this.getMetricValue(metricCount, MetricType.METRIC_TYPE_INBOUND_CALLS),\n outboundCall: this.getMetricValue(metricCount, MetricType.METRIC_TYPE_OUTBOUND_CALLS),\n inboundEmail: this.getMetricValue(metricCount, MetricType.METRIC_TYPE_EMAILS_RECEIVED),\n outboundEmail: this.getMetricValue(metricCount, MetricType.METRIC_TYPE_EMAILS_SENT),\n meeting: this.getMetricValue(metricCount, MetricType.METRIC_TYPE_MEETINGS),\n };\n }\n\n private mapSummary(summaries?: MetricSummaryInterface[]): Summary {\n if (!summaries) {\n return { total: {}, average: {} };\n }\n return {\n total: this.mapMetricToCount(\n summaries.map((summary) => ({ metricType: summary.metricType, count: summary.total })),\n ),\n average: this.mapMetricToCount(\n summaries.map((summary) => ({ metricType: summary.metricType, count: summary.average })),\n ),\n };\n }\n\n private getMetricValue(metricCount: MetricCountInterface[], metricType: MetricType): number {\n return metricCount.find((effort) => effort.metricType === metricType)?.count ?? 0;\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit, computed, effect, inject, input, signal } from '@angular/core';\nimport { GalaxyColumnDef, GalaxyDataSource, Row } from '@vendasta/galaxy/table';\nimport { ActivityLeaderboardDatasource } from './activity-leaderboard.datasource';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Sort, MatSort, MatSortHeader } from '@angular/material/sort';\nimport { DateRange, UserActivity } from './interfaces';\nimport { GalaxyTableModule } from '@vendasta/galaxy/table';\nimport {\n MatTable,\n MatHeaderRowDef,\n MatHeaderRow,\n MatColumnDef,\n MatHeaderCellDef,\n MatHeaderCell,\n MatCellDef,\n MatCell,\n MatFooterCellDef,\n MatFooterCell,\n MatRowDef,\n MatRow,\n MatFooterRowDef,\n MatFooterRow,\n} from '@angular/material/table';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatSelect } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\nimport { MatOption } from '@angular/material/core';\nimport { DecimalPipe } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\ntype FooterType = 'total' | 'average';\n\n@Component({\n selector: 'crm-activity-leaderboard',\n templateUrl: './activity-leaderboard.component.html',\n styleUrls: ['./activity-leaderboard.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n GalaxyTableModule,\n MatTable,\n MatSort,\n MatHeaderRowDef,\n MatHeaderRow,\n MatColumnDef,\n MatHeaderCellDef,\n MatHeaderCell,\n MatCellDef,\n MatCell,\n MatFooterCellDef,\n MatFooterCell,\n MatSortHeader,\n GalaxyAvatarModule,\n GalaxyFormFieldModule,\n MatSelect,\n FormsModule,\n MatOption,\n MatRowDef,\n MatRow,\n MatFooterRowDef,\n MatFooterRow,\n DecimalPipe,\n TranslateModule,\n ],\n})\nexport class ActivityLeaderboardComponent implements OnInit {\n activityDatasource = inject(ActivityLeaderboardDatasource);\n selection = input();\n\n columns: GalaxyColumnDef[] = [\n {\n id: 'rank',\n title: 'LEADERBOARD.COLUMNS.RANK',\n },\n {\n id: 'name',\n title: 'LEADERBOARD.COLUMNS.NAME',\n pinned: true,\n sticky: true,\n },\n {\n id: 'inboundCall',\n title: 'LEADERBOARD.COLUMNS.INBOUND_CALLS',\n },\n {\n id: 'outboundCall',\n title: 'LEADERBOARD.COLUMNS.OUTBOUND_CALLS',\n },\n {\n id: 'inboundEmail',\n title: 'LEADERBOARD.COLUMNS.INBOUND_EMAILS',\n },\n {\n id: 'outboundEmail',\n title: 'LEADERBOARD.COLUMNS.OUTBOUND_EMAILS',\n },\n {\n id: 'meeting',\n title: 'LEADERBOARD.COLUMNS.MEETINGS',\n },\n ];\n tableColumns = this.columns.map((c) => c.id);\n\n dataSource = new GalaxyDataSource(this.activityDatasource);\n selectedRows: Row[] = [];\n\n footerType = signal('total');\n private footerTotal = toSignal(this.activityDatasource.total$$);\n private footerAverage = toSignal(this.activityDatasource.average$$);\n footerData = computed(() => {\n const type = this.footerType();\n const total = this.footerTotal();\n const average = this.footerAverage();\n return type === 'total' ? total : average;\n });\n\n constructor() {\n effect(() => {\n const selection = this.selection();\n this.dataSource.setFilters([selection]);\n });\n }\n\n ngOnInit(): void {\n this.dataSource.setFilters([]);\n }\n\n protected sortChange(sort: Sort): void {\n this.dataSource.setSorting([sort]);\n }\n}\n","\n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n
{{ 'LEADERBOARD.COLUMNS.RANK' | translate }}{{ index + 1 }}{{ 'LEADERBOARD.COLUMNS.NAME' | translate }}\n
\n \n {{ element.fullName }}\n
\n
\n \n \n {{ 'LEADERBOARD.AGGREGATIONS.TOTAL' | translate }}\n {{ 'LEADERBOARD.AGGREGATIONS.AVERAGE' | translate }}\n \n \n \n {{ 'LEADERBOARD.COLUMNS.INBOUND_CALLS' | translate }}\n {{ element.count.inboundCall }}{{ footerData().inboundCall | number: '1.0-2' }}\n {{ 'LEADERBOARD.COLUMNS.OUTBOUND_CALLS' | translate }}\n {{ element.count.outboundCall }}{{ footerData().outboundCall | number: '1.0-2' }}\n {{ 'LEADERBOARD.COLUMNS.INBOUND_EMAILS' | translate }}\n {{ element.count.inboundEmail }}{{ footerData().inboundEmail | number: '1.0-2' }}\n {{ 'LEADERBOARD.COLUMNS.OUTBOUND_EMAILS' | translate }}\n {{ element.count.outboundEmail }}{{ footerData().outboundEmail | number: '1.0-2' }}\n {{ 'LEADERBOARD.COLUMNS.MEETINGS' | translate }}\n {{ element.count.meeting }}{{ footerData().meeting | number: '1.0-2' }}
\n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ActivityLeaderboardComponent } from './activity-leaderboard.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyTableModule } from '@vendasta/galaxy/table';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { TranslationModule } from '../../i18n';\nimport { ActivityLeaderboardDatasource } from './activity-leaderboard.datasource';\n\n@NgModule({\n exports: [ActivityLeaderboardComponent],\n imports: [\n CommonModule,\n FormsModule,\n TranslateModule,\n TranslationModule,\n GalaxyTableModule,\n MatTableModule,\n MatSelectModule,\n MatSortModule,\n GalaxyFormFieldModule,\n GalaxyAvatarModule,\n ActivityLeaderboardComponent,\n ],\n providers: [ActivityLeaderboardDatasource],\n})\nexport class ActivityLeaderboardModule {}\n","import {\n endOfDay,\n endOfMonth,\n endOfYear,\n format,\n startOfDay,\n startOfMonth,\n startOfYear,\n subMonths,\n subYears,\n} from 'date-fns';\nimport { isMoment } from 'moment/moment';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Component, DestroyRef, EventEmitter, OnInit, Output } from '@angular/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { CommonModule } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslationModule } from '../../../i18n';\nimport { DateRange } from '../interfaces';\nimport { provideNativeDateAdapter } from '@angular/material/core';\n\nexport interface TimeRangeOption {\n dateRange?: DateRange;\n name: string;\n id: string;\n}\n\n@Component({\n selector: 'crm-date-range-selector',\n templateUrl: './date-range-selector.component.html',\n styleUrl: './date-range-selector.component.scss',\n imports: [\n CommonModule,\n GalaxyFormFieldModule,\n ReactiveFormsModule,\n TranslateModule,\n TranslationModule,\n MatSelectModule,\n MatDatepickerModule,\n ],\n providers: [provideNativeDateAdapter()],\n})\nexport class DateRangeSelectorComponent implements OnInit {\n @Output() dateRangeChanged = new EventEmitter();\n\n currentDate = new Date();\n lastMonth = subMonths(this.currentDate, 1);\n lastYear = subYears(this.currentDate, 1);\n CUSTOM_DATE_ID = 'customDate';\n\n timeRangeOptions: TimeRangeOption[] = [\n {\n dateRange: {\n dateRangeStart: startOfMonth(this.currentDate),\n dateRangeEnd: endOfMonth(this.currentDate),\n },\n name: `${this.translate.instant('LEADERBOARD.DATE_RANGES.THIS_MONTH')} (${format(this.currentDate, 'MMMM yyyy')})`,\n id: 'thisMonth',\n },\n {\n dateRange: {\n dateRangeStart: startOfMonth(this.lastMonth),\n dateRangeEnd: endOfMonth(this.lastMonth),\n },\n name: `${this.translate.instant('LEADERBOARD.DATE_RANGES.LAST_MONTH')} (${format(this.lastMonth, 'MMMM yyyy')})`,\n id: 'lastMonth',\n },\n {\n dateRange: {\n dateRangeStart: startOfYear(this.currentDate),\n dateRangeEnd: endOfYear(this.currentDate),\n },\n name: `${this.translate.instant('LEADERBOARD.DATE_RANGES.THIS_YEAR')} (${format(this.currentDate, 'yyyy')})`,\n id: 'thisYear',\n },\n {\n dateRange: {\n dateRangeStart: startOfYear(this.lastYear),\n dateRangeEnd: endOfYear(this.lastYear),\n },\n name: `${this.translate.instant('LEADERBOARD.DATE_RANGES.LAST_YEAR')} (${format(this.lastYear, 'yyyy')})`,\n id: 'lastYear',\n },\n { name: `${this.translate.instant('LEADERBOARD.DATE_RANGES.CUSTOM')}`, id: this.CUSTOM_DATE_ID },\n ];\n\n protected customRangeStart = new FormControl(null);\n protected customRangeEnd = new FormControl(null);\n\n private readonly timeRange$$ = new BehaviorSubject(this.timeRangeOptions[0].dateRange);\n public readonly showCustomDateSelector$$ = new BehaviorSubject(false);\n\n constructor(\n private readonly translate: TranslateService,\n private readonly destroyRef: DestroyRef,\n ) {}\n\n ngOnInit(): void {\n this.timeRange$$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((timeRange) => {\n if (timeRange?.dateRangeStart && timeRange?.dateRangeEnd) {\n this.dateRangeChanged.emit(timeRange);\n }\n });\n }\n\n setTimeRange(event: TimeRangeOption): void {\n if (event.id === this.CUSTOM_DATE_ID) {\n this.showCustomDateSelector$$.next(true);\n this.triggerCustomRangeChanged();\n } else {\n this.showCustomDateSelector$$.next(false);\n this.timeRange$$.next(event.dateRange);\n }\n }\n\n triggerCustomRangeChanged() {\n let start = this.customRangeStart.value;\n let end = this.customRangeEnd.value;\n start = isMoment(start) ? start.toDate() : start;\n end = isMoment(end) ? end.toDate() : end;\n\n if (start && end) {\n this.timeRange$$.next({\n dateRangeStart: startOfDay(start),\n dateRangeEnd: endOfDay(end),\n });\n }\n }\n}\n","
\n \n {{ 'LEADERBOARD.TIME_RANGE' | translate }}\n \n \n {{ option.name }}\n \n \n \n \n \n \n \n \n \n \n \n
\n","import { InjectionToken, NgModule } from '@angular/core';\nimport {\n CrmDependencies,\n CrmInjectionToken,\n CrmMultiLocationDependencies,\n CrmMultilocationInjectionToken,\n} from './tokens-and-interfaces';\nimport { ActivityCustomizationService } from './shared-services';\n\n@NgModule({\n imports: [],\n})\nexport class CrmCoreModule {\n static forRoot(\n config: InjectionToken,\n multilocationConfig?: InjectionToken,\n ) {\n return {\n ngModule: CrmCoreModule,\n providers: [\n {\n provide: CrmInjectionToken,\n useExisting: config,\n deps: [],\n },\n {\n provide: CrmMultilocationInjectionToken,\n useExisting: multilocationConfig || config,\n deps: [],\n },\n ActivityCustomizationService,\n ],\n };\n }\n}\n","import { Component, DestroyRef, Inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { MatIconModule } from '@angular/material/icon';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { VaFormsModule } from '@vendasta/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { GalaxyButtonLoadingIndicatorModule } from '@vendasta/galaxy/button-loading-indicator';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { VaFilterModule } from '@vendasta/uikit';\nimport { GalaxyInfiniteScrollTriggerModule } from '@vendasta/galaxy/infinite-scroll-trigger';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport {\n ContactType,\n RecipientCampaignService,\n RecipientType,\n RecipientV2Interface,\n Sender,\n SenderType,\n} from '@vendasta/campaigns';\nimport { CrmFieldService, StandardExternalIds } from '../../../../shared-services/crm-services/field.service';\nimport { CrmObjectService } from '../../../../shared-services/crm-services/crm-object-service/crm-object.service';\nimport {\n CrmDependencies,\n CrmInjectionToken,\n PageAnalyticsInjectionToken,\n pageAnalyticsInjectionTokenGenerator,\n} from '../../../../tokens-and-interfaces';\nimport { GalaxyDatepickerModule } from '@vendasta/galaxy/datepicker';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { catchError, map, switchMap, take } from 'rxjs/operators';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { CrmObjectInterface } from '@vendasta/crm';\nimport { AddCampaignDialogComponent, Campaign } from './add-campaign-dialog.component';\nimport { format as formatDate } from 'date-fns-tz';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport interface dialogData {\n campaign: Campaign;\n id: string;\n}\n@Component({\n selector: 'crm-start-campaign-modal',\n templateUrl: './start-campaign-dialog.component.html',\n styleUrls: ['./start-campaign-dialog.component.scss'],\n imports: [\n CommonModule,\n MatButtonModule,\n TranslateModule,\n GalaxyLoadingSpinnerModule,\n MatDialogModule,\n GalaxyEmptyStateModule,\n MatIconModule,\n GalaxyFormFieldModule,\n MatRadioModule,\n FormsModule,\n VaFormsModule,\n MatInputModule,\n GalaxyButtonLoadingIndicatorModule,\n MatProgressSpinnerModule,\n VaFilterModule,\n GalaxyInfiniteScrollTriggerModule,\n ReactiveFormsModule,\n GalaxyTooltipModule,\n GalaxyAlertModule,\n GalaxyDatepickerModule,\n MatDatepickerModule,\n ],\n providers: [\n RecipientCampaignService,\n CrmFieldService,\n {\n provide: PageAnalyticsInjectionToken,\n useFactory: pageAnalyticsInjectionTokenGenerator('Contact'),\n },\n ],\n})\nexport class StartCampaignDialogComponent implements OnInit {\n formGroup = new FormBuilder().nonNullable.group({\n selectFormControl: '',\n dateFormControl: formatDate(new Date(), \"yyyy-MM-dd'T'HH:mm\"),\n });\n\n campaignStartTime: Date;\n nowDate = new Date(Date.now());\n crmObject$: Observable;\n selectedCampaign: Campaign;\n loading$$: BehaviorSubject = new BehaviorSubject(false);\n\n constructor(\n private readonly destroyRef: DestroyRef,\n @Inject(MAT_DIALOG_DATA) readonly modalData: dialogData,\n private dialog: MatDialog,\n private readonly translate: TranslateService,\n private readonly objectService: CrmObjectService,\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n readonly ref: MatDialogRef,\n private snackbarService: SnackbarService,\n private readonly recipientCampaignService: RecipientCampaignService,\n\n private crmFieldService: CrmFieldService,\n ) {\n this.crmObject$ = objectService.getMultiObject('Contact', [this.modalData.id || '']).pipe(\n map((resp) => {\n const object = resp?.crmObjects?.[0];\n if (resp?.crmObjects?.length === 0 || !object) {\n return {};\n }\n return object;\n }),\n );\n }\n\n ngOnInit() {\n this.selectedCampaign = this.modalData.campaign;\n }\n\n sendCampaign() {\n if (this.selectedCampaign === undefined) {\n this.snackbarService.openErrorSnack('CAMPAIGNS.CONTACTS.MODAL.ERRORS.NO_CAMPAIGN_SELECTED');\n return;\n }\n let sender: Sender;\n combineLatest([this.config.namespace$, this.config.parentNamespace$])\n .pipe(take(1))\n .subscribe(([namespace, parentNamespace]) => {\n let senderType = SenderType.SENDER_TYPE_PARTNER;\n if (parentNamespace) {\n senderType = SenderType.SENDER_TYPE_BUSINESS;\n }\n sender = {\n type: senderType,\n id: namespace,\n } as Sender;\n });\n\n const recipient: Observable = this.crmObject$.pipe(\n map((object) => {\n return {\n id: object.crmObjectId,\n type: RecipientType.RECIPIENT_TYPE_CRM_CONTACT,\n contact: {\n type: ContactType.CONTACT_TYPE_EMAIL,\n value: this.crmFieldService.getFieldValueFromCrmObject(object, StandardExternalIds.Email)?.stringValue,\n },\n emailAddress: this.crmFieldService.getFieldValueFromCrmObject(object, StandardExternalIds.Email)?.stringValue,\n phoneNumber: this.crmFieldService.getFieldValueFromCrmObject(object, StandardExternalIds.PhoneNumber)\n ?.stringValue,\n };\n }),\n );\n\n this.loading$$.next(true);\n recipient\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n switchMap((rec) => {\n const formValues = this.formGroup.getRawValue();\n this.campaignStartTime = formValues.dateFormControl\n ? new Date(formValues.dateFormControl)\n : new Date(Date.now());\n\n return this.recipientCampaignService\n .addToCampaign(this.selectedCampaign.id, sender, rec, this.campaignStartTime, !!formValues.dateFormControl)\n .pipe(\n map(() => ''),\n catchError((err) => {\n return of(err.error.message);\n }),\n );\n }),\n )\n .subscribe((resp) => {\n if (resp) {\n this.snackbarService.openErrorSnack(this.translate.instant(this.getErrorMessage(resp)));\n } else {\n this.loading$$.next(false);\n this.snackbarService.openSuccessSnack(\n this.translate.instant('ASSOCIATIONS.CAMPAIGNS.MODAL.SUCCESS') + ' ' + this.selectedCampaign.title,\n );\n }\n this.close();\n });\n }\n\n getErrorMessage(error: string) {\n if (error.startsWith('phoneNumber')) {\n return 'ASSOCIATIONS.CAMPAIGNS.MODAL.FAILED_ADDRESS_ERROR_SMS';\n } else if (error.startsWith('emailAddress')) {\n return 'ASSOCIATIONS.CAMPAIGNS.MODAL.FAILED_ADDRESS_ERROR_EMAIL';\n }\n return 'ASSOCIATIONS.CAMPAIGNS.MODAL.ERROR';\n }\n\n close() {\n this.ref.close();\n }\n\n back() {\n this.ref.close();\n this.dialog.open(AddCampaignDialogComponent, {\n width: '500px',\n data: {\n id: this.modalData.id,\n },\n });\n }\n}\n","

{{ 'ASSOCIATIONS.CAMPAIGNS.ADD_ASSOCIATION' | translate }}

\n\n

{{ 'ASSOCIATIONS.CAMPAIGNS.START' | translate }}

\n
\n
\n \n \n \n {{ 'ASSOCIATIONS.CAMPAIGNS.START_CAMPAIGN.NOW' | translate }}\n \n {{ 'ASSOCIATIONS.CAMPAIGNS.START_NOW' | translate }} {{ nowDate | date: 'long' }}\n \n \n {{ 'ASSOCIATIONS.CAMPAIGNS.START_CAMPAIGN.LATER' | translate }}\n \n {{ 'ASSOCIATIONS.CAMPAIGNS.START_LATER' | translate }}\n \n \n \n \n \n \n \n
\n
\n
\n\n \n \n \n \n\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { CrmFieldService } from '../../../../shared-services/crm-services/field.service';\nimport { CrmObjectService } from '../../../../shared-services/crm-services/crm-object-service/crm-object.service';\nimport {\n CrmDependencies,\n CrmInjectionToken,\n PageAnalyticsInjectionToken,\n pageAnalyticsInjectionTokenGenerator,\n} from '../../../../tokens-and-interfaces';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport {\n CampaignService,\n RecipientCampaignService,\n SenderType,\n SortDirection,\n SortField,\n SortOptions,\n Statuses,\n} from '@vendasta/campaigns';\nimport { SenderInterface } from '@vendasta/email';\nimport { VaFormsModule } from '@vendasta/forms';\nimport { GalaxyButtonLoadingIndicatorModule } from '@vendasta/galaxy/button-loading-indicator';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyInfiniteScrollTriggerModule } from '@vendasta/galaxy/infinite-scroll-trigger';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { Scrollable } from '@vendasta/rx-utils';\nimport { VaFilterModule } from '@vendasta/uikit';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { catchError, debounceTime, distinctUntilChanged, map, startWith, take } from 'rxjs/operators';\nimport { CrmObjectInterface } from '@vendasta/crm';\nimport { StartCampaignDialogComponent } from './start-campaign-dialog.component';\nimport { MatExpansionModule } from '@angular/material/expansion';\n\nexport interface Campaign {\n id: string;\n title: string;\n updated: string;\n}\n\nexport interface contactCard {\n id: string;\n}\n\n@Component({\n selector: 'crm-add-campaign-modal',\n templateUrl: './add-campaign-dialog.component.html',\n styleUrls: ['./add-campaign-dialog.component.scss'],\n imports: [\n CommonModule,\n MatButtonModule,\n TranslateModule,\n GalaxyLoadingSpinnerModule,\n MatDialogModule,\n GalaxyEmptyStateModule,\n MatIconModule,\n GalaxyFormFieldModule,\n MatRadioModule,\n FormsModule,\n VaFormsModule,\n MatInputModule,\n GalaxyButtonLoadingIndicatorModule,\n MatProgressSpinnerModule,\n VaFilterModule,\n GalaxyInfiniteScrollTriggerModule,\n ReactiveFormsModule,\n GalaxyTooltipModule,\n GalaxyAlertModule,\n MatExpansionModule,\n ],\n providers: [\n RecipientCampaignService,\n CrmFieldService,\n {\n provide: PageAnalyticsInjectionToken,\n useFactory: pageAnalyticsInjectionTokenGenerator('Contact'),\n },\n ],\n})\nexport class AddCampaignDialogComponent implements OnInit {\n crmObject$: Observable;\n searchControl = new UntypedFormControl();\n campaigns$$ = new BehaviorSubject([] as Campaign[]);\n campaigns$ = this.campaigns$$.asObservable();\n criteria$ = this.searchControl.valueChanges.pipe(startWith(''), distinctUntilChanged(), debounceTime(300));\n selectedCampaign: Campaign;\n scrollable: Scrollable;\n loading$$: BehaviorSubject = new BehaviorSubject(false);\n placeholder = '';\n\n constructor(\n private readonly translate: TranslateService,\n private readonly objectService: CrmObjectService,\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n readonly ref: MatDialogRef,\n private readonly campaignService: CampaignService,\n private dialog: MatDialog,\n @Inject(MAT_DIALOG_DATA) readonly modalData: contactCard,\n ) {\n this.crmObject$ = objectService.getMultiObject('Contact', [this.modalData.id || '']).pipe(\n map((resp) => {\n const object = resp?.crmObjects?.[0];\n if (resp?.crmObjects?.length === 0 || !object) {\n return {};\n }\n return object;\n }),\n );\n }\n\n ngOnInit() {\n combineLatest([this.config.namespace$, this.config.parentNamespace$])\n .pipe(take(1))\n .subscribe(([namespace, parentNamespace]) => {\n let senderType = SenderType.SENDER_TYPE_PARTNER;\n if (parentNamespace) {\n senderType = SenderType.SENDER_TYPE_BUSINESS;\n }\n this.scrollable = this.getScrollableList(namespace, senderType);\n this.campaigns$ = this.scrollable.items$;\n this.placeholder = this.translate.instant('CAMPAIGNS.CONTACTS.MODAL.SEARCH_PLACEHOLDER');\n });\n }\n\n close() {\n this.ref.close();\n }\n\n loadNext() {\n this.scrollable?.loadMore();\n }\n\n onItemChange(campaign: Campaign) {\n this.selectedCampaign = campaign;\n }\n\n getScrollableList(senderId: string, senderType: SenderType) {\n return new Scrollable(this.criteria$, (criteria, cursor) => {\n return this.loadMore(criteria, cursor, senderId, senderType);\n });\n }\n\n loadMore(criteria: string, cursor: string, senderId: string, senderType: SenderType) {\n this.loading$$.next(true);\n return this.campaignService\n .listCampaignsV2(\n { type: senderType, id: senderId } as SenderInterface,\n [Statuses.STATUSES_ACTIVE, Statuses.STATUSES_PUBLISHED],\n criteria,\n { cursor: cursor, pageSize: 10 },\n { field: SortField.SORT_FIELDS_UPDATED_AT, direction: SortDirection.SORT_ORDER_DESCENDING } as SortOptions,\n )\n .pipe(\n map((response) => {\n this.loading$$.next(false);\n return {\n items: response.campaigns.map((campaign) => {\n return {\n id: campaign.campaignId,\n title: campaign.name,\n updated: campaign.updated.toISOString(),\n } as Campaign;\n }),\n cursor: response.metadata?.nextCursor ?? null,\n hasMore: response.metadata?.hasMore ?? false,\n };\n }),\n catchError(() => of({ items: [] as Array, cursor: '', hasMore: false })),\n );\n }\n\n openStartCampaignDialog() {\n this.ref.close();\n this.dialog.open(StartCampaignDialogComponent, {\n data: {\n campaign: this.selectedCampaign,\n id: this.modalData.id,\n },\n width: '500px',\n });\n }\n}\n","

{{ 'ASSOCIATIONS.CAMPAIGNS.ADD_ASSOCIATION' | translate }}

\n\n \n \n \n \n
\n \n \n
\n
\n \n {{ campaign.title }}\n \n {{ 'ASSOCIATIONS.CAMPAIGNS.MODAL.UPDATED' | translate }}\n {{ campaign.updated | date: 'mediumDate' }}\n \n \n
\n
\n
\n
\n \n \n account_circle\n \n

{{ 'ASSOCIATIONS.CAMPAIGNS.MODAL.NO_CAMPAIGNS' | translate }}

\n
\n
\n \n \n \n
\n
\n
\n
\n\n \n \n \n \n {{ 'ACTIONS.NEXT' | translate }}\n \n \n \n\n","import { Component, Input, OnChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CampaignScheduleStatus } from '@vendasta/campaigns';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'crm-recipient-campaign-status',\n imports: [CommonModule, GalaxyBadgeModule],\n templateUrl: './recipient-campaign-status.component.html',\n styleUrl: './recipient-campaign-status.component.scss',\n})\nexport class RecipientCampaignStatusComponent implements OnChanges {\n status: string;\n color: string;\n\n @Input() recipientCampaignStatus: CampaignScheduleStatus;\n\n constructor(private translate: TranslateService) {}\n\n ngOnChanges(): void {\n switch (this.recipientCampaignStatus) {\n case CampaignScheduleStatus.CAMPAIGN_SCHEDULE_STATUS_ACTIVE:\n this.status = this.translate.instant('ASSOCIATIONS.CAMPAIGNS.STATUS.ONGOING');\n this.color = 'blue';\n break;\n case CampaignScheduleStatus.CAMPAIGN_SCHEDULE_STATUS_STOPPED:\n this.status = this.translate.instant('ASSOCIATIONS.CAMPAIGNS.STATUS.PAUSED');\n this.color = 'gray';\n break;\n case CampaignScheduleStatus.CAMPAIGN_SCHEDULE_STATUS_COMPLETED:\n this.status = this.translate.instant('ASSOCIATIONS.CAMPAIGNS.STATUS.COMPLETED');\n this.color = 'green';\n break;\n }\n }\n}\n","{{ status }}\n","import { Component, Inject, inject, input, OnDestroy, Signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatInputModule } from '@angular/material/input';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { AddCampaignDialogComponent } from './add-campaign-dialog/add-campaign-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { MatCardModule } from '@angular/material/card';\nimport { CrmDependencies, CrmInjectionToken, ObjectType } from '../../../tokens-and-interfaces';\nimport {\n CampaignScheduleStatus,\n CampaignService,\n RecipientCampaignService,\n RecipientCampaignStruct,\n} from '@vendasta/campaigns';\nimport { filter, map, switchMap, take, tap } from 'rxjs/operators';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { Router, RouterLink } from '@angular/router';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { catchError, Observable, of, Subscription } from 'rxjs';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { RecipientCampaignStatusComponent } from './recipient-campaign-status/recipient-campaign-status.component';\n\nexport interface CampaignCardData {\n id: string;\n recipientCampaignId: string;\n title: string;\n link: string;\n recipientCampaignStatus: CampaignScheduleStatus;\n partnerID: string;\n}\n@Component({\n selector: 'crm-campaigns-card',\n imports: [\n CommonModule,\n TranslationModule,\n MatExpansionModule,\n MatInputModule,\n GalaxyFormFieldModule,\n MatButtonModule,\n MatProgressSpinnerModule,\n MatIconModule,\n MatCardModule,\n GalaxyAvatarModule,\n MatMenuModule,\n MatTooltipModule,\n GalaxyBadgeModule,\n RouterLink,\n RecipientCampaignStatusComponent,\n ],\n templateUrl: './contact-campaigns-card.component.html',\n styleUrls: ['./contact-campaigns-card.component.scss', '../../../shared-styles/association-panel-shared.scss'],\n})\nexport class ContactCampaignsCardComponent implements OnDestroy {\n id = input();\n name = input('');\n objectType = input('Contact');\n\n protected readonly confirmationModal = inject(OpenConfirmationModalService);\n protected campaigns$: Observable;\n protected readonly recipientCampaigns$: Observable;\n private readonly useBusinessCenterCampaignLink: Signal;\n protected readonly canViewAllCampaigns$: Observable;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private readonly dialog: MatDialog,\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly campaignService: CampaignService,\n private readonly recipientCampaignService: RecipientCampaignService,\n private readonly router: Router,\n private readonly snackbarService: SnackbarService,\n private translate: TranslateService,\n private postHogService: ProductAnalyticsService,\n ) {\n this.recipientCampaigns$ = toObservable(this.id).pipe(\n switchMap((id) => this.recipientCampaignService.list(id ?? '')),\n );\n this.canViewAllCampaigns$ = this.config.services?.accessService?.canViewAllCampaigns$ || of(false);\n this.campaigns$ = this.listRecipientCampaigns();\n this.useBusinessCenterCampaignLink = toSignal(\n config.parentNamespace$.pipe(\n map((parentNamespace) => {\n return parentNamespace !== '';\n }),\n ),\n );\n }\n\n protected addCampaigns() {\n this.dialog.open(AddCampaignDialogComponent, {\n width: '500px',\n data: {\n id: this.id(),\n },\n });\n }\n\n private listRecipientCampaigns(): Observable {\n let recipientCampaigns: RecipientCampaignStruct[] = [];\n const recipientCampaignIds$ = this.recipientCampaigns$.pipe(\n tap((data) => {\n recipientCampaigns = data;\n }),\n map((recipientCampaigns = []) => recipientCampaigns.map((rc: RecipientCampaignStruct) => rc.campaignId)),\n );\n return recipientCampaignIds$.pipe(\n switchMap((campaignIds) => {\n if (!campaignIds || campaignIds.length === 0) {\n return of([]);\n }\n return this.campaignService.getMulti(campaignIds).pipe(\n switchMap((campaigns) => {\n return of(\n campaigns.map((campaign) => {\n const campaignLink = this.getCampaignLink(campaign.campaignId, campaign.partnerId);\n const recipientCampaign =\n recipientCampaigns.find((rc) => rc.campaignId === campaign.campaignId) || null;\n return {\n id: campaign.campaignId,\n recipientCampaignId: recipientCampaign?.recipientCampaignId,\n title: campaign.name,\n link: campaignLink,\n recipientCampaignStatus: recipientCampaign?.status,\n partnerID: campaign.partnerId,\n } as CampaignCardData;\n }),\n );\n }),\n );\n }),\n );\n }\n\n private getCampaignLink(campaignId: string, namespace: string): string {\n if (this.useBusinessCenterCampaignLink()) {\n const id = namespace.split('/')[1];\n return `/account/location/${id}/campaigns/${campaignId}/details`;\n } else {\n return `/marketing/campaign/details/${campaignId}`;\n }\n }\n\n protected viewAll() {\n if (this.useBusinessCenterCampaignLink()) {\n this.config.namespace$.pipe(take(1)).subscribe((namespace) => {\n this.router.navigate([`/account/location/${namespace}/campaigns/list`]);\n });\n } else {\n this.router.navigate(['/marketing/campaigns/all']);\n }\n }\n\n protected canShowMenu(status: CampaignScheduleStatus): boolean {\n const statuses = [\n CampaignScheduleStatus.CAMPAIGN_SCHEDULE_STATUS_ACTIVE,\n CampaignScheduleStatus.CAMPAIGN_SCHEDULE_STATUS_STOPPED,\n CampaignScheduleStatus.CAMPAIGN_SCHEDULE_STATUS_WAITING_ON_RATE_LIMIT,\n ];\n return statuses.includes(status);\n }\n\n protected pauseCampaign(campaign: CampaignCardData) {\n const modalTitle = this.translate.instant('ASSOCIATIONS.CAMPAIGNS.MENU.PAUSE.CONFIRMATION.TITLE', {\n title: campaign.title,\n recipient: this.name(),\n });\n const message = this.translate.instant('ASSOCIATIONS.CAMPAIGNS.MENU.PAUSE.CONFIRMATION.MESSAGE');\n const confirmText = this.translate.instant('ASSOCIATIONS.CAMPAIGNS.MENU.PAUSE.CONFIRMATION.CONFIRM');\n this.subscriptions.push(\n this.openConfirmationModal(modalTitle, message, confirmText)\n .pipe(\n filter((result) => result),\n switchMap(() =>\n this.recipientCampaignService.pauseRecipientCampaign(campaign.recipientCampaignId).pipe(\n tap(() => {\n this.campaigns$ = this.listRecipientCampaigns();\n this.snackbarService.openSuccessSnack(\n this.translate.instant('ASSOCIATIONS.CAMPAIGNS.MENU.PAUSE.SUCCESS'),\n );\n }),\n catchError((err) => {\n console.error(err);\n this.snackbarService.openErrorSnack(\n this.translate.instant('ASSOCIATIONS.CAMPAIGNS.MENU.PAUSE.FAILURE'),\n );\n return of(null);\n }),\n ),\n ),\n )\n .subscribe(() => {\n this.postHogService.trackEvent('user-clicked-crm-pause-campaign', 'pause-campaign-workflow', 'click', 0, {\n pid: campaign.partnerID,\n recipientCampaignID: campaign.recipientCampaignId,\n contactID: this.id(),\n });\n }),\n );\n }\n\n protected resumeCampaign(campaign: CampaignCardData) {\n const modalTitle = this.translate.instant('ASSOCIATIONS.CAMPAIGNS.MENU.RESUME.CONFIRMATION.TITLE', {\n title: campaign.title,\n recipient: this.name(),\n });\n const message = this.translate.instant('ASSOCIATIONS.CAMPAIGNS.MENU.RESUME.CONFIRMATION.MESSAGE');\n const confirmText = this.translate.instant('ASSOCIATIONS.CAMPAIGNS.MENU.RESUME.CONFIRMATION.CONFIRM');\n this.subscriptions.push(\n this.openConfirmationModal(modalTitle, message, confirmText)\n .pipe(\n filter((result) => result),\n switchMap(() =>\n this.recipientCampaignService.resumeRecipientCampaign(campaign.recipientCampaignId).pipe(\n tap(() => {\n this.campaigns$ = this.listRecipientCampaigns();\n this.snackbarService.openSuccessSnack(\n this.translate.instant('ASSOCIATIONS.CAMPAIGNS.MENU.RESUME.SUCCESS'),\n );\n }),\n catchError((err) => {\n console.error(err);\n this.snackbarService.openErrorSnack(\n this.translate.instant('ASSOCIATIONS.CAMPAIGNS.MENU.RESUME.FAILURE'),\n );\n return of(null);\n }),\n ),\n ),\n )\n .subscribe(() => {\n this.postHogService.trackEvent('user-clicked-crm-resume-campaign', 'resume-campaign-workflow', 'click', 1, {\n pid: campaign.partnerID,\n recipientCampaignID: campaign.recipientCampaignId,\n contactID: this.id(),\n });\n }),\n );\n }\n\n protected openConfirmationModal(title: string, message: string, confirmButtonText: string): Observable {\n return this.confirmationModal.openModal({\n title: title,\n message: message,\n confirmButtonText: confirmButtonText,\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n protected readonly CampaignScheduleStatus = CampaignScheduleStatus;\n}\n","\n \n {{ 'ASSOCIATIONS.CAMPAIGNS.TITLE' | translate }}\n \n \n \n \n \n \n {{ campaign.title }}\n \n \n @if (campaign.recipientCampaignStatus === CampaignScheduleStatus.CAMPAIGN_SCHEDULE_STATUS_ACTIVE) {\n \n \n \n } @else if (campaign.recipientCampaignStatus === CampaignScheduleStatus.CAMPAIGN_SCHEDULE_STATUS_STOPPED) {\n \n \n \n }\n \n \n more_vert\n \n \n \n \n \n \n \n \n @if (canViewAllCampaigns$ | async) {\n \n }\n\n","import { BreakpointObserver, Breakpoints, BreakpointState } from '@angular/cdk/layout';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { Component, computed, Inject, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatSort } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { TranslateService } from '@ngx-translate/core';\nimport { RxState } from '@rx-angular/state';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { GalaxyFilterChipsModule, GalaxyFilterInterface } from '@vendasta/galaxy/filter/chips';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { GalaxyDataSource, GalaxyTableModule, Row } from '@vendasta/galaxy/table';\nimport { GalaxyColumnDef } from '@vendasta/galaxy/table/src/table.interface';\nimport { Observable, of } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { Association } from '../../shared-services/crm-services/crm-object-service/crm-association.service';\nimport { LIST_OBJECTS_DEFAULT_PAGE_SIZE, LIST_OBJECTS_PAGE_SIZE_OPTIONS, SNACKBAR_DURATION } from '../../constants';\nimport { CrmDependencies, CrmInjectionToken, ObjectType, SelectAllAction } from '../../tokens-and-interfaces';\nimport { TranslationModule } from '../../i18n/translation-module';\n\nimport { ListObjectsTableService } from '../list-objects/list-objects-table.service';\nimport { TranslateByObjectTypePipe } from '../../i18n/translate-by-object-type/translate-by-object-type.pipe';\nimport { TranslateByObjectTypeService } from '../../i18n/translate-by-object-type/translate-by-object-type.service';\nimport { CrmFiltersService } from '../../shared-services/crm-services/crm-filters.service';\nimport { CrmObjectService, CRMTrackingService } from '../../shared-services';\n\nimport { GalaxyTableSelectionCustomization, GalaxyTableSelectionCustomizationToken } from '@vendasta/galaxy/table';\n\nexport interface ListObjectTypeDialogData {\n baseColumnIds: string[];\n modalTitle: string;\n objectType: ObjectType;\n associations: Association[];\n associationType: string;\n newSelection: string;\n enableMultiplePreSelectedRows?: boolean;\n newSelectionIDs?: string[];\n hideCreateButton?: boolean;\n singleSelection?: boolean;\n showActions?: boolean;\n hideActionButton?: boolean;\n filters?: GalaxyFilterInterface[];\n unlockPreSelectedRows?: boolean;\n preselectedIds?: string[];\n createButtonText?: string;\n}\nexport interface ListObjectTypeDialogResult {\n selectedRows: Row[];\n clickedCreate?: boolean;\n searchTerm?: string;\n filters?: GalaxyFilterInterface[];\n useSelectAll?: boolean;\n totalObjects?: number;\n}\nconst CRM_PROVIDERS = [CrmObjectService];\n\n@Component({\n selector: 'crm-select-object-type-modal',\n templateUrl: './select-object-type-modal.component.html',\n styleUrls: ['./select-object-type-modal.component.scss'],\n imports: [\n CommonModule,\n MatButtonModule,\n TranslationModule,\n MatDialogModule,\n AsyncPipe,\n GalaxyLoadingSpinnerModule,\n GalaxyEmptyStateModule,\n GalaxyTableModule,\n MatTableModule,\n GalaxyFilterChipsModule,\n TranslateByObjectTypePipe,\n ],\n providers: [\n ListObjectsTableService,\n RxState,\n ...CRM_PROVIDERS,\n {\n provide: GalaxyTableSelectionCustomizationToken,\n useValue: {\n rowsSelectionLimit: 100,\n } as GalaxyTableSelectionCustomization,\n },\n ],\n})\nexport class SelectObjectTypeModalComponent {\n protected readonly dataSource: GalaxyDataSource = this.service.dataSource;\n protected readonly columns$: Observable = this.service.columns$;\n protected readonly initialLoadingCompleted$: Observable = this.service.initialLoadingCompleted$;\n protected readonly showEmptyState$: Observable = this.service.showEmptyState$;\n protected readonly objectType = this.data.objectType;\n protected readonly showFiltersApplied$: Observable = this.dataSource.filtersApplied$;\n protected readonly isMobile$ = this.breakpointObserver.observe(Breakpoints.XSmall).pipe(\n startWith({\n matches: false,\n breakpoints: {\n [Breakpoints.XSmall]: false,\n },\n } as BreakpointState),\n map((breakpoint: BreakpointState) => breakpoint.matches),\n );\n protected readonly useSelectAll$ = this.dataSource?.selectAll$ ?? of(false);\n protected readonly showCreateButton = this.data?.hideCreateButton === undefined ? false : !this.data.hideCreateButton;\n protected readonly createButtonText = this.data?.createButtonText;\n\n private readonly selectedRows = signal([]);\n protected readonly numSelected = computed(() => this.selectedRows().length);\n protected newSelection: Row[];\n protected readonly preSelectedLockedRows: Row[] =\n this.data.associations.map((association) => {\n return {\n id: association?.associatedObject?.crmObjectId,\n data: {},\n } as Row;\n }) || [];\n\n protected readonly pageSizeOptions: number[] = LIST_OBJECTS_PAGE_SIZE_OPTIONS;\n protected readonly pageSize: number = LIST_OBJECTS_DEFAULT_PAGE_SIZE;\n protected readonly selectAllActions$: Observable = this.createSelectAllActions(this.objectType);\n protected readonly hasSelectAllActions$ = this.selectAllActions$.pipe(map((actions) => actions.length > 0));\n protected readonly hasAssociations = this.data.associations.length > 0;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: ListObjectTypeDialogData,\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly service: ListObjectsTableService,\n private dialogRef: MatDialogRef,\n private readonly snackService: SnackbarService,\n private readonly translateService: TranslateService,\n private readonly breakpointObserver: BreakpointObserver,\n private readonly translateByObjectTypeService: TranslateByObjectTypeService,\n private readonly crmFiltersService: CrmFiltersService,\n private readonly trackingService: CRMTrackingService,\n ) {\n this.crmFiltersService.setInitialFilters(this.data.filters ?? []);\n this.service.setObjectType(this.data.objectType);\n this.service.setShowActions(false);\n this.service.setBaseColumns(this.data.baseColumnIds);\n\n const newSelectedRow = [\n {\n id: this.data?.newSelection,\n data: {},\n } as Row,\n ];\n const enablePreselectedRows = this.data?.enableMultiplePreSelectedRows ?? false;\n this.newSelection = enablePreselectedRows ? [] : newSelectedRow;\n\n this.data.preselectedIds?.forEach((id) => {\n this.newSelection.unshift({\n id,\n data: {},\n } as Row);\n });\n\n if (!this.hasAssociations) {\n if (this.data.unlockPreSelectedRows) {\n this.newSelection =\n this.data?.newSelectionIDs?.map((id) => {\n return {\n id,\n data: {},\n } as Row;\n }) || [];\n } else {\n this.preSelectedLockedRows =\n this.data?.newSelectionIDs?.map((id) => {\n return {\n id,\n data: {},\n } as Row;\n }) || [];\n }\n }\n }\n\n updateFilters(filters: GalaxyFilterInterface[]): void {\n this.dataSource.setFilters(filters);\n this.trackingService.trackFilterUsage(this.objectType, filters);\n }\n\n selectionChanged(rows: Row[]): void {\n if (this.preSelectedLockedRows.length > 0) {\n const filteredData = rows.filter((data) => !this.preSelectedLockedRows.some((item) => item.id === data.id));\n this.selectedRows.set(filteredData);\n return;\n }\n this.selectedRows.set(rows);\n }\n\n cancel(): void {\n this.dialogRef.close();\n }\n\n createObjectModal(): void {\n this.dialogRef.close({ selectedRows: this.selectedRows(), clickedCreate: true } as ListObjectTypeDialogResult);\n }\n\n handleSelectAll() {\n this.dataSource.toggleSelectAll();\n }\n\n private createSelectAllActions(objectType: ObjectType): Observable {\n return objectType === 'Contact' ? (this.config.contact?.selectAllTableActions$ ?? of([])) : of([]);\n }\n\n save(): void {\n if (this.selectedRows().length > 0) {\n this.dialogRef.close({\n selectedRows: this.selectedRows(),\n useSelectAll: this.dataSource.state.selectAll,\n filters: this.dataSource.state.filters,\n totalObjects: this.dataSource.state.totalDataMembers,\n searchTerm: this.dataSource.state.searchTerm,\n });\n } else {\n const translatedString = this.translateByObjectTypeService.getTranslationByObjectType(\n this.objectType,\n 'SELECT_MODAL.NO_SELECTED',\n );\n this.snackService.openWithOptions(this.translateService.instant(translatedString), {\n duration: SNACKBAR_DURATION,\n });\n }\n }\n}\n","

{{ data.modalTitle }}

\n\n \n \n \n @if (hasSelectAllActions$ | async) {\n
\n
\n @if ((useSelectAll$ | async) === false) {\n \n {{\n 'LIST_OBJECTS_TABLE.SELECT_ALL.SELECT_ALL_OBJECTS'\n | translateByObjectType: objectType : { totalObjects: dataSource.state.totalDataMembers }\n }}\n \n } @else {\n
\n {{\n 'LIST_OBJECTS_TABLE.SELECT_ALL.TOTAL_SELECTED'\n | translateByObjectType: objectType : { totalSelected: dataSource.state.totalDataMembers }\n }}\n
\n \n {{ 'LIST_OBJECTS_TABLE.SELECT_ALL.CLEAR_SELECTION' | translateByObjectType: objectType }}\n \n }\n
\n
\n }\n \n \n \n \n \n \n \n \n \n
\n @if (!data.singleSelection) {\n \n }\n \n \n
\n @if (showEmptyState$ | async) {\n \n \n \n \n \n {{ 'LIST_OBJECTS_TABLE.EMPTY_TABLE.HEADER' | translateByObjectType: objectType }}\n \n

{{ 'LIST_OBJECTS_TABLE.EMPTY_TABLE.HINT' | translateByObjectType: objectType }}

\n
\n }\n \n
\n\n @if (showCreateButton) {\n
\n \n
\n }\n \n\n \n
\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, inject, Injector } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { GalaxyFilterChipInjectionToken } from '@vendasta/galaxy/filter/chips';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { Row } from '@vendasta/galaxy/table';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { filter, map, mergeMap, switchMap, take, tap } from 'rxjs/operators';\nimport {\n Association,\n CrmAssociationService,\n SelectedObjects,\n CrmObjectDisplayService,\n CrmObjectService,\n CrmFieldService,\n StandardIds,\n combineAssociationsWithChanges,\n} from '../../../shared-services';\nimport { TranslationModule } from '../../../i18n';\nimport { AssociationCardComponent } from '../association-card';\nimport { AssociationsDialogData } from '../select-associations-modal/select-associations-modal.component';\nimport {\n ListObjectTypeDialogData,\n SelectObjectTypeModalComponent,\n} from '../../select-object-type-modal/select-object-type-modal.component';\nimport { MatCardModule } from '@angular/material/card';\nimport { CrmObjectInterface } from '@vendasta/crm/lib/_internal/interfaces/crm-objects.interface';\nimport {\n CardData,\n COMPANY_PROFILE_CARD_DATA_TOKEN,\n CrmDependencies,\n CrmInjectionToken,\n PageAnalyticsInjectionToken,\n pageAnalyticsInjectionTokenGenerator,\n tableFiltersInjectionTokenGenerator,\n} from '../../../tokens-and-interfaces';\nimport { PAGE_ROUTES, SNACKBAR_DURATION } from '../../../constants';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\n\ninterface ChildCompanyAssociationsCardData extends CardData {\n associationId: string;\n parentCompanyName: string;\n}\n\ninterface ParentCompanyAssociationsCardData extends CardData {\n associationId: string;\n childCompanyName: string;\n}\n\n@Component({\n selector: 'crm-parent-child-company-associations-card',\n imports: [\n CommonModule,\n TranslationModule,\n MatExpansionModule,\n AssociationCardComponent,\n GalaxyAlertModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatMenuModule,\n MatDialogModule,\n MatCardModule,\n ],\n providers: [\n {\n provide: PageAnalyticsInjectionToken,\n useFactory: pageAnalyticsInjectionTokenGenerator('Company'),\n },\n ],\n templateUrl: './parent-child-company-associations-card.component.html',\n styleUrls: [\n './parent-child-company-associations-card.component.scss',\n '../../../shared-styles/association-panel-shared.scss',\n ],\n})\nexport class ParentChildCompanyAssociationsCardComponent {\n data = inject(COMPANY_PROFILE_CARD_DATA_TOKEN);\n childCompanies$: Observable;\n parentCompany$: Observable;\n\n getAssociations$: Observable;\n loadAssociations$$ = new BehaviorSubject([]);\n preSelectedRows$$ = new BehaviorSubject([]);\n fullName$: Observable;\n modalData$: Observable;\n canOpenModal = false;\n removedAssociationIds$$ = new BehaviorSubject([]);\n removedParentAssociationIds$$ = new BehaviorSubject([]);\n setParentAssociation$$ = new BehaviorSubject(undefined);\n\n newCompany$$ = new BehaviorSubject('');\n changedAssociations$$ = new BehaviorSubject([]);\n private readonly confirmationModalService = inject(OpenConfirmationModalService);\n\n private readonly injector = inject(Injector);\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly objectService: CrmObjectService,\n private readonly fieldService: CrmFieldService,\n private readonly associationService: CrmAssociationService,\n private readonly dialog: MatDialog,\n private translateService: TranslateService,\n private readonly objectDisplayService: CrmObjectDisplayService,\n private crmAssociationService: CrmAssociationService,\n private readonly snackService: SnackbarService,\n ) {\n this.associationService.setCrmObjectIdToAssociate(this.data?.company_id || '');\n this.fullName$ = objectService.getMultiObject('Company', [this.data.company_id || '']).pipe(\n map((resp) => {\n const object = resp?.crmObjects?.[0];\n if (resp?.crmObjects?.length === 0 || !object) {\n return '';\n }\n return this.objectDisplayService.getObjectDisplayName('Company', object || {});\n }),\n );\n\n this.getAssociations$ = this.associationService.getChildCompanyAssociationsForCompany$(this.data.company_id || '');\n\n const latestCompanies$ = this.loadAssociations$$.pipe(\n switchMap(() =>\n combineLatest([\n this.getAssociations$,\n this.config.routePrefix$,\n this.loadAssociations$$,\n this.changedAssociations$$,\n this.fullName$,\n ]),\n ),\n tap(() => {\n this.removedAssociationIds$$.next([]);\n }),\n map(([associations, routePrefix, copyCrmObject, changed, fullName]) => {\n const associatedObjects = copyCrmObject.map((association) => {\n return {\n associationId: association.associationId,\n associationType: 'Company-Company',\n tags: [],\n associatedObject: association,\n } as Association;\n });\n\n const combinedData = [...associations, ...associatedObjects];\n const existingAssociationsCombined = [...associatedObjects];\n this.preSelectedRows$$.next(existingAssociationsCombined);\n const dataWithChanges = combineAssociationsWithChanges(combinedData, changed);\n\n return dataWithChanges\n .filter((association, index, array) => {\n return (\n !!association.associatedObject &&\n array.findIndex((a) => a.associationId === association.associationId) === index\n );\n })\n .map((association) => {\n if (!association.associatedObject) {\n return {} as ChildCompanyAssociationsCardData;\n }\n\n const data = {\n associationId: association.associationId,\n parentCompanyName: fullName,\n businessName: this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.CompanyName,\n )?.stringValue,\n businessWebsite: this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.CompanyWebsite,\n )?.stringValue,\n type: 'business',\n tags: (association.tags || []).filter((tag) => tag !== 'Parent'),\n id: association.associatedObject.crmObjectId || '',\n profileButtonUrl:\n `${routePrefix}/${PAGE_ROUTES.COMPANY.ROOT}/${PAGE_ROUTES.COMPANY.SUBROUTES.PROFILE}`.replace(\n ':crmObjectId',\n association.associatedObject.crmObjectId || '',\n ),\n } as ChildCompanyAssociationsCardData;\n return data;\n });\n }),\n );\n\n this.childCompanies$ = combineLatest([latestCompanies$, this.removedAssociationIds$$.asObservable()]).pipe(\n map(([companies, removed]) => {\n return companies.filter((company) => {\n return !removed.includes(company.associationId);\n });\n }),\n );\n\n const latestParentCompany$ = this.associationService.getParentCompanyAssociationsForCompany$(\n this.data.company_id || '',\n );\n this.parentCompany$ = combineLatest([\n latestParentCompany$,\n this.removedParentAssociationIds$$.asObservable(),\n this.config.routePrefix$,\n this.fullName$,\n this.setParentAssociation$$.asObservable(),\n ]).pipe(\n map(([parentCompany, removed, routePrefix, fullName, setParentAssociation]) => {\n if (setParentAssociation) {\n parentCompany.splice(0, 0, {\n associationId: setParentAssociation.associationId,\n associationType: 'Company-Company',\n tags: [],\n associatedObject: setParentAssociation,\n } as Association);\n }\n return parentCompany\n .filter((company) => {\n return !removed.includes(company.associationId);\n })\n .map((company) => {\n return {\n associationId: company.associationId,\n childCompanyName: fullName,\n businessName: this.fieldService.getFieldValueFromCrmObject(\n company.associatedObject,\n StandardIds.CompanyName,\n )?.stringValue,\n businessWebsite: this.fieldService.getFieldValueFromCrmObject(\n company.associatedObject,\n StandardIds.CompanyWebsite,\n )?.stringValue,\n type: 'business',\n tags: (company.tags || []).filter((tag) => tag !== 'Parent'),\n id: company.associatedObject.crmObjectId || '',\n profileButtonUrl:\n `${routePrefix}/${PAGE_ROUTES.COMPANY.ROOT}/${PAGE_ROUTES.COMPANY.SUBROUTES.PROFILE}`.replace(\n ':crmObjectId',\n company.associatedObject.crmObjectId || '',\n ),\n } as ParentCompanyAssociationsCardData;\n })[0];\n }),\n );\n\n this.modalData$ = combineLatest([this.fullName$, this.preSelectedRows$$, this.newCompany$$]).pipe(\n map(([objectIdAndName, associations, newContact]) => ({\n modalTitle: objectIdAndName,\n primarySelect: '',\n description: '',\n selectedRows: [],\n selectedCompanyNames: [],\n fromId: '',\n copyCrmObjects: [],\n associationType: '',\n associations: associations,\n newSelection: newContact,\n })),\n );\n }\n\n openAddChildModal(): void {\n if (this.canOpenModal) {\n return;\n }\n this.canOpenModal = true;\n this.modalData$\n .pipe(\n take(1),\n tap(() => {\n this.canOpenModal = false;\n }),\n switchMap((data) => {\n const dialogRef = this.dialog.open(SelectObjectTypeModalComponent, {\n data: {\n baseColumnIds: [],\n objectType: 'Company',\n modalTitle: this.translateService.instant(\n 'ASSOCIATIONS.PARENT_CHILD_COMPANIES.ADD_CHILD_COMPANY_MODAL.TITLE',\n {\n companyName: data.modalTitle,\n },\n ),\n associations: data.associations,\n associationType: 'Company-Company',\n newSelection: data.newSelection,\n hideCreateButton: true,\n } as ListObjectTypeDialogData,\n injector: Injector.create({\n providers: [\n {\n provide: PageAnalyticsInjectionToken,\n useFactory: pageAnalyticsInjectionTokenGenerator('Company'),\n },\n {\n provide: GalaxyFilterChipInjectionToken,\n useFactory: tableFiltersInjectionTokenGenerator('Company'),\n },\n ],\n parent: this.injector,\n }),\n });\n return dialogRef.afterClosed();\n }),\n map((modalResponse) => {\n let selectedRows = modalResponse?.selectedRows || [];\n if (modalResponse?.clickedCreate === true) {\n selectedRows = new Array();\n }\n return selectedRows;\n }),\n filter((selectedRows) => !!selectedRows),\n switchMap((selectedRows: Row[]) => {\n const selectedIDs = selectedRows.map((row) => {\n return row.id;\n });\n return this.objectService.getMultiObject('Company', selectedIDs).pipe(\n map((resp) => {\n const copyCrmObjects: CrmObjectInterface[] = resp.crmObjects?.map((object) => object) || [];\n return {\n crmObjects: copyCrmObjects,\n objects: resp.crmObjects?.map((object) => {\n return {\n id: object?.crmObjectId,\n name: this.objectDisplayService.getObjectDisplayName('Company', object || {}),\n };\n }),\n } as SelectedObjects;\n }),\n );\n }),\n tap((selectedObjects: SelectedObjects) => {\n const updatedObjects = {\n crmObjects: selectedObjects.crmObjects || [],\n objects: selectedObjects.objects || [],\n };\n this.associationService.setCopyCrmObjects(updatedObjects);\n }),\n mergeMap((): Observable => {\n return this.crmAssociationService.createAssociation$('Company-Company', ['Parent'], false);\n }),\n )\n\n .subscribe((copyCrmObjects) => {\n if (copyCrmObjects.respCount.error) {\n this.snackService.openSuccessSnack('ASSOCIATIONS.SUCCESS.PARTIAL_SUCCESS', {\n duration: SNACKBAR_DURATION,\n interpolateTranslateParams: {\n createdCount: copyCrmObjects.respCount.createdCount,\n totalCount: copyCrmObjects.respCount.totalCount,\n },\n });\n } else {\n this.snackService.openSuccessSnack('ASSOCIATIONS.SUCCESS.GENERIC', {\n duration: SNACKBAR_DURATION,\n });\n }\n this.loadAssociations$$.next(copyCrmObjects.copyCrmObjectsUpdated);\n });\n }\n\n openSetParentModal(): void {\n if (this.canOpenModal) {\n return;\n }\n this.canOpenModal = true;\n this.modalData$\n .pipe(\n take(1),\n tap(() => {\n this.canOpenModal = false;\n }),\n switchMap((data) => {\n const dialogRef = this.dialog.open(SelectObjectTypeModalComponent, {\n data: {\n baseColumnIds: [],\n objectType: 'Company',\n modalTitle: this.translateService.instant(\n 'ASSOCIATIONS.PARENT_CHILD_COMPANIES.SET_PARENT_COMPANY_MODAL.TITLE',\n {\n companyName: data.modalTitle,\n },\n ),\n associations: data.associations,\n associationType: 'Company-Company',\n newSelection: data.newSelection,\n hideCreateButton: true,\n singleSelection: true,\n } as ListObjectTypeDialogData,\n injector: Injector.create({\n providers: [\n {\n provide: PageAnalyticsInjectionToken,\n useFactory: pageAnalyticsInjectionTokenGenerator('Company'),\n },\n {\n provide: GalaxyFilterChipInjectionToken,\n useFactory: tableFiltersInjectionTokenGenerator('Company'),\n },\n ],\n parent: this.injector,\n }),\n });\n return dialogRef.afterClosed();\n }),\n map((modalResponse) => {\n let selectedRows = modalResponse?.selectedRows || [];\n if (modalResponse?.clickedCreate === true) {\n selectedRows = new Array();\n }\n return selectedRows;\n }),\n filter((selectedRows) => !!selectedRows),\n switchMap((selectedRows: Row[]) => {\n const selectedIDs = selectedRows.map((row) => {\n return row.id;\n });\n return this.objectService.getMultiObject('Company', selectedIDs).pipe(\n map((resp) => {\n const copyCrmObjects: CrmObjectInterface[] = resp.crmObjects?.map((object) => object) || [];\n return {\n crmObjects: copyCrmObjects,\n objects: resp.crmObjects?.map((object) => {\n return {\n id: object?.crmObjectId,\n name: this.objectDisplayService.getObjectDisplayName('Company', object || {}),\n };\n }),\n } as SelectedObjects;\n }),\n );\n }),\n tap((selectedObjects: SelectedObjects) => {\n const updatedObjects = {\n crmObjects: selectedObjects.crmObjects || [],\n objects: selectedObjects.objects || [],\n };\n this.associationService.setCopyCrmObjects(updatedObjects);\n }),\n mergeMap((): Observable => {\n return this.crmAssociationService.createAssociation$('Company-Company', ['Parent'], false, 'to');\n }),\n )\n\n .subscribe((copyCrmObjects) => {\n if (copyCrmObjects.respCount.error) {\n this.snackService.openSuccessSnack('ASSOCIATIONS.SUCCESS.PARTIAL_SUCCESS', {\n duration: SNACKBAR_DURATION,\n interpolateTranslateParams: {\n createdCount: copyCrmObjects.respCount.createdCount,\n totalCount: copyCrmObjects.respCount.totalCount,\n },\n });\n } else {\n this.snackService.openSuccessSnack('ASSOCIATIONS.SUCCESS.GENERIC', {\n duration: SNACKBAR_DURATION,\n });\n }\n this.setParentAssociation$$.next(copyCrmObjects.copyCrmObjectsUpdated[0]);\n });\n }\n\n removeChildAssociation(cardData: ChildCompanyAssociationsCardData): void {\n this.confirmationModalService\n .openModal({\n type: 'warn',\n title: this.translateService.instant('ASSOCIATIONS.REMOVE_DIALOG.TITLE'),\n message: this.translateService.instant('ASSOCIATIONS.REMOVE_DIALOG.MESSAGE', {\n fromName: cardData.parentCompanyName,\n removeName: cardData.businessName,\n }),\n confirmButtonText: this.translateService.instant('ASSOCIATIONS.REMOVE_DIALOG.CONFIRM'),\n cancelButtonText: this.translateService.instant('ACTIONS.CANCEL'),\n })\n .pipe(\n take(1),\n switchMap((success) => {\n if (success) {\n return this.associationService.removeAssociation(cardData.associationId);\n }\n return of(null);\n }),\n tap((success) => {\n if (success) {\n this.removedAssociationIds$$.next([...this.removedAssociationIds$$.value, cardData.associationId]);\n this.preSelectedRows$$.next(\n this.preSelectedRows$$.getValue().filter((row) => row.associationId !== cardData.associationId),\n );\n }\n }),\n )\n .subscribe({\n next: (success) => {\n if (success) {\n this.snackService.openSuccessSnack('ASSOCIATIONS.REMOVE_DIALOG.SUCCESS', {\n duration: SNACKBAR_DURATION,\n });\n }\n },\n error: () => {\n this.snackService.openErrorSnack('ASSOCIATIONS.REMOVE_DIALOG.ERROR', {\n duration: SNACKBAR_DURATION,\n });\n },\n });\n }\n\n removeParentAssociation(cardData: ParentCompanyAssociationsCardData): void {\n this.confirmationModalService\n .openModal({\n type: 'warn',\n title: this.translateService.instant('ASSOCIATIONS.REMOVE_DIALOG.TITLE'),\n message: this.translateService.instant('ASSOCIATIONS.REMOVE_DIALOG.MESSAGE', {\n fromName: cardData.childCompanyName,\n removeName: cardData.businessName,\n }),\n confirmButtonText: this.translateService.instant('ASSOCIATIONS.REMOVE_DIALOG.CONFIRM'),\n cancelButtonText: this.translateService.instant('ACTIONS.CANCEL'),\n })\n .pipe(\n take(1),\n switchMap((success) => {\n if (success) {\n return this.associationService.removeAssociation(cardData.associationId);\n }\n return of(null);\n }),\n tap((success) => {\n if (success) {\n this.removedParentAssociationIds$$.next([\n ...this.removedParentAssociationIds$$.value,\n cardData.associationId,\n ]);\n this.setParentAssociation$$.next(undefined);\n }\n }),\n )\n .subscribe({\n next: (success) => {\n if (success) {\n this.snackService.openSuccessSnack('ASSOCIATIONS.REMOVE_DIALOG.SUCCESS', {\n duration: SNACKBAR_DURATION,\n });\n }\n },\n error: () => {\n this.snackService.openErrorSnack('ASSOCIATIONS.REMOVE_DIALOG.ERROR', {\n duration: SNACKBAR_DURATION,\n });\n },\n });\n }\n}\n","\n \n {{ 'ASSOCIATIONS.PARENT_CHILD_COMPANIES.TITLE' | translate }}\n \n
{{ 'ASSOCIATIONS.PARENT_CHILD_COMPANIES.PARENT_SECTION_TITLE' | translate }}
\n \n \n \n \n \n \n
{{ 'ASSOCIATIONS.PARENT_CHILD_COMPANIES.CHILD_SECTION_TITLE' | translate }}
\n \n \n \n \n
\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n UntypedFormControl,\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { Subject, take, takeUntil } from 'rxjs';\nimport {\n Association,\n CrmAssociationService,\n} from '../../../shared-services/crm-services/crm-object-service/crm-association.service';\nimport { PRIMARY_TAG } from '../../../constants';\nimport { TranslationModule } from '../../../i18n/translation-module';\nimport { EditAssociationTagsComponent } from '../edit-association-tags/edit-association-tags.component';\nimport { CompanyTableCustomizationService } from '../../../shared-services';\n\nexport interface SelectedRows {\n id: string;\n name: string;\n}\n\nexport interface AssociationsDialogData {\n newSelection: string;\n modalTitle: string;\n primarySelect: string;\n description: string;\n selectedRows: SelectedRows[];\n associationType: string;\n associations: Association[];\n}\n\n@Component({\n selector: 'crm-select-associations-modal',\n templateUrl: './select-associations-modal.component.html',\n styleUrls: ['./select-associations-modal.component.scss'],\n imports: [\n CommonModule,\n TranslationModule,\n MatDialogModule,\n MatButtonModule,\n GalaxyFormFieldModule,\n MatRadioModule,\n ReactiveFormsModule,\n EditAssociationTagsComponent,\n ],\n providers: [{ provide: CompanyTableCustomizationService }],\n})\nexport class SelectAssociationsModalComponent implements OnInit, OnDestroy {\n private destroy$ = new Subject();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: AssociationsDialogData,\n private dialogRef: MatDialogRef,\n private dialog: MatDialog,\n private readonly crmAssociationService: CrmAssociationService,\n private fb: FormBuilder,\n ) {}\n\n ngOnInit(): void {\n this.data.selectedRows.forEach((row, index) => {\n const association = this.fb.group({\n id: new FormControl(row.id || ''),\n tags: new FormControl([]) as UntypedFormControl,\n name: new FormControl(row.name || ''),\n isPrimary: new FormControl(index === 0),\n });\n\n this.associationFormArray.push(association);\n\n association\n .get('tags')\n ?.valueChanges.pipe(takeUntil(this.destroy$))\n .subscribe((tags: string[]) => {\n if (tags?.includes(PRIMARY_TAG)) {\n this.setPrimaryAssociation(index);\n const updatedTags = tags.filter((tag: string) => tag !== PRIMARY_TAG);\n association.get('tags')?.setValue(updatedTags, { emitEvent: false });\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n associationsFormGroup: FormGroup = this.fb.group({\n associations: this.fb.array([]),\n });\n\n get associationFormArray(): FormArray {\n return this.associationsFormGroup.get('associations') as FormArray;\n }\n\n private get associationTags(): Map {\n const tagsMap = new Map();\n this.associationFormArray.controls.forEach((control) => {\n const association = control as FormGroup;\n const tagsArray = association?.get('tags')?.value;\n if (tagsArray && tagsArray.length > 0) {\n tagsMap.set(association.get('id')?.value, tagsArray);\n }\n });\n return tagsMap;\n }\n\n private get primaryAssociation(): string {\n return this.associationFormArray.controls.find((control) => control.get('isPrimary')?.value)?.get('id')?.value;\n }\n\n cancel(): void {\n this.dialogRef?.close([]);\n }\n\n save(): void {\n this.crmAssociationService\n .createContactCompanyAssociation$(this.data.associationType, this.primaryAssociation, this.associationTags)\n .pipe(take(1))\n .subscribe((copyCrmObjects) => {\n return this.dialogRef.close(copyCrmObjects);\n });\n }\n\n setPrimaryAssociation(selectedIndex: number): void {\n this.associationFormArray.controls.forEach((control: AbstractControl, index: number) => {\n const association = control as FormGroup;\n association?.get('isPrimary')?.setValue(index === selectedIndex);\n });\n }\n\n tagsChanged(selectedIndex: number, tags: string[]): void {\n this.associationFormArray.controls[selectedIndex].get('tags')?.setValue(tags);\n }\n}\n","

{{ data.modalTitle }}

\n\n \n \n \n {{ association?.get('name')?.value }}\n
\n \n {{ data.primarySelect }}\n {{ data.description }}\n \n \n
\n
\n
\n
\n
\n\n \n \n\n","import { Component, Inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { EditAssociationTagsComponent } from '../../edit-association-tags/edit-association-tags.component';\nimport { PRIMARY_TAG, RESERVED_TAGS } from '../../../../constants';\nimport { AssociationInterface } from '@vendasta/crm';\n\nexport interface EditAssociationTagsData {\n associationName: string;\n association: AssociationInterface;\n}\nexport interface EditAssociationTagsResponse {\n updatedTags: string[];\n proceed: boolean;\n}\n\n@Component({\n selector: 'crm-edit-association-tags-dialog',\n imports: [CommonModule, TranslateModule, MatDialogModule, MatButtonModule, EditAssociationTagsComponent],\n templateUrl: './edit-association-tags-dialog.component.html',\n styleUrls: ['./edit-association-tags-dialog.component.scss'],\n})\nexport class EditAssociationTagsDialogComponent {\n private readonly initialTags = (this.data.association?.tags || []).map((tag) => tag?.tagValue ?? '');\n protected readonly displayTags = this.initialTags.filter(\n (tag) => tag !== '' && !RESERVED_TAGS.includes(tag.toLowerCase()),\n );\n\n private readonly isPrimary = this.initialTags.includes(PRIMARY_TAG);\n protected readonly associationType = this.data.association?.associationType ?? '';\n protected tagsToSave: string[] = [];\n\n constructor(\n private readonly dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) protected readonly data: EditAssociationTagsData,\n ) {}\n\n save(): void {\n if (this.displayTags === this.tagsToSave) {\n this.dialogRef?.close({ proceed: false, updatedTags: [] });\n } else {\n const tagsToSave = this.isPrimary ? [PRIMARY_TAG, ...this.tagsToSave] : this.tagsToSave;\n this.dialogRef.close({ proceed: true, updatedTags: tagsToSave });\n }\n }\n\n cancel(): void {\n this.dialogRef?.close({ proceed: false, updatedTags: [] });\n }\n\n tagsChanged(tags: string[]): void {\n this.tagsToSave = tags || [];\n }\n}\n","

\n {{ 'ASSOCIATIONS.EDIT_ASSOCIATION_DIALOG.TITLE' | translate }}\n

\n\n

{{ data.associationName }}

\n \n
\n\n \n \n\n","import { Component, Inject, signal } from '@angular/core';\nimport {\n MAT_DIALOG_DATA,\n MatDialogActions,\n MatDialogContent,\n MatDialogRef,\n MatDialogTitle,\n} from '@angular/material/dialog';\nimport { CrmObjectInterface } from '@vendasta/crm';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatButton } from '@angular/material/button';\nimport { AssociationType } from '../../../constants';\nimport { EditAssociationTagsComponent } from '../edit-association-tags/edit-association-tags.component';\nimport { TranslateByObjectTypePipe, TranslationModule } from '../../../i18n';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { FormsModule } from '@angular/forms';\nimport { ObjectType } from '../../../tokens-and-interfaces';\nimport { CrmObjectDisplayService } from '../../../shared-services';\n\nexport interface SelectPrimaryAssociationDialogData {\n selectedObjects: CrmObjectInterface[];\n associationType: AssociationType;\n objectType: ObjectType;\n}\n\nexport interface SelectPrimaryAssociationDialogResult {\n continue: boolean;\n tagMap: Map;\n}\n\n@Component({\n selector: 'crm-select-primary-association-modal',\n templateUrl: './select-primary-association-modal.component.html',\n styleUrls: ['./select-primary-association-modal.component.scss'],\n imports: [\n MatDialogTitle,\n MatDialogContent,\n GalaxyFormFieldModule,\n EditAssociationTagsComponent,\n MatDialogActions,\n TranslationModule,\n MatButton,\n MatRadioModule,\n FormsModule,\n TranslateByObjectTypePipe,\n ],\n})\nexport class SelectPrimaryAssociationModalComponent {\n protected readonly tagMap = signal(new Map());\n protected readonly associations = this.data.selectedObjects;\n protected readonly objectType = this.data.objectType;\n protected readonly primaryAssociation = signal(this?.associations[0]?.crmObjectId ?? '');\n protected readonly displayNamesByObjectId = new Map();\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: SelectPrimaryAssociationDialogData,\n private readonly objectDisplayService: CrmObjectDisplayService,\n ) {\n this.data.selectedObjects.forEach((object) => {\n this.displayNamesByObjectId.set(\n object.crmObjectId ?? '',\n this.objectDisplayService.getObjectDisplayName(this.objectType, object),\n );\n });\n }\n\n tagsChanged(objectId: string, tags: string[]): void {\n this.tagMap.update((prev) => {\n return prev.set(objectId, tags);\n });\n }\n\n setPrimaryAssociation(objectId: string): void {\n this.primaryAssociation.set(objectId);\n }\n\n cancel(): void {\n this.dialogRef.close({ continue: false, tagMap: this.tagMap() } as SelectPrimaryAssociationDialogResult);\n }\n\n save(): void {\n const primaryId = this.primaryAssociation();\n const tagMap = this.tagMap();\n const prevTags = tagMap.get(primaryId) ?? [];\n tagMap.set(primaryId, ['Primary', ...prevTags]);\n this.dialogRef.close({ continue: true, tagMap: tagMap } as SelectPrimaryAssociationDialogResult);\n }\n}\n","

{{ 'ASSOCIATIONS.MODAL.TITLE_ASSOCIATION' | translate }}

\n\n \n \n @for (association of associations; track association.crmObjectId) {\n @if (association.crmObjectId) {\n {{\n displayNamesByObjectId.get(association.crmObjectId ?? '')\n }}\n
\n \n {{ 'ASSOCIATION_PANEL.SET_PRIMARY_MODAL.RADIO_BUTTON_TEXT' | translateByObjectType: objectType }}\n \n {{ 'ASSOCIATION_PANEL.SET_PRIMARY_MODAL.RADIO_BUTTON_DESCRIPTION' | translateByObjectType: objectType }}\n \n \n \n
\n }\n }\n
\n
\n
\n\n \n \n\n","import { AsyncValidatorFn, ValidatorFn } from '@angular/forms';\n\nexport type ValidationSeverity = 'INVALID' | 'WARNING';\n\nexport interface ValidationError {\n message: string;\n severity: ValidationSeverity;\n validationFn: ValidatorFn | null;\n asyncValidationFn: AsyncValidatorFn | null;\n}\n\nexport class FieldValidation {\n errorCodeMap: { [key: string]: ValidationError } = {};\n\n addValidationError(codeMapEntries: { [key: string]: ValidationError }): void {\n this.errorCodeMap = { ...this.errorCodeMap, ...codeMapEntries };\n }\n\n getAsyncValidators(): AsyncValidatorFn[] {\n const asyncValidators = [];\n for (const errorValue of Object.values(this.errorCodeMap)) {\n if (errorValue.asyncValidationFn && errorValue.severity === 'INVALID') {\n asyncValidators.push(errorValue.asyncValidationFn);\n }\n }\n return asyncValidators;\n }\n\n getValidators(): ValidatorFn[] {\n const validators = [];\n for (const errorValue of Object.values(this.errorCodeMap)) {\n if (errorValue.validationFn && errorValue.severity === 'INVALID') {\n validators.push(errorValue.validationFn);\n }\n }\n return validators;\n }\n\n getAsyncWarningValidators(): AsyncValidatorFn[] {\n const asyncValidators = [];\n for (const errorValue of Object.values(this.errorCodeMap)) {\n if (errorValue.asyncValidationFn && errorValue.severity === 'WARNING') {\n asyncValidators.push(errorValue.asyncValidationFn);\n }\n }\n return asyncValidators;\n }\n\n getWarningValidators(): ValidatorFn[] {\n const validators = [];\n for (const errorValue of Object.values(this.errorCodeMap)) {\n if (errorValue.validationFn && errorValue.severity === 'WARNING') {\n validators.push(errorValue.validationFn);\n }\n }\n return validators;\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { of, take } from 'rxjs';\nimport { CrmObjectInjectionToken, FieldValueInterface, ObjectType } from '../../tokens-and-interfaces';\nimport { SNACKBAR_DURATION } from '../../constants';\nimport { CRMTrackingService } from '../../shared-services/page-analytics.service';\nimport { TranslateForCrmObjectService } from '../../i18n/translate-for-crm-object/translate-for-crm-object.service';\nimport { CrmFormService } from '../../shared-services/crm-services/crm-form.service';\nimport { CrmObjectManagementTableChangesService } from '../../shared-services';\nimport { switchMap, withLatestFrom } from 'rxjs/operators';\n\n@Injectable()\nexport class InlineEditService {\n private readonly crmFormService = inject(CrmFormService);\n private readonly snackService = inject(SnackbarService);\n private readonly trackingService = inject(CRMTrackingService);\n private readonly translateForCrmObjectService = inject(TranslateForCrmObjectService);\n private readonly crmObjectManagementTableChangesService = inject(CrmObjectManagementTableChangesService);\n private readonly crmObjectDependencies = inject(CrmObjectInjectionToken, { optional: true });\n\n private crmObjectId = '';\n setObjectId(objectId: string): void {\n this.crmObjectId = objectId;\n }\n private isInlineEdit = signal(false);\n isInlineEdit$ = toObservable(this.isInlineEdit);\n setInlineEdit(inlineEdit: boolean): void {\n this.isInlineEdit.set(inlineEdit);\n }\n private objectSubtype$ = this.crmObjectDependencies?.objectSubtype$ ?? of('');\n\n saveInlineEdit(objectType: ObjectType, values: FieldValueInterface[]): void {\n if (!this.isInlineEdit()) {\n return;\n }\n\n this.objectSubtype$\n .pipe(\n switchMap((objectSubtype) => {\n return this.crmFormService\n .validateAndUpdateCrmObjectFields$(objectType, this.crmObjectId, values, objectSubtype)\n .pipe(take(1));\n }),\n withLatestFrom(\n this.translateForCrmObjectService.getTranslationForCrmObject(objectType, 'EDIT_PAGE.SAVE.SUCCESS'),\n this.objectSubtype$,\n ),\n )\n .subscribe({\n next: ([updatedValue, success, objectSubtype]) => {\n if (updatedValue === null) {\n return;\n }\n this.crmObjectManagementTableChangesService.addUpdatedCrmObject(objectType, updatedValue, objectSubtype);\n this.trackingService.trackEvent(objectType, 'edited-crm-object');\n this.snackService.openSuccessSnack(success, {\n duration: SNACKBAR_DURATION,\n });\n },\n error: (error) => {\n this.trackingService.trackEvent(objectType, 'failed-crm-edit');\n this.errorSnackbar(error, 'ERRORS.GENERIC_EDIT_MESSAGE');\n },\n });\n }\n\n private errorSnackbar(error: any | null, defaultMessage: string) {\n let message: string | null = null;\n if (error && error.message) {\n message = error.message;\n }\n this.snackService.openErrorSnack(message ?? defaultMessage, {\n duration: SNACKBAR_DURATION,\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { RenderableFieldInterface } from '../../tokens-and-interfaces';\n\n@Component({\n selector: 'crm-renderer-selector',\n template: '',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RendererSelectorComponent implements OnInit, OnChanges, OnDestroy {\n @Input() handler: RenderableFieldInterface | null = null;\n\n constructor(private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n this.handler?.render(this.viewContainerRef);\n }\n\n ngOnChanges(): void {\n this.handler?.render(this.viewContainerRef);\n }\n\n ngOnDestroy(): void {\n this.handler = null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AsyncValidatorFn, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { defaultIfEmpty, forkJoin, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class FieldWarningService {\n validateWarning(\n control: any,\n asyncValidatorFns: AsyncValidatorFn[],\n validatorFns: ValidatorFn[],\n ): Observable {\n const results$ = [];\n for (const validatorFn of asyncValidatorFns) {\n results$.push(validatorFn(control));\n }\n return forkJoin(results$).pipe(\n defaultIfEmpty(null),\n map((results) => {\n let validationErrors: ValidationErrors = {};\n if (!results) {\n return null;\n }\n // adds asynchronous validators\n for (const err of results) {\n validationErrors = { ...validationErrors, ...err };\n }\n // adds synchronous validators\n for (const validatorFn of validatorFns) {\n const result = validatorFn(control);\n if (result) {\n validationErrors = { ...validationErrors, ...result };\n }\n }\n return validationErrors;\n }),\n );\n }\n}\n","import { UntypedFormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ChangeDetectionStrategy, Component, ComponentRef, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { FieldValidation } from '../field-validation';\nimport { FieldWarningService } from './model-driven-form-error/field-warning.service';\nimport { InlineEditService } from '../inline-edit.service';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FieldValueInterface, ObjectType, RenderableFieldInterface } from '../../../tokens-and-interfaces';\n\nexport class BooleanFieldHandler implements RenderableFieldInterface {\n private component: ComponentRef | null = null;\n formControl: UntypedFormControl;\n\n constructor(\n public objectType: ObjectType,\n public fieldId: string,\n public name: string,\n public label: string,\n public value: string,\n public description: string,\n public readOnly = false,\n public validation: FieldValidation = new FieldValidation(),\n ) {\n this.formControl = new UntypedFormControl(value);\n }\n\n setValidation(validation: FieldValidation): void {\n this.validation = validation;\n this.formControl.setValidators(validation.getValidators());\n this.formControl.setAsyncValidators(validation.getAsyncValidators());\n }\n\n fieldValue(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n booleanValue: this.formControl.value,\n };\n }\n\n hasModification(): boolean {\n return this.formControl?.dirty;\n }\n\n render(viewContainerRef: ViewContainerRef): void {\n viewContainerRef.clear();\n const component = viewContainerRef.createComponent(BooleanRendererComponent);\n component.instance.fieldId = this.fieldId;\n component.instance.objectType = this.objectType;\n component.instance.control = this.formControl;\n component.instance.label = this.label;\n component.instance.description = this.description;\n component.instance.readOnly = this.readOnly;\n this.component = component;\n }\n}\n\n@Component({\n template: `\n
\n
\n {{ label | translate }}\n
\n
\n \n \n {{ control.value }}\n \n
\n
\n \n \n {{ label | translate }}\n \n {{ 'MODEL_DRIVEN_FORM.BOOLEAN.TRUE' | translate }}\n {{ 'MODEL_DRIVEN_FORM.BOOLEAN.FALSE' | translate }}\n \n \n \n `,\n imports: [CommonModule, MatInputModule, ReactiveFormsModule, TranslateModule, GalaxyFormFieldModule, MatSelectModule],\n providers: [FieldWarningService],\n styleUrls: ['./renderers.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BooleanRendererComponent {\n fieldId!: string;\n objectType!: ObjectType;\n control!: UntypedFormControl;\n label!: string;\n description!: string;\n readOnly!: boolean;\n\n constructor(private readonly inlineEditService: InlineEditService) {}\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n booleanValue: this.control.value,\n },\n ]);\n }\n}\n","/*\nChrome is really aggressive about autofilling form fields,\neven when you have autocomplete=\"off\" set.\nThis is because historically, many forms have been built with a default of\nautocomplete=\"off\", which would disable it on forms that actually need it.\nThey view CRM systems as in the minority, and not worth the trade-off\nof no longer helping with forms that have bad defaults.\n\nThe workaround (for now) is to have autocomplete value that doesn't match anything.\n\nFrom:\n https://bugs.chromium.org/p/chromium/issues/detail?id=468153#c164\nLinked from:\n https://github.com/alphagov/accessible-autocomplete/issues/325\n*/\n\nexport function stopChromeAutofill(): string {\n return Math.random().toString(36).substring(2);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, of, switchMap, take } from 'rxjs';\nimport { debounceTime, map, shareReplay, tap } from 'rxjs/operators';\nimport { ValidationError } from './field-validation';\nimport { ObjectType, RenderableFieldInterface } from '../../tokens-and-interfaces';\nimport { ValidateErrorsWithFieldSchemas, CrmFormService } from '../../shared-services';\n\nconst uniquenessInvalidValidatorFn =\n (validationChanges$: Observable, fieldId: string) => () => {\n return validationChanges$.pipe(\n take(1),\n map((validationErrors) => {\n const uniquenessErrorForField = validationErrors.errors.find(\n (e) => e.ruleId === 'uniqueness_enforced' && e.details?.uniquenessCheck?.fieldId === fieldId,\n );\n if (!uniquenessErrorForField) {\n return null;\n }\n return {\n uniqueness_enforced: true,\n };\n }),\n );\n };\n\nconst uniquenessWarningValidatorFn =\n (validationChanges$: Observable, fieldId: string) => () => {\n return validationChanges$.pipe(\n take(1),\n map((validationErrors) => {\n const uniquenessErrorForField = validationErrors.errors.find(\n (e) => e.ruleId === 'uniqueness_warning' && e.details?.uniquenessCheck?.fieldId === fieldId,\n );\n if (!uniquenessErrorForField) {\n return null;\n }\n const existingObjectIds = uniquenessErrorForField.details?.uniquenessCheck?.existingCrmObjectIds;\n const hasErrors = existingObjectIds.length > 0;\n if (hasErrors) {\n return {\n uniqueness_warning: true,\n };\n }\n return null;\n }),\n );\n };\n\n@Injectable()\nexport class ValidatorFactoryService {\n private readonly formService = inject(CrmFormService);\n\n private objectType!: ObjectType;\n private valueChanges$: Observable = of(false);\n private renderableFields: RenderableFieldInterface[] = [];\n private validationChanges$!: Observable;\n\n latestValidationErrors$$: BehaviorSubject =\n new BehaviorSubject(null);\n\n initialize(\n objectType: ObjectType,\n existingObjectId: string,\n renderableFields: RenderableFieldInterface[],\n valueChanges$: Observable,\n ): void {\n this.objectType = objectType;\n this.valueChanges$ = valueChanges$.pipe(map((v) => !!v));\n this.renderableFields = renderableFields;\n this.validationChanges$ = this.valueChanges$.pipe(\n debounceTime(300),\n switchMap(() => {\n const fields = this.renderableFields.map((r) => r.fieldValue());\n return this.formService.validateCrmObject$(this.objectType, {\n crmObjectId: existingObjectId,\n fields,\n });\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n // request for validation happens in validator before loading\n // shared-components dependent upon validation data, cache manually to handle scenario\n // for uniqueness suggestions\n tap((v) => this.latestValidationErrors$$.next(v)),\n );\n }\n\n buildUniquenessValidatorCodeMappings(fieldId: string): { [key: string]: ValidationError } {\n return {\n uniqueness_enforced: {\n severity: 'INVALID',\n message: 'STANDARD_FIELD_RULES.UNIQUE_FIELD_VALUE.ENFORCED',\n validationFn: null,\n asyncValidationFn: uniquenessInvalidValidatorFn(this.validationChanges$, fieldId),\n },\n uniqueness_warning: {\n severity: 'WARNING',\n message: 'STANDARD_FIELD_RULES.UNIQUE_FIELD_VALUE.WARNING',\n validationFn: null,\n asyncValidationFn: uniquenessWarningValidatorFn(this.validationChanges$, fieldId),\n },\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Inject, Input, OnChanges, Output } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CrmObjectInterface } from '@vendasta/crm';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { catchError, map, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { ValidatorFactoryService } from '../../validator-factory.service';\nimport { CrmInjectionToken, CrmDependencies, ObjectType, CardData } from '../../../../tokens-and-interfaces';\nimport { PAGE_ROUTES } from '../../../../constants';\nimport { TranslateByObjectTypePipe } from '../../../../i18n/translate-by-object-type/translate-by-object-type.pipe';\nimport {\n CrmFieldService,\n StandardExternalIds,\n StandardIds,\n} from '../../../../shared-services/crm-services/field.service';\nimport { AssociationCardComponent } from '../../../association-panel-components/association-card/association-card.component';\nimport { CrmObjectDisplayService, CrmObjectService } from '../../../../shared-services';\n\n@Component({\n selector: 'crm-uniqueness-suggestion-card',\n templateUrl: './uniqueness-suggestion-card.component.html',\n styleUrls: ['./uniqueness-suggestion-card.component.scss'],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n GalaxyFormFieldModule,\n TranslateByObjectTypePipe,\n GalaxyLoadingSpinnerModule,\n MatButtonModule,\n MatIconModule,\n AssociationCardComponent,\n ],\n})\nexport class CrmUniquenessSuggestionCardComponent implements OnChanges {\n @Input({ required: true }) displayCard: boolean;\n @Input({ required: true }) objectType: ObjectType;\n @Input({ required: true }) fieldId: string;\n @Input() label: string;\n @Output() displayError = new EventEmitter(true);\n\n permissionDenied$$ = new BehaviorSubject(false);\n private uniquenessDetailsForField$ = this.validatorFactory.latestValidationErrors$$.pipe(\n map((validation) => {\n const uniquenessDetailsFound = (validation?.errors ?? []).filter(\n (e) => e.details?.uniquenessCheck?.fieldId === this.fieldId,\n );\n if (uniquenessDetailsFound.length > 0) {\n return uniquenessDetailsFound[0];\n }\n return null;\n }),\n );\n\n ngOnChanges(): void {\n this.permissionDenied$$.next(false);\n this.displayError.emit(true);\n }\n\n private crmObject$ = this.uniquenessDetailsForField$.pipe(\n map((uniquenessDetails) => {\n const existingObjectIds = uniquenessDetails?.details?.uniquenessCheck?.existingCrmObjectIds;\n if (!existingObjectIds?.length) {\n return '';\n }\n return existingObjectIds[0];\n }),\n switchMap((objectId) => {\n if (!objectId) {\n return [];\n }\n return this.objectService.getMultiObject(this.objectType, [objectId]);\n }),\n map((response) => (response.crmObjects ? response.crmObjects[0] : { fields: [] })),\n catchError((error) => {\n if (error.status === 403) {\n this.permissionDenied$$.next(true);\n this.displayError.emit(false);\n return of({} as CrmObjectInterface);\n } else {\n console.error(error);\n this.snackbar.openErrorSnack('ERRORS.GENERIC_MESSAGE');\n return of({} as CrmObjectInterface);\n }\n }),\n );\n objectCardInfo$: Observable = this.crmObject$.pipe(\n switchMap((crmObject) => {\n return this.objectCardLink$.pipe(\n map((link) => {\n switch (this.objectType) {\n case 'Contact':\n return this.buildCardForContact(crmObject, link);\n case 'Company':\n return this.buildCardForCompany(crmObject, link);\n default:\n console.warn('Unsupported object type for uniqueness suggestion card');\n return null;\n }\n }),\n );\n }),\n );\n objectCardLink$: Observable = this.crmObject$.pipe(\n withLatestFrom(this.config.routePrefix$),\n map(([{ crmObjectId }, routePrefix]) => {\n let templateLink = '';\n switch (this.objectType) {\n case 'Contact':\n templateLink = `${routePrefix}/${PAGE_ROUTES.CONTACT.ROOT}/${PAGE_ROUTES.CONTACT.SUBROUTES.PROFILE}`;\n return templateLink.replace(':crmObjectId', crmObjectId ?? '');\n case 'Company':\n templateLink = `${routePrefix}/${PAGE_ROUTES.COMPANY.ROOT}/${PAGE_ROUTES.COMPANY.SUBROUTES.PROFILE}`;\n return templateLink.replace(':crmObjectId', crmObjectId ?? '');\n default:\n console.warn('Unsupported object type for uniqueness suggestion card');\n return '';\n }\n }),\n );\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly validatorFactory: ValidatorFactoryService,\n private readonly objectService: CrmObjectService,\n private readonly crmFieldService: CrmFieldService,\n private readonly objectDisplayService: CrmObjectDisplayService,\n private readonly snackbar: SnackbarService,\n ) {}\n\n private buildCardForContact(crmObject: CrmObjectInterface, profileButtonUrl: string): CardData {\n const email = this.crmFieldService.getFieldId(StandardExternalIds.Email);\n const emailData = crmObject.fields?.find((f) => f.fieldId === email);\n const emailValue = emailData?.stringValue || '';\n\n return {\n type: 'user',\n userName: this.objectDisplayService.getObjectDisplayName(this.objectType, crmObject),\n email: emailValue,\n profileButtonUrl: profileButtonUrl,\n } as CardData;\n }\n\n private buildCardForCompany(crmObject: CrmObjectInterface, profileButtonUrl: string): CardData {\n const companyNameData = crmObject.fields?.find((f) => f.fieldId === StandardIds.CompanyName);\n const companyNameValue = companyNameData?.stringValue || '';\n\n return {\n type: 'business',\n businessName: companyNameValue,\n profileButtonUrl: profileButtonUrl,\n } as CardData;\n }\n}\n","
\n \n \n \n \n \n \n
\n
\n \n {{\n 'CONTACT.STANDARD_FIELD_RULES.UNIQUE_FIELD_VALUE.PERMISSION_DENIED'\n | translateByObjectType: objectType : { label: label.toLowerCase() }\n }}\n \n
\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { FieldValidation } from '../../field-validation';\nimport { FieldWarningService } from './field-warning.service';\nimport { CrmUniquenessSuggestionCardComponent } from './uniqueness-suggestion-card.component';\nimport { ObjectType } from '../../../../tokens-and-interfaces';\nimport { TranslateByObjectTypePipe } from '../../../../i18n/translate-by-object-type/translate-by-object-type.pipe';\n\n@Component({\n selector: 'crm-model-driven-form-error',\n templateUrl: './model-driven-form-error.component.html',\n styleUrls: ['./model-driven-form-error.component.scss'],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n GalaxyFormFieldModule,\n TranslateByObjectTypePipe,\n CrmUniquenessSuggestionCardComponent,\n ],\n})\nexport class CrmModelDrivenFormErrorComponent implements OnInit {\n @Input({ required: true }) objectType!: ObjectType;\n @Input({ required: true }) fieldId!: string;\n @Input({ required: true }) control!: UntypedFormControl;\n @Input({ required: true }) validation!: FieldValidation;\n @Input() label!: string;\n\n errorCodes: string[] = [];\n warningCode$!: Observable;\n\n showError$$ = new BehaviorSubject(false);\n\n constructor(private warningService: FieldWarningService) {}\n\n ngOnInit(): void {\n this.showError$$.next(true);\n this.errorCodes = Object.keys(this.validation.errorCodeMap);\n this.warningCode$ = this.control.valueChanges.pipe(\n switchMap(() => {\n return this.warningService.validateWarning(\n this.control,\n this.validation.getAsyncWarningValidators(),\n this.validation.getWarningValidators(),\n );\n }),\n map((warnings) => {\n if (warnings !== null && Object.keys(warnings).length > 0) {\n return Object.keys(warnings)[0];\n }\n return '';\n }),\n );\n }\n\n showError(err: boolean): void {\n this.showError$$.next(err);\n }\n}\n","\n \n {{\n validation.errorCodeMap[errorCode].message | translateByObjectType: objectType : { label: label.toLowerCase() }\n }}\n \n \n\n\n \n {{\n validation.errorCodeMap[warningCode].message | translateByObjectType: objectType : { label: label.toLowerCase() }\n }}\n \n\n","import { Inject, Injectable } from '@angular/core';\nimport { map, shareReplay, switchMap, distinctUntilChanged } from 'rxjs/operators';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { CrmObjectService } from '../../../../shared-services';\nimport { GetMultiCrmObjectResponse } from '@vendasta/crm';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { PartnerService } from '@galaxy/partner';\nimport { AuxiliaryFieldSchemaApiService, ListAuxiliaryDataFieldSchemaResponse } from '@vendasta/account-group';\nimport { CrmDependencies, CrmInjectionToken } from '../../../../tokens-and-interfaces';\n\n@Injectable()\nexport class SyncFieldFormInputService {\n private crmObjectId$: Observable = this.route.params.pipe(\n map((params: Params) => params['crmObjectId']),\n distinctUntilChanged(),\n shareReplay(1),\n );\n private crmObject$: Observable = this.crmObjectId$.pipe(\n switchMap(\n (crmObjectId: string) =>\n this.crmObjectService.getMultiObject('Company', [crmObjectId]) as Observable,\n ),\n shareReplay(1),\n );\n\n private customFieldIds$: Observable = this.partnerService.getPartnerId().pipe(\n switchMap((partnerId: string) => {\n return this.schemaService.listAuxiliaryDataFieldSchema({\n partnerId: partnerId,\n pagingOptions: {\n pageSize: 100,\n cursor: '',\n },\n });\n }),\n map((response: ListAuxiliaryDataFieldSchemaResponse) => {\n if (!response || !response.fieldSchemas) return [];\n return response.fieldSchemas.map((field) => field.fieldId);\n }),\n );\n\n private syncFieldIds$ = combineLatest([this.config.company?.syncIds$ ?? of([]), this.customFieldIds$]).pipe(\n map(([syncIds, customFieldIds]) => {\n return [...syncIds, ...customFieldIds];\n }),\n shareReplay(1),\n );\n\n constructor(\n private readonly crmObjectService: CrmObjectService,\n private readonly route: ActivatedRoute,\n private readonly schemaService: AuxiliaryFieldSchemaApiService,\n private readonly partnerService: PartnerService,\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n ) {}\n\n getAccountId(): Observable {\n return this.config.company?.accountId$?.(this.crmObject$) ?? of('');\n }\n\n hasAccount(): Observable {\n return this.getAccountId().pipe(map((id) => !!id));\n }\n\n getSyncFieldIds(): Observable {\n return this.syncFieldIds$;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { GalaxyPopoverModule } from '@vendasta/galaxy/popover';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { Router } from '@angular/router';\nimport { map, take } from 'rxjs/operators';\nimport { combineLatest } from 'rxjs';\nimport { AsyncPipe } from '@angular/common';\nimport { SyncFieldFormInputService } from '../sync-field-form-input.service';\n\n@Component({\n selector: 'crm-sync-icon',\n imports: [MatIcon, GalaxyPopoverModule, TranslateModule, AsyncPipe],\n templateUrl: './sync-icon.component.html',\n styleUrl: './sync-icon.component.scss',\n})\nexport class SyncIconComponent {\n popoverShown = false;\n @Input() fieldId!: string;\n\n renderIcon$ = combineLatest([\n this.syncFieldFormInputService.hasAccount(),\n this.syncFieldFormInputService.getSyncFieldIds(),\n ]).pipe(\n map(([hasAccount, syncFieldIds]) => {\n const isSynced = syncFieldIds?.find((id) => id === this.fieldId);\n return hasAccount && isSynced;\n }),\n );\n\n constructor(\n private readonly router: Router,\n private readonly syncFieldFormInputService: SyncFieldFormInputService,\n ) {}\n\n openAccount() {\n this.syncFieldFormInputService\n .getAccountId()\n .pipe(take(1))\n .subscribe((id) => {\n if (!id) {\n console.error('Could not find account id');\n return;\n }\n const crmURL = `businesses/accounts/${id}/details`;\n this.router.navigateByUrl(crmURL);\n });\n }\n}\n","@if (renderIcon$ | async) {\n
\n
\n sync_alt\n
\n
\n}\n\n {{ 'SYNC.TITLE' | translate }}\n {{ 'SYNC.DESCRIPTION' | translate }}\n {{ 'SYNC.ACCOUNT' | translate }}\n\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ComponentRef, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { stopChromeAutofill } from './stop-chrome-autofill';\nimport { CrmModelDrivenFormErrorComponent } from './model-driven-form-error/model-driven-form-error.component';\nimport { FieldValidation } from '../field-validation';\nimport { FieldWarningService } from './model-driven-form-error/field-warning.service';\nimport { getLocale } from '@vendasta/galaxy/utility/locale';\nimport { DateFnsAdapter, MAT_DATE_FNS_FORMATS } from '@angular/material-date-fns-adapter';\nimport { InlineEditService } from '../inline-edit.service';\nimport { FieldValueInterface, ObjectType, RenderableFieldInterface } from '../../../tokens-and-interfaces';\nimport { SyncIconComponent } from './accounts/sync-icon/sync-icon.component';\n\nimport { MatInput } from '@angular/material/input';\n\nexport class DateFieldHandler implements RenderableFieldInterface {\n private component: ComponentRef | null = null;\n formControl: UntypedFormControl;\n\n constructor(\n public objectType: ObjectType,\n public fieldId: string,\n public name: string,\n public label: string,\n public value: string,\n public description: string,\n public readOnly = false,\n public validation: FieldValidation = new FieldValidation(),\n ) {\n this.formControl = new UntypedFormControl(value);\n }\n\n setValidation(validation: FieldValidation): void {\n this.validation = validation;\n this.formControl.setValidators(validation.getValidators());\n this.formControl.setAsyncValidators(validation.getAsyncValidators());\n }\n\n render(viewContainerRef: ViewContainerRef): void {\n viewContainerRef.clear();\n const component = viewContainerRef.createComponent(DateRendererComponent);\n component.instance.objectType = this.objectType;\n component.instance.fieldId = this.fieldId;\n component.instance.control = this.formControl;\n component.instance.label = this.label;\n component.instance.validation = this.validation;\n component.instance.readOnly = this.readOnly;\n this.component = component;\n }\n\n hasModification(): boolean {\n return this.formControl?.dirty;\n }\n\n fieldValue(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n dateValue: this.formControl.value,\n };\n }\n}\n\n@Component({\n template: `\n
\n
\n {{ label | translate }}\n \n
\n
\n \n \n {{ control.value | date: 'shortDate' }}\n \n
\n
\n \n \n \n {{ label | translate }}\n \n \n \n \n \n\n \n \n \n `,\n providers: [\n //for browsers with a negative GMT, the default datepicker would show the previous day\n { provide: MAT_DATE_LOCALE, useValue: getLocale() },\n {\n provide: DateAdapter,\n useClass: DateFnsAdapter,\n },\n { provide: MAT_DATE_FORMATS, useValue: MAT_DATE_FNS_FORMATS },\n FieldWarningService,\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatDatepickerModule,\n TranslateModule,\n GalaxyFormFieldModule,\n CrmModelDrivenFormErrorComponent,\n SyncIconComponent,\n MatInput,\n ],\n styleUrls: ['./renderers.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateRendererComponent {\n fieldId!: string;\n objectType!: ObjectType;\n control!: UntypedFormControl;\n label!: string;\n validation!: FieldValidation;\n readOnly!: boolean;\n\n disableAutoComplete: string = stopChromeAutofill();\n\n constructor(private readonly inlineEditService: InlineEditService) {}\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n dateValue: this.control.value,\n },\n ]);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n inject,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { stopChromeAutofill } from './stop-chrome-autofill';\nimport { CrmModelDrivenFormErrorComponent } from './model-driven-form-error/model-driven-form-error.component';\nimport { FieldValidation } from '../field-validation';\nimport { FieldWarningService } from './model-driven-form-error/field-warning.service';\nimport { InlineEditService } from '../inline-edit.service';\nimport { FieldValueInterface, ObjectType, RenderableFieldInterface } from '../../../tokens-and-interfaces';\nimport { SyncIconComponent } from './accounts/sync-icon/sync-icon.component';\nimport { MatInput } from '@angular/material/input';\nimport { format as formatDate } from 'date-fns-tz';\n\nexport class DatetimeFieldHandler implements RenderableFieldInterface {\n private component: ComponentRef | null = null;\n formControl: UntypedFormControl;\n\n constructor(\n public objectType: ObjectType,\n public fieldId: string,\n public name: string,\n public label: string,\n public value: Date,\n public description: string,\n public readOnly = false,\n public validation: FieldValidation = new FieldValidation(),\n ) {\n const dateValue = value ? formatDate(value, \"yyyy-MM-dd'T'HH:mm\") : '';\n this.formControl = new UntypedFormControl(dateValue);\n }\n\n setValidation(validation: FieldValidation): void {\n this.validation = validation;\n this.formControl.setValidators(validation.getValidators());\n this.formControl.setAsyncValidators(validation.getAsyncValidators());\n }\n\n render(viewContainerRef: ViewContainerRef): void {\n viewContainerRef.clear();\n const component = viewContainerRef.createComponent(DatetimeRendererComponent);\n component.instance.objectType = this.objectType;\n component.instance.fieldId = this.fieldId;\n component.instance.control = this.formControl;\n component.instance.label = this.label;\n component.instance.validation = this.validation;\n component.instance.readOnly = this.readOnly;\n this.component = component;\n }\n\n hasModification(): boolean {\n return this.formControl?.dirty;\n }\n\n fieldValue(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n dateValue: new Date(this.formControl.value),\n };\n }\n}\n\n@Component({\n template: `\n
\n
\n {{ label | translate }}\n \n
\n
\n \n \n {{ control.value | date: 'mediumDate' }}\n \n
\n
\n \n \n \n {{ label | translate }}\n \n \n \n \n \n \n `,\n providers: [FieldWarningService],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslateModule,\n GalaxyFormFieldModule,\n CrmModelDrivenFormErrorComponent,\n SyncIconComponent,\n MatInput,\n ],\n styleUrls: ['./renderers.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatetimeRendererComponent {\n private readonly inlineEditService = inject(InlineEditService);\n\n fieldId!: string;\n objectType!: ObjectType;\n control!: UntypedFormControl;\n label!: string;\n validation!: FieldValidation;\n readOnly!: boolean;\n\n disableAutoComplete: string = stopChromeAutofill();\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n dateValue: new Date(this.control.value),\n },\n ]);\n }\n}\n","// source http://emailregex.com/\nimport { ValidationError } from '../field-validation';\n\nconst expr =\n '(?:[A-Za-z0-9!#$%&\\'*+/=?^_`{|}~-]+(?:\\\\.[A-Za-z0-9!#$%&\\'*+/=?^_`{|}~-]+)*|\"(?:[\\\\x01-\\\\x08\\\\x0b\\\\x0c\\\\x0e-\\\\x1f\\\\x21\\\\x23-\\\\x5b\\\\x5d-\\\\x7f]|\\\\\\\\[\\\\x01-\\\\x09\\\\x0b\\\\x0c\\\\x0e-\\\\x7f])*\")@(?:(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\\\\.)+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?|\\\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[A-Za-z0-9-]*[A-Za-z0-9]:(?:[\\\\x01-\\\\x08\\\\x0b\\\\x0c\\\\x0e-\\\\x1f\\\\x21-\\\\x5a\\\\x53-\\\\x7f]|\\\\\\\\[\\\\x01-\\\\x09\\\\x0b\\\\x0c\\\\x0e-\\\\x7f])+)\\\\])';\nconst emailRegex = new RegExp(expr);\n\nconst emailValidatorFn = (control) => {\n if (!!control.value && emailRegex.exec(control.value) === null) {\n return { invalid_email: true };\n }\n return null;\n};\n\nexport const emailValidatorCodeMapping = {\n invalid_email: {\n severity: 'INVALID',\n message: 'MODEL_DRIVEN_FORM.INVALID_EMAIL_ERROR',\n validationFn: emailValidatorFn,\n asyncValidationFn: null,\n } as ValidationError,\n};\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ComponentRef, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DigitOnlyModule } from '@uiowa/digit-only';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { stopChromeAutofill } from './stop-chrome-autofill';\nimport { CrmModelDrivenFormErrorComponent } from './model-driven-form-error/model-driven-form-error.component';\nimport { FieldValidation } from '../field-validation';\nimport { FieldWarningService } from './model-driven-form-error/field-warning.service';\nimport { InlineEditService } from '../inline-edit.service';\nimport { FieldValueInterface, ObjectType, RenderableFieldInterface } from '../../../tokens-and-interfaces';\nimport { SyncIconComponent } from './accounts/sync-icon/sync-icon.component';\n\nexport class IntegerFieldHandler implements RenderableFieldInterface {\n private component: ComponentRef | null = null;\n formControl: UntypedFormControl;\n\n constructor(\n public objectType: ObjectType,\n public fieldId: string,\n public name: string,\n public label: string,\n public value: number,\n public description: string,\n public readOnly = false,\n public validation: FieldValidation = new FieldValidation(),\n ) {\n this.formControl = new UntypedFormControl(value);\n }\n\n setValidation(validation: FieldValidation): void {\n this.validation = validation;\n this.formControl.setValidators(validation.getValidators());\n this.formControl.setAsyncValidators(validation.getAsyncValidators());\n }\n\n render(viewContainerRef: ViewContainerRef): void {\n viewContainerRef.clear();\n const component = viewContainerRef.createComponent(IntegerRendererComponent);\n component.instance.fieldId = this.fieldId;\n component.instance.objectType = this.objectType;\n component.instance.control = this.formControl;\n component.instance.label = this.label;\n component.instance.validation = this.validation;\n component.instance.readOnly = this.readOnly;\n this.component = component;\n }\n\n hasModification(): boolean {\n return this.formControl?.dirty;\n }\n\n fieldValue(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n integerValue: this.formControl.value,\n };\n }\n}\n\n@Component({\n template: `\n
\n
\n {{ label | translate }}\n \n
\n
\n \n \n {{ control.value }}\n \n
\n
\n \n \n \n {{ label | translate }}\n \n \n \n\n \n \n \n `,\n imports: [\n CommonModule,\n MatInputModule,\n ReactiveFormsModule,\n DigitOnlyModule,\n TranslateModule,\n GalaxyFormFieldModule,\n CrmModelDrivenFormErrorComponent,\n SyncIconComponent,\n ],\n providers: [FieldWarningService],\n styleUrls: ['./renderers.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IntegerRendererComponent {\n fieldId!: string;\n objectType!: ObjectType;\n control!: UntypedFormControl;\n label!: string;\n validation!: FieldValidation;\n readOnly!: boolean;\n\n disableAutoComplete: string = stopChromeAutofill();\n\n constructor(private readonly inlineEditService: InlineEditService) {}\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n integerValue: this.control.value,\n },\n ]);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { DigitOnlyModule } from '@uiowa/digit-only';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { CrmModelDrivenFormErrorComponent } from '../model-driven-form-error/model-driven-form-error.component';\nimport { FieldWarningService } from '../model-driven-form-error/field-warning.service';\nimport { stopChromeAutofill } from '../stop-chrome-autofill';\nimport { ObjectType } from '../../../../tokens-and-interfaces';\nimport { FieldValidation } from '../../field-validation';\nimport { InlineEditService } from '../../inline-edit.service';\n\n@Component({\n templateUrl: './float.html',\n imports: [\n CommonModule,\n MatInputModule,\n ReactiveFormsModule,\n DigitOnlyModule,\n TranslateModule,\n GalaxyFormFieldModule,\n CrmModelDrivenFormErrorComponent,\n ],\n providers: [FieldWarningService],\n styleUrls: ['../renderers.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FloatRendererComponent {\n fieldId!: string;\n objectType!: ObjectType;\n control!: FormControl;\n label!: string;\n validation!: FieldValidation;\n readOnly!: boolean;\n\n disableAutoComplete: string = stopChromeAutofill();\n\n constructor(private readonly inlineEditService: InlineEditService) {}\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n floatValue: this.control.value,\n },\n ]);\n }\n}\n","
\n
{{ label | translate }}
\n
\n \n {{ control.value }} \n
\n
\n\n \n {{ label | translate }}\n \n \n \n\n","import { ComponentRef, ViewContainerRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FieldValidation } from '../../field-validation';\nimport { FieldValueInterface, ObjectType, RenderableFieldInterface } from '../../../../tokens-and-interfaces';\nimport { FloatRendererComponent } from './float';\n\nexport class FloatFieldHandler implements RenderableFieldInterface {\n private component: ComponentRef | null = null;\n formControl: FormControl;\n\n constructor(\n public objectType: ObjectType,\n public fieldId: string,\n public name: string,\n public label: string,\n public value: number,\n public description: string,\n public readOnly = false,\n public validation: FieldValidation = new FieldValidation(),\n ) {\n this.formControl = new FormControl(this.value);\n }\n\n setValidation(validation: FieldValidation): void {\n this.validation = validation;\n this.formControl.setValidators(validation.getValidators());\n this.formControl.setAsyncValidators(validation.getAsyncValidators());\n }\n\n render(viewContainerRef: ViewContainerRef): void {\n viewContainerRef.clear();\n const component = viewContainerRef.createComponent(FloatRendererComponent);\n component.instance.fieldId = this.fieldId;\n component.instance.objectType = this.objectType;\n component.instance.control = this.formControl;\n component.instance.label = this.label;\n component.instance.validation = this.validation;\n component.instance.readOnly = this.readOnly;\n this.component = component;\n }\n\n hasModification(): boolean {\n return this.formControl?.dirty;\n }\n\n fieldValue(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n floatValue: this.formControl.value,\n };\n }\n}\n","import { AfterViewInit, ChangeDetectorRef, Directive, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { FormFieldComponent } from '@vendasta/galaxy/form-field';\nimport { Subject, combineLatest, of } from 'rxjs';\nimport { switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { FieldValidation } from '../../field-validation';\nimport { FieldWarningService } from './field-warning.service';\n\n@Directive({\n selector: '[crmFieldWarning]',\n standalone: true,\n})\nexport class CrmFieldWarningDirective implements AfterViewInit, OnDestroy {\n private destroyed$$ = new Subject();\n private hasWarnings = false;\n\n @Input({ alias: 'crmFieldWarning', required: true }) fieldValidation: FieldValidation;\n @Input({ required: true }) warningControl: UntypedFormControl;\n\n @HostBinding('class.crm-field-warning')\n get hasWarningsClass() {\n return this.hasWarnings;\n }\n\n constructor(\n private formFieldComponent: FormFieldComponent,\n private warningService: FieldWarningService,\n private readonly cd: ChangeDetectorRef,\n ) {}\n\n ngAfterViewInit(): void {\n combineLatest([this.warningControl.valueChanges, this.warningControl.statusChanges])\n .pipe(\n takeUntil(this.destroyed$$),\n switchMap(([, statusChanges]) => {\n if (statusChanges === 'INVALID') {\n return of(null);\n }\n return this.warningService.validateWarning(\n this.warningControl,\n this.fieldValidation.getAsyncWarningValidators(),\n this.fieldValidation.getWarningValidators(),\n );\n }),\n tap((warnings) => {\n if (warnings !== null && Object.keys(warnings).length > 0) {\n this.hasWarnings = true;\n this.formFieldComponent.prefixIcon = 'warning';\n } else {\n this.hasWarnings = false;\n this.formFieldComponent.prefixIcon = '';\n }\n this.cd.markForCheck();\n }),\n )\n .subscribe();\n }\n\n ngOnDestroy(): void {\n this.destroyed$$.next(null);\n this.destroyed$$.unsubscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { GalaxyButtonLoadingIndicatorModule } from '@vendasta/galaxy/button-loading-indicator';\nimport { MatButtonModule } from '@angular/material/button';\nimport { SavingStatus } from '../../../../tokens-and-interfaces';\n\n@Component({\n selector: 'crm-form-button-group',\n template: `\n
\n \n \n {{ submitButtonText | translate }}\n \n \n \n {{ cancelButtonText | translate }}\n \n
\n `,\n styleUrls: ['./form-button-group.component.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n GalaxyEmptyStateModule,\n MatIconModule,\n GalaxyLoadingSpinnerModule,\n GalaxyButtonLoadingIndicatorModule,\n MatButtonModule,\n ],\n})\nexport class CrmFormButtonGroupComponent {\n @Input() submitButtonText = '';\n @Input() cancelButtonText = '';\n @Input() savingStatus!: SavingStatus;\n\n @Output() clickedOnSubmit = new EventEmitter();\n @Output() clickedOnCancel = new EventEmitter();\n\n SavingStatus = SavingStatus;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule, FormsModule, UntypedFormControl } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { PopoverPositions, GalaxyPopoverModule } from '@vendasta/galaxy/popover';\nimport { MatButtonModule } from '@angular/material/button';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CrmFormButtonGroupComponent } from '../../form/modes/form-button-group.component';\n\nimport { SyncIconComponent } from '../accounts/sync-icon/sync-icon.component';\nimport { CrmFieldWarningDirective } from '../model-driven-form-error/field-warning.directive';\nimport { FieldValidation } from '../../field-validation';\n\n@Component({\n selector: 'crm-model-driven-popover',\n templateUrl: './model-driven-popover.component.html',\n imports: [\n CommonModule,\n MatInputModule,\n ReactiveFormsModule,\n TranslateModule,\n GalaxyFormFieldModule,\n GalaxyPopoverModule,\n MatButtonModule,\n OverlayModule,\n FormsModule,\n CrmFormButtonGroupComponent,\n SyncIconComponent,\n CrmFieldWarningDirective,\n ],\n providers: [],\n styleUrls: ['./model-driven-popover.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class CrmModelDrivenPopoverComponent implements OnInit {\n @Input({ required: true }) label!: string;\n @Input({ required: true }) displayValue!: string;\n @Input({ required: true }) control!: UntypedFormControl;\n @Input({ required: true }) validation!: FieldValidation;\n @Input() fieldId!: string;\n @Output() save = new EventEmitter();\n\n renderedValue = '';\n openedPopover = false;\n popoverPositions = [PopoverPositions.Right, PopoverPositions.Bottom];\n\n openPopover(): void {\n this.openedPopover = true;\n }\n\n closePopover(): void {\n this.openedPopover = false;\n }\n\n saveModification(): void {\n if (this.control.invalid) {\n return;\n }\n this.renderedValue = this.displayValue ?? '';\n this.save.emit();\n this.closePopover();\n }\n\n ngOnInit(): void {\n this.renderedValue = this.displayValue ?? '';\n }\n}\n","\n \n {{ label | translate }}\n \n \n \n\n\n {{ 'MODEL_DRIVEN_FORM.EDIT_FIELD' | translate }}\n
\n \n \n \n\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { FieldValue } from '@vendasta/crm';\nimport { FieldValueInterface } from '../../../tokens-and-interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class UpdaterService {\n updatedField: BehaviorSubject;\n private clearedField$$ = new Subject();\n clearedField$ = this.clearedField$$.asObservable();\n\n constructor() {\n this.updatedField = new BehaviorSubject(new FieldValue());\n }\n\n private clearField(fieldId: string): void {\n this.clearedField$$.next(new FieldValue({ fieldId: fieldId }));\n }\n\n updateStringField(fieldId: string, value: string, clearIfEmpty?: boolean): void {\n if (!value && clearIfEmpty) {\n this.clearField(fieldId);\n return;\n }\n\n this.updatedField.next(new FieldValue({ fieldId: fieldId, stringValue: value }));\n }\n\n updateGeopointField(fieldId: string, lat: number, lon: number, clearIfEmpty?: boolean): void {\n if (lat === 0 && lon === 0 && clearIfEmpty) {\n this.clearField(fieldId);\n return;\n }\n\n this.updatedField.next(new FieldValue({ fieldId: fieldId, geopointValue: { lat: lat, lon: lon } }));\n }\n\n updateFieldValue(value: FieldValueInterface): void {\n this.updatedField.next(new FieldValue(value));\n }\n}\n","import { CountryCode, format, isValidNumber, NationalNumber, ParsedNumber, parseNumber } from 'libphonenumber-js';\nimport { AbstractControl, FormGroup, ValidationErrors } from '@angular/forms';\nimport { PhoneFieldsInterface } from '@vendasta/crm';\n\nexport const parsePhoneNumber = (phoneValue: string): PhoneFieldsInterface => {\n const parsedNumber = parseNumber(phoneValue, {\n defaultCountry: 'US',\n }) as ParsedNumber;\n return {\n nationalNumber: parsedNumber.phone,\n isoCountryCode: parsedNumber.country,\n extension: parsedNumber.ext,\n };\n};\n\nexport const formatAsReadonlyPhone = (parsedNumber: PhoneFieldsInterface): string => {\n if (parsedNumber.nationalNumber === '') {\n return '';\n }\n const parsed = {\n country: parsedNumber.isoCountryCode,\n phone: parsedNumber.nationalNumber,\n ext: parsedNumber.extension,\n } as ParsedNumber;\n\n let internationalNumber = parsedNumber.nationalNumber || '';\n try {\n internationalNumber = format(parsed, 'INTERNATIONAL');\n } catch (e) {\n console.warn('Failed formatting phone number', parsed, e);\n }\n\n return internationalNumber;\n};\n\nexport const formatAsRFC3966Phone = (parsedNumber: PhoneFieldsInterface): string => {\n if (!parsedNumber.nationalNumber) {\n return '';\n }\n const parsed = {\n country: parsedNumber.isoCountryCode,\n phone: parsedNumber.nationalNumber,\n ext: parsedNumber.extension,\n } as ParsedNumber;\n return format(parsed, 'RFC3966');\n};\n\nconst validatePhone = (phone: NationalNumber, country: CountryCode): ValidationErrors | null => {\n let isInvalid = true;\n try {\n isInvalid = !isValidNumber(phone, country);\n } catch (e) {\n console.warn('Error validating phone number', phone, 'with country code', country, e);\n }\n\n if (isInvalid) {\n return {\n invalidPhoneNumber: true,\n };\n }\n const cannotParse = !Object.keys(\n parsePhoneNumber(formatAsRFC3966Phone({ nationalNumber: phone, isoCountryCode: country })),\n ).length;\n if (cannotParse) {\n return {\n invalidPhoneNumber: true,\n };\n }\n return null;\n};\n\nexport const validatePhoneNumber = (control: AbstractControl): ValidationErrors | null => {\n const parsedPhoneNumber = {\n country: control.value.country,\n phone: control.value.phoneNumber,\n ext: control.value.extension,\n } as ParsedNumber;\n if (!parsedPhoneNumber.phone) {\n return null;\n }\n return validatePhone(parsedPhoneNumber.phone, parsedPhoneNumber.country);\n};\n\nexport const validateBasedOnPhoneFormGroup = (phoneGroup: FormGroup) => (): ValidationErrors | null => {\n phoneGroup.updateValueAndValidity();\n if (phoneGroup.invalid) {\n return {\n invalidPhoneNumber: true,\n };\n }\n return null;\n};\n","import { LayoutModule } from '@angular/cdk/layout';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n OnDestroy,\n OnInit,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MAT_SELECT_CONFIG, MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { RxState } from '@rx-angular/state';\nimport { DigitOnlyModule } from '@uiowa/digit-only';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { CountryCode, ParsedNumber } from 'libphonenumber-js';\nimport { NgxMatSelectSearchModule } from 'ngx-mat-select-search';\nimport { combineLatest, Observable, Subject } from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n map,\n shareReplay,\n startWith,\n takeUntil,\n tap,\n withLatestFrom,\n} from 'rxjs/operators';\nimport { FieldValidation } from '../../field-validation';\nimport { InlineEditService } from '../../inline-edit.service';\nimport { CrmFieldWarningDirective } from '../model-driven-form-error/field-warning.directive';\nimport { FieldWarningService } from '../model-driven-form-error/field-warning.service';\nimport { CrmModelDrivenFormErrorComponent } from '../model-driven-form-error/model-driven-form-error.component';\nimport { CrmModelDrivenPopoverComponent } from '../model-driven-popover/model-driven-popover.component';\nimport { stopChromeAutofill } from '../stop-chrome-autofill';\nimport { UpdaterService } from '../updater.service';\nimport { CountryCodeService } from '@vendasta/galaxy/utility/country-codes';\nimport { CountryOption, countryOptionsFactoryProvider } from '@vendasta/galaxy/utility/country-codes';\nimport {\n formatAsReadonlyPhone,\n formatAsRFC3966Phone,\n parsePhoneNumber,\n validateBasedOnPhoneFormGroup,\n validatePhoneNumber,\n} from './utils';\nimport { FieldValueInterface, ObjectType } from '../../../../tokens-and-interfaces';\nimport { SyncIconComponent } from '../accounts/sync-icon/sync-icon.component';\nimport { AutoFill } from '@galaxy/crm/components/animations';\nimport { PhoneFieldsInterface } from '@vendasta/crm';\n\nexport const DEFAULT_COUNTRY_CODE = 'US';\n\n@Component({\n templateUrl: './phone.html',\n imports: [\n CommonModule,\n MatInputModule,\n ReactiveFormsModule,\n TranslateModule,\n GalaxyFormFieldModule,\n LayoutModule,\n DigitOnlyModule,\n MatSelectModule,\n NgxMatSelectSearchModule,\n CrmModelDrivenFormErrorComponent,\n CrmFieldWarningDirective,\n CrmModelDrivenPopoverComponent,\n SyncIconComponent,\n ],\n providers: [\n RxState,\n countryOptionsFactoryProvider,\n CountryCodeService,\n {\n provide: MAT_SELECT_CONFIG,\n useValue: { overlayPanelClass: 'crm-phone-country-selector-overlay-pane' },\n },\n FieldWarningService,\n ],\n styleUrls: ['../renderers.scss', './phone.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [AutoFill],\n})\nexport class PhoneRendererComponent implements OnInit, OnDestroy {\n searchCountryControl = new FormControl('');\n private countryControl = new FormControl(DEFAULT_COUNTRY_CODE);\n private phoneNumberControl = new FormControl('');\n private extensionControl = new FormControl('');\n phone: FormGroup = new FormGroup({\n country: this.countryControl,\n phoneNumber: this.phoneNumberControl,\n extension: this.extensionControl,\n });\n initialValue!: string | PhoneFieldsInterface;\n objectType!: ObjectType;\n control!: UntypedFormControl;\n label!: string;\n fieldId!: string;\n validation!: FieldValidation;\n readOnly!: boolean;\n isInlineEdit$ = this.inlineEditService.isInlineEdit$;\n\n private phoneFieldVals = signal({\n isoCountryCode: DEFAULT_COUNTRY_CODE,\n nationalNumber: '',\n extension: '',\n } as PhoneFieldsInterface);\n private parsedPhoneNumber = signal({\n country: DEFAULT_COUNTRY_CODE,\n phone: '',\n } as ParsedNumber);\n readonlyPhoneNumber = computed(() => formatAsReadonlyPhone(this.phoneFieldVals()));\n RFC3966PhoneNumber = computed(() => formatAsRFC3966Phone(this.phoneFieldVals()));\n private RFC3966PhoneNumber$ = toObservable(this.RFC3966PhoneNumber);\n private phoneFieldVals$ = toObservable(this.phoneFieldVals);\n private destroyed$$ = new Subject();\n\n disableAutoComplete: string = stopChromeAutofill();\n countryOptions$: Observable = this.countryCodeService.countryOptions$.pipe(\n distinctUntilChanged(),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n filteredCountryOptions$: Observable = this.searchCountryControl.valueChanges.pipe(\n startWith(''),\n withLatestFrom(this.countryOptions$),\n map(([filterValue, countryOptions]) => {\n return countryOptions.filter((c) => {\n if (c.callingCode.includes(filterValue)) {\n return true;\n }\n if (c.countryCode.toLowerCase().includes(filterValue.toLowerCase())) {\n return true;\n }\n if (c.countryName.toLowerCase().includes(filterValue.toLowerCase())) {\n return true;\n }\n return false;\n });\n }),\n );\n selectedCountry = computed(() => {\n return this.countryCodeService.getCountryOption(this.phoneFieldVals().isoCountryCode as CountryCode);\n });\n selectedCountryCallingCode = computed(() => this.selectedCountry()?.callingCode || '');\n\n autoFillState = 'default';\n\n constructor(\n private readonly countryCodeService: CountryCodeService,\n private changeDetRef: ChangeDetectorRef,\n private updaterService: UpdaterService,\n private readonly inlineEditService: InlineEditService,\n readonly destroyRef: DestroyRef,\n ) {\n this.phone.addValidators(validatePhoneNumber);\n // set precedence for these two country codes at all times on init\n this.countryCodeService.countryCodeUsed('CA');\n this.countryCodeService.countryCodeUsed(DEFAULT_COUNTRY_CODE);\n }\n\n ngOnInit(): void {\n this.initialValue = this.setInitialValue(this.initialValue);\n this.setupPhoneFormGroup();\n this.setupControlValuesForForm();\n\n this.updaterService.clearedField$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((f: FieldValueInterface) => f.fieldId === this.fieldId),\n )\n .subscribe((_) => {\n this.countryControl.reset(DEFAULT_COUNTRY_CODE);\n this.phoneNumberControl.reset();\n this.extensionControl.reset();\n this.control.reset();\n });\n\n this.updaterService.updatedField\n .pipe(\n takeUntil(this.destroyed$$),\n tap((data) => {\n if (\n data?.phoneFieldValues &&\n data?.phoneFieldValues?.nationalNumber != '' &&\n data?.fieldId === this.fieldId\n ) {\n this.autoFillState = 'highlight';\n setTimeout(() => {\n this.autoFillState = 'default';\n this.changeDetRef.detectChanges();\n }, 1200);\n this.setPhoneFieldValues(data?.phoneFieldValues);\n this.changeDetRef.detectChanges();\n }\n }),\n )\n .subscribe();\n }\n\n ngOnDestroy(): void {\n this.destroyed$$.next();\n this.destroyed$$.complete();\n }\n\n setInitialValue(value: string | PhoneFieldsInterface): string | PhoneFieldsInterface {\n // makes sure that the initial value will have the default phone values when the phone value is not set\n // if it's not set, it could either be null or empty (no country code)\n if (value == null) {\n return {\n isoCountryCode: DEFAULT_COUNTRY_CODE,\n nationalNumber: '',\n extension: '',\n } as PhoneFieldsInterface;\n }\n if (typeof value != 'string' && !value?.isoCountryCode) {\n value.isoCountryCode = DEFAULT_COUNTRY_CODE;\n }\n return value;\n }\n\n private setPhoneFieldValues(phoneFieldValues: PhoneFieldsInterface): [string, string, string] {\n const startingCountry = phoneFieldValues?.isoCountryCode || DEFAULT_COUNTRY_CODE;\n const startingPhoneNumber = phoneFieldValues?.nationalNumber || '';\n const startingExtension = phoneFieldValues?.extension || '';\n\n this.countryControl.setValue(startingCountry);\n this.countryCodeService.countryCodeUsed(startingCountry as CountryCode);\n this.phoneNumberControl.setValue(startingPhoneNumber);\n this.extensionControl.setValue(startingExtension);\n const phoneVals = {\n isoCountryCode: startingCountry,\n nationalNumber: startingPhoneNumber,\n extension: startingExtension,\n } as PhoneFieldsInterface;\n this.phoneFieldVals.set(phoneVals);\n\n return [startingCountry, startingPhoneNumber, startingExtension];\n }\n\n private setPhoneValue(phoneValue: string): [string, string, string] {\n let startingCountry = DEFAULT_COUNTRY_CODE;\n let startingPhoneNumber = phoneValue;\n let startingExtension = '';\n\n if (phoneValue) {\n const parsedPhoneNumber = parsePhoneNumber(phoneValue);\n startingCountry = parsedPhoneNumber?.isoCountryCode || DEFAULT_COUNTRY_CODE;\n startingPhoneNumber = parsedPhoneNumber?.nationalNumber || phoneValue;\n startingExtension = parsedPhoneNumber?.extension || '';\n const phoneVals = {\n isoCountryCode: startingCountry,\n nationalNumber: startingPhoneNumber,\n extension: startingExtension,\n } as PhoneFieldsInterface;\n this.phoneFieldVals.set(phoneVals);\n }\n this.countryControl.setValue(startingCountry);\n this.countryCodeService.countryCodeUsed(startingCountry as CountryCode);\n this.phoneNumberControl.setValue(startingPhoneNumber);\n this.extensionControl.setValue(startingExtension);\n\n return [startingCountry, startingPhoneNumber, startingExtension];\n }\n\n private setupPhoneFormGroup(): void {\n let [startingCountry, startingPhoneNumber, startingExtension] = '';\n if (typeof this.control.value === 'string') {\n [startingCountry, startingPhoneNumber, startingExtension] = this.setPhoneValue(this.control.value);\n } else if (!this.control.value?.e164Compliant && !!this.control.value?.nationalNumber) {\n [startingCountry, startingPhoneNumber, startingExtension] = this.setPhoneValue(this.control.value.nationalNumber);\n } else {\n [startingCountry, startingPhoneNumber, startingExtension] = this.setPhoneFieldValues(this.control.value);\n }\n const countryValue$ = this.countryControl.valueChanges.pipe(startWith(startingCountry));\n const phoneNumberValue$ = this.phoneNumberControl.valueChanges.pipe(startWith(startingPhoneNumber));\n const extensionValue$ = this.extensionControl.valueChanges.pipe(startWith(startingExtension));\n combineLatest([countryValue$, phoneNumberValue$, extensionValue$])\n .pipe(\n takeUntil(this.destroyed$$),\n map(\n ([country, phone, ext]) =>\n ({\n isoCountryCode: country,\n nationalNumber: phone,\n extension: ext,\n }) as PhoneFieldsInterface,\n ),\n tap((parsedNumber) => this.phoneFieldVals.set(parsedNumber)),\n )\n .subscribe();\n }\n\n private setupControlValuesForForm(): void {\n this.control.addValidators(validateBasedOnPhoneFormGroup(this.phone));\n this.phoneFieldVals$\n .pipe(\n tap((phoneFieldVals) => {\n takeUntil(this.destroyed$$);\n this.control.setValue(phoneFieldVals);\n if (typeof this.initialValue == 'string') {\n if (phoneFieldVals?.nationalNumber != this.initialValue) {\n this.control.markAsDirty();\n } else {\n this.control.markAsPristine();\n }\n } else {\n if (!this.phoneFieldsAreEqual(phoneFieldVals, this.initialValue)) {\n this.control.markAsDirty();\n } else {\n this.control.markAsPristine();\n }\n }\n }),\n )\n .subscribe();\n }\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n phoneFieldValues: {\n isoCountryCode: this.countryControl.value,\n nationalNumber: this.phoneNumberControl.value,\n extension: this.extensionControl.value,\n },\n },\n ]);\n }\n\n phoneFieldsAreEqual(phoneFieldVals: PhoneFieldsInterface, phoneFieldVals2: PhoneFieldsInterface): boolean {\n return (\n (phoneFieldVals.isoCountryCode ?? '') === (phoneFieldVals2.isoCountryCode ?? '') &&\n (phoneFieldVals.nationalNumber ?? '') === (phoneFieldVals2.nationalNumber ?? '') &&\n (phoneFieldVals.extension ?? '') === (phoneFieldVals2.extension ?? '')\n );\n }\n}\n","
\n
\n {{ label | translate }}\n \n
\n
\n \n
\n
\n
\n \n \n \n
\n\n \n\n\n
\n \n {{ label | translate }}\n \n \n \n \n \n \n \n {{ selectedCountry.flag }}\n

\n
\n \n Invalid\n \n \n \n \n {{ option.callingCode }}\n ({{ option.flag }} {{ option.countryName }})\n \n
\n\n \n \n \n \n {{ selectedCountryCallingCode() }}\n \n \n \n \n \n \n \n \n \n
\n \n {{ 'MODEL_DRIVEN_FORM.PHONE.INVALID_PHONE_ERROR' | translate }}\n \n \n
\n
\n\n {{ initialValue }}\n \n \n {{ readonlyPhoneNumber }}\n \n \n\n","import { UntypedFormControl } from '@angular/forms';\nimport { ComponentRef, ViewContainerRef } from '@angular/core';\nimport { PhoneRendererComponent } from './phone';\nimport { FieldValidation } from '../../field-validation';\nimport { FieldValueInterface, ObjectType, RenderableFieldInterface } from '../../../../tokens-and-interfaces';\nimport { PhoneFieldsInterface } from '@vendasta/crm/lib/_internal/interfaces/crm-objects.interface';\n\nexport class PhoneFieldHandler implements RenderableFieldInterface {\n private component: ComponentRef | null = null;\n formControl: UntypedFormControl;\n\n constructor(\n public objectType: ObjectType,\n public fieldId: string,\n public name: string,\n public label: string,\n public value: string | PhoneFieldsInterface,\n public description: string,\n public readOnly = false,\n public validation: FieldValidation = new FieldValidation(),\n ) {\n this.formControl = new UntypedFormControl(this.value);\n }\n\n setValidation(validation: FieldValidation): void {\n this.validation = validation;\n this.formControl.setValidators(validation.getValidators());\n this.formControl.setAsyncValidators(validation.getAsyncValidators());\n }\n\n hasModification(): boolean {\n return this.formControl?.dirty;\n }\n\n fieldValue(): FieldValueInterface {\n if (typeof this.formControl.value === 'string') {\n return {\n fieldId: this.fieldId,\n stringValue: this.formControl.value,\n };\n }\n return {\n fieldId: this.fieldId,\n phoneFieldValues: {\n isoCountryCode: this.formControl.value?.isoCountryCode,\n nationalNumber: this.formControl.value?.nationalNumber,\n extension: this.formControl.value?.extension,\n } as PhoneFieldsInterface,\n };\n }\n\n render(viewContainerRef: ViewContainerRef): void {\n viewContainerRef.clear();\n const component = viewContainerRef.createComponent(PhoneRendererComponent);\n component.instance.initialValue = this.value;\n component.instance.objectType = this.objectType;\n component.instance.control = this.formControl;\n component.instance.label = this.label;\n component.instance.fieldId = this.fieldId;\n component.instance.validation = this.validation;\n component.instance.readOnly = this.readOnly;\n this.component = component;\n }\n}\n","import { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n DestroyRef,\n ElementRef,\n Inject,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport {\n MatAutocompleteModule,\n MatAutocompleteActivatedEvent as MatAutocompleteSelectedEvent,\n} from '@angular/material/autocomplete';\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { RxState } from '@rx-angular/state';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { BehaviorSubject, Observable, combineLatest, skipWhile, tap } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, startWith, switchMap } from 'rxjs/operators';\nimport { FieldValidation } from '../field-validation';\nimport { InlineEditService } from '../inline-edit.service';\nimport { FieldWarningService } from './model-driven-form-error/field-warning.service';\nimport { CrmModelDrivenFormErrorComponent } from './model-driven-form-error/model-driven-form-error.component';\nimport {\n FieldOptionsDependencies,\n FieldOptionsInjectionToken,\n FieldValueInterface,\n ObjectType,\n RenderableFieldInterface,\n} from '../../../tokens-and-interfaces';\nimport { SEARCH_DEBOUNCE_MS } from '../../../constants';\nimport { SyncIconComponent } from './accounts/sync-icon/sync-icon.component';\nimport { UpdaterService } from './updater.service';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { AutoFill } from '@galaxy/crm/components/animations';\n\nexport class TagsFieldHandler implements RenderableFieldInterface {\n private component: ComponentRef | null = null;\n formControl: FormControl;\n\n constructor(\n public objectType: ObjectType,\n public fieldId: string,\n public name: string,\n public label: string,\n public value: string[],\n public description: string,\n public readOnly = false,\n public maxTags: number | null = null,\n public maxTagLength: number | null = null,\n public addTagPrompt = '',\n public maximumTagsError = '',\n public validation: FieldValidation = new FieldValidation(),\n ) {\n this.formControl = new FormControl([], { nonNullable: true });\n this.formControl.setValue(value);\n }\n\n setValidation(validation: FieldValidation): void {\n this.validation = validation;\n this.formControl.setValidators(validation.getValidators());\n this.formControl.setAsyncValidators(validation.getAsyncValidators());\n }\n\n hasModification(): boolean {\n return this.formControl?.dirty;\n }\n\n fieldValue(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n stringValues: { values: this.formControl.value },\n };\n }\n\n render(viewContainerRef: ViewContainerRef): void {\n viewContainerRef.clear();\n const component = viewContainerRef.createComponent(TagsRendererComponent);\n component.instance.objectType = this.objectType;\n component.instance.fieldId = this.fieldId;\n component.instance.control = this.formControl;\n component.instance.label = this.label;\n component.instance.validation = this.validation;\n component.instance.readOnly = this.readOnly;\n component.instance.getTagOptions(this.fieldId);\n component.instance.maxTags = this.maxTags;\n component.instance.maxTagLength = this.maxTagLength;\n component.instance.addTagPrompt = this.addTagPrompt;\n component.instance.maximumTagsError = this.maximumTagsError;\n this.component = component;\n }\n}\n\n@Component({\n templateUrl: './tags.html',\n imports: [\n CommonModule,\n MatAutocompleteModule,\n MatChipsModule,\n MatIconModule,\n MatInputModule,\n ReactiveFormsModule,\n TranslateModule,\n GalaxyBadgeModule,\n GalaxyFormFieldModule,\n GalaxyTooltipModule,\n CrmModelDrivenFormErrorComponent,\n SyncIconComponent,\n ],\n providers: [RxState, FieldWarningService],\n styleUrls: ['./renderers.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [AutoFill],\n})\nexport class TagsRendererComponent {\n fieldId!: string;\n objectType!: ObjectType;\n control!: FormControl;\n label!: string;\n validation!: FieldValidation;\n readOnly!: boolean;\n\n newTagControl: FormControl = new FormControl('', { nonNullable: true });\n separatorKeysCodes: number[] = [ENTER, COMMA];\n maxTagLength: number | null = 0;\n availableTags$!: Observable;\n maxTags: number | null = 0;\n isInputActive = false;\n initialized$ = new BehaviorSubject(false);\n addTagPrompt = '';\n maximumTagsError = '';\n\n @ViewChild('tagInput') tagInput!: ElementRef;\n autoFillState = 'default';\n private isInlineEdit = toSignal(this.inlineEditService.isInlineEdit$);\n\n constructor(\n @Inject(FieldOptionsInjectionToken) private readonly fieldOptionsDependencies: FieldOptionsDependencies,\n private readonly state: RxState,\n private readonly destroyRef: DestroyRef,\n private readonly inlineEditService: InlineEditService,\n private updaterService: UpdaterService,\n private changeDetRef: ChangeDetectorRef,\n ) {\n const zeros: ComponentState = {\n existingTags: [],\n addedTags: [],\n availableTags: [],\n };\n this.state.set(zeros);\n\n this.availableTags$ = this.state.select('availableTags');\n\n this.updaterService.clearedField$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((f: FieldValueInterface) => f.fieldId === this.fieldId),\n )\n .subscribe((_) => this.clear());\n\n this.updaterService.updatedField\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap((data) => {\n if (data.stringValues?.values && data.stringValues?.values.length > 0 && data.fieldId === this.fieldId) {\n this.autoFillState = 'highlight';\n setTimeout(() => {\n this.autoFillState = 'default';\n this.changeDetRef.detectChanges();\n }, 1200);\n this.control.setValue(data.stringValues.values);\n this.control.markAsDirty();\n this.changeDetRef.detectChanges();\n }\n }),\n )\n .subscribe();\n }\n\n clear(): void {\n this.control.reset();\n this.control.markAsDirty();\n if (this.isInlineEdit()) {\n this.saveField();\n }\n }\n\n getTagOptions(fieldId: string): void {\n const initialized$ = this.initialized$.pipe(distinctUntilChanged());\n const tagControlChanges$ = this.newTagControl.valueChanges.pipe(startWith(this.newTagControl.value));\n\n const existingTags$ = combineLatest([tagControlChanges$, initialized$]).pipe(\n skipWhile(([, initialized]: [string, boolean]) => !initialized),\n map(([search]: [string, boolean]) => (search || '').trim()),\n debounceTime(SEARCH_DEBOUNCE_MS),\n distinctUntilChanged(),\n switchMap((search) => this.fieldOptionsDependencies.getFieldOptions(fieldId, search)),\n map((tags) => tags || []),\n map((tags) => [...tags].sort()),\n );\n this.state.connect('existingTags', existingTags$);\n\n const addedTags$ = this.control.valueChanges.pipe(\n startWith(this.control.value),\n map((tags) => tags || []),\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n );\n this.state.connect('addedTags', addedTags$);\n\n const availableTags$ = this.state.select().pipe(\n map((state) => [state.addedTags, state.existingTags]),\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n map(([usedTags, existing]) => existing.filter((t) => !usedTags.includes(t))),\n map((tags) => [...tags].sort()),\n );\n\n this.state.connect('availableTags', availableTags$);\n }\n\n private addTag(tag: string) {\n const tags = this.control.value || [];\n if (tags.includes(tag)) {\n return;\n }\n this.control.setValue([...tags, tag]);\n }\n\n private touchControls(): void {\n this.control.markAsDirty();\n this.control.markAsTouched();\n this.control.updateValueAndValidity();\n this.newTagControl.setValue('');\n this.newTagControl.updateValueAndValidity();\n }\n\n addNewTag(event: MatChipInputEvent): void {\n const value = (event.value || '').trim();\n if (value) {\n this.addTag(value);\n }\n event?.chipInput?.clear();\n this.touchControls();\n }\n\n removeTag(tagIndex: number): void {\n if (tagIndex >= 0) {\n const tags = [...this.control.value];\n tags.splice(tagIndex, 1);\n this.control.setValue(tags);\n }\n this.touchControls();\n }\n\n selectExistingTag(event: MatAutocompleteSelectedEvent): void {\n this.tagInput.nativeElement.value = '';\n this.newTagControl.setValue('');\n\n const tag = event?.option?.viewValue;\n if (tag) {\n this.addTag(tag);\n }\n this.touchControls();\n }\n\n initializeField(): void {\n this.initialized$.next(true);\n }\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n stringValues: { values: this.control.value },\n },\n ]);\n }\n}\n\ninterface ComponentState {\n existingTags: string[];\n addedTags: string[];\n availableTags: string[];\n}\n","
\n
\n {{ label | translate }}\n \n
\n
\n \n {{ tag }}\n \n
\n
\n\n \n \n {{ label | translate }}\n \n \n \n \n \n {{ tag || '-' }}\n cancel\n \n \n {{ tag || '-' }}\n \n \n = maxTags ? '' : (addTagPrompt | translate)\"\n maxlength=\"{{ maxTagLength }}\"\n [formControl]=\"newTagControl\"\n [matAutocomplete]=\"auto\"\n [matChipInputFor]=\"tagChips\"\n [matChipInputAddOnBlur]=\"true\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"addNewTag($event)\"\n [@autoFill]=\"autoFillState\"\n (focus)=\"isInputActive = true; initializeField();\"\n (blur)=\"isInputActive = false; saveField();\"\n [readonly]=\"maxTags !== null && control.value?.length >= maxTags\"\n />\n \n {{ 'MODEL_DRIVEN_FORM.STRING_LIMIT_HINT' | translate : {characters: newTagControl.value?.length || 0} }}\n \n \n \n {{ maximumTagsError | translate : {maximumTags: control.value?.length || 0} }}\n \n \n \n {{ tag }}\n \n \n \n \n\n","/**\n * @license Angular v19.1.3\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, AnimationMetadataType, style } from '@angular/animations';\nimport * as i0 from '@angular/core';\nimport { ɵRuntimeError, Injectable } from '@angular/core';\nconst LINE_START = '\\n - ';\nfunction invalidTimingValue(exp) {\n return new ɵRuntimeError(3000 /* RuntimeErrorCode.INVALID_TIMING_VALUE */, ngDevMode && `The provided timing value \"${exp}\" is invalid.`);\n}\nfunction negativeStepValue() {\n return new ɵRuntimeError(3100 /* RuntimeErrorCode.NEGATIVE_STEP_VALUE */, ngDevMode && 'Duration values below 0 are not allowed for this animation step.');\n}\nfunction negativeDelayValue() {\n return new ɵRuntimeError(3101 /* RuntimeErrorCode.NEGATIVE_DELAY_VALUE */, ngDevMode && 'Delay values below 0 are not allowed for this animation step.');\n}\nfunction invalidStyleParams(varName) {\n return new ɵRuntimeError(3001 /* RuntimeErrorCode.INVALID_STYLE_PARAMS */, ngDevMode && `Unable to resolve the local animation param ${varName} in the given list of values`);\n}\nfunction invalidParamValue(varName) {\n return new ɵRuntimeError(3003 /* RuntimeErrorCode.INVALID_PARAM_VALUE */, ngDevMode && `Please provide a value for the animation param ${varName}`);\n}\nfunction invalidNodeType(nodeType) {\n return new ɵRuntimeError(3004 /* RuntimeErrorCode.INVALID_NODE_TYPE */, ngDevMode && `Unable to resolve animation metadata node #${nodeType}`);\n}\nfunction invalidCssUnitValue(userProvidedProperty, value) {\n return new ɵRuntimeError(3005 /* RuntimeErrorCode.INVALID_CSS_UNIT_VALUE */, ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n}\nfunction invalidTrigger() {\n return new ɵRuntimeError(3006 /* RuntimeErrorCode.INVALID_TRIGGER */, ngDevMode && \"animation triggers cannot be prefixed with an `@` sign (e.g. trigger('@foo', [...]))\");\n}\nfunction invalidDefinition() {\n return new ɵRuntimeError(3007 /* RuntimeErrorCode.INVALID_DEFINITION */, ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()');\n}\nfunction invalidState(metadataName, missingSubs) {\n return new ɵRuntimeError(3008 /* RuntimeErrorCode.INVALID_STATE */, ngDevMode && `state(\"${metadataName}\", ...) must define default values for all the following style substitutions: ${missingSubs.join(', ')}`);\n}\nfunction invalidStyleValue(value) {\n return new ɵRuntimeError(3002 /* RuntimeErrorCode.INVALID_STYLE_VALUE */, ngDevMode && `The provided style string value ${value} is not allowed.`);\n}\nfunction invalidProperty(prop) {\n return new ɵRuntimeError(3009 /* RuntimeErrorCode.INVALID_PROPERTY */, ngDevMode && `The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n}\nfunction invalidParallelAnimation(prop, firstStart, firstEnd, secondStart, secondEnd) {\n return new ɵRuntimeError(3010 /* RuntimeErrorCode.INVALID_PARALLEL_ANIMATION */, ngDevMode && `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${firstEnd}ms\" is also being animated in a parallel animation between the times of \"${secondStart}ms\" and \"${secondEnd}ms\"`);\n}\nfunction invalidKeyframes() {\n return new ɵRuntimeError(3011 /* RuntimeErrorCode.INVALID_KEYFRAMES */, ngDevMode && `keyframes() must be placed inside of a call to animate()`);\n}\nfunction invalidOffset() {\n return new ɵRuntimeError(3012 /* RuntimeErrorCode.INVALID_OFFSET */, ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`);\n}\nfunction keyframeOffsetsOutOfOrder() {\n return new ɵRuntimeError(3200 /* RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER */, ngDevMode && `Please ensure that all keyframe offsets are in order`);\n}\nfunction keyframesMissingOffsets() {\n return new ɵRuntimeError(3202 /* RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS */, ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`);\n}\nfunction invalidStagger() {\n return new ɵRuntimeError(3013 /* RuntimeErrorCode.INVALID_STAGGER */, ngDevMode && `stagger() can only be used inside of query()`);\n}\nfunction invalidQuery(selector) {\n return new ɵRuntimeError(3014 /* RuntimeErrorCode.INVALID_QUERY */, ngDevMode && `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${selector}\", { optional: true })\\` if you wish to allow this.)`);\n}\nfunction invalidExpression(expr) {\n return new ɵRuntimeError(3015 /* RuntimeErrorCode.INVALID_EXPRESSION */, ngDevMode && `The provided transition expression \"${expr}\" is not supported`);\n}\nfunction invalidTransitionAlias(alias) {\n return new ɵRuntimeError(3016 /* RuntimeErrorCode.INVALID_TRANSITION_ALIAS */, ngDevMode && `The transition alias value \"${alias}\" is not supported`);\n}\nfunction validationFailed(errors) {\n return new ɵRuntimeError(3500 /* RuntimeErrorCode.VALIDATION_FAILED */, ngDevMode && `animation validation failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction buildingFailed(errors) {\n return new ɵRuntimeError(3501 /* RuntimeErrorCode.BUILDING_FAILED */, ngDevMode && `animation building failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerBuildFailed(name, errors) {\n return new ɵRuntimeError(3404 /* RuntimeErrorCode.TRIGGER_BUILD_FAILED */, ngDevMode && `The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors.map(err => err.message).join('\\n - ')}`);\n}\nfunction animationFailed(errors) {\n return new ɵRuntimeError(3502 /* RuntimeErrorCode.ANIMATION_FAILED */, ngDevMode && `Unable to animate due to the following errors:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction registerFailed(errors) {\n return new ɵRuntimeError(3503 /* RuntimeErrorCode.REGISTRATION_FAILED */, ngDevMode && `Unable to build the animation due to the following errors: ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingOrDestroyedAnimation() {\n return new ɵRuntimeError(3300 /* RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION */, ngDevMode && \"The requested animation doesn't exist or has already been destroyed\");\n}\nfunction createAnimationFailed(errors) {\n return new ɵRuntimeError(3504 /* RuntimeErrorCode.CREATE_ANIMATION_FAILED */, ngDevMode && `Unable to create the animation due to the following errors:${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingPlayer(id) {\n return new ɵRuntimeError(3301 /* RuntimeErrorCode.MISSING_PLAYER */, ngDevMode && `Unable to find the timeline player referenced by ${id}`);\n}\nfunction missingTrigger(phase, name) {\n return new ɵRuntimeError(3302 /* RuntimeErrorCode.MISSING_TRIGGER */, ngDevMode && `Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n}\nfunction missingEvent(name) {\n return new ɵRuntimeError(3303 /* RuntimeErrorCode.MISSING_EVENT */, ngDevMode && `Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n}\nfunction unsupportedTriggerEvent(phase, name) {\n return new ɵRuntimeError(3400 /* RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT */, ngDevMode && `The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n}\nfunction unregisteredTrigger(name) {\n return new ɵRuntimeError(3401 /* RuntimeErrorCode.UNREGISTERED_TRIGGER */, ngDevMode && `The provided animation trigger \"${name}\" has not been registered!`);\n}\nfunction triggerTransitionsFailed(errors) {\n return new ɵRuntimeError(3402 /* RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED */, ngDevMode && `Unable to process animations due to the following failed trigger transitions\\n ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerParsingFailed(name, errors) {\n return new ɵRuntimeError(3403 /* RuntimeErrorCode.TRIGGER_PARSING_FAILED */, ngDevMode && `Animation parsing for the ${name} trigger have failed:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction transitionFailed(name, errors) {\n return new ɵRuntimeError(3505 /* RuntimeErrorCode.TRANSITION_FAILED */, ngDevMode && `@${name} has failed due to:\\n ${errors.map(err => err.message).join('\\n- ')}`);\n}\n\n/**\n * Set of all animatable CSS properties\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties\n */\nconst ANIMATABLE_PROP_SET = /*#__PURE__*/new Set(['-moz-outline-radius', '-moz-outline-radius-bottomleft', '-moz-outline-radius-bottomright', '-moz-outline-radius-topleft', '-moz-outline-radius-topright', '-ms-grid-columns', '-ms-grid-rows', '-webkit-line-clamp', '-webkit-text-fill-color', '-webkit-text-stroke', '-webkit-text-stroke-color', 'accent-color', 'all', 'backdrop-filter', 'background', 'background-color', 'background-position', 'background-size', 'block-size', 'border', 'border-block-end', 'border-block-end-color', 'border-block-end-width', 'border-block-start', 'border-block-start-color', 'border-block-start-width', 'border-bottom', 'border-bottom-color', 'border-bottom-left-radius', 'border-bottom-right-radius', 'border-bottom-width', 'border-color', 'border-end-end-radius', 'border-end-start-radius', 'border-image-outset', 'border-image-slice', 'border-image-width', 'border-inline-end', 'border-inline-end-color', 'border-inline-end-width', 'border-inline-start', 'border-inline-start-color', 'border-inline-start-width', 'border-left', 'border-left-color', 'border-left-width', 'border-radius', 'border-right', 'border-right-color', 'border-right-width', 'border-start-end-radius', 'border-start-start-radius', 'border-top', 'border-top-color', 'border-top-left-radius', 'border-top-right-radius', 'border-top-width', 'border-width', 'bottom', 'box-shadow', 'caret-color', 'clip', 'clip-path', 'color', 'column-count', 'column-gap', 'column-rule', 'column-rule-color', 'column-rule-width', 'column-width', 'columns', 'filter', 'flex', 'flex-basis', 'flex-grow', 'flex-shrink', 'font', 'font-size', 'font-size-adjust', 'font-stretch', 'font-variation-settings', 'font-weight', 'gap', 'grid-column-gap', 'grid-gap', 'grid-row-gap', 'grid-template-columns', 'grid-template-rows', 'height', 'inline-size', 'input-security', 'inset', 'inset-block', 'inset-block-end', 'inset-block-start', 'inset-inline', 'inset-inline-end', 'inset-inline-start', 'left', 'letter-spacing', 'line-clamp', 'line-height', 'margin', 'margin-block-end', 'margin-block-start', 'margin-bottom', 'margin-inline-end', 'margin-inline-start', 'margin-left', 'margin-right', 'margin-top', 'mask', 'mask-border', 'mask-position', 'mask-size', 'max-block-size', 'max-height', 'max-inline-size', 'max-lines', 'max-width', 'min-block-size', 'min-height', 'min-inline-size', 'min-width', 'object-position', 'offset', 'offset-anchor', 'offset-distance', 'offset-path', 'offset-position', 'offset-rotate', 'opacity', 'order', 'outline', 'outline-color', 'outline-offset', 'outline-width', 'padding', 'padding-block-end', 'padding-block-start', 'padding-bottom', 'padding-inline-end', 'padding-inline-start', 'padding-left', 'padding-right', 'padding-top', 'perspective', 'perspective-origin', 'right', 'rotate', 'row-gap', 'scale', 'scroll-margin', 'scroll-margin-block', 'scroll-margin-block-end', 'scroll-margin-block-start', 'scroll-margin-bottom', 'scroll-margin-inline', 'scroll-margin-inline-end', 'scroll-margin-inline-start', 'scroll-margin-left', 'scroll-margin-right', 'scroll-margin-top', 'scroll-padding', 'scroll-padding-block', 'scroll-padding-block-end', 'scroll-padding-block-start', 'scroll-padding-bottom', 'scroll-padding-inline', 'scroll-padding-inline-end', 'scroll-padding-inline-start', 'scroll-padding-left', 'scroll-padding-right', 'scroll-padding-top', 'scroll-snap-coordinate', 'scroll-snap-destination', 'scrollbar-color', 'shape-image-threshold', 'shape-margin', 'shape-outside', 'tab-size', 'text-decoration', 'text-decoration-color', 'text-decoration-thickness', 'text-emphasis', 'text-emphasis-color', 'text-indent', 'text-shadow', 'text-underline-offset', 'top', 'transform', 'transform-origin', 'translate', 'vertical-align', 'visibility', 'width', 'word-spacing', 'z-index', 'zoom']);\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\nfunction normalizeKeyframes$1(normalizer, keyframes, preStyles = new Map(), postStyles = new Map()) {\n const errors = [];\n const normalizedKeyframes = [];\n let previousOffset = -1;\n let previousKeyframe = null;\n keyframes.forEach(kf => {\n const offset = kf.get('offset');\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe = isSameOffset && previousKeyframe || new Map();\n kf.forEach((val, prop) => {\n let normalizedProp = prop;\n let normalizedValue = val;\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles.get(prop);\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles.get(prop);\n break;\n default:\n normalizedValue = normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe.set(normalizedProp, normalizedValue);\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n throw animationFailed(errors);\n }\n return normalizedKeyframes;\n}\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\nfunction copyAnimationEvent(e, phaseName, player) {\n const totalTime = player.totalTime;\n const disabled = player.disabled ? true : false;\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = e['_data'];\n if (data != null) {\n event['_data'] = data;\n }\n return event;\n}\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return {\n element,\n triggerName,\n fromState,\n toState,\n phaseName,\n totalTime,\n disabled: !!disabled\n };\n}\nfunction getOrSetDefaultValue(map, key, defaultValue) {\n let value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n return value;\n}\nfunction parseTimelineCommand(command) {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.slice(separatorPos + 1);\n return [id, action];\n}\nconst documentElement = /* @__PURE__ */(() => typeof document === 'undefined' ? null : document.documentElement)();\nfunction getParentElement(element) {\n const parent = element.parentNode || element.host || null; // consider host to support shadow DOM\n if (parent === documentElement) {\n return null;\n }\n return parent;\n}\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\nlet _CACHED_BODY = null;\nlet _IS_WEBKIT = false;\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY.style ? 'WebkitAppearance' in _CACHED_BODY.style : false;\n }\n let result = true;\n if (_CACHED_BODY.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);\n result = camelProp in _CACHED_BODY.style;\n }\n }\n return result;\n}\nfunction validateWebAnimatableStyleProperty(prop) {\n return ANIMATABLE_PROP_SET.has(prop);\n}\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\nfunction containsElement(elm1, elm2) {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n}\nfunction invokeQuery(element, selector, multi) {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n}\nfunction hypenatePropsKeys(original) {\n const newMap = new Map();\n original.forEach((val, prop) => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newMap.set(newProp, val);\n });\n return newMap;\n}\n\n/**\n * @publicApi\n *\n * `AnimationDriver` implentation for Noop animations\n */\nlet NoopAnimationDriver = /*#__PURE__*/(() => {\n class NoopAnimationDriver {\n /**\n * @returns Whether `prop` is a valid CSS property\n */\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n /**\n *\n * @returns Whether elm1 contains elm2.\n */\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n /**\n * @returns Rhe parent of the given element or `null` if the element is the `document`\n */\n getParentElement(element) {\n return getParentElement(element);\n }\n /**\n * @returns The result of the query selector on the element. The array will contain up to 1 item\n * if `multi` is `false`.\n */\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n /**\n * @returns The `defaultValue` or empty string\n */\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n /**\n * @returns An `NoopAnimationPlayer`\n */\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n static ɵfac = function NoopAnimationDriver_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NoopAnimationDriver)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NoopAnimationDriver,\n factory: NoopAnimationDriver.ɵfac\n });\n }\n return NoopAnimationDriver;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * @publicApi\n */\nclass AnimationDriver {\n /**\n * @deprecated Use the NoopAnimationDriver class.\n */\n static NOOP = /*#__PURE__*/new NoopAnimationDriver();\n}\nclass AnimationStyleNormalizer {}\nclass NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return propertyName;\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return value;\n }\n}\nconst ONE_SECOND = 1000;\nconst SUBSTITUTION_EXPR_START = '{{';\nconst SUBSTITUTION_EXPR_END = '}}';\nconst ENTER_CLASSNAME = 'ng-enter';\nconst LEAVE_CLASSNAME = 'ng-leave';\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\nfunction resolveTimingValue(value) {\n if (typeof value == 'number') return value;\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2) return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default:\n // ms or something else\n return value;\n }\n}\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration') ? timings : parseTimeExpression(timings, errors, allowNegativeValues);\n}\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration;\n let delay = 0;\n let easing = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(invalidTimingValue(exp));\n return {\n duration: 0,\n delay: 0,\n easing: ''\n };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n } else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(negativeStepValue());\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(negativeDelayValue());\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, invalidTimingValue(exp));\n }\n }\n return {\n duration,\n delay,\n easing\n };\n}\nfunction normalizeKeyframes(keyframes) {\n if (!keyframes.length) {\n return [];\n }\n if (keyframes[0] instanceof Map) {\n return keyframes;\n }\n return keyframes.map(kf => new Map(Object.entries(kf)));\n}\nfunction normalizeStyles(styles) {\n return Array.isArray(styles) ? new Map(...styles) : new Map(styles);\n}\nfunction setStyles(element, styles, formerStyles) {\n styles.forEach((val, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.has(prop)) {\n formerStyles.set(prop, element.style[camelProp]);\n }\n element.style[camelProp] = val;\n });\n}\nfunction eraseStyles(element, styles) {\n styles.forEach((_, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n}\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1) return steps[0];\n return sequence(steps);\n }\n return steps;\n}\nfunction validateStyleParams(value, options, errors) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach(varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidStyleParams(varName));\n }\n });\n }\n}\nconst PARAM_REGEX = /*#__PURE__*/new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nfunction extractStyleParams(value) {\n let params = [];\n if (typeof value === 'string') {\n let match;\n while (match = PARAM_REGEX.exec(value)) {\n params.push(match[1]);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\nfunction interpolateParams(value, params, errors) {\n const original = `${value}`;\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (localVal == null) {\n errors.push(invalidParamValue(varName));\n localVal = '';\n }\n return localVal.toString();\n });\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n if (previousStyles.size && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps = [];\n previousStyles.forEach((val, prop) => {\n if (!startingKeyframe.has(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe.set(prop, val);\n });\n if (missingStyleProps.length) {\n for (let i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach(prop => kf.set(prop, computeStyle(element, prop)));\n }\n }\n }\n return keyframes;\n}\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case AnimationMetadataType.Trigger:\n return visitor.visitTrigger(node, context);\n case AnimationMetadataType.State:\n return visitor.visitState(node, context);\n case AnimationMetadataType.Transition:\n return visitor.visitTransition(node, context);\n case AnimationMetadataType.Sequence:\n return visitor.visitSequence(node, context);\n case AnimationMetadataType.Group:\n return visitor.visitGroup(node, context);\n case AnimationMetadataType.Animate:\n return visitor.visitAnimate(node, context);\n case AnimationMetadataType.Keyframes:\n return visitor.visitKeyframes(node, context);\n case AnimationMetadataType.Style:\n return visitor.visitStyle(node, context);\n case AnimationMetadataType.Reference:\n return visitor.visitReference(node, context);\n case AnimationMetadataType.AnimateChild:\n return visitor.visitAnimateChild(node, context);\n case AnimationMetadataType.AnimateRef:\n return visitor.visitAnimateRef(node, context);\n case AnimationMetadataType.Query:\n return visitor.visitQuery(node, context);\n case AnimationMetadataType.Stagger:\n return visitor.visitStagger(node, context);\n default:\n throw invalidNodeType(node.type);\n }\n}\nfunction computeStyle(element, prop) {\n return window.getComputedStyle(element)[prop];\n}\nconst DIMENSIONAL_PROP_SET = /*#__PURE__*/new Set(['width', 'height', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight', 'left', 'top', 'bottom', 'right', 'fontSize', 'outlineWidth', 'outlineOffset', 'paddingTop', 'paddingLeft', 'paddingBottom', 'paddingRight', 'marginTop', 'marginLeft', 'marginBottom', 'marginRight', 'borderRadius', 'borderWidth', 'borderTopWidth', 'borderLeftWidth', 'borderRightWidth', 'borderBottomWidth', 'textIndent', 'perspective']);\nclass WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n let unit = '';\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_SET.has(normalizedProperty) && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n } else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(invalidCssUnitValue(userProvidedProperty, value));\n }\n }\n }\n return strVal + unit;\n }\n}\nfunction createListOfWarnings(warnings) {\n const LINE_START = '\\n - ';\n return `${LINE_START}${warnings.filter(Boolean).map(warning => warning).join(LINE_START)}`;\n}\nfunction warnValidation(warnings) {\n console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnTriggerBuild(name, warnings) {\n console.warn(`The animation trigger \"${name}\" has built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnRegister(warnings) {\n console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction triggerParsingWarnings(name, warnings) {\n console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction pushUnrecognizedPropertiesWarning(warnings, props) {\n if (props.length) {\n warnings.push(`The following provided properties are not recognized: ${props.join(', ')}`);\n }\n}\nconst ANY_STATE = '*';\nfunction parseTransitionExpr(transitionValue, errors) {\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach(str => parseInnerTransitionStr(str, expressions, errors));\n } else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(invalidExpression(eventStr));\n return expressions;\n }\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n return;\n}\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState, toState) => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState, toState) => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(invalidTransitionAlias(alias));\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = /*#__PURE__*/new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = /*#__PURE__*/new Set(['false', '0']);\nfunction makeLambdaFromStates(lhs, rhs) {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (fromState, toState) => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\n };\n}\nconst SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = /*#__PURE__*/new RegExp(`s*${SELF_TOKEN}s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nfunction buildAnimationAst(driver, metadata, errors, warnings) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings);\n}\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n _driver;\n constructor(_driver) {\n this._driver = _driver;\n }\n build(metadata, errors, warnings) {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n const ast = visitDslNode(this, normalizeAnimationEntry(metadata), context);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (context.unsupportedCSSPropertiesFound.size) {\n pushUnrecognizedPropertiesWarning(warnings, [...context.unsupportedCSSPropertiesFound.keys()]);\n }\n }\n return ast;\n }\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = new Map();\n context.collectedStyles.set(ROOT_SELECTOR, new Map());\n context.currentTime = 0;\n }\n visitTrigger(metadata, context) {\n let queryCount = context.queryCount = 0;\n let depCount = context.depCount = 0;\n const states = [];\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push(invalidTrigger());\n }\n metadata.definitions.forEach(def => {\n this._resetContextStyleTimingState(context);\n if (def.type == AnimationMetadataType.State) {\n const stateDef = def;\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach(n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n } else if (def.type == AnimationMetadataType.Transition) {\n const transition = this.visitTransition(def, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n } else {\n context.errors.push(invalidDefinition());\n }\n });\n return {\n type: AnimationMetadataType.Trigger,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null\n };\n }\n visitState(metadata, context) {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = metadata.options && metadata.options.params || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach(style => {\n if (style instanceof Map) {\n style.forEach(value => {\n extractStyleParams(value).forEach(sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n context.errors.push(invalidState(metadata.name, [...missingSubs.values()]));\n }\n }\n return {\n type: AnimationMetadataType.State,\n name: metadata.name,\n style: styleAst,\n options: astParams ? {\n params: astParams\n } : null\n };\n }\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: AnimationMetadataType.Transition,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitSequence(metadata, context) {\n return {\n type: AnimationMetadataType.Sequence,\n steps: metadata.steps.map(s => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitGroup(metadata, context) {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map(step => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n context.currentTime = furthestTime;\n return {\n type: AnimationMetadataType.Group,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimate(metadata, context) {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst;\n let styleMetadata = metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == AnimationMetadataType.Keyframes) {\n styleAst = this.visitKeyframes(styleMetadata, context);\n } else {\n let styleMetadata = metadata.styles;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: AnimationMetadataType.Animate,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n visitStyle(metadata, context) {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n _makeStyleAst(metadata, context) {\n const styles = [];\n const metadataStyles = Array.isArray(metadata.styles) ? metadata.styles : [metadata.styles];\n for (let styleTuple of metadataStyles) {\n if (typeof styleTuple === 'string') {\n if (styleTuple === AUTO_STYLE) {\n styles.push(styleTuple);\n } else {\n context.errors.push(invalidStyleValue(styleTuple));\n }\n } else {\n styles.push(new Map(Object.entries(styleTuple)));\n }\n }\n let containsDynamicStyles = false;\n let collectedEasing = null;\n styles.forEach(styleData => {\n if (styleData instanceof Map) {\n if (styleData.has('easing')) {\n collectedEasing = styleData.get('easing');\n styleData.delete('easing');\n }\n if (!containsDynamicStyles) {\n for (let value of styleData.values()) {\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n return {\n type: AnimationMetadataType.Style,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null\n };\n }\n _validateStyleAst(ast, context) {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach(tuple => {\n if (typeof tuple === 'string') return;\n tuple.forEach((value, prop) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._driver.validateStyleProperty(prop)) {\n tuple.delete(prop);\n context.unsupportedCSSPropertiesFound.add(prop);\n return;\n }\n }\n // This is guaranteed to have a defined Map at this querySelector location making it\n // safe to add the assertion here. It is set as a default empty map in prior methods.\n const collectedStyles = context.collectedStyles.get(context.currentQuerySelector);\n const collectedEntry = collectedStyles.get(prop);\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime && endTime <= collectedEntry.endTime) {\n context.errors.push(invalidParallelAnimation(prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles.set(prop, {\n startTime,\n endTime\n });\n }\n if (context.options) {\n validateStyleParams(value, context.options, context.errors);\n }\n });\n });\n }\n visitKeyframes(metadata, context) {\n const ast = {\n type: AnimationMetadataType.Keyframes,\n styles: [],\n options: null\n };\n if (!context.currentAnimateTimings) {\n context.errors.push(invalidKeyframes());\n return ast;\n }\n const MAX_KEYFRAME_OFFSET = 1;\n let totalKeyframesWithOffsets = 0;\n const offsets = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset = 0;\n const keyframes = metadata.steps.map(styles => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n if (keyframesOutOfRange) {\n context.errors.push(invalidOffset());\n }\n if (offsetsOutOfOrder) {\n context.errors.push(keyframeOffsetsOutOfOrder());\n }\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(keyframesMissingOffsets());\n } else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? i == limit ? 1 : generatedOffset * i : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n });\n return ast;\n }\n visitReference(metadata, context) {\n return {\n type: AnimationMetadataType.Reference,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: AnimationMetadataType.AnimateChild,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateRef(metadata, context) {\n return {\n type: AnimationMetadataType.AnimateRef,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitQuery(metadata, context) {\n const parentSelector = context.currentQuerySelector;\n const options = metadata.options || {};\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector = parentSelector.length ? parentSelector + ' ' + selector : selector;\n getOrSetDefaultValue(context.collectedStyles, context.currentQuerySelector, new Map());\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: AnimationMetadataType.Query,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(invalidStagger());\n }\n const timings = metadata.timings === 'full' ? {\n duration: 0,\n delay: 0,\n easing: 'full'\n } : resolveTiming(metadata.timings, context.errors, true);\n return {\n type: AnimationMetadataType.Stagger,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null\n };\n }\n}\nfunction normalizeSelector(selector) {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // Note: the :enter and :leave aren't normalized here since those\n // selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR).replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.slice(1)).replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\nfunction normalizeParams(obj) {\n return obj ? {\n ...obj\n } : null;\n}\nclass AnimationAstBuilderContext {\n errors;\n queryCount = 0;\n depCount = 0;\n currentTransition = null;\n currentQuery = null;\n currentQuerySelector = null;\n currentAnimateTimings = null;\n currentTime = 0;\n collectedStyles = /*#__PURE__*/new Map();\n options = null;\n unsupportedCSSPropertiesFound = /*#__PURE__*/new Set();\n constructor(errors) {\n this.errors = errors;\n }\n}\nfunction consumeOffset(styles) {\n if (typeof styles == 'string') return null;\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach(styleTuple => {\n if (styleTuple instanceof Map && styleTuple.has('offset')) {\n const obj = styleTuple;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n });\n } else if (styles instanceof Map && styles.has('offset')) {\n const obj = styles;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n return offset;\n}\nfunction constructTimingAst(value, errors) {\n if (value.hasOwnProperty('duration')) {\n return value;\n }\n if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n const strValue = value;\n const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '');\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast;\n }\n const timings = resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = {\n ...options\n };\n if (options['params']) {\n options['params'] = normalizeParams(options['params']);\n }\n } else {\n options = {};\n }\n return options;\n}\nfunction makeTimingAst(duration, delay, easing) {\n return {\n duration,\n delay,\n easing\n };\n}\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* AnimationTransitionInstructionType.TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline\n };\n}\nclass ElementInstructionMap {\n _map = /*#__PURE__*/new Map();\n get(element) {\n return this._map.get(element) || [];\n }\n append(element, instructions) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n has(element) {\n return this._map.has(element);\n }\n clear() {\n this._map.clear();\n }\n}\nconst ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = /*#__PURE__*/new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = /*#__PURE__*/new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```ts\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```ts\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergeSort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```ts\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill map.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = new Map(), finalStyles = new Map(), options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n context.currentTimeline.delayNextStep(delay);\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter(timeline => timeline.containsAnimation());\n // note: we just want to apply the final styles for the rootElement, so we do not\n // just apply the styles to the last timeline but the last timeline which\n // element is the root one (basically `*`-styles are replaced with the actual\n // state style values only for the root element)\n if (timelines.length && finalStyles.size) {\n let lastRootTimeline;\n for (let i = timelines.length - 1; i >= 0; i--) {\n const timeline = timelines[i];\n if (timeline.element === rootElement) {\n lastRootTimeline = timeline;\n break;\n }\n }\n if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {\n lastRootTimeline.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ? timelines.map(timeline => timeline.buildKeyframes()) : [createTimelineInstruction(rootElement, [], [], [], 0, delay, '', false)];\n }\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n visitAnimateChild(ast, context) {\n const elementInstructions = context.subInstructions.get(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n visitAnimateRef(ast, context) {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this._applyAnimationRefDelays([ast.options, ast.animation.options], context, innerContext);\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n _applyAnimationRefDelays(animationsRefsOptions, context, innerContext) {\n for (const animationRefOptions of animationsRefsOptions) {\n const animationDelay = animationRefOptions?.delay;\n if (animationDelay) {\n const animationDelayValue = typeof animationDelay === 'number' ? animationDelay : resolveTimingValue(interpolateParams(animationDelay, animationRefOptions?.params ?? {}, context.errors));\n innerContext.delayNextStep(animationDelayValue);\n }\n }\n }\n _visitSubInstructions(instructions, context, options) {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach(instruction => {\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime = Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n return furthestTime;\n }\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n visitSequence(ast, context) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == AnimationMetadataType.Style) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach(s => visitDslNode(this, s, ctx));\n // this is here just in case the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n visitGroup(ast, context) {\n const innerTimelines = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach(s => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n _visitTiming(ast, context) {\n if (ast.dynamic) {\n const strValue = ast.strValue;\n const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n } else {\n return {\n duration: ast.duration,\n delay: ast.delay,\n easing: ast.easing\n };\n }\n }\n visitAnimate(ast, context) {\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n const style = ast.style;\n if (style.type == AnimationMetadataType.Keyframes) {\n this.visitKeyframes(style, context);\n } else {\n context.incrementTime(timings.duration);\n this.visitStyle(style, context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n visitStyle(ast, context) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings;\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.hasCurrentStyleProperties()) {\n timeline.forwardFrame();\n }\n const easing = timings && timings.easing || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n } else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n visitKeyframes(ast, context) {\n const currentAnimateTimings = context.currentAnimateTimings;\n const startTime = context.currentTimeline.duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach(step => {\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = ast.options || {};\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay && (context.previousNode.type === AnimationMetadataType.Style || startTime == 0 && context.currentTimeline.hasCurrentStyleProperties())) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n let furthestTime = startTime;\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n let sameElementTimeline = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n visitStagger(ast, context) {\n const parentContext = context.parentContext;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime = tl.currentTime - startingTime + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\nconst DEFAULT_NOOP_PREVIOUS_NODE = {};\nclass AnimationTimelineContext {\n _driver;\n element;\n subInstructions;\n _enterClassName;\n _leaveClassName;\n errors;\n timelines;\n parentContext = null;\n currentTimeline;\n currentAnimateTimings = null;\n previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n subContextCount = 0;\n options = {};\n currentQueryIndex = 0;\n currentQueryTotal = 0;\n currentStaggerTime = 0;\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n get params() {\n return this.options.params;\n }\n updateOptions(options, skipIfExists) {\n if (!options) return;\n const newOptions = options;\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n optionsToUpdate.duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate = optionsToUpdate.params;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach(name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n _copyOptions() {\n const options = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params = options['params'] = {};\n Object.keys(oldParams).forEach(name => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n createSubContext(options = null, element, newTime) {\n const target = element || this.element;\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n appendInstructionToTimeline(instruction, duration, delay) {\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) {\n // only if :self is used then the selector can be empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) : elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(invalidQuery(originalSelector));\n }\n return results;\n }\n}\nclass TimelineBuilder {\n _driver;\n element;\n startTime;\n _elementTimelineStylesLookup;\n duration = 0;\n easing = null;\n _previousKeyframe = /*#__PURE__*/new Map();\n _currentKeyframe = /*#__PURE__*/new Map();\n _keyframes = /*#__PURE__*/new Map();\n _styleSummary = /*#__PURE__*/new Map();\n _localTimelineStyles = /*#__PURE__*/new Map();\n _globalTimelineStyles;\n _pendingStyles = /*#__PURE__*/new Map();\n _backFill = /*#__PURE__*/new Map();\n _currentEmptyStepKeyframe = null;\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element);\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.hasCurrentStyleProperties();\n default:\n return true;\n }\n }\n hasCurrentStyleProperties() {\n return this._currentKeyframe.size > 0;\n }\n get currentTime() {\n return this.startTime + this.duration;\n }\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size === 1 && this._pendingStyles.size;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n } else {\n this.startTime += delay;\n }\n }\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration);\n if (!this._currentKeyframe) {\n this._currentKeyframe = new Map();\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n _updateStyle(prop, value) {\n this._localTimelineStyles.set(prop, value);\n this._globalTimelineStyles.set(prop, value);\n this._styleSummary.set(prop, {\n time: this.currentTime,\n value\n });\n }\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n for (let [prop, value] of this._globalTimelineStyles) {\n this._backFill.set(prop, value || AUTO_STYLE);\n this._currentKeyframe.set(prop, AUTO_STYLE);\n }\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n const params = options && options.params || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n for (let [prop, value] of styles) {\n const val = interpolateParams(value, params, errors);\n this._pendingStyles.set(prop, val);\n if (!this._localTimelineStyles.has(prop)) {\n this._backFill.set(prop, this._globalTimelineStyles.get(prop) ?? AUTO_STYLE);\n }\n this._updateStyle(prop, val);\n }\n }\n applyStylesToKeyframe() {\n if (this._pendingStyles.size == 0) return;\n this._pendingStyles.forEach((val, prop) => {\n this._currentKeyframe.set(prop, val);\n });\n this._pendingStyles.clear();\n this._localTimelineStyles.forEach((val, prop) => {\n if (!this._currentKeyframe.has(prop)) {\n this._currentKeyframe.set(prop, val);\n }\n });\n }\n snapshotCurrentStyles() {\n for (let [prop, val] of this._localTimelineStyles) {\n this._pendingStyles.set(prop, val);\n this._updateStyle(prop, val);\n }\n }\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n get properties() {\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n mergeTimelineCollectedStyles(timeline) {\n timeline._styleSummary.forEach((details1, prop) => {\n const details0 = this._styleSummary.get(prop);\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n buildKeyframes() {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n let finalKeyframes = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = new Map([...this._backFill, ...keyframe]);\n finalKeyframe.forEach((value, prop) => {\n if (value === ɵPRE_STYLE) {\n preStyleProps.add(prop);\n } else if (value === AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe.set('offset', time / this.duration);\n }\n finalKeyframes.push(finalKeyframe);\n });\n const preProps = [...preStyleProps.values()];\n const postProps = [...postStyleProps.values()];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = new Map(kf0);\n kf0.set('offset', 0);\n kf1.set('offset', 1);\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n keyframes;\n preStyleProps;\n postStyleProps;\n _stretchStartingKeyframe;\n timings;\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = {\n duration: timings.duration,\n delay: timings.delay,\n easing: timings.easing\n };\n }\n containsAnimation() {\n return this.keyframes.length > 1;\n }\n buildKeyframes() {\n let keyframes = this.keyframes;\n let {\n delay,\n duration,\n easing\n } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = new Map(keyframes[0]);\n newFirstKeyframe.set('offset', 0);\n newKeyframes.push(newFirstKeyframe);\n const oldFirstKeyframe = new Map(keyframes[0]);\n oldFirstKeyframe.set('offset', roundOffset(startingGap));\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still rendered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n delay=1000, duration=1000, keyframes = 0 .5 1\n turns into\n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = new Map(keyframes[i]);\n const oldOffset = kf.get('offset');\n const timeAtKeyframe = delay + oldOffset * duration;\n kf.set('offset', roundOffset(timeAtKeyframe / totalTime));\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nfunction roundOffset(offset, decimalPoints = 3) {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\nfunction flattenStyles(input, allStyles) {\n const styles = new Map();\n let allProperties;\n input.forEach(token => {\n if (token === '*') {\n allProperties ??= allStyles.keys();\n for (let prop of allProperties) {\n styles.set(prop, AUTO_STYLE);\n }\n } else {\n for (let [prop, val] of token) {\n styles.set(prop, val);\n }\n }\n });\n return styles;\n}\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* AnimationTransitionInstructionType.TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n _triggerName;\n ast;\n _stateStyles;\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n buildStyles(stateName, params, errors) {\n let styler = this._stateStyles.get('*');\n if (stateName !== undefined) {\n styler = this._stateStyles.get(stateName?.toString()) || styler;\n }\n return styler ? styler.buildStyles(params, errors) : new Map();\n }\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n const errors = [];\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n const queriedElements = new Set();\n const preStyleMap = new Map();\n const postStyleMap = new Map();\n const isRemoval = nextState === 'void';\n const animationOptions = {\n params: applyParamDefaults(nextAnimationParams, transitionAnimationParams),\n delay: this.ast.options?.delay\n };\n const timelines = skipAstBuild ? [] : buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n let totalTime = 0;\n timelines.forEach(tl => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach(tl => {\n const elm = tl.element;\n const preProps = getOrSetDefaultValue(preStyleMap, elm, new Set());\n tl.preStyleProps.forEach(prop => preProps.add(prop));\n const postProps = getOrSetDefaultValue(postStyleMap, elm, new Set());\n tl.postStyleProps.forEach(prop => postProps.add(prop));\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n checkNonAnimatableInTimelines(timelines, this._triggerName, driver);\n }\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, [...queriedElements.values()], preStyleMap, postStyleMap, totalTime);\n }\n}\n/**\n * Checks inside a set of timelines if they try to animate a css property which is not considered\n * animatable, in that case it prints a warning on the console.\n * Besides that the function doesn't have any other effect.\n *\n * Note: this check is done here after the timelines are built instead of doing on a lower level so\n * that we can make sure that the warning appears only once per instruction (we can aggregate here\n * all the issues instead of finding them separately).\n *\n * @param timelines The built timelines for the current instruction.\n * @param triggerName The name of the trigger for the current instruction.\n * @param driver Animation driver used to perform the check.\n *\n */\nfunction checkNonAnimatableInTimelines(timelines, triggerName, driver) {\n if (!driver.validateAnimatableStyleProperty) {\n return;\n }\n const allowedNonAnimatableProps = new Set([\n // 'easing' is a utility/synthetic prop we use to represent\n // easing functions, it represents a property of the animation\n // which is not animatable but different values can be used\n // in different steps\n 'easing']);\n const invalidNonAnimatableProps = new Set();\n timelines.forEach(({\n keyframes\n }) => {\n const nonAnimatablePropsInitialValues = new Map();\n keyframes.forEach(keyframe => {\n const entriesToCheck = Array.from(keyframe.entries()).filter(([prop]) => !allowedNonAnimatableProps.has(prop));\n for (const [prop, value] of entriesToCheck) {\n if (!driver.validateAnimatableStyleProperty(prop)) {\n if (nonAnimatablePropsInitialValues.has(prop) && !invalidNonAnimatableProps.has(prop)) {\n const propInitialValue = nonAnimatablePropsInitialValues.get(prop);\n if (propInitialValue !== value) {\n invalidNonAnimatableProps.add(prop);\n }\n } else {\n nonAnimatablePropsInitialValues.set(prop, value);\n }\n }\n }\n });\n });\n if (invalidNonAnimatableProps.size > 0) {\n console.warn(`Warning: The animation trigger \"${triggerName}\" is attempting to animate the following` + ' not animatable properties: ' + Array.from(invalidNonAnimatableProps).join(', ') + '\\n' + '(to check the list of all animatable properties visit https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties)');\n }\n}\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some(fn => fn(currentState, nextState, element, params));\n}\nfunction applyParamDefaults(userParams, defaults) {\n const result = {\n ...defaults\n };\n Object.entries(userParams).forEach(([key, value]) => {\n if (value != null) {\n result[key] = value;\n }\n });\n return result;\n}\nclass AnimationStateStyles {\n styles;\n defaultParams;\n normalizer;\n constructor(styles, defaultParams, normalizer) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n this.normalizer = normalizer;\n }\n buildStyles(params, errors) {\n const finalStyles = new Map();\n const combinedParams = applyParamDefaults(params, this.defaultParams);\n this.styles.styles.forEach(value => {\n if (typeof value !== 'string') {\n value.forEach((val, prop) => {\n if (val) {\n val = interpolateParams(val, combinedParams, errors);\n }\n const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);\n val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);\n finalStyles.set(prop, val);\n });\n }\n });\n return finalStyles;\n }\n}\nfunction buildTrigger(name, ast, normalizer) {\n return new AnimationTrigger(name, ast, normalizer);\n}\nclass AnimationTrigger {\n name;\n ast;\n _normalizer;\n transitionFactories = [];\n fallbackTransition;\n states = /*#__PURE__*/new Map();\n constructor(name, ast, _normalizer) {\n this.name = name;\n this.ast = ast;\n this._normalizer = _normalizer;\n ast.states.forEach(ast => {\n const defaultParams = ast.options && ast.options.params || {};\n this.states.set(ast.name, new AnimationStateStyles(ast.style, defaultParams, _normalizer));\n });\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach(ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);\n }\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n matchTransition(currentState, nextState, element, params) {\n const entry = this.transitionFactories.find(f => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nfunction createFallbackTransition(triggerName, states, normalizer) {\n const matchers = [(fromState, toState) => true];\n const animation = {\n type: AnimationMetadataType.Sequence,\n steps: [],\n options: null\n };\n const transition = {\n type: AnimationMetadataType.Transition,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\nfunction balanceProperties(stateMap, key1, key2) {\n if (stateMap.has(key1)) {\n if (!stateMap.has(key2)) {\n stateMap.set(key2, stateMap.get(key1));\n }\n } else if (stateMap.has(key2)) {\n stateMap.set(key1, stateMap.get(key2));\n }\n}\nconst EMPTY_INSTRUCTION_MAP = /*#__PURE__*/new ElementInstructionMap();\nclass TimelineAnimationEngine {\n bodyNode;\n _driver;\n _normalizer;\n _animations = /*#__PURE__*/new Map();\n _playersById = /*#__PURE__*/new Map();\n players = [];\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n }\n register(id, metadata) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw registerFailed(errors);\n } else {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (warnings.length) {\n warnRegister(warnings);\n }\n }\n this._animations.set(id, ast);\n }\n }\n _buildPlayer(i, preStyles, postStyles) {\n const element = i.element;\n const keyframes = normalizeKeyframes$1(this._normalizer, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n create(id, element, options = {}) {\n const errors = [];\n const ast = this._animations.get(id);\n let instructions;\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, new Map(), new Map(), options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach(inst => {\n const styles = getOrSetDefaultValue(autoStylesMap, inst.element, new Map());\n inst.postStyleProps.forEach(prop => styles.set(prop, null));\n });\n } else {\n errors.push(missingOrDestroyedAnimation());\n instructions = [];\n }\n if (errors.length) {\n throw createAnimationFailed(errors);\n }\n autoStylesMap.forEach((styles, element) => {\n styles.forEach((_, prop) => {\n styles.set(prop, this._driver.computeStyle(element, prop, AUTO_STYLE));\n });\n });\n const players = instructions.map(i => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, new Map(), styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById.set(id, player);\n player.onDestroy(() => this.destroy(id));\n this.players.push(player);\n return player;\n }\n destroy(id) {\n const player = this._getPlayer(id);\n player.destroy();\n this._playersById.delete(id);\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n _getPlayer(id) {\n const player = this._playersById.get(id);\n if (!player) {\n throw missingPlayer(id);\n }\n return player;\n }\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => {};\n }\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, args[0]);\n return;\n }\n if (command == 'create') {\n const options = args[0] || {};\n this.create(id, element, options);\n return;\n }\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0]));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\nconst EMPTY_PLAYER_ARRAY = [];\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\nconst REMOVAL_FLAG = '__ng_removed';\nclass StateValue {\n namespaceId;\n value;\n options;\n get params() {\n return this.options.params;\n }\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n // we drop the value property from options.\n const {\n value,\n ...options\n } = input;\n this.options = options;\n } else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n absorbOptions(options) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params;\n Object.keys(newParams).forEach(prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\nconst VOID_VALUE = 'void';\nconst DEFAULT_STATE_VALUE = /*#__PURE__*/new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n id;\n hostElement;\n _engine;\n players = [];\n _triggers = /*#__PURE__*/new Map();\n _queue = [];\n _elementListeners = /*#__PURE__*/new Map();\n _hostClassName;\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n listen(element, name, phase, callback) {\n if (!this._triggers.has(name)) {\n throw missingTrigger(phase, name);\n }\n if (phase == null || phase.length == 0) {\n throw missingEvent(name);\n }\n if (!isTriggerEventValid(phase)) {\n throw unsupportedTriggerEvent(phase, name);\n }\n const listeners = getOrSetDefaultValue(this._elementListeners, element, []);\n const data = {\n name,\n phase,\n callback\n };\n listeners.push(data);\n const triggersWithStates = getOrSetDefaultValue(this._engine.statesByElement, element, new Map());\n if (!triggersWithStates.has(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates.set(name, DEFAULT_STATE_VALUE);\n }\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers.has(name)) {\n triggersWithStates.delete(name);\n }\n });\n };\n }\n register(name, ast) {\n if (this._triggers.has(name)) {\n // throw\n return false;\n } else {\n this._triggers.set(name, ast);\n return true;\n }\n }\n _getTrigger(name) {\n const trigger = this._triggers.get(name);\n if (!trigger) {\n throw unregisteredTrigger(name);\n }\n return trigger;\n }\n trigger(element, triggerName, value, defaultToFallback = true) {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = new Map());\n }\n let fromState = triggersWithStates.get(triggerName);\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates.set(triggerName, toState);\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n } else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n const playersOnElement = getOrSetDefaultValue(this._engine.playersByElement, element, []);\n playersOnElement.forEach(player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new player)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback) return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition\n });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n deregister(name) {\n this._triggers.delete(name);\n this._engine.statesByElement.forEach(stateMap => stateMap.delete(name));\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter(entry => {\n return entry.name != name;\n }));\n });\n }\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach(player => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n _signalRemovalForInnerTriggers(rootElement, context) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach(elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG]) return;\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));\n } else {\n this.clearElementCache(elm);\n }\n });\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(() => elements.forEach(elm => this.clearElementCache(elm)));\n }\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n const triggerStates = this._engine.statesByElement.get(element);\n const previousTriggersValues = new Map();\n if (triggerStates) {\n const players = [];\n triggerStates.forEach((state, triggerName) => {\n previousTriggersValues.set(triggerName, state.value);\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers.has(triggerName)) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n prepareLeaveAnimationListeners(element) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach(listener => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName)) return;\n visitedTriggers.add(triggerName);\n const trigger = this._triggers.get(triggerName);\n const transition = trigger.fallbackTransition;\n const fromState = elementStates.get(triggerName) || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n });\n }\n }\n removeNode(element, context) {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true)) return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n } else {\n let parent = element;\n while (parent = parent.parentNode) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n } else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n insertNode(element, parent) {\n addClass(element, this._hostClassName);\n }\n drainQueuedTransitions(microtaskId) {\n const instructions = [];\n this._queue.forEach(entry => {\n const player = entry.player;\n if (player.destroyed) return;\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach(listener => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n baseEvent['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n } else {\n instructions.push(entry);\n }\n });\n this._queue = [];\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n destroy(context) {\n this.players.forEach(p => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n}\nclass TransitionAnimationEngine {\n bodyNode;\n driver;\n _normalizer;\n players = [];\n newHostElements = /*#__PURE__*/new Map();\n playersByElement = /*#__PURE__*/new Map();\n playersByQueriedElement = /*#__PURE__*/new Map();\n statesByElement = /*#__PURE__*/new Map();\n disabledNodes = /*#__PURE__*/new Set();\n totalAnimations = 0;\n totalQueuedPlayers = 0;\n _namespaceLookup = {};\n _namespaceList = [];\n _flushFns = [];\n _whenQuietFns = [];\n namespacesByHostElement = /*#__PURE__*/new Map();\n collectedEnterElements = [];\n collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n onRemovalComplete = (element, context) => {};\n /** @internal */\n _onRemovalComplete(element, context) {\n this.onRemovalComplete(element, context);\n }\n constructor(bodyNode, driver, _normalizer) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n }\n get queuedPlayers() {\n const players = [];\n this._namespaceList.forEach(ns => {\n ns.players.forEach(player => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n createNamespace(namespaceId, hostElement) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n } else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is a part of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n _balanceNamespaceList(ns, hostElement) {\n const namespaceList = this._namespaceList;\n const namespacesByHostElement = this.namespacesByHostElement;\n const limit = namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n // Find the closest ancestor with an existing namespace so we can then insert `ns` after it,\n // establishing a top-down ordering of namespaces in `this._namespaceList`.\n let ancestor = this.driver.getParentElement(hostElement);\n while (ancestor) {\n const ancestorNs = namespacesByHostElement.get(ancestor);\n if (ancestorNs) {\n // An animation namespace has been registered for this ancestor, so we insert `ns`\n // right after it to establish top-down ordering of animation namespaces.\n const index = namespaceList.indexOf(ancestorNs);\n namespaceList.splice(index + 1, 0, ns);\n found = true;\n break;\n }\n ancestor = this.driver.getParentElement(ancestor);\n }\n if (!found) {\n // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to\n // ensure that any existing descendants are ordered after `ns`, retaining the desired\n // top-down ordering.\n namespaceList.unshift(ns);\n }\n } else {\n namespaceList.push(ns);\n }\n namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n register(namespaceId, hostElement) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n registerTrigger(namespaceId, name, trigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n destroy(namespaceId, context) {\n if (!namespaceId) return;\n this.afterFlush(() => {});\n this.afterFlushAnimationsDone(() => {\n const ns = this._fetchNamespace(namespaceId);\n this.namespacesByHostElement.delete(ns.hostElement);\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n ns.destroy(context);\n delete this._namespaceLookup[namespaceId];\n });\n }\n _fetchNamespace(id) {\n return this._namespaceLookup[id];\n }\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply deduplicate\n // the namespaces in case (for the reason described above) there are multiple triggers\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n for (let stateValue of elementStates.values()) {\n if (stateValue.namespaceId) {\n const ns = this._fetchNamespace(stateValue.namespaceId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element)) return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n collectEnterElement(element) {\n this.collectedEnterElements.push(element);\n }\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n } else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n removeNode(namespaceId, element, context) {\n if (isElementNode(element)) {\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n } else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n } else {\n this._onRemovalComplete(element, context);\n }\n }\n markElementAsRemoved(namespaceId, element, hasAnimation, context, previousTriggersValues) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context,\n hasAnimation,\n removedBeforeQueried: false,\n previousTriggersValues\n };\n }\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => {};\n }\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n destroyInnerAnimations(containerElement) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach(element => this.destroyActiveAnimationsForElement(element));\n if (this.playersByQueriedElement.size == 0) return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));\n }\n destroyActiveAnimationsForElement(element) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach(player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n } else {\n player.destroy();\n }\n });\n }\n }\n finishActiveQueriedAnimationOnElement(element) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach(player => player.finish());\n }\n }\n whenRenderingDone() {\n return new Promise(resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n } else {\n resolve();\n }\n });\n }\n processLeaveNode(element) {\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if (element.classList?.contains(DISABLED_CLASSNAME)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {\n this.markElementAsDisabled(node, false);\n });\n }\n flush(microtaskId = -1) {\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length && (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n } finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n } else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach(fn => fn());\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach(fn => fn());\n });\n } else {\n quietFns.forEach(fn => fn());\n }\n }\n }\n reportError(errors) {\n throw triggerTransitionsFailed(errors);\n }\n _flushAnimations(cleanupFns, microtaskId) {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map();\n const allPostStyleElements = new Map();\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach(node => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n const allLeaveNodes = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));\n } else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n allLeaveNodes.forEach(element => {\n this.processLeaveNode(element);\n });\n });\n const allPlayers = [];\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach(entry => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG];\n // animations for move operations (elements being removed and reinserted,\n // e.g. when the order of an *ngFor list changes) are currently not supported\n if (details && details.setForMove) {\n if (details.previousTriggersValues && details.previousTriggersValues.has(entry.triggerName)) {\n const previousValue = details.previousTriggersValues.get(entry.triggerName);\n // we need to restore the previous trigger value since the element has\n // only been moved and hasn't actually left the DOM\n const triggersWithStates = this.statesByElement.get(entry.element);\n if (triggersWithStates && triggersWithStates.has(entry.triggerName)) {\n const state = triggersWithStates.get(entry.triggerName);\n state.value = previousValue;\n triggersWithStates.set(entry.triggerName, state);\n }\n }\n player.destroy();\n return;\n }\n }\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element);\n const enterClassName = enterNodeMapIds.get(element);\n const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned);\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be in the DOM, it may still\n // be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important to still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // if an unmatched transition is queued and ready to go\n // then it SHOULD NOT render an animation and cancel the\n // previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub-trigger\n // then it will instruct the timeline builder not to add a player delay, but\n // instead stretch the first keyframe gap until the animation starts. This is\n // important in order to prevent extra initialization styles from being\n // required by the user for the animation.\n const timelines = [];\n instruction.timelines.forEach(tl => {\n tl.stretchStartingKeyframe = true;\n if (!this.disabledNodes.has(tl.element)) {\n timelines.push(tl);\n }\n });\n instruction.timelines = timelines;\n subTimelines.append(element, instruction.timelines);\n const tuple = {\n instruction,\n player,\n element\n };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach(element => getOrSetDefaultValue(queriedElements, element, []).push(player));\n instruction.preStyleProps.forEach((stringMap, element) => {\n if (stringMap.size) {\n let setVal = allPreStyleElements.get(element);\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n }\n });\n instruction.postStyleProps.forEach((stringMap, element) => {\n let setVal = allPostStyleElements.get(element);\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n });\n });\n }\n if (erroneousTransitions.length) {\n const errors = [];\n erroneousTransitions.forEach(instruction => {\n errors.push(transitionFailed(instruction.triggerName, instruction.errors));\n });\n allPlayers.forEach(player => player.destroy());\n this.reportError(errors);\n }\n const allPreviousPlayersMap = new Map();\n // this map tells us which element in the DOM tree is contained by\n // which animation. Further down this map will get populated once\n // the players are built and in doing so we can use it to efficiently\n // figure out if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach(entry => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n skippedPlayers.forEach(player => {\n const element = player.element;\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach(prevPlayer => {\n getOrSetDefaultValue(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n // this is a special case for nodes that will be removed either by\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or \"auto\" since the element\n // passed to getComputedStyle will not be visible (since * === destination)\n const replaceNodes = allLeaveNodes.filter(node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach(node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n });\n replaceNodes.forEach(node => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, new Map([...(post?.entries() ?? []), ...(pre?.entries() ?? [])]));\n });\n const rootPlayers = [];\n const subPlayers = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach(entry => {\n const {\n element,\n player,\n instruction\n } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd = [];\n while (elm = elm.parentNode) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));\n }\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n } else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n } else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n // find all of the sub players' corresponding inner animation players\n subPlayers.forEach(player => {\n // even if no players are found for a sub animation it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach(player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n } else {\n player.destroy();\n }\n });\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG];\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation) continue;\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n const activePlayers = players.filter(p => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n } else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach(player => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n return rootPlayers;\n }\n afterFlush(callback) {\n this._flushFns.push(callback);\n }\n afterFlushAnimationsDone(callback) {\n this._whenQuietFns.push(callback);\n }\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n let players = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n } else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach(player => {\n if (player.queued) return;\n if (!isRemovalAnimation && player.triggerName != triggerName) return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter(player => {\n if (namespaceId && namespaceId != player.namespaceId) return false;\n if (triggerName && triggerName != player.triggerName) return false;\n return true;\n });\n }\n return players;\n }\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId;\n const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetDefaultValue(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach(player => {\n const realPlayer = player.getRealPlayer();\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map(timelineInstruction => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried) return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY).map(p => p.getRealPlayer())).filter(p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p;\n return pp.element ? pp.element === element : false;\n });\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n const keyframes = normalizeKeyframes$1(this._normalizer, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n });\n allQueriedPlayers.forEach(player => {\n getOrSetDefaultValue(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach(element => {\n getOrSetDefaultValue(skippedPlayersMap, element, []).push(player);\n });\n return player;\n }\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nclass TransitionAnimationPlayer {\n namespaceId;\n triggerName;\n element;\n _player = /*#__PURE__*/new NoopAnimationPlayer();\n _containsRealPlayer = false;\n _queuedCallbacks = /*#__PURE__*/new Map();\n destroyed = false;\n parentPlayer = null;\n markedForDestroy = false;\n disabled = false;\n queued = true;\n totalTime = 0;\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n }\n setRealPlayer(player) {\n if (this._containsRealPlayer) return;\n this._player = player;\n this._queuedCallbacks.forEach((callbacks, phase) => {\n callbacks.forEach(callback => listenOnPlayer(player, phase, undefined, callback));\n });\n this._queuedCallbacks.clear();\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n this.queued = false;\n }\n getRealPlayer() {\n return this._player;\n }\n overrideTotalTime(totalTime) {\n this.totalTime = totalTime;\n }\n syncPlayerEvents(player) {\n const p = this._player;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n _queueEvent(name, callback) {\n getOrSetDefaultValue(this._queuedCallbacks, name, []).push(callback);\n }\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n init() {\n this._player.init();\n }\n hasStarted() {\n return this.queued ? false : this._player.hasStarted();\n }\n play() {\n !this.queued && this._player.play();\n }\n pause() {\n !this.queued && this._player.pause();\n }\n restart() {\n !this.queued && this._player.restart();\n }\n finish() {\n this._player.finish();\n }\n destroy() {\n this.destroyed = true;\n this._player.destroy();\n }\n reset() {\n !this.queued && this._player.reset();\n }\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n getPosition() {\n return this.queued ? 0 : this._player.getPosition();\n }\n /** @internal */\n triggerCallback(phaseName) {\n const p = this._player;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nfunction deleteOrUnsetInMap(map, key, value) {\n let currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n return currentValues;\n}\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\nfunction cloakElement(element, value) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n const cloakVals = [];\n elements.forEach(element => cloakVals.push(cloakElement(element)));\n const failedElements = [];\n elementPropsMap.forEach((props, element) => {\n const styles = new Map();\n props.forEach(prop => {\n const value = driver.computeStyle(element, prop, defaultStyle);\n styles.set(prop, value);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach(element => cloakElement(element, cloakVals[i++]));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots, nodes) {\n const rootMap = new Map();\n roots.forEach(root => rootMap.set(root, []));\n if (nodes.length == 0) return rootMap;\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n function getRoot(node) {\n if (!node) return NULL_NODE;\n let root = localRootMap.get(node);\n if (root) return root;\n const parent = node.parentNode;\n if (rootMap.has(parent)) {\n // ngIf inside @trigger\n root = parent;\n } else if (nodeSet.has(parent)) {\n // ngIf inside ngIf\n root = NULL_NODE;\n } else {\n // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach(node => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root).push(node);\n }\n });\n return rootMap;\n}\nfunction addClass(element, className) {\n element.classList?.add(className);\n}\nfunction removeClass(element, className) {\n element.classList?.remove(className);\n}\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\nfunction flattenGroupPlayers(players) {\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n } else {\n finalPlayers.push(player);\n }\n }\n}\nfunction objEquals(a, b) {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length) return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop]) return false;\n }\n return true;\n}\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry) return false;\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach(data => preEntry.add(data));\n } else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\nclass AnimationEngine {\n _driver;\n _normalizer;\n _transitionEngine;\n _timelineEngine;\n _triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n onRemovalComplete = (element, context) => {};\n constructor(doc, _driver, _normalizer) {\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._transitionEngine = new TransitionAnimationEngine(doc.body, _driver, _normalizer);\n this._timelineEngine = new TimelineAnimationEngine(doc.body, _driver, _normalizer);\n this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context);\n }\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw triggerBuildFailed(name, errors);\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (warnings.length) {\n warnTriggerBuild(name, warnings);\n }\n }\n trigger = buildTrigger(name, ast, this._normalizer);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n onRemove(namespaceId, element, context) {\n this._transitionEngine.removeNode(namespaceId, element, context);\n }\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value;\n this._timelineEngine.command(id, element, action, args);\n } else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n flush(microtaskId = -1) {\n this._transitionEngine.flush(microtaskId);\n }\n get players() {\n return [...this._transitionEngine.players, ...this._timelineEngine.players];\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\n }\n afterFlushAnimationsDone(cb) {\n this._transitionEngine.afterFlushAnimationsDone(cb);\n }\n}\n\n/**\n * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n let startStyles = null;\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n } else if (styles instanceof Map) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return startStyles || endStyles ? new SpecialCasedStyles(element, startStyles, endStyles) : null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nlet SpecialCasedStyles = /*#__PURE__*/(() => {\n class SpecialCasedStyles {\n _element;\n _startStyles;\n _endStyles;\n static initialStylesByElement = /* @__PURE__ */new WeakMap();\n _state = 0 /* SpecialCasedStylesState.Pending */;\n _initialStyles;\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = new Map());\n }\n this._initialStyles = initialStyles;\n }\n start() {\n if (this._state < 1 /* SpecialCasedStylesState.Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n finish() {\n this.start();\n if (this._state < 2 /* SpecialCasedStylesState.Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n destroy() {\n this.finish();\n if (this._state < 3 /* SpecialCasedStylesState.Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* SpecialCasedStylesState.Destroyed */;\n }\n }\n }\n return SpecialCasedStyles;\n})();\nfunction filterNonAnimatableStyles(styles) {\n let result = null;\n styles.forEach((val, prop) => {\n if (isNonAnimatableStyle(prop)) {\n result = result || new Map();\n result.set(prop, val);\n }\n });\n return result;\n}\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\nclass WebAnimationsPlayer {\n element;\n keyframes;\n options;\n _specialStyles;\n _onDoneFns = [];\n _onStartFns = [];\n _onDestroyFns = [];\n _duration;\n _delay;\n _initialized = false;\n _finished = false;\n _started = false;\n _destroyed = false;\n _finalKeyframe;\n // the following original fns are persistent copies of the _onStartFns and _onDoneFns\n // and are used to reset the fns to their original values upon reset()\n // (since the _onStartFns and _onDoneFns get deleted after they are called)\n _originalOnDoneFns = [];\n _originalOnStartFns = [];\n // using non-null assertion because it's re(set) by init();\n domPlayer;\n time = 0;\n parentPlayer = null;\n currentSnapshot = /*#__PURE__*/new Map();\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n _buildPlayer() {\n if (this._initialized) return;\n this._initialized = true;\n const keyframes = this.keyframes;\n // @ts-expect-error overwriting a readonly property\n this.domPlayer = this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : new Map();\n const onFinish = () => this._onFinish();\n this.domPlayer.addEventListener('finish', onFinish);\n this.onDestroy(() => {\n // We must remove the `finish` event listener once an animation has completed all its\n // iterations. This action is necessary to prevent a memory leak since the listener captures\n // `this`, creating a closure that prevents `this` from being garbage collected.\n this.domPlayer.removeEventListener('finish', onFinish);\n });\n }\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n } else {\n this.domPlayer.pause();\n }\n }\n _convertKeyframesToObject(keyframes) {\n const kfs = [];\n keyframes.forEach(frame => {\n kfs.push(Object.fromEntries(frame));\n });\n return kfs;\n }\n /** @internal */\n _triggerWebAnimation(element, keyframes, options) {\n return element.animate(this._convertKeyframesToObject(keyframes), options);\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n restart() {\n this.reset();\n this.play();\n }\n hasStarted() {\n return this._started;\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n setPosition(p) {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n getPosition() {\n // tsc is complaining with TS2362 without the conversion to number\n return +(this.domPlayer.currentTime ?? 0) / this.time;\n }\n get totalTime() {\n return this._delay + this._duration;\n }\n beforeDestroy() {\n const styles = new Map();\n if (this.hasStarted()) {\n // note: this code is invoked only when the `play` function was called prior to this\n // (thus `hasStarted` returns true), this implies that the code that initializes\n // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here\n const finalKeyframe = this._finalKeyframe;\n finalKeyframe.forEach((val, prop) => {\n if (prop !== 'offset') {\n styles.set(prop, this._finished ? val : computeStyle(this.element, prop));\n }\n });\n }\n this.currentSnapshot = styles;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName === 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\nclass WebAnimationsDriver {\n validateStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n return validateStyleProperty(prop);\n }\n return true;\n }\n validateAnimatableStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const cssProp = camelCaseToDashCase(prop);\n return validateWebAnimatableStyleProperty(cssProp);\n }\n return true;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return computeStyle(element, prop);\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = []) {\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions = {\n duration,\n delay,\n fill\n };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n const previousStyles = new Map();\n const previousWebAnimationPlayers = previousPlayers.filter(player => player instanceof WebAnimationsPlayer);\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach(player => {\n player.currentSnapshot.forEach((val, prop) => previousStyles.set(prop, val));\n });\n }\n let _keyframes = normalizeKeyframes(keyframes).map(styles => new Map(styles));\n _keyframes = balancePreviousStylesIntoKeyframes(element, _keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, _keyframes);\n return new WebAnimationsPlayer(element, _keyframes, playerOptions, specialStyles);\n }\n}\nfunction createEngine(type, doc) {\n // TODO: find a way to make this tree shakable.\n if (type === 'noop') {\n return new AnimationEngine(doc, new NoopAnimationDriver(), new NoopAnimationStyleNormalizer());\n }\n return new AnimationEngine(doc, new WebAnimationsDriver(), new WebAnimationsStyleNormalizer());\n}\nclass Animation {\n _driver;\n _animationAst;\n constructor(_driver, input) {\n this._driver = _driver;\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(_driver, input, errors, warnings);\n if (errors.length) {\n throw validationFailed(errors);\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (warnings.length) {\n warnValidation(warnings);\n }\n }\n this._animationAst = ast;\n }\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) : startingStyles;\n const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) : destinationStyles;\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n throw buildingFailed(errors);\n }\n return result;\n }\n}\nconst ANIMATION_PREFIX = '@';\nconst DISABLE_ANIMATIONS_FLAG = '@.disabled';\nclass BaseAnimationRenderer {\n namespaceId;\n delegate;\n engine;\n _onDestroy;\n // We need to explicitly type this property because of an api-extractor bug\n // See https://github.com/microsoft/rushstack/issues/4390\n ɵtype = 0 /* AnimationRendererType.Regular */;\n constructor(namespaceId, delegate, engine, _onDestroy) {\n this.namespaceId = namespaceId;\n this.delegate = delegate;\n this.engine = engine;\n this._onDestroy = _onDestroy;\n }\n get data() {\n return this.delegate.data;\n }\n destroyNode(node) {\n this.delegate.destroyNode?.(node);\n }\n destroy() {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.engine.afterFlushAnimationsDone(() => {\n // Call the renderer destroy method after the animations has finished as otherwise\n // styles will be removed too early which will cause an unstyled animation.\n queueMicrotask(() => {\n this.delegate.destroy();\n });\n });\n this._onDestroy?.();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n this.engine.onInsert(this.namespaceId, newChild, parent, false);\n }\n insertBefore(parent, newChild, refChild, isMove = true) {\n this.delegate.insertBefore(parent, newChild, refChild);\n // If `isMove` true than we should animate this insert.\n this.engine.onInsert(this.namespaceId, newChild, parent, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n // Prior to the changes in #57203, this method wasn't being called at all by `core` if the child\n // doesn't have a parent. There appears to be some animation-specific downstream logic that\n // depends on the null check happening before the animation engine. This check keeps the old\n // behavior while allowing `core` to not have to check for the parent element anymore.\n if (this.parentNode(oldChild)) {\n this.engine.onRemove(this.namespaceId, oldChild, this.delegate);\n }\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {\n this.disableAnimations(el, !!value);\n } else {\n this.delegate.setProperty(el, name, value);\n }\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback, options) {\n return this.delegate.listen(target, eventName, callback, options);\n }\n disableAnimations(element, value) {\n this.engine.disableAnimations(element, value);\n }\n}\nclass AnimationRenderer extends BaseAnimationRenderer {\n factory;\n constructor(factory, namespaceId, delegate, engine, onDestroy) {\n super(namespaceId, delegate, engine, onDestroy);\n this.factory = factory;\n this.namespaceId = namespaceId;\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX) {\n if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {\n value = value === undefined ? true : !!value;\n this.disableAnimations(el, value);\n } else {\n this.engine.process(this.namespaceId, el, name.slice(1), value);\n }\n } else {\n this.delegate.setProperty(el, name, value);\n }\n }\n listen(target, eventName, callback, options) {\n if (eventName.charAt(0) == ANIMATION_PREFIX) {\n const element = resolveElementFromTarget(target);\n let name = eventName.slice(1);\n let phase = '';\n // @listener.phase is for trigger animation callbacks\n // @@listener is for animation builder callbacks\n if (name.charAt(0) != ANIMATION_PREFIX) {\n [name, phase] = parseTriggerCallbackName(name);\n }\n return this.engine.listen(this.namespaceId, element, name, phase, event => {\n const countId = event['_data'] || -1;\n this.factory.scheduleListenerCallback(countId, callback, event);\n });\n }\n return this.delegate.listen(target, eventName, callback, options);\n }\n}\nfunction resolveElementFromTarget(target) {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\nfunction parseTriggerCallbackName(triggerName) {\n const dotIndex = triggerName.indexOf('.');\n const trigger = triggerName.substring(0, dotIndex);\n const phase = triggerName.slice(dotIndex + 1);\n return [trigger, phase];\n}\nclass AnimationRendererFactory {\n delegate;\n engine;\n _zone;\n _currentId = 0;\n _microtaskId = 1;\n _animationCallbacksBuffer = [];\n _rendererCache = /*#__PURE__*/new Map();\n _cdRecurDepth = 0;\n constructor(delegate, engine, _zone) {\n this.delegate = delegate;\n this.engine = engine;\n this._zone = _zone;\n engine.onRemovalComplete = (element, delegate) => {\n delegate?.removeChild(null, element);\n };\n }\n createRenderer(hostElement, type) {\n const EMPTY_NAMESPACE_ID = '';\n // cache the delegates to find out which cached delegate can\n // be used by which cached renderer\n const delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type?.data?.['animation']) {\n const cache = this._rendererCache;\n let renderer = cache.get(delegate);\n if (!renderer) {\n // Ensure that the renderer is removed from the cache on destroy\n // since it may contain references to detached DOM nodes.\n const onRendererDestroy = () => cache.delete(delegate);\n renderer = new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine, onRendererDestroy);\n // only cache this result when the base renderer is used\n cache.set(delegate, renderer);\n }\n return renderer;\n }\n const componentId = type.id;\n const namespaceId = type.id + '-' + this._currentId;\n this._currentId++;\n this.engine.register(namespaceId, hostElement);\n const registerTrigger = trigger => {\n if (Array.isArray(trigger)) {\n trigger.forEach(registerTrigger);\n } else {\n this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);\n }\n };\n const animationTriggers = type.data['animation'];\n animationTriggers.forEach(registerTrigger);\n return new AnimationRenderer(this, namespaceId, delegate, this.engine);\n }\n begin() {\n this._cdRecurDepth++;\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n _scheduleCountTask() {\n queueMicrotask(() => {\n this._microtaskId++;\n });\n }\n /** @internal */\n scheduleListenerCallback(count, fn, data) {\n if (count >= 0 && count < this._microtaskId) {\n this._zone.run(() => fn(data));\n return;\n }\n const animationCallbacksBuffer = this._animationCallbacksBuffer;\n if (animationCallbacksBuffer.length == 0) {\n queueMicrotask(() => {\n this._zone.run(() => {\n animationCallbacksBuffer.forEach(tuple => {\n const [fn, data] = tuple;\n fn(data);\n });\n this._animationCallbacksBuffer = [];\n });\n });\n }\n animationCallbacksBuffer.push([fn, data]);\n }\n end() {\n this._cdRecurDepth--;\n // this is to prevent animations from running twice when an inner\n // component does CD when a parent component instead has inserted it\n if (this._cdRecurDepth == 0) {\n this._zone.runOutsideAngular(() => {\n this._scheduleCountTask();\n this.engine.flush(this._microtaskId);\n });\n }\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n whenRenderingDone() {\n return this.engine.whenRenderingDone();\n }\n /**\n * Used during HMR to clear any cached data about a component.\n * @param componentId ID of the component that is being replaced.\n */\n componentReplaced(componentId) {\n // Flush the engine since the renderer destruction waits for animations to be done.\n this.engine.flush();\n this.delegate.componentReplaced?.(componentId);\n }\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationDriver, NoopAnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, BaseAnimationRenderer as ɵBaseAnimationRenderer, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, camelCaseToDashCase as ɵcamelCaseToDashCase, containsElement as ɵcontainsElement, createEngine as ɵcreateEngine, getParentElement as ɵgetParentElement, invokeQuery as ɵinvokeQuery, normalizeKeyframes as ɵnormalizeKeyframes, validateStyleProperty as ɵvalidateStyleProperty, validateWebAnimatableStyleProperty as ɵvalidateWebAnimatableStyleProperty };\n","/**\n * @license Angular v19.1.3\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, RendererFactory2, NgZone, ANIMATION_MODULE_TYPE, NgModule, ɵperformanceMarkFeature } from '@angular/core';\nexport { ANIMATION_MODULE_TYPE } from '@angular/core';\nimport { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';\nimport * as i1 from '@angular/animations/browser';\nimport { ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, ɵAnimationRendererFactory, ɵAnimationStyleNormalizer, AnimationDriver, ɵWebAnimationsDriver, NoopAnimationDriver } from '@angular/animations/browser';\nimport { DOCUMENT } from '@angular/common';\nlet InjectableAnimationEngine = /*#__PURE__*/(() => {\n class InjectableAnimationEngine extends ɵAnimationEngine {\n // The `ApplicationRef` is injected here explicitly to force the dependency ordering.\n // Since the `ApplicationRef` should be created earlier before the `AnimationEngine`, they\n // both have `ngOnDestroy` hooks and `flush()` must be called after all views are destroyed.\n constructor(doc, driver, normalizer) {\n super(doc, driver, normalizer);\n }\n ngOnDestroy() {\n this.flush();\n }\n static ɵfac = function InjectableAnimationEngine_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || InjectableAnimationEngine)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1.AnimationDriver), i0.ɵɵinject(i1.ɵAnimationStyleNormalizer));\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InjectableAnimationEngine,\n factory: InjectableAnimationEngine.ɵfac\n });\n }\n return InjectableAnimationEngine;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new ɵAnimationRendererFactory(renderer, engine, zone);\n}\nconst SHARED_ANIMATION_PROVIDERS = [{\n provide: ɵAnimationStyleNormalizer,\n useFactory: instantiateDefaultStyleNormalizer\n}, {\n provide: ɵAnimationEngine,\n useClass: InjectableAnimationEngine\n}, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n}];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nconst BROWSER_ANIMATIONS_PROVIDERS = [{\n provide: AnimationDriver,\n useFactory: () => new ɵWebAnimationsDriver()\n}, {\n provide: ANIMATION_MODULE_TYPE,\n useValue: 'BrowserAnimations'\n}, ...SHARED_ANIMATION_PROVIDERS];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nconst BROWSER_NOOP_ANIMATIONS_PROVIDERS = [{\n provide: AnimationDriver,\n useClass: NoopAnimationDriver\n}, {\n provide: ANIMATION_MODULE_TYPE,\n useValue: 'NoopAnimations'\n}, ...SHARED_ANIMATION_PROVIDERS];\n\n/**\n * Exports `BrowserModule` with additional dependency-injection providers\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\nlet BrowserAnimationsModule = /*#__PURE__*/(() => {\n class BrowserAnimationsModule {\n /**\n * Configures the module based on the specified object.\n *\n * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.\n * @see {@link BrowserAnimationsModuleConfig}\n *\n * @usageNotes\n * When registering the `BrowserAnimationsModule`, you can use the `withConfig`\n * function as follows:\n * ```ts\n * @NgModule({\n * imports: [BrowserAnimationsModule.withConfig(config)]\n * })\n * class MyNgModule {}\n * ```\n */\n static withConfig(config) {\n return {\n ngModule: BrowserAnimationsModule,\n providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS : BROWSER_ANIMATIONS_PROVIDERS\n };\n }\n static ɵfac = function BrowserAnimationsModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BrowserAnimationsModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: BrowserAnimationsModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n imports: [BrowserModule]\n });\n }\n return BrowserAnimationsModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Returns the set of dependency-injection providers\n * to enable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to enable animations in an application\n * bootstrapped using the `bootstrapApplication` function. In this scenario there\n * is no need to import the `BrowserAnimationsModule` NgModule at all, just add\n * providers returned by this function to the `providers` list as show below.\n *\n * ```ts\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideAnimations() {\n ɵperformanceMarkFeature('NgEagerAnimations');\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideAnimations` call results in app code.\n return [...BROWSER_ANIMATIONS_PROVIDERS];\n}\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\nlet NoopAnimationsModule = /*#__PURE__*/(() => {\n class NoopAnimationsModule {\n static ɵfac = function NoopAnimationsModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NoopAnimationsModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NoopAnimationsModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\n imports: [BrowserModule]\n });\n }\n return NoopAnimationsModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Returns the set of dependency-injection providers\n * to disable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to bootstrap an application using\n * the `bootstrapApplication` function, but you need to disable animations\n * (for example, when running tests).\n *\n * ```ts\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideNoopAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nfunction provideNoopAnimations() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideNoopAnimations` call results in app code.\n return [...BROWSER_NOOP_ANIMATIONS_PROVIDERS];\n}\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation browser package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BrowserAnimationsModule, NoopAnimationsModule, provideAnimations, provideNoopAnimations, InjectableAnimationEngine as ɵInjectableAnimationEngine };\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Inject,\n ViewContainerRef,\n ViewEncapsulation,\n ComponentRef,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { provideAnimations } from '@angular/platform-browser/animations';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n of,\n skipWhile,\n startWith,\n switchMap,\n} from 'rxjs';\nimport {\n ObjectType,\n RenderableFieldInterface,\n FieldOptionsInjectionToken,\n FieldOptionsDependencies,\n} from '../../../tokens-and-interfaces';\nimport { SEARCH_DEBOUNCE_MS } from '../../../constants';\nimport { FieldValidation } from '../field-validation';\nimport { InlineEditService } from '../inline-edit.service';\nimport { CrmFieldWarningDirective } from './model-driven-form-error/field-warning.directive';\nimport { FieldWarningService } from './model-driven-form-error/field-warning.service';\nimport { CrmModelDrivenFormErrorComponent } from './model-driven-form-error/model-driven-form-error.component';\nimport { stopChromeAutofill } from './stop-chrome-autofill';\nimport { FieldValueInterface } from '../../../tokens-and-interfaces';\nimport {\n CrmFieldService,\n StandardExternalIds,\n SystemFieldIds,\n} from '../../../shared-services/crm-services/field.service';\nimport { SyncIconComponent } from './accounts/sync-icon/sync-icon.component';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { AutoFill } from '@galaxy/crm/components/animations';\nimport { UpdaterService } from './updater.service';\nimport { filter, tap } from 'rxjs/operators';\n\nexport class TextFieldHandler implements RenderableFieldInterface {\n private component: ComponentRef | null = null;\n formControl: UntypedFormControl;\n\n constructor(\n public objectType: ObjectType,\n public fieldId: string,\n public name: string,\n public label: string,\n public value: string,\n public description: string,\n public readOnly = false,\n public validation: FieldValidation = new FieldValidation(),\n ) {\n this.formControl = new UntypedFormControl(this.value);\n }\n\n setValidation(validation: FieldValidation): void {\n this.validation = validation;\n this.formControl.setValidators(validation.getValidators());\n this.formControl.setAsyncValidators(validation.getAsyncValidators());\n }\n\n hasModification(): boolean {\n return this.formControl?.dirty;\n }\n\n fieldValue(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n stringValue: this.formControl.value,\n };\n }\n\n render(viewContainerRef: ViewContainerRef): void {\n viewContainerRef.clear();\n const component = viewContainerRef.createComponent(TextRendererComponent);\n component.instance.objectType = this.objectType;\n component.instance.fieldId = this.fieldId;\n component.instance.control = this.formControl;\n component.instance.label = this.label;\n component.instance.validation = this.validation;\n component.instance.readOnly = this.readOnly;\n this.component = component;\n }\n}\n\nconst EXCLUDED_FROM_AUTOCOMPLETE = [\n StandardExternalIds.FirstName,\n StandardExternalIds.LastName,\n SystemFieldIds.ContactExternalID,\n SystemFieldIds.CompanyExternalID,\n];\n\n@Component({\n template: `\n
\n
\n {{ label | translate }}\n \n
\n
\n \n \n {{ control.value }}\n \n
\n
\n \n \n \n {{ label | translate }}\n \n \n \n @if (control.value) {\n \n }\n \n \n {{ option }}\n \n \n \n {{ 'MODEL_DRIVEN_FORM.STRING_LIMIT_HINT' | translate: { characters: control.value?.length || 0 } }}\n \n \n \n \n `,\n imports: [\n CommonModule,\n MatInputModule,\n ReactiveFormsModule,\n TranslateModule,\n GalaxyFormFieldModule,\n CrmModelDrivenFormErrorComponent,\n CrmFieldWarningDirective,\n MatAutocompleteModule,\n SyncIconComponent,\n MatIcon,\n MatIconButton,\n ],\n providers: [FieldWarningService, provideAnimations()],\n styleUrls: ['./renderers.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [AutoFill],\n})\nexport class TextRendererComponent {\n fieldId!: string;\n objectType!: ObjectType;\n label!: string;\n readOnly!: boolean;\n validation!: FieldValidation;\n\n filteredOptions$: Observable = of([]);\n initialized$ = new BehaviorSubject(false);\n #control!: UntypedFormControl;\n set control(formControl: UntypedFormControl) {\n this.#control = formControl;\n const controlChanges$ = this.#control.valueChanges.pipe(\n startWith(this.#control.value),\n debounceTime(SEARCH_DEBOUNCE_MS),\n );\n const initialized$ = this.initialized$.pipe(distinctUntilChanged());\n this.filteredOptions$ = combineLatest([controlChanges$, initialized$]).pipe(\n takeUntilDestroyed(this.destroyRef),\n skipWhile(([, initialized]: [string, boolean]) => !initialized),\n switchMap(([value]: [string, boolean]) => {\n // turn off for first name, last name, hardcoded for the time being\n for (const id of EXCLUDED_FROM_AUTOCOMPLETE) {\n if (this.fieldId === this.fieldService.getFieldId(id)) {\n return of([]);\n }\n }\n return this.fieldOptionsDependencies.getFieldOptions(this.fieldId, value);\n }),\n );\n }\n\n get control(): UntypedFormControl {\n return this.#control;\n }\n\n disableAutoComplete: string = stopChromeAutofill();\n autoFillState = 'default';\n private isInlineEdit = toSignal(this.inlineEditService.isInlineEdit$);\n\n constructor(\n @Inject(FieldOptionsInjectionToken) private readonly fieldOptionsDependencies: FieldOptionsDependencies,\n readonly destroyRef: DestroyRef,\n private readonly inlineEditService: InlineEditService,\n private readonly fieldService: CrmFieldService,\n private changeDetRef: ChangeDetectorRef,\n private updaterService: UpdaterService,\n ) {\n this.updaterService.clearedField$\n .pipe(\n takeUntilDestroyed(),\n filter((f: FieldValueInterface) => f.fieldId === this.fieldId),\n )\n .subscribe((_) => this.clear());\n\n this.updaterService.updatedField\n .pipe(\n takeUntilDestroyed(),\n tap((data) => {\n if (data.stringValue && data.fieldId && data.fieldId === this.fieldId) {\n this.autoFillState = 'highlight';\n setTimeout(() => {\n this.autoFillState = 'default';\n this.changeDetRef.detectChanges();\n }, 1200);\n this.control.setValue(data.stringValue);\n this.control.markAsDirty();\n this.changeDetRef.detectChanges();\n }\n }),\n )\n .subscribe();\n }\n\n clear(): void {\n this.control.reset();\n this.control.markAsDirty();\n if (this.isInlineEdit()) {\n this.saveField();\n }\n }\n\n initializeField(): void {\n this.initialized$.next(true);\n }\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n stringValue: this.control.value,\n },\n ]);\n }\n}\n","import { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n OnInit,\n DestroyRef,\n Inject,\n signal,\n computed,\n Optional,\n} from '@angular/core';\nimport { FieldValidation } from '../../field-validation';\nimport { CrmDependencies, CrmInjectionToken, ObjectDependencyKey, ObjectType } from '../../../../tokens-and-interfaces';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { DigitOnlyModule } from '@uiowa/digit-only';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyInputModule } from '@vendasta/galaxy/input';\nimport { CrmModelDrivenFormErrorComponent } from '../model-driven-form-error/model-driven-form-error.component';\nimport { FieldWarningService } from '../model-driven-form-error/field-warning.service';\nimport { InlineEditService } from '../../inline-edit.service';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { debounceTime, firstValueFrom } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'crm-currency-renderer',\n templateUrl: './currency.html',\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['../renderers.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n GalaxyFormFieldModule,\n GalaxyInputModule,\n GalaxyPipesModule,\n MatInputModule,\n ReactiveFormsModule,\n DigitOnlyModule,\n CrmModelDrivenFormErrorComponent,\n ],\n providers: [FieldWarningService],\n})\nexport class CurrencyRendererComponent implements OnInit {\n fieldId!: string;\n objectType!: ObjectType;\n control!: FormControl;\n currencyCode!: string;\n label!: string;\n validation!: FieldValidation;\n readOnly!: boolean;\n\n private defaultCurrencyCode = signal('');\n protected displayedCurrencyCode = computed(() => this.currencyCode || this.defaultCurrencyCode() || 'USD');\n\n constructor(\n private readonly inlineEditService: InlineEditService,\n private readonly destroyRef: DestroyRef,\n\n @Optional()\n @Inject(CrmInjectionToken)\n private readonly crmDependencies: CrmDependencies,\n ) {}\n\n ngOnInit(): void {\n const objectType = String(this.objectType).toLowerCase() as ObjectDependencyKey;\n const defaultFormValue$ = this.crmDependencies?.[objectType]?.formDefaultOnCreateInputValues$;\n if (defaultFormValue$) {\n firstValueFrom(defaultFormValue$).then((defaultFormValues) => {\n if (!defaultFormValues?.length) {\n return;\n }\n const defaultCurrencyCode = defaultFormValues.find((v) => v.fieldId === this.fieldId)?.value?.currencyCode;\n if (defaultCurrencyCode) {\n this.defaultCurrencyCode.set(defaultCurrencyCode);\n } else {\n console.warn(`No default currency code found for field ${this.fieldId}`);\n }\n });\n }\n\n this.control.valueChanges.pipe(takeUntilDestroyed(this.destroyRef), debounceTime(1000)).subscribe(() => {\n this.saveField();\n });\n }\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n currencyValue: {\n value: this.control.value,\n currencyCode: this.displayedCurrencyCode(),\n },\n },\n ]);\n }\n}\n","
\n
{{ label | translate }}
\n
\n \n {{ control.value | glxyCurrency: displayedCurrencyCode() }}\n
\n
\n\n \n \n \n\n","import { FormControl } from '@angular/forms';\nimport { ComponentRef, ViewContainerRef } from '@angular/core';\nimport { FieldValidation } from '../../field-validation';\nimport { FieldValueInterface, ObjectType, RenderableFieldInterface } from '../../../../tokens-and-interfaces';\nimport { CurrencyRendererComponent } from './currency';\nimport { CurrencyInterface } from '@vendasta/crm';\n\nexport class CurrencyFieldHandler implements RenderableFieldInterface {\n formControl: FormControl;\n component: ComponentRef | null = null;\n private currencyCode: string;\n\n constructor(\n public objectType: ObjectType,\n public fieldId: string,\n public name: string,\n public label: string,\n public value: CurrencyInterface,\n public description: string,\n public readOnly = false,\n public validation: FieldValidation = new FieldValidation(),\n ) {\n this.formControl = new FormControl(value?.value || 0);\n this.currencyCode = value?.currencyCode || '';\n }\n\n fieldValue(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n currencyValue: {\n currencyCode: this.currencyCode,\n value: this.formControl.value,\n },\n };\n }\n\n hasModification(): boolean {\n return this.formControl?.dirty;\n }\n\n setValidation(validation: FieldValidation): void {\n this.validation = validation;\n this.formControl.setValidators(validation.getValidators());\n this.formControl.setAsyncValidators(validation.getAsyncValidators());\n }\n\n render(viewContainerRef: ViewContainerRef): void {\n viewContainerRef.clear();\n const component = viewContainerRef.createComponent(CurrencyRendererComponent);\n component.instance.fieldId = this.fieldId;\n component.instance.objectType = this.objectType;\n component.instance.control = this.formControl;\n component.instance.currencyCode = this.currencyCode;\n component.instance.label = this.label;\n component.instance.validation = this.validation;\n component.instance.readOnly = this.readOnly;\n this.component = component;\n }\n}\n","import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { ComponentRef, ViewContainerRef } from '@angular/core';\nimport { FieldValidation } from '../field-validation';\nimport {\n FieldValueInterface,\n FormCustomInput,\n FormInputComponent,\n ObjectType,\n RenderableFieldInterface,\n} from '../../../tokens-and-interfaces';\n\nexport class CustomFieldHandler implements RenderableFieldInterface {\n private component: ComponentRef | null = null;\n formControl: UntypedFormControl;\n\n constructor(\n public customFormInput: FormCustomInput,\n public objectType: ObjectType,\n public fieldId: string,\n public label: string,\n public value: unknown,\n public readOnly = false,\n public formGroup: UntypedFormGroup,\n public isEditing = false,\n public objectId?: string,\n ) {\n this.formControl = new UntypedFormControl(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n setValidation(validation: FieldValidation): void {\n return;\n }\n\n fieldValue(): FieldValueInterface {\n if (!this.component?.instance) {\n return {\n fieldId: this.fieldId,\n };\n }\n return this.component.instance.value;\n }\n\n hasModification(): boolean {\n if (!this.component?.instance) {\n return false;\n }\n return this.component.instance.hasModification;\n }\n\n render(viewContainerRef: ViewContainerRef): void {\n if (!this.customFormInput || !this.customFormInput.component) {\n return;\n }\n\n viewContainerRef.clear();\n this.component = viewContainerRef.createComponent(this.customFormInput.component);\n this.component.setInput('objectId', this.objectId);\n this.component.instance.fieldId = this.fieldId;\n this.component.instance.control = this.formControl;\n this.component.instance.label = this.label;\n this.component.instance.readOnly = this.readOnly;\n this.component.instance.objectType = this.objectType;\n this.component.instance.formGroup = this.formGroup;\n this.component.instance.isEditing = this.isEditing;\n }\n\n // unused for custom inputs\n description!: string;\n name!: string;\n validation!: FieldValidation;\n}\n","export interface LifecycleStage {\n id: string;\n translationKey: string;\n}\n\nexport const lifecycleStages: LifecycleStage[] = [\n { id: 'Visitor', translationKey: 'LIFECYCLE_STAGE.VISITOR' },\n { id: 'Lead', translationKey: 'LIFECYCLE_STAGE.LEAD' },\n { id: 'Marketing qualified lead', translationKey: 'LIFECYCLE_STAGE.MARKETING_QUALIFIED_LEAD' },\n { id: 'Sales accepted lead', translationKey: 'LIFECYCLE_STAGE.SALES_ACCEPTED_LEAD' },\n { id: 'Sales qualified lead', translationKey: 'LIFECYCLE_STAGE.SALES_QUALIFIED_LEAD' },\n { id: 'Prospect', translationKey: 'LIFECYCLE_STAGE.PROSPECT' },\n { id: 'Customer', translationKey: 'LIFECYCLE_STAGE.CUSTOMER' },\n { id: 'Former customer', translationKey: 'LIFECYCLE_STAGE.FORMER_CUSTOMER' },\n];\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { lifecycleStages } from './lifecycle-stage';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\n\n@Pipe({ name: 'stageName' })\nexport class LifecycleStageNamePipe implements PipeTransform {\n constructor(private readonly translate: TranslateService) {}\n transform(id: string): Observable {\n const key = lifecycleStages.find((val) => val.id === id)?.translationKey || lifecycleStages[0].translationKey;\n return this.translate.stream(key);\n }\n}\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { FieldValidation } from '../../field-validation';\nimport { lifecycleStages } from './lifecycle-stage';\n\nimport { InlineEditService } from '../../inline-edit.service';\nimport { ObjectType } from '../../../../tokens-and-interfaces';\nimport { LifecycleStageNamePipe } from './lifecycle-stage.pipe';\n\n@Component({\n template: `\n \n \n
\n {{ label }}\n
\n
\n {{ control.value | stageName | async }}\n
\n
\n \n \n \n {{ label }}\n \n \n {{ translateKey(stage.translationKey) }}\n \n \n \n \n `,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatSelectModule,\n GalaxyFormFieldModule,\n TranslateModule,\n LifecycleStageNamePipe,\n ],\n})\nexport class LifecycleStageSelectorComponent {\n objectType!: ObjectType;\n control!: FormControl;\n label!: string;\n fieldId!: string;\n validation!: FieldValidation;\n readOnly!: boolean;\n\n lifecycleStages = lifecycleStages;\n\n constructor(\n private readonly translate: TranslateService,\n private readonly inlineEditService: InlineEditService,\n ) {}\n\n translateKey(key: string): string {\n return this.translate.instant(key);\n }\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n stringValue: this.control.value,\n },\n ]);\n }\n}\n","import { FormControl } from '@angular/forms';\nimport { ComponentRef, ViewContainerRef } from '@angular/core';\nimport { FieldValidation } from '../../field-validation';\nimport { LifecycleStageSelectorComponent } from './lifecycle-stage-selector.component';\nimport { FieldValueInterface, ObjectType, RenderableFieldInterface } from '../../../../tokens-and-interfaces';\n\nexport class LifecycleStageSelectorHandler implements RenderableFieldInterface {\n private component: ComponentRef | null = null;\n formControl: FormControl;\n\n constructor(\n public objectType: ObjectType,\n public fieldId: string,\n public name: string,\n public label: string,\n public value: string,\n public description: string,\n public readOnly = false,\n public validation: FieldValidation = new FieldValidation(),\n ) {\n this.formControl = new FormControl(this.value, { nonNullable: true });\n }\n\n render(viewContainerRef: ViewContainerRef): void {\n viewContainerRef.clear();\n const component = viewContainerRef.createComponent(\n LifecycleStageSelectorComponent,\n );\n component.instance.objectType = this.objectType;\n component.instance.control = this.formControl;\n component.instance.label = this.label;\n component.instance.fieldId = this.fieldId;\n component.instance.validation = this.validation;\n component.instance.readOnly = this.readOnly;\n this.component = component;\n }\n\n setValidation(validation: FieldValidation): void {\n this.validation = validation;\n this.formControl.setValidators(validation.getValidators());\n this.formControl.setAsyncValidators(validation.getAsyncValidators());\n }\n\n fieldValue(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n stringValue: this.formControl.value,\n };\n }\n hasModification(): boolean {\n return this.formControl?.dirty;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ComponentRef, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { FieldValidation } from '../field-validation';\nimport { InlineEditService } from '../inline-edit.service';\nimport { CrmFieldWarningDirective } from './model-driven-form-error/field-warning.directive';\nimport { FieldWarningService } from './model-driven-form-error/field-warning.service';\nimport { CrmModelDrivenFormErrorComponent } from './model-driven-form-error/model-driven-form-error.component';\nimport { CrmModelDrivenPopoverComponent } from './model-driven-popover/model-driven-popover.component';\nimport { stopChromeAutofill } from './stop-chrome-autofill';\nimport { FieldValueInterface, ObjectType, RenderableFieldInterface } from '../../../tokens-and-interfaces';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\n\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nexport class EmailFieldHandler implements RenderableFieldInterface {\n private component: ComponentRef | null = null;\n formControl: UntypedFormControl;\n\n constructor(\n public objectType: ObjectType,\n public fieldId: string,\n public name: string,\n public label: string,\n public value: string,\n public description: string,\n public readOnly = false,\n public validation: FieldValidation = new FieldValidation(),\n ) {\n this.formControl = new UntypedFormControl(this.value);\n }\n\n setValidation(validation: FieldValidation): void {\n this.validation = validation;\n this.formControl.setValidators(validation.getValidators());\n this.formControl.setAsyncValidators(validation.getAsyncValidators());\n }\n\n hasModification(): boolean {\n return this.formControl?.dirty;\n }\n\n fieldValue(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n stringValue: this.formControl.value,\n };\n }\n\n render(viewContainerRef: ViewContainerRef): void {\n viewContainerRef.clear();\n const component = viewContainerRef.createComponent(EmailRendererComponent);\n component.instance.objectType = this.objectType;\n component.instance.fieldId = this.fieldId;\n component.instance.control = this.formControl;\n component.instance.label = this.label;\n component.instance.validation = this.validation;\n component.instance.readOnly = this.readOnly;\n this.component = component;\n }\n}\n\n@Component({\n template: `\n
\n
\n {{ label | translate }}\n
\n
\n \n \n {{ control.value }}\n \n
\n
\n
\n \n \n \n
\n \n \n \n \n \n {{ label | translate }}\n \n @if (control.value) {\n \n }\n \n {{ 'MODEL_DRIVEN_FORM.STRING_LIMIT_HINT' | translate: { characters: control.value?.length || 0 } }}\n \n \n \n \n `,\n imports: [\n CommonModule,\n MatInputModule,\n ReactiveFormsModule,\n TranslateModule,\n GalaxyFormFieldModule,\n CrmModelDrivenFormErrorComponent,\n CrmFieldWarningDirective,\n CrmModelDrivenPopoverComponent,\n MatIcon,\n MatIconButton,\n ],\n providers: [FieldWarningService],\n styleUrls: ['./renderers.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmailRendererComponent {\n fieldId!: string;\n objectType!: ObjectType;\n control!: UntypedFormControl;\n label!: string;\n readOnly!: boolean;\n validation!: FieldValidation;\n isInlineEdit$ = this.inlineEditService.isInlineEdit$;\n isInlineEdit = toSignal(this.isInlineEdit$);\n\n disableAutoComplete: string = stopChromeAutofill();\n\n constructor(private readonly inlineEditService: InlineEditService) {}\n\n clear(): void {\n this.control.reset();\n this.control.markAsDirty();\n if (this.isInlineEdit()) {\n this.saveField();\n }\n }\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n stringValue: this.control.value,\n },\n ]);\n }\n}\n","import { FormControl } from '@angular/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n DestroyRef,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FieldValidation } from '../field-validation';\nimport { GeopointInterface } from '@vendasta/crm';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { tap } from 'rxjs';\nimport { UpdaterService } from './updater.service';\nimport { FieldValueInterface, ObjectType, RenderableFieldInterface } from '../../../tokens-and-interfaces';\nimport { filter } from 'rxjs/operators';\n\nexport class GeopointFieldHandler implements RenderableFieldInterface {\n private component: ComponentRef | null = null;\n formControl: FormControl;\n\n constructor(\n public objectType: ObjectType,\n public fieldId: string,\n public name: string,\n public label: string,\n public value: GeopointInterface,\n public description: string,\n public readOnly = false,\n public validation: FieldValidation = new FieldValidation(),\n ) {\n this.formControl = new FormControl(value);\n }\n\n fieldValue(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n geopointValue: this.formControl.value,\n };\n }\n\n hasModification(): boolean {\n return this.formControl?.dirty;\n }\n\n setValidation(validation: FieldValidation): void {\n this.validation = validation;\n this.formControl.setValidators(validation.getValidators());\n this.formControl.setAsyncValidators(validation.getAsyncValidators());\n }\n\n render(viewContainerRef: ViewContainerRef): void {\n viewContainerRef.clear();\n const component = viewContainerRef.createComponent(GeopointRendererComponent);\n component.instance.fieldId = this.fieldId;\n component.instance.objectType = this.objectType;\n component.instance.control = this.formControl;\n this.component = component;\n }\n}\n\n@Component({\n selector: 'crm-geopoint-renderer',\n template: '', //TODO: Add template for geopoint form field\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./renderers.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nclass GeopointRendererComponent {\n public fieldId!: string;\n public objectType!: ObjectType;\n public control!: FormControl;\n\n constructor(\n private updaterService: UpdaterService,\n private changeDetRef: ChangeDetectorRef,\n private destroyRef: DestroyRef,\n ) {\n this.updaterService.clearedField$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((f: FieldValueInterface) => f.fieldId === this.fieldId),\n )\n .subscribe((_) => this.control.reset());\n\n this.updaterService.updatedField\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap((data) => {\n if (\n data.geopointValue &&\n data.geopointValue.lat !== undefined &&\n data.geopointValue.lon !== undefined &&\n data.fieldId &&\n data.fieldId === this.fieldId\n ) {\n this.control.setValue(data.geopointValue);\n this.control.markAsDirty();\n this.changeDetRef.detectChanges();\n }\n }),\n )\n .subscribe();\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, take, tap } from 'rxjs/operators';\n\nexport interface DropdownItem {\n description: string;\n mainText: string;\n placeId: string;\n secondaryText: string;\n}\n\ninterface Location {\n lat: number;\n lng: number;\n}\n\nexport interface TimeZone {\n timeZoneId: string;\n timeZoneName: string;\n}\n\nexport interface AutoCompleteCallback {\n setBusinessSelectedDetailsCallback(place_id: string, place: google.maps.places.PlaceResult, timeZone: TimeZone): void;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AutocompleteService {\n private static NO_BUSINESS_FOUND = '___pcc_no_business_found';\n map: google.maps.Map;\n delegate: AutoCompleteCallback;\n private autocompleteSessionToken: google.maps.places.AutocompleteSessionToken;\n private currentPosition: Location;\n\n constructor(public http: HttpClient) {}\n\n private static parseAutoCompleteResponse(responses: google.maps.places.AutocompletePrediction[]): DropdownItem[] {\n const choices = [];\n if (responses) {\n for (let i = 0; i <= responses.length; i++) {\n if (responses[i]) {\n const drop_down: DropdownItem = AutocompleteService.convertToDropDown(responses[i]);\n choices.push(drop_down);\n }\n }\n }\n\n return choices;\n }\n\n private static convertToDropDown(response: google.maps.places.AutocompletePrediction): DropdownItem {\n return {\n mainText: response.structured_formatting.main_text,\n description: response.description,\n secondaryText: response.structured_formatting.secondary_text,\n placeId: response.place_id,\n };\n }\n\n public init(googleMap: google.maps.Map, delegate: AutoCompleteCallback): void {\n this.map = googleMap;\n this.delegate = delegate;\n\n this.http\n .post('https://www.googleapis.com/geolocation/v1/geolocate?key=AIzaSyDxrR1bk6d2TRa4orIDF05H3UlhvIXRRC0', {})\n .pipe(\n tap((response: { location: Location }) => {\n if (response?.location) {\n this.currentPosition = response.location;\n }\n }),\n take(1),\n )\n .subscribe();\n\n this.autocompleteSessionToken = new google.maps.places.AutocompleteSessionToken();\n }\n\n onSelect(placeId: string): void {\n if (placeId && placeId !== AutocompleteService.NO_BUSINESS_FOUND) {\n const placeService = new google.maps.places.PlacesService(this.map);\n const callback = (place: google.maps.places.PlaceResult): void => {\n this.getTimeZone(place).subscribe((timeZone) => {\n this.delegate.setBusinessSelectedDetailsCallback(placeId, place, timeZone);\n });\n };\n placeService.getDetails(\n {\n placeId: placeId,\n fields: ['formatted_phone_number', 'name', 'address_component', 'website', 'types', 'geometry'],\n sessionToken: this.autocompleteSessionToken,\n },\n callback,\n );\n }\n }\n\n getChoices(search_term: DropdownItem | string, suggest: (i: DropdownItem[]) => void): any {\n if (!search_term) {\n return suggest([]);\n }\n\n const service = new google.maps.places.AutocompleteService();\n const callback = (result: google.maps.places.AutocompletePrediction[]): void => {\n suggest(AutocompleteService.parseAutoCompleteResponse(result));\n };\n try {\n let normalizedSearchTerm = '';\n\n if (typeof search_term != 'string') {\n normalizedSearchTerm = (search_term as { mainText: string })?.mainText ?? '';\n } else {\n normalizedSearchTerm = search_term;\n }\n\n normalizedSearchTerm = normalizedSearchTerm.toLowerCase();\n\n const request = {\n input: normalizedSearchTerm,\n types: ['establishment'],\n sessionToken: this.autocompleteSessionToken,\n } as google.maps.places.AutocompletionRequest;\n if (this.currentPosition) {\n request.locationBias = {\n north: this.currentPosition.lat + 0.5,\n east: this.currentPosition.lng + 0.5,\n south: this.currentPosition.lat - 0.5,\n west: this.currentPosition.lng - 0.5,\n } as google.maps.LatLngBoundsLiteral;\n }\n service.getPlacePredictions(request, callback);\n } catch (e) {\n console.error(e);\n }\n }\n\n getTimeZone(place: google.maps.places.PlaceResult): Observable {\n const timeZoneApiUrl = 'https://maps.googleapis.com/maps/api/timezone/json';\n const paramKey = 'AIzaSyDxrR1bk6d2TRa4orIDF05H3UlhvIXRRC0';\n const paramLat = place?.geometry?.location?.lat();\n const paramLng = place?.geometry?.location?.lng();\n\n const params = {\n location: `${paramLat},${paramLng}`,\n timestamp: Math.floor(Date.now() / 1000).toString(),\n key: paramKey,\n };\n\n return this.http.get(timeZoneApiUrl, { params }).pipe(map((response) => response as TimeZone));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, OnInit, signal, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { GoogleMapsModule } from '@angular/google-maps';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { ReplaySubject, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { StandardIds } from '../../../../shared-services/crm-services/field.service';\nimport { FieldValueInterface, FormInputComponent, ObjectType } from '../../../../tokens-and-interfaces';\nimport { FieldValidation } from '../../field-validation';\nimport { AutoCompleteCallback, AutocompleteService, DropdownItem, TimeZone } from '../autocomplete.service';\nimport { UpdaterService } from '../updater.service';\nimport { stopChromeAutofill } from '../stop-chrome-autofill';\n\nconst NO_VALUE_FOR_NAME = '';\n\ninterface CompanyAddressInfo {\n address: string;\n city: string;\n zip: string;\n country: string;\n country_short: string;\n region: string;\n region_short: string;\n name: string;\n place_id: string;\n}\n\n@Component({\n templateUrl: './google-place-selector.component.html',\n providers: [AutocompleteService],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslateModule,\n GalaxyFormFieldModule,\n MatInputModule,\n MatAutocompleteModule,\n MatProgressSpinnerModule,\n GoogleMapsModule,\n ],\n styleUrls: ['../renderers.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class GooglePlaceSelectorComponent extends FormInputComponent implements AutoCompleteCallback, OnInit {\n NO_VALUE_FOR_NAME = NO_VALUE_FOR_NAME;\n\n override readOnly = false;\n private _control: FormControl = new FormControl();\n private readonly locations$$ = new ReplaySubject(1);\n protected locations$ = this.locations$$.asObservable();\n private readonly txtQueryChanged = new Subject();\n\n override objectType: ObjectType;\n label = '';\n protected validation: FieldValidation;\n protected googleMap: google.maps.Map;\n\n set control(control: FormControl) {\n this._control = control;\n this._control.markAsPristine();\n }\n get control(): UntypedFormControl {\n return this._control;\n }\n\n set formGroup(group: UntypedFormGroup) {\n // Do nothing\n }\n\n _fieldId = signal('');\n set fieldId(fieldId: string) {\n this._fieldId.set(fieldId);\n }\n\n get hasModification(): boolean {\n return this._control.dirty;\n }\n\n get value(): FieldValueInterface {\n const controlValue = this._control.value;\n let companyName = '';\n if (controlValue) {\n if (typeof controlValue != 'string') {\n companyName = (controlValue as { mainText: string })?.mainText?.toString() ?? '';\n } else {\n companyName = controlValue;\n }\n }\n\n return {\n fieldId: this._fieldId(),\n stringValue: companyName,\n };\n }\n\n disableAutoComplete: string = stopChromeAutofill();\n\n constructor(\n private autocompleteService: AutocompleteService,\n private updaterService: UpdaterService,\n readonly destroyRef: DestroyRef,\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.txtQueryChanged\n .pipe(takeUntilDestroyed(this.destroyRef), debounceTime(200), distinctUntilChanged())\n .subscribe((model) => {\n this.autocompleteService.getChoices(model, (choices: DropdownItem[]): void => {\n this.locations$$.next(choices);\n });\n });\n\n this._control.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((searchTerm) => {\n if (typeof searchTerm != 'string') {\n this.txtQueryChanged.next(searchTerm.mainText);\n } else {\n this.txtQueryChanged.next(searchTerm);\n }\n });\n }\n\n /* AutoComplete */\n onMapReady(googleMap: google.maps.Map): void {\n this.googleMap = googleMap;\n this.autocompleteService.init(googleMap, this);\n }\n\n /* Callback function from Autocomplete Service when a business is selected. */\n setBusinessSelectedDetailsCallback(\n place_id: string,\n place: google.maps.places.PlaceResult,\n timeZone: TimeZone,\n ): void {\n const companyAddressDetails: CompanyAddressInfo = {} as CompanyAddressInfo;\n companyAddressDetails.place_id = place_id;\n companyAddressDetails.name = place?.name ?? '';\n\n const street_number = this.extractFromAddress(place?.address_components ?? [], 'street_number');\n const address = this.extractFromAddress(place?.address_components ?? [], 'route');\n // note: the following is the standard Canada/US address format, it may vary depending on country\n // ISO-19160-4:2023 could be a source for formatting, but googleMaps API doesn't deal with that yet\n const formattedAddress = (\n (street_number != null ? street_number : '') +\n ' ' +\n (address != null ? address : '')\n ).trim();\n companyAddressDetails.address = formattedAddress ?? '';\n\n companyAddressDetails.city = this.extractFromAddress(place?.address_components ?? [], 'locality');\n companyAddressDetails.zip = this.extractFromAddress(place?.address_components ?? [], 'postal_code');\n companyAddressDetails.country = this.extractFromAddress(place?.address_components ?? [], 'country');\n companyAddressDetails.country_short = this.extractFromAddress(\n place?.address_components ?? [],\n 'country',\n 'short_name',\n );\n\n companyAddressDetails.region = this.extractFromAddress(\n place?.address_components ?? [],\n 'administrative_area_level_1',\n );\n companyAddressDetails.region_short = this.extractFromAddress(\n place?.address_components ?? [],\n 'administrative_area_level_1',\n 'short_name',\n );\n\n const clearIfEmpty = false;\n\n if (!this.isEditing) {\n this.updaterService.updateStringField(\n StandardIds.CompanyPrimaryAddressLine1,\n companyAddressDetails.address,\n clearIfEmpty,\n );\n this.updaterService.updateStringField(\n StandardIds.CompanyPrimaryAddressLine2,\n this.extractFromAddress(place?.address_components ?? [], 'floor'),\n clearIfEmpty,\n );\n this.updaterService.updateStringField(\n StandardIds.CompanyPrimaryAddressCity,\n companyAddressDetails.city,\n clearIfEmpty,\n );\n this.updaterService.updateStringField(\n StandardIds.CompanyPrimaryAddressState,\n companyAddressDetails.region,\n clearIfEmpty,\n );\n this.updaterService.updateStringField(\n StandardIds.CompanyPrimaryAddressPostalCode,\n companyAddressDetails.zip,\n clearIfEmpty,\n );\n this.updaterService.updateStringField(\n StandardIds.CompanyPrimaryAddressCountry,\n companyAddressDetails.country,\n clearIfEmpty,\n );\n this.updaterService.updateStringField(\n StandardIds.CompanyPrimaryAddressGooglePlaceID,\n companyAddressDetails.place_id,\n clearIfEmpty,\n );\n this.updaterService.updateStringField(StandardIds.CompanyWebsite, place?.website ?? '', clearIfEmpty);\n this.updaterService.updateFieldValue({\n fieldId: StandardIds.CompanyPhoneNumber,\n phoneFieldValues: {\n isoCountryCode: companyAddressDetails?.country_short ?? 'US',\n nationalNumber: place?.formatted_phone_number ?? '',\n },\n });\n this.updaterService.updateStringField(StandardIds.CompanyTimezone, timeZone?.timeZoneId ?? '', clearIfEmpty);\n\n const lat = place?.geometry?.location?.lat() || 0;\n const lng = place?.geometry?.location?.lng() || 0;\n\n this.updaterService.updateGeopointField(\n StandardIds.CompanyPrimaryAddressLatitudeLongitude,\n lat,\n lng,\n clearIfEmpty,\n );\n }\n }\n\n extractFromAddress(\n components: google.maps.GeocoderAddressComponent[],\n type: string,\n name_type = 'long_name',\n ): string {\n return (\n components\n .filter((component) => component.types.indexOf(type) === 0)\n .map((item) => item[name_type])\n .pop() || null\n );\n }\n\n companyOnSelected(location: DropdownItem | string): void {\n if (location) {\n if (typeof location != 'string') {\n this.autocompleteService.onSelect(location.placeId);\n } else {\n this.autocompleteService.onSelect(location);\n }\n }\n }\n\n companyDisplayValue(location: DropdownItem | string): string {\n if (location) {\n if (typeof location != 'string') {\n return location.mainText;\n }\n return location;\n }\n return '';\n }\n}\n","
\n
{{ label }}
\n
\n \n \n \n {{ Name }}\n \n \n \n
\n
\n
\n
\n\n \n \n {{ label }}\n \n \n {{ 'STANDARD_FIELD_RULES.COMPANY.COMPANY_NAME_REQUIRED' | translate }}\n \n \n @for (location of locations$ | async; track location.placeId) {\n \n {{ location.mainText }}\n
\n {{ location.secondaryText }}\n \n }\n \n
\n
\n","import { ValidationError } from '../../field-validation';\nimport { FieldSchemaInterface } from '../../../../tokens-and-interfaces';\nimport { parsePhoneNumber } from './utils';\nimport { PhoneFieldsInterface } from '@vendasta/crm';\nimport { DEFAULT_COUNTRY_CODE } from './phone';\n\nconst e164FormatWarningValidatorFn =\n (isNotE164Compliant: boolean, initialParsedValue: PhoneFieldsInterface) => (control) => {\n const curPhoneValue = control.value;\n // show the warning if the phone number is not e164 compliant (and contains a phone value) and the user has not changed the phone number\n if (isNotE164Compliant && phoneValuesEqual(curPhoneValue, initialParsedValue)) {\n return {\n e164_format_warning: true,\n };\n }\n return null;\n };\n\nfunction phoneValuesEqual(phone1, phone2) {\n return (\n phone1?.isoCountryCode === phone2?.isoCountryCode &&\n phone1?.nationalNumber === phone2?.nationalNumber &&\n phone1?.extension === phone2?.extension\n );\n}\n\nexport function buildE164FormatValidator(schema: FieldSchemaInterface): { [key: string]: ValidationError } {\n const isNotE164Compliant = !schema.value?.e164Compliant && !!schema.value?.nationalNumber;\n\n const parsedPhoneNumber = parsePhoneNumber(schema.value?.nationalNumber || '');\n const parsedPhoneVals = {\n isoCountryCode: parsedPhoneNumber?.isoCountryCode || DEFAULT_COUNTRY_CODE,\n nationalNumber: parsedPhoneNumber?.nationalNumber || schema.value?.nationalNumber,\n extension: parsedPhoneNumber?.extension || '',\n } as PhoneFieldsInterface;\n\n return {\n e164_format_warning: {\n severity: 'WARNING',\n message: 'STANDARD_FIELD_RULES.E164_FORMAT.WARNING',\n validationFn: e164FormatWarningValidatorFn(isNotE164Compliant, parsedPhoneVals),\n asyncValidationFn: null,\n },\n };\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\n\nimport { MatOption } from '@angular/material/autocomplete';\nimport { map } from 'rxjs';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FormInputComponent, ObjectType, FieldValueInterface } from '../../../../tokens-and-interfaces';\nimport { InlineEditService } from '../../inline-edit.service';\nimport { CrmPipelineService } from '../../../../shared-services';\nimport { UpdaterService } from '../updater.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n templateUrl: './pipeline-selector.component.html',\n styleUrls: ['../renderers.scss'],\n imports: [CommonModule, MatSelectModule, GalaxyFormFieldModule, TranslateModule, MatOption, ReactiveFormsModule],\n})\nexport class PipelineSelectorComponent extends FormInputComponent {\n private readonly inlineEditService = inject(InlineEditService);\n private readonly pipelineService = inject(CrmPipelineService);\n private readonly updaterService = inject(UpdaterService);\n\n override objectType: ObjectType = 'Opportunity';\n _fieldId = '';\n set fieldId(fieldId: string) {\n this._fieldId = fieldId;\n }\n get fieldId(): string {\n return this._fieldId;\n }\n _control: FormControl = new FormControl('', {\n nonNullable: true,\n validators: [Validators.required],\n });\n set control(control: FormControl) {\n this._control = control;\n this.control.setValidators(Validators.required);\n }\n get control(): UntypedFormControl {\n return this._control;\n }\n\n _label = '';\n set label(label: string) {\n this._label = label;\n }\n get label(): string {\n return this._label;\n }\n\n protected readonly availableOptions$ = this.pipelineService.listPipelines$(this.objectType).pipe(\n map((pipelines) =>\n pipelines.map((pipeline) => {\n return { id: pipeline.id, name: pipeline.name };\n }),\n ),\n );\n\n constructor() {\n super();\n this.availableOptions$.pipe(takeUntilDestroyed()).subscribe((pipelines) => {\n const currentPipelineId = this.control.value;\n const pipelineFound = pipelines.find((p) => p.id === currentPipelineId);\n if (currentPipelineId && !pipelineFound) {\n this.control.setValue('');\n this.control.markAsTouched();\n }\n const onlyOnePipelineAccessible = pipelines.length === 1;\n if (onlyOnePipelineAccessible) {\n this.control.setValue(pipelines[0].id);\n this.control.markAsDirty();\n this.updaterService.updateStringField(this.fieldId, this.control.value);\n }\n });\n }\n\n set formGroup(group: UntypedFormGroup) {\n // do nothing\n }\n\n get hasModification(): boolean {\n return this.control.dirty;\n }\n\n get value(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n stringValue: this.control.value,\n };\n }\n\n applyPipelineMutations(): void {\n this.updaterService.updateStringField(this.fieldId, this.control.value);\n }\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n stringValue: this.control.value,\n },\n ]);\n }\n}\n","@if (availableOptions$ | async; as availableOptions) {\n \n {{ label }}\n \n \n {{ pipelineOption.name }}\n \n \n \n {{ 'STANDARD_FIELD_RULES.OPPORTUNITY.PIPELINE_REQUIRED' | translate }}\n \n \n} @else {\n
\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatInput } from '@angular/material/input';\n\nimport { MatSelectModule } from '@angular/material/select';\nimport { FormInputComponent, FieldValueInterface } from '../../../../tokens-and-interfaces';\nimport { InlineEditService } from '../../inline-edit.service';\nimport { stopChromeAutofill } from '../stop-chrome-autofill';\n\n@Component({\n templateUrl: './opportunity-name.component.html',\n styleUrls: ['../renderers.scss'],\n imports: [CommonModule, MatSelectModule, GalaxyFormFieldModule, TranslateModule, MatInput, ReactiveFormsModule],\n})\nexport class OpportunityNameComponent extends FormInputComponent {\n disableAutoComplete: string = stopChromeAutofill();\n\n _fieldId = '';\n set fieldId(fieldId: string) {\n this._fieldId = fieldId;\n }\n get fieldId(): string {\n return this._fieldId;\n }\n _control: FormControl = new FormControl('', {\n nonNullable: true,\n validators: [Validators.required],\n });\n set control(control: FormControl) {\n this._control = control;\n this.control.setValue(control.value || '');\n this.control.setValidators(Validators.required);\n }\n get control(): UntypedFormControl {\n return this._control;\n }\n\n _label = '';\n set label(label: string) {\n this._label = label;\n }\n get label(): string {\n return this._label;\n }\n\n constructor(private readonly inlineEditService: InlineEditService) {\n super();\n }\n\n set formGroup(group: UntypedFormGroup) {\n // do nothing\n }\n\n get hasModification(): boolean {\n return this._control.dirty;\n }\n\n get value(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n stringValue: this.control.value,\n };\n }\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n stringValue: this.control.value,\n },\n ]);\n }\n}\n","\n {{ label }}\n \n \n {{ 'STANDARD_FIELD_RULES.OPPORTUNITY.OPPORTUNITY_NAME_REQUIRED' | translate }}\n \n\n","import { Component, DestroyRef, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { FieldValueInterface, FormInputComponent } from '../../../../tokens-and-interfaces';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { filter } from 'rxjs/operators';\nimport { tap } from 'rxjs';\nimport { InlineEditService } from '../../inline-edit.service';\nimport { UpdaterService } from '../updater.service';\n\n@Component({\n selector: 'crm-hidden-text',\n template: '',\n providers: [],\n imports: [CommonModule, ReactiveFormsModule, TranslateModule, GalaxyFormFieldModule],\n encapsulation: ViewEncapsulation.None,\n})\nexport class HiddenTextFormInputComponent extends FormInputComponent {\n private readonly destroyRef = inject(DestroyRef);\n private readonly updaterService = inject(UpdaterService);\n private readonly inlineEditService = inject(InlineEditService);\n private isInlineEdit = toSignal(this.inlineEditService.isInlineEdit$);\n\n _control: FormControl = new FormControl('');\n _label = '';\n\n constructor() {\n super();\n\n this.updaterService.clearedField$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((f: FieldValueInterface) => f.fieldId === this._fieldId()),\n )\n .subscribe((_) => this.clear());\n this.updaterService.updatedField\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap((data) => {\n if (data.stringValue && data.stringValue != '' && data.fieldId && data.fieldId === this._fieldId()) {\n this.control.setValue(data.stringValue);\n this.control.markAsDirty();\n }\n }),\n )\n .subscribe();\n }\n\n override set control(control: UntypedFormControl) {\n this._control = control;\n }\n override get control(): UntypedFormControl {\n return this._control;\n }\n\n set formGroup(group: UntypedFormGroup) {\n // Do nothing\n }\n\n _fieldId = signal('');\n override set fieldId(fieldId: string) {\n this._fieldId.set(fieldId);\n }\n\n override set label(label: string) {\n this._label = label;\n }\n override get hasModification(): boolean {\n return this.control?.dirty;\n }\n override get value(): FieldValueInterface {\n return {\n fieldId: this._fieldId(),\n stringValue: this._control.value || '',\n };\n }\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n stringValue: this.control.value,\n },\n ]);\n }\n\n clear(): void {\n this.control.reset();\n this.control.markAsDirty();\n if (this.isInlineEdit()) {\n this.saveField();\n }\n }\n}\n","import { Component, DestroyRef, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { FieldValueInterface, FormInputComponent } from '../../../../tokens-and-interfaces';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { filter } from 'rxjs/operators';\nimport { tap } from 'rxjs';\nimport { InlineEditService } from '../../inline-edit.service';\nimport { UpdaterService } from '../updater.service';\n\n@Component({\n selector: 'crm-hidden-datetime',\n template: '',\n providers: [],\n imports: [CommonModule, ReactiveFormsModule, TranslateModule, GalaxyFormFieldModule],\n encapsulation: ViewEncapsulation.None,\n})\nexport class HiddenDatetimeFormInputComponent extends FormInputComponent {\n private readonly destroyRef = inject(DestroyRef);\n private readonly updaterService = inject(UpdaterService);\n private readonly inlineEditService = inject(InlineEditService);\n private isInlineEdit = toSignal(this.inlineEditService.isInlineEdit$);\n\n _control: FormControl = new FormControl(null);\n _label = '';\n\n constructor() {\n super();\n\n this.updaterService.clearedField$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((f: FieldValueInterface) => f.fieldId === this._fieldId()),\n )\n .subscribe((_) => this.clear());\n this.updaterService.updatedField\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap((data) => {\n if (data.dateValue && data.fieldId && data.fieldId === this._fieldId()) {\n this.control.setValue(data.dateValue);\n this.control.markAsDirty();\n }\n }),\n )\n .subscribe();\n }\n\n override set control(control: UntypedFormControl) {\n this._control = control;\n }\n override get control(): UntypedFormControl {\n return this._control;\n }\n\n set formGroup(group: UntypedFormGroup) {\n // Do nothing\n }\n\n _fieldId = signal('');\n override set fieldId(fieldId: string) {\n this._fieldId.set(fieldId);\n }\n\n override set label(label: string) {\n this._label = label;\n }\n override get hasModification(): boolean {\n return this.control?.dirty;\n }\n override get value(): FieldValueInterface {\n return {\n fieldId: this._fieldId(),\n dateValue: this._control?.value || new Date(),\n };\n }\n\n saveField(): void {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n dateValue: this.control?.value || new Date(),\n },\n ]);\n }\n\n clear(): void {\n this.control.reset();\n this.control.markAsDirty();\n if (this.isInlineEdit()) {\n this.saveField();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\n\nimport { MatOption } from '@angular/material/autocomplete';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FormInputComponent, ObjectType, FieldValueInterface } from '../../../../tokens-and-interfaces';\nimport { InlineEditService } from '../../inline-edit.service';\nimport { UpdaterService } from '../updater.service';\nimport { StandardIds } from '../../../../shared-services';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n templateUrl: './marketing-consent-selector.component.html',\n styleUrls: ['../renderers.scss'],\n imports: [CommonModule, MatSelectModule, GalaxyFormFieldModule, TranslateModule, MatOption, ReactiveFormsModule],\n})\nexport class MarketingConsentSelectorComponent extends FormInputComponent {\n private readonly inlineEditService = inject(InlineEditService);\n private readonly updaterService = inject(UpdaterService);\n\n override objectType: ObjectType = 'Contact';\n _fieldId = '';\n set fieldId(fieldId: string) {\n this._fieldId = fieldId;\n }\n get fieldId(): string {\n return this._fieldId;\n }\n _control: FormControl = new FormControl('', {\n nonNullable: true,\n });\n set control(control: FormControl) {\n this._control = control;\n if (this._control.value === null) {\n this.control.setValue('');\n }\n }\n get control(): UntypedFormControl {\n return this._control;\n }\n\n _label = '';\n set label(label: string) {\n this._label = label;\n }\n get label(): string {\n return this._label;\n }\n\n protected readonly availableOptions = ['Subscribed', 'Unsubscribed'];\n private isInline = toSignal(this.inlineEditService.isInlineEdit$);\n\n constructor() {\n super();\n const currentConsentValue = this.control.value;\n const validSelectionFound = this.availableOptions.find((v) => v === currentConsentValue);\n if (currentConsentValue && !validSelectionFound) {\n this.control.setValue('');\n this.control.markAsTouched();\n }\n }\n\n set formGroup(group: UntypedFormGroup) {\n // do nothing\n }\n\n get hasModification(): boolean {\n return this.control.dirty;\n }\n\n get value(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n stringValue: this.control.value,\n };\n }\n\n calculateConsentMutations(): FieldValueInterface[] {\n if (this.fieldId === StandardIds.ContactMarketingEmailConsentStatus) {\n return [\n {\n fieldId: StandardIds.ContactMarketingEmailConsentSource,\n stringValue: 'CRM UI',\n },\n {\n fieldId: StandardIds.ContactMarketingEmailConsentTimestamp,\n dateValue: new Date(),\n },\n ];\n }\n if (this.fieldId === StandardIds.ContactSMSConsentStatus) {\n return [\n {\n fieldId: StandardIds.ContactSMSConsentSource,\n stringValue: 'CRM UI',\n },\n {\n fieldId: StandardIds.ContactSMSConsentTimestamp,\n dateValue: new Date(),\n },\n ];\n }\n return [];\n }\n\n applyConsentMutations(fieldValues: FieldValueInterface[]): void {\n for (const mutation of fieldValues) {\n this.updaterService.updateFieldValue(mutation);\n }\n }\n\n saveField(): void {\n const consentMutations = this.calculateConsentMutations();\n if (!this.isInline()) {\n this.applyConsentMutations(consentMutations);\n return;\n }\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n stringValue: this.control.value,\n },\n ...consentMutations,\n ]);\n }\n}\n","\n {{ label }}\n \n Unset\n \n {{ consentStatus }}\n \n \n\n","export const linkedInUrlValidator = (url: string): string | false => {\n if (!url) {\n return url;\n }\n const normalizedUrl = normalizeUrl(url);\n const cleanedUrl = cleanUrl(normalizedUrl);\n\n const parsedUrl = isValidUrl(cleanedUrl);\n if (!parsedUrl || !urlHostEndsWith(parsedUrl, 'linkedin.com') || !urlPathNotEmpty(parsedUrl)) {\n return false;\n }\n\n return cleanedUrl;\n};\n\nexport const facebookUrlValidator = (url: string): string | false => {\n if (!url) {\n return url;\n }\n const normalizedUrl = normalizeUrl(url);\n let cleanedUrl = normalizedUrl;\n if (!url.includes('?id=') && !url.includes('&id=')) {\n cleanedUrl = cleanUrl(normalizedUrl);\n }\n\n const parsedUrl = isValidUrl(cleanedUrl);\n if (!parsedUrl || !urlHostEquals(parsedUrl, 'facebook.com') || !urlPathNotEmpty(parsedUrl)) {\n return false;\n }\n\n return cleanedUrl;\n};\n\nexport const pinterestUrlValidator = (url: string): string | false => {\n if (!url) {\n return url;\n }\n const normalizedUrl = normalizeUrl(url);\n const cleanedUrl = cleanUrl(normalizedUrl);\n\n const parsedUrl = isValidUrl(cleanedUrl);\n if (\n !parsedUrl ||\n !urlHostEndsWithOneOf(parsedUrl, ['pinterest.com', 'pinterest.co.uk', 'pinterest.ca', 'pinterest.com.au']) ||\n !urlPathNotEmpty(parsedUrl)\n ) {\n return false;\n }\n\n return cleanedUrl;\n};\n\nexport const tikTokUrlValidator = (url: string): string | false => {\n //currently no backend validation for tiktok\n return url;\n};\n\nexport const xUrlValidator = (url: string): string | false => {\n if (!url) {\n return url;\n }\n if (url.includes('/#!/')) {\n url = url.replace('/#!/', '/');\n }\n const normalizedUrl = normalizeUrl(url);\n const cleanedUrl = cleanUrl(normalizedUrl);\n\n const parsedUrl = isValidUrl(cleanedUrl);\n if (!parsedUrl || !urlHostEqualsOneOf(parsedUrl, ['twitter.com', 'x.com']) || !urlPathNotEmpty(parsedUrl)) {\n return false;\n }\n\n return cleanedUrl;\n};\n\nexport const instagramUrlValidator = (url: string): string | false => {\n if (!url) {\n return url;\n }\n const normalizedUrl = normalizeUrl(url);\n const cleanedUrl = cleanUrl(normalizedUrl);\n\n const parsedUrl = isValidUrl(cleanedUrl);\n if (!parsedUrl || !urlHostEquals(parsedUrl, 'instagram.com') || !urlPathNotEmpty(parsedUrl)) {\n return false;\n }\n\n return cleanedUrl;\n};\n\nfunction normalizeUrl(url: string): string {\n if (!url.startsWith('http://') && !url.startsWith('https://')) {\n return 'http://' + url;\n }\n return url;\n}\n\nfunction cleanUrl(url: string): string {\n try {\n const parsedUrl = new URL(url);\n const scheme = parsedUrl.protocol;\n const host = parsedUrl.host;\n const path = normalizeUrlPath(parsedUrl.pathname);\n return `${scheme}//${host}${path}`;\n } catch (e) {\n return url;\n }\n}\n\nfunction normalizeUrlPath(path: string): string {\n const re = /\\/{2,}/g;\n return path.replace(re, '/');\n}\n\nfunction isValidUrl(url: string): URL | null {\n try {\n const newUrl = new URL(url);\n return newUrl;\n } catch (e) {\n return null;\n }\n}\n\nfunction urlHostEquals(url: URL, hostValue: string): boolean {\n return url.host.toLowerCase().replace(/^www\\./, '') === hostValue.toLowerCase();\n}\n\nfunction urlHostEqualsOneOf(url: URL, hostValues: string[]): boolean {\n const host = url.host.toLowerCase().replace(/^www\\./, '');\n return hostValues.some((h) => h === host);\n}\n\nfunction urlHostEndsWith(url: URL, hostValue: string): boolean {\n return url.host.toLowerCase().endsWith(hostValue);\n}\n\nfunction urlHostEndsWithOneOf(url: URL, hostValues: string[]): boolean {\n const host = url.host.toLowerCase();\n return hostValues.some((h) => host.endsWith(h.toLowerCase()));\n}\n\nfunction urlPathNotEmpty(url: URL): boolean {\n return !(url.pathname === '' || (url.pathname === '/' && url.hash === ''));\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { TranslateModule } from '@ngx-translate/core';\nimport {\n AbstractControl,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n ValidationErrors,\n} from '@angular/forms';\nimport {\n FormInputComponent,\n FieldValueInterface,\n FieldOptionsInjectionToken,\n FieldOptionsDependencies,\n} from '../../../../tokens-and-interfaces';\nimport { InlineEditService } from '../../inline-edit.service';\nimport { StandardIds } from '../../../../shared-services';\nimport { SyncIconComponent } from '../accounts/sync-icon/sync-icon.component';\nimport { SEARCH_DEBOUNCE_MS } from '../../../../constants';\nimport {\n facebookUrlValidator,\n linkedInUrlValidator,\n pinterestUrlValidator,\n tikTokUrlValidator,\n xUrlValidator,\n instagramUrlValidator,\n} from './url.service';\n\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n filter,\n Observable,\n of,\n skipWhile,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\n\nimport { stopChromeAutofill } from '../stop-chrome-autofill';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { FieldWarningService } from '../model-driven-form-error/field-warning.service';\nimport { provideAnimations } from '@angular/platform-browser/animations';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { AutoFill } from '@galaxy/crm/components/animations';\nimport { UpdaterService } from '../updater.service';\n\n@Component({\n templateUrl: './social-media-url.html',\n styleUrls: ['../renderers.scss'],\n imports: [\n CommonModule,\n MatInputModule,\n ReactiveFormsModule,\n TranslateModule,\n GalaxyFormFieldModule,\n MatAutocompleteModule,\n SyncIconComponent,\n MatIcon,\n MatIconButton,\n ],\n providers: [FieldWarningService, provideAnimations()],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [AutoFill],\n})\nexport class SocialMediaUrlComponent extends FormInputComponent {\n private validUrl = '';\n\n filteredOptions$: Observable = of([]);\n initialized$ = new BehaviorSubject(false);\n\n _fieldId = '';\n set fieldId(fieldId: string) {\n this._fieldId = fieldId;\n }\n get fieldId(): string {\n return this._fieldId;\n }\n _label = '';\n set label(label: string) {\n this._label = label;\n }\n get label(): string {\n return this._label;\n }\n\n _control!: UntypedFormControl;\n set control(formControl: UntypedFormControl) {\n this._control = formControl;\n this._control.clearValidators();\n this.setUrlValidator();\n const controlChanges$ = this._control.valueChanges.pipe(\n startWith(this._control.value),\n debounceTime(SEARCH_DEBOUNCE_MS),\n );\n const initialized$ = this.initialized$.pipe(distinctUntilChanged());\n this.filteredOptions$ = combineLatest([controlChanges$, initialized$]).pipe(\n takeUntilDestroyed(this.destroyRef),\n skipWhile(([, initialized]: [string, boolean]) => !initialized),\n switchMap(([value]: [string, boolean]) => {\n return this.fieldOptionsDependencies.getFieldOptions(this.fieldId, value);\n }),\n );\n }\n get control(): UntypedFormControl {\n return this._control;\n }\n\n disableAutoComplete: string = stopChromeAutofill();\n autoFillState = 'default';\n private isInlineEdit = toSignal(this.inlineEditService.isInlineEdit$);\n\n constructor(\n @Inject(FieldOptionsInjectionToken) private readonly fieldOptionsDependencies: FieldOptionsDependencies,\n readonly destroyRef: DestroyRef,\n private changeDetRef: ChangeDetectorRef,\n private updaterService: UpdaterService,\n private readonly inlineEditService: InlineEditService,\n ) {\n super();\n this.updaterService.clearedField$\n .pipe(\n takeUntilDestroyed(),\n filter((f: FieldValueInterface) => f.fieldId === this.fieldId),\n )\n .subscribe((_) => this.clear());\n\n this.updaterService.updatedField\n .pipe(\n takeUntilDestroyed(),\n tap((data) => {\n if (data.stringValue?.trim().length && data.fieldId === this.fieldId) {\n this.autoFillState = 'highlight';\n setTimeout(() => {\n this.autoFillState = 'default';\n this.changeDetRef.detectChanges();\n }, 1200);\n this.control.setValue(data.stringValue);\n this.control.markAsDirty();\n this.changeDetRef.detectChanges();\n }\n }),\n )\n .subscribe();\n }\n\n clear(): void {\n this.control.reset();\n this.control.markAsDirty();\n if (this.isInlineEdit()) {\n this.saveField();\n }\n }\n\n initializeField(): void {\n this.initialized$.next(true);\n }\n\n set formGroup(group: UntypedFormGroup) {\n // do nothing\n }\n\n get hasModification(): boolean {\n return this.control.dirty;\n }\n\n get value(): FieldValueInterface {\n return {\n fieldId: this.fieldId,\n stringValue: this.control.value,\n };\n }\n\n saveField(): void {\n if (this.control.valid) {\n this.inlineEditService.saveInlineEdit(this.objectType, [\n {\n fieldId: this.fieldId,\n stringValue: this.validUrl,\n },\n ]);\n }\n }\n\n private setUrlValidator() {\n switch (this.fieldId) {\n case StandardIds.CompanyLinkedInURL:\n this._control.addValidators(this.isValidLinkedInUrl.bind(this));\n break;\n case StandardIds.CompanyFacebookURL:\n this._control.addValidators(this.isValidFacebookUrl.bind(this));\n break;\n case StandardIds.CompanyPinterestURL:\n this._control.addValidators(this.isValidPinterestInUrl.bind(this));\n break;\n case StandardIds.CompanyTikTokURL:\n this._control.addValidators(this.isValidTikTokUrl.bind(this));\n break;\n case StandardIds.CompanyXURL:\n this._control.addValidators(this.isValidXUrl.bind(this));\n break;\n case StandardIds.CompanyInstagramURL:\n this._control.addValidators(this.isValidInstagramUrl.bind(this));\n break;\n }\n }\n\n private isValidLinkedInUrl(control: AbstractControl): ValidationErrors | null {\n const linkedInUrl = control.value;\n const validLinkedInUrl = linkedInUrlValidator(linkedInUrl);\n if (validLinkedInUrl === false) {\n return {\n invalidSocialMediaUrl: true,\n };\n }\n this.validUrl = validLinkedInUrl;\n return null;\n }\n\n private isValidFacebookUrl(control: AbstractControl): ValidationErrors | null {\n const facebookUrl = control.value;\n const validFacebookUrl = facebookUrlValidator(facebookUrl);\n if (validFacebookUrl === false) {\n return {\n invalidSocialMediaUrl: true,\n };\n }\n this.validUrl = validFacebookUrl;\n return null;\n }\n\n private isValidPinterestInUrl(control: AbstractControl): ValidationErrors | null {\n const pinterestUrl = control.value;\n const validPinterestUrl = pinterestUrlValidator(pinterestUrl);\n if (validPinterestUrl === false) {\n return {\n invalidSocialMediaUrl: true,\n };\n }\n this.validUrl = validPinterestUrl;\n return null;\n }\n\n private isValidTikTokUrl(control: AbstractControl): ValidationErrors | null {\n const tikTokUrl = control.value;\n const validTikTokUrl = tikTokUrlValidator(tikTokUrl);\n if (validTikTokUrl === false) {\n return {\n invalidSocialMediaUrl: true,\n };\n }\n this.validUrl = validTikTokUrl;\n return null;\n }\n\n private isValidXUrl(control: AbstractControl): ValidationErrors | null {\n const xUrl = control.value;\n const validXUrl = xUrlValidator(xUrl);\n if (validXUrl === false) {\n return {\n invalidSocialMediaUrl: true,\n };\n }\n this.validUrl = validXUrl;\n return null;\n }\n\n private isValidInstagramUrl(control: AbstractControl): ValidationErrors | null {\n const instagramUrl = control.value;\n const validInstagramUrl = instagramUrlValidator(instagramUrl);\n if (validInstagramUrl === false) {\n return {\n invalidSocialMediaUrl: true,\n };\n }\n this.validUrl = validInstagramUrl;\n return null;\n }\n}\n","\n \n {{ label | translate }}\n \n \n \n @if (control.value) {\n \n }\n \n @for (option of filteredOptions$ | async; track option) {\n {{ option }} \n }\n \n @if(control.value?.length === 4000) {\n \n {{ 'MODEL_DRIVEN_FORM.STRING_LIMIT_HINT' | translate: { characters: control.value?.length || 0 } }}\n \n } @if (_control.hasError('invalidSocialMediaUrl')) {\n {{ 'MODEL_DRIVEN_FORM.INVALID_URL_ERROR' | translate }} \n }\n\n","import { ChangeDetectorRef, Component, computed, DestroyRef, effect, inject, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatSelectModule } from '@angular/material/select';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatOption } from '@angular/material/autocomplete';\nimport { FormControl, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { AutoFill } from '@galaxy/crm/components/animations';\nimport { FieldValueInterface, FormInputComponent, ObjectType } from '../../../../tokens-and-interfaces';\nimport { InlineEditService, UpdaterService } from '../..';\nimport { CrmFieldService, CrmObjectService, CrmPipelineService, Stage, StandardIds } from '../../../../shared-services';\nimport { map, switchMap } from 'rxjs/operators';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n templateUrl: './stage-selector.component.html',\n styleUrls: ['../renderers.scss'],\n imports: [CommonModule, MatSelectModule, GalaxyFormFieldModule, TranslateModule, MatOption, ReactiveFormsModule],\n animations: [AutoFill],\n})\nexport class StageSelectorComponent extends FormInputComponent {\n private readonly pipelineService = inject(CrmPipelineService);\n private readonly updaterService = inject(UpdaterService);\n private readonly fieldService = inject(CrmFieldService);\n private readonly crmObjectService = inject(CrmObjectService);\n private readonly changeDetRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly inlineEditService = inject(InlineEditService);\n override objectType: ObjectType = 'Opportunity';\n\n _fieldId = '';\n set fieldId(fieldId: string) {\n this._fieldId = fieldId;\n }\n get fieldId(): string {\n return this._fieldId;\n }\n protected readonly selectedStage = signal('');\n private readonly selectedMutations = computed(() => {\n const newStageId = this.selectedStage();\n const stageObject = this.availableStageOptions().find((stage) => stage.id === newStageId);\n return stageObject?.mutations || [];\n });\n _control: FormControl = new FormControl('', {\n nonNullable: true,\n });\n set control(control: FormControl) {\n this._control = control;\n //parent component will override control so we need to track changes through a seperate object\n this._control.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((val) => {\n this.selectedStage.set(val);\n });\n }\n get control(): UntypedFormControl {\n return this._control;\n }\n\n _label = '';\n set label(label: string) {\n this._label = label;\n }\n get label(): string {\n return this._label;\n }\n\n autoFillState = signal('default');\n private readonly objectId$ = toObservable(this.objectId);\n private readonly currentPipelineId = signal('');\n private readonly stageOptionsPerPipeline = toSignal(\n this.pipelineService.listPipelines$(this.objectType).pipe(\n map((pipelines) => {\n const pipelineMap = new Map();\n pipelines.forEach((pipeline) => {\n pipelineMap.set(pipeline.id, pipeline.stages);\n });\n return pipelineMap;\n }),\n ),\n );\n protected readonly availableStageOptions = computed(() => {\n const allOptions = this.stageOptionsPerPipeline();\n const selectedPipeline = this.currentPipelineId();\n return allOptions?.get(selectedPipeline) || [];\n });\n private readonly existingObject = toSignal(\n this.objectId$.pipe(\n switchMap((objectId) => this.crmObjectService.getMultiObject(this.objectType, [objectId])),\n map((resp) => (resp.crmObjects && resp.crmObjects.length > 0 ? resp.crmObjects[0] : {})),\n ),\n );\n protected readonly existingStage = computed(() => {\n const existingObject = this.existingObject();\n if (existingObject) {\n const fieldValue = this.fieldService.getFieldValueFromCrmObject(\n existingObject,\n StandardIds.OpportunityCalculatedStageID,\n );\n return fieldValue?.stringValue || '';\n }\n return '';\n });\n\n constructor() {\n super();\n effect(() => {\n const existingStage = this.existingStage();\n if (existingStage) {\n this._control.setValue(existingStage, { emitEvent: false });\n }\n });\n\n this.updaterService.updatedField.pipe(takeUntilDestroyed()).subscribe((fieldChanged) => {\n //watch for pipeline changes\n if (\n fieldChanged?.fieldId === StandardIds.OpportunityPipelineID &&\n fieldChanged?.stringValue !== this.currentPipelineId()\n ) {\n this.currentPipelineId.set(fieldChanged?.stringValue || '');\n const allStages = this.stageOptionsPerPipeline();\n const validStages = allStages?.get(fieldChanged?.stringValue ?? '') ?? [];\n this.control.setValue(validStages.length > 0 ? validStages[0].id : '');\n this.control.markAsDirty();\n this.highlightField();\n }\n });\n }\n\n set formGroup(group: UntypedFormGroup) {\n this.currentPipelineId.set(group?.value[StandardIds.OpportunityPipelineID] || '');\n }\n\n get hasModification(): boolean {\n return this.control.dirty;\n }\n\n get value(): FieldValueInterface {\n const stageMutations = this.selectedMutations();\n const probability = stageMutations.find((stage) => stage.fieldId === StandardIds.OpportunityProbability);\n return {\n fieldId: this.fieldId,\n floatValue: probability?.floatValue,\n };\n }\n\n saveField(): void {\n const stageId = this.selectedStage();\n const stageMutations = this.selectedMutations();\n if (stageMutations?.length > 0) {\n for (const mutation of stageMutations) {\n this.updaterService.updateFieldValue(mutation);\n }\n this.updaterService.updateStringField(this.fieldId, stageId);\n this.inlineEditService.saveInlineEdit(this.objectType, stageMutations);\n }\n }\n\n private highlightField(): void {\n this.autoFillState.set('highlight');\n setTimeout(() => {\n this.autoFillState.set('default');\n this.changeDetRef.detectChanges();\n }, 1200);\n }\n}\n","@if (availableStageOptions()) {\n \n {{ 'OPPORTUNITY.STAGE.SELECTOR.LABEL' | translate }}\n \n \n {{ pipelineOption.name }}\n \n \n \n {{ 'STANDARD_FIELD_RULES.OPPORTUNITY.STAGE_REQUIRED' | translate }}\n \n \n} @else {\n
\n}\n","import { BooleanFieldHandler } from './renderers/boolean';\nimport { DateFieldHandler } from './renderers/date';\nimport { DatetimeFieldHandler } from './renderers/datetime';\nimport { emailValidatorCodeMapping } from './renderers/email_validator';\nimport { IntegerFieldHandler } from './renderers/integer';\nimport { FloatFieldHandler } from './renderers/float/float-field-handler';\nimport { PhoneFieldHandler } from './renderers/phone/phone-field-handler';\nimport { TagsFieldHandler } from './renderers/tags';\nimport { TextFieldHandler } from './renderers/text';\nimport { CurrencyFieldHandler } from './renderers/currency/currency-field-handler';\nimport { FieldValidation } from './field-validation';\nimport { Inject, Injectable } from '@angular/core';\nimport { ValidatorFactoryService } from './validator-factory.service';\nimport { CustomFieldHandler } from './renderers/custom';\nimport { LifecycleStageSelectorHandler } from './renderers/lifecycle-stage-selector/lifecycle-stage-handler';\nimport { EmailFieldHandler } from './renderers/email';\nimport { GeopointFieldHandler } from './renderers/geopoint';\nimport { GooglePlaceSelectorComponent } from './renderers/google-place-selector/google-place-selector.component';\nimport {\n CrmDependencies,\n CrmInjectionToken,\n FieldSchemaInterface,\n FieldType,\n FormCustomInput,\n ObjectType,\n RenderableFieldInterface,\n} from '../../tokens-and-interfaces';\nimport { StandardIds, SystemFieldIds } from '../../shared-services';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { buildE164FormatValidator } from './renderers/phone/phone-validator';\nimport { PipelineSelectorComponent } from './renderers/pipeline-selector/pipeline-selector.component';\nimport { OpportunityNameComponent } from './renderers/opportunity-name/opportunity-name.component';\nimport { HiddenTextFormInputComponent } from './renderers/hidden/hidden-text';\nimport { HiddenDatetimeFormInputComponent } from './renderers/hidden/hidden-datetime';\nimport { MarketingConsentSelectorComponent } from './renderers/marketing-consent-selector/marketing-consent-selector.component';\nimport { SocialMediaUrlComponent } from './renderers/url/social-media-url';\nimport { StageSelectorComponent } from './renderers/stage-selector/stage-selector.component';\n\n@Injectable()\nexport class RendererSelectorService {\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly validatorFactory: ValidatorFactoryService,\n ) {}\n\n defaultCustomInputs: FormCustomInput[] = [\n {\n fieldId: StandardIds.CompanyName,\n component: GooglePlaceSelectorComponent,\n },\n {\n fieldId: StandardIds.OpportunityPipelineID,\n component: PipelineSelectorComponent,\n },\n {\n fieldId: StandardIds.OpportunityName,\n component: OpportunityNameComponent,\n },\n {\n fieldId: StandardIds.OpportunityProbability,\n component: StageSelectorComponent,\n },\n {\n fieldId: StandardIds.CompanyPrimaryAddressGooglePlaceID,\n component: HiddenTextFormInputComponent,\n },\n {\n fieldId: StandardIds.ContactMarketingEmailConsentStatus,\n component: MarketingConsentSelectorComponent,\n },\n {\n fieldId: StandardIds.ContactMarketingEmailConsentTimestamp,\n component: HiddenDatetimeFormInputComponent,\n },\n {\n fieldId: StandardIds.ContactMarketingEmailConsentSource,\n component: HiddenTextFormInputComponent,\n },\n {\n fieldId: StandardIds.ContactSMSConsentStatus,\n component: MarketingConsentSelectorComponent,\n },\n {\n fieldId: StandardIds.ContactSMSConsentTimestamp,\n component: HiddenDatetimeFormInputComponent,\n },\n {\n fieldId: StandardIds.ContactSMSConsentSource,\n component: HiddenTextFormInputComponent,\n },\n {\n fieldId: StandardIds.CompanyLinkedInURL,\n component: SocialMediaUrlComponent,\n },\n {\n fieldId: StandardIds.CompanyFacebookURL,\n component: SocialMediaUrlComponent,\n },\n {\n fieldId: StandardIds.CompanyPinterestURL,\n component: SocialMediaUrlComponent,\n },\n {\n fieldId: StandardIds.CompanyTikTokURL,\n component: SocialMediaUrlComponent,\n },\n {\n fieldId: StandardIds.CompanyXURL,\n component: SocialMediaUrlComponent,\n },\n {\n fieldId: StandardIds.CompanyInstagramURL,\n component: SocialMediaUrlComponent,\n },\n {\n fieldId: StandardIds.OpportunityStatus,\n component: HiddenTextFormInputComponent,\n },\n ];\n\n chooseHandler(\n objectType: ObjectType,\n fieldId: string,\n fieldSchema: FieldSchemaInterface,\n fieldData: any,\n showLabel: boolean,\n readOnly = false,\n formGroup: UntypedFormGroup,\n isEditing = false,\n objectId?: string,\n ): RenderableFieldInterface | null {\n const label = showLabel ? fieldSchema.fieldName : '';\n const customForms: FormCustomInput[] = [];\n const objectDependencies = this.config[objectType.toLowerCase()];\n if (objectDependencies?.formCustomInputs) {\n customForms.push(...objectDependencies.formCustomInputs);\n }\n customForms.push(...this.defaultCustomInputs);\n\n const customForm = customForms?.find((f) => f.fieldId === fieldId);\n if (customForm) {\n return new CustomFieldHandler(\n customForm,\n objectType,\n fieldId,\n label,\n fieldData,\n readOnly,\n formGroup,\n isEditing,\n objectId,\n );\n }\n\n if (fieldId === StandardIds.CompanyLifecycleStage || fieldId === StandardIds.ContactLifecycleStage) {\n return new LifecycleStageSelectorHandler(\n objectType,\n fieldId,\n fieldSchema.fieldName,\n label,\n fieldData,\n fieldSchema.fieldDescription,\n readOnly,\n );\n }\n\n if (fieldId === StandardIds.CompanyPrimaryAddressLatitudeLongitude) {\n return new GeopointFieldHandler(\n objectType,\n fieldId,\n fieldSchema.fieldName,\n label,\n fieldData,\n fieldSchema.fieldDescription,\n true,\n );\n }\n\n switch (fieldSchema.fieldType) {\n case FieldType.FIELD_TYPE_PHONE:\n return new PhoneFieldHandler(\n objectType,\n fieldId,\n fieldSchema.fieldName,\n label,\n fieldData,\n fieldSchema.fieldDescription,\n readOnly,\n );\n case FieldType.FIELD_TYPE_STRING:\n return new TextFieldHandler(\n objectType,\n fieldId,\n fieldSchema.fieldName,\n label,\n fieldData,\n fieldSchema.fieldDescription,\n readOnly,\n );\n case FieldType.FIELD_TYPE_INTEGER:\n return new IntegerFieldHandler(\n objectType,\n fieldId,\n fieldSchema.fieldName,\n label,\n fieldData as number,\n fieldSchema.fieldDescription,\n readOnly,\n );\n case FieldType.FIELD_TYPE_FLOAT:\n return new FloatFieldHandler(\n objectType,\n fieldId,\n fieldSchema.fieldName,\n label,\n fieldData as number,\n fieldSchema.fieldDescription,\n readOnly,\n );\n case FieldType.FIELD_TYPE_DATE:\n return new DateFieldHandler(\n objectType,\n fieldId,\n fieldSchema.fieldName,\n label,\n fieldData,\n fieldSchema.fieldDescription,\n readOnly,\n );\n case FieldType.FIELD_TYPE_DATETIME:\n return new DatetimeFieldHandler(\n objectType,\n fieldId,\n fieldSchema.fieldName,\n label,\n fieldData,\n fieldSchema.fieldDescription,\n readOnly,\n );\n case FieldType.FIELD_TYPE_BOOLEAN:\n return new BooleanFieldHandler(\n objectType,\n fieldId,\n fieldSchema.fieldName,\n label,\n fieldData,\n fieldSchema.fieldDescription,\n readOnly,\n );\n case FieldType.FIELD_TYPE_EMAIL:\n return new EmailFieldHandler(\n objectType,\n fieldId,\n fieldSchema.fieldName,\n label,\n fieldData,\n fieldSchema.fieldDescription,\n readOnly,\n );\n case FieldType.FIELD_TYPE_TAG:\n return new TagsFieldHandler(\n objectType,\n fieldId,\n fieldSchema.fieldName,\n label,\n fieldData,\n fieldSchema.fieldDescription,\n readOnly,\n 25,\n 200,\n 'MODEL_DRIVEN_FORM.ADD_TAG_PROMPT',\n 'MODEL_DRIVEN_FORM.TAG_LIMIT_ERROR',\n );\n case FieldType.FIELD_TYPE_STRING_LIST:\n return new TagsFieldHandler(\n objectType,\n fieldId,\n fieldSchema.fieldName,\n label,\n fieldData,\n fieldSchema.fieldDescription,\n readOnly,\n 25, // use same limit as tags\n 200, // use same limit as tags\n 'MODEL_DRIVEN_FORM.ADD_STRINGLIST_ITEM_PROMPT',\n '',\n );\n case FieldType.FIELD_TYPE_CURRENCY:\n return new CurrencyFieldHandler(\n objectType,\n fieldId,\n fieldSchema.fieldName,\n label,\n fieldData,\n fieldSchema.fieldDescription,\n readOnly,\n );\n default:\n console.warn(\n `Could not choose renderer/handler for field ${fieldSchema.fieldId} with type ${fieldSchema.fieldType}`,\n );\n return null;\n }\n }\n\n setupFieldValidators(field: RenderableFieldInterface, fieldSchemaMap: Map): void {\n const schema = fieldSchemaMap.get(field.fieldId);\n const validation = new FieldValidation();\n const systemExternalIds = [SystemFieldIds.CompanyExternalID, SystemFieldIds.ContactExternalID];\n switch (schema?.fieldType) {\n case FieldType.FIELD_TYPE_STRING:\n if (systemExternalIds.includes(field.fieldId)) {\n validation.addValidationError(this.validatorFactory.buildUniquenessValidatorCodeMappings(field.fieldId));\n field.setValidation(validation);\n }\n return;\n case FieldType.FIELD_TYPE_EMAIL:\n validation.addValidationError(emailValidatorCodeMapping);\n validation.addValidationError(this.validatorFactory.buildUniquenessValidatorCodeMappings(field.fieldId));\n field.setValidation(validation);\n return;\n case FieldType.FIELD_TYPE_PHONE:\n validation.addValidationError(this.validatorFactory.buildUniquenessValidatorCodeMappings(field.fieldId));\n validation.addValidationError(buildE164FormatValidator(schema ?? ({} as FieldSchemaInterface)));\n field.setValidation(validation);\n return;\n default:\n return;\n }\n }\n}\n","import { Component, EventEmitter, Inject, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { RendererSelectorService } from '../../renderer-selector.service';\nimport { ValidatorFactoryService } from '../../validator-factory.service';\nimport { InlineEditService } from '../../inline-edit.service';\nimport { ScoreService } from '../../../../shared-services';\nimport { CrmFieldService } from '../../../../shared-services/crm-services/field.service';\nimport {\n CrmInjectionToken,\n CrmDependencies,\n FieldConfigInterface,\n FieldGroupInterface,\n FieldInterface,\n FieldSchemaInterface,\n LoadingStatus,\n ObjectType,\n RenderableFieldGroupInterface,\n RenderableFieldInterface,\n SavingStatus,\n} from '../../../../tokens-and-interfaces';\nimport { TranslateByObjectTypeService } from '../../../../i18n';\n\nconst SNACKBAR_DURATION = 10000;\n\n@Component({\n template: `\n \n \n `,\n standalone: true,\n})\nexport class BaseCrmModelDrivenFormComponent implements OnChanges, OnDestroy {\n @Input({ required: true }) objectType!: ObjectType;\n @Input() existingObjectId = '';\n\n @Input() fieldConfig: FieldConfigInterface = {};\n\n @Input() submitButtonText = '';\n @Input() cancelButtonText = '';\n\n @Input() loadingStatus!: LoadingStatus;\n @Input() savingStatus!: SavingStatus;\n @Input() readOnly = false;\n @Input() inlineEdit = false;\n @Input() isEditing = false;\n\n @Output() formSubmit = new EventEmitter();\n @Output() formCancel = new EventEmitter();\n\n formGroup = new UntypedFormGroup({});\n\n readOnlyFields: RenderableFieldInterface[] = [];\n renderableFields: RenderableFieldInterface[] = [];\n renderableFieldGroups: RenderableFieldGroupInterface[] = [];\n readonlyRenderableFieldGroups: RenderableFieldGroupInterface[] = [];\n\n constructor(\n @Inject(CrmInjectionToken) protected readonly config: CrmDependencies,\n protected snackService: SnackbarService,\n protected rendererSelector: RendererSelectorService,\n protected readonly validatorFactory: ValidatorFactoryService,\n protected readonly inlineEditService: InlineEditService,\n protected readonly crmFieldService: CrmFieldService,\n protected readonly scoreService: ScoreService,\n protected readonly translateByObjectTypeService: TranslateByObjectTypeService,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['fieldConfig'] || changes['readOnly']) {\n this.initialize(this.fieldConfig?.fieldSchemas ?? [], this.fieldConfig?.fieldGroups ?? []);\n }\n if (changes['existingObjectId']) {\n this.inlineEditService.setObjectId(this.existingObjectId);\n this.scoreService.setObjectId(this.existingObjectId);\n }\n if (changes['inlineEdit']) {\n this.inlineEditService.setInlineEdit(this.inlineEdit);\n }\n }\n\n ngOnDestroy(): void {\n // have to free memory or else these components stay up in memory forever\n this.readOnlyFields = [];\n this.renderableFields = [];\n this.renderableFieldGroups = [];\n this.readonlyRenderableFieldGroups = [];\n }\n\n private setupValidation(fieldSchemas: FieldSchemaInterface[]): void {\n this.validatorFactory.initialize(\n this.objectType,\n this.existingObjectId,\n this.renderableFields,\n this.formGroup.valueChanges,\n );\n const fieldSchemaMap = new Map();\n for (const schema of fieldSchemas) {\n fieldSchemaMap.set(schema.fieldId, schema);\n }\n for (const field of this.renderableFields) {\n this.rendererSelector.setupFieldValidators(field, fieldSchemaMap);\n }\n }\n\n protected initialize(fieldSchemas: FieldSchemaInterface[], fieldGroups: FieldGroupInterface[]): void {\n if (fieldSchemas.length === 0 || fieldGroups.length === 0) {\n return;\n }\n\n // values are re-instantiated to avoid duplicating field value references internally\n this.renderableFieldGroups = [];\n this.renderableFields = [];\n this.readOnlyFields = [];\n fieldGroups.forEach((group) => {\n const renderableFieldGroup: RenderableFieldGroupInterface = {\n description: group.description,\n fields: [],\n editableFieldCount: 0,\n };\n\n const readOnlyRenderableFieldGroup: RenderableFieldGroupInterface = {\n description: group.description,\n fields: [],\n editableFieldCount: 0,\n };\n group.fieldIds.forEach((fieldId) => {\n const fieldSchema = fieldSchemas.find((fieldSchema) => fieldSchema.fieldId === fieldId);\n if (fieldSchema === undefined) {\n console.warn(`Couldn't find field with fieldId ${fieldId} in group with description ${group.description}`);\n return;\n }\n const renderableField = this.rendererSelector.chooseHandler(\n this.objectType,\n fieldSchema.fieldId,\n fieldSchema,\n fieldSchema.value,\n true,\n this.readOnly || fieldSchema.readOnly,\n this.formGroup,\n this.isEditing,\n this.existingObjectId,\n );\n if (renderableField !== null) {\n this.formGroup.setControl(renderableField.fieldId, renderableField.formControl);\n if (fieldSchema.hasDefaultValue) {\n renderableField.formControl.markAsDirty();\n }\n if (fieldSchema.readOnly) {\n this.readOnlyFields.push(renderableField);\n if (\n this.crmFieldService.shouldRenderReadonlyField(renderableField.fieldId) &&\n renderableField.value !== null\n ) {\n readOnlyRenderableFieldGroup.fields.push(renderableField);\n }\n } else {\n this.renderableFields.push(renderableField);\n renderableFieldGroup.fields.push(renderableField);\n }\n }\n });\n\n if (renderableFieldGroup.fields.length === 0) {\n console.warn(`Couldn't find any fields for group with description ${group.description}`);\n return;\n }\n if (readOnlyRenderableFieldGroup.fields.length > 0) {\n this.readonlyRenderableFieldGroups.push(readOnlyRenderableFieldGroup);\n }\n renderableFieldGroup.editableFieldCount = renderableFieldGroup.fields.reduce(\n (acc, field) => acc + (field.readOnly ? 0 : 1),\n 0,\n );\n this.renderableFieldGroups.push(renderableFieldGroup);\n });\n this.setupValidation(fieldSchemas);\n }\n\n protected onSubmit(): void {\n if (this.formGroup.pristine) {\n this.snackService.openErrorSnack('MODEL_DRIVEN_FORM.SUBMITTED_PRISTINE', {\n duration: SNACKBAR_DURATION,\n });\n return;\n }\n if (this.formGroup.invalid) {\n this.formGroup.markAllAsTouched();\n const errorMessage = this.existingObjectId ? 'MODEL_DRIVEN_FORM.UPDATE_ERROR' : 'MODEL_DRIVEN_FORM.CREATE_ERROR';\n const translatedObjectType = this.translateByObjectTypeService.getTranslatedObjectType(this.objectType);\n this.snackService.openErrorSnack(errorMessage, {\n duration: SNACKBAR_DURATION,\n interpolateTranslateParams: { objectType: translatedObjectType.toLowerCase() },\n });\n return;\n }\n this.formSubmit.emit([...this.renderableFields, ...this.readOnlyFields]);\n }\n\n onCancel(): void {\n this.formCancel.emit();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { LoadingStatus } from '../../../../tokens-and-interfaces';\n\n@Component({\n selector: 'crm-form-loading-indicator',\n template: `\n \n \n \n \n \n \n \n\n \n \n report_problem\n \n \n {{ 'MODEL_DRIVEN_FORM.LOADING_STATUS_ERROR.TITLE' | translate }}\n \n

{{ 'MODEL_DRIVEN_FORM.LOADING_STATUS_ERROR.TEXT' | translate }}

\n \n
\n
\n `,\n styleUrls: [],\n imports: [CommonModule, TranslateModule, GalaxyEmptyStateModule, MatIconModule, GalaxyLoadingSpinnerModule],\n})\nexport class CrmFormLoadingIndicatorComponent {\n @Input() loadingStatus!: LoadingStatus;\n LoadingStatus = LoadingStatus;\n}\n","\"use strict\";\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decamelize = decamelize;\nexports.dasherize = dasherize;\nexports.camelize = camelize;\nexports.classify = classify;\nexports.underscore = underscore;\nexports.capitalize = capitalize;\nexports.levenshtein = levenshtein;\nconst STRING_DASHERIZE_REGEXP = /[ _]/g;\nconst STRING_DECAMELIZE_REGEXP = /([a-z\\d])([A-Z])/g;\nconst STRING_CAMELIZE_REGEXP = /(-|_|\\.|\\s)+(.)?/g;\nconst STRING_UNDERSCORE_REGEXP_1 = /([a-z\\d])([A-Z]+)/g;\nconst STRING_UNDERSCORE_REGEXP_2 = /-|\\s+/g;\n/**\n * Converts a camelized string into all lower case separated by underscores.\n *\n ```javascript\n decamelize('innerHTML'); // 'inner_html'\n decamelize('action_name'); // 'action_name'\n decamelize('css-class-name'); // 'css-class-name'\n decamelize('my favorite items'); // 'my favorite items'\n ```\n\n @method decamelize\n @param {String} str The string to decamelize.\n @return {String} the decamelized string.\n */\nfunction decamelize(str) {\n return str.replace(STRING_DECAMELIZE_REGEXP, '$1_$2').toLowerCase();\n}\n/**\n Replaces underscores, spaces, or camelCase with dashes.\n\n ```javascript\n dasherize('innerHTML'); // 'inner-html'\n dasherize('action_name'); // 'action-name'\n dasherize('css-class-name'); // 'css-class-name'\n dasherize('my favorite items'); // 'my-favorite-items'\n ```\n\n @method dasherize\n @param {String} str The string to dasherize.\n @return {String} the dasherized string.\n */\nfunction dasherize(str) {\n return decamelize(str).replace(STRING_DASHERIZE_REGEXP, '-');\n}\n/**\n Returns the lowerCamelCase form of a string.\n\n ```javascript\n camelize('innerHTML'); // 'innerHTML'\n camelize('action_name'); // 'actionName'\n camelize('css-class-name'); // 'cssClassName'\n camelize('my favorite items'); // 'myFavoriteItems'\n camelize('My Favorite Items'); // 'myFavoriteItems'\n ```\n\n @method camelize\n @param {String} str The string to camelize.\n @return {String} the camelized string.\n */\nfunction camelize(str) {\n return str.replace(STRING_CAMELIZE_REGEXP, (_match, _separator, chr) => {\n return chr ? chr.toUpperCase() : '';\n }).replace(/^([A-Z])/, match => match.toLowerCase());\n}\n/**\n Returns the UpperCamelCase form of a string.\n\n @example\n ```javascript\n 'innerHTML'.classify(); // 'InnerHTML'\n 'action_name'.classify(); // 'ActionName'\n 'css-class-name'.classify(); // 'CssClassName'\n 'my favorite items'.classify(); // 'MyFavoriteItems'\n 'app.component'.classify(); // 'AppComponent'\n ```\n @method classify\n @param {String} str the string to classify\n @return {String} the classified string\n */\nfunction classify(str) {\n return str.split('.').map(part => capitalize(camelize(part))).join('');\n}\n/**\n More general than decamelize. Returns the lower_case_and_underscored\n form of a string.\n\n ```javascript\n 'innerHTML'.underscore(); // 'inner_html'\n 'action_name'.underscore(); // 'action_name'\n 'css-class-name'.underscore(); // 'css_class_name'\n 'my favorite items'.underscore(); // 'my_favorite_items'\n ```\n\n @method underscore\n @param {String} str The string to underscore.\n @return {String} the underscored string.\n */\nfunction underscore(str) {\n return str.replace(STRING_UNDERSCORE_REGEXP_1, '$1_$2').replace(STRING_UNDERSCORE_REGEXP_2, '_').toLowerCase();\n}\n/**\n Returns the Capitalized form of a string\n\n ```javascript\n 'innerHTML'.capitalize() // 'InnerHTML'\n 'action_name'.capitalize() // 'Action_name'\n 'css-class-name'.capitalize() // 'Css-class-name'\n 'my favorite items'.capitalize() // 'My favorite items'\n ```\n\n @method capitalize\n @param {String} str The string to capitalize.\n @return {String} The capitalized string.\n */\nfunction capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n/**\n * Calculate the levenshtein distance of two strings.\n * See https://en.wikipedia.org/wiki/Levenshtein_distance.\n * Based off https://gist.github.com/andrei-m/982927 (for using the faster dynamic programming\n * version).\n *\n * @param a String a.\n * @param b String b.\n * @returns A number that represents the distance between the two strings. The greater the number\n * the more distant the strings are from each others.\n */\nfunction levenshtein(a, b) {\n if (a.length == 0) {\n return b.length;\n }\n if (b.length == 0) {\n return a.length;\n }\n const matrix = [];\n // increment along the first column of each row\n for (let i = 0; i <= b.length; i++) {\n matrix[i] = [i];\n }\n // increment each column in the first row\n for (let j = 0; j <= a.length; j++) {\n matrix[0][j] = j;\n }\n // Fill in the rest of the matrix\n for (let i = 1; i <= b.length; i++) {\n for (let j = 1; j <= a.length; j++) {\n if (b.charAt(i - 1) == a.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1,\n // substitution\n matrix[i][j - 1] + 1,\n // insertion\n matrix[i - 1][j] + 1);\n }\n }\n }\n return matrix[b.length][a.length];\n}","import { dasherize } from '@angular-devkit/core/src/utils/strings';\nimport { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'crm-vertical-nav-card',\n template: `\n \n
\n \n
\n
\n `,\n imports: [CommonModule],\n})\nexport class VerticalNavCardComponent implements OnInit {\n @Input() label = '';\n @Input() active = false;\n @HostBinding('class') class = 'vertical-nav-card';\n\n public id = '';\n\n ngOnInit(): void {\n this.id = dasherize(this.label);\n }\n}\n","import { CommonModule, Location } from '@angular/common';\nimport { HttpParams } from '@angular/common/http';\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n OnInit,\n Output,\n QueryList,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\n\nimport { VerticalNavCardComponent } from './vertical-nav-card.component';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\n\n@Component({\n selector: 'crm-vertical-nav-tab',\n templateUrl: './vertical-nav-tab.component.html',\n styleUrls: ['./vertical-nav-tab.component.scss'],\n imports: [CommonModule, ObserversModule, MatSelectModule, GalaxyFormFieldModule],\n})\nexport class VerticalNavTabComponent implements OnInit, AfterContentInit {\n @HostBinding('class') class = 'vertical-nav-tab';\n\n @Input() useQueryParams = true;\n\n @ContentChildren(VerticalNavCardComponent) tabs?: QueryList;\n\n @Output() tabClicked: EventEmitter = new EventEmitter();\n\n @Input() tabActivated = false;\n\n private readonly location = inject(Location);\n private activatedRoute = inject(ActivatedRoute);\n isMobile = false;\n mobileSelectValue = '';\n\n constructor(private responsive: BreakpointObserver) {}\n\n ngOnInit() {\n this.responsive.observe([Breakpoints.Handset]).subscribe((result) => {\n this.isMobile = result.matches;\n });\n }\n\n ngAfterContentInit(): void {\n this.setActiveTab();\n }\n\n setActiveTab(): void {\n if (!this.tabActivated) {\n let queryParamHasMappedToATab = false;\n const activeTabParam = this.activatedRoute.snapshot.queryParams['tab'];\n if (!this.tabs) return;\n let activeTabs = this.tabs.filter((tab) => tab.active);\n\n if (activeTabParam && this.useQueryParams) {\n // check if tab id in query param, and set as first activeTabs if so\n this.tabs?.some((tab) => {\n if (tab.id === activeTabParam) {\n activeTabs = [];\n activeTabs.push(tab);\n queryParamHasMappedToATab = true;\n return true;\n }\n return false;\n });\n }\n\n if ((activeTabs && activeTabs.length === 0) || !activeTabs[0]) {\n // if no tabs marked active, either through manually setting\n // as active or via query param, make first tab active\n activeTabs = [];\n activeTabs.push(this.tabs.first);\n }\n\n if (!queryParamHasMappedToATab) {\n // If there is no active tab query param that is an id of an actual tab,\n // then set the url to include the correct tab in the query param\n if (activeTabs && activeTabs[0] && activeTabs[0].id) {\n this.addQueryString(activeTabs[0].id);\n }\n }\n\n // Select the active tab\n if (activeTabs && activeTabs[0]) {\n this.selectTab(activeTabs[0]);\n this.tabActivated = true;\n this.mobileSelectValue = activeTabs[0]?.id || '';\n }\n }\n }\n\n addQueryString(tabTitle: string): void {\n if (this.useQueryParams) {\n const params = new HttpParams().set('tab', tabTitle);\n this.location.replaceState(this.location.path().split('?')[0], params.toString(), false);\n }\n }\n\n selectTab(tab: VerticalNavCardComponent, scrolltarget?: HTMLElement): void {\n // deactivate all tabs\n this.tabs?.forEach((thisTab) => {\n thisTab.active = false;\n });\n\n // only scroll back to the top of the tab content if top of the content is not visible\n if (scrolltarget && scrolltarget?.getClientRects()[0]?.top < 0) {\n window.setTimeout(() => {\n scrolltarget.scrollIntoView({ behavior: 'instant' });\n }, 0);\n }\n\n // activate the tab the user has clicked on.\n tab.active = true;\n this.mobileSelectValue = tab?.id || '';\n\n this.tabClicked.emit(tab.id);\n }\n}\n","
\n\n
    \n \n \n {{ tab.label }}\n \n \n
\n\n \n @for (tab of tabs; track tab) {\n \n {{ tab.label }}\n \n }\n \n\n
\n \n
\n","export { VerticalNavTabComponent } from './vertical-nav-tab.component';\nexport { VerticalNavCardComponent } from './vertical-nav-card.component';\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, signal, ViewEncapsulation, model, inject } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { GalaxyStickyFooterModule } from '@vendasta/galaxy/sticky-footer';\nimport { BaseCrmModelDrivenFormComponent } from './base-model-driven-form.component';\nimport { CrmFormButtonGroupComponent } from './form-button-group.component';\nimport { CrmFormLoadingIndicatorComponent } from './form-loading-indicator.component';\nimport { RendererSelectorComponent } from '../../renderer-selector.component';\nimport { VerticalNavTabComponent, VerticalNavCardComponent } from '../../../vertical-nav-tab';\nimport {\n AssociationFormField,\n CrmObjectInjectionToken,\n FieldGroupInterface,\n FieldSchemaInterface,\n} from '../../../../tokens-and-interfaces';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { CrmObjectAssociationFormFieldComponent } from '../../../association-form-field';\nimport { getObjectDependencies } from '../../../../utils';\nimport { SNACKBAR_DURATION } from '../../../../constants';\n\nimport { TranslateByObjectTypePipe } from '../../../../i18n';\n\n@Component({\n selector: 'crm-card-group-driven-form',\n templateUrl: './card-group-driven-form.component.html',\n styleUrls: ['./base-model-driven-form.component.scss'],\n imports: [\n CommonModule,\n FormsModule,\n MatCardModule,\n MatIconModule,\n ReactiveFormsModule,\n TranslateModule,\n GalaxyEmptyStateModule,\n GalaxyStickyFooterModule,\n CrmFormButtonGroupComponent,\n CrmFormLoadingIndicatorComponent,\n RendererSelectorComponent,\n VerticalNavTabComponent,\n VerticalNavCardComponent,\n GalaxyFormFieldModule,\n CrmObjectAssociationFormFieldComponent,\n TranslateByObjectTypePipe,\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrmCardGroupDrivenFormComponent extends BaseCrmModelDrivenFormComponent {\n protected readonly associationFormFields = model([]);\n protected readonly associationIsRequired = signal(false);\n protected readonly associationRequiredError = signal(false);\n\n private readonly crmObjectDependencies = inject(CrmObjectInjectionToken, { optional: true });\n\n protected associationsUpdated() {\n this.associationRequiredError.set(this.associationFieldHasError());\n }\n\n protected override initialize(fieldSchemas: FieldSchemaInterface[], fieldGroups: FieldGroupInterface[]): void {\n super.initialize(fieldSchemas, fieldGroups);\n const createAssociationFields = this.crmObjectDependencies\n ? this.crmObjectDependencies.createAssociationFields\n : getObjectDependencies(this.objectType, this.config)?.createAssociationFields;\n if (createAssociationFields && !this.isEditing) {\n this.associationIsRequired.set(createAssociationFields.required || false);\n const formFields: AssociationFormField[] = createAssociationFields.objectTypes.map((associationType) => {\n return {\n type: associationType,\n associations: [],\n };\n });\n this.associationFormFields.set(formFields);\n }\n }\n\n private associationFieldHasError(): boolean {\n if (!this.associationIsRequired()) {\n return false;\n }\n const associations = this.associationFormFields().flatMap((fields) => fields.associations);\n return associations.length === 0;\n }\n\n protected override onSubmit(): void {\n if (this.associationFieldHasError()) {\n const errorMessage = this.translateByObjectTypeService.getTranslationByObjectType(\n this.objectType,\n 'CREATE_PAGE.SAVE.ASSOCIATIONS_REQUIRED',\n );\n this.snackService.openErrorSnack(errorMessage, {\n duration: SNACKBAR_DURATION,\n });\n this.associationRequiredError.set(true);\n return;\n }\n super.onSubmit();\n }\n}\n","\n
\n \n @for (fieldGroup of renderableFieldGroups; track fieldGroup; let first = $first) {\n @if (fieldGroup.editableFieldCount > 0) {\n \n \n \n @for (renderableField of fieldGroup.fields; track renderableField) {\n \n }\n @if (first && !isEditing) {\n @for (field of associationFormFields(); track field) {\n \n {{ 'ASSOCIATION_FORM.TITLE' | translateByObjectType: field.type }}\n \n @if (associationRequiredError()) {\n {{\n 'CREATE_PAGE.SAVE.ASSOCIATIONS_REQUIRED' | translateByObjectType: objectType\n }}\n }\n \n }\n }\n \n \n \n }\n }\n @for (renderableFieldGroup of readonlyRenderableFieldGroups; track renderableFieldGroup) {\n @for (renderableField of renderableFieldGroup.fields; track renderableField) {\n \n }\n }\n \n @if (!readOnly) {\n \n \n \n }\n
\n
\n\n \n\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { RendererSelectorComponent } from '../../renderer-selector.component';\nimport { BaseCrmModelDrivenFormComponent } from './base-model-driven-form.component';\nimport { CrmFormButtonGroupComponent } from './form-button-group.component';\nimport { CrmFormLoadingIndicatorComponent } from './form-loading-indicator.component';\nimport { MatDividerModule } from '@angular/material/divider';\n\n@Component({\n selector: 'crm-panel-driven-form',\n templateUrl: './panel-driven-form.component.html',\n styleUrls: ['./base-model-driven-form.component.scss', './panel-driven-form.component.scss'],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n RendererSelectorComponent,\n CrmFormLoadingIndicatorComponent,\n CrmFormButtonGroupComponent,\n MatDividerModule,\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrmPanelDrivenFormComponent extends BaseCrmModelDrivenFormComponent {}\n","\n
\n \n @for (renderableFieldGroup of renderableFieldGroups; track renderableFieldGroup) {\n @for (renderableField of renderableFieldGroup.fields; track renderableField) {\n \n }\n }\n @for (renderableFieldGroup of readonlyRenderableFieldGroups; track renderableFieldGroup) {\n @for (renderableField of renderableFieldGroup.fields; track renderableField) {\n \n }\n }\n @if (!readOnly && !inlineEdit) {\n
\n \n
\n }\n
\n
\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCardModule } from '@angular/material/card';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { RendererSelectorComponent } from '../../renderer-selector.component';\nimport { BaseCrmModelDrivenFormComponent } from './base-model-driven-form.component';\nimport { CrmFormLoadingIndicatorComponent } from './form-loading-indicator.component';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { CrmDependencies, CrmInjectionToken, ObjectType } from '../../../../tokens-and-interfaces';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { RendererSelectorService } from '../../renderer-selector.service';\nimport { ValidatorFactoryService } from '../../validator-factory.service';\nimport { InlineEditService } from '../../inline-edit.service';\nimport { ScoreService, SystemFieldIds } from '../../../../shared-services';\nimport { TranslateByObjectTypePipe } from '../../../../i18n/translate-by-object-type/translate-by-object-type.pipe';\nimport {\n CrmFieldService,\n StandardExternalIds,\n StandardIds,\n} from '../../../../shared-services/crm-services/field.service';\nimport { TranslateByObjectTypeService } from '../../../../i18n';\nimport { combineLatest, map, Observable, of } from 'rxjs';\n\n@Component({\n selector: 'crm-basic-field-group-form',\n templateUrl: './basic-field-group-form.component.html',\n styleUrls: ['./base-model-driven-form.component.scss'],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n TranslateByObjectTypePipe,\n GalaxyEmptyStateModule,\n MatIconModule,\n RendererSelectorComponent,\n MatCardModule,\n CrmFormLoadingIndicatorComponent,\n MatButtonModule,\n MatDialogModule,\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrmBasicFieldGroupFormComponent extends BaseCrmModelDrivenFormComponent {\n basicGroupFieldsMap$: Observable>;\n\n constructor(\n @Inject(CrmInjectionToken) protected override readonly config: CrmDependencies,\n protected override snackService: SnackbarService,\n protected override rendererSelector: RendererSelectorService,\n protected override readonly validatorFactory: ValidatorFactoryService,\n protected override readonly inlineEditService: InlineEditService,\n protected readonly fieldService: CrmFieldService,\n protected override readonly scoreService: ScoreService,\n protected override readonly translateByObjectTypeService: TranslateByObjectTypeService,\n ) {\n super(\n config,\n snackService,\n rendererSelector,\n validatorFactory,\n inlineEditService,\n fieldService,\n scoreService,\n translateByObjectTypeService,\n );\n\n this.basicGroupFieldsMap$ = combineLatest([\n this.config.contact?.additionalBaseFormFieldIds$ || of([]),\n this.config.company?.additionalBaseFormFieldIds$ || of([]),\n this.config.opportunity?.additionalBaseFormFieldIds$ || of([]),\n ]).pipe(\n map(([contactFields, companyFields, opportunityFields]) => {\n const basicGroupFieldsMap = new Map();\n basicGroupFieldsMap.set('Contact', [\n fieldService.getFieldId(StandardExternalIds.FirstName),\n fieldService.getFieldId(StandardExternalIds.LastName),\n fieldService.getFieldId(StandardExternalIds.PhoneNumber),\n fieldService.getFieldId(StandardExternalIds.Email),\n fieldService.getFieldId(StandardExternalIds.Tags),\n StandardIds.ContactLinkedInURL,\n StandardIds.ContactJobTitle,\n ...contactFields,\n ]);\n basicGroupFieldsMap.set('Company', [\n StandardIds.CompanyName,\n StandardIds.CompanyWebsite,\n StandardIds.CompanyPrimaryAddressLine1,\n StandardIds.CompanyPrimaryAddressLine2,\n StandardIds.CompanyPrimaryAddressCity,\n StandardIds.CompanyPrimaryAddressState,\n StandardIds.CompanyPrimaryAddressPostalCode,\n StandardIds.CompanyPrimaryAddressCountry,\n StandardIds.CompanyPhoneNumber,\n StandardIds.CompanyTags,\n StandardIds.CompanyPrimaryAddressGooglePlaceID,\n ...companyFields,\n ]);\n basicGroupFieldsMap.set('Opportunity', [\n StandardIds.OpportunityName,\n SystemFieldIds.OpportunityOwnerID,\n StandardIds.OpportunityPipelineID,\n StandardIds.OpportunityProbability,\n StandardIds.OpportunityAmount,\n StandardIds.OpportunityExpectedCloseDate,\n ...opportunityFields,\n ]);\n return basicGroupFieldsMap;\n }),\n );\n }\n}\n","\n
\n

{{ 'CREATE_PAGE.TITLE' | translateByObjectType: objectType }}

\n \n \n \n @for (renderableFieldGroup of renderableFieldGroups; track renderableFieldGroup) {\n @for (renderableField of renderableFieldGroup.fields; track renderableField) {\n @if (basicGroupFieldsMap$ | async; as basicGroupFieldsMap) {\n \n }\n }\n }\n \n \n @for (renderableFieldGroup of readonlyRenderableFieldGroups; track renderableFieldGroup) {\n @for (renderableField of renderableFieldGroup.fields; track renderableField) {\n \n }\n }\n \n \n
\n
\n\n \n \n \n \n\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, model, Output } from '@angular/core';\nimport { CrmCardGroupDrivenFormComponent } from './modes/card-group-driven-form.component';\nimport { CrmPanelDrivenFormComponent } from './modes/panel-driven-form.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CrmBasicFieldGroupFormComponent } from './modes/basic-field-group-form.component';\nimport { ScoreService } from '../../../shared-services';\nimport { InlineEditService } from '../inline-edit.service';\nimport {\n AssociationFormField,\n FieldConfigInterface,\n FieldInterface,\n LoadingStatus,\n ObjectType,\n SavingStatus,\n} from '../../../tokens-and-interfaces';\nimport { SyncFieldFormInputService } from '../renderers/accounts/sync-field-form-input.service';\n\ntype FormMode = 'panel' | 'card-group' | 'basic-field-group';\n\n@Component({\n selector: 'crm-model-driven-form',\n templateUrl: './model-driven-form.component.html',\n styleUrls: ['./modes/base-model-driven-form.component.scss'],\n imports: [\n CommonModule,\n TranslateModule,\n CrmCardGroupDrivenFormComponent,\n CrmPanelDrivenFormComponent,\n CrmBasicFieldGroupFormComponent,\n ],\n providers: [InlineEditService, ScoreService, SyncFieldFormInputService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CrmModelDrivenFormComponent {\n @Input({ required: true }) objectType!: ObjectType;\n @Input() existingObjectId = '';\n @Input() fieldConfig: FieldConfigInterface = {};\n @Input() isEditing = false;\n\n // these are translation keys\n @Input() submitButtonText = 'ACTIONS.SAVE';\n @Input() cancelButtonText = 'ACTIONS.CANCEL';\n\n @Input() loadingStatus!: LoadingStatus;\n @Input() savingStatus!: SavingStatus;\n @Input() readOnly = false;\n @Input() mode: FormMode = 'card-group';\n\n @Output() formSubmit = new EventEmitter();\n @Output() formCancel = new EventEmitter();\n\n protected readonly associationFormFields = model([]);\n\n onSubmit(fields: FieldInterface[]): void {\n this.formSubmit.emit(fields);\n }\n\n onCancel(): void {\n this.formCancel.emit();\n }\n}\n","\n \n \n \n \n \n \n \n \n \n\n","export * from './field-validation';\nexport * from './inline-edit.service';\nexport * from './renderer-selector.component';\nexport * from './renderer-selector.service';\nexport * from './validator-factory.service';\nexport * from './form/model-driven-form.component';\nexport * from './renderers/autocomplete.service';\nexport * from './renderers/updater.service';\nexport * from './renderers/phone/utils';\nexport * from './renderers/hidden/hidden-text';\nexport * from './renderers/accounts/sync-icon/sync-icon.component';\n","import { AsyncPipe, CommonModule } from '@angular/common';\nimport { Component, Inject, Injector, Optional, signal } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { combineLatest, firstValueFrom, Observable, of, catchError, map, shareReplay, take, tap } from 'rxjs';\nimport { CrmModelDrivenFormComponent } from '../model-driven-form';\nimport {\n CrmDependencies,\n CrmInjectionToken,\n CrmObjectDependencies,\n CrmObjectInjectionToken,\n FieldConfigInterface,\n FieldInterface,\n FieldOptionsInjectionToken as ModelDrivenFormFieldOptionsInjectionToken,\n FormDefaultInputValue,\n LoadingStatus,\n modelDrivenFormFieldOptionsInjectionTokenGenerator,\n ObjectType,\n PageAnalyticsInjectionToken,\n pageAnalyticsInjectionTokenGenerator,\n SavingStatus,\n} from '../../tokens-and-interfaces';\nimport { CrmFormService, CrmObjectManagementTableChangesService, CRMTrackingService } from '../../shared-services';\nimport { SNACKBAR_DURATION } from '../../constants';\nimport { TranslateByObjectTypeService, TranslationModule } from '../../i18n';\nimport { CrmObjectInterface } from '@vendasta/crm';\nimport { getObjectDependencies } from '../../utils';\n\nexport interface CrmCreateCrmObjectModalData {\n objectType: ObjectType;\n}\n\nexport interface CrmCreateCrmObjectModalResult {\n crmObject?: CrmObjectInterface;\n}\n\nexport function createCrmObjectModalProviders(objectType: ObjectType, parentInjector: Injector): Injector {\n return Injector.create({\n providers: [\n {\n provide: ModelDrivenFormFieldOptionsInjectionToken,\n useFactory: modelDrivenFormFieldOptionsInjectionTokenGenerator(objectType),\n },\n {\n provide: PageAnalyticsInjectionToken,\n useFactory: pageAnalyticsInjectionTokenGenerator(objectType),\n },\n ],\n parent: parentInjector,\n });\n}\n\n@Component({\n // requires selector to prevent ID collision\n selector: 'crm-create-crm-object-modal',\n templateUrl: './create-crm-object-modal.component.html',\n imports: [CommonModule, TranslationModule, CrmModelDrivenFormComponent, MatDialogModule, AsyncPipe],\n})\nexport class CrmCreateCrmObjectModalComponent {\n protected readonly objectType: ObjectType = this.data.objectType;\n protected readonly objectSubtype$: Observable = this.crmObjectDependencies?.objectSubtype$ ?? of('');\n protected readonly loadingStatus = signal(LoadingStatus.LOADING);\n protected readonly savingStatus = signal(SavingStatus.NOT_SAVING);\n\n protected readonly fieldConfig$: Observable;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: CrmCreateCrmObjectModalData,\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly crmFormService: CrmFormService,\n private readonly snackService: SnackbarService,\n private readonly trackingService: CRMTrackingService,\n private readonly translateByObjectTypeService: TranslateByObjectTypeService,\n private readonly crmObjectManagementTableChangesService: CrmObjectManagementTableChangesService,\n @Optional()\n @Inject(CrmObjectInjectionToken)\n private readonly crmObjectDependencies: CrmObjectDependencies,\n ) {\n const fieldSchemas$ = combineLatest([\n this.crmFormService.listAllFormFields$(this.objectType),\n this.defaultInputValues$(),\n ]).pipe(\n map(([fieldSchemas, defaultInputValues]) => {\n return fieldSchemas.map((fieldSchema) => {\n const defaultInputValue = defaultInputValues.find(\n (inputValue) => inputValue.fieldId === fieldSchema.fieldId && !!inputValue.value,\n );\n if (defaultInputValue) {\n fieldSchema.value = defaultInputValue.value;\n fieldSchema.hasDefaultValue = true;\n }\n return fieldSchema;\n });\n }),\n take(1),\n );\n const fieldGroups$ = this.crmFormService.listAllObjectFormFieldGroups$(this.objectType);\n\n this.fieldConfig$ = combineLatest([fieldSchemas$, fieldGroups$]).pipe(\n tap(([fieldSchemas, fieldGroups]) => {\n const empty = fieldSchemas.length === 0 || fieldGroups.length === 0;\n this.loadingStatus.set(empty ? LoadingStatus.EMPTY : LoadingStatus.OK);\n }),\n map(([fieldSchemas, fieldGroups]) => {\n return {\n fieldSchemas: fieldSchemas,\n fieldGroups: fieldGroups,\n };\n }),\n catchError((error) => {\n this.loadingStatus.set(LoadingStatus.ERROR);\n this.errorSnackbar(error, 'ERRORS.GENERIC_MESSAGE');\n return of({} as FieldConfigInterface);\n }),\n shareReplay(1),\n );\n }\n\n async onSave(fields: FieldInterface[]): Promise {\n this.savingStatus.set(SavingStatus.SAVING);\n const createdObject = await firstValueFrom(\n this.crmFormService.validateAndCreateCrmObject$(this.objectType, fields).pipe(\n catchError((error) => {\n this.errorSnackbar(error, 'ERRORS.GENERIC_MESSAGE');\n return of(null);\n }),\n ),\n );\n\n if (!createdObject) {\n this.savingStatus.set(SavingStatus.ERROR);\n this.trackingService.trackEvent(this.objectType, 'failed-add-crm-object');\n } else {\n const objectSubtype = await firstValueFrom(this.objectSubtype$);\n this.crmObjectManagementTableChangesService.addCreatedCrmObject(this.objectType, createdObject, objectSubtype);\n this.savingStatus.set(SavingStatus.OK);\n this.trackingService.trackEvent(this.objectType, 'added-crm-object');\n this.dialogRef.close({ crmObject: createdObject });\n }\n }\n\n private defaultInputValues$(): Observable {\n if (this.crmObjectDependencies) {\n return this.crmObjectDependencies.formDefaultOnCreateInputValues$ ?? of([]);\n }\n return getObjectDependencies(this.objectType, this.config)?.formDefaultOnCreateInputValues$ ?? of([]);\n }\n\n private errorSnackbar(error: Error, defaultMessage: string) {\n let message: string | null = null;\n if (error && error.message) {\n message = error.message;\n }\n const translatedDefaultMessage = this.translateByObjectTypeService.getTranslationByObjectType(\n this.objectType,\n defaultMessage,\n );\n this.snackService.openErrorSnack(message ?? translatedDefaultMessage, {\n duration: SNACKBAR_DURATION,\n });\n }\n\n onCancel(): void {\n this.trackingService.trackEvent(this.objectType, 'cancelled-crm-add');\n this.dialogRef.close();\n }\n}\n","\n","export * from './create-crm-object-modal.component';\n","import { Component, Inject, signal } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { CrmObjectInterface } from '@vendasta/crm';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AssociationType } from '../../../constants';\nimport { TranslateByObjectTypePipe, TranslationModule } from '../../../i18n';\nimport { ObjectType } from '../../../tokens-and-interfaces';\nimport { CrmObjectDisplayService } from '../../../shared-services';\nimport { CommonModule } from '@angular/common';\nimport { GalaxyConfirmationModalModule } from '@vendasta/galaxy/confirmation-modal';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport interface ConfirmExistingPrimaryAssociationDialogData {\n existingPrimaryObjectIds: string[];\n selectedObjects: CrmObjectInterface[];\n associationType: AssociationType;\n objectType: ObjectType;\n}\n\nexport interface ConfirmExistingPrimaryAssociationDialogResult {\n continue: boolean;\n tagMap: Map;\n}\n\n@Component({\n selector: 'crm-select-primary-association-modal',\n templateUrl: './confirm-existing-primary-association-modal.component.html',\n styleUrls: ['./confirm-existing-primary-association-modal.component.scss'],\n imports: [\n CommonModule,\n GalaxyConfirmationModalModule,\n MatButtonModule,\n MatIconModule,\n TranslationModule,\n TranslateByObjectTypePipe,\n ],\n})\nexport class ConfirmExistingPrimaryAssociationModalComponent {\n protected readonly tagMap = signal(new Map());\n protected readonly associations = this.data.selectedObjects;\n protected readonly objectType = this.data.objectType;\n protected readonly displayNamesByObjectId = new Map();\n\n constructor(\n public dialogRef: MatDialogRef<\n ConfirmExistingPrimaryAssociationModalComponent,\n ConfirmExistingPrimaryAssociationDialogResult\n >,\n @Inject(MAT_DIALOG_DATA) public data: ConfirmExistingPrimaryAssociationDialogData,\n private readonly objectDisplayService: CrmObjectDisplayService,\n ) {\n this.data.selectedObjects.forEach((object) => {\n this.displayNamesByObjectId.set(\n object.crmObjectId ?? '',\n this.objectDisplayService.getObjectDisplayName(this.objectType, object),\n );\n });\n }\n\n cancel(): void {\n this.dialogRef.close({ continue: false, tagMap: this.tagMap() } as ConfirmExistingPrimaryAssociationDialogResult);\n }\n\n save(): void {\n const tagMap = this.tagMap();\n for (const object of this.data.selectedObjects) {\n if (!object?.crmObjectId) {\n continue;\n }\n if (this.data.existingPrimaryObjectIds.includes(object?.crmObjectId)) {\n tagMap.set(object?.crmObjectId, []);\n continue;\n }\n tagMap.set(object?.crmObjectId, ['Primary']);\n }\n\n this.dialogRef.close({ continue: true, tagMap: tagMap } as ConfirmExistingPrimaryAssociationDialogResult);\n }\n}\n","\n info\n\n \n {{ 'ASSOCIATION_PANEL.CONFIRM_EXISTING_PRIMARY_MODAL.TITLE' | translateByObjectType: objectType }}\n \n\n \n

\n {{ 'ASSOCIATION_PANEL.CONFIRM_EXISTING_PRIMARY_MODAL.CONFIRMATION_MESSAGE' | translateByObjectType: objectType }}\n

\n
    \n @for (association of associations; track association.crmObjectId) {\n @if (association?.crmObjectId && data.existingPrimaryObjectIds.includes(association?.crmObjectId)) {\n
  • {{ displayNamesByObjectId.get(association?.crmObjectId) }}
  • \n }\n }\n
\n
\n
\n\n\n \n \n\n \n \n\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, Inject, Injector, input, signal, TemplateRef } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RouterLink } from '@angular/router';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { TranslateByObjectTypePipe, TranslateByObjectTypeService, TranslationModule } from '../../../i18n';\nimport { MatExpansionPanel, MatExpansionPanelHeader, MatExpansionPanelTitle } from '@angular/material/expansion';\nimport { CommonAssociationCardContentComponent, TagsComponent } from '../association-card';\nimport {\n catchError,\n combineLatest,\n distinctUntilChanged,\n firstValueFrom,\n Observable,\n of,\n shareReplay,\n withLatestFrom,\n zip,\n} from 'rxjs';\nimport {\n CrmDependencies,\n CrmInjectionToken,\n CrmMultiLocationDependencies,\n CrmMultilocationInjectionToken,\n ObjectType,\n PageAnalyticsInjectionToken,\n pageAnalyticsInjectionTokenGenerator,\n tableFiltersInjectionTokenGenerator,\n} from '../../../tokens-and-interfaces';\nimport { map, startWith, switchMap, take } from 'rxjs/operators';\nimport { Association, CrmAssociationService, CrmObjectService } from '../../../shared-services';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { AssociationCardData, CardAction, CreateCardData } from './tokens-and-interfaces';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { MatDialog } from '@angular/material/dialog';\nimport {\n EditAssociationTagsData,\n EditAssociationTagsDialogComponent,\n EditAssociationTagsResponse,\n} from './edit-association-tags-dialog/edit-association-tags-dialog.component';\nimport { GalaxyFilterChipInjectionToken } from '@vendasta/galaxy/filter/chips';\nimport {\n ListObjectTypeDialogData,\n ListObjectTypeDialogResult,\n SelectObjectTypeModalComponent,\n} from '../../select-object-type-modal/select-object-type-modal.component';\nimport { getAssociationType } from '../../../shared-services/association.utils';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport {\n SelectPrimaryAssociationDialogData,\n SelectPrimaryAssociationDialogResult,\n SelectPrimaryAssociationModalComponent,\n} from '../select-primary-association-modal/select-primary-association-modal.component';\nimport {\n createCrmObjectModalProviders,\n CrmCreateCrmObjectModalComponent,\n CrmCreateCrmObjectModalResult,\n} from '../../create-crm-object-modal';\nimport {\n ConfirmExistingPrimaryAssociationDialogData,\n ConfirmExistingPrimaryAssociationModalComponent,\n} from '../confirm-existing-primary-association-modal/confirm-existing-primary-association-modal.component';\n\nenum updateTypes {\n Removed = 'Removed',\n Added = 'Added',\n}\n\ninterface CreateAssociationsResponse {\n error: boolean;\n idsCreated: string[];\n associatedIdToObjectId: Map;\n}\n\n@Component({\n selector: 'crm-object-association-panel',\n templateUrl: './crm-object-association-panel.component.html',\n styleUrls: ['../../../shared-styles/association-panel-shared.scss', './crm-object-association-panel.component.scss'],\n imports: [\n CommonModule,\n MatCardModule,\n GalaxyAvatarModule,\n MatIconModule,\n MatMenuModule,\n MatButtonModule,\n MatTooltipModule,\n TranslationModule,\n RouterLink,\n MatExpansionPanel,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n CommonAssociationCardContentComponent,\n TagsComponent,\n TranslateByObjectTypePipe,\n GalaxyLoadingSpinnerModule,\n ],\n})\nexport class CrmObjectAssociationPanelComponent {\n associatedObject = input.required();\n private readonly associatedObject$ = toObservable(this.associatedObject);\n id = input.required();\n private readonly id$ = toObservable(this.id);\n name = input('');\n private readonly name$ = toObservable(this.name);\n objectType = input.required();\n private readonly objectType$ = toObservable(this.objectType);\n customHeaderContent = input>();\n customCardContent = input>();\n createCardData = input.required();\n customActions = input([]);\n requiresPrimaryAssociation = input(false);\n confirmExistingPrimaryAssociations = input(false);\n isMultiLocation = toSignal(this.multiLocationConfig.isMultiLocation$ ?? of(false));\n showAssociationLink = computed(() => !this.isMultiLocation());\n\n private readonly associationType = computed(() => {\n const fromObject = this.objectType();\n const toObject = this.associatedObject();\n return getAssociationType(fromObject, toObject);\n });\n\n private readonly injector = inject(Injector);\n\n private readonly tokenInjector = computed(() => {\n const associatedObject = this.associatedObject();\n return Injector.create({\n providers: [\n {\n provide: PageAnalyticsInjectionToken,\n useFactory: pageAnalyticsInjectionTokenGenerator(associatedObject),\n },\n {\n provide: GalaxyFilterChipInjectionToken,\n useFactory: tableFiltersInjectionTokenGenerator(associatedObject),\n },\n ],\n parent: this.injector,\n });\n });\n\n private readonly associationsWithUpdatedTags = signal>(new Map());\n private readonly associationsWithUpdatedTags$ = toObservable(this.associationsWithUpdatedTags);\n\n private readonly updatedAssociations = signal>(new Map());\n private readonly updatedAssociations$ = toObservable(this.updatedAssociations);\n\n readonly primaryAssociationId$: Observable;\n private readonly hasPrimaryAssociation$: Observable;\n private readonly associations$: Observable;\n protected readonly cards$: Observable;\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n @Inject(CrmMultilocationInjectionToken) private readonly multiLocationConfig: CrmMultiLocationDependencies,\n private readonly associationService: CrmAssociationService,\n private readonly confirmationModalService: OpenConfirmationModalService,\n private readonly objectService: CrmObjectService,\n private readonly translateService: TranslateService,\n private readonly translateByObjectTypeService: TranslateByObjectTypeService,\n private readonly snackService: SnackbarService,\n private readonly dialog: MatDialog,\n ) {\n const routePrefix$ = this.config.routePrefix$;\n // this is needed because in PCC\n // the card is never destroyed\n this.id$.pipe(distinctUntilChanged(), takeUntilDestroyed()).subscribe(() => {\n this.updatedAssociations.set(new Map());\n });\n const initialAssociations$ = combineLatest([this.id$, this.objectType$, this.associatedObject$]).pipe(\n switchMap(([id, objectType, associatedObject]) => {\n return this.associationService.getAssociationsForObject$(id, objectType, associatedObject, 1000);\n }),\n map((associations) => {\n return associations\n .map((association) => association.associationId ?? '')\n .filter((association) => !!association);\n }),\n withLatestFrom(this.objectType$, this.associatedObject$),\n switchMap(([ids, objectType, associatedObject]) =>\n this.associationService.getAssociationsFromAssociationIds$(ids, objectType, associatedObject),\n ),\n map((associations) => {\n return associations.filter((association) => association?.associatedObject);\n }),\n shareReplay(1),\n );\n const addedAssociations$ = this.updatedAssociations$.pipe(\n map((updatedMap) => {\n const addedIds: string[] = [];\n updatedMap.forEach((value, key) => {\n if (value === updateTypes.Added) {\n addedIds.push(key);\n }\n });\n return addedIds;\n }),\n withLatestFrom(this.objectType$, this.associatedObject$),\n switchMap(([addedIds, objectType, associatedObject]) =>\n this.associationService.getAssociationsFromAssociationIds$(addedIds, objectType, associatedObject),\n ),\n startWith([] as Association[]),\n shareReplay(1),\n );\n\n this.associations$ = combineLatest([\n initialAssociations$,\n this.updatedAssociations$,\n this.associationsWithUpdatedTags$,\n addedAssociations$,\n ]).pipe(\n map(([initialAssociations, updatedAssociations, updatedTags, addedAssociations]) => {\n const withRemoved = initialAssociations.filter(\n (association) =>\n association?.associatedObject?.crmObjectId &&\n updatedAssociations.get(association.associationId) !== updateTypes.Removed,\n );\n const withRemovedAndAdded = [...addedAssociations, ...withRemoved];\n return this.addTagUpdatesToAssociations(withRemovedAndAdded, updatedTags);\n }),\n shareReplay(1),\n );\n\n this.primaryAssociationId$ = this.associations$.pipe(\n map((associations) => {\n const primaryAssociations = associations.map((association) =>\n association?.tags?.includes('Primary') ? association?.associationId : '',\n );\n return primaryAssociations.find((a) => !!a) ?? '';\n }),\n );\n this.hasPrimaryAssociation$ = this.primaryAssociationId$.pipe(\n map((primaryAssociationId) => !!primaryAssociationId),\n );\n\n this.cards$ = combineLatest([this.associations$, routePrefix$.pipe(startWith(''))]).pipe(\n map(([associations, routePrefix]) => {\n const cards = this.createCardData()(associations, routePrefix);\n return cards.sort(function (a, b) {\n const aName = a.name?.toLowerCase() ?? '';\n const bName = b.name?.toLowerCase() ?? '';\n const aTags = a.tags?.length ?? 0;\n const bTags = b.tags?.length ?? 0;\n if (aTags === bTags) {\n return aName < bName ? -1 : aName > bName ? 1 : 0;\n }\n return aTags > bTags ? -1 : aTags < bTags ? 1 : 0;\n });\n }),\n\n shareReplay(1),\n );\n }\n\n protected async addAssociation() {\n const selectAssociationModalResult = await firstValueFrom(this.openSelectAssociationsModal(false));\n let objectIdsToAdd = selectAssociationModalResult?.selectedRows?.map((crmObject) => crmObject.id) ?? [];\n let clickedCreate = selectAssociationModalResult?.clickedCreate ?? false;\n\n while (clickedCreate) {\n const createModalResult = await firstValueFrom(this.openCreateCrmObjectModal());\n if (createModalResult?.crmObject?.crmObjectId) {\n objectIdsToAdd = [createModalResult.crmObject.crmObjectId];\n clickedCreate = false;\n } else {\n const selectModalResult = await firstValueFrom(this.openSelectAssociationsModal(false, objectIdsToAdd));\n objectIdsToAdd = selectModalResult?.selectedRows?.map((crmObject) => crmObject.id) ?? [];\n clickedCreate = selectModalResult?.clickedCreate ?? false;\n }\n }\n\n if (objectIdsToAdd?.length !== 0) {\n const hasPrimary = await firstValueFrom(this.hasPrimaryAssociation$);\n if (this.requiresPrimaryAssociation() && !hasPrimary) {\n const dialogResult = await firstValueFrom(this.openSelectPrimaryAssociationModal(objectIdsToAdd));\n if (dialogResult.continue) {\n const tagMap = dialogResult.tagMap;\n await this.addAssociationsWithTags(objectIdsToAdd, tagMap);\n }\n } else {\n if (this.confirmExistingPrimaryAssociations()) {\n const objectIdsWithPrimaryAssociation =\n await this.getObjectIdsWithExistingPrimaryAssociations(objectIdsToAdd);\n if (objectIdsWithPrimaryAssociation?.length > 0) {\n const dialogResult = await firstValueFrom(\n this.openConfirmExistingPrimaryAssociationModal(objectIdsWithPrimaryAssociation, objectIdsToAdd),\n );\n if (dialogResult.continue) {\n const tagMap = dialogResult.tagMap;\n await this.addAssociationsWithTags(objectIdsToAdd, tagMap);\n }\n } else {\n const tagMap = new Map(objectIdsToAdd.map((o) => [o, ['Primary']]));\n await this.addAssociationsWithTags(objectIdsToAdd, tagMap);\n }\n return;\n }\n await this.addAssociationsWithTags(objectIdsToAdd);\n }\n }\n }\n\n private async getObjectIdsWithExistingPrimaryAssociations(objectIdsToAdd: string[]) {\n const partialObservables$ = objectIdsToAdd\n .map((crmObjectId) => {\n if (!crmObjectId) {\n return undefined;\n }\n return this.associationService\n .getAssociationsWithAssociatedObjectForObject$(crmObjectId, this.associatedObject(), this.objectType(), 1, [\n 'Primary',\n ])\n .pipe(\n map((results) => {\n if (results?.length > 0) {\n return crmObjectId ?? '';\n }\n return '';\n }),\n );\n })\n .filter((v) => !!v);\n const objectsWithPrimaryAssociation$ = zip(...partialObservables$).pipe(\n map((results) => results.flat().filter((v) => !!v)),\n );\n return await firstValueFrom(objectsWithPrimaryAssociation$);\n }\n\n private async addAssociationsWithTags(objectIdsToAdd: string[], tagMap?: Map) {\n const resp = await this.createObjectAssociations(objectIdsToAdd, tagMap);\n if (resp.idsCreated.length > 0) {\n this.updatedAssociations.update((val) => {\n const updatedMap = new Map(val); //Shallow copy required to trigger update\n resp.idsCreated.forEach((added) => updatedMap.set(added, updateTypes.Added));\n return updatedMap;\n });\n if (tagMap) {\n this.associationsWithUpdatedTags.update((prev) => {\n const updatedMap = new Map(prev); //Shallow copy to trigger update\n resp.idsCreated.forEach((added) => {\n const objectId = resp.associatedIdToObjectId.get(added);\n const tags = tagMap.get(objectId ?? '') ?? [];\n updatedMap.set(added, tags);\n });\n return updatedMap;\n });\n }\n }\n this.openAddAssociationResultSnack(resp.error, resp.idsCreated.length, objectIdsToAdd.length);\n }\n\n private openAddAssociationResultSnack(errorSnack: boolean, successfulIds: number, totalIds: number) {\n if (totalIds === 1) {\n if (successfulIds !== 1 || errorSnack) {\n this.snackService.openErrorSnack('ASSOCIATIONS.SUCCESS.SINGLE_FAILURE');\n } else {\n this.snackService.openSuccessSnack('ASSOCIATIONS.SUCCESS.GENERIC');\n }\n } else if (errorSnack) {\n this.snackService.openErrorSnack('ASSOCIATIONS.SUCCESS.PARTIAL_SUCCESS', {\n interpolateTranslateParams: {\n createdCount: String(successfulIds),\n totalCount: String(totalIds),\n },\n });\n } else {\n this.snackService.openSuccessSnack('ASSOCIATIONS.SUCCESS.PARTIAL_SUCCESS', {\n interpolateTranslateParams: {\n createdCount: String(successfulIds),\n totalCount: String(totalIds),\n },\n });\n }\n }\n\n private openConfirmExistingPrimaryAssociationModal(\n ids: string[],\n allIds: string[],\n ): Observable {\n return this.objectService.getMultiObject(this.associatedObject(), allIds).pipe(\n map((resp) => resp.crmObjects ?? []),\n switchMap((objects) => {\n return this.dialog\n .open(ConfirmExistingPrimaryAssociationModalComponent, {\n data: {\n existingPrimaryObjectIds: ids,\n selectedObjects: objects,\n associationType: this.associationType(),\n objectType: this.associatedObject(),\n } as ConfirmExistingPrimaryAssociationDialogData,\n injector: this.tokenInjector(),\n })\n .afterClosed();\n }),\n );\n }\n\n private openSelectPrimaryAssociationModal(ids: string[]): Observable {\n return this.objectService.getMultiObject(this.associatedObject(), ids).pipe(\n map((resp) => resp.crmObjects ?? []),\n switchMap((objects) => {\n return this.dialog\n .open(SelectPrimaryAssociationModalComponent, {\n data: {\n selectedObjects: objects,\n associationType: this.associationType(),\n objectType: this.associatedObject(),\n } as SelectPrimaryAssociationDialogData,\n injector: this.tokenInjector(),\n })\n .afterClosed();\n }),\n );\n }\n\n private openCreateCrmObjectModal(): Observable {\n return this.dialog\n .open(CrmCreateCrmObjectModalComponent, {\n data: {\n objectType: this.associatedObject(),\n },\n injector: createCrmObjectModalProviders(this.associatedObject(), this.injector),\n width: '500px',\n })\n .afterClosed();\n }\n\n private openSelectAssociationsModal(\n hideCreateButton: boolean,\n preselectedObjectIds?: string[],\n ): Observable {\n return this.associations$.pipe(\n take(1),\n switchMap((existingAssociations) => {\n return this.dialog\n .open(SelectObjectTypeModalComponent, {\n data: {\n baseColumnIds: [],\n objectType: this.associatedObject(),\n modalTitle: this.translateByObjectTypeService.getTranslationByObjectType(\n this.associatedObject(),\n 'ASSOCIATION_PANEL.TITLE_ASSOCIATE',\n {\n objectName: this.name(),\n },\n ),\n associations: existingAssociations,\n associationType: this.associationType(),\n newSelection: '',\n hideCreateButton: hideCreateButton,\n showActions: false,\n hideActionButton: true,\n preselectedIds: preselectedObjectIds ?? [],\n createButtonText: this.translateByObjectTypeService.getTranslationByObjectType(\n this.associatedObject(),\n 'ASSOCIATION_PANEL.CREATE_BUTTON',\n ),\n } as ListObjectTypeDialogData,\n injector: this.tokenInjector(),\n })\n .afterClosed() as Observable;\n }),\n );\n }\n\n private async createObjectAssociations(\n idsToAdd: string[],\n tagMap?: Map,\n ): Promise {\n const updatesToDo = idsToAdd.map((id) => {\n return firstValueFrom(\n this.associationService.createObjectAssociation$(\n this.objectType(),\n this.id(),\n id,\n this.associationType(),\n tagMap?.get(id),\n ),\n );\n });\n const responses = await Promise.all(updatesToDo);\n const associatedIdToObjectId = new Map();\n responses.forEach((resp, index) => {\n if (resp) {\n associatedIdToObjectId.set(resp.associationId, idsToAdd[index]);\n }\n });\n const createdIds = responses.filter((resp) => resp !== null).map((resp) => resp.associationId);\n\n return {\n error: createdIds.length !== responses.length,\n idsCreated: createdIds,\n associatedIdToObjectId: associatedIdToObjectId,\n };\n }\n\n protected async removeAssociation(cardData: AssociationCardData) {\n const associationId = cardData.associationId;\n if (associationId) {\n const confirmation = await firstValueFrom(\n this.confirmationModalService.openModal({\n type: 'warn',\n title: 'ASSOCIATIONS.REMOVE_DIALOG.TITLE',\n message: this.translateService.instant('ASSOCIATIONS.REMOVE_DIALOG.MESSAGE', {\n fromName: this.name(),\n removeName: cardData.name,\n }),\n confirmButtonText: 'ASSOCIATIONS.REMOVE_DIALOG.CONFIRM',\n cancelButtonText: 'ACTIONS.CANCEL',\n }),\n );\n if (confirmation) {\n this.associationService\n .removeAssociation(associationId)\n .pipe(take(1))\n .subscribe((success) => {\n if (success) {\n this.snackService.openSuccessSnack('ASSOCIATIONS.SUCCESS.REMOVE');\n this.updatedAssociations.update((val) => {\n const updatedMap = new Map(val); //Shallow copy required to trigger update\n updatedMap.set(associationId, updateTypes.Removed);\n return updatedMap;\n });\n } else {\n this.snackService.openErrorSnack('ASSOCIATIONS.ERROR.REMOVE');\n }\n });\n }\n }\n }\n\n private addTagUpdatesToAssociations(associations: Association[], changes: Map): Association[] {\n associations.forEach((item) => {\n const hasUpdates = changes.get(item.associationId);\n if (hasUpdates) {\n item.tags = hasUpdates;\n }\n });\n return associations;\n }\n\n protected async setAsPrimary(cardData: AssociationCardData) {\n const associationId = cardData.associationId;\n const associationName = cardData?.name ?? '';\n if (associationId === '') {\n return;\n }\n const primaryAssociationId = await firstValueFrom(this.primaryAssociationId$);\n const allCards = await firstValueFrom(this.cards$);\n const primaryAssociationName =\n allCards.find((a) => a.associationId === primaryAssociationId)?.name ?? primaryAssociationId;\n if (associationId === primaryAssociationId) {\n return;\n }\n const association$ = this.associationService.getAssociation(associationId).pipe(take(1), shareReplay(1));\n const { tags: associationTags } = await firstValueFrom(association$);\n const existingTags = (associationTags ?? []).map((a) => a?.tagValue ?? '').filter((v) => v !== '');\n const newAssociationTags = ['Primary', ...existingTags];\n const updatePrimaryAssociation$ = this.associationService\n .updateAssociationTags(associationId, newAssociationTags)\n .pipe(\n take(1),\n catchError((_) => {\n return of(false);\n }),\n );\n if (primaryAssociationId === '') {\n const result = await firstValueFrom(updatePrimaryAssociation$);\n if (result) {\n this.snackService.openSuccessSnack('ASSOCIATIONS.EDIT_ASSOCIATION_DIALOG.SUCCESS');\n this.associationsWithUpdatedTags.update((prev) => {\n const updatedMap = new Map(prev); //Shallow copy to trigger update\n updatedMap.set(associationId, newAssociationTags);\n return updatedMap;\n });\n return;\n }\n this.snackService.openErrorSnack('ASSOCIATIONS.EDIT_ASSOCIATION_DIALOG.ERROR');\n return;\n }\n\n const primaryAssociation$ = this.associationService\n .getAssociation(primaryAssociationId)\n .pipe(take(1), shareReplay(1));\n const { tags: primaryTags } = await firstValueFrom(primaryAssociation$);\n const primaryExistingTags = (primaryTags ?? []).map((v) => v.tagValue ?? '').filter((v) => v !== '');\n const newPrimaryTags = primaryExistingTags.filter((t) => t !== 'Primary');\n const removePrimaryFromExisting$ = this.associationService\n .updateAssociationTags(primaryAssociationId, newPrimaryTags)\n .pipe(\n take(1),\n catchError((_) => {\n return of(false);\n }),\n );\n const modalConfirmation$ = this.confirmationModalService.openModal({\n type: 'confirm',\n title: this.translateByObjectTypeService.getTranslationByObjectType(\n this.associatedObject(),\n 'ASSOCIATION_PANEL.CHANGE_PRIMARY_DIALOG.TITLE',\n ),\n message: this.translateByObjectTypeService.getTranslationByObjectType(\n this.associatedObject(),\n 'ASSOCIATION_PANEL.CHANGE_PRIMARY_DIALOG.MESSAGE',\n { newAssociationName: associationName, previousAssociationName: primaryAssociationName },\n ),\n hideCancel: false,\n confirmButtonText: 'ACTIONS.CONFIRM',\n cancelButtonText: 'ACTIONS.CANCEL',\n });\n const modalConfirmed = await firstValueFrom(modalConfirmation$);\n if (!modalConfirmed) {\n return;\n }\n const updateWithConfirmation$ = removePrimaryFromExisting$.pipe(\n switchMap((proceed) => {\n if (proceed) {\n return updatePrimaryAssociation$;\n }\n return of(false);\n }),\n );\n const success = await firstValueFrom(updateWithConfirmation$);\n if (success) {\n this.snackService.openSuccessSnack('ASSOCIATIONS.EDIT_ASSOCIATION_DIALOG.SUCCESS');\n this.associationsWithUpdatedTags.update((prev) => {\n const updatedMap = new Map(prev); //Shallow copy to trigger update\n updatedMap.set(associationId, newAssociationTags);\n updatedMap.set(primaryAssociationId, newPrimaryTags);\n return updatedMap;\n });\n } else {\n this.snackService.openErrorSnack('ASSOCIATIONS.EDIT_ASSOCIATION_DIALOG.ERROR');\n }\n }\n\n protected async editTags(cardData: AssociationCardData) {\n const associationId = cardData.associationId;\n if (associationId === '') {\n return;\n }\n const dialogResponse: EditAssociationTagsResponse = await firstValueFrom(\n this.associationService.getAssociation(associationId).pipe(\n switchMap((association) =>\n this.dialog\n .open(EditAssociationTagsDialogComponent, {\n data: {\n association: association,\n associationName: cardData.name,\n } as EditAssociationTagsData,\n width: '500px',\n })\n .afterClosed(),\n ),\n ),\n );\n if (dialogResponse.proceed) {\n this.associationService\n .updateAssociationTags(associationId, dialogResponse.updatedTags)\n .pipe(\n take(1),\n catchError((_) => {\n return of(false);\n }),\n )\n .subscribe((success) => {\n if (success) {\n this.snackService.openSuccessSnack('ASSOCIATIONS.EDIT_ASSOCIATION_DIALOG.SUCCESS');\n this.associationsWithUpdatedTags.update((prev) => {\n const updatedMap = new Map(prev); //Shallow copy to trigger update\n updatedMap.set(associationId, dialogResponse.updatedTags);\n return updatedMap;\n });\n } else {\n this.snackService.openErrorSnack('ASSOCIATIONS.EDIT_ASSOCIATION_DIALOG.ERROR');\n }\n });\n }\n }\n}\n","\n \n {{ 'ASSOCIATION_PANEL.TITLE' | translateByObjectType: associatedObject() }}\n \n @defer {\n \n add\n {{ 'ASSOCIATION_PANEL.ADD_ASSOCIATION' | translateByObjectType: associatedObject() }}\n \n @if (cards$ | async; as cards) {\n @for (card of cards; track card) {\n @if (card?.associationId) {\n \n \n @if (card.avatar) {\n \n }\n @if (card.name) {\n \n @if (card.profileUrl && showAssociationLink()) {\n \n {{ card.name }}\n \n } @else {\n \n {{ card.name }}\n \n }\n \n }\n \n @if (customHeaderContent()) {\n \n }\n \n \n \n @if ((primaryAssociationId$ | async) !== card.associationId && requiresPrimaryAssociation()) {\n \n }\n \n @if (!isMultiLocation()) {\n \n }\n @for (action of customActions(); track action) {\n \n }\n \n \n \n @if (customCardContent()) {\n \n }\n @if (card.tags?.length > 0) {\n \n \n \n }\n \n \n }\n }\n } @else {\n
\n \n
\n }\n } @loading {\n
\n \n
\n }\n
\n","import { Component, Inject, input } from '@angular/core';\nimport { MatCardSubtitle } from '@angular/material/card';\nimport { CommonAssociationCardContentComponent } from '../association-card';\nimport { CrmDependencies, CrmInjectionToken, ObjectType } from '../../../tokens-and-interfaces';\nimport {\n Association,\n CrmFieldService,\n CrmObjectDisplayService,\n StandardExternalIds,\n StandardIds,\n} from '../../../shared-services';\nimport { CrmObjectAssociationPanelComponent } from '../crm-object-association-panel/crm-object-association-panel.component';\nimport { formatAsReadonlyPhone, parsePhoneNumber } from '../../model-driven-form';\nimport { PAGE_ROUTES } from '../../../constants';\nimport { AssociationCardData, CardAction } from '../crm-object-association-panel/tokens-and-interfaces';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { firstValueFrom, of } from 'rxjs';\nimport { AddCampaignDialogComponent } from '../contact-campaign-association-card/add-campaign-dialog/add-campaign-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { map } from 'rxjs/operators';\nimport { AsyncPipe } from '@angular/common';\n\nexport interface ContactAssociationCardData extends AssociationCardData {\n phone?: string;\n linkedInUrl?: string;\n jobTitle?: string;\n email?: string;\n}\n\n@Component({\n selector: 'crm-contact-association-panel',\n templateUrl: './contact-association-panel.component.html',\n styleUrls: ['./contact-association-panel.component.scss', '../../../shared-styles/association-panel-shared.scss'],\n imports: [\n CrmObjectAssociationPanelComponent,\n CommonAssociationCardContentComponent,\n MatCardSubtitle,\n MatIcon,\n MatIconButton,\n AsyncPipe,\n ],\n providers: [{ provide: Window, useValue: window }],\n})\nexport class ContactAssociationPanelComponent {\n id = input('');\n name = input('');\n objectType = input('Contact');\n\n protected readonly showCampaignAction$ = this.config.company?.showCampaigns$ || of(true);\n protected readonly customActions$ = this.showCampaignAction$.pipe(\n map((showCampaigns) =>\n showCampaigns ? [this.campaignAction, this.editContactPageAction] : [this.editContactPageAction],\n ),\n );\n private readonly campaignAction: CardAction = {\n label: this.translateService.instant('ASSOCIATIONS.CAMPAIGNS.ADD_TO_CAMPAIGN'),\n callback: (data: AssociationCardData) => {\n this.openCampaignDialog(data.objectId || '');\n },\n };\n\n openCampaignDialog(id: string): void {\n this.dialog.open(AddCampaignDialogComponent, {\n width: '500px',\n data: {\n id: id,\n },\n });\n }\n\n private readonly editContactPageAction: CardAction = {\n label: this.translateService.instant('ASSOCIATIONS.CONTACT.ACTIONS.EDIT'),\n callback: (data: AssociationCardData) => {\n this.openEditContactPage(data.objectId || '');\n },\n icon: 'open_in_new',\n };\n\n async openEditContactPage(id: string) {\n const routePrefix = await firstValueFrom(this.config.routePrefix$);\n let newPath = `${routePrefix}/${PAGE_ROUTES.CONTACT.ROOT}/${PAGE_ROUTES.CONTACT.SUBROUTES.EDIT}`.replace(\n ':crmObjectId',\n id,\n );\n newPath = newPath + `?returnUrl=${this.window?.location.pathname}`;\n this.window?.open(newPath, '_blank')?.focus();\n }\n\n protected readonly cardFunction = (\n associations: Association[],\n routePrefix: string,\n ): ContactAssociationCardData[] => {\n return associations.map((association) => {\n const fullName = this.objectDisplayService.getObjectDisplayName('Contact', association.associatedObject || {});\n\n const phoneParsed = parsePhoneNumber(\n this.fieldService.getFieldValueFromCrmObject(association.associatedObject, StandardExternalIds.PhoneNumber)\n ?.stringValue || '',\n );\n\n return {\n associationId: association.associationId,\n objectId: association.associatedObject.crmObjectId,\n name: fullName,\n profileUrl: `${routePrefix}/${PAGE_ROUTES.CONTACT.ROOT}/${PAGE_ROUTES.CONTACT.SUBROUTES.PROFILE}`.replace(\n ':crmObjectId',\n association.associatedObject.crmObjectId || '',\n ),\n icon: 'user',\n tags: (association.tags || []).filter((tag) => tag !== 'Primary'),\n phone: formatAsReadonlyPhone(phoneParsed),\n email: this.fieldService.getFieldValueFromCrmObject(association.associatedObject, StandardExternalIds.Email)\n ?.stringValue,\n linkedInUrl: this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.ContactLinkedInURL,\n )?.stringValue,\n jobTitle: this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.ContactJobTitle,\n )?.stringValue,\n } as ContactAssociationCardData;\n });\n };\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly dialog: MatDialog,\n private translateService: TranslateService,\n private readonly fieldService: CrmFieldService,\n private readonly objectDisplayService: CrmObjectDisplayService,\n private window: Window,\n private clipboard: Clipboard,\n private snackbarService: SnackbarService,\n ) {}\n\n openMailWindow(email: string): void {\n this.window.open(\n `mailto:${email}`,\n 'targetWindow',\n 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=900,height=600',\n );\n }\n copyToClipboard(email: string): void {\n this.clipboard.copy(email);\n this.snackbarService.openSuccessSnack('COMMON.SNACKBAR_MESSAGE.COPY_SUCCESS', { action: 'Close' });\n }\n}\n","\n\n\n @if (card.email) {\n
\n \n {{ card.email }}\n \n \n
\n }\n
\n\n\n @if (card.jobTitle) {\n \n \n {{ card.jobTitle }}\n \n \n }\n @if (card.linkedInUrl) {\n \n \n \n {{ card.linkedInUrl }}\n \n \n \n }\n @if (card.phone) {\n \n \n \n {{ card.phone }}\n \n \n \n }\n\n","import { Component, inject } from '@angular/core';\nimport { COMPANY_PROFILE_CARD_DATA_TOKEN } from '../../../tokens-and-interfaces';\nimport { ContactAssociationPanelComponent } from '../contact-associations-panel/contact-association-panel.component';\n\n@Component({\n selector: 'crm-company-to-contact-associations-card',\n imports: [ContactAssociationPanelComponent],\n templateUrl: './company-to-contact-associations-card.component.html',\n styleUrls: ['../../../shared-styles/association-panel-shared.scss'],\n})\nexport class CompanyToContactAssociationsCardComponent {\n data = inject(COMPANY_PROFILE_CARD_DATA_TOKEN);\n protected readonly id = this.data.company_id;\n protected readonly name = this.data.name;\n}\n"," \n","import { Component, computed, input } from '@angular/core';\nimport { MatCardSubtitle } from '@angular/material/card';\nimport { CommonAssociationCardContentComponent } from '../association-card';\nimport { ObjectType } from '../../../tokens-and-interfaces';\nimport { CrmObjectAssociationPanelComponent } from '../crm-object-association-panel/crm-object-association-panel.component';\nimport { Association, CrmFieldService, StandardIds, SystemFieldIds } from '../../../shared-services';\nimport { formatAsReadonlyPhone, parsePhoneNumber } from '../../model-driven-form';\nimport { PAGE_ROUTES } from '../../../constants';\nimport { AssociationCardData } from '../crm-object-association-panel/tokens-and-interfaces';\n\nexport interface CompanyAssociationCardData extends AssociationCardData {\n phone?: string;\n website?: string;\n address?: string;\n}\n@Component({\n selector: 'crm-company-association-panel',\n templateUrl: './company-association-panel.component.html',\n styleUrls: ['./company-association-panel.component.scss'],\n imports: [CommonAssociationCardContentComponent, CrmObjectAssociationPanelComponent, MatCardSubtitle],\n})\nexport class CompanyAssociationPanelComponent {\n id = input('');\n name = input('');\n objectType = input('Company');\n primaryAssociationRequired = computed(() => {\n const objectType = this.objectType();\n return objectType === 'Contact';\n });\n\n protected readonly cardFunction = (\n associations: Association[],\n routePrefix: string,\n ): CompanyAssociationCardData[] => {\n return associations.map((association) => {\n const phoneParsed = parsePhoneNumber(\n this.fieldService.getFieldValueFromCrmObject(association.associatedObject, StandardIds.CompanyPhoneNumber)\n ?.stringValue || '',\n );\n return {\n associationId: association.associationId,\n objectId:\n this.fieldService.getFieldValueFromCrmObject(association.associatedObject, SystemFieldIds.CompanyID)\n ?.stringValue || '',\n name:\n this.fieldService.getFieldValueFromCrmObject(association.associatedObject, StandardIds.CompanyName)\n ?.stringValue || '',\n profileUrl: `${routePrefix}/${PAGE_ROUTES.COMPANY.ROOT}/${PAGE_ROUTES.COMPANY.SUBROUTES.PROFILE}`.replace(\n ':crmObjectId',\n association.associatedObject.crmObjectId || '',\n ),\n tags: association.tags || [],\n icon: 'business',\n\n address: this.generateAddressString(association),\n website: this.fieldService.getFieldValueFromCrmObject(association.associatedObject, StandardIds.CompanyWebsite)\n ?.stringValue,\n phone: formatAsReadonlyPhone(phoneParsed),\n } as CompanyAssociationCardData;\n });\n };\n\n constructor(private readonly fieldService: CrmFieldService) {}\n\n generateAddressString(association: Association): string {\n const address1 = this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.CompanyPrimaryAddressLine1,\n )?.stringValue;\n\n const address2 = this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.CompanyPrimaryAddressLine2,\n )?.stringValue;\n\n const city = this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.CompanyPrimaryAddressCity,\n )?.stringValue;\n\n const state = this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.CompanyPrimaryAddressState,\n )?.stringValue;\n\n const country = this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.CompanyPrimaryAddressCountry,\n )?.stringValue;\n\n const zip = this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.CompanyPrimaryAddressPostalCode,\n )?.stringValue;\n\n return [address1, address2, city, state, country, zip].filter(Boolean).join(', ');\n }\n}\n","\n\n @if (card.website) {\n \n {{ card.website }}\n \n }\n\n\n\n @if (card.address) {\n \n {{ card.address }}\n \n }\n @if (card.phone) {\n \n \n \n {{ card.phone }}\n \n \n \n }\n\n","import { Component, input } from '@angular/core';\nimport { ObjectType } from '../../../tokens-and-interfaces';\nimport {\n Association,\n CrmFieldService,\n CrmObjectDisplayService,\n CrmPipelineService,\n StandardIds,\n SystemFieldIds,\n} from '../../../shared-services';\nimport { CrmObjectAssociationPanelComponent } from '../crm-object-association-panel/crm-object-association-panel.component';\nimport { OpportunityStatus, PAGE_ROUTES } from '../../../constants';\nimport { AssociationCardData } from '../crm-object-association-panel/tokens-and-interfaces';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { AsyncPipe, DatePipe } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { EMPTY, map } from 'rxjs';\n\nexport interface OpportunityAssociationCardData extends AssociationCardData {\n value?: number;\n currency?: string;\n lastActivity?: Date;\n expectedClose?: Date;\n status?: string;\n}\n\n@Component({\n selector: 'crm-opportunity-association-panel',\n templateUrl: './opportunity-association-panel.component.html',\n styleUrls: ['../../../shared-styles/association-panel-shared.scss', 'opportunity-association-panel.component.scss'],\n imports: [\n CrmObjectAssociationPanelComponent,\n GalaxyPipesModule,\n DatePipe,\n TranslateModule,\n GalaxyBadgeModule,\n AsyncPipe,\n ],\n})\nexport class OpportunityAssociationPanelComponent {\n id = input('');\n name = input('');\n objectType = input('Opportunity');\n\n protected readonly ClosedWon = OpportunityStatus.ClosedWon;\n protected readonly ClosedLost = OpportunityStatus.ClosedLost;\n protected readonly Open = OpportunityStatus.Open;\n\n protected readonly cardFunction = (associations: Association[], routePrefix: string): AssociationCardData[] => {\n return associations.map((association) => {\n const fullName = this.opportunityCustomizationService.getObjectDisplayName(\n 'Opportunity',\n association.associatedObject || {},\n );\n\n const currencyValue = this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.OpportunityAmount,\n );\n const lastActivity = this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n SystemFieldIds.OpportunityLastActivityDate,\n );\n const closeDate = this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.OpportunityExpectedCloseDate,\n );\n const status = this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.OpportunityStatus,\n );\n const stageField = this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.OpportunityCalculatedStageID,\n );\n const pipelineField = this.fieldService.getFieldValueFromCrmObject(\n association.associatedObject,\n StandardIds.OpportunityPipelineID,\n );\n\n const pipelineId = pipelineField?.stringValue ?? '';\n const stageId = stageField?.stringValue ?? '';\n\n const pipeline$ = pipelineId && stageId ? this.crmPipelineService.getPipeline$(pipelineId) : EMPTY;\n const stageName$ = pipeline$.pipe(\n map((pipeline) => pipeline?.stages || []),\n map((stages) => stages.find((stage) => stage.id === stageId)),\n map((stage) => stage?.name || ''),\n );\n\n return {\n associationId: association.associationId,\n objectId: association.associatedObject.crmObjectId,\n name: fullName,\n profileUrl:\n `${routePrefix}/${PAGE_ROUTES.OPPORTUNITY.ROOT}/${PAGE_ROUTES.OPPORTUNITY.SUBROUTES.PROFILE}`.replace(\n ':crmObjectId',\n association.associatedObject.crmObjectId || '',\n ),\n tags: association.tags || [],\n value: currencyValue?.currencyValue?.value ?? 0,\n currency: currencyValue?.currencyValue?.currencyCode ?? 'USD',\n lastActivity: lastActivity?.dateValue,\n expectedClose: closeDate?.dateValue,\n status: status?.stringValue ?? 'Open',\n stageName$: stageName$,\n } as OpportunityAssociationCardData;\n });\n };\n\n constructor(\n private readonly opportunityCustomizationService: CrmObjectDisplayService,\n private readonly fieldService: CrmFieldService,\n private readonly crmPipelineService: CrmPipelineService,\n ) {}\n}\n","\n\n\n @switch (card.status) {\n @case (ClosedWon) {\n \n {{ 'OPPORTUNITY.ASSOCIATION_PANEL.STATUS.CLOSED_WON' | translate }}\n \n }\n @case (ClosedLost) {\n \n {{ 'OPPORTUNITY.ASSOCIATION_PANEL.STATUS.CLOSED_LOST' | translate }}\n \n }\n @case (Open) {\n \n {{ 'OPPORTUNITY.ASSOCIATION_PANEL.STATUS.OPEN' | translate }}\n \n }\n }\n\n\n\n
\n \n {{ 'OPPORTUNITY.ASSOCIATION_PANEL.VALUE' | translate }}:\n {{ card.value || 0 | glxyCurrency: card.currency }}\n \n @if (card.lastActivity) {\n \n {{ 'OPPORTUNITY.ASSOCIATION_PANEL.ACTIVITY' | translate }}:\n {{ card.lastActivity | date: 'mediumDate' }}\n \n }\n @if (card.expectedClose) {\n \n {{ 'OPPORTUNITY.ASSOCIATION_PANEL.CLOSE_DATE' | translate }}:\n {{ card.expectedClose | date: 'mediumDate' }}\n \n }\n @if (card.stageName$ | async; as stageName) {\n {{ 'OPPORTUNITY.ASSOCIATION_PANEL.STAGE' | translate }}: {{ stageName }}\n }\n
\n
\n","import { Component, inject } from '@angular/core';\nimport { COMPANY_PROFILE_CARD_DATA_TOKEN } from '../../../tokens-and-interfaces';\nimport { OpportunityAssociationPanelComponent } from '../opportunity-associations-panel/opportunity-association-panel.component';\n\n@Component({\n selector: 'crm-company-to-opportunity-associations-card',\n imports: [OpportunityAssociationPanelComponent],\n templateUrl: './company-to-opportunity-associations-panel.component.html',\n styleUrls: ['../../../shared-styles/association-panel-shared.scss'],\n})\nexport class CompanyToOpportunityAssociationsPanelComponent {\n data = inject(COMPANY_PROFILE_CARD_DATA_TOKEN);\n protected readonly id = this.data.company_id;\n protected readonly name = this.data.name;\n}\n","\n\n","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsidG9rZW5zLWFuZC1pbnRlcmZhY2VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzc29jaWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgQ3JlYXRlQ2FyZERhdGEgPSAoYXNzb2NpYXRpb25zOiBBc3NvY2lhdGlvbltdLCByb3V0ZVByZWZpeDogc3RyaW5nKSA9PiBBc3NvY2lhdGlvbkNhcmREYXRhW107XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUFjdGlvbkZ1bmMgPSAoZGF0YTogQXNzb2NpYXRpb25DYXJkRGF0YSkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBDYXJkQWN0aW9uIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgY2FsbGJhY2s6IEN1c3RvbUFjdGlvbkZ1bmM7XG4gIGljb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzb2NpYXRpb25DYXJkRGF0YSB7XG4gIGFzc29jaWF0aW9uSWQ6IHN0cmluZztcbiAgb2JqZWN0SWQ6IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcHJvZmlsZVVybD86IHN0cmluZztcbiAgdGFncz86IHN0cmluZ1tdO1xuICBpY29uPzogJ3VzZXInIHwgJ3BlcnNvbicgfCAnYnVzaW5lc3MnO1xuICBhdmF0YXI/OiBzdHJpbmc7XG4gIHN0YWdlTmFtZSQ/OiBPYnNlcnZhYmxlPHN0cmluZz47XG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=","export * from './association-card';\nexport { CompanyCampaignsCardComponent } from './company-campaigns-associations-card/company-campaigns-card.component';\nexport { ContactCampaignsCardComponent } from './contact-campaign-association-card/contact-campaigns-card.component';\nexport { AddCampaignDialogComponent } from './contact-campaign-association-card/add-campaign-dialog/add-campaign-dialog.component';\nexport { EditAssociationDialogComponent } from './edit-association-dialog/edit-association-dialog.component';\nexport { EditAssociationTagsComponent } from './edit-association-tags/edit-association-tags.component';\nexport { ParentChildCompanyAssociationsCardComponent } from './parent-child-company-associations-card/parent-child-company-associations-card.component';\nexport * from './select-associations-modal/select-associations-modal.component';\nexport * from './company-to-contact-associations-card/company-to-contact-associations-card.component';\nexport { ContactAssociationPanelComponent } from './contact-associations-panel/contact-association-panel.component';\nexport { CompanyAssociationPanelComponent } from './company-associations-panel/company-association-panel.component';\nexport { OpportunityAssociationPanelComponent } from './opportunity-associations-panel/opportunity-association-panel.component';\nexport { CompanyToOpportunityAssociationsPanelComponent } from './company-to-opportunity-associations-panel/company-to-opportunity-associations-panel.component';\nexport * from './crm-object-association-panel/tokens-and-interfaces';\nexport { CrmObjectAssociationPanelComponent } from './crm-object-association-panel/crm-object-association-panel.component';\n","export * from './list-objects-page.component';\nexport * from './list-objects-table.service';\nexport * from './value-summary.service';\nexport * from './list-objects-table.component';\nexport * from './directives/content.directive';\nexport * from './directives/page-actions.directive';\n","export * from './timeline.component';\nexport * from './timeline-activity.component';\nexport * from './timeline-associated-object.pipe';\nexport * from './timeline.service';\n","export * from './activities';\nexport * from './timeline';\n\nexport * from './activities-timeline.component';\n","import { Component, computed, Input, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyAbstractFilterChip, GalaxyFilterValueInterface } from '@vendasta/galaxy/filter/chips';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { switchMap } from 'rxjs/operators';\nimport { CompanyDisplayName, CompanyFiltersService } from '../../../shared-services';\n\n@Component({\n selector: 'crm-company-custom-filter-chip',\n template: `\n \n {{ selectedCompanyText() }}\n \n \n
\n
\n `,\n providers: [],\n styleUrls: ['./company-custom-filter-chip.component.scss'],\n imports: [CommonModule, TranslateModule],\n})\nexport class CompanyCustomFilterChipComponent implements GalaxyAbstractFilterChip {\n selectedCompanyId = signal('');\n selectedCompany = signal([]);\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n if (value?.length > 0 && value[0].string) {\n this.selectedCompanyId.set(value[0].string);\n }\n }\n\n selectedCompanyText = computed(() => {\n if (this.selectedCompany().length === 0) {\n return '';\n }\n return this.selectedCompany()[0]?.displayName || this.selectedCompanyId();\n });\n\n constructor(private readonly companyFiltersService: CompanyFiltersService) {\n toObservable(this.selectedCompanyId)\n .pipe(\n switchMap((companyIds) => {\n return this.companyFiltersService.getMultiCompany([companyIds]);\n }),\n takeUntilDestroyed(),\n )\n .subscribe((result) => {\n this.selectedCompany.set(result);\n });\n }\n}\n","import { Component, effect, EventEmitter, forwardRef, Input, Output, signal } from '@angular/core';\nimport { GalaxyAbstractFilterInput, GalaxyFilterValueInterface } from '@vendasta/galaxy/filter/chips';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { CompanyDisplayName, CompanyFiltersService } from '../../../shared-services';\n\n@Component({\n template: `\n \n \n \n \n {{ option?.displayName }}\n \n \n \n \n
\n \n \n \n
\n
\n `,\n providers: [\n {\n provide: GalaxyAbstractFilterInput,\n useExisting: forwardRef(() => CompanyCustomFilterInputComponent),\n },\n ],\n imports: [\n CommonModule,\n TranslateModule,\n ReactiveFormsModule,\n MatInputModule,\n GalaxyFormFieldModule,\n MatAutocompleteModule,\n ],\n})\nexport class CompanyCustomFilterInputComponent implements GalaxyAbstractFilterInput {\n @Input() set fieldId(value: string) {\n this._fieldId.set(value);\n }\n @Output() valueChanges = new EventEmitter();\n formControl: FormControl = new FormControl('', {\n nonNullable: true,\n });\n\n searchTerm = toSignal(this.formControl.valueChanges, { initialValue: '' });\n\n _fieldId = signal('');\n availableOptions$ = toObservable(this.searchTerm).pipe(\n takeUntilDestroyed(),\n switchMap((searchTerm) => {\n const filterTerm = typeof searchTerm === 'string' ? searchTerm : searchTerm?.crmObjectId;\n\n return this.companyFiltersService.listReadableCompanies(filterTerm || '');\n }),\n );\n\n availableOptions = toSignal(this.availableOptions$);\n\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n if (value?.length > 0 && value[0].string) {\n this.formControl.setValue(value[0].string);\n }\n }\n\n clearValue(): void {\n this.formControl.setValue('');\n }\n\n companyDetails$ = toObservable(this.searchTerm).pipe(\n switchMap((value) => {\n let crmObjectId = '';\n if (typeof value === 'string') {\n crmObjectId = value;\n } else {\n crmObjectId = value.crmObjectId ?? '';\n }\n if (!crmObjectId) {\n return of({} as CompanyDisplayName[]);\n }\n return this.companyFiltersService.getMultiCompany([crmObjectId]);\n }),\n );\n\n constructor(private companyFiltersService: CompanyFiltersService) {\n effect(() => {\n const value = this.searchTerm();\n\n if (value === '') {\n this.valueChanges.emit([]);\n return;\n }\n if (typeof value === 'string') {\n this.valueChanges.emit([{ string: value }]);\n return;\n }\n this.valueChanges.emit([{ string: value?.crmObjectId }]);\n });\n }\n\n displayFn(availableOptions: CompanyDisplayName[]): (company: CompanyDisplayName | string) => string {\n return (company: CompanyDisplayName | string): string => {\n if (!company || !availableOptions) {\n return '';\n }\n if (typeof company === 'string') {\n const foundCompany = availableOptions.find((displayName) => displayName.crmObjectId === company);\n return foundCompany?.displayName || company;\n }\n return company?.displayName;\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, signal, computed } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyAbstractFilterChip, GalaxyFilterValueInterface } from '@vendasta/galaxy/filter/chips';\n\n@Component({\n template: ``,\n imports: [CommonModule, TranslateModule],\n})\nexport abstract class AbstractAssigneeFilterChipComponent implements GalaxyAbstractFilterChip {\n selectedAssigneeIds = signal([]);\n selectedAssignees = signal([]);\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n this.selectedAssigneeIds.set(value?.map((v) => v.string ?? '').filter(Boolean) || []);\n }\n\n selectedAssigneesText = computed(() => {\n if (this.selectedAssignees().length === 0) {\n return '';\n }\n const firstAssigneeName = this.getDisplayName(this.selectedAssignees()[0]) || this.selectedAssigneeIds()[0];\n if (this.selectedAssignees().length === 1) {\n return firstAssigneeName;\n }\n return `${firstAssigneeName} +${this.selectedAssignees().length - 1}`;\n });\n\n abstract getDisplayName(assignee: T): string;\n}\n","import { Component, inject } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { switchMap } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AbstractAssigneeFilterChipComponent } from '../../abstract-custom-filters/abstract-assignee/abstract-assignee-filter-chip.component';\nimport { ActivityAssigneeService } from '../../../shared-services/activity-assignee.service';\nimport { UserWithDisplayName } from '../../../tokens-and-interfaces';\n\n@Component({\n template: `\n \n \n {{ selectedAssigneesText() }}\n \n \n \n
\n
\n `,\n providers: [],\n styleUrls: ['../common-filter-chip.component.scss'],\n imports: [CommonModule, TranslateModule],\n})\nexport class UserFilterChipComponent extends AbstractAssigneeFilterChipComponent {\n private readonly userService = inject(ActivityAssigneeService);\n getDisplayName(user: UserWithDisplayName): string {\n return user.displayName;\n }\n\n constructor() {\n super();\n toObservable(this.selectedAssigneeIds)\n .pipe(\n switchMap((userIds) => {\n return this.userService.getMultiUsers(userIds);\n }),\n takeUntilDestroyed(),\n )\n .subscribe((result) => {\n this.selectedAssignees.set(result);\n });\n }\n}\n","import { Component, computed, effect, EventEmitter, forwardRef, Input, Output, Signal, signal } from '@angular/core';\nimport { GalaxyAbstractFilterInput, GalaxyFilterValueInterface } from '@vendasta/galaxy/filter/chips';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n template: '',\n providers: [\n {\n provide: GalaxyAbstractFilterInput,\n useExisting: forwardRef(() => AbstractAssigneeFilterInputComponent),\n },\n ],\n imports: [\n CommonModule,\n TranslateModule,\n ReactiveFormsModule,\n MatInputModule,\n GalaxyFormFieldModule,\n MatAutocompleteModule,\n ],\n})\nexport abstract class AbstractAssigneeFilterInputComponent implements GalaxyAbstractFilterInput {\n @Input() set fieldId(value: string) {\n this._fieldId.set(value);\n }\n\n @Output() valueChanges = new EventEmitter();\n formControl: FormControl = new FormControl('', {\n nonNullable: true,\n });\n\n searchTerm = toSignal(this.formControl.valueChanges, { initialValue: '' });\n _fieldId = signal('');\n availableOptions = signal([]);\n\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n if (value?.length > 0 && value[0].string) {\n this.formControl.setValue(value[0].string);\n }\n }\n\n filteredOptions: Signal = computed(() => {\n const searchTerm = this.searchTerm();\n const availableOptions = this.availableOptions();\n const filterTerm = this.extractFilterTerm(searchTerm);\n return availableOptions.filter((assignee) => this.filterFn(assignee, filterTerm));\n });\n protected emitSearchTermValue = true;\n\n protected constructor() {\n effect(() => {\n const value = this.searchTerm();\n if (value === '') {\n return this.emitNewValue([]);\n }\n if (typeof value === 'string') {\n return this.emitNewValue([{ string: value }]);\n }\n return this.emitNewValue([{ string: this.getId(value) }]);\n });\n }\n\n clearValue() {\n this.formControl.setValue('');\n }\n\n displayFn(availableOptions: T[]): (assignee: T | string) => string {\n return (assignee: T | string): string => {\n if (!assignee) {\n return '';\n }\n if (typeof assignee === 'string') {\n const foundOption = availableOptions.find((o) => this.getId(o) === assignee);\n return foundOption ? this.getDisplayName(foundOption) : assignee;\n }\n return this.getDisplayName(assignee);\n };\n }\n\n private emitNewValue(value: GalaxyFilterValueInterface[]): void {\n if (this.emitSearchTermValue) {\n this.valueChanges.emit(value);\n }\n }\n\n abstract filterFn(assignee: T, searchTerm: string): boolean;\n abstract extractFilterTerm(assignee: T | string): string;\n abstract getId(assignee: T): string;\n abstract getDisplayName(assignee: T): string;\n abstract setAvailableOptions(): void;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivityAssigneeService } from '../../../shared-services/activity-assignee.service';\nimport { AbstractAssigneeFilterInputComponent } from '../../abstract-custom-filters/abstract-assignee/abstract-assignee-filter-input.component';\nimport { UserWithDisplayName } from '../../../tokens-and-interfaces';\nimport { userFilterFn } from '../../../utils';\n\n@Component({\n template: `\n \n \n \n \n {{ option?.displayName }}\n \n \n \n `,\n imports: [\n CommonModule,\n TranslateModule,\n ReactiveFormsModule,\n MatInputModule,\n GalaxyFormFieldModule,\n MatAutocompleteModule,\n ],\n})\nexport class UserFilterInputComponent extends AbstractAssigneeFilterInputComponent {\n protected override emitSearchTermValue = false;\n\n filterFn(user: UserWithDisplayName, searchTerm: string): boolean {\n return userFilterFn(user, searchTerm);\n }\n extractFilterTerm(user: string | UserWithDisplayName): string {\n return typeof user === 'string' ? user : user?.userId;\n }\n getId(user: UserWithDisplayName): string {\n return user.userId;\n }\n getDisplayName(user: UserWithDisplayName): string {\n return user.displayName;\n }\n setAvailableOptions(): void {\n this.userService.allUsers$.pipe(takeUntilDestroyed()).subscribe((allUsers) => this.availableOptions.set(allUsers));\n }\n\n constructor(private readonly userService: ActivityAssigneeService) {\n super();\n this.setAvailableOptions();\n\n effect(() => {\n const value = this.searchTerm();\n if (!value) {\n this.valueChanges.emit([]);\n }\n if (typeof value === 'string') {\n // never emit the input value directly. search the user and set it to formControl\n this.userService.searchTerm$$.next(value);\n const availableOptions = this.availableOptions();\n const user = availableOptions.find((o) => o.userId === value);\n if (user) {\n this.formControl.setValue(user);\n } else {\n this.valueChanges.emit([]);\n }\n return;\n }\n const userId = this.getId(value);\n if (userId) {\n return this.valueChanges.emit([{ string: userId }]);\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, Input, signal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyAbstractFilterChip, GalaxyFilterValueInterface } from '@vendasta/galaxy/filter/chips';\nimport { switchMap } from 'rxjs/operators';\nimport { CrmInjectionToken, SimplifiedUser, UserService } from '../../../tokens-and-interfaces';\nimport { tap } from 'rxjs';\n\n@Component({\n selector: 'crm-team-member-filter-chip',\n template: `\n @if (isLoading() && selectedTeamMemberIds().length > 0) {\n
\n } @else {\n {{ selectedTeamMemberText() }}\n }\n `,\n providers: [],\n styleUrls: ['./team-member-filter-chip.component.scss'],\n imports: [CommonModule, TranslateModule],\n})\nexport class TeamMemberFilterChipComponent implements GalaxyAbstractFilterChip {\n selectedTeamMemberIds = signal([]);\n selectedTeamMember = signal([]);\n isLoading = signal(true);\n\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n this.selectedTeamMemberIds.set(value?.map((v) => v.string) || []);\n }\n\n selectedTeamMemberText = computed(() => {\n if (this.selectedTeamMember().length === 0) {\n return '';\n }\n const firstSalespersonName = this.selectedTeamMember()[0].displayName || this.selectedTeamMemberIds()[0];\n if (this.selectedTeamMember().length === 1) {\n return firstSalespersonName;\n }\n return `${firstSalespersonName} +${this.selectedTeamMember().length - 1}`;\n });\n\n private readonly config = inject(CrmInjectionToken);\n private readonly userService: UserService;\n\n constructor() {\n if (this.config.services?.userService === undefined) {\n throw new Error('UserService is not provided');\n }\n this.userService = this.config.services?.userService;\n\n toObservable(this.selectedTeamMemberIds)\n .pipe(\n tap(() => {\n this.isLoading.set(true);\n }),\n switchMap((userIds) => {\n return this.userService.getMultiUsers(userIds);\n }),\n tap(() => {\n this.isLoading.set(false);\n }),\n takeUntilDestroyed(),\n )\n .subscribe((result) => {\n this.selectedTeamMember.set(result);\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n effect,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n Output,\n signal,\n ViewChild,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport {\n GalaxyAbstractFilterInput,\n GalaxyFilterOperator,\n GalaxyFilterValueInterface,\n} from '@vendasta/galaxy/filter/chips';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatChipGrid, MatChipInput, MatChipInputEvent, MatChipRemove, MatChipRow } from '@angular/material/chips';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { CrmInjectionToken, SimplifiedUser, UserService } from '../../../tokens-and-interfaces';\nimport { catchError, debounceTime, startWith, switchMap, take, tap } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\n\n@Component({\n template: `\n @defer (when loadingValues() === false) {\n @if (singleInput()) {\n \n \n \n \n {{ option?.displayName }}\n \n \n \n } @else {\n \n \n \n \n \n \n \n {{ owner.displayName }}\n \n \n \n \n \n \n \n {{ option?.displayName }}\n \n \n \n }\n } @placeholder (minimum 100ms) {\n
\n }\n `,\n styleUrls: ['./team-member-filter-input.component.scss'],\n providers: [\n {\n provide: GalaxyAbstractFilterInput,\n useExisting: forwardRef(() => TeamMemberFilterInputComponent),\n },\n ],\n imports: [\n CommonModule,\n TranslateModule,\n ReactiveFormsModule,\n MatInputModule,\n GalaxyFormFieldModule,\n MatAutocompleteModule,\n MatChipGrid,\n MatChipInput,\n MatChipRemove,\n MatChipRow,\n MatIcon,\n MatProgressSpinner,\n ],\n})\nexport class TeamMemberFilterInputComponent implements GalaxyAbstractFilterInput {\n @ViewChild('ownerInput') ownerInput: ElementRef;\n separatorKeysCodes: number[] = [ENTER, COMMA];\n\n @Input() set fieldId(value: string) {\n this._fieldId.set(value);\n }\n\n @Output() valueChanges = new EventEmitter();\n formControl: FormControl = new FormControl('', {\n nonNullable: true,\n });\n\n searchTerm = toSignal(this.formControl.valueChanges, { initialValue: '' });\n _fieldId = signal('');\n loadingValues = signal(true);\n availableOptions = signal([]);\n\n @Input() set initialValue(value: GalaxyFilterValueInterface[]) {\n this.loadingValues.set(true);\n const ownerIds = (value ?? []).map((v) => v.string);\n this.selectedTeamMemberIDs.set(ownerIds);\n const singleInput = this.singleInput();\n if (ownerIds.length > 0 && singleInput) {\n this.formControl.setValue(ownerIds[0]);\n }\n }\n singleInput: WritableSignal = signal(true);\n _operator?: GalaxyFilterOperator;\n @Input() set operator(value: GalaxyFilterOperator) {\n this._operator = value;\n const isMultiInput =\n this._operator == GalaxyFilterOperator.FILTER_OPERATOR_IS_ANY ||\n this._operator == GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_ANY;\n if (isMultiInput) {\n this.formControl.setValue('');\n } else {\n const selectedTeamMember = this.selectedTeamMemberIDs();\n if (selectedTeamMember.length > 0) {\n this.formControl.setValue(selectedTeamMember[0]);\n if (selectedTeamMember.length > 1) {\n this.selectedTeamMemberIDs.set([selectedTeamMember[0]]);\n }\n this.userService\n .getMultiUsers(selectedTeamMember)\n .pipe(\n take(1),\n catchError(() => {\n return of([]);\n }),\n tap((sUsr) => {\n this.selectedTeamMembers.set(sUsr);\n }),\n )\n .subscribe();\n }\n }\n this.singleInput.set(!isMultiInput);\n }\n\n selectedTeamMemberIDs = signal([]);\n selectedTeamMembers = signal([]);\n\n private readonly config = inject(CrmInjectionToken);\n private readonly userService: UserService;\n\n constructor() {\n if (this.config.services?.userService === undefined) {\n throw new Error('UserService is not provided');\n }\n this.userService = this.config.services?.userService;\n effect(() => {\n const selectedTeamMemberIDs = this.selectedTeamMemberIDs();\n this.valueChanges.emit(selectedTeamMemberIDs.map((s) => ({ string: s })));\n });\n\n this.formControl.valueChanges\n .pipe(\n startWith(''),\n takeUntilDestroyed(),\n debounceTime(300),\n switchMap((searchValue) => {\n return this.searchUsers(searchValue);\n }),\n tap((results) => {\n this.availableOptions.set(results);\n const isMultiInput =\n this._operator == GalaxyFilterOperator.FILTER_OPERATOR_IS_ANY ||\n this._operator == GalaxyFilterOperator.FILTER_OPERATOR_IS_NOT_ANY;\n if (isMultiInput) {\n const selectedTeamMember = this.selectedTeamMemberIDs();\n this.userService\n .getMultiUsers(selectedTeamMember)\n .pipe(\n take(1),\n catchError(() => {\n return of([]);\n }),\n )\n .subscribe((sUsr) => {\n this.selectedTeamMembers.set(sUsr);\n });\n }\n }),\n tap(() => {\n this.loadingValues.set(false);\n }),\n )\n .subscribe();\n }\n\n searchUsers(searchTerm): Observable {\n const filterTerm = typeof searchTerm === 'string' ? searchTerm : searchTerm?.userId;\n if (searchTerm.startsWith('U-') && searchTerm.length === 38) {\n return this.userService.getMultiUsers([searchTerm]);\n }\n return this.userService.searchUsers(filterTerm);\n }\n\n clearValue() {\n this.formControl.setValue('');\n }\n\n displayFn(availableOptions: SimplifiedUser[]): (teamMember: string) => string {\n return (teamMember: string): string => {\n if (!teamMember) {\n return '';\n }\n const found = availableOptions.find((tm) => tm.userId === teamMember);\n return found?.displayName || teamMember;\n };\n }\n\n add(event: MatChipInputEvent) {\n const current = this.selectedTeamMemberIDs();\n const hasTeamMember = current.some((tm) => tm === event?.value);\n if (event?.value && !hasTeamMember) {\n this.selectedTeamMemberIDs.set([...current, event.value]);\n }\n\n event.chipInput?.clear();\n this.formControl.setValue('');\n }\n\n selected(event: MatAutocompleteSelectedEvent): void {\n const singleInput = this.singleInput();\n const current = this.selectedTeamMemberIDs();\n const hasTeamMember = current.some((tm) => tm === event.option.value);\n if (event.option.value && !hasTeamMember) {\n if (singleInput) {\n this.selectedTeamMemberIDs.set([event.option.value]);\n } else {\n this.selectedTeamMemberIDs.set([...current, event.option.value]);\n }\n }\n if (!singleInput) {\n this.ownerInput.nativeElement.value = '';\n this.formControl.setValue('');\n }\n }\n\n remove(userId: string) {\n const currentSalespeople = this.selectedTeamMemberIDs();\n const listWithoutSelected = currentSalespeople.filter((tm) => tm !== userId);\n this.selectedTeamMemberIDs.set([...listWithoutSelected]);\n }\n}\n","export { CompanyCustomFilterChipComponent } from './company-custom-filter/company-custom-filter-chip.component';\nexport { CompanyCustomFilterInputComponent } from './company-custom-filter/company-custom-filter-input.component';\nexport { UserFilterChipComponent } from './user/user-filter-chip.component';\nexport { UserFilterInputComponent } from './user/user-filter-input.component';\nexport { TeamMemberFilterChipComponent } from './team-member/team-member-filter-chip.component';\nexport { TeamMemberFilterInputComponent } from './team-member/team-member-filter-input.component';\n","export { AbstractAssigneeFilterChipComponent } from './abstract-assignee/abstract-assignee-filter-chip.component';\nexport { AbstractAssigneeFilterInputComponent } from './abstract-assignee/abstract-assignee-filter-input.component';\n","import { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { Action } from './types-and-interfaces';\nimport { TranslationModule } from '../../i18n';\n\n@Component({\n selector: 'crm-dropdown-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, MatIconModule, MatButtonModule, MatMenuModule, TranslationModule],\n templateUrl: './dropdown.component.html',\n styleUrl: './dropdown.component.scss',\n})\nexport class DropdownComponent {\n protected isExpanded = signal(false);\n\n @Input() actions?: Action[];\n\n toggle() {\n this.isExpanded.set(!this.isExpanded());\n }\n\n open() {\n this.isExpanded.set(true);\n }\n}\n","
\n \n @if (isExpanded()) {\n \n } @else {\n \n }\n @if (actions?.length) {\n \n }\n
\n\n@if (isExpanded()) {\n
\n \n
\n} @else {\n
\n \n
\n}\n\n\n @for (action of actions; track $index) {\n \n }\n\n","import { Directive, Input } from '@angular/core';\nimport { Behavior } from './types-and-interfaces';\n\n@Directive({\n selector: 'crm-dropdown-content, [crmDropdownContent]',\n standalone: true,\n})\nexport class DropdownContentDirective {\n behavior?: Behavior;\n\n @Input({ required: true }) set onState(value: Behavior) {\n this.behavior = value;\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { Behavior } from './types-and-interfaces';\n\n@Directive({\n selector: '[crmDropdownHeader], crm-dropdown-header',\n standalone: true,\n})\nexport class DropdownHeaderDirective {\n behavior?: Behavior;\n\n @Input({ required: true }) set onState(value: Behavior) {\n this.behavior = value;\n }\n}\n","export * from './dropdown.component';\nexport * from './dropdown-content.directive';\nexport * from './dropdown-header.directive';\n","import { Component, computed, effect, inject, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CrmInjectionToken, PROFILE_PAGE_DATA_TOKEN } from '../../tokens-and-interfaces';\nimport { CrmFieldService, OpportunityService, StandardIds } from '../../shared-services';\nimport { CrmObjectInterface, PipelinesApiService, Stage } from '@vendasta/crm';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { debounceTime, filter, firstValueFrom } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { UpdaterService } from '../model-driven-form';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\ntype OpportunityStatus = 'Open' | 'Closed Won' | 'Closed Lost';\n\n@Component({\n selector: 'crm-opportunity-page-actions',\n templateUrl: './opportunity-page-actions.component.html',\n styleUrls: ['./opportunity-page-actions.component.scss'],\n imports: [CommonModule, MatButtonModule, MatProgressSpinnerModule, TranslateModule],\n})\nexport class CrmOpportunityPageActionsComponent {\n private readonly config = inject(CrmInjectionToken);\n private readonly data = inject(PROFILE_PAGE_DATA_TOKEN);\n private readonly fieldService = inject(CrmFieldService);\n private readonly opportunityService = inject(OpportunityService);\n private readonly snackbarService = inject(SnackbarService);\n private readonly pipelineService = inject(PipelinesApiService);\n private readonly updaterService = inject(UpdaterService);\n\n protected readonly status = signal(this.getStatus(this.data.crmObject));\n protected readonly loading = signal(false);\n protected readonly pipelineId = signal(this.getPipelineId(this.data.crmObject));\n private readonly stages = signal([]);\n protected readonly wonStage = computed(() => this.getStage(this.stages(), 'Closed Won'));\n protected readonly lostStage = computed(() => this.getStage(this.stages(), 'Closed Lost'));\n protected readonly firstOpenStage = computed(() => this.getStage(this.stages(), 'Open'));\n\n constructor() {\n this.updaterService.updatedField\n .pipe(\n takeUntilDestroyed(),\n filter((field) => field.fieldId === StandardIds.OpportunityStatus),\n debounceTime(100),\n )\n .subscribe((field) => this.status.set(field.stringValue ?? 'Open'));\n effect(async () => {\n const pipelineId = this.pipelineId();\n const namespace = await firstValueFrom(this.config.namespace$);\n const pipelines = await firstValueFrom(\n this.pipelineService.getMultiPipeline({ namespace, pipelineIds: [pipelineId] }),\n );\n const pipeline = pipelines.pipelines?.[0];\n this.stages.set(pipeline?.stages ?? []);\n });\n }\n\n private getStage(stages: Stage[], status: OpportunityStatus): Stage | undefined {\n return stages.find((stage) =>\n stage.mutations.find((m) => m.fieldId === StandardIds.OpportunityStatus && m.stringValue === status),\n );\n }\n\n private getStatus(crmObject?: CrmObjectInterface): string {\n if (crmObject) {\n return this.fieldService.getFieldValueFromCrmObject(crmObject, StandardIds.OpportunityStatus)?.stringValue || '';\n }\n return '';\n }\n\n private getPipelineId(crmObject?: CrmObjectInterface): string {\n if (crmObject) {\n return (\n this.fieldService.getFieldValueFromCrmObject(crmObject, StandardIds.OpportunityPipelineID)?.stringValue || ''\n );\n }\n return '';\n }\n\n async updateStage(stage?: Stage): Promise {\n if (this.data.crmObject && stage) {\n this.loading.set(true);\n try {\n const namespace = await firstValueFrom(this.config.namespace$);\n await firstValueFrom(\n this.opportunityService.updateCrmObject({\n namespace,\n crmObject: {\n crmObjectId: this.data.crmObject.crmObjectId,\n fields: stage.mutations,\n },\n fieldMask: { paths: stage.mutations.map((m) => m.fieldId) },\n }),\n );\n this.snackbarService.openSuccessSnack('OPPORTUNITY.EDIT_PAGE.SAVE.SUCCESS');\n this.syncChanges(stage);\n } catch {\n this.snackbarService.openErrorSnack('OPPORTUNITY.EDIT_PAGE.SAVE.FAIL');\n } finally {\n this.loading.set(false);\n }\n }\n }\n\n private syncChanges(stage: Stage): void {\n if (!this.data?.crmObject?.fields) {\n return;\n }\n // merge status into data object\n const otherFields = this.data.crmObject.fields.filter((f) => !stage.mutations.find((m) => m.fieldId === f.fieldId));\n this.data.crmObject = {\n ...this.data.crmObject,\n fields: [...otherFields, ...stage.mutations],\n };\n // emit changes\n stage.mutations.forEach((mutation) => this.updaterService.updateFieldValue(mutation));\n this.updaterService.updateFieldValue({\n fieldId: StandardIds.OpportunityCalculatedStageID,\n stringValue: stage.stageId,\n });\n this.data.onChangeCallback?.(this.data.crmObject);\n }\n}\n","@if (loading() === true) {\n \n} @else {\n
\n @if (status() === 'Open') {\n @if (lostStage(); as lostStage) {\n \n }\n @if (wonStage(); as wonStage) {\n \n }\n } @else {\n @if (firstOpenStage(); as firstOpenStage) {\n \n }\n }\n
\n}\n","import { Component, computed, inject, signal } from '@angular/core';\nimport { PROFILE_PAGE_DATA_TOKEN } from '../../tokens-and-interfaces';\nimport { CrmFieldService, CrmObjectDisplayService, StandardIds } from '../../shared-services';\nimport { CrmObjectInterface } from '@vendasta/crm';\nimport { BadgeColor, GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { UpdaterService } from '../model-driven-form';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime, filter } from 'rxjs';\n\n@Component({\n selector: 'crm-opportunity-status-badge',\n templateUrl: './opportunity-status-badge.component.html',\n styleUrls: ['./opportunity-status-badge.component.scss'],\n imports: [GalaxyBadgeModule, TranslateModule],\n})\nexport class CrmOpportunityStatusBadgeComponent {\n private readonly data = inject(PROFILE_PAGE_DATA_TOKEN);\n private readonly fieldService = inject(CrmFieldService);\n private readonly objectDisplayService = inject(CrmObjectDisplayService);\n private readonly updaterService = inject(UpdaterService);\n\n private readonly statusValue = signal(this.getStatusFieldValue(this.data.crmObject));\n protected readonly title = signal(this.getTitle(this.data.crmObject));\n protected readonly status = computed(() => this.getStatus(this.statusValue()));\n protected readonly statusColor = computed(() => this.getStatusColor(this.status()));\n\n constructor() {\n this.updaterService.updatedField\n .pipe(\n takeUntilDestroyed(),\n filter((field) => field.fieldId === StandardIds.OpportunityStatus),\n debounceTime(100),\n )\n .subscribe((field) => this.statusValue.set(field.stringValue ?? 'Open'));\n }\n\n private getTitle(crmObject?: CrmObjectInterface): string {\n if (crmObject) {\n return this.objectDisplayService.getObjectDisplayName('Opportunity', crmObject);\n }\n return '';\n }\n\n private getStatusFieldValue(crmObject?: CrmObjectInterface): string {\n return crmObject\n ? this.fieldService.getFieldValueFromCrmObject(crmObject, StandardIds.OpportunityStatus)?.stringValue || ''\n : '';\n }\n\n private getStatus(status?: string): string {\n switch (status) {\n case 'Closed Won':\n return 'OPPORTUNITY.STATUS.WON';\n case 'Closed Lost':\n return 'OPPORTUNITY.STATUS.LOST';\n }\n return '';\n }\n\n private getStatusColor(i18nStatusKey: string): BadgeColor {\n switch (i18nStatusKey) {\n case 'OPPORTUNITY.STATUS.WON':\n return 'green-solid';\n case 'OPPORTUNITY.STATUS.LOST':\n return 'red-solid';\n }\n return 'blue';\n }\n}\n","
\n {{ title() }}\n @if (status(); as status) {\n
\n {{ status | translate }}\n
\n }\n
\n","export { CrmOpportunityPageActionsComponent } from './opportunity-page-actions.component';\nexport { CrmOpportunityStatusBadgeComponent } from './opportunity-status-badge.component';\n","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiaW50ZXJmYWNlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5Q291bnQge1xuICBpbmJvdW5kQ2FsbD86IG51bWJlcjtcbiAgb3V0Ym91bmRDYWxsPzogbnVtYmVyO1xuICBpbmJvdW5kRW1haWw/OiBudW1iZXI7XG4gIG91dGJvdW5kRW1haWw/OiBudW1iZXI7XG4gIG1lZXRpbmc/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VtbWFyeSB7XG4gIHRvdGFsOiBBY3Rpdml0eUNvdW50O1xuICBhdmVyYWdlOiBBY3Rpdml0eUNvdW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJBY3Rpdml0eSB7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBmdWxsTmFtZTogc3RyaW5nO1xuICBwcm9maWxlUGljdHVyZT86IHN0cmluZztcbiAgY291bnQ6IEFjdGl2aXR5Q291bnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVJhbmdlIHtcbiAgZGF0ZVJhbmdlU3RhcnQ6IERhdGU7XG4gIGRhdGVSYW5nZUVuZDogRGF0ZTtcbn1cbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==","export * from './activity-leaderboard.module';\nexport * from './date-range-selector/date-range-selector.component';\nexport * from './interfaces';\n","export * from './association-panel-components';\nexport * from './custom-table-cells';\nexport * from './filter-view';\nexport * from './list-objects';\nexport * from './select-object-type-modal/select-object-type-modal.component';\nexport * from './create-crm-object-modal';\nexport * from './side-panel';\nexport * from './model-driven-form';\nexport * from './activities-timeline';\nexport * from './custom-filters';\nexport * from './abstract-custom-filters';\nexport * from './vertical-nav-tab';\nexport * from './dropdown';\nexport * from './association-form-field';\nexport * from './opportunity';\nexport * from './leaderboard';\n","export * from './lib/shared-services';\nexport * from './lib/shared-components';\nexport * from './lib/shared-pipes';\nexport * from './lib/crm-core.module';\nexport * from './lib/tokens-and-interfaces';\nexport * from './lib/constants';\nexport * from './lib/i18n';\nexport * from './lib/utils';\n"],"mappings":"y1PAAA,IAAYA,GAmBAC,GA4BAC,GA/CZC,GAAAC,EAAA,KAAYJ,GAAZ,SAAYA,EAAiB,CAC3BA,OAAAA,EAAAA,EAAA,qBAAA,CAAA,EAAA,uBACAA,EAAAA,EAAA,mBAAA,CAAA,EAAA,qBACAA,EAAAA,EAAA,uBAAA,CAAA,EAAA,yBACAA,EAAAA,EAAA,sBAAA,CAAA,EAAA,wBACAA,EAAAA,EAAA,uBAAA,CAAA,EAAA,yBACAA,EAAAA,EAAA,uBAAA,CAAA,EAAA,yBACAA,EAAAA,EAAA,uBAAA,CAAA,EAAA,yBACAA,EAAAA,EAAA,wBAAA,CAAA,EAAA,0BACAA,EAAAA,EAAA,wBAAA,CAAA,EAAA,0BACAA,EAAAA,EAAA,wBAAA,CAAA,EAAA,0BACAA,EAAAA,EAAA,0BAAA,EAAA,EAAA,4BACAA,EAAAA,EAAA,0BAAA,EAAA,EAAA,4BACAA,EAAAA,EAAA,0BAAA,EAAA,EAAA,4BACAA,EAAAA,EAAA,uBAAA,EAAA,EAAA,yBACAA,EAAAA,EAAA,uBAAA,EAAA,EAAA,yBACAA,EAAAA,EAAA,uBAAA,EAAA,EAAA,yBAhBUA,CAiBZ,EAjBYA,IAAiB,CAAA,CAAA,EAmBjBC,GAAZ,SAAYA,EAAoB,CAC9BA,OAAAA,EAAAA,EAAA,wBAAA,CAAA,EAAA,0BACAA,EAAAA,EAAA,yBAAA,CAAA,EAAA,2BACAA,EAAAA,EAAA,6BAAA,CAAA,EAAA,+BACAA,EAAAA,EAAA,mBAAA,CAAA,EAAA,qBACAA,EAAAA,EAAA,uBAAA,CAAA,EAAA,yBACAA,EAAAA,EAAA,uBAAA,CAAA,EAAA,yBACAA,EAAAA,EAAA,2BAAA,CAAA,EAAA,6BACAA,EAAAA,EAAA,uBAAA,CAAA,EAAA,yBACAA,EAAAA,EAAA,2BAAA,CAAA,EAAA,6BACAA,EAAAA,EAAA,yBAAA,CAAA,EAAA,2BACAA,EAAAA,EAAA,iCAAA,EAAA,EAAA,mCACAA,EAAAA,EAAA,4BAAA,EAAA,EAAA,8BACAA,EAAAA,EAAA,gCAAA,EAAA,EAAA,kCACAA,EAAAA,EAAA,gCAAA,EAAA,EAAA,kCACAA,EAAAA,EAAA,4CAAA,EAAA,EAAA,8CACAA,EAAAA,EAAA,6BAAA,EAAA,EAAA,+BACAA,EAAAA,EAAA,yCAAA,EAAA,EAAA,2CACAA,EAAAA,EAAA,0BAAA,EAAA,EAAA,4BACAA,EAAAA,EAAA,gCAAA,EAAA,EAAA,kCACAA,EAAAA,EAAA,yBAAA,EAAA,EAAA,2BACAA,EAAAA,EAAA,+BAAA,EAAA,EAAA,iCACAA,EAAAA,EAAA,2BAAA,EAAA,EAAA,6BACAA,EAAAA,EAAA,+BAAA,EAAA,EAAA,iCACAA,EAAAA,EAAA,yBAAA,EAAA,EAAA,2BACAA,EAAAA,EAAA,6BAAA,EAAA,EAAA,+BAzBUA,CA0BZ,EA1BYA,IAAoB,CAAA,CAAA,EA4BpBC,GAAZ,SAAYA,EAAgB,CAC1BA,OAAAA,EAAAA,EAAA,oBAAA,CAAA,EAAA,sBACAA,EAAAA,EAAA,mBAAA,CAAA,EAAA,qBACAA,EAAAA,EAAA,oBAAA,CAAA,EAAA,sBACAA,EAAAA,EAAA,iBAAA,CAAA,EAAA,mBACAA,EAAAA,EAAA,kBAAA,CAAA,EAAA,oBACAA,EAAAA,EAAA,oBAAA,CAAA,EAAA,sBACAA,EAAAA,EAAA,gBAAA,CAAA,EAAA,kBACAA,EAAAA,EAAA,qBAAA,CAAA,EAAA,uBACAA,EAAAA,EAAA,kBAAA,CAAA,EAAA,oBATUA,CAUZ,EAVYA,IAAgB,CAAA,CAAA,IC/C5B,IAMsBG,GAiCTC,GAKAC,GAkCAC,GA8BAC,GA5GbC,GAAAC,EAAA,KAAAC,KAEAC,QAIsBR,IAAyB,IAAA,CAAzC,MAAgBA,CAAyB,iDAAzBA,EAAyB,CAAA,gCAAzBA,EAAyBS,OAAA,CAAAC,aAAA,eAAAC,SAAA,UAAA,EAAAC,QAAA,CAAAC,aAAA,cAAA,CAAA,CAAA,CAAA,SAAzBb,CAAyB,GAAA,EAiClCC,GAAiC,IAAIa,GAChD,6CAA6C,EAIlCZ,GAAsC,IAAIY,GACrD,qFAAqF,EAiC1EX,GAA4E,CACvF,CAAGY,GAAqBC,uBAAuB,EAAG,oCAClD,CAAGD,GAAqBE,wBAAwB,EAAG,qCACnD,CAAGF,GAAqBG,4BAA4B,EAAG,yCACvD,CAAGH,GAAqBI,kBAAkB,EAAG,+BAC7C,CAAGJ,GAAqBK,sBAAsB,EAAG,mCACjD,CAAGL,GAAqBM,sBAAsB,EAAG,mCACjD,CAAGN,GAAqBO,0BAA0B,EAAG,uCACrD,CAAGP,GAAqBQ,sBAAsB,EAAG,mCACjD,CAAGR,GAAqBS,0BAA0B,EAAG,uCACrD,CAAGT,GAAqBU,wBAAwB,EAAG,qCACnD,CAAGV,GAAqBW,gCAAgC,EAAG,6CAC3D,CAAGX,GAAqBY,2BAA2B,EAAG,wCACtD,CAAGZ,GAAqBa,+BAA+B,EAAG,4CAC1D,CAAGb,GAAqBc,+BAA+B,EAAG,4CAC1D,CAAGd,GAAqBe,2CAA2C,EACjE,wDACF,CAAGf,GAAqBgB,4BAA4B,EAAG,yCACvD,CAAGhB,GAAqBiB,wCAAwC,EAC9D,qDACF,CAAGjB,GAAqBkB,yBAAyB,EAAG,sCACpD,CAAGlB,GAAqBmB,+BAA+B,EAAG,4CAC1D,CAAGnB,GAAqBoB,wBAAwB,EAAG,qCACnD,CAAGpB,GAAqBqB,8BAA8B,EAAG,2CACzD,CAAGrB,GAAqBsB,0BAA0B,EAAG,uCACrD,CAAGtB,GAAqBuB,8BAA8B,EAAG,2CACzD,CAAGvB,GAAqBwB,wBAAwB,EAAG,uCACnD,CAAGxB,GAAqByB,4BAA4B,EAAG,4CAG5CpC,GAAoE,CAC/E,CAAGqC,GAAkBC,oBAAoB,EAAG,0CAC5C,CAAGD,GAAkBE,kBAAkB,EAAG,wCAC1C,CAAGF,GAAkBG,sBAAsB,EAAG,4CAC9C,CAAGH,GAAkBI,qBAAqB,EAAG,2CAC7C,CAAGJ,GAAkBK,sBAAsB,EAAG,4CAC9C,CAAGL,GAAkBM,sBAAsB,EAAG,4CAC9C,CAAGN,GAAkBO,sBAAsB,EAAG,4CAC9C,CAAGP,GAAkBQ,uBAAuB,EAAG,6CAC/C,CAAGR,GAAkBS,uBAAuB,EAAG,6CAC/C,CAAGT,GAAkBU,uBAAuB,EAAG,6CAC/C,CAAGV,GAAkBW,yBAAyB,EAAG,+CACjD,CAAGX,GAAkBY,yBAAyB,EAAG,+CACjD,CAAGZ,GAAkBa,yBAAyB,EAAG,+CACjD,CAAGb,GAAkBc,sBAAsB,EAAG,4CAC9C,CAAGd,GAAkBe,sBAAsB,EAAG,4CAC9C,CAAGf,GAAkBgB,sBAAsB,EAAG,kFE3G1CC,EAAA,EAAA,SAAA,CAAA,EAEEC,EAAA,QAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,cAAAP,CAAA,CAA+B,CAAA,CAAA,EAGxCQ,EAAA,CAAA,EACFC,EAAA,yEADEC,EAAA,EAAAC,EAAA,IAAAX,EAAAY,UAAA,GAAA,GDtBR,OA8BaC,GA9BbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,mDAmBad,IAA6B,IAAA,CAApC,MAAOA,CAA6B,CAWxCe,aAAA,CAVS,KAAAC,cAAgB,GACf,KAAAC,UAAY,IAAIC,GAI1B,KAAAC,cAAoC,IAAIC,GAIvB,KAAAC,oBAAsBC,EAAOC,EAAmC,EAE/E,KAAKC,mBAAqB,KAAKL,cAAcM,aAAaC,KACxDC,GAAU,EAAE,EACZC,EAAWC,GACF,KAAKR,oBAAoBS,kBAAkBD,CAAU,CAC7D,CAAC,CAEN,CAEAnC,cAAcqC,EAAuC,CACnD,KAAKd,UAAUe,KAAKC,GAAA,GACfF,EACJ,CACH,iDAxBW/B,EAA6B,CAAA,+BAA7BA,EAA6BkC,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,sdC9B1CnD,EAAA,EAAA,MAAA,CAAA,EAAqD,EAAA,kBAAA,CAAA,EAEjDqD,EAAA,EAAA,QAAA,EAAA,CAAA,mBAOF1C,EAAA,EAAkB,EAGpBX,EAAA,EAAA,MAAA,CAAA,EAA6B,EAAA,IAAA,CAAA,EAEMU,EAAA,CAAA,mBAA+BC,EAAA,EAChEX,EAAA,EAAA,iBAAA,EACEsD,GAAA,GAAAC,GAAA,EAAA,EAAA,SAAA,EAAAC,EAAA,gBASF7C,EAAA,EAAkB,SAxBmBC,EAAA,EAAA6C,EAAA,YAAA,EAAA,EAAmB,gBAAA,EAAA,EAMpD7C,EAAA,EAAA8C,GAAA,cAAAC,EAAA,EAAA,EAAA,gCAAA,CAAA,EADAF,EAAA,cAAAL,EAAAlB,aAAA,EAQ6BtB,EAAA,CAAA,EAAAgD,EAAAD,EAAA,EAAA,EAAAP,EAAArB,aAAA,CAAA,EAE/BnB,EAAA,CAAA,EAAAiD,GAAAF,EAAA,GAAA,EAAAP,EAAAb,kBAAA,CAAA,kBDEAuB,EAAYC,GACZC,GACAC,GAAmBC,GAAAC,GAAAC,GACnBC,EAAeC,EACfC,GAAqBC,GACrBC,GACAC,GACAC,GAAcC,GACdC,GACAC,EAAW,EAAAC,OAAA,CAAA;4HAAA,CAAA,CAAA,CAAA,SAGFhE,CAA6B,GAAA,sBE9B1C,OAmBaiE,GAnBbC,GAAAC,EAAA,KAAAC,IACAC,qCAkBaJ,IAA+B,IAAA,CAAtC,MAAOA,CAA+B,CAM1C,IAAaK,aAAaC,EAAoC,CAC5D,KAAKC,eAAiBD,CACxB,CAIAE,YAAoBC,EAAsB,CAAtB,KAAAA,IAAAA,EAXZ,KAAAC,aAA8D,KAGtE,KAAAH,eAA+C,CAAA,CAQF,CAE7CI,iBAAe,CACb,GAAI,CAAC,KAAKC,WAAY,CACpBC,QAAQC,MAAM,mCAAmC,EACjD,MACF,CAEA,IAAMC,EAAmB,KAAKC,YAC9B,GAAI,CAACD,EAAkB,OACvBA,EAAiBE,MAAK,EACtB,IAAMP,EAAeK,EAAiBG,gBAA0C,KAAKN,UAAU,EAC/FF,EAAaS,SAASd,aAAe,KAAKE,eAC1C,KAAKG,aAAeA,EACpB,KAAKD,IAAIW,cAAa,CACxB,CAEAC,aAAW,CACT,KAAKX,cAAcY,QAAO,EAC1B,KAAKZ,aAAe,IACtB,iDAhCWV,GAA+BuB,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAA/BxB,EAA+ByB,UAAA,CAAA,CAAA,yBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,WAUiBE,EAAgB,iMAb/DC,EAAA,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,iBACFC,CAAY,EAAAC,cAAA,CAAA,CAAA,CAAA,SAEXlC,CAA+B,GAAA,8BCetCmC,EAAA,EAAA,eAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,0BAFiDC,EAAA,kBAAAC,EAAAC,MAAA,EAC/CC,EAAA,EAAAC,EAAA,IAAAH,EAAAC,OAAA,GAAA,GAnCR,IAoDaG,GApDbC,GAAAC,EAAA,KAAAC,IACAC,IAcAC,KACAC,KACAC,IACAC,KAKAC,KACAC,KACAC,KACAC,KACAC,KACAC,4BAwBad,IAAkC,IAAA,CAAzC,MAAOA,CAAkC,CAC7C,IAAae,QAAQC,EAAa,CAChC,KAAKC,SAASC,IAAIF,CAAK,CACzB,CACA,IAA4CG,SAASH,EAAc,CAC7DA,GACF,KAAKI,UAAUC,QAAO,CAE1B,CAiBA,IAAaC,aAAaN,EAAmC,CAC3D,KAAKO,cAAcL,IAAIF,CAAK,CAC9B,CAMAQ,YAA6BC,EAAwB,CAAxB,KAAAA,YAAAA,EAvBnB,KAAAC,aAAe,IAAIC,GAC7B,KAAAP,UAAuB,IAAIQ,GAAU,CAAA,CAAE,EAEvC,KAAAX,SAAWY,EAAO,EAAE,EACpB,KAAAC,iBAAmBD,EAAiB,CAAA,CAAE,EACtC,KAAAN,cAAgBM,EAAqC,CAAA,CAAE,EACvD,KAAAE,iBAAmBC,GAAS,KAAKZ,UAAUM,YAAY,EACvD,KAAAO,SAAwEC,EAAS,IAAK,CACpF,IAAID,EAAgE,CAAA,EACpEE,cAAOC,KAAK,KAAKL,iBAAgB,GAAM,CAAA,CAAE,EAAEM,QAASxC,GAAU,CAC5DoC,EAAW,CAAC,GAAGA,EAAU,CAAEpC,OAAAA,EAAQyC,YAAa,KAAKlB,UAAUmB,IAAI1C,CAAM,CAAgB,CAAE,CAC7F,CAAC,EACMoC,CACT,CAAC,EAMD,KAAAO,cAAgC,CAAA,EAEf,KAAAC,oBAAsBC,EAAOC,EAAmC,EAG/EC,GAAO,IAAK,CACV,IAAMC,EAAgB,KAAKtB,cAAa,EAAGuB,IAAK9B,GAAUA,EAAM+B,MAAM,EAChEC,EAAU,KAAKlB,iBAAgB,EACrCK,OAAOC,KAAK,KAAKhB,UAAUa,QAAQ,EAAEI,QAASxC,GAAU,CACjDmD,EAAQC,SAASpD,CAAM,GAC1B,KAAKuB,UAAU8B,cAAcrD,CAAM,CAEvC,CAAC,EACDmD,EAAQX,QAASxC,GAAU,CACzB,IAAIsD,EAAU,KAAK/B,UAAUmB,IAAI1C,CAAM,EAClCsD,IACHA,EAAU,KAAK1B,YAAY0B,QAAQN,EAAcI,SAASpD,CAAM,CAAC,EACjE,KAAKuB,UAAUgC,WAAWvD,EAAQsD,CAAO,GAEvCA,EAAQE,UACVF,EAAQG,SAAST,EAAcI,SAASpD,CAAM,CAAC,CAEnD,CAAC,CACH,CAAC,EAED,IAAM0D,EAAWC,GAAa,KAAKvC,QAAQ,EAE3C,KAAKuB,cAAciB,KACjB,KAAKrC,UAAUM,aACZgC,KAAKC,GAAqB,CAACC,EAAGC,IAAM1B,OAAOC,KAAKwB,CAAC,EAAEE,KAAI,EAAGC,KAAK,EAAE,IAAM5B,OAAOC,KAAKyB,CAAC,EAAEC,KAAI,EAAGC,KAAI,CAAE,CAAC,EACpGC,UAAWhD,GAAS,CACnB,IAAMiD,EAAuC,CAAA,EAC7C9B,OAAO+B,QAAQlD,CAAK,EAAEqB,QAAQ,CAAC,CAACxC,EAAQsE,CAAO,IAAK,CAC9CA,GACFF,EAAOR,KAAK,CAAEV,OAAQlD,CAAM,CAAE,CAElC,CAAC,EACD,KAAK6B,aAAa0C,KAAKH,CAAM,CAC/B,CAAC,EACHV,EACGG,KACCW,GAAQtD,GAAYA,EAAQuD,OAAS,CAAC,EACtCC,EAAWxD,GAAY,KAAK0B,oBAAoB+B,gBAAgBzD,EAAS,EAAE,CAAC,EAC5E0D,GAAY,CAAC,CAAC,EAEfT,UAAWhB,GAAW,CACrB,KAAKlB,iBAAiBZ,IAAI8B,CAAO,CACnC,CAAC,CAAC,CAER,CAEA0B,aAAW,CACT,KAAKlC,cAAcH,QAASsC,GAAiBA,EAAaC,YAAW,CAAE,CACzE,CAEAC,YAAU,CACR,KAAKzD,UAAU0D,MAAK,EACpB3C,OAAO8B,OAAO,KAAK7C,UAAUa,QAAQ,EAAEI,QAASc,GAAYA,EAAQG,SAAS,EAAK,CAAC,CACrF,iDAvFWtD,GAAkC+E,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAlChF,EAAkCiF,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,OAAA,CAAAnE,QAAA,UAAAI,SAAA,CAAA,EAAA,WAAA,WAIzBgE,EAAgB,EAAA7D,aAAA,cAAA,EAAA8D,QAAA,CAAA1D,aAAA,cAAA,EAAA2D,SAAA,CAAAC,GAjBzB,CACT,CAAEC,QAASC,GAA2BC,YAAaC,GAAW,IAAM1F,CAAkC,CAAC,CAAE,CAC1G,EAAA2F,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,gBAAA,WAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IARCxG,EAAA,EAAA,kBAAA,CAAA,EACE0G,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,EAGFzG,EAAA,SAJ6CC,EAAA,gBAAA,MAAA,EAAwB,YAAAsG,EAAA7E,SAAA,EACjCtB,EAAA,EAAAH,EAAA,UAAAsG,EAAAhE,SAAA,CAAA,kBASpCmE,EAAYC,GACZC,EACAC,GAAmBC,GAAAC,GAAAC,GAAAC,GACnBC,GACAC,GAAqBC,GACrBC,GACAC,GAAiBC,EAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAGRlH,CAAkC,GAAA,sBCpD/C,OA0BamH,GA1BbC,GAAAC,EAAA,KAAAC,IACAC,IAeAC,KACAC,wCASaN,IAAgC,IAAA,CAAvC,MAAOA,CAAgC,CAI3C,IAAaO,aAAaC,EAAoC,CAC5D,KAAKC,eAAiBD,CACxB,CAGA,IAAaE,SAASC,EAA2B,CAC/C,KAAKC,UAAYD,EACZ,KAAKE,eACV,KAAKA,aAAaC,SAASJ,SAAWC,EACxC,CAQAI,YAAoBC,EAAsB,CAAtB,KAAAA,IAAAA,EAnBpB,KAAAP,eAA+C,CAAA,EAarC,KAAAQ,aAAe,IAAIC,GAErB,KAAAL,aAA+D,KAEtD,KAAAM,WAAaC,EAAOC,EAAU,CAEF,CAE7CC,iBAAe,CACb,GAAI,CAAC,KAAKC,eAAgB,CACxBC,QAAQC,MAAM,oCAAoC,EAClD,MACF,CAEA,IAAMC,EAAmB,KAAKC,YAC9B,GAAI,CAACD,EAAkB,OAEvBA,EAAiBE,MAAK,EACtB,IAAMf,EAAea,EAAiBG,gBAA2C,KAAKN,eAAeO,WAAW,EAChHjB,EAAaC,SAASJ,SAAW,KAAKE,UACtCC,EAAaC,SAASP,aAAe,KAAKE,eAC1CI,EAAaC,SAASG,aACnBc,KAAKC,GAAmB,KAAKb,UAAU,CAAC,EACxCc,UAAWtB,GAAuC,CACjD,KAAKM,aAAaiB,KAAKvB,CAAK,CAC9B,CAAC,EACH,KAAKE,aAAeA,EACpB,KAAKG,IAAImB,cAAa,CACxB,CAEAC,YAAU,CACiB,KAAKT,aACZC,MAAK,EACvB,KAAKnB,eAAiB,CAAA,CACxB,CAEA4B,aAAW,CACT,KAAKxB,cAAcyB,QAAO,EAC1B,KAAKzB,aAAe,IACtB,iDAtDWb,GAAgCuC,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAhCxC,EAAgCyC,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,WAgBkBE,EAAgB,+LAnBlE,CAAC,CAAEC,QAASC,GAA2BC,YAAaC,GAAW,IAAMjD,CAAgC,CAAC,CAAE,CAAC,CAAA,EAAAkD,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,0BAAA,EAAA,CAAA,EAAAC,SAAA,SAAAV,EAAAC,EAAA,CAAAD,EAAA,GADxGW,EAAA,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,iBAEFC,CAAY,EAAAC,cAAA,CAAA,CAAA,CAAA,SAEX1D,CAAgC,GAAA,IC1B7C,IAGa2D,GAHbC,GAAAC,EAAA,KAAAC,KAGaH,GAAmC,CAC9C,CACEI,WAAYC,GAAkBC,qBAC9BC,MAAO,2CAET,CACEH,WAAYC,GAAkBG,mBAC9BD,MAAO,yCAET,CACEH,WAAYC,GAAkBI,sBAC9BF,MAAO,4CAET,CACEH,WAAYC,GAAkBK,uBAC9BH,MAAO,6CAET,CACEH,WAAYC,GAAkBM,uBAC9BJ,MAAO,6CAET,CACEH,WAAYC,GAAkBO,uBAC9BL,MAAO,6CAET,CACEH,WAAYC,GAAkBQ,uBAC9BN,MAAO,6CAET,CACEH,WAAYC,GAAkBS,wBAC9BP,MAAO,8CAET,CACEH,WAAYC,GAAkBU,wBAC9BR,MAAO,8CAET,CACEH,WAAYC,GAAkBW,wBAC9BT,MAAO,8CAET,CACEH,WAAYC,GAAkBY,0BAC9BV,MAAO,gDAET,CACEH,WAAYC,GAAkBa,0BAC9BX,MAAO,gDAET,CACEH,WAAYC,GAAkBc,0BAC9BZ,MAAO,gDAET,CACEH,WAAYC,GAAkBe,uBAC9Bb,MAAO,6CAET,CACEH,WAAYC,GAAkBgB,uBAC9Bd,MAAO,6CAET,CACEH,WAAYC,GAAkBiB,uBAC9Bf,MAAO,4CACR,8BE7DGgB,EAAA,CAAA,EACEC,EAAA,EAAA,aAAA,CAAA,EAAwCC,EAAA,CAAA,mBAA8BC,EAAA,8BAA1DC,EAAA,EAAAC,EAAA,QAAAC,EAAAC,UAAA,EAA4BH,EAAA,EAAAI,EAAAC,EAAA,EAAA,EAAAH,EAAAI,KAAA,CAAA,6BAN9CT,EAAA,EAAA,kBAAA,CAAA,EAA0G,EAAA,aAAA,CAAA,mBAKtGU,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,EAGFT,EAAA,EAAa,kBARmCE,EAAA,gBAAA,MAAA,EAE9CD,EAAA,EAAAC,EAAA,cAAAI,EAAA,EAAA,EAAA,+CAAA,CAAA,EAA2E,cAAAI,EAAAC,kBAAA,EAG1CV,EAAA,CAAA,EAAAC,EAAA,UAAAQ,EAAAE,mBAAA,CAAA,6BAMnCf,EAAA,CAAA,EACEC,EAAA,EAAA,kBAAA,EAAA,EACEe,EAAA,EAAA,wBAAA,EAAA,EACAf,EAAA,EAAA,uBAAA,EAAA,EACEe,EAAA,EAAA,QAAA,EAAA,mBAKAA,EAAA,EAAA,QAAA,EAAA,mBAKFb,EAAA,EACAa,EAAA,EAAA,wBAAA,KAAA,CAAA,EACFb,EAAA,8BAdmCC,EAAA,CAAA,EAAAC,EAAA,MAAAY,CAAA,EACXb,EAAA,EAAAC,EAAA,cAAAY,CAAA,EAGlBb,EAAA,EAAAc,GAAA,cAAAT,EAAA,EAAA,EAAA,6CAAA,CAAA,EACAJ,EAAA,cAAAQ,EAAAM,gBAAA,EAIAf,EAAA,CAAA,EAAAc,GAAA,cAAAT,EAAA,EAAA,EAAA,2CAAA,CAAA,EACAJ,EAAA,cAAAQ,EAAAO,cAAA,6BAbVpB,EAAA,CAAA,EACEW,EAAA,EAAAU,GAAA,GAAA,GAAA,eAAA,CAAA,6BAAejB,EAAA,EAAAC,EAAA,OAAAQ,EAAAS,oBAAA,CAAA,EAA6B,WAAAC,CAAA,6BAoB5CtB,EAAA,EAAA,kBAAA,EAAA,EACEe,EAAA,EAAA,QAAA,EAAA,EACFb,EAAA,kBAD8BC,EAAA,EAAAC,EAAA,cAAAQ,EAAAW,WAAA,GDjClC,IAqDaC,GArDbC,GAAAC,EAAA,KAAAC,IAaAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAA,oDA4Baf,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CAOzC,IAAagB,SAASC,EAA2B,CAC/C,KAAKC,MAAMC,OAAQD,GAAWE,GAAAC,GAAA,GAAKH,GAAL,CAAYF,SAAUC,CAAK,EAAG,EAC5D,KAAKK,kBACHL,IAAUM,GAAqBC,4BAC/BP,IAAUM,GAAqBE,+BAC3BC,GAAoBC,MACpBD,GAAoBE,MAC5B,CAEA,IAAaC,aAAaZ,EAAmC,CACvDA,GAAOa,OAAS,GAAKb,EAAM,CAAC,EAAEc,MAChC,KAAK1C,mBAAmB2C,SAASC,GAAkBC,oBAAoB,EACvEC,OAAOC,WAAW,IAAK,CACrB,GAAInB,GAAOa,OAAS,GAAKb,EAAM,CAAC,EAAEc,KAChC,GAAId,EAAMa,OAAS,GAAKb,EAAM,CAAC,EAAEc,KAC/B,KAAKrC,iBAAiBsC,SAASf,EAAM,CAAC,EAAEc,IAAI,EAC5C,KAAKpC,eAAeqC,SAASf,EAAM,CAAC,EAAEc,IAAI,MACrC,CACL,IAAMM,EAAQ,IAAIC,KAAKrB,EAAM,CAAC,EAAEc,IAAI,EAC9BQ,EAAMF,EAAMG,WAAU,EAAGC,SAAQ,EAAGC,SAAS,EAAG,GAAG,EACnDC,GAASN,EAAMO,YAAW,EAAK,GAAGH,SAAQ,EAAGC,SAAS,EAAG,GAAG,EAC5DG,EAAOR,EAAMS,eAAc,EACjC,KAAK/C,YAAYiC,SAAS,GAAGa,CAAI,IAAIF,CAAK,IAAIJ,CAAG,EAAE,CACrD,CAEJ,EAAG,CAAC,EACJ,KAAKQ,aAAaC,KAAK/B,CAAK,GACnBA,GAAOa,OAAS,GAAKb,EAAM,CAAC,EAAEgC,cACvCd,OAAOC,WAAW,IAAK,CACjBnB,GAAOa,OAAS,GAAKb,EAAM,CAAC,EAAEgC,aAChC,KAAK5D,mBAAmB2C,SAASf,EAAM,CAAC,EAAEgC,YAAa,CAAEC,UAAW,EAAI,CAAE,CAE9E,EAAG,CAAC,EACJ,KAAKH,aAAaC,KAAK/B,CAAK,EAEhC,CAEA,IAA4CkC,SAASlC,EAAc,CAC7DA,IACF,KAAKlB,YAAYqD,QAAO,EACxB,KAAK1D,iBAAiB0D,QAAO,EAC7B,KAAKzD,eAAeyD,QAAO,EAC3B,KAAK/D,mBAAmB+D,QAAO,EAEnC,CA4CAC,aAAA,CA9FA,KAAA/B,kBAAyCI,GAAoBE,OAE7D,KAAAV,MAA8CoC,EAAO,CACnDtC,SAAUO,GAAqBgC,mBAChC,EAgDS,KAAAR,aAAe,IAAIS,GAE7B,KAAAlE,mBAA2CmE,EAAS,IAAK,CACvD,IAAMzC,EAAW,KAAKE,MAAK,EAAGF,SAC9B,OACEA,IAAaO,GAAqBC,4BAClCR,IAAaO,GAAqBE,gCAElC,KAAKpC,mBAAmB2C,SAASC,GAAkBC,oBAAoB,EAChEwB,GAAmBC,OAAQC,GAAWA,EAAO9E,aAAemD,GAAkBC,oBAAoB,GAEpGwB,EACT,CAAC,EAED,KAAArE,mBAAqD,IAAIwE,GACvD5B,GAAkBC,qBAClB,CACE4B,YAAa,GACd,EAGH,KAAA/D,YAA+C,IAAI8D,GAAgCE,OAAW,CAAED,YAAa,EAAI,CAAE,EACnH,KAAApE,iBAAkD,IAAImE,GAA8BE,OAAW,CAAED,YAAa,EAAI,CAAE,EACpH,KAAAnE,eAAgD,IAAIkE,GAA8BE,OAAW,CAAED,YAAa,EAAI,CAAE,EAElH,KAAAE,UAAiC,KAAK3E,mBAAmB0D,aAAakB,KACpEC,GAAUjC,GAAkBC,oBAAoB,EAChDiC,EAAKlB,GACIA,IAAgBhB,GAAkBC,oBAC1C,CAAC,EAGJ,KAAArC,oBAAuC4D,EAAS,IAAK,CACnD,IAAMzC,EAAW,KAAKE,MAAK,EAAGF,SAC9B,OACEA,IAAaO,GAAqBC,4BAClCR,IAAaO,GAAqBE,8BAEtC,CAAC,EAED,KAAA2C,cAAgC,CAAA,EAG9B,KAAKA,cAAcC,KACjB,KAAKhF,mBAAmB0D,aACrBkB,KACCK,GAAKrD,GAAS,CACRA,IAAUgB,GAAkBC,sBAC9B,KAAKa,aAAaC,KAAK,CAAC,CAAEC,YAAahC,CAAK,CAAE,CAAC,CAEnD,CAAC,CAAC,EAEHsD,UAAS,CAAE,EAGhB,KAAKH,cAAcC,KACjB,KAAKtE,YAAYgD,aACdkB,KACCK,GAAKrD,GAAS,CACRA,GACF,KAAK8B,aAAaC,KAAK,CAAC,CAAEjB,KAAM,IAAIO,KAAKrB,CAAK,CAAC,CAAE,CAAC,CAEtD,CAAC,CAAC,EAEHsD,UAAS,CAAE,EAGhB,KAAKH,cAAcC,KACjBG,EAAc,CAAC,KAAK9E,iBAAiBqD,aAAc,KAAKpD,eAAeoD,YAAY,CAAC,EACjFkB,KACCK,GAAI,CAAC,CAACG,EAAWC,CAAO,IAAK,CACvBD,GAAaC,GACf,KAAK3B,aAAaC,KAAK,CAAC,CAAEjB,KAAM0C,CAAS,EAAI,CAAE1C,KAAM2C,CAAO,CAAE,CAAC,CAEnE,CAAC,CAAC,EAEHH,UAAS,CAAE,CAElB,CAEAI,aAAW,CACT,KAAKP,cAAcQ,QAASC,GAAiBA,EAAaC,YAAW,CAAE,CACzE,CAEAC,YAAU,CACR,KAAK1F,mBAAmB2C,SAASC,GAAkBC,oBAAoB,EACvE,KAAKnC,YAAYiC,SAAS+B,MAAS,CACrC,iDA5IW/D,EAA8B,CAAA,+BAA9BA,EAA8BgF,UAAA,CAAA,CAAA,wBAAA,CAAA,EAAAC,OAAA,CAAAjE,SAAA,WAAAa,aAAA,eAAAsB,SAAA,CAAA,EAAA,WAAA,WA4CrB+B,EAAgB,CAAA,EAAAC,QAAA,CAAApC,aAAA,cAAA,EAAAqC,SAAA,CAAAC,GAzDzB,CAAC,CAAEC,QAASC,GAA2BC,YAAaC,GAAW,IAAMzF,CAA8B,CAAC,CAAE,CAAC,EAAA0F,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,aAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,QAAA,2BAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,CAAA,EAAA,cAAA,aAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,YAAA,GAAA,EAAA,KAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,eAAA,GAAA,EAAA,cAAA,aAAA,EAAA,CAAA,aAAA,GAAA,EAAA,cAAA,aAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,WAAA,GAAA,OAAA,OAAA,EAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICxCpHvH,EAAA,EAAA,MAAA,CAAA,EACEU,EAAA,EAAA+G,GAAA,EAAA,EAAA,kBAAA,CAAA,EAA0G,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,eA8B1GhH,EAAA,EAAAiH,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAKF1H,EAAA,SAnC8EC,EAAA,EAAAC,EAAA,OAAA,CAAAoH,EAAAnG,oBAAA,CAAA,EAU7DlB,EAAA,EAAAC,EAAA,OAAAI,EAAA,EAAA,EAAAgH,EAAAhC,SAAA,CAAA,kBD+BbqC,EAAYC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GAAeC,GAAAC,GAAAC,GACfC,GACAC,GAAcC,GACdC,GAAqBC,GACrBC,GAAmBC,GAAAC,GAAAC,GACnBC,GACAC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,EAAA,EAAAC,OAAA,CAAA;4GAAA,CAAA,CAAA,CAAA,SAGV/H,CAA8B,GAAA,IErD3C,IAUagI,GAVbC,GAAAC,EAAA,KAAAC,IAEAC,QAQaJ,IAAiC,IAAA,CAAxC,MAAOA,CAAiC,CAN9CK,aAAA,CAUY,KAAAC,aAAe,IAAIC,GAH7B,IAAaC,aAAaC,EAA+B,CACvD,KAAKH,aAAaI,KAAK,CAAA,CAAE,CAC3B,iDAHWV,EAAiC,CAAA,+BAAjCA,EAAiCW,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,OAAA,CAAAJ,aAAA,cAAA,EAAAK,QAAA,CAAAP,aAAA,cAAA,EAAAQ,SAAA,CAAAC,GAHjC,CAAA,CAAE,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,EAAAC,aAAA,CACHC,CAAY,EAAAC,cAAA,CAAA,CAAA,CAAA,SAEXvB,CAAiC,GAAA,ICV9C,IAUawB,GAVbC,GAAAC,EAAA,KAAAC,IAEAC,YAQaJ,IAAsC,IAAA,CAA7C,MAAOA,CAAsC,iDAAtCA,EAAsC,CAAA,+BAAtCA,EAAsCK,UAAA,CAAA,CAAA,uCAAA,CAAA,EAAAC,SAAA,CAAAC,GAHtC,CAAA,CAAE,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IADDE,EAAA,EAAA,GAAA,EAAGC,EAAA,CAAA,mBAA0DC,EAAA,SAA1DC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,wCAAA,CAAA,kBAELC,EAAcC,EAAeC,CAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAE5BtB,CAAsC,GAAA,8BCuB3CuB,EAAA,EAAA,mBAAA,CAAA,EAA6EC,EAAA,CAAA,EAAYC,EAAA,0BAA7BC,EAAA,QAAAC,CAAA,EAAiBC,EAAA,EAAAC,EAAAF,CAAA,GAjCrF,IAgDaG,GAhDbC,GAAAC,EAAA,KAAAC,IACAC,IAYAC,KACAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,4BA0Bad,IAA+B,IAAA,CAAtC,MAAOA,CAA+B,CAC1C,IAAae,QAAQC,EAAa,CAChC,KAAKC,SAASC,IAAIF,CAAK,CACzB,CACA,IAA4CG,SAASH,EAAc,CAC7DA,GACF,KAAKI,YAAYC,QAAO,CAE5B,CASA,IAAaC,aAAaN,EAAmC,CAC3D,KAAKO,cAAcL,IAAIF,CAAK,CAC9B,CAMAQ,aAAA,CAfU,KAAAC,aAAe,IAAIC,GAC7B,KAAAN,YAA2B,IAAIO,GAAY,EAAE,EAE7C,KAAAV,SAAWW,EAAO,EAAE,EACpB,KAAAC,iBAAmBD,EAAiB,CAAA,CAAE,EACtC,KAAAL,cAAgBK,EAAqC,CAAA,CAAE,EAMvD,KAAAE,cAAgC,CAAA,EAEf,KAAAC,oBAAsBC,EAAOC,EAAmC,EAG/EC,GAAO,IAAK,CACV,IAAMZ,EAAe,KAAKC,cAAa,EACnCD,EAAaa,OAAS,GACxB,KAAKf,YAAYgB,SAASd,EAAa,CAAC,EAAEe,MAAM,CAEpD,CAAC,EACD,IAAMC,EAAWC,GAAa,KAAKtB,QAAQ,EAE3C,KAAKa,cAAcU,KACjB,KAAKpB,YAAYK,aAAagB,KAAKC,GAAoB,CAAE,EAAEC,UAAW3B,GAAS,CAC7E,KAAKS,aAAamB,KAAK,CAAC,CAAEP,OAAQrB,CAAK,CAAE,CAAC,CAC5C,CAAC,EACDsB,EACGG,KACCI,GAAQ9B,GAAYA,EAAQoB,OAAS,CAAC,EACtCW,EAAW/B,GAAY,KAAKgB,oBAAoBgB,gBAAgBhC,EAAS,EAAE,CAAC,EAC5EiC,GAAY,CAAC,CAAC,EAEfL,UAAWM,GAAW,CACrB,KAAKpB,iBAAiBX,IAAI+B,CAAO,CACnC,CAAC,CAAC,CAER,CAEAC,aAAW,CACT,KAAKpB,cAAcqB,QAASC,GAAiBA,EAAaC,YAAW,CAAE,CACzE,CAEAC,YAAU,CACR,KAAKlC,YAAYmC,MAAK,CACxB,iDAxDWvD,EAA+B,CAAA,+BAA/BA,EAA+BwD,UAAA,CAAA,CAAA,yBAAA,CAAA,EAAAC,OAAA,CAAA1C,QAAA,UAAAI,SAAA,CAAA,EAAA,WAAA,WAItBuC,EAAgB,EAAApC,aAAA,cAAA,EAAAqC,QAAA,CAAAlC,aAAA,cAAA,EAAAmC,SAAA,CAAAC,GAfzB,CAAC,CAAEC,QAASC,GAA2BC,YAAaC,GAAW,IAAMjE,CAA+B,CAAC,CAAE,CAAC,EAAAkE,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IANjH9E,EAAA,EAAA,kBAAA,CAAA,EAAsE,EAAA,kBAAA,CAAA,EAElEgF,EAAA,EAAAC,GAAA,EAAA,EAAA,mBAAA,CAAA,EACF/E,EAAA,EAAkB,SAHyBC,EAAA,gBAAA,MAAA,EAC1BE,EAAA,EAAAF,EAAA,cAAA4E,EAAApD,WAAA,EACsBtB,EAAA,EAAAF,EAAA,UAAA4E,EAAA3C,iBAAA,CAAA,kBAMzC8C,EAAYC,GACZC,EACAC,GAAmBC,GAAAC,GACnBC,GACAC,GAAqBC,GACrBC,GACAC,GAAcC,GAAAC,EAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAGLxF,CAA+B,GAAA,IChD5C,IAEayF,GAEAC,GAJbC,GAAAC,EAAA,KAAAC,KAEaJ,GAAqB,IAErBC,GAAyB,CACpCI,GAAqBC,2BACrBD,GAAqBE,8BAA8B,8BCqC7CC,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,0BAFqDC,EAAA,QAAAC,CAAA,EACnDC,EAAA,EAAAC,EAAA,IAAAF,EAAA,GAAA,GA5CV,IA2DaG,GA3DbC,GAAAC,EAAA,KAAAC,IACAC,IAcAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,0CAmCad,IAAgC,IAAA,CAAvC,MAAOA,CAAgC,CAC3C,IAAae,QAAQC,EAAa,CAChC,KAAKC,SAASC,IAAIF,CAAK,CACzB,CAQA,IAAaG,aAAaH,EAAmC,CACvDA,GAAOI,OAAS,GAAKJ,EAAM,CAAC,EAAEK,QAChC,KAAKC,YAAYC,SAASP,EAAM,CAAC,EAAEK,MAAM,CAE7C,CACA,IAA4CG,SAASR,EAAc,CAC7DA,GACF,KAAKM,YAAYG,QAAO,CAE5B,CAMAC,aAAA,CAtBU,KAAAC,aAAe,IAAIC,GAC7B,KAAAN,YAAmC,IAAIO,GAAoB,GAAI,CAAEC,YAAa,EAAI,CAAE,EAEpF,KAAAC,WAAaC,GAAS,KAAKV,YAAYK,aAAc,CAAER,aAAc,EAAE,CAAE,EACzE,KAAAF,SAAWgB,EAAO,EAAE,EACpB,KAAAC,iBAAmBD,EAAiB,CAAA,CAAE,EAatC,KAAAE,cAAgC,CAAA,EAChC,KAAAC,gBAAoCC,EAAS,IAAM,KAAKH,iBAAgB,CAAE,EAEzD,KAAAI,oBAAsBC,EAAOC,EAAmC,EAE/EC,GAAO,IAAK,CACV,IAAMzB,EAAQ,KAAKe,WAAU,EAC7B,GAAIf,IAAU,GAAI,CAChB,KAAKW,aAAae,KAAK,CAAA,CAAE,EACzB,MACF,CACA,KAAKf,aAAae,KAAK,CAAC,CAAErB,OAAQL,CAAK,CAAE,CAAC,CAC5C,CAAC,EAED,IAAM2B,EAAcC,GAAa,KAAKb,UAAU,EAC1Cc,EAAWD,GAAa,KAAK3B,QAAQ,EAE3C,KAAKkB,cAAcW,KACjBC,EAAc,CAACJ,EAAaE,CAAQ,CAAC,EAClCG,KACCC,GAAO,CAAC,CAAA,CAAGlC,CAAO,IAAM,CAAC,CAACA,CAAO,EACjCmC,GAAaC,EAAkB,EAC/BC,EAAU,CAAC,CAACrB,EAAYhB,CAAO,IAAM,KAAKuB,oBAAoBe,gBAAgBtC,EAASgB,CAAU,CAAC,EAClGuB,GAAY,CAAC,CAAC,EAEfC,UAAWC,GAAY,KAAKtB,iBAAiBhB,IAAIsC,CAAO,CAAC,CAAC,CAEjE,CAEAC,aAAW,CACT,KAAKtB,cAAcuB,QAASC,GAAiBA,EAAaC,YAAW,CAAE,CACzE,CAEAC,YAAU,CACR,KAAKvC,YAAYC,SAAS,EAAE,CAC9B,iDAzDWvB,EAAgC,CAAA,+BAAhCA,EAAgC8D,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,OAAA,CAAAhD,QAAA,UAAAI,aAAA,eAAAK,SAAA,CAAA,EAAA,WAAA,WAgBvBwC,EAAgB,CAAA,EAAAC,QAAA,CAAAtC,aAAA,cAAA,EAAAuC,SAAA,CAAAC,GA1BzB,CAAC,CAAEC,QAASC,GAA2BC,YAAaC,GAAW,IAAMvE,CAAgC,CAAC,CAAE,CAAC,EAAAwE,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,CAAA,OAAA,OAAA,WAAA,GAAA,cAAA,oBAAA,EAAA,cAAA,cAAA,iBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IAhBlHpF,EAAA,EAAA,kBAAA,CAAA,EACEsF,EAAA,EAAA,QAAA,CAAA,mBAQAtF,EAAA,EAAA,mBAAA,KAAA,CAAA,EACEuF,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,CAAA,EAGFtF,EAAA,EAAmB,mBAbwBC,EAAA,gBAAA,MAAA,EAEzCE,EAAA,EAAAF,EAAA,cAAAsF,EAAA,EAAA,EAAA,kDAAA,CAAA,EAA8E,cAAAJ,EAAAxD,WAAA,EAGnD,kBAAA6D,CAAA,EAKIrF,EAAA,CAAA,EAAAF,EAAA,UAAAkF,EAAA1C,gBAAA,CAAA,kBAQnCgD,EAAYC,GACZC,EAAeC,EACfC,GAAmBC,GAAAC,GAAAC,GACnBC,GAAcC,GACdC,GAAqBC,GACrBC,GAAqBC,GAAAC,GAAAC,EAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAGZpG,CAAgC,GAAA,IC3D7C,OA2BMqG,GAsBOC,GAjDbC,GAAAC,EAAA,KAAAC,IACAC,IAaAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,sCAMMb,GAAiB,IAsBVC,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CAOzC,IAAaa,YAAYC,EAAa,CACpC,KAAKC,aAAaC,IAAIF,CAAK,CAC7B,CAEA,IAAaG,aAAaH,EAAmC,CAC3D,IAAMI,EAAiBJ,EAAMK,IAAKC,GAAQA,GAAKC,QAAU,EAAE,EAAEC,OAAQC,GAAQA,EAAIC,OAAS,CAAC,EAC3F,KAAKC,YAAYC,SAASR,CAAI,CAChC,CAGA,IAA4CS,SAASb,EAAc,CAC7DA,GACF,KAAKW,YAAYG,QAAO,CAE5B,CAQAC,aAAA,CA5BA,KAAA9B,eAAiBA,GAEjB,KAAAgB,aAAee,EAAe,EAAE,EAChC,KAAAC,WAAaD,EAAe,EAAE,EAC9B,KAAAE,cAAgBF,EAAiB,CAAA,CAAE,EAW1B,KAAAG,QAAyB,KAOxB,KAAAC,aAAe,IAAIC,GAC7B,KAAAV,YAAqC,IAAIW,GAAsB,CAAA,EAAI,CAAEC,YAAa,EAAI,CAAE,EAExF,KAAAC,cAAgC,CAAA,EAEf,KAAAC,oBAAsBC,EAAOC,EAAmC,EAE/E,IAAMC,EAAWC,GAAS,KAAKlB,YAAYS,aAAc,CAAEjB,aAAc,CAAA,CAAE,CAAE,EAC7E2B,GAAO,IAAK,CACV,IAAMC,EAAeH,EAAQ,EAAGvB,IAAiCI,IAAS,CAAEF,OAAQE,CAAG,EAAG,EAC1F,KAAKW,aAAaY,KAAKD,CAAY,CACrC,CAAC,EAWD,IAAME,EATWC,GACfC,EAAS,KACA,CACLlB,WAAY,KAAKA,WAAU,EAC3BlB,YAAa,KAAKE,aAAY,GAEjC,CAAC,EAG4BmC,KAC9B5B,GAAQ6B,GAAYA,EAAQtC,YAAYW,OAAS,CAAC,EAClD4B,GAAoB,EACpBC,GAAaC,EAAkB,EAC/BC,EAAWC,GAAM,KAAKjB,oBAAoBkB,gBAAgBD,EAAE3C,YAAa2C,EAAEzB,UAAU,CAAC,CAAC,EAGzF,KAAKO,cAAcoB,KAAKX,EAAeY,UAAW3B,GAAkB,KAAKA,cAAchB,IAAIgB,CAAa,CAAC,CAAC,CAC5G,CAEA4B,aAAW,CACT,KAAKtB,cAAcuB,QAASC,GAAiBA,EAAaC,YAAW,CAAE,CACzE,CAEAC,kBAAkBjC,EAAkB,CAClC,KAAKA,WAAWf,IAAIe,CAAU,CAChC,CAEAkC,YAAU,CACR,KAAKxC,YAAYC,SAAS,CAAA,CAAE,CAC9B,iDAjEW1B,EAA8B,CAAA,+BAA9BA,EAA8BkE,UAAA,CAAA,CAAA,wBAAA,CAAA,EAAAC,OAAA,CAAAtD,YAAA,cAAAI,aAAA,eAAAgB,QAAA,UAAAN,SAAA,CAAA,EAAA,WAAA,WAiBrByC,EAAgB,CAAA,EAAAC,QAAA,CAAAnC,aAAA,cAAA,EAAAoC,SAAA,CAAAC,GApBzB,CAAC,CAAEC,QAASC,GAA2BC,YAAaC,GAAW,IAAM3E,CAA8B,CAAC,CAAE,CAAC,EAAA4E,EAAA,EAAAC,MAAA,EAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,gBAAA,MAAA,EAAA,CAAA,EAAA,aAAA,cAAA,cAAA,YAAA,gBAAA,aAAA,mBAAA,SAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IAdhHE,EAAA,EAAA,kBAAA,CAAA,EAAsC,EAAA,kBAAA,CAAA,mBAIlCC,EAAA,aAAA,SAAAC,EAAA,CAAA,OAAcH,EAAAlB,kBAAAqB,CAAA,CAAyB,CAAA,EAHzCC,EAAA,EAUAC,EAAA,EAAA,iBAAA,EACFD,EAAA,cAVIE,EAAA,EAAAC,EAAA,cAAAC,EAAA,EAAA,EAAA,kDAAA,CAAA,EAA8E,cAAAR,EAAAzD,WAAA,EACnD,YAAAyD,EAAAnF,cAAA,EAEC,iBAAA4F,EAAAT,EAAAlD,cAAA,KAAA,MAAA2D,IAAAC,OAAAD,EAAAE,GAAA,EAAAC,EAAA,CAAA,EACW,aAAA,EAAA,EACpB,mBAAA,EAAA,EACM,UAAAZ,EAAAjD,OAAA,kBAOrB8D,EAAcC,EAAeC,EAAEC,GAAmBC,GAAAC,GAAAC,GAAEC,GAAgBC,GAAEC,GAAqBC,EAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAE1F1G,CAA8B,GAAA,8BChBnC2G,EAAA,EAAA,mBAAA,CAAA,EAA6EC,EAAA,CAAA,EAAYC,EAAA,0BAA7BC,EAAA,QAAAC,CAAA,EAAiBC,EAAA,EAAAC,EAAAF,CAAA,GAjCrF,IAiDaG,GAjDbC,GAAAC,EAAA,KAAAC,IACAC,IAYAC,KACAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,4BA2Bad,IAAiC,IAAA,CAAxC,MAAOA,CAAiC,CAC5C,IAAae,QAAQC,EAAa,CAChC,KAAKC,SAASC,IAAIF,CAAK,CACzB,CASA,IAAaG,aAAaH,EAAmC,CAC3D,KAAKI,cAAcF,IAAIF,CAAK,CAC9B,CACA,IAA4CK,SAASL,EAAc,CAC7DA,GACF,KAAKM,YAAYC,QAAO,CAE5B,CAMAC,aAAA,CApBU,KAAAC,aAAe,IAAIC,GAC7B,KAAAJ,YAA2B,IAAIK,GAAY,EAAE,EAE7C,KAAAV,SAAWW,EAAO,EAAE,EACpB,KAAAC,iBAAmBD,EAAiB,CAAC,OAAQ,OAAO,CAAC,EACrD,KAAAR,cAAgBQ,EAAqC,CAAA,CAAE,EAWvD,KAAAE,cAAgC,CAAA,EAEf,KAAAC,oBAAsBC,EAAOC,EAAmC,EAG/EC,GAAO,IAAK,CACV,IAAMf,EAAe,KAAKC,cAAa,EACnCD,EAAagB,OAAS,GACxB,KAAKb,YAAYc,SAASjB,EAAa,CAAC,EAAEkB,QAAU,OAAS,OAAO,CAExE,CAAC,EACD,IAAMC,EAAWC,GAAa,KAAKtB,QAAQ,EAE3C,KAAKa,cAAcU,KACjB,KAAKlB,YAAYG,aAAagB,KAAKC,GAAoB,CAAE,EAAEC,UAAW3B,GAAS,CACzEA,IAAU,OACZ,KAAKS,aAAamB,KAAK,CAAC,CAAEP,QAAS,EAAI,CAAE,CAAC,EACjCrB,IAAU,SACnB,KAAKS,aAAamB,KAAK,CAAC,CAAEP,QAAS,EAAK,CAAE,CAAC,CAE/C,CAAC,EACDC,EACGG,KACCI,GAAQ9B,GAAYA,EAAQoB,OAAS,CAAC,EACtCW,EAAW/B,GAAY,KAAKgB,oBAAoBgB,gBAAgBhC,EAAS,EAAE,CAAC,EAC5EiC,GAAY,CAAC,CAAC,EAEfL,UAAWM,GAAW,CACrB,KAAKpB,iBAAiBX,IAAI+B,CAAO,CACnC,CAAC,CAAC,CAER,CAEAC,aAAW,CACT,KAAKpB,cAAcqB,QAASC,GAAiBA,EAAaC,YAAW,CAAE,CACzE,CAEAC,YAAU,CACR,KAAKhC,YAAYiC,MAAK,CACxB,iDA5DWvD,EAAiC,CAAA,+BAAjCA,EAAiCwD,UAAA,CAAA,CAAA,2BAAA,CAAA,EAAAC,OAAA,CAAA1C,QAAA,UAAAI,aAAA,eAAAE,SAAA,CAAA,EAAA,WAAA,WAexBqC,EAAgB,CAAA,EAAAC,QAAA,CAAAlC,aAAA,cAAA,EAAAmC,SAAA,CAAAC,GA1BzB,CAAC,CAAEC,QAASC,GAA2BC,YAAaC,GAAW,IAAMjE,CAAiC,CAAC,CAAE,CAAC,EAAAkE,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,CAAA,EAAA,cAAA,EAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IAPnH9E,EAAA,EAAA,kBAAA,CAAA,EAAsE,EAAA,kBAAA,CAAA,EAElEgF,EAAA,EAAAC,GAAA,EAAA,EAAA,mBAAA,CAAA,EACF/E,EAAA,EAAkB,SAHyBC,EAAA,gBAAA,MAAA,EAC1BE,EAAA,EAAAF,EAAA,cAAA4E,EAAAlD,WAAA,EACsBxB,EAAA,EAAAF,EAAA,UAAA4E,EAAA3C,iBAAA,CAAA,kBAOzC8C,EAAYC,GACZC,EACAC,GAAmBC,GAAAC,GACnBC,GACAC,GAAqBC,GACrBC,GACAC,GAAcC,GAAAC,EAAA,EAAAC,OAAA,CAAA;yHAAA,CAAA,CAAA,CAAA,SAGLxF,CAAiC,GAAA,ICjCxC,SAAUyF,IAAkB,CAChC,OAAOC,KAAKC,OAAM,EAAGC,SAAS,EAAE,EAAEC,UAAU,CAAC,CAC/C,CAlBA,IAAAC,GAAAC,EAAA,kCEQUC,EAAA,EAAA,GAAA,EAIEC,EAAA,CAAA,EACFC,EAAA,oDADEC,EAAA,EAAAC,EAAA,IAAAC,EAAAC,KAAA,GAAA,yBAIgCL,EAAA,EAAA,SAAA,4BAQpCD,EAAA,EAAA,aAAA,EAAA,EAIC,EAAA,OAAA,EAAA,EACwDC,EAAA,CAAA,EAAwBC,EAAA,EAC/EF,EAAA,EAAA,OAAA,EAAA,EAAkDC,EAAA,CAAA,EAA4CC,EAAA,EAAO,0BAHrGK,EAAA,QAAAC,EAAAC,WAAA,EAEuDN,EAAA,CAAA,EAAAO,EAAAF,EAAAG,WAAA,EACLR,EAAA,CAAA,EAAAS,GAAA,IAAAJ,EAAAF,KAAA,IAAAE,EAAAK,YAAA,GAAA,yBAKtDC,EAAA,EAAA,YAAA,wBAeAA,EAAA,EAAA,YAAA,wBAiBAA,EAAA,EAAA,YAAA,4BAIFd,EAAA,EAAA,aAAA,EAAA,EACEC,EAAA,CAAA,EACFC,EAAA,0BAFqDK,EAAA,QAAAQ,CAAA,EACnDZ,EAAA,EAAAC,EAAA,IAAAW,EAAA,GAAA,GDxEN,IAwCaC,GA8BAC,GAtEbC,GAAAC,EAAA,KAAAC,IAgBAC,KAKAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAA,KAEAC,KACAC,6EAEapB,GAAuB,KA8BvBC,IAA+B,IAAA,CAAtC,MAAOA,CAA+B,CAC1C,IAAaoB,QAAQC,EAAa,CAChC,KAAKC,SAASC,IAAIF,CAAK,CACzB,CACA,IAAaG,aAAaH,EAAmC,CAC3D,GAAIA,GAAOI,OAAS,GAAKJ,EAAM,CAAC,EAAEK,MAAO,CACvC,IAAMC,EAAsBN,EAAM,CAAC,EAAEK,MAAME,gBAAkB,GACvDC,EAAkBR,EAAM,CAAC,EAAEK,MAAMI,gBAAkB/B,GACnDgC,EAAoBV,EAAM,CAAC,EAAEK,MAAMM,WAAa,GACtD,KAAKC,mBAAmBC,SAASP,CAAmB,EACpD,KAAKQ,eAAeD,SAASL,CAAe,EAC5C,KAAKO,mBAAmBC,gBAAgBR,CAA8B,EACtE,KAAKS,iBAAiBJ,SAASH,CAAiB,EAChD,IAAMQ,EAAY,CAChBT,eAAgBD,EAChBD,eAAgBD,EAChBK,UAAWD,GAEb,KAAKS,eAAejB,IAAIgB,CAAS,CACnC,CACF,CAEA,IAA4CE,SAASpB,EAAc,CAC7DA,GACF,KAAKqB,eAAeC,QAAO,CAE/B,CAqDAC,YACmBR,EACRS,EAAsB,CADd,KAAAT,mBAAAA,EACR,KAAAS,WAAAA,EArDD,KAAAC,aAAe,IAAIC,GAE7B,KAAAC,qBAAuB,IAAIC,GAAY,EAAE,EACjC,KAAAd,eAAiB,IAAIc,GAAY,IAAI,EACrC,KAAAhB,mBAAqB,IAAIgB,GAAY,GAAI,CAAEC,YAAa,EAAI,CAAE,EAC9D,KAAAZ,iBAAmB,IAAIW,GAAY,EAAE,EAC7C,KAAAP,eAA4B,IAAIS,GAAU,CACxCC,QAAS,KAAKjB,eACdkB,YAAa,KAAKpB,mBAClBD,UAAW,KAAKM,iBACjB,EAED,KAAAgB,oBAA8BC,GAAkB,EAEhD,KAAAC,gBAAkBC,EAAS,IAClB,KAAKrB,mBAAmBsB,iBAAiB,KAAKlB,eAAc,EAAGV,cAA6B,CACpG,EACD,KAAA6B,2BAA6BF,EAAS,IAAM,KAAKD,gBAAe,GAAI9D,aAAe,EAAE,EACrF,KAAAkE,gBAA+C,KAAKxB,mBAAmBwB,gBAAgBC,KACrFC,GAAoB,EACpBC,GAAY,CAAEC,SAAU,GAAMC,WAAY,CAAC,CAAE,CAAC,EAEhD,KAAAC,wBAAuD,KAAKlB,qBAAqBF,aAAae,KAC5FM,GAAU,EAAE,EACZC,GAAe,KAAKR,eAAe,EACnCS,EAAI,CAAC,CAACC,EAAaC,CAAc,IAAK,CACpC,IAAMC,EAAOF,GAAe,GAC5B,OAAOC,EAAeE,OAAQC,GAE1BA,EAAEhF,YAAYiF,SAASH,CAAI,GAC3BE,EAAElF,YAAYoF,YAAW,EAAGD,SAASH,GAAMI,YAAW,CAAE,GACxDF,EAAE9E,YAAYgF,YAAW,EAAGD,SAASH,GAAMI,YAAW,CAAE,CAE3D,CACH,CAAC,CAAC,EAGI,KAAApC,eAAiBqC,EAA6B,CACpD/C,eAAgB,KAChBF,eAAgB,GAChBI,UAAW,GACY,EAEzB,KAAA8C,WAAaC,GAAS,KAAKrC,eAAeI,aAAc,CAAEtB,aAAc,EAAE,CAAE,EAC5E,KAAAF,SAAWuD,EAAO,EAAE,EACpB,KAAAG,iBAAmBH,EAAiB,CAAA,CAAE,EAEtC,KAAAI,cAAgC,CAAA,EAChC,KAAAC,gBAAoCzB,EAAS,IAAM,KAAKuB,iBAAgB,CAAE,EAEzD,KAAAG,oBAAsBC,EAAOC,EAAmC,EAK/EC,GAAO,IAAK,CACV,IAAMjE,EAAQ,KAAKyD,WAAU,EAC7B,GAAIzD,IAAU,GAAI,CAChB,KAAKyB,aAAayC,KAAK,CAAA,CAAE,EACzB,MACF,CACA,KAAKzC,aAAayC,KAAK,CACrB,CACE7D,MAAO,CAAEI,eAAgBT,GAAO+B,QAASxB,eAAgBP,GAAOgC,YAAarB,UAAWX,GAAOW,SAAS,EACzG,CACF,CACH,CAAC,EAED,IAAMwD,EAAcC,GAAa,KAAKX,UAAU,EAC1CY,EAAWD,GAAa,KAAKnE,QAAQ,EAE3C,KAAK2D,cAAcU,KACjBC,EAAc,CAACJ,EAAaE,CAAQ,CAAC,EAClC7B,KACCY,GAAO,CAAC,CAAA,CAAGrD,CAAO,IAAM,CAAC,CAACA,CAAO,EACjCyE,GAAaC,EAAkB,EAC/BC,EAAU,CAAC,CAACjB,EAAY1D,CAAO,IAAK,CAClC,IAAM4E,EAAe,KAAKC,kBAAkBnB,CAAU,EACtD,OAAO,KAAKK,oBAAoBe,gBAAgB9E,EAAS4E,CAAY,CACvE,CAAC,EACDjC,GAAY,CAAC,CAAC,EAEfoC,UAAWC,GAAY,KAAKpB,iBAAiBzD,IAAI6E,CAAO,CAAC,CAAC,CAEjE,CAEAC,UAAQ,CACN,KAAK3D,eAAeI,aACjBe,KACCyC,GAAmB,KAAKzD,UAAU,EAClC0D,GAAKC,GAAU,CACb,KAAKhE,eAAejB,IAAI,CACtBO,eAAgB0E,GAAQpD,QACxBxB,eAAgB4E,GAAQnD,YACxBrB,UAAWwE,GAAQxE,UACpB,CACH,CAAC,CAAC,EAEHmE,UAAS,CACd,CAEAF,kBAAkBQ,EAAyB,CACzC,GAAI,CAACA,EACH,OAAOA,EAET,IAAIC,EAAS,GAIb,MAHI,YAAaD,GAAeA,EAAY,QAAWhF,OAAS,IAC9DiF,GAAU,KAAKlD,gBAAe,GAAI9D,aAEhC,gBAAiB+G,GAAeA,EAAY,YAAehF,OAAS,GACtEiF,GAAUD,EAAY,YACfC,GAEF,EACT,CAEAC,aAAW,CACT,KAAK1B,cAAc2B,QAASC,GAAiBA,EAAaC,YAAW,CAAE,CACzE,CAEAC,YAAU,CACR,KAAK5E,eAAeD,SAAS,IAAI,EACjC,KAAKD,mBAAmBC,SAAS,EAAE,EACnC,KAAKI,iBAAiBJ,SAAS,EAAE,CACnC,iDAxJWlC,GAA+BgH,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAA/BlH,EAA+BmH,UAAA,CAAA,CAAA,yBAAA,CAAA,EAAAC,OAAA,CAAAhG,QAAA,UAAAI,aAAA,eAAAiB,SAAA,CAAA,EAAA,WAAA,WAsBtB4E,EAAgB,CAAA,EAAAC,QAAA,CAAAxE,aAAA,cAAA,EAAAyE,SAAA,CAAAC,GApCzB,CACTC,GACAR,GACA,CACES,QAASC,GACTC,YAAaC,GAAW,IAAM7H,CAA+B,GAE/D,CACE0H,QAASI,GACTC,SAAU,CAAEC,kBAAmB,4CAA4C,EAC5E,CACF,EAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,gBAAA,WAAA,EAAA,CAAA,EAAA,WAAA,WAAA,sBAAA,EAAA,CAAA,kBAAA,UAAA,EAAA,aAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,mBAAA,sBAAA,aAAA,EAAA,CAAA,QAAA,8BAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,WAAA,WAAA,cAAA,EAAA,CAAA,YAAA,GAAA,EAAA,0BAAA,EAAA,CAAA,WAAA,GAAA,kBAAA,cAAA,YAAA,GAAA,OAAA,MAAA,EAAA,gBAAA,cAAA,iBAAA,EAAA,CAAA,EAAA,YAAA,WAAA,yBAAA,EAAA,eAAA,EAAA,CAAA,WAAA,GAAA,kBAAA,YAAA,YAAA,GAAA,OAAA,MAAA,EAAA,gBAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,8BAAA,EAAA,OAAA,EAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WCnEHvJ,EAAA,EAAA,kBAAA,CAAA,EAAiG,EAAA,eAAA,EAChF,EAAA,kBAAA,CAAA,EAIZ,EAAA,aAAA,CAAA,mBAEGA,EAAA,EAAA,oBAAA,EACEyJ,EAAA,EAAAC,GAAA,EAAA,EAAA,IAAA,CAAA,EAMFxJ,EAAA,EAEAuJ,EAAA,EAAAE,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EACA5J,EAAA,EAAA,YAAA,EACEc,EAAA,GAAA,wBAAA,CAAA,sCAKFZ,EAAA,EACAuJ,EAAA,GAAAI,GAAA,EAAA,EAAA,aAAA,CAAA,gBAQF3J,EAAA,EAGAuJ,EAAA,GAAAK,GAAA,EAAA,EAAA,aAAA,CAAA,EACF5J,EAAA,EACAF,EAAA,GAAA,kBAAA,CAAA,EAAkH,GAAA,OAAA,EAAA,EAC/DC,EAAA,EAAA,EAAkCC,EAAA,EACnFF,EAAA,GAAA,QAAA,EAAA,oBAQE+J,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAiBJ,EAAAK,eAAA,CAAuB,CAAA,CAAA,EAR1CnK,EAAA,EAWAuJ,EAAA,GAAAa,GAAA,EAAA,EAAA,aAAA,CAAA,EACFpK,EAAA,EACAF,EAAA,GAAA,kBAAA,EAAA,EAIC,GAAA,QAAA,EAAA,oBAQG+J,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAiBJ,EAAAK,eAAA,CAAuB,CAAA,CAAA,EAP1CnK,EAAA,EAUAuJ,EAAA,GAAAc,GAAA,EAAA,EAAA,aAAA,CAAA,EACFrK,EAAA,EAAkB,EAEpBF,EAAA,GAAA,mBAAA,KAAA,CAAA,EACEyJ,EAAA,GAAAe,GAAA,EAAA,EAAA,aAAA,EAAA,EAGFtK,EAAA,EAAmB,6BA1EsBK,EAAA,gBAAA,MAAA,EAAwB,YAAAiJ,EAAA7F,cAAA,EAI7DxD,EAAA,CAAA,uDAEsCA,EAAA,EAAAI,EAAA,cAAAkK,EAAA,EAAA,GAAA,uCAAA,CAAA,EAG/BtK,EAAA,CAAA,EAAAI,EAAA,OAAAiJ,EAAA/E,gBAAA,CAAA,EAAwB,WAAAiG,CAAA,EAUzBvK,EAAA,CAAA,EAAAI,EAAA,mBAAAkK,EAAA,GAAA,GAAA,8CAAA,CAAA,EAA+E,sBAAAA,EAAA,GAAA,GAAA,mDAAA,CAAA,EACQ,cAAAjB,EAAAvF,oBAAA,EAMtE9D,EAAA,CAAA,EAAAI,EAAA,UAAAkK,EAAA,GAAA,GAAAjB,EAAArE,uBAAA,CAAA,EASVhF,EAAA,CAAA,EAAAI,EAAA,OAAAiJ,EAAA7F,eAAAgH,SAAA,oBAAA,CAAA,EAEyCxK,EAAA,yDACLA,EAAA,CAAA,EAAAO,EAAA8I,EAAA5E,2BAAA,CAAA,EAG/CzE,EAAA,EAAAI,EAAA,cAAAkK,EAAA,GAAA,GAAA,kDAAA,CAAA,EAA8E,kBAAAG,CAAA,2CASnEzK,EAAA,CAAA,EAAAI,EAAA,OAAAiJ,EAAA7F,eAAAgH,SAAA,oBAAA,CAAA,EAKbxK,EAAA,EAAAI,EAAA,gBAAA,MAAA,4DAKEJ,EAAA,EAAAI,EAAA,cAAAkK,EAAA,GAAA,GAAA,yCAAA,CAAA,2CAOWtK,EAAA,CAAA,EAAAI,EAAA,OAAAiJ,EAAA7F,eAAAgH,SAAA,oBAAA,CAAA,EAIgBxK,EAAA,CAAA,EAAAI,EAAA,UAAAiJ,EAAArD,gBAAA,CAAA,kBDzB/B0E,EAAYC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,GAAcC,GAAAC,GACdC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAwBC,GACxBC,GAAeC,GAAAC,GACfC,GAAeC,EAAA,EAAAC,OAAA,CAAA;uHAAA,CAAA,CAAA,CAAA,SAgBN3L,CAA+B,GAAA,IEtE5C,IAEa4L,GAFbC,GAAAC,EAAA,KAAAC,KAEaH,GAA8D,CACzE,CAACI,GAAqBC,uBAAuB,EAAG,sCAChD,CAACD,GAAqBE,wBAAwB,EAAG,uCACjD,CAACF,GAAqBG,4BAA4B,EAAG,2CACrD,CAACH,GAAqBI,kBAAkB,EAAG,iCAC3C,CAACJ,GAAqBK,sBAAsB,EAAG,qCAC/C,CAACL,GAAqBM,sBAAsB,EAAG,qCAC/C,CAACN,GAAqBO,0BAA0B,EAAG,yCACnD,CAACP,GAAqBQ,sBAAsB,EAAG,qCAC/C,CAACR,GAAqBS,0BAA0B,EAAG,yCACnD,CAACT,GAAqBU,wBAAwB,EAAG,uCACjD,CAACV,GAAqBW,gCAAgC,EAAG,+CACzD,CAACX,GAAqBY,2BAA2B,EAAG,0CACpD,CAACZ,GAAqBa,+BAA+B,EAAG,8CACxD,CAACb,GAAqBc,+BAA+B,EAAG,8CACxD,CAACd,GAAqBe,2CAA2C,EAC/D,0DACF,CAACf,GAAqBgB,4BAA4B,EAAG,2CACrD,CAAChB,GAAqBiB,wCAAwC,EAC5D,uDACF,CAACjB,GAAqBkB,yBAAyB,EAAG,wCAClD,CAAClB,GAAqBmB,+BAA+B,EAAG,8CACxD,CAACnB,GAAqBoB,wBAAwB,EAAG,uCACjD,CAACpB,GAAqBqB,8BAA8B,EAAG,6CACvD,CAACrB,GAAqBsB,0BAA0B,EAAG,yCACnD,CAACtB,GAAqBuB,8BAA8B,EAAG,6CACvD,CAACvB,GAAqBwB,wBAAwB,EAAG,uCACjD,CAACxB,GAAqByB,4BAA4B,EAAG,wEE3BrDC,EAAA,EAAA,kBAAA,CAAA,EACEC,EAAA,EAAA,QAAA,CAAA,mBAMFC,EAAA,kBAHIC,EAAA,EAAAC,GAAA,cAAAC,EAAA,EAAA,EAAA,sCAAA,CAAA,EACAC,EAAA,cAAAC,EAAAC,YAAA,6BAIJR,EAAA,EAAA,kBAAA,CAAA,EACEC,EAAA,EAAA,QAAA,CAAA,mBAMFC,EAAA,EACAF,EAAA,EAAA,OAAA,CAAA,EAA6BS,EAAA,EAAA,QAAA,EAACP,EAAA,EAC9BF,EAAA,EAAA,kBAAA,CAAA,EACEC,EAAA,EAAA,QAAA,CAAA,mBAMFC,EAAA,kBAZIC,EAAA,EAAAC,GAAA,cAAAC,EAAA,EAAA,EAAA,4CAAA,CAAA,EACAC,EAAA,cAAAC,EAAAC,YAAA,EAQAL,EAAA,CAAA,EAAAC,GAAA,cAAAC,EAAA,EAAA,EAAA,0CAAA,CAAA,EACAC,EAAA,cAAAC,EAAAG,eAAA,GDzBN,IAoBaC,GApBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,gCAWaZ,IAA+B,IAAA,CAAtC,MAAOA,CAA+B,CAC1C,IAAaa,SAASC,EAA2B,CAC/C,KAAKC,iBAAiBD,CAAK,CAC7B,CAEA,IAAaE,aAAaF,EAAmC,CACvDA,GAAOG,SAAW,EACpB,KAAKC,SAASJ,EAAM,CAAC,CAAC,EACbA,GAAOG,SAAW,GAC3B,KAAKE,cAAcL,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CAEzC,CAEA,IAA4CM,SAASN,EAAc,CAC7DA,IACF,KAAKjB,aAAawB,QAAO,EACzB,KAAKtB,gBAAgBsB,QAAO,EAEhC,CAQAC,aAAA,CANU,KAAAC,aAAe,IAAIC,GAEpB,KAAAC,gBAAkB,IAAIC,GAA+B,QAAQ,EAC7D,KAAA7B,aAAe,IAAI8B,GAAgCC,OAAW,CAAEC,YAAa,EAAI,CAAE,EACnF,KAAA9B,gBAAkB,IAAI4B,GAAgCC,OAAW,CAAEC,YAAa,EAAI,CAAE,EAG7FC,EAAc,CACZ,KAAKL,gBACL,KAAK5B,aAAa0B,aAAaQ,KAAKC,GAAUJ,MAAS,CAAC,EACxD,KAAK7B,gBAAgBwB,aAAaQ,KAAKC,GAAUJ,MAAS,CAAC,CAAC,CAC7D,EACEG,KAAKE,GAAkB,EAAIC,GAAa,GAAG,CAAC,EAC5CC,UAAU,CAAC,CAACC,EAAetB,EAAOuB,CAAQ,IAAK,CAC1CD,IAAkB,SACpB,KAAKb,aAAae,KAAK,CAAC,CAAEC,MAAOzB,CAAK,CAAE,CAAC,EAEzC,KAAKS,aAAae,KAAK,CAAC,CAAEC,MAAOzB,CAAK,EAAI,CAAEyB,MAAOF,CAAQ,CAAE,CAAC,CAElE,CAAC,CACL,CAEAG,YAAU,CACR,KAAK3C,aAAa4C,MAAK,EACvB,KAAK1C,gBAAgB0C,MAAK,CAC5B,CAEQ1B,iBAAiBF,EAA8B,CACrD,IAAM6B,EAAiB,CACrBC,GAAqBC,2BACrBD,GAAqBE,8BAA8B,EAErD,KAAKpB,gBAAgBqB,KAAKJ,EAAeK,SAASlC,CAAQ,EAAI,QAAU,QAAQ,CAClF,CAEQK,SAASJ,EAAiC,CAChD,KAAKjB,aAAaqB,SAASJ,EAAMyB,KAAK,EACtC,KAAKxC,gBAAgBmB,SAASU,MAAS,CACzC,CAEQT,cAAc6B,EAAwCX,EAAoC,CAChG,KAAKxC,aAAaqB,SAAS8B,EAAWT,KAAK,EAC3C,KAAKxC,gBAAgBmB,SAASmB,EAASE,KAAK,CAC9C,iDA/DWvC,EAA+B,CAAA,+BAA/BA,EAA+BiD,UAAA,CAAA,CAAA,yBAAA,CAAA,EAAAC,OAAA,CAAArC,SAAA,WAAAG,aAAA,eAAAI,SAAA,CAAA,EAAA,WAAA,WAatB+B,EAAgB,CAAA,EAAAC,QAAA,CAAA7B,aAAA,cAAA,EAAA8B,SAAA,CAAAC,GAhBzB,CAAC,CAAEC,QAASC,GAA2BC,YAAaC,GAAW,IAAM1D,CAA+B,CAAC,CAAE,CAAC,EAAA2D,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,WAAA,GAAA,OAAA,SAAA,EAAA,cAAA,aAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,gBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICjBrH3E,EAAA,EAAA,MAAA,CAAA,EACE6E,EAAA,EAAAC,GAAA,EAAA,EAAA,kBAAA,CAAA,eASED,EAAA,EAAAE,GAAA,EAAA,CAAA,EAmBJ7E,EAAA,SA5BEC,EAAA,EAAA6E,EAAA3E,EAAA,EAAA,EAAAuE,EAAAxC,eAAA,IAAA,SAAA,EAAA,CAAA,kBDiBU6C,EAAYC,GAAEC,EAAeC,EAAEC,GAAcC,GAAEC,GAAqBC,GAAEC,GAAmBC,GAAAC,GAAAC,GAAAC,EAAA,EAAAC,OAAA,CAAA;6GAAA,CAAA,CAAA,CAAA,SAExFnF,CAA+B,GAAA,8BGlBxCoF,EAAA,EAAA,kBAAA,CAAA,EACEC,EAAA,EAAA,QAAA,CAAA,mBASFC,EAAA,kBAHIC,EAAA,EAAAC,GAAA,cAAAC,EAAA,EAAA,EAAA,sCAAA,CAAA,EACAC,EAAA,cAAAC,EAAAC,YAAA,6BAIJR,EAAA,EAAA,kBAAA,CAAA,EACEC,EAAA,EAAA,QAAA,CAAA,mBASFC,EAAA,EACAF,EAAA,EAAA,OAAA,CAAA,EAA6BS,EAAA,EAAA,QAAA,EAACP,EAAA,EAC9BF,EAAA,EAAA,kBAAA,CAAA,EACEC,EAAA,EAAA,QAAA,CAAA,mBASFC,EAAA,kBAfIC,EAAA,EAAAC,GAAA,cAAAC,EAAA,EAAA,EAAA,4CAAA,CAAA,EACAC,EAAA,cAAAC,EAAAC,YAAA,EAWAL,EAAA,CAAA,EAAAC,GAAA,cAAAC,EAAA,EAAA,EAAA,0CAAA,CAAA,EACAC,EAAA,cAAAC,EAAAG,eAAA,GDlCR,IAoBaC,GApBbC,GAAAC,EAAA,KAAAC,KACAC,IACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,gCAWaZ,IAAiC,IAAA,CAAxC,MAAOA,CAAiC,CAC5C,IAAaa,SAASC,EAA2B,CAC/C,KAAKC,iBAAiBD,CAAK,CAC7B,CAEA,IAAaE,aAAaF,EAAmC,CACvDA,GAAOG,SAAW,EACpB,KAAKC,SAASJ,EAAM,CAAC,CAAC,EACbA,GAAOG,SAAW,GAC3B,KAAKE,cAAcL,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CAEzC,CAEA,IAA4CM,SAASN,EAAc,CAC7DA,IACF,KAAKjB,aAAawB,QAAO,EACzB,KAAKtB,gBAAgBsB,QAAO,EAEhC,CAQAC,aAAA,CANU,KAAAC,aAAe,IAAIC,GAEpB,KAAAC,gBAAkB,IAAIC,GAA+B,QAAQ,EAC7D,KAAA7B,aAAe,IAAI8B,GAAgCC,OAAW,CAAEC,YAAa,EAAI,CAAE,EACnF,KAAA9B,gBAAkB,IAAI4B,GAAgCC,OAAW,CAAEC,YAAa,EAAI,CAAE,EAG7FC,EAAc,CACZ,KAAKL,gBACL,KAAK5B,aAAa0B,aAAaQ,KAAKC,GAAUJ,MAAS,CAAC,EACxD,KAAK7B,gBAAgBwB,aAAaQ,KAAKC,GAAUJ,MAAS,CAAC,CAAC,CAC7D,EACEG,KAAKE,GAAkB,EAAIC,GAAa,GAAG,CAAC,EAC5CC,UAAU,CAAC,CAACC,EAAetB,EAAOuB,CAAQ,IAAK,CAC1CD,IAAkB,SACpB,KAAKb,aAAae,KAAK,CAAC,CAAEC,QAASzB,CAAK,CAAE,CAAC,EAE3C,KAAKS,aAAae,KAAK,CAAC,CAAEC,QAASzB,CAAK,EAAI,CAAEyB,QAASF,CAAQ,CAAE,CAAC,CAEtE,CAAC,CACL,CAEAG,YAAU,CACR,KAAK3C,aAAa4C,MAAK,EACvB,KAAK1C,gBAAgB0C,MAAK,CAC5B,CAEQ1B,iBAAiBF,EAA8B,CACrD,IAAM6B,EAAiB,CACrBC,GAAqBC,2BACrBD,GAAqBE,8BAA8B,EAErD,KAAKpB,gBAAgBqB,KAAKJ,EAAeK,SAASlC,CAAQ,EAAI,QAAU,QAAQ,CAClF,CAEQK,SAASJ,EAAiC,CAChD,KAAKjB,aAAaqB,SAASJ,EAAMyB,OAAO,EACxC,KAAKxC,gBAAgBmB,SAASU,MAAS,CACzC,CAEQT,cAAc6B,EAAwCX,EAAoC,CAChG,KAAKxC,aAAaqB,SAAS8B,EAAWT,OAAO,EAC7C,KAAKxC,gBAAgBmB,SAASmB,EAASE,OAAO,CAChD,iDA/DWvC,EAAiC,CAAA,+BAAjCA,EAAiCiD,UAAA,CAAA,CAAA,2BAAA,CAAA,EAAAC,OAAA,CAAArC,SAAA,WAAAG,aAAA,eAAAI,SAAA,CAAA,EAAA,WAAA,WAaxB+B,EAAgB,CAAA,EAAAC,QAAA,CAAA7B,aAAA,cAAA,EAAA8B,SAAA,CAAAC,GAhBzB,CAAC,CAAEC,QAASC,GAA2BC,YAAaC,GAAW,IAAM1D,CAAiC,CAAC,CAAE,CAAC,EAAA2D,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,WAAA,GAAA,OAAA,SAAA,YAAA,UAAA,UAAA,UAAA,YAAA,GAAA,EAAA,cAAA,aAAA,EAAA,CAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,gBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICjBvH3E,EAAA,EAAA,MAAA,CAAA,EACE6E,EAAA,EAAAC,GAAA,EAAA,EAAA,kBAAA,CAAA,eAYED,EAAA,EAAAE,GAAA,EAAA,CAAA,EAyBJ7E,EAAA,SArCEC,EAAA,EAAA6E,EAAA3E,EAAA,EAAA,EAAAuE,EAAAxC,eAAA,IAAA,SAAA,EAAA,CAAA,kBDiBU6C,EAAYC,GAAEC,EAAeC,EAAEC,GAAcC,GAAEC,GAAqBC,GAAEC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,EAAA,EAAAC,OAAA,CAAA;yHAAA,CAAA,CAAA,CAAA,SAExFpF,CAAiC,GAAA,8BGLlCqF,EAAA,CAAA,EACEC,EAAA,EAAA,aAAA,EAAA,EAA8CC,EAAA,CAAA,mBAAsCC,EAAA,8BAAxEC,EAAA,EAAAC,EAAA,QAAAC,EAAAC,QAAA,EAAkCH,EAAA,EAAAI,EAAAC,EAAA,EAAA,EAAAH,EAAAI,KAAA,CAAA,6BAVtDT,EAAA,EAAA,MAAA,EAAA,EAAwG,EAAA,kBAAA,EAAA,EAC9B,EAAA,aAAA,GAAA,CAAA,mBAQpEU,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAGFT,EAAA,EAAa,EACG,mBAZ6BC,EAAA,EAAAC,EAAA,gBAAA,MAAA,EAI3CD,EAAA,EAAAC,EAAA,cAAAI,EAAA,EAAA,EAAA,gDAAA,CAAA,EAA4E,cAAAI,EAAAC,uBAAA,EAInCV,EAAA,CAAA,EAAAC,EAAA,UAAAQ,EAAAE,gBAAA,CAAA,6BAO7Cd,EAAA,EAAA,MAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,mBADEC,EAAA,EAAAY,EAAA,IAAAP,EAAA,EAAA,EAAAI,EAAAE,gBAAA,EAAA,CAAA,EAAAL,KAAA,EAAA,GAAA,0BAGAT,EAAA,EAAA,MAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAY,EAAA,IAAAP,EAAA,EAAA,EAAA,gCAAA,EAAA,GAAA,4BALJE,EAAA,EAAAM,GAAA,EAAA,EAAA,MAAA,EAAA,EAA0F,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,2BAA7Dd,EAAA,SAAAe,EAAAP,EAAAE,gBAAA,IAAA,KAAA,KAAAK,EAAAC,UAAA,CAAA,EAAuC,WAAAC,CAAA,sCAUpErB,EAAA,EAAA,2BAAA,EAAA,EAMEsB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAb,EAAAc,EAAA,CAAA,EAAA,OAAAC,EAAgBf,EAAAgB,oBAAAL,CAAA,CAA2B,CAAA,CAAA,EAN7CrB,EAAA,+BAGEE,EAAA,gBAAAyB,GAAA,KAAA,KAAAA,EAAAC,SAAAC,GAAA,EAAAC,EAAA,CAAA,EAA6C,UAAApB,EAAAqB,iBAAAC,OAAA,EACT,WAAAtB,EAAAqB,iBAAAE,WAAA,sCAItCnC,EAAA,EAAA,yBAAA,EAAA,EAMEsB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAAY,CAAA,EAAA,IAAAxB,EAAAc,EAAA,CAAA,EAAA,OAAAC,EAAgBf,EAAAgB,oBAAAL,CAAA,CAA2B,CAAA,CAAA,EAN7CrB,EAAA,iCAGEE,EAAA,gBAAAyB,GAAA,KAAA,KAAAA,EAAAC,SAAAC,GAAA,EAAAC,EAAA,CAAA,EAA6C,eAAAb,EAAAP,EAAAqB,iBAAAC,WAAA,MAAAf,IAAAkB,OAAAlB,EAAA,EAAA,EACC,WAAAP,EAAAqB,iBAAAE,WAAA,sCAIhDnC,EAAA,EAAA,yBAAA,EAAA,EAIEsB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAAc,CAAA,EAAA,IAAA1B,EAAAc,EAAA,CAAA,EAAA,OAAAC,EAAgBf,EAAAgB,oBAAAL,CAAA,CAA2B,CAAA,CAAA,EAJ7CrB,EAAA,iCAGEE,EAAA,gBAAAyB,GAAA,KAAA,KAAAA,EAAAC,SAAAC,GAAA,EAAAC,EAAA,CAAA,EAA6C,eAAAb,EAAAP,EAAAqB,iBAAAC,WAAA,MAAAf,IAAAkB,OAAAlB,EAAA,EAAA,EAEC,WAAAP,EAAAqB,iBAAAE,WAAA,EACL,UAAA,CAAA,sCAG3CnC,EAAA,EAAA,yBAAA,EAAA,EAIEsB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAAe,CAAA,EAAA,IAAA3B,EAAAc,EAAA,CAAA,EAAA,OAAAC,EAAgBf,EAAAgB,oBAAAL,CAAA,CAA2B,CAAA,CAAA,EAJ7CrB,EAAA,iCAGEE,EAAA,gBAAAyB,GAAA,KAAA,KAAAA,EAAAC,SAAAC,GAAA,EAAAC,EAAA,CAAA,EAA6C,eAAAb,EAAAP,EAAAqB,iBAAAC,WAAA,MAAAf,IAAAkB,OAAAlB,EAAA,EAAA,sCAI/CnB,EAAA,EAAA,0BAAA,EAAA,EAMEsB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAAgB,CAAA,EAAA,IAAA5B,EAAAc,EAAA,CAAA,EAAA,OAAAC,EAAgBf,EAAAgB,oBAAAL,CAAA,CAA2B,CAAA,CAAA,EAN7CrB,EAAA,iCAGEE,EAAA,WAAAqC,EAAA7B,EAAAqB,iBAAAC,WAAA,MAAAO,IAAAJ,OAAAI,EAAA,EAAA,EAA0C,gBAAAZ,GAAA,KAAA,KAAAA,EAAAC,SAAAC,GAAA,EAAAC,EAAA,CAAA,EACG,WAAApB,EAAAqB,iBAAAE,WAAA,sCAI/CnC,EAAA,EAAA,6BAAA,EAAA,EAMEsB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAAkB,CAAA,EAAA,IAAA9B,EAAAc,EAAA,CAAA,EAAA,OAAAC,EAAgBf,EAAAgB,oBAAAL,CAAA,CAA2B,CAAA,CAAA,EAN7CrB,EAAA,iCAGEE,EAAA,WAAAqC,EAAA7B,EAAAqB,iBAAAC,WAAA,MAAAO,IAAAJ,OAAAI,EAAA,EAAA,EAA0C,gBAAAZ,GAAA,KAAA,KAAAA,EAAAC,SAAAC,GAAA,EAAAC,EAAA,CAAA,EACG,WAAApB,EAAAqB,iBAAAE,WAAA,sCAI/CnC,EAAA,EAAA,6BAAA,EAAA,EAIEsB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAAmB,CAAA,EAAA,IAAA/B,EAAAc,EAAA,CAAA,EAAA,OAAAC,EAAgBf,EAAAgB,oBAAAL,CAAA,CAA2B,CAAA,CAAA,EAJ7CrB,EAAA,OAGEE,EAAA,eAAA2B,GAAA,EAAAC,EAAA,CAAA,qCAGFhC,EAAA,EAAA,yBAAA,EAAA,EAMEsB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAAoB,CAAA,EAAA,IAAAhC,EAAAc,EAAA,CAAA,EAAA,OAAAC,EAAgBf,EAAAgB,oBAAAL,CAAA,CAA2B,CAAA,CAAA,EAN7CrB,EAAA,+BAGEE,EAAA,gBAAAyB,GAAA,KAAA,KAAAA,EAAAC,SAAAC,GAAA,EAAAC,EAAA,CAAA,EAA6C,WAAApB,EAAAC,wBAAAgC,KAAA,EACH,WAAAjC,EAAAqB,iBAAAE,WAAA,sCAI5CnC,EAAA,EAAA,0BAAA,EAAA,EAMEsB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAAsB,CAAA,EAAA,IAAAlC,EAAAc,EAAA,CAAA,EAAA,OAAAC,EAAgBf,EAAAgB,oBAAAL,CAAA,CAA2B,CAAA,CAAA,EAN7CrB,EAAA,+BAGEE,EAAA,gBAAAyB,GAAA,KAAA,KAAAA,EAAAC,SAAAC,GAAA,EAAAC,EAAA,CAAA,EAA6C,WAAApB,EAAAC,wBAAAgC,KAAA,EACH,WAAAjC,EAAAqB,iBAAAE,WAAA,sCAI5CnC,EAAA,EAAA,4BAAA,EAAA,EAMEsB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAAuB,CAAA,EAAA,IAAAnC,EAAAc,EAAA,CAAA,EAAA,OAAAC,EAAgBf,EAAAgB,oBAAAL,CAAA,CAA2B,CAAA,CAAA,EAN7CrB,EAAA,+BAGEE,EAAA,gBAAAyB,GAAA,KAAA,KAAAA,EAAAC,SAAAC,GAAA,EAAAC,EAAA,CAAA,EAA6C,WAAApB,EAAAC,wBAAAgC,KAAA,EACH,WAAAjC,EAAAqB,iBAAAE,WAAA,sCAI5CnC,EAAA,EAAA,4BAAA,EAAA,EAKEsB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAAwB,CAAA,EAAA,IAAApC,EAAAc,EAAA,CAAA,EAAA,OAAAC,EAAgBf,EAAAgB,oBAAAL,CAAA,CAA2B,CAAA,CAAA,EAL7CrB,EAAA,+BAGEE,EAAA,gBAAAyB,GAAA,KAAA,KAAAA,EAAAC,SAAAC,GAAA,EAAAC,EAAA,CAAA,EAA6C,WAAApB,EAAAqB,iBAAAE,WAAA,sCAI/CnC,EAAA,EAAA,2BAAA,EAAA,EAMEsB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAAyB,CAAA,EAAA,IAAArC,EAAAc,EAAA,CAAA,EAAA,OAAAC,EAAgBf,EAAAgB,oBAAAL,CAAA,CAA2B,CAAA,CAAA,EAN7CrB,EAAA,+BAGEE,EAAA,gBAAAyB,GAAA,KAAA,KAAAA,EAAAC,SAAAC,GAAA,EAAAC,EAAA,CAAA,EAA6C,iBAAApB,EAAAsC,eAAA,CAAA,EACV,WAAAtC,EAAAuC,iBAAA,CAAA,sCAIrCnD,EAAA,EAAA,0BAAA,EAAA,EAKEsB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAA4B,CAAA,EAAA,IAAAxC,EAAAc,EAAA,CAAA,EAAA,OAAAC,EAAgBf,EAAAgB,oBAAAL,CAAA,CAA2B,CAAA,CAAA,EAL7CrB,EAAA,+BAGEE,EAAA,gBAAAyB,GAAA,KAAA,KAAAA,EAAAC,SAAAC,GAAA,EAAAC,EAAA,CAAA,EAA6C,UAAApB,EAAAqB,iBAAAC,OAAA,EACT,WAAAtB,EAAAqB,iBAAAE,WAAA,yBAItCkB,EAAA,EAAA,wCAAA,EAAA,wBAQAC,GAAA,CAAA,4BAHFvD,EAAA,CAAA,EAGEW,EAAA,EAAA6C,GAAA,EAAA,EAAA,eAAA,EAAA,4BAAepD,EAAA,EAAAC,EAAA,mBAAAoD,CAAA,yBAIjBF,GAAA,CAAA,4BADFvD,EAAA,CAAA,EACEW,EAAA,EAAA+C,GAAA,EAAA,EAAA,eAAA,EAAA,4BAAetD,EAAA,EAAAC,EAAA,mBAAAoD,CAAA,6BAjJrBzD,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EAAqC,EAAA,MAAA,CAAA,EAEjCU,EAAA,EAAAgD,GAAA,EAAA,EAAA,MAAA,CAAA,EAAwG,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAzC,EAAA,EAyBxGnB,EAAA,EAAA,CAAA,EACEW,EAAA,EAAAkD,GAAA,EAAA,EAAA,2BAAA,EAAA,EAOE,GAAAC,GAAA,EAAA,EAAA,yBAAA,EAAA,EAQA,GAAAC,GAAA,EAAA,EAAA,yBAAA,EAAA,EASA,GAAAC,GAAA,EAAA,EAAA,yBAAA,EAAA,EAOA,GAAAC,GAAA,EAAA,EAAA,0BAAA,EAAA,EAQA,GAAAC,GAAA,EAAA,EAAA,6BAAA,EAAA,EAQA,GAAAC,GAAA,EAAA,EAAA,6BAAA,EAAA,EAMA,GAAAC,GAAA,EAAA,EAAA,yBAAA,EAAA,EAQA,GAAAC,GAAA,EAAA,EAAA,0BAAA,EAAA,EAQA,GAAAC,GAAA,EAAA,EAAA,4BAAA,EAAA,EAQA,GAAAC,GAAA,EAAA,EAAA,4BAAA,EAAA,EAOA,GAAAC,GAAA,EAAA,EAAA,2BAAA,EAAA,EAQA,GAAAC,GAAA,EAAA,EAAA,0BAAA,EAAA,EAQA,GAAAC,GAAA,EAAA,EAAA,wCAAA,EAAA,MAMJ/D,EAAA,GAAAgE,GAAA,EAAA,EAAA,eAAA,CAAA,EAKFxE,EAAA,EACAQ,EAAA,GAAAiE,GAAA,EAAA,EAAA,eAAA,CAAA,EAGFzE,EAAA,wCAlJKC,EAAA,6CACHA,EAAA,EAAAY,EAAA,KAAA0B,EAAA7B,EAAAqB,kBAAA,KAAA,KAAArB,EAAAqB,iBAAA2C,aAAA,MAAAnC,IAAAJ,OAAAI,EAAA,GAAA,GAAA,EAIQtC,EAAA,CAAA,EAAAC,EAAA,QAAAQ,EAAAqB,kBAAA,MAAArB,EAAAqB,iBAAA4C,oBAAA,KAAA,KAAAjE,EAAAqB,iBAAA4C,mBAAAzD,QAAA,CAAA,EAAwD,WAAA0D,CAAA,EAyBhD3E,EAAA,CAAA,EAAAC,EAAA,WAAAQ,EAAAmE,UAAA,CAAA,EAGT5E,EAAA,EAAAC,EAAA,eAAAQ,EAAAoE,gBAAAC,sCAAA,EAQA9E,EAAA,EAAAC,EAAA,eAAAQ,EAAAoE,gBAAAE,qCAAA,EAQA/E,EAAA,EAAAC,EAAA,eAAAQ,EAAAoE,gBAAAG,mCAAA,EASAhF,EAAA,EAAAC,EAAA,eAAAQ,EAAAoE,gBAAAI,kCAAA,EAOAjF,EAAA,EAAAC,EAAA,eAAAQ,EAAAoE,gBAAAK,qCAAA,EAQAlF,EAAA,EAAAC,EAAA,eAAAQ,EAAAoE,gBAAAM,uCAAA,EAQAnF,EAAA,EAAAC,EAAA,eAAAQ,EAAAoE,gBAAAO,0BAAA,EAMApF,EAAA,EAAAC,EAAA,eAAAQ,EAAAoE,gBAAAQ,6BAAA,EAQArF,EAAA,EAAAC,EAAA,eAAAQ,EAAAoE,gBAAAS,uBAAA,EAQAtF,EAAA,EAAAC,EAAA,eAAAQ,EAAAoE,gBAAAU,yBAAA,EAQAvF,EAAA,EAAAC,EAAA,eAAAQ,EAAAoE,gBAAAW,yBAAA,EAOAxF,EAAA,EAAAC,EAAA,eAAAQ,EAAAoE,gBAAAY,8BAAA,EAQAzF,EAAA,EAAAC,EAAA,eAAAQ,EAAAoE,gBAAAa,uBAAA,EAQA1F,EAAA,EAAAC,EAAA,eAAAQ,EAAAoE,gBAAAc,sCAAA,EAIF3F,EAAA,EAAAC,EAAA,OAAA,EAAAQ,EAAAA,EAAAqB,kBAAA,MAAArB,EAAAqB,iBAAA4C,oBAAA,OAAAjE,EAAAqB,iBAAA4C,mBAAAzD,UAAAR,EAAAqB,kBAAA,MAAArB,EAAAqB,iBAAA4C,oBAAA,KAAA,KAAAjE,EAAAqB,iBAAA4C,mBAAAzD,SAAA,CAAA,EAKUjB,EAAA,EAAAC,EAAA,QAAAQ,EAAAqB,kBAAA,MAAArB,EAAAqB,iBAAA4C,oBAAA,KAAA,KAAAjE,EAAAqB,iBAAA4C,mBAAAzD,QAAA,CAAA,sCAOjBpB,EAAA,EAAA,SAAA,EAAA,EAA2DsB,EAAA,QAAA,UAAA,CAAAE,EAAAuE,CAAA,EAAA,IAAAnF,EAAAc,EAAA,EAAA,OAAAC,EAASf,EAAAoF,YAAA,CAAa,CAAA,CAAA,EAC/E/F,EAAA,CAAA,mBACFC,EAAA,QADEC,EAAA,EAAAY,EAAA,IAAAP,EAAA,EAAA,EAAA,kCAAA,EAAA,GAAA,GDxJJ,UAyCKwE,GA8CQiB,GAvFbC,GAAAC,EAAA,KAAAC,IACAC,IAWAC,KACAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAOAC,KACAC,0EAEK3C,GAAL,SAAKA,EAAe,CAClBA,OAAAA,EAAA,uCAAA,qBACAA,EAAA,2BAAA,gBACAA,EAAA,uCAAA,0BACAA,EAAA,oCAAA,uBACAA,EAAA,mCAAA,sBACAA,EAAA,8BAAA,kBACAA,EAAA,sCAAA,yBACAA,EAAA,sCAAA,yBACAA,EAAA,wCAAA,2BACAA,EAAA,+BAAA,cACAA,EAAA,wBAAA,aACAA,EAAA,0BAAA,eACAA,EAAA,0BAAA,eACAA,EAAA,wBAAA,aAdGA,CAeL,EAfKA,IAAe,CAAA,CAAA,EA8CPiB,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CA7B3C2B,aAAA,CAiCY,KAAAC,mBAAqB,IAAIC,GAEnC,KAAA9C,gBAAkBA,GAElB,KAAAnE,wBAA6D,IAAIkH,GAC/DC,GAAqBC,mBACrB,CAAEC,YAAa,EAAI,CAAE,EAMvB,KAAAC,aAA6DC,EAAO,CAAA,CAAE,EAGtE,KAAAC,eAA+DD,EAAO,IAAI,EAc1E,KAAAtH,gBAAkBwH,EAAS,IAAM,KAAKC,mBAAmB,KAAKF,eAAc,CAAE,CAAC,EAC/E,KAAAtD,UAAYuD,EAAS,IAAK,CACxB,IAAME,EAAgB,KAAKC,qBAAoB,EAAGC,KAC/CC,GAAaA,EAASzG,UAAY,KAAKmG,eAAc,GAAInG,OAAO,EAE7D6C,EAAY,KAAK6D,aAAa,KAAKP,eAAc,EAAI,KAAKlF,iBAAgB,CAAE,EAClF,OAAIqF,GAAiBzD,IAAcC,GAAgBO,2BAC1CP,GAAgBY,+BAElBb,CACT,CAAC,EAED,KAAA8D,gBAAkBC,GAAS,KAAKjI,wBAAwBkI,aAAc,CACpEC,aAAc,KAAKnI,wBAAwBgC,MAC5C,EAED,KAAAM,iBAAmBmF,EAAS,IAAM,KAAKO,gBAAe,CAAE,EAGxD,KAAAI,gBAAkBX,EAAS,IAClB,KAAKH,aAAY,EAAG/G,OAAS,CACrC,EAGD,KAAA8H,qBAAuBZ,EAAS,IAAK,CAEnC,GADqB,KAAKH,aAAY,GACpBgB,UAAWtG,GAAUA,EAAMuG,QAAU/G,MAAS,GAAK,EACnE,MAAO,KAGX,CAAC,EAEgB,KAAAgH,oBAAsBC,EAAOC,EAAmC,EACjF,KAAAd,qBAAuBK,GAAS,KAAKO,oBAAoBG,wBAAuB,EAAI,CAClFR,aAAc,CAAA,EACf,EACD,KAAA9F,eAAiBoF,EAAS,IACjB,KAAKG,qBAAoB,EAAGC,KAAMC,GAAaA,EAASzG,UAAY,KAAKmG,eAAc,GAAInG,OAAO,CAC1G,EAlDD,IAAauH,cAAcA,EAA2C,CAChEA,GACF,KAAK5I,wBAAwB6I,SAASD,EAAcnJ,QAAQ,EAE1D,KAAK2B,kBAAkBE,aACzB,KAAKtB,wBAAwB8I,QAAO,EAEtC,KAAKtB,eAAeuB,IAAIH,CAAa,CACvC,CA4CAzD,aAAW,CACT,IAAM7C,EAAmB,KAAKA,iBAAgB,EACxCgF,EAAe,KAAKA,aAAY,EAChC0B,EAAmB,KAAKZ,gBAAe,EACvCa,EAAS,KAAKzB,eAAc,EAC5B0B,EAAiB,KAAKb,qBAAoB,EAE1Cc,EAAqB,CACzBhC,GAAqBiC,6BACrBjC,GAAqBkC,yBACrBlC,GAAqBmC,6BACrBnC,GAAqBoC,wBAAwB,EAC7CC,SAASlH,CAAgB,EAEzBA,IAAqB6E,GAAqBsC,yBACzC,CAACT,GAAoB,CAACG,GAAsB,CAAC,KAAK/H,iBAAiBsI,QAMlET,IACFA,EAAOxJ,SAAW6C,EAClB2G,EAAOhI,OAASqG,EAChB2B,EAAOC,eAAiBA,EAExB,KAAKlC,mBAAmB2C,KAAKV,CAAM,EAEvC,CAEAvB,mBAAmBuB,EAAoC,CACrD,GAAI,CAACA,EACH,MAAO,CAAA,EAET,IAAMjF,EAAqB,KAAK5C,iBAAiB4C,mBACjD,OAAIA,IAAuBxC,OAClB,CAAA,EAGFwC,EAAmB4F,IAAKnK,IAAc,CAC3CA,SAAUA,EACVG,MAAOiK,GAAsBpK,CAAQ,GACrC,CACJ,CAEAsB,oBAAoBuG,EAA0C,CAC5D,KAAKA,aAAayB,IAAIzB,CAAY,CACpC,CAEQS,aAAakB,EAAsCxJ,EAA8B,CACvF,GAAI,KAAK2B,iBAAiB0I,OAASC,GAAiBC,qBAClD,MACE,CACE7C,GAAqBC,mBACrBD,GAAqB8C,uBACrB9C,GAAqB+C,4BACrB/C,GAAqBgD,+BAA+B,EACpDX,SAAS/J,CAAQ,EAEZ0E,GAAgBK,sCAElBL,GAAgBM,wCAEzB,GACE,CAAC0C,GAAqBiC,6BAA8BjC,GAAqBkC,wBAAwB,EAAEG,SACjG/J,CAAQ,EAGV,OAAO0E,GAAgBO,2BAClB,GAAI,KAAKtD,iBAAiB0I,OAASC,GAAiBK,iBACzD,OAAOjG,GAAgBQ,8BAClB,GAAI,KAAKvD,iBAAiB0I,OAASC,GAAiBM,kBACzD,OAAOlG,GAAgBS,wBAClB,GAAI,KAAKxD,iBAAiB0I,OAASC,GAAiBO,oBACzD,OAAOnG,GAAgBU,0BAClB,GACL,CACEsC,GAAqBC,mBACrBD,GAAqB8C,uBACrB9C,GAAqBoD,yBACrBpD,GAAqBqD,gCAAgC,EACrDhB,SAAS/J,CAAQ,EAEnB,OAAQ,KAAK2B,iBAAiB0I,KAAI,CAChC,KAAKC,GAAiBU,mBACpB,OAAOtG,GAAgBC,uCACzB,KAAK2F,GAAiBW,gBACpB,OAAOvG,GAAgBG,oCACzB,KAAKyF,GAAiBY,oBACpB,OAAOxG,GAAgBW,0BACzB,KAAKiF,GAAiBa,kBACpB,OAAOzG,GAAgBa,uBAC3B,SAEA,CACEmC,GAAqB0D,uBACrB1D,GAAqB2D,2BACrB3D,GAAqB4D,uBACrB5D,GAAqB6D,0BAA0B,EAC/CxB,SAAS/J,CAAQ,EAEnB,OAAQ,KAAK2B,iBAAiB0I,KAAI,CAChC,KAAKC,GAAiBW,gBACpB,OAAOvG,GAAgBI,mCACzB,KAAKwF,GAAiBU,mBACpB,OAAOtG,GAAgBE,qCAC3B,CAEF,GACE,CAAC8C,GAAqBoC,yBAA0BpC,GAAqBmC,4BAA4B,EAAEE,SACjG/J,CAAQ,EAGV,OAAQ,KAAK2B,iBAAiB0I,KAAI,CAChC,KAAKC,GAAiBU,mBACpB,OAAOtG,GAAgBC,uCACzB,KAAK2F,GAAiBa,kBACpB,OAAOzG,GAAgBO,0BAC3B,CAEF,OAAOP,GAAgBc,sCACzB,iDAlMWG,EAA8B,CAAA,+BAA9BA,EAA8B6F,UAAA,CAAA,CAAA,wBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,OAC9BE,GAAyB,CAAA,2kFCxFtCxL,EAAA,EAAAyL,GAAA,GAAA,GAAA,eAAA,CAAA,EAAyD,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAlL,EAAA,OAA1Cd,EAAA,OAAA6L,EAAA5D,eAAA,CAAA,iBD+DXgE,EAAYC,GAAAC,GAAAC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GAAeC,GAAAC,GACfC,GAAeC,GACfC,GACAC,GAAqBC,GACrBC,GAAmBC,GAAAC,GACnBC,GACAC,GACAC,GACAC,GACAC,GAIAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EAA+B,EAAAC,OAAA,CAAA;6HAAA,CAAA,CAAA,CAAA,SAGtBnI,CAA8B,GAAA,8BGrE7BoI,EAAA,EAAA,OAAA,EAAA,EAOEC,EAAA,CAAA,EACFC,EAAA,4BADEC,EAAA,EAAAC,EAAA,IAAAC,EAAAC,eAAA,GAAA,6BAEFN,EAAA,EAAA,MAAA,EACEO,EAAA,EAAA,0BAAA,EAAA,EACFL,EAAA,4BAD2BC,EAAA,EAAAK,EAAA,aAAAH,EAAAI,UAAA,EAAgC,eAAAJ,EAAAK,MAAA,6BAGzDV,EAAA,EAAA,MAAA,EACEC,EAAA,CAAA,EACFC,EAAA,6BADEC,EAAA,EAAAC,EAAA,IAAAC,EAAAM,cAAA,GAAA,4BADFC,EAAA,EAAAC,GAAA,EAAA,EAAA,OAAA,EAAA,2BAAOL,EAAA,OAAAH,EAAAM,aAAA,sCAKXX,EAAA,EAAA,SAAA,EAAA,EAEEc,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAX,EAAAY,EAAA,EAAAC,UAAAC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAE,iBAAAhB,CAAA,CAAwB,CAAA,CAAA,EAGjCL,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,QAAA,EAAMC,EAAA,EAAW,sCAgBzBF,EAAA,EAAA,yBAAA,GAAA,CAAA,EAIEc,EAAA,qBAAA,SAAAQ,EAAA,CAAAP,EAAAQ,CAAA,EAAA,IAAAJ,EAAAF,EAAA,CAAA,EAAA,OAAAG,EAAsBD,EAAAK,qBAAAF,CAAA,CAA4B,CAAA,CAAA,EAJpDpB,EAAA,2BAEEM,EAAA,mBAAAiB,EAAAC,UAAA,EAAwC,gBAAAD,EAAAE,MAAA,sCAlDhD3B,EAAA,EAAA,WAAA,EAAA,EACEc,EAAA,UAAA,UAAA,CAAA,IAAAT,EAAAU,EAAAa,CAAA,EAAAV,UAAAC,EAAAF,EAAA,EAAA,OAAAG,EAAWD,EAAAU,aAAAxB,CAAA,CAAoB,CAAA,CAAA,EAAC,QAAA,UAAA,CAAA,IAAAyB,EAAAf,EAAAa,CAAA,EAAAvB,EAAAyB,EAAAZ,UAAAa,EAAAD,EAAAE,OAAAC,EAAAC,EAAA,CAAA,EACvBf,OADuBF,EAAA,EACvBkB,eAAAJ,EAAA1B,CAAA,EAA6Be,EAAEa,EAAAG,KAAA,CAAwB,CAAA,CAAA,EAKhEpC,EAAA,EAAA,OAAA,EAAA,EACEC,EAAA,CAAA,EACAW,EAAA,EAAAyB,GAAA,EAAA,EAAA,OAAA,EAAA,EAMC,EAAAC,GAAA,EAAA,EAAA,OAAA,EAAA,EAGuD,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAQ1DtC,EAAA,EACAU,EAAA,EAAA6B,GAAA,EAAA,EAAA,SAAA,EAAA,EAQAzC,EAAA,EAAA,eAAA,GAAA,CAAA,EASEc,EAAA,gBAAA,UAAA,CAAAC,EAAAa,CAAA,EAAA,IAAAT,EAAAF,EAAA,EAAA,OAAAG,EAAiBD,EAAAuB,cAAA,CAAe,CAAA,CAAA,EAEhCC,GAAA,EAAA,EACA/B,EAAA,GAAAgC,GAAA,EAAA,EAAA,yBAAA,EAAA,EAQF1C,EAAA,EAAe,gDApDfM,EAAA,cAAAyB,CAAA,EAAiC,YAAA,EAAA5B,EAAAA,GAAA,MAAAA,EAAAqB,YAAA,OAAArB,EAAAqB,WAAAmB,OAAA,4CAK/B1C,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAAqB,YAAA,KAAA,KAAArB,EAAAqB,WAAAoB,UAAA,GAAA,EAEG3C,EAAA,EAAAK,EAAA,OAAAH,EAAAC,iBAAAD,EAAAM,eAAAN,EAAA0C,mBAAA1C,EAAAI,aAAA,KAAA,EAQIN,EAAA,EAAAK,EAAA,OAAAH,EAAAI,UAAA,EAAyB,WAAAuC,CAAA,EAU/B7C,EAAA,CAAA,EAAAK,EAAA,QAAAH,EAAAM,eAAAN,EAAA0C,oBAAA,EAAA1C,EAAAqB,YAAA,MAAArB,EAAAqB,WAAAuB,YAAA,EASD9C,EAAA,EAAAK,EAAA,uBAAA,EAAA,EAA6B,mBAAA,EAAA,EACJ,YAAAW,EAAA+B,gBAAA,EACK,eAAA,EAAA,EACT,WAAA,MAAA,EACF,YAAA,MAAA,EACC,UAAA,MAAA,EAIpB/C,EAAA,CAAA,QAAAgD,GAAgBhC,EAAAiC,qBAAA,CAAsB,EACtCjD,EAAA,EAAAkD,EAAAC,GAAAA,EAAA3B,OAAA4B,WAAAlD,EAAAkD,SAAA,GAAA,EAAA,sCAqCJvD,EAAA,EAAA,yBAAA,GAAA,CAAA,EAIEc,EAAA,qBAAA,SAAAQ,EAAA,CAAAP,EAAAyC,CAAA,EAAA,IAAArC,EAAAF,EAAA,CAAA,EAAA,OAAAG,EAAsBD,EAAAsC,kBAAAnC,CAAA,CAAyB,CAAA,CAAA,EAJjDpB,EAAA,kBAEEM,EAAA,mBAAAkD,EAAAhC,UAAA,EAAwC,gBAAAgC,EAAA/B,MAAA,sCAK1C3B,EAAA,EAAA,wBAAA,GAAA,CAAA,EAGEc,EAAA,YAAA,SAAAQ,EAAA,CAAAP,EAAA4C,CAAA,EAAA,IAAAxC,EAAAF,EAAA,CAAA,EAAA,OAAAG,EAAaD,EAAAyC,8BAAAtC,CAAA,CAAqC,CAAA,CAAA,EAHpDpB,EAAA,qBAEEM,EAAA,gBAAAW,EAAA0C,gBAAA,sCAMR7D,EAAA,EAAA,SAAA,EAAA,EAAwDc,EAAA,QAAA,UAAA,CAAAC,EAAA+C,CAAA,EAAA,IAAA3C,EAAAF,EAAA,CAAA,EAAA,OAAAG,EAASD,EAAA4C,aAAA,CAAc,CAAA,CAAA,EAC7E/D,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,OAAA,EAAKC,EAAA,EACfD,EAAA,CAAA,mBACFC,EAAA,QADEC,EAAA,CAAA,EAAAC,EAAA,IAAA4D,EAAA,EAAA,EAAA,kCAAA,EAAA,GAAA,sCAvCJhE,EAAA,EAAA,MAAA,EAAA,EAAuD,EAAA,SAAA,EAAA,EAGnDc,EAAA,QAAA,UAAA,CAAAC,EAAAkD,CAAA,EAAA,IAAA9C,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAA+C,cAAA,CAAe,CAAA,CAAA,EAIxBlE,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,KAAA,EAAGC,EAAA,EACbD,EAAA,CAAA,mBACAD,EAAA,EAAA,eAAA,GAAA,CAAA,EAUEc,EAAA,gBAAA,UAAA,CAAAC,EAAAkD,CAAA,EAAA,IAAA9C,EAAAF,EAAA,EAAA,OAAAG,EAAiBD,EAAAuB,cAAA,CAAe,CAAA,CAAA,EAEhC9B,EAAA,EAAAuD,GAAA,EAAA,EAAA,yBAAA,EAAA,EAA0C,EAAAC,GAAA,EAAA,EAAA,wBAAA,EAAA,EAc5ClE,EAAA,EAAe,EAEjBU,EAAA,GAAAyD,GAAA,EAAA,EAAA,SAAA,EAAA,EAIFnE,EAAA,6BArCIC,EAAA,EAAAK,EAAA,cAAA8D,CAAA,EAIAnE,EAAA,CAAA,EAAAC,EAAA,IAAA4D,EAAA,EAAA,GAAA,+BAAA,EAAA,GAAA,EAIE7D,EAAA,CAAA,EAAAK,EAAA,uBAAA,EAAA,EAA6B,mBAAA,EAAA,EACJ,YAAAW,EAAA+B,gBAAA,EACK,eAAA,EAAA,EACT,WAAA,MAAA,EACF,YAAA,MAAA,EACC,UAAA,MAAA,EAIpB/C,EAAA,CAAA,EAAAkD,GAAAkB,EAAApD,EAAAqD,oBAAA,GAAA,EAAA,EAAAD,CAAA,EAgBKpE,EAAA,CAAA,EAAAK,EAAA,OAAAW,EAAAsD,SAAA,CAAA,GD5Gb,mBA4FaC,GA5FbC,GAAAC,EAAA,KAAAC,IACAC,IAkBAC,KACAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAWAC,KACAC,KACAC,kKA8CatB,IAA0B,IAAA,CAAjC,MAAOA,CAA0B,CA4C7BuB,cAAcC,EAAwB,CAC5C,OAAOA,EAAExE,YAAc,KAAKyE,kBAAiB,GAAIC,KAAMC,GAAMA,EAAEC,UAAYJ,GAAGI,OAAO,CACvF,CAEAC,YACmBC,EACAC,EACAC,EAAkB,CAFlB,KAAAF,UAAAA,EACA,KAAAC,mBAAAA,EACA,KAAAC,SAAAA,EA5CV,KAAA7C,iBAAmB,GAGY,KAAA8C,cAAgB,GAE9C,KAAAC,eAAiB,IAAIC,GAEd,KAAAC,oBAAsBC,EAAOC,EAAmC,EAEjF,KAAAb,kBAA2Ec,GACzE,KAAKH,oBAAoBI,kBAAkB,EAAE,CAAC,EAEhD,KAAAC,QAAmDC,EAAO,CAAA,CAAE,EAE5D,KAAA5C,oBAAsE4C,EAAO,IAAI,EACjF,KAAAhE,qBAAuEgE,EAAO,IAAI,EAClF,KAAAC,qBAAuBJ,GAAS,KAAKH,oBAAoBQ,wBAAuB,CAAE,EAClF,KAAAC,kBAAoBC,EAAS,IAAK,CAChC,IAAMC,EAAc,IAAIC,IACxB,QAAWC,KAAY,KAAKN,qBAAoB,GAAM,CAAA,EACpDI,EAAYG,IAAID,EAASrB,QAASqB,CAAQ,EAE5C,OAAOF,CACT,CAAC,EAED,KAAAvE,iBAAmB,CAAC2E,GAAKC,WAAYD,GAAKE,OAAQF,GAAKG,YAAaH,GAAKI,QAASJ,GAAKK,QAAQ,EAC/F,KAAAC,aAA8CX,EAAS,IACrD,KAAKY,qBAAqB,KAAKjB,QAAO,EAAI,KAAKI,kBAAiB,CAAE,CAAC,EAErE,KAAA9C,SAAW+C,EAAS,IACO,KAAKL,QAAO,EAAGxF,OAAQuE,GAAK,CACnD,IAAMmC,EAAM,KAAKpC,cAAcC,CAAC,EAChC,MAAO,CAACmC,GAAKpF,aAAe,CAACoF,GAAKxF,QAAUqD,GAAGxF,QAAQ4H,MACzD,CAAC,EACuBA,QAAU,CACnC,EAWCC,GAAO,IAAM,KAAK3B,eAAe4B,KAAK,KAAKrB,QAAO,CAAE,CAAC,CACvD,CAEAsB,UAAQ,CACN,KAAK3B,oBACF4B,yBAAwB,EACxBC,KAAMxB,GAAY,KAAKA,QAAQS,IAAIT,CAAO,CAAC,EAC3CyB,MAAOC,GAAQC,QAAQC,MAAM,mCAAmCF,CAAG,EAAE,CAAC,CAC3E,CAEAG,aAAW,CACT,MAAO,UAAUC,GAAM,CAAE,EAC3B,CAEAlF,cAAY,CACV,KAAKoD,QAAQ+B,OAAQ/B,GAAW,CAC9B,IAAIgC,EAAgBhC,EAAQxF,OAAQuE,GAAK,CACvC,IAAMmC,EAAM,KAAKpC,cAAcC,CAAC,EAChC,OAAOmC,GAAKxF,QAAU,CAACwF,GAAKpF,WAC9B,CAAC,EACDkG,EAAgB,CAAC,GAAG,IAAIC,IAAID,CAAa,CAAC,EAC1C,IAAME,EAA6BF,EAAcG,IAAKpD,GAAK,CACzD,IAAMmC,EAAM,KAAKpC,cAAcC,CAAC,EAChC,OAAImC,IACFnC,EAAEqD,SAAWlB,EAAImB,qBAAqB,CAAC,GAAKC,GAAqBC,yBAE5DC,GAAAC,GAAA,GAAK1D,GAAL,CAAQxF,OAAQ,CAAA,CAAE,EAC3B,CAAC,EACKmJ,EAAqB1C,EAAQxF,OAAQuE,GAC7B,KAAKD,cAAcC,CAAC,GACpBjD,WACb,EACD,MAAO,CAAC,GAAGoG,EAA4B,GAAGQ,CAAkB,CAC9D,CAAC,CACH,CAEAxI,iBAAiBM,EAA2B,CAC1C,KAAKwF,QAAQ+B,OAAQ/B,GACZA,EAAQmC,IAAKpD,GAAK,CACvB,GAAIA,GAAG3C,WAAa5B,EAAO4B,SAAU,CACnC,IAAM8E,EAAM,KAAKpC,cAAcC,CAAC,EAChC,OAAImC,IACFnC,EAAEqD,SAAWlB,EAAImB,qBAAqB,CAAC,GAAKC,GAAqBC,yBAE5DC,GAAAC,GAAA,GAAK1D,GAAL,CAAQxF,OAAQ,CAAA,CAAE,EAC3B,CACA,OAAOwF,CACT,CAAC,CACF,CACH,CAEArE,aAAaF,EAA6B,CACxC,KAAKwF,QAAQ+B,OAAQ/B,GAAYA,EAAQxF,OAAQuE,GAAMA,GAAG3C,WAAa5B,GAAQ4B,QAAQ,CAAC,CAC1F,CAGAK,8BAA8BkG,EAAiD,CAC7E,IAAIC,EAAkBN,GAAqBO,mBACvCF,GAAkBG,OAASC,GAAiBC,gBAC9CJ,EAAkBN,GAAqBW,uBAC9BN,GAAkBG,OAASC,GAAiBG,kBACrDN,EAAkBN,GAAqBa,4BAE9BR,GAAkBN,qBAAqB,CAAC,IACjDO,EAAkBD,EAAiBN,mBAAmB,CAAC,GAEzD,IAAM7H,EAAgC,CACpC2E,QAASwD,EAAiBxD,SAAW,GACrCiD,SAAUQ,GAEZ,KAAKQ,kBAAkB5I,CAAM,CAC/B,CAEQ6I,0BACN7I,EACAD,EAA2C,CAE3C,MAAO,CACLC,OAAQ,CACN2E,QAAS3E,EAAO2E,QAChB/C,SAAU5B,EAAO4B,SACjBgG,SAAU5H,EAAO4H,SACjB7I,OAAQiB,EAAOjB,OACf+J,eAAgB9I,EAAO8I,eACvB/I,WAAYC,EAAOD,YAErBA,WAAYA,EAEhB,CAEAgJ,mBAAmB/I,EAAsCgJ,EAAa,CAEpE,GADA,KAAKJ,kBAAkB,IAAI,EACvB,CAAC5I,EAAQ,CACX,KAAKyB,qBAAqBwE,IAAI,IAAI,EAClC,MACF,CACA,IAAMlG,EAAa,KAAKuE,cAActE,CAAM,EAC5C,GAAI,CAACD,EAAY,CACf,KAAK0B,qBAAqBwE,IAAI,IAAI,EAClC,MACF,CAEA,IAAMgD,EAAW,KAAKJ,0BAA0B7I,EAAQD,CAAU,EAClE,KAAK0B,qBAAqBwE,IAAIgD,CAAQ,EACtCC,WAAW,IAAK,CACd,IAAMC,EAAU,KAAKC,iBAAiBC,IAAIL,CAAK,EAC3CG,GACFA,EAAQG,gBAAgBC,QAAO,CAEnC,EAAG,CAAC,CACN,CAEAX,kBAAkB5I,EAAoC,CAEpD,GADA,KAAKyB,qBAAqBwE,IAAI,IAAI,EAC9B,CAACjG,EAAQ,CACX,KAAK6C,oBAAoBoD,IAAI,IAAI,EACjC,MACF,CACA,IAAMlG,EAAa,KAAKuE,cAActE,CAAM,EAC5C,GAAI,CAACD,EAAY,CACf,KAAK8C,oBAAoBoD,IAAI,IAAI,EACjC,MACF,CAEA,IAAMgD,EAAW,KAAKJ,0BAA0B7I,EAAQD,CAAU,EAClE,KAAK8C,oBAAoBoD,IAAIgD,CAAQ,EACrCC,WAAW,IAAM,KAAKM,oBAAoBF,gBAAgBC,QAAO,EAAI,CAAC,CACxE,CAEAhH,eAAa,CACX,KAAKqG,kBAAkB,IAAI,EAC3B,KAAKa,iBAAiBhJ,KAAI,EAC1ByI,WAAW,IAAK,CACd,KAAKQ,gBAAgBC,aAAaC,cAAcL,MAAK,CACvD,EAAG,CAAC,CACN,CAEA/I,eAAewI,EAAehJ,EAA6B,CACzD,KAAK+I,mBAAmB/I,GAAU,KAAKyB,qBAAoB,GAAIzB,OAAQgJ,CAAK,CAC9E,CAEAlH,kBAAkB9B,EAA6B,CAC7CA,EAAO4B,SAAW5B,EAAO4B,UAAY,KAAKyF,YAAW,EACrD,KAAK7B,QAAQ+B,OAAQ/B,GAAY,CAAC,GAAGA,EAASxF,CAAM,CAAC,EACrD,KAAKe,cAAa,CACpB,CAEAlB,qBAAqBG,EAA6B,CAChD,KAAKwF,QAAQ+B,OAAQ/B,GAAYA,EAAQmC,IAAKpD,GAAOA,GAAG3C,WAAa5B,EAAO4B,SAAW5B,EAASuE,CAAE,CAAC,EACnG,KAAKxD,cAAa,CACpB,CAEAA,eAAa,CAEX,KAAK8I,mBAAmBC,MAAK,EAC7B,KAAKL,kBAAkBK,MAAK,EAC5B,KAAKjH,oBAAoBoD,IAAI,IAAI,EACjC,KAAKxE,qBAAqBwE,IAAI,IAAI,CACpC,CAEQ8D,sBACN/J,EACA0F,EAA4D,CAE5D,IAAMsE,EAAiBtE,EAAqB2D,IAAIrJ,EAAO2E,OAAO,EAC9D,MAAI,CAACqF,GAAkB,CAACA,EAAeC,WAC9B,KAEFD,EAAeC,UACxB,CAEQxD,qBACNjB,EACAI,EAA0D,CAE1D,OAAKJ,EAGqCA,EAAQmC,IAAK3H,GAAU,CAC/D,IAAMkK,EAAsB,KAAK5F,cAActE,CAAM,EAC/CmK,EAAenK,GAAQjB,OACvBJ,EACJyL,GAA6BpK,GAAQ4H,UAAYE,GAAqBC,uBAAuB,EACzFsC,EAASF,GAAgBA,EAAaxD,OAAS,EAAI,KAAK9B,UAAUyF,QAAQ3L,CAAc,EAAI,GAElG,GACE,CAACwL,GAAcxD,SACd3G,EAAO4H,WAAaE,GAAqByC,8BACxCvK,EAAO4H,WAAaE,GAAqB0C,0BACzCxK,EAAO4H,WAAaE,GAAqB2C,8BACzCzK,EAAO4H,WAAaE,GAAqB4C,0BAE3C,OAAO1C,GAAAC,GAAA,GACFjI,GADE,CAELD,WAAYmK,EACZvL,eAAgB,KAAKkG,UAAUyF,QAAQ3L,CAAc,EACrDyC,kBAAmB,KAIvB,GAAI,CAAC+I,GAAcxD,OACjB,OAAOqB,GAAAC,GAAA,GACFjI,GADE,CAELD,WAAYmK,EACZvL,eAAgB0L,IAIpB,IAAMM,EAAoBC,OAAOC,UAAUC,eAAeC,KAAKZ,EAAa,CAAC,EAAG,QAAQ,EAExF,GAAIQ,EACF,OAAIR,EAAaxD,QAAU,EAClBqB,GAAAC,GAAA,GACFjI,GADE,CAELD,WAAYmK,EACZvL,eAAgB0L,EAChBrL,cAAemL,EAAa,CAAC,EAAEa,SAG1BhD,GAAAC,GAAA,GACFjI,GADE,CAELD,WAAYmK,EACZvL,eAAgB0L,EAChBrL,cAAemL,EAAa,CAAC,EAAEa,OAAS,MAAQb,EAAaxD,OAAS,KAM5E,GAAIwD,EAAa,CAAC,EAAEc,QAAUC,OAAW,CACvC,IAAMC,GAAOhB,EAAa,CAAC,EAAEc,MAAMG,SAAQ,EAC3C,GAAIC,GAAuBC,SAAStL,EAAO4H,QAAQ,EAAG,CACpD,IAAM2D,GAAKpB,EAAa,CAAC,GAAGc,OAAOG,SAAQ,GAAM,GACjD,OAAOpD,GAAAC,GAAA,GACFjI,GADE,CAELD,WAAYmK,EACZvL,eAAgB0L,EAChBrL,cAAe,GAAGmM,EAAI,MAAMI,EAAE,IAElC,CACA,OAAOvD,GAAAC,GAAA,GACFjI,GADE,CAELD,WAAYmK,EACZvL,eAAgB0L,EAChBrL,cAAemM,IAEnB,CAGA,GAAIhB,EAAa,CAAC,EAAEqB,UAAYN,OAAW,CACzC,IAAMC,GAAOhB,EAAa,CAAC,EAAEqB,QAAQJ,SAAQ,EAC7C,GAAIC,GAAuBC,SAAStL,EAAO4H,QAAQ,EAAG,CACpD,IAAM2D,GAAKpB,EAAa,CAAC,GAAGqB,SAASJ,SAAQ,GAAM,GACnD,OAAOpD,GAAAC,GAAA,GACFjI,GADE,CAELD,WAAYmK,EACZvL,eAAgB0L,EAChBrL,cAAe,GAAGmM,EAAI,MAAMI,EAAE,IAElC,CACA,OAAOvD,GAAAC,GAAA,GACFjI,GADE,CAELD,WAAYmK,EACZvL,eAAgB0L,EAChBrL,cAAemM,IAEnB,CAGA,GAAIhB,EAAa,CAAC,EAAEsB,QAAUP,OAAW,CACvC,IAAIQ,GAAc,GACZC,GAAgB,KAAK7G,mBAAmB8G,iBAC3CzB,EAAa,CAAC,EAAEsB,MAAMI,gBAAkBC,EAAoC,EAE3EH,IAAiB,OACnBD,GAAcC,GAAcI,aAE9B,IAAMC,GAAc7B,EAAa,CAAC,EAAEsB,MAAMQ,gBAAkB,GACxDC,GAAM,GACJC,GAAYhC,EAAa,CAAC,EAAEsB,MAAMU,WAAa,GACrD,OAAIA,IAAa,MAAQA,GAAUxF,OAAS,IAC1CuF,GAAM,KAAOC,IAERnE,GAAAC,GAAA,GACFjI,GADE,CAELD,WAAYmK,EACZvL,eAAgB0L,EAChBrL,cAAe0M,GAAcM,GAAcE,IAE/C,CAGA,GAD2BtB,OAAOC,UAAUC,eAAeC,KAAKZ,EAAa,CAAC,EAAG,SAAS,EAExF,OAAOnC,GAAAC,GAAA,GACFjI,GADE,CAELD,WAAYmK,EACZvL,eAAgB0L,EAChBrL,cAAemL,EAAa,CAAC,EAAEiC,QAAU,OAAS,UAItD,IAAMC,EAA0B,CAC9BvE,GAAqBO,mBACrBP,GAAqBwE,uBACrBxE,GAAqByE,0BACrBzE,GAAqB0E,gCACrB1E,GAAqB2E,yBACrB3E,GAAqB4E,8BAA8B,EAE/C,CAAEC,YAAAA,EAAcC,GAAkBC,oBAAoB,EAAK1C,EAAa,CAAC,EAC3E2C,GAAkB,KAAKjI,UAAUyF,QAAQyC,GAAwBJ,CAAW,CAAC,EAKjF,GAJIxC,EAAa,CAAC,EAAE6C,OAClBF,GAAkB,KAAK/H,SAASkI,UAAU9C,EAAa,CAAC,EAAE6C,MAAM5B,SAAQ,EAAI,aAAc,KAAK,GAI/FiB,EAAwBf,SAAStL,EAAO4H,UAAYE,GAAqBC,uBAAuB,GAChG,CAAC4C,EAED,OAAO3C,GAAAC,GAAA,GACFjI,GADE,CAELD,WAAYmK,EACZvL,eAAgB0L,EAChBrL,cAAe8N,KAInB,GACE9M,EAAO4H,WAAaE,GAAqBoF,gCACzClN,EAAO4H,WAAaE,GAAqBqF,2BACzC,CACA,IAAMC,GAAW,KAAKrI,SAASkI,UAAU9C,EAAa,CAAC,EAAE6C,MAAM5B,SAAQ,EAAI,WAAW,EAChFiC,GAAS,KAAKtI,SAASkI,UAAU9C,EAAa,CAAC,EAAE6C,MAAM5B,SAAQ,EAAI,WAAW,EAEpF,OAAOpD,GAAAC,GAAA,GACFjI,GADE,CAELD,WAAYmK,EACZvL,eAAgB0L,EAChBrL,cAAeoO,GAAW,MAAQC,IAEtC,CAEA,OAAOrF,GAAAC,GAAA,GACFjI,GADE,CAELD,WAAYmK,GAEhB,CAAC,EAC6DvC,IAAK3H,GAAU,CAC3E,IAAMsN,EAAe,KAAKvD,sBAAsB/J,EAAQ4F,GAAqB,IAAIG,GAAK,EACtF,OAAIuH,IAAiB,MAAQ,CAACtN,EAAOoB,kBAC5B4G,GAAAC,GAAA,GACFjI,GADE,CAELlB,WAAYwO,IAGTtN,CACT,CAAC,EApLQ,CAAA,CAsLX,iDA3ZW+C,GAA0BwK,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,+BAA1B3K,EAA0B4K,UAAA,CAAA,CAAA,mBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,mWAUjBE,EAAgB,CAAA,EAAAC,QAAA,CAAA/I,eAAA,gBAAA,EAAAgJ,SAAA,CAAAC,GA/BzB,CACTC,GACAV,GACAC,GACA,CACEU,QAAS/I,GACTgJ,WAAYA,IAAK,CACf,IAAMC,EAAOlJ,EAAOmJ,EAA8B,EASlD,MARiE,CAC/DhJ,kBAAmB+I,EAAK/I,kBAAkBiJ,KAAKF,CAAI,EACnDG,gBAAiBH,EAAKG,iBAAiBD,OAAOF,CAAI,IAAM,IAAMI,EAAG,CAAA,CAAE,GACnE3H,yBAA0BuH,EAAKvH,0BAA0ByH,OAAOF,CAAI,IAAM,IAAAK,GAAA,sBAAY,OAAA,KAEtFC,yBAA0BN,EAAKM,0BAA0BJ,OAAOF,CAAI,IAAM,IAAK,CAAE,GACjF3I,wBAAyB2I,EAAK3I,yBAAyB6I,OAAOF,CAAI,IAAM,IAAMI,EAAG,CAAA,CAAE,GAGvF,EACD,CACF,EAAAG,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,cAAA,WAAA,EAAA,CAAA,QAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,UAAA,QAAA,cAAA,WAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,QAAA,cAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,gBAAA,uBAAA,mBAAA,YAAA,eAAA,WAAA,YAAA,SAAA,EAAA,CAAA,EAAA,mBAAA,eAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,aAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,EAAA,qBAAA,mBAAA,eAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,cAAA,oBAAA,EAAA,oBAAA,EAAA,QAAA,aAAA,EAAA,CAAA,cAAA,mBAAA,EAAA,gBAAA,uBAAA,mBAAA,YAAA,eAAA,WAAA,YAAA,SAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,QAAA,uBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,YAAA,eAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAApB,EAAAC,EAAA,CAAAD,EAAA,IC1FHxP,EAAA,EAAA,MAAA,CAAA,EAAqC,EAAA,MAAA,CAAA,EACT,EAAA,eAAA,KAAA,CAAA,EACG,EAAA,MAAA,CAAA,EAMvB6Q,GAAA,EAAAC,GAAA,GAAA,GAAA,WAAA,GAAAC,EAAA,EA2DF7Q,EAAA,EAAM,EACO,EAGjBU,EAAA,EAAAoQ,GAAA,GAAA,GAAA,MAAA,EAAA,EA0CF9Q,EAAA,SAzGQC,EAAA,CAAA,EAAA8Q,GAAAxB,EAAAtH,aAAA,CAAc,EA+DchI,EAAA,CAAA,EAAAK,EAAA,OAAAiP,EAAA9I,aAAA,kBDZhCuK,EAAYC,GACZC,GACAC,GACAC,EAAeC,EACfC,GACAC,GAAaC,GACbC,GAAmBC,GAAAC,GACnBC,GACAC,GAAcC,GAAAC,GAAAC,GACdC,GACAC,EAA+B,EAAAC,OAAA,CAAA;wHAAA,CAAA,CAAA,CAAA,SAuBtB3N,CAA0B,GAAA,IE5FvC,IAGa4N,GAUAC,GAbbC,GAAAC,EAAA,KAAAC,SAGaJ,GAAiB,CAACK,EAA0B,EAU5CJ,IAAuB,IAAA,CAA9B,MAAOA,CAAuB,iDAAvBA,EAAuB,CAAA,gCAAvBA,CAAuB,CAAA,CAAA,oCAHzBD,EAAc,CAAA,CAAA,CAAA,SAGZC,CAAuB,GAAA,ICbpC,IAAAK,GAAAC,EAAA,KAAAC,KACAC,KACAC,OCFA,IAAAC,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCVA,IAAAC,GAAAC,EAAA,KACAC,KACAC,OCqBM,SAAUC,GAAaC,EAA2BC,EAAkB,CACxEA,EAAaA,GAAYC,YAAW,EACpC,IAAMC,EAAmBH,GAAMI,aAAaF,YAAW,GAAIG,SAASJ,CAAU,EACxEK,EAAoBN,GAAMO,WAAWL,YAAW,GAAIG,SAASJ,CAAU,EACvEO,EAAmBR,GAAMS,UAAUP,YAAW,GAAIG,SAASJ,CAAU,EACrES,EAAiBV,GAAMW,QAAQT,YAAW,GAAIG,SAASJ,CAAU,EACjEW,EAAgBZ,GAAMa,OAAOX,YAAW,GAAIG,SAASJ,CAAU,EACrE,OAAOE,GAAoBG,GAAqBE,GAAoBE,GAAkBE,CACxF,CAEM,SAAUE,GAAuBC,EAAgC,CACrE,OAAOA,EAAMC,IACVhB,GACEiB,GAAAC,GAAA,GACIlB,GADJ,CAECI,YAAa,GAAGJ,GAAMO,WAAa,EAAE,IAAIP,GAAMS,UAAY,EAAE,GAAGU,KAAI,GAAMnB,GAAMW,QACzD,CAE/B,CAEM,SAAUS,GAAqBC,EAA4C,CAC/E,GAAI,CAACA,EACH,OAEF,IAAMC,EAAc,CAAA,EACpBA,OAAAA,EAAYC,SAAWC,GAAoBC,0BAC3CH,EAAYD,QAAU,CAAA,EACtBA,EAAQK,QAASC,GAAe,CAC9B,GAAI,CAACA,EAAYC,SAAW,CAACD,EAAYJ,SACvC,OAEF,IAAMM,EAAiCF,EAAYJ,SAC/CO,GAAeC,GAAqBJ,EAAYJ,QAAQ,CAAC,EACzDS,OACEC,EAAqC,CACzCL,QAASD,EAAYC,QACrBL,SAAUM,EACVK,OAAQ,CAAA,EACRC,eAAgBR,EAAYQ,gBAE9BF,EAAkBC,OAASP,EAAYO,OAASE,GAA8BT,EAAYO,MAAM,EAAIF,OACpGV,EAAYD,SAASgB,KAAKJ,CAAiB,CAC7C,CAAC,EACMX,CACT,CAEM,SAAUgB,GAAsBC,EAAuB,CAC3D,MAAO,CACLX,QAASW,EAAOX,QAChBL,SAAUgB,EAAOhB,SACbiB,GAA8BD,EAAOhB,QAAQ,EAC7CQ,GAAqBU,wBACzBP,OAAQK,EAAOL,OAASQ,GAA4BH,EAAOL,MAAM,EAAI,CAAA,EACrEC,eAAgBI,EAAOJ,eAE3B,CAEM,SAAUQ,GAA0BC,EAAgB,CACxD,OAAOC,GAAiBC,GAAWF,CAAI,CAAC,CAC1C,CAEM,SAAUJ,GAA8BjB,EAAwB,CACpE,OAAOQ,GAAqBD,GAAeP,CAAQ,CAAC,CACtD,CAEM,SAAUwB,GAA+BC,EAA2B,CACxE,OAAOA,EAAUhC,IAAKiC,GAAMT,GAA8BS,CAAC,CAAC,CAC9D,CAEM,SAAUP,GAA4BR,EAA8B,CACxE,OAAOA,EAAOlB,IAAKkC,GAAMC,GAA2BD,CAAC,CAAC,CACxD,CAEM,SAAUC,GAA2BC,EAA2B,CACpE,IAAMC,EAAiCD,EAAMC,YACzCC,GAAkBC,GAAYH,EAAMC,WAAW,CAAC,EAChDrB,OACJ,MAAO,CACLwB,QAASJ,EAAMI,QACfC,QAASL,EAAMK,QACfC,OAAQN,EAAMM,OACdC,KAAMP,EAAMO,KACZN,YAAaA,EACbO,MAAOR,EAAMQ,MACbC,MAAOT,EAAMS,MAEjB,CAEM,SAAUzB,GAA8BF,EAAoC,CAChF,OAAOA,EAAOlB,IAAKkC,GAAMY,GAA6BZ,CAAC,CAAC,CAC1D,CAEM,SAAUY,GAA6BV,EAAiC,CAC5E,IAAMC,EAA2BD,EAAMC,YAAcE,GAAYD,GAAkBF,EAAMC,WAAW,CAAC,EAAIrB,OACzG,MAAO,CACLwB,QAASJ,EAAMI,QACfC,QAASL,EAAMK,QACfC,OAAQN,EAAMM,OACdC,KAAMP,EAAMO,KACZN,YAAaA,EACbO,MAAOR,EAAMQ,MACbC,MAAOT,EAAMS,MAEjB,CAEM,SAAUE,GAAsBC,EAAwBC,EAA6B,CACzF,IAAMC,EAAqC,CAAA,EAC3C,OAAQF,EAAU,CAChB,IAAK,UACH,OAAOC,EAAaE,SAAWD,EACjC,IAAK,UACH,OAAOD,EAAaG,SAAWF,EACjC,IAAK,WACH,OAAOD,EAAaI,UAAYH,EAClC,IAAK,cACH,OAAOD,EAAaK,aAAeJ,EACrC,QACE,OAAOA,CACX,CACF,CAEM,SAAUK,GACdC,EACAC,EACAC,EAAsB,CAEtB,GAAID,EAAOE,UAAUC,aAAaL,cAChC,OAAOE,EAAOE,SAASC,YAAYL,cAAcC,CAAa,EAAEK,KAC9DC,GAAYC,IACVC,QAAQD,MAAMA,CAAK,EACZE,EAAG,CAAA,CAAE,EACb,CAAC,EAEC,GAAIP,EAAY,CACrB,IAAMQ,EAAwBV,EAAcxD,IAAKL,GAAW,IAAIwE,GAAe,CAAExE,OAAQA,CAAM,CAAE,CAAC,EAClG,OAAO+D,EAAWH,cAAcW,CAAqB,EAAEL,KACrDC,GAAYC,IACVC,QAAQD,MAAMA,CAAK,EACZE,EAAG,CAAA,CAAE,EACb,CAAC,CAEN,KACE,OAAM,IAAIG,MAAM,mDAAmD,CAEvE,CAvKA,IAAAC,GAAAC,EAAA,KAAAC,KAQAC,KAWAC,KACAC,KACAC,OCrBA,IAKaC,GAWAC,GAQAC,GAuCAC,GAOAC,GAKAC,IAOAC,GAIAC,EAiKAC,GAQPC,GAgGAC,GAMAC,GAgBAC,GAiBOC,GAtYbC,GAAAC,EAAA,KAEAC,cAGahB,GAAsB,CACjCiB,UAAW,uBACXC,SAAU,sBACVC,YAAa,yBACbC,MAAO,kBACPC,KAAM,iBACNC,yBAA0B,+BAC1BC,mBAAoB,iCACpBC,uBAAwB,uCAGbvB,GAAyB,CACpCwB,iBAAkB,mDAClBC,iBAAkB,wDAClBC,eAAgB,oDAKLzB,GAAiB,CAC5B0B,gBAAiB,2BACjBC,gBAAiB,2BACjBC,sBAAuB,6BACvBC,WAAY,sBACZC,aAAc,iCACdC,gBAAiB,4BAEjBC,eAAgB,0BAChBC,eAAgB,0BAChBC,UAAW,qBACXC,kBAAmB,8BACnBC,eAAgB,2BAChBC,eAAgB,2BAChBC,wBAAyB,qCAEzBC,eAAgB,0BAChBC,eAAgB,0BAChBC,UAAW,qBACXC,kBAAmB,8BACnBC,eAAgB,2BAChBC,eAAgB,2BAChBC,wBAAyB,qCAEzBC,mBAAoB,8BACpBC,mBAAoB,8BACpBC,cAAe,yBACfC,sBAAuB,kCACvBC,mBAAoB,+BACpBC,4BAA6B,yCAE7BC,oBAAqB,+BACrBC,oBAAqB,+BACrBC,eAAgB,0BAChBC,uBAAwB,mCACxBC,oBAAqB,gCACrBC,mBAAoB,oCAGTxD,GAAuB,CAClCyD,SAAU,WACVC,YAAa,cACbC,mBAAoB,qBACpBC,SAAU,YAGC3D,GAAuB,CAClCyD,YAAa,cACbG,kBAAmB,qBAGR3D,IAAoB,CAC/B4D,WAAY,aACZC,kBAAmB,oBACnBC,kBAAmB,oBACnBJ,SAAU,YAGCzD,GAA2B,CACtC8D,mBAAoB,qBAGT7D,EAAc,CACzB8D,uBAAwB,+CACxBC,iBAAkB,+CAClBC,kBAAmB,+CACnBC,gBAAiB,+CACjBC,kBAAmB,+CACnBC,uBAAwB,+CACxBC,oBAAqB,+CACrBC,kBAAmB,+CACnBC,qBAAsB,+CACtBC,qBAAsB,+CACtBC,kBAAmB,+CACnBC,0BAA2B,+CAC3BC,mBAAoB,+CACpBC,sBAAuB,+CACvBC,oBAAqB,+CACrBC,qBAAsB,+CACtBC,uBAAwB,+CACxBC,qBAAsB,+CACtBC,yBAA0B,+CAC1BC,iBAAkB,+CAClBC,mBAAoB,+CACpBC,iBAAkB,+CAClBC,yBAA0B,+CAC1BC,qBAAsB,+CACtBC,uBAAwB,+CACxBC,oBAAqB,+CACrBC,6BAA8B,+CAC9BC,mBAAoB,+CACpBC,wBAAyB,+CACzBC,yBAA0B,+CAC1BC,uBAAwB,+CACxBC,uBAAwB,+CACxBC,sBAAuB,+CACvBC,wBAAyB,+CACzBC,yBAA0B,+CAC1BC,0BAA2B,+CAC3BC,4BAA6B,+CAC7BC,2BAA4B,+CAC5BC,4BAA6B,+CAC7BC,2BAA4B,+CAC5BC,6CAA8C,+CAC9CC,gCAAiC,+CACjCC,6BAA8B,+CAC9BC,4BAA6B,+CAC7BC,aAAc,+CACdC,mBAAoB,+CACpBC,+BAAgC,+CAChCC,+BAAgC,+CAChCC,iBAAkB,+CAClBC,oBAAqB,+CACrBC,qBAAsB,+CACtBC,mBAAoB,+CACpBC,iBAAkB,+CAClBC,aAAc,+CACdC,6BAA8B,+CAC9BC,6BAA8B,+CAC9BC,+BAAgC,+CAChCC,4BAA6B,+CAC7BC,0BAA2B,+CAC3BC,0BAA2B,+CAC3BC,0BAA2B,+CAC3BC,0BAA2B,+CAC3BC,4BAA6B,+CAC7BC,YAAa,+CACbC,gBAAiB,+CACjBC,4BAA6B,+CAC7BC,uCAAwC,+CACxCC,oCAAqC,+CACrCC,+BAAgC,+CAChCC,qCAAsC,+CACtCC,uCAAwC,+CACxCC,YAAa,+CACbC,2BAA4B,+CAC5BC,2BAA4B,+CAC5BC,0BAA2B,+CAC3BC,2BAA4B,+CAC5BC,gCAAiC,+CACjCC,6BAA8B,+CAC9BC,mCAAoC,+CACpCC,uCAAwC,+CACxCC,eAAgB,+CAChBC,mBAAoB,+CACpBC,YAAa,+CACbC,sBAAuB,+CACvBC,gBAAiB,+CACjBC,mBAAoB,+CACpBC,uBAAwB,+CACxBC,yBAA0B,+CAC1BC,iBAAkB,+CAClBC,mBAAoB,+CACpBC,kBAAmB,+CACnBC,0BAA2B,+CAC3BC,mBAAoB,+CACpBC,mBAAoB,+CACpBC,oBAAqB,+CACrBC,oBAAqB,+CACrBC,gBAAiB,+CACjBC,wBAAyB,+CACzBC,2BAA4B,+CAC5BC,2BAA4B,+CAC5BC,0BAA2B,+CAC3BC,2BAA4B,+CAC5BC,gCAAiC,+CACjCC,6BAA8B,+CAC9BC,4BAA6B,+CAC7BC,kBAAmB,+CACnBC,4BAA6B,+CAC7BC,gCAAiC,+CACjCC,gCAAiC,+CACjCC,+BAAgC,+CAChCC,+BAAgC,+CAChCC,0BAA2B,+CAC3BC,sBAAuB,+CACvBC,4BAA6B,+CAC7BC,sBAAuB,+CACvBC,gBAAiB,+CACjBC,mBAAoB,+CACpBC,mBAAoB,+CACpBC,oBAAqB,+CACrBC,iBAAkB,+CAClBC,YAAa,+CACbC,oBAAqB,+CACrBC,mBAAoB,+CACpBC,kBAAmB,+CACnBC,sBAAuB,+CACvBC,yBAA0B,+CAC1BC,6BAA8B,+CAC9BC,uBAAwB,+CACxBC,uBAAwB,+CACxBC,0BAA2B,+CAC3BC,sBAAuB,+CACvBC,4BAA6B,+CAC7BC,0BAA2B,+CAC3BC,iBAAkB,+CAClBC,mBAAoB,+CACpBC,iCAAkC,+CAClCC,oCAAqC,+CACrCC,iCAAkC,+CAClCC,oCAAqC,+CACrCC,mCAAoC,+CACpCC,mCAAoC,+CACpCC,sCAAuC,+CACvCC,wBAAyB,+CACzBC,wBAAyB,+CACzBC,2BAA4B,+CAC5BC,iBAAkB,+CAElBC,gBAAiB,+CACjBC,kBAAmB,+CACnBC,oBAAqB,+CACrBC,6BAA8B,+CAC9BC,2BAA4B,+CAC5BC,gBAAiB,+CACjBC,sBAAuB,+CACvBC,uBAAwB,+CACxBC,kBAAmB,+CACnBC,6BAA8B,+CAC9BC,sBAAuB,gDAGZzN,GAA4B,CACvC0N,eAAgB,+CAChBC,iBAAkB,+CAClBC,OAAQ,+CACRC,6BAA8B,gDAI1B5N,GAAqB,CACzBF,EAAY8D,uBACZ9D,EAAY+D,iBACZ/D,EAAYgE,kBACZhE,EAAYkE,kBACZlE,EAAYmE,uBACZnE,EAAYoE,oBACZpE,EAAYqE,kBACZrE,EAAYsE,qBACZtE,EAAYuE,qBACZvE,EAAYwE,kBACZxE,EAAY0E,mBACZ1E,EAAY2E,sBACZ3E,EAAY4E,oBACZ5E,EAAY6E,qBACZ7E,EAAY8E,uBACZ9E,EAAY+E,qBACZ/E,EAAYgF,yBACZhF,EAAYqF,qBACZrF,EAAYiF,iBACZjF,EAAYkF,mBACZlF,EAAYmF,iBACZnF,EAAYoF,yBACZpF,EAAYuF,oBACZvF,EAAYwF,6BACZxF,EAAYyF,mBACZzF,EAAY0F,wBACZ1F,EAAY2F,yBACZ3F,EAAY4F,uBACZ5F,EAAY6F,uBACZ7F,EAAY8F,sBACZ9F,EAAY+F,wBACZ/F,EAAY0G,aACZ1G,EAAY2G,mBACZ3G,EAAY4G,+BACZ5G,EAAY6G,+BACZ7G,EAAY8G,iBACZ9G,EAAY+G,oBACZ/G,EAAYgH,qBACZhH,EAAYiH,mBACZjH,EAAYkH,iBACZlH,EAAYmH,aACZnH,EAAYoH,6BACZpH,EAAYqH,6BACZrH,EAAYyH,0BACZzH,EAAY0H,0BACZ1H,EAAYuH,4BACZvH,EAAYwH,0BACZxH,EAAY6H,YACZ7H,EAAY8H,gBACZ9H,EAAY+H,4BACZ/H,EAAYgI,uCACZhI,EAAYiI,oCACZjI,EAAYkI,+BACZlI,EAAYmI,qCACZnI,EAAYoI,uCACZpI,EAAYqI,YACZrI,EAAYoJ,uBACZpJ,EAAY6L,uBACZ7L,EAAYsI,2BACZtI,EAAYuI,2BACZvI,EAAYwI,0BACZxI,EAAYyI,2BACZzI,EAAY0I,gCACZ1I,EAAY2I,6BACZ3I,EAAY6I,uCACZ7I,EAAY4I,mCACZ5I,EAAYwJ,kBACZxJ,EAAYqJ,yBACZrJ,EAAY8I,eACZ9I,EAAY+I,mBACZ/I,EAAYsK,4BACZtK,EAAYyK,gCACZzK,EAAYsJ,iBACZtJ,EAAYyJ,0BACZzJ,EAAY+J,wBACZ/J,EAAYgK,2BACZhK,EAAYiK,2BACZjK,EAAYkK,0BACZlK,EAAYmK,2BACZnK,EAAYoK,gCACZpK,EAAYqK,6BACZrK,EAAYwK,4BACZxK,EAAY0K,gCACZ1K,EAAYiL,gBACZjL,EAAYwL,mBACZxL,EAAY0L,sBACZ1L,EAAY2L,yBACZ3L,EAAY4L,6BACZ5L,EAAY8L,uBACZ9L,EAAYkM,0BACZlM,EAAY2K,+BACZ3K,EAAY4K,+BACZ5K,EAAY+M,gBAAgB,EAGxB5M,GAAqC,CACzCR,GAAe2C,eACf3C,GAAeoC,eACf/B,EAAYwN,iBAAiB,EAGzBpN,GAA2C,CAC/C,CAACX,GAAoBiB,SAAS,EAAG,+CACjC,CAACjB,GAAoBkB,QAAQ,EAAG,+CAChC,CAAClB,GAAoBmB,WAAW,EAAG,+CACnC,CAACnB,GAAoBoB,KAAK,EAAG,+CAC7B,CAACpB,GAAoBqB,IAAI,EAAG,+CAC5B,CAACrB,GAAoBsB,wBAAwB,EAAG,+CAChD,CAACtB,GAAoBuB,kBAAkB,EAAG,+CAC1C,CAACvB,GAAoBwB,sBAAsB,EAAG,+CAC9C,CAACjB,EAAYsK,2BAA2B,EAAG,+CAC3C,CAACtK,EAAYiJ,qBAAqB,EAAG,+CACrC,CAACvJ,GAAuBwB,gBAAgB,EAAG,+CAC3C,CAACxB,GAAuByB,gBAAgB,EAAG,+CAC3C,CAACzB,GAAuB0B,cAAc,EAAG,gDAGrCf,GAA2C,CAC/C,CAACZ,GAAoBiB,SAAS,EAAG,+CACjC,CAACjB,GAAoBkB,QAAQ,EAAG,+CAChC,CAAClB,GAAoBmB,WAAW,EAAG,+CACnC,CAACnB,GAAoBoB,KAAK,EAAG,+CAC7B,CAACpB,GAAoBqB,IAAI,EAAG,+CAC5B,CAACrB,GAAoBsB,wBAAwB,EAAG,+CAChD,CAACtB,GAAoBuB,kBAAkB,EAAG,+CAC1C,CAACvB,GAAoBwB,sBAAsB,EAAG,+CAC9C,CAACjB,EAAYsK,2BAA2B,EAAG,+CAC3C,CAACtK,EAAYiJ,qBAAqB,EAAG,+CACrC,CAACvJ,GAAuBwB,gBAAgB,EAAG,+CAC3C,CAACxB,GAAuByB,gBAAgB,EAAG,+CAC3C,CAACzB,GAAuB0B,cAAc,EAAG,gDAI9Bd,IAAe,IAAA,CAAtB,MAAOA,CAAe,CAC1ByN,YAA6BC,EAAsC,CAAtC,KAAAA,mBAAAA,CAAyC,CAGtEC,WAAWC,EAAkB,CAa3B,GAZIC,OAAOC,OAAOzO,EAAc,EAAE0O,SAASH,CAAU,GAIjDC,OAAOC,OAAOnO,EAAyB,EAAEoO,SAASH,CAAU,GAI5DhO,GAASmO,SAASH,CAAU,GAI5BC,OAAOC,OAAOpO,CAAW,EAAEqO,SAASH,CAAU,EAChD,OAAOA,EAIT,OADoB,KAAKF,mBAAmBM,eAAc,EACvC,CACjB,KAAKC,GAAYC,KACf,OAAW,CAACC,EAAKC,CAAK,IAAKP,OAAOQ,QAAQvO,EAAY,EACpD,GAAIsO,IAAUR,GAAcO,IAAQP,EAClC,OAAOQ,EAGX,MAAM,IAAIE,MACR,uBAAuBV,CAAU,mBAAmB,KAAKF,mBAAmBa,qBAAoB,CAAE,cAAc,EAEpH,KAAKN,GAAYO,KACf,OAAW,CAACL,EAAKC,CAAK,IAAKP,OAAOQ,QAAQtO,EAAY,EACpD,GAAIqO,IAAUR,GAAcO,IAAQP,EAClC,OAAOQ,EAGX,MAAM,IAAIE,MACR,uBAAuBV,CAAU,mBAAmB,KAAKF,mBAAmBa,qBAAoB,CAAE,cAAc,EAEpH,QACE,MAAM,IAAID,MACR,wBAAwB,KAAKZ,mBAAmBa,qBAAoB,CAAE,mCAAmC,CAE/G,CACF,CAGAE,2BAA2BC,EAA+Bd,EAAkB,CAC1E,GAAI,CAACc,EAAUC,OACb,OAAO,KAGT,IAAMC,EAAU,KAAKjB,WAAWC,CAAU,EACpCiB,EAAaH,EAAUC,OAAOG,KAAMC,GAAUA,EAAMH,UAAYA,CAAO,EAC7E,OAAKC,GACI,IAGX,CAEAG,yBAAyBN,EAA+Bd,EAAoBqB,EAAmB,CACxFP,EAAUC,SACbD,EAAUC,OAAS,CAAA,GAGrB,IAAMC,EAAU,KAAKjB,WAAWC,CAAU,EACpCiB,EAAaH,EAAUC,OAAOG,KAAMC,GAAUA,EAAMH,UAAYA,CAAO,EACvER,EAA6B,CACjCQ,QAAAA,EACAK,YAAAA,GAEF,OAAKJ,EAGHA,EAAWI,YAAcb,EAAMa,YAF/BP,EAAUC,OAAOO,KAAKd,CAAK,EAItBM,CACT,CAEAS,wBAAwBJ,EAAa,CACnC,OAAQA,EAAK,CACX,IAAK,WACH,OAAOrP,EAAY+D,iBACrB,IAAK,iBACH,OAAO/D,EAAYmH,aACrB,IAAK,yBACH,OAAOnH,EAAYqE,kBACrB,IAAK,uBACH,OAAOrE,EAAYmE,uBACrB,IAAK,kBACH,OAAOnE,EAAYwE,kBACrB,IAAK,iBACH,OAAOxE,EAAYiF,iBACrB,IAAK,sBACH,OAAOjF,EAAY2E,sBACrB,IAAK,iBACH,OAAO3E,EAAYmF,iBACrB,IAAK,mBACH,OAAOnF,EAAYkF,mBACrB,IAAK,oBACH,OAAOlF,EAAY4E,oBACrB,IAAK,oBACH,OAAO5E,EAAYuF,oBACrB,IAAK,oBACH,OAAOvF,EAAY2F,yBACrB,IAAK,sBACH,OAAO3F,EAAY8F,sBACrB,IAAK,uBACH,OAAO9F,EAAY6F,uBACrB,IAAK,wBACH,OAAO7F,EAAY+F,wBACrB,IAAK,WACH,OAAO/F,EAAY0G,aACrB,IAAK,mBACH,OAAO1G,EAAY8G,iBACrB,IAAK,cACH,OAAO9G,EAAY+G,oBACrB,IAAK,eACH,OAAO/G,EAAYgH,qBACrB,IAAK,WACH,OAAOhH,EAAYkH,iBACrB,IAAK,0BACH,OAAOlH,EAAYyH,0BACrB,IAAK,6BACH,OAAOzH,EAAYoH,6BACrB,IAAK,6BACH,OAAOpH,EAAYqH,6BACrB,IAAK,0BACH,OAAOrH,EAAY0H,0BACrB,QACE,MAAO,EACX,CACF,CAEAgI,2BAA2BT,EAAgB,CACzC,IAAM/O,EAAqB,CAAA,EAC3B+O,OAAAA,EAAOU,QAASN,GAAS,CACvB,IAAMO,EAAK,KAAKH,wBAAwBJ,CAAK,EACzCO,GACF1P,EAASsP,KAAK,UAAUI,CAAE,EAAE,CAEhC,CAAC,EACM1P,CACT,CAEA2P,0BAA0BC,EAAqB,CAC7C,GAAI,CAACA,EAAW,MAAO,CAAA,EACvB,IAAMC,EAAc,CAAA,EACpB,QAAWV,KAASS,EAAUE,SACZF,EAAUG,IAAIZ,CAAK,GACtBa,OACXH,EAAYP,KAAKH,CAAK,EAG1B,OAAO,KAAKK,2BAA2BK,CAAW,CACpD,CAEAI,0BAA0BjC,EAAkB,CAC1C,OAAO/N,GAAyBkO,SAASH,CAAU,CACrD,iDAjKW5N,GAAe8P,EAAAC,EAAA,CAAA,CAAA,CAAA,kCAAf/P,EAAegQ,QAAfhQ,EAAeiQ,UAAAC,WADF,MAAM,CAAA,CAAA,SACnBlQ,CAAe,GAAA,ICrY5B,IAsBamQ,GAtBbC,GAAAC,EAAA,cAsBaF,IAAc,IAAA,CAArB,MAAOA,CAAc,CACzBG,YAA6BC,EAAsB,CAAtB,KAAAA,QAAAA,CAAyB,CAEtDC,gBAAgBC,EAAwC,CACtD,OAAO,KAAKF,QAAQG,cAAcD,CAAO,CAC3C,CAEAE,gBAAgBF,EAAwC,CACtD,OAAO,KAAKF,QAAQK,cAAcH,CAAO,CAC3C,CAEAI,kBAAkBJ,EAA0C,CAC1D,OAAO,KAAKF,QAAQO,gBAAgBL,CAAO,CAC7C,CAEAM,gBAAgBN,EAAwC,CACtD,OAAO,KAAKF,QAAQS,cAAcP,CAAO,CAC3C,CAEAQ,YAAYR,EAAuC,CACjD,OAAO,KAAKF,QAAQW,aAAaT,CAAO,CAC1C,CAEAU,mBAAmBV,EAAoC,CACrD,OAAO,KAAKF,QAAQa,oBAAoBX,CAAO,CACjD,CAEAY,eAAeZ,EAA0C,CACvD,OAAO,KAAKF,QAAQe,gBAAgBb,CAAO,CAC7C,CAEAc,iBAAiBd,EAAyC,CACxD,OAAO,KAAKF,QAAQiB,wBAAwBf,CAAO,CACrD,iDAjCWN,GAAcsB,EAAAC,EAAA,CAAA,CAAA,CAAA,kCAAdvB,EAAcwB,QAAdxB,EAAcyB,UAAAC,WADD,MAAM,CAAA,CAAA,SACnB1B,CAAc,GAAA,ICtB3B,IAwBa2B,GAxBbC,GAAAC,EAAA,cAwBaF,IAAc,IAAA,CAArB,MAAOA,CAAc,CACzBG,YAA6BC,EAA6B,CAA7B,KAAAA,QAAAA,CAAgC,CAE7DC,gBAAgBC,EAAwC,CACtD,OAAO,KAAKF,QAAQG,cAAcD,CAAO,CAC3C,CAEAE,gBAAgBF,EAAwC,CACtD,OAAO,KAAKF,QAAQK,cAAcH,CAAO,CAC3C,CAEAI,kBAAkBJ,EAA0C,CAC1D,OAAO,KAAKF,QAAQO,gBAAgBL,CAAO,CAC7C,CAEAM,gBAAgBN,EAAwC,CACtD,OAAO,KAAKF,QAAQS,cAAcP,CAAO,CAC3C,CAEAQ,YAAYR,EAAuC,CACjD,OAAO,KAAKF,QAAQW,cAAcT,CAAO,CAC3C,CAEAU,mBAAmBV,EAAoC,CACrD,OAAO,KAAKF,QAAQa,qBAAqBX,CAAO,CAClD,CAEAY,eAAeZ,EAA0C,CACvD,OAAO,KAAKF,QAAQe,gBAAgBb,CAAO,CAC7C,CAEAc,iBAAiBd,EAAyC,CACxD,OAAO,KAAKF,QAAQiB,wBAAwBf,CAAO,CACrD,CAEAgB,gBACEhB,EAA+C,CAE/C,OAAO,KAAKF,QAAQmB,uBAAuBjB,CAAO,CACpD,iDAvCWN,GAAcwB,EAAAC,EAAA,CAAA,CAAA,CAAA,kCAAdzB,EAAc0B,QAAd1B,EAAc2B,UAAAC,WADD,MAAM,CAAA,CAAA,SACnB5B,CAAc,GAAA,ICzB3B,IAwBa6B,GAxBbC,GAAAC,EAAA,KAoBAC,cAIaH,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,CAChCI,YAA6BC,EAAyC,CAAzC,KAAAA,mBAAAA,CAA4C,CAEzEC,gBAAgBC,EAAwC,CACtD,OAAO,KAAKF,mBAAmBG,eAAeD,CAAO,CACvD,CAEAE,gBAAgBF,EAAwC,CACtD,OAAO,KAAKF,mBAAmBK,eAAeH,CAAO,CACvD,CAEAI,eAAeJ,EAA0C,CACvD,OAAO,KAAKF,mBAAmBO,iBAAiBL,CAAO,EAAEM,KACvDC,EAAKC,IACI,CACLC,WAAYD,EAASE,YAExB,CAAC,CAEN,CAEAC,iBAAiBX,EAAyC,CACxD,OAAO,KAAKF,mBAAmBc,yBAAyBZ,CAAO,CACjE,CAEAa,YAAYb,EAAuC,CACjD,OAAO,KAAKF,mBAAmBgB,eAAed,CAAO,EAAEM,KACrDC,EAAKC,IACI,CACLC,WAAYD,EAASE,YAAc,CAAA,EACnCK,eAAgBP,EAASO,gBAAkB,CAAA,GAE9C,CAAC,CAEN,CAEAC,mBAAmBhB,EAAoC,CACrD,OAAO,KAAKF,mBAAmBmB,oBAAoBjB,CAAO,CAC5D,CAEAkB,gBAAgBlB,EAAwC,CACtD,OAAO,KAAKF,mBAAmBqB,eAAe,CAC5CC,UAAWpB,EAAQoB,UACnBC,SAAUrB,EAAQsB,UAClBC,UAAWvB,EAAQuB,UACpB,CACH,CAEAC,kBAAkBxB,EAA0C,CAC1D,OAAO,KAAKF,mBAAmB2B,iBAAiBzB,CAAO,CACzD,iDAlDWP,GAAqBiC,EAAAC,EAAA,CAAA,CAAA,CAAA,kCAArBlC,EAAqBmC,QAArBnC,EAAqBoC,UAAAC,WADR,MAAM,CAAA,CAAA,SACnBrC,CAAqB,GAAA,ICxBlC,IAOasC,GAPbC,GAAAC,EAAA,KACAC,KACAC,cAKaJ,IAAsB,IAAA,CAA7B,MAAOA,CAAsB,CACjCK,YAA6BC,EAA+B,CAA/B,KAAAA,cAAAA,CAAkC,CAE/DC,gBACEC,EACAC,EACAC,EACAC,EAAmC,CAEnC,OAAQA,GAAkBC,EAAG,EAAE,GAAGC,KAChCC,EAAWC,GACT,KAAKT,cAAcU,iBAAiBN,EAAY,CAC9CF,QAASA,EACTS,SAAU,GACVC,WAAYT,EACZU,iBAAkBJ,EACnB,CAAC,EAEJK,EAAKC,GAAaA,GAAUC,SAAW,CAAA,CAAE,CAAC,CAE9C,iDApBWtB,GAAsBuB,EAAAC,EAAA,CAAA,CAAA,CAAA,kCAAtBxB,EAAsByB,QAAtBzB,EAAsB0B,SAAA,CAAA,CAAA,SAAtB1B,CAAsB,GAAA,ICPnC,IA4CsB2B,GAgFAC,IA5HtBC,GAAAC,EAAA,KAMAC,cAsCsBJ,IAAyB,IAAA,CAAzC,MAAgBA,CAAyB,CAC7CK,YAA+BC,EAAgC,CAAhC,KAAAA,gBAAAA,CAAmC,CAE1DC,cACNC,EACAC,EACAC,EAA+B,CAE/B,IAAMC,EAAaH,EAAgBI,SAASC,IAAKC,GACxC,KAAKR,gBAAgBS,2BAA2BN,EAAWK,CAAO,CAC1E,EAED,GAAI,cAAeL,EAAW,CAC5B,IAAMO,EAAkBP,EAAoCQ,UAC5DN,EAAWO,KAAK,CAAEJ,QAAS,YAAaK,YAAaH,CAAc,CAAE,CACvE,CAEAN,EAAWF,EAAgBY,iBAAiBC,EAAE,EAAI,CAChDC,SAAU,SACVC,MAAOZ,EACPa,UAAWhB,EAAgBiB,oBAE/B,CAEUC,eACRC,EACAlB,EACAC,EAA+B,CAE/B,QAAWF,KAAmBmB,EAC5B,KAAKpB,cAAcC,EAAiBC,EAAWC,CAAU,CAE7D,CAEUkB,iBAAiBC,EAAkCC,EAA0B,CAUrF,MATsB,CAEpB,GAAGA,EACH,GAAGD,EAAchB,IAAKkB,GAAkBC,GAAAC,GAAA,GAAKF,GAAL,CAAmBG,OAAQ,EAAI,EAAG,CAAC,EAExCC,OACnC,CAACC,EAAQC,EAAOC,IAASA,EAAKC,UAAWC,GAAMA,EAAEnB,KAAOe,EAAOf,EAAE,IAAMgB,CAAK,CAIhF,CAEUI,sBACRC,EACAC,EAA8B,CAE9B,QAAWC,KAAYD,EAAW,CAChC,IAAME,EAAmBH,EAAQH,UAAWO,GAAMA,EAAEhC,UAAY8B,EAAS9B,OAAO,EAC5E+B,GAAoB,GAAKH,EAAQG,CAAgB,IACnDH,EAAQG,CAAgB,EAAEE,UAAYH,EAASI,MAEnD,CACA,OAAON,CACT,iDA1DoB1C,GAAyBiD,EAAAC,EAAA,CAAA,CAAA,CAAA,kCAAzBlD,EAAyBmD,QAAzBnD,EAAyBoD,SAAA,CAAA,CAAA,SAAzBpD,CAAyB,GAAA,EAgFzBC,KAAkC,IAAA,CAAlD,MAAgBA,UAA0CD,EAAyB,CACvFqD,eAAe5C,EAA6B,CAC1C,IAAM6C,EAAO,KAAKhD,gBAAgBiD,WAAWC,EAAYC,YAAY,EAErE,OADiBhD,EAAUiD,QAAQC,KAAMb,GAAMA,EAAEhC,UAAYwC,CAAI,GAChDnC,aAAe,EAClC,CAGAyC,mBAAmBnD,EAA6B,CAC9C,MAAO,EACT,sEAVoBR,CAAiC,IAAA4D,GAAjC5D,CAAiC,CAAA,CAAA,GAAA,CAAA,kCAAjCA,EAAiCkD,QAAjClD,EAAiCmD,SAAA,CAAA,CAAA,SAAjCnD,CAAkC,GAAA,IC1HxD,IAKa6D,GAEAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAEAC,GA6GAC,GA3HbC,GAAAC,EAAA,KAKaV,GAAiC,CAACW,GAAgC,GAAI,GAAG,EAEzEV,GAAgC,GAChCC,GAA4B,CAAC,UAAW,yBAAyB,EACjEC,GAAe,GACfC,GAAgB,CAAC,SAAS,EAC1BC,GAAc,UACdC,GAA0B,GAE1BC,GAAc,CACzBK,QAAS,CACPC,KAAM,UACNC,UAAW,CACTC,KAAM,OACNC,MAAO,QACPC,OAAQ,SACRC,KAAM,oBACNC,QAAS,wBAEXC,KAAM,YAERC,QAAS,CACPR,KAAM,UACNC,UAAW,CACTC,KAAM,OACNC,MAAO,QACPC,OAAQ,SACRC,KAAM,oBACNC,QAAS,uBACTG,SAAU,YAEZC,QAAS,mBAEXC,YAAa,CACXX,KAAM,cACNC,UAAW,CACTC,KAAM,OACNC,MAAO,QACPC,OAAQ,SACRC,KAAM,oBACNC,QAAS,yBAGbM,KAAM,CACJZ,KAAM,OACNC,UAAW,CACTC,KAAM,OACNC,MAAO,UAGXU,WAAY,CACVb,KAAM,aACNC,UAAW,CACTa,KAAM,SAGVC,SAAU,CACRf,KAAM,WACNC,UAAW,CACTe,WAAY,oBAGhBC,cAAe,CACbjB,KAAM,gBACNC,UAAW,CACTC,KAAM,SAGVgB,kBAAmB,CACjBlB,KAAM,qBAERmB,cAAe,CACbnB,KAAM,oCACNC,UAAW,CACTC,KAAM,OACNC,MAAO,QACPC,OAAQ,SACRC,KAAM,oBACNC,QAAS,yBAGbc,oBAAqB,sBACrBC,YAAa,CACXrB,KAAM,eAERsB,MAAO,CACLtB,KAAM,SAERuB,eAAgB,CACdC,SAAU,CACRxB,KAAM,WACNC,UAAW,CACTC,KAAM,OACNG,KAAM,+BACNC,QAAS,sCAwBJX,GAAkB,IAAI8B,IAAkD,CACnF,CACE,UACA,IAAIA,IAAI,CACN,CAAC,UAAS,iBAAA,EACV,CAAC,cAAa,qBAAA,EACd,CAAC,eAAc,sBAAA,CAAwC,CACxD,CAAC,EAEJ,CACE,UACA,IAAIA,IAAI,CACN,CAAC,UAAS,iBAAA,EACV,CAAC,UAAS,iBAAA,EACV,CAAC,cAAa,qBAAA,EACd,CAAC,eAAc,sBAAA,CAAwC,CACxD,CAAC,EAEJ,CACE,cACA,IAAIA,IAAI,CACN,CAAC,UAAS,qBAAA,EACV,CAAC,UAAS,qBAAA,EACV,CAAC,eAAc,0BAAA,CAA4C,CAC5D,CAAC,EAEJ,CACE,eACA,IAAIA,IAAI,CACN,CAAC,UAAS,sBAAA,EACV,CAAC,UAAS,sBAAA,EACV,CAAC,cAAa,0BAAA,EACd,CAAC,eAAc,2BAAA,CAA6C,CAC7D,CAAC,CACH,CACF,IChKD,IAcaC,GAdbC,GAAAC,EAAA,KAUAC,KACAC,cAGaJ,IAAe,IAAA,CAAtB,MAAOA,CAAe,CAC1BK,YAC8CC,EAC3BC,EAAsC,CADX,KAAAD,OAAAA,EAC3B,KAAAC,gBAAAA,CAChB,CAEHC,eAAeC,EAAuC,CACpD,OAAO,KAAKH,OAAOI,WAAWC,KAC5BC,EAAWC,GAAc,KAAKN,gBAAgBC,eAAeM,GAAAC,GAAA,GAAKN,GAAL,CAAcI,UAAWA,CAAS,EAAE,EAAEF,KAAKK,GAAK,CAAC,CAAC,CAAC,CAAC,CAErH,CAEAC,eAAeC,EAA2B,CACxC,OAAO,KAAKZ,OAAOI,WAAWC,KAC5BC,EAAWC,GACT,KAAKN,gBAAgBU,eAAe,CAAEJ,UAAWA,EAAWK,SAAUA,CAAQ,CAAE,EAAEP,KAChFQ,EAAKC,GAAaA,EAASC,WAAW,EACtCL,GAAK,CAAC,CAAC,CACR,CACF,CAEL,CAEAM,mBAAmBC,EAAsB,CACvC,OAAO,KAAKjB,OAAOI,WAAWC,KAC5BC,EAAWC,GACT,KAAKN,gBACFiB,iBAAiB,CAAEX,UAAWA,EAAWU,aAAcA,CAAY,CAAE,EACrEZ,KAAKQ,EAAKC,GAAaA,EAASK,UAAU,CAAC,CAAC,CAChD,CAEL,CAEAC,eAAeR,EAA6BS,EAA6B,CAEvE,IADuBA,GAAWC,OAAOC,QAAU,KAC5B,EACrB,MAAM,IAAIC,MAAM,wEAAwE,EAE1F,OAAO,KAAKxB,OAAOI,WAAWC,KAC5BC,EAAWC,GACT,KAAKN,gBAAgBmB,eAAe,CAAEb,UAAWA,EAAWK,SAAUA,EAAUS,UAAWA,CAAS,CAAE,CAAC,EAEzGR,EAAI,IAAM,IAAI,CAAC,CAEnB,CAEAY,4BACEb,EACAS,EACAd,EAAwB,CAGxB,IADuBc,GAAWC,OAAOC,QAAU,KAC5B,EACrB,MAAM,IAAIC,MAAM,wEAAwE,EAE1F,GAAI,CAACjB,EACH,MAAM,IAAIiB,MAAM,gDAAgD,EAElE,OAAO,KAAKvB,gBACTmB,eAAe,CAAEb,UAAWA,EAAWK,SAAUA,EAAUS,UAAWA,CAAS,CAAE,EACjFhB,KAAKQ,EAAI,IAAM,IAAI,CAAC,CACzB,iDA7DWnB,GAAegC,EAEhBC,EAAiB,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,kCAFhBlC,EAAemC,QAAfnC,EAAeoC,SAAA,CAAA,CAAA,SAAfpC,CAAe,GAAA,ICd5B,IASMqC,GA0EOC,GAnFbC,GAAAC,EAAA,aASMH,GAA0C,CAC9C,QACA,oBACA,yBACA,iCACA,qCACA,iDACA,6DACA,0EACA,qEACA,2CACA,wCACA,sCACA,wCACA,2CACA,0CACA,2CACA,4CACA,yDACA,4CACA,0CACA,oDACA,mDACA,oDACA,qDACA,kEACA,qDACA,mDACA,mDACA,+CACA,gDACA,gDACA,kDACA,yDACA,oBACA,yCACA,kBACA,yBACA,2BACA,yBACA,yBACA,uBACA,mDACA,kDACA,2CACA,oBACA,qBACA,mBACA,0BACA,yBACA,uCACA,gCACA,mCACA,cACA,4BACA,6BACA,2BACA,0BACA,0BACA,oCACA,oCACA,kCACA,yBACA,+BACA,wDACA,+DACA,eACA,yDACA,wEACA,gDACA,iDAAiD,EAItCC,IAA4B,IAAA,CAAnC,MAAOA,CAA4B,CACvCG,YAA6BC,EAAkC,CAAlC,KAAAA,iBAAAA,CAAqC,CAE1DC,8BAA8BC,EAAuCC,EAA6B,CACxG,IAAMC,EAAsBF,IAAe,eAAiB,gBAAkBA,EAAWG,YAAW,EACpG,OAAKV,GAA8BW,SAASH,CAAqB,EAI1D,GAAGC,CAAmB,IAAID,CAAqB,IAHpDI,QAAQC,KAAK,mBAAmBL,CAAqB,qCAAqCD,CAAU,EAAE,EAC/F,WAAWC,CAAqB,GAG3C,CAEAM,2BACEP,EACAC,EAEAO,EAA0B,CAE1B,IAAMC,EAAiB,KAAKV,8BAA8BC,EAAYC,CAAqB,EACrFS,EAAc,KAAKZ,iBAAiBa,QAAQF,EAAgBD,CAAiB,EACnF,OAAIC,IAAmBC,GACrBL,QAAQC,KAAK,+CAA+CG,CAAc,EAAE,EAEvEC,CACT,CAEAE,wBAAwBZ,EAAqC,CAC3D,IAAME,EAAsBF,IAAe,eAAiB,gBAAkBA,EAAWG,YAAW,EAEpG,OADyB,KAAKL,iBAAiBa,QAAQ,gBAAgBT,CAAmB,EAAE,GACjE,KAAKJ,iBAAiBa,QAAQ,qBAAqB,CAChF,iDA9BWjB,GAA4BmB,EAAAC,EAAA,CAAA,CAAA,CAAA,kCAA5BpB,EAA4BqB,QAA5BrB,EAA4BsB,SAAA,CAAA,CAAA,SAA5BtB,CAA4B,GAAA,ICnFzC,IAEMuB,GAiBAC,GAMOC,GAzBbC,GAAAC,EAAA,KAAAC,KAEML,GAAoBA,CAACM,EAAsCC,IAAkD,CACjH,IAAMC,EAAgBF,EAAaG,cAAcC,QAAU,CAAA,EACrDC,EAAiBJ,EAAcE,cAAcC,QAAU,CAAA,EACvDE,EAAsBJ,EAAcK,KAAI,EACxCC,EAAuBH,EAAeE,KAAI,EAEhD,GAAID,EAAoBG,SAAWD,EAAqBC,OACtD,MAAO,GAET,OAAW,CAACC,EAAOC,CAAK,IAAKL,EAAoBM,QAAO,EACtD,GAAID,IAAUH,EAAqBE,CAAK,EACtC,MAAO,GAGX,MAAO,EACT,EAEMf,GAAqBA,CAACkB,EAAiCC,IAA6C,CACxG,IAAMC,GAAiBF,EAAQG,eAAeL,OAAS,MAAQG,EAASE,eAAeL,OAAS,GAC1FM,GAAgBJ,EAAQG,eAAeE,cAAgB,OAASJ,EAASE,eAAeE,cAAgB,IAC9G,OAAOH,GAAiBE,CAC1B,EAEarB,GAAuBA,CAClCI,EACAC,EACAkB,IACW,CACX,OAAQA,EAAS,CACf,KAAKC,GAAUC,mBACb,OAAQrB,GAAcsB,cAAgB,MAAQrB,GAAeqB,cAAgB,GAC/E,KAAKF,GAAUG,iBACb,OAAQvB,GAAcwB,YAAc,MAAQvB,EAAcuB,YAAc,GAC1E,KAAKJ,GAAUK,kBACf,KAAKL,GAAUM,oBACf,KAAKN,GAAUO,iBACb,OAAQ3B,GAAc4B,aAAe,OAAS3B,GAAe2B,aAAe,IAC9E,KAAKR,GAAUS,iBACb,OAAQ7B,GAAc8B,kBAAoB,OAAS7B,GAAe6B,kBAAoB,IACxF,KAAKV,GAAUW,mBACb,OAAQ/B,GAAcgC,cAAgB,OAAY/B,GAAe+B,cAAgB,IACnF,KAAKZ,GAAUa,eACf,KAAKb,GAAUc,uBACb,OAAOxC,GAAkBM,EAAcC,CAAa,EACtD,KAAKmB,GAAUe,oBACf,KAAKf,GAAUgB,gBACb,OAAOpC,EAAaqC,WAAWC,QAAO,IAAOrC,EAAcoC,WAAWC,QAAO,EAC/E,KAAKlB,GAAUmB,oBACb,OAAO5C,GAAmBK,EAAcC,CAAa,EACvD,QACE,MAAO,EACX,CACF,ICtDA,IAkDMuC,GAQOC,GA1DbC,GAAAC,EAAA,KAEAC,KAkBAC,KAgBAC,KAYAC,4BAEMP,GAAuB,IAQhBC,IAAc,IAAA,CAArB,MAAOA,CAAc,CACzBO,YAC8CC,EACIC,EAC/BC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAA0D,CAR/B,KAAAR,OAAAA,EACI,KAAAC,oBAAAA,EAC/B,KAAAC,iBAAAA,EACA,KAAAC,yBAAAA,EACA,KAAAC,mCAAAA,EACA,KAAAC,yBAAAA,EACA,KAAAC,mCAAAA,EACA,KAAAC,mBAAAA,EACA,KAAAC,6BAAAA,CAChB,CAEKC,uBAAuBC,EAAwBC,EAAkD,CACvG,IAAMC,GAAyBD,EAAmBE,QAAU,CAAA,GAAIC,OAC7DC,GAAMA,EAAEC,WAAaC,GAAcC,iCAAiC,EAGvE,GAAIN,EAAsBO,OAAQ,CAChC,IAAMC,EAAaR,EAAsB,CAAC,EACpCS,EAAUD,EAAWE,SAASC,iBAAiBF,SAAW,GAC1DG,EAAmBb,EAAmBc,eAAeC,IAAIL,CAAO,EACtE,MAAID,EAAWO,QACP,IAAIC,MACR,KAAKpB,6BAA6BqB,2BAA2BnB,EAAYU,GAAYO,QAAS,CAC5FG,MAAON,GAAkBO,WAAWC,YAAW,GAAM,GACtD,CAAC,EAGA,IAAIJ,KACZ,CACF,CAMAK,qBAAqBvB,EAAwBwB,EAAsB,CACjE,OAAOC,EAAG,CACRC,aAAc,CAAA,EACdC,eAAgB,CACdC,WAAY,GACZC,QAAS,IAEZ,EAAEC,KACDC,GAAQC,GACDA,GAAML,gBAAgBE,QAGpB,KAAKI,0BACVjC,EACA,CACEkC,OAAQF,EAAKL,eAAeC,WAC5BO,SAAUtD,IAEZ2C,CAAa,EARNY,EAUV,EACDC,GAAO,CAACC,EAAgCC,IAAQ,CAAC,GAAGD,EAAK,GAAIC,GAAKb,cAAgB,CAAA,CAAG,EAAG,CAAA,CAAE,CAAC,CAE/F,CAEQO,0BACNjC,EACAwC,EACAhB,EAAsB,CAGtB,IAAMiB,EAAwB,KAAKlD,oBAAoBkD,uBAAyBhB,EAAG,CAAA,CAA0B,EAC7G,OAAOiB,EAAc,CAAC,KAAKpD,OAAOqD,WAAYF,CAAqB,CAAC,EAAEX,KACpEc,GAAK,CAAC,EACNC,EAAU,CAAC,CAACC,EAAWC,CAAO,IAAK,CACjC,IAAMC,EAAU,CACdC,cAAejD,EACfkD,cAAeV,EACfW,iBAAkB3B,GAAiB,IAErC,OAAIsB,IAAc,IAAMC,EAAQK,SAAWL,EAAQM,kBAAoBN,EAAQM,iBAAiB5C,OAAS,EAChG,KAAKf,mCAAmC4D,6BAA6BC,GAAA,CAC1EC,kBAAmBT,EAAQK,QAC3BK,WAAYV,EAAQM,kBACjBL,EACJ,EAEM,KAAKvD,yBAAyBiE,gBAAgBH,GAAA,CAAET,UAAWA,GAAcE,EAAS,CAE7F,CAAC,CAAC,CAEN,CAMAW,0BAA0B3D,EAAwBwB,EAAsB,CACtE,OAAOC,EAAG,CACRC,aAAc,CAAA,EACdC,eAAgB,CACdC,WAAY,GACZC,QAAS,IAEZ,EAAEC,KACDC,GAAQC,GACDA,GAAML,gBAAgBE,QAGpB,KAAK+B,+BACV5D,EACA,CACEkC,OAAQF,EAAKL,eAAeC,WAC5BO,SAAUtD,IAEZ2C,CAAa,EARNY,EAUV,EACDC,GAAO,CAACC,EAA+BC,IAC9B,CAAC,GAAGD,EAAK,GAAIC,GAAKsB,aAAe,CAAA,CAAG,EAC1C,CAAA,CAAE,CAAC,CAEV,CAEQD,+BACN5D,EACAwC,EACAhB,EAAsB,CAEtB,IAAMiB,EAAwB,KAAKlD,oBAAoBkD,uBAAyBhB,EAAG,CAAA,CAA0B,EAC7G,OAAOiB,EAAc,CAAC,KAAKpD,OAAOqD,WAAYF,CAAqB,CAAC,EAAEX,KACpEc,GAAK,CAAC,EACNC,EAAU,CAAC,CAACC,EAAWC,CAAO,IAAK,CACjC,IAAMC,EAAU,CACdC,cAAejD,EACfkD,cAAeV,EACfW,iBAAkB3B,GAAiB,IAErC,OAAIsB,IAAc,IAAMC,EAAQK,SAAWL,EAAQM,kBAAoBN,EAAQM,iBAAiB5C,OAAS,EAChG,KAAKb,mCAAmCkE,6BAA6BP,GAAA,CAC1EC,kBAAmBT,EAAQK,QAC3BK,WAAYV,EAAQM,kBACjBL,EACJ,EAEM,KAAKrD,yBAAyBoE,gBAAgBR,GAAA,CAAET,UAAWA,GAAcE,EAAS,CAE7F,CAAC,CAAC,CAEN,CAEQgB,8BAA8BC,EAAqC,CACzE,MAAO,CACLC,YAAaD,EAAcC,YAC3BC,SAAUF,EAAcE,UAAY,CAAA,EAExC,CAEAC,8BACEpE,EACAwB,EAAkC,CAElC,OAAQA,GAAiBC,EAAG,EAAE,GAAGK,KAC/Be,EAAWwB,GAAY,KAAKV,0BAA0B3D,EAAYqE,CAAO,CAAC,EAC1EC,EAAKC,GAAmBA,EAAeD,IAAI,KAAKN,6BAA6B,CAAC,CAAC,CAEnF,CAEQQ,kCAAkCC,EAA0C,CAClF,OAAOA,EAAgBH,IAAKI,IACnB,CACL/D,QAAS+D,EAAe/D,SAAW,GACnCgE,UAAWD,EAAeC,WAAaC,GAAUC,mBACjDxD,UAAWqD,EAAerD,WAAa,GACvCyD,iBAAkBJ,EAAeI,kBAAoB,GACrDC,gBAAiBL,EAAeK,iBAAmB,CAAA,EACnDC,aAAcN,EAAeM,cAAgB,GAC7CC,MAAO,KACPC,SAAUR,EAAeS,UAE5B,CACH,CAEAC,mBAAmBpF,EAAwBwB,EAAsB,CAC/D,OAAO,KAAKD,qBAAqBvB,EAAYwB,CAAa,EAAEM,KAC1DwC,EAAKG,GAAoB,KAAKD,kCAAkCC,CAAe,CAAC,EAChFY,GAAY,CAAEC,WAAY,EAAGC,SAAU,EAAI,CAAE,CAAC,CAElD,CAEQC,4BAA4BC,EAAuCd,EAAoB,CAC7F,OAAQA,EAAS,CACf,KAAKC,GAAUc,mBACb,OAAOD,EAAcE,aACvB,KAAKf,GAAUgB,oBACb,OAAOH,EAAcI,cACvB,KAAKjB,GAAUkB,kBACf,KAAKlB,GAAUmB,oBACf,KAAKnB,GAAUoB,iBACb,OAAOP,EAAcQ,YACvB,KAAKrB,GAAUsB,iBACb,OAAIT,EAAcU,iBACTV,EAAcU,iBAEhBV,EAAcQ,YACvB,KAAKrB,GAAUwB,mBACb,OAAOX,EAAcY,aACvB,KAAKzB,GAAU0B,eACf,KAAK1B,GAAU2B,uBACb,OAAOd,EAAce,cAAcC,QAAU,CAAA,EAC/C,KAAK7B,GAAU8B,oBACf,KAAK9B,GAAU+B,gBACb,OAAOlB,EAAcmB,UACvB,KAAKhC,GAAUiC,iBACb,OAAOpB,EAAcqB,WACvB,QACE,OAAO,IACX,CACF,CAEAC,qBACEC,EACAC,EACAtC,EAAoB,CAEpB,OAAOoC,GAAqBC,EAAcC,EAAetC,CAAS,CACpE,CAEQuC,uCACNC,EACAC,EAA6B,CAE7B,GAAI,CAACD,GAAaxG,SAAW,CAACyG,GAAWC,OACvC,OAGF,IAAMC,EAAsBF,EAAUC,OAAOE,KAAMC,GAC1CA,EAAe7G,UAAYwG,EAAYxG,OAC/C,EAEI2G,IAILH,EAAYlC,MAAQ,KAAKO,4BAA4B8B,EAAqBH,EAAYxC,SAAS,EACjG,CAEA8C,2CACEzH,EACA0H,EACAlG,EAAsB,CAEtB,OAAOmG,GAAS,CACd,KAAKnI,iBAAiBoI,eAAe5H,EAAY,CAAC0H,CAAW,EAAG,CAC9D,CAAEG,WAAY,EAAGC,cAAelD,GAAUsB,iBAAkB6B,YAAanD,GAAUsB,gBAAgB,CAAE,CACjE,EACtC,KAAKd,mBAAmBpF,EAAYwB,CAAa,CAAC,CACnD,EAAEM,KACDwC,EAAI,CAAC,CAAC0D,EAAkBtG,CAAY,IAAK,CACvC,GAAIsG,GAAkBC,YAAYxH,SAAW,GAAK,CAACuH,GAAkBC,aAAa,CAAC,EAAEP,YACnF,MAAM,IAAIxG,MAAM,KAAKrB,mBAAmBqI,QAAQ,2CAA2C,CAAC,EACvF,CACL,IAAMd,EAAYY,EAAiBC,WAAW,CAAC,EAC/CvG,EAAayG,QAASC,GAAS,CAC7B,KAAKlB,uCAAuCkB,EAAOhB,CAAS,CAC9D,CAAC,CACH,CACA,OAAO1F,CACT,CAAC,CAAC,CAEN,CAEA2G,mBACErI,EACAoH,EAA6B,CAE7B,IAAMkB,EAAoB,KAAK9I,iBAC5B+I,kBAAkBvI,EAAYoH,CAAS,EACvCtF,KAAKwC,EAAKkE,GAAaA,EAASrI,QAAU,CAAA,CAAE,CAAC,EAC1CsI,EAAkB,KAAKrD,mBAAmBpF,EAAYoH,EAAUjE,gBAAgB,EAAErB,KACtFwC,EAAKoE,GAAW,CACd,IAAMC,EAAY,IAAIC,IACtB,QAAWC,KAAUH,EACnBC,EAAUG,IAAID,EAAOlI,QAASkI,CAAM,EAEtC,OAAOF,CACT,CAAC,CAAC,EAEJ,OAAOhB,GAAS,CAACW,EAAmBG,CAAe,CAAC,EAAE3G,KACpDwC,EAAI,CAAC,CAACyE,EAAkBhI,CAAc,KAC7B,CACLZ,OAAQ4I,EACRhI,eAAgBA,GAEnB,CAAC,CAEN,CAEAiI,4BACEhJ,EACAqH,EACA7F,EAAsB,CAEtB,OAAOC,EAAG,IAAI,EAAEK,KACdwC,EAAI,IAAM+C,EAAOjH,OAAQgI,GAAUA,EAAMa,gBAAe,CAAE,EAAE3E,IAAK8D,GAAUA,EAAMc,WAAU,CAAE,CAAC,EAC9F5E,EAAK+C,GACHA,EAAOjH,OAAQ8I,GACNA,GAAYjD,cAAgB,EACpC,CAAC,EAEJpD,EAAWsG,GAAe,CACxB,IAAM/B,EAAgC,CACpCC,OAAQ8B,EACRhG,iBAAkB3B,GAEd4H,EAAsB,KAAKf,mBAAmBrI,EAAYoH,CAAS,EACzE,OAAOO,GAAS,CAAClG,EAAG0H,CAAW,EAAGC,CAAmB,CAAC,CACxD,CAAC,EACDvG,EAAU,CAAC,CAACsG,EAAalJ,CAAkB,IAAK,CAE9C,GADA,KAAKF,uBAAuBC,EAAYC,CAAkB,EACtD,CAACkJ,GAAa1I,OAChB,OAAOgB,EAAG,IAAI,EAEhB,IAAM2F,EAAgC,CACpCC,OAAQ8B,EACRhG,iBAAkB3B,GAGpB,OAAO,KAAKhC,iBAAiB6J,gBAAgBrJ,EAAYoH,CAAS,EAAEtF,KAClEwC,EAAKtC,IACHoF,EAAUM,YAAc1F,EAAK0F,YACtBN,EACR,CAAC,CAEN,CAAC,CAAC,CAEN,CAEAkC,4BACEtJ,EACA0H,EACAL,EACA7F,EAAsB,CAEtB,OAAO,KAAK6G,mBAAmBrI,EAAY,CACzC0H,YAAaA,EACbL,OAAQA,EAAO/C,IAAK8D,GAAUA,EAAMc,WAAU,CAAE,EAChD/F,iBAAkB3B,EACnB,EAAEM,KACDe,EAAW5C,GAAsB,CAC/B,KAAKF,uBAAuBC,EAAYC,CAAkB,EAE1D,IAAMsJ,EAAsBlC,EACzBjH,OAAQgI,GAAUA,EAAMa,gBAAe,CAAE,EACzC3E,IAAK8D,GAAUA,EAAMc,WAAU,CAAE,EACpC,OAAKK,GAAqB9I,OAInB,KAAKjB,iBACTgK,gBAAgBxJ,EAAY,CAC3B0H,YAAaA,EACbL,OAAQkC,EACRpG,iBAAkB3B,EACnB,EACAM,KACCwC,EAAI,KAAO,CACToD,YAAaA,EACbL,OAAQA,EAAO/C,IAAK8D,GAAUA,EAAMc,WAAU,CAAE,EAChD/F,iBAAkB3B,GAClB,CAAC,EAdEC,EAAG,IAAI,CAgBlB,CAAC,CAAC,CAEN,CAEAgI,kCACEzJ,EACA0H,EACAgC,EAAwC,CAAA,EACxClI,EAAsB,CAEtB,IAAMiH,EAAwD,KAAKnJ,OAAOqD,WAAWb,KACnFc,GAAK,CAAC,EACNC,EAAWC,GACT,KAAKrD,yBAAyBkK,oBAAoB,CAChD7G,UAAWA,EACXG,cAAejD,EACfmD,iBAAkB3B,EAClBb,QAAS+I,EAAepF,IAAKsF,GAAMA,EAAEjJ,OAAO,EAC7C,CAAC,EAEJ2D,EAAKkE,GAAa,CAAC,CAACA,GAAU9G,cAAgB8G,GAAU9G,YAAY,EACpE4C,EAAKoE,GAAW,CACd,IAAMC,EAAY,IAAIC,IACtB,QAAWiB,KAAKnB,EACTmB,GAAGlJ,SAGRgI,EAAUG,IAAIe,EAAElJ,QAASkJ,CAAC,EAE5B,OAAOlB,CACT,CAAC,EACDtD,GAAY,CAAC,CAAC,EAEVyE,EAAoB,KAAKtK,iBAC5BoI,eAAe5H,EAAY,CAAC0H,CAAW,EAAG,CACzC,CAAEG,WAAY,EAAGC,cAAelD,GAAUsB,iBAAkB6B,YAAanD,GAAUsB,gBAAgB,CAAE,CACjE,EACrCpE,KACCc,GAAK,CAAC,EACN0B,EAAKkE,GAAY,CACf,IAAMP,EAAaO,EAASP,YAAc,CAAA,EAC1C,OAAIA,EAAWxH,SAAW,GAAK,CAACwH,EAAW,CAAC,EAAEP,YACrC,KAEFO,EAAW,CAAC,CACrB,CAAC,EACD7H,GAAQgH,GAAc,CAAC,CAACA,CAAS,EACjC/B,GAAY,CAAC,CAAC,EAEZ0E,EAAUrH,EAAc,CAACoH,EAAmBrB,CAAe,CAAC,EAAE3G,KAClEwC,EAAI,CAAC,CAAC0F,EAAejJ,CAAc,IAAK,CACtC,IAAMkJ,EAAsBD,GAAe3C,QAAU,CAAA,EAC/C6C,EAAkF,CAAA,EACxF,QAAWjD,KAAiByC,EAAgB,CAC1C,GAAI,CAACzC,GAAetG,QAClB,SAEF,IAAMwJ,GAAoBF,EAAoBG,UAC3ClB,IAAuCA,IAAYvI,UAAYsG,EAActG,OAAO,EAEjFqG,GACJmD,KAAsB,GAAKF,EAAoBE,EAAiB,EAAI,CAAExJ,QAASsG,EAActG,OAAO,EAChGwG,GAAcpG,EAAeC,IAAIiG,EAActG,OAAO,EACvDwG,IAGD,KAAKJ,qBAAqBC,GAAcC,EAAeE,GAAYxC,SAAS,GAC9EuF,EAAeG,KAAK,CAClBnB,WAAYjC,EACZqD,cAAeH,GAChB,CAEL,CACA,GAAID,EAAezJ,SAAW,EAC5B,MAAO,CAAA,EAET,QAAW8J,KAAiBL,EACtBK,EAAcD,gBAAkB,GAClCL,EAAoBI,KAAKE,EAAcrB,UAAU,EAEjDe,EAAoBM,EAAcD,aAAa,EAAIC,EAAcrB,WAGrE,MAAO,CACLsB,2BAA4B,CAAC,GAAGP,CAAmB,EACnDC,eAAgB,CAAC,GAAGA,CAAc,EAEtC,CAAC,EACD7E,GAAY,CAAC,CAAC,EAEV+D,EAAsBW,EAAQjI,KAClCc,GAAK,CAAC,EACNC,EAAU,CAAC,CAAE2H,2BAAAA,EAA4BN,eAAAA,CAAc,IAChDA,GAAgBzJ,OAId,KAAK4H,mBAAmBrI,EAAY,CACzC0H,YAAaA,EACbL,OAAQmD,EACRrH,iBAAkB3B,EACnB,EAPQC,EAAG,IAAI,CAQjB,CAAC,EAGJ,OAAOiB,EAAc,CAAC0G,EAAqBW,CAAO,CAAC,EAAEjI,KACnDc,GAAK,CAAC,EACNC,EAAU,CAAC,CAAC5C,EAAoB,CAAEuK,2BAAAA,EAA4BN,eAAAA,CAAc,CAAE,IAAK,CACjF,GAAIjK,GAAoBE,QAAQM,QAAU,CAACyJ,GAAgBzJ,OACzD,OAAOgB,EAAG,IAAI,EAGhB,IAAM2F,EAAgC,CACpCM,YAAaA,EACbL,OAAQ6C,EAAe5F,IAAKsF,GAAMA,EAAEV,UAAU,EAC9C/F,iBAAkB3B,GAEpB,OAAO,KAAKhC,iBAAiBgK,gBAAgBxJ,EAAYoH,CAAS,EAAEtF,KAClEwC,EAAI,KACF8C,EAAUC,OAASmD,EACZpD,EACR,CAAC,CAEN,CAAC,CAAC,CAEN,iDA9eWtI,GAAc2L,EAEfC,EAAiB,EAAAD,EACjBE,EAA8B,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,EAAAR,EAAAS,EAAA,CAAA,CAAA,CAAA,kCAH7BpM,EAAcqM,QAAdrM,EAAcsM,SAAA,CAAA,CAAA,SAAdtM,CAAc,GAAA,IC1D3B,IAAAuM,GAAAC,EAAA,QCCA,IAwBaC,GAxBbC,GAAAC,EAAA,cAwBaF,IAAkB,IAAA,CAAzB,MAAOA,CAAkB,CAC7BG,YAA6BC,EAAiC,CAAjC,KAAAA,QAAAA,CAAoC,CAEjEC,gBAAgBC,EAAwC,CACtD,OAAO,KAAKF,QAAQG,kBAAkBD,CAAO,CAC/C,CAEAE,gBAAgBF,EAAwC,CACtD,OAAO,KAAKF,QAAQK,kBAAkBH,CAAO,CAC/C,CAEAI,kBAAkBJ,EAA0C,CAC1D,OAAO,KAAKF,QAAQO,oBAAoBL,CAAO,CACjD,CACAM,gBAAgBN,EAAwC,CACtD,OAAO,KAAKF,QAAQS,kBAAkBP,CAAO,CAC/C,CAEAQ,YAAYR,EAAuC,CACjD,OAAO,KAAKF,QAAQW,kBAAkBT,CAAO,CAC/C,CAEAU,mBAAmBV,EAAoC,CACrD,OAAO,KAAKF,QAAQa,yBAAyBX,CAAO,CACtD,CAEAY,eAAeZ,EAA0C,CACvD,OAAO,KAAKF,QAAQe,oBAAoBb,CAAO,CACjD,CAEAc,iBAAiBd,EAAyC,CACxD,OAAO,KAAKF,QAAQiB,4BAA4Bf,CAAO,CACzD,CAEAgB,gBACEhB,EAAmD,CAEnD,OAAO,KAAKF,QAAQmB,2BAA2BjB,CAAO,CACxD,iDAtCWN,GAAkBwB,EAAAC,EAAA,CAAA,CAAA,CAAA,kCAAlBzB,EAAkB0B,QAAlB1B,EAAkB2B,UAAAC,WADL,MAAM,CAAA,CAAA,SACnB5B,CAAkB,GAAA,ICzB/B,IAMa6B,GANbC,GAAAC,EAAA,SAMaF,IAA0B,IAAA,CAAjC,MAAOA,CAA0B,CAHvCG,aAAA,CAKU,KAAAC,MAAQ,IAAIC,IACZ,KAAAC,SAAW,IAAID,IAGvBE,IAAIC,EAAaC,EAAuBC,EAAM,EAAC,CAC7C,KAAKN,MAAMG,IAAIC,EAAKC,CAAI,EACpBC,EAAM,GACR,KAAKJ,SAASC,IAAIC,EAAKG,KAAKC,IAAG,EAAKF,CAAG,CAE3C,CAGAG,IAAIL,EAAW,CACb,IAAME,EAAM,KAAKJ,SAASO,IAAIL,CAAG,EACjC,OAAIE,GAAOA,EAAM,GAAKA,EAAMC,KAAKC,IAAG,GAClC,KAAKE,MAAMN,CAAG,EAIT,KAAKJ,MAAMS,IAAIL,CAAG,CAC3B,CAGAM,MAAMN,EAAW,CAEf,KAAKJ,MAAMW,OAAOP,CAAG,CACvB,iDA5BWR,EAA0B,CAAA,kCAA1BA,EAA0BgB,QAA1BhB,EAA0BiB,UAAAC,WAFzB,MAAM,CAAA,CAAA,SAEPlB,CAA0B,GAAA,ICHjC,SAAUmB,GAAmBC,EAAwBC,EAAoB,CAC7E,OAAOC,GAAgBC,IAAIH,CAAU,GAAGG,IAAIF,CAAQ,GAAC,SACvD,CAEM,SAAUG,GACdC,EACAC,EAAgC,CAEhC,IAAMC,EAAUD,EAAgBE,MAAM,GAAG,EACnCR,EAAaO,EAAQ,CAAC,EACtBN,EAAWM,EAAQ,CAAC,EAC1B,OAAIP,IAAeK,EACjB,OACSJ,IAAaI,EACtB,KAEF,SACF,CApBA,IAAAI,GAAAC,EAAA,KAAAC,OCAA,IA6CaC,GA7CbC,GAAAC,EAAA,KAAAC,KACAC,KAIAC,KAaAC,KAEAC,6BAyBaP,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,CAIhCQ,YAC8CC,EAC3BC,EACAC,EACVC,EACYC,EAAsD,CAJ7B,KAAAJ,OAAAA,EAC3B,KAAAC,cAAAA,EACA,KAAAC,yBAAAA,EACV,KAAAC,MAAAA,EACY,KAAAC,2BAAAA,EARrB,KAAAC,uBAAyB,GACzB,KAAAC,eAAkC,CAAEC,WAAY,CAAA,EAAIC,QAAS,CAAA,CAAE,CAQ5D,CAEHC,kBAAkBD,EAAwB,CACxC,KAAKF,eAAiBE,CACxB,CAEAE,0BAA0BL,EAA8B,CACtD,KAAKA,uBAAyBA,CAChC,CAEAM,6CAA6CC,EAAiB,CAE5D,IAAMC,EADa,KAAKb,OAAOc,WACsCC,KACnEC,EAAWC,GACFC,EAAG,CACRC,aAAc,CAAA,EACdC,eAAgB,CACdC,QAAS,GACTC,WAAY,IAEf,EAAEP,KACDQ,GAAQC,GACDA,EAAKJ,gBAAgBC,QAGnB,KAAKnB,yBAAyBuB,gBAAgB,CACnDR,UAAWA,EACXS,cAAe,CACbC,SAAU,GACVC,OAAQJ,EAAKJ,gBAAgBE,YAE/BO,UAAW,CACTC,SAAUC,GAAoBC,0BAC9BC,QAAS,CACP,CACEC,QAAS,QACTJ,SAAUK,GAAeC,mBACzBC,OAAQ,CACN,CACEC,OAAQ1B,EACT,GAGL,CACEsB,QAAS,mBACTJ,SAAUK,GAAeC,mBACzBC,OAAQ,CACN,CACEC,OAAQ,kBACT,EAEJ,GAG8B,EA/B5BC,EAgCV,EACDC,GAAK,CAAC,EACNC,GACE,CAACC,EAA6BC,IAAmE,CAC/F,GAAGD,EACH,GAAIC,GAAKxB,cAAgB,CAAA,CAAG,EAE9B,CAAA,CAA4B,CAC7B,CAEJ,CAAC,EAEEyB,EAA4D/B,EAAcE,KAC9EC,EAAW6B,GAAY,CACrB,GAAI,CAACA,GAAUC,OACb,OAAO5B,EAAG,CACRX,WAAY,CAAA,EACb,EAGH,IAAMwC,EAAuBF,EAASG,IAAKC,GAClCA,GAAqBC,QAAU,EACvC,EAED,OAAIH,GAAYD,SAAW,EAClB5B,EAAG,CACRX,WAAY,CAAA,EACb,EAGI,KAAKN,cAAckD,eAAe,UAAWJ,CAAU,CAChE,CAAC,CAAC,EAGJ,OAAOK,EAAc,CAACvC,EAAe+B,CAAS,CAAC,EAAE7B,KAC/CiC,EAAI,CAAC,CAAC7B,EAAckC,CAAQ,IACrBA,GAAU9C,YAAYuC,OAIpB3B,GAAc6B,IAAKM,GAAe,CACvC,IAAMC,EAAUF,GAAU9C,YAAYiD,KAAMD,GACnCA,GAASE,cAAgBH,EAAYJ,MAC7C,EACKQ,EAAOJ,EAAYI,MAAMV,IAAKW,GAC3BA,EAAIC,QACZ,EACD,MAAO,CACLC,cAAeP,EAAYO,cAC3BC,gBAAiBR,EAAYQ,gBAC7BJ,KAAMA,EACNK,iBAAkBR,EAEtB,CAAC,EAhBQ,CAAA,CAiBV,EACDS,GAAY,CAAEC,WAAY,EAAGC,SAAU,EAAK,CAAE,CAAC,CAEnD,CAEAC,uCAAuCC,EAAiB,CAGtD,IAAMvD,EAFa,KAAKb,OAAOc,WAEEC,KAC/BC,EAAWC,GACF,KAAKf,yBAAyBuB,gBAAgB,CACnDR,UAAWA,EACXS,cAAe,CACbC,SAAU,GAEZE,UAAW,CACTC,SAAUC,GAAoBC,0BAC9BC,QAAS,CACP,CACEC,QAAS,QACTJ,SAAUK,GAAeC,mBACzBC,OAAQ,CACN,CACEC,OAAQ8B,EACT,GAGL,CACElC,QAAS,mBACTJ,SAAUK,GAAeC,mBACzBC,OAAQ,CACN,CACEC,OAAQ,kBACT,GAGL,CACEJ,QAAS,OACTJ,SAAUK,GAAekC,uBACzBhC,OAAQ,CACN,CACEC,OAAQ,SACT,EAEJ,GAG8B,CACtC,EACDU,EAAKxB,GAAUA,GAAML,aAAeK,EAAKL,aAAe,CAAA,CAAG,CAAC,EAGxDmD,EAAa,KAAKC,2BAA2B,UAAW1D,EAAa,MAAA,EAC3E,OAAO,KAAK2D,6BAA6B3D,EAAeyD,EAAY,MAAM,CAC5E,CAEAG,wCAAwCL,EAAiB,CAGvD,IAAMvD,EAFa,KAAKb,OAAOc,WAEEC,KAC/BC,EAAWC,GACF,KAAKf,yBAAyBuB,gBAAgB,CACnDR,UAAWA,EACXS,cAAe,CACbC,SAAU,GAEZE,UAAW,CACTC,SAAUC,GAAoBC,0BAC9BC,QAAS,CACP,CACEC,QAAS,UACTJ,SAAUK,GAAeC,mBACzBC,OAAQ,CACN,CACEC,OAAQ8B,EACT,GAGL,CACElC,QAAS,mBACTJ,SAAUK,GAAeC,mBACzBC,OAAQ,CACN,CACEC,OAAQ,kBACT,GAGL,CACEJ,QAAS,OACTJ,SAAUK,GAAekC,uBACzBhC,OAAQ,CACN,CACEC,OAAQ,SACT,EAEJ,GAG8B,CACtC,EACDU,EAAKxB,GAAUA,GAAML,aAAeK,EAAKL,aAAe,CAAA,CAAG,CAAC,EAGxDmD,EAAa,KAAKC,2BAA2B,UAAW1D,EAAa,IAAA,EAC3E,OAAO,KAAK2D,6BAA6B3D,EAAeyD,EAAY,IAAI,CAC1E,CAEQE,6BACN3D,EACA6D,EACAC,EAAgC,CAEhC,OAAOvB,EAAc,CAACvC,EAAe6D,CAAQ,CAAC,EAAE3D,KAC9CiC,EAAI,CAAC,CAAC7B,EAAcX,CAAO,IACpBA,GAASsC,OAGP3B,EAAa6B,IAAKM,GAAe,CACtC,IAAMsB,EAASpE,EAAQgD,KAAMoB,GACvBD,IAAc,OACTC,GAAQnB,cAAgBH,EAAYJ,OAEtC0B,GAAQnB,cAAgBH,EAAYuB,IAC5C,EACKnB,EAAOJ,EAAYI,MAAMV,IAAKW,GAC3BA,EAAIC,QACZ,EACD,MAAO,CACLC,cAAeP,EAAYO,cAC3BC,gBAAiBR,EAAYQ,gBAC7BJ,KAAMA,EACNK,iBAAkBa,EAEtB,CAAC,EAlBQ,CAAA,CAmBV,CAAC,CAEN,CAEAE,wCAAwClE,EAAiB,CACvD,IAAImE,EAAiB,KAAK3E,2BAA2B4E,IAAIpE,CAAS,EAClE,GAAI,CAACmE,EAAgB,CACnB,IAAME,EAAqB,KAAKtE,6CAA6CC,CAAS,EACtF,KAAKR,2BAA2B8E,IAAItE,EAAWqE,CAAkB,EACjEF,EAAiBE,CACnB,CACA,OAAOF,CACT,CAEAI,kBAAkBC,EAAU,CAC1B,OAAO,KAAKpF,OAAOc,WAAWC,KAC5BC,EAAWC,GACF,KAAKf,yBAAyBmF,kBAAkB,CACrDxB,cAAeuB,EACfnE,UAAWA,EACyB,CACvC,EACD+B,EAAI,IACK,EACR,EACDR,GAAK,CAAC,CAAC,CAEX,CAEA8C,iCACExB,EACAyB,EACAC,EAAqC,CAErC,IAAMC,EAAqB,IAAIC,IACzBC,EAAuB,IAAID,IAE3BE,EAAa,KAAKtF,eAAeE,QAAQwC,IAAK6C,GAAO,CACzD,IAAMvC,EAAc,CAClBQ,gBAAiBA,EACjBZ,OAAQ,KAAK7C,uBACbwE,KAAMgB,EAAIT,GACV1B,KAAM,CAAA,GAUR,GAPImC,EAAIT,KAAOG,IACbjC,EAAYI,KAAKoC,KAAK,CACpBlC,SAAU,UACX,EACD6B,EAAmBP,IAAIW,EAAIT,GAAI,EAAI,GAGjCI,EAAQ,CACV,IAAM9B,EAAO8B,GAAQR,IAAIa,EAAIT,EAAE,EAC3B1B,GACFA,EAAKqC,QAASpC,GAAO,CACnBL,EAAYI,KAAKoC,KAAK,CACpBlC,SAAUD,EACX,CACH,CAAC,CAEL,CAEAgC,OAAAA,EAAqBT,IACnBW,EAAIT,GACJ9B,EAAYI,KAAKV,IAAKW,GAAQA,EAAIC,QAAQ,CAAC,EAGtC,KAAK5D,OAAOc,WAAWC,KAC5ByB,GAAK,CAAC,EACNxB,EAAWC,GACF,KAAKf,yBAAyB8F,kBAAkB,CAAE/E,UAAAA,EAAWqC,YAAAA,CAAW,CAAE,CAClF,EACD2C,GAAYC,IACVC,QAAQD,MAAMA,CAAK,EACZhF,EAAG,IAAI,EACf,CAAC,CAEN,CAAC,EAED,OADqBkF,GAAI,GAAGR,CAAU,EAClB7E,KAClByB,GAAK,CAAC,EACNQ,EAAKqD,GAAQ,CACX,IAAIC,EAAgB,GACdC,EAAaF,EAAKrD,IAAKwD,IACvBA,KAAS,MACXF,EAAgB,GACT,MAEFE,EACR,EACKC,EAAeJ,EAAKK,OAAQF,IAASA,KAAS,IAAI,EAClDG,EAAe,KAAKrG,eAAeC,WAAWmG,OAAO,CAACE,GAAGC,KAAUN,EAAWM,EAAK,IAAM,IAAI,EAC7FC,EAAY,CAChBC,aAAcC,OAAOP,EAAa3D,MAAM,EACxCmE,WAAYD,OAAOX,EAAKvD,MAAM,EAC9BoD,MAAOI,GAEHY,GAAwBP,EAAa3D,IAAI,CAACmE,GAAKN,KAC5CO,GAAAC,GAAA,GACFF,IADE,CAELtD,cAAe4C,EAAaI,EAAK,GAAGhD,eAAiB,GACrDH,KAAMiC,EAAqBX,IAAImC,GAAI1D,aAAe,EAAE,GAAK,CAAA,GAE5D,EAED,MAAO,CAAEqD,UAAAA,EAAWI,sBAAAA,EAAqB,CAC3C,CAAC,CAAC,CAEN,CAEAI,mBACExD,EACAJ,EACA6D,EACA5C,EAAkC,OAAM,CAKxC,IAAMiB,EAAa,KAAKtF,eAAeE,QAAQwC,IAAK6C,GAAO,CACzD,IAAM2B,EAAkC,CAAA,EACxC,QAAW7D,KAAOD,EAChB8D,EAAgB1B,KAAK,CAAElC,SAAUD,CAAG,CAAkB,EAExD,IAAML,EAAc,CAClBQ,gBAAiBA,EACjBZ,OAAQ2C,EAAIT,GACZP,KAAM,KAAKxE,uBACXqD,KAAM8D,GAER,OAAI7C,IAAc,OAChBrB,EAAYJ,OAAS,KAAK7C,uBAC1BiD,EAAYuB,KAAOgB,EAAIT,IAGlB,KAAKpF,OAAOc,WAAWC,KAC5ByB,GAAK,CAAC,EACNxB,EAAWC,GAEF,KAAKf,yBAAyB8F,kBAAkB,CAAE/E,UAAAA,EAAWqC,YAAAA,CAAW,CAAE,EAAEvC,KACjFkF,GAAW,IACJsB,GAILjE,EAAYI,KAAO,CAAA,EACZ,KAAKxD,yBAAyB8F,kBAAkB,CAAE/E,UAAAA,EAAWqC,YAAAA,CAAW,CAAE,EAAEvC,KACjFkF,GAAW,IAEF/E,EAAG,IAAI,CACf,CAAC,GAPKA,EAAG,IAAI,CASjB,CAAC,CAEL,CAAC,CAEN,CAAC,EAGD,OADqBkF,GAAI,GAAGR,CAAU,EAClB7E,KAClByB,GAAK,CAAC,EACNQ,EAAKqD,GAAQ,CACX,IAAIC,EAAgB,GACdC,EAAaF,EAAKrD,IAAKwD,IACvBA,KAAS,MACXF,EAAgB,GACT,MAEFE,EACR,EACKC,EAAeJ,EAAKK,OAAQF,IAASA,KAAS,IAAI,EAClDG,EAAe,KAAKrG,eAAeC,WAAWmG,OAAO,CAACE,GAAGC,KAAUN,EAAWM,EAAK,IAAM,IAAI,EAC7FC,EAAY,CAChBC,aAAcC,OAAOP,EAAa3D,MAAM,EACxCmE,WAAYD,OAAOX,EAAKvD,MAAM,EAC9BoD,MAAOI,GAEHY,EAAwBP,EAAa3D,IAAI,CAACmE,GAAKN,KAC5CO,GAAAC,GAAA,GACFF,IADE,CAELtD,cAAe4C,EAAaI,EAAK,GAAGhD,eAAiB,IAExD,EAED,MAAO,CAAEiD,UAAAA,EAAWI,sBAAAA,CAAqB,CAC3C,CAAC,EACDlE,EAAKkE,GACIA,CACR,CAAC,CAEN,CAEAO,yBACEC,EACAC,EACAC,EACA9D,EACAJ,EACAmE,EACAC,EAA2B,CAE3B,IAAMhH,EAAa,KAAKd,OAAOc,WACzB6D,EAAYoD,GAAwBL,EAAY5D,CAAe,EACrE,OAAOhD,EAAWC,KAChBC,EAAWC,GAAa,CACtB,IAAMiC,EAASyB,IAAS,OAAiCgD,EAAWC,EAC9DI,EAAcrD,IAAS,OAAiCkD,EAAgBC,EACxEjD,EAAOF,IAAS,OAAiCiD,EAAeD,EAChEM,GAAYtD,IAAS,OAAiCmD,EAAqBD,EAE3EK,GAAcxE,EAChBA,EAAKV,IAAKW,KACD,CACLC,SAAUD,IAEb,EACA,CAAA,EAEL,OAAO,KAAKzD,yBAAyB8F,kBAAkB,CACrD/E,UAAWA,EACXqC,YAAa,CACXQ,gBAAiBA,EACjBZ,OAAQA,EACR2B,KAAMA,EACNnB,KAAMwE,GACNC,qBAAsBH,EACtBI,mBAAoBH,IAEvB,CACH,CAAC,EACDhC,GAAYW,GACH1F,EAAG,IAAI,CACf,CAAC,CAEN,CAEAmH,4BACEvE,EACA5B,EACAP,EACA2G,EAAkB,CAElB,OAAO,KAAKtI,OAAOc,WAAWC,KAC5ByB,GAAK,CAAC,EACNxB,EAAWC,GACF,KAAKf,yBAAyBmI,4BAA4B,CAC/DpH,UAAAA,EACA6C,gBAAAA,EACA5B,QAAAA,EACAP,SAAAA,EACA2G,WAAAA,EACD,CACF,EACDtF,EAAKH,GACIA,EAAS0F,SAAW,CAAA,CAC5B,CAAC,CAEN,CAEAC,sBAAsBpD,EAAY1B,EAAc,CAC9C,OAAO,KAAK1D,OAAOc,WAAWC,KAC5ByB,GAAK,CAAC,EACNxB,EAAWC,GACF,KAAKf,yBAAyBuI,kBAAkB,CACrDxH,UAAAA,EACA4C,cAAeuB,EACf1B,KAAMA,EAAKV,IAAK0F,IAAO,CAAE9E,SAAU8E,CAAC,EAAG,EACxC,CACF,EACD1F,EAAI,IAAM,EAAI,CAAC,CAEnB,CAEA2F,eAAevD,EAAU,CACvB,OAAO,KAAKpF,OAAOc,WAAWC,KAC5ByB,GAAK,CAAC,EACNxB,EAAWC,GACF,KAAKf,yBAAyB0I,oBAAoB,CACvD3H,UAAAA,EACA4H,eAAgB,CAACzD,CAAE,EACpB,CACF,EACDpC,EAAKH,GACHA,GAAU1B,cAAc2B,OAAS,GAAKD,GAAU1B,aAAa,CAAC,EAAI0B,EAAS1B,aAAa,CAAC,EAAI,CAAA,CAAE,CAChG,CAEL,CAEA2H,0BACEnB,EACAD,EACAqB,EACApH,EACAqH,EAAqB,CAAA,EAAE,CAEvB,IAAMlI,EAAa,KAAKd,OAAOc,WACzBgD,EAAkBmF,GAAmBvB,EAAYqB,CAAc,EAE/D9G,EAAU,CACd,CACEC,QAHc6F,GAAwBL,EAAY5D,CAAe,IAG/C,OAAiC,UAAY,QAC/DhC,SAAUK,GAAeC,mBACzBC,OAAQ,CACN,CACEC,OAAQqF,EACT,GAGL,CACEzF,QAAS,mBACTJ,SAAUK,GAAeC,mBACzBC,OAAQ,CACN,CACEC,OAAQwB,EACT,EAEJ,EAGH,OAAIkF,EAASlG,OAAS,GACpBb,EAAQ6D,KAAK,CACX5D,QAAS,OACTJ,SAAUK,GAAe+G,uBACzB7G,OAAQ2G,EAAShG,IAAK0F,IAAO,CAAEpG,OAAQoG,CAAC,EAAG,EAC5C,EAGI5H,EAAWC,KAChBC,EAAWC,GACF,KAAKf,yBAAyBuB,gBAAgB,CACnDR,UAAWA,EACXS,cAAe,CACbC,SAAUA,GAEZE,UAAW,CACTC,SAAUC,GAAoBC,0BAC9BC,QAASA,GAEwB,CACtC,EACDe,EAAKH,GAAcA,GAAU1B,aAAe0B,EAAS1B,aAAe,CAAA,CAAG,CAAC,CAE5E,CAEAgI,8CACExB,EACAD,EACAqB,EACApH,EAAW,EACXqH,EAAqB,CAAA,EAAE,CAEvB,GAAI,CAACrB,EACH,OAAOzG,EAAG,CAAA,CAAE,EAEd,IAAM4C,EAAkBmF,GAAmBvB,EAAYqB,CAAc,EAC/DpE,EAAYoD,GAAwBL,EAAY5D,CAAe,EAE/DjD,EAAgB,KAAKiI,0BAA0BnB,EAAUD,EAAYqB,EAAgBpH,EAAUqH,CAAQ,EAEvGI,EAAezE,IAAS,OAAgC,KAA0B,OAClFD,EAAW,KAAKH,2BAA2BwE,EAAgBlI,EAAeuI,CAAY,EAC5F,OAAO,KAAK5E,6BAA6B3D,EAAe6D,EAAU0E,CAAY,CAChF,CAEQ7E,2BACNmD,EACA7G,EACA8D,EAA+B,CAE/B,OAAO9D,EAAcE,KACnBC,EAAWG,GAAgB,CACzB,GAAI,CAACA,GAAc2B,OACjB,OAAO5B,EAAG,CACRX,WAAY,CAAA,EACb,EAEH,IAAM8I,EAAMlI,EAAa6B,IAAKM,GACxBqB,IAAS,OACJrB,EAAYJ,QAAU,GAExBI,EAAYuB,MAAQ,EAC5B,EACD,OAAO,KAAK5E,cAAckD,eAAeuE,EAAY2B,CAAG,CAC1D,CAAC,EACDrG,EAAKH,GAAcA,GAAUtC,WAAasC,EAAStC,WAAa,CAAA,CAAG,CAAC,CAExE,CACA+I,mCACED,EACA3B,EACAqB,EAA0B,CAE1B,GAAIM,EAAIvG,SAAW,EACjB,OAAO5B,EAAG,CAAA,CAAE,EAEd,IAAMJ,EAAa,KAAKd,OAAOc,WACzBgD,EAAkBmF,GAAmBvB,EAAYqB,CAAc,EAC/DpE,EAAYoD,GAAwBL,EAAY5D,CAAe,EAE/DjD,EAAgBC,EAAWC,KAC/BC,EAAWC,GACF,KAAKf,yBAAyB0I,oBAAoB,CACvD3H,UAAAA,EACA4H,eAAgBQ,EACjB,CACF,EACDrG,EAAKH,GAAcA,GAAU1B,aAAe0B,EAAS1B,aAAe,CAAA,CAAG,CAAC,EAGpEiI,EAAezE,IAAS,OAAgC,KAA0B,OAClFD,EAAW,KAAKH,2BAA2BwE,EAAgBlI,EAAeuI,CAAY,EAC5F,OAAO,KAAK5E,6BAA6B3D,EAAe6D,EAAU0E,CAAY,CAChF,iDA1pBW7J,GAAqBgK,EAKtBC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,CAAA,CAAA,CAAA,kCALhBrK,EAAqBsK,QAArBtK,EAAqBuK,SAAA,CAAA,CAAA,SAArBvK,CAAqB,GAAA,IC7ClC,IAcawK,GAdbC,GAAAC,EAAA,KACAC,IAEAC,KACAC,KAEAC,cAQaN,IAAoB,IAAA,CAA3B,MAAOA,CAAoB,CAW/BO,YAC8CC,EAC3BC,EAAsC,CADX,KAAAD,OAAAA,EAC3B,KAAAC,mBAAAA,EAZnB,KAAAC,kBAAoB,qBACpB,KAAAC,UAAiC,KAAKF,mBAAmBG,QAAQ,CAAC,KAAKF,iBAAiB,CAAC,EAAEG,KACzFC,EAAKC,GAAWA,EAAOC,OAAO,EAC9BC,GAAoB,CAAE,EAExB,KAAAC,WAAyCC,EAAO,CAC9CC,gBAAiB,CAAA,EACjBC,wBAAyB,GAC1B,CAKE,CAEHC,8BAA8BC,EAA0B,CACtD,OAAOC,EAAG,EAAK,EAAEX,KACfC,EAAKW,GAAY,CACf,GAAIA,EACF,OAAOF,EAET,IAAIG,EAA+B,CAAA,EACnC,QAAWC,KAAK,KAAKT,WAAU,EAAGE,gBAAiB,CACjD,IAAMQ,EAAKC,aAAaC,QAAQ,KAAKZ,WAAU,EAAGE,gBAAgBO,CAAC,CAAC,EACpE,GAAKC,EAGLF,CAAAA,EAAYK,KAAKC,MAAMJ,CAAE,EACzB,MACF,CACAL,EAAQU,QAASC,GAAU,CACzB,IAAMC,EAA0BT,GAAWU,UAAWC,GAAMA,EAAEC,KAAOJ,EAAOI,EAAE,EAC9E,GAAIH,EAA0B,EAC5BT,EAAUa,KAAKL,CAAM,MAChB,CACL,IAAMM,EAAqBd,EAAUS,CAAuB,EAC5DT,EAAUS,CAAuB,EAAIM,GAAAC,GAAA,GAChCR,GADgC,CAEnCS,UAAWH,EAAmBG,UAC9BC,OAAQJ,EAAmBI,QAE/B,CACF,CAAC,EACD,IAAMC,EAAmBnB,EAAUoB,OAAQT,GAAMd,EAAQwB,KAAMb,GAAWA,EAAOI,KAAOD,EAAEC,EAAE,CAAC,EACvFU,EAAgB,KAAKC,YAAYJ,CAAgB,EAEvDhB,oBAAaqB,QAAQ,KAAKhC,WAAU,EAAGE,gBAAgB,CAAC,EAAGW,KAAKoB,UAAUH,CAAa,CAAC,EACjFA,CACT,CAAC,CAAC,CAEN,CAEQC,YAAY1B,EAA0B,CAC5C,IAAM6B,EAAa,KAAKC,sBAAsB9B,EAAQuB,OAAQZ,GAAWA,EAAOoB,QAAU,CAACpB,EAAOqB,SAAS,CAAC,EACtGC,EAAgB,KAAKH,sBAAsB9B,EAAQuB,OAAQZ,GAAWA,EAAOoB,QAAUpB,EAAOqB,SAAS,CAAC,EACxGE,EAAmB,KAAKJ,sBAAsB9B,EAAQuB,OAAQZ,GAAW,CAACA,EAAOoB,MAAM,CAAC,EAExFN,EAAgB,CAAC,GAAGI,EAAY,GAAGK,EAAkB,GAAGD,CAAa,EAC3E,YAAKE,sBAAsBV,CAAa,EACjCA,CACT,CAEQU,sBAAsBnC,EAA0B,CACtDA,EAAQU,QAAQ,CAACC,EAAQyB,IAAWzB,EAAOS,UAAYgB,CAAM,CAC/D,CAEQN,sBAAsB9B,EAA0B,CACtD,OAAOA,EAAQqC,KAAK,CAACC,EAAGC,KAAOD,EAAElB,WAAaoB,OAAOC,mBAAqBF,EAAEnB,WAAaoB,OAAOC,iBAAiB,CACnH,CAEOC,uBAAuB1C,EAA0B,CACtD,KAAKZ,UAAUE,KAAKqD,GAAK,CAAC,CAAC,EAAEC,UAAW1C,GAAY,CAC9C,CAACF,GAAS6C,QAAU3C,GAGxBI,aAAaqB,QAAQ,KAAKhC,WAAU,EAAGE,gBAAgB,CAAC,EAAGW,KAAKoB,UAAU5B,CAAO,CAAC,CACpF,CAAC,CACH,CAEA8C,mBAAmBC,EAAsB,CACvC,IAAMlD,EAA4B,CAAA,EAC9BC,EAA0B,GACxBkD,EAAU,KAAK/D,OAAOgE,MACxBD,GACFnD,EAAgBmB,KAAK,OAAOgC,CAAO,IAAID,CAAU,iBAAiB,EAClEzC,aAAa4C,WAAW,OAAOF,CAAO,IAAID,CAAU,cAAc,EAClEjD,EAA0B,OAAOkD,CAAO,IAAID,CAAU,oBAEtDjD,EAA0B,OAAOiD,CAAU,mBAE7ClD,EAAgBmB,KAAK,OAAO+B,CAAU,iBAAiB,EACvDzC,aAAa4C,WAAW,OAAOH,CAAU,cAAc,EACvD,KAAKpD,WAAWwD,IAAI,CAClBtD,gBAAiBA,EACjBC,wBAAyBA,EAC1B,CACH,iDAjGWrB,GAAoB2E,EAYrBC,EAAiB,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,kCAZhB7E,EAAoB8E,QAApB9E,EAAoB+E,SAAA,CAAA,CAAA,SAApB/E,CAAoB,GAAA,ICSjC,SAASgF,GAAqBC,EAAUC,EAAQ,CAC9C,IAAMC,EAAQF,GAAGG,WAAWC,KAAMC,GAAaA,GAAUC,UAAYC,EAAYC,sBAAsB,EACjGC,EAAQR,GAAGE,WAAWC,KAAMC,GAAaA,GAAUC,UAAYC,EAAYC,sBAAsB,EACvG,OAAON,GAAOQ,YAAcD,GAAOC,WAAaR,EAAMQ,WAAaD,EAAMC,WAAa,CACxF,CA3BA,IA8BaC,GA9BbC,GAAAC,EAAA,KAEAC,KACAC,KACAC,KAEAC,KACAC,cAuBaP,IAAkB,IAAA,CAAzB,MAAOA,CAAkB,CAC7BQ,YACmBC,EACTC,EAAkB,CADT,KAAAD,gBAAAA,EACT,KAAAC,SAAAA,CACP,CAEH,IAAYC,YAAU,CACpB,OAAO,KAAKD,SAASE,IAAIC,EAAiB,EAAEF,UAC9C,CAEAG,eAAeC,EAAkB,CAC/B,OAAO,KAAKJ,WAAWK,KACrBC,GAAK,CAAC,EACNC,EAAWC,GACT,KAAKV,gBAAgBW,cAAc,CACjCC,YAAa,CACXF,UAAAA,EACAJ,WAAAA,GAEH,CAAC,EAEJO,EAAKC,GAAcA,GAAUC,UAAY,KAAKC,iBAAiBF,EAASC,SAAS,EAAI,CAAA,CAAG,CAAC,CAE7F,CAEAE,aAAaC,EAAkB,CAC7B,OAAO,KAAKC,kBAAkB,CAACD,CAAU,CAAC,EAAEX,KAAKM,EAAKE,GAAcA,EAAU,CAAC,CAAC,CAAC,CACnF,CAEAI,kBAAkBC,EAAqB,CACrC,OAAO,KAAKlB,WAAWK,KACrBC,GAAK,CAAC,EACNC,EAAWC,GACT,KAAKV,gBAAgBqB,iBAAiB,CACpCX,UAAAA,EACAU,YAAAA,EACD,CAAC,EAEJP,EAAKC,GAAcA,GAAUC,UAAY,KAAKC,iBAAiBF,EAASC,SAAS,EAAI,CAAA,CAAG,EACxFO,GAAY,CAAC,CAAC,CAElB,CAEAC,gBAAgBjB,EAAoBkB,EAAkB,CACpD,OAAO,KAAKtB,WAAWK,KACrBC,GAAK,CAAC,EACNC,EAAWC,GACF,KAAKV,gBAAgByB,eAAe,CACzCD,SAAU,CACRd,UAAWA,EACXJ,WAAYA,EACZY,WAAYM,EAASE,GACrBC,KAAMH,EAASG,KACfC,OAAQJ,EAASI,OAAOf,IAAKgB,IAAW,CACtCC,QAASD,EAAMH,IAAM,GACrBC,KAAME,EAAMF,KACZI,YAAaC,GAAqBH,EAAMI,OAAO,EAC/ClD,UAAW8C,EAAM9C,WACjB,GAEJmD,UAAW,KAAKC,eAAeX,CAAQ,EACxC,CACF,CAAC,CAEN,CAEAY,gBAAgBlB,EAAkB,CAChC,OAAO,KAAKhB,WAAWK,KACrBC,GAAK,CAAC,EACNC,EAAWC,GACF,KAAKV,gBAAgBqC,eAAe,CACzC3B,UAAAA,EACAQ,WAAAA,EACD,CACF,CAAC,CAEN,CAEAoB,gBAAgBhC,EAAoBkB,EAAkB,CACpD,OAAO,KAAKtB,WAAWK,KACrBC,GAAK,CAAC,EACNC,EAAWC,GACF,KAAKV,gBAAgBuC,eAAe,CACzCf,SAAU,CACRd,UAAAA,EACAJ,WAAAA,EACAqB,KAAMH,EAASG,KACfC,OAAQJ,EAASI,OAAOf,IAAKgB,IAAW,CACtCF,KAAME,EAAMF,KACZI,YAAaC,GAAqBH,EAAMI,OAAO,EAC/ClD,UAAW8C,EAAM9C,WACjB,GAEL,CACF,EACD8B,EAAKC,GAAaA,GAAUI,YAAc,EAAE,CAAC,CAEjD,CAEQF,iBAAiBD,EAA0B,CACjD,OAAOA,EAAUF,IAAKW,IAAc,CAClCE,GAAIF,EAASN,WACbS,KAAMH,EAASG,KACfC,OAAQJ,EAASI,QACbf,IACCgB,IACE,CACCH,GAAIG,EAAMC,QACVH,KAAME,EAAMF,KACZM,QAASJ,EAAME,YAAYE,QAAQpB,IAAK2B,GAAWC,GAAsBD,CAAM,CAAC,EAChFzD,UAAW8C,EAAM9C,WACR,EAEd2D,KAAK,CAAC9D,EAAGC,IAAMF,GAAqBC,EAAGC,CAAC,CAAC,GAC5C,CACJ,CAEQsD,eAAeX,EAAkB,CACvC,IAAMmB,EAAQ,CAAA,EACd,OAAInB,EAASG,MACXgB,EAAMC,KAAK,MAAM,EAEfpB,EAASI,QACXe,EAAMC,KAAK,QAAQ,EAGd,IAAIC,GAAU,CAAEF,MAAAA,CAAK,CAAE,CAChC,iDA/HWpD,GAAkBuD,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,kCAAlBzD,EAAkB0D,QAAlB1D,EAAkB2D,UAAAC,WADL,MAAM,CAAA,CAAA,SACnB5D,CAAkB,GAAA,IC9B/B,IAAA6D,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAP,KACAQ,KACAC,OCRA,IAAAC,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCLA,IAOaC,GAPbC,GAAAC,EAAA,KAAAC,IAGAC,KACAC,cAGaL,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CACpCM,YAC8BC,EACXC,EAAkC,CADvB,KAAAD,WAAAA,EACX,KAAAC,iBAAAA,EAcX,KAAAC,eAAiB,IAAIC,GAAwB,EAAE,EAC/C,KAAAC,kBAAoB,IAAID,GAA0B,CAAA,CAAE,EACpD,KAAAE,WAAa,KAAKD,kBAAkBE,KAC1CC,GAAQC,GAAoBA,EAAgBC,OAAS,CAAC,EACtDC,GAAa,CAAC,EACdC,EAAKH,GAAoB,CAAC,GAAG,IAAII,IAAIJ,CAAe,CAAC,CAAC,EACtDK,EAAWL,GAAoB,KAAKP,iBAAiBa,eAAe,UAAWN,CAAe,CAAC,EAC/FG,EAAKI,GAAaA,EAASC,UAAU,EACrCC,GAAI,IAAK,CACP,KAAKb,kBAAkBc,KAAK,CAAA,CAAE,CAChC,CAAC,EACDC,GAAY,CAAC,CAAC,EAvBd,KAAKjB,eAAeI,KAAKc,GAAmB,KAAKpB,UAAU,CAAC,EAAEqB,UAAWC,GAAa,CACpF,GAAI,CAACA,EACH,OAEF,IAAMC,EAAoB,CAAC,GAAG,KAAKnB,kBAAkBoB,KAAK,EACrDD,EAAkBE,SAASH,CAAS,IACvCC,EAAkBG,KAAKJ,CAAS,EAChC,KAAKlB,kBAAkBc,KAAKK,CAAiB,EAEjD,CAAC,CACH,CAgBAI,WAAWL,EAAiB,CAC1B,YAAKpB,eAAegB,KAAKI,CAAS,EAC3B,KAAKjB,WAAWC,KAAKK,EAAKiB,GAAcA,EAAUC,KAAMC,GAAYA,GAASC,cAAgBT,CAAS,CAAC,CAAC,CACjH,iDAlCW7B,GAAyBuC,EAE1BC,EAAU,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,kCAFTzC,EAAyB0C,QAAzB1C,EAAyB2C,SAAA,CAAA,CAAA,SAAzB3C,CAAyB,GAAA,8BCchC4C,EAAA,EAAA,IAAA,CAAA,EACEC,GAAA,EAAA,CAAA,EAIFC,EAAA,+CALuCC,EAAA,aAAAC,CAAA,EAEnCC,EAAA,EAAAF,EAAA,mBAAAG,CAAA,EAAwC,0BAAAC,GAAA,EAAAC,GAAAC,EAAAC,YAAA,CAAA,4BAK1CC,EAAA,EAAA,MAAA,CAAA,qCACER,EAAA,mBAAAG,CAAA,EAAwC,0BAAAC,GAAA,EAAAC,GAAAC,EAAAC,YAAA,CAAA,6BAT9CE,EAAA,CAAA,EACEC,EAAA,EAAAC,GAAA,EAAA,EAAA,IAAA,CAAA,EAA2D,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,gCAAvDX,EAAA,EAAAF,EAAA,OAAAM,EAAAQ,IAAA,EAAgB,WAAAC,CAAA,yBAcpBP,EAAA,EAAA,MAAA,CAAA,4BAGAC,EAAA,CAAA,EAA4EO,EAAA,CAAA,kCAAAd,EAAA,EAAAe,EAAAC,CAAA,4BAA5ER,EAAA,EAAAS,GAAA,EAAA,EAAA,eAAA,CAAA,wCAAenB,EAAA,OAAAkB,IAAAE,EAAAC,yBAAA,EAAiD,WAAAC,CAAA,yBAGhEd,EAAA,EAAA,kBAAA,EAzCN,OAWMa,GAoCOE,GA/CbC,GAAAC,EAAA,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,+CAGMZ,GAA4B,8BAoCrBE,IAA2B,IAAA,CAAlC,MAAOA,UAAmCW,EAAmB,CAGjE,IAAIC,MAAMC,EAAgB,CACxB,KAAKC,YAAYC,KAAKF,CAAQ,CAChC,CAsCAG,YAC8CC,EAC3BC,EACAC,EAAoD,CAErE,MAAK,EAJuC,KAAAF,OAAAA,EAC3B,KAAAC,gBAAAA,EACA,KAAAC,0BAAAA,EA7CnB,KAAArB,0BAA4BA,GACpB,KAAAgB,YAAc,IAAIM,GAAwB,EAAE,EAKpD,KAAAC,cAAgB,KAAKP,YAAYQ,KAC/BC,EAAWC,GACJA,EAGE,KAAKL,0BAA0BM,WAAWD,CAAe,EAFvDE,EAAG,IAAI,CAGjB,EACDC,EAAKC,GACEA,EAGE,KAAKV,gBAAgBW,2BAA2BD,EAAeE,EAAYC,WAAW,EAFpF,IAGV,EACDJ,EAAKK,GAA0BA,GAAuBC,aAAe,KAAKnC,yBAAyB,CAAC,EAEtG,KAAAoC,MAAQ,KAAKjB,OAAOkB,iBAAiBb,KACnCc,GAAK,CAAC,EACNb,EAAWc,GACLA,EACK,KAAKpB,OAAOqB,aAEZZ,EAAG,EAAE,CAEf,EACDC,EAAKY,GAAe,CAClB,GAAI,CAACA,GAAe,CAAC,KAAKzB,YAAY0B,SAAQ,EAC5C,MAAO,GAET,IAAMC,EAAgC,GAAGC,GAAYC,QAAQC,IAAI,IAAIF,GAAYC,QAAQE,UAAUC,OAAO,GAC1G,MAAO,GAAGP,CAAW,IAAIE,CAA6B,GAAGM,QAAQ,eAAgB,KAAKjC,YAAY0B,SAAQ,CAAE,CAC9G,CAAC,CAAC,EAEJ,KAAAQ,eAAoDC,EAAc,CAAC,KAAK5B,cAAe,KAAKa,KAAK,CAAC,EAAEZ,KAClGK,EAAI,CAAC,CAAC3C,EAAcO,CAAI,KAAO,CAAEP,aAAAA,EAAcO,KAAAA,CAAI,EAAG,CAAC,CASzD,iDAjDWS,GAA0BkD,EA4C3BC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,+BA5ChBrD,EAA0BsD,UAAA,CAAA,CAAA,yBAAA,CAAA,EAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,EAAA,CAAA,EAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IA3BnC1E,EAAA,EAAA4E,GAAA,EAAA,EAAA,eAAA,CAAA,eAcA5E,EAAA,EAAA6E,GAAA,EAAA,EAAA,cAAA,KAAA,EAAA1E,EAAA,EAAsB,EAAA2E,GAAA,EAAA,EAAA,cAAA,KAAA,EAAA3E,EAAA,EAG0C,EAAA4E,GAAA,EAAA,EAAA,cAAA,KAAA,EAAA5E,EAAA,mBAjBjDb,EAAA,OAAA0F,EAAA,EAAA,EAAAL,EAAAd,cAAA,CAAA,EAA6B,WAAAoB,CAAA,kBAyBpCC,GAAYC,EAAYC,GAAAC,GAAAC,GAAEC,EAAmB,EAAAC,OAAA,CAAA;iGAAA,CAAA,CAAA,CAAA,SAE5C3E,CAA2B,GAAA,IC/CxC,IASM4E,GACAC,GACAC,GAGOC,GAdbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,SAGMZ,GAA2B,wBAC3BC,GAAmB,eACnBC,GAA0B,CAACF,GAA0BC,EAAgB,EAG9DE,IAAsB,IAAA,CAA7B,MAAOA,CAAsB,CADnCU,aAAA,CAEmB,KAAAC,OAASC,EAAOC,EAAiB,EACjC,KAAAC,sBAAwBF,EAAOG,EAAqB,EACpD,KAAAC,mBAAqBJ,EAAOK,EAAsB,EAClD,KAAAC,WAAaN,EAAOO,EAAU,EAEvC,KAAAC,gBAAkB,KAAKT,OAAOU,WAAWC,KAC/CC,EAAWC,GACezB,GAAwB0B,SAAS,KAAKd,OAAOe,OAAS,EAAE,EAOzE,KAAKV,mBAAmBW,eAAe,CAC5CC,WAAY,CAAC,wBAAwB,EACrCC,UAAWL,GAAa,GACzB,EARQM,EAAG,CACRC,UAAW,CAAC,EAAI,EACjB,CAOJ,EACDC,EAAKC,GACIA,GAAUF,UAAUG,OAAS,GAAKD,GAAUF,UAAU,CAAC,CAC/D,CAAC,EAEI,KAAAI,aAAe,KAAKxB,OAAOyB,eAAed,KAChDC,EAAWc,GAAU,CACnB,IAAMC,EAAwB,CAAC,IAAIC,GAAe,CAAEF,OAAQA,CAAM,CAAE,CAAC,EAErE,OAAO,KAAKnB,WAAWsB,cAAcF,CAAqB,CAC5D,CAAC,EACDN,EAAKC,GAAaA,GAAYA,EAAS,CAAC,CAAC,EACzCQ,GAAW,IACFX,EAAG,IAAI,CACf,CAAC,EAEI,KAAAY,gBAAkBC,EAAc,CACtC,KAAKhC,OAAOyB,eACZ,KAAKD,aACL,KAAKxB,OAAOU,WACZ,KAAKD,eAAe,CACrB,EAAEE,KACDC,EAAU,CAAC,CAACc,EAAQO,EAAMpB,EAAWqB,CAAc,IAA6C,CAC9F,IAAMC,EAAQF,GAAME,MACdC,EAAmB,cAAeD,EAClCE,EAAeF,EAAM,SAAYG,YAAYA,WAAW,gBAAmBC,gBAAkB,GAC7FC,EAAiB,CAACpD,GAAwB0B,SAAS,KAAKd,OAAOe,OAAS,EAAE,EAChF,MAAI,CAACmB,GAAkBM,GAAkBJ,GAAoBC,EACpDlB,EAAG,EAAE,EAGP,KAAKhB,sBAAsBsC,eAAe,CAC/CvB,UAAWL,EACXa,OAAQA,EACyB,CACrC,CAAC,EACDL,EAAKC,GACC,OAAOA,GAAa,SACf,GAEFA,GAAUoB,aAAaC,sBAAwB,EACvD,EACDC,GAAY,CAAC,CAAC,EAGhBC,mBAAiB,CACf,OAAO,KAAKd,eACd,iDAlEW1C,EAAsB,CAAA,kCAAtBA,EAAsByD,QAAtBzD,EAAsB0D,SAAA,CAAA,CAAA,SAAtB1D,CAAsB,GAAA,ICdnC,IAca2D,GAdbC,GAAAC,EAAA,KAEAC,KACAC,KAEAC,KACAC,mBAQaN,IAAuB,IAAA,CAA9B,MAAOA,CAAuB,CAClCO,YACqBC,EACFC,EAAsD,CADpD,KAAAD,gBAAAA,EACF,KAAAC,wBAAAA,CAChB,CAEHC,qBAAqBC,EAAwBC,EAA6B,CACxE,OAAQD,EAAU,CAChB,IAAK,UACH,OAAO,KAAKE,mBAAmBD,CAAS,EAC1C,IAAK,UACH,OAAO,KAAKE,mBAAmBF,CAAS,EAC1C,IAAK,cACH,OAAO,KAAKG,uBAAuBH,CAAS,EAC9C,IAAK,eACH,OAAO,KAAKI,wBAAwBJ,CAAS,EAC/C,QACE,OAAOA,EAAUK,aAAe,EACpC,CACF,CAEAC,eAAeC,EAAgCC,EAAgB,CAC7D,OAAKA,EAIED,EAAWE,KAChBC,EAAWC,GACF,KAAKd,wBAAwBe,yBAAyB,CAC3DD,UAAWA,EACXE,oBAAqB,CAACL,CAAO,EAC9B,CACF,EACDM,EAAKC,GAAQ,CACX,IAAMC,EAAmBD,EAAKE,kBAAkB,CAAC,EACjD,OAAKD,EAIE,CACLE,mBAAoBF,EAAiBE,mBACrCC,iBAAkBH,EAAiBG,mBALnCC,QAAQC,MAAM,sBAAsBb,CAAO,YAAY,EAChD,CAAEU,mBAAoB,GAAIC,iBAAkB,EAAE,EAMzD,CAAC,CAAC,EApBKG,EAAG,CAAEJ,mBAAoB,GAAIC,iBAAkB,EAAE,CAAE,CAsB9D,CAEAI,mBAAmBxB,EAAwBC,EAA6B,CACtE,OAAQD,EAAU,CAChB,IAAK,UACH,OAAO,KAAKyB,uBAAuBxB,CAAS,EAC9C,QACE,MAAO,EACX,CACF,CAEQwB,uBAAuBxB,EAA6B,CAC1D,IAAMyB,EAAQ,KAAK7B,gBAAgB8B,WAAWC,GAAoBC,KAAK,EAEvE,OADkB5B,EAAU6B,QAAQC,KAAMC,GAAMA,EAAEC,UAAYP,CAAK,GACjDQ,aAAe,EACnC,CAEQ/B,mBAAmBF,EAA6B,CACtD,IAAMkC,EAAO,KAAKtC,gBAAgB8B,WAAWS,EAAYC,WAAW,EAEpE,OADiBpC,EAAU6B,QAAQC,KAAMC,GAAMA,EAAEC,UAAYE,CAAI,GAChDD,aAAe,EAClC,CAEQ9B,uBAAuBH,EAA6B,CAC1D,IAAMqC,EAAYF,EAAYG,gBAE9B,OADiBtC,EAAU6B,QAAQC,KAAMC,GAAMA,EAAEC,UAAYK,CAAS,GACrDJ,aAAe,EAClC,CAEQhC,mBAAmBD,EAA6B,CACtD,IAAMuC,EAAY,KAAK3C,gBAAgB8B,WAAWC,GAAoBa,SAAS,EACzEC,EAAW,KAAK7C,gBAAgB8B,WAAWC,GAAoBe,QAAQ,EACvEjB,EAAQ,KAAK7B,gBAAgB8B,WAAWC,GAAoBC,KAAK,EACjEe,EAAQ,KAAK/C,gBAAgB8B,WAAWC,GAAoBiB,WAAW,EAEvEC,EAAgB7C,EAAU6B,QAAQC,KAAMC,GAAMA,EAAEC,UAAYO,CAAS,EACrEO,EAAe9C,EAAU6B,QAAQC,KAAMC,GAAMA,EAAEC,UAAYS,CAAQ,EACnEM,EAAY/C,EAAU6B,QAAQC,KAAMC,GAAMA,EAAEC,UAAYP,CAAK,EAC7DuB,EAAYhD,EAAU6B,QAAQC,KAAMC,GAAMA,EAAEC,UAAYW,CAAK,EAEnE,OAAIE,GAAeZ,aAAea,GAAcb,YACvC,GAAGY,GAAeZ,aAAe,EAAE,IAAIa,GAAcb,aAAe,EAAE,GAAGgB,KAAI,EAEhFF,GAAWd,YACNc,EAAUd,aAAe,GAE5Be,GAAWE,iBACN,KAAKC,wBAAwBH,GAAWE,gBAAgB,GAAK,GAE7D,KAAKE,kBAAkBJ,GAAWf,aAAe,EAAE,GAAK,EAIvE,CAEA7B,wBAAwBJ,EAA6B,CACnD,IAAMkC,EAAO,KAAKtC,gBAAgB8B,WAAWS,EAAYkB,gBAAgB,EAEzE,OADiBrD,EAAU6B,QAAQC,KAAMC,GAAMA,EAAEC,UAAYE,CAAI,GAChDD,aAAe,EAClC,CAEQmB,kBAAkBE,EAAmB,CAC3C,IAAMC,EAAeC,GAAYF,EAAa,CAC5CG,eAAgB,KACjB,EACD,OAAIC,OAAOC,KAAKJ,CAAY,EAAEK,SAAW,EAChC,GAGFC,GAAON,EAA8B,eAAe,CAC7D,CAEQJ,wBAAwBG,EAAiC,CAC/D,GAAIA,EAAYQ,iBAAmB,GACjC,MAAO,GAET,IAAMC,EAAS,CACbC,QAASV,EAAYW,eACrBtB,MAAOW,EAAYQ,eACnBI,IAAKZ,EAAYa,WAEnB,OAAON,GAAOE,EAAQ,eAAe,CACvC,iDA/HW3E,GAAuBgF,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,kCAAvBlF,EAAuBmF,QAAvBnF,EAAuBoF,UAAAC,WADV,MAAM,CAAA,CAAA,SACnBrF,CAAuB,GAAA,ICdpC,IAoBasF,GApBbC,GAAAC,EAAA,KACAC,KACAC,KAEAC,KAEAC,KACAC,KACAC,KAEAC,KAKAC,4BAKaV,IAAiC,IAAA,CAAxC,MAAOA,UAAyCW,EAAyB,CAGtE,OAAOC,kBAAkBC,EAA+BC,EAAgC,CAC7F,IAAMC,EAAiBD,EAAgBE,WAAWC,EAAYC,0BAA0B,EAClFC,EAAiBL,EAAgBE,WAAWC,EAAYG,0BAA0B,EAClFC,EAAOP,EAAgBE,WAAWC,EAAYK,yBAAyB,EACvEC,EAAQT,EAAgBE,WAAWC,EAAYO,0BAA0B,EACzEC,EAAaX,EAAgBE,WAAWC,EAAYS,+BAA+B,EACnFC,EAAUb,EAAgBE,WAAWC,EAAYW,4BAA4B,EAE7EC,EAAqBhB,EAAUiB,QAAQC,KAAMC,IAAMA,GAAEC,UAAYlB,CAAc,EAC/EmB,EAAqBrB,EAAUiB,QAAQC,KAAMC,IAAMA,GAAEC,UAAYd,CAAc,EAC/EgB,EAAWtB,EAAUiB,QAAQC,KAAMC,IAAMA,GAAEC,UAAYZ,CAAI,EAC3De,EAAYvB,EAAUiB,QAAQC,KAAMC,IAAMA,GAAEC,UAAYV,CAAK,EAC7Dc,EAAiBxB,EAAUiB,QAAQC,KAAMC,IAAMA,GAAEC,UAAYR,CAAU,EACvEa,GAAczB,EAAUiB,QAAQC,KAAMC,IAAMA,GAAEC,UAAYN,CAAO,EAWvE,MAToB,CAClBE,GAAoBU,YACpBL,GAAoBK,YACpBJ,GAAUI,YACVH,GAAWG,YACXD,IAAaC,YACbF,GAAgBE,WAAW,EAGVC,OAAQC,IAAUA,KAAUC,MAAS,EAAEC,KAAK,IAAI,CACrE,CAEAC,YAC8B9B,EACX+B,EAC2BC,EAC3BC,EACAC,EAA6C,CAE9D,MAAMlC,CAAe,EANO,KAAAA,gBAAAA,EACX,KAAA+B,UAAAA,EAC2B,KAAAC,OAAAA,EAC3B,KAAAC,uBAAAA,EACA,KAAAC,qBAAAA,EAGjB,KAAKC,aAAe,KAAKH,OAAOI,aAAaC,KAC3CC,EAAKC,GAAU,CACb,IAAMC,EAAY,GAAGC,GAAYC,QAAQC,IAAI,IAAIF,GAAYC,QAAQE,UAAUC,OAAO,GACtF,OAAON,EAAS,GAAGA,CAAM,IAAIC,CAAS,GAAK,EAC7C,CAAC,CAAC,CAEN,CAEQM,cAAcC,EAA0B,CAC9C,IAAMC,EAA0B,CAC9BC,GAAeC,kBACfD,GAAeE,UACfhD,EAAYiD,uBACZ,KAAKpD,gBAAgBE,WAAWC,EAAYC,0BAA0B,EACtE,KAAKJ,gBAAgBE,WAAWC,EAAYG,0BAA0B,EACtE,KAAKN,gBAAgBE,WAAWC,EAAYK,yBAAyB,EACrE,KAAKR,gBAAgBE,WAAWC,EAAYO,0BAA0B,EACtE,KAAKV,gBAAgBE,WAAWC,EAAYS,+BAA+B,EAC3E,KAAKZ,gBAAgBE,WAAWC,EAAYW,4BAA4B,EACxE,KAAKd,gBAAgBE,WAAWC,EAAYkD,cAAc,CAAC,EAG7D,QAAWC,KAAcN,EAAyB,CAChD,IAAMO,EAAQR,EAAQS,UAAWC,GAAMA,EAAEC,KAAOJ,CAAU,EACtDC,GAAS,IACXR,EAAQQ,CAAK,EAAEI,OAAS,GAE5B,CAEA,QAAWC,KAAWb,EAAQrB,OAAQ+B,GAAMA,EAAEC,KAAOvD,EAAY0D,WAAW,EAC1ED,EAAQE,OAAS,GAGnB,OAAOf,CACT,CAEAgB,uBAAuBhB,EAA0B,CAC/C,IAAMiB,EAA0B,IAAIC,IAAqB,CACvD,CAAC,KAAKjE,gBAAgBE,WAAWC,EAAY0D,WAAW,EAAG,EAAI,EAC/D,CAAC,KAAK7D,gBAAgBE,WAAWC,EAAYkD,cAAc,EAAG,EAAI,CAAC,CACpE,EAEDN,OAAAA,EAAQmB,QAASC,GAAU,CACzBA,EAAOR,OAAS,CAACK,EAAwBI,IAAID,EAAOT,EAAE,CACxD,CAAC,EACM,CAAC,GAAGX,CAAO,CACpB,CAEQsB,sBAAsBtE,EAA+BuE,EAA+B,CAC1F,IAAMC,EAAmB,KAAKvE,gBAAgBE,WAAWC,EAAY0D,WAAW,EAChF,KAAK1B,aAAaE,KAAKmC,GAAK,CAAC,CAAC,EAAEC,UAAWC,GAAe,CACxDA,EAAcA,EAAYC,QAAQ,eAAgB5E,EAAU6E,aAAe,EAAE,EAC7EN,EAAWC,CAAgB,EAAI,CAC7BM,SAAU,OACVlD,MAAO,KAAKmD,eAAe/E,CAAS,EACpCgF,KAAML,EAEV,CAAC,CACH,CAEAM,iBACEjF,EACAkF,EACAX,EAA+B,CAE/B,KAAKY,iCAAiCZ,CAAU,EAChD,KAAKD,sBAAsBtE,EAAWuE,CAAU,EAChD,KAAKa,6BAA6BpF,EAAWkF,EAAWX,CAAU,EAClE,KAAKc,yBAAyBrF,EAAWkF,EAAWX,CAAU,EAC9D,KAAKe,eAAe,KAAKrD,OAAOsD,SAASC,kBAAoB,CAAA,EAAIxF,EAAWuE,CAAU,CACxF,CAEQY,iCAAiCZ,EAA+B,CACtE,IAAMkB,EAAOlB,EAAW,KAAKtE,gBAAgBE,WAAWC,EAAYsF,sBAAsB,CAAC,EACvFD,IACFA,EAAKX,SAAW,YAEpB,CAEQO,yBACNrF,EACAkF,EACAX,EAA+B,CAE/BA,EAAWoB,GAAqBC,WAAW,EAAI,CAC7Cd,SAAU,OACVlD,MAAO,KAAK7B,kBAAkBC,CAAS,EAE3C,CAEA6F,iBAAiB7C,EAA4B8C,EAAiB,CAC5D,IAAIC,EAAoB,KAAKhD,cAAcC,CAAO,EAClD+C,EAAoB,KAAKC,qBAAqBD,CAAiB,EAC/DA,EAAoB,KAAKE,2BAA2BF,CAAiB,EACrE,IAAMG,EAAc,KAAKjE,OAAOsD,SAASC,kBAAoB,CAAA,EAC7DO,OAAAA,EAAoB,KAAKI,iBACvBD,EAAY3D,IAAKmB,GAAMA,EAAE0C,gBAAgB,EACzCL,CAAiB,EAEfD,IACFC,EAAoB,KAAK/B,uBAAuB+B,CAAiB,GAE5D,CAAC,GAAGA,CAAiB,CAC9B,CAEAhB,eAAe/E,EAA6B,CAC1C,OAAO,KAAKmC,qBAAqBkE,qBAAqB,UAAWrG,CAAS,CAC5E,CAEAsG,mBAAmBtG,EAA6B,CAC9C,OAAO,KAAKmC,qBAAqBmE,mBAAmB,UAAWtG,CAAS,CAC1E,CAEAD,kBAAkBC,EAA6B,CAC7C,OAAOb,EAAiCY,kBAAkBC,EAAW,KAAKC,eAAe,CAC3F,CAEQ+F,qBAAqBhD,EAA0B,CACrD,MAAO,CACL,GAAGA,EACH,CACEW,GAAIgC,GAAqBC,YACzBW,MAAO,KAAKvE,UAAUwE,QAAQ,gDAAgD,EAC9EC,SAAU,GACX,CAEL,CAEQR,2BAA2BjD,EAA0B,CAC3D,MAAO,CACL,CACEW,GAAIgC,GAAqBe,kBACzBH,MAAO,sBACP3C,OAAQ,IAEV,GAAGZ,CAAO,CAEd,CAEcoC,6BACZpF,EACAkF,EACAX,EAA+B,QAAAoC,GAAA,sBAE/B,IAAIC,EAAkB,GAChBC,EAA4B,KAAK5G,gBAAgB6G,2BACrD9G,EACAI,EAAYiD,sBAAsB,EAEhCwD,GAA2BnF,cAC7BkF,EAAkBC,EAA0BnF,aAE9C6C,EAAWoB,GAAqBe,iBAAiB,EAAI,CACnD5B,SAAU,SACVlD,MAAOgF,EACPG,UAAWC,GAEf,GAEQC,0BACNC,EACAC,EAA0C,CAE1C,GAAID,EAAqB,CACvB,IAAME,EAAeD,EAAQ1D,UAAWtC,GAAMA,EAAEC,UAAY8B,GAAemE,cAAc,EACrFD,EAAe,KACjBD,EAAQC,CAAY,EAAEE,OAAS,GAC/BH,EAAQC,CAAY,EAAEG,YAAc,GAExC,CACA,OAAOJ,CACT,CAEAK,iBAAiBL,EAA0C,CAEzD,IAAMM,GADa,KAAKxF,OAAOsD,SAASmC,uBAAyBC,EAAG,CAAA,CAAE,GACjCrF,KAAKC,EAAKqF,GAAc,KAAKC,sBAAsBV,EAASS,CAAS,CAAC,CAAC,EAC5G,OAAOE,EAAc,CAAC,KAAK5F,uBAAuB6F,kBAAiB,EAAIN,CAAiB,CAAC,EAAEnF,KACzFC,EAAI,CAAC,CAACyF,EAAoBb,CAAO,IAC/B,KAAKF,0BAA0Be,EAAoBb,CAAO,CAAC,CAC5D,CAEL,CAEAc,mBACEC,EACA3E,EACA4E,EAAgB,CAEhB,IAAM/G,EAAU,KAAKnB,gBAAgBE,WAAWoD,CAAU,EACpD6E,EAAOF,EAAkBhH,KAAMC,GAAMA,EAAEC,UAAYA,CAAO,EAChE,OAAIgH,IACFA,EAAKd,OAAS,IAED,CACblG,QAASA,EACT+G,SAAUA,EACVE,SAAUC,GAAqBC,mBAC/BC,OAAQ,CAAA,EACRC,WAAYL,EAGhB,CAEMM,kBACJC,EAAiE,QAAAhC,GAAA,sBAEjE,OAAOiC,GACLd,EAAc,CACZ,KAAK5F,uBAAuB6F,kBAAiB,EAC7CY,EACA,KAAK1G,OAAOsD,SAASsD,iBAAmBlB,EAAG,CAAA,CAAE,CAAC,CAC/C,CAAC,EACFmB,KAAK,CAAC,CAACC,EAAiBb,EAAmBc,CAAc,IAAK,CAC9D,IAAM7B,EAAU6B,EAAezG,IAAKZ,GAC3B,KAAKsG,mBAAmBC,EAAmBvG,EAAOP,QAASO,EAAOwG,QAAQ,CAClF,EACD,GAAIY,EAAiB,CACnB,IAAME,EAAcf,EAAkBhH,KACnCC,GAAMA,EAAEC,UAAY,KAAKnB,gBAAgBE,WAAW+C,GAAemE,cAAc,CAAC,EAEjF4B,IACFA,EAAY3B,OAAS,IAEvBH,EAAQ+B,KAAK,CACX9H,QAAS8B,GAAemE,eACxBc,SAAU,mCACVE,SAAUC,GAAqBC,mBAC/BC,OAAQ,CACN,CACEW,OAAQJ,EACT,EAEHN,WAAYQ,EACb,CACH,CACA,OAAO9B,CACT,CAAC,CACH,mDAnRWhI,GAAgCiK,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAiCjCG,EAAiB,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,CAAA,CAAA,CAAA,kCAjChBtK,EAAgCuK,QAAhCvK,EAAgCwK,SAAA,CAAA,CAAA,SAAhCxK,CAAiC,GAAA,ICpB9C,IAWayK,GAXbC,GAAAC,EAAA,KAAAC,KAKAC,IACAC,KACAC,KACAC,SAGaP,IAA4B,IAAA,CAAnC,MAAOA,CAA4B,CADzCQ,aAAA,CAEmB,KAAAC,OAASC,EAAOC,EAAiB,EACjC,KAAAC,gBAAkBF,EAAOG,EAAe,EAEzDC,mBAAmBC,EAAsDC,EAAoBC,EAAgB,CAC3G,IAAMC,EAAU,KAAKN,gBAAgBO,WAAWH,CAAU,EACpDI,EAAOL,EAAkBM,KAAMC,GAAMA,EAAEJ,UAAYA,CAAO,EAChE,OAAIE,IACFA,EAAKG,OAAS,IAED,CACbL,QAASA,EACTD,SAAUA,EACVO,SAAUC,GAAqBC,mBAC/BC,OAAQ,CAAA,EACRC,WAAYR,EAGhB,CAEAS,kBACEC,EAAiE,CAEjE,OAAOC,GAAeC,EAAc,CAACF,EAAoB,KAAKrB,OAAOwB,UAAUC,iBAAmBC,EAAG,CAAA,CAAE,CAAC,CAAC,CAAC,EAAEC,KAC1G,CAAC,CAACrB,EAAmBsB,CAAc,IAC1BA,EAAeC,IAAKC,GAClB,KAAKzB,mBAAmBC,EAAmBwB,EAAOrB,QAASqB,EAAOtB,QAAQ,CAClF,CACF,CAEL,iDA9BWjB,EAA4B,CAAA,kCAA5BA,EAA4BwC,QAA5BxC,EAA4ByC,SAAA,CAAA,CAAA,SAA5BzC,CAA4B,GAAA,8BETrC0C,EAAA,EAAA,IAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,kBAFGC,EAAA,aAAAC,CAAA,EACDC,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,6BAGFP,EAAA,EAAA,KAAA,EAAKC,EAAA,CAAA,EAAiBC,EAAA,kBAAjBG,EAAA,EAAAG,EAAAD,CAAA,6BALPE,EAAA,EAAAC,GAAA,EAAA,EAAA,IAAA,CAAA,eAIED,EAAA,EAAAE,GAAA,EAAA,EAAA,KAAA,oBAJFC,GAAAC,EAAAC,EAAA,EAAA,EAAAC,EAAAC,YAAA,GAAA,EAAA,EAAAH,CAAA,GDDF,IA4BaI,GA5BbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KAEAC,kBAkBaV,IAAgC,IAAA,CAAvC,MAAOA,UAAwCW,EAAmB,CAKtE,IACIC,MAAMC,EAAkB,CAC1B,KAAKC,aAAaC,KAAKF,EAASG,UAAU,EAC1C,KAAKC,WAAWF,KAAKF,EAASK,QAAQ,EACtC,KAAKC,UAAUJ,KAAKF,EAASO,OAAO,CACtC,CA0CAC,YACmBC,EACAC,EAC2BC,EAAuB,CAEnE,MAAK,EAJY,KAAAF,sBAAAA,EACA,KAAAC,qBAAAA,EAC2B,KAAAC,OAAAA,EAtD7B,KAAAP,WAAa,IAAIQ,GAAsB,CAAC,EACxC,KAAAX,aAAe,IAAIW,GAA0B,CAAC,EAC9C,KAAAN,UAAY,IAAIO,GAAyB,EAAK,EAS9C,KAAAC,oBAAsBC,EAAc,CAAC,KAAKd,aAAc,KAAKG,UAAU,CAAC,EAAEY,KACzFC,EAAU,CAAC,CAACd,EAAYE,CAAQ,IAAM,KAAKa,sBAAsBf,EAAYE,CAAQ,CAAC,CAAC,EAGtE,KAAAc,aAAe,KAAKL,oBAAoBE,KACzDI,EAAKC,GACCA,GAAoBC,UACf,KAAKZ,qBAAqBa,qBAC/BF,EAAmBlB,WACnBkB,EAAmBC,SAAS,EAGzB,EACR,CAAC,EAEe,KAAApC,aAAe6B,EAAc,CAC9C,KAAKD,oBACL,KAAKH,OAAOa,aACZ,KAAKlB,SAAS,CACf,EAAEU,KACDI,EAAI,CAAC,CAACC,EAAoBI,EAAUlB,CAAO,IAAK,CAC9C,GAAI,CAACc,GAAoBC,WAAa,CAACG,GAAY,CAAClB,EAClD,MAAO,GAET,IAAImB,EAAe,GACnB,OAAQL,GAAoBlB,WAAU,CACpC,IAAK,UACHuB,EAAe,GAAGC,GAAYC,QAAQC,IAAI,IAAIF,GAAYC,QAAQE,UAAUC,OAAO,GACnF,MACF,IAAK,UACHL,EAAe,GAAGC,GAAYK,QAAQH,IAAI,IAAIF,GAAYK,QAAQF,UAAUC,OAAO,GACnF,MACF,QACE,MAAO,EACX,CACA,IAAM1B,EAAWgB,GAAoBC,WAAWW,aAAe,GAC/D,MAAO,GAAGR,CAAQ,IAAIC,CAAY,GAAGQ,QAAQ,eAAgB7B,CAAQ,CACvE,CAAC,CAAC,CASJ,CAEQa,sBAAsBf,EAAwBE,EAAgB,CACpE,GAAI,CAACA,GAAY,CAACF,EAChB,OAAOgC,EAAGC,MAAS,EAErB,IAAMC,EAAW,KAAK5B,sBACnB6B,8CAA8CjC,EAAUF,EAAY,UAAW,CAAC,EAChFa,KACCI,EAAKmB,IAEI,CACLjB,UAFkBiB,GAAQC,KAAMC,GAAMC,EAAQD,EAAEE,gBAAiB,GAEzCA,iBACxBxC,WAAY,WAEf,CAAC,EAEAyC,EAAW,KAAKnC,sBACnB6B,8CAA8CjC,EAAUF,EAAY,UAAW,CAAC,EAChFa,KACCI,EAAKmB,IAEI,CACLjB,UAFkBiB,GAAQC,KAAMC,GAAMC,EAAQD,EAAEE,gBAAiB,GAEzCA,iBACxBxC,WAAY,WAEf,CAAC,EAEN,OAAOkC,EAASrB,KAAK6B,GAAWD,EAAW7C,GAAUA,EAAMuB,YAAcc,MAAS,CAAC,CACrF,iDAvFWjD,GAA+B2D,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAuDhCG,EAAiB,CAAA,CAAA,CAAA,+BAvDhB9D,EAA+B+D,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,OAAA,CAAApD,MAAA,OAAA,EAAAqD,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAApF,EAAA,IAAAoF,EAAA,IC5B5C/E,EAAA,EAAAgF,GAAA,EAAA,CAAA,2BAAA7E,GAAA8E,EAAA5E,EAAA,EAAA,EAAAV,EAAA6C,YAAA,GAAA,EAAA,GAAAyC,CAAA,kBD0BYC,GAAYC,EAAYC,EAAA,EAAAC,OAAA,CAAA;iGAAA,CAAA,CAAA,CAAA,SAEvB7E,CAAgC,GAAA,IE5B7C,IAmBa8E,GAnBbC,GAAAC,EAAA,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KAEAC,KAOAC,uBAGaV,IAAqC,IAAA,CAA5C,MAAOA,UAA6CW,EAAyB,CAGjFC,YAC8BC,EACgBC,EAC3BC,EACAC,EAA2B,CAE5C,MAAMH,CAAe,EALO,KAAAA,gBAAAA,EACgB,KAAAC,OAAAA,EAC3B,KAAAC,qBAAAA,EACA,KAAAC,UAAAA,EAGjB,KAAKC,aAAe,KAAKH,OAAOI,aAAaC,KAC3CC,EAAKC,GAAU,CACb,IAAMC,EAAY,GAAGC,GAAYC,YAAYC,IAAI,IAAIF,GAAYC,YAAYE,UAAUC,OAAO,GAC9F,OAAON,EAAS,GAAGA,CAAM,IAAIC,CAAS,GAAK,EAC7C,CAAC,CAAC,CAEN,CAEQM,cAAcC,EAA0B,CAC9C,IAAMC,EAAoC,CAACC,GAAeC,cAAeD,GAAeE,qBAAqB,EAE7G,QAAWC,KAAcJ,EAAyB,CAChD,IAAMK,EAAQN,EAAQO,UAAWC,GAAMA,EAAEC,KAAOJ,CAAU,EACtDC,GAAS,IACXN,EAAQM,CAAK,EAAEI,OAAS,GAE5B,CAEA,QAAWC,KAAWX,EAAQY,OAAQJ,GAAMA,EAAEC,KAAOI,EAAYC,eAAe,EAC9EH,EAAQI,OAAS,GAGnB,OAAOf,CACT,CAEAgB,uBAAuBhB,EAA0B,CAC/C,IAAMiB,EAA0B,IAAIC,IAAqB,CAAC,CAACL,EAAYC,gBAAiB,EAAI,CAAC,CAAC,EAE9Fd,OAAAA,EAAQmB,QAASC,GAAU,CACzBA,EAAOV,OAAS,CAACO,EAAwBI,IAAID,EAAOX,EAAE,CACxD,CAAC,EACM,CAAC,GAAGT,CAAO,CACpB,CAEQsB,eAAeC,EAA+BC,EAA+B,CACnF,IAAMC,EAAYZ,EAAYC,gBAC9B,KAAK1B,aAAaE,KAAKoC,GAAK,CAAC,CAAC,EAAEC,UAAWC,GAAe,CACxDA,EAAcA,EAAYC,QAAQ,eAAgBN,EAAUO,aAAe,EAAE,EAC7EN,EAAWC,CAAS,EAAI,CACtBM,SAAU,OACVC,MAAO,KAAKC,eAAeV,CAAS,EACpCW,KAAMN,EAEV,CAAC,CACH,CAEAO,iBACEZ,EACAa,EACAZ,EAA+B,CAE/B,KAAKF,eAAeC,EAAWC,CAAU,EACzC,KAAKa,gCAAgCd,EAAWC,CAAU,EAC1D,KAAKc,eAAe,KAAKrD,OAAOsD,aAAaC,kBAAoB,CAAA,EAAIjB,EAAWC,CAAU,CAC5F,CAEAiB,iBAAiBzC,EAA4B0C,EAAiB,CAC5D,IAAIC,EAAoB,KAAK5C,cAAcC,CAAO,EAClD2C,EAAoB,KAAKC,4BAA4BD,CAAiB,EACtE,IAAME,EAAc,KAAK5D,OAAOsD,aAAaC,kBAAoB,CAAA,EACjEG,OAAAA,EAAoB,KAAKG,iBACvBD,EAAYtD,IAAKiB,GAAMA,EAAEuC,gBAAgB,EACzCJ,CAAiB,EAEfD,IACFC,EAAoB,KAAK3B,uBAAuB2B,CAAiB,GAE5D,CAAC,GAAGA,CAAiB,CAC9B,CAEQC,4BAA4B5C,EAA0B,CAC5D,MAAO,CACL,CACES,GAAIuC,GAAyBC,mBAC7BC,MAAO,KAAK/D,UAAUgE,QAAQ,oEAAoE,GAEpG,GAAGnD,CAAO,CAEd,CAEQqC,gCAAgCd,EAA+BC,EAA+B,CACpGA,EAAWwB,GAAyBC,kBAAkB,EAAI,CACxDlB,SAAU,SACVC,MAAO,CACLoB,SAAU7B,EAAUO,YACpBuB,WAAY,cACZC,QAAS,IAEXC,UAAWC,GAEf,CAEAvB,eAAeV,EAA6B,CAC1C,OAAO,KAAKrC,qBAAqBuE,qBAAqB,cAAelC,CAAS,CAChF,CAEAmC,mBAAmBnC,EAA6B,CAC9C,OAAO,KAAKrC,qBAAqBwE,mBAAmB,cAAenC,CAAS,CAC9E,CAEAoC,iBAAiBC,EAA0C,CAGzD,OAFmB,KAAK3E,OAAOsD,aAAasB,uBAAyBC,EAAG,CAAA,CAAE,GACrCxE,KAAKC,EAAKwE,GAAc,KAAKC,sBAAsBJ,EAASG,CAAS,CAAC,CAAC,CAE9G,CAEAE,mBAAmBC,EAAsD7D,EAAoB8D,EAAgB,CAC3G,IAAMC,EAAU,KAAKpF,gBAAgBqF,WAAWhE,CAAU,EACpDiE,EAAOJ,EAAkBK,KAAMC,GAAMA,EAAEJ,UAAYA,CAAO,EAChE,OAAIE,IACFA,EAAKG,OAAS,IAED,CACbL,QAASA,EACTD,SAAUA,EACVO,SAAUC,GAAqBC,mBAC/BC,OAAQ,CAAA,EACRC,WAAYR,EAGhB,CAEMS,kBACJC,EAAiE,QAAAC,GAAA,sBAEjE,OAAOC,GAAeC,EAAc,CAACH,EAAoB,KAAK/F,OAAOsD,aAAa6C,iBAAmBtB,EAAG,CAAA,CAAE,CAAC,CAAC,CAAC,EAAEuB,KAC7G,CAAC,CAACnB,EAAmBoB,CAAc,IACjBA,EAAe/F,IAAKqB,GAC3B,KAAKqD,mBAAmBC,EAAmBtD,EAAOwD,QAASxD,EAAOuD,QAAQ,CAClF,CAEF,CAEL,mDA/IWhG,GAAoCoH,EAAAC,EAAA,EAAAD,EAKrCE,EAAiB,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,CAAA,CAAA,CAAA,kCALhBxH,EAAoCyH,QAApCzH,EAAoC0H,SAAA,CAAA,CAAA,SAApC1H,CAAqC,GAAA,ICnBlD,IAaa2H,IAbbC,GAAAC,EAAA,KAEAC,KACAC,KAEAC,KAEAC,KACAC,KACAC,mBAIaR,KAAsC,IAAA,CAA7C,MAAOA,UAA8CS,EAAyB,CAGlFC,YAC8CC,EAChBC,EACXC,EAA6C,CAE9D,MAAMD,CAAe,EAJuB,KAAAD,OAAAA,EAChB,KAAAC,gBAAAA,EACX,KAAAC,qBAAAA,EAGjB,KAAKC,aAAe,KAAKH,OAAOI,aAAaC,KAC3CC,EAAKC,GAAU,CACb,IAAMC,EAAY,GAAGC,GAAYC,cAAcC,IAAI,IAAIF,GAAYC,cAAcE,UAAUC,OAAO,GAClG,OAAON,EAAS,GAAGA,CAAM,IAAIC,CAAS,GAAK,EAC7C,CAAC,CAAC,CAEN,CAEAM,eAAeC,EAA6B,CAC1C,OAAO,KAAKb,qBAAqBc,wBAAwBD,CAAS,CACpE,CAGAE,mBAAmBF,EAA6B,CAC9C,MAAO,EACT,CAEAG,iBACEH,EACAI,EACAC,EAA+B,CAE/B,KAAKC,2BAA2BN,EAAWK,CAAU,CACvD,CAEQC,2BAA2BN,EAA+BK,EAA+B,CAC/F,IAAME,EAAwB,KAAKrB,gBAAgBsB,WAAWC,EAAYC,gBAAgB,EAC1F,KAAKtB,aAAaE,KAAKqB,GAAK,CAAC,CAAC,EAAEC,UAAWC,GAAe,CACxDA,EAAcA,EAAYC,QAAQ,sBAAuBd,EAAUe,kBAAoB,EAAE,EACzFF,EAAcA,EAAYC,QAAQ,eAAgBd,EAAUgB,aAAe,EAAE,EAC7EX,EAAWE,CAAqB,EAAI,CAClCU,SAAU,OACVC,MAAO,KAAKnB,eAAeC,CAAS,EACpCmB,KAAMN,EAEV,CAAC,CACH,CAEAO,iBAAiBC,EAA4BC,EAAkB,CAE7D,MAAO,CAAC,GADkB,KAAKC,cAAcF,CAAO,CACxB,CAC9B,CAEQE,cAAcF,EAA0B,CAC9C,IAAMG,EAA0B,CAC9BC,GAAeC,eACfD,GAAeE,uBACfF,GAAeG,mBACfH,GAAeI,mBAAmB,EAGpC,QAAWC,KAAcN,EAAyB,CAChD,IAAMO,EAAQV,EAAQW,UAAWC,GAAMA,EAAEC,KAAOJ,CAAU,EACtDC,GAAS,IACXV,EAAQU,CAAK,EAAEI,OAAS,GAE5B,CAEA,QAAWC,KAAWf,EAAQgB,OAAQJ,GAAMA,EAAEC,KAAOzB,EAAYC,gBAAgB,EAC/E0B,EAAQE,OAAS,GAGnB,OAAOjB,CACT,CAEAkB,iBAAiBC,EAA0C,CACzD,OAAOC,EAAGD,CAAO,CACnB,CAEAE,kBACEC,EAAkE,CAElE,OAAOC,QAAQC,QAAQ,CAAA,CAAE,CAC3B,iDAlFWvE,GAAqCwE,EAItCC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,kCAJhB3E,EAAqC4E,QAArC5E,EAAqC6E,UAAAC,WADxB,MAAM,CAAA,CAAA,SACnB9E,CAAsC,GAAA,ICbnD,IAAA+E,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCgmBA,SAASC,GAAoBC,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAyrDA,SAASC,GAAoBF,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAxyEA,IA6CIE,GAmBAC,GAMAC,GAkGAC,GAOAC,GA4bEC,GAmCAC,GA6BAC,GA0BAC,GAomDAC,GA6BAC,GAuBAC,GAuBAC,GAuBAC,GAoBAC,GAuBAC,GA0BAC,GAoBAC,GAuBAC,GA0BAC,GA0BAC,GAoBAC,GAsCAC,GA0BAC,GA+CAC,GAgCAC,GAuDAC,GAgCAC,GAoBAC,GAwCAC,GACAC,GAOFC,GA6BAC,GAwCAC,IAwJAC,GA1kGJC,GAAAC,EAAA,KAAAC,IACAA,IACAC,KACAC,KA0CIvC,GAA2B,SAAUA,EAAa,CACpD,OAAAA,EAAYA,EAAY,qBAA0B,CAAC,EAAI,uBACvDA,EAAYA,EAAY,mBAAwB,CAAC,EAAI,qBACrDA,EAAYA,EAAY,uBAA4B,CAAC,EAAI,yBACzDA,EAAYA,EAAY,sBAA2B,CAAC,EAAI,wBACxDA,EAAYA,EAAY,uBAA4B,CAAC,EAAI,yBACzDA,EAAYA,EAAY,uBAA4B,CAAC,EAAI,yBACzDA,EAAYA,EAAY,uBAA4B,CAAC,EAAI,yBACzDA,EAAYA,EAAY,wBAA6B,CAAC,EAAI,0BAC1DA,EAAYA,EAAY,wBAA6B,CAAC,EAAI,0BAC1DA,EAAYA,EAAY,wBAA6B,CAAC,EAAI,0BAC1DA,EAAYA,EAAY,0BAA+B,EAAE,EAAI,4BAC7DA,EAAYA,EAAY,0BAA+B,EAAE,EAAI,4BAC7DA,EAAYA,EAAY,0BAA+B,EAAE,EAAI,4BAC7DA,EAAYA,EAAY,uBAA4B,EAAE,EAAI,yBAC1DA,EAAYA,EAAY,uBAA4B,EAAE,EAAI,yBAC1DA,EAAYA,EAAY,uBAA4B,EAAE,EAAI,yBACnDA,CACT,EAAEA,IAAe,CAAC,CAAC,EACfC,GAAmC,SAAUA,EAAqB,CACpE,OAAAA,EAAoBA,EAAoB,8BAAmC,CAAC,EAAI,gCAChFA,EAAoBA,EAAoB,0BAA+B,CAAC,EAAI,4BAC5EA,EAAoBA,EAAoB,yBAA8B,CAAC,EAAI,2BACpEA,CACT,EAAEA,IAAuB,CAAC,CAAC,EACvBC,GAA8B,SAAUA,EAAgB,CAC1D,OAAAA,EAAeA,EAAe,wBAA6B,CAAC,EAAI,0BAChEA,EAAeA,EAAe,yBAA8B,CAAC,EAAI,2BACjEA,EAAeA,EAAe,6BAAkC,CAAC,EAAI,+BACrEA,EAAeA,EAAe,mBAAwB,CAAC,EAAI,qBAC3DA,EAAeA,EAAe,uBAA4B,CAAC,EAAI,yBAC/DA,EAAeA,EAAe,uBAA4B,CAAC,EAAI,yBAC/DA,EAAeA,EAAe,2BAAgC,CAAC,EAAI,6BACnEA,EAAeA,EAAe,uBAA4B,CAAC,EAAI,yBAC/DA,EAAeA,EAAe,2BAAgC,CAAC,EAAI,6BACnEA,EAAeA,EAAe,yBAA8B,CAAC,EAAI,2BACjEA,EAAeA,EAAe,iCAAsC,EAAE,EAAI,mCAC1EA,EAAeA,EAAe,4BAAiC,EAAE,EAAI,8BACrEA,EAAeA,EAAe,gCAAqC,EAAE,EAAI,kCACzEA,EAAeA,EAAe,gCAAqC,EAAE,EAAI,kCACzEA,EAAeA,EAAe,4CAAiD,EAAE,EAAI,8CACrFA,EAAeA,EAAe,6BAAkC,EAAE,EAAI,+BACtEA,EAAeA,EAAe,yCAA8C,EAAE,EAAI,2CAClFA,EAAeA,EAAe,0BAA+B,EAAE,EAAI,4BACnEA,EAAeA,EAAe,gCAAqC,EAAE,EAAI,kCACzEA,EAAeA,EAAe,yBAA8B,EAAE,EAAI,2BAClEA,EAAeA,EAAe,+BAAoC,EAAE,EAAI,iCACxEA,EAAeA,EAAe,2BAAgC,EAAE,EAAI,6BACpEA,EAAeA,EAAe,+BAAoC,EAAE,EAAI,iCACxEA,EAAeA,EAAe,yBAA8B,EAAE,EAAI,2BAClEA,EAAeA,EAAe,6BAAkC,EAAE,EAAI,+BAC/DA,CACT,EAAEA,IAAkB,CAAC,CAAC,EAuElBC,GAAmD,SAAUA,EAAqC,CACpG,OAAAA,EAAoCA,EAAoC,mDAAwD,CAAC,EAAI,qDACrIA,EAAoCA,EAAoC,uDAA4D,CAAC,EAAI,yDACzIA,EAAoCA,EAAoC,qDAA0D,CAAC,EAAI,uDACvIA,EAAoCA,EAAoC,kDAAuD,CAAC,EAAI,oDAC7HA,CACT,EAAEA,IAAuC,CAAC,CAAC,EACvCC,GAAkD,SAAUA,EAAoC,CAClG,OAAAA,EAAmCA,EAAmC,oDAAyD,CAAC,EAAI,sDACpIA,EAAmCA,EAAmC,oDAAyD,CAAC,EAAI,sDACpIA,EAAmCA,EAAmC,kDAAuD,CAAC,EAAI,oDAClIA,EAAmCA,EAAmC,+CAAoD,CAAC,EAAI,iDACxHA,CACT,EAAEA,IAAsC,CAAC,CAAC,EAsbpCC,GAAN,MAAMmC,CAAO,CACX,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW9C,GAAoBM,GAAgBuC,EAAM,QAAQ,GAE7DA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIjC,GAAY,SAAS,GAE5CkC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMtC,GAAN,MAAMuC,CAAY,CAChB,OAAO,UAAUJ,EAAO,CACtB,IAAIC,EAAI,IAAIG,EACZ,OAAAH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW9C,GAAoBK,GAAqBwC,EAAM,QAAQ,GAElEA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIpC,GAAO,SAAS,GAEzCqC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMrC,GAAN,MAAMuC,CAAM,CACV,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMpC,GAAN,MAAMuC,CAAY,CAChB,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEpCA,EAAM,OACRC,EAAE,KAAO,IAAI,KAAKD,EAAM,IAAI,GAE1BA,EAAM,cACRC,EAAE,YAAc9C,GAAoBI,GAAayC,EAAM,WAAW,GAEhEA,EAAM,QACRC,EAAE,MAAQnC,GAAM,UAAUkC,EAAM,KAAK,GAEhCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EAmjDMnC,GAAN,MAAMuC,CAAqC,CACzC,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAE/BA,CACT,CACF,EACMlC,GAAN,MAAMuC,CAA4C,CAChD,OAAO,UAAUR,EAAO,CACtB,IAAIC,EAAI,IAAIO,EACZ,OAAAP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS3C,GAAoBI,GAAqCsC,EAAM,MAAM,GAE3EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMjC,GAAN,MAAMuC,CAAoC,CACxC,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMhC,GAAN,MAAMuC,CAAiC,CACrC,OAAO,UAAUV,EAAO,CACtB,IAAIC,EAAI,IAAIS,EACZ,OAAAT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM/B,GAAN,MAAMuC,CAAkC,CACtC,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM9B,GAAN,MAAMuC,CAA6C,CACjD,OAAO,UAAUZ,EAAO,CACtB,IAAIC,EAAI,IAAIW,EACZ,OAAAX,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM7B,GAAN,MAAMuC,CAA8C,CAClD,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS3C,GAAoBK,GAAoCqC,EAAM,MAAM,GAE1EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM5B,GAAN,MAAMuC,CAAoC,CACxC,OAAO,UAAUd,EAAO,CACtB,IAAIC,EAAI,IAAIa,EACZ,OAAAb,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM3B,GAAN,MAAMuC,CAAqC,CACzC,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWrB,GAAS,UAAUoB,EAAM,QAAQ,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACM1B,GAAN,MAAMuC,CAA8B,CAClC,OAAO,UAAUhB,EAAO,CACtB,IAAIC,EAAI,IAAIe,EACZ,OAAAf,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMzB,GAAN,MAAMuC,CAAkC,CACtC,OAAO,UAAUjB,EAAO,CACtB,IAAIC,EAAI,IAAIgB,EACZ,OAAAhB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMxB,GAAN,MAAMuC,CAAmC,CACvC,OAAO,UAAUlB,EAAO,CACtB,IAAIC,EAAI,IAAIiB,EACZ,OAAAjB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMvB,GAAN,MAAMuC,CAAS,CACb,OAAO,UAAUnB,EAAO,CACtB,IAAIC,EAAI,IAAIkB,EACZ,OAAAlB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEpCA,EAAM,gBACRC,EAAE,cAAgBnB,GAAc,UAAUkB,EAAM,aAAa,GAExDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACMtB,GAAN,MAAMuC,CAAwC,CAC5C,OAAO,UAAUpB,EAAO,CACtB,IAAIC,EAAI,IAAImB,EACZ,OAAAnB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMrB,GAAN,MAAMuC,CAAc,CAClB,OAAO,UAAUrB,EAAO,CACtB,IAAIC,EAAI,IAAIoB,EACZ,OAAApB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAOMpB,GAAN,MAAMuC,CAAgC,CACpC,OAAO,UAAUtB,EAAO,CACtB,IAAIC,EAAI,IAAIqB,EACZ,OAAArB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEhCA,CACT,CACF,EACMnB,GAAN,MAAMuC,CAAiC,CACrC,OAAO,UAAUvB,EAAO,CACtB,IAAIC,EAAI,IAAIsB,EACZ,OAAAtB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EAoCMlB,GAAN,MAAMuC,CAAqD,CACzD,OAAO,UAAUxB,EAAO,CACtB,IAAIC,EAAI,IAAIuB,EACZ,OAAAvB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUpC,GAAY,UAAUmC,EAAM,OAAO,GAE1CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMjB,GAAN,MAAMuC,CAAoD,CACxD,OAAO,UAAUzB,EAAO,CACtB,IAAIC,EAAI,IAAIwB,EACZ,OAAAxB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMhB,GAAN,MAAMuC,CAA8B,CAClC,OAAO,UAAU1B,EAAO,CACtB,IAAIC,EAAI,IAAIyB,EACZ,OAAAzB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUf,GAAoD,UAAUc,EAAM,OAAO,GAErFA,EAAM,WACRC,EAAE,SAAWhB,GAAqD,UAAUe,EAAM,QAAQ,GAErFC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EASMf,IAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,GAAU,CACd,MAAS,0CACT,KAAQ,GACR,KAAQ,sCACR,KAAQ,sCACR,WAAc,qCAChB,EACIC,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,GAAQD,GAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6BqC,EAAmB,CACjE,OAAO,IAAKA,GAAqBrC,EACnC,EACAA,EAAY,WAA0BsC,GAAmB,CACvD,MAAOtC,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,IAAgC,IAAM,CACxC,MAAMA,CAAgB,CACpB,aAAc,CACZ,KAAK,YAAcsC,EAAOvC,EAAW,EACrC,KAAK,KAAOuC,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,yBAAyBC,EAAG,CAC1B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjD,GAAgCiD,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6DAA8DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQnD,GAAiC,UAAUmD,CAAI,CAAC,CAAC,CAC7M,CACF,CACA,OAAA5C,EAAgB,UAAO,SAAiCoC,EAAmB,CACzE,OAAO,IAAKA,GAAqBpC,EACnC,EACAA,EAAgB,WAA0BqC,GAAmB,CAC3D,MAAOrC,EACP,QAASA,EAAgB,UACzB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,KAAwC,IAAM,CAChD,MAAMA,CAAwB,CAC5B,aAAc,CACZ,KAAK,YAAcqC,EAAOvC,EAAW,EACrC,KAAK,KAAOuC,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,uBAAuBC,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7C,GAA8B6C,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mEAAoEC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACvH,KAAK,WAAW,GADuG,CAE1H,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAA7C,EAAwB,UAAO,SAAyCmC,EAAmB,CACzF,OAAO,IAAKA,GAAqBnC,EACnC,EACAA,EAAwB,WAA0BoC,GAAmB,CACnE,MAAOpC,EACP,QAASA,EAAwB,UACjC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAwHCC,IAAmC,IAAM,CAC3C,MAAMA,CAAmB,CACvB,aAAc,CACZ,KAAK,YAAcoC,EAAOvC,EAAW,EACrC,KAAK,KAAOuC,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,6BAA6BC,EAAG,CAC9B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9D,GAAoC8D,CAAC,EAC3E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oEAAqEC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACxH,KAAK,WAAW,GADwG,CAE3H,QAAS,UACX,EAAC,CACH,CACA,sCAAsCL,EAAG,CACvC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3D,GAA6C2D,CAAC,EACpF,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6EAA8EC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ7D,GAA8C,UAAU6D,CAAI,CAAC,CAAC,CAC1O,CACA,0BAA0BH,EAAG,CAC3B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7D,GAAiC6D,CAAC,EACxE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iEAAkEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ/D,GAAkC,UAAU+D,CAAI,CAAC,CAAC,CAClN,CACA,8BAA8BH,EAAG,CAC/B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhE,GAAqCgE,CAAC,EAC5E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qEAAsEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQlE,GAA4C,UAAUkE,CAAI,CAAC,CAAC,CAChO,CACA,2BAA2BH,EAAG,CAC5B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItD,GAAkCsD,CAAC,EACzE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kEAAmEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQxD,GAAmC,UAAUwD,CAAI,CAAC,CAAC,CACpN,CACA,iCAAiCH,EAAG,CAClC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInD,GAAwCmD,CAAC,EAC/E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wEAAyEC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAC5H,KAAK,WAAW,GAD4G,CAE/H,QAAS,UACX,EAAC,CACH,CACA,6BAA6BL,EAAG,CAC9B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzD,GAAoCyD,CAAC,EAC3E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oEAAqEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ3D,GAAqC,UAAU2D,CAAI,CAAC,CAAC,CACxN,CACA,uBAAuBH,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvD,GAA8BuD,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8DAA+DC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAClH,KAAK,WAAW,GADkG,CAErH,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAA5C,EAAmB,UAAO,SAAoCkC,EAAmB,CAC/E,OAAO,IAAKA,GAAqBlC,EACnC,EACAA,EAAmB,WAA0BmC,GAAmB,CAC9D,MAAOnC,EACP,QAASA,EAAmB,UAC5B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,IC5oGH,IAqBa6C,GArBbC,GAAAC,EAAA,KAAAC,KAUAC,KACAC,KACAC,cASaN,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,CAChCO,YAC8CC,EACpCC,EAAsC,CADF,KAAAD,OAAAA,EACpC,KAAAC,mBAAAA,CACP,CAEHC,6BAA6BC,EAAiB,CAC5C,OAAO,KAAKH,OAAOI,WAAWC,KAC5BC,EAAWC,GAAa,CACtB,IAAMC,EAAU,CACdD,UAAWA,EACXJ,UAAWA,GAEb,OAAO,KAAKF,mBAAmBC,6BAA6BM,CAAO,CACrE,CAAC,EACDC,EAAKC,GAAaA,EAASC,EAAE,EAC7BC,GAAK,CAAC,CAAC,CAEX,CAEAC,sCAAsCV,EAAiB,CACrD,OAAO,KAAKH,OAAOI,WAAWC,KAC5BC,EAAWC,GAAa,CACtB,IAAMC,EAAU,CACdD,UAAWA,EACXJ,UAAWA,GAEb,OAAO,KAAKF,mBAAmBY,sCAAsCL,CAAO,CAC9E,CAAC,EACDC,EAAKC,IACI,CAAEI,OAAQJ,EAASI,OAAQC,eAAgBL,EAASK,cAAc,EAC1E,EACDH,GAAK,CAAC,CAAC,CAEX,CAEAI,0BAA0Bb,EAAiB,CACzC,OAAO,KAAKH,OAAOI,WAAWC,KAC5BC,EAAWC,GAAa,CACtB,IAAMC,EAAU,CACdD,UAAWA,EACXJ,UAAWA,GAEb,OAAO,KAAKF,mBAAmBe,0BAA0BR,CAAO,CAClE,CAAC,EACDC,EAAKC,GAAaA,EAASK,cAAc,EACzCH,GAAK,CAAC,CAAC,CAEX,CAEAK,8BACEC,EACAf,EACAgB,EAAyB,CAEzB,OAAO,KAAKnB,OAAOI,WAAWC,KAC5BC,EAAWC,GAAa,CACtB,IAAMC,EAAU,CACdD,UAAWA,EACXW,UAAWA,EACXf,UAAWA,EACXgB,iBAAkBA,GAEpB,OAAO,KAAKlB,mBAAmBgB,8BAA8BT,CAAO,CACtE,CAAC,EACDY,GAAW,IACFC,EAAG,CACRP,OAAQQ,GAAoCC,kDAC7C,CACF,EACDd,EAAKC,GAAaA,EAASI,MAAM,EACjCF,GAAK,CAAC,CAAC,CAEX,CAEAY,iCAAiCN,EAAmBf,EAAiB,CACnE,OAAO,KAAKH,OAAOI,WAAWC,KAC5BC,EAAWC,GAAa,CACtB,IAAMC,EAAU,CACdD,UAAWA,EACXW,UAAWA,EACXf,UAAWA,GAEb,OAAO,KAAKF,mBAAmBuB,iCAAiChB,CAAO,CACzE,CAAC,EACDC,EAAKC,GAAaA,EAASC,EAAE,EAC7BC,GAAK,CAAC,CAAC,CAEX,CAEAa,2BAA2BP,EAAmBf,EAAiB,CAC7D,OAAO,KAAKH,OAAOI,WAAWC,KAC5BC,EAAWC,GAAa,CACtB,IAAMC,EAAU,CACdD,UAAWA,EACXW,UAAWA,EACXf,UAAWA,GAEb,OAAO,KAAKF,mBAAmBwB,2BAA2BjB,CAAO,CACnE,CAAC,EACDC,EAAKC,GACI,CAAC,CAACA,EAASgB,SACnB,EACDd,GAAK,CAAC,CAAC,CAEX,iDAzGWpB,GAAqBmC,EAEtBC,EAAiB,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,kCAFhBrC,EAAqBsC,QAArBtC,EAAqBuC,SAAA,CAAA,CAAA,SAArBvC,CAAqB,GAAA,ICrBlC,IAWawC,IAXbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KAGAC,KACAC,mBAKaP,KAA+B,IAAA,CAAtC,MAAOA,CAA+B,CAI1CQ,YAC8CC,EACpCC,EACAC,EAAgC,CAFI,KAAAF,OAAAA,EACpC,KAAAC,mBAAAA,EACA,KAAAC,gBAAAA,EALH,KAAAC,oBAAsBC,EAAO,EAAK,EAOvC,KAAKC,qBAAuB,KAAKL,OAAOM,SAASC,eAAiBC,EACpE,CAEAC,+BAA+BC,EAAmBC,EAAsD,CACtG,KAAKR,oBAAoBS,IAAI,EAAI,EACjC,KAAKC,6BAA6BH,CAAS,EACxCI,KAAKC,GAAK,CAAC,CAAC,EACZC,UAAU,CACTC,KAAOC,GAAkB,CACnBA,EAAeC,OAAS,GAC1BR,EAAqBO,CAAc,EAErC,KAAKf,oBAAoBS,IAAI,EAAK,CACpC,EACAQ,MAAOA,IAAK,CACV,KAAKlB,gBAAgBmB,eAAe,6BAA8B,CAChEC,SAAUC,IACX,EACD,KAAKpB,oBAAoBS,IAAI,EAAK,CACpC,EACD,CACL,CAGAC,6BAA6BH,EAAiB,CAC5C,OAAO,KAAKT,mBAAmBY,6BAA6BH,CAAS,EAAEI,KACrEU,EAAU,IAAM,KAAKC,0BAA0Bf,CAAS,CAAC,EACzDgB,EAAKC,GAAiB,CACpB,GACEA,EAAcC,SAAWC,GAAmCC,kDAE5D,OAAOH,EAAcT,eAErB,MAAM,IAAIa,MAAM,4CAA4C,CAEhE,CAAC,CAAC,CAEN,CAEQN,0BAA0Bf,EAAiB,CACjD,OAAO,KAAKT,mBAAmB+B,sCAAsCtB,CAAS,EAAEI,KAC9EY,EAAKC,GAAiB,CACpB,GACEA,EAAcC,SAAWC,GAAmCC,kDAG5D,MAAO,CAAEF,OAAQD,EAAcC,OAAQV,eAAgBS,EAAcT,cAAc,EAC9E,GACLS,EAAcC,SAAWC,GAAmCI,+CAG5D,MAAO,CAAEL,OAAQD,EAAcC,OAAQV,eAAgB,EAAE,EAG3D,KAAM,EACR,CAAC,EACDgB,GAAM,CAAEC,MAAO,GAAI,CAAE,CAAC,CAE1B,iDAnEW5C,GAA+B6C,EAKhCC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,kCALhBhD,EAA+BiD,QAA/BjD,EAA+BkD,SAAA,CAAA,CAAA,SAA/BlD,CAA+B,GAAA,ICX5C,OA2BamD,GA3BbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,yDAgBab,IAA4B,IAAA,CAAnC,MAAOA,CAA4B,CACvC,IAAac,KAAKA,EAAc,CAC9B,KAAKC,YAAYC,SAASF,CAAI,CAChC,CAmBAG,YACmBC,EACAC,EAA4C,CAD5C,KAAAD,WAAAA,EACA,KAAAC,sBAAAA,EAnBT,KAAAC,YAAc,IAAIC,GAE5B,KAAAN,YAAc,IAAIO,GAAsB,CAAA,CAAE,EAE1C,KAAAC,kBAAoBC,EAAe,EAAE,EACrC,KAAAC,cAAgBC,GAAa,KAAKH,iBAAiB,EAAEI,KACnDC,GAAmB,KAAKV,UAAU,EAClCW,GAAaC,GAAkB,EAC/BC,EAAWC,GAAe,KAAKC,SAASD,CAAU,CAAC,EACnDE,GAAW,IACFC,EAAG,CAAA,CAAE,CACb,EACDC,EAAKtB,GACIA,EAAKuB,OAAQC,GAAQ,CAACC,GAAcC,SAASF,GAAKG,YAAW,CAAE,CAAC,CACxE,CAAC,EAOF,KAAK1B,YAAY2B,aACdf,KACCC,GAAkB,EAClBe,GAAK7B,GAAS,KAAKM,YAAYwB,KAAK9B,CAAI,CAAC,CAAC,EAE3C+B,UAAS,CACd,CAEQZ,SAASa,EAAa,CAC5B,OAAO,KAAK3B,sBAAsB4B,4BAChC,KAAKC,gBACL,OACAC,GACAH,CAAK,CAET,iDAzCW9C,GAA4BkD,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAA5BpD,EAA4BqD,UAAA,CAAA,CAAA,2BAAA,CAAA,EAAAC,OAAA,CAAAxC,KAAA,OAAAkC,gBAAA,iBAAA,EAAAO,QAAA,CAAAnC,YAAA,aAAA,EAAAoC,MAAA,EAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,EAAA,aAAA,gBAAA,aAAA,mBAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IC3BzCE,EAAA,EAAA,iBAAA,EAAiB,EAAA,YAAA,EACHC,EAAA,CAAA,mBAAiDC,EAAA,EAC7DF,EAAA,EAAA,UAAA,EAAUC,EAAA,CAAA,mBAAuDC,EAAA,EACjEF,EAAA,EAAA,kBAAA,CAAA,eAKEG,EAAA,aAAA,SAAAC,EAAA,CAAA,OAAcL,EAAAtC,kBAAA4C,IAAAD,CAAA,CAA6B,CAAA,EAL7CF,EAAA,EAME,cARUI,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,+BAAA,CAAA,EACFF,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,qCAAA,CAAA,EAERF,EAAA,CAAA,EAAAG,EAAA,iBAAAC,EAAAF,EAAA,EAAA,GAAAT,EAAApC,aAAA,KAAA,MAAA+C,IAAAC,OAAAD,EAAAE,GAAA,GAAAC,EAAA,CAAA,EAA+C,aAAA,EAAA,EAC5B,mBAAA,EAAA,EACO,cAAAd,EAAA9C,WAAA,kBDU1B6D,EAAYC,GACZC,EAAeC,EACfC,GACAC,GACAC,GAAgBC,GAChBC,GAAmBC,GAAAC,GACnBC,GAAqBC,GAAAC,GAAAC,EAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAKZ3F,CAA4B,GAAA,uCGtBvC4F,EAAA,CAAA,EACEC,EAAA,EAAA,4BAAA,CAAA,eAGEC,EAAA,cAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAeF,EAAAG,YAAAN,CAAA,CAAmB,CAAA,CAAA,EACnCO,EAAA,iCAHCC,EAAA,EAAAC,EAAA,OAAAC,EAAA,EAAA,EAAAP,EAAAQ,YAAA,CAAA,EAA6B,kBAAAC,CAAA,GDPnC,IAsBaC,GAtBbC,GAAAC,EAAA,KACAC,IACAC,KACAC,KAGAC,IACAC,KACAC,KACAC,qCAaaT,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CAazCU,YACSC,EACyBC,EACfC,EACAC,EAA6B,CAHvC,KAAAH,UAAAA,EACyB,KAAAC,KAAAA,EACf,KAAAC,sBAAAA,EACA,KAAAC,aAAAA,EAhBX,KAAAC,oBAAsB,KAAKF,sBAAsBG,eAAe,KAAKJ,KAAKK,aAAa,EACvF,KAAAC,WAAa,KAAKH,oBAAoBI,KAC5CC,EAAKC,IAAiBA,GAAaC,MAAQ,CAAA,GAAIF,IAAKG,GAAQA,GAAKC,UAAY,EAAE,EAAEC,OAAQF,GAAQA,CAAG,CAAC,EACrGH,EAAKE,GAASA,EAAKI,SAASC,EAAW,CAAC,CAAC,EAE3C,KAAA7B,aAAe,KAAKiB,oBAAoBI,KACtCC,EAAKC,IAAiBA,GAAaC,MAAQ,CAAA,GAAIF,IAAKG,GAAQA,GAAKC,UAAY,EAAE,EAAEC,OAAQF,GAAQA,CAAG,CAAC,EACrGH,EAAKE,GAASA,EAAKG,OAAQG,GAAM,CAACC,GAAcH,SAASE,EAAEE,YAAW,CAAE,CAAC,CAAC,CAAC,EAE7E,KAAAC,iBAAmB,KAAKhB,oBAAoBI,KAAKC,EAAKC,GAAgBA,GAAaW,iBAAmB,EAAE,CAAC,EACzG,KAAAC,WAAuB,CAAA,CAOpB,CAEHC,MAAI,CACF,KAAKhB,WACFC,KACCgB,EAAWC,GAAa,CACtB,IAAIH,EAAa,CAAC,GAAG,KAAKA,UAAU,EACpC,OAAIG,IACFH,EAAa,CAACN,GAAa,GAAGM,CAAU,GAEnC,KAAKpB,sBAAsBwB,sBAAsB,KAAKzB,KAAKK,cAAegB,CAAU,CAC7F,CAAC,CAAC,EAEHK,UAAU,CACTC,KAAMA,IAAK,CACT,KAAKzB,aAAa0B,iBAAiB,+CAAgD,CACjFC,SAAUC,IACX,EACD,KAAK/B,UAAUgC,MAAM,EAAI,CAC3B,EACAC,MAAOA,IAAK,CACV,KAAK9B,aAAa+B,eAAe,6CAA8C,CAC7EJ,SAAUC,IACX,CACH,EACD,CACL,CAEAI,QAAM,CACJ,KAAKnC,WAAWgC,MAAK,CACvB,CAEAlD,YAAY6B,EAAc,CACxB,KAAKW,YAAcX,GAAQ,CAAA,GAAIyB,MAAK,CACtC,iDApDW/C,GAA8BgD,EAAAC,EAAA,EAAAD,EAe/BE,EAAe,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,CAAA,CAAA,CAAA,+BAfdpD,EAA8BqD,UAAA,CAAA,CAAA,6BAAA,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,OAAA,EAAA,CAAA,EAAA,cAAA,OAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICtB3CzE,EAAA,EAAA,KAAA,CAAA,EACE2E,EAAA,CAAA,mBACFlE,EAAA,EACAT,EAAA,EAAA,oBAAA,EAAoB,EAAA,KAAA,CAAA,EACW2E,EAAA,CAAA,EAA0BlE,EAAA,EACvDmE,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,eAOFpE,EAAA,EACAT,EAAA,EAAA,qBAAA,CAAA,EAA2C,EAAA,SAAA,CAAA,EACdC,EAAA,QAAA,UAAA,CAAA,OAASyE,EAAAb,OAAA,CAAQ,CAAA,EAC1Cc,EAAA,EAAA,oBACFlE,EAAA,EACAT,EAAA,GAAA,SAAA,CAAA,EAAwCC,EAAA,QAAA,UAAA,CAAA,OAASyE,EAAAzB,KAAA,CAAM,CAAA,EACrD0B,EAAA,EAAA,oBACFlE,EAAA,EAAS,SAlBTC,EAAA,EAAAoE,EAAA,IAAAlE,EAAA,EAAA,EAAA,4CAAA,EAAA;CAAA,EAG6BF,EAAA,CAAA,EAAAqE,EAAAL,EAAA/C,KAAAqD,eAAA,EACdtE,EAAA,EAAAC,EAAA,OAAAC,EAAA,EAAA,EAAA8D,EAAA5B,gBAAA,CAAA,EAUbpC,EAAA,CAAA,EAAAoE,EAAA,IAAAlE,EAAA,GAAA,EAAA,gBAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAoE,EAAA,IAAAlE,EAAA,GAAA,GAAA,cAAA,EAAA,GAAA,kBDAQqE,EAAYC,GAAAC,GAAEC,EAAeC,EAAEC,GAAeC,GAAAC,GAAAC,GAAEC,GAAeC,GAAEC,EAA4B,EAAAC,OAAA,CAAA;4HAAA,CAAA,CAAA,CAAA,SAI5F9E,CAA8B,GAAA,IEXrC,SAAU+E,GAA+BC,EAA6BC,EAAsB,CAChG,IAAMC,EAAe,CAAC,GAAGF,CAAY,EACrC,QAAWG,KAAsBF,EAAS,CACxC,IAAMG,EAA0BF,EAAaG,UAAWC,GAAMA,EAAEC,gBAAkBJ,EAAmBI,aAAa,EAC9GH,EAA0B,KAC5BF,EAAaE,CAAuB,EAAID,EAE5C,CACA,MAAO,CAAC,GAAGD,CAAY,CACzB,CApBA,IAuBaM,IAvBbC,GAAAC,EAAA,KAEAC,KAMAC,wBAeaJ,KAAgC,IAAA,CAAvC,MAAOA,CAAgC,CAC3CK,YACmBC,EACAC,EACAC,EAA+B,CAF/B,KAAAF,OAAAA,EACA,KAAAC,mBAAAA,EACA,KAAAC,cAAAA,CAChB,CAEHC,mBAAmBC,EAAkB,CACnC,IAAMC,EAAe,KAAKJ,mBAAmBK,eAAeF,EAASX,eAAiB,EAAE,EAAEc,KAAKC,GAAY,CAAC,CAAC,EACvGC,EAAaJ,EAAaE,KAC9BG,EAAWC,GAAe,CACxB,OAAQP,EAASQ,KAAI,CACnB,IAAK,WACH,OAAO,KAAKV,cAAcW,eAAe,UAAW,CAACF,EAAYG,IAAI,CAAC,EACxE,IAAK,OACH,OAAO,KAAKZ,cAAcW,eAAe,UAAW,CAACF,EAAYI,MAAM,CAAC,EAC1E,QACE,OAAOC,EAAG,CAAEC,WAAY,CAAA,CAAE,CAAE,CAChC,CACF,CAAC,EACDC,EAAKC,GAAaA,GAAUF,YAAYG,OAAS,GAAKD,EAASF,WAAW,CAAC,CAAC,CAAC,EAG/E,OAAOI,EAAc,CAAChB,EAAcI,CAAU,CAAC,EAAEF,KAC/CW,EAAI,CAAC,CAACP,EAAaW,CAAS,KAAO,CACjC7B,cAAekB,EAAYlB,cAC3B8B,gBAAiBZ,EAAYY,gBAC7BC,MAAOb,GAAaa,MAAQ,CAAA,GAAIN,IAAKO,GAAQA,EAAIC,QAAQ,EACzDC,iBAAkBL,GAClB,CAAC,CAEP,CAEAM,eAAexB,EAAkB,CAC/B,IAAIyB,EAAkB,GACtB,OAAIzB,EAASQ,OAAS,WACpBiB,EAAkBzB,EAAS0B,cAAgB,GAClC1B,EAASQ,OAAS,SAC3BiB,EAAkBzB,EAAS2B,UAAY,IAEvB,KAAK/B,OAAOgC,KAAKC,GAAgC,CACjEC,KAAM,CACJzC,cAAeW,EAASX,cACxBoC,gBAAiBA,GAEnBM,MAAO,QACR,EACgBC,YAAW,EAAG7B,KAC7BG,EAAW2B,GACLA,EAGK,KAAKlC,mBAAmBC,CAAQ,EAElCY,EAAG,IAAI,CACf,CAAC,CAEN,iDAzDWtB,GAAgC4C,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,kCAAhC/C,EAAgCgD,QAAhChD,EAAgCiD,SAAA,CAAA,CAAA,SAAhCjD,CAAgC,GAAA,ICvB7C,IAOakD,GAPbC,GAAAC,EAAA,KAIAC,cAGaH,IAAkB,IAAA,CAAzB,MAAOA,CAAkB,CAG7BI,YAA6BC,EAAwC,CAAxC,KAAAA,gBAAAA,EAFrB,KAAAC,UAAY,KAEoD,CAExEC,WAAWC,EAAgDC,EAAgBC,EAAuB,CAChG,KAAKL,gBAAgBE,WACnB,KAAKD,UACL,GAAG,KAAKA,SAAS,IAAIE,GAAYG,YAAW,CAAE,GAC9CF,EACA,EACAC,CAAU,CAEd,CAEAE,iBAAiBJ,EAAgDK,EAAgC,CAC/F,QAAWC,KAAUD,EAAS,CAW5B,IAToBC,EAAOC,QAAQC,QAAU,KAE3B,GAChB,CAAC,CAACC,GAAqBC,yBAA0BD,GAAqBE,4BAA4B,EAAEC,SAClGN,EAAOO,QAAQ,GAKf,CAACP,GAAQQ,QACX,SAGF,IAAMC,EAAaT,EAAOU,YAAYC,KAAOC,GAAiBZ,EAAOU,YAAYC,IAAI,EAAI,sBACzF,KAAKlB,WAAWC,EAAY,sBAAuB,CACjDe,WAAYA,EACZI,eAAgBV,GAAqBH,EAAOO,UAAYJ,GAAqBW,uBAAuB,EACpGN,QAASR,EAAOQ,QAChBO,SAAUf,EAAOe,SACjBC,SAAUhB,EAAOU,YAAYO,QAAU,GAEvCC,UAAWlB,EAAOU,YAAYQ,WAAa,UAC5C,CACH,CACF,iDA1CWhC,GAAkBiC,EAAAC,EAAA,CAAA,CAAA,CAAA,kCAAlBlC,EAAkBmC,QAAlBnC,EAAkBoC,SAAA,CAAA,CAAA,SAAlBpC,CAAkB,GAAA,ICN/B,IAQaqC,GARbC,GAAAC,EAAA,KAAAC,SAQaH,IAAuB,IAAA,CAA9B,MAAOA,CAAuB,CAHpCI,aAAA,CAIU,KAAAC,eAAiB,IAAIC,GAA6B,CAAC,EAE3DC,WAAWC,EAAe,CACxB,KAAKH,eAAeI,KAAKD,CAAO,CAClC,CAEAE,YAAU,CACR,OAAO,KAAKL,eAAeM,aAAY,CACzC,CAEAC,cAAY,CACV,KAAKP,eAAeI,KAAK,IAAI,CAC/B,iDAbWT,EAAuB,CAAA,kCAAvBA,EAAuBa,QAAvBb,EAAuBc,UAAAC,WAFtB,MAAM,CAAA,CAAA,SAEPf,CAAuB,GAAA,ICTpC,IAeagB,GAfbC,GAAAC,EAAA,KAAAC,KAEAC,KACAC,KAEAC,mBAUaN,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,CAGhCO,YACUC,EACAC,EACoCC,EAA0B,CAF9D,KAAAF,iBAAAA,EACA,KAAAC,gBAAAA,EACoC,KAAAC,UAAAA,EAL9C,KAAAC,aAAwC,IAAIC,GAAwB,EAAE,EAsCtE,KAAAC,2BAA8BC,GAC5BA,EAAgBC,IACbC,GACEC,GAAAC,GAAA,GACIF,GADJ,CAECG,YAAa,KAAKV,gBAAgBW,2BAA2BJ,EAASK,EAAYC,WAAW,GAAGC,aAC1E,CAtC3B,CAEKC,YACNC,EACAC,EACAC,EACAC,EAAc,CAEd,IAAMC,EAA0C,CAC9CJ,UAAWA,EACXK,cAAe,CACbJ,OAAQA,EACRC,SAAUA,GAEZC,OAAQ,CACNG,WAAYH,IAGhB,OAAO,KAAKpB,iBAAiBgB,YAAY,UAAWK,CAAO,CAC7D,CAEAG,sBAAsBD,EAAkB,CACtC,OAAO,KAAKrB,UAAUuB,WAAWC,KAC/BC,EAAWV,GAAc,KAAKD,YAAYC,EAAW,GAAI,GAAIM,CAAU,CAAC,EACxEhB,EAAKqB,GAAa,KAAKvB,2BAA2BuB,EAASC,YAAc,CAAA,CAAE,CAAC,EAC5EC,GAAYC,IACVC,QAAQD,MAAMA,CAAK,EACZE,EAAG,CAAA,CAAE,EACb,CAAC,CAEN,CAWAC,gBAAgBC,EAAoB,CAClC,OAAO,KAAKnC,iBAAiBoC,eAAe,UAAWD,CAAU,EAAET,KACjEnB,EAAKqB,GAAY,CACf,GAAI,CAACA,GAAYA,GAAUC,YAAYQ,SAAW,GAAK,CAACT,GAAUC,aAAa,CAAC,EAAES,YAChF,MAAO,CAAA,EAET,IAAIC,EAA+B,CAAA,EACnC,QAAWC,KAAaZ,EAASC,WAC/BU,EAAS,CAAC,GAAGA,EAAQC,CAAS,EAEhC,OAAO,KAAKnC,2BAA2BkC,CAAM,CAC/C,CAAC,CAAC,CAEN,iDA7DW/C,GAAqBiD,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAMtBG,EAAiB,CAAA,CAAA,CAAA,kCANhBpD,EAAqBqD,QAArBrD,EAAqBsD,UAAAC,WAFpB,MAAM,CAAA,CAAA,SAEPvD,CAAqB,GAAA,ICflC,IASawD,GATbC,GAAAC,EAAA,KAAAC,KAEAC,KACAC,KACAC,KACAC,KACAC,SAGaR,IAAuB,IAAA,CAA9B,MAAOA,CAAuB,CAMlCS,YAC8CC,EACPC,EAAsB,CADf,KAAAD,OAAAA,EACP,KAAAC,WAAAA,EAPtB,KAAAC,WAAmD,IAAIC,GAAc,CAAC,EACvE,KAAAC,aAAe,IAAID,GAAsB,CAAC,EACzC,KAAAE,YAAc,KAAKD,aAAaE,aAAY,EAC7C,KAAAC,UAAY,KAAKL,WAAWI,aAAY,EAMtD,KAAKD,YACFG,KACCC,GAAU,EAAE,EACZC,GAAkB,EAClBC,GAAa,GAAG,EAChBC,GAAoB,EACpBC,EAAWC,GAAe,KAAKd,OAAOe,UAAUC,aAAaC,cAAcH,CAAU,GAAKI,EAAG,CAAA,CAAE,CAAC,EAChGC,EAAKC,GAA4BC,GAAuBD,CAAK,CAAC,EAC9DE,GAAYC,IACVC,QAAQD,MAAMA,CAAK,EACZL,EAAG,CAAA,CAAE,EACb,CAAC,EAEHO,UAAWL,GAAS,CACnB,KAAKlB,WAAWwB,KAAKN,CAAK,CAC5B,CAAC,CACL,CAEAO,cAAcC,EAAiB,CAC7B,IAAMC,EAAc,KAAKtB,UAAUC,KACjCW,EAAKC,GAAS,CACZ,IAAMU,EAAc,IAAIC,IACxBH,OAAAA,EAAQI,QAASC,GACfH,EAAYI,IACVD,EACAb,EAAMe,KAAMC,GAAMA,EAAEH,SAAWA,CAAM,CAAC,CACvC,EAEIH,CACT,CAAC,EACDO,GAAY,CAAC,CAAC,EAGVC,EAAuBT,EAAYrB,KACvCW,EAAKoB,GAAgBX,EAAQY,OAAQP,GAAWM,EAAYE,IAAIR,CAAM,IAAMS,MAAS,CAAC,EACtF7B,EAAW8B,GACLA,EAASC,SAAW,EACf1B,EAAG,CAAA,CAAY,EAEjBS,GAAcgB,EAAU,KAAK3C,OAAQ,KAAKC,UAAU,CAC5D,EACDqB,GAAYC,IACVC,QAAQD,MAAMA,CAAK,EACZL,EAAG,CAAA,CAAY,EACvB,EACDC,EAAKC,GAAUC,GAAuBD,CAAK,CAAC,CAAC,EAG/C,OAAOyB,EAAc,CAAChB,EAAaS,CAAoB,CAAC,EAAE9B,KACxDW,EAAI,CAAC,CAACoB,EAAaO,CAAY,KAC7BA,EAAad,QAASe,GAASR,EAAYL,IAAIa,EAAKd,OAAQc,CAAI,CAAC,EAC1D,CAAC,GAAGR,EAAYS,OAAM,CAAE,EAAER,OAAOS,OAAO,EAChD,CAAC,CAEN,iDAhEW3D,GAAuB4D,EAOxBC,EAAiB,EAAAD,EACjBE,EAAU,CAAA,CAAA,CAAA,kCART9D,EAAuB+D,QAAvB/D,EAAuBgE,SAAA,CAAA,CAAA,SAAvBhE,CAAuB,GAAA,ICTpC,IAOaiE,GAPbC,GAAAC,EAAA,KACAC,KAEAC,KACAC,cAGaL,IAAY,IAAA,CAAnB,MAAOA,CAAY,CACvBM,YAC8CC,EACpCC,EAAoC,CADA,KAAAD,OAAAA,EACpC,KAAAC,kBAAAA,EAGF,KAAAC,YAAc,EAFnB,CAGHC,YAAYC,EAAgB,CAC1B,KAAKF,YAAcE,CACrB,CAEAC,oBAAoBC,EAAe,CACjC,OAAO,KAAKC,UAAU,KAAKL,YAAaI,CAAO,CACjD,CAEAE,qBAAqBC,EAAmBH,EAAe,CACrD,OAAO,KAAKC,UAAUE,EAAWH,CAAO,CAC1C,CAEQC,UAAUE,EAAmBH,EAAe,CAClD,OAAO,KAAKN,OAAOU,WAAWC,KAC5BC,EAAWC,GACF,KAAKZ,kBAAkBa,SAAS,CACrCD,UAAWA,EACXE,kBAAmB,CACjBb,YAAaO,EACbO,cAAe,UACfC,MAAOX,GAEV,CACF,EACDY,EAAKC,GAAaA,GAAUC,OAAS,IAAI,EACzCC,GAAY,CAAC,CAAC,CAElB,iDAlCW5B,GAAY6B,EAEbC,EAAiB,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,kCAFhB/B,EAAYgC,QAAZhC,EAAYiC,SAAA,CAAA,CAAA,SAAZjC,CAAY,GAAA,ICPzB,IAMakC,GANbC,GAAAC,EAAA,KAAAC,IAGAC,SAGaJ,IAAsC,IAAA,CAA7C,MAAOA,CAAsC,CADnDK,aAAA,CAEU,KAAAC,kBAAoBC,EAAO,IAAIC,GAAmC,EAClE,KAAAC,kBAAoBF,EAAO,IAAIC,GAAmC,EAClE,KAAAE,oBAAsBH,EAAO,IAAIC,GAAuB,EACxD,KAAAG,kBAAoBC,EAAS,KAC5B,CACLC,QAAS,KAAKP,kBAAiB,EAC/BQ,QAAS,KAAKL,kBAAiB,EAC/BM,QAAS,KAAKL,oBAAmB,GAEpC,EAEDM,qBAAmB,CACjB,OAAO,KAAKL,iBACd,CAEAM,gBAAgBC,EAAyBC,EAAsB,CAC7D,IAAMC,EAAOD,GAAiBD,GAAc,KAC5C,KAAKG,uBAAuBD,CAAI,EAChC,KAAKE,uBAAuBF,CAAI,EAChC,KAAKG,yBAAyBH,CAAI,CACpC,CAEAI,oBAAoBN,EAAwBO,EAA+BN,EAAsB,CAC/F,GAAI,CAACM,EACH,OAEF,KAAKC,sBAAsBR,EAAYO,CAAS,EAChD,IAAML,EAAOD,GAAiBD,EAC9B,KAAKZ,kBAAkBqB,OAAQC,GAAwB,CACrD,IAAMtB,EAAoBsB,EAAqBC,IAAIT,CAAI,GAAK,CAAA,EAC5Dd,OAAAA,EAAkBwB,KAAKL,CAAS,EAChCG,EAAqBG,IAAIX,EAAMd,CAAiB,EACzC,IAAIE,IAAIoB,CAAoB,CACrC,CAAC,CACH,CAEQP,uBAAuBD,EAAmB,CAC5CA,EACF,KAAKd,kBAAkBqB,OAAQC,IAC7BA,EAAqBI,OAAOZ,CAAI,EACzB,IAAIZ,IAAIoB,CAAoB,EACpC,EAED,KAAKtB,kBAAkByB,IAAI,IAAIvB,IAAI,CAAA,CAAE,CAAC,CAE1C,CAEAyB,oBAAoBf,EAAwBO,EAA+BN,EAAsB,CAC/F,GAAI,CAACM,EACH,OAEF,KAAKC,sBAAsBR,EAAYO,CAAS,EAChD,IAAML,EAAOD,GAAiBD,EAC9B,KAAKT,kBAAkBkB,OAAQO,GAAwB,CACrD,IAAMvB,EAAoBuB,EAAqBL,IAAIT,CAAI,GAAK,CAAA,EACtDe,EAAgBxB,EAAkByB,UAAWC,GAAQA,EAAIC,cAAgBb,EAAUa,WAAW,EACpG,OAAIH,IAAkB,GACpBxB,EAAkBwB,CAAa,EAAIV,EAEnCd,EAAkBmB,KAAKL,CAAS,EAElCS,EAAqBH,IAAIX,EAAM,CAAC,GAAGT,CAAiB,CAAC,EAC9C,IAAIH,IAAI0B,CAAoB,CACrC,CAAC,CACH,CAEQZ,uBAAuBF,EAAmB,CAC5CA,EACF,KAAKX,kBAAkBkB,OAAQY,IAC7BA,EAAqBP,OAAOZ,CAAI,EACzB,IAAIZ,IAAI+B,CAAoB,EACpC,EAED,KAAK9B,kBAAkBsB,IAAI,IAAIvB,GAAK,CAExC,CAEAgC,sBAAsBtB,EAAwBoB,EAAqBnB,EAAsB,CACvF,GAAI,CAACmB,EACH,OAEF,IAAMlB,EAAOD,GAAiBD,EAC9B,KAAKR,oBAAoBiB,OAAQc,GAA0B,CACzD,IAAM/B,EAAsB+B,EAAuBZ,IAAIT,CAAI,GAAK,CAAA,EAChE,OAAKV,EAAoBgC,SAASJ,CAAW,GAC3CG,EAAuBV,IAAIX,EAAM,CAAC,GAAGV,EAAqB4B,CAAW,CAAC,EAEjE,IAAI9B,IAAIiC,CAAsB,CACvC,CAAC,CACH,CAEQlB,yBAAyBH,EAAmB,CAC9CA,EACF,KAAKV,oBAAoBiB,OAAQc,IAC/BA,EAAuBT,OAAOZ,CAAI,EAC3B,IAAIZ,IAAIiC,CAAsB,EACtC,EAED,KAAK/B,oBAAoBqB,IAAI,IAAIvB,IAAI,CAAA,CAAE,CAAC,CAE5C,CAEQkB,sBAAsBR,EAAwBO,EAA6B,CACjF,IAAIkB,EACAC,EACJ,OAAQ1B,EAAU,CAChB,IAAK,UACHyB,EAAuBE,GAAeC,eACtCF,EAAuBC,GAAeE,eACtC,MACF,IAAK,UACHJ,EAAuBE,GAAeG,eACtCJ,EAAuBC,GAAeI,eACtC,MACF,IAAK,WACHN,EAAuBE,GAAeK,gBACtCN,EAAuBC,GAAeM,gBACtC,MACF,IAAK,cACHR,EAAuBE,GAAeO,mBACtCR,EAAuBC,GAAeQ,mBACtC,MACF,IAAK,eACHV,EAAuBE,GAAeS,oBACtCV,EAAuBC,GAAeU,oBACtC,KACJ,CACA,IAAMC,EAAkB,IAAIC,KAEtBC,EAAmBjC,EAAUkC,QAAQvB,UAAWwB,GAAMA,EAAEC,UAAYlB,CAAoB,GAAK,GAC7FmB,EAAmBrC,EAAUkC,QAAQvB,UAAWwB,GAAMA,EAAEC,UAAYjB,CAAoB,GAAK,GAC/Fc,IAAqB,IAAQjC,GAAWkC,QAAUlC,GAAWkC,OAAOD,CAAgB,GAAGK,YAAc,MACvGtC,EAAUkC,OAAOD,CAAgB,EAAEK,UAAYP,EAC/C/B,EAAUZ,QAAU2C,GACXE,IAAqB,IAAQjC,GAAWkC,SACjDlC,EAAUkC,OAAO7B,KAAK,CACpB+B,QAASlB,EACTqB,WAAYrB,EACZoB,UAAWP,EACZ,EACD/B,EAAUZ,QAAU2C,GAElBM,IAAqB,IAAQrC,GAAWkC,QAC1ClC,EAAUkC,OAAOG,CAAgB,EAAEC,UAAYP,EAC/C/B,EAAUX,QAAU0C,GACXM,IAAqB,IAAQrC,GAAWkC,SACjDlC,EAAUkC,OAAO7B,KAAK,CACpB+B,QAASjB,EACToB,WAAYpB,EACZmB,UAAWP,EACZ,EACD/B,EAAUX,QAAU0C,EAExB,iDA1JWxD,EAAsC,CAAA,kCAAtCA,EAAsCiE,QAAtCjE,EAAsCkE,UAAAC,WADzB,MAAM,CAAA,CAAA,SACnBnE,CAAsC,GAAA,ICNnD,IAAAoE,GAAAC,EAAA,KAAAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,iCCSMC,EAAA,EAAA,IAAA,CAAA,EACEC,GAAA,EAAA,CAAA,EAIFC,EAAA,+CALuCC,EAAA,aAAAC,CAAA,EAEnCC,EAAA,EAAAF,EAAA,mBAAAG,CAAA,EAAwC,0BAAAC,GAAA,EAAAC,GAAAC,EAAAC,YAAA,CAAA,4BAK1CC,EAAA,EAAA,MAAA,CAAA,qCACER,EAAA,mBAAAG,CAAA,EAAwC,0BAAAC,GAAA,EAAAC,GAAAC,EAAAC,YAAA,CAAA,6BAT9CE,EAAA,CAAA,EACEC,EAAA,EAAAC,GAAA,EAAA,EAAA,IAAA,CAAA,EAA2D,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,gCAAvDX,EAAA,EAAAF,EAAA,OAAAM,EAAAQ,IAAA,EAAgB,WAAAC,CAAA,yBAcpBP,EAAA,EAAA,MAAA,CAAA,4BAGAC,EAAA,CAAA,EAA4EO,EAAA,CAAA,kCAAAd,EAAA,EAAAe,EAAAC,CAAA,4BAA5ER,EAAA,EAAAS,GAAA,EAAA,EAAA,eAAA,CAAA,wCAAenB,EAAA,OAAAkB,IAAAE,EAAAC,yBAAA,EAAiD,WAAAC,CAAA,yBAGhEd,EAAA,EAAA,kBAAA,EA7CN,OAeMa,GAoCOE,GAnDbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAMAC,0CAEMZ,GAA4B,8BAoCrBE,IAA4B,IAAA,CAAnC,MAAOA,UAAoCW,EAAmB,CAIlE,IAAIC,MAAMC,EAAiD,CACzD,KAAKC,YAAYC,KAAKF,EAASG,SAAS,EACxC,KAAKC,YAAYF,KAAKF,EAASK,QAAQ,CACzC,CAwCAC,YAC8CC,EACaC,EACxCC,EACAC,EAAkC,CAEnD,MAAK,EALuC,KAAAH,OAAAA,EACa,KAAAC,oBAAAA,EACxC,KAAAC,gBAAAA,EACA,KAAAC,iBAAAA,EAlDnB,KAAAzB,0BAA4BA,GACpB,KAAAmB,YAAc,IAAIO,GAAwB,EAAE,EAC5C,KAAAV,YAAc,IAAIU,GAAwB,EAAE,EAMpD,KAAAC,cAAgBC,EAAc,CAAC,KAAKT,YAAa,KAAKH,WAAW,CAAC,EAAEa,KAClEC,EAAU,CAAC,CAACC,EAAyBC,CAAgB,IAC/C,CAACD,GAA2B,CAACC,EACxBC,EAAG,IAAI,EAET,KAAKR,iBAAiBS,eAAe,UAAW,CAACH,CAAuB,EAAG,CAAA,EAAIC,CAAgB,CACvG,EACDG,EAAKC,GAAaA,GAAUC,YAAc,CAAA,CAAE,EAC5CF,EAAKG,GACEA,EAAUC,OAGR,KAAKf,gBAAgBgB,2BAA2BF,EAAU,CAAC,EAAGG,EAAYC,WAAW,EAFnF,IAGV,EACDP,EAAKQ,GAA0BA,GAAuBC,aAAe,KAAK5C,yBAAyB,CAAC,EAGtG,KAAA6C,iBAAmB,KAAKtB,oBAAoBsB,kBAAoBZ,EAAG,EAAK,EACxE,KAAAa,MAAQlB,EAAc,CAAC,KAAKN,OAAOyB,iBAAkB,KAAKF,gBAAgB,CAAC,EAAEhB,KAC3EmB,GAAK,CAAC,EACNlB,EAAU,CAAC,CAACmB,EAAaC,CAAe,IAClC,CAACD,GAAeC,EACXjB,EAAG,EAAE,EAEP,KAAKX,OAAO6B,YACpB,EACDhB,EAAKiB,GAAe,CAClB,GAAI,CAACA,GAAe,CAAC,KAAKjC,YAAYkC,SAAQ,EAC5C,MAAO,GAET,IAAMC,EAAiC,GAAGC,GAAYC,QAAQC,IAAI,IAAIF,GAAYC,QAAQE,UAAUC,OAAO,GAC3G,MAAO,GAAGP,CAAW,IAAIE,CAA8B,GAAGM,QAAQ,eAAgB,KAAKzC,YAAYkC,SAAQ,CAAE,CAC/G,CAAC,CAAC,EAEJ,KAAAQ,eAAqDjC,EAAc,CAAC,KAAKD,cAAe,KAAKmB,KAAK,CAAC,EAAEjB,KACnGM,EAAI,CAAC,CAACjD,EAAcO,CAAI,KAAO,CAAEP,aAAAA,EAAcO,KAAAA,CAAI,EAAG,CAAC,CAUzD,iDAtDWS,GAA2B4D,EAgD5BC,EAAiB,EAAAD,EACjBE,EAA8B,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,CAAA,CAAA,CAAA,+BAjD7BhE,EAA2BiE,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,EAAA,CAAA,EAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IA3BpCrF,EAAA,EAAAuF,GAAA,EAAA,EAAA,eAAA,CAAA,eAcAvF,EAAA,EAAAwF,GAAA,EAAA,EAAA,cAAA,KAAA,EAAArF,EAAA,EAAsB,EAAAsF,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAtF,EAAA,EAG0C,EAAAuF,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAvF,EAAA,mBAjBjDb,EAAA,OAAAqG,EAAA,EAAA,EAAAL,EAAAd,cAAA,CAAA,EAA6B,WAAAoB,CAAA,kBAyBpCC,EAAYC,GAAAC,GAAAC,GAAEC,GAAqBC,EAAU,EAAAC,OAAA,CAAA;iGAAA,CAAA,CAAA,CAAA,SAE5CtF,CAA4B,GAAA,8BElDvCuF,EAAA,EAAA,MAAA,CAAA,EAA2B,EAAA,MAAA,CAAA,EACNC,EAAA,CAAA,EAA0CC,EAAA,EAC7DF,EAAA,EAAA,MAAA,CAAA,EAAsBC,EAAA,CAAA,EAAsCC,EAAA,EAAM,kBAD/CC,EAAA,CAAA,EAAAC,EAAAC,EAAAC,iBAAAC,QAAAC,WAAA,EACGL,EAAA,CAAA,EAAAC,EAAAC,EAAAC,iBAAAC,QAAAE,OAAA,yBAGxBC,EAAA,EAAA,kBAAA,EDNF,IAkCaC,GAlCbC,GAAAC,EAAA,KACAC,IACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,yFAyBaX,IAAsB,IAAA,CAA7B,MAAOA,UAA8BY,EAAmB,CAK5DC,YACkDC,EACxCC,EAAwC,CAEhD,MAAK,EAH2C,KAAAD,oBAAAA,EACxC,KAAAC,oBAAAA,EANV,KAAApB,iBAAgD,KAChD,KAAAqB,gBAAkB,GACV,KAAAC,UAA2B,IAOnC,CAEA,IACaC,MAAMC,EAA+B,CAC3CA,GAAUF,YAGf,KAAKA,UAAYE,EAASF,UACtB,KAAKD,iBACP,KAAKI,qBAAoB,EAE7B,CAEAC,UAAQ,CACN,KAAKP,oBAAoBQ,uBAAuBC,KAAKC,GAAK,CAAC,CAAC,EAAEC,UAAWC,GAAW,CAClF,KAAKV,gBAAkB,CAAC,CAACU,GAASC,QAC9B,KAAKX,iBAAmB,KAAKC,WAC/B,KAAKG,qBAAoB,CAE7B,CAAC,CACH,CAEQA,sBAAoB,CACrB,KAAKH,WAIV,KAAKF,oBACFa,IACC,KAAKX,UACL,IAAIY,GAAiB,CACnBjC,QAAS,GACTkC,gCAAiC,GACjCC,aAAc,GACf,CAAC,EAEHR,KAAKC,GAAK,CAAC,CAAC,EACZC,UAAWO,GAAgB,CAC1B,KAAKrC,iBAAmB,CACtBsC,eAAgBD,EAAaC,eAC7BrC,QAAS,CACPC,YAAamC,EAAapC,SAASC,aAAe,GAClDC,QAASkC,EAAapC,SAASE,SAAW,IAGhD,CAAC,CACL,iDAxDWE,GAAqBkC,EAMtBC,EAA8B,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAN7BpC,EAAqBqC,UAAA,CAAA,CAAA,mBAAA,CAAA,EAAAC,OAAA,CAAApB,MAAA,OAAA,EAAAqB,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GClClCE,EAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,EAAoD,EAAAC,GAAA,EAAA,EAAA,kBAAA,OAApDC,EAAAJ,EAAA9B,kBAAA8B,EAAAnD,kBAAA,MAAAmD,EAAAnD,iBAAAC,SAAA,EAAA,CAAA,iBDwBIuD,EACAC,GACAC,GACAC,EACAC,GACAC,GAAeC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,EAAA,EAAAC,OAAA,CAAA;kGAAA;6GAAA,CAAA,CAAA,CAAA,SAKNzE,CAAsB,GAAA,IElCnC,IAiCa0E,GAjCbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,KAMAC,KAQAC,KACAC,KAEAC,KACAC,KAEAC,KAOAC,4BAGab,IAAiC,IAAA,CAAxC,MAAOA,UAAyCc,EAAyB,CAM7EC,YAC8CC,EACaC,EAC7BC,EACXC,EACAC,EACAC,EAA6C,CAE9D,MAAMH,CAAe,EAPuB,KAAAF,OAAAA,EACa,KAAAC,oBAAAA,EAC7B,KAAAC,gBAAAA,EACX,KAAAC,UAAAA,EACA,KAAAC,uBAAAA,EACA,KAAAC,qBAAAA,EAXX,KAAAC,SAAW,IAAIC,GACf,KAAAC,mBAAqB,IAAIC,GAAgB,EAAE,EAC3C,KAAAC,2BAA6B,IAAID,GAAyB,EAAK,EAC/D,KAAAE,gBAAkBC,EAAO,EAAK,EAWpC,IAAMC,EAAmBZ,EAAoBY,kBAAoBC,EAAG,EAAK,EACzEC,EAAc,CAAC,KAAKf,OAAOgB,iBAAkBH,CAAgB,CAAC,EAC3DI,KACCC,GAAK,CAAC,EACNC,GAAI,CAAC,CAACC,EAAGT,CAAe,IAAK,CAC3B,KAAKD,2BAA2BW,KAAKV,CAAe,EACpD,KAAKA,gBAAgBW,IAAIX,CAAe,CAC1C,CAAC,EACDY,GAAS,CAAC,CAACC,EAAab,CAAe,IAChCa,EAGEb,EAAkB,KAAKV,oBAAoBwB,aAAe,KAAKzB,OAAOyB,aAFpEX,EAAG,EAAE,CAGf,CAAC,EAEHY,UAAWC,GAAe,CACzB,GAAI,CAACA,EACH,OAGF,IAAMC,EAA0B,KAAKjB,gBAAe,EAChD,GAAGkB,GAAYC,eAAeC,SAASC,IAAI,IAAIH,GAAYC,eAAeC,SAASE,UAAUC,OAAO,GACpG,GAAGL,GAAYM,QAAQH,IAAI,IAAIH,GAAYM,QAAQF,UAAUC,OAAO,GAExE,KAAK1B,mBAAmBa,KAAK,GAAGM,CAAW,IAAIC,CAAuB,EAAE,CAC1E,CAAC,CACL,CAEAQ,aAAW,CACT,KAAK9B,SAASe,KAAI,EAClB,KAAKf,SAAS+B,SAAQ,CACxB,CAEQC,cAAcC,EAA0B,CAC9C,IAAMC,EAA0B,CAC9B,KAAKtC,gBAAgBuC,WAAWC,GAAoBC,SAAS,EAC7D,KAAKzC,gBAAgBuC,WAAWC,GAAoBE,QAAQ,EAC5DC,GAAeC,kBACfD,GAAeE,UACfC,EAAYC,wBACZC,GAAqBC,YACrBN,GAAeO,eACfP,GAAeQ,eACfL,EAAYM,8BAA8B,EAE5C,QAAWC,KAAcf,EAAyB,CAChD,IAAMgB,EAAQjB,EAAQkB,UAAWC,GAAMA,EAAEC,KAAOJ,CAAU,EACtDC,GAAS,IACXjB,EAAQiB,CAAK,EAAEI,OAAS,GAE5B,CACA,OAAOrB,CACT,CAEQsB,4BAA4BtB,EAA0B,CAC5D,MAAO,CACL,CACEoB,GAAIT,GAAqBY,mBACzBC,MAAO,KAAK5D,UAAU6D,QAAQ,gEAAgE,EAC9FJ,OAAQ,IAEV,GAAGrB,CAAO,CAEd,CAEc0B,6BACZC,EACAC,EACAC,EAA+B,QAAAC,GAAA,sBAE/B,IAAIC,EAA0B,GACxBC,EAAoC,KAAKrE,gBAAgBsE,2BAC7DN,EACAlB,EAAYC,uBAAuB,EAEjCsB,GAAmCE,cACrCH,EAA0BC,EAAkCE,aAG9DL,EAAWlB,GAAqBY,kBAAkB,EAAI,CACpDY,SAAU,SACVC,MAAO,CACLC,UAAWV,EAAUU,UACrBC,SAAUP,GAEZQ,UAAWC,GAEf,GAEQC,kBAAkBzC,EAA0B,CAClD,MAAO,CACL,CACEoB,GAAIT,GAAqB+B,SACzBlB,MAAO,KAAK5D,UAAU6D,QAAQ,qDAAqD,EACnFkB,OAAQ,GACRC,SAAU,IAEZ,GAAG5C,CAAO,CAEd,CAEQ6C,kBAAkBC,EAAmB,CAC3C,IAAMC,EAAeC,GAAYF,EAAa,CAC5CG,eAAgB,KACjB,EACD,OAAIC,OAAOC,KAAKJ,CAAY,EAAEK,SAAW,EAChC,GAGFC,GAAON,EAA8B,eAAe,CAC7D,CAEQO,wBAAwBR,EAAiC,CAC/D,GAAIA,EAAYS,iBAAmB,GACjC,MAAO,GAET,IAAMC,EAAS,CACbC,QAASX,EAAYY,eACrBC,MAAOb,EAAYS,eACnBK,IAAKd,EAAYe,WAGnB,OAD4BR,GAAOG,EAAQ,eAAe,CAE5D,CAEQM,mBACNnC,EACAC,EACAC,EAA+B,CAE/B,IAAMkC,EAAcpC,EAAUoC,aAAe,GACvC1B,EAAYV,EAAUU,WAAa,GACnC2B,EAAO,KAAK5F,gBAAe,EAC7B,KAAKH,mBAAmBmE,MAAM6B,QAAQ,eAAgBF,CAAW,EAAEE,QAAQ,aAAc5B,CAAS,EAClG,KAAKpE,mBAAmBmE,MAAM6B,QAAQ,eAAgBF,CAAW,EAErElC,EAAWlB,GAAqB+B,QAAQ,EAAI,CAC1CP,SAAU,OACVC,MAAO,KAAK8B,eAAevC,CAAS,EACpCqC,KAAMA,EAEV,CAEAE,eAAevC,EAA6B,CAC1C,OAAO,KAAK7D,qBAAqBqG,qBAAqB,UAAWxC,CAAS,CAC5E,CAEAyC,mBAAmBzC,EAA6B,CAC9C,OAAO,KAAK7D,qBAAqBsG,mBAAmB,UAAWzC,CAAS,CAC1E,CAEQ0C,yBACN1C,EACAC,EACAC,EAA+B,CAE/BA,EAAWlB,GAAqBC,WAAW,EAAI,CAC7CuB,SAAU,OACVC,MAAO,KAAKkC,kBAAkB3C,CAAS,EAE3C,CAEA4C,iBACE5C,EACAC,EACAC,EAA+B,CAE/B,KAAK2C,iCAAiC3C,CAAU,EAChD,KAAKiC,mBAAmBnC,EAAWC,EAAWC,CAAU,EACxD,KAAKH,6BAA6BC,EAAWC,EAAWC,CAAU,EAClE,KAAKwC,yBAAyB1C,EAAWC,EAAWC,CAAU,EAE1D,KAAK1D,2BAA2BsG,SAAQ,GAC1C,KAAKC,sBAAsB/C,EAAWE,CAAU,EAGlD,KAAK8C,eAAe,KAAKlH,OAAOmH,SAASC,kBAAoB,CAAA,EAAIlD,EAAWE,CAAU,CACxF,CAEQ2C,iCAAiC3C,EAA+B,CACtE,IAAMiD,EAAOjD,EAAW,KAAKlE,gBAAgBuC,WAAWO,EAAYsE,sBAAsB,CAAC,EACvFD,IACFA,EAAK3C,SAAW,YAEpB,CAEA6C,iBAAiBhF,EAA4BiF,EAAiB,CAC5D,IAAIC,EAAoB,KAAKnF,cAAcC,CAAO,EAClDkF,EAAoB,KAAK5D,4BAA4B4D,CAAiB,EACtEA,EAAoB,KAAKzC,kBAAkByC,CAAiB,EAC5DA,EAAoB,KAAKC,qBAAqBD,CAAiB,EAE3D,KAAK/G,2BAA2BsG,SAAQ,IAC1CS,EAAoB,KAAKE,kBAAkBF,CAAiB,GAG9D,IAAMG,EAAc,KAAK5H,OAAOmH,SAASC,kBAAoB,CAAA,EAC7DK,OAAAA,EAAoB,KAAKI,iBACvBD,EAAYE,IAAKpE,GAAMA,EAAEqE,gBAAgB,EACzCN,CAAiB,EAEfD,IACFC,EAAoB,KAAKO,uBAAuBP,CAAiB,GAE5D,CAAC,GAAGA,CAAiB,CAC9B,CAEAO,uBAAuBzF,EAA0B,CAC/C,IAAM0F,EAA0B,IAAIC,IAAqB,CACvD,CAAC,KAAKhI,gBAAgBuC,WAAWC,GAAoByF,KAAK,EAAG,EAAI,EACjE,CAACjF,GAAqB+B,SAAU,EAAI,CAAC,CACtC,EAED1C,OAAAA,EAAQ6F,QAASC,GAAU,CACzBA,EAAOzE,OAAS,CAACqE,EAAwBK,IAAID,EAAO1E,EAAE,CACxD,CAAC,EACM,CAAC,GAAGpB,CAAO,CACpB,CAEAsE,kBAAkB3C,EAA6B,CAC7C,IAAMqE,EAAiB,KAAKrI,gBAAgBuC,WAAWO,EAAYwF,0BAA0B,EACvFC,EAAiB,KAAKvI,gBAAgBuC,WAAWO,EAAY0F,0BAA0B,EACvFC,EAAO,KAAKzI,gBAAgBuC,WAAWO,EAAY4F,yBAAyB,EAC5EC,EAAQ,KAAK3I,gBAAgBuC,WAAWO,EAAY8F,0BAA0B,EAC9EC,EAAa,KAAK7I,gBAAgBuC,WAAWO,EAAYgG,+BAA+B,EACxFhD,EAAU,KAAK9F,gBAAgBuC,WAAWO,EAAYiG,4BAA4B,EAElFC,EAAqBhF,EAAUiF,QAAQC,KAAMC,IAAMA,GAAEC,UAAYf,CAAc,EAC/EgB,EAAqBrF,EAAUiF,QAAQC,KAAMC,IAAMA,GAAEC,UAAYb,CAAc,EAC/Ee,EAAWtF,EAAUiF,QAAQC,KAAMC,IAAMA,GAAEC,UAAYX,CAAI,EAC3Dc,EAAYvF,EAAUiF,QAAQC,KAAMC,IAAMA,GAAEC,UAAYT,CAAK,EAC7Da,EAAiBxF,EAAUiF,QAAQC,KAAMC,IAAMA,GAAEC,UAAYP,CAAU,EACvEY,EAAczF,EAAUiF,QAAQC,KAAMC,IAAMA,GAAEC,UAAYtD,CAAO,EAWvE,MAToB,CAClBkD,GAAoBzE,YACpB8E,GAAoB9E,YACpB+E,GAAU/E,YACVgF,GAAWhF,YACXkF,GAAalF,YACbiF,GAAgBjF,WAAW,EAGVmF,OAAQjF,IAAUA,KAAUkF,MAAS,EAAEC,KAAK,IAAI,CACrE,CAEQpC,qBAAqBnF,EAA0B,CACrD,MAAO,CACL,CACEoB,GAAIT,GAAqBC,YACzBY,MAAO,KAAK5D,UAAU6D,QAAQ,gDAAgD,EAC9EJ,OAAQ,GACRuB,SAAU,IAEZ,GAAG5C,CAAO,CAEd,CAEQoF,kBAAkBpF,EAA0B,CAClD,MAAO,CACL,CACEoB,GAAIT,GAAqB6G,SACzBhG,MAAO,YAET,GAAGxB,CAAO,CAEd,CAEQ0E,sBAAsB/C,EAA+BE,EAA+B,CACrFF,EAAUU,YAGfR,EAAWlB,GAAqB6G,QAAQ,EAAI,CAC1CrF,SAAU,SACVC,MAAO,CACLE,SAAUX,EAAUoC,YACpB0D,WAAY,UACZpF,UAAWV,EAAUU,WAEvBE,UAAWmF,IAEf,CAEQC,0BACNC,EACAC,EAA0C,CAE1C,GAAID,EAAqB,CACvB,IAAME,EAAeD,EAAQ3G,UAAW4F,GAAMA,EAAEC,UAAYzG,GAAeO,cAAc,EACrFiH,EAAe,KACjBD,EAAQC,CAAY,EAAEC,OAAS,GAC/BF,EAAQC,CAAY,EAAEE,YAAc,GAExC,CACA,OAAOH,CACT,CAEAI,iBAAiBJ,EAA0C,CAEzD,IAAMK,GADa,KAAKzK,OAAOmH,SAASuD,uBAAyB5J,EAAG,CAAA,CAAE,GACjCG,KAAK6G,EAAK6C,GAAc,KAAKC,sBAAsBR,EAASO,CAAS,CAAC,CAAC,EAC5G,OAAO5J,EAAc,CAAC,KAAKX,uBAAuByK,kBAAiB,EAAIJ,CAAiB,CAAC,EAAExJ,KACzF6G,EAAI,CAAC,CAACgD,EAAoBV,CAAO,IAC/B,KAAKF,0BAA0BY,EAAoBV,CAAO,CAAC,CAC5D,CAEL,CAEAW,mBACEC,EACAzH,EACA0H,EAAgB,CAEhB,IAAM3B,EAAU,KAAKpJ,gBAAgBuC,WAAWc,CAAU,EACpD2H,EAAOF,EAAkB5B,KAAMC,GAAMA,EAAEC,UAAYA,CAAO,EAChE,OAAI4B,IACFA,EAAKZ,OAAS,IAED,CACbhB,QAASA,EACT2B,SAAUA,EACVE,SAAUC,GAAqBC,mBAC/BC,OAAQ,CAAA,EACRC,WAAYL,EAGhB,CAEMM,kBACJC,EAAiE,QAAApH,GAAA,sBAEjE,OAAOqH,GACL3K,EAAc,CACZ,KAAKX,uBAAuByK,kBAAiB,EAC7CY,EACA,KAAKzL,OAAOmH,SAASwE,iBAAmB7K,EAAG,CAAA,CAAE,CAAC,CAC/C,CAAC,EACF8K,KAAK,CAAC,CAACC,EAAiBb,EAAmBc,CAAc,IAAK,CAC9D,IAAM1B,EAAU0B,EAAehE,IAAK8B,GAC3B,KAAKmB,mBAAmBC,EAAmBpB,EAAON,QAASM,EAAOqB,QAAQ,CAClF,EACD,GAAIY,EAAiB,CACnB,IAAME,EAAcf,EAAkB5B,KACnCC,GAAMA,EAAEC,UAAY,KAAKpJ,gBAAgBuC,WAAWI,GAAeO,cAAc,CAAC,EAEjF2I,IACFA,EAAYzB,OAAS,IAEvBF,EAAQ4B,KAAK,CACX1C,QAASzG,GAAeO,eACxB6H,SAAU,mCACVE,SAAUC,GAAqBC,mBAC/BC,OAAQ,CACN,CACEW,OAAQJ,EACT,EAEHN,WAAYQ,EACb,CACH,CACA,OAAO3B,CACT,CAAC,CACH,mDAxXWpL,GAAgCkN,EAOjCC,EAAiB,EAAAD,EACjBE,EAA8B,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,CAAA,CAAA,CAAA,kCAR7BxN,EAAgCyN,QAAhCzN,EAAgC0N,SAAA,CAAA,CAAA,SAAhC1N,CAAiC,GAAA,ICjC9C,IAsBM2N,GAGOC,GAzBbC,GAAAC,EAAA,KACAC,KACAC,KAMAC,KAQAC,KACAC,kCAKMR,GAAmB,IAGZC,IAAiB,IAAA,CAAxB,MAAOA,CAAiB,CAI5BQ,YAC8CC,EAC3BC,EACAC,EACAC,EACAC,EACAC,EAGAC,EAA0D,CAR/B,KAAAN,OAAAA,EAC3B,KAAAC,iBAAAA,EACA,KAAAC,0BAAAA,EACA,KAAAC,0BAAAA,EACA,KAAAC,6BAAAA,EACA,KAAAC,8BAAAA,EAGA,KAAAC,uBAAAA,EAZX,KAAAC,iBAAmB,IAAIC,GAAyC,CAAA,CAAE,EAC1E,KAAAC,gBAAkB,KAAKF,iBAAiBG,aAAY,CAYjD,CAEKC,iBACNC,EACAC,EACAC,EAA2B,CAE3B,OAAQD,EAAU,CAChB,IAAK,UACH,OAAO,KAAKX,0BAA0BS,iBAAiBC,CAAO,EAChE,IAAK,UACH,OAAO,KAAKT,0BAA0BQ,iBAAiBC,CAAO,EAChE,IAAK,WACH,OAAQE,EAAY,CAClB,IAAK,OACH,OAAO,KAAKR,wBAAwBK,iBAAiBC,CAAO,GAAKG,EAAGH,CAAO,EAC7E,QACE,OAAOG,EAAGH,CAAO,CACrB,CACF,IAAK,cACH,OAAO,KAAKP,8BAA8BM,iBAAiBC,CAAO,EACpE,QACE,OAAOG,EAAGH,CAAO,CACrB,CACF,CAEAI,mBACEC,EACAJ,EACAC,EACAI,EACAC,EAAsB,CAEtB,OAAOC,EAAc,CAAC,KAAKpB,OAAOqB,WAAYH,GAAkBH,EAAG,EAAE,CAAC,CAAC,EAAEO,KACvEC,EAAU,CAAC,CAACC,EAAWC,CAAa,IAC3B,KAAKxB,iBAAiByB,mBAC3Bb,EACA,CACEW,UAAWA,EACXG,OAAQ,CACNC,SAAUtC,IAEZ2B,WAAYA,EACZY,iBAAkBJ,GAEpBN,CAAa,CAEhB,EACDW,EAAKC,GACEA,EAAKnB,QAGHmB,EAAKnB,QAAQkB,IAAKE,IAAe,CACtCC,QAASD,EAAUC,QACnBC,KAAMC,GAA0BH,EAAUI,QAAUC,GAAWC,mBAAmB,EAClFC,iBAAkBP,EAAUO,iBAC5BC,mBAAoBC,GAA+BT,EAAUU,sBAAwB,CAAA,CAAE,EACvFC,UAAWX,EAAUW,WACrB,EARO,CAAA,CASV,EACDpB,EAAWX,GAAY,KAAKD,iBAAiBC,EAASC,EAAYC,CAAY,CAAC,CAAC,CAEpF,CAEM8B,0BACJ/B,EACAgC,EACA/B,EACAgC,EACA3B,EAAsB,QAAA4B,GAAA,sBAEtB,GAAIlC,IAAe,YAAcC,IAAiB,OAEhD,OADmBkC,GAAe,KAAKvC,eAAe,EACpCwC,KAAMrC,GAClBA,GAASsC,OAAS,GAAKJ,EAAsBlC,EAC7C,KAAKN,wBAAwB6C,kBAAiB,EACzC,KAAK7C,uBAAuB6C,kBAAiB,GAEtDC,QAAQC,MAAM,qEAAqE,EAC5E,CAAA,EACR,EAGH,GAAIR,EAAuB,CACzB,IAAMS,EAAa,MAAMN,GAAe,KAAKvC,eAAe,EACtD8C,GACH,MAAMV,EAAsBW,UAAUC,2BAA2BN,kBAChE,KAAKnC,mBAAmB,GAAIH,EAAY6C,OAAWA,OAAWvC,CAAa,CAAC,IACxE,CAAA,EACR,GAAImC,GAAYJ,OAAS,GAAKJ,EAAe,CAC3C,IAAMa,EAAgB,CAAC,GAAGL,EAAY,GAAGC,CAAoB,EAC7D,OAAOI,EAAcC,OAAO,CAACA,EAAQC,IAC5BA,IAAUF,EAAcG,UAAWC,GAAMH,EAAOI,WAAaD,EAAEC,QAAQ,CAC/E,CACH,CACA,OAAOT,CACT,CAEA,GAAI1C,IAAe,WAAY,CAC7B,IAAMyC,EAAa,MAAMN,GAAe,KAAKvC,eAAe,EACtDwD,EAAyB,MAAM,KAAK7D,6BAA6B+C,kBACrE,KAAKnC,mBAAmB,GAAIH,EAAY6C,OAAWA,OAAWvC,CAAa,CAAC,EAE9E,GAAImC,GAAYJ,OAAS,GAAKJ,EAAe,CAC3C,IAAMa,EAAgB,CAAC,GAAGL,EAAY,GAAGW,CAAsB,EAC/D,OAAON,EAAcC,OAAO,CAACA,EAAQC,IAC5BA,IAAUF,EAAcG,UAAWC,GAAMH,EAAOI,WAAaD,EAAEC,QAAQ,CAC/E,CACH,CACA,OAAOC,CACT,CACA,GAAIpD,IAAe,UAAW,CAC5B,IAAMyC,EAAa,MAAMN,GAAe,KAAKvC,eAAe,EACtDyD,EAAwB,MAAM,KAAKhE,0BAA0BiD,kBACjE,KAAKnC,mBAAmB,GAAIH,EAAY6C,OAAWA,OAAWvC,CAAa,CAAC,EAE9E,GAAImC,GAAYJ,OAAS,GAAKJ,EAAe,CAC3C,IAAMa,EAAgB,CAAC,GAAGL,EAAY,GAAGY,CAAqB,EAC9D,OAAOP,EAAcC,OAAO,CAACA,EAAQC,IAC5BA,IAAUF,EAAcG,UAAWC,GAAMH,EAAOI,WAAaD,EAAEC,QAAQ,CAC/E,CACH,CACA,OAAOE,CACT,CACA,GAAIrD,IAAe,UAAW,CAC5B,IAAMyC,EAAa,MAAMN,GAAe,KAAKvC,eAAe,EACtD0D,EAAwB,MAAM,KAAKhE,0BAA0BgD,kBACjE,KAAKnC,mBAAmB,GAAIH,EAAY6C,OAAWA,OAAWvC,CAAa,CAAC,EAE9E,GAAImC,GAAYJ,OAAS,GAAKJ,EAAe,CAC3C,IAAMa,EAAgB,CAAC,GAAGL,EAAY,GAAGa,CAAqB,EAC9D,OAAOR,EAAcC,OAAO,CAACA,EAAQC,IAC5BA,IAAUF,EAAcG,UAAWC,GAAMH,EAAOI,WAAaD,EAAEC,QAAQ,CAC/E,CACH,CACA,OAAOG,CACT,CACA,GAAItD,IAAe,cAAe,CAChC,IAAMyC,EAAa,MAAMN,GAAe,KAAKvC,eAAe,EACtD2D,EAA4B,MAAM,KAAK/D,8BAA8B8C,kBACzE,KAAKnC,mBAAmB,GAAIH,EAAY6C,OAAWA,OAAWvC,CAAa,CAAC,EAE9E,GAAImC,GAAYJ,OAAS,GAAKJ,EAAe,CAC3C,IAAMa,EAAgB,CAAC,GAAGL,EAAY,GAAGc,CAAyB,EAClE,OAAOT,EAAcC,OAAO,CAACA,EAAQC,IAC5BA,IAAUF,EAAcG,UAAWC,GAAMH,EAAOI,WAAaD,EAAEC,QAAQ,CAC/E,CACH,CACA,OAAOI,CACT,CACA,OAAOpB,GAAe,KAAKvC,eAAe,CAC5C,GAEA4D,kBAAkBzD,EAAgC,CAChD,KAAKL,iBAAiB+D,KAAK1D,CAAO,CACpC,iDAzKWrB,GAAiBgF,EAKlBC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAOjBO,GAAkC,CAAA,CAAA,CAAA,CAAA,kCAZjCvF,EAAiBwF,QAAjBxF,EAAiByF,SAAA,CAAA,CAAA,SAAjBzF,CAAiB,GAAA,ICwUxB,SAAU0F,IACdC,EACAC,EACAC,EACAC,EACAC,EAA6C,CAE7C,GAAI,CAACA,EACH,MAAO,CAAA,EAET,IAAMC,EAA0BC,EAAOC,EAAuB,EAI1DC,EAAaN,EACjB,KAAOM,EAAWC,YAChBD,EAAaA,EAAWC,WAE1B,IAAMC,EAAqCF,EAAWG,OAAOC,KAC3DC,EAAKF,GAAWA,EAAO,kBAAqB,EAC5CG,GAAY,CAAC,CAAC,EAEhBV,EAAsBM,eAAiBA,EAEvC,IAAMK,EAAkCL,EAAeE,KACrDI,EAAWC,GACTZ,EAAwBa,eAAelB,EAAImB,WAAYF,CAAa,CAAC,EAEvEH,GAAY,CAAC,CAAC,EAEhBV,OAAAA,EAAsBgB,oBAAsBL,EAAOH,KAAKC,EAAKQ,GAAuBA,EAAMC,kBAAkB,CAAC,EAC7GlB,EAAsBmB,kBAAoBR,EAAOH,KAAKC,EAAKQ,GAAuBA,EAAMG,gBAAgB,CAAC,EAEzGpB,EAAsBqB,gBAAkBC,EAAc,CAAC1B,EAAI2B,aAAcjB,CAAc,CAAC,EAAEE,KACxFC,EAAI,CAAC,CAACe,EAAaX,CAAa,IAC1BA,EACK,GAAGW,CAAW,IAAIzB,CAAa,IAAIc,CAAa,GAElD,GAAGW,CAAW,IAAIzB,CAAa,EACvC,EACDW,GAAY,CAAC,CAAC,EAGhBV,EAAsByB,SAAW,CAC/BC,0BAA2B7B,GAGtBG,CACT,CA8BM,SAAU2B,GACdC,EACAC,EAA2B,CAE3B,OAAKD,EAKE,IAAK,CACV,IAAME,EAAyB5B,EAAO6B,EAAsB,EACtDC,EAAoB9B,EAAO+B,EAAiB,EAC5CC,EAAwBhC,EAAOiC,EAAiB,EAChDnC,EAAwBE,EAAOkC,GAAyB,CAAEC,SAAU,EAAI,CAAE,EAoDhF,MAnD2C,CACzCC,kBAAkBC,EAAkB,CAClC,OAAOP,EAAkBQ,mBACvBD,EACAX,EACAC,EACA7B,GAAuBM,cAAc,CAEzC,EACAmC,gBAAgBC,EAAiBC,EAAc,CAC7C,OAAOb,EAAuBW,gBAC5BC,EACAC,EACAf,EACA5B,GAAuBM,cAAc,CAEzC,EACAsC,yBAAuB,CACrB,GAAI5C,EACF,OAAOA,EAAsB6C,uBAAyBC,EAAG,CAAA,CAAiC,EAE5F,OAAQlB,EAAU,CAChB,IAAK,UACH,OAAOM,EAAsBa,SAASF,uBAAyBC,EAAG,CAAA,CAAiC,EACrG,IAAK,UACH,OAAOZ,EAAsBc,SAASH,uBAAyBC,EAAG,CAAA,CAAiC,EACrG,IAAK,WACH,OAAQjB,EAAY,CAClB,IAAK,OACH,OAAOK,EAAsBe,MAAMJ,uBAAyBC,EAAG,CAAA,CAAiC,EAClG,QACE,OAAOZ,EAAsBgB,UAAUL,uBAAyBC,EAAG,CAAA,CAAiC,CACxG,CACF,IAAK,cACH,OAAOZ,EAAsBiB,aAAaN,uBAAyBC,EAAG,CAAA,CAAiC,EACzG,QACE,OAAOA,EAAG,CAAA,CAAiC,CAC/C,CACF,EACAM,0BAAwB,CACtB,OAAOpB,EAAkBqB,0BACvBzB,EACA5B,GAAyBsD,OACzBzB,EACA,EAAI,CAER,EACA0B,yBAAyBC,EAAgC,CACvD,OAAOxB,EAAkByB,kBAAkBD,CAAO,CACpD,EAGJ,GA7DEE,QAAQC,MAAM,gEAAgE,EACvE,KAAO,CAAA,GA6DlB,CAEM,SAAUC,GAAqChC,EAAsB,CACzE,MAAO,IAAK,CACV,IAAMiC,EAAqB3D,EAAO4D,EAAkB,EAMpD,MALwC,CACtCC,WAAWC,EAAgBC,EAAuB,CAChDJ,EAAmBE,WAAWnC,EAAYoC,EAAQC,CAAU,CAC9D,EAGJ,CACF,CAkGM,SAAUC,GACdtC,EAAsB,CAEtB,MAAO,IAAK,CACV,IAAME,EAAyB5B,EAAO6B,EAAsB,EACtD/B,EAAwBE,EAAOkC,GAAyB,CAAEC,SAAU,EAAI,CAAE,EAWhF,MAVuC,CACrCI,gBAAgBC,EAAiBC,EAAc,CAC7C,OAAOb,EAAuBW,gBAC5BC,EACAC,EACAf,EACA5B,GAAuBM,cAAc,CAEzC,EAGJ,CACF,CAtmBA,IAkEa6D,GAgDSC,GA0DTC,IA+JAlC,GAEAC,GAIAkC,GA6DAC,GAMAC,GA0IAC,GASAC,GAIDC,GAOAC,GAkECC,GAIAC,GAIAC,GA5nBbC,GAAAC,EAAA,KAAAC,KAGAC,IAGAC,KACAC,KACAC,KAKAC,KAOAC,SAGAC,KA2CatB,GAA4B,CAAC,UAAW,UAAW,WAAY,cAAe,cAAc,EAgDnFC,IAAkB,IAAA,CAAlC,MAAgBA,CAAkB,CADxCsB,aAAA,CAEE,KAAAC,SAAW,GACX,KAAAC,YAAmC9C,EAAG,EAAK,EAC3C,KAAAlB,WAAyB,UACzB,KAAAiE,UAAY,GACZ,KAAAC,SAAWC,GAAM,EAAE,kDALC3B,EAAkB,CAAA,gCAAlBA,EAAkB4B,OAAA,CAAAF,SAAA,CAAA,EAAA,UAAA,CAAA,CAAA,CAAA,CAAA,SAAlB1B,CAAkB,GAAA,EA0D3BC,IAA2B,IAAI4B,GAA8B,4CAA4C,EA+JzG9D,GAAoB,IAAI8D,GAAgC,0BAA0B,EAElF7D,GAA0B,IAAI6D,GACzC,sCAAsC,EAG3B3B,GAAiC,IAAI2B,GAChD,6CAA6C,EA4DlC1B,GAAkC,IAAI0B,GAAuC,2BAA2B,EAMxGzB,GAA8B,IAAIyB,GAC7C,iCAAiC,EAyItBxB,GAAqB,CAChCyB,KAAM,OACNC,UAAW,aAOAzB,GAA6B,IAAIuB,GAC5C,iEAAiE,EAGvDtB,GAAZ,SAAYA,EAAa,CACvBA,OAAAA,EAAAA,EAAA,QAAA,CAAA,EAAA,UACAA,EAAAA,EAAA,GAAA,CAAA,EAAA,KACAA,EAAAA,EAAA,MAAA,CAAA,EAAA,QACAA,EAAAA,EAAA,MAAA,CAAA,EAAA,QAJUA,CAKZ,EALYA,IAAa,CAAA,CAAA,EAObC,GAAZ,SAAYA,EAAY,CACtBA,OAAAA,EAAAA,EAAA,WAAA,CAAA,EAAA,aACAA,EAAAA,EAAA,OAAA,CAAA,EAAA,SACAA,EAAAA,EAAA,GAAA,CAAA,EAAA,KACAA,EAAAA,EAAA,MAAA,CAAA,EAAA,QAJUA,CAKZ,EALYA,IAAY,CAAA,CAAA,EAkEXC,GAA0B,IAAIoB,GACzC,4CAA4C,EAGjCnB,GAAoC,IAAImB,GACnD,4DAA4D,EAGjDlB,GAAqC,IAAIkB,GACpD,mGAAmG,ICzoBrG,IAmBaG,GAnBbC,GAAAC,EAAA,KAAAC,IACAC,KAYAC,KACAC,KACAC,KACAC,SAGaR,IAA6B,IAAA,CAApC,MAAOA,UAAqCS,EAAqB,CADvEC,aAAA,qBAEU,KAAAC,6BAA+BC,EAAOC,EAAkC,EACxE,KAAAC,oBAAsBF,EAAOG,EAA8B,EAE1DC,YAAYC,EAAuC,CAC1D,OAAQ,KAAKH,oBAAoBI,uBAAyBC,EAAG,CAAA,CAA0B,GAAGC,KACxFC,EAAWC,GAAwB,CACjC,IAAMC,EAAmD,CACvDC,kBAAmBF,EAAqBG,SAAW,GACnDC,WAAYJ,EAAqBK,kBAAoB,CAAA,EACrDC,OAAQX,EAAQW,QAAU,CAAA,EAC1BC,UAAWZ,EAAQY,WAAa,CAAA,EAChCC,cAAeb,EAAQa,eAAiB,CAAA,GAE1C,OAAO,KAAKnB,6BAA6BoB,4BAA4BR,CAAG,CAC1E,CAAC,EACDS,EAAKC,IACI,CACLC,WAAYD,EAASE,YAAc,CAAA,EACnCC,eAAgBH,EAASG,gBAAkB,CAAA,GAE9C,CAAC,CAEN,CAESC,mBAAmBpB,EAAoC,CAC9D,OAAQ,KAAKH,oBAAoBI,uBAAyBC,EAAG,CAAA,CAA0B,GAAGC,KACxFC,EAAWC,GAAwB,CACjC,IAAMC,EAAM,CACVC,kBAAmBF,EAAqBG,SAAW,GACnDC,WAAYJ,EAAqBK,kBAAoB,CAAA,EACrDW,WAAYrB,EAAQqB,YAAc,GAClCC,OAAQtB,EAAQsB,QAAU,CAAA,GAE5B,OAAO,KAAK5B,6BAA6B6B,iCAAiCjB,CAAG,CAC/E,CAAC,EACDS,EAAKC,IACI,CACLQ,QAASR,EAASQ,SAAW,CAAA,EAC7BF,OAAQN,EAASM,QAAU,CAAA,GAE9B,CAAC,CAEN,CAESG,iBAAiBzB,EAAyC,CACjE,OAAQ,KAAKH,oBAAoBI,uBAAyBC,EAAG,CAAA,CAA0B,GAAGC,KACxFC,EAAWC,GAAwB,CACjC,IAAMC,EAAM,CACVC,kBAAmBF,EAAqBG,SAAW,GACnDC,WAAYJ,EAAqBK,kBAAoB,CAAA,EACrDgB,QAAS1B,EAAQ0B,SAAW,GAC5BC,SAAU3B,EAAQ2B,UAAY,EAC9BN,WAAYrB,EAAQqB,YAAc,IAEpC,OAAO,KAAK3B,6BAA6BkC,sCAAsCtB,CAAG,CACpF,CAAC,EACDS,EAAKC,IACI,CACLa,QAASb,EAASa,SAAW,CAAA,GAEhC,CAAC,CAEN,sEA/DW9C,CAA4B,IAAA+C,GAA5B/C,CAA4B,CAAA,CAAA,GAAA,CAAA,kCAA5BA,EAA4BgD,QAA5BhD,EAA4BiD,UAAAC,WADf,MAAM,CAAA,CAAA,SACnBlD,CAA6B,GAAA,IClB1C,IAsBamD,GAtBbC,GAAAC,EAAA,cAsBaF,IAAmB,IAAA,CAA1B,MAAOA,CAAmB,CAC9BG,YAA6BC,EAAkC,CAAlC,KAAAA,QAAAA,CAAqC,CAElEC,gBAAgBC,EAAwC,CACtD,OAAO,KAAKF,QAAQG,mBAAmBD,CAAO,CAChD,CAEAE,gBAAgBF,EAAwC,CACtD,OAAO,KAAKF,QAAQK,mBAAmBH,CAAO,CAChD,CAEAI,kBAAkBJ,EAA0C,CAC1D,OAAO,KAAKF,QAAQO,qBAAqBL,CAAO,CAClD,CAEAM,gBAAgBN,EAAwC,CACtD,OAAO,KAAKF,QAAQS,mBAAmBP,CAAO,CAChD,CAEAQ,YAAYR,EAAuC,CACjD,OAAO,KAAKF,QAAQW,kBAAkBT,CAAO,CAC/C,CAEAU,mBAAmBV,EAAoC,CACrD,OAAO,KAAKF,QAAQa,wBAAwBX,CAAO,CACrD,CAEAY,eAAeZ,EAA0C,CACvD,OAAO,KAAKF,QAAQe,qBAAqBb,CAAO,CAClD,CAEAc,iBAAiBd,EAAyC,CACxD,OAAO,KAAKF,QAAQiB,6BAA6Bf,CAAO,CAC1D,iDAjCWN,GAAmBsB,EAAAC,EAAA,CAAA,CAAA,CAAA,kCAAnBvB,EAAmBwB,QAAnBxB,EAAmByB,UAAAC,WADN,MAAM,CAAA,CAAA,SACnB1B,CAAmB,GAAA,ICvBhC,IAmBa2B,GAnBbC,GAAAC,EAAA,KAAAC,IACAC,KAYAC,KACAC,KACAC,KACAC,SAGaR,IAA4B,IAAA,CAAnC,MAAOA,UAAoCS,EAAc,CAD/DC,aAAA,qBAEU,KAAAC,4BAA8BC,EAAOC,EAAiC,EACtE,KAAAC,oBAAsBF,EAAOG,EAA8B,EAE1DC,YAAYC,EAAuC,CAC1D,OAAQ,KAAKH,oBAAoBI,uBAAyBC,EAAG,CAAA,CAA0B,GAAGC,KACxFC,EAAWC,GAAwB,CACjC,IAAMC,EAAM,CACVC,kBAAmBF,EAAqBG,SAAW,GACnDC,WAAYJ,EAAqBK,kBAAoB,CAAA,EACrDC,OAAQX,EAAQW,QAAU,CAAA,EAC1BC,UAAWZ,EAAQY,WAAa,CAAA,EAChCC,cAAeb,EAAQa,eAAiB,CAAA,GAE1C,OAAO,KAAKnB,4BAA4BoB,0BAA0BR,CAAG,CACvE,CAAC,EACDS,EAAKC,IACI,CACLC,WAAYD,EAASC,YAAc,CAAA,EACnCC,eAAgBF,EAASE,gBAAkB,CAAA,GAE9C,CAAC,CAEN,CAESC,mBAAmBnB,EAAoC,CAC9D,OAAQ,KAAKH,oBAAoBI,uBAAyBC,EAAG,CAAA,CAA0B,GAAGC,KACxFC,EAAWC,GAAwB,CACjC,IAAMC,EAAM,CACVC,kBAAmBF,EAAqBG,SAAW,GACnDC,WAAYJ,EAAqBK,kBAAoB,CAAA,EACrDU,WAAYpB,EAAQoB,YAAc,GAClCC,OAAQrB,EAAQqB,QAAU,CAAA,GAE5B,OAAO,KAAK3B,4BAA4B4B,gCAAgChB,CAAG,CAC7E,CAAC,EACDS,EAAKC,IACI,CACLO,QAASP,EAASO,SAAW,CAAA,EAC7BF,OAAQL,EAASK,QAAU,CAAA,GAE9B,CAAC,CAEN,CAESG,iBAAiBxB,EAAyC,CACjE,OAAQ,KAAKH,oBAAoBI,uBAAyBC,EAAG,CAAA,CAA0B,GAAGC,KACxFC,EAAWC,GAAwB,CACjC,IAAMC,EAAM,CACVC,kBAAmBF,EAAqBG,SAAW,GACnDC,WAAYJ,EAAqBK,kBAAoB,CAAA,EACrDe,QAASzB,EAAQyB,SAAW,GAC5BL,WAAYpB,EAAQoB,YAAc,GAClCM,SAAU1B,EAAQ0B,UAAY,GAEhC,OAAO,KAAKhC,4BAA4BiC,qCAAqCrB,CAAG,CAClF,CAAC,EACDS,EAAKC,IACI,CACLY,QAASZ,EAASY,SAAW,CAAA,GAEhC,CAAC,CAEN,sEA/DW7C,CAA2B,IAAA8C,GAA3B9C,CAA2B,CAAA,CAAA,GAAA,CAAA,kCAA3BA,EAA2B+C,QAA3B/C,EAA2BgD,UAAAC,WADd,MAAM,CAAA,CAAA,SACnBjD,CAA4B,GAAA,IClBzC,IA8CakD,GA9CbC,GAAAC,EAAA,KACAC,KAqBAC,KAQAC,KAQAC,KACAC,4CAOaP,IAAgB,IAAA,CAAvB,MAAOA,CAAgB,CAG3BQ,YAC8CC,EACaC,EACxCC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAwC,CARb,KAAAR,OAAAA,EACa,KAAAC,oBAAAA,EACxC,KAAAC,eAAAA,EACA,KAAAC,eAAAA,EACA,KAAAC,gBAAAA,EACA,KAAAC,mBAAAA,EACA,KAAAC,6BAAAA,EACA,KAAAC,4BAAAA,EACA,KAAAC,oBAAAA,EAXX,KAAAC,mBAAmC,CAAC,UAAW,UAAW,WAAY,cAAe,cAAc,EAazG,KAAKC,qBAAuBT,EAAoBU,iBAC5CC,EAAc,CAACX,EAAoBU,iBAAkBX,EAAOa,UAAU,CAAC,EAAEC,KACvEC,EAAI,CAAC,CAACC,EAAiBC,CAAS,IAC1BA,IAAc,GACT,GAEFD,CACR,CAAC,EAEJE,EAAG,EAAK,CACd,CAEAC,gBAAgBC,EAAwBC,EAA6B,CACnE,OAAIA,EAAUC,SAAWC,SACvBF,EAAUC,OAAS,KAAKE,gBAAgBH,EAAWA,EAAUC,MAA+B,GAGvF,KAAKtB,OAAOa,WAAWC,KAC5BW,GAAK,CAAC,EACNC,EAAWT,GAAqB,CAC9B,IAAMU,EAA2C,CAC/CV,UAAWA,EACXI,UAAWA,GAEb,OAAO,KAAKO,cAAcR,CAAU,EAAED,gBAAgBQ,CAAO,CAC/D,CAAC,EACDF,GAAK,CAAC,CAAC,CAEX,CAEAI,gBAAgBZ,EAAmBG,EAAwBU,EAAgB,CACzE,IAAMH,EAA2C,CAC/CV,UAAWA,EACXc,YAAaD,GAEf,OAAO,KAAKF,cAAcR,CAAU,EAAES,gBAAgBF,CAAO,EAAEb,KAAKW,GAAK,CAAC,CAAC,CAC7E,CAEAO,kBACEZ,EACAC,EAA6B,CAE7B,IAAMY,EAAgBC,GAAA,GAAKb,GAC3B,OAAIY,EAAcX,SAAWC,SAC3BU,EAAcX,OAAS,KAAKE,gBAAgBS,EAAeA,EAAcX,MAA+B,GAEnG,KAAKtB,OAAOa,WAAWC,KAC5BW,GAAK,CAAC,EACNC,EAAWT,GAAqB,CAC9B,IAAMU,EAA6C,CACjDV,UAAWA,EACXI,UAAWY,GAEb,OAAO,KAAKL,cAAcR,CAAU,EAAEY,kBAAkBL,CAAO,CACjE,CAAC,EACDF,GAAK,CAAC,CAAC,CAEX,CAEQD,gBAAgBH,EAA+Bc,EAAkC,CACvF,IAAMC,EAAiBD,EAAYE,KAAMC,GAAUA,EAAMC,UAAYC,GAAeC,cAAc,EAC9FL,IACFf,EAAUqB,QAAUN,EAAeO,YACnCR,EAAcA,EAAYS,OAAQN,GAAUA,EAAMC,UAAYC,GAAeC,cAAc,GAE7F,IAAMI,EAAiBV,EAAYE,KAAMC,GAAUA,EAAMC,UAAYC,GAAeM,cAAc,EAC9FD,IACFxB,EAAU0B,QAAUF,EAAeF,YACnCR,EAAcA,EAAYS,OAAQN,GAAUA,EAAMC,UAAYC,GAAeM,cAAc,GAE7F,IAAME,EAAoBb,EAAYE,KAAMC,GAAUA,EAAMC,UAAYC,GAAeS,iBAAiB,EACpGD,IACF3B,EAAU6B,WAAaF,EAAkBL,YACzCR,EAAcA,EAAYS,OAAQN,GAAUA,EAAMC,UAAYC,GAAeS,iBAAiB,GAEhG,IAAME,EAAiBhB,EAAYE,KAAMC,GAAUA,EAAMC,UAAYC,GAAeY,cAAc,EAC9FD,IACF9B,EAAUqB,QAAUS,EAAeR,YACnCR,EAAcA,EAAYS,OAAQN,GAAUA,EAAMC,UAAYC,GAAeY,cAAc,GAE7F,IAAMC,EAAiBlB,EAAYE,KAAMC,GAAUA,EAAMC,UAAYC,GAAec,cAAc,EAC9FD,IACFhC,EAAU0B,QAAUM,EAAeV,YACnCR,EAAcA,EAAYS,OAAQN,GAAUA,EAAMC,UAAYC,GAAec,cAAc,GAE7F,IAAMC,EAAoBpB,EAAYE,KAAMC,GAAUA,EAAMC,UAAYC,GAAegB,iBAAiB,EACpGD,IACFlC,EAAU6B,WAAaK,EAAkBZ,YACzCR,EAAcA,EAAYS,OAAQN,GAAUA,EAAMC,UAAYC,GAAegB,iBAAiB,GAEhG,IAAMC,EAAqBtB,EAAYE,KAAMC,GAAUA,EAAMC,UAAYC,GAAekB,kBAAkB,EACtGD,IACFpC,EAAUqB,QAAUe,EAAmBd,YACvCR,EAAcA,EAAYS,OAAQN,GAAUA,EAAMC,UAAYC,GAAekB,kBAAkB,GAEjG,IAAMC,EAAsBxB,EAAYE,KAAMC,GAAUA,EAAMC,UAAYC,GAAeoB,mBAAmB,EACxGD,IACFtC,EAAUqB,QAAUiB,EAAoBhB,YACxCR,EAAcA,EAAYS,OAAQN,GAAUA,EAAMC,UAAYC,GAAeoB,mBAAmB,GAElG,IAAMC,EAAyB1B,EAAYE,KAAMC,GAAUA,EAAMC,UAAYC,GAAesB,sBAAsB,EAClH,OAAID,IACFxC,EAAU6B,WAAaW,EAAuBlB,YAC9CR,EAAcA,EAAYS,OAAQN,GAAUA,EAAMC,UAAYC,GAAesB,sBAAsB,GAE9F3B,CACT,CAEA4B,gBAAgB3C,EAAwBC,EAA6B,CAC/DA,EAAUC,SAAWC,SACvBF,EAAUC,OAAS,KAAKE,gBAAgBH,EAAWA,EAAUC,MAA+B,GAE9F,IAAM0C,EAAkB,CAAA,EACxB3C,OAAAA,EAAUC,QAAQ2C,QAAS3B,GAAS,CAClC0B,EAAME,KAAK,UAAU5B,EAAMC,OAAO,EAAE,CACtC,CAAC,EACGlB,EAAUqB,SACZsB,EAAME,KAAK,SAAS,EAElB7C,EAAU0B,SACZiB,EAAME,KAAK,SAAS,EAElB7C,EAAU6B,YACZc,EAAME,KAAK,YAAY,EAGlB,KAAKlE,OAAOa,WAAWC,KAC5BW,GAAK,CAAC,EACNC,EAAWT,GAAqB,CAC9B,IAAMU,EAA2C,CAC/CV,UAAWA,EACXI,UAAWA,EACX8C,UAAW,CACTH,MAAOA,IAGX,OAAO,KAAKpC,cAAcR,CAAU,EAAE2C,gBAAgBpC,CAAO,CAC/D,CAAC,EACDF,GAAK,CAAC,CAAC,CAEX,CAEA2C,cAAcC,EAA8B,CAC1C,GAAI,CAACA,EACH,OAEF,IAAMC,EAA4B,CAAA,EAElC,QAAWC,KAAQF,EAAS,CAC1B,GAAIE,EAAKC,YAAc,GACrB,OAEED,EAAKC,YAAc,OACrBF,EAAOJ,KAAK,CACV3B,QAASgC,EAAKE,OACdC,cAAeC,GAAcC,yBAC9B,EAECL,EAAKC,YAAc,QACrBF,EAAOJ,KAAK,CACV3B,QAASgC,EAAKE,OACdC,cAAeC,GAAcE,0BAC9B,CAEL,CACA,OAAOP,CACT,CAEAQ,eAAeC,EAA4C,CACzD,OAAOC,GAAqBD,CAAO,CACrC,CAEAE,YACE7D,EACAO,EACAuD,EAAsB,CAEtB,OAAOtE,EAAc,CAAC,KAAKZ,OAAOa,WAAY,KAAKH,oBAAoB,CAAC,EAAEI,KACxEY,EAAU,CAAC,CAACT,EAAWD,CAAe,IAChCkE,EACK,KAAKtD,cAAcR,EAAY,EAAK,EACxC6D,YAAYE,GAAAjD,GAAA,GAAKP,GAAL,CAAcV,UAAWiE,CAAa,EAAE,EACpDpE,KAAKW,GAAK,CAAC,CAAC,EAEV,KAAKG,cAAcR,EAAYJ,CAAe,EAClDiE,YAAYE,GAAAjD,GAAA,GAAKP,GAAL,CAAcV,UAAWA,CAAS,EAAE,EAChDH,KAAKW,GAAK,CAAC,CAAC,CAChB,CAAC,CAEN,CAEA2D,mBACEhE,EACAO,EACAuD,EAAsB,CAEtB,OAAOtE,EAAc,CAAC,KAAKZ,OAAOa,WAAY,KAAKH,oBAAoB,CAAC,EAAEI,KACxEY,EAAU,CAAC,CAACT,EAAWD,CAAe,IAChCkE,EACK,KAAKtD,cAAcR,EAAY,EAAK,EACxCgE,mBAAmBD,GAAAjD,GAAA,GAAKP,GAAL,CAAcV,UAAWiE,CAAa,EAAE,EAC3DpE,KAAKW,GAAK,CAAC,CAAC,EAEV,KAAKG,cAAcR,EAAYJ,CAAe,EAClDoE,mBAAmBD,GAAAjD,GAAA,GAAKP,GAAL,CAAcV,UAAWA,CAAS,EAAE,EACvDH,KAAKW,GAAK,CAAC,CAAC,CAChB,CAAC,CAEN,CAEA4D,eACEjE,EACAkE,EACAC,EAAsD,CAAA,EACtDC,EAA8B,CAE9B,OAAO,KAAKxF,OAAOa,WAAWC,KAC5BW,GAAK,CAAC,EACNC,EAAW+D,GAAmB,CAE5B,IAAM9D,EAA6C,CACjDV,UAFgBuE,GAAyBC,EAGzCH,aAAcA,EACdI,kBAAmBH,GAErB,OAAO,KAAK3D,cAAcR,CAAU,EAAEiE,eAAe1D,CAAO,CAC9D,CAAC,CAAC,CAEN,CAEAgE,iBACEvE,EACAO,EAAyC,CAEzC,OAAOf,EAAc,CAAC,KAAKZ,OAAOa,WAAY,KAAKH,oBAAoB,CAAC,EAAEI,KACxEY,EAAU,CAAC,CAACT,EAAWD,CAAe,IAC7B,KAAKY,cAAcR,EAAYJ,CAAe,EAClD2E,iBAAiBR,GAAAjD,GAAA,GAAKP,GAAL,CAAcV,UAAWA,CAAS,EAAE,EACrDH,KAAKW,GAAK,CAAC,CAAC,CAChB,CAAC,CAEN,CAEQG,cAAcR,EAAwBJ,EAAyB,CAIrE,OAHK,KAAKP,mBAAmBmF,SAASxE,CAAU,GAC9CyE,QAAQC,MAAM,iEAAiE,EAEzE1E,EAAU,CAChB,IAAK,UACH,OAAIJ,EACK,KAAKT,4BAEP,KAAKL,eACd,IAAK,UACH,OAAO,KAAKC,eACd,IAAK,WACH,OAAIa,EACK,KAAKV,6BAEP,KAAKF,gBACd,IAAK,cACH,OAAO,KAAKC,mBACd,IAAK,eACH,OAAO,KAAKG,mBAChB,CACF,CAEAuF,gBAAgB3E,EAAwB4E,EAAoBC,EAAgC,CAC1F,GAAI7E,IAAe,UACjByE,cAAQC,MAAM,wCAAwC,EAChD,IAAII,MAAM,wCAAwC,EAG1D,OAAO,KAAKlG,OAAOa,WAAWC,KAC5BY,EAAWT,GAAa,CACtBgF,EAAWhC,QAAS5C,GAAa,CAC/BA,EAAUC,OAAS,KAAKE,gBAAgBH,EAAWA,EAAUC,MAA+B,CAC9F,CAAC,EACD,IAAMK,EAAkD,CACtDV,UAAWA,EACX+E,WAAYA,EACZC,WAAYA,GAEd,OAAO,KAAK9F,eAAe4F,gBAAgBpE,CAAO,CACpD,CAAC,EACDZ,EAAKoF,GAAaA,GAAUC,SAAS,EACrC3E,GAAK,CAAC,CAAC,CAEX,iDA9SWlC,GAAgB8G,EAIjBC,EAAiB,EAAAD,EACjBE,EAA8B,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,EAAAR,EAAAS,EAAA,CAAA,CAAA,CAAA,kCAL7BvH,EAAgBwH,QAAhBxH,EAAgByH,SAAA,CAAA,CAAA,SAAhBzH,CAAgB,GAAA,IC/C7B,IAiBa0H,GAjBbC,GAAAC,EAAA,KAEAC,KACAC,KAEAC,KAEAC,KACAC,iBASaP,IAA4B,IAAA,CAAnC,MAAOA,CAA4B,CAIvCQ,YACmBC,EACAC,EAGAC,EAA4C,CAJ5C,KAAAF,iBAAAA,EACA,KAAAC,6BAAAA,EAGA,KAAAC,sBAAAA,EAPF,KAAAC,iBAAmB,IAAIC,GAAiB,IAAIC,EAAe,EAS1E,KAAKC,aAAeC,EAAc,CAChCL,GAAuBM,qBAAuBC,EAAG,EAAE,EACnDP,GAAuBQ,mBAAqBD,EAAG,EAAE,CAAC,CACnD,EAAEE,KACDC,EAAI,CAAC,CAACC,EAAoBC,CAAgB,KACjC,CACLD,mBAAAA,EACAC,iBAAAA,GAEH,EACDC,GAAoB,EACpBC,GAAY,CAAC,CAAC,CAElB,CAEAC,2BACEC,EACAC,EACAC,EAA4B,CAG5B,OAAK,KAAKlB,sBAI4B,KAAKmB,4BAA4BD,CAAmB,EACrDT,KACnCC,EAAKU,GAAgC,CACnC,IAAMC,EAAY,UAAUJ,CAAG,GACzBK,EAAc,KAAKxB,iBAAiByB,QAAQF,EAAWD,CAA4B,EACzF,OAAO,KAAKnB,iBAAiBuB,UAAUF,CAAW,CACpD,CAAC,EACDG,GAAK,CAAC,CAAC,EAVAlB,EAAG,KAAKR,6BAA6B2B,2BAA2BV,EAAYC,EAAKC,CAAmB,CAAC,CAYhH,CAEAC,4BACED,EAAkD,CAElD,IAAME,EAA6DF,GAAuB,CAAA,EAC1F,OAAO,KAAKd,aAAaK,KACvBC,EAAI,CAAC,CAAEC,mBAAAA,EAAoBC,iBAAAA,CAAgB,KACzCQ,EAA6BT,mBAAqBA,EAClDS,EAA6BR,iBAAmBA,EACzCQ,EACR,CAAC,CAEN,iDA1DW/B,GAA4BsC,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAQ7BG,GAAuB,CAAA,CAAA,CAAA,CAAA,kCARtBzC,EAA4B0C,QAA5B1C,EAA4B2C,SAAA,CAAA,CAAA,SAA5B3C,CAA4B,GAAA,ICjBzC,IAQa4C,GARbC,GAAAC,EAAA,cAQaF,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CACpCG,YAA6BC,EAAmD,CAAnD,KAAAA,sBAAAA,CAAsD,CAGnFC,UAAUC,EAAeC,EAAuCC,EAA4B,CAC1F,OAAO,KAAKJ,sBAAsBK,2BAA2BF,EAAYD,EAAOE,CAAmB,CACrG,iDANWR,GAAyBU,EAAAC,GAAA,EAAA,CAAA,CAAA,CAAA,8DAAzBX,EAAyBY,KAAA,EAAA,CAAA,CAAA,SAAzBZ,CAAyB,GAAA,ICRtC,IASaa,GATbC,GAAAC,EAAA,cASaF,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CACpCG,YAA6BC,EAA0D,CAA1D,KAAAA,6BAAAA,CAA6D,CAG1FC,UAAUC,EAAeC,EAAuCC,EAA4B,CAC1F,OAAO,KAAKJ,6BAA6BK,2BAA2BF,EAAYD,EAAOE,CAAmB,CAC5G,iDANWR,GAAyBU,EAAAC,GAAA,EAAA,CAAA,CAAA,CAAA,8DAAzBX,EAAyBY,KAAA,EAAA,CAAA,CAAA,SAAzBZ,CAAyB,GAAA,ICTtC,IAAAa,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,OCJA,IAEaC,GAmBAC,GAKAC,GA1BbC,GAAAC,EAAA,KAAAC,KAEaL,GAAkBM,GAAQ,kBAAmB,CACxDC,GACE,UACAC,GAAM,CACJC,WAAY,SACZC,QAAS,EACV,CAAC,EAEJH,GACE,WACAC,GAAM,CACJC,WAAY,UACZC,QAAS,EACV,CAAC,EAEJC,GAAW,sBAAuB,CAACC,GAAQ,OAAO,CAAC,CAAC,EACpDD,GAAW,sBAAuB,CAACC,GAAQ,OAAO,CAAC,CAAC,CAAC,CACtD,EAEYX,GAASK,GAAQ,SAAU,CACtCK,GAAW,SAAU,CAACH,GAAM,CAAEE,QAAS,CAAC,CAAE,EAAGE,GAAQ,QAASJ,GAAM,CAAEE,QAAS,CAAC,CAAE,CAAC,CAAC,CAAC,EACrFC,GAAW,SAAU,CAACC,GAAQ,QAASJ,GAAM,CAAEE,QAAS,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAChE,EAEYR,GAAWI,GAAQ,WAAY,CAC1CC,GACE,YACAC,GAAM,CACJK,gBAAiB,0BAClB,CAAC,EAEJN,GACE,UACAC,GAAM,CACJK,gBAAiB,QAClB,CAAC,EAEJF,GAAW,uBAAwB,CAACC,GAAQ,IAAI,CAAC,CAAC,EAClDD,GAAW,uBAAwB,CAACC,GAAQ,IAAI,CAAC,CAAC,CAAC,CACpD,ICzCD,IAAAE,GAAAC,EAAA,KAAAC,OCAA,IAAAC,GAAAC,EAAA,KAAAC,OCAA,UASaC,GATbC,GAAAC,EAAA,KAAAC,6JASaH,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,CAPlCI,aAAA,CAQwB,KAAAC,MAAQ,qBAI9B,KAAAC,aAAe,mDALJN,EAAqB,CAAA,+BAArBA,EAAqBO,UAAA,CAAA,CAAA,oBAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IAArBE,GAAAD,EAAAN,KAAA,EAAAQ,GAAA,gBAAAF,EAAAL,YAAA,0DAISQ,EAAgB,CAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,mBAAAC,GAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,4BAAA,CAAA,EAAAC,SAAA,SAAAb,EAAAC,EAAA,CAAAD,EAAA,WCbtCc,EAAA,EAAA,MAAA,CAAA,EAAwC,EAAA,MAAA,CAAA,EAEpCC,GAAA,CAAA,EACFC,EAAA,EACAD,GAAA,EAAA,CAAA,EACFC,EAAA;;6BDIa1B,CAAqB,GAAA,IETlC,IAMa2B,IANbC,GAAAC,EAAA,SAMaF,KAA8B,IAAA,CAArC,MAAOA,CAA8B,CAJ3CG,aAAA,CAKwB,KAAAC,MAAQ,+EADnBJ,EAA8B,CAAA,gCAA9BA,EAA8BK,UAAA,CAAA,CAAA,8BAAA,EAAA,CAAA,GAAA,4BAAA,EAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAA9BE,GAAAD,EAAAL,KAAA,2BAAAJ,CAA8B,GAAA,ICN3C,IAWaW,GAMAC,GAjBbC,GAAAC,EAAA,KAGAC,QAQaJ,GAAiB,CAACK,CAAY,EAM9BJ,IAAwB,IAAA,CAA/B,MAAOA,CAAwB,iDAAxBA,EAAwB,CAAA,gCAAxBA,CAAwB,CAAA,CAAA,oCAH1BD,EAAc,CAAA,CAAA,CAAA,SAGZC,CAAwB,GAAA,ICjBrC,IAAAK,GAAAC,EAAA,KAAAC,OCAA,IAAAC,GAAAC,EAAA,KACAC,0CEWMC,EAAA,EAAA,SAAA,CAAA,EAAwDC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,cAAA,CAAe,CAAA,CAAA,EAC9EP,EAAA,EAAA,UAAA,EAAUQ,EAAA,EAAA,WAAA,EAASC,EAAA,EACnBD,EAAA,CAAA,mBACFC,EAAA,oBADEC,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAR,EAAAS,aAAA,8BAAA,EAAA,GAAA,sCAKFb,EAAA,EAAA,MAAA,CAAA,EAAmCC,EAAA,QAAA,UAAA,CAAAC,EAAAY,CAAA,EAAA,IAAAV,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,cAAA,CAAe,CAAA,CAAA,EAAEE,EAAA,GDnBnE,gBAUaM,IAVbC,GAAAC,EAAA,wIAUaF,KAAgB,IAAA,CAAvB,MAAOA,CAAgB,CAU3BG,YAAYC,EAAsCC,EAAmB,CAT/C,KAAAC,MAAQ,mBAU5B,KAAKC,YAAcF,EAAMG,WAAW,oBAAoB,EACxD,KAAKC,qBAAuB,IAAML,EAAkBM,cAAa,EACjEC,OAAOC,iBAAiB,SAAU,KAAKH,oBAAoB,CAC7D,CAEAI,aAAW,CACTF,OAAOG,oBAAoB,SAAU,KAAKL,oBAAoB,CAChE,CAEAjB,eAAa,CACX,KAAKuB,SAASC,OAAM,CACtB,iDAtBWhB,GAAgBiB,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAAhBnB,EAAgBoB,UAAA,CAAA,CAAA,kBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,oGAAhBE,GAAAD,EAAAjB,KAAA,icCVbrB,EAAA,EAAA,wBAAA,CAAA,EAA6E,EAAA,cAAA,EAAA,CAAA,EAQzEwC,GAAA,CAAA,EACF/B,EAAA,EACAT,EAAA,EAAA,sBAAA,CAAA,EACEyC,EAAA,EAAAC,GAAA,EAAA,EAAA,SAAA,CAAA,EAMAF,GAAA,EAAA,CAAA,EACAC,EAAA,EAAAE,GAAA,EAAA,EAAA,MAAA,CAAA,EAGFlC,EAAA,EAAsB,SArB+BmC,EAAA,cAAA,EAAA,EAInDlC,EAAA,EAAAkC,EAAA,OAAAN,EAAAhB,YAAAuB,QAAA,OAAA,MAAA,EAA8C,SAAA,CAAAP,EAAAhB,YAAAuB,OAAA,EACf,UAAAC,GAAA,EAAAC,GAAAT,EAAAhB,YAAAuB,OAAA,CAAA,EAM/BnC,EAAA,CAAA,EAAAsC,EAAAV,EAAAhB,YAAAuB,QAAA,EAAA,EAAA,EAOAnC,EAAA,CAAA,EAAAsC,EAAAV,EAAAhB,YAAAuB,QAAA,EAAA,EAAA;yHDRS9B,CAAgB,GAAA,IEV7B,IASakC,GASAC,GAlBbC,GAAAC,EAAA,KACAC,IACAC,IAEAC,KACAC,KACAC,SAGaR,GAAiB,CAACS,CAAY,EAS9BR,IAAmB,IAAA,CAA1B,MAAOA,CAAmB,iDAAnBA,EAAmB,CAAA,gCAAnBA,CAAmB,CAAA,CAAA,oCAHpBD,GAAgBU,GAAkBC,GAAeC,GAAiBC,CAAe,CAAA,CAAA,CAAA,SAGhFZ,CAAmB,GAAA,IClBhC,IAAAa,GAAAC,EAAA,KAAAC,OCAA,IAAAC,GAAAC,EAAA,KACAC,OCDA,UAQaC,GARbC,GAAAC,EAAA,2GAQaF,IAAwB,IAAA,CAA/B,MAAOA,CAAwB,CANrCG,aAAA,CAOwB,KAAAC,MAAQ,kEADnBJ,EAAwB,CAAA,+BAAxBA,EAAwBK,UAAA,CAAA,CAAA,iBAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAxBE,GAAAD,EAAAL,KAAA,iICRbO,GAAA,CAAA,EAEAC,EAAA,EAAA,MAAA,CAAA,EACED,GAAA,EAAA,CAAA,EACFE,EAAA,EAEAF,GAAA,EAAA,CAAA;2HDEaX,CAAwB,GAAA,8BGJ7Bc,EAAA,EAAA,UAAA,EAAUC,EAAA,CAAA,EAAUC,EAAA,kBAAVC,EAAA,EAAAC,EAAAC,EAAAC,IAAA,4BAGVC,EAAA,EAAA,WAAA,CAAA,iBAAUC,EAAA,UAAAH,EAAAC,IAAA,GDPlB,aA4BaG,IA5BbC,GAAAC,EAAA,KAAAC,KACAC,kLA2BaJ,KAA0B,IAAA,CAAjC,MAAOA,CAA0B,CAzBvCK,aAAA,CA0BwB,KAAAC,MAAQ,qBAMU,KAAAC,MAAQ,GAGR,KAAAC,cAAgB,GAExD,KAAAC,QAAU,GAEV,IAAIC,QAAM,CACR,OAAO,KAAKD,OACd,CACA,IAAIC,OAAOC,EAAa,CACtB,KAAKF,QAAUE,CACjB,CAEAC,UAAQ,CACN,KAAKH,QAAU,KAAKD,aACtB,CAEAK,YAAU,CACR,KAAKH,OAAS,CAAC,KAAKA,MACtB,iDA3BWV,EAA0B,CAAA,+BAA1BA,EAA0Bc,UAAA,CAAA,CAAA,oBAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAA1BE,GAAAD,EAAAZ,KAAA,gDAOSc,EAAgB,EAAAZ,cAAA,CAAA,EAAA,gBAAA,gBAGhBY,EAAgB,CAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,mBAAAC,GAAAC,MAAA,GAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,CAAA,YAAA,GAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAAC,SAAA,SAAAZ,EAAAC,EAAA,CAAAD,EAAA,WCtCtC1B,EAAA,EAAA,MAAA,CAAA,EAAuE,EAAA,SAAA,CAAA,EACxBuC,EAAA,QAAA,UAAA,CAAA,OAASZ,EAAAL,WAAA,CAAY,CAAA,EAChEtB,EAAA,EAAA,MAAA,CAAA,EACEwC,EAAA,EAAAC,GAAA,EAAA,EAAA,UAAA,EAAsB,EAAAC,GAAA,EAAA,EAAA,WAAA,CAAA,EAMtB1C,EAAA,EAAA,MAAA,CAAA,EACE2C,GAAA,CAAA,EACFzC,EAAA,EACAyC,GAAA,EAAA,CAAA,EACFzC,EAAA,EAAM,EACC,EAEXF,EAAA,EAAA,MAAA,CAAA,EAAyG,EAAA,MAAA,CAAA,EAErG2C,GAAA,GAAA,CAAA,EACFzC,EAAA,EAAM,SAnB2BM,EAAA,UAAAoC,GAAA,EAAAC,GAAAlB,EAAAR,MAAA,CAAA,EAG7BhB,EAAA,CAAA,EAAA2C,EAAAnB,EAAArB,MAAA,CAAAqB,EAAAX,MAAA,EAAA,EAAA,EAGAb,EAAA,EAAA2C,EAAAnB,EAAArB,MAAAqB,EAAAX,MAAA,EAAA,EAAA,EAUqBb,EAAA,CAAA,EAAAK,EAAA,UAAAoC,GAAA,EAAAC,GAAAlB,EAAAR,MAAA,CAAA,EAAmC,aAAAQ,EAAAR,OAAA,OAAA,QAAA;oIDThD,CACV4B,GAAQ,YAAa,CACnBC,GACE,OACAC,GAAM,CACJC,OAAQ,IACRC,QAAS,EACV,CAAC,EAEJH,GACE,SACAC,GAAM,CACJC,OAAQ,MACRC,QAAS,EACV,CAAC,EAEJC,GAAW,SAAU,CAACC,GAAQ,MAAM,CAAC,CAAC,CAAC,CACxC,CAAC,CACH,CAAA,CAAA,CAAA,SAGU5C,CAA0B,GAAA,IE5BvC,IAMa6C,IANbC,GAAAC,EAAA,SAMaF,KAA+B,IAAA,CAAtC,MAAOA,CAA+B,CAJ5CG,aAAA,CAKwB,KAAAC,MAAQ,2EADnBJ,EAA+B,CAAA,gCAA/BA,EAA+BK,UAAA,CAAA,CAAA,0BAAA,EAAA,CAAA,GAAA,uBAAA,EAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAA/BE,GAAAD,EAAAL,KAAA,2BAAAJ,CAA+B,GAAA,ICN5C,IAMaW,GANbC,GAAAC,EAAA,SAMaF,IAA+B,IAAA,CAAtC,MAAOA,CAA+B,CAJ5CG,aAAA,CAKwB,KAAAC,MAAQ,0EADnBJ,EAA+B,CAAA,gCAA/BA,EAA+BK,UAAA,CAAA,CAAA,yBAAA,EAAA,CAAA,GAAA,uBAAA,EAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAA/BE,GAAAD,EAAAL,KAAA,2BAAAJ,CAA+B,GAAA,ICN5C,IA6BaW,GAyBAC,GAtDbC,GAAAC,EAAA,KAAAC,IAGAC,KACAC,KACAC,KACAC,QAuBaR,GAAiB,CAACS,EAAcC,GAAcC,GAAeC,GAAiBC,CAAe,EAyB7FZ,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,iDAArBA,EAAqB,CAAA,gCAArBA,CAAqB,CAAA,CAAA,oCAXvBD,EAAc,CAAA,CAAA,CAAA,SAWZC,CAAqB,GAAA,ICtDlC,IAAAa,GAAAC,EAAA,KAAAC,OCAA,IAAAC,GAAAC,EAAA,KACAC,OCDA,IAkCsBC,GAqDAC,GAvFtBC,GAAAC,EAAA,KAAAC,IACAC,KAYAC,KAMAC,KAesBP,GAAhB,KAAuC,CAA7CQ,aAAA,CACqB,KAAAC,qBAAuBC,EAAOC,EAAuB,EAGrD,KAAAC,OAASF,EAAOG,EAAiB,EACjC,KAAAC,iBAAmBJ,EAAOK,EAAgB,EAC1C,KAAAC,kBAAoBN,EAAOO,EAAiB,EAC5C,KAAAC,iBAAmBC,EAA+B,CAAA,CAAE,EACpD,KAAAC,aAAe,IAAIC,GAAwB,EAAE,EAC7C,KAAAC,SAAW,KAAKC,gBAAe,EAK/B,KAAAC,yBAA2BL,EAAO,EAAE,CAqCzD,CApCYM,aAAaC,EAAS,CAC9B,KAAKF,yBAAyBG,IAAID,CAAC,CACrC,CAEgBE,gBAAgBC,EAAoC,QAAAC,GAAA,sBAClE,IAAMC,EAAuB,KAAKb,iBAAgB,EAElDW,EACGG,OAAQC,GAAgB,CAACA,EAAYC,IAAI,EACzCC,QAASF,GAAe,CACvB,IAAMG,EAAWL,EAAqBM,KAAMC,GAASA,EAAKC,cAAgBN,EAAYM,WAAW,EACjGN,EAAYC,KAAOE,GAAUF,MAAQ,EACvC,CAAC,EAEH,IAAMM,EAAiBX,EACpBG,OAAQC,GAAgB,CAACA,EAAYC,IAAI,EACzCO,IAAKR,GAAgBA,EAAYM,WAAY,EAC5CC,EAAeE,OAAS,IACV,MAAM,KAAKC,aAAaH,EAAgB,KAAKhB,yBAAwB,CAAE,GAC/EW,QAASS,GAAU,CACzB,IAAMX,EAAcJ,EAAaQ,KAAMC,GAASA,EAAKC,cAAgBK,EAAOL,WAAW,EACnFN,IACFA,EAAaC,KAAOU,EAAOV,KAE/B,CAAC,EAEH,KAAKhB,iBAAiBS,IAAIE,CAAY,CACxC,GAEUgB,iBAAiBC,EAAoB,CACzC,OAAOA,GAAe,SACxB,KAAK1B,aAAa2B,KAAKD,EAAWE,KAAI,CAAE,EAExC,KAAK5B,aAAa2B,KAAK,EAAE,CAE7B,GAGoB9C,GAAhB,cAAsDD,EAAmC,CAC7E2C,aAAaM,EAAqBC,EAAsB,QAAApB,GAAA,sBAItE,OAHgB,MAAMqB,GACpB,KAAKrC,iBAAiBsC,eAAe,KAAKC,cAAeJ,EAAW,CAAA,EAAIC,CAAa,CAAC,IAG7EI,YAAYb,IAClBc,IACE,CACCrB,KAAM,KAAKzB,qBAAqB+C,qBAAqB,KAAKH,cAAeE,CAAG,EAC5EhB,YAAagB,EAAIhB,YACjBc,cAAe,KAAKA,eACI,GACzB,CAAA,CAET,GAEMI,2BAA2BC,EAAmBZ,EAAkB,QAAAhB,GAAA,sBACpE,IAAM6B,EAAiB,MAAM,KAAK3C,kBAAkB4C,0BAClD,KAAKP,cACLQ,OACAA,OACA,GACA,KAAKrC,yBAAwB,CAAE,EAEjC,MAAO,CACLkC,UAAAA,EACAI,OAAQ,CAAEhB,WAAAA,CAAU,EACpBiB,cAAe,CAAEC,OAAQ,GAAIC,SAAU,EAAE,EACzCC,UAAW,KAAKpD,iBAAiBqD,eAAeR,CAAc,EAElE,GAEUpC,iBAAe,CACvB,OAAO,KAAKH,aAAagD,aAAY,EAAGC,KACtCC,GAAa,GAAG,EAChBC,GAAoB,EACpBC,GAAe,KAAK5D,OAAO6D,UAAU,EACrCC,EAAU,CAAC,CAAC5B,EAAYY,CAAS,IAAMiB,GAAK,KAAKlB,2BAA2BC,EAAWZ,CAAU,CAAC,CAAC,EACnG4B,EAAWE,GACT,KAAK9D,iBAAiB+D,YAAY,KAAKxB,cAAeuB,EAAG,KAAKpD,yBAAwB,CAAE,CAAC,EAE3FiB,EACGqC,GACCA,GAAiBxB,YAAYb,IAC1BsC,IACE,CACC7C,KAAM,KAAKzB,qBAAqB+C,qBAAqB,KAAKH,cAAe0B,CAAM,EAC/EC,gBAAiB,KAAKvE,qBAAqBwE,mBAAmB,KAAK5B,cAAe0B,CAAM,EACxFxC,YAAawC,EAAOxC,YACpBc,cAAe,KAAKA,eACI,GACzB,CAAA,CAAE,CACV,CAEL,KC9IF,IAEM6B,GAMOC,GARbC,GAAAC,EAAA,SAEMH,GAAkB,GAMXC,IAAe,IAAA,CAAtB,MAAOA,CAAe,CAC1BG,UAAUC,EAAeC,EAAmBC,EAAsB,CAChE,IAAMC,EAAMF,GAAYN,GACxB,OAAKK,EAGDA,EAAKI,QAAUD,EACVH,EAGLE,EACKF,EAAKK,MAAM,EAAGF,CAAG,EAEnBH,EAAKK,MAAM,EAAGF,CAAG,EAAI,MATnB,EAUX,iDAdWP,EAAe,CAAA,oDAAfA,EAAeU,KAAA,EAAA,CAAA,CAAA,SAAfV,CAAe,GAAA,uCEOpBW,GAAA,CAAA,EACAC,EAAA,EAAA,gBAAA,CAAA,EAEEC,EAAA,QAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,gBAAAP,EAAAQ,WAAgC,GAAKR,EAAAS,aAAA,CAAoB,CAAA,CAAA,EAElEX,EAAA,EAAA,MAAA,EAAA,EAAoDY,EAAA,CAAA,EAAcC,EAAA,EAClEb,EAAA,EAAA,yBAAA,EAAyB,EAAA,aAAA,EAAA,EAErBY,EAAA,CAAA,EACFC,EAAA,EAAa,EACW,qCAVVP,EAAAQ,cAAAZ,EAAAQ,WAAAR,EAAAS,aAAA,EAAgD,EAEhEI,EAAA,EAAAC,GAAA,WAAAC,CAAA,EAGsBF,EAAA,EAAAC,GAAA,WAAAC,CAAA,EAA8BF,EAAA,EAAAG,EAAAhB,EAAAiB,IAAA,EAEpBJ,EAAA,CAAA,EAAAC,GAAA,WAAAC,CAAA,EAA8BG,EAAA,OAAA,OAAA,EAC1DL,EAAA,EAAAM,EAAA,IAAAf,EAAAgB,0BAAApB,EAAAQ,WAAAR,EAAAS,aAAA,EAAA,EAAA,GAAA,sCArBVX,EAAA,EAAA,iBAAA,EAAiB,EAAA,gBAAA,CAAA,EAGbC,EAAA,QAAA,UAAA,CAAAE,EAAAoB,CAAA,EAAA,IAAAjB,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,gBAAgBH,EAAAI,WAAA,EAAc,GAAMJ,EAAAK,cAAA,CAAe,CAAC,CAAA,CAAA,EAE7DX,EAAA,EAAA,MAAA,EAAA,EAA2DY,EAAA,CAAA,mBAAoCC,EAAA,EAC/Fb,EAAA,EAAA,yBAAA,EAAyB,EAAA,aAAA,EAAA,EAErBY,EAAA,CAAA,EACFC,EAAA,EAAa,EACW,EAE5BW,GAAA,EAAAC,GAAA,EAAA,EAAA,gBAAA,GAAAC,EAAA,gBAcFb,EAAA,oBAxBIE,EAAA,EAAAC,GAAA,WAAAV,EAAAqB,gBAAA,CAAA,EAGsBZ,EAAA,EAAAC,GAAA,WAAAV,EAAAqB,gBAAA,CAAA,EAAqCZ,EAAA,EAAAG,EAAAU,EAAA,EAAA,EAAA,kBAAA,CAAA,EAE3Bb,EAAA,CAAA,EAAAC,GAAA,WAAAV,EAAAqB,gBAAA,CAAA,EAAqCP,EAAA,OAAA,OAAA,EACjEL,EAAA,EAAAM,EAAA,IAAAf,EAAAuB,kBAAA,EAAA,GAAA,EAINd,EAAA,EAAAe,GAAAF,EAAA,GAAA,GAAAtB,EAAAyB,gBAAA,CAAA,sCA8BQ/B,EAAA,EAAA,SAAA,EAAA,EAAsBC,EAAA,QAAA,UAAA,CAAA,IAAA+B,EAAA7B,EAAA8B,CAAA,EAAA5B,UAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,gBAAAuB,EAAAtB,WAAgC,GAAKsB,EAAArB,aAAA,CAAoB,CAAA,CAAA,EACtFC,EAAA,CAAA,EACFC,EAAA,4BADEE,EAAA,EAAAM,EAAA,IAAAW,EAAAb,KAAA,GAAA,sCAZRnB,EAAA,EAAA,MAAA,EAAA,EAAqCY,EAAA,CAAA,mBAA8CC,EAAA,EACnFb,EAAA,EAAA,MAAA,EAAA,EAAqB,EAAA,SAAA,EAAA,EAEjBY,EAAA,CAAA,eACAZ,EAAA,EAAA,WAAA,EAAA,EAA0BY,EAAA,EAAA,iBAAA,EAAeC,EAAA,EAAW,EAEtDb,EAAA,EAAA,WAAA,KAAA,CAAA,EAA6B,GAAA,SAAA,EAAA,EACLC,EAAA,QAAA,UAAA,CAAAE,EAAA+B,CAAA,EAAA,IAAA5B,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,gBAAgBH,EAAAI,WAAA,EAAc,GAAMJ,EAAAK,cAAA,CAAe,CAAC,CAAA,CAAA,EACjFC,EAAA,EAAA,oBACFC,EAAA,EACAW,GAAA,GAAAW,GAAA,EAAA,EAAA,SAAA,GAAAT,EAAA,gBAKFb,EAAA,EAAW,EAEbuB,EAAA,GAAA,aAAA,4BAjBqCrB,EAAA,EAAAG,EAAAU,EAAA,EAAA,EAAA,4BAAA,CAAA,EAEkBb,EAAA,CAAA,EAAAK,EAAA,oBAAAiB,CAAA,EACnDtB,EAAA,EAAAM,EAAA,IAAAO,EAAA,EAAA,EAAAtB,EAAAgC,kBAAA,CAAA,EAAA,GAAA,EAKEvB,EAAA,CAAA,EAAAM,EAAA,IAAAO,EAAA,GAAA,EAAA,kBAAA,EAAA,GAAA,EAEFb,EAAA,CAAA,EAAAe,GAAAF,EAAA,GAAA,GAAAtB,EAAAyB,gBAAA,CAAA,sCAqBMhC,GAAA,CAAA,EACAC,EAAA,EAAA,MAAA,EAAA,EACEC,EAAA,aAAA,UAAA,CAAAE,EAAAoC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAAC,EAAAC,GAAA,CAAA,EAAA,OAAAnC,EAAAkC,GAAwBF,EAAAI,KAAA,CAA6B,CAAA,CAAA,EAAC,aAAA,UAAA,CAAAzC,EAAAoC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAjC,EACxCgC,EAAAK,MAAA,CAA8B,CAAA,CAAA,EAE5C7C,EAAA,EAAA,eAAA,EAAA,EAIEC,EAAA,SAAA,SAAA6C,EAAA,CAAA,IAAAC,EAAA5C,EAAAoC,CAAA,EAAAlC,UAAA2C,EAAAzC,EAAA,CAAA,EAAAF,UAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAUF,EAAA2C,iBAAAH,EAAAC,EAAAC,EAAAtC,UAAA,CAAuD,CAAA,CAAA,EAEjEE,EAAA,CAAA,EACFC,EAAA,EAAe,EAEjBb,EAAA,EAAA,eAAA,KAAA,CAAA,EAAsC,EAAA,KAAA,EAC/BY,EAAA,CAAA,mBAAsDC,EAAA,EAAM,6DAfnEqC,GAAc5C,EAAA6C,kBAAAJ,CAAA,CAA8B,EAMxChC,EAAA,CAAA,EAAAK,EAAA,UAAAd,EAAA8C,sBAAAL,EAAAC,EAAAtC,UAAA,CAAA,EAAgE,WAAA2C,CAAA,EAC7C,cAAAb,CAAA,EAInBzB,EAAA,EAAAM,EAAA,IAAA0B,EAAA5B,KAAA,GAAA,EAIGJ,EAAA,CAAA,EAAAG,EAAAU,EAAA,EAAA,EAAA,oCAAA,CAAA,6BApBX5B,EAAA,EAAA,kBAAA,EAAA,EAA2C,EAAA,MAAA,EAAA,EACR,EAAA,YAAA,EACnBY,EAAA,CAAA,EAAgBC,EAAA,EAAa,EAE3CW,GAAA,EAAA8B,GAAA,EAAA,EAAA,KAAA,KAAAC,EAAA,EAmBF1C,EAAA,4BArBgBE,EAAA,CAAA,EAAAG,EAAA8B,EAAA7B,IAAA,EAEdJ,EAAA,EAAAe,GAAAkB,EAAAQ,YAAA,4BALJC,EAAA,EAAAC,GAAA,EAAA,EAAA,kBAAA,EAAA,yBAAAC,GAAAX,EAAAQ,cAAA,KAAA,KAAAR,EAAAQ,aAAAI,QAAA,EAAA,EAAA,EAAA,6BADFpC,GAAA,EAAAqC,GAAA,EAAA,EAAA,KAAA,KAAAnC,EAAA,gCAAAI,GAAAF,EAAA,EAAA,EAAAtB,EAAAwD,2BAAA,CAAA,yBA6BA1B,EAAA,EAAA,sBAAA,4BA9BFqB,EAAA,EAAAM,GAAA,EAAA,CAAA,eA6BEN,EAAA,EAAAO,GAAA,EAAA,EAAA,sBAAA,kBA7BFL,EAAA/B,EAAA,EAAA,EAAAtB,EAAA2D,sBAAA,IAAA,GAAA,EAAA,CAAA,sCAoCMlE,GAAA,CAAA,EACAC,EAAA,EAAA,MAAA,EAAA,EAAKC,EAAA,aAAA,UAAA,CAAAE,EAAA+D,CAAA,EAAA,IAAAC,EAAA1B,EAAA,CAAA,EAAA2B,EAAAzB,GAAA,CAAA,EAAA,OAAAnC,EAAA4D,GAAwBD,EAAAvB,KAAA,CAA6B,CAAA,CAAA,EAAC,aAAA,UAAA,CAAAzC,EAAA+D,CAAA,EAAA,IAAAC,EAAA1B,EAAA,CAAA,EAAA,OAAAjC,EAAe2D,EAAAtB,MAAA,CAA8B,CAAA,CAAA,EACtG7C,EAAA,EAAA,eAAA,EAAA,EAIEC,EAAA,SAAA,SAAA6C,EAAA,CAAA,IAAAuB,EAAAlE,EAAA+D,CAAA,EAAA7D,UAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAUF,EAAA2C,iBAAAH,EAAAuB,EAAiC/D,EAAAI,WAAA,CAAY,CAAC,CAAA,CAAA,EAExDE,EAAA,CAAA,EACFC,EAAA,EAAe,EAEjBb,EAAA,EAAA,eAAA,KAAA,CAAA,EAAsC,EAAA,KAAA,EAC/BY,EAAA,CAAA,mBAAsDC,EAAA,EAAM,4CAZnEqC,GAAc5C,EAAA6C,kBAAAkB,CAAA,CAAyB,EAGnCtD,EAAA,CAAA,EAAAK,EAAA,UAAAd,EAAA8C,sBAAAiB,EAAA/D,EAAAI,WAAA,CAAA,CAAA,EAAuD,WAAA4D,CAAA,EACpC,cAAAH,CAAA,EAInBpD,EAAA,EAAAM,EAAA,IAAAgD,EAAAlD,KAAA,GAAA,EAIGJ,EAAA,CAAA,EAAAG,EAAAU,EAAA,EAAA,EAAA,oCAAA,CAAA,6BAdX5B,EAAA,EAAA,iBAAA,EACEwB,GAAA,EAAA+C,GAAA,EAAA,EAAA,KAAA,KAAAhB,EAAA,EAgBF1C,EAAA,mBAhBEE,EAAA,EAAAe,GAAAxB,EAAAkE,QAAA,CAAS,yBAkBXpC,EAAA,EAAA,sBAAA,2BApBFqB,EAAA,EAAAgB,GAAA,EAAA,EAAA,iBAAA,EAAyB,EAAAC,GAAA,EAAA,EAAA,sBAAA,iBAAzBf,EAAArD,EAAAqE,iBAAA,EAAA,CAAA,GDzFR,OAmFaC,GAnFbC,GAAAC,EAAA,KAAAC,IAWAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,IACAC,KAEAC,KAEAC,KACAC,IACAC,KAEAC,KACAC,KACAC,gHA+CaxB,IAAgC,IAAA,CAAvC,MAAOA,CAAgC,CA4B3CyB,YACkCC,EACYC,EACpCC,EACSC,EACAC,EACAC,EAAkC,CALnB,KAAAL,KAAAA,EACY,KAAAC,OAAAA,EACpC,KAAAC,UAAAA,EACS,KAAAC,wBAAAA,EACA,KAAAC,6BAAAA,EACA,KAAAC,iBAAAA,EA/BT,KAAAhF,gBAAkBiF,EAAO,EAAI,EAE7B,KAAAC,WAAa,IAAIC,GAAY,EAAE,EACjC,KAAAC,aAAe,IAAIC,GAA+B,IAAI,EACpD,KAAArC,iBAAmB,GACrB,KAAAsC,sBAAwB,GAGtB,KAAApF,kBAAoCqF,EAAS,IAC9C,KAAKC,sBAAqB,EAAGC,OAAO,CAACC,EAAOC,IAAUD,GAASC,EAAM9D,cAAcI,QAAU,GAAI,CAAC,CAC1G,EACS,KAAA7B,iBAAmDwF,EAAG,CAAA,CAAE,EAC1D,KAAAC,iCAA4E,IAAIR,GAEtF,CAAA,CAAE,EACM,KAAAlD,4BAA8DyD,EAAG,CAAA,CAAE,EAkB3E,KAAKE,SAAWnB,EAAKmB,SACrB,KAAK/G,WAAakG,EAAON,EAAKoB,iBAAiB,EAC/C,KAAK/G,cAAgBiG,EAAON,EAAKqB,oBAAoB,EACrD,KAAKR,sBAAwBP,EAAON,EAAKa,qBAAqB,EAC9D,KAAK3C,QAAU8B,EAAK9B,QACpB,KAAKoD,kBAAoBtB,EAAKsB,kBAC9B,KAAKC,8BAAgCvB,EAAKuB,8BAC1C,KAAKC,6BAA+BxB,EAAKwB,6BACzC,KAAKC,kBAAoBzB,EAAKyB,kBAE9B,KAAKtH,gBAAgB,KAAKC,WAAU,EAAI,GAAM,KAAKC,cAAa,CAAE,EAClE,KAAKqH,iBAAiB,IAAI,EAE1B,KAAKnB,WAAWoB,aACbC,KAAKC,GAAkB,CAAE,EACzBC,UAAWC,GAA8B,KAAKL,iBAAiBK,CAAU,CAAC,EAE7E,KAAKtG,iBAAmB,KAAKuG,mBAAkB,EAE/C,KAAKxE,4BAA8ByE,EAAc,CAC/C,KAAKf,iCACL,KAAKzF,iBACL,KAAKgF,YAAY,CAClB,EAAEmB,KACDM,GAAI,IAAO,KAAKvB,sBAAwB,EAAK,EAC7CwB,EACE,CAAC,CAACC,EAAgCC,EAAiBN,CAAU,IAIxD,CACH,IAAMO,EAAgC,KAAKC,4BACzCH,EACAL,CAAU,EAEZ,OAAOM,EAAgBF,IAAKK,GAAkB,CAC5C,IAAItF,EACFoF,EAA8BG,KAAMzB,GAC3BA,EAAM0B,OAASF,EAAepI,UACtC,GAAG8C,cAAgB,CAAA,EACtB,OAAIsF,EAAepI,aAAe,iBAChC8C,EAAeA,EAAayF,OAAQC,GAC3BA,EAAYC,mBAAqBL,EAAenI,aACxD,GAEIyI,GAAAC,GAAA,GACFP,GADE,CAELtF,aAAAA,GAEJ,CAAC,CACH,CAAC,EAEHgF,GAAI,IAAO,KAAKvB,sBAAwB,EAAM,EAC9CqC,GAAW,CAAE,EAGf,KAAKrF,uBAAyB,KAAKH,4BAA4BoE,KAAKO,EAAI,IAAM,KAAKxB,qBAAqB,CAAC,EAEzGsC,GAAO,IAAK,CACV,KAAK/E,QAAO,EACZ,KAAKG,iBAAmB,EAC1B,CAAC,CACH,CAEQkE,4BACNH,EACAL,EAAyB,CAEzB,OAAOK,EAA+BD,IAAKnB,GAClC8B,GAAAC,GAAA,GACF/B,GADE,CAEL9D,aAAc8D,EAAM9D,aAAayF,OAAQC,GAErC,CAACb,GAAc,CAACa,EAAY/H,MAAQ+H,EAAY/H,KAAKqI,YAAW,EAAGC,SAASpB,EAAWmB,YAAW,EAAGE,KAAI,CAAE,CAE9G,GAEJ,CACH,CAEUzG,iBAAiB0G,EAA0BC,EAA8BlJ,EAAsB,CACnGiJ,EAAME,QACR,KAAKC,qBAAqBF,EAAQlJ,CAAU,EAE5C,KAAKqJ,wBAAwBH,EAAQlJ,CAAU,CAEnD,CAEQoJ,qBAAqBZ,EAAmCxI,EAAsB,CAChF,CAACwI,EAAYc,eAAiB,CAACd,EAAYe,aAG/C,KAAK9C,sBAAsB+C,OAAQ/C,GACjCA,EAAsBsB,IAAKnB,GACrBA,EAAM0B,OAAStI,GACb,CAAC4G,EAAM9D,aAAauF,KAAMoB,GAAMA,EAAEF,cAAgBf,EAAYe,WAAW,EACpEb,GAAAC,GAAA,GAAK/B,GAAL,CAAY9D,aAAc,CAAC,GAAG8D,EAAM9D,aAAc0F,CAAW,CAAC,GAGlE5B,CACR,CAAC,CAEN,CAEQyC,wBAAwBb,EAAmCxI,EAAsB,CACnF,CAACwI,EAAYc,eAAiB,CAACd,EAAYe,aAG/C,KAAK9C,sBAAsB+C,OAAQ/C,GACjCA,EAAsBsB,IAAKnB,GAA+B,CACxD,GAAIA,EAAM0B,OAAStI,EAAY,CAC7B,IAAM0J,EAAsB9C,EAAM9D,aAAayF,OAAQkB,GAAMA,EAAEF,cAAgBf,EAAYe,WAAW,EACtG,OAAOb,GAAAC,GAAA,GAAK/B,GAAL,CAAY9D,aAAc4G,CAAmB,EACtD,CACA,OAAO9C,CACT,CAAC,CAAC,CAEN,CAEUnE,kBAAkB+F,EAAiC,CAC3D,OAAI,KAAKrH,kBAAiB,EAAK,EACtB,GAEF,CAAC,CAAC,KAAKsF,sBAAqB,EAAG4B,KAAMzB,GACtCA,EAAM0B,OAASE,EAAYc,cACtB1C,EAAM9D,aAAauF,KAAMoB,GAAMA,EAAEF,cAAgBf,EAAYe,WAAW,EAE1E,EACR,CACH,CAEUxJ,gBAAgBC,EAAwB2J,EAA6B1J,EAAsB,CACnG,KAAKgB,gBAAgB2I,IAAID,CAAkB,EACvCA,IACF,KAAKpD,sBAAwB,GAC7B,KAAKO,iCAAiC+C,KAAKC,KAAKC,MAAMD,KAAKE,UAAU,KAAKvD,sBAAqB,CAAE,CAAC,CAAC,IAEjGzG,IAAe,KAAKA,WAAU,GAAMC,IAAkB,KAAKA,cAAa,KAC1E,KAAKgE,iBAAmB,GACxB,KAAKjE,WAAW4J,IAAI5J,CAAU,EAC9B,KAAKC,cAAc2J,IAAI3J,CAAa,EACpC,KAAKoH,kBAAkB4C,KAAK,CAAC,KAAKjK,WAAU,EAAI,KAAKC,cAAa,CAAE,CAAC,EAEzE,CAEQ2H,oBAAkB,CACxB,IAAMK,EAAsC,CAAA,EACxCiC,EAA2D,KAE/D,QAAW1B,KAAe,KAAK/B,sBAAqB,EAC9C+B,EAAYF,OAAS,eACvB4B,EAAoB,KAAKC,qBAAoB,EAAG3C,KAC9CO,EAAKqC,GACEA,EAASC,kBAGPD,EAASC,kBAAkBtC,IAAKuC,IAC9B,CACL7J,KAAM,KAAKwF,iBAAiBsE,QAAQ,sBAAuB,CACzDC,mBAAoBF,EAAiBE,mBACtC,EACDxK,WAAYwI,EAAYF,KACxBrI,cAAeqK,EAAiBG,oBAEnC,EAVQ,CAAA,CAWV,CAAC,EAGJxC,EAAgByC,KAAK,CACnBjK,KAAM,KAAKuF,6BAA6B2E,wBAAwBnC,EAAYF,IAAI,EAChFtI,WAAYwI,EAAYF,KACL,EAIzB,OAAI4B,EACKA,EAAkB1C,KACvBoD,GAAK,CAAC,EACN7C,EAAK8C,GACI,CAAC,GAAG5C,EAAiB,GAAG4C,CAAgB,CAChD,EACDjC,GAAY,CAAC,CAAC,EAGT/B,EAAGoB,CAAe,EAAET,KAAKoD,GAAK,CAAC,EAAGhC,GAAY,CAAC,CAAC,CAE3D,CAEAhH,mBAAiB,CACf,OAAO,KAAKP,iBAAiBmG,KAC3BsD,GAAoB,EACpB/C,EAAKE,GACC,KAAKhH,gBAAe,EACf,KAAKgF,iBAAiBsE,QAAQ,kBAAkB,EAEtCtC,EAAgBI,KAChC0C,GAAQA,EAAI/K,aAAe,KAAKA,WAAU,GAAM+K,EAAI9K,gBAAkB,KAAKA,cAAa,CAAE,GAE1EQ,MAAQ,EAC5B,EACDmI,GAAY,CAAC,CAAC,CAElB,CAEQuB,sBAAoB,CAC1B,OAAO,KAAKtE,OAAOmF,WAAWxD,KAC5BoD,GAAK,CAAC,EACNK,EAAWC,GACF,KAAKnF,wBAAwBoF,sBAAsB,CACxDD,UAAWA,EAC6B,CAC3C,EACDtC,GAAY,CAAC,CAAC,CAElB,CAEUhI,0BAA0BZ,EAAwBC,EAAsB,CAChF,OAAOuG,EAAS,IAAK,CACnB,IAAM1D,EACJ,KAAK2D,sBAAqB,EAAG4B,KAAMzB,GAC1BA,EAAM0B,OAAStI,CACvB,GAAG8C,cAAgB,CAAA,EACtB,OAAI9C,IAAe,eACV8C,EAAayF,OAAQC,GACnBA,EAAYC,mBAAqBxI,CACzC,EAAEiD,OAEEJ,EAAaI,MACtB,CAAC,CACH,CAEQoE,iBAAiBK,EAAyB,CAChD,KAAKtB,aAAawD,KAAKlC,CAAU,EACjC,KAAKP,6BAA6B6C,KAAKtC,CAAU,CACnD,CAEUjF,sBAAsB8F,EAAmCxI,EAAsB,CACvF,OAAO,KAAKyG,sBAAqB,EAAG2E,KACjCxE,GAAUA,EAAM0B,OAAStI,GAAc4G,EAAM9D,aAAasI,KAAM3B,GAAMA,EAAEF,cAAgBf,EAAYe,WAAW,CAAC,CAErH,CAEUnJ,cAAcJ,EAAwBC,EAAsB,CACpE,OAAOuG,EACL,IAAM,CAAC,KAAKvF,gBAAe,GAAM,KAAKjB,WAAU,IAAOA,GAAc,KAAKC,cAAa,IAAOA,CAAa,CAE/G,CAEUoL,YAAU,CAClB,KAAKnE,kBAAkB,CACrBT,sBAAuB,KAAKA,sBAAqB,EACjD6E,mBAAoB,KAAKnE,8BACU,EACrC,KAAKrB,UAAU3D,MAAK,CACtB,CAEUoJ,cAAY,CACpB,KAAKzF,UAAU3D,MAAK,CACtB,iDAtSW+B,GAAgCsH,EA6BjCC,EAAe,EAAAD,EACfE,EAAiB,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,CAAA,CAAA,CAAA,+BA9BhB5H,EAAgC6H,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,UAAA,SAAA,EAAA,CAAA,yBAAA,EAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,aAAA,QAAA,EAAA,CAAA,OAAA,OAAA,WAAA,GAAA,EAAA,cAAA,aAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,aAAA,YAAA,EAAA,CAAA,EAAA,SAAA,UAAA,WAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICnF7C9M,EAAA,EAAA,MAAA,CAAA,EACEyD,EAAA,EAAAuJ,GAAA,GAAA,GAAA,iBAAA,EA6BAhN,EAAA,EAAA,mBAAA,EAAmB,EAAA,MAAA,CAAA,EAEfyD,EAAA,EAAAwJ,GAAA,GAAA,EAAA,EAoBAjN,EAAA,EAAA,kBAAA,CAAA,EACEoC,EAAA,EAAA,QAAA,CAAA,mBACFvB,EAAA,EACA4C,EAAA,EAAAyJ,GAAA,EAAA,CAAA,EAAyB,EAAAC,GAAA,EAAA,CAAA,EAyD3BtM,EAAA,EACAb,EAAA,GAAA,qBAAA,CAAA,EAA2C,GAAA,SAAA,CAAA,EACdC,EAAA,QAAA,UAAA,CAAA,OAAS8M,EAAAd,aAAA,CAAc,CAAA,EAChDrL,EAAA,EAAA,oBACFC,EAAA,EACAb,EAAA,GAAA,SAAA,CAAA,EAAwCC,EAAA,QAAA,UAAA,CAAA,OAAS8M,EAAAhB,WAAA,CAAY,CAAA,EAC3DnL,EAAA,EAAA,oBACFC,EAAA,EAAS,EACU,EACH,SAxHpBE,EAAA,EAAA4C,EAAAoJ,EAAAtF,SAAA,EAAA,GAAA,CAAA,EA+BI1G,EAAA,CAAA,EAAA4C,EAAAoJ,EAAAtF,SAAA,EAAA,EAAA,EAAA,EAqBqB1G,EAAA,CAAA,EAAAK,EAAA,cAAAQ,EAAA,EAAA,EAAA,gBAAA,CAAA,EAA4C,cAAAmL,EAAAlG,UAAA,EAEjE9F,EAAA,CAAA,EAAA4C,EAAAoJ,EAAApL,gBAAA,EAAA,EAAA,CAAA,EA4DEZ,EAAA,CAAA,EAAAM,EAAA,IAAAO,EAAA,GAAA,EAAA,gBAAA,EAAA,GAAA,EAGAb,EAAA,CAAA,EAAAM,EAAA,IAAAO,EAAA,GAAA,GAAA,cAAA,EAAA,GAAA,kBDvDJwL,GAAgBC,GAChBC,GACAC,GACAC,GAAqBC,GAAAC,GACrBC,GAAiBC,GACjBC,GAAWC,GAAAC,GACXC,GAAqBC,GAAAC,GACrBC,GAAmBC,GACnBC,GACAC,GACAC,GACAC,EAAeC,EACfC,GAA0BC,GAC1BC,GACAC,GAAmBC,GAAAC,GACnBC,GAAaC,GAAAC,GAAAC,GACbC,GACAC,GAAaC,EAAA,EAAAC,OAAA,CAAA;2HAAA,CAAA,CAAA,CAAA,SAGJ3K,CAAgC,GAAA,8BGzEnC4K,EAAA,EAAA,SAAA,CAAA,EAAuE,EAAA,UAAA,EAC3DC,EAAA,EAAA,QAAA,EAAMC,EAAA,EAAW,mGARjCF,EAAA,EAAA,eAAA,CAAA,EACEG,EAAA,UAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,UAAAC,EAAAF,EAAA,EAAA,OAAAG,EAAWD,EAAAE,mBAAAL,CAAA,CAA+B,CAAA,CAAA,EAAC,YAAA,SAAAM,EAAA,CAAAC,OAAAT,EAAAC,CAAA,EAAAK,EAC9BE,EAAAE,eAAA,CAAuB,CAAA,CAAA,EAGpCb,EAAA,CAAA,qBACAc,EAAA,EAAAC,GAAA,EAAA,EAAA,SAAA,CAAA,EAKFd,EAAA,oCAREe,GAAA,aAAAX,EAAAY,IAAA,EAEAC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAf,EAAAY,IAAA,EAAA,GAAA,EACAC,EAAA,CAAA,EAAAG,EAAAhB,EAAAiB,cAAAd,EAAAe,QAAA,EAAA,EAAA,4BAPJT,EAAA,EAAAU,GAAA,EAAA,EAAA,eAAA,CAAA,4BAAAH,EAAAI,IAAA,GAAAjB,EAAAkB,oBAAA,EAAA,EAAA,6BAgBA3B,EAAA,EAAA,UAAA,EACEC,EAAA,CAAA,EAEFC,EAAA,kBAFEiB,EAAA,EAAAC,EAAA,IAAAX,EAAAmB,qBAAA,EAAAC,OAAA,EAAA,QAAA,sCAMF7B,EAAA,EAAA,QAAA,EAAA,EAIEG,EAAA,QAAA,UAAA,CAAAC,EAAA0B,CAAA,EAAA,IAAArB,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAsB,yBAAA,CAA0B,CAAA,CAAA,EAJrC7B,EAAA,2BACE8B,EAAA,cAAAvB,EAAAwB,WAAA,EAA2B,kBAAAC,CAAA,sCAM7BlC,EAAA,EAAA,QAAA,EAAA,EAMEG,EAAA,QAAA,UAAA,CAAAC,EAAA+B,CAAA,EAAA,IAAA1B,EAAAF,EAAA,EAAA,OAAAG,EAAAD,EAAAkB,oBAA+B,EAAI,CAAA,CAAA,EAAC,OAAA,UAAA,CAAAvB,EAAA+B,CAAA,EAAA,IAAA1B,EAAAF,EAAA,EAAA,OAAAG,EAAAD,EAAAkB,oBACN,EAAK,CAAA,CAAA,EAPrCzB,EAAA,kCACE8B,EAAA,cAAAvB,EAAAwB,WAAA,EAA2B,kBAAAC,CAAA,EACQ,kBAAAE,CAAA,EACX,gCAAA3B,EAAA4B,iBAAA,EAC2B,cAAA5B,EAAA6B,UAAA,6BASrDtC,EAAA,EAAA,aAAA,CAAA,EAA6B,EAAA,OAAA,EAAA,EACRC,EAAA,CAAA,EAAiBC,EAAA,EACpCF,EAAA,EAAA,OAAA,EAAA,EAA+BC,EAAA,CAAA,EAA4BC,EAAA,EAAO,0BAFxD8B,EAAA,QAAAO,CAAA,EACSpB,EAAA,CAAA,EAAAqB,EAAAD,EAAArB,IAAA,EACYC,EAAA,CAAA,EAAAqB,EAAAD,EAAAE,eAAA,GD/CrC,OAsCaC,GAtCbC,GAAAC,EAAA,KACAC,KACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAGAC,KAKAC,oEAkBahB,IAAgC,IAAA,CAAvC,MAAOA,CAAgC,CAI3C,IAAaiB,aAAaC,EAAuC,CAC/D,KAAKC,cAAcC,IAAIF,CAAe,CACxC,CACA,IAAID,cAAY,CACd,OAAO,KAAKE,cAAa,CAC3B,CAGA,IAAaE,sBAAsBC,EAAgD,CACjF,KAAKC,uBAAuBC,OAAO,IAAMF,CAAwB,CACnE,CACA,IAAID,uBAAqB,CACvB,OAAO,KAAKE,uBAAsB,CACpC,CAoCAE,YAA6BC,EAAiB,CAAjB,KAAAA,OAAAA,EApD7B,KAAAC,yBAA2BC,GAAe,EAAK,EAEvC,KAAAT,cAAgBU,EAA+B,CAAA,CAAE,EAQ/C,KAAAN,uBAAyBM,EAA+B,CAAA,CAAE,EAQpE,KAAA3C,qBAAuB4C,EAAS,IAAK,CACnC,IAAMC,EAAa,KAAKR,uBAAsB,EAC9C,GAAI,KAAKI,yBAAwB,EAAI,CACnC,IAAMK,EAAgC,CAAA,EACtC,QAAWC,KAAwBF,EAAY,CAC7C,IAAMG,EACJD,EAAqBhB,cAAckB,OAAQC,GAAgBA,GAAa5D,OAAS,EAAE,GAAK,CAAA,EAC1FwD,EAA8BK,KAAK,GAAGH,CAAgC,CACxE,CACA,OAAOF,CACT,KACE,QAAO,KAAKb,cAAa,EAAGgB,OAAQC,GAAgBA,GAAa5D,OAAS,EAAE,CAEhF,CAAC,EAEQ,KAAAM,QAAyB,KACW,KAAAwD,OAAyB,KAC7D,KAAA/C,YAAc,GACd,KAAAgD,4BAA0C,UAEnD,KAAAC,QAAUZ,GAA8B,CAAA,CAAE,EAC1C,KAAAa,SAAWb,GAAe,EAAK,EAErB,KAAAc,IAAM,IAAIC,GACV,KAAAC,OAAS,IAAID,GACb,KAAAnB,OAAS,IAAImB,GACb,KAAAE,iBAAmB,IAAIF,GACvB,KAAAG,WAAa,IAAIH,GAEjB,KAAA1D,oBAAsB,GACb,KAAAU,kBAA8B,CAACoD,GAAOC,GAAK,EAE9D,KAAApD,WAAa,IAAIqD,GAAoB,EAAE,EAGrC,KAAKrD,WAAWsD,aACbC,KAAKC,GAAkB,CAAE,EACzBC,UAAWC,GAAe,KAAKT,iBAAiBU,KAAKD,CAAU,CAAC,CACrE,CAEUrF,mBAAmBuF,EAA4B,CACnD,KAAK7B,yBAAwB,EAC/B,KAAK8B,2CAA2CD,CAAM,EAEtD,KAAKE,kBAAkBF,CAAM,CAEjC,CAEUG,mBAAmBC,EAAmC,CACzDA,EAAMJ,OAAOK,QAGlB,KAAKC,eAAeF,EAAMJ,OAAOK,KAAK,EACtC,KAAKjE,WAAWmE,SAAS,EAAE,EAC7B,CAEQL,kBAAkBtB,EAAiC,CACrDA,EAAYvD,cAAgB,KAAKC,SACnC,KAAK8D,OAAOW,KAAKnB,CAAW,CAEhC,CAEQqB,2CAA2CD,EAA4B,CAC7E,KAAKZ,OAAOW,KAAKC,CAAM,CACzB,CAEQM,eAAe1B,EAAiC,CAClD,CAACA,EAAY4B,eAAiB,CAAC5B,EAAYvD,aAG1C,KAAKoC,aAAagD,KAAMC,GAAMA,EAAErF,cAAgBuD,EAAYvD,WAAW,GAC1E,KAAK6D,IAAIa,KAAKnB,CAAW,CAE7B,CAEQ+B,4BAA4BC,EAAmD,CACrFA,EAAkBC,mBAAmBd,KAAKa,EAAkB/C,qBAAqB,CACnF,CAEUhC,0BAAwB,CAChC,KAAKqC,OACF4C,KAAKC,GAAkC,CACtCC,MAAO,QACPC,OAAQ,QACRC,UAAW,GACXC,KAAM,CACJlC,SAAU,KAAKA,SACfmC,kBAAmB,KAAKrC,4BACxBsC,qBAAsB,KAAKC,+BAC3BzD,sBAAuB,KAAKE,uBAAsB,EAClDiB,QAAS,KAAKA,QACduC,kBAAmB,KAAKZ,4BACxBa,8BAA+B,KAAKxD,OACpCyD,6BAA8B,KAAKpC,iBACnCqC,kBAAmB,KAAKpC,YAE3B,EACAqC,YAAW,EACXhC,KAAKiC,GAAK,CAAC,CAAC,EACZ/B,UAAS,CACd,iDAvHWrD,GAAgCqF,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAhCtF,EAAgCuF,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,OAAA,CAAA7D,yBAAA,CAAA,EAAA,0BAAA,EAAAV,aAAA,eAAAI,sBAAA,wBAAAvC,QAAA,UAAAwD,OAAA,CAAA,EAAA,SAAA,SAmCvBmD,EAAqB,EAAAlG,YAAA,cAAAgD,4BAAA,8BAAAuC,+BAAA,iCAAAtC,QAAA,CAAA,EAAA,SAAA,EAAAC,SAAA,CAAA,EAAA,UAAA,CAAA,EAAAiD,QAAA,CAAAhD,IAAA,MAAAE,OAAA,SAAApB,OAAA,SAAAqB,iBAAA,mBAAAC,WAAA,YAAA,EAAA6C,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,aAAA,cAAA,EAAA,CAAA,WAAA,GAAA,EAAA,cAAA,iBAAA,EAAA,CAAA,EAAA,cAAA,kBAAA,kBAAA,gCAAA,aAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,UAAA,YAAA,YAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,WAAA,GAAA,EAAA,QAAA,cAAA,iBAAA,EAAA,CAAA,EAAA,QAAA,OAAA,cAAA,kBAAA,kBAAA,gCAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,kBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WCzE3C3I,EAAA,EAAA,gBAAA,EAAA,CAAA,EACE6I,GAAA,EAAAC,GAAA,EAAA,EAAA,KAAA,KAAAC,EAAA,EAgBAhI,EAAA,EAAAiI,GAAA,EAAA,EAAA,UAAA,EAAiE,EAAAC,GAAA,EAAA,EAAA,QAAA,CAAA,EAO/B,EAAAC,GAAA,EAAA,EAAA,QAAA,CAAA,EAkBpChJ,EAAA,EACAF,EAAA,EAAA,mBAAA,EAAA,CAAA,EAA0CG,EAAA,iBAAA,SAAAS,EAAA,CAAAC,OAAAT,EAAA+I,CAAA,EAAAzI,EAAkBkI,EAAAvC,mBAAAzF,CAAA,CAA0B,CAAA,CAAA,EACpFiI,GAAA,EAAAO,GAAA,EAAA,EAAA,aAAA,EAAAC,EAAA,EAMFnJ,EAAA,QAjDEiB,EAAA,CAAA,EAAAmI,GAAAV,EAAAhH,qBAAA,CAAsB,EAgBtBT,EAAA,CAAA,EAAAG,EAAAsH,EAAAhH,qBAAA,EAAAC,OAAA,GAAA,CAAA+G,EAAAjH,oBAAA,EAAA,EAAA,EAOAR,EAAA,EAAAG,EAAAsH,EAAAvE,yBAAA,EAAA,EAAA,CAAA,EAoBAlD,EAAA,CAAA,EAAAmI,GAAAV,EAAA1D,QAAA,CAAS,kBDjBPqE,EACAC,GAAaC,GACbC,GAAcC,GAAAC,GAAAC,GAAAC,GAAAC,GACdC,GACAC,GAAmBC,GAAAC,GAAAC,GACnBC,GACAC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAgBC,GAChBC,EAAe,EAAAC,OAAA,CAAA;2HAAA,CAAA,CAAA,CAAA,SAGNnI,CAAgC,GAAA,IE6C7C,SAASoI,GAAgBC,EAA+BC,EAAc,CACpE,MAAI,CAACA,GAAUA,IAAW,GAAW,GAEnCD,EAAQE,MAAMC,YAAW,EAAGC,SAASH,EAAOE,YAAW,CAAE,GACzDH,EAAQK,iBAAiBF,YAAW,EAAGC,SAASH,EAAOE,YAAW,CAAE,GACpE,EAEJ,CAEA,SAASG,GAAgBC,EAA+BC,EAAqCC,EAAY,EAAC,CACxG,IAAMC,EAAMH,EAAMI,OACZC,EAAaH,EAAY,EAAII,KAAKC,IAAI,EAAGJ,EAAMD,CAAS,EAAIA,EAElE,QAASM,EAAIH,EAAYG,EAAIL,EAAKK,IAAK,CACrC,IAAMC,EAAiBT,EAAMQ,CAAC,EAI9B,GAHIP,EAAcS,cAAgBD,EAAeC,aAG7CT,IAAkBQ,EACpB,MAAO,EAEX,CAEA,MAAO,EACT,CA3GA,OAaaE,IAbbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,uBAOaT,KAAiD,IAAA,CAAxD,MAAOA,UAAyDU,EAA6B,CALnGC,aAAA,qBAYW,KAAAC,QAAyB,KACW,KAAAC,OAAyB,KAC7D,KAAAC,YAAc,GAEb,KAAAC,mBAAqB,IAAIC,GAChB,KAAAC,cAAgB,UAChB,KAAAC,sBAAwBC,EAAOC,EAAqB,EAZvE,IAAaC,UAAUC,EAAS,CAC9B,KAAKC,aAAaD,CAAC,CACrB,CACA,IAA+BE,aAAaC,EAA6B,CACvE,KAAKC,gBAAgBD,CAAK,CAC5B,CASUE,UAAUC,EAAiC,CACnD,IAAMJ,EAAe,KAAKK,iBAAgB,EAC1C,GAAI,CAACL,EAAaM,KAAMC,GAAMA,EAAEhC,cAAgB6B,EAAY7B,WAAW,EAAG,CACxE,IAAMiC,EAAkB,CAAC,GAAGR,EAAcI,CAAW,EACrD,KAAKC,iBAAiBI,IAAID,CAAe,EACzC,KAAKjB,mBAAmBmB,KAAKF,CAAe,CAC9C,CACF,CAEUG,aAAaP,EAAiC,CACtD,IAAMJ,EAAe,KAAKK,iBAAgB,EAAGO,OAAQL,GAAMA,EAAEhC,cAAgB6B,EAAY7B,WAAW,EACpG,KAAK8B,iBAAiBI,IAAIT,CAAY,EACtC,KAAKT,mBAAmBmB,KAAKV,CAAY,CAC3C,CAEUa,uBAAuBC,EAAoB,CACnD,KAAKC,iBAAiBD,CAAU,CAClC,CAEmBE,iBAAe,CAChC,OAAO,MAAMA,gBAAe,EAAGC,KAC7BC,GAAe,KAAKC,aAAaC,aAAY,CAAE,EAC/CC,EAAWC,GAA4C,CACrD,IAAIC,EAA0CD,EAAO,CAAC,EAChDR,EAAqBQ,EAAO,CAAC,EACnC,OAAO,KAAK5B,sBAAsB8B,wCAAwC,KAAKpC,SAAW,EAAE,EAAE6B,KAC5FQ,EAAKC,GAAY,CACf,IAAIC,EACFD,EACGd,OAAQgB,GAAMA,EAAEC,gBAAgB,EAChCJ,IACEnE,IACE,CACCE,KAAM,KAAKsE,qBAAqBC,qBAAqB,UAAWzE,EAAQuE,gBAAgB,EACxFlE,gBAAiB,KAAKmE,qBAAqBE,mBACzC,UACA1E,EAAQuE,gBAAgB,EAE1BtD,YAAajB,EAAQuE,iBAAiBtD,YACtCkB,cAAe,KAAKA,eACI,GACzB,CAAA,EACTkC,OAAAA,EAAqBA,EAAmBf,OAAQgB,GAAMvE,GAAgBuE,EAAGd,CAAU,CAAC,EACpFS,EAAkBA,EAAgBX,OAAQL,GAAM,CAAC3C,GAAgB+D,EAAoBpB,CAAC,CAAC,EACnFoB,EAAmB1D,OAAS,KAC9B0D,EAAqBA,EAAmBM,MAAM,EAAG,EAAE,GAE9CN,EAAmBO,OAAOX,CAAe,CAClD,CAAC,CAAC,CAEN,CAAC,CAAC,CAEN,sEAnEW/C,CAAgD,IAAA2D,GAAhD3D,CAAgD,CAAA,CAAA,GAAA,CAAA,+BAAhDA,EAAgD4D,UAAA,CAAA,CAAA,+CAAA,CAAA,EAAAC,OAAA,CAAAxC,UAAA,YAAAG,aAAA,eAAAZ,QAAA,UAAAC,OAAA,CAAA,EAAA,SAAA,SAQvCiD,EAAqB,EAAAhD,YAAA,aAAA,EAAAiD,QAAA,CAAAhD,mBAAA,oBAAA,EAAAiD,SAAA,CAAAC,GAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,MAAA,SAAA,mBAAA,eAAA,UAAA,SAAA,UAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,ICrB3CE,EAAA,EAAA,6BAAA,CAAA,eAMEC,EAAA,MAAA,SAAAC,EAAA,CAAA,OAAOH,EAAA7C,UAAAgD,CAAA,CAAiB,CAAA,EAAC,SAAA,SAAAA,EAAA,CAAA,OACfH,EAAArC,aAAAwC,CAAA,CAAoB,CAAA,EAAC,mBAAA,SAAAA,EAAA,CAAA,OACXH,EAAAnC,uBAAAsC,CAAA,CAA8B,CAAA,EACnDC,EAAA,cARCC,EAAA,eAAAL,EAAA3C,iBAAA,CAAA,EAAmC,UAAA2C,EAAA5D,OAAA,EAChB,SAAA4D,EAAA3D,MAAA,EACF,WAAAiE,EAAAC,EAAA,EAAA,EAAAP,EAAAQ,QAAA,KAAA,MAAAF,IAAAG,OAAAH,EAAAI,GAAA,EAAAC,EAAA,CAAA,EACmB,cAAAX,EAAA1D,WAAA,kBDO1BsE,EAAYC,GAAEC,EAAgC,EAAAC,cAAA,CAAA,CAAA,CAAA,SAE7CvF,CAAiD,GAAA,IEb9D,OAWawF,IAXbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,uBAOaP,KAAwC,IAAA,CAA/C,MAAOA,UAAgDQ,EAA6B,CAL1FC,aAAA,qBASW,KAAAC,QAAyB,KACW,KAAAC,OAAyB,KAC7D,KAAAC,YAAc,GAEb,KAAAC,mBAAqB,IAAIC,GAEhB,KAAAC,cAAgB,UATnC,IAA+BC,aAAaC,EAA6B,CACvE,KAAKC,gBAAgBD,CAAK,CAC5B,CASUE,UAAUC,EAAiC,CACnD,IAAMJ,EAAe,KAAKK,iBAAgB,EAC1C,GAAI,CAACL,EAAaM,KAAMC,GAAMA,EAAEC,cAAgBJ,EAAYI,WAAW,EAAG,CACxE,IAAMC,EAAkB,CAAC,GAAGT,EAAcI,CAAW,EACrD,KAAKC,iBAAiBK,IAAID,CAAe,EACzC,KAAKZ,mBAAmBc,KAAKF,CAAe,CAC9C,CACF,CAEUG,aAAaR,EAAiC,CACtD,IAAMJ,EAAe,KAAKK,iBAAgB,EAAGQ,OAAQN,GAAMA,EAAEC,cAAgBJ,EAAYI,WAAW,EACpG,KAAKH,iBAAiBK,IAAIV,CAAY,EACtC,KAAKH,mBAAmBc,KAAKX,CAAY,CAC3C,CAEUc,uBAAuBC,EAAoB,CACnD,KAAKC,iBAAiBD,CAAU,CAClC,sEA7BW/B,CAAuC,IAAAiC,GAAvCjC,CAAuC,CAAA,CAAA,GAAA,CAAA,+BAAvCA,EAAuCkC,UAAA,CAAA,CAAA,oCAAA,CAAA,EAAAC,OAAA,CAAAnB,aAAA,eAAAN,QAAA,UAAAC,OAAA,CAAA,EAAA,SAAA,SAK9ByB,EAAqB,EAAAxB,YAAA,aAAA,EAAAyB,QAAA,CAAAxB,mBAAA,oBAAA,EAAAyB,SAAA,CAAAC,GAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,MAAA,SAAA,mBAAA,eAAA,UAAA,SAAA,UAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IChB3CE,EAAA,EAAA,6BAAA,CAAA,eAMEC,EAAA,MAAA,SAAAC,EAAA,CAAA,OAAOH,EAAA3B,UAAA8B,CAAA,CAAiB,CAAA,EAAC,SAAA,SAAAA,EAAA,CAAA,OACfH,EAAAlB,aAAAqB,CAAA,CAAoB,CAAA,EAAC,mBAAA,SAAAA,EAAA,CAAA,OACXH,EAAAhB,uBAAAmB,CAAA,CAA8B,CAAA,EACnDC,EAAA,cARCC,EAAA,eAAAL,EAAAzB,iBAAA,CAAA,EAAmC,UAAAyB,EAAApC,OAAA,EAChB,SAAAoC,EAAAnC,MAAA,EACF,WAAAyC,EAAAC,EAAA,EAAA,EAAAP,EAAAQ,QAAA,KAAA,MAAAF,IAAAG,OAAAH,EAAAI,GAAA,EAAAC,EAAA,CAAA,EACmB,cAAAX,EAAAlC,WAAA,kBDK1B8C,EAAYC,GAAEC,EAAgC,EAAAC,cAAA,CAAA,CAAA,CAAA,SAE7C7D,CAAwC,GAAA,IEXrD,IA4Ba8D,GA5BbC,GAAAC,EAAA,KAAAC,IACAC,KAMAC,KACAC,KACAC,KACAC,SAkBaR,IAAmB,IAAA,CAA1B,MAAOA,CAAmB,CADhCS,aAAA,CAEqB,KAAAC,mBAAqBC,EAAOC,EAAkB,EAChD,KAAAC,OAASF,EAAOG,EAAiB,EAE1C,KAAAC,aAAe,IAAIC,GACnB,KAAAC,aAAe,IAAID,GAU3B,KAAAE,cAAgBC,EAAc,CAAC,KAAKN,OAAOO,WAAY,KAAKL,aAAc,KAAKE,YAAY,CAAC,EAAEI,KAC5FC,GAAO,CAAC,CAACC,EAAWC,EAAYC,CAAU,IAAM,CAAC,CAACF,GAAa,CAAC,CAACC,GAAc,CAAC,CAACC,CAAU,EAC3FC,EAAU,CAAC,CAACH,EAAWC,EAAYC,CAAU,IAAK,CAChD,OAAQD,EAAU,CAChB,IAAK,cACH,OAAO,KAAKd,mBAAmBiB,gBAAgB,CAC7CJ,UAAAA,EACAK,QAAS,CACPC,SAAUC,GAAoBC,0BAC9BH,QAAS,CACP,CACEI,QAASC,EAAYC,sBACrBL,SAAUM,GAAeC,mBACzBC,OAAQ,CAAC,CAAEC,OAAQb,CAAU,CAAE,EAChC,GAGN,EACH,QACE,OAAOc,EAAG,IAAI,CAClB,CACF,CAAC,EACDC,EAAKC,GAAa,KAAKC,gBAAgBD,CAAQ,CAAC,EAChDE,GAAY,CAAC,CAAC,EA/BhBC,cAAcnB,EAAkB,CAC9B,KAAKR,aAAa4B,KAAKpB,CAAU,CACnC,CAEAqB,cAActB,EAAsB,CAClC,KAAKT,aAAa8B,KAAKrB,CAAU,CACnC,CA4BQkB,gBAAgBD,EAA4D,CAClF,OAAKA,EAIE,CACLM,SAAU,CACRC,MAAOP,GAAUM,UAAUC,MAC3BC,UAAWR,GAAUM,UAAUE,WAEjCC,OAAQT,GAAUS,QAAQV,IAAKW,IAAW,CACxCC,QAASD,GAAOC,QAChBC,QAAS,CACPL,MAAOG,GAAOE,SAASL,MACvBC,UAAWE,GAAOE,SAASJ,YAE7B,GAdK,CAAA,CAgBX,iDA3DWjD,EAAmB,CAAA,kCAAnBA,EAAmBsD,QAAnBtD,EAAmBuD,SAAA,CAAA,CAAA,SAAnBvD,CAAmB,GAAA,IC5BhC,IAkCawD,GACAC,GAnCbC,GAAAC,EAAA,KAAAC,IAkCaJ,GAA2B,IAAIK,GAAuC,0BAA0B,EAChGJ,GAA2B,IAAII,GAA4C,0BAA0B,8BEzBhHC,EAAA,CAAA,sCAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAC,CAAA,EAAA;CAAA,GDVF,OAWaC,GAXbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,IACAA,uCAQaL,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,CANlCM,aAAA,CASY,KAAAC,QAA8B,IAAIC,GAErCC,aAAW,CAChB,KAAKF,QAAQG,KAAI,CACnB,iDAPWV,EAAqB,CAAA,+BAArBA,EAAqBW,UAAA,CAAA,CAAA,gBAAA,CAAA,EAAAC,OAAA,CAAAC,KAAA,OAAAC,aAAA,cAAA,EAAAC,QAAA,CAAAR,QAAA,SAAA,EAAAS,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,EAAA,OAAA,EAAA,OAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WCXlCE,EAAA,EAAA,WAAA,CAAA,EAAUC,EAAA,QAAA,UAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAASN,EAAAZ,YAAA,CAAa,CAAA,CAAA,EAC9Ba,EAAA,EAAA,kBAAA,EACEM,GAAA,EAAA,CAAA,EAIFC,EAAA,EAAmB,EAGrBC,EAAA,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,uBANMC,EAAA,CAAA,EAAAC,EAAA,oBAAAC,EAAAd,EAAAP,gBAAA,MAAAqB,IAAAC,OAAAD,EAAAE,CAAA,EAAwD,0BAAAC,GAAA,EAAAC,GAAAlB,EAAAR,IAAA,CAAA,kBDMlD2B,GAAaC,GAAAC,GAAEC,GAAUC,EAAYC,EAAA,EAAAC,OAAA,CAAA;yGAAA,CAAA,CAAA,CAAA,SAEpC9C,CAAqB,GAAA,0BGqB1B+C,EAAA,EAAA,MAAA,EAAA,qCAPFC,EAAA,EAAA,iBAAA,CAAA,EAKEC,EAAA,UAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAWF,EAAAG,qBAAAP,CAAA,CAA0B,CAAA,CAAA,EAErCQ,EAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,EACFC,EAAA,kCANEC,EAAA,cAAAX,CAAA,EAAoB,OAAAA,CAAA,EACP,eAAAI,EAAAQ,YAAA,sCAQfd,EAAA,EAAA,+BAAA,EAAA,EAEEC,EAAA,YAAA,UAAA,CAAAE,EAAAY,CAAA,EAAA,IAAAT,EAAAC,EAAA,EAAA,OAAAC,EAAaF,EAAAU,kBAAA,CAAmB,CAAA,CAAA,EACjCJ,EAAA,OAFCC,EAAA,oBAAA,EAAA,yBAIFb,EAAA,EAAA,KAAA,EACED,EAAA,EAAA,mBAAA,EAAA,EACFa,EAAA,6BAMJZ,EAAA,EAAA,MAAA,EAAA,EAA4BiB,EAAA,CAAA,EAAiBL,EAAA,0BAAjBM,EAAA,EAAAC,EAAAC,EAAAC,IAAA,GDjD9B,OA0DaC,GA1DbC,GAAAC,EAAA,KAAAC,IACAC,IAYAC,KACAC,KACAC,KAEAC,KAWAC,KAQAC,KACAC,iEAqBaX,IAAuB,IAAA,CAA9B,MAAOA,CAAuB,CAbpCY,aAAA,CAwByC,KAAAC,SAAW,EAGxC,KAAAC,YAAc,IAAIC,GAClB,KAAAC,YAAc,IAAID,GAClB,KAAAE,YAAc,IAAIF,GAClB,KAAAG,cAAgB,IAAIH,GACpB,KAAAI,aAAe,IAAIJ,GAEZ,KAAAK,WAAaC,EAAOC,EAAU,EAC9B,KAAAC,UAAaF,EAAOG,GAA0B,CAAEC,SAAU,EAAI,CAAE,EAChE,KAAAC,UAAaL,EAAOM,GAA0B,CAAEF,SAAU,EAAI,CAAE,EAIhE,KAAAG,kBAAoB,IAAIC,GAA8C,CAAA,CAAE,EACxE,KAAAC,QAAU,IAAID,GAA2B,CAAA,CAAE,EACzC,KAAAE,OAASC,EAAc,CAAC,KAAKF,QAAS,KAAKF,iBAAiB,CAAC,EAAEK,KAChFC,EAAI,CAAC,CAACC,EAAOC,CAAS,IAAM,KAAKC,eAAeF,EAAOC,CAAS,CAAC,CAAC,EAEnD,KAAAE,WAAa,IAAIT,GAAiD,CAAEU,QAAS,EAAK,CAAE,EAClF,KAAAC,UAAYR,EAAc,CAAC,KAAKM,WAAY,KAAKV,iBAAiB,CAAC,EAAEK,KACtFC,EAAI,CAAC,CAACO,EAAUL,CAAS,IAAM,KAAKM,uBAAuBD,EAAUL,CAAS,CAAC,CAAC,EAE/D,KAAAO,SAAW,KAAKH,UAAUP,KAC3CC,EAAKU,GAAMA,EAAEL,OAAO,EACpBM,GAAoB,CAAE,EAEL,KAAAC,aAAe,IAAIjB,GAA+B,IAAI,EACtD,KAAAkB,UAAY,IAAIlB,GAAyB,EAAK,EAC9C,KAAAmB,WAAa,IAAInB,GAAsB,IAAI,EACpD,KAAAoB,iBAAmB,GAvC7B,IACIC,OAAOC,EAA0C,CACnD,KAAKC,QAAUD,EACf,KAAKE,MAAK,CACZ,CACA,IAAIH,QAAM,CACR,OAAO,KAAKE,OACd,CAkCAE,UAAQ,CACN,GAAM,CAAEC,WAAAA,CAAU,EAAK,KAAKC,cAAa,EAEzCxB,EAAc,CAAC,KAAKW,SAAU,KAAKK,UAAU,CAAC,EAC3Cf,KACCwB,GAAmB,KAAKrC,UAAU,EAClCsC,GAAO,CAAC,CAACnB,CAAO,IAAMA,CAAO,EAC7BoB,GAAa,GAAG,CAAC,EAElBC,UAAU,CAAEC,KAAMA,IAAM,KAAKC,SAAQ,CAAE,CAAE,EAE5C9B,EAAc,CAACuB,EAAWQ,YAAaR,EAAWS,SAAUT,EAAWU,QAAQ,CAAC,EAC7EhC,KAAKwB,GAAmB,KAAKrC,UAAU,CAAC,EACxCwC,UAAU,CAAEC,KAAMA,IAAM,KAAKR,MAAK,CAAE,CAAE,CAC3C,CAEAA,OAAK,CACC,KAAKa,mBAAmBC,SAAW,IACrC,KAAKD,kBAAkBE,YAAW,EAEpC,KAAKtC,QAAQ+B,KAAK,CAAA,CAAE,EACpB,KAAKjC,kBAAkBiC,KAAK,CAAA,CAAE,EAC9B,KAAKf,aAAae,KAAK,IAAI,EAC3B,KAAKvB,WAAWuB,KAAK,CAAEtB,QAAS,EAAI,CAAE,EACtC,KAAKQ,UAAUc,KAAK,EAAK,CAC3B,CAEAQ,cAAcC,EAA+BC,EAAa,CACxD,IAAMC,EAAuC,CAAEF,UAAAA,EAAWC,KAAAA,CAAI,EACxDE,EAAmB,KAAK7C,kBAAkBuB,MAC1CuB,EAAwBD,EAAiBE,UAAW/B,GAAM,KAAKgC,aAAahC,EAAE2B,KAAMA,CAAI,CAAC,EAC3FG,GAAyB,EAEFD,EAAiBC,CAAqB,EAC1CJ,YAAcA,GACjCG,EAAiBI,OAAOH,EAAuB,CAAC,EAGlDD,EAAiBK,KAAKN,CAAQ,EAEhC,KAAK5C,kBAAkBiC,KAAK,CAAC,GAAGY,CAAgB,CAAC,CACnD,CAEUM,aAAW,CACnB,OAAO,KAAK7B,QAAQsB,WAAaQ,MACnC,CAEUC,gBACRC,EAAiG,CAEjG,KAAKjC,iBAAmB,GACxB,IAAMkC,EAAgC,CACpCZ,KAAMW,EAAEX,KAAKa,KACbC,KAAMH,EAAEI,kBAAkBF,KAAKG,GAC/BC,GAAIN,EAAEO,UAAUL,KAAKG,IAEnBJ,EAAME,OAASF,EAAMK,IACvB,KAAK1E,YAAY4E,KAAKP,CAAK,CAE/B,CAEUQ,iBAAe,CACvB,KAAK1C,iBAAmB,GACxB,KAAKjC,YAAY0E,KAAI,CACvB,CAEUE,gBAAc,CACtB,KAAK3C,iBAAmB,EAC1B,CAEUvD,mBAAiB,CACzB,KAAKsD,WAAWa,KAAK,IAAI,CAC3B,CAEUC,UAAQ,CAChB,GAAM,CAAEP,WAAAA,EAAYL,OAAAA,CAAM,EAAK,KAAKM,cAAa,EAC3CqC,EAAM7D,EAAc,CACxBuB,EAAWQ,YACXR,EAAWS,SACXT,EAAWU,SACX,KAAKnB,YAAY,CAClB,EAAEb,KACD6D,GAAK,CAAC,EACN5D,EAAI,CAAC,CAAC6D,EAAYC,EAAaC,EAASC,CAAM,IAAK,CACjD,IAAMC,EAAgBjD,EAAOkD,SAAW,CAAA,EAClCC,EAAkB,CAAC,GAAGL,EAAa,GAAGG,CAAa,EACzD,MAAO,CACLG,cAAe,CAAEC,KAAMR,CAAU,EACjCK,QAASC,EACTJ,QAASA,EACTO,cAAe,CAAEN,OAAQA,GAAU,GAAIrF,SAAU,KAAKA,QAAQ,EAElE,CAAC,EACD4F,EAAWC,GAAYnD,EAAWoD,IAAID,CAAO,CAAC,CAAC,EAGjD,KAAK3D,UAAUc,KAAK,EAAI,EACxB,KAAKK,kBAAoB2B,EAAIjC,UAAU,CACrCC,KAAO+C,GAAO,CACZ,KAAK9E,QAAQ+B,KAAK,CAAC,GAAG,KAAK/B,QAAQqB,MAAO,GAAGyD,EAAIxB,IAAI,CAAC,EACtD,KAAK9C,WAAWuB,KAAK,CACnBtB,QAASqE,EAAIC,eAAetE,SAAW,GACvCuE,aAAcF,EAAIC,eAAeC,aAClC,EACD,KAAKhE,aAAae,KAAK+C,EAAIC,gBAAgBE,YAAc,IAAI,EAC7D,KAAKhE,UAAUc,KAAK,EAAK,CAC3B,EACAmD,MAAQC,GAAO,CACbC,QAAQF,MAAMC,CAAG,EACjB,KAAKlE,UAAUc,KAAK,EAAK,CAC3B,EACD,CACH,CAGQL,eAAa,CACnB,GAAI,CAAC,KAAKD,WACR,MAAM,IAAI4D,MAAM,wBAAwB,EAE1C,GAAI,CAAC,KAAKjE,OACR,MAAM,IAAIiE,MAAM,oBAAoB,EAEtC,MAAO,CAAE5D,WAAY,KAAKA,WAAYL,OAAQ,KAAKA,MAAM,CAC3D,CAEQ0B,aAAawC,EAAYC,EAAU,CACzC,OAAI,KAAK9F,UACA,KAAKA,UAAU6F,EAAGC,CAAC,EAErBC,KAAKC,UAAUH,CAAC,IAAME,KAAKC,UAAUF,CAAC,CAC/C,CAEQhF,eAAemF,EAAiBpF,EAAuC,CAC7E,IAAMqF,EAAWrF,EAAUsB,OAAQd,GAAMA,EAAE0B,YAAc,KAAK,EAAEpC,IAAKU,GAAMA,EAAE2B,IAAI,EAC3EmD,EAAWtF,EAAUsB,OAAQd,GAAMA,EAAE0B,YAAc,QAAQ,EAAEpC,IAAKU,GAAMA,EAAE2B,IAAI,EACpF,MAAO,CAAC,GAAGkD,EAAU,GAAGD,CAAI,EAAE9D,OAAQa,GAAS,CAACmD,EAASC,KAAMC,GAAO,KAAKhD,aAAagD,EAAIrD,CAAI,CAAC,CAAC,CACpG,CAEQ7B,uBACND,EACAL,EAAuC,CAEvC,GAAIK,EAASqE,eAAiB9B,OAC5B,OAAOvC,EAET,IAAMgF,EAAWrF,EAAUsB,OAAQd,GAAMA,EAAE0B,YAAc,KAAK,EAAEpC,IAAKU,GAAMA,EAAE2B,IAAI,EAAEsD,OAC7EH,EAAWtF,EAAUsB,OAAQd,GAAMA,EAAE0B,YAAc,QAAQ,EAAEpC,IAAKU,GAAMA,EAAE2B,IAAI,EAAEsD,OAChFf,EAAegB,KAAKC,IAAI,EAAGtF,EAASqE,aAAeW,EAAWC,CAAQ,EAC5E,OAAOM,GAAAC,GAAA,GAAKxF,GAAL,CAAeqE,aAAAA,CAAY,EACpC,CAEU3H,qBAAqBoF,EAAa,CAC1C,GAAI,KAAK7C,UAAW,CAClB,IAAMyD,EAAQ,KAAKzD,UAAU6C,CAAI,EACjC,KAAKtD,YAAYyE,KAAKP,CAAK,CAC7B,CACF,iDAxMWnF,EAAuB,CAAA,+BAAvBA,EAAuBkI,UAAA,CAAA,CAAA,kBAAA,CAAA,EAAAC,OAAA,CAAA5E,WAAA,aAAAL,OAAA,SAAArC,SAAA,CAAA,EAAA,WAAA,WAWduH,EAAe,EAAAC,eAAA,iBAAA7I,aAAA,cAAA,EAAA8I,QAAA,CAAAxH,YAAA,cAAAE,YAAA,cAAAC,YAAA,cAAAC,cAAA,gBAAAC,aAAA,cAAA,EAAAoH,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,YAAA,WAAA,mBAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,EAAA,CAAA,cAAA,GAAA,6BAAA,GAAA,EAAA,UAAA,EAAA,qBAAA,oBAAA,qBAAA,kBAAA,2BAAA,EAAA,CAAA,UAAA,GAAA,EAAA,cAAA,OAAA,cAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,UAAA,GAAA,EAAA,UAAA,cAAA,OAAA,cAAA,EAAA,CAAA,QAAA,iBAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,YAAA,mBAAA,EAAA,CAAA,OAAA,eAAA,EAAA,CAAA,EAAA,gBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WCrErCnK,EAAA,EAAA,MAAA,CAAA,EAAuB,EAAA,MAAA,CAAA,EACD,EAAA,+BAAA,CAAA,EAIhBC,EAAA,YAAA,UAAA,CAAAoK,OAAAlK,EAAAmK,CAAA,EAAA9J,EAAa4J,EAAA5H,cAAAwE,KAAA,CAAoB,CAAA,CAAA,EAAC,WAAA,UAAA,CAAAqD,OAAAlK,EAAAmK,CAAA,EAAA9J,EACtB4J,EAAA3H,aAAAuE,KAAA,CAAmB,CAAA,CAAA,EAChCpG,EAAA,EACD2J,GAAA,EAAA,CAAA,eAIF3J,EAAA,EACAZ,EAAA,EAAA,MAAA,CAAA,EAOEC,EAAA,qBAAA,UAAA,CAAAoK,OAAAlK,EAAAmK,CAAA,EAAA9J,EAAsB4J,EAAAnD,gBAAA,CAAiB,CAAA,CAAA,EAAC,oBAAA,UAAA,CAAAoD,OAAAlK,EAAAmK,CAAA,EAAA9J,EACnB4J,EAAAlD,eAAA,CAAgB,CAAA,CAAA,EAAC,qBAAA,SAAAsD,EAAA,CAAAH,OAAAlK,EAAAmK,CAAA,EAAA9J,EAChB4J,EAAA7D,gBAAAiE,CAAA,CAAuB,CAAA,CAAA,EAE7CC,GAAA,EAAAC,GAAA,EAAA,EAAA,iBAAA,EAAAC,EAAA,eAWAjK,EAAA,EAAAkK,GAAA,EAAA,EAAA,+BAAA,CAAA,gBAKElK,EAAA,GAAAmK,GAAA,EAAA,EAAA,KAAA,EAKJjK,EAAA,EAAM,EAGRF,EAAA,GAAAoK,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,wBA5CM7J,EAAA,CAAA,EAAAL,EAAA,oBAAA,CAAA,EAKAK,EAAA,EAAAL,EAAA,oBAAAmK,EAAAZ,EAAAT,kBAAA,MAAAqB,IAAA1E,OAAA0E,EAAAC,CAAA,EAA4D,0BAAAC,GAAA,GAAAC,GAAAf,EAAA5F,OAAA4G,EAAA,EAAA,EAAAhB,EAAAtG,SAAA,CAAA,CAAA,EAM9D5C,EAAA,CAAA,EAAAmK,GAAA,oBAAAjB,EAAA7F,gBAAA,EAEA1D,EAAA,kBAAAuJ,EAAA5F,MAAA,EAA0B,4BAAA4F,EAAA/D,YAAAiF,KAAAlB,CAAA,CAAA,EAO1BlJ,EAAA,EAAAqK,GAAAH,EAAA,EAAA,GAAAhB,EAAA/G,MAAA,CAAA,EAWAnC,EAAA,CAAA,EAAAsK,EAAAJ,EAAA,GAAA,GAAAhB,EAAA/F,SAAA,IAAA,GAAA,EAAA,EAAA,kBDeAoH,EAAYC,GAAAC,GACZC,GAAiCC,GACjCC,GAAoBC,GACpBC,GACAC,GAAcC,GAAAC,GAAAC,EAAA,EAAAC,OAAA,CAAA;2GAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAILhL,CAAuB,GAAA,IE1DpC,IAMaiL,GANbC,GAAAC,EAAA,SAMaF,IAA6B,IAAA,CAApC,MAAOA,CAA6B,CACxCG,YAAmBC,EAAiC,CAAjC,KAAAA,YAAAA,CAAoC,iDAD5CJ,GAA6BK,EAAAC,EAAA,CAAA,CAAA,CAAA,gCAA7BN,EAA6BO,UAAA,CAAA,CAAA,GAAA,0BAAA,EAAA,EAAA,CAAA,GAAA,uBAAA,EAAA,CAAA,CAAA,CAAA,CAAA,SAA7BP,CAA6B,GAAA,ICN1C,IAMaQ,GANbC,GAAAC,EAAA,SAMaF,IAA4B,IAAA,CAAnC,MAAOA,CAA4B,CACvCG,YAAmBC,EAAiC,CAAjC,KAAAA,YAAAA,CAAoC,iDAD5CJ,GAA4BK,EAAAC,EAAA,CAAA,CAAA,CAAA,gCAA5BN,EAA4BO,UAAA,CAAA,CAAA,GAAA,yBAAA,EAAA,EAAA,CAAA,GAAA,sBAAA,EAAA,CAAA,CAAA,CAAA,CAAA,SAA5BP,CAA4B,GAAA,0BELvCQ,EAAA,EAAA,mBAAA,CAAA,qCAQQC,EAAA,EAAA,MAAA,CAAA,EAGEC,EAAA,QAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,qBAAAP,EAAAQ,EAAA,CAAgC,CAAA,CAAA,EAC1CC,EAAA,4BAFCC,GAAA,SAAAV,EAAAW,MAAA,sCANRb,EAAA,EAAA,MAAA,CAAA,EAAgC,EAAA,WAAA,CAAA,EACWC,EAAA,QAAA,UAAA,CAAAE,EAAAW,CAAA,EAAA,IAAAR,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAS,eAAA,CAAgB,CAAA,CAAA,EAAEC,EAAA,EAAA,qBAAA,EAAmBL,EAAA,EACvFX,EAAA,EAAA,MAAA,CAAA,EACEiB,GAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,EAAAC,EAAA,EAOFR,EAAA,EACAX,EAAA,EAAA,WAAA,CAAA,EAAyCC,EAAA,QAAA,UAAA,CAAAE,EAAAW,CAAA,EAAA,IAAAR,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAc,WAAA,CAAY,CAAA,CAAA,EAAEJ,EAAA,EAAA,sBAAA,EAAoBL,EAAA,EAAW,oBAR7FU,EAAA,CAAA,EAAAC,GAAAhB,EAAAiB,eAAA,CAAgB,sCAkBlBvB,EAAA,EAAA,mBAAA,CAAA,EAQEC,EAAA,cAAA,SAAAuB,EAAA,CAAArB,EAAAsB,CAAA,EAAA,IAAAnB,EAAAC,EAAA,EAAA,OAAAC,EAAeF,EAAAoB,cAAAF,CAAA,CAAqB,CAAA,CAAA,EAAC,cAAA,UAAA,CAAA,IAAAG,EAAAxB,EAAAsB,CAAA,EAAApB,UAAAC,EAAAC,EAAA,EAAA,OAAAC,EACtBF,EAAAG,qBAAAkB,EAAAjB,EAAA,CAA+B,CAAA,CAAA,EAAC,cAAA,SAAAc,EAAA,CAAArB,EAAAsB,CAAA,EAAA,IAAAnB,EAAAC,EAAA,EAAA,OAAAC,EAChCF,EAAAsB,cAAAJ,CAAA,CAAqB,CAAA,CAAA,EAAC,gBAAA,UAAA,CAAA,IAAAG,EAAAxB,EAAAsB,CAAA,EAAApB,UAAAC,EAAAC,EAAA,EAAA,OAAAC,EACpBF,EAAAuB,gBAAAF,EAAAjB,EAAA,CAA0B,CAAA,CAAA,EAAC,eAAA,UAAA,CAAA,IAAAiB,EAAAxB,EAAAsB,CAAA,EAAApB,UAAAC,EAAAC,EAAA,EAAA,OAAAC,EAC5BF,EAAAwB,eAAAH,EAAAjB,EAAA,CAAyB,CAAA,CAAA,EAC1CC,EAAA,kCAXCC,GAAA,SAAAN,EAAAyB,iBAAA,CAAA,EAEAC,EAAA,SAAAL,CAAA,EAAiB,aAAArB,EAAA2B,UAAA,EACQ,iBAAA3B,EAAA4B,cAAA,KAAA,KAAA5B,EAAA4B,aAAAC,WAAA,EACmB,eAAA7B,EAAA8B,aAAA,KAAA,KAAA9B,EAAA8B,YAAAD,WAAA,6BDhCpD,IAsDaE,GAtDbC,GAAAC,EAAA,KAAAC,IAgBAC,KACAC,KACAC,IACAC,KAQAC,KACAC,KACAC,KACAC,KAEAC,KACAC,wBAqBab,IAAiB,IAAA,CAAxB,MAAOA,CAAiB,CA2B5Bc,YACmBC,EACAC,EACkBC,EAAkB,CAFpC,KAAAF,mBAAAA,EACA,KAAAC,WAAAA,EACkB,KAAAC,SAAAA,EA5B5B,KAAAC,QAAUC,GAAMC,SAAQ,EACxB,KAAAC,mBAAyC,OACzC,KAAAC,eAAiBH,GAAM,EAAG,CAAEI,UAAWC,EAAe,CAAE,EACxD,KAAAC,SAAWN,GAA0B,QAAQ,EAC5C,KAAAO,iBAAmB,IAAIC,GACvB,KAAAC,YAAc,IAAID,GAMT,KAAAE,iBAAmBC,EAAO,EAAK,EAC/B,KAAA5C,eAAiB4C,EAAkB,CAAA,CAAE,EACrC,KAAAC,aAAeC,EAAS,IAAM,KAAKC,oBAAmB,CAAE,EAE1D,KAAAC,kBAAoB,KAAKnB,mBACvCoB,QAAQ,CAACC,GAAYC,eAAgBD,GAAYE,eAAe,CAAC,EACjEC,KAAKC,EAAKC,GAAgBA,EAAYC,OAAO,CAAC,EAC9B,KAAAhD,iBAAmBiD,GAAS,KAAKT,iBAAiB,EAEpD,KAAAU,aAAed,EAAO,CAAC,EACvB,KAAAe,eAAiB,IAAIC,eAAgBC,GACpD,KAAKH,aAAaI,IAAID,EAAQ,CAAC,GAAGE,YAAYC,OAAS,CAAC,CAAC,EAQzD,KAAKL,eAAeV,QAAQ,KAAKnB,WAAWmC,aAAa,EACzDC,GAAO,IAAK,CACV,IAAM9B,EAAiB,KAAKA,eAAc,GAAM,EAChD,KAAKL,SAASoC,gBAAgBC,MAAMC,YAAY,qBAAsB,GAAGjC,CAAc,IAAI,CAC7F,CAAC,EACD8B,GAAO,IAAK,CAEV,IAAMI,EADU,KAAKtC,QAAO,EACWsB,IAAKiB,IAAY,CAAEpF,GAAIoF,EAAOpF,GAAIG,OAAQ,EAAK,EAAG,EACzF,KAAKU,eAAe8D,IAAIQ,CAAW,CACrC,CAAC,CACH,CAEAE,aAAW,CACT,KAAKb,eAAec,UAAU,KAAK3C,WAAWmC,aAAa,CAC7D,CAEUpE,YAAU,CAClB,IAAMyE,EAAc,CAAC,GAAG,KAAKtE,eAAc,CAAE,EAAE0E,QAAO,EAChDC,EAAmBL,EAAYM,UAAWC,GAAeA,EAAWvF,MAAM,EAChF,GAAIqF,EAAmB,EAAG,CACxB,IAAMG,EAAmBR,EAAYK,EAAmB,CAAC,EAAExF,GAC3D,KAAKD,qBAAqB4F,CAAgB,CAC5C,CACF,CAEUtF,gBAAc,CACtB,IAAM8E,EAAc,CAAC,GAAG,KAAKtE,eAAc,CAAE,EACvC+E,EAAoBT,EAAYM,UAAWC,GAAeA,EAAWvF,MAAM,EACjF,GAAIyF,EAAoB,EAAG,CACzB,IAAMD,EAAmBR,EAAYS,EAAoB,CAAC,EAAE5F,GAC5D,KAAKD,qBAAqB4F,CAAgB,CAC5C,CACF,CAEU5F,qBAAqB8F,EAAgB,CAC7C,KAAKjD,SAASkD,cAAc,oBAAoBD,CAAQ,IAAI,GAAGE,eAAe,CAAEC,SAAU,QAAQ,CAAE,CACtG,CAEU7E,gBAAgB0E,EAAgB,CACxC,KAAKhF,eAAeoF,OAAQd,GAAe,CACzC,IAAMe,EAAOf,EAAYgB,KAAMT,GAAeA,EAAW1F,KAAO6F,CAAQ,EACxE,OAAIK,IACFA,EAAK/F,OAAS,IAETgF,CACT,CAAC,CACH,CAEU/D,eAAeyE,EAAgB,CACvC,KAAKhF,eAAeoF,OAAQd,GAAe,CACzC,IAAMe,EAAOf,EAAYgB,KAAMT,GAAeA,EAAW1F,KAAO6F,CAAQ,EACxE,OAAIK,IACFA,EAAK/F,OAAS,IAETgF,CACT,CAAC,CACH,CAEUnE,cAAcoF,EAA6B,CACnD,IAAMvD,EAAU,KAAKA,QAAO,EACtBwD,EAAaxD,EAAQsD,KAAMG,GAAMA,EAAEtG,KAAOoG,EAAMG,IAAI,EACpDC,EAAW3D,EAAQsD,KAAMG,GAAMA,EAAEtG,KAAOoG,EAAMK,EAAE,EACtD,GAAI,CAACJ,GAAc,CAACG,EAClB,MAAM,IAAIE,MAAM,oBAAoB,EAEtC,GAAIF,EAASG,WAAaC,OACxB,OAEF,IAAMD,EAAWH,EAASG,SAASP,EAAMF,IAAI,EACvCW,EAA6D,CACjEX,KAAME,EAAMF,KACZd,OAAQoB,EACRD,KAAMF,GAER,KAAKS,uBAAuBD,CAAW,EACvC,KAAKrD,iBAAiBmB,IAAI,EAAI,EAC9BgC,EACGI,KAAK,IAAK,CACT,KAAKC,wBAAwBH,CAAW,CAC1C,CAAC,EACAI,MAAM,IAAK,CACV,KAAKC,0BAA0BL,CAAW,EAC1C,KAAKxD,iBAAiB8D,KAAKN,CAAW,CACxC,CAAC,EACAO,QAAQ,IAAM,KAAK5D,iBAAiBmB,IAAI,EAAK,CAAC,CACnD,CAEQmC,uBAAuBD,EAA0D,CACvF,GAAI,KAAK7D,qBAAuB,QAG5B,KAAKA,qBAAuB,QAAS,CACvC,IAAMqD,EAAa,KAAKgB,kBAAkBlB,KAAMG,GAAMA,EAAElB,QAAQpF,KAAO6G,EAAYN,KAAKvG,EAAE,EACpFwG,EAAW,KAAKa,kBAAkBlB,KAAMG,GAAMA,EAAElB,QAAQpF,KAAO6G,EAAYzB,OAAOpF,EAAE,EAC1FqG,GAAYiB,cAAc,SAAUT,EAAYX,IAAI,EACpDM,GAAUc,cAAc,MAAOT,EAAYX,IAAI,CACjD,CACF,CAEQc,wBAAwBH,EAA0D,CACxF,GAAI,KAAK7D,qBAAuB,QAG5B,KAAKA,qBAAuB,UAAW,CACzC,IAAMqD,EAAa,KAAKgB,kBAAkBlB,KAAMG,GAAMA,EAAElB,QAAQpF,KAAO6G,EAAYN,KAAKvG,EAAE,EACpFwG,EAAW,KAAKa,kBAAkBlB,KAAMG,GAAMA,EAAElB,QAAQpF,KAAO6G,EAAYzB,OAAOpF,EAAE,EAC1FqG,GAAYkB,MAAK,EACjBf,GAAUe,MAAK,CACjB,CACF,CAEQL,0BAA0BL,EAA0D,CAC1F,GAAI,KAAK7D,qBAAuB,QAG5B,KAAKA,qBAAuB,QAAS,CACvC,IAAMqD,EAAa,KAAKgB,kBAAkBlB,KAAMG,GAAMA,EAAElB,QAAQpF,KAAO6G,EAAYN,KAAKvG,EAAE,EACpFwG,EAAW,KAAKa,kBAAkBlB,KAAMG,GAAMA,EAAElB,QAAQpF,KAAO6G,EAAYzB,OAAOpF,EAAE,EAC1FqG,GAAYiB,cAAc,MAAOT,EAAYX,IAAI,EACjDM,GAAUc,cAAc,SAAUT,EAAYX,IAAI,CACpD,CACF,CAEQtC,qBAAmB,CACzB,IAAMvC,EAAmB,KAAKA,iBAAgB,EACxC4B,EAAiB,KAAKA,eAAc,EACpCuE,EAAa,KAAKjD,aAAY,EAC9BkD,EAAc,KAAK5E,QAAO,GAAI6E,QAAU,EAG9C,OAF2B,KAAKtE,SAAQ,EAEd,CACxB,IAAK,QACH,MAAO,GACT,IAAK,SACH,MAAO,GACT,IAAK,SACH,MAAO,CAAC,CAAC/B,EACX,IAAK,OACH,OAAO4B,EAAiB,GAAKuE,EAAavE,EAAiBwE,EAC7D,QACE,MAAO,EACX,CACF,CAEUvG,cAAcyG,EAAwC,CAC9D,KAAKpE,YAAY4D,KAAKQ,CAAc,CACtC,iDAlLWhG,GAAiBiG,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EA8BlBG,EAAQ,CAAA,CAAA,CAAA,+BA9BPpG,EAAiBqG,UAAA,CAAA,CAAA,WAAA,CAAA,EAAAC,eAAA,SAAAC,EAAAC,EAAAC,EAAA,IAAAF,EAAA,SASdG,GAA6B,CAAA,OAC7BC,GAA4B,CAAA,4HAC5BC,GAAuB,CAAA,y1BCjEvCC,EAAA,EAAAC,GAAA,EAAA,EAAA,mBAAA,CAAA,EAGAnJ,EAAA,EAAA,MAAA,CAAA,EACEkJ,EAAA,EAAAE,GAAA,EAAA,EAAA,MAAA,CAAA,EAeApJ,EAAA,EAAA,MAAA,CAAA,EAMEiB,GAAA,EAAAoI,GAAA,EAAA,EAAA,mBAAA,EAAAC,EAAA,EAgBF3I,EAAA,EAAM,SAzCR4I,EAAAV,EAAA3E,iBAAA,EAAA,EAAA,EAAA,EAIE7C,EAAA,CAAA,EAAAkI,EAAAV,EAAAzE,aAAA,EAAA,EAAA,EAAA,EAiBE/C,EAAA,EAAAT,GAAA,SAAAiI,EAAA9G,iBAAA,CAAA,EAEAC,EAAA,2BAAA6G,EAAA3E,iBAAA,GAAA2E,EAAA9G,iBAAA,CAAA,EAEAV,EAAA,EAAAC,GAAAuH,EAAAtF,QAAA,CAAS,kBD2BDiG,GAASP,GAAyBQ,GAAcC,GAAEC,GAAoBC,EAAA,EAAAC,OAAA,CAAA;0GAAA,CAAA,CAAA,CAAA,SAErExH,CAAiB,GAAA,IErD9B,IAGayH,GAHbC,GAAAC,EAAA,KAAAC,KAGaH,GAAP,KAAyB,CAU7BI,YAAoBC,EAAyD,CAAzD,KAAAA,IAAAA,EAPH,KAAAC,aAAe,IAAIC,GAAwB,EAAE,EACrD,KAAAC,YAAc,KAAKF,aAAaG,aAAY,EAAGC,KAAKC,GAAoB,CAAE,EAClE,KAAAC,UAAY,IAAIL,GAA8B,CAAA,CAAE,EACxD,KAAAM,SAAW,KAAKD,UAAUH,aAAY,EAAGC,KAAKC,GAAoB,CAAE,EAC5D,KAAAG,UAAY,IAAIP,GAA4B,CAAA,CAAE,EACtD,KAAAQ,SAAW,KAAKD,UAAUL,aAAY,EAAGC,KAAKC,GAAoB,CAAE,EAG3E,KAAKN,IAAMA,CACb,CAEAW,cAAcC,EAAmB,CAC/B,KAAKX,aAAaY,KAAKD,GAAc,EAAE,CACzC,CAEAE,WAAWC,EAAsB,CAC/B,KAAKR,UAAUM,KAAKE,GAAW,CAAA,CAAE,CACnC,CAEAC,WAAWC,EAAoB,CAC7B,KAAKR,UAAUI,KAAKI,GAAW,CAAA,CAAE,CACnC,CAEAC,IAAIC,EAAwD,CAC1D,OAAO,KAAKnB,IAAIkB,IAAIC,CAAO,CAC7B,KChCF,IAAAC,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCNA,IAAAC,GAAAC,EAAA,KAAAC,OCAA,IAAAC,GAAAC,EAAA,KAAAC,OCAA,IAmFaC,GAnFbC,GAAAC,EAAA,KAGAC,KAaAC,KAEAC,KAYAC,KAsBAC,KAWAC,KAWAC,KACAC,KACAC,gDAOaX,IAAuB,IAAA,CAA9B,MAAOA,CAAuB,CA2DlCY,YAC8CC,EAC3BC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EAGAC,GAA6C,CAjBlB,KAAAb,OAAAA,EAC3B,KAAAC,eAAAA,EACA,KAAAC,cAAAA,EACA,KAAAC,UAAAA,EACA,KAAAC,gBAAAA,EACA,KAAAC,qBAAAA,EACA,KAAAC,qBAAAA,EACA,KAAAC,yBAAAA,EACA,KAAAC,kBAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,eAAAA,EACA,KAAAC,uCAAAA,EAGA,KAAAC,kBAAAA,EAGA,KAAAC,sBAAAA,GA3EX,KAAAC,aAAe,IAAIC,GACnB,KAAAC,eAAiB,KAAKH,uBAAuBG,gBAAkBC,EAAG,EAAE,EACpE,KAAAC,eAAiB,IAAIH,GACrB,KAAAI,UAAY,IAAIJ,GAChB,KAAAK,eAAiB,IAAIL,GACrB,KAAAM,eAAiB,IAAIC,GAAmC,EAAE,EAC1D,KAAAC,eAAiBC,GAAa,KAAKb,uCAAuCc,oBAAmB,CAAE,EAC/F,KAAAC,gBAAkB,IAAIJ,GAAkC,IAAIK,GAAK,EACjE,KAAAC,0BAA4B,IAAIN,GAAyB,EAAI,EAC7D,KAAAO,iBAAmB,IAAIP,GAAgB,EAAK,EAC5C,KAAAQ,gBAAkB,IAAIR,GAA0B,CAAA,CAAE,EAClD,KAAAS,cAAgB,IAAIT,GAAyB,EAAI,EACjD,KAAAU,OAAS,IAAIV,GAAsC,CAAA,CAAE,EAI7D,KAAAW,yBAAgD,KAAKL,0BAA0BM,aAAY,EAC3F,KAAAC,SAA0C,KAAKhB,UAAUe,aAAY,EACrE,KAAAE,cAA+C,KAAKhB,eAAec,aAAY,EAE/E,KAAAG,gBAAuCC,EAAc,CAAC,KAAKV,0BAA2B,KAAKC,gBAAgB,CAAC,EAAEU,KAC5GC,EAAI,CAAC,CAACC,GAASC,EAAU,IAAM,CAACD,IAAW,CAACC,EAAU,CAAC,EAEzD,KAAAC,aAAoCL,EAAc,CAAC,KAAKL,yBAA0B,KAAKI,eAAe,CAAC,EAAEE,KACvGC,EAAI,CAAC,CAACC,GAASG,EAAc,IAAM,CAACH,IAAW,CAACG,EAAc,CAAC,EAGzD,KAAAC,uBAAyB,IAAI9B,GAG7B,KAAA+B,gBAA+D,KAAKD,uBAAuBN,KACjGQ,GAAUC,EAAuB,EACjCC,GAAe,KAAKnC,aAAc,KAAKO,eAAgB,KAAKL,cAAc,EAC1EkC,GAAI,CAAC,CAAA,CAAGC,GAAYC,GAAcC,EAAa,IAAK,CAClD,KAAK3B,gBAAgB4B,KAAK,IAAI3B,GAAK,EACnC,KAAKhB,uCAAuC4C,gBAAgBJ,GAAYC,IAAgBC,EAAa,CACvG,CAAC,EACDG,EAAU,CAAC,CAACC,EAAG,IAAM,KAAKC,aAAaD,EAAG,CAAC,EAC3CR,GAAe,KAAKJ,sBAAsB,EAC1CK,GAAI,CAAC,CAACS,EAAI,IAAK,CAET,CADmB,KAAK9B,iBAAiB+B,QACrBD,IAAME,YAAc,CAAA,GAAIC,OAAS,GACvD,KAAKjC,iBAAiByB,KAAK,EAAI,CAEnC,CAAC,EACDJ,GAAWa,IAAWC,GAAA,MAAXD,IAAW,UAAX,CAAA,CAAGN,EAAG,EAAK,CACpB,GAAIA,GAAIQ,eAAeC,KAAM,CAC3B,IAAMf,GAAa,MAAMgB,GAAe,KAAKrD,YAAY,EACzD,KAAKV,gBAAgBgE,WAAWjB,GAAY,sBAAuB,CACjEkB,aAAcZ,GAAIQ,cAAcK,OACjC,CACH,CACF,EAAC,EACDpB,GAAI,CAAC,CAACS,EAAI,IAAM,KAAK3B,OAAOsB,KAAKK,GAAKE,YAAc,CAAA,CAAE,CAAC,EACvDrB,EAAI,CAAC,CAACmB,EAAI,IAAMA,EAAI,CAAC,EAuBrB,IAAMY,GAA+CjC,EAAc,CACjE,KAAKtC,OAAOwE,WACZ,KAAK1D,aACL,KAAKE,cAAc,CACpB,EAAEuB,KACDQ,GAAUC,EAAuB,EACjCyB,GAAqB,CAACC,GAAGC,KAAMC,KAAKC,UAAUH,EAAC,IAAME,KAAKC,UAAUF,EAAC,CAAC,EACtEnB,EAAU,CAAC,CAAA,CAAGL,GAAYE,EAAa,IAAM,KAAKnD,cAAc4E,qBAAqB3B,GAAYE,EAAa,CAAC,EAC/G0B,GAAY,CAAC,CAAC,EAEhBR,GAAShC,KAAKyC,GAAkB,CAAE,EAAEC,UAAWC,IAAW,CACxD,KAAKhE,eAAeoC,KAAK4B,EAAO,CAClC,CAAC,EACqBX,GAAShC,KAC7BC,EAAK0C,IAAoCA,GAAQ1C,IAAK2C,IAAW,KAAKC,yBAAyBD,EAAM,CAAC,CAAC,EACvG3B,EAAW6B,IACT/C,EAAc,CACZ,KAAKgD,mBAAmBD,GAAS,KAAKrE,cAAc,EACpD,KAAKF,aACL,KAAKO,eAAekB,KAAKgD,GAAU,EAAkB,CAAC,CAAC,CACxD,CAAC,EAEJ/C,EAAI,CAAC,CAAC6C,GAASlC,GAAYC,EAAY,IAAM,KAAKoC,kBAAkBpC,IAAgBD,GAAYkC,GAAS,EAAK,CAAC,EAC/G7C,EAAK6C,IAAY,KAAKI,iBAAiBJ,EAAO,CAAC,EAC/C7B,EAAW6B,IACF,KAAKK,gBAAgBL,EAAO,CACpC,EACD7B,EAAW6B,IACF,KAAK7E,kBAAkBmF,8BAA8BN,EAAO,CACpE,EACD7B,EAAW6B,IAAY,KAAKO,gBAAgBP,GAAS,KAAKrE,cAAc,CAAC,EACzE+D,GAAY,CAAC,CAAC,EAEFxC,KAAKyC,GAAkB,CAAE,EAAEC,UAAU,CAAC,CAAEI,QAAAA,GAASQ,aAAAA,EAAY,IAAM,CAC/E,KAAK1E,UAAUmC,KAAK+B,EAAO,EAC3B,KAAKjE,eAAekC,KAAKuC,EAAY,CACvC,CAAC,EACD,KAAK7F,OAAOwE,WACTjC,KACCyC,GAAkB,EAClBP,GAAoB,EACpBvB,GAAI,IAAM,KAAKtB,0BAA0B0B,KAAK,EAAI,CAAC,CAAC,EAErD2B,UAAS,EAEZ,IAAMa,GAAe,CACnBC,IACEtC,IAC2C,CAC3C,IAAMuC,GAAU,KAAKC,YAAYxC,EAAG,EAAElB,KACpC2D,GAAW,KACT,KAAKzF,aAAa0F,eAAe,wBAAwB,EAClDlF,EAAG,CACR4C,WAAY,CAAA,EACZuC,eAAgB,CACdC,WAAY,GACZC,QAAS,IAEZ,EACF,CAAC,EAGJ,OAAOhE,EAAc,CAAC0D,GAAS,KAAKzE,eAAgB,KAAKG,eAAe,CAAC,EAAEa,KACzEU,GAAe,KAAK/B,eAAgB,KAAKJ,aAAc,KAAKO,eAAgB,KAAKL,cAAc,EAC/FwB,EAAI,CAAC,CAAC,CAACwD,GAASO,GAASC,EAAa,EAAGtB,GAAS/B,GAAYC,GAAcC,EAAa,IAAK,CAC5F,IAAMoD,GAAUF,GAAQE,QAClBC,GAAUH,GAAQG,QAClBC,GAAUJ,GAAQI,QAElBC,GAAOxD,IAAgBC,IAAiBF,GACxC0D,GAAU,CAAC,GAAIF,GAAQZ,IAAIa,EAAI,GAAK,CAAA,CAAG,EAC7CC,GAAQC,KAAK,GAAId,IAASnC,YAAc,CAAA,CAAG,EAE3C,IAAMkD,GAAkBF,GAAQG,OAAQC,IAAW,CAACR,GAAQV,IAAIa,EAAI,GAAGM,SAASD,GAAOE,aAAe,EAAE,CAAC,EACzGT,GAAQX,IAAIa,EAAI,GAAGQ,QAASC,IAAiB,CAC3C,IAAMC,GAAQP,GAAgBQ,UAAWN,IAAWA,GAAOE,cAAgBE,GAAcF,WAAW,EAChGG,GAAQ,KACVP,GAAgBO,EAAK,EAAID,GAE7B,CAAC,EAED,IAAMG,GAAO,KAAKC,yBAChBV,IAAmB,CAAA,EACnB7B,GACA/B,GACAC,GACA4C,IAASI,cAAc,EAEzBoB,OAAAA,GAAKE,KAAKlF,IAAKmF,IAAMnB,GAAcT,IAAI4B,GAAEC,EAAE,GAAKD,EAAC,EAC1CH,EACT,CAAC,EACDtE,GAAI,IAAK,CACP,KAAKtB,0BAA0B0B,KAAK,EAAK,CAC3C,CAAC,CAAC,CAEN,GAEF,KAAKuE,WAAa,IAAIC,GAAsDhC,EAAY,EAExF,IAAMiC,GAAW,CACfhC,IACEtC,IAEO,KAAKC,aAAaD,EAAG,EAAElB,KAC5B2D,GAAW,KACT,KAAKzF,aAAa0F,eAAe,wBAAwB,EAClDlF,EAAG,CAAA,CAAqC,EAChD,EACDgC,GAAe,KAAK/B,eAAgB,KAAKJ,aAAc,KAAKO,cAAc,EAC1EmB,EAAI,CAAC,CAACwF,GAAgB9C,GAAS/B,GAAYC,EAAY,IACrD,KAAKqE,yBACHO,IAAgBnE,YAAc,CAAA,EAC9BqB,GACA/B,GACAC,GACA4E,IAAgB5B,cAAc,CAC/B,CACF,GAIP,KAAK6B,YAAc,IAAIC,GAAwDH,EAAQ,CACzF,CAEAzC,mBAAmBD,EAAsBrE,EAAmC,CAC1E,OAAOsB,EAAc,CAAC,KAAKxB,aAAcE,GAAkBC,EAAG,EAAE,CAAC,CAAC,EAAEsB,KAClEiB,EAAU,CAAC,CAACL,EAAYE,CAAa,IACnC,KAAKnD,cAAciI,0BAA0BhF,EAAYE,CAAa,CAAC,EAEzEb,EAAK4F,GAAe,CAClB,IAAMC,EAAqBD,EAAYE,OACrC,CAACX,EAAaY,IAAeZ,EAAEa,OAAOD,EAAWF,UAAY,CAAA,CAAE,EAC/D,CAAA,CAAE,EAGEI,EAA6B7D,KAAK8D,MAAM9D,KAAKC,UAAUQ,CAAO,CAAC,EACrEoD,EAAcE,KAAK,CAACjE,EAAGC,IAAK,CAC1B,IAAIiE,EAASP,EAASQ,QAAQnE,EAAEkD,EAAE,EAC9BgB,IAAW,IAAMlE,EAAEoE,cACrBF,EAASP,EAASQ,QAAQnE,EAAEoE,WAAW,GAEzC,IAAIC,EAASV,EAASQ,QAAQlE,EAAEiD,EAAE,EAIlC,OAHImB,IAAW,IAAMpE,EAAEmE,cACrBC,EAASV,EAASQ,QAAQlE,EAAEmE,WAAW,GAErCF,IAAW,GACN,EAELG,IAAW,GACN,GAEFH,EAASG,CAClB,CAAC,EAED,IAAMC,EAA0BZ,EAAY,CAAC,GAAGC,UAAY,CAAA,EAC5D,QAAWY,KAAUR,EACfO,EAAwB9B,SAAS+B,EAAOrB,EAAE,IAG9CqB,EAAOC,OAAS,IAGlB,OAAOT,CACT,CAAC,CAAC,CAEN,CAEAhD,iBAAiBJ,EAA0B,CACzC,GAAI,CAAC,KAAKtD,cAAc6B,MACtB,OAAOyB,EAET,IAAM8D,EAAiC,CACrCvB,GAAI,UACJwB,MAAO,KAAKjJ,UAAUkJ,QAAQ,yCAAyC,EACvEC,OAAQ,GACRC,UAAW,GACXC,SAAU,IAEZ,MAAO,CAAC,GAAGnE,EAAS8D,CAAa,CACnC,CAEAvD,gBACEP,EACArE,EAAmC,CAEnC,IAAMyI,EAAWzI,GAAkBC,EAAG,EAAE,EACxC,OAAOqB,EAAc,CAAC,KAAKxB,aAAc2I,CAAQ,CAAC,EAAElH,KAClDiB,EAAU,CAAC,CAACL,EAAYE,CAAa,IAC5B,KAAK3C,eAAeyH,0BAA0BhF,EAAYE,CAAa,CAC/E,EACDb,EAAKkH,GACIA,EACJlH,IAAKmH,IACG,CACL/B,GAAI,KAAKzH,UAAUkJ,QAAQM,EAAMC,cAAgB,QAAQ,EACzDR,MAAO,KAAKjJ,UAAUkJ,QAAQM,EAAME,aAAe,eAAe,EAClExE,SAAUsE,EAAMtB,UAAY,CAAA,GAAI7F,IAAKsH,GAC5BzE,EAAQ0E,KAAMd,GACZA,EAAOrB,KAAOkC,CACtB,CACF,GAEJ,EACA9C,OAAQgD,GAAMA,IAAMC,MAAS,CACjC,EACDzH,EAAKkH,IACI,CACLrE,QAASA,EACTQ,aAAc6D,GAEjB,CAAC,CAEN,CAEQQ,qBAAqB7E,EAA4B8E,EAA2B,CAClF,IAAMC,EAAkC,CAAA,EAExC,QAAWxC,KAAMuC,EAAmB,CAClC,IAAME,EAAMhF,EAAQ0E,KAAMO,GAAMA,EAAE1C,KAAOA,CAAE,EACvCyC,GACFD,EAAatD,KAAKuD,CAAG,CAEzB,CACA,IAAME,EAAclF,EAAQ2B,OAAQsD,GAAM,CAACF,EAAaL,KAAMS,GAAMA,EAAE5C,KAAO0C,EAAE1C,EAAE,CAAC,EAClF,MAAO,CAAC,GAAGwC,EAAc,GAAGG,CAAW,CACzC,CAEA7E,gBAAgBL,EAA0B,CACxC,OAAO,KAAKvD,gBAAgBS,KAC1BC,EAAKiI,GAAiB,CACpB,QAAWJ,KAAOI,EAAe,CAC/B,IAAMnD,EAAQjC,EAAQkC,UAAW+C,GAAMA,EAAE1C,KAAOyC,CAAG,EAC/C/C,EAAQ,KACVjC,EAAQiC,CAAK,EAAE4B,OAAS,GAE5B,CACA,OAAO,KAAKgB,qBAAqB7E,EAASoF,CAAa,CACzD,CAAC,CAAC,CAEN,CAEAC,aAAaC,EAAmBC,EAAgB,CAC9C,OAAOtI,EAAc,CAAC,KAAKxB,aAAc,KAAKO,eAAgB,KAAKL,cAAc,CAAC,EAAEuB,KAClFiB,EAAU,CAAC,CAACL,EAAYC,EAAcC,CAAa,IACjD,KAAKpD,eACF4K,gBAAgBF,EAAWxH,EAAYyH,CAAQ,EAC/CrI,KAAKC,EAAI,IAAM,CAACW,EAAYC,EAAcC,CAAa,CAA4C,CAAC,CAAC,EAE1GH,GAAI,CAAC,CAACC,EAAYC,EAAcC,CAAa,IAAK,CAChD,KAAK1C,uCAAuCmK,sBAC1C3H,EACAyH,EACAxH,GAAgBC,CAAa,CAEjC,CAAC,EACD0H,GAAK,CAAC,CAAC,CAEX,CAEMC,YAAYxD,EAAc,QAAAxD,GAAA,sBAC9B,GAAI,CACF,IAAMb,EAAa,MAAMgB,GAAe,KAAKrD,YAAY,EACnD+F,GAAW,MAAM1C,GAAe,KAAKlE,eAAegL,eAAe9H,EAAYqE,CAAI,CAAC,IAAI3D,WAC9F,GAAI,CAACgD,GAAS/C,OACZ,OAGF,IAAMoH,EAAmB,MAAM/G,GAC7B7B,EAAc,CAAC,KAAKpB,eAAgB,KAAKJ,aAAc,KAAKO,cAAc,CAAC,EAAEkB,KAC3EC,EAAI,CAAC,CAAC0C,EAAS/B,EAAYC,CAAY,IACrC,KAAK+H,sBAAsBtE,EAAS3B,EAAS/B,EAAYC,CAAY,CAAC,CACvE,CACF,EAEGgI,EAAuB,MAAMjH,GAAe,KAAKzC,eAAe,EACtE,QAAW2J,KAAOH,EAChBE,EAAqBE,IAAID,EAAIzD,GAAIyD,CAAG,EAEtC,KAAK3J,gBAAgB4B,KAAK8H,CAAoB,CAChD,OAASG,EAAG,CACVC,QAAQC,MAAM,wBAAyBF,CAAC,CAC1C,CACF,GAEAG,cAAcvI,EAAsB,CAClC,KAAKrC,aAAawC,KAAKH,CAAU,CACnC,CAEAwI,gBAAgBvI,EAA0B,CACxC,KAAK/B,eAAeiC,KAAKF,CAAY,CACvC,CAEAwI,eAAenB,EAAuB,CACpC,KAAK3I,gBAAgBwB,KAAKmH,CAAa,CACzC,CAEAoB,eAAeC,EAAoB,CACjC,KAAK/J,cAAcuB,KAAKwI,CAAW,CACrC,CAEQ7F,YACNxC,EAA8D,CAE9D,YAAKZ,uBAAuBS,KAAKG,CAAG,EAC7B,KAAKX,eACd,CAEQiJ,6BACN5I,EAAqC,CAErC,GAAI,KAAKtC,sBACP,OAAO,KAAKA,sBAAsBmL,UAAUC,2BAA6BhC,OAE3E,OAAQ9G,EAAU,CAChB,IAAK,UACH,OAAO,KAAK9C,qBACd,IAAK,UACH,OAAO,KAAKC,qBACd,IAAK,OACH,OAAO,KAAKM,kBACd,IAAK,cACH,OAAO,KAAKL,wBAChB,CAEF,CAEQ2L,sBAAsB9I,EAA0B,CACtD,MAAO,CACL0G,QAASqC,GAAeC,aACxBC,SAAUC,GAAeC,mBACzBC,OAAQ,CACN,CACEC,OAAQrJ,EACT,EAGP,CAEQgC,yBAAyBD,EAA4B,CAC3D,MAAO,CACLyC,GAAIzC,EAAO2E,SAAW,GACtBhB,YAAa3D,EAAOuH,YAAc,GAClCtD,MAAOjE,EAAOwH,UACdnD,SAAU,GAEd,CAEQ2B,sBACNtE,EACA3B,EACA/B,EACAC,EAA+B,CAE/B,IAAMwJ,EAA0D,CAAA,EAChE1H,EAAQkC,QAASjC,GAAU,CACpBA,GAAQ2E,UAGb8C,EAAUzH,EAAO2E,OAAO,EAAI3E,EAC9B,CAAC,EAED,IAAM0H,EAAUzJ,GAAgBD,EAChC,OACE0D,GAASrE,IAAKsK,GAAO,CACnB,IAAMC,EAAkC,CAAA,EACxCD,OAAAA,GAAKxI,QAAQ8C,QAAS4F,GAAS,CACxBA,GAAOlD,UAGZiD,EAAWC,EAAMlD,OAAO,EAAI,KAAKmD,eAAeD,EAAOJ,EAAUI,EAAMlD,OAAO,CAAC,EACjF,CAAC,EACD,KAAKoD,iBAAiBL,EAASC,EAAKF,EAAWG,CAAU,EAElD,CACLnF,GAAIkF,GAAK3F,aAAe,GACxBO,KAAMqF,EAEV,CAAC,GAAK,CAAA,CAEV,CAEQE,eAAeD,EAA4B7H,EAA4B,CAC7E,OAAQA,GAAQgI,UAAS,CACvB,KAAKC,GAAUC,oBACb,MAAO,CACLC,SAAU,WACV1J,MAAOoJ,EAAMO,eAAe3J,OAAS,EACrC4J,KAAMR,EAAMO,eAAeE,cAE/B,KAAKL,GAAUM,mBACb,MAAO,CACLJ,SAAU,UACV1J,MAAOoJ,EAAMW,cAEjB,KAAKP,GAAUQ,iBACb,MAAO,CACLN,SAAU,QACV1J,MAAOoJ,EAAMa,YAEjB,KAAKT,GAAUU,oBACf,KAAKV,GAAUW,gBACb,OAAO,KAAKC,SAAShB,EAAMiB,SAAS,EACtC,KAAKb,GAAUc,iBACb,OAAIlB,EAAMmB,iBACD,KAAKC,UAAUpB,EAAMmB,gBAAgB,EAEvC,KAAKC,UAAUpB,EAAMqB,WAAW,EACzC,KAAKjB,GAAUkB,kBACf,KAAKlB,GAAUmB,iBACb,OAAO,KAAKC,SAASxB,EAAMqB,WAAW,EACxC,KAAKjB,GAAUqB,oBACb,OAAO,KAAKC,mBAAmBvJ,EAAQ6H,EAAMqB,WAAW,EAC1D,KAAKjB,GAAUuB,mBACb,MAAO,CACLrB,SAAU,UACV1J,MAAOoJ,EAAM4B,cAEjB,KAAKxB,GAAUyB,eACf,KAAKzB,GAAU0B,uBACb,MAAO,CACLxB,SAAU,OACV1J,MAAOoJ,GAAO+B,cAAcvC,QAAU,CAAA,GAE1C,QACE,MACJ,CACF,CAEQkC,mBAAmBvJ,EAA8BvB,EAAc,CACrE,IAAMoL,EAAQ7J,GAAQ8J,iBAAiBlF,KAAMmF,GAAMA,GAAGtL,QAAUA,CAAK,GAAGoL,MACxE,OAAO,KAAKR,SAASQ,GAASpL,CAAK,CACrC,CAEQ4K,SAAS5K,EAAgBuL,EAAa,CAC5C,MAAO,CACL7B,SAAU,OACV1J,MAAOA,GAAS,GAChBuL,KAAMA,GAAQ,GAElB,CAEQf,UAAUxK,EAAqC,CACrD,GAAI,OAAOA,GAAU,SACnB,MAAO,CACL0J,SAAU,QACV1J,MAAOA,GAIX,GAAIA,GAAOwL,iBAAmB,GAC5B,MAAO,CACL9B,SAAU,QACV1J,MAAO,IAGX,GAAI,CAACA,GAAOyL,cACV,MAAO,CACL/B,SAAU,QACV1J,MAAOA,GAAOwL,gBAGlB,IAAME,EAAS,CACbC,QAAS3L,GAAO4L,eAChBC,MAAO7L,GAAOwL,eACdM,IAAK9L,GAAO+L,WAGVC,EAAsBhM,GAAOwL,eACjC,GAAI,CACFQ,EAAsBC,GAAOP,EAAQ,eAAe,CACtD,OAAS/D,EAAG,CACVC,QAAQsE,KAAK,iCAAkCR,EAAQ/D,CAAC,CAC1D,CAEA,MAAO,CACL+B,SAAU,QACV1J,MAAOgM,EAEX,CAEQ5B,SAASpK,EAAY,CAC3B,MAAO,CACL0J,SAAU,OACV1J,MAAOA,EAEX,CAEQ4B,kBACNrC,EACAkC,EACA0K,EAAiB,CAEjB,OAAO,KAAKhE,6BAA6B5I,CAAU,GAAG6M,iBAAiB3K,EAAS0K,CAAQ,GAAK,CAAA,CAC/F,CAEcE,qBAAqBC,EAA8BnD,EAA+B,QAAA/I,GAAA,sBAC9F,IAAMmM,EAAsB,MAAMhM,GAAe,KAAKnE,OAAOwE,UAAU,EACvEuI,EAAW,UAAe,CACxBO,SAAU,SAEV1J,MAAOsM,GAAWvF,WAAawF,EAEnC,GAEcjD,iBACZ/J,EACA2J,EACAF,EACAG,EAA+B,QAAA/I,GAAA,sBAE/B,MAAM,KAAKiM,qBAAqBnD,EAAKC,CAAU,EAC/C,KAAKhB,6BAA6B5I,CAAU,GAAG+J,iBAAiBJ,EAAKF,EAAWG,CAAU,CAC5F,GAEAqD,qBAAqBxI,EAAU,CAC7B,OAAO,KAAK5F,OAAOO,KACjBC,EAAKgF,GAAQ,CACX,IAAM6D,EAAM7D,EAAKuC,KAAMpC,GAAMA,EAAER,aAAeS,CAAE,EAChD,GAAI,CAACyD,EACH,OAAOzD,EAET,IAAMyI,EAAYhF,GAAK/G,QAAQyF,KAAMuG,GAAMA,EAAE5D,YAAc,sBAAsB,GAAG2B,YAC9EkC,EAAWlF,GAAK/G,QAAQyF,KAAMuG,GAAMA,EAAE5D,YAAc,qBAAqB,GAAG2B,YAClF,GAAIgC,GAAaE,EACf,MAAO,GAAGF,CAAS,IAAIE,CAAQ,GAAGC,KAAI,EAExC,IAAMC,EAAQpF,GAAK/G,QAAQyF,KAAMuG,GAAMA,EAAE5D,YAAc,iBAAiB,GAAG2B,YAC3E,GAAIoC,EACF,OAAOA,EAET,IAAMhB,EAAQpE,GAAK/G,QAAQyF,KAAMuG,GAAMA,EAAE5D,YAAc,wBAAwB,GAAG2B,YAClF,OAAIoB,GAGG7H,CACT,CAAC,CAAC,CAEN,CAEA8I,aAAW,CACT,KAAK/P,uCAAuC4C,gBAAe,CAC7D,CAEQoN,aACNlN,EAA8D,CAE9D,OAAOnB,EAAc,CAAC,KAAKxB,aAAc,KAAKO,eAAgB,KAAKL,cAAc,CAAC,EAAEuB,KAClFC,EAAI,CAAC,CAACW,EAAYC,EAAcC,CAAa,IAAK,CAChD,IAAMuN,EAAc,KAAK3Q,eAAe4Q,eAAe,CAAC,GAAIpN,EAAIqN,SAAW,CAAA,CAAG,CAAC,EAC3EF,GAAezN,IAAe,YAC5BC,IAAiB,IACnBwN,EAAYE,SAAShK,KAAK,KAAKoF,sBAAsB9I,CAAY,CAAC,EAItE,IAAI2N,EAAS,KAAK9Q,eAAe+Q,cAAcvN,EAAIwN,OAAO,EAC1D,GAAI,CAACF,GAAQjN,OAAQ,CACnB,IAAM+I,EAAUzJ,GAAgBD,EAChC4N,EAAS,KAAKhF,6BAA6Bc,CAAO,GAAGqE,qBACvD,CAiBA,MAhByB,CACvBC,OAAQ,CACNC,WAAY3N,GAAKQ,eAAeC,MAAQ,IAE1CmN,UAAWT,EACXU,cAAe,CACbC,OAAQ9N,GAAK6N,eAAeC,OAC5BC,SAAU/N,GAAK6N,eAAeE,UAEhCT,OAAQA,GAAU,CAAA,EAClBU,kBAAmB,CACjB,CAAEC,WAAY,EAAGC,cAAevE,GAAUc,iBAAkB0D,YAAaxE,GAAUc,gBAAgB,CAAE,EAEvG2D,iBAAkBxO,EAItB,CAAC,CAAC,CAEN,CAEQK,aACND,EAA8D,CAE9D,IAAMqO,EAAa,KAAKnB,aAAalN,CAAG,EACxC,OAAOnB,EAAc,CAAC,KAAKxB,aAAcgR,CAAU,CAAC,EAAEvP,KACpDiB,EAAU,CAAC,CAACL,EAAY4O,CAAO,IAAM,KAAK9R,eAAegG,YAAY9C,EAAY4O,CAAO,CAAC,CAAC,CAE9F,CAEQtK,yBACN5D,EACAqB,EACA/B,EACAC,EACA4O,EAAyC,CAGzC,MAAO,CACLtK,KAFW,KAAKyD,sBAAsBtH,EAAYqB,EAAS/B,EAAYC,CAAY,EAGnFgD,eAAgB,CACdC,WAAY2L,GAAU3L,YAAc,GACpCC,QAAS0L,GAAU1L,SAAW,GAC9B2L,aAAcD,GAAUC,cAAgB,GAG9C,CAEAC,oBACE/O,EACAC,EACA+O,EAAmB,CAEnB,IAAMC,EAA4B,CAChC,UACA,OACA,2BACA,sBACA,uBACA,WACA,WACA,iBAAiB,EAGbC,EAAuB,CAAC,OAAQ,WAAW,EAEjD,OAAIlP,IAAe,UACViP,EAAgB5P,IACrB,CAAC8P,EAAOhL,KACL,CACCM,GAAIN,EAAMiL,SAAQ,EAClBC,KAAMF,EACNxB,QAAS,CACP,CACEhH,QAAS2I,EAAYC,sBACrBrG,SAAUsG,GAAqBpG,mBAC/BC,OAAQ,CAAC,CAAEC,OAAQ6F,CAAK,CAAE,EAC3B,EAEHM,SAAW3L,GACT9C,GACE,KAAKlE,eAAe4S,gBAAgB1P,EAAY,CAC9CgE,YAAaF,EAAOW,GACpBtD,OAAQ,CAAC,CAAEwF,QAAS2I,EAAYC,sBAAuBrE,YAAaiE,CAAK,CAAE,EAC5E,CAAC,GAE4C,EAGtDnP,IAAe,UACViP,EAAgB5P,IACrB,CAAC8P,EAAOhL,KACL,CACCM,GAAIN,EAAMiL,SAAQ,EAClBC,KAAMF,EACNxB,QAAS,CACP,CACEhH,QAAS2I,EAAYK,sBACrBzG,SAAUsG,GAAqBpG,mBAC/BC,OAAQ,CAAC,CAAEC,OAAQ6F,CAAK,CAAE,EAC3B,EAEHM,SAAW3L,GACT9C,GACE,KAAKlE,eAAe4S,gBAAgB1P,EAAY,CAC9CgE,YAAaF,EAAOW,GACpBtD,OAAQ,CAAC,CAAEwF,QAAS2I,EAAYK,sBAAuBzE,YAAaiE,CAAK,CAAE,EAC5E,CAAC,GAE4C,EAGtDnP,IAAe,cAEfgP,GAAUY,QAAQvQ,IACf8P,IACE,CACC1K,GAAI0K,EAAM1K,GACV4K,KAAMF,EAAME,KACZQ,YAAaV,EAAMW,UAAUlJ,KAAM6I,GAAaA,EAAS9I,UAAY2I,EAAYS,sBAAsB,GACnGrF,WACJiD,QAASwB,EAAMxB,QACf8B,SAAW3L,GACT9C,GACE,KAAKlE,eAAe4S,gBAAgB1P,EAAY,CAC9CgE,YAAaF,EAAOW,GACpBtD,OAAQgO,EAAMW,UACf,CAAC,GAE4C,GACnD,CAAA,EAIL9P,IAAe,YAAcC,IAAiB,OACzCiP,EAAW7P,IAChB,CAAC8P,EAAOhL,KACL,CACCM,GAAIN,EAAMiL,SAAQ,EAClBC,KAAMF,EACNxB,QAAS,CACP,CACEhH,QAAS2I,EAAYU,mBACrB9G,SAAUsG,GAAqBpG,mBAC/BC,OAAQ,CAAC,CAAEC,OAAQ6F,CAAK,CAAE,EAC3B,EAEHM,SAAW3L,GACT9C,GACE,KAAKlE,eAAe4S,gBAAgB1P,EAAY,CAC9CgE,YAAaF,EAAOW,GACpBtD,OAAQ,CAAC,CAAEwF,QAAS2I,EAAYU,mBAAoB9E,YAAaiE,CAAK,CAAE,EACzE,CAAC,GAE4C,EAGnD,CAAA,CACT,iDA7xBWnT,GAAuBiU,EA4DxBC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,EAAAR,EAAAS,EAAA,EAAAT,EAAAU,EAAA,EAAAV,EAAAG,EAAA,EAAAH,EAAAW,EAAA,EAAAX,EAajBY,GAAkC,CAAA,EAAAZ,EAGlCa,GAAuB,CAAA,CAAA,CAAA,CAAA,kCA5EtB9U,EAAuB+U,QAAvB/U,EAAuBgV,SAAA,CAAA,CAAA,SAAvBhV,CAAuB,GAAA,ICnFpC,IAKaiV,GALbC,GAAAC,EAAA,KACAC,KACAC,SAGaJ,IAAgB,IAAA,CAAvB,MAAOA,CAAgB,CAD7BK,aAAA,CAEmB,KAAAC,eAAiB,IAAIC,GAAuB,CAAC,EAC9D,KAAAC,QAAU,KAAKF,eAAeG,KAAKC,GAAU,EAAK,CAAC,EAClC,KAAAC,cAAgB,IAAIJ,GAAsB,CAAC,EAC5D,KAAAK,aAAe,KAAKD,cAAcF,KAAKC,GAAU,EAAE,CAAC,EAI7CG,cAAiBC,EAAgB,CACtC,YAAKR,eAAeS,KAAK,EAAI,EACtB,KAAKC,WAAWF,CAAO,CAChC,CAEOG,gBAAc,CACnB,KAAKX,eAAeS,KAAK,EAAK,EAC9B,KAAKG,kBAAkBC,MAAK,CAC9B,CAEOC,iBAAiBF,EAAmC,CACzD,KAAKA,iBAAmBA,CAC1B,CAEQF,WAAcF,EAAgB,CACpC,YAAKI,kBAAkBC,MAAK,EACrB,KAAKD,kBAAkBG,gBAAgBP,CAAO,CACvD,CAEOQ,eAAeC,EAAmB,CACvC,KAAKZ,cAAcI,KAAKQ,CAAW,CACrC,iDA7BWvB,EAAgB,CAAA,kCAAhBA,EAAgBwB,QAAhBxB,EAAgByB,UAAAC,WADH,MAAM,CAAA,CAAA,SACnB1B,CAAgB,GAAA,ICL7B,OAgBa2B,GAhBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,qDAUaT,IAAkB,IAAA,CAAzB,MAAOA,CAAkB,CAM7BU,YAAoBC,EAAkC,CAAlC,KAAAA,iBAAAA,EAClB,KAAKC,QAAU,KAAKD,iBAAiBC,QACrC,KAAKC,aAAe,KAAKF,iBAAiBE,YAC5C,CAEAC,oBAAkB,CAChB,KAAKH,iBAAiBI,iBAAiB,KAAKC,mBAAmB,CACjE,CAEOC,gBAAc,CACnB,KAAKN,iBAAiBM,eAAc,CACtC,iDAjBWjB,GAAkBkB,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAlBnB,EAAkBoB,UAAA,CAAA,CAAA,eAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,WACeE,EAAgB,gQCjB9DC,EAAA,EAAA,aAAA,EAAA,CAAA,eACEA,EAAA,EAAA,aAAA,EAAa,EAAA,iBAAA,EAETC,EAAA,CAAA,eACAC,EAAA,EAAA,OAAA,CAAA,EACAF,EAAA,EAAA,SAAA,CAAA,EAAwBG,EAAA,QAAA,UAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAST,EAAAN,eAAA,CAAgB,CAAA,CAAA,EAC/CQ,EAAA,EAAA,UAAA,EAAUC,EAAA,GAAA,OAAA,EAAKO,EAAA,EAAW,EACnB,EACO,EAEpBC,GAAA,GAAA,KAAA,CAAA,EACFD,EAAA,QAXmCE,EAAA,WAAA,KAAA,EAAkB,OAAA,MAAA,EAAgB,SAAAC,EAAA,EAAA,EAAAb,EAAAX,OAAA,CAAA,EAG/DyB,EAAA,CAAA,EAAAC,EAAA,IAAAF,EAAA,EAAA,EAAAb,EAAAV,YAAA,EAAA,GAAA,kBDWM0B,GAAgBC,GAAEC,GAAaC,GAAEC,EAAYC,GAAEC,GAAwBC,GAAgBC,GAAAC,GAAEC,GAAeC,EAAA,EAAAC,OAAA,CAAA;+GAAA,CAAA,CAAA,CAAA,SAEvGnD,CAAkB,GAAA,IEhB/B,IAgBaoD,GAhBbC,GAAAC,EAAA,SAgBaF,IAAwB,IAAA,CAA/B,MAAOA,CAAwB,CACnCG,UAAUC,EAAoBC,EAAkB,CAC9C,OAAOD,GAASE,OAAQC,GAAWA,GAAQC,UAAUH,GAAQI,IAAKJ,GAAQK,UAAU,GAAK,EAAI,CAC/F,iDAHWV,EAAwB,CAAA,6DAAxBA,EAAwBW,KAAA,EAAA,CAAA,CAAA,SAAxBX,CAAwB,GAAA,IChBrC,IAQaY,GARbC,GAAAC,EAAA,KAAAC,IAEAC,SAMaJ,IAA4B,IAAA,CAAnC,MAAOA,CAA4B,CAJzCK,aAAA,CAKmB,KAAAC,aAAgBC,EAAOC,EAAe,EAEvDC,UAAUC,EAA4B,CACpC,MAAI,CAACA,GAAY,CAAC,KAAKJ,aACd,KAGP,KAAKA,aAAaK,2BAA2BD,EAAUE,GAAeC,qBAAqB,GAAGC,WAAa,IAE/G,iDAVWd,EAA4B,CAAA,iEAA5BA,EAA4Be,KAAA,EAAA,CAAA,CAAA,SAA5Bf,CAA4B,GAAA,ICRzC,IAQagB,GARbC,GAAAC,EAAA,KAAAC,IAEAC,SAMaJ,IAAoB,IAAA,CAA3B,MAAOA,CAAoB,CAJjCK,aAAA,CAKmB,KAAAC,aAAgBC,EAAOC,EAAe,EAEvDC,UAAUC,EAA4B,CAQpC,GAPI,CAACA,GAAY,CAAC,KAAKJ,cAGJ,KAAKA,aAAaK,2BACnCD,EACAE,EAAYC,kBAAkB,GAC7BC,cACgB,YACjB,MAAO,GAET,IAAMC,EAAgB,KAAKT,aAAaK,2BACtCD,EACAM,GAAeC,qBAAqB,GACnCC,UACH,OAAKH,EAGEA,EAAcI,QAAO,EAAKC,KAAKC,IAAG,EAFhC,EAGX,iDAtBWrB,EAAoB,CAAA,yDAApBA,EAAoBsB,KAAA,EAAA,CAAA,CAAA,SAApBtB,CAAoB,GAAA,ICRjC,IAAAuB,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,OCDM,SAAUC,GAAcC,EAAgC,CAC5D,OAAOC,mBAAmBC,KAAKC,UAAUH,CAAO,CAAC,CACnD,CAEM,SAAUI,GAAcJ,EAAe,CAC3C,OAAOE,KAAKG,MAAMC,mBAAmBN,CAAO,CAAC,CAC/C,CAEM,SAAUO,GAAgBP,EAAgC,CAC9D,QAAWQ,KAAUR,EAInB,GAHI,CAACQ,EAAOC,SAAW,CAACD,EAAOE,UAG3B,CAACF,EAAOG,SACV,MAAO,GAGX,MAAO,EACT,CAlBA,IAAAC,GAAAC,EAAA,8BEiBEC,GAAA,CAAA,wBAEEA,GAAA,CAAA,qCAUEC,EAAA,EAAA,SAAA,EAAA,EAKEC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,UAAAC,EAAAF,EAAA,CAAA,EAAA,OAAAG,EAASD,EAAAE,wBAAAL,CAAA,CAA+B,CAAA,CAAA,EAExCJ,EAAA,EAAA,WAAA,EAAA,EAAyCU,EAAA,EAAA,QAAA,EAAMC,EAAA,EAAW,sCAX9DX,EAAA,EAAA,MAAA,EAAA,EAAqE,EAAA,SAAA,EAAA,EAChBC,EAAA,QAAA,UAAA,CAAA,IAAAG,EAAAF,EAAAU,CAAA,EAAAN,UAAAC,EAAAF,EAAA,CAAA,EAAA,OAAAG,EAASD,EAAAM,wBAAAT,CAAA,CAA+B,CAAA,CAAA,EACzFM,EAAA,CAAA,EACFC,EAAA,EACAG,EAAA,EAAAC,GAAA,EAAA,EAAA,SAAA,EAAA,EASFJ,EAAA,4BAXIK,EAAA,CAAA,EAAAC,EAAA,IAAAb,EAAAc,KAAA,GAAA,EAGCF,EAAA,EAAAG,EAAA,OAAA,CAAAf,EAAAgB,MAAA,6BANPpB,EAAA,EAAA,MAAA,EAAA,EACEc,EAAA,EAAAO,GAAA,EAAA,EAAA,MAAA,EAAA,EAcFV,EAAA,mBAd0BK,EAAA,EAAAG,EAAA,UAAAZ,EAAAe,WAAA,CAAA,4BAD1BR,EAAA,EAAAS,GAAA,EAAA,EAAA,MAAA,EAAA,yBAAwBJ,EAAA,OAAAZ,EAAAiB,WAAA,CAAA,EAAoB,WAAAC,CAAA,sCAkB5CzB,EAAA,EAAA,SAAA,EAAA,EAAwCC,EAAA,QAAA,UAAA,CAAAC,EAAAwB,CAAA,EAAA,IAAAnB,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAoB,sBAAA,CAAuB,CAAA,CAAA,EACtEjB,EAAA,CAAA,mBACFC,EAAA,QADEK,EAAA,EAAAC,EAAA,IAAAW,EAAA,EAAA,EAAA,2BAAA,EAAA,GAAA,0BAKF5B,EAAA,EAAA,mBAAA,EAAA,EAAmC,EAAA,uBAAA,EACV,EAAA,UAAA,EACXU,EAAA,EAAA,aAAA,EAAWC,EAAA,EAAW,EAElCX,EAAA,EAAA,GAAA,EAAGU,EAAA,CAAA,mBAA+BC,EAAA,EAAI,SAJtBQ,EAAA,OAAA,OAAA,EAIbH,EAAA,CAAA,EAAAa,EAAAD,EAAA,EAAA,EAAA,aAAA,CAAA,0BASD5B,EAAA,EAAA,YAAA,EACEU,EAAA,CAAA,mBACFC,EAAA,SADEK,EAAA,EAAAC,EAAA,IAAAW,EAAA,EAAA,EAAA,iCAAA,EAAA,GAAA,0BAEF5B,EAAA,EAAA,YAAA,EACEU,EAAA,CAAA,mBACFC,EAAA,SADEK,EAAA,EAAAC,EAAA,IAAAW,EAAA,EAAA,EAAA,mCAAA,EAAA,GAAA,0BAEF5B,EAAA,EAAA,YAAA,EACEU,EAAA,CAAA,mBACFC,EAAA,SADEK,EAAA,EAAAC,EAAA,IAAAW,EAAA,EAAA,EAAA,iCAAA,EAAA,GAAA,6BARJE,EAAA,CAAA,EACEhB,EAAA,EAAAiB,GAAA,EAAA,EAAA,aAAA,EAAA,EAAyD,EAAAC,GAAA,EAAA,EAAA,aAAA,EAAA,EAGE,EAAAC,GAAA,EAAA,EAAA,aAAA,EAAA,uBAH9CjB,EAAA,EAAAG,EAAA,OAAAZ,EAAA2B,gBAAAC,QAAA,KAAA,KAAA5B,EAAA2B,gBAAAC,OAAA,QAAA,EAGAnB,EAAA,EAAAG,EAAA,OAAAZ,EAAA2B,gBAAAC,QAAA,KAAA,KAAA5B,EAAA2B,gBAAAC,OAAA,UAAA,EAGAnB,EAAA,EAAAG,EAAA,OAAAZ,EAAA2B,gBAAAC,QAAA,KAAA,KAAA5B,EAAA2B,gBAAAC,OAAA,UAAA,6BAVjBnC,EAAA,EAAA,kBAAA,EAAA,EAA6C,EAAA,YAAA,EAC/BU,EAAA,CAAA,mBAAmCC,EAAA,EAC/CyB,EAAA,EAAA,QAAA,EAAA,EACAtB,EAAA,EAAAuB,GAAA,EAAA,EAAA,eAAA,EAAA,EAWF1B,EAAA,kBAbcK,EAAA,CAAA,EAAAa,EAAAD,EAAA,EAAA,EAAA,iBAAA,CAAA,EACIZ,EAAA,CAAA,EAAAG,EAAA,cAAAZ,EAAA2B,eAAA,EACDlB,EAAA,EAAAG,EAAA,OAAAZ,EAAA2B,gBAAAI,OAAA,sCAcjBtC,EAAA,EAAA,SAAA,EAAA,EAAsDC,EAAA,QAAA,UAAA,CAAAC,EAAAqC,CAAA,EAAA,IAAAhC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAiC,gBAAA,CAAiB,CAAA,CAAA,EAC9E9B,EAAA,CAAA,mBACFC,EAAA,EACAX,EAAA,EAAA,SAAA,EAAA,EAAyCC,EAAA,QAAA,UAAA,CAAAC,EAAAqC,CAAA,EAAA,IAAAhC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAkC,kBAAA,CAAmB,CAAA,CAAA,EAAE/B,EAAA,CAAA,mBAAkCC,EAAA,QAFvGK,EAAA,EAAAC,EAAA,IAAAW,EAAA,EAAA,EAAA,gBAAA,EAAA,GAAA,EAEqEZ,EAAA,CAAA,EAAAa,EAAAD,EAAA,EAAA,EAAA,gBAAA,CAAA,GD/EzE,OAyDac,GAzDbC,GAAAC,EAAA,KAAAC,IACAC,IAYAC,KAQAC,KACAC,KACAC,KACAC,IAEAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,8FAuBajB,IAAmB,IAAA,CAA1B,MAAOA,CAAmB,CAE9B,IACIkB,QAAQC,EAA8B,CACxC,IAAMC,EAAiB,KAAKC,SAAQ,EACpC,KAAKA,SAASC,IAAIH,CAAK,EAClB,KAAKI,eAAeH,EAAgBD,CAAK,GAC5C,KAAKK,eAAeF,IAAIG,MAAS,CAErC,CAIA,IACIC,KAAKP,EAAe,CACtB,KAAKQ,MAAML,IAAIH,CAAK,CACtB,CAGA,IAAaS,cAAcT,EAAoB,CAC7C,IAAMD,EAAUC,GAAOU,IAAKC,GAAOC,GAAAC,GAAA,GAAKF,GAAL,CAAQpD,OAAQ,EAAI,EAAmB,EAC1E,KAAKuD,eAAeX,IAAIJ,GAAW,CAAA,CAAE,CACvC,CAgCAgB,aAAA,CArDQ,KAAAb,SAAWc,EAAgC,CAAA,CAAE,EAS3C,KAAAC,cAAgB,IAAIC,GAEtB,KAAAV,MAAQQ,EAAiB,CAAA,CAAE,EAM3B,KAAAF,eAAiBE,EAAsB,CAAA,CAAE,EAQhC,KAAAG,gBAAkBC,EAAOC,EAAe,EACxC,KAAAC,yBAA2BF,EAAOG,EAA4B,EAC9D,KAAAC,iBAAmBJ,EAAOK,EAAgB,EAE1C,KAAAC,KAAO,CACtBC,MAAOC,GAAiB,KAAKJ,iBAAiBK,OAAO,aAAa,CAAC,GAG3D,KAAAC,KAAa,OACJ,KAAAC,aAAef,EAAqB,CAAA,CAAE,EACtC,KAAAvD,WAAauE,EAAS,IAAM,CAC7C,GAAG,KAAKC,YAAY,KAAKF,aAAY,CAAE,EACvC,GAAG,KAAKE,YAAY,KAAKnB,eAAc,CAAE,CAAC,CAC3C,EACkB,KAAAnD,WAAaqE,EAAS,IAAME,OAAO3B,KAAK,KAAK9C,WAAU,CAAE,EAAE0E,OAAS,CAAC,EACrE,KAAA9D,gBAAkB,IAAI+D,GAAoB,GAAI,CAC/DC,WAAY,CAACC,GAAWC,SAAU,KAAKC,oBAAmB,EAAI,KAAKC,oBAAmB,CAAE,EACzF,EACkB,KAAAC,YAAW,QACX,KAAAC,gBAAkB,CACnCC,GAAiB,YACjBA,GAAiB,WACjBA,GAAiB,MACjBA,GAAiB,IAAO,EAEP,KAAAvC,eAAiBW,EAA2BV,MAAS,EACrD,KAAAuC,mBAAqBb,EAAS,IAAM,KAAK3B,eAAc,GAAM,KAAKqB,KAAKC,MAAK,CAAE,EAG/FmB,GAAO,IAAK,CACV,KAAKC,iBAAiB,KAAKvC,MAAK,CAAE,CACpC,CAAC,CACH,CAEU5B,mBAAiB,CACzB,KAAKkD,KAAO,MACd,CAEUhE,uBAAqB,CACzB,KAAKoC,SAAQ,EAAGiC,OAAS,GAC3B,KAAK9D,gBAAgB2E,SAAS,EAAE,EAChC,KAAK3E,gBAAgB4E,gBAAe,EACpC,KAAKnB,KAAO,UAEZ,KAAKX,gBAAgB+B,eAAe,yBAAyB,CAEjE,CAEgBtG,wBAAwBuG,EAAmB,QAAAC,GAAA,sBAUzD,GATgB,MAAMC,GACpB,KAAK/B,yBAAyBgC,UAAU,CACtCC,MAAO,kCACPC,mCAAoC,GACpCC,QAAS,KAAKjC,iBAAiBkC,QAAQ,oCAAqC,CAAEC,SAAUR,EAAO9F,IAAI,CAAE,EACrGuG,KAAM,OACNC,kBAAmB,iBACpB,CAAC,EAES,CACP,KAAKxD,eAAc,IAAO8C,EAAO9F,MACnC,KAAKgD,eAAeF,IAAIG,MAAS,EAEnC,IAAMyB,EAAe,KAAKA,aAAY,EAAGoB,OAAQxC,GAAMA,EAAEtD,OAAS8F,EAAO9F,IAAI,EAC7E,KAAK0E,aAAa5B,IAAI4B,CAAY,EAClC+B,aAAaC,QAAQ,KAAKvD,MAAK,EAAG,CAAC,EAAGwD,KAAKC,UAAUlC,CAAY,CAAC,CACpE,CACF,GAEUpD,iBAAe,CAEvB,GADA,KAAKN,gBAAgB6F,cAAa,EAC9B,KAAK7F,gBAAgB8F,MAAO,CAC9B,IAAM9G,EAAO,KAAKgB,gBAAgB2B,MAC5BoE,EAA2B,CAAE/G,KAAAA,EAAM0C,QAAS,KAAKG,SAAQ,CAAE,EAC3D6B,EAAe,KAAKE,YAAY,KAAKF,aAAY,EAAGsC,OAAOD,CAAW,CAAC,EACzE,KAAK5D,MAAK,EAAG,CAAC,GAChBsD,aAAaC,QAAQ,KAAKvD,MAAK,EAAG,CAAC,EAAGwD,KAAKC,UAAUlC,CAAY,CAAC,EAEpE,KAAKA,aAAa5B,IAAI4B,CAAY,EAClC,KAAK1B,eAAeF,IAAI9C,CAAI,EAC5B,KAAKiH,WAAWC,MAAK,CACvB,CACF,CAEUvH,wBAAwBmG,EAAkC,CAClE,KAAK9C,eAAeF,IAAIgD,EAAO9F,IAAI,EACnC,KAAK6C,SAASC,IAAIgD,EAAOpD,OAAO,EAChC,KAAKkB,cAAcuD,KAAKrB,EAAOpD,OAAO,EACtC,KAAKuE,WAAWC,MAAK,CACvB,CAEUE,kBAAgB,CACxB,KAAKH,WAAWI,KAAI,EACpB,KAAK5C,KAAO,MACd,CAEQ1B,eAAeuE,EAA4BC,EAA0B,CAE3E,IAAMC,EAAsBlE,GAAsC,CAACA,EAAEmE,YAAYvH,OAE3EwH,EAAuBpE,IAA8B,CACzDqE,QAASrE,EAAEqE,QACXC,SAAUtE,EAAEsE,SACZC,OAAQvE,EAAEuE,SAGRC,EAAUR,EAAExB,OAAO0B,CAAkB,EAAEnE,IAAIqE,CAAmB,EAC9DK,EAAUR,EAAEzB,OAAO0B,CAAkB,EAAEnE,IAAIqE,CAAmB,EAElEI,OAAAA,EAAUA,EAAQE,KAAK,CAACC,EAAGC,IAAMD,EAAEN,QAAQQ,cAAcD,EAAEP,OAAO,CAAC,EACnEI,EAAUA,EAAQC,KAAK,CAACC,EAAGC,IAAMD,EAAEN,QAAQQ,cAAcD,EAAEP,OAAO,CAAC,EAE5DhB,KAAKC,UAAUkB,CAAO,IAAMnB,KAAKC,UAAUmB,CAAO,CAC3D,CAEQrC,iBAAiBxC,EAAc,CACrC,QAAWkF,KAAOlF,EAAM,CACtB,IAAMwB,EAAe0D,EAAM3B,aAAa4B,QAAQD,CAAG,EAAInF,OACvD,GAAIyB,EACF,GAAI,CACF,IAAMhC,EAAUiE,KAAK2B,MAAM5D,CAAY,EACvC,KAAKA,aAAa5B,IAAI,KAAK8B,YAAYlC,CAAO,CAAC,EAC/C,KACF,MAAQ,CACN,KAAKgC,aAAa5B,IAAI,CAAA,CAAE,EACxB2D,aAAa8B,WAAWH,CAAG,CAC7B,CAEJ,CACF,CAEQjD,qBAAmB,CACzB,OAAQqD,GAAqD,CAC3D,IAAM7F,EAAQ6F,EAAQ7F,MAEtB,MADe8F,EAAQ,KAAKrI,WAAU,EAAGsI,KAAMpF,GAAMA,EAAEtD,OAAS2C,CAAK,EACrD,CAAEgG,WAAY,EAAI,EAAK,IACzC,CACF,CAEQvD,qBAAmB,CACzB,OAAQoD,GACQA,EAAQ7F,MACZmC,OAAS,GACV,CAAE8D,WAAY,EAAI,EAEpB,IAEX,CAEQhE,YAAYlC,EAAqB,CACvC,OAAOA,EAAQsF,KAAK,CAACV,EAAGC,IAAMD,EAAEtH,KAAK6I,kBAAiB,EAAGV,cAAcZ,EAAEvH,KAAK6I,kBAAiB,CAAE,CAAC,CACpG,iDAhLWrH,EAAmB,CAAA,+BAAnBA,EAAmBsH,UAAA,CAAA,CAAA,iBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,yrCCzDhClK,EAAA,EAAA,SAAA,CAAA,EAAyEC,EAAA,QAAA,UAAA,CAAAmK,OAAAlK,EAAAmK,CAAA,EAAA7J,EAAS2J,EAAA7B,iBAAA,CAAkB,CAAA,CAAA,EAClG5H,EAAA,CAAA,EACAV,EAAA,EAAA,WAAA,CAAA,EAA0BU,EAAA,EAAA,iBAAA,EAAeC,EAAA,EAAW,EAGtDX,EAAA,EAAA,eAAA,EAAA,CAAA,EAUC,EAAA,oBAAA,EAEGU,EAAA,CAAA,mBACFC,EAAA,EACAG,EAAA,EAAAwJ,GAAA,EAAA,EAAA,eAAA,CAAA,EACAtK,EAAA,GAAA,sBAAA,EACEc,EAAA,GAAAyJ,GAAA,EAAA,EAAA,eAAA,CAAA,EACF5J,EAAA,EAAuB,EAGzBG,EAAA,GAAA0J,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAA2B,GAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAD,EAAA,EAkBD,GAAAE,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAF,EAAA,EAMJ,GAAAG,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAH,EAAA,EASK,GAAAI,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAJ,EAAA,qDA1DoBtJ,EAAA,cAAA2J,CAAA,EAC7C9J,EAAA,EAAAC,EAAA,IAAAkJ,EAAAzD,mBAAA,EAAA,GAAA,EAMA1F,EAAA,CAAA,EAAAG,EAAA,uBAAA,EAAA,EAA6B,mBAAA,EAAA,EACJ,WAAA,EAAA,EACR,WAAA,OAAA,EACG,YAAA,OAAA,EACC,YAAAgJ,EAAA3D,eAAA,EACQ,mBAAA,EAAA,EACJ,aAAA2D,EAAA5D,WAAA,EAIvBvF,EAAA,CAAA,EAAAC,EAAA,IAAAW,EAAA,EAAA,GAAA,aAAA,EAAA,GAAA,EAEaZ,EAAA,CAAA,EAAAG,EAAA,OAAAgJ,EAAAxE,OAAA,MAAA,EAAuB,WAAAoF,CAAA,EAAmB,WAAAC,CAAA,EAExChK,EAAA,CAAA,EAAAG,EAAA,OAAAgJ,EAAAxE,OAAA,MAAA,EAAuB,WAAAsF,CAAA,EAAkB,WAAAC,CAAA,kBDuBxDC,EAAYC,GAAAC,GACZC,GACAC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAmBC,GAAAC,GAAAC,GAAAC,GACnBC,GAAsBC,GAAAC,GACtBC,GAAeC,GACfC,GAAaC,GACbC,GACAC,GAAmBC,GAAAC,GAAAC,GACnBC,EAAeC,CAAA,EAAAC,OAAA,CAAA;gHAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAINrK,CAAmB,GAAA,IEzDhC,IAAAsK,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,KAAAC,KACAC,iCEQQC,EAAA,EAAA,WAAA,CAAA,uCAOGC,EAAA,EAAA,SAAA,EAAOC,EAAA,EAEVD,EAAA,CAAA,uCAREE,EAAA,aAAAC,EAAAC,YAAA,EAAAC,EAAA,EAAA,EAAA,oCAAA,EAAA,IAAAC,GAAA,EAAA,EAAAH,EAAAI,MAAA,EAAAC,MAAAL,EAAAI,MAAA,EAAAE,YAAA,CAAA,EAQFC,EAAA,CAAA,EAAAC,EAAA,IAAAL,GAAA,EAAA,EAAAH,EAAAS,UAAA,EAAAJ,MAAAL,EAAAS,UAAA,EAAAH,YAAA,EAAA,GAAA,6BAZJV,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,CAAA,sBACAa,EAAA,EAAAC,GAAA,EAAA,EAAA,EAYFb,EAAA,oBAbES,EAAA,EAAAC,EAAA,IAAAL,GAAA,EAAA,EAAAH,EAAAI,MAAA,EAAAC,MAAAL,EAAAI,MAAA,EAAAE,YAAA,EAAA,GAAA,EACAC,EAAA,CAAA,EAAAK,GAAAC,EAAAb,EAAAS,UAAA,IAAA,MAAAI,EAAAR,MAAA,EAAA,EAAA,GDRN,IAiBaS,GAjBbC,GAAAC,EAAA,KAAAC,IACAC,IAGAC,KACAC,KAEAC,IACAC,kBASaR,IAAqC,IAAA,CAA5C,MAAOA,CAAqC,CAPlDS,aAAA,CAQE,KAAAC,OAASC,GAAK,EACd,KAAAC,SAAWD,GAAK,EAChB,KAAAE,QAAUF,GAAK,EAEf,KAAAxB,YAAc2B,EAAS,IAAK,CAC1B,IAAMJ,EAAS,KAAKA,OAAM,EAC1B,OAAOK,KAAKC,MAAM,KAAON,GAAQvB,aAAe,EAAE,CACpD,CAAC,EACD,KAAA8B,cAAgBH,EAAS,IAAK,CAC5B,IAAMJ,EAAS,KAAKA,OAAM,EACpBG,EAAU,KAAKA,QAAO,EAC5B,GAAI,GAACH,GAAU,CAACG,GAIhB,OAAOA,EAAQK,QAAQC,KAAMC,GAAUA,EAAMC,UAAYX,EAAOY,EAAE,GAAGC,OACvE,CAAC,EAED,KAAAjC,MAAQwB,EAAS,IAAM,KAAKG,cAAa,GAAI3B,KAAK,EAClD,KAAAK,UAAYmB,EAAS,IAAM,KAAKG,cAAa,GAAItB,SAAS,kDApB/CK,EAAqC,CAAA,+BAArCA,EAAqCwB,UAAA,CAAA,CAAA,sCAAA,CAAA,EAAAC,OAAA,CAAAf,OAAA,CAAA,EAAA,QAAA,EAAAE,SAAA,CAAA,EAAA,UAAA,EAAAC,QAAA,CAAA,EAAA,SAAA,CAAA,EAAAa,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,ICjBlDhD,EAAA,EAAA,MAAA,CAAA,EAAoB,EAAA,MAAA,CAAA,EACAC,EAAA,CAAA,EAAmBC,EAAA,EACrCF,EAAA,EAAA,MAAA,CAAA,EAAiC,EAAA,MAAA,CAAA,EACFC,EAAA,CAAA,EAAoCC,EAAA,EAAM,EAEzEY,EAAA,EAAAoC,GAAA,EAAA,EAAA,MAAA,CAAA,EAiBFhD,EAAA,cArBoBS,EAAA,CAAA,EAAAwC,EAAAF,EAAArB,OAAA,EAAAwB,IAAA,EAEazC,EAAA,CAAA,EAAAwC,GAAAE,EAAAJ,EAAAnB,SAAA,EAAAwB,gBAAA,MAAAD,IAAAE,OAAAF,EAAA,GAAA,EAE/B1C,EAAA,EAAAK,EAAAiC,EAAAd,cAAA,EAAA,EAAA,EAAA,kBDSUqB,EAAcC,GAAiBC,GAAEC,GAASC,EAAeC,EAAEC,EAAU,EAAAC,OAAA,CAAA;kHAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAGpE9C,CAAqC,GAAA,2BEe5C+C,EAAA,EAAA,WAAA,CAAA,EAAgEC,EAAA,EAAA,wBAAA,EAAsBC,EAAA,0BAEpFF,EAAA,EAAA,WAAA,CAAA,EAAiCC,EAAA,EAAA,cAAA,EAAYC,EAAA,GAlCrD,IAyCaC,GAzCbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,IACAC,KAEAC,KACAC,IACAC,KACAC,KACAC,KAGAC,KAKAC,KACAC,KACAC,iCAsBaf,IAAwB,IAAA,CAA/B,MAAOA,UAAgCgB,EAAmB,CAQ9D,IAAIC,OAAOC,EAA4B,CACrC,KAAKC,uBAAyBD,EAASE,UACvC,KAAKC,WAAaH,EAASI,QAC7B,CAEA,IAAIC,MAAMC,EAAyC,CACjD,IAAMC,EAAaD,EAAU,CAAC,EAC9B,GAAIC,GAAc,OAAOA,GAAe,UAAY,cAAeA,EAAY,CAC7E,KAAKR,OAASQ,EACd,MACF,CAEA,IAAMC,EAAcF,EAAUG,OAAOC,OAAO,EAAEC,KAAMC,GAAUA,GAAOC,UAAYC,EAAYC,kBAAkB,EAG/G,GAFA,KAAKC,SAAWR,GAAaS,cAAgBF,GAAmBG,KAE5D,CAAC,KAAKf,WAAY,CACpB,IAAMgB,EAAUb,EAAUG,OAAOC,OAAO,EAAEC,KAAMC,GAAUA,GAAOC,UAAYO,GAAeC,UAAU,EAClGF,GAASF,cACX,KAAKd,WAAagB,EAAQF,YAE9B,CAEA,IAAMK,EAAiBhB,EAAUA,EAAUiB,OAAS,CAAC,EACjDD,GAAgBT,UAAY,cAC9B,KAAKZ,uBAAyBqB,EAAeL,aAAe,GAEhE,CAEAO,4BAA0B,CACxB,IAAMC,EAAY,KAAKT,SAAWD,GAAmBW,UAAYX,GAAmBG,KAC9ES,EAA8B,CAClCC,YAAa,KAAKzB,WAClB0B,iBAAkB,KAAKC,gBACvBC,OAAQ,CAAC,CAAElB,QAASC,EAAYC,mBAAoBE,YAAaQ,CAAS,CAAE,GAExEO,EAA2B,CAC/BC,MAAO,CAACnB,EAAYC,kBAAkB,GAExC,GAAI,CACFmB,GAAe,KAAKC,gBAAgBC,eAAeT,EAAUK,CAAI,CAAC,EAAEK,KAAK,IAAK,CAC5E,KAAKC,MAAMC,iBAAiB,4BAA4B,EACxD,KAAKvB,SAAW,CAAC,KAAKA,QACxB,CAAC,CACH,MAAQ,CACN,KAAKsB,MAAME,eAAe,0BAA0B,CACtD,CAEA,KAAKC,iBAAiBC,WAAW,2BAA4B,cAAe,QAAS,EAAG,CACtFC,OAAQlB,EACT,CACH,CAEAmB,yCAAuC,CACrC,IAAMnB,EAAY,KAAKT,SAAWD,GAAmBW,UAAYX,GAAmBG,KACpF,GAAI,CAAC,KAAKjB,uBAAwB,CAChC,KAAKqC,MAAME,eAAe,0BAA0B,EACpD,MACF,CAEA,IAAMb,EAA8B,CAClCC,YAAa,KAAKzB,WAClB0B,iBAAkB,KAAKC,gBACvBC,OAAQ,CAAC,CAAElB,QAASC,EAAYC,mBAAoBE,YAAaQ,CAAS,CAAE,GAExEO,EAA2B,CAC/BC,MAAO,CAACnB,EAAYC,kBAAkB,GAExC,GAAI,CACFmB,GACE,KAAKC,gBAAgBU,4BAA4BlB,EAAUK,EAAM,KAAK/B,sBAAsB,GAAK6C,EAAG,IAAI,CAAC,EACzGT,KAAK,IAAK,CACV,KAAKC,MAAMC,iBAAiB,4BAA4B,EACxD,KAAKvB,SAAW,CAAC,KAAKA,QACxB,CAAC,CACH,MAAQ,CACN,KAAKsB,MAAME,eAAe,0BAA0B,CACtD,CAEA,KAAKC,iBAAiBC,WAAW,2BAA4B,cAAe,QAAS,EAAG,CACtFC,OAAQlB,EACT,CACH,CAYAsB,UAAQ,CACN,KAAKC,gBAAkB,KAAKC,oBAAmB,CACjD,CAEAC,YACmBf,EACAG,EACwCa,EAAiD,CAE1G,MAAK,EAJY,KAAAhB,gBAAAA,EACA,KAAAG,MAAAA,EACwC,KAAAa,oBAAAA,EA3GjD,KAAAnC,SAAW,GACb,KAAAb,WAAa,GACJ,KAAA2B,gBAAkB,OAClB,KAAAW,iBAAmBW,EAAOC,EAAuB,EAEzD,KAAApD,uBAAyB,GAqFjB,KAAAgD,oBAAsBK,IACpC,KAAKH,oBAAoBI,uBAAyBT,EAAG,CAAA,CAAE,GAAGU,KACzDC,GAAK,CAAC,EACNC,EAAKC,GAAkC,CAAC,CAACA,GAASC,OAAO,CAAC,EAE5D,CAAEC,aAAc,EAAK,CAAE,EAGzB,KAAAb,gBAAkB,EAYlB,iDA/GWlE,GAAuBgF,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EA4GxBG,EAA8B,CAAA,CAAA,CAAA,+BA5G7BnF,EAAuBoF,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,OAAA,CAAAlE,uBAAA,wBAAA,EAAAmE,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,eAAA,EAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,QAAA,YAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,gBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WAbhC/F,EAAA,EAAA,SAAA,CAAA,EAEEiG,EAAA,QAAA,UAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAAL,EAAA3B,gBAA2B2B,EAAA/B,wCAAA,EAA4C+B,EAAAnD,2BAAA,CAA4B,CAAA,CAAA,EAEnGyD,EAAA,EAAAC,GAAA,EAAA,EAAA,WAAA,CAAA,EAAgE,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAIlEvG,EAAA,qBAJawG,EAAA,EAAAC,EAAA,OAAAX,EAAA3D,QAAA,EAAgB,WAAAuE,CAAA,kBAOrBC,EAAYC,GAAEC,GAAmBC,EAAiBC,GAAaC,GAAEC,GAAeC,EAAA,EAAAC,OAAA,CAAA;gHAAA,CAAA,CAAA,CAAA,SAE/ElH,CAAwB,GAAA,8BCzB/BmH,EAAA,EAAA,KAAA,EAAoD,EAAA,MAAA,EAC5CC,EAAA,CAAA,EAAgBC,EAAA,EAAO,mBAAvBC,EAAA,CAAA,EAAAC,EAAAC,EAAAC,SAAA,CAAA,6BAFVC,EAAA,CAAA,EACEC,EAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,sCAAMN,EAAA,EAAAO,EAAA,OAAAC,IAAAN,EAAAO,iBAAA,EAAkC,WAAAC,CAAA,yBAKxCC,EAAA,EAAA,MAAA,CAAA,wBAGAA,EAAA,EAAA,kBAAA,EAxBN,IAWMF,GAkBOG,GA7BbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,IACAC,KAEAC,KACAC,kBAIMZ,GAAoB,sBAkBbG,IAAkB,IAAA,CAAzB,MAAOA,UAA0BU,EAAmB,CAIxD,IAAIC,MAAMC,EAAgC,CACxC,KAAKC,YAAYC,IAAIF,CAAS,CAChC,CAWAG,YAA6BC,EAAoC,CAC/D,MAAK,EADsB,KAAAA,YAAAA,EAhB7B,KAAAnB,kBAAoBA,GACZ,KAAAgB,YAAcI,EAA8B,CAAA,CAAE,EAMtD,KAAAC,KAA2ED,EAAO,IAAI,EACtF,KAAA1B,SAAW4B,EAAS,IAAK,CACvB,IAAMD,EAAO,KAAKA,KAAI,EACtB,OAAIA,IAASrB,GACJ,GAEFqB,GAAME,aAAe,EAC9B,CAAC,EAICC,GAAa,KAAKR,WAAW,EAC1BS,KACCC,EAAWV,GAAe,CACxB,IAAMW,EACJX,EAAYY,KAAMC,GAAeA,GAAYC,UAAYC,GAAeC,eAAe,GAAK,KAC9F,MAAI,CAACL,GAAU,CAACA,GAAQM,YACfC,EAAGlC,EAAiB,EAEtB,KAAKmB,YAAYgB,cAAc,CAACR,EAAOM,WAAW,CAAC,CAC5D,CAAC,EACDG,GAAkB,CAAE,EAErBC,UAAWC,GAAU,CACpB,GAAIA,IAAWtC,IAAqB,CAACsC,EAAOC,OAAQ,CAClD,KAAKlB,KAAKJ,IAAIjB,EAAiB,EAC/B,MACF,CACA,IAAMqB,EAAOiB,EAAO,CAAC,EACrB,GAAI,CAACjB,GAAMM,OAAQ,CACjB,KAAKN,KAAKJ,IAAIjB,EAAiB,EAC/B,MACF,CACA,KAAKqB,KAAKJ,IAAII,CAAI,CACpB,CAAC,CACL,iDA3CWlB,GAAiBqC,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAjBtC,EAAiBuC,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,GAd1BrD,EAAA,EAAAuD,GAAA,EAAA,EAAA,eAAA,CAAA,EAAmD,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAK7B,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAD,EAAA,kBALPvD,EAAA,OAAAoD,EAAA7B,KAAA,CAAA,EAAa,WAAAkC,CAAA,kBAYpBC,EAAYC,GAAEC,EAAmB,EAAAC,cAAA,CAAA,CAAA,CAAA,SAEhCxD,CAAkB,GAAA,8BCdvByD,EAAA,EAAA,MAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,mBADEC,EAAA,EAAAC,EAAA,KAAAC,GAAA,EAAA,EAAA,sDAAAC,GAAA,EAAAC,GAAAC,EAAAC,WAAA,CAAA,EAAA,IAAA,6BAGCR,EAAA,CAAA,oCAAAG,EAAA,IAAAC,GAAA,EAAA,EAAA,uDAAAC,GAAA,EAAAC,GAAAC,EAAAE,YAAA,CAAA,EAAA,GAAA,6BANLV,EAAA,EAAA,MAAA,CAAA,EAA6D,EAAA,MAAA,EACrDC,EAAA,CAAA,kBAAiCC,EAAA,EACvCS,EAAA,EAAAC,GAAA,EAAA,EAAA,OAAA,CAAA,EAAgD,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAQlDZ,EAAA,0BATQC,EAAA,CAAA,EAAAY,EAAAV,GAAA,EAAA,EAAAG,EAAAQ,KAAAR,EAAAS,UAAA,CAAA,EACCd,EAAA,CAAA,EAAAe,EAAA,OAAAV,EAAAC,YAAA,CAAA,EAAuB,WAAAU,CAAA,6BAU9BlB,EAAA,CAAA,mCAAAG,EAAA,IAAAC,GAAA,EAAA,EAAAG,EAAAQ,KAAAR,EAAAS,UAAA,EAAA,GAAA,6BAbJG,EAAA,CAAA,EACET,EAAA,EAAAU,GAAA,EAAA,EAAA,MAAA,CAAA,EAA6D,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAR,EAAA,6BAAlCX,EAAA,EAAAe,EAAA,OAAAV,EAAAe,SAAA,EAAiB,WAAAC,CAAA,yBAiB5CC,EAAA,EAAA,kBAAA,EA9BN,OAoCaC,GApCbC,GAAAC,EAAA,KAAAC,IAEAC,IAEAC,KACAC,KACAC,KACAC,KACAC,yCA4BaT,IAAqB,IAAA,CAA5B,MAAOA,UAA6BU,EAAmB,CAQ3D,IAAIC,MAAMC,EAAgC,CACxC,IAAMC,EAAeD,EAAUE,OAAOC,OAAO,EAAEC,KAAMC,GAAUA,GAAOC,UAAYC,EAAYC,mBAAmB,EACjH,KAAK9B,KAAOuB,GAAcQ,WAAaC,OAEvC,IAAMC,EAAcX,EAAUE,OAAOC,OAAO,EAAEC,KAAMC,GAAUA,GAAOC,UAAYC,EAAYK,kBAAkB,EACzGC,EAAc,KAAKC,eAAe,KAAKpC,IAAI,EACjD,KAAKO,UAAY4B,EAAY5B,WAAa0B,GAAaI,cAAgBH,GAAmBI,KAC1F,KAAK7C,YAAc0C,EAAYI,KAC/B,KAAK7C,aAAeyC,EAAYK,KAClC,CAMQJ,eAAeK,EAAc,CACnC,GAAI,CAACA,EACH,MAAO,CAAEF,KAAM,EAAGC,MAAO,EAAGjC,UAAW,EAAK,EAE9C,IAAMmC,EAAaC,KAAKC,IAAG,EAAK,KAAKC,gBAAkB,EACjDC,EAAeL,GAASM,QAAO,EAAK,KAAKF,gBAAkB,EACjE,GAAIH,IAAe,GAAKI,IAAiB,EACvC,MAAO,CAAEP,KAAM,EAAGC,MAAO,EAAGjC,UAAW,EAAK,EAE9C,IAAMb,EAAegD,EAAaI,EAClC,MAAO,CACLP,KAAMS,KAAKC,MAAMvD,EAAe,EAAE,EAClC8C,MAAOQ,KAAKC,MAAMvD,CAAY,EAC9Ba,UAAWyC,KAAKC,MAAMvD,CAAY,EAAI,EAE1C,CAEAwD,aAAA,CACE,MAAK,EAvCG,KAAA3C,UAAY,GACZ,KAAAd,YAAc,EACd,KAAAC,aAAe,EACf,KAAAO,WAAakD,GAAWC,OACjB,KAAAP,eAAiB,IAoClC,iDA1CWnC,EAAoB,CAAA,+BAApBA,EAAoB2C,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,QAAA,eAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,cAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,GAxB7BjE,EAAA,EAAAmE,GAAA,EAAA,EAAA,eAAA,CAAA,EAAuC,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAjE,EAAA,kBAAxBI,EAAA,OAAA2D,EAAA7D,IAAA,EAAY,WAAAgE,CAAA,kBAqBnBC,EAAYC,GAAEC,GAAqBC,GAAiBC,GAAEC,EAAeC,CAAA,EAAAC,OAAA,CAAA;6GAAA,CAAA,CAAA,CAAA,SAGpE9D,CAAqB,GAAA,ICpClC,IAca+D,GAdbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KAOAC,KAEAC,SAGaP,IAA0B,IAAA,CAAjC,MAAOA,CAA0B,CADvCQ,aAAA,CAEmB,KAAAC,OAA0BC,EAAOC,EAAiB,EAClD,KAAAC,cAA8CF,EAAOG,EAA8B,EACnF,KAAAC,iBAAmBJ,EAAOK,EAAgB,EAC1C,KAAAC,qBAAuBN,EAAOO,EAAuB,EAE/DC,iBAAiBC,EAAoBC,EAAyBC,EAAiB,CACpF,MAAI,CAACF,GAAa,CAACC,GAAc,CAACC,EACzBC,EAAG,EAAE,EAEP,KAAKC,aAAaJ,EAAWC,EAAYC,CAAQ,EAAEG,KACxDC,EAAKC,GACCA,EACK,KAAKV,qBAAqBW,qBAAqBP,EAAYM,CAAS,EAEtE,EACR,CAAC,CAEN,CAEQH,aACNJ,EACAC,EACAC,EAAgB,CAEhB,OAAO,KAAKP,iBAAiBc,eAAeR,EAAY,CAACC,CAAQ,EAAG,CAAA,EAAIF,CAAS,EAAEK,KACjFC,EAAKI,GAAaA,GAAUC,aAAa,CAAC,CAAC,EAC3CC,GAAW,IAAMT,EAAGU,MAAS,CAAC,CAAC,CAEnC,CAEOC,gBAAgBd,EAAoBC,EAAyBC,EAAiB,CACnF,GAAI,CAACF,GAAa,CAACC,GAAc,CAACC,EAChC,OAAOC,EAAG,EAAE,EAEd,IAAMY,EAAmB,KAAKtB,cAAcsB,kBAAoBZ,EAAG,EAAK,EAClEa,EAAeD,EAAiBV,KACpCY,EAAWC,GACFA,EAAkB,KAAKzB,cAAcuB,aAAe,KAAK1B,OAAO0B,YACxE,CAAC,EAEJ,OAAOG,EAAc,CAACH,EAAcD,CAAgB,CAAC,EAAEV,KACrDC,EAAI,CAAC,CAACc,EAAUF,CAAe,IAAK,CAClC,IAAIG,EAAe,GACnB,OAAQpB,EAAU,CAChB,IAAK,UACH,GAAIiB,EACF,MAAO,GAETG,EAAe,GAAGC,GAAYC,QAAQC,IAAI,IAAIF,GAAYC,QAAQE,UAAUC,OAAO,GACnF,MACF,IAAK,UACH,GAAIR,EAAiB,CACnBG,EAAe,GAAGC,GAAYK,eAAeC,SAASJ,IAAI,IAAIF,GAAYK,eAAeC,SAASH,UAAUC,OAAO,GACnH,KACF,CACAL,EAAe,GAAGC,GAAYO,QAAQL,IAAI,IAAIF,GAAYO,QAAQJ,UAAUC,OAAO,GACnF,MACF,QACE,MAAO,EACX,CAEA,MAAO,GAAGN,CAAQ,IAAIC,CAAY,GAAGS,QAAQ,eAAgB5B,CAAQ,EAAE4B,QAAQ,aAAc9B,CAAS,CACxG,CAAC,CAAC,CAEN,iDAjEWnB,EAA0B,CAAA,kCAA1BA,EAA0BkD,QAA1BlD,EAA0BmD,SAAA,CAAA,CAAA,SAA1BnD,CAA0B,GAAA,6BEV/BoD,EAAA,CAAA,kBAAAC,EAAA,IAAAC,EAAAC,YAAA,EAAA,GAAA,yBAEAC,EAAA,EAAA,kBAAA,4BAJJC,EAAA,EAAA,IAAA,CAAA,EACEC,EAAA,EAAAC,GAAA,EAAA,CAAA,EAAqB,EAAAC,GAAA,EAAA,EAAA,kBAAA,EAKvBC,EAAA,mBANGC,EAAA,aAAAR,EAAAS,YAAA,CAAA,EACDC,EAAA,EAAAC,EAAAX,EAAAC,YAAA,EAAA,EAAA,CAAA,4BASEH,EAAA,CAAA,kBAAAC,EAAA,IAAAC,EAAAC,YAAA,EAAA,GAAA,yBAEAC,EAAA,EAAA,kBAAA,4BAJJC,EAAA,EAAA,KAAA,EACEC,EAAA,EAAAQ,GAAA,EAAA,CAAA,EAAqB,EAAAC,GAAA,EAAA,EAAA,kBAAA,EAKvBN,EAAA,mBALEG,EAAA,EAAAC,EAAAX,EAAAC,YAAA,EAAA,EAAA,CAAA,4BAVJG,EAAA,EAAAU,GAAA,EAAA,EAAA,IAAA,CAAA,EAAqB,EAAAC,GAAA,EAAA,EAAA,KAAA,iBAArBJ,EAAAX,EAAAS,YAAA,EAAA,EAAA,CAAA,yBAkBAP,EAAA,EAAA,MAAA,CAAA,EDnBF,OAqBac,GArBbC,GAAAC,EAAA,KAAAC,IACAC,IAEAC,KACAC,KAEAC,KACAC,0EAYsCC,EAAmB,EAE5CT,IAA6B,IAAA,CAApC,MAAOA,UAAqCU,EAAmB,CAGnE,IAAIC,MAAMC,EAAkC,CAC1C,KAAKC,sBAAsBC,IAAIF,CAAW,CAC5C,CAMAG,YAAoBC,EAAmC,CACrD,MAAK,EADa,KAAAA,QAAAA,EAVZ,KAAAH,sBAAwBI,EAA0CC,MAAS,EAQzE,KAAAC,SAA4BC,EAAS,IAAM,KAAKnC,YAAW,IAAOiC,MAAS,EAKnF,IAAMG,EAAMC,GAAa,KAAKT,qBAAqB,EACnD,KAAK5B,YAAcsC,GACjBF,EAAIG,KAAKC,EAAWJ,GAAQ,KAAKL,QAAQU,iBAAiBL,GAAKM,UAAWN,GAAKO,WAAYP,GAAKQ,QAAQ,CAAC,CAAC,CAAC,EAE7G,KAAKpC,YAAc8B,GACjBF,EAAIG,KAAKC,EAAWJ,GAAQ,KAAKL,QAAQc,gBAAgBT,GAAKM,UAAWN,GAAKO,WAAYP,GAAKQ,QAAQ,CAAC,CAAC,CAAC,CAE9G,iDArBW7B,GAA4B+B,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAA5BhC,EAA4BiC,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,GAH5B,CAACH,EAA0B,CAAC,EAAAI,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IClBzCrD,EAAA,EAAAuD,GAAA,EAAA,CAAA,EAoBC,EAAAC,GAAA,EAAA,CAAA,EApBDC,GAAA,EAAA,EAAAC,GAAA,KAAA,CAAA,SAAQpD,EAAA,CAAA,EAAAqD,GAAAL,EAAAvB,SAAA,CAAU,kBDmBM6B,CAAY,EAAAC,OAAA,CAAA;iGAAA,CAAA,CAAA,CAAA,SAEvBjD,CAA6B,GAAA,8BEJlCkD,EAAA,EAAA,OAAA,CAAA,EAA8DC,EAAA,EAAA,KAAA,EAAGC,EAAA,kBAA3DC,EAAA,cAAAC,EAAAC,IAAA,EAAoB,sBAAAD,EAAAE,SAAA,CAAA,GAjBlC,IAuBaC,GAvBbC,GAAAC,EAAA,KACAC,IACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,mBAaaX,IAAsB,IAAA,CAA7B,MAAOA,UAA8BY,EAAmB,CAM5DC,YAAoBC,EAAsC,CACxD,MAAK,EADa,KAAAA,mBAAAA,EALV,KAAAC,cAAgB,GAChB,KAAAjB,KAAO,GACP,KAAAkB,YAAc,GAKtB,KAAKjB,SAAWkB,GACd,KAAKH,mBAAmBI,QAAQ,CAACC,GAAYC,MAAM,CAAC,EAAEC,KAAKC,EAAKC,GAAWA,EAAOC,OAAO,CAAC,CAAC,CAE/F,CAEA,IAAIC,MAAMC,EAAyC,CACjD,IAAMC,EAAYD,EAAUE,OAAOC,OAAO,EAAEC,KAAMC,GAAUA,GAAOC,UAAYC,EAAYC,gBAAgB,EAC3G,KAAKpC,KAAO6B,GAAWQ,YAAc,KAAKC,WAAWT,EAAUQ,WAAW,EAAI,GAC9E,KAAKnB,YAAc,KAAKlB,KAAKuC,OAAS,KAAKtB,aAC7C,CAEUqB,WAAWE,EAAY,CAC/B,IAAMC,EAAcC,SAASC,cAAc,KAAK,EAChDF,OAAAA,EAAYG,UAAYJ,EACjBC,EAAYI,aAAe,EACpC,iDAvBW3C,GAAqB4C,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAArB7C,EAAqB8C,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,cAAA,qBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IAT9B5D,EAAA,EAAA,KAAA,EAAK,EAAA,MAAA,EACGC,EAAA,CAAA,qBAA8CC,EAAA,EACpD4D,EAAA,EAAAC,GAAA,EAAA,EAAA,OAAA,CAAA,EAGF7D,EAAA,SAJQ8D,EAAA,CAAA,EAAAC,EAAAC,GAAA,EAAA,EAAAL,EAAAxD,KAAAwD,EAAAvC,cAAA,EAAA,CAAA,EACN0C,EAAA,CAAA,EAAAG,EAAAN,EAAAtC,YAAA,EAAA,EAAA,kBAKM6C,EAAcC,GAAmBC,GAAiBC,GAAmBC,EAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAEpElE,CAAsB,GAAA,ICvBnC,IAAAmE,GAAAC,EAAA,KAAAC,KAGAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,6BENIC,GAAA,CAAA,2BAAAC,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,iBAAeC,EAAA,oBAAAC,EAAAC,SAAA,EAAAC,SAAA,EAAyC,0BAAAF,EAAAC,SAAA,EAAAE,MAAA,yBAItDC,EAAA,EAAA,MAAA,CAAA,4BADFP,EAAA,EAAAQ,GAAA,EAAA,EAAA,MAAA,CAAA,EAGAC,EAAA,EAAA,MAAA,CAAA,EAAoBC,EAAA,CAAA,EAAYC,EAAA,qCAHhCC,EAAAC,IAAA,EAAA,EAAA,EAAA,EAGoBC,EAAA,CAAA,EAAAC,EAAAC,CAAA,yBAUZT,EAAA,EAAA,uBAAA,CAAA,OAAsBL,EAAA,SAAA,EAAA,2BAEtBQ,EAAA,CAAA,kBAAAO,EAAA,IAAAd,EAAAe,YAAA,EAAA,GAAA,4BAHFlB,EAAA,EAAAmB,GAAA,EAAA,EAAA,uBAAA,CAAA,EAA8B,EAAAC,GAAA,EAAA,CAAA,kBAA9BR,EAAAT,EAAAkB,qBAAA,EAAA,EAAA,CAAA,6BALNd,EAAA,EAAA,MAAA,CAAA,EACAE,EAAA,EAAA,MAAA,CAAA,EAAoB,EAAA,MAAA,CAAA,EACOC,EAAA,CAAA,EAAkBC,EAAA,EAC3CF,EAAA,EAAA,MAAA,CAAA,EACET,EAAA,EAAAsB,GAAA,EAAA,CAAA,EAOFX,EAAA,EAAM,kBATmBG,EAAA,CAAA,EAAAC,EAAAZ,EAAAoB,WAAA,CAAA,EAEvBT,EAAA,CAAA,EAAAF,EAAAT,EAAAe,YAAA,GAAAf,EAAAkB,qBAAA,EAAA,EAAA,EAAA,GDjBR,IAkBMG,GAUAC,GAWOC,GA8MPC,GArPNC,GAAAC,EAAA,KAAAC,IACAC,IAEAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KAEAC,sBAOMd,GAAYe,GACXA,EAGDd,GAAsBc,CAAK,EACtBf,GAASe,EAAM,CAAC,GAAGC,WAAW,EAEhCC,OAAOF,CAAK,EALV,GAQLd,GAAyBc,GACtBG,MAAMC,QAAQJ,CAAK,EAUfb,IAAoC,IAAA,CAA3C,MAAOA,CAAoC,CAwB/CkB,YAA6BC,EAA2B,CAA3B,KAAAA,UAAAA,EAvBZ,KAAAC,YAAcC,EAAOC,EAAiB,EAAEC,UAAUH,YAE1D,KAAAI,WAAaC,GAAMC,SAAQ,EAC3B,KAAAC,IAAMF,GAAMC,SAAQ,EAEZ,KAAAE,gBAAkBP,EAAOQ,EAAe,EACxC,KAAAC,SAAW,CAC1BC,UAAW,KAAKH,gBAAgBI,WAAWC,GAAoBF,SAAS,EACxEG,SAAU,KAAKN,gBAAgBI,WAAWC,GAAoBC,QAAQ,EACtEC,YAAa,KAAKP,gBAAgBI,WAAWC,GAAoBE,WAAW,EAC5EC,MAAO,KAAKR,gBAAgBI,WAAWC,GAAoBG,KAAK,GAG/C,KAAAC,MAAQC,EAAS,IAAM,KAAKC,aAAY,CAAE,EAC1C,KAAA7D,SAAW4D,EAAS,IAAM,KAAKE,gBAAe,CAAE,EAChD,KAAAC,QAAUH,EAAS,IAAM,KAAKI,eAAc,CAAE,EAC9C,KAAA7C,WAAayC,EAAS,IAAM,KAAKK,kBAAiB,CAAE,EAEpD,KAAAnD,YAAcoD,EAAO,EAAE,EACvB,KAAAjD,qBAAuBiD,EAAO,EAAK,EACnC,KAAAC,QAAUP,EAAS,IAAM,KAAKQ,eAAc,CAAE,EAC9C,KAAAC,WAAaT,EAAS,IAAM,KAAKzC,WAAU,EAAGmD,OAAS,GAAK,KAAKH,QAAO,CAAE,EAG3FI,GAAO,IAAWC,GAAA,sBAChB,IAAML,EAAU,KAAKA,QAAO,EAC5B,GAAIA,GAAW,KAAKzB,YAAa,CAC/B,KAAKzB,qBAAqBwD,IAAI,EAAI,EAElC,IAAMC,GADQ,MAAMC,GAAe,KAAKjC,YAAYkC,cAAc,CAACT,CAAO,CAAC,CAAC,KAClD,CAAC,GAAGU,aAAe,GAC7C,KAAK/D,YAAY2D,IAAIC,CAAS,EAC9B,KAAKzD,qBAAqBwD,IAAI,EAAK,CACrC,CACF,EAAC,CACH,CAEQZ,cAAY,CAClB,IAAMiB,EAAO,KAAK7B,IAAG,GAAI6B,KACnBhC,EAAa,KAAKA,WAAU,EAClC,OAAIA,IAAe,UACV,KAAKiC,eAAeD,CAAI,EAE7BhC,IAAe,UACV,KAAKkC,eAAeF,CAAI,EAE7BhC,IAAe,cACV,KAAKmC,mBAAmBH,CAAI,EAEjChC,IAAe,WACV1B,GAAS0D,IAAOI,EAAYC,YAAY,GAAGhD,OAAOiD,IAAI,GAAK,GAE7D,IACT,CAEQtB,iBAAe,CACrB,IAAMuB,EAAW,KAAKpC,IAAG,GAAIqC,GACvBxC,EAAa,KAAKA,WAAU,EAClC,OAAQA,EAAU,CAChB,IAAK,cACH,MAAO,CACL7C,UAAWsF,GACXrF,OAAQ,CACNiC,MAAO,CACLW,WAAYA,EACZuC,SAAUA,EACVG,QAAS,KAInB,CACA,MAAO,CAAA,CACT,CAEQxB,gBAAc,CACpB,IAAMc,EAAO,KAAK7B,IAAG,GAAI6B,KAEzB,OADmB,KAAKhC,WAAU,EAChB,CAChB,IAAK,UACH,OAAO,KAAK2C,kBAAkBX,CAAI,EACpC,IAAK,UACH,OAAO,KAAKY,kBAAkBZ,CAAI,EACpC,IAAK,cACH,OAAO,KAAKa,sBAAsBb,CAAI,EACxC,QACE,KACJ,CACA,MAAO,CAAA,CACT,CAEQb,mBAAiB,CACvB,IAAMa,EAAO,KAAK7B,IAAG,GAAI6B,KAEzB,OADmB,KAAKhC,WAAU,IACf,cACV,KAAK8C,oBAAoBd,CAAI,EAE/B,EACT,CAEQV,gBAAc,CACpB,IAAMU,EAAO,KAAK7B,IAAG,GAAI6B,KAEzB,OADmB,KAAKhC,WAAU,EAChB,CAChB,IAAK,cACH,OAAO1B,GAAS0D,IAAOe,GAAeC,kBAAkB,GAAG3D,KAAK,EAClE,QACE,KACJ,CACA,MAAO,EACT,CAEQ4C,eAAeD,EAAc,CACnC,IAAMiB,EAAgB3E,GAAS0D,IAAO,KAAK1B,SAASC,SAAS,GAAGlB,KAAK,EAC/D6D,EAAe5E,GAAS0D,IAAO,KAAK1B,SAASI,QAAQ,GAAGrB,KAAK,EACnE,OAAI4D,GAAiBC,EACZ,GAAGD,CAAa,IAAIC,CAAY,GAAGC,KAAI,EAEzC,IACT,CAEQR,kBAAkBX,EAAc,CACtC,IAAMoB,EAAa9E,GAAS0D,IAAO,KAAK1B,SAASK,WAAW,GAAGtB,KAAK,EAC9DgE,EAAcD,EAChBE,GAAOC,GAAYH,EAAY,CAAEI,eAAgB,IAAI,CAAE,EAAmB,eAAe,EACzF,GAQJ,MAN0B,CACxBlF,GAAS0D,IAAO,KAAK1B,SAASM,KAAK,GAAGvB,KAAK,EAC3Cf,GAAS0D,IAAOI,EAAYqB,eAAe,GAAGpE,KAAK,EACnDgE,EACArB,IAAOI,EAAYsB,kBAAkB,GAAGrE,KAAK,EAEhCsE,OAAQC,GAAMA,GAAGpC,OAAS,CAAC,CAC5C,CAEQU,eAAeF,EAAc,CACnC,OAAO1D,GAAS0D,IAAOI,EAAYyB,WAAW,GAAGxE,KAAK,GAAK,IAC7D,CAEQuD,kBAAkBZ,EAAc,CACtC,IAAMoB,EAAa9E,GAAS0D,IAAOI,EAAY0B,kBAAkB,GAAGzE,KAAK,EACnEgE,EAAcD,EAChBE,GAAOC,GAAYH,EAAY,CAAEI,eAAgB,IAAI,CAAE,EAAmB,eAAe,EACzF,GAEEO,EAAU,CACdzF,GAAS0D,IAAOI,EAAY4B,0BAA0B,GAAG3E,KAAK,EAC9Df,GAAS0D,IAAOI,EAAY6B,0BAA0B,GAAG5E,KAAK,EAC9Df,GAAS0D,IAAOI,EAAY8B,yBAAyB,GAAG7E,KAAK,EAC7Df,GAAS0D,IAAOI,EAAY+B,0BAA0B,GAAG9E,KAAK,EAC9Df,GAAS0D,IAAOI,EAAYgC,+BAA+B,GAAG/E,KAAK,CAAC,EAEnEsE,OAAOU,OAAO,EACdC,KAAK,IAAI,EAGZ,MAD0B,CAAChG,GAAS0D,IAAOI,EAAYmC,cAAc,GAAGlF,KAAK,EAAG0E,EAASV,CAAW,EACrFM,OAAQC,GAAMA,GAAGpC,OAAS,CAAC,CAC5C,CAEQW,mBAAmBH,EAAc,CACvC,OAAO1D,GAAS0D,IAAOI,EAAYoC,eAAe,GAAGnF,KAAK,GAAK,IACjE,CAEQyD,oBAAoBd,EAAc,CACxC,IAAMyC,EAAgBzC,IAAOI,EAAYsC,iBAAiB,EACpDC,EAASF,GAAepF,OAAS,EACvC,OAAIoF,GAAeG,UAAY,YAAcH,GAAeI,KACnD,IAAIC,GAAkB,EAAGC,UAAUJ,EAAQF,EAAcI,IAAI,EAE/D,EACT,CAEQhC,sBAAsBb,EAAc,CAC1C,IAAMf,EAAU,CAAA,EAChB,OAAIe,IACFf,EAAQ+D,KAAK,KAAKC,oBAAoBjD,EAAMe,GAAemC,2BAA2B,CAAC,EACnFlD,EAAKI,EAAY+C,0BAA0B,GAAG9F,MAChD4B,EAAQ+D,KAAK,KAAKC,oBAAoBjD,EAAMI,EAAY+C,0BAA0B,CAAC,EAEnFlE,EAAQ+D,KAAK,KAAKC,oBAAoBjD,EAAMI,EAAYgD,4BAA4B,CAAC,GAGlFnE,EAAQ0C,OAAQC,GAAMA,GAAGpC,OAAS,CAAC,CAC5C,CAEQyD,oBAAoBjD,EAAeqD,EAAe,CACxD,IAAMC,EAAYtD,EAAKqD,CAAO,GAAGhG,MAC3BuF,EAAW5C,EAAKqD,CAAO,GAAGT,SAChC,GAAIU,EAAW,CACb,IAAIC,EAAiB,GACrB,OAAQX,EAAQ,CACd,IAAK,OACHW,EAAiB,IAAIC,GAAc,EAAGT,UAAUO,CAAS,EACzD,MACF,QACEC,EAAiBjH,GAASgH,CAAS,EACnC,KACJ,CACA,IAAMG,EAAiBhH,GAAqB4G,CAAO,EACnD,MAAO,GAAG,KAAK1F,UAAU+F,QAAQD,CAAc,CAAC,KAAKF,CAAc,EACrE,CAEA,MAAO,EACT,iDA3MW/G,GAAoCmH,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAApCpH,EAAoCqH,UAAA,CAAA,CAAA,qCAAA,CAAA,EAAAzI,OAAA,CAAA4C,WAAA,CAAA,EAAA,YAAA,EAAAG,IAAA,CAAA,EAAA,KAAA,CAAA,EAAA2F,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,oBAAA,yBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,QAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICvCjD3I,EAAA,EAAA,MAAA,CAAA,EAAkB,EAAA,MAAA,CAAA,EACGC,EAAA,CAAA,EAAaC,EAAA,EAChCX,EAAA,EAAAsJ,GAAA,EAAA,EAAA,cAAA,EAGAC,GAAA,EAAAC,GAAA,EAAA,EAAA,KAAA,KAAAC,EAAA,EAOAzJ,EAAA,EAAA0J,GAAA,EAAA,CAAA,EAeF/I,EAAA,SA1BqBG,EAAA,CAAA,EAAAC,EAAAsI,EAAAtF,MAAA,CAAA,EACnBjD,EAAA,EAAAF,EAAAyI,EAAAjJ,SAAA,EAAAC,UAAA,EAAA,EAAA,EAGAS,EAAA,EAAA6I,GAAAN,EAAAlF,QAAA,CAAS,EAOTrD,EAAA,CAAA,EAAAF,EAAAyI,EAAA5E,WAAA,EAAA,EAAA,EAAA,kBDwBUmF,EAAYC,GAAEC,GAA0BC,EAAA,EAAAC,OAAA,CAAA;iHAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAGvCvI,CAAoC,GAAA,EA8M3CC,GAAmD,CACvD,CAACsE,GAAemC,2BAA2B,EAAG,qCAC9C,CAAC9C,EAAYgD,4BAA4B,EAAG,2CAC5C,CAAChD,EAAY+C,0BAA0B,EAAG,sEGhPhC6B,EAAA,EAAA,aAAA,CAAA,EAA+BC,EAAA,CAAA,EAAmBC,EAAA,0BAAtCC,EAAA,QAAAC,CAAA,EAAmBC,EAAA,EAAAC,EAAAF,EAAAG,IAAA,4BADjCC,GAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,EAAAC,EAAA,uBAAAC,GAAAC,CAAA,6BAIAZ,EAAA,EAAA,aAAA,CAAA,EAAsDC,EAAA,CAAA,mBAEpDC,EAAA,mBAFUC,EAAA,QAAAU,EAAAC,iBAAA,EAA0CT,EAAA,EAAAC,EAAAS,EAAA,EAAA,EAAA,4CAAA,CAAA,sCAV9Df,EAAA,EAAA,MAAA,CAAA,EAA+B,EAAA,kBAAA,CAAA,EACoD,EAAA,YAAA,EACnEC,EAAA,CAAA,mBAAuDC,EAAA,EACnEF,EAAA,EAAA,aAAA,CAAA,EACEgB,GAAA,CAAA,eACAC,EAAA,EAAAC,GAAA,EAAA,CAAA,EAAyC,EAAAC,GAAA,EAAA,EAAA,aAAA,CAAA,EASzCC,EAAA,GAAA,aAAA,EACApB,EAAA,GAAA,aAAA,CAAA,EAAYqB,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAV,EAAAW,EAAA,EAAA,OAAAC,EAASZ,EAAAa,qBAAA,CAAsB,CAAA,CAAA,EACzC1B,EAAA,GAAA,OAAA,CAAA,EAA+BC,EAAA,EAAA,oBAA4CC,EAAA,EAAO,EACvE,EACF,EACG,oBAlBkBG,EAAA,EAAAF,EAAA,YAAA,EAAA,EAAmB,gBAAA,MAAA,EACzCE,EAAA,CAAA,EAAAC,EAAAS,EAAA,EAAA,EAAA,qCAAA,CAAA,EACAV,EAAA,CAAA,EAAAF,EAAA,cAAAU,EAAAc,uBAAA,EAAuC,cAAAd,EAAAe,gBAAA,EACjDvB,EAAA,QAAAwB,GAAAd,EAAA,EAAA,EAAAF,EAAAiB,aAAA,CAAA,EACAzB,EAAA,CAAA,EAAA0B,EAAAC,GAAAA,EAAAC,OAAA,EAAA,EAAA,CAAA,EAWiC5B,EAAA,CAAA,EAAAC,EAAAS,EAAA,GAAA,GAAA,0BAAA,CAAA,GDjBzC,IAmBamB,GAQAC,GA3BbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,IACAC,KACAC,IAKAC,KACAC,KACAC,KACAC,KACAC,KAGAC,oDAEaf,GAAyB,CAAC,aAAa,EAQvCC,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CAIpC,IAAae,mBAAmBC,EAAU,CACxC,KAAKC,qBAAqBC,KAAKF,CAAE,CACnC,CASAG,YACmBC,EACAC,EACAC,EAAc,CAFd,KAAAF,gBAAAA,EACA,KAAAC,WAAAA,EACA,KAAAC,OAAAA,EAjBF,KAAAC,OAASC,EAAOC,EAAiB,EAE1C,KAAAR,qBAAuB,IAAIS,GAAwB,EAAE,EAIpD,KAAAC,WAAyB,cACxB,KAAAC,iBAAmB,IAAIC,GACzB,KAAAC,wBAA0B,IAAIJ,GAAwB,EAAE,EAEhE,KAAAlC,wBAA0B,IAAIuC,GAA6B,IAAI,EACrD,KAAApC,cAAgB,IAAIqC,GAEX,KAAArD,kBAAoB,cAKpC,CAEHsD,UAAQ,CACDlC,GAAuBmC,SAAS,KAAKP,UAAU,IAGpD,KAAKhC,cAAgB,KAAKyB,gBAAgBe,eAAe,KAAKR,UAAU,EAExE,KAAKnC,wBAAwB4C,aAAaC,KAAKC,GAAmB,KAAKjB,UAAU,CAAC,EAAEkB,UAAWC,GAAY,CACzG,KAAKC,aAAaD,CAAQ,CAC5B,CAAC,EAEDE,EAAc,CAAC,KAAK/C,cAAe,KAAKsB,oBAAoB,CAAC,EAC1DoB,KAAKC,GAAmB,KAAKjB,UAAU,EAAGsB,GAAoB,CAAE,EAChEJ,UAAU,CAAC,CAACK,EAAW7B,CAAkB,IAAK,CAC7C,IAAI8B,EAAmBD,GAAWE,KAAMN,GAAaA,GAAUxB,KAAOD,CAAkB,EACnF8B,IACHA,EAAmBD,IAAY,CAAC,GAElC,KAAKpD,wBAAwBuD,SAASF,CAAgB,CACxD,CAAC,EACL,CAEApD,iBAAiBuD,EAAcC,EAAY,CACzC,OAAOD,GAAIhC,KAAOiC,GAAIjC,EACxB,CAEAzB,sBAAoB,CAClBmD,EAAc,CAAC,KAAKnB,OAAO2B,aAAc,KAAKpB,uBAAuB,CAAC,EACnEO,KAAKc,GAAK,CAAC,CAAC,EACZZ,UAAU,CAAC,CAACa,EAAaC,CAAqB,IAAK,CAClD,KAAK/B,OAAOgC,cAAc,GAAGF,CAAW,IAAIG,GAAYC,kBAAkBC,IAAI,IAAIJ,CAAqB,EAAE,CAC3G,CAAC,CACL,CAEQZ,aAAaD,EAAyB,CAC5C,KAAKZ,iBAAiB8B,KAAKlB,CAAQ,EAC/BA,GACF,KAAKV,wBAAwBZ,KAAKsB,EAASxB,EAAE,CAEjD,iDA3DWhB,GAAyB2D,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,+BAAzB9D,EAAyB+D,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,OAAA,CAAAjD,mBAAA,qBAAAY,WAAA,YAAA,EAAAsC,QAAA,CAAArC,iBAAA,kBAAA,EAAAsC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,YAAA,eAAA,EAAA,CAAA,EAAA,cAAA,aAAA,EAAA,CAAA,WAAA,GAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GC3BtCxF,EAAA,EAAA0F,GAAA,GAAA,GAAA,MAAA,CAAA,OAAA5E,EAAA2E,EAAA5C,aAAA,cAAA,EAAA,EAAA,iBDuBY8C,EAAYC,GAAEC,GAAmBC,GAAAC,GAAEC,GAAeC,GAAAC,GAAEC,GAAqBC,GAAAC,GAAEC,EAAeC,EAAEC,EAAU,EAAAC,OAAA,CAAA;sHAAA,CAAA,CAAA,CAAA,SAIrGvF,CAAyB,GAAA,IE3BtC,IAAAwF,GAAAC,EAAA,KAAAC,0CEqCQC,EAAA,EAAA,oBAAA,GAAA,CAAA,4CAEEC,EAAA,iBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAkBF,EAAAG,cAAAN,CAAA,CAAqB,CAAA,CAAA,EAGxCO,EAAA,uBAJCC,EAAA,oBAAAC,EAAAC,EAAA,EAAA,EAAAC,GAAA,EAAA,EAAA,uBAAAR,EAAAS,wBAAA,CAAA,KAAA,MAAAH,IAAAI,OAAAJ,EAAA,EAAA,sCAUIX,EAAA,EAAA,MAAA,EAAA,EACEgB,EAAA,CAAA,4CAKFP,EAAA,EACAT,EAAA,EAAA,IAAA,EAAA,EAAGC,EAAA,QAAA,UAAA,CAAAE,EAAAc,CAAA,EAAA,IAAAZ,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAa,gBAAA,CAAiB,CAAA,CAAA,EAC3BF,EAAA,CAAA,4CACFP,EAAA,qBAREU,EAAA,EAAAC,EAAA,IAAAR,EAAA,EAAA,EAAAS,GAAA,EAAA,EAAA,+CAAAhB,EAAAiB,WAAAC,GAAA,GAAAC,GAAAnB,EAAAoB,WAAAC,MAAAC,gBAAA,CAAA,CAAA,EAAA,GAAA,EAOAR,EAAA,CAAA,EAAAC,EAAA,IAAAR,EAAA,EAAA,GAAAC,GAAA,EAAA,EAAA,gDAAAR,EAAAiB,UAAA,CAAA,EAAA,GAAA,sCAGFtB,EAAA,EAAA,IAAA,EAAA,EAAGC,EAAA,QAAA,UAAA,CAAAE,EAAAyB,CAAA,EAAA,IAAAvB,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAa,gBAAA,CAAiB,CAAA,CAAA,EAC3BF,EAAA,CAAA,4CAKFP,EAAA,qBALEU,EAAA,EAAAC,EAAA,IAAAR,EAAA,EAAA,EAAAS,GAAA,EAAA,EAAA,mDAAAhB,EAAAiB,WAAAC,GAAA,EAAAM,GAAAxB,EAAAoB,WAAAC,MAAAC,gBAAA,CAAA,CAAA,EAAA,GAAA,6BAfR3B,EAAA,EAAA,MAAA,CAAA,EAAkD,EAAA,MAAA,EAAA,EAE9C8B,EAAA,EAAAC,GAAA,EAAA,EAAA,eAWED,EAAA,EAAAE,GAAA,EAAA,EAAA,GAAA,EASJvB,EAAA,EAAM,mBApBJU,EAAA,CAAA,EAAAc,EAAArB,EAAA,EAAA,EAAAP,EAAA6B,aAAA,EAAA,EAAA,CAAA,sCAwBJlC,EAAA,EAAA,SAAA,EAAA,EAGEC,EAAA,QAAA,UAAA,CAAA,IAAAkC,EAAAhC,EAAAiC,CAAA,EAAAC,UAAAhC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EACe4B,EAAAG,SAAAjC,EAAAkC,aACd,CAAAC,QACTnC,EAAAmC,QAAA,EAASC,OAAApC,EAAAoB,WAAAC,MAAAgB,WAAAC,aAAAtC,EAAAoB,WAAAC,MAAAkB,UAAAC,aAAAxC,EAAAoB,WAAAC,MAAAC,gBAAA,CAIA,CACX,CAAA,CAAA,EACU3B,EAAA,EAAA,MAAA,EAAMgB,EAAA,CAAA,mBAA8BP,EAAA,EAAO,4BAArCU,EAAA,CAAA,EAAA2B,EAAAlC,EAAA,EAAA,EAAAuB,EAAAY,KAAA,CAAA,6BAZRjB,EAAA,EAAAkB,GAAA,EAAA,EAAA,SAAA,EAAA,gCAEqBtC,EAAA,UAAAE,EAAA,EAAA,EAAAP,EAAA4C,iBAAA,CAAA,sCAarBjD,EAAA,EAAA,SAAA,EAAA,EAAsEC,EAAA,QAAA,UAAA,CAAA,IAAAiD,EAAA/C,EAAAgD,CAAA,EAAAd,UAAAhC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAS2C,EAAAZ,SAAAjC,EAAAkC,YAAA,CAA6B,CAAA,CAAA,EAC1GvB,EAAA,CAAA,mBACFP,EAAA,4BADEU,EAAA,EAAAC,EAAA,IAAAR,EAAA,EAAA,EAAAsC,EAAAH,KAAA,EAAA,GAAA,6BADFjB,EAAA,EAAAsB,GAAA,EAAA,EAAA,SAAA,EAAA,gCAA2B1C,EAAA,UAAAE,EAAA,EAAA,EAAAP,EAAAgD,gBAAA,CAAA,sCAOvBrD,EAAA,EAAA,wBAAA,EAAA,EAGEC,EAAA,mBAAA,SAAAC,EAAA,CAAAC,EAAAmD,CAAA,EAAA,IAAAjD,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAoBF,EAAAkD,gBAAArD,CAAA,CAAuB,CAAA,CAAA,EAC5CO,EAAA,qBAHCC,EAAA,qBAAAL,EAAAmD,gBAAA,CAAA,EAA6C,aAAAnD,EAAAiB,UAAA,sCAHnDtB,EAAA,EAAA,MAAA,CAAA,EACE8B,EAAA,EAAA2B,GAAA,EAAA,EAAA,wBAAA,EAAA,EAOAzD,EAAA,EAAA,kBAAA,EAAA,EAGEC,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAuD,CAAA,EAAA,IAAArD,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAiBF,EAAAsD,kBAAAzD,CAAA,CAAyB,CAAA,CAAA,EAG3CO,EAAA,EAAkB,qBAbnBU,EAAA,EAAAc,EAAA5B,EAAAuD,YAAA,EAAA,EAAA,EAAA,EASEzC,EAAA,EAAAT,EAAA,UAAAL,EAAAmC,QAAA,CAAA,EAAqB,OAAAnC,EAAAwD,QAAA,EAEJ,gBAAAxD,EAAAyD,aAAA,sCASnB9D,EAAA,EAAA,mBAAA,EAAA,EAA4F,EAAA,uBAAA,EAExF+D,EAAA,EAAA,MAAA,EAAA,4CAOFtD,EAAA,EACAT,EAAA,EAAA,wBAAA,EACEgB,EAAA,CAAA,4CAKFP,EAAA,EACAT,EAAA,EAAA,GAAA,EACEgB,EAAA,EAAA,8CAKFP,EAAA,EACAT,EAAA,GAAA,0BAAA,EAA0B,GAAA,SAAA,EAAA,EACgBC,EAAA,QAAA,UAAA,CAAAE,EAAA6D,CAAA,EAAA,IAAA3D,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAA4D,6BAAA,CAA8B,CAAA,CAAA,EAC7EjD,EAAA,EAAA,8CAKFP,EAAA,EAAS,EACgB,qBA3BvBU,EAAA,CAAA,EAAAT,EAAA,MAAAE,EAAA,EAAA,EAAAC,GAAA,EAAA,EAAA,2CAAAR,EAAAS,wBAAA,CAAA,CAAA,EAMFK,EAAA,CAAA,EAAAC,EAAA,IAAAR,EAAA,EAAA,GAAAC,GAAA,EAAA,EAAA,gDAAAR,EAAAS,wBAAA,CAAA,EAAA,GAAA,EAOAK,EAAA,CAAA,EAAAC,EAAA,IAAAR,EAAA,GAAA,GAAAC,GAAA,GAAA,GAAA,kDAAAR,EAAAS,wBAAA,CAAA,EAAA,GAAA,EAQEK,EAAA,CAAA,EAAAC,EAAA,IAAAR,EAAA,GAAA,GAAAC,GAAA,GAAA,GAAA,yDAAAR,EAAAS,wBAAA,CAAA,EAAA,GAAA,6BAoBFiD,EAAA,EAAA,uCAAA,EAAA,2DACErD,EAAA,SAAAwD,CAAA,EAAiB,WAAAC,CAAA,EACI,UAAAvD,EAAA,EAAA,EAAAP,EAAA+D,kBAAA,CAAA,4BAMvBL,EAAA,EAAA,sCAAA,EAAA,gCACErD,EAAA,MAAA2D,CAAA,EAAW,aAAAhE,EAAAiB,UAAA,sCApBjBtB,EAAA,EAAA,YAAA,EAAA,EAMEC,EAAA,mBAAA,UAAA,CAAAE,EAAAmE,CAAA,EAAA,IAAAjE,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAoBF,EAAAkE,sBAAA,CAAuB,CAAA,CAAA,EAAC,cAAA,SAAArE,EAAA,CAAAC,EAAAmE,CAAA,EAAA,IAAAjE,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAC7BF,EAAAmE,iBAAAtE,CAAA,CAAwB,CAAA,CAAA,EAGvC4B,EAAA,EAAA2C,GAAA,EAAA,EAAA,cAAA,EAAA,EAAwE,EAAAC,GAAA,EAAA,EAAA,cAAA,EAAA,EAc1EjE,EAAA,qBAvBEC,EAAA,UAAAL,EAAAsE,kBAAA,CAAA,EAA+B,aAAAtE,EAAAuE,WAAA,4BArCnC9C,EAAA,EAAA+C,GAAA,GAAA,GAAA,mBAAA,EAAA,EAA6B,EAAAC,GAAA,EAAA,EAAA,YAAA,EAAA,kBAA7B7C,EAAA5B,EAAA0E,oBAAA,EAAA,EAAA,CAAA,yBAuEEhB,EAAA,EAAA,KAAA,EAAA,yBAEE/D,EAAA,EAAA,KAAA,EAAA,EACE+D,EAAA,EAAA,sBAAA,EACFtD,EAAA,6BACAT,EAAA,EAAA,KAAA,EAAA,EACE+D,EAAA,EAAA,uBAAA,EAAA,EACFtD,EAAA,0BADwBU,EAAA,EAAAT,EAAA,MAAAsE,CAAA,yBAIxBjB,EAAA,EAAA,KAAA,EAAA,qCAkBMkB,EAAA,CAAA,EAGEjF,EAAA,EAAA,SAAA,EAAA,EAAsBC,EAAA,QAAA,UAAA,CAAA,IAAAiF,EAAA/E,EAAAgF,CAAA,EAAA9C,UAAA+C,EAAA9E,EAAA,EAAA+B,UAAA,OAAA9B,EAAS2E,EAAA5C,SAAA8C,CAAA,CAAoB,CAAA,CAAA,EACjDpF,EAAA,EAAA,MAAA,EACEgB,EAAA,CAAA,mBACFP,EAAA,EAAO,gCADLU,EAAA,CAAA,EAAAC,EAAA,IAAAR,EAAA,EAAA,EAAAsE,EAAAnC,KAAA,EAAA,GAAA,sCAtBZ/C,EAAA,EAAA,KAAA,EAAA,EAAmC,EAAA,KAAA,EAC5B,EAAA,SAAA,EAAA,EAYF,EAAA,WAAA,EAAA,EACuCgB,EAAA,EAAA,WAAA,EAASP,EAAA,EAAW,EAE5DT,EAAA,EAAA,WAAA,KAAA,CAAA,EACE8B,EAAA,EAAAuD,GAAA,EAAA,EAAA,eAAA,EAAA,2CASArF,EAAA,GAAA,SAAA,EAAA,EAEEC,EAAA,QAAA,UAAA,CAAA,IAAAmF,EAAAjF,EAAAmF,CAAA,EAAAjD,UAAAhC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAkF,WAAAH,CAAA,CAAe,CAAA,CAAA,EAKxBpF,EAAA,GAAA,MAAA,EACEgB,EAAA,EAAA,8CAKFP,EAAA,EAAO,EAETT,EAAA,GAAA,SAAA,EAAA,EAEEC,EAAA,QAAA,UAAA,CAAA,IAAAmF,EAAAjF,EAAAmF,CAAA,EAAAjD,UAAAhC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAmF,aAAAJ,CAAA,CAAiB,CAAA,CAAA,EAK1BpF,EAAA,GAAA,MAAA,EACEgB,EAAA,EAAA,8CAKFP,EAAA,EAAO,EACA,EACA,EACP,0CAtDFU,EAAA,CAAA,EAAAT,EAAA,WAAAL,EAAAoF,eAAA,CAAA,EAA6B,oBAAAC,CAAA,wMAeRvE,EAAA,CAAA,EAAAT,EAAA,UAAAG,GAAA,EAAA,GAAAD,EAAA,EAAA,GAAAP,EAAAsF,iBAAA,EAAAC,GAAA,GAAAC,GAAAT,EAAA/E,EAAAiB,UAAA,CAAA,CAAA,EAYnBH,EAAA,CAAA,4KAIEA,EAAA,CAAA,EAAAC,EAAA,IAAAR,EAAA,GAAA,GAAAC,GAAA,GAAA,GAAA,wCAAAR,EAAAS,wBAAA,CAAA,EAAA,GAAA,EAWFK,EAAA,CAAA,gLAIEA,EAAA,CAAA,EAAAC,EAAA,IAAAR,EAAA,GAAA,GAAAC,GAAA,GAAA,GAAA,2CAAAR,EAAAS,wBAAA,CAAA,EAAA,GAAA,4BAWZiD,EAAA,EAAA,KAAA,EAAA,gCAIErD,EAAA,WAAAL,EAAAyF,UAAA,KAAA,KAAAzF,EAAAyF,SAAAC,CAAA,IAAAC,GAAA,EAAAC,EAAA,CAAA,sEAhFJjG,EAAA,EAAA,QAAA,CAAA,4BAKE8B,EAAA,EAAAoE,GAAA,EAAA,EAAA,KAAA,EAAA,EACAjB,EAAA,EAAA,EAAA,EACEnD,EAAA,EAAAqE,GAAA,EAAA,EAAA,KAAA,EAAA,EAAsC,EAAAC,GAAA,EAAA,EAAA,KAAA,EAAA,MAOxCnB,EAAA,EAAA,EAAA,EACEnD,EAAA,EAAAuE,GAAA,EAAA,EAAA,KAAA,EAAA,EAAsC,EAAAC,GAAA,GAAA,GAAA,KAAA,EAAA,MA6DxCxE,EAAA,GAAAyE,GAAA,EAAA,EAAA,KAAA,EAAA,EAMF9F,EAAA,mBAhFEC,EAAA,mBAAAE,EAAA,EAAA,EAAAP,EAAAoB,WAAA+E,QAAA,EAAA,UAAA,UAAA,EAA2E,SAAA5F,EAAA,EAAA,EAAAP,EAAAoG,wBAAA,CAAA,EAGvDtF,EAAA,CAAA,EAAAT,EAAA,kBAAAsF,GAAA,EAAAU,EAAA,CAAA,EAyEGvF,EAAA,CAAA,EAAAT,EAAA,mBAAAsF,GAAA,EAAAU,EAAA,CAAA,6BAQ3B1G,EAAA,EAAA,mBAAA,EAAA,EAA4F,EAAA,uBAAA,EAExF+D,EAAA,EAAA,MAAA,EAAA,4CAKFtD,EAAA,EACAT,EAAA,EAAA,wBAAA,EACEgB,EAAA,CAAA,4CACFP,EAAA,EACAT,EAAA,EAAA,GAAA,EACEgB,EAAA,EAAA,8CACFP,EAAA,EAAI,mBARAU,EAAA,CAAA,EAAAT,EAAA,MAAAE,EAAA,EAAA,EAAAC,GAAA,EAAA,EAAA,2CAAAR,EAAAS,wBAAA,CAAA,CAAA,EAIFK,EAAA,CAAA,EAAAC,EAAA,IAAAR,EAAA,EAAA,GAAAC,GAAA,EAAA,EAAA,wCAAAR,EAAAS,wBAAA,CAAA,EAAA,GAAA,EAGAK,EAAA,CAAA,EAAAC,EAAA,IAAAR,EAAA,GAAA,GAAAC,GAAA,GAAA,GAAA,sCAAAR,EAAAS,wBAAA,CAAA,EAAA,GAAA,sCA/QRd,EAAA,EAAA,uBAAA,CAAA,yCAUEC,EAAA,mBAAA,SAAAC,EAAA,CAAAC,EAAAwG,CAAA,EAAA,IAAAtG,EAAAC,EAAA,EAAA,OAAAC,EAAoBF,EAAAuG,iBAAA1G,CAAA,CAAwB,CAAA,CAAA,EAAC,iBAAA,SAAAA,EAAA,CAAAC,EAAAwG,CAAA,EAAA,IAAAtG,EAAAC,EAAA,EAAA,OAAAC,EAC3BF,EAAAwG,eAAA3G,CAAA,CAAsB,CAAA,CAAA,EAAC,oBAAA,SAAAA,EAAA,CAAAC,EAAAwG,CAAA,EAAA,IAAAtG,EAAAC,EAAA,EAAA,OAAAC,EACpBF,EAAAyG,kBAAA5G,CAAA,CAAyB,CAAA,CAAA,EAI9CF,EAAA,EAAA,4BAAA,CAAA,sDAMEC,EAAA,wBAAA,SAAAC,EAAA,CAAAC,EAAAwG,CAAA,EAAA,IAAAtG,EAAAC,EAAA,EAAA,OAAAC,EAAyBF,EAAA0G,uBAAA7G,CAAA,CAA8B,CAAA,CAAA,EAAC,iBAAA,SAAAA,EAAA,CAAAC,EAAAwG,CAAA,EAAA,IAAAtG,EAAAC,EAAA,EAAA,OAAAC,EAOtCF,EAAA2G,cAAA9G,CAAA,CAAqB,CAAA,CAAA,EAEvC4B,EAAA,EAAAmF,GAAA,EAAA,EAAA,oBAAA,CAAA,EAAyB,GAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,gBAmCzBpF,EAAA,GAAAqF,GAAA,EAAA,EAAA,SAAA,CAAA,gBAeErF,EAAA,GAAAsF,GAAA,EAAA,EAAA,SAAA,CAAA,EAAO,GAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,EAuBX5G,EAAA,EAEEqB,EAAA,GAAAwF,GAAA,EAAA,CAAA,EAAgB,GAAAC,GAAA,GAAA,GAAA,QAAA,CAAA,EAgEN,GAAAC,GAAA,GAAA,GAAA,mBAAA,EAAA,gBAyGd/G,EAAA,wBAjREC,EAAA,UAAAK,MAAA,EAAO,UAAAH,EAAA,EAAA,GAAAP,EAAAoH,QAAA,CAAA,EACqB,eAAA7G,EAAA,EAAA,GAAAP,EAAAqH,aAAA,CAAA,EACU,KAAArH,EAAAsH,OAAA,EACxB,aAAAtH,EAAAuD,YAAA,EAAA7C,OAAAV,EAAAoB,UAAA,EACuC,kBAAApB,EAAAuH,eAAA,EAClB,WAAAvH,EAAAwH,QAAA,EACd,gBAAAjH,EAAA,EAAA,GAAAP,EAAAyH,oBAAA,CAAA,EACyB,YAAA,EAAA,EAI5B,aAAA,CAAAzH,EAAAuD,YAAA,CAAA,EAIhBzC,EAAA,CAAA,EAAAT,EAAA,oBAAA,CAAAL,EAAAuD,YAAA,GAAA,CAAAvD,EAAAoF,eAAA,CAAA,EAAyD,WAAA,EAAA,EACvC,cAAA7E,EAAA,EAAA,GAAAP,EAAAyH,oBAAA,CAAA,EAC0B,cAAA,CAAAzH,EAAAoF,eAAA,CAAA,EACX,kBAAApF,EAAA0H,gBAAA,CAAA,EACI,sBAAAC,EAAApH,EAAA,EAAA,GAAAP,EAAA4H,mBAAA,KAAA,MAAAD,IAAAjH,OAAAiH,EAAA,CAAA3H,EAAAoF,eAAA,CAAA,EAEoC,0BAAA,CAAApF,EAAAoF,eAAA,CAAA,EAC5B,oBAAA,UAAA,EACb,uBAAA7E,EAAA,EAAA,GAAAP,EAAA6B,aAAA,CAAA,EACc,oBAAAtB,EAAA,EAAA,GAAAP,EAAA6H,qBAAA,IAAA,IAAA,CAAA7H,EAAAoF,eAAA,CAAA,EACqC,UAAApF,EAAA8H,KAAA,CAAA,EAInFhH,EAAA,CAAA,EAAAc,EAAA5B,EAAAoF,eAAA,EAAA,GAAA,CAAA,EASAtE,EAAA,EAAAc,EAAArB,EAAA,GAAA,GAAAP,EAAA+H,oBAAA,EAAA,GAAA,EAAA,EA0BAjH,EAAA,CAAA,EAAAc,EAAArB,EAAA,GAAA,GAAAP,EAAA6B,aAAA,EAAA,GAAA,EAAA,EAoBAf,EAAA,CAAA,EAAAc,EAAA5B,EAAAoF,eAAA,EAAA,GAAA,EAAA,EAmBFtE,EAAA,EAAAc,GAAAoG,EAAAhI,EAAA8H,KAAA,KAAA,OAAM,GAAA,EAAA,EAyJNhH,EAAA,CAAA,EAAAc,EAAArB,EAAA,GAAA,GAAAP,EAAAiI,eAAA,EAAA,GAAA,EAAA,GDtQJ,sBAwIaC,GAxIbC,GAAAC,EAAA,KAAAC,IACAC,IAgBAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAN,KAEAO,KACAC,KAeAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KAGAC,KACAC,KACAC,KACAC,KASAC,KACAC,KACAC,KACA5B,KAEA6B,yPAwDatC,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CAqBpC,IAAauC,aAAaC,EAAyB,CACjD,KAAKC,eAAeC,KAAKF,CAAO,CAClC,CAIA,IAAaG,cAAcH,EAA0B,CACnD,KAAKI,gBAAgBF,KAAKF,CAAO,CACnC,CAIA,IAA+BzJ,WAAW8J,EAAa,CACrD,KAAKC,YAAYC,IAAIF,CAAC,EACtB,KAAKG,kBAAkBC,mBAAmB,KAAKH,YAAW,CAAE,EAC5D,KAAKI,QAAQC,cAAc,KAAKL,YAAW,CAAE,EAC7C,KAAKM,eAAeD,cAAc,KAAKL,YAAW,CAAE,EACpD,KAAKO,mBAAkB,CACzB,CAEA,IAAItK,YAAU,CACZ,OAAO,KAAK+J,YAAW,CACzB,CAEA,IAAIvK,0BAAwB,CAC1B,OAAO,KAAK+K,cAAgB,KAAKvK,UACnC,CAEA,IAAIK,kBAAgB,CAClB,OAAO,KAAKF,WAAWC,MAAMC,kBAAoB,CACnD,CAOA,IAAamK,aAAaC,EAAc,CACtC,KAAKC,eAAef,KAAKc,GAAS,EAAK,CACzC,CAIA,IAAaE,aAAazJ,EAAgC,CACpDA,GAAWA,EAAQ0J,OAAS,IAC9B,KAAKC,iBAAmB,GACxB,KAAK3L,cAAc,CAAC,GAAGgC,CAAO,EAAG,EAAI,EAEzC,CA0BA,IAAaqJ,aAAaT,EAA2B,CAC/CA,IACF,KAAKgB,cAAgBhB,EACrB,KAAKK,QAAQY,gBAAgB,KAAKD,aAAa,EAEnD,CAEA,IAAIP,cAAY,CACd,OAAO,KAAKO,aACd,CAsEAE,YAC8CC,EACaC,EACRC,EAChChB,EACAiB,EACAC,EACEC,EACFrB,EACAsB,EACAC,EACAC,EACApB,EACAqB,EAGAC,GAA4C,CAfjB,KAAAV,OAAAA,EACa,KAAAC,oBAAAA,EACR,KAAAC,mBAAAA,EAChC,KAAAhB,QAAAA,EACA,KAAAiB,OAAAA,EACA,KAAAC,aAAAA,EACE,KAAAC,OAAAA,EACF,KAAArB,kBAAAA,EACA,KAAAsB,eAAAA,EACA,KAAAC,kBAAAA,EACA,KAAAC,gBAAAA,EACA,KAAApB,eAAAA,EACA,KAAAqB,6BAAAA,EAGA,KAAAC,sBAAAA,GA7LA,KAAA9E,KAAwC+E,EAAO,MAAM,EACrD,KAAAC,iBAAyDD,EAAOnM,MAAS,EACzE,KAAAyC,gBAA0C0J,EAAO,EAAE,EACnD,KAAAtJ,YAAcwJ,EAAS,IAC3B,KAAKjF,KAAI,IACN,MACjB,EACgB,KAAAkF,aAAeC,GAAa,KAAK1J,WAAW,EAE1C,KAAAmB,oBAAsBmI,EAAO,EAAK,EAGlC,KAAAvI,kBAAoByI,EAAS,IAC9C,KAAK3B,QAAQ8B,oBAAoB,KAAKlC,YAAW,EAAI,KAAKQ,aAAc,KAAKsB,iBAAgB,CAAE,CAAC,EAKjF,KAAAnC,eAAiB,IAAIwC,GAAkC,CAAA,CAAE,EAMzD,KAAArC,gBAAkB,IAAIqC,GAAmC,CAAA,CAAE,EAM3D,KAAAnC,YAAc6B,EAAmB,SAAS,EACxC,KAAAO,YAAcH,GAAa,KAAKjC,WAAW,EAqB9D,KAAAW,eAAiB,IAAIwB,GAAgB,EAAK,EAC1C,KAAA/H,eAAiBiI,GAAS,KAAK1B,cAAc,EACpC,KAAA2B,cAAgBT,EAAO,EAAK,EAC5B,KAAAnF,gBAAkBqF,EAAS,IAAM,CAAC,KAAK3H,eAAc,GAAM,KAAKkI,cAAa,CAAE,EAMxF,KAAAxB,iBAAmB,GASA,KAAA9I,iBAAiD,KAAKoK,YAAYG,KACnFC,EAAWvM,IACF,KAAKwM,sBAAsBxM,EAAU,CAC7C,CAAC,EAGe,KAAA2B,kBAAmD,KAAKwK,YAAYG,KACrFC,EAAWvM,IACF,KAAKyM,uBAAuBzM,EAAU,CAC9C,CAAC,EAGe,KAAAqE,kBAAmD,KAAK8H,YAAYG,KACrFC,EAAWvM,IACF,KAAK0M,uBAAuB1M,EAAU,CAC9C,CAAC,EAEe,KAAAwG,qBAA4CmG,EAAc,CAC3E,KAAK5K,iBACL,KAAKgK,aACL,KAAKrB,cAAc,CACpB,EAAE4B,KAAKM,EAAI,CAAC,CAACnD,GAASnH,GAAakI,EAAY,IAAMf,GAAQmB,OAAS,GAAK,CAACtI,IAAe,CAACkI,EAAY,CAAC,EAiBhG,KAAAqC,UAAwC,IAAIC,GAC5C,KAAAC,SAAgC,IAAID,GACpC,KAAAE,iBAAmB,IAAIF,GACvB,KAAAG,YAAc,IAAIH,GAIT,KAAA3M,WAAoE,KAAKgK,QAAQhK,WACjF,KAAAmD,YACjB,KAAK6G,QAAQ7G,YACI,KAAA6C,SAA0CwG,EAAc,CACzE,KAAKxC,QAAQhE,SACb,KAAKuE,cAAc,CACpB,EAAE4B,KACDM,EAAI,CAAC,CAACM,GAAS/I,EAAc,IACvBA,GACK+I,GAAQC,OAAQC,IAAMA,GAAEC,KAAO,SAAS,EAE1CH,EACR,CAAC,EAEe,KAAA9G,cAA+C,KAAK+D,QAAQ/D,cAC5D,KAAAY,gBAAuC2F,EAAc,CACtE,KAAKxC,QAAQnD,gBACb,KAAK+E,YAAY,CAClB,EAAEO,KAAKM,EAAI,CAAC,CAACU,GAAgBhL,EAAW,IAAMgL,IAAkB,CAAChL,IAAe,CAAC,KAAKuI,gBAAgB,CAAC,EAC9F,KAAA5J,aAAsB,CAAA,EAEb,KAAAC,QAAU0K,EAAgC,CAAA,CAAE,EAC5C,KAAAjF,oBAA2CgG,EAAc,CAC1E,KAAKxM,WAAWoN,gBAChBvB,GAAa,KAAK9K,OAAO,CAAC,CAC3B,EAAEoL,KACDM,EACE,CAAC,CAACY,GAAgBtM,EAAO,IACvBsM,IACAtM,GAAQiM,OACLM,IACC,CAAC,CAACA,GAAEC,QAAQ9C,QACZ6C,GAAEE,WAAaC,GAAqBC,8BACpCJ,GAAEE,WAAaC,GAAqBE,wBAAwB,EAC9DlD,OAAS,CAAC,CACf,EAGgB,KAAAtE,gBAA4ByH,GAC5B,KAAAxH,SAAmByH,GAE5B,KAAAzL,SAAqB,CAAA,EAEd,KAAA0L,yBAA2BC,EAAOC,EAA4B,EAErE,KAAA9H,QAAU,GAEH,KAAA+H,cAAgC,CAAA,EAE9B,KAAAxN,cAAgB,KAAKT,WAAWkO,WAEhC,KAAAvH,qBAAuB6F,EAAc,CAAC,KAAKZ,aAAc,KAAKpK,iBAAiB,CAAC,EAAE2K,KACnGM,EAAI,CAAC,CAACtK,GAAamH,EAAO,IAAMA,GAAQmB,OAAS,GAAK,CAACtI,EAAW,CAAC,EAElD,KAAA6C,yBAA2B,KAAKgF,QAAQhF,yBAExC,KAAArC,mBAA+C,KAAKuH,eAAeiE,cAoBpF,KAAKC,iBAAmB,KAAKrD,oBAAoBqD,kBAAoBC,EAAG,EAAK,EAC7E,KAAKjD,eAAekD,KACjBnC,KACCM,EAAK6B,IAAUA,IAAO,OAAY,QAAU,OAAS,MAAO,EAC5DC,GAAK,CAAC,CAAC,EAERC,UAAWC,IAA8B,CACxC,KAAK/H,KAAKmD,IAAI4E,EAAS,CACzB,CAAC,EACH,KAAKhI,sBAAwB+F,EAAc,CACzC,KAAK1B,OAAO4D,WACZ,KAAK5D,OAAO6D,iBACZ,KAAK3C,WAAW,CACjB,EAAEG,KACDC,EAAU,CAAC,CAACwC,GAAWC,GAAiBhP,EAAU,IAC5CA,KAAe,cACVwO,EAAG,EAAI,EAEZxO,KAAe,WAAaA,KAAe,UACtC,KAAKmL,mBACT8D,eAAe,CACdC,WAAY,CAAC,gCAAgC,EAC7CC,UAAYH,IAA+BD,GAC5C,EACAzC,KACCM,EAAKwC,IACIA,IAAUC,UAAUzE,OAAS,GAAKwE,IAAUC,UAAU,CAAC,CAC/D,CAAC,EAGD,KAAKlE,mBACT8D,eAAe,CACdC,WAAY,CAAC,uBAAuB,EACpCC,UAAYH,IAA+BD,GAC5C,EACAzC,KACCM,EAAKwC,IACIA,IAAUC,UAAUzE,OAAS,GAAKwE,IAAUC,UAAU,CAAC,CAC/D,CAAC,CAEP,EACDC,GAAU,EAAK,CAAC,EAElB,KAAKnP,WAAWoP,uBAAyB,GACzC,IAAMC,GAAc,KAAKjE,eAAekE,SAASC,cAAcC,IAAI,QAAQ,EACvEzO,GAAmC,CAAA,EACvC,GAAIsO,GAAa,CACf,IAAM/B,GAAImC,GAAcJ,EAAW,EAC/BK,GAAgBpC,EAAC,GAAKA,GAAE7C,OAAS,IACnC1J,GAAUuM,GAEd,CAEA,IAAMqC,GAAa,KAAKvE,eAAekE,SAASC,cAAcC,IAAI,YAAY,EAC9E,GAAIG,GAAY,CACd,IAAMC,GAAoBC,mBAAmBF,EAAU,EACvD,KAAK5N,gBAAgB8H,IAAI+F,EAAiB,CAC5C,CAEA,GAAI,KAAKzN,YAAW,EAAI,CACtB,IAAM2N,GAAmB,CAACC,EAAYC,mBAAoBD,EAAYE,qBAAqB,EACrFC,GAAsBnP,GAAQoP,UAAWnD,IAAW8C,GAAiBM,SAASpD,GAAOqD,OAAO,CAAC,EAC/FH,GAAsB,IACxBnP,GAAQuP,OAAOJ,GAAqB,CAAC,CAEzC,MACE,KAAKjF,OAAOsF,SAAS,CAAA,EAAI,CACvBC,WAAY,KAAKpF,eACjBqF,YAAa,CAAEd,WAAY,IAAI,EAC/Be,oBAAqB,QACtB,EAEH,KAAKrF,kBAAkBsF,kBAAkB5P,EAAO,EAChD,KAAKoC,YAAYyN,WAAW7P,EAAO,EAEnC,IAAM8P,GAAMrE,EAAc,CAAC,KAAKpB,eAAeqF,YAAa,KAAKzQ,WAAW8Q,MAAM,CAAC,EAChF3E,KACC4E,GAAI,CAAC,CAACN,GAAaxQ,EAAK,IAAK,CAC3B,IAAM+Q,GAAiBC,GAAA,GAAKR,IACxBpB,GAA6B,KACjC,GAAIpP,GAAMc,SAAWd,GAAMc,QAAQ0J,OAAS,EAAG,CAC7C,IAAMyG,GAAejR,GAAMc,QAAQiM,OAChCA,IAAW,EAAEA,GAAOQ,WAAaC,GAAqB0D,oBAAsBnE,GAAOO,QAAQ9C,SAAW,EAAE,EAEvGyG,GAAazG,OAAS,GACxB4E,GAAc+B,GAAcF,EAAY,EACxCF,GAAe,OAAY3B,IAE3B,OAAO2B,GAAe,MAE1B,MACE,OAAOA,GAAe,OAIpBP,GAAY,SAAcO,GAAe,SAGzC,KAAKtG,kBAGT,KAAKO,OAAOsF,SAAS,CAAA,EAAI,CACvBC,WAAY,KAAKpF,eACjBqF,YAAaO,GACd,EACH,CAAC,CAAC,EAEHxC,UAAS,EAEZ,KAAKP,cAAcoD,KAAKR,EAAG,EAE3B,IAAM/D,GAAc,KAAKlB,aAAa4C,UAAWrM,IAAe,CAC9D,IAAMuE,GAAOvE,GAAc,QAAU,QACrC,KAAK2K,YAAYwE,KAAK5K,EAAI,CAC5B,CAAC,EAED,KAAKuH,cAAcoD,KAAKvE,EAAW,EACnCyE,GAAO,IAAK,CACa,KAAKvR,WAAWwR,eAAc,EACtCC,QAASC,IAAQ,CAC9B,KAAKpG,gBAAgBqG,WAAW,KAAK9R,WAAY,0BAA2B,CAC1E+R,SAAUF,GAAKG,OACfC,UAAWJ,GAAKI,UAChBjS,WAAY,KAAKA,WAClB,CACH,CAAC,CACH,CAAC,CACH,CAEAkS,aAAW,CACT,KAAK9D,cAAcwD,QAASZ,GAAQA,EAAImB,YAAW,CAAE,CACvD,CAEAC,UAAQ,CACN,GAAI,KAAKzG,sBACH,KAAKA,sBAAsB0G,eAAiB,KAAK1G,sBAAsB0G,cAAczH,OAAS,GAChG,KAAKT,QAAQmI,eAAe,KAAK3G,sBAAsB0G,aAAa,MAGtE,QAAQ,KAAKrS,WAAU,CACrB,IAAK,UACC,KAAKiL,OAAOsH,SAASF,eAAiB,KAAKpH,OAAOsH,QAAQF,cAAczH,OAAS,GACnF,KAAKT,QAAQmI,eAAe,KAAKrH,OAAOsH,QAAQF,aAAa,EAE/D,MACF,IAAK,UACC,KAAKpH,OAAOuH,SAASH,eAAiB,KAAKpH,OAAOuH,QAAQH,cAAczH,OAAS,GACnF,KAAKT,QAAQmI,eAAe,KAAKrH,OAAOuH,QAAQH,aAAa,EAE/D,MACF,IAAK,WACH,OAAQ,KAAK9H,aAAY,CACvB,IAAK,OACC,KAAKU,OAAOwH,MAAMJ,eAAiB,KAAKpH,OAAOwH,KAAKJ,cAAczH,OAAS,GAC7E,KAAKT,QAAQmI,eAAe,KAAKrH,OAAOwH,KAAKJ,aAAa,EAE5D,KACJ,CACA,MACF,IAAK,cACC,KAAKpH,OAAOyH,aAAaL,eAAiB,KAAKpH,OAAOyH,YAAYL,cAAczH,OAAS,GAC3F,KAAKT,QAAQmI,eAAe,KAAKrH,OAAOyH,YAAYL,aAAa,EAEnE,KACJ,CAGF,IAAM9P,EAAqB,CAAA,EACvB,KAAK0I,OAAO0H,OACdpQ,EAASiP,KAAK,OAAS,KAAKvG,OAAO0H,MAAQ,SAAW,KAAK3S,WAAa,QAAQ,EAElFuC,EAASiP,KAAK,YAAc,KAAKxR,WAAa,QAAQ,EACtD,KAAKuC,SAAWA,EAEhB,KAAK8D,QAAU,KAAK4E,OAAO0H,MAAQ,IAAM,KAAK3S,WAE1C,KAAK4S,aACP,KAAKxE,cAAcoD,KACjB,KAAKoB,YACFtG,KACCuG,GAAW,GAAI,EACfjG,EAAKkG,GAASA,EAAK3F,OAAQ4F,GAAQC,EAAQD,CAAI,CAAC,EAChD5F,GAAQ2F,GAASA,EAAKlI,OAAS,CAAC,CAAC,EAElC+D,UAAWsE,GAAiB,CAC3B,KAAK9I,QAAQ+I,YAAYD,CAAa,CACxC,CAAC,CAAC,CAGV,CAEUhP,WAAW8O,EAAQ,CAC3B,IAAMhE,EAAYgE,GAAKtE,KAAK,WAAchE,OAAS,GACnD,KAAKoC,UAAU4E,KAAK,CAClB1C,UAAWA,EACXoE,SAAUJ,EAAI1F,GACdrN,WAAY,KAAKA,WAClB,EAED,IAAMoT,EAAe,KAAK7E,iBAAiBjC,KACzCC,EAAW8G,GACFA,EAAkB,KAAKnI,oBAAoBkI,aAAe,KAAKnI,OAAOmI,YAC9E,CAAC,EAEJzG,EAAc,CAACyG,EAAc,KAAKzH,uBAAuB2H,iBAAmB9E,EAAG,EAAE,EAAG,KAAKD,gBAAgB,CAAC,EACvGjC,KAAKoC,GAAK,CAAC,CAAC,EACZC,UAAU,CAAC,CAAC4E,EAAaC,EAAgBH,CAAe,IAAK,CAC5D,IAAII,EACJ,GAAI,KAAK9H,sBACP8H,EAAoB,GAAGD,CAAc,IAAIE,GAAYC,cAAcC,UAAUC,IAAI,OAEjF,QAAQ,KAAK7T,WAAU,CACrB,IAAK,UACCqT,EACFI,EAAoB,GAAGF,CAAW,IAAIG,GAAYI,eAAeC,SAASC,IAAI,IAAIN,GAAYI,eAAeC,SAASH,UAAUC,IAAI,GAEpIJ,EAAoB,GAAGF,CAAW,IAAIG,GAAYO,QAAQD,IAAI,IAAIN,GAAYO,QAAQL,UAAUC,IAAI,GAEtG,MACF,IAAK,UACHJ,EAAoB,GAAGF,CAAW,IAAIG,GAAYQ,QAAQF,IAAI,IAAIN,GAAYQ,QAAQN,UAAUC,IAAI,GACpG,MACF,IAAK,cACHJ,EAAoB,GAAGF,CAAW,IAAIG,GAAYS,YAAYH,IAAI,IAAIN,GAAYS,YAAYP,UAAUC,IAAI,GAC5G,KACJ,CAEF,GAAIJ,EAAmB,CACrB,IAAMW,EAAYX,EAAkBY,QAAQ,eAAgBtB,EAAI1F,EAAE,EAAEgH,QAAQ,aAActF,CAAS,EACnG,KAAK3D,OAAOkJ,cAAcF,CAAS,CACrC,CACF,CAAC,CACL,CAEUlQ,aAAa6O,EAAQ,CAC7B,IAAIwB,EACJ,OAAQ,KAAK/U,yBAAwB,CACnC,IAAK,UACH+U,EAAQxB,GAAKtE,OAAOyB,EAAYsE,WAAW,GAAG/J,OAAoB,UAClE,MACF,IAAK,UACH8J,EAAQxB,GAAKtE,OAAOgG,GAAqBC,QAAQ,GAAGjK,OAAoB,UACxE,MACF,IAAK,OACH8J,EAAQxB,GAAKtE,OAAOyB,EAAYyE,YAAY,GAAGlK,OAAO8J,MAAmB,OACzE,MACF,QACEA,EAAO,GACP,KACJ,CAEA5H,EAAc,CACZ,KAAKjB,6BAA6BkJ,2BAChC,KAAKpV,yBACL,0CACA,CAAE+U,KAAMA,CAAI,CAAE,EAEhB,KAAK7I,6BAA6BkJ,2BAChC,KAAKpV,yBACL,wDAAwD,EAE1D,KAAKkM,6BAA6BkJ,2BAChC,KAAKpV,yBACL,oDAAoD,EAEtD,KAAKkM,6BAA6BkJ,2BAChC,KAAKpV,yBACL,mDAAmD,CACpD,CACF,EACE8M,KACCC,EAAU,CAAC,CAACsI,EAAOC,EAASC,EAAwBC,CAAgB,IAC3D,KAAK/G,yBAAyBgH,UAAU,CAC7CC,KAAM,OACNL,MAAOA,EACPC,QAASA,EACTK,kBAAmBJ,EACnBC,iBAAkBA,EACnB,CACF,EACDI,GACE,KAAK1J,6BAA6BkJ,2BAChC,KAAKpV,yBACL,2CAA2C,EAE7C,KAAKkM,6BAA6BkJ,2BAChC,KAAKpV,yBACL,yCAAyC,CAC1C,CACF,EAEFmP,UAAU,CAAC,CAAC0G,EAAWC,EAASC,CAAK,IAAgC,CAChEF,GACF,KAAKlL,QAAQjG,aAAa6O,EAAItE,KAAK,WAAchE,OAAS,GAAIsI,EAAI1F,EAAE,EAAEsB,UAAU,CAC9EhF,KAAMA,IAAK,CACT,KAAK0B,aAAamK,iBAAiBF,CAAO,CAC5C,EACAC,MAAQE,GAAO,CACbC,QAAQH,MAAME,CAAG,EACjB,KAAKpK,aAAasK,eAAeJ,CAAK,CACxC,EACD,CAEL,CAAC,CACL,CAEUK,WAAWzC,EAAgB,CAC9BA,GACHuC,QAAQH,MAAM,qDAAqD,EAErE,KAAKtK,OAAOmI,aAAazE,UAAW4E,GAAe,CACjD,IAAIsC,EACJ,OAAQ,KAAK7V,WAAU,CACrB,IAAK,UACH6V,EAAY,GAAGnC,GAAYO,QAAQD,IAAI,IAAIN,GAAYO,QAAQL,UAAUkC,OAAO,GAChF,MACF,IAAK,UACHD,EAAY,GAAGnC,GAAYQ,QAAQF,IAAI,IAAIN,GAAYQ,QAAQN,UAAUkC,OAAO,GAChF,MACF,IAAK,cACHD,EAAY,GAAGnC,GAAYS,YAAYH,IAAI,IAAIN,GAAYS,YAAYP,UAAUkC,OAAO,GACxF,KACJ,CAEID,IACFA,EAAYA,EAAUxB,QAAQ,eAAgBlB,CAAQ,EACtD,KAAK/H,OAAOkJ,cAAc,GAAGf,CAAW,IAAIsC,CAAS,EAAE,EAE3D,CAAC,CACH,CAEgBxT,kBAAkBnB,EAAgC,QAAA6U,GAAA,sBAKhE,IAAMC,GAJiB,MAAM,KAAKxK,kBAAkByK,0BAClD,KAAKjW,WACL,KAAK2L,uBAAyBlM,MAAS,GAEI0N,OAAQA,GAAWA,EAAO+I,YAAYC,MAAM,EACzF,KAAKjX,cAAc,CAAC,GAAG8W,EAAuB,GAAG9U,CAAO,EAAG,EAAI,CACjE,GAEAe,gBAAgBmU,EAAyB,CACnCA,GACF,KAAKvK,iBAAiB7B,IAAIoM,CAAQ,EAClC,KAAK/L,eAAegM,cAAcD,EAAS/I,EAAE,EAC7C,KAAKiJ,yBAAyBF,EAAS/I,EAAE,EACzC,KAAKL,iBAAiByE,KAAK,EAAI,GAE/B,KAAK8E,8BAA6B,CAEtC,CAEAA,+BAA6B,CAC3B,KAAK9S,oBAAoBuG,IAAI,EAAI,EACjC,KAAKgD,iBAAiByE,KAAK,EAAK,CAClC,CAEA6E,yBAAyBxG,EAAkB,CACzC,IAAI0G,EAAoB,KACpB1G,IACF0G,EAAoBC,mBAAmB3G,CAAU,GAEnD,KAAK1E,OAAOsF,SAAS,CAAA,EAAI,CACvBC,WAAY,KAAKpF,eACjBqF,YAAa,CAAEd,WAAY0G,CAAiB,EAC5C3F,oBAAqB,QACtB,CACH,CAEU3R,cAAcgC,EAAkCwV,EAAwB,CAChF,KAAKvW,WAAW4Q,WAAW7P,CAAO,EAClC,KAAKoC,YAAYyN,WAAW7P,CAAO,EACnC,KAAKA,QAAQ8I,IAAI9I,CAAO,EACpBwV,GACF,KAAKC,eAAezV,QAAQ8I,IAAI9I,CAAO,EAEzC,KAAKuK,gBAAgBmL,iBAAiB,KAAK5W,WAAYkB,CAAO,CAChE,CAEUoE,iBAAiBwN,EAAW,CACpC,KAAK7R,aAAe6R,EACpB,KAAK/F,SAAS0E,KAAKqB,CAAI,CACzB,CAEUvN,eAAe2H,EAA0B,CAI7BA,EAAQC,OAAQC,GAAMA,EAAEC,KAAO,QAAQ,EAAEzC,OAC3C,GAChB,KAAKX,kBAAkB4M,uBAAuB3J,CAAO,CAEzD,CAEU1H,kBAAkBpE,EAAkB,CAC5C,KAAKkC,YAAYwT,cAAc1V,CAAU,CAC3C,CAEQsL,uBAAuB1M,EAAsB,CACnD,IAAI+W,EAEJ,OAAQ/W,EAAU,CAChB,IAAK,UACH+W,EAAqB,KAAK9L,OAAOsH,SAASyE,wBAA0BxI,EAAG,CAAA,CAAE,EACzE,MACF,IAAK,UACHuI,EAAqB,KAAK9L,OAAOuH,SAASwE,wBAA0BxI,EAAG,CAAA,CAAE,EACzE,MACF,IAAK,WACHuI,EAAqB,KAAK9L,OAAOwH,MAAMuE,wBAA0BxI,EAAG,CAAA,CAAE,EACtE,MACF,IAAK,cACHuI,EAAqB,KAAK9L,OAAOyH,aAAasE,wBAA0BxI,EAAG,CAAA,CAAE,EAC7E,MACF,QACEuI,EAAqBvI,EAAG,CAAA,CAAE,EAC1B,KACJ,CAEA,OAAO7B,EAAc,CAACoK,EAAoB,KAAKlN,eAAe,CAAC,EAAEyC,KAC/DM,EAAI,CAAC,CAACqK,EAAarN,CAAa,IAAM,CAAC,GAAGqN,EAAa,GAAGrN,CAAa,CAAC,CAAC,CAE7E,CAEQsN,WAAWpE,EAAW,CAC5BnG,EAAc,CACZ,KAAKjB,6BAA6BkJ,2BAChC,KAAKpV,yBACL,kDAAkD,EAEpD,KAAKkM,6BAA6BkJ,2BAChC,KAAKpV,yBACL,iEAAiE,EAEnE,KAAKkM,6BAA6BkJ,2BAChC,KAAKpV,yBACL,oDAAoD,EAEtD,KAAKkM,6BAA6BkJ,2BAChC,KAAKpV,yBACL,mDAAmD,CACpD,CACF,EACE8M,KACCC,EAAU,CAAC,CAACsI,EAAOC,EAASC,EAAwBC,CAAgB,IAC3D,KAAK/G,yBAAyBgH,UAAU,CAC7CC,KAAM,OACNL,MAAOA,EACPC,QAASA,EACTK,kBAAmBJ,EACnBC,iBAAkBA,EACnB,CACF,CAAC,EAEHrG,UAAW0G,GAAa,CACvB,GAAIA,EAAW,CACb,IAAM8B,EAAarE,EAAKlG,IAAKmG,IAAS,CAAE1F,GAAI0F,EAAI1F,GAAI0B,UAAWgE,EAAItE,KAAK,WAAchE,KAAK,EAAG,EAC9F2M,GACED,EAAWvK,IAAKyK,GACP,KAAKlN,QAAQjG,aAAamT,EAAItI,UAAWsI,EAAIhK,EAAE,EAAEf,KACtDM,EAAI,IAAM,EAAE,EACZ0K,GAAW,IACF9I,EAAG6I,EAAIhK,EAAE,CACjB,CAAC,CAEL,CAAC,EAEDf,KACC8I,GACE,KAAK1J,6BAA6BkJ,2BAChC,KAAKpV,yBACL,oDAAoD,EAEtD,KAAKkM,6BAA6BkJ,2BAChC,KAAKpV,yBACL,kDAAkD,CACnD,CACF,EAEFmP,UAAU,CAAC,CAAC4I,EAAMjC,EAASC,CAAK,IAAiC,CAChE,IAAMiC,EAAYD,EAAKpK,OAAQsK,GAAYA,IAAY,EAAE,EACrDD,EAAU5M,SAAW,EACvB,KAAKS,aAAamK,iBAAiBF,CAAO,GAE1CI,QAAQH,MAAM,yBAA0BiC,CAAS,EACjD,KAAKnM,aAAasK,eAAeJ,CAAK,GAEpCgC,EAAK3M,OAAS4M,EAAU5M,OAAS,GAEnC,KAAKzK,WAAWuX,eAAc,CAElC,CAAC,CACL,CACF,CAAC,CACL,CAEQlL,sBAAsBxM,EAAsB,CAClD,IAAI2X,EAEJ,OAAQ3X,EAAU,CAChB,IAAK,UACH2X,EAAoB,KAAK1M,OAAOsH,SAASqF,uBAAyBpJ,EAAG,CAAA,CAAE,EACvE,MACF,IAAK,UACHmJ,EAAoB,KAAK1M,OAAOuH,SAASoF,uBAAyBpJ,EAAG,CAAA,CAAE,EACvE,MACF,IAAK,WACHmJ,EAAoB,KAAK1M,OAAOwH,MAAMmF,uBAAyBpJ,EAAG,CAAA,CAAE,EACpE,MACF,IAAK,cACHmJ,EAAoB,KAAK1M,OAAOyH,aAAakF,uBAAyBpJ,EAAG,CAAA,CAAE,EAC3E,MACF,QACEmJ,EAAoBnJ,EAAG,CAAA,CAAE,EACzB,KACJ,CAEA,IAAMqJ,EAAoB,KAAKnM,6BAC5BkJ,2BAA2B,KAAKpV,yBAA0B,mDAAmD,EAC7G8M,KACCM,EAAKnL,IACI,CACLA,MAAOA,EACPT,SAAW8R,GAAgB,KAAKoE,WAAWpE,CAAI,EAC/CgF,iBAAkB,IAErB,CAAC,EAGN,OAAOnL,EAAc,CAACgL,EAAmB,KAAKjO,eAAgBmO,CAAiB,CAAC,EAAEvL,KAChFM,EAAI,CAAC,CAACqK,EAAazN,EAAcuO,CAAgB,IAAM,CAAC,GAAGd,EAAa,GAAGzN,EAAcuO,CAAgB,CAAC,CAAC,CAE/G,CAEQtL,uBAAuBzM,EAAsB,CACnD,IAAI2B,EAEJ,OAAQ3B,EAAU,CAChB,IAAK,UACH2B,EAAoB,KAAKsJ,OAAOsH,SAASyF,wBAA0BxJ,EAAG,CAAA,CAAE,EACxE,MACF,IAAK,UACH7M,EAAoB,KAAKsJ,OAAOuH,SAASwF,wBAA0BxJ,EAAG,CAAA,CAAE,EACxE,MACF,IAAK,WACH7M,EAAoB,KAAKsJ,OAAOwH,MAAMuF,wBAA0BxJ,EAAG,CAAA,CAAE,EACrE,MACF,IAAK,cACH7M,EAAoB,KAAKsJ,OAAOyH,aAAasF,wBAA0BxJ,EAAG,CAAA,CAAE,EAC5E,MACF,QACE7M,EAAoB6M,EAAG,CAAA,CAAE,EACzB,KACJ,CAEA,OAAO7M,CACT,CAEU/B,iBAAe,CACvB,KAAKO,WAAW8X,gBAAe,CACjC,CAEgBvS,cAAcwS,EAAwB,QAAAnC,GAAA,sBACpD,IAAMoC,EAAeD,IAAY,OAAS,QAAUA,EAChDE,EACJ,GAAI,KAAKpY,aAAe,UACtBoY,EAAc,GAAG1E,GAAYO,QAAQD,IAAI,WAChC,KAAKhU,aAAe,UAC7BoY,EAAc,GAAG1E,GAAYQ,QAAQF,IAAI,WAChC,KAAKhU,aAAe,YAAc,KAAK8K,gBAAkB,OAClEsN,EAAc,GAAG1E,GAAY2E,KAAKrE,IAAI,WAC7B,KAAKhU,aAAe,cAC7BoY,EAAc,GAAG1E,GAAYS,YAAYH,IAAI,OAE7C,OAAM,IAAIsE,MAAM,wBAAwB,KAAKtY,UAAU,EAAE,EAE3D,IAAMuT,EAAc,MAAMgF,GAAe,KAAKtN,OAAOmI,YAAY,EACjE,MAAM,KAAKhI,OAAOsF,SAAS,CAAC,GAAG6C,CAAW,IAAI6E,CAAW,IAAID,CAAY,EAAE,EAAG,CAC5EtH,oBAAqB,QACtB,CACH,GAEU5N,uBAAqB,CAC7B,KAAKoI,aAAasK,eAAe,6BAA6B,CAChE,CAEUzS,iBAAiBsV,EAA+B,CACxD,KAAK5C,WAAW4C,EAAMrF,QAAQ,CAChC,CAEU1N,uBAAuBgT,EAAa,CAC5C,GAAI,CAAC,KAAKtU,eAAc,EAAI,CAE1B,IAAMkT,EAAM,KAAKpN,kBAAkByO,WAAU,EAAGC,wBAC5CtB,GACFuB,aAAaC,QAAQxB,EAAKoB,EAAO,OAAS,QAAQ,CAEtD,CACA,KAAKpM,cAAcrC,IAAIyO,CAAI,CAC7B,CAEQnO,oBAAkB,CACxB,IAAM+M,EAAM,KAAKpN,kBAAkByO,WAAU,EAAGC,wBAChD,GAAItB,EAAK,CACP,IAAMoB,EAAOG,aAAaE,QAAQzB,CAAG,IAAM,SAC3C,KAAKhL,cAAcrC,IAAIyO,CAAI,CAC7B,MACE,KAAKpM,cAAcrC,IAAI,EAAI,CAE/B,CAEArH,8BAA4B,CAC1B,KAAKsI,OAAOmI,aAAa9G,KAAKoC,GAAK,CAAC,CAAC,EAAEC,UAAW4E,GAAe,CAC/D,IAAMwF,EAAc,GAAGxF,CAAW,IAAIG,GAAYsF,kBAAkBhF,IAAI,GACxE,KAAK5I,OAAOkJ,cAAc,KAAKlJ,OAAO6N,cAAc,CAACF,CAAW,EAAG,CAAEnI,YAAa,CAAEsI,OAAQ,EAAI,CAAE,CAAE,CAAC,CACvG,CAAC,CACH,iDAvyBWjS,GAAyBkS,EA+K1BC,EAAiB,EAAAD,EACjBE,EAA8B,EAAAF,EAC9BG,EAAsB,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,EAAAR,EAAAS,EAAA,EAAAT,EAAAU,EAAA,EAAAV,EAAAW,EAAA,EAAAX,EAAAY,EAAA,EAAAZ,EAAAa,EAAA,EAAAb,EAYtBc,GAAuB,CAAA,CAAA,CAAA,CAAA,+BA7LtBhT,EAAyBiT,UAAA,CAAA,CAAA,wBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,ybAtBzB,CACTb,GACAI,GACAW,GACA,CACEC,QAASC,GACTC,SAAUA,CAACC,EAAQC,IAAWD,EAAErN,KAAOsN,EAAEtN,IAE3C,CACEkN,QAASK,GACTH,SAAWI,IACF,CAAE1H,SAAU0H,EAAExN,EAAE,IAG3B,CACEkN,QAASO,GACTL,SAAU,CACRM,mBAAoB,KAEvB,CACF,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,OAAA,SAAA,EAAA,CAAA,EAAA,eAAA,EAAA,UAAA,eAAA,KAAA,aAAA,kBAAA,WAAA,gBAAA,YAAA,YAAA,EAAA,CAAA,EAAA,eAAA,EAAA,mBAAA,iBAAA,oBAAA,UAAA,eAAA,KAAA,aAAA,kBAAA,WAAA,gBAAA,YAAA,YAAA,EAAA,CAAA,EAAA,wBAAA,iBAAA,oBAAA,WAAA,cAAA,cAAA,kBAAA,qBAAA,0BAAA,oBAAA,uBAAA,oBAAA,SAAA,EAAA,CAAA,eAAA,GAAA,EAAA,kBAAA,EAAA,CAAA,sBAAA,GAAA,EAAA,kBAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,eAAA,GAAA,EAAA,2BAAA,EAAA,CAAA,YAAA,GAAA,EAAA,QAAA,EAAA,CAAA,cAAA,gCAAA,EAAA,uBAAA,EAAA,CAAA,eAAA,GAAA,EAAA,iBAAA,kBAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,EAAA,qBAAA,YAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,gBAAA,UAAA,OAAA,eAAA,EAAA,CAAA,EAAA,mBAAA,qBAAA,YAAA,EAAA,CAAA,iBAAA,MAAA,WAAA,OAAA,qBAAA,QAAA,EAAA,UAAA,YAAA,EAAA,CAAA,MAAA,6FAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,MAAA,WAAA,OAAA,qBAAA,QAAA,EAAA,mBAAA,cAAA,UAAA,YAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,EAAA,CAAA,EAAA,SAAA,WAAA,SAAA,EAAA,CAAA,EAAA,MAAA,YAAA,EAAA,CAAA,iBAAA,GAAA,EAAA,iBAAA,EAAA,CAAA,eAAA,QAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,kBAAA,EAAA,CAAA,WAAA,GAAA,EAAA,YAAA,EAAA,CAAA,eAAA,SAAA,EAAA,CAAA,UAAA,GAAA,EAAA,UAAA,EAAA,YAAA,kBAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,kBAAA,GAAA,cAAA,iBAAA,EAAA,WAAA,mBAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,gBAAA,GAAA,cAAA,yBAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,GAAA,cAAA,2BAAA,EAAA,OAAA,EAAA,CAAA,UAAA,GAAA,EAAA,SAAA,EAAA,CAAA,MAAA,wFAAA,EAAA,oBAAA,EAAA,KAAA,CAAA,EAAAC,SAAA,SAAAf,EAAAC,EAAA,CAAAD,EAAA,ICtIH3X,EAAA,EAAA,eAAA,EAGAjC,EAAA,EAAA4a,GAAA,GAAA,GAAA,uBAAA,CAAA,sBAAAvb,EAAA,EAAAc,EAAArB,EAAA,EAAA,EAAA+a,EAAAlU,QAAA,EAAA,EAAA,EAAA,kBDoFIkV,EAAYC,GAAAC,GAAAC,GACZC,GAAsBC,GAAAC,GAAAC,GAAAC,GACtBC,GACAC,GAAiBC,GAAAC,GAAAC,GACjBC,GAAcC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACdC,GAAaC,GACbC,GAAaC,GAAAC,GAAAC,GACbC,GAAeC,GAAAC,GACfC,GAAiBC,EACjBC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAAuBC,GACvBC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EAAyB,EAAAC,OAAA,CAAA;uHAAA,EAAAjQ,KAAA,CAAAkQ,UAEf,CAACC,GAAiBC,EAAM,CAAC,CAAA,CAAA,CAAA,SAuB1B5X,CAAyB,GAAA,0BGtIlC6X,GAAA,CAAA,4BADFC,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,EACFC,EAAA,uBADiBC,EAAA,EAAAC,EAAA,mBAAAC,CAAA,EAA+B,0BAAAC,GAAA,EAAAC,GAAAC,CAAA,CAAA,yBAGhDV,GAAA,CAAA,2BAAAE,EAAA,EAAAS,GAAA,EAAA,EAAA,eAAA,CAAA,sBAAeL,EAAA,mBAAAC,CAAA,sCAUTK,EAAA,CAAA,EACEX,EAAA,EAAA,IAAA,CAAA,EACEY,EAAA,QAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,KAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,yBAAAP,CAAA,CAA+B,CAAA,CAAA,EAKxCQ,EAAA,CAAA,mBACFlB,EAAA,yBALEC,EAAA,yEAIAA,EAAA,EAAAkB,EAAA,IAAAC,EAAA,EAAA,EAAA,gBAAA,EAAA,GAAA,6BAKAvB,EAAA,EAAA,IAAA,CAAA,EAMC,EAAA,WAAA,EAAA,EAC+BqB,EAAA,EAAA,KAAA,EAAGlB,EAAA,EAAW,8BAN5CE,EAAA,aAAAmB,CAAA,6FASFxB,EAAA,EAAA,IAAA,CAAA,EAQEqB,EAAA,CAAA,4CACFlB,EAAA,8BAREE,EAAA,aAAAmB,CAAA,EAAqB,WAAA,CAAAP,EAAAQ,gBAAA,CAAA,kEAOrBrB,EAAA,EAAAkB,EAAA,IAAAC,EAAA,EAAA,EAAAG,GAAA,EAAA,EAAA,oBAAAT,EAAAU,YAAA,CAAA,EAAA,GAAA,6BApBNhB,EAAA,CAAA,EACEV,EAAA,EAAA2B,GAAA,EAAA,EAAA,IAAA,CAAA,EAAkB,EAAAC,GAAA,EAAA,EAAA,IAAA,CAAA,gCAAlBzB,EAAA,EAAA0B,EAAAC,EAAA,EAAA,CAAA,sCAjBR/B,EAAA,EAAA,YAAA,CAAA,EAAiC,EAAA,mBAAA,EACZ,EAAA,iBAAA,EACAqB,EAAA,CAAA,4CAA2DlB,EAAA,EAE5EH,EAAA,EAAA,mBAAA,EACEgC,GAAA,CAAA,EACA/B,EAAA,EAAAgC,GAAA,EAAA,EAAA,eAAA,CAAA,eAUAhC,EAAA,GAAAiC,GAAA,EAAA,EAAA,eAAA,CAAA,gBAwBAF,GAAA,GAAA,CAAA,EACF7B,EAAA,EAAoB,EAMtBH,EAAA,GAAA,yBAAA,CAAA,EAIEY,EAAA,YAAA,SAAAuB,EAAA,CAAArB,EAAAsB,CAAA,EAAA,IAAAnB,EAAAC,EAAA,EAAA,OAAAC,EAAaF,EAAAoB,UAAAC,KAAAH,CAAA,CAAsB,CAAA,CAAA,EAAC,WAAA,SAAAA,EAAA,CAAArB,EAAAsB,CAAA,EAAA,IAAAnB,EAAAC,EAAA,EAAA,OAAAC,EACxBF,EAAAsB,gBAAAD,KAAAH,CAAA,CAA4B,CAAA,CAAA,EAAC,mBAAA,SAAAA,EAAA,CAAArB,EAAAsB,CAAA,EAAA,IAAAnB,EAAAC,EAAA,EAAA,OAAAC,EAKrBF,EAAAuB,oBAAAL,CAAA,CAA2B,CAAA,CAAA,EAAC,cAAA,SAAAA,EAAA,CAAArB,EAAAsB,CAAA,EAAA,IAAAnB,EAAAC,EAAA,EAAA,OAAAC,EACjCF,EAAAwB,iBAAAN,CAAA,CAAwB,CAAA,CAAA,EACxChC,EAAA,EAAyB,oBA3DjBE,EAAA,cAAA,EAAA,EAEUD,EAAA,CAAA,EAAAsC,EAAAnB,EAAA,EAAA,GAAAG,GAAA,EAAA,GAAA,QAAAT,EAAAU,YAAA,CAAA,CAAA,EAIAvB,EAAA,CAAA,EAAAC,EAAA,OAAAkB,EAAA,EAAA,GAAAN,EAAA0B,yBAAA,CAAA,EAUAvC,EAAA,CAAA,EAAAC,EAAA,OAAAkB,EAAA,GAAA,GAAAN,EAAA2B,kBAAA,CAAA,EAgCjBxC,EAAA,CAAA,EAAAC,EAAA,aAAAY,EAAA4B,UAAA,EAAyB,eAAA5B,EAAA6B,YAAA,EACI,WAAA7B,EAAA8B,cAAA,EACF,gBAAA9B,EAAA+B,aAAA,EAGI,eAAA/B,EAAAgC,YAAA,EACF,gBAAAhC,EAAAiC,aAAA,EACE,cAAAjC,EAAAkC,WAAA,GDhErC,aA2DaC,IA3DbC,GAAAC,EAAA,KAAAC,IACAC,IAYAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAYAC,KACAC,KAIAC,KAEAC,yPAmBajB,KAAwB,IAAA,CAA/B,MAAOA,CAAwB,CA4BnC,IAAczB,cAAY,CACxB,OAAO,KAAKmB,cAAgB,KAAKD,UACnC,CAoBAyB,YAC8CC,EACpCC,EACAC,EAGSC,EAA4C,CALjB,KAAAH,OAAAA,EACpC,KAAAC,OAAAA,EACA,KAAAC,mBAAAA,EAGS,KAAAC,sBAAAA,EApDV,KAAAzB,aAAiC,CAAA,EACjC,KAAAC,cAAmC,CAAA,EACnC,KAAAyB,kBAAoB,GACpB,KAAAC,iBAAmB,GAG5B,KAAAC,eAAiBC,GAAK,EACL,KAAAC,gBAAkBC,GAAa,KAAKH,cAAc,EAC1D,KAAApD,gBAAkBwD,EAAS,IAC9B,KAAKC,YAAW,IAAO,SAAW,KAAKrC,aAAe,cACjD,GAEF,KAAKsC,mBAAkB,CAC/B,EACQ,KAAAD,YAA8CE,EAAO,SAAS,EAC9D,KAAAD,mBAAqBC,EAAO,EAAK,EAEhC,KAAA/C,UAAwC,IAAIgD,GAC5C,KAAA9C,gBAAuC,IAAI8C,GAElC,KAAAC,YAAc,KAAKb,mBACnCc,QAAQ,oBAAoB,EAC5BC,KAAKC,EAAKC,GAAgBA,EAAYC,OAAO,CAAC,EAM9B,KAAA/C,mBAAyC,KAAK2B,OAAOqB,aAAaJ,KACnFK,GAAO,IAAM,CAAC,CAAC,KAAKlB,iBAAiB,EACrCc,EAAKK,GACC,KAAKpB,sBACA,KAAKC,kBAEP,IAAImB,CAAG,IAAI,KAAKnB,iBAAiB,EACzC,CAAC,EAGe,KAAAhC,0BAAgDoD,EAAc,CAC/E,KAAKxB,OAAOqB,aACZ,KAAKb,eAAe,CACrB,EAAES,KACDK,GAAO,CAAC,CAACG,EAAGnB,CAAc,IAAM,CAAC,CAACA,CAAc,EAChDY,EAAI,CAAC,CAACK,EAAKG,CAAK,IAAM,GAAGH,CAAG,IAAIG,CAAK,EAAE,CAAC,CAUvC,CAEH7E,yBAAyB6E,EAAa,CACpC,KAAKzB,OAAO0B,SAAS,CAACD,CAAK,EAAG,CAC5BE,MAAO,CAAEC,uBAAwB,KAAKvD,UAAU,EACjD,CACH,CAEAL,oBAAoB2C,EAA2B,CAC7C,KAAKA,mBAAmBkB,IAAIlB,CAAkB,CAChD,CAEA1C,iBAAiB6D,EAAoB,CACnC,KAAKpB,YAAYmB,IAAIC,CAAI,CAC3B,iDAvEWlD,GAAwBmD,EAmDzBC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAIjBI,GAAuB,CAAA,CAAA,CAAA,CAAA,+BAvDtBvD,EAAwBwD,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,OAAA,CAAAhE,WAAA,aAAAC,aAAA,eAAAC,eAAA,iBAAAE,aAAA,eAAAC,cAAA,gBAAAyB,kBAAA,oBAAAC,iBAAA,mBAAA5B,cAAA,gBAAAG,YAAA,cAAA0B,eAAA,CAAA,EAAA,gBAAA,CAAA,EAAAiC,QAAA,CAAAzE,UAAA,YAAAE,gBAAA,iBAAA,EAAAwE,mBAAAC,GAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,YAAA,WAAA,mBAAA,cAAA,aAAA,eAAA,WAAA,gBAAA,eAAA,gBAAA,aAAA,EAAA,CAAA,qBAAA,GAAA,cAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,cAAA,wBAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,YAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,cAAA,wBAAA,EAAA,aAAA,UAAA,EAAA,CAAA,EAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAA5G,EAAA,IAAA4G,EAAA,WC3DrCpH,EAAA,EAAAqH,GAAA,EAAA,EAAA,MAAA,CAAA,eAIErH,EAAA,EAAAsH,GAAA,EAAA,EAAA,cAAA,EAAO,EAAAC,GAAA,GAAA,GAAA,cAAA,KAAA,EAAAC,EAAA,cAJT3F,GAAA4F,EAAAnG,EAAA,EAAA,EAAAd,EAAA6E,WAAA,GAAA,EAAA,EAAAoC,CAAA,kBD8CIC,EAAYC,GAAAC,GAAAC,GACZC,GACAC,GAAgBC,GAAAC,GAAAC,GAAAC,GAChBC,GACAC,GACAC,GAAeC,GACfC,GAAaC,GACbC,GAAYC,GACZC,GAAiBC,EACjBC,EAAyB,EAAAC,OAAA,CAAA;sHAAA,CAAA,CAAA,CAAA,SAIhB5F,CAAwB,GAAA,IE3DrC,IAQa6F,IARbC,GAAAC,EAAA,SAQaF,KAAgC,IAAA,CAAvC,MAAOA,CAAgC,CAC3C,IAAaG,gBAAgBC,EAAgB,CAC3C,KAAKC,UAAYD,CACnB,iDAHWJ,EAAgC,CAAA,gCAAhCA,EAAgCM,UAAA,CAAA,CAAA,GAAA,kBAAA,EAAA,CAAA,EAAAC,OAAA,CAAAJ,gBAAA,iBAAA,CAAA,CAAA,CAAA,SAAhCH,CAAgC,GAAA,ICR7C,IAMaQ,IANbC,GAAAC,EAAA,SAMaF,KAAoB,IAAA,CAA3B,MAAOA,CAAoB,iDAApBA,EAAoB,CAAA,gCAApBA,EAAoBG,UAAA,CAAA,CAAA,GAAA,iBAAA,EAAA,EAAA,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA,SAApBH,CAAoB,GAAA,ICNjC,aAaaI,GAbbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,4EAQaR,IAAkB,IAAA,CAAzB,MAAOA,CAAkB,CAN/BS,aAAA,CAcY,KAAAC,MAAQ,GANlB,IACIC,iBAAiBC,EAAuB,CAC1C,KAAKC,kBAAoBD,CAC3B,CAKAE,OAAK,CACH,KAAKD,mBAAmBE,MAAK,EAC7B,KAAKC,QAAQF,MAAK,CACpB,CAEAG,KAAKC,EAA2BR,EAAc,CACxC,KAAKG,mBAAqB,KAAKG,SACjC,KAAKH,kBAAkBE,MAAK,EAC5B,KAAKF,kBAAkBM,mBAAmBD,CAAO,EACjD,KAAKR,MAAQA,GAAS,GACtB,KAAKM,OAAOC,KAAI,EAEpB,iDAtBWjB,EAAkB,CAAA,+BAAlBA,EAAkBoB,UAAA,CAAA,CAAA,YAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qBAEUE,EAAgB,waCfzDC,EAAA,EAAA,uBAAA,CAAA,EAA8D,EAAA,aAAA,EAAA,CAAA,EACK,EAAA,aAAA,EAClD,EAAA,kBAAA,CAAA,EAC+B,EAAA,OAAA,CAAA,EACbC,EAAA,CAAA,EAAWC,EAAA,EACtCF,EAAA,EAAA,SAAA,CAAA,EAAoDG,EAAA,QAAA,UAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAST,EAAAT,MAAA,CAAO,CAAA,CAAA,EAClEW,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,OAAA,EAAKC,EAAA,EAAW,EACnB,EACO,EAEpBF,EAAA,GAAA,MAAA,CAAA,EACEQ,GAAA,GAAA,KAAA,CAAA,EACFN,EAAA,EAAM,EAERF,EAAA,GAAA,oBAAA,EACES,GAAA,EAAA,EACFP,EAAA,EAAqB,QAhBDQ,EAAA,cAAA,EAAA,EAIaC,EAAA,CAAA,EAAAC,EAAAd,EAAAb,KAAA,kBDOvB4B,EAAcC,GAAeC,GAAEC,GAAaC,GAAEC,GAAgBC,GAAAC,GAAAC,GAAEC,GAAgBC,GAAAC,EAAA,EAAAC,OAAA,CAAA;2GAAA,CAAA,CAAA,CAAA,SAE/ElD,CAAkB,GAAA,IEb/B,IAAAmD,GAAAC,EAAA,KAAAC,OCAA,IAEaC,GACAC,GAEAC,GACAC,GANbC,GAAAC,EAAA,KAAAC,KAEaN,GAAuB,qBACvBC,GAAsBM,GAAmBC,KAEzCN,GAA4B,aAC5BC,GAA4B,CACvC,iIAAiI,ICPnI,IAAAM,GAAAC,GAAA,CAAAC,IAAAC,KAAA,UAASC,GAAuBC,EAAG,CACjC,OAAOA,GAAKA,EAAE,WAAaA,EAAI,CAC7B,QAAWA,CACb,CACF,CACAF,GAAO,QAAUC,GAAwBD,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,UCL9G,IAAAG,GAAAC,GAAA,CAAAC,IAAAC,KAAA,UAASC,GAAQC,EAAG,CAClB,0BAEA,OAAOF,GAAO,QAAUC,GAAwB,OAAO,QAArB,YAA2C,OAAO,OAAO,UAA1B,SAAqC,SAAUC,EAAG,CACjH,OAAO,OAAOA,CAChB,EAAI,SAAUA,EAAG,CACf,OAAOA,GAAmB,OAAO,QAArB,YAA+BA,EAAE,cAAgB,QAAUA,IAAM,OAAO,UAAY,SAAW,OAAOA,CACpH,EAAGF,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,QAASC,GAAQC,CAAC,CAC5F,CACAF,GAAO,QAAUC,GAASD,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,UCT/F,IAAAG,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,OAAO,eAAeD,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUE,GAClB,SAASA,GAAaC,EAAUC,EAAM,CACpC,GAAIA,EAAK,OAASD,EAChB,MAAM,IAAI,UAAUA,EAAW,aAAeA,EAAW,EAAI,IAAM,IAAM,uBAAyBC,EAAK,OAAS,UAAU,CAE9H,CACAH,GAAO,QAAUD,GAAQ,UCXzB,IAAAK,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAAWF,GAAuB,IAAwC,EAC1EG,GAASH,GAAuB,IAAwC,EAiC5E,SAASC,GAAOG,EAAO,CACrB,SAAID,GAAO,SAAS,EAAG,SAAS,EACzBC,aAAiB,SAAYF,GAAS,SAASE,CAAK,IAAM,UAAY,OAAO,UAAU,SAAS,KAAKA,CAAK,IAAM,eACzH,CACAL,GAAO,QAAUD,GAAQ,UC7CzB,IAAAO,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAAWF,GAAuB,IAAwC,EAC1EG,GAASH,GAAuB,IAAwC,EA+B5E,SAASC,GAAOG,EAAU,IACpBD,GAAO,SAAS,EAAG,SAAS,EAChC,IAAIE,EAAS,OAAO,UAAU,SAAS,KAAKD,CAAQ,EAGpD,OAAIA,aAAoB,SAAYF,GAAS,SAASE,CAAQ,IAAM,UAAYC,IAAW,gBAElF,IAAI,KAAKD,EAAS,QAAQ,CAAC,EACzB,OAAOA,GAAa,UAAYC,IAAW,kBAC7C,IAAI,KAAKD,CAAQ,IAEnB,OAAOA,GAAa,UAAYC,IAAW,oBAAsB,OAAO,QAAY,MAEvF,QAAQ,KAAK,oNAAoN,EAEjO,QAAQ,KAAK,IAAI,MAAM,EAAE,KAAK,GAEzB,IAAI,KAAK,GAAG,EAEvB,CACAN,GAAO,QAAUD,GAAQ,UC3DzB,IAAAQ,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAASF,GAAuB,IAA6B,EAC7DG,GAAUH,GAAuB,IAA6B,EAC9DI,GAAUJ,GAAuB,IAAwC,EAgC7E,SAASC,GAAQI,EAAW,CAE1B,MADID,GAAQ,SAAS,EAAG,SAAS,EAC7B,IAAKF,GAAO,SAASG,CAAS,GAAK,OAAOA,GAAc,SAC1D,MAAO,GAET,IAAIC,KAAWH,GAAQ,SAASE,CAAS,EACzC,MAAO,CAAC,MAAM,OAAOC,CAAI,CAAC,CAC5B,CACAP,GAAO,QAAUD,GAAQ,UCjDzB,IAAAS,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,OAAO,eAAeD,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUE,GAClB,SAASA,GAAUC,EAAa,CAC9B,GAAIA,IAAgB,MAAQA,IAAgB,IAAQA,IAAgB,GAClE,MAAO,KAET,IAAIC,EAAS,OAAOD,CAAW,EAC/B,OAAI,MAAMC,CAAM,EACPA,EAEFA,EAAS,EAAI,KAAK,KAAKA,CAAM,EAAI,KAAK,MAAMA,CAAM,CAC3D,CACAH,GAAO,QAAUD,GAAQ,UChBzB,IAAAK,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAASF,GAAuB,IAAqC,EACrEG,GAAUH,GAAuB,IAA6B,EAC9DI,GAAUJ,GAAuB,IAAwC,EAmB7E,SAASC,GAAgBI,EAAWC,EAAa,IAC3CF,GAAQ,SAAS,EAAG,SAAS,EACjC,IAAIG,KAAgBJ,GAAQ,SAASE,CAAS,EAAE,QAAQ,EACpDG,KAAaN,GAAO,SAASI,CAAW,EAC5C,OAAO,IAAI,KAAKC,EAAYC,CAAM,CACpC,CACAT,GAAO,QAAUD,GAAQ,UClCzB,IAAAW,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAASF,GAAuB,IAAsC,EACtEG,GAAUH,GAAuB,IAAwC,EACzEI,GAAUJ,GAAuB,IAAqC,EAmB1E,SAASC,GAAgBI,EAAWC,EAAa,IAC3CH,GAAQ,SAAS,EAAG,SAAS,EACjC,IAAII,KAAaH,GAAQ,SAASE,CAAW,EAC7C,SAAWJ,GAAO,SAASG,EAAW,CAACE,CAAM,CAC/C,CACAR,GAAO,QAAUD,GAAQ,UCjCzB,IAAAU,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAASF,GAAuB,IAAgC,EAChEG,GAAUH,GAAuB,IAAmC,EACpEI,GAAsB,MAC1B,SAASH,GAAgBI,EAAW,IAC9BF,GAAQ,SAAS,EAAG,SAAS,EACjC,IAAIG,KAAWJ,GAAO,SAASG,CAAS,EACpCE,EAAYD,EAAK,QAAQ,EAC7BA,EAAK,YAAY,EAAG,CAAC,EACrBA,EAAK,YAAY,EAAG,EAAG,EAAG,CAAC,EAC3B,IAAIE,EAAuBF,EAAK,QAAQ,EACpCG,EAAaF,EAAYC,EAC7B,OAAO,KAAK,MAAMC,EAAaL,EAAmB,EAAI,CACxD,CACAL,GAAO,QAAUD,GAAQ,UCpBzB,IAAAY,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAASF,GAAuB,IAAgC,EAChEG,GAAUH,GAAuB,IAAmC,EACxE,SAASC,GAAkBG,EAAW,IAChCD,GAAQ,SAAS,EAAG,SAAS,EACjC,IAAIE,EAAe,EACfC,KAAWJ,GAAO,SAASE,CAAS,EACpCG,EAAMD,EAAK,UAAU,EACrBE,GAAQD,EAAMF,EAAe,EAAI,GAAKE,EAAMF,EAChD,OAAAC,EAAK,WAAWA,EAAK,WAAW,EAAIE,CAAI,EACxCF,EAAK,YAAY,EAAG,EAAG,EAAG,CAAC,EACpBA,CACT,CACAP,GAAO,QAAUD,GAAQ,UCnBzB,IAAAW,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAASF,GAAuB,IAAgC,EAChEG,GAAUH,GAAuB,IAAmC,EACpEI,GAAUJ,GAAuB,IAAwC,EAC7E,SAASC,GAAkBI,EAAW,IAChCF,GAAQ,SAAS,EAAG,SAAS,EACjC,IAAIG,KAAWJ,GAAO,SAASG,CAAS,EACpCE,EAAOD,EAAK,eAAe,EAC3BE,EAA4B,IAAI,KAAK,CAAC,EAC1CA,EAA0B,eAAeD,EAAO,EAAG,EAAG,CAAC,EACvDC,EAA0B,YAAY,EAAG,EAAG,EAAG,CAAC,EAChD,IAAIC,KAAsBL,GAAQ,SAASI,CAAyB,EAChEE,EAA4B,IAAI,KAAK,CAAC,EAC1CA,EAA0B,eAAeH,EAAM,EAAG,CAAC,EACnDG,EAA0B,YAAY,EAAG,EAAG,EAAG,CAAC,EAChD,IAAIC,KAAsBP,GAAQ,SAASM,CAAyB,EACpE,OAAIJ,EAAK,QAAQ,GAAKG,EAAgB,QAAQ,EACrCF,EAAO,EACLD,EAAK,QAAQ,GAAKK,EAAgB,QAAQ,EAC5CJ,EAEAA,EAAO,CAElB,CACAR,GAAO,QAAUD,GAAQ,UC9BzB,IAAAc,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAASF,GAAuB,IAAwC,EACxEG,GAAUH,GAAuB,IAAwC,EACzEI,GAAUJ,GAAuB,IAAmC,EACxE,SAASC,GAAsBI,EAAW,IACpCD,GAAQ,SAAS,EAAG,SAAS,EACjC,IAAIE,KAAWJ,GAAO,SAASG,CAAS,EACpCE,EAAkB,IAAI,KAAK,CAAC,EAChCA,EAAgB,eAAeD,EAAM,EAAG,CAAC,EACzCC,EAAgB,YAAY,EAAG,EAAG,EAAG,CAAC,EACtC,IAAIC,KAAWL,GAAQ,SAASI,CAAe,EAC/C,OAAOC,CACT,CACAT,GAAO,QAAUD,GAAQ,UCnBzB,IAAAW,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAASF,GAAuB,IAAgC,EAChEG,GAAUH,GAAuB,IAAwC,EACzEI,GAAUJ,GAAuB,IAA4C,EAC7EK,GAAUL,GAAuB,IAAmC,EACpEM,GAAuB,OAC3B,SAASL,GAAcM,EAAW,IAC5BF,GAAQ,SAAS,EAAG,SAAS,EACjC,IAAIG,KAAWN,GAAO,SAASK,CAAS,EACpCE,KAAWN,GAAQ,SAASK,CAAI,EAAE,QAAQ,KAAQJ,GAAQ,SAASI,CAAI,EAAE,QAAQ,EAKrF,OAAO,KAAK,MAAMC,EAAOH,EAAoB,EAAI,CACnD,CACAP,GAAO,QAAUD,GAAQ,UCtBzB,IAAAY,GAAAC,GAAAC,IAAA,cAEA,OAAO,eAAeA,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,kBAAoBC,GAC5BD,GAAQ,kBAAoBE,GAC5B,IAAIC,GAAiB,CAAC,EACtB,SAASF,IAAoB,CAC3B,OAAOE,EACT,CACA,SAASD,GAAkBE,EAAY,CACrCD,GAAiBC,CACnB,ICbA,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAASF,GAAuB,IAAgC,EAChEG,GAAUH,GAAuB,IAAmC,EACpEI,GAAUJ,GAAuB,IAAgC,EACjEK,GAAU,KACd,SAASJ,GAAeK,EAAWC,EAAS,CAC1C,IAAIC,EAAMC,EAAOC,EAAOC,EAAuBC,EAAiBC,EAAuBC,EAAuBC,KAC1GZ,GAAQ,SAAS,EAAG,SAAS,EACjC,IAAIa,KAAqBX,GAAQ,mBAAmB,EAChDY,KAAmBb,GAAQ,UAAUI,GAAQC,GAASC,GAASC,EAA0EJ,GAAQ,gBAAkB,MAAQI,IAA0B,OAASA,EAAwBJ,GAAY,OAAuCK,EAAkBL,EAAQ,UAAY,MAAQK,IAAoB,SAAmBC,EAAwBD,EAAgB,WAAa,MAAQC,IAA0B,OAAtL,OAAwMA,EAAsB,gBAAkB,MAAQH,IAAU,OAASA,EAAQM,EAAe,gBAAkB,MAAQP,IAAU,OAASA,GAASK,EAAwBE,EAAe,UAAY,MAAQF,IAA0B,SAAmBC,EAAyBD,EAAsB,WAAa,MAAQC,IAA2B,OAAzG,OAA2HA,EAAuB,gBAAkB,MAAQP,IAAS,OAASA,EAAO,CAAC,EAG/4B,GAAI,EAAES,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAI,WAAW,kDAAkD,EAEzE,IAAIC,KAAWhB,GAAO,SAASI,CAAS,EACpCa,EAAMD,EAAK,UAAU,EACrBE,GAAQD,EAAMF,EAAe,EAAI,GAAKE,EAAMF,EAChD,OAAAC,EAAK,WAAWA,EAAK,WAAW,EAAIE,CAAI,EACxCF,EAAK,YAAY,EAAG,EAAG,EAAG,CAAC,EACpBA,CACT,CACAnB,GAAO,QAAUD,GAAQ,UC5BzB,IAAAuB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAASF,GAAuB,IAAgC,EAChEG,GAAUH,GAAuB,IAAmC,EACpEI,GAAUJ,GAAuB,IAAqC,EACtEK,GAAUL,GAAuB,IAAgC,EACjEM,GAAU,KACd,SAASL,GAAeM,EAAWC,EAAS,CAC1C,IAAIC,EAAMC,EAAOC,EAAOC,EAAuBC,EAAiBC,EAAuBC,EAAuBC,KAC1Gb,GAAQ,SAAS,EAAG,SAAS,EACjC,IAAIc,KAAWf,GAAO,SAASK,CAAS,EACpCW,EAAOD,EAAK,eAAe,EAC3BE,KAAqBb,GAAQ,mBAAmB,EAChDc,KAA4Bf,GAAQ,UAAUI,GAAQC,GAASC,GAASC,EAA0EJ,GAAQ,yBAA2B,MAAQI,IAA0B,OAASA,EAAwBJ,GAAY,OAAuCK,EAAkBL,EAAQ,UAAY,MAAQK,IAAoB,SAAmBC,EAAwBD,EAAgB,WAAa,MAAQC,IAA0B,OAAtL,OAAwMA,EAAsB,yBAA2B,MAAQH,IAAU,OAASA,EAAQQ,EAAe,yBAA2B,MAAQT,IAAU,OAASA,GAASK,EAAwBI,EAAe,UAAY,MAAQJ,IAA0B,SAAmBC,EAAyBD,EAAsB,WAAa,MAAQC,IAA2B,OAAzG,OAA2HA,EAAuB,yBAA2B,MAAQP,IAAS,OAASA,EAAO,CAAC,EAG57B,GAAI,EAAEW,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAI,WAAW,2DAA2D,EAElF,IAAIC,EAAsB,IAAI,KAAK,CAAC,EACpCA,EAAoB,eAAeH,EAAO,EAAG,EAAGE,CAAqB,EACrEC,EAAoB,YAAY,EAAG,EAAG,EAAG,CAAC,EAC1C,IAAIC,MAAsBlB,GAAQ,SAASiB,EAAqBb,CAAO,EACnEe,GAAsB,IAAI,KAAK,CAAC,EACpCA,GAAoB,eAAeL,EAAM,EAAGE,CAAqB,EACjEG,GAAoB,YAAY,EAAG,EAAG,EAAG,CAAC,EAC1C,IAAIC,MAAsBpB,GAAQ,SAASmB,GAAqBf,CAAO,EACvE,OAAIS,EAAK,QAAQ,GAAKK,GAAgB,QAAQ,EACrCJ,EAAO,EACLD,EAAK,QAAQ,GAAKO,GAAgB,QAAQ,EAC5CN,EAEAA,EAAO,CAElB,CACAnB,GAAO,QAAUD,GAAQ,UCxCzB,IAAA2B,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAASF,GAAuB,IAAqC,EACrEG,GAAUH,GAAuB,IAAmC,EACpEI,GAAUJ,GAAuB,IAAqC,EACtEK,GAAUL,GAAuB,IAAgC,EACjEM,GAAU,KACd,SAASL,GAAmBM,EAAWC,EAAS,CAC9C,IAAIC,EAAMC,EAAOC,EAAOC,EAAuBC,EAAiBC,EAAuBC,EAAuBC,KAC1Gb,GAAQ,SAAS,EAAG,SAAS,EACjC,IAAIc,KAAqBX,GAAQ,mBAAmB,EAChDY,KAA4Bb,GAAQ,UAAUI,GAAQC,GAASC,GAASC,EAA0EJ,GAAQ,yBAA2B,MAAQI,IAA0B,OAASA,EAAwBJ,GAAY,OAAuCK,EAAkBL,EAAQ,UAAY,MAAQK,IAAoB,SAAmBC,EAAwBD,EAAgB,WAAa,MAAQC,IAA0B,OAAtL,OAAwMA,EAAsB,yBAA2B,MAAQH,IAAU,OAASA,EAAQM,EAAe,yBAA2B,MAAQP,IAAU,OAASA,GAASK,EAAwBE,EAAe,UAAY,MAAQF,IAA0B,SAAmBC,EAAyBD,EAAsB,WAAa,MAAQC,IAA2B,OAAzG,OAA2HA,EAAuB,yBAA2B,MAAQP,IAAS,OAASA,EAAO,CAAC,EACx7BU,KAAWjB,GAAO,SAASK,EAAWC,CAAO,EAC7CY,EAAY,IAAI,KAAK,CAAC,EAC1BA,EAAU,eAAeD,EAAM,EAAGD,CAAqB,EACvDE,EAAU,YAAY,EAAG,EAAG,EAAG,CAAC,EAChC,IAAIC,KAAWjB,GAAQ,SAASgB,EAAWZ,CAAO,EAClD,OAAOa,CACT,CACAtB,GAAO,QAAUD,GAAQ,UCxBzB,IAAAwB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAASF,GAAuB,IAAgC,EAChEG,GAAUH,GAAuB,IAAqC,EACtEI,GAAUJ,GAAuB,IAAyC,EAC1EK,GAAUL,GAAuB,IAAmC,EACpEM,GAAuB,OAC3B,SAASL,GAAWM,EAAWC,EAAS,IAClCH,GAAQ,SAAS,EAAG,SAAS,EACjC,IAAII,KAAWP,GAAO,SAASK,CAAS,EACpCG,KAAWP,GAAQ,SAASM,EAAMD,CAAO,EAAE,QAAQ,KAAQJ,GAAQ,SAASK,EAAMD,CAAO,EAAE,QAAQ,EAKvG,OAAO,KAAK,MAAME,EAAOJ,EAAoB,EAAI,CACnD,CACAP,GAAO,QAAUD,GAAQ,UCtBzB,IAAAa,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,OAAO,eAAeD,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUE,GAClB,SAASA,GAAgBC,EAAQC,EAAc,CAG7C,QAFIC,EAAOF,EAAS,EAAI,IAAM,GAC1BG,EAAS,KAAK,IAAIH,CAAM,EAAE,SAAS,EAChCG,EAAO,OAASF,GACrBE,EAAS,IAAMA,EAEjB,OAAOD,EAAOC,CAChB,CACAL,GAAO,QAAUD,GAAQ,UCdzB,IAAAO,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAU,OAClB,IAAIG,GAASD,GAAuB,IAAyC,EAczEE,GAAa,CAEf,EAAG,SAAWC,EAAMC,EAAO,CAUzB,IAAIC,EAAaF,EAAK,eAAe,EAEjCG,EAAOD,EAAa,EAAIA,EAAa,EAAIA,EAC7C,SAAWJ,GAAO,SAASG,IAAU,KAAOE,EAAO,IAAMA,EAAMF,EAAM,MAAM,CAC7E,EAEA,EAAG,SAAWD,EAAMC,EAAO,CACzB,IAAIG,EAAQJ,EAAK,YAAY,EAC7B,OAAOC,IAAU,IAAM,OAAOG,EAAQ,CAAC,KAAQN,GAAO,SAASM,EAAQ,EAAG,CAAC,CAC7E,EAEA,EAAG,SAAWJ,EAAMC,EAAO,CACzB,SAAWH,GAAO,SAASE,EAAK,WAAW,EAAGC,EAAM,MAAM,CAC5D,EAEA,EAAG,SAAWD,EAAMC,EAAO,CACzB,IAAII,EAAqBL,EAAK,YAAY,EAAI,IAAM,EAAI,KAAO,KAC/D,OAAQC,EAAO,CACb,IAAK,IACL,IAAK,KACH,OAAOI,EAAmB,YAAY,EACxC,IAAK,MACH,OAAOA,EACT,IAAK,QACH,OAAOA,EAAmB,CAAC,EAC7B,IAAK,OACL,QACE,OAAOA,IAAuB,KAAO,OAAS,MAClD,CACF,EAEA,EAAG,SAAWL,EAAMC,EAAO,CACzB,SAAWH,GAAO,SAASE,EAAK,YAAY,EAAI,IAAM,GAAIC,EAAM,MAAM,CACxE,EAEA,EAAG,SAAWD,EAAMC,EAAO,CACzB,SAAWH,GAAO,SAASE,EAAK,YAAY,EAAGC,EAAM,MAAM,CAC7D,EAEA,EAAG,SAAWD,EAAMC,EAAO,CACzB,SAAWH,GAAO,SAASE,EAAK,cAAc,EAAGC,EAAM,MAAM,CAC/D,EAEA,EAAG,SAAWD,EAAMC,EAAO,CACzB,SAAWH,GAAO,SAASE,EAAK,cAAc,EAAGC,EAAM,MAAM,CAC/D,EAEA,EAAG,SAAWD,EAAMC,EAAO,CACzB,IAAIK,EAAiBL,EAAM,OACvBM,EAAeP,EAAK,mBAAmB,EACvCQ,EAAoB,KAAK,MAAMD,EAAe,KAAK,IAAI,GAAID,EAAiB,CAAC,CAAC,EAClF,SAAWR,GAAO,SAASU,EAAmBP,EAAM,MAAM,CAC5D,CACF,EACIQ,GAAWV,GACfJ,GAAQ,QAAUc,GAClBb,GAAO,QAAUD,GAAQ,UCzFzB,IAAAe,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAU,OAClB,IAAIG,GAASD,GAAuB,IAAiD,EACjFE,GAAUF,GAAuB,IAA+C,EAChFG,GAAUH,GAAuB,IAAmD,EACpFI,GAAUJ,GAAuB,IAA4C,EAC7EK,GAAUL,GAAuB,IAAgD,EACjFM,GAAUN,GAAuB,IAAyC,EAC1EO,GAAUP,GAAuB,IAAsC,EACvEQ,GAAgB,CAClB,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,OACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,OACT,EA+CIC,GAAa,CAEf,EAAG,SAAWC,EAAMC,EAAOC,EAAU,CACnC,IAAIC,EAAMH,EAAK,eAAe,EAAI,EAAI,EAAI,EAC1C,OAAQC,EAAO,CAEb,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOC,EAAS,IAAIC,EAAK,CACvB,MAAO,aACT,CAAC,EAEH,IAAK,QACH,OAAOD,EAAS,IAAIC,EAAK,CACvB,MAAO,QACT,CAAC,EAEH,IAAK,OACL,QACE,OAAOD,EAAS,IAAIC,EAAK,CACvB,MAAO,MACT,CAAC,CACL,CACF,EAEA,EAAG,SAAWH,EAAMC,EAAOC,EAAU,CAEnC,GAAID,IAAU,KAAM,CAClB,IAAIG,EAAaJ,EAAK,eAAe,EAEjCK,EAAOD,EAAa,EAAIA,EAAa,EAAIA,EAC7C,OAAOF,EAAS,cAAcG,EAAM,CAClC,KAAM,MACR,CAAC,CACH,CACA,OAAOR,GAAQ,QAAQ,EAAEG,EAAMC,CAAK,CACtC,EAEA,EAAG,SAAWD,EAAMC,EAAOC,EAAUI,EAAS,CAC5C,IAAIC,KAAqBZ,GAAQ,SAASK,EAAMM,CAAO,EAEnDE,EAAWD,EAAiB,EAAIA,EAAiB,EAAIA,EAGzD,GAAIN,IAAU,KAAM,CAClB,IAAIQ,EAAeD,EAAW,IAC9B,SAAWZ,GAAQ,SAASa,EAAc,CAAC,CAC7C,CAGA,OAAIR,IAAU,KACLC,EAAS,cAAcM,EAAU,CACtC,KAAM,MACR,CAAC,KAIQZ,GAAQ,SAASY,EAAUP,EAAM,MAAM,CACpD,EAEA,EAAG,SAAWD,EAAMC,EAAO,CACzB,IAAIS,KAAkBjB,GAAQ,SAASO,CAAI,EAG3C,SAAWJ,GAAQ,SAASc,EAAaT,EAAM,MAAM,CACvD,EAUA,EAAG,SAAWD,EAAMC,EAAO,CACzB,IAAII,EAAOL,EAAK,eAAe,EAC/B,SAAWJ,GAAQ,SAASS,EAAMJ,EAAM,MAAM,CAChD,EAEA,EAAG,SAAWD,EAAMC,EAAOC,EAAU,CACnC,IAAIS,EAAU,KAAK,MAAMX,EAAK,YAAY,EAAI,GAAK,CAAC,EACpD,OAAQC,EAAO,CAEb,IAAK,IACH,OAAO,OAAOU,CAAO,EAEvB,IAAK,KACH,SAAWf,GAAQ,SAASe,EAAS,CAAC,EAExC,IAAK,KACH,OAAOT,EAAS,cAAcS,EAAS,CACrC,KAAM,SACR,CAAC,EAEH,IAAK,MACH,OAAOT,EAAS,QAAQS,EAAS,CAC/B,MAAO,cACP,QAAS,YACX,CAAC,EAEH,IAAK,QACH,OAAOT,EAAS,QAAQS,EAAS,CAC/B,MAAO,SACP,QAAS,YACX,CAAC,EAEH,IAAK,OACL,QACE,OAAOT,EAAS,QAAQS,EAAS,CAC/B,MAAO,OACP,QAAS,YACX,CAAC,CACL,CACF,EAEA,EAAG,SAAWX,EAAMC,EAAOC,EAAU,CACnC,IAAIS,EAAU,KAAK,MAAMX,EAAK,YAAY,EAAI,GAAK,CAAC,EACpD,OAAQC,EAAO,CAEb,IAAK,IACH,OAAO,OAAOU,CAAO,EAEvB,IAAK,KACH,SAAWf,GAAQ,SAASe,EAAS,CAAC,EAExC,IAAK,KACH,OAAOT,EAAS,cAAcS,EAAS,CACrC,KAAM,SACR,CAAC,EAEH,IAAK,MACH,OAAOT,EAAS,QAAQS,EAAS,CAC/B,MAAO,cACP,QAAS,YACX,CAAC,EAEH,IAAK,QACH,OAAOT,EAAS,QAAQS,EAAS,CAC/B,MAAO,SACP,QAAS,YACX,CAAC,EAEH,IAAK,OACL,QACE,OAAOT,EAAS,QAAQS,EAAS,CAC/B,MAAO,OACP,QAAS,YACX,CAAC,CACL,CACF,EAEA,EAAG,SAAWX,EAAMC,EAAOC,EAAU,CACnC,IAAIU,EAAQZ,EAAK,YAAY,EAC7B,OAAQC,EAAO,CACb,IAAK,IACL,IAAK,KACH,OAAOJ,GAAQ,QAAQ,EAAEG,EAAMC,CAAK,EAEtC,IAAK,KACH,OAAOC,EAAS,cAAcU,EAAQ,EAAG,CACvC,KAAM,OACR,CAAC,EAEH,IAAK,MACH,OAAOV,EAAS,MAAMU,EAAO,CAC3B,MAAO,cACP,QAAS,YACX,CAAC,EAEH,IAAK,QACH,OAAOV,EAAS,MAAMU,EAAO,CAC3B,MAAO,SACP,QAAS,YACX,CAAC,EAEH,IAAK,OACL,QACE,OAAOV,EAAS,MAAMU,EAAO,CAC3B,MAAO,OACP,QAAS,YACX,CAAC,CACL,CACF,EAEA,EAAG,SAAWZ,EAAMC,EAAOC,EAAU,CACnC,IAAIU,EAAQZ,EAAK,YAAY,EAC7B,OAAQC,EAAO,CAEb,IAAK,IACH,OAAO,OAAOW,EAAQ,CAAC,EAEzB,IAAK,KACH,SAAWhB,GAAQ,SAASgB,EAAQ,EAAG,CAAC,EAE1C,IAAK,KACH,OAAOV,EAAS,cAAcU,EAAQ,EAAG,CACvC,KAAM,OACR,CAAC,EAEH,IAAK,MACH,OAAOV,EAAS,MAAMU,EAAO,CAC3B,MAAO,cACP,QAAS,YACX,CAAC,EAEH,IAAK,QACH,OAAOV,EAAS,MAAMU,EAAO,CAC3B,MAAO,SACP,QAAS,YACX,CAAC,EAEH,IAAK,OACL,QACE,OAAOV,EAAS,MAAMU,EAAO,CAC3B,MAAO,OACP,QAAS,YACX,CAAC,CACL,CACF,EAEA,EAAG,SAAWZ,EAAMC,EAAOC,EAAUI,EAAS,CAC5C,IAAIO,KAAWnB,GAAQ,SAASM,EAAMM,CAAO,EAC7C,OAAIL,IAAU,KACLC,EAAS,cAAcW,EAAM,CAClC,KAAM,MACR,CAAC,KAEQjB,GAAQ,SAASiB,EAAMZ,EAAM,MAAM,CAChD,EAEA,EAAG,SAAWD,EAAMC,EAAOC,EAAU,CACnC,IAAIY,KAActB,GAAQ,SAASQ,CAAI,EACvC,OAAIC,IAAU,KACLC,EAAS,cAAcY,EAAS,CACrC,KAAM,MACR,CAAC,KAEQlB,GAAQ,SAASkB,EAASb,EAAM,MAAM,CACnD,EAEA,EAAG,SAAWD,EAAMC,EAAOC,EAAU,CACnC,OAAID,IAAU,KACLC,EAAS,cAAcF,EAAK,WAAW,EAAG,CAC/C,KAAM,MACR,CAAC,EAEIH,GAAQ,QAAQ,EAAEG,EAAMC,CAAK,CACtC,EAEA,EAAG,SAAWD,EAAMC,EAAOC,EAAU,CACnC,IAAIa,KAAgBxB,GAAO,SAASS,CAAI,EACxC,OAAIC,IAAU,KACLC,EAAS,cAAca,EAAW,CACvC,KAAM,WACR,CAAC,KAEQnB,GAAQ,SAASmB,EAAWd,EAAM,MAAM,CACrD,EAEA,EAAG,SAAWD,EAAMC,EAAOC,EAAU,CACnC,IAAIc,EAAYhB,EAAK,UAAU,EAC/B,OAAQC,EAAO,CAEb,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOC,EAAS,IAAIc,EAAW,CAC7B,MAAO,cACP,QAAS,YACX,CAAC,EAEH,IAAK,QACH,OAAOd,EAAS,IAAIc,EAAW,CAC7B,MAAO,SACP,QAAS,YACX,CAAC,EAEH,IAAK,SACH,OAAOd,EAAS,IAAIc,EAAW,CAC7B,MAAO,QACP,QAAS,YACX,CAAC,EAEH,IAAK,OACL,QACE,OAAOd,EAAS,IAAIc,EAAW,CAC7B,MAAO,OACP,QAAS,YACX,CAAC,CACL,CACF,EAEA,EAAG,SAAWhB,EAAMC,EAAOC,EAAUI,EAAS,CAC5C,IAAIU,EAAYhB,EAAK,UAAU,EAC3BiB,GAAkBD,EAAYV,EAAQ,aAAe,GAAK,GAAK,EACnE,OAAQL,EAAO,CAEb,IAAK,IACH,OAAO,OAAOgB,CAAc,EAE9B,IAAK,KACH,SAAWrB,GAAQ,SAASqB,EAAgB,CAAC,EAE/C,IAAK,KACH,OAAOf,EAAS,cAAce,EAAgB,CAC5C,KAAM,KACR,CAAC,EACH,IAAK,MACH,OAAOf,EAAS,IAAIc,EAAW,CAC7B,MAAO,cACP,QAAS,YACX,CAAC,EAEH,IAAK,QACH,OAAOd,EAAS,IAAIc,EAAW,CAC7B,MAAO,SACP,QAAS,YACX,CAAC,EAEH,IAAK,SACH,OAAOd,EAAS,IAAIc,EAAW,CAC7B,MAAO,QACP,QAAS,YACX,CAAC,EAEH,IAAK,OACL,QACE,OAAOd,EAAS,IAAIc,EAAW,CAC7B,MAAO,OACP,QAAS,YACX,CAAC,CACL,CACF,EAEA,EAAG,SAAWhB,EAAMC,EAAOC,EAAUI,EAAS,CAC5C,IAAIU,EAAYhB,EAAK,UAAU,EAC3BiB,GAAkBD,EAAYV,EAAQ,aAAe,GAAK,GAAK,EACnE,OAAQL,EAAO,CAEb,IAAK,IACH,OAAO,OAAOgB,CAAc,EAE9B,IAAK,KACH,SAAWrB,GAAQ,SAASqB,EAAgBhB,EAAM,MAAM,EAE1D,IAAK,KACH,OAAOC,EAAS,cAAce,EAAgB,CAC5C,KAAM,KACR,CAAC,EACH,IAAK,MACH,OAAOf,EAAS,IAAIc,EAAW,CAC7B,MAAO,cACP,QAAS,YACX,CAAC,EAEH,IAAK,QACH,OAAOd,EAAS,IAAIc,EAAW,CAC7B,MAAO,SACP,QAAS,YACX,CAAC,EAEH,IAAK,SACH,OAAOd,EAAS,IAAIc,EAAW,CAC7B,MAAO,QACP,QAAS,YACX,CAAC,EAEH,IAAK,OACL,QACE,OAAOd,EAAS,IAAIc,EAAW,CAC7B,MAAO,OACP,QAAS,YACX,CAAC,CACL,CACF,EAEA,EAAG,SAAWhB,EAAMC,EAAOC,EAAU,CACnC,IAAIc,EAAYhB,EAAK,UAAU,EAC3BkB,EAAeF,IAAc,EAAI,EAAIA,EACzC,OAAQf,EAAO,CAEb,IAAK,IACH,OAAO,OAAOiB,CAAY,EAE5B,IAAK,KACH,SAAWtB,GAAQ,SAASsB,EAAcjB,EAAM,MAAM,EAExD,IAAK,KACH,OAAOC,EAAS,cAAcgB,EAAc,CAC1C,KAAM,KACR,CAAC,EAEH,IAAK,MACH,OAAOhB,EAAS,IAAIc,EAAW,CAC7B,MAAO,cACP,QAAS,YACX,CAAC,EAEH,IAAK,QACH,OAAOd,EAAS,IAAIc,EAAW,CAC7B,MAAO,SACP,QAAS,YACX,CAAC,EAEH,IAAK,SACH,OAAOd,EAAS,IAAIc,EAAW,CAC7B,MAAO,QACP,QAAS,YACX,CAAC,EAEH,IAAK,OACL,QACE,OAAOd,EAAS,IAAIc,EAAW,CAC7B,MAAO,OACP,QAAS,YACX,CAAC,CACL,CACF,EAEA,EAAG,SAAWhB,EAAMC,EAAOC,EAAU,CACnC,IAAIiB,EAAQnB,EAAK,YAAY,EACzBoB,EAAqBD,EAAQ,IAAM,EAAI,KAAO,KAClD,OAAQlB,EAAO,CACb,IAAK,IACL,IAAK,KACH,OAAOC,EAAS,UAAUkB,EAAoB,CAC5C,MAAO,cACP,QAAS,YACX,CAAC,EACH,IAAK,MACH,OAAOlB,EAAS,UAAUkB,EAAoB,CAC5C,MAAO,cACP,QAAS,YACX,CAAC,EAAE,YAAY,EACjB,IAAK,QACH,OAAOlB,EAAS,UAAUkB,EAAoB,CAC5C,MAAO,SACP,QAAS,YACX,CAAC,EACH,IAAK,OACL,QACE,OAAOlB,EAAS,UAAUkB,EAAoB,CAC5C,MAAO,OACP,QAAS,YACX,CAAC,CACL,CACF,EAEA,EAAG,SAAWpB,EAAMC,EAAOC,EAAU,CACnC,IAAIiB,EAAQnB,EAAK,YAAY,EACzBoB,EAQJ,OAPID,IAAU,GACZC,EAAqBtB,GAAc,KAC1BqB,IAAU,EACnBC,EAAqBtB,GAAc,SAEnCsB,EAAqBD,EAAQ,IAAM,EAAI,KAAO,KAExClB,EAAO,CACb,IAAK,IACL,IAAK,KACH,OAAOC,EAAS,UAAUkB,EAAoB,CAC5C,MAAO,cACP,QAAS,YACX,CAAC,EACH,IAAK,MACH,OAAOlB,EAAS,UAAUkB,EAAoB,CAC5C,MAAO,cACP,QAAS,YACX,CAAC,EAAE,YAAY,EACjB,IAAK,QACH,OAAOlB,EAAS,UAAUkB,EAAoB,CAC5C,MAAO,SACP,QAAS,YACX,CAAC,EACH,IAAK,OACL,QACE,OAAOlB,EAAS,UAAUkB,EAAoB,CAC5C,MAAO,OACP,QAAS,YACX,CAAC,CACL,CACF,EAEA,EAAG,SAAWpB,EAAMC,EAAOC,EAAU,CACnC,IAAIiB,EAAQnB,EAAK,YAAY,EACzBoB,EAUJ,OATID,GAAS,GACXC,EAAqBtB,GAAc,QAC1BqB,GAAS,GAClBC,EAAqBtB,GAAc,UAC1BqB,GAAS,EAClBC,EAAqBtB,GAAc,QAEnCsB,EAAqBtB,GAAc,MAE7BG,EAAO,CACb,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOC,EAAS,UAAUkB,EAAoB,CAC5C,MAAO,cACP,QAAS,YACX,CAAC,EACH,IAAK,QACH,OAAOlB,EAAS,UAAUkB,EAAoB,CAC5C,MAAO,SACP,QAAS,YACX,CAAC,EACH,IAAK,OACL,QACE,OAAOlB,EAAS,UAAUkB,EAAoB,CAC5C,MAAO,OACP,QAAS,YACX,CAAC,CACL,CACF,EAEA,EAAG,SAAWpB,EAAMC,EAAOC,EAAU,CACnC,GAAID,IAAU,KAAM,CAClB,IAAIkB,EAAQnB,EAAK,YAAY,EAAI,GACjC,OAAImB,IAAU,IAAGA,EAAQ,IAClBjB,EAAS,cAAciB,EAAO,CACnC,KAAM,MACR,CAAC,CACH,CACA,OAAOtB,GAAQ,QAAQ,EAAEG,EAAMC,CAAK,CACtC,EAEA,EAAG,SAAWD,EAAMC,EAAOC,EAAU,CACnC,OAAID,IAAU,KACLC,EAAS,cAAcF,EAAK,YAAY,EAAG,CAChD,KAAM,MACR,CAAC,EAEIH,GAAQ,QAAQ,EAAEG,EAAMC,CAAK,CACtC,EAEA,EAAG,SAAWD,EAAMC,EAAOC,EAAU,CACnC,IAAIiB,EAAQnB,EAAK,YAAY,EAAI,GACjC,OAAIC,IAAU,KACLC,EAAS,cAAciB,EAAO,CACnC,KAAM,MACR,CAAC,KAEQvB,GAAQ,SAASuB,EAAOlB,EAAM,MAAM,CACjD,EAEA,EAAG,SAAWD,EAAMC,EAAOC,EAAU,CACnC,IAAIiB,EAAQnB,EAAK,YAAY,EAE7B,OADImB,IAAU,IAAGA,EAAQ,IACrBlB,IAAU,KACLC,EAAS,cAAciB,EAAO,CACnC,KAAM,MACR,CAAC,KAEQvB,GAAQ,SAASuB,EAAOlB,EAAM,MAAM,CACjD,EAEA,EAAG,SAAWD,EAAMC,EAAOC,EAAU,CACnC,OAAID,IAAU,KACLC,EAAS,cAAcF,EAAK,cAAc,EAAG,CAClD,KAAM,QACR,CAAC,EAEIH,GAAQ,QAAQ,EAAEG,EAAMC,CAAK,CACtC,EAEA,EAAG,SAAWD,EAAMC,EAAOC,EAAU,CACnC,OAAID,IAAU,KACLC,EAAS,cAAcF,EAAK,cAAc,EAAG,CAClD,KAAM,QACR,CAAC,EAEIH,GAAQ,QAAQ,EAAEG,EAAMC,CAAK,CACtC,EAEA,EAAG,SAAWD,EAAMC,EAAO,CACzB,OAAOJ,GAAQ,QAAQ,EAAEG,EAAMC,CAAK,CACtC,EAEA,EAAG,SAAWD,EAAMC,EAAOoB,EAAWf,EAAS,CAC7C,IAAIgB,EAAehB,EAAQ,eAAiBN,EACxCuB,EAAiBD,EAAa,kBAAkB,EACpD,GAAIC,IAAmB,EACrB,MAAO,IAET,OAAQtB,EAAO,CAEb,IAAK,IACH,OAAOuB,GAAkCD,CAAc,EAKzD,IAAK,OACL,IAAK,KAEH,OAAOE,GAAeF,CAAc,EAKtC,IAAK,QACL,IAAK,MACL,QACE,OAAOE,GAAeF,EAAgB,GAAG,CAC7C,CACF,EAEA,EAAG,SAAWvB,EAAMC,EAAOoB,EAAWf,EAAS,CAC7C,IAAIgB,EAAehB,EAAQ,eAAiBN,EACxCuB,EAAiBD,EAAa,kBAAkB,EACpD,OAAQrB,EAAO,CAEb,IAAK,IACH,OAAOuB,GAAkCD,CAAc,EAKzD,IAAK,OACL,IAAK,KAEH,OAAOE,GAAeF,CAAc,EAKtC,IAAK,QACL,IAAK,MACL,QACE,OAAOE,GAAeF,EAAgB,GAAG,CAC7C,CACF,EAEA,EAAG,SAAWvB,EAAMC,EAAOoB,EAAWf,EAAS,CAC7C,IAAIgB,EAAehB,EAAQ,eAAiBN,EACxCuB,EAAiBD,EAAa,kBAAkB,EACpD,OAAQrB,EAAO,CAEb,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQyB,GAAoBH,EAAgB,GAAG,EAExD,IAAK,OACL,QACE,MAAO,MAAQE,GAAeF,EAAgB,GAAG,CACrD,CACF,EAEA,EAAG,SAAWvB,EAAMC,EAAOoB,EAAWf,EAAS,CAC7C,IAAIgB,EAAehB,EAAQ,eAAiBN,EACxCuB,EAAiBD,EAAa,kBAAkB,EACpD,OAAQrB,EAAO,CAEb,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQyB,GAAoBH,EAAgB,GAAG,EAExD,IAAK,OACL,QACE,MAAO,MAAQE,GAAeF,EAAgB,GAAG,CACrD,CACF,EAEA,EAAG,SAAWvB,EAAMC,EAAOoB,EAAWf,EAAS,CAC7C,IAAIgB,EAAehB,EAAQ,eAAiBN,EACxC2B,EAAY,KAAK,MAAML,EAAa,QAAQ,EAAI,GAAI,EACxD,SAAW1B,GAAQ,SAAS+B,EAAW1B,EAAM,MAAM,CACrD,EAEA,EAAG,SAAWD,EAAMC,EAAOoB,EAAWf,EAAS,CAC7C,IAAIgB,EAAehB,EAAQ,eAAiBN,EACxC2B,EAAYL,EAAa,QAAQ,EACrC,SAAW1B,GAAQ,SAAS+B,EAAW1B,EAAM,MAAM,CACrD,CACF,EACA,SAASyB,GAAoBE,EAAQC,EAAgB,CACnD,IAAIC,EAAOF,EAAS,EAAI,IAAM,IAC1BG,EAAY,KAAK,IAAIH,CAAM,EAC3BT,EAAQ,KAAK,MAAMY,EAAY,EAAE,EACjCC,EAAUD,EAAY,GAC1B,GAAIC,IAAY,EACd,OAAOF,EAAO,OAAOX,CAAK,EAE5B,IAAIc,EAAYJ,GAAkB,GAClC,OAAOC,EAAO,OAAOX,CAAK,EAAIc,KAAgBrC,GAAQ,SAASoC,EAAS,CAAC,CAC3E,CACA,SAASR,GAAkCI,EAAQC,EAAgB,CACjE,GAAID,EAAS,KAAO,EAAG,CACrB,IAAIE,EAAOF,EAAS,EAAI,IAAM,IAC9B,OAAOE,KAAWlC,GAAQ,SAAS,KAAK,IAAIgC,CAAM,EAAI,GAAI,CAAC,CAC7D,CACA,OAAOH,GAAeG,EAAQC,CAAc,CAC9C,CACA,SAASJ,GAAeG,EAAQC,EAAgB,CAC9C,IAAII,EAAYJ,GAAkB,GAC9BC,EAAOF,EAAS,EAAI,IAAM,IAC1BG,EAAY,KAAK,IAAIH,CAAM,EAC3BT,KAAYvB,GAAQ,SAAS,KAAK,MAAMmC,EAAY,EAAE,EAAG,CAAC,EAC1DC,KAAcpC,GAAQ,SAASmC,EAAY,GAAI,CAAC,EACpD,OAAOD,EAAOX,EAAQc,EAAYD,CACpC,CACA,IAAIE,GAAWnC,GACfX,GAAQ,QAAU8C,GAClB7C,GAAO,QAAUD,GAAQ,UC5wBzB,IAAA+C,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,OAAO,eAAeD,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAU,OAClB,IAAIE,GAAoB,SAA2BC,EAASC,EAAY,CACtE,OAAQD,EAAS,CACf,IAAK,IACH,OAAOC,EAAW,KAAK,CACrB,MAAO,OACT,CAAC,EACH,IAAK,KACH,OAAOA,EAAW,KAAK,CACrB,MAAO,QACT,CAAC,EACH,IAAK,MACH,OAAOA,EAAW,KAAK,CACrB,MAAO,MACT,CAAC,EACH,IAAK,OACL,QACE,OAAOA,EAAW,KAAK,CACrB,MAAO,MACT,CAAC,CACL,CACF,EACIC,GAAoB,SAA2BF,EAASC,EAAY,CACtE,OAAQD,EAAS,CACf,IAAK,IACH,OAAOC,EAAW,KAAK,CACrB,MAAO,OACT,CAAC,EACH,IAAK,KACH,OAAOA,EAAW,KAAK,CACrB,MAAO,QACT,CAAC,EACH,IAAK,MACH,OAAOA,EAAW,KAAK,CACrB,MAAO,MACT,CAAC,EACH,IAAK,OACL,QACE,OAAOA,EAAW,KAAK,CACrB,MAAO,MACT,CAAC,CACL,CACF,EACIE,GAAwB,SAA+BH,EAASC,EAAY,CAC9E,IAAIG,EAAcJ,EAAQ,MAAM,WAAW,GAAK,CAAC,EAC7CK,EAAcD,EAAY,CAAC,EAC3BE,EAAcF,EAAY,CAAC,EAC/B,GAAI,CAACE,EACH,OAAOP,GAAkBC,EAASC,CAAU,EAE9C,IAAIM,EACJ,OAAQF,EAAa,CACnB,IAAK,IACHE,EAAiBN,EAAW,SAAS,CACnC,MAAO,OACT,CAAC,EACD,MACF,IAAK,KACHM,EAAiBN,EAAW,SAAS,CACnC,MAAO,QACT,CAAC,EACD,MACF,IAAK,MACHM,EAAiBN,EAAW,SAAS,CACnC,MAAO,MACT,CAAC,EACD,MACF,IAAK,OACL,QACEM,EAAiBN,EAAW,SAAS,CACnC,MAAO,MACT,CAAC,EACD,KACJ,CACA,OAAOM,EAAe,QAAQ,WAAYR,GAAkBM,EAAaJ,CAAU,CAAC,EAAE,QAAQ,WAAYC,GAAkBI,EAAaL,CAAU,CAAC,CACtJ,EACIO,GAAiB,CACnB,EAAGN,GACH,EAAGC,EACL,EACIM,GAAWD,GACfX,GAAQ,QAAUY,GAClBX,GAAO,QAAUD,GAAQ,UCvFzB,IAAAa,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,OAAO,eAAeD,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUE,GAYlB,SAASA,GAAgCC,EAAM,CAC7C,IAAIC,EAAU,IAAI,KAAK,KAAK,IAAID,EAAK,YAAY,EAAGA,EAAK,SAAS,EAAGA,EAAK,QAAQ,EAAGA,EAAK,SAAS,EAAGA,EAAK,WAAW,EAAGA,EAAK,WAAW,EAAGA,EAAK,gBAAgB,CAAC,CAAC,EACnK,OAAAC,EAAQ,eAAeD,EAAK,YAAY,CAAC,EAClCA,EAAK,QAAQ,EAAIC,EAAQ,QAAQ,CAC1C,CACAH,GAAO,QAAUD,GAAQ,UCtBzB,IAAAK,GAAAC,GAAAC,IAAA,cAEA,OAAO,eAAeA,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,0BAA4BC,GACpCD,GAAQ,yBAA2BE,GACnCF,GAAQ,oBAAsBG,GAC9B,IAAIC,GAA2B,CAAC,IAAK,IAAI,EACrCC,GAA0B,CAAC,KAAM,MAAM,EAC3C,SAASJ,GAA0BK,EAAO,CACxC,OAAOF,GAAyB,QAAQE,CAAK,IAAM,EACrD,CACA,SAASJ,GAAyBI,EAAO,CACvC,OAAOD,GAAwB,QAAQC,CAAK,IAAM,EACpD,CACA,SAASH,GAAoBG,EAAOC,EAAQC,EAAO,CACjD,GAAIF,IAAU,OACZ,MAAM,IAAI,WAAW,qCAAqC,OAAOC,EAAQ,wCAAwC,EAAE,OAAOC,EAAO,gFAAgF,CAAC,EAC7M,GAAIF,IAAU,KACnB,MAAM,IAAI,WAAW,iCAAiC,OAAOC,EAAQ,wCAAwC,EAAE,OAAOC,EAAO,gFAAgF,CAAC,EACzM,GAAIF,IAAU,IACnB,MAAM,IAAI,WAAW,+BAA+B,OAAOC,EAAQ,oDAAoD,EAAE,OAAOC,EAAO,gFAAgF,CAAC,EACnN,GAAIF,IAAU,KACnB,MAAM,IAAI,WAAW,iCAAiC,OAAOC,EAAQ,oDAAoD,EAAE,OAAOC,EAAO,gFAAgF,CAAC,CAE9N,IC1BA,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,OAAO,eAAeD,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAU,OAClB,IAAIE,GAAuB,CACzB,iBAAkB,CAChB,IAAK,qBACL,MAAO,6BACT,EACA,SAAU,CACR,IAAK,WACL,MAAO,mBACT,EACA,YAAa,gBACb,iBAAkB,CAChB,IAAK,qBACL,MAAO,6BACT,EACA,SAAU,CACR,IAAK,WACL,MAAO,mBACT,EACA,YAAa,CACX,IAAK,eACL,MAAO,uBACT,EACA,OAAQ,CACN,IAAK,SACL,MAAO,iBACT,EACA,MAAO,CACL,IAAK,QACL,MAAO,gBACT,EACA,YAAa,CACX,IAAK,eACL,MAAO,uBACT,EACA,OAAQ,CACN,IAAK,SACL,MAAO,iBACT,EACA,aAAc,CACZ,IAAK,gBACL,MAAO,wBACT,EACA,QAAS,CACP,IAAK,UACL,MAAO,kBACT,EACA,YAAa,CACX,IAAK,eACL,MAAO,uBACT,EACA,OAAQ,CACN,IAAK,SACL,MAAO,iBACT,EACA,WAAY,CACV,IAAK,cACL,MAAO,sBACT,EACA,aAAc,CACZ,IAAK,gBACL,MAAO,wBACT,CACF,EACIC,GAAiB,SAAwBC,EAAOC,EAAOC,EAAS,CAClE,IAAIC,EACAC,EAAaN,GAAqBE,CAAK,EAQ3C,OAPI,OAAOI,GAAe,SACxBD,EAASC,EACAH,IAAU,EACnBE,EAASC,EAAW,IAEpBD,EAASC,EAAW,MAAM,QAAQ,YAAaH,EAAM,SAAS,CAAC,EAE7DC,GAAY,MAA8BA,EAAQ,UAChDA,EAAQ,YAAcA,EAAQ,WAAa,EACtC,MAAQC,EAERA,EAAS,OAGbA,CACT,EACIE,GAAWN,GACfH,GAAQ,QAAUS,GAClBR,GAAO,QAAUD,GAAQ,UC1FzB,IAAAU,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,OAAO,eAAeD,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUE,GAClB,SAASA,GAAkBC,EAAM,CAC/B,OAAO,UAAY,CACjB,IAAIC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EAE/EC,EAAQD,EAAQ,MAAQ,OAAOA,EAAQ,KAAK,EAAID,EAAK,aACrDG,EAASH,EAAK,QAAQE,CAAK,GAAKF,EAAK,QAAQA,EAAK,YAAY,EAClE,OAAOG,CACT,CACF,CACAL,GAAO,QAAUD,GAAQ,UCfzB,IAAAO,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAU,OAClB,IAAIG,GAASD,GAAuB,IAAmD,EACnFE,GAAc,CAChB,KAAM,mBACN,KAAM,aACN,OAAQ,WACR,MAAO,YACT,EACIC,GAAc,CAChB,KAAM,iBACN,KAAM,cACN,OAAQ,YACR,MAAO,QACT,EACIC,GAAkB,CACpB,KAAM,yBACN,KAAM,yBACN,OAAQ,qBACR,MAAO,oBACT,EACIC,GAAa,CACf,QAAUJ,GAAO,SAAS,CACxB,QAASC,GACT,aAAc,MAChB,CAAC,EACD,QAAUD,GAAO,SAAS,CACxB,QAASE,GACT,aAAc,MAChB,CAAC,EACD,YAAcF,GAAO,SAAS,CAC5B,QAASG,GACT,aAAc,MAChB,CAAC,CACH,EACIE,GAAWD,GACfP,GAAQ,QAAUQ,GAClBP,GAAO,QAAUD,GAAQ,UC1CzB,IAAAS,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,OAAO,eAAeD,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAU,OAClB,IAAIE,GAAuB,CACzB,SAAU,qBACV,UAAW,mBACX,MAAO,eACP,SAAU,kBACV,SAAU,cACV,MAAO,GACT,EACIC,GAAiB,SAAwBC,EAAOC,EAAOC,EAAWC,EAAU,CAC9E,OAAOL,GAAqBE,CAAK,CACnC,EACII,GAAWL,GACfH,GAAQ,QAAUQ,GAClBP,GAAO,QAAUD,GAAQ,UCnBzB,IAAAS,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,OAAO,eAAeD,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUE,GAClB,SAASA,GAAgBC,EAAM,CAC7B,OAAO,SAAUC,EAAYC,EAAS,CACpC,IAAIC,EAAUD,GAAY,MAA8BA,EAAQ,QAAU,OAAOA,EAAQ,OAAO,EAAI,aAChGE,EACJ,GAAID,IAAY,cAAgBH,EAAK,iBAAkB,CACrD,IAAIK,EAAeL,EAAK,wBAA0BA,EAAK,aACnDM,EAAQJ,GAAY,MAA8BA,EAAQ,MAAQ,OAAOA,EAAQ,KAAK,EAAIG,EAC9FD,EAAcJ,EAAK,iBAAiBM,CAAK,GAAKN,EAAK,iBAAiBK,CAAY,CAClF,KAAO,CACL,IAAIE,EAAgBP,EAAK,aACrBQ,EAASN,GAAY,MAA8BA,EAAQ,MAAQ,OAAOA,EAAQ,KAAK,EAAIF,EAAK,aACpGI,EAAcJ,EAAK,OAAOQ,CAAM,GAAKR,EAAK,OAAOO,CAAa,CAChE,CACA,IAAIE,EAAQT,EAAK,iBAAmBA,EAAK,iBAAiBC,CAAU,EAAIA,EAExE,OAAOG,EAAYK,CAAK,CAC1B,CACF,CACAX,GAAO,QAAUD,GAAQ,UCxBzB,IAAAa,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAU,OAClB,IAAIG,GAASD,GAAuB,IAAiD,EACjFE,GAAY,CACd,OAAQ,CAAC,IAAK,GAAG,EACjB,YAAa,CAAC,KAAM,IAAI,EACxB,KAAM,CAAC,gBAAiB,aAAa,CACvC,EACIC,GAAgB,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAC3B,YAAa,CAAC,KAAM,KAAM,KAAM,IAAI,EACpC,KAAM,CAAC,cAAe,cAAe,cAAe,aAAa,CACnE,EAMIC,GAAc,CAChB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACnE,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EAChG,KAAM,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,UAAU,CACjI,EACIC,GAAY,CACd,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC1C,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EAChD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EAC7D,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,UAAU,CACrF,EACIC,GAAkB,CACpB,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,KACV,KAAM,IACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,OACT,EACA,YAAa,CACX,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,OACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,OACT,EACA,KAAM,CACJ,GAAI,OACJ,GAAI,OACJ,SAAU,WACV,KAAM,OACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,OACT,CACF,EACIC,GAA4B,CAC9B,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,KACV,KAAM,IACN,QAAS,iBACT,UAAW,mBACX,QAAS,iBACT,MAAO,UACT,EACA,YAAa,CACX,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,OACN,QAAS,iBACT,UAAW,mBACX,QAAS,iBACT,MAAO,UACT,EACA,KAAM,CACJ,GAAI,OACJ,GAAI,OACJ,SAAU,WACV,KAAM,OACN,QAAS,iBACT,UAAW,mBACX,QAAS,iBACT,MAAO,UACT,CACF,EACIC,GAAgB,SAAuBC,EAAaC,EAAU,CAChE,IAAIC,EAAS,OAAOF,CAAW,EAS3BG,EAASD,EAAS,IACtB,GAAIC,EAAS,IAAMA,EAAS,GAC1B,OAAQA,EAAS,GAAI,CACnB,IAAK,GACH,OAAOD,EAAS,KAClB,IAAK,GACH,OAAOA,EAAS,KAClB,IAAK,GACH,OAAOA,EAAS,IACpB,CAEF,OAAOA,EAAS,IAClB,EACIE,GAAW,CACb,cAAeL,GACf,OAASP,GAAO,SAAS,CACvB,OAAQC,GACR,aAAc,MAChB,CAAC,EACD,WAAaD,GAAO,SAAS,CAC3B,OAAQE,GACR,aAAc,OACd,iBAAkB,SAA0BW,EAAS,CACnD,OAAOA,EAAU,CACnB,CACF,CAAC,EACD,SAAWb,GAAO,SAAS,CACzB,OAAQG,GACR,aAAc,MAChB,CAAC,EACD,OAASH,GAAO,SAAS,CACvB,OAAQI,GACR,aAAc,MAChB,CAAC,EACD,aAAeJ,GAAO,SAAS,CAC7B,OAAQK,GACR,aAAc,OACd,iBAAkBC,GAClB,uBAAwB,MAC1B,CAAC,CACH,EACIQ,GAAWF,GACff,GAAQ,QAAUiB,GAClBhB,GAAO,QAAUD,GAAQ,UCvJzB,IAAAkB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,OAAO,eAAeD,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUE,GAClB,SAASA,GAAaC,EAAM,CAC1B,OAAO,SAAUC,EAAQ,CACvB,IAAIC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EAC/EC,EAAQD,EAAQ,MAChBE,EAAeD,GAASH,EAAK,cAAcG,CAAK,GAAKH,EAAK,cAAcA,EAAK,iBAAiB,EAC9FK,EAAcJ,EAAO,MAAMG,CAAY,EAC3C,GAAI,CAACC,EACH,OAAO,KAET,IAAIC,EAAgBD,EAAY,CAAC,EAC7BE,EAAgBJ,GAASH,EAAK,cAAcG,CAAK,GAAKH,EAAK,cAAcA,EAAK,iBAAiB,EAC/FQ,EAAM,MAAM,QAAQD,CAAa,EAAIE,GAAUF,EAAe,SAAUG,EAAS,CACnF,OAAOA,EAAQ,KAAKJ,CAAa,CACnC,CAAC,EAAIK,GAAQJ,EAAe,SAAUG,EAAS,CAC7C,OAAOA,EAAQ,KAAKJ,CAAa,CACnC,CAAC,EACGM,EACJA,EAAQZ,EAAK,cAAgBA,EAAK,cAAcQ,CAAG,EAAIA,EACvDI,EAAQV,EAAQ,cAAgBA,EAAQ,cAAcU,CAAK,EAAIA,EAC/D,IAAIC,EAAOZ,EAAO,MAAMK,EAAc,MAAM,EAC5C,MAAO,CACL,MAAOM,EACP,KAAMC,CACR,CACF,CACF,CACA,SAASF,GAAQG,EAAQC,EAAW,CAClC,QAASP,KAAOM,EACd,GAAIA,EAAO,eAAeN,CAAG,GAAKO,EAAUD,EAAON,CAAG,CAAC,EACrD,OAAOA,CAIb,CACA,SAASC,GAAUO,EAAOD,EAAW,CACnC,QAASP,EAAM,EAAGA,EAAMQ,EAAM,OAAQR,IACpC,GAAIO,EAAUC,EAAMR,CAAG,CAAC,EACtB,OAAOA,CAIb,CACAV,GAAO,QAAUD,GAAQ,UChDzB,IAAAoB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,OAAO,eAAeD,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUE,GAClB,SAASA,GAAoBC,EAAM,CACjC,OAAO,SAAUC,EAAQ,CACvB,IAAIC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EAC/EC,EAAcF,EAAO,MAAMD,EAAK,YAAY,EAChD,GAAI,CAACG,EAAa,OAAO,KACzB,IAAIC,EAAgBD,EAAY,CAAC,EAC7BE,EAAcJ,EAAO,MAAMD,EAAK,YAAY,EAChD,GAAI,CAACK,EAAa,OAAO,KACzB,IAAIC,EAAQN,EAAK,cAAgBA,EAAK,cAAcK,EAAY,CAAC,CAAC,EAAIA,EAAY,CAAC,EACnFC,EAAQJ,EAAQ,cAAgBA,EAAQ,cAAcI,CAAK,EAAIA,EAC/D,IAAIC,EAAON,EAAO,MAAMG,EAAc,MAAM,EAC5C,MAAO,CACL,MAAOE,EACP,KAAMC,CACR,CACF,CACF,CACAT,GAAO,QAAUD,GAAQ,UCvBzB,IAAAW,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAU,OAClB,IAAIG,GAASD,GAAuB,IAA8C,EAC9EE,GAAUF,GAAuB,IAAqD,EACtFG,GAA4B,wBAC5BC,GAA4B,OAC5BC,GAAmB,CACrB,OAAQ,UACR,YAAa,6DACb,KAAM,4DACR,EACIC,GAAmB,CACrB,IAAK,CAAC,MAAO,SAAS,CACxB,EACIC,GAAuB,CACzB,OAAQ,WACR,YAAa,YACb,KAAM,gCACR,EACIC,GAAuB,CACzB,IAAK,CAAC,KAAM,KAAM,KAAM,IAAI,CAC9B,EACIC,GAAqB,CACvB,OAAQ,eACR,YAAa,sDACb,KAAM,2FACR,EACIC,GAAqB,CACvB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EAC3F,IAAK,CAAC,OAAQ,MAAO,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAQ,MAAO,MAAO,MAAO,KAAK,CACrG,EACIC,GAAmB,CACrB,OAAQ,YACR,MAAO,2BACP,YAAa,kCACb,KAAM,8DACR,EACIC,GAAmB,CACrB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EACxD,IAAK,CAAC,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,MAAM,CAC3D,EACIC,GAAyB,CAC3B,OAAQ,6DACR,IAAK,gFACP,EACIC,GAAyB,CAC3B,IAAK,CACH,GAAI,MACJ,GAAI,MACJ,SAAU,OACV,KAAM,OACN,QAAS,WACT,UAAW,aACX,QAAS,WACT,MAAO,QACT,CACF,EACIC,GAAQ,CACV,iBAAmBb,GAAQ,SAAS,CAClC,aAAcC,GACd,aAAcC,GACd,cAAe,SAAuBY,EAAO,CAC3C,OAAO,SAASA,EAAO,EAAE,CAC3B,CACF,CAAC,EACD,OAASf,GAAO,SAAS,CACvB,cAAeI,GACf,kBAAmB,OACnB,cAAeC,GACf,kBAAmB,KACrB,CAAC,EACD,WAAaL,GAAO,SAAS,CAC3B,cAAeM,GACf,kBAAmB,OACnB,cAAeC,GACf,kBAAmB,MACnB,cAAe,SAAuBS,EAAO,CAC3C,OAAOA,EAAQ,CACjB,CACF,CAAC,EACD,SAAWhB,GAAO,SAAS,CACzB,cAAeQ,GACf,kBAAmB,OACnB,cAAeC,GACf,kBAAmB,KACrB,CAAC,EACD,OAAST,GAAO,SAAS,CACvB,cAAeU,GACf,kBAAmB,OACnB,cAAeC,GACf,kBAAmB,KACrB,CAAC,EACD,aAAeX,GAAO,SAAS,CAC7B,cAAeY,GACf,kBAAmB,MACnB,cAAeC,GACf,kBAAmB,KACrB,CAAC,CACH,EACII,GAAWH,GACfjB,GAAQ,QAAUoB,GAClBnB,GAAO,QAAUD,GAAQ,UC1GzB,IAAAqB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAU,OAClB,IAAIG,GAASD,GAAuB,IAAyC,EACzEE,GAAUF,GAAuB,IAAqC,EACtEG,GAAUH,GAAuB,IAAyC,EAC1EI,GAAUJ,GAAuB,IAAmC,EACpEK,GAAUL,GAAuB,IAAgC,EAUjEM,GAAS,CACX,KAAM,QACN,eAAgBL,GAAO,QACvB,WAAYC,GAAQ,QACpB,eAAgBC,GAAQ,QACxB,SAAUC,GAAQ,QAClB,MAAOC,GAAQ,QACf,QAAS,CACP,aAAc,EACd,sBAAuB,CACzB,CACF,EACIE,GAAWD,GACfR,GAAQ,QAAUS,GAClBR,GAAO,QAAUD,GAAQ,UCnCzB,IAAAU,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAU,OAClB,IAAIG,GAASD,GAAuB,IAAsC,EACtEE,GAAWD,GAAO,QACtBH,GAAQ,QAAUI,GAClBH,GAAO,QAAUD,GAAQ,UCVzB,IAAAK,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAyB,KAAwD,QACrF,OAAO,eAAeF,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAUG,GAClB,IAAIC,GAASF,GAAuB,IAA8B,EAC9DG,GAAUH,GAAuB,IAAsC,EACvEI,GAAUJ,GAAuB,IAA6B,EAC9DK,GAAUL,GAAuB,IAA6C,EAC9EM,GAAUN,GAAuB,IAAiD,EAClFO,GAAUP,GAAuB,IAA2D,EAC5FQ,GAAU,KACVC,GAAUT,GAAuB,IAAqC,EACtEU,GAAUV,GAAuB,IAAwC,EACzEW,GAAW,KACXC,GAAWZ,GAAuB,IAAyC,EAY3Ea,GAAyB,wDAIzBC,GAA6B,oCAC7BC,GAAsB,eACtBC,GAAoB,MACpBC,GAAgC,WAsSpC,SAAShB,GAAOiB,EAAWC,EAAgBC,EAAS,CAClD,IAAIC,EAAMC,EAAiBC,EAAOC,EAAOC,EAAOC,EAAuBC,EAAkBC,EAAuBC,EAAuBC,EAAwBC,EAAOC,EAAOC,GAAOC,GAAuBC,GAAkBC,GAAuBC,GAAwBC,MACxQ5B,GAAQ,SAAS,EAAG,SAAS,EACjC,IAAI6B,GAAY,OAAOpB,CAAc,EACjCqB,MAAqB7B,GAAS,mBAAmB,EACjD8B,IAAUpB,GAAQC,EAAoEF,GAAQ,UAAY,MAAQE,IAAoB,OAASA,EAAkBkB,GAAe,UAAY,MAAQnB,IAAS,OAASA,EAAOT,GAAS,QACtO8B,MAA4BjC,GAAQ,UAAUc,GAASC,GAASC,GAASC,EAA0EN,GAAQ,yBAA2B,MAAQM,IAA0B,OAASA,EAAwBN,GAAY,OAAuCO,EAAmBP,EAAQ,UAAY,MAAQO,IAAqB,SAAmBC,EAAwBD,EAAiB,WAAa,MAAQC,IAA0B,OAAzL,OAA2MA,EAAsB,yBAA2B,MAAQH,IAAU,OAASA,EAAQe,GAAe,yBAA2B,MAAQhB,IAAU,OAASA,GAASK,EAAwBW,GAAe,UAAY,MAAQX,IAA0B,SAAmBC,EAAyBD,EAAsB,WAAa,MAAQC,IAA2B,OAAzG,OAA2HA,EAAuB,yBAA2B,MAAQP,IAAU,OAASA,EAAQ,CAAC,EAGl8B,GAAI,EAAEmB,IAAyB,GAAKA,IAAyB,GAC3D,MAAM,IAAI,WAAW,2DAA2D,EAElF,IAAIC,MAAmBlC,GAAQ,UAAUsB,GAASC,GAASC,IAASC,GAA0Ed,GAAQ,gBAAkB,MAAQc,KAA0B,OAASA,GAAwBd,GAAY,OAAuCe,GAAmBf,EAAQ,UAAY,MAAQe,KAAqB,SAAmBC,GAAwBD,GAAiB,WAAa,MAAQC,KAA0B,OAAzL,OAA2MA,GAAsB,gBAAkB,MAAQH,KAAU,OAASA,GAAQO,GAAe,gBAAkB,MAAQR,IAAU,OAASA,GAASK,GAAyBG,GAAe,UAAY,MAAQH,KAA2B,SAAmBC,GAAyBD,GAAuB,WAAa,MAAQC,KAA2B,OAA1G,OAA4HA,GAAuB,gBAAkB,MAAQP,IAAU,OAASA,EAAQ,CAAC,EAGx5B,GAAI,EAAEY,IAAgB,GAAKA,IAAgB,GACzC,MAAM,IAAI,WAAW,kDAAkD,EAEzE,GAAI,CAACF,GAAO,SACV,MAAM,IAAI,WAAW,uCAAuC,EAE9D,GAAI,CAACA,GAAO,WACV,MAAM,IAAI,WAAW,yCAAyC,EAEhE,IAAIG,MAAmBxC,GAAQ,SAASc,CAAS,EACjD,GAAI,IAAKhB,GAAO,SAAS0C,EAAY,EACnC,MAAM,IAAI,WAAW,oBAAoB,EAM3C,IAAIC,MAAqBtC,GAAQ,SAASqC,EAAY,EAClDE,MAAc3C,GAAQ,SAASyC,GAAcC,EAAc,EAC3DE,GAAmB,CACrB,sBAAuBL,GACvB,aAAcC,GACd,OAAQF,GACR,cAAeG,EACjB,EACII,GAAST,GAAU,MAAMzB,EAA0B,EAAE,IAAI,SAAUmC,GAAW,CAChF,IAAIC,GAAiBD,GAAU,CAAC,EAChC,GAAIC,KAAmB,KAAOA,KAAmB,IAAK,CACpD,IAAIC,GAAgB7C,GAAQ,QAAQ4C,EAAc,EAClD,OAAOC,GAAcF,GAAWR,GAAO,UAAU,CACnD,CACA,OAAOQ,EACT,CAAC,EAAE,KAAK,EAAE,EAAE,MAAMpC,EAAsB,EAAE,IAAI,SAAUoC,GAAW,CAEjE,GAAIA,KAAc,KAChB,MAAO,IAET,IAAIC,GAAiBD,GAAU,CAAC,EAChC,GAAIC,KAAmB,IACrB,OAAOE,GAAmBH,EAAS,EAErC,IAAII,GAAYhD,GAAQ,QAAQ6C,EAAc,EAC9C,GAAIG,GACF,MAAI,EAAEjC,GAAY,MAA8BA,EAAQ,iCAAoCZ,GAAQ,0BAA0ByC,EAAS,MACjIzC,GAAQ,qBAAqByC,GAAW9B,EAAgB,OAAOD,CAAS,CAAC,EAE3E,EAAEE,GAAY,MAA8BA,EAAQ,kCAAqCZ,GAAQ,2BAA2ByC,EAAS,MACnIzC,GAAQ,qBAAqByC,GAAW9B,EAAgB,OAAOD,CAAS,CAAC,EAExEmC,GAAUP,GAASG,GAAWR,GAAO,SAAUM,EAAgB,EAExE,GAAIG,GAAe,MAAMjC,EAA6B,EACpD,MAAM,IAAI,WAAW,iEAAmEiC,GAAiB,GAAG,EAE9G,OAAOD,EACT,CAAC,EAAE,KAAK,EAAE,EACV,OAAOD,EACT,CACA,SAASI,GAAmBE,EAAO,CACjC,IAAIC,EAAUD,EAAM,MAAMvC,EAAmB,EAC7C,OAAKwC,EAGEA,EAAQ,CAAC,EAAE,QAAQvC,GAAmB,GAAG,EAFvCsC,CAGX,CACAvD,GAAO,QAAUD,GAAQ,UCrZV,SAAR0D,GAAoCC,EAAQC,EAAMC,EAAS,CAChE,IAAIC,EAAMC,GAAOJ,EAAQE,EAAQ,SAAUA,EAAQ,MAAM,EACzD,OAAOC,EAAI,cAAgBE,GAAcF,EAAKF,CAAI,EAAIK,GAAcH,EAAKF,CAAI,CAC/E,CACA,SAASI,GAAcF,EAAKF,EAAM,CAEhC,QADIM,EAAYJ,EAAI,cAAcF,CAAI,EAC7BO,EAAID,EAAU,OAAS,EAAGC,GAAK,EAAG,EAAEA,EAC3C,GAAID,EAAUC,CAAC,EAAE,OAAS,eACxB,OAAOD,EAAUC,CAAC,EAAE,KAG1B,CACA,SAASF,GAAcH,EAAKF,EAAM,CAChC,IAAIM,EAAYJ,EAAI,OAAOF,CAAI,EAAE,QAAQ,UAAW,EAAE,EAClDQ,EAAc,aAAa,KAAKF,CAAS,EAC7C,OAAOE,EAAcA,EAAY,CAAC,EAAE,OAAO,CAAC,EAAI,EAClD,CAIA,SAASL,GAAOJ,EAAQU,EAAUC,EAAQ,CACxC,GAAIA,GAAU,CAACA,EAAO,KACpB,MAAM,IAAI,MAAM,yHAAyH,EAE3I,OAAO,IAAI,KAAK,eAAeA,EAAS,CAACA,EAAO,KAAM,OAAO,EAAI,OAAW,CAC1E,SAAUD,EACV,aAAcV,CAChB,CAAC,CACH,CAjCA,IAAAY,GAAAC,EAAA,QCIe,SAARC,GAAgCC,EAAMC,EAAU,CACrD,IAAIC,EAAMC,GAAkBF,CAAQ,EACpC,OAAOC,EAAI,cAAgBE,GAAYF,EAAKF,CAAI,EAAIK,GAAYH,EAAKF,CAAI,CAC3E,CASA,SAASI,GAAYF,EAAKF,EAAM,CAC9B,GAAI,CAGF,QAFIM,EAAYJ,EAAI,cAAcF,CAAI,EAClCO,EAAS,CAAC,EACLC,EAAI,EAAGA,EAAIF,EAAU,OAAQE,IAAK,CACzC,IAAIC,EAAMC,GAAUJ,EAAUE,CAAC,EAAE,IAAI,EACjCC,GAAO,IACTF,EAAOE,CAAG,EAAI,SAASH,EAAUE,CAAC,EAAE,MAAO,EAAE,EAEjD,CACA,OAAOD,CACT,OAASI,EAAO,CACd,GAAIA,aAAiB,WACnB,MAAO,CAAC,GAAG,EAEb,MAAMA,CACR,CACF,CACA,SAASN,GAAYH,EAAKF,EAAM,CAC9B,IAAIM,EAAYJ,EAAI,OAAOF,CAAI,EAC3BY,EAAS,0CAA0C,KAAKN,CAAS,EAGrE,MAAO,CAACM,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,CAC1E,CAMA,SAAST,GAAkBF,EAAU,CACnC,GAAI,CAACY,GAASZ,CAAQ,EAAG,CAEvB,IAAIa,EAAoB,IAAI,KAAK,eAAe,QAAS,CACvD,UAAW,MACX,SAAU,mBACV,KAAM,UACN,MAAO,UACP,IAAK,UACL,KAAM,UACN,OAAQ,UACR,OAAQ,SACV,CAAC,EAAE,OAAO,IAAI,KAAK,0BAA0B,CAAC,EAC1CC,EAAqBD,IAAsB,wBAA0BA,IAAsB,wFAC/FD,GAASZ,CAAQ,EAAIc,EAAqB,IAAI,KAAK,eAAe,QAAS,CACzE,UAAW,MACX,SAAUd,EACV,KAAM,UACN,MAAO,UACP,IAAK,UACL,KAAM,UACN,OAAQ,UACR,OAAQ,SACV,CAAC,EAAI,IAAI,KAAK,eAAe,QAAS,CACpC,OAAQ,GACR,SAAUA,EACV,KAAM,UACN,MAAO,UACP,IAAK,UACL,KAAM,UACN,OAAQ,UACR,OAAQ,SACV,CAAC,CACH,CACA,OAAOY,GAASZ,CAAQ,CAC1B,CAjFA,IAQIS,GAqCAG,GA7CJG,GAAAC,EAAA,KAQIP,GAAY,CACd,KAAM,EACN,MAAO,EACP,IAAK,EACL,KAAM,EACN,OAAQ,EACR,OAAQ,CACV,EA8BIG,GAAW,CAAC,ICtCD,SAARK,GAA4BC,EAAUC,EAAOC,EAAKC,EAAMC,EAAQC,EAAQC,EAAa,CAC1F,IAAIC,EAAU,IAAI,KAAK,CAAC,EACxB,OAAAA,EAAQ,eAAeP,EAAUC,EAAOC,CAAG,EAC3CK,EAAQ,YAAYJ,EAAMC,EAAQC,EAAQC,CAAW,EAC9CC,CACT,CAZA,IAAAC,GAAAC,EAAA,QCYe,SAARC,GAAiCC,EAAgBC,EAAMC,EAAW,CACvE,IAAIC,EACAC,EASJ,GANI,CAACJ,IAKLG,EAAQE,GAAS,UAAU,KAAKL,CAAc,EAC1CG,GACF,MAAO,GAET,IAAIG,EAIJ,GADAH,EAAQE,GAAS,WAAW,KAAKL,CAAc,EAC3CG,EAEF,OADAG,EAAQ,SAASH,EAAM,CAAC,EAAG,EAAE,EACxBI,GAAiBD,CAAK,EAGpB,EAAEA,EAAQE,IAFR,IAOX,GADAL,EAAQE,GAAS,aAAa,KAAKL,CAAc,EAC7CG,EAAO,CACTG,EAAQ,SAASH,EAAM,CAAC,EAAG,EAAE,EAC7B,IAAIM,EAAU,SAASN,EAAM,CAAC,EAAG,EAAE,EACnC,OAAKI,GAAiBD,EAAOG,CAAO,GAGpCL,EAAiB,KAAK,IAAIE,CAAK,EAAIE,GAAuBC,EAAUC,GAC7DP,EAAM,CAAC,IAAM,IAAM,CAACC,EAAiBA,GAHnC,GAIX,CAGA,GAAIO,GAA0BX,CAAc,EAAG,CAC7CC,EAAO,IAAI,KAAKA,GAAQ,KAAK,IAAI,CAAC,EAClC,IAAIW,EAAUV,EAAYD,EAAOY,GAAUZ,CAAI,EAC3Ca,EAASC,GAAWH,EAASZ,CAAc,EAC3CgB,EAAcd,EAAYY,EAASG,GAAUhB,EAAMa,EAAQd,CAAc,EAC7E,MAAO,CAACgB,CACV,CACA,MAAO,IACT,CACA,SAASH,GAAUZ,EAAM,CACvB,OAAOiB,GAAWjB,EAAK,YAAY,EAAGA,EAAK,SAAS,EAAGA,EAAK,QAAQ,EAAGA,EAAK,SAAS,EAAGA,EAAK,WAAW,EAAGA,EAAK,WAAW,EAAGA,EAAK,gBAAgB,CAAC,CACtJ,CACA,SAASc,GAAWd,EAAMD,EAAgB,CACxC,IAAImB,EAASC,GAAenB,EAAMD,CAAc,EAG5CqB,EAAQH,GAAWC,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAI,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAI,GAAIA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAG,CAAC,EAAE,QAAQ,EACzGG,EAAOrB,EAAK,QAAQ,EACpBsB,EAAOD,EAAO,IAClB,OAAAA,GAAQC,GAAQ,EAAIA,EAAO,IAAOA,EAC3BF,EAAQC,CACjB,CACA,SAASL,GAAUhB,EAAMa,EAAQd,EAAgB,CAC/C,IAAIwB,EAAUvB,EAAK,QAAQ,EAGvBwB,EAAWD,EAAUV,EAGrBY,EAAKX,GAAW,IAAI,KAAKU,CAAQ,EAAGzB,CAAc,EAGtD,GAAIc,IAAWY,EACb,OAAOZ,EAITW,GAAYC,EAAKZ,EAGjB,IAAIa,EAAKZ,GAAW,IAAI,KAAKU,CAAQ,EAAGzB,CAAc,EACtD,OAAI0B,IAAOC,EACFD,EAIF,KAAK,IAAIA,EAAIC,CAAE,CACxB,CACA,SAASpB,GAAiBD,EAAOG,EAAS,CACxC,MAAO,KAAOH,GAASA,GAAS,KAAOG,GAAW,MAAQ,GAAKA,GAAWA,GAAW,GACvF,CAEA,SAASE,GAA0BiB,EAAgB,CACjD,GAAIC,GAAuBD,CAAc,EAAG,MAAO,GACnD,GAAI,CACF,WAAI,KAAK,eAAe,OAAW,CACjC,SAAUA,CACZ,CAAC,EACDC,GAAuBD,CAAc,EAAI,GAClC,EACT,MAAgB,CACd,MAAO,EACT,CACF,CAlHA,IAEIpB,GACAE,GACAL,GAkGAwB,GAtGJC,GAAAC,EAAA,KAAAC,KACAC,KACIzB,GAAuB,KACvBE,GAAyB,IACzBL,GAAW,CACb,SAAU,aACV,UAAW,QACX,WAAY,gBACZ,aAAc,0BAChB,EA6FIwB,GAAyB,CAAC,ICf9B,SAASK,GAAkBC,EAAUC,EAAc,CACjD,IAAIC,EAAiBF,EAAWG,GAAgBH,EAAUC,EAAc,EAAI,EAAIG,GAAyBH,EAAa,kBAAkB,EACxI,GAAI,OAAO,MAAMC,CAAc,EAC7B,MAAM,IAAI,WAAW,gCAAkCF,CAAQ,EAEjE,OAAOE,CACT,CACA,SAASG,GAAgBC,EAAQC,EAAc,CAG7C,QAFIC,EAAOF,EAAS,EAAI,IAAM,GAC1BG,EAAS,KAAK,IAAIH,CAAM,EAAE,SAAS,EAChCG,EAAO,OAASF,GACrBE,EAAS,IAAMA,EAEjB,OAAOD,EAAOC,CAChB,CACA,SAASC,GAAeC,EAAQC,EAAgB,CAC9C,IAAIC,EAAYD,GAAkB,GAC9BJ,EAAOG,EAAS,EAAI,IAAM,IAC1BG,EAAY,KAAK,IAAIH,CAAM,EAC3BI,EAAQV,GAAgB,KAAK,MAAMS,EAAY,EAAE,EAAG,CAAC,EACrDE,EAAUX,GAAgB,KAAK,MAAMS,EAAY,EAAE,EAAG,CAAC,EAC3D,OAAON,EAAOO,EAAQF,EAAYG,CACpC,CACA,SAASC,GAAkCN,EAAQC,EAAgB,CACjE,GAAID,EAAS,KAAO,EAAG,CACrB,IAAIH,EAAOG,EAAS,EAAI,IAAM,IAC9B,OAAOH,EAAOH,GAAgB,KAAK,IAAIM,CAAM,EAAI,GAAI,CAAC,CACxD,CACA,OAAOD,GAAeC,EAAQC,CAAc,CAC9C,CACA,SAASM,GAAoBP,EAAQQ,EAAgB,CACnD,IAAIX,EAAOG,EAAS,EAAI,IAAM,IAC1BG,EAAY,KAAK,IAAIH,CAAM,EAC3BI,EAAQ,KAAK,MAAMD,EAAY,EAAE,EACjCE,EAAUF,EAAY,GAC1B,GAAIE,IAAY,EACd,OAAOR,EAAO,OAAOO,CAAK,EAE5B,IAAIK,EAAYD,GAAkB,GAClC,OAAOX,EAAO,OAAOO,CAAK,EAAIK,EAAYf,GAAgBW,EAAS,CAAC,CACtE,CA/HA,IAEIZ,GACAiB,GA6HGC,GAhIPC,GAAAC,EAAA,KAAAC,KACAC,KACItB,GAAyB,GAAK,IAC9BiB,GAAa,CAEf,EAAG,SAAUM,EAAMC,EAAOC,EAAUC,EAAS,CAC3C,IAAIC,EAAiBhC,GAAkB+B,EAAQ,SAAUH,CAAI,EAC7D,GAAII,IAAmB,EACrB,MAAO,IAET,OAAQH,EAAO,CAEb,IAAK,IACH,OAAOX,GAAkCc,CAAc,EAKzD,IAAK,OACL,IAAK,KAEH,OAAOrB,GAAeqB,CAAc,EAKtC,IAAK,QACL,IAAK,MACL,QACE,OAAOrB,GAAeqB,EAAgB,GAAG,CAC7C,CACF,EAEA,EAAG,SAAUJ,EAAMC,EAAOC,EAAUC,EAAS,CAC3C,IAAIC,EAAiBhC,GAAkB+B,EAAQ,SAAUH,CAAI,EAC7D,OAAQC,EAAO,CAEb,IAAK,IACH,OAAOX,GAAkCc,CAAc,EAKzD,IAAK,OACL,IAAK,KAEH,OAAOrB,GAAeqB,CAAc,EAKtC,IAAK,QACL,IAAK,MACL,QACE,OAAOrB,GAAeqB,EAAgB,GAAG,CAC7C,CACF,EAEA,EAAG,SAAUJ,EAAMC,EAAOC,EAAUC,EAAS,CAC3C,IAAIC,EAAiBhC,GAAkB+B,EAAQ,SAAUH,CAAI,EAC7D,OAAQC,EAAO,CAEb,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQV,GAAoBa,EAAgB,GAAG,EAExD,IAAK,OACL,QACE,MAAO,MAAQrB,GAAeqB,EAAgB,GAAG,CACrD,CACF,EAEA,EAAG,SAAUJ,EAAMC,EAAOC,EAAUC,EAAS,CAC3C,OAAQF,EAAO,CAEb,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOI,GAAmB,QAASL,EAAMG,CAAO,EAElD,IAAK,OACL,QACE,OAAOE,GAAmB,OAAQL,EAAMG,CAAO,CACnD,CACF,CACF,EA0COR,GAAQD,KChIf,IACIY,GACGC,GAFPC,GAAAC,EAAA,KACIH,GAAY,0EACTC,GAAQD,KC8EA,SAARI,GAAwBC,EAAUC,EAAc,CACrD,GAAI,UAAU,OAAS,EACrB,MAAM,IAAI,UAAU,iCAAmC,UAAU,OAAS,UAAU,EAEtF,GAAID,IAAa,KACf,OAAO,IAAI,KAAK,GAAG,EAErB,IAAIE,EAAUD,GAAgB,CAAC,EAC3BE,EAAmBD,EAAQ,kBAAoB,KAAOE,MAA4B,GAAAC,SAAUH,EAAQ,gBAAgB,EACxH,GAAIC,IAAqB,GAAKA,IAAqB,GAAKA,IAAqB,EAC3E,MAAM,IAAI,WAAW,oCAAoC,EAI3D,GAAIH,aAAoB,MAAQ,OAAOA,GAAa,UAAY,OAAO,UAAU,SAAS,KAAKA,CAAQ,IAAM,gBAE3G,OAAO,IAAI,KAAKA,EAAS,QAAQ,CAAC,EAC7B,GAAI,OAAOA,GAAa,UAAY,OAAO,UAAU,SAAS,KAAKA,CAAQ,IAAM,kBACtF,OAAO,IAAI,KAAKA,CAAQ,EACnB,GAAI,EAAE,OAAOA,GAAa,UAAY,OAAO,UAAU,SAAS,KAAKA,CAAQ,IAAM,mBACxF,OAAO,IAAI,KAAK,GAAG,EAErB,IAAIM,EAAcC,GAAgBP,CAAQ,EACtCQ,EAAkBC,GAAUH,EAAY,KAAMH,CAAgB,EAC9DO,EAAOF,EAAgB,KACvBG,EAAiBH,EAAgB,eACjCI,EAAOC,GAAUF,EAAgBD,CAAI,EACzC,GAAI,MAAME,CAAI,EACZ,OAAO,IAAI,KAAK,GAAG,EAErB,GAAIA,EAAM,CACR,IAAIE,EAAYF,EAAK,QAAQ,EACzBG,EAAO,EACPC,EACJ,GAAIV,EAAY,OACdS,EAAOE,GAAUX,EAAY,IAAI,EAC7B,MAAMS,CAAI,GACZ,OAAO,IAAI,KAAK,GAAG,EAGvB,GAAIT,EAAY,UAAYJ,EAAQ,UAElC,GADAc,EAASE,GAAgBZ,EAAY,UAAYJ,EAAQ,SAAU,IAAI,KAAKY,EAAYC,CAAI,CAAC,EACzF,MAAMC,CAAM,EACd,OAAO,IAAI,KAAK,GAAG,OAIrBA,KAAS,GAAAG,SAAgC,IAAI,KAAKL,EAAYC,CAAI,CAAC,EACnEC,KAAS,GAAAG,SAAgC,IAAI,KAAKL,EAAYC,EAAOC,CAAM,CAAC,EAE9E,OAAO,IAAI,KAAKF,EAAYC,EAAOC,CAAM,CAC3C,KACE,QAAO,IAAI,KAAK,GAAG,CAEvB,CACA,SAAST,GAAgBa,EAAY,CACnC,IAAId,EAAc,CAAC,EACfe,EAAQC,GAAS,gBAAgB,KAAKF,CAAU,EAChDG,EAcJ,GAbKF,GAUHf,EAAY,KAAOe,EAAM,CAAC,EAC1BE,EAAaF,EAAM,CAAC,IAVpBA,EAAQC,GAAS,YAAY,KAAKF,CAAU,EACxCC,GACFf,EAAY,KAAOe,EAAM,CAAC,EAC1BE,EAAaF,EAAM,CAAC,IAEpBf,EAAY,KAAO,KACnBiB,EAAaH,IAMbG,EAAY,CACd,IAAIC,EAAQF,GAAS,SAAS,KAAKC,CAAU,EACzCC,GACFlB,EAAY,KAAOiB,EAAW,QAAQC,EAAM,CAAC,EAAG,EAAE,EAClDlB,EAAY,SAAWkB,EAAM,CAAC,EAAE,KAAK,GAErClB,EAAY,KAAOiB,CAEvB,CACA,OAAOjB,CACT,CACA,SAASG,GAAUW,EAAYjB,EAAkB,CAC/C,IAAIsB,EAAaH,GAAS,IAAInB,CAAgB,EAC1CuB,EAAeJ,GAAS,MAAMnB,CAAgB,EAC9CqB,EAIJ,GADAA,EAAQF,GAAS,KAAK,KAAKF,CAAU,GAAKM,EAAa,KAAKN,CAAU,EAClEI,EAAO,CACT,IAAIG,EAAaH,EAAM,CAAC,EACxB,MAAO,CACL,KAAM,SAASG,EAAY,EAAE,EAC7B,eAAgBP,EAAW,MAAMO,EAAW,MAAM,CACpD,CACF,CAIA,GADAH,EAAQF,GAAS,GAAG,KAAKF,CAAU,GAAKK,EAAW,KAAKL,CAAU,EAC9DI,EAAO,CACT,IAAII,EAAgBJ,EAAM,CAAC,EAC3B,MAAO,CACL,KAAM,SAASI,EAAe,EAAE,EAAI,IACpC,eAAgBR,EAAW,MAAMQ,EAAc,MAAM,CACvD,CACF,CAGA,MAAO,CACL,KAAM,IACR,CACF,CACA,SAASf,GAAUO,EAAYV,EAAM,CAEnC,GAAIA,IAAS,KACX,OAAO,KAET,IAAIc,EACAZ,EACAiB,EACAC,EAGJ,GAAIV,EAAW,SAAW,EACxB,OAAAR,EAAO,IAAI,KAAK,CAAC,EACjBA,EAAK,eAAeF,CAAI,EACjBE,EAKT,GADAY,EAAQF,GAAS,GAAG,KAAKF,CAAU,EAC/BI,EAGF,OAFAZ,EAAO,IAAI,KAAK,CAAC,EACjBiB,EAAQ,SAASL,EAAM,CAAC,EAAG,EAAE,EAAI,EAC5BO,GAAarB,EAAMmB,CAAK,GAG7BjB,EAAK,eAAeF,EAAMmB,CAAK,EACxBjB,GAHE,IAAI,KAAK,GAAG,EAQvB,GADAY,EAAQF,GAAS,IAAI,KAAKF,CAAU,EAChCI,EAAO,CACTZ,EAAO,IAAI,KAAK,CAAC,EACjB,IAAIoB,EAAY,SAASR,EAAM,CAAC,EAAG,EAAE,EACrC,OAAKS,GAAsBvB,EAAMsB,CAAS,GAG1CpB,EAAK,eAAeF,EAAM,EAAGsB,CAAS,EAC/BpB,GAHE,IAAI,KAAK,GAAG,CAIvB,CAIA,GADAY,EAAQF,GAAS,KAAK,KAAKF,CAAU,EACjCI,EAAO,CACTZ,EAAO,IAAI,KAAK,CAAC,EACjBiB,EAAQ,SAASL,EAAM,CAAC,EAAG,EAAE,EAAI,EACjC,IAAIU,EAAM,SAASV,EAAM,CAAC,EAAG,EAAE,EAC/B,OAAKO,GAAarB,EAAMmB,EAAOK,CAAG,GAGlCtB,EAAK,eAAeF,EAAMmB,EAAOK,CAAG,EAC7BtB,GAHE,IAAI,KAAK,GAAG,CAIvB,CAIA,GADAY,EAAQF,GAAS,IAAI,KAAKF,CAAU,EAChCI,EAEF,OADAM,EAAO,SAASN,EAAM,CAAC,EAAG,EAAE,EAAI,EAC3BW,GAAiBzB,EAAMoB,CAAI,EAGzBM,GAAiB1B,EAAMoB,CAAI,EAFzB,IAAI,KAAK,GAAG,EAOvB,GADAN,EAAQF,GAAS,KAAK,KAAKF,CAAU,EACjCI,EAAO,CACTM,EAAO,SAASN,EAAM,CAAC,EAAG,EAAE,EAAI,EAChC,IAAIa,EAAY,SAASb,EAAM,CAAC,EAAG,EAAE,EAAI,EACzC,OAAKW,GAAiBzB,EAAMoB,EAAMO,CAAS,EAGpCD,GAAiB1B,EAAMoB,EAAMO,CAAS,EAFpC,IAAI,KAAK,GAAG,CAGvB,CAGA,OAAO,IACT,CACA,SAASpB,GAAUM,EAAY,CAC7B,IAAIC,EACAc,EACAC,EAIJ,GADAf,EAAQF,GAAS,GAAG,KAAKC,CAAU,EAC/BC,EAEF,OADAc,EAAQ,WAAWd,EAAM,CAAC,EAAE,QAAQ,IAAK,GAAG,CAAC,EACxCgB,GAAaF,CAAK,EAGhBA,EAAQ,GAAKG,GAFX,IAOX,GADAjB,EAAQF,GAAS,KAAK,KAAKC,CAAU,EACjCC,EAGF,OAFAc,EAAQ,SAASd,EAAM,CAAC,EAAG,EAAE,EAC7Be,EAAU,WAAWf,EAAM,CAAC,EAAE,QAAQ,IAAK,GAAG,CAAC,EAC1CgB,GAAaF,EAAOC,CAAO,EAGzBD,EAAQ,GAAKG,GAAuBF,EAAUG,GAF5C,IAOX,GADAlB,EAAQF,GAAS,OAAO,KAAKC,CAAU,EACnCC,EAAO,CACTc,EAAQ,SAASd,EAAM,CAAC,EAAG,EAAE,EAC7Be,EAAU,SAASf,EAAM,CAAC,EAAG,EAAE,EAC/B,IAAImB,EAAU,WAAWnB,EAAM,CAAC,EAAE,QAAQ,IAAK,GAAG,CAAC,EACnD,OAAKgB,GAAaF,EAAOC,EAASI,CAAO,EAGlCL,EAAQ,GAAKG,GAAuBF,EAAUG,GAAyBC,EAAU,IAF/E,GAGX,CAGA,OAAO,IACT,CACA,SAASP,GAAiBQ,EAAad,EAAMI,EAAK,CAChDJ,EAAOA,GAAQ,EACfI,EAAMA,GAAO,EACb,IAAItB,EAAO,IAAI,KAAK,CAAC,EACrBA,EAAK,eAAegC,EAAa,EAAG,CAAC,EACrC,IAAIC,EAAqBjC,EAAK,UAAU,GAAK,EACzCkC,EAAOhB,EAAO,EAAII,EAAM,EAAIW,EAChC,OAAAjC,EAAK,WAAWA,EAAK,WAAW,EAAIkC,CAAI,EACjClC,CACT,CAMA,SAASmC,GAAgBrC,EAAM,CAC7B,OAAOA,EAAO,MAAQ,GAAKA,EAAO,IAAM,GAAKA,EAAO,MAAQ,CAC9D,CACA,SAASqB,GAAarB,EAAMmB,EAAOjB,EAAM,CACvC,GAAIiB,EAAQ,GAAKA,EAAQ,GACvB,MAAO,GAET,GAAIjB,GAAQ,KAAM,CAChB,GAAIA,EAAO,EACT,MAAO,GAET,IAAIoC,EAAaD,GAAgBrC,CAAI,EAIrC,GAHIsC,GAAcpC,EAAOqC,GAAwBpB,CAAK,GAGlD,CAACmB,GAAcpC,EAAOsC,GAAcrB,CAAK,EAC3C,MAAO,EAEX,CACA,MAAO,EACT,CACA,SAASI,GAAsBvB,EAAMsB,EAAW,CAC9C,GAAIA,EAAY,EACd,MAAO,GAET,IAAIgB,EAAaD,GAAgBrC,CAAI,EAIrC,MAHI,EAAAsC,GAAchB,EAAY,KAG1B,CAACgB,GAAchB,EAAY,IAIjC,CACA,SAASG,GAAiBzB,EAAMoB,EAAMI,EAAK,CAIzC,MAHI,EAAAJ,EAAO,GAAKA,EAAO,IAGnBI,GAAO,OAASA,EAAM,GAAKA,EAAM,GAIvC,CACA,SAASM,GAAaF,EAAOC,EAASI,EAAS,CAO7C,MANI,EAAAL,GAAS,OAASA,EAAQ,GAAKA,GAAS,KAGxCC,GAAW,OAASA,EAAU,GAAKA,GAAW,KAG9CI,GAAW,OAASA,EAAU,GAAKA,GAAW,IAIpD,CA7XA,IAAAQ,GACAC,GAGIX,GACAC,GACAtC,GACAkB,GA8TA4B,GACAD,GAtUJI,GAAAC,EAAA,KAAAH,GAAsB,WACtBC,GAA4C,WAC5CG,KACAC,KACIf,GAAuB,KACvBC,GAAyB,IACzBtC,GAA4B,EAC5BkB,GAAW,CACb,gBAAiB,wBACjB,YAAa,mBACb,UAAW,IAEX,GAAI,YACJ,IAAK,CAAC,gBAEN,gBAEA,eACA,EACA,KAAM,WACN,MAAO,CAAC,eAER,eAEA,cACA,EAEA,GAAI,aACJ,IAAK,cACL,KAAM,uBACN,IAAK,eACL,KAAM,wBACN,GAAI,sBACJ,KAAM,+BACN,OAAQ,wCAER,SAAUmC,EACZ,EAgSIP,GAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAC/DD,GAA0B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,ICT9D,SAARS,GAAwBC,EAAWC,EAAgBC,EAAc,CACtE,IAAIC,EAAY,OAAOF,CAAc,EACjCG,EAAUF,GAAgB,CAAC,EAC3BG,EAAUF,EAAU,MAAMG,EAAwB,EACtD,GAAID,EAAS,CACX,IAAIE,EAAOC,GAAOJ,EAAQ,cAAgBJ,EAAWI,CAAO,EAG5DD,EAAYE,EAAQ,OAAO,SAAUI,EAAQC,EAAO,CAClD,GAAIA,EAAM,CAAC,IAAM,IACf,OAAOD,EAET,IAAIE,EAAMF,EAAO,QAAQC,CAAK,EAC1BE,EAA0BH,EAAOE,EAAM,CAAC,IAAM,IAC9CE,EAAWJ,EAAO,QAAQC,EAAO,IAAMI,GAAWJ,EAAM,CAAC,CAAC,EAAEH,EAAMG,EAAO,KAAMN,CAAO,EAAI,GAAG,EAGjG,OAAOQ,EAA0BC,EAAS,UAAU,EAAGF,EAAM,CAAC,EAAIE,EAAS,UAAUF,EAAM,CAAC,EAAIE,CAClG,EAAGV,CAAS,CACd,CACA,SAAO,GAAAY,SAAcf,EAAWG,EAAWC,CAAO,CACpD,CAlVA,IAAAY,GAGIV,GAHJW,GAAAC,EAAA,KAAAF,GAA0B,WAC1BG,KACAC,KACId,GAA2B,mCCH/B,IAAAe,GAAAC,EAAA,KAEAC,OCAA,IAAaC,GASAC,GASAC,GAMAC,GAUAC,GAcAC,GASAC,GAaAC,GAWAC,GAjFbC,GAAAC,EAAA,KAAaV,GAAmB,CAC9BW,KAAM,QACNC,MAAO,QACPC,KAAM,OACNC,QAAS,UACTC,QAAS,UACTC,SAAU,YAGCf,GAAkC,CAC7C,CAAEgB,QAAS,sBAAuBC,MAAOlB,GAAiBW,IAAI,EAC9D,CAAEM,QAAS,sBAAuBC,MAAOlB,GAAiBY,KAAK,EAC/D,CAAEK,QAAS,qBAAsBC,MAAOlB,GAAiBa,IAAI,EAC7D,CAAEI,QAAS,wBAAyBC,MAAOlB,GAAiBc,OAAO,EACnE,CAAEG,QAAS,wBAAyBC,MAAOlB,GAAiBe,OAAO,EACnE,CAAEE,QAAS,yBAA0BC,MAAOlB,GAAiBgB,QAAQ,CAAE,EAG5Dd,GAAoB,CAC/BiB,SAAU,WACVC,QAAS,UACTC,UAAW,aAGAlB,GAAa,CACxBmB,UAAW,YACXC,KAAM,OACNC,SAAU,WACVC,UAAW,iBACXC,SAAU,YACVC,aAAc,iBACdC,YAAa,gBAGFxB,GAAkB,CAC7ByB,eAAgB,kBAChBC,KAAM,iBACNC,cAAe,iBACfC,UAAW,YACXC,WAAY,aACZC,WAAY,cACZC,aAAc,eACdC,eAAgB,kBAChBC,aAAc,eACdC,SAAU,oCACVC,SAAU,wBAGClC,GAAkB,CAC7BmC,QAAS,IACTC,WAAY,IACZC,UAAW,KACXC,QAAS,KACTC,iBAAkB,KAClBC,aAAc,MAGHvC,GAAgB,CAC3BwC,UAAW,YACXC,YAAa,cACbC,UAAW,YACXC,UAAW,YACXC,OAAQ,WAQG3C,GAAgB,CAC3BK,MAAO,QACPuC,KAAM,OACNpC,QAAS,UACTF,KAAM,OACNuC,aAAc,eACdC,KAAM,OACNC,cAAe,gBACfC,kBAAmB,qBAGR/C,GAAgB,CAC3B,CAACD,GAAc4C,IAAI,EAAG,QACtB,CAAC5C,GAAcK,KAAK,EAAG,QACvB,CAACL,GAAcM,IAAI,EAAG,OACtB,CAACN,GAAcQ,OAAO,EAAG,iBACzB,CAACR,GAAc8C,IAAI,EAAG,uBACtB,CAAC9C,GAAc+C,aAAa,EAAG,aC3E3B,SAAUE,GAA0BC,EAA0BC,EAAoB,CACtF,OAAQC,GAAuD,CAC7D,IAAMC,EAAOH,EAAS,EAChBI,EAAWH,EAAWI,IAAKC,GAASJ,EAAUK,IAAID,CAAI,CAAC,EAAEE,OAAQC,GAA4BC,EAAQD,CAAE,EAC7G,OAAIN,EACFC,EAASO,QAASF,GAAMG,GAAiBH,CAAC,CAAC,EAE3CL,EAASO,QAASF,GAAMI,GAAcJ,CAAC,CAAC,EAGnC,IACT,CACF,CAEA,SAASG,GAAiBE,EAAwB,CAC5CA,EAAQC,MACND,EAAQE,SAAS,UAAU,GAC7B,OAAOF,EAAQG,QAAS,SAG1BH,EAAQI,UAAU,CAAEC,SAAU,EAAI,CAAE,CAExC,CAEA,SAASN,GAAcC,EAAwB,CACzCA,EAAQE,SAAS,UAAU,GAC7B,OAAOF,EAAQG,QAAS,QAE5B,CAxCA,IAAAG,GAAAC,EAAA,kCESEC,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,0BAFoDC,EAAA,QAAAC,CAAA,EAClDC,EAAA,EAAAC,EAAA,IAAAF,GAAA,KAAA,KAAAA,EAAAG,YAAA,GAAA,GDZJ,OAyCaC,GAzCbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAWAC,oDAuBaX,IAAkC,IAAA,CAAzC,MAAOA,CAAkC,CAe7CY,aAAA,CAdS,KAAAC,YAAc,GAKvB,KAAAC,QAAU,GACV,KAAAC,SAAW,GAEM,KAAAC,OAASC,EAAOC,EAAiB,EACjC,KAAAC,aAAe,IAAIC,GAAwB,EAAE,EAG9D,KAAAC,WAAa,IAAIC,GAGf,KAAKC,SAAW,KAAKJ,aAAaK,KAChCC,GAAkB,EAClBC,GAAa,GAAG,EAChBC,GAAoB,EACpBC,EAAWC,GAAe,KAAKb,OAAOc,UAAUC,aAAaC,cAAcH,CAAU,GAAK,CAAA,CAAE,EAC5FI,EAAKC,GAAU,KAAKC,yBAAyBD,CAAK,CAAC,CAAC,EAEtD,KAAKb,WAAWe,aAAaZ,KAAKC,GAAkB,CAAE,EAAEY,UAAWC,GAAU,KAAKC,qBAAqBD,CAAK,CAAC,EAC7G,KAAKE,yBAAwB,CAC/B,CAEAC,WAAWC,EAAe,CACxB,KAAKC,gBAAgBD,CAAO,CAC9B,CAEAE,iBAAiBC,EAAwB,CACvC,KAAKA,SAAWA,CAClB,CAEAC,kBAAkBC,EAA0B,CAC1C,KAAKA,UAAYA,CACnB,CAEAC,eAAa,CACN,KAAKlC,UACR,KAAKiC,YAAW,EAChB,KAAKjC,QAAU,GAEnB,CAEAmC,iBAAiBlC,EAAiB,CAChC,KAAKA,SAAWA,EACZ,KAAKA,SACP,KAAKM,WAAW6B,QAAO,EAEvB,KAAK7B,WAAW8B,OAAM,CAE1B,CAEAC,UAAUC,EAAoB,CAC5B,OAAOA,GAAQtD,aAAe,EAChC,CAEQwC,qBAAqBc,EAAoB,CAC3C,KAAKhC,WAAWiC,UAClB,KAAKZ,QAAUW,GAAQE,GACvB,KAAKV,WAAW,KAAKH,OAAO,EAC5B,KAAKM,cAAa,EAEtB,CAEAQ,uBAAqB,CACnB,IAAM3B,EAAa,KAAK4B,aAAaC,cAAcpB,OAAS,GAC5D,KAAKnB,aAAawC,KAAK9B,CAAU,CACnC,CAEQM,yBAAyBD,EAAuB,CACtD,OAAOA,EAAMD,IAAK2B,IAAO,CAAEL,GAAIK,EAAEC,OAAQ9D,YAAa6D,EAAE7D,WAAW,EAAG,CACxE,CAEQ4C,gBAAgBD,EAAe,CACrC,GAAI,KAAKA,UAAYA,IACnB,KAAKA,QAAUA,EACX,KAAKA,SAAS,CAChB,IAAMoB,EACJ,KAAK9C,OAAOc,UAAUC,aAAagC,gBAAgB,CAACrB,CAAO,CAAC,EAAElB,KAC5DS,EAAKC,GAAUA,EAAM,CAAC,CAAC,EACvBD,EAAK+B,GAASA,GAAMjE,aAAe,EAAE,EACrCkE,GAAW,IAAMC,EAAG,EAAE,CAAC,CAAC,GACrBA,EAAG,EAAE,EACQC,GAAeL,CAAM,EAC7BM,KAAMrE,GAAe,CAC3B,KAAK0D,aAAaC,eAIpBW,WAAW,IAAK,CACd,KAAKZ,YAAaC,cAAcpB,MAAQvC,CAC1C,EAAG,CAAC,CAER,CAAC,CACH,CAEJ,CAEcyC,0BAAwB,QAAA8B,GAAA,sBAEpC,IAAIC,EACA,KAAKvD,OAAOc,UAAUC,aAAaC,YACrCuC,EAAcJ,GAAe,KAAKnD,OAAOc,SAASC,YAAYC,YAAY,EAAE,CAAC,EAAEoC,KAAK,IAAA,EAAe,EAEnGG,EAAcC,QAAQC,OAAM,EAE9BF,EAAYG,MAAM,IAAM,KAAKrD,WAAW6B,QAAO,CAAE,CACnD,mDA9GWlD,EAAkC,CAAA,+BAAlCA,EAAkC2E,UAAA,CAAA,CAAA,+BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,6GARlC,CACT,CACEE,QAASC,GACTC,MAAO,GACPC,YAAalF,EACd,CACF,CAAA,EAAAmF,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,OAAA,OAAA,WAAA,GAAA,EAAA,QAAA,QAAA,cAAA,kBAAA,aAAA,EAAA,CAAA,mBAAA,GAAA,EAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAT,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WCvCHrF,EAAA,EAAA,QAAA,EAAA,CAAA,EAME+F,EAAA,QAAA,UAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAASb,EAAAtB,sBAAA,CAAuB,CAAA,CAAA,EAAC,QAAA,UAAA,CAAAgC,OAAAC,EAAAC,CAAA,EAAAC,EACxBb,EAAAtB,sBAAA,CAAuB,CAAA,CAAA,EAPlC9D,EAAA,EAUAF,EAAA,EAAA,mBAAA,EAAA,CAAA,EACEoG,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,CAAA,eAGFnG,EAAA,qBAZEC,EAAA,cAAAmF,EAAAjE,WAAA,EAA2B,kBAAAiF,CAAA,EAGH,cAAAhB,EAAAzD,UAAA,EAKgBxB,EAAA,CAAA,EAAAF,EAAA,cAAAmF,EAAA1B,SAAA,EACTvD,EAAA,CAAA,EAAAF,EAAA,UAAAoG,EAAA,EAAA,EAAAjB,EAAAvD,QAAA,CAAA,kBDqBrByE,EAAYC,GAAAC,GAAEC,GAAuBC,GAAcC,GAAEC,GAAmBC,GAAAC,GAAAC,GAAEC,GAAqBC,GAAAC,GAAAC,EAAA,EAAAC,OAAA,CAAA;mHAAA,CAAA,CAAA,CAAA,SAS9F9G,CAAkC,GAAA,2BG7BrC+G,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,kDAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,CAAA,sBAAaL,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAC,SAAAC,SAAA,UAAA,CAAA,0BAsCbd,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,6CAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAQ,GAAA,EAAA,EAAA,aAAA,CAAA,sBAAaZ,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAI,YAAAF,SAAA,UAAA,CAAA,0BAmBbd,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,6CAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAU,GAAA,EAAA,EAAA,aAAA,CAAA,sBAAad,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAM,UAAAJ,SAAA,UAAA,CAAA,6BAkBbd,EAAA,EAAA,aAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,0BAF2CO,EAAA,QAAAU,EAAAC,KAAA,EACzCjB,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAc,EAAAE,OAAA,EAAA,GAAA,0BAIFrB,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,yCAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAe,GAAA,EAAA,EAAA,aAAA,CAAA,sBAAanB,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAW,SAAAT,SAAA,UAAA,CAAA,GD5FvB,gBAgEaU,GAhEbC,GAAAC,EAAA,KAAAC,KACAC,IACAC,IAWAC,KACAC,KACAC,IAEAC,KACAC,KAMAC,KACAC,KACAC,KACAC,KACAC,KASAC,KACAC,KACAC,KACAN,KACAO,KACAC,KACAC,0QAqBarB,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CACzC,IAAasB,SAAS1B,EAA+B,CACnD,KAAK2B,UAAU3B,CAAK,CACtB,CAIA,IACI4B,YAAY5B,EAAoB,CAG9BA,IAAU,KAAKT,WAAWC,SAAS,kBAAqBqC,YAAW,GACrE,KAAKtC,UAAUuC,WAAW,CAAEC,iBAAkB/B,GAAS,EAAE,EAAI,CAAEgC,UAAW,EAAK,CAAE,CAErF,CAqCAC,YAA6BC,EAA8B,CAA9B,KAAAA,cAAAA,EA/CgB,KAAAC,OAAyB,KACtE,KAAAC,KAAOC,GAAK,EACZ,KAAAC,cAAgBD,GAAK,EASX,KAAAE,kBAAoB,IAAIC,GAExB,KAAAC,mBAAqB,IAAID,GAKnC,KAAAE,0BAA4BA,GAC5B,KAAAC,0BAA4BA,GAElB,KAAAC,WAAa,GACJ,KAAAC,gBAAkBA,GAClB,KAAAC,gBAAkBA,GAClB,KAAAC,cAAgBA,GAChB,KAAAC,SAAW,EAEtB,KAAAC,MAAQ,IAAIC,KACpB,KAAA3D,UAAY,IAAI4D,GAAW,EAAGC,YAAYC,MACxC,CACE5D,SAAU,GACVsC,iBAAkB,GAClBnC,YAAa0D,GAAW,KAAKL,MAAMM,QAAQ,KAAKN,MAAMO,QAAO,EAAK,CAAC,EAAGC,EAAoB,EAC1FtD,SAAUuD,GAAiBC,KAC3BC,aAAc,GACd9D,UAAW,IAEb,CACE+D,WAAYC,GACV,IAAM,KAAKlB,WACX,CAAC,WAAY,WAAY,cAAe,WAAW,CAAC,EAEvD,EAGgB,KAAAmB,UAAYC,GAG7B,KAAKzE,UAAUC,SAASuC,iBAAiBkC,aACtCC,KAAKC,GAAkB,EAAIC,GAAoB,CAAE,EACjDC,UAAWrE,GAAU,KAAKuC,kBAAkB+B,KAAKtE,CAAK,CAAC,EAC1DuE,GAAO,IAAK,CACV,IAAMnC,EAAO,KAAKA,KAAI,EAChBoC,EAAQ,KAAKlC,cAAa,EAChC,KAAKmC,eAAeD,GAASpC,GAAQsC,MAAS,CAChD,CAAC,EACD,KAAKnF,UAAUC,SAASM,UAAUmE,aAC/BC,KAAKC,GAAkB,EAAIC,GAAoB,CAAE,EACjDC,UAAWM,GAAY,KAAKC,uBAAuBD,CAAO,CAAC,CAChE,CAEAE,iBAAe,CACb,KAAKC,cAAcC,eAAeC,MAAK,CACzC,CAEAC,WAAS,CACP,KAAKrC,WAAa,GAClB,IAAMK,EAAQ,IAAIC,KAClB,KAAK3D,UAAU2F,MAAM,CACnBnD,iBAAkB,KAAKH,aAAe,GACtC9B,UAAW,KAAKsC,KAAI,GAAI+C,QAAU,GAClCvF,YAAa0D,GAAWL,EAAMM,QAAQN,EAAMO,QAAO,EAAK,CAAC,EAAGC,EAAoB,EACjF,EACD,KAAK2B,uBAAsB,CAC7B,CAEAC,WAAS,CACP,IAAMC,EAAa,KAAK/F,UAAUsC,YAAW,EAC7C,MAAO,CACL,CACE0D,QAAS,KAAKrD,cAAcsD,WAAWC,EAAYC,YAAY,EAC/DC,YAAaL,EAAW7F,UAE1B,CACE8F,QAAS,KAAKrD,cAAcsD,WAAWC,EAAYG,gBAAgB,EACnED,YAAaL,EAAWvD,kBAE1B,CACEwD,QAAS,KAAKrD,cAAcsD,WAAWC,EAAYI,mBAAmB,EACtEC,UAAWR,EAAW1F,YAAc,IAAIsD,KAAKoC,EAAW1F,WAAW,EAAI8E,QAEzE,CACEa,QAAS,KAAKrD,cAAcsD,WAAWO,GAAeC,eAAe,EACrEL,YAAaL,EAAWxF,WAE1B,CACEyF,QAAS,KAAKrD,cAAcsD,WAAWC,EAAYQ,oBAAoB,EACvEN,YAAaL,EAAW1B,cAE1B,CACE2B,QAAS,KAAKrD,cAAcsD,WAAWC,EAAYS,kBAAkB,EACrEP,YAAaQ,IAEf,CACEZ,QAAS,KAAKrD,cAAcsD,WAAWC,EAAY/B,gBAAgB,EACnEiC,YAAaL,EAAWnF,SACzB,CAEL,CAEQwB,UAAUD,EAAkC,CAClD,GAAIA,EAAU,CACZ,IAAMjC,EAAW,KAAKyC,cAAckE,2BAA2B1E,EAAU+D,EAAYC,YAAY,EAC3FW,EAAW,KAAKnE,cAAckE,2BAA2B1E,EAAU+D,EAAYG,gBAAgB,EAC/FhG,EAAc,KAAKsC,cAAckE,2BAA2B1E,EAAU+D,EAAYI,mBAAmB,EACrGjC,EAAe,KAAK1B,cAAckE,2BAA2B1E,EAAU+D,EAAYQ,oBAAoB,EACvG9F,EAAW,KAAK+B,cAAckE,2BAA2B1E,EAAU+D,EAAY/B,gBAAgB,EAC/F5D,EAAY4B,GAAUiD,SAAW,KAAKvC,KAAI,GAAI+C,OAEpD,KAAK5F,UAAU+G,SAAS,CACtB7G,SAAUA,GAAUkG,aAAe,GACnC5D,iBAAkBsE,GAAUV,aAAe,GAC3C/F,YAAaA,GAAakG,UAAYxC,GAAW1D,EAAYkG,UAAWrC,EAAoB,EAAI,GAChGG,aAAcA,GAAc+B,aAAe,GAC3CxF,SAAUA,GAAUwF,aAAe,GACnC7F,UAAWA,GAAa,GACzB,CACH,MAAW,KAAKP,UAAUgH,OACxB,KAAKtB,UAAS,CAElB,CAEQR,eAAerC,EAAW,CAChC,IAAM+C,EAAS/C,GAAM+C,OAChB,KAAK5F,UAAUsC,YAAW,EAAG/B,WAChC,KAAKP,UAAUuC,WAAW,CACxBhC,UAAWqF,EACZ,CAEL,CAEQP,uBAAuBD,EAAe,CAC5C,IAAM6B,EAAmB,KAAKC,cAAcC,KAAMC,GAAMA,EAAEC,gBAAkB,MAAM,EAC9EJ,IACFA,EAAiBK,YAAclC,EAC/B,KAAKlC,mBAAmB6B,KAAK,KAAKmC,YAAY,EAElD,CAEAK,UAAQ,CACN,KAAKlE,WAAa,GAClB,KAAKrD,UAAUwH,iBAAgB,EAC/B,KAAK3B,uBAAsB,CAC7B,CAEAA,wBAAsB,CACpB,KAAK7F,UAAU6F,uBAAsB,CACvC,CAEA,IAAIT,SAAO,CACT,OAAO,KAAKpF,UAAUsC,YAAW,EAAG/B,WAAa4E,MACnD,iDArKWtE,GAA8B4G,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAA9B7G,EAA8B8G,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,4KAIrBE,EAAqB,EAAAlF,KAAA,CAAA,EAAA,MAAA,EAAAE,cAAA,CAAA,EAAA,eAAA,EAAAV,YAAA,cAAA6E,aAAA,cAAA,EAAAc,QAAA,CAAAhF,kBAAA,oBAAAE,mBAAA,oBAAA,EAAA+E,SAAA,CAAAC,EAAA,EAAAC,mBAAAC,GAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,OAAA,QAAA,EAAA,CAAA,eAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,aAAA,GAAA,EAAA,WAAA,EAAA,CAAA,gBAAA,QAAA,EAAA,WAAA,EAAA,CAAA,kBAAA,WAAA,WAAA,GAAA,sBAAA,GAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,WAAA,EAAA,mBAAA,EAAA,YAAA,eAAA,cAAA,cAAA,UAAA,SAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,gBAAA,QAAA,OAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,YAAA,EAAA,CAAA,kBAAA,cAAA,OAAA,iBAAA,WAAA,GAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,QAAA,EAAA,oBAAA,EAAA,aAAA,WAAA,EAAA,CAAA,qBAAA,GAAA,kBAAA,YAAA,EAAA,aAAA,EAAA,CAAA,kBAAA,WAAA,EAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,kBAAA,eAAA,EAAA,aAAA,EAAA,CAAA,QAAA,KAAA,EAAA,CAAA,QAAA,QAAA,EAAA,CAAA,QAAA,MAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAX,EAAAC,EAAA,CAAAD,EAAA,WCpE3CxI,EAAA,EAAA,OAAA,EAAA,CAAA,EAAwD,EAAA,KAAA,EACjD,EAAA,eAAA,EACY,EAAA,kBAAA,CAAA,EAEXoJ,EAAA,EAAA,WAAA,EAAA,CAAA,mBAOA7I,EAAA,EAAA8I,GAAA,EAAA,EAAA,eAAA,CAAA,EAKFnJ,EAAA,EAAkB,EAEpBF,EAAA,EAAA,eAAA,EACEoJ,EAAA,GAAA,wBAAA,CAAA,EAUFlJ,EAAA,EAAgB,EAElBoJ,GAAA,EAAA,EACAtJ,EAAA,GAAA,KAAA,EAAK,GAAA,gBAAA,CAAA,EAC4D,GAAA,kBAAA,CAAA,EAS3DoJ,EAAA,GAAA,QAAA,EAAA,oBAMAA,EAAA,GAAA,iBAAA,KAAA,CAAA,EACA7I,EAAA,GAAAgJ,GAAA,EAAA,EAAA,eAAA,CAAA,EAKFrJ,EAAA,EACAF,EAAA,GAAA,kBAAA,EAAA,EAOEoJ,EAAA,GAAA,gCAAA,EAAA,oBAMA7I,EAAA,GAAAiJ,GAAA,EAAA,EAAA,eAAA,CAAA,EAKFtJ,EAAA,EAAkB,EAEpBF,EAAA,GAAA,gBAAA,CAAA,EAA+D,GAAA,kBAAA,EAAA,EAO5D,GAAA,aAAA,EAAA,oBAKGO,EAAA,GAAAkJ,GAAA,EAAA,EAAA,aAAA,EAAA,EAGFvJ,EAAA,EACAK,EAAA,GAAAmJ,GAAA,EAAA,EAAA,eAAA,CAAA,EAKFxJ,EAAA,EACAF,EAAA,GAAA,kBAAA,EAAA,EAMC,GAAA,aAAA,EAAA,oBAKGA,EAAA,GAAA,aAAA,EAAA,EAAwBC,EAAA,EAAA,oBAAqCC,EAAA,EAC7DF,EAAA,GAAA,aAAA,EAAA,EAA2BC,EAAA,EAAA,oBAAwCC,EAAA,EACnEF,EAAA,GAAA,aAAA,EAAA,EAAyBC,EAAA,EAAA,oBAAsCC,EAAA,EAAa,EACjE,EACG,EAEpBoJ,GAAA,GAAA,CAAA,EACFpJ,EAAA,EAAM,SAnHFO,EAAA,YAAAgI,EAAA9H,SAAA,EAGuCR,EAAA,CAAA,EAAAM,EAAA,YAAA,EAAA,EAKnCN,EAAA,EAAAwJ,GAAA,cAAAtJ,EAAA,EAAA,GAAA,+CAAA,CAAA,EAGaF,EAAA,CAAA,EAAAM,EAAA,OAAAgI,EAAAzE,UAAA,EAWf7D,EAAA,CAAA,EAAAM,EAAA,YAAA,EAAA,EAAkB,eAAA,EAAA,EACG,cAAAgI,EAAA9H,UAAAC,SAAA,gBAAA,EACiC,cAAA,EAAA,EAClC,UAAA6H,EAAA3E,yBAAA,EACiB,UAAA2E,EAAA1E,yBAAA,EAOF5D,EAAA,CAAA,EAAAyJ,GAAA,SAAAnB,EAAAlF,MAAA,EAMnCpD,EAAA,EAAAyJ,GAAA,SAAAnB,EAAAlF,MAAA,EAHA9C,EAAA,YAAA,EAAA,EAAmB,aAAA,OAAA,EAUjBN,EAAA,EAAAwJ,GAAA,cAAAtJ,EAAA,GAAA,GAAA,kDAAA,CAAA,EAGaF,EAAA,CAAA,EAAAM,EAAA,OAAAgI,EAAAzE,UAAA,EAWf7D,EAAA,EAAAyJ,GAAA,SAAAnB,EAAAlF,MAAA,EAJA9C,EAAA,aAAA,gBAAA,EAA+B,YAAA,EAAA,EAS7BN,EAAA,EAAAwJ,GAAA,cAAAtJ,EAAA,GAAA,GAAA,+CAAA,CAAA,EAGaF,EAAA,CAAA,EAAAM,EAAA,OAAAgI,EAAAzE,UAAA,EAOoB7D,EAAA,EAAAyJ,GAAA,SAAAnB,EAAAlF,MAAA,EAMnCpD,EAAA,EAAAyJ,GAAA,SAAAnB,EAAAlF,MAAA,EAJA9C,EAAA,aAAA,WAAA,EAA0B,YAAA,EAAA,EAQxBN,EAAA,EAAAwJ,GAAA,cAAAtJ,EAAA,GAAA,GAAA,8CAAA,CAAA,EAE6BF,EAAA,CAAA,EAAAM,EAAA,UAAAgI,EAAAtD,SAAA,EAIhBhF,EAAA,EAAAM,EAAA,OAAAgI,EAAAzE,UAAA,EAWf7D,EAAA,EAAAyJ,GAAA,SAAAnB,EAAAlF,MAAA,EAJA9C,EAAA,aAAA,eAAA,EAA8B,YAAA,EAAA,EAQ5BN,EAAA,EAAAwJ,GAAA,cAAAtJ,EAAA,GAAA,GAAA,kDAAA,CAAA,EAEwBF,EAAA,CAAA,EAAA0J,EAAAxJ,EAAA,GAAA,GAAA,mBAAA,CAAA,EACGF,EAAA,CAAA,EAAA0J,EAAAxJ,EAAA,GAAA,GAAA,sBAAA,CAAA,EACFF,EAAA,CAAA,EAAA0J,EAAAxJ,EAAA,GAAA,GAAA,oBAAA,CAAA,kBD3D/ByJ,EAAYC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAcC,GAAAC,GACdC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,GACAC,GAAmBC,GACnBC,GAAeC,GAAAC,GACfC,GACAC,GAA0BC,EAAA,EAAAC,OAAA,CAAA;iGAAA,CAAA,CAAA,CAAA,SAGjBpK,CAA8B,GAAA,IEhE3C,IAAaqK,IAEAC,IAEAC,GAEAC,GACAC,GAEAC,GACAC,GACAC,GACAC,GACAC,GAEAC,GAEAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,IACAC,GAEAC,IAEAC,IA5BbC,GAAAC,EAAA,KAAatB,IAAkB,iBAElBC,IAAoB,mBAEpBC,GAAmB,cAEnBC,GAA4C,uBAC5CC,GAA0B,iCAE1BC,GAAgB,uBAChBC,GAAW,WACXC,GAAkB,kBAClBC,GAAqB,qBACrBC,GAAsB,kBAEtBC,GAAiC,gBAEjCC,GAAiC,8BACjCC,GAAkC,+BAClCC,GAA+B,4BAC/BC,GAA8B,2BAC9BC,GAA2B,wBAC3BC,GAA2B,wBAC3BC,IAAuB,UACvBC,GAA4B,WAE5BC,IAAe,oFAEfC,IAAa,mFC1B1B,IAAaG,GACAC,IAEDC,GAHZC,GAAAC,EAAA,KAAaJ,GAA6B,yBAC7BC,IAA0B,WAE3BC,GAAZ,SAAYA,EAAc,CACxBA,OAAAA,EAAA,cAAA,gBACAA,EAAA,IAAA,MACAA,EAAA,gBAAA,kBACAA,EAAA,OAAA,SACAA,EAAA,YAAA,cACAA,EAAA,MAAA,QANUA,CAOZ,EAPYA,IAAc,CAAA,CAAA,ICL1B,IAKaG,GAIAC,GAIAC,GAIAC,GAIAC,GAIAC,GAIAC,GA7BbC,GAAAC,EAAA,KAAAC,IAKaT,GAA4B,IAAIU,GAC3C,wCAAwC,EAG7BT,GAA6D,IAAIS,GAC5E,yCAAyC,EAG9BR,GAAsD,IAAIQ,GACrE,mCAAmC,EAGxBP,GAAuD,IAAIO,GACtE,oCAAoC,EAGzBN,GAAwE,IAAIM,GACvF,+CAA+C,EAGpCL,GAA2E,IAAIK,GAC1F,iDAAiD,EAGtCJ,GAA4D,IAAII,GAC3E,wCAAwC,IC+Q1C,SAASC,GAAoBC,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAsWA,SAASC,GAAoBF,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA4HA,SAASE,GAAoBH,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAgSA,SAASG,GAAoBJ,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAsFA,SAASI,GAAoBL,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA8NA,SAASK,GAAkBN,EAASC,EAAO,CACzC,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAj4CA,IAIMM,GACAC,GAOFC,GA6BAC,GAWAC,GAYAC,GAcAC,GAQAC,GAYAC,GAOAC,GAUAC,GAmBEC,GAoBAC,GAoBAC,GAoBAC,GAiBAC,GAqDAC,GAoBAC,GAuBAC,GA2DAC,GAuBAC,GA0BAC,GA8FAC,GAqDAC,GA0BAC,GAkFAC,GAoEAC,GAgCAC,GA6BAC,GAkDAC,GA0BAC,GA6BAC,GA6BAC,GAoBAC,GAuBAC,GA6BAC,GA0BAC,GA0BAC,GAmCAC,GAwDAC,GAmCAC,GAmCAC,GA0BAC,GA0BAC,GA+EAC,GA0BAC,GAmCAC,GAgCAC,GAuBAC,GA0BAC,GAuBAC,GAoBAC,GAsCAC,GAoBAC,GA6DAC,GA0BAC,GA6BAC,GA0BAC,GA0BAC,GA8CAC,GAoDAC,GA6BAC,GAuBAC,GAuBAC,GA6BAC,GAuBAC,GAmCAC,GA+CAC,GA6BAC,GA0BAC,GAuBAC,GAoBAC,GAuBAC,GAgCAC,GAuBAC,GA0BAC,GA8EAC,GA0BAC,GAuBAC,GA0BAC,GAuBAC,GAgCAC,GAqEAC,GAuBAC,GAuBAC,GAuBAC,GAuBAC,GA6BAC,GAoBAC,GA0BAC,GAuBAC,GA6BAC,GAgHAC,GAoBAC,GAoBAC,GA6BAC,GAuBAC,GA6BAC,GA6BAC,GAgCAC,GA6BAC,GA6BAC,GA6BAC,GA6BAC,GA6BAC,GA6BAC,GAmCAC,GAgCAC,GA8IAC,GAoBAC,GAoBAC,GA6BAC,GA6BAC,GAuBAC,GA0DAC,GA6BAC,GAuBAC,GAuBAC,GAuBAC,GAqCFC,GA8EAC,GA0DAC,GA8DAC,GA6EAC,GA/7HJC,GAAAC,EAAA,KAAAC,IACAA,IACAC,KACAC,KACMhI,IAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,GAAU,CACd,MAAS,uCACT,KAAQ,GACR,KAAQ,mCACR,KAAQ,mCACR,WAAc,kCAChB,EACIC,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,GAAQD,GAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6B+H,EAAmB,CACjE,OAAO,IAAKA,GAAqB/H,EACnC,EACAA,EAAY,WAA0BgI,GAAmB,CACvD,MAAOhI,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,GAAkD,SAAUA,EAAoC,CAClG,OAAAA,EAAmCA,EAAmC,cAAmB,CAAC,EAAI,gBAC9FA,EAAmCA,EAAmC,qBAA0B,CAAC,EAAI,uBAC9FA,CACT,EAAEA,IAAsC,CAAC,CAAC,EAOtCC,GAA2B,SAAUA,EAAa,CACpD,OAAAA,EAAYA,EAAY,qBAA0B,CAAC,EAAI,uBACvDA,EAAYA,EAAY,iBAAsB,CAAC,EAAI,mBACnDA,EAAYA,EAAY,mBAAwB,CAAC,EAAI,qBACrDA,EAAYA,EAAY,sBAA2B,CAAC,EAAI,wBACxDA,EAAYA,EAAY,qBAA0B,CAAC,EAAI,uBACvDA,EAAYA,EAAY,mBAAwB,CAAC,EAAI,qBACrDA,EAAYA,EAAY,sBAA2B,CAAC,EAAI,wBACxDA,EAAYA,EAAY,uBAA4B,CAAC,EAAI,yBACzDA,EAAYA,EAAY,sBAA2B,CAAC,EAAI,wBACjDA,CACT,EAAEA,IAAe,CAAC,CAAC,EACfC,GAAwB,SAAUA,EAAU,CAC9C,OAAAA,EAASA,EAAS,kBAAuB,CAAC,EAAI,oBAC9CA,EAASA,EAAS,eAAoB,CAAC,EAAI,iBAC3CA,EAASA,EAAS,oBAAyB,CAAC,EAAI,sBAChDA,EAASA,EAAS,sBAA2B,CAAC,EAAI,wBAClDA,EAASA,EAAS,iBAAsB,CAAC,EAAI,mBACtCA,CACT,EAAEA,IAAY,CAAC,CAAC,EAOZC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,2BAAgC,CAAC,EAAI,6BACjEA,EAAcA,EAAc,sBAA2B,CAAC,EAAI,wBAC5DA,EAAcA,EAAc,qBAA0B,CAAC,EAAI,uBAC3DA,EAAcA,EAAc,gCAAqC,CAAC,EAAI,kCACtEA,EAAcA,EAAc,kCAAuC,CAAC,EAAI,oCACjEA,CACT,EAAEA,IAAiB,CAAC,CAAC,EACjBC,GAA2B,SAAUA,EAAa,CACpD,OAAAA,EAAYA,EAAY,yBAA8B,CAAC,EAAI,2BAC3DA,EAAYA,EAAY,8BAAmC,CAAC,EAAI,gCAChEA,EAAYA,EAAY,sBAA2B,CAAC,EAAI,wBACjDA,CACT,EAAEA,IAAe,CAAC,CAAC,EAOfC,GAAoD,SAAUA,EAAsC,CACtG,OAAAA,EAAqCA,EAAqC,sCAA2C,CAAC,EAAI,wCAC1HA,EAAqCA,EAAqC,qCAA0C,CAAC,EAAI,uCACzHA,EAAqCA,EAAqC,sCAA2C,CAAC,EAAI,wCAC1HA,EAAqCA,EAAqC,uCAA4C,CAAC,EAAI,yCACpHA,CACT,EAAEA,IAAwC,CAAC,CAAC,EACxCC,GAA2B,SAAUA,EAAa,CACpD,OAAAA,EAAYA,EAAY,qBAA0B,CAAC,EAAI,uBACvDA,EAAYA,EAAY,yBAA8B,CAAC,EAAI,2BAC3DA,EAAYA,EAAY,iBAAsB,CAAC,EAAI,mBACnDA,EAAYA,EAAY,iBAAsB,CAAC,EAAI,mBACnDA,EAAYA,EAAY,sBAA2B,CAAC,EAAI,wBACxDA,EAAYA,EAAY,sBAA2B,CAAC,EAAI,wBACxDA,EAAYA,EAAY,uBAA4B,CAAC,EAAI,yBAClDA,CACT,EAAEA,IAAe,CAAC,CAAC,EACfC,GAA+B,SAAUA,EAAiB,CAC5D,OAAAA,EAAgBA,EAAgB,0BAA+B,CAAC,EAAI,4BACpEA,EAAgBA,EAAgB,uBAA4B,CAAC,EAAI,yBACjEA,EAAgBA,EAAgB,4BAAiC,CAAC,EAAI,8BAC/DA,CACT,EAAEA,IAAmB,CAAC,CAAC,EAcjBC,GAAN,MAAMwH,CAA+B,CACnC,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM3H,GAAN,MAAM4H,CAAwC,CAC5C,OAAO,UAAUJ,EAAO,CACtB,IAAIC,EAAI,IAAIG,EACZ,OAAAH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM1H,GAAN,MAAM4H,CAA0C,CAC9C,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMzH,GAAN,MAAM4H,CAAyB,CAC7B,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACMvH,GAAN,MAAM4H,CAAU,CACd,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,wBACRC,EAAE,sBAAwB1H,GAA+B,UAAUyH,EAAM,qBAAqB,GAE5FA,EAAM,mBACRC,EAAE,iBAAmBrH,GAA0B,UAAUoH,EAAM,gBAAgB,GAE7EA,EAAM,kBACRC,EAAE,gBAAkBpH,GAAyB,UAAUmH,EAAM,eAAe,GAE1EA,EAAM,mCACRC,EAAE,iCAAmCxH,GAA0C,UAAUuH,EAAM,gCAAgC,GAE7HA,EAAM,iCACRC,EAAE,+BAAiCzH,GAAwC,UAAUwH,EAAM,8BAA8B,GAEvHA,EAAM,kBACRC,EAAE,gBAAkBvH,GAAyB,UAAUsH,EAAM,eAAe,GAEvEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,sBAA0B,KAAe,KAAK,wBAA0B,OACtFA,EAAS,sBAA2B,cAAe,KAAK,sBAAwB,KAAK,sBAAsB,UAAU,EAAI,KAAK,uBAE5H,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAE1G,OAAO,KAAK,iCAAqC,KAAe,KAAK,mCAAqC,OAC5GA,EAAS,iCAAsC,cAAe,KAAK,iCAAmC,KAAK,iCAAiC,UAAU,EAAI,KAAK,kCAE7J,OAAO,KAAK,+BAAmC,KAAe,KAAK,iCAAmC,OACxGA,EAAS,+BAAoC,cAAe,KAAK,+BAAiC,KAAK,+BAA+B,UAAU,EAAI,KAAK,gCAEvJ,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EACMvH,GAAN,MAAM4H,CAA0B,CAC9B,OAAO,UAAUR,EAAO,CACtB,IAAIC,EAAI,IAAIO,EACZ,OAAAP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMtH,GAAN,MAAM4H,CAAyB,CAC7B,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EAOMpH,GAAN,MAAM4H,CAAS,CACb,OAAO,UAAUV,EAAO,CACtB,IAAIC,EAAI,IAAIS,EACZ,OAAAT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE/CA,EAAM,qBACRC,EAAE,mBAAqBD,EAAM,mBAAmB,IAAI/G,GAAkB,SAAS,GAE7E+G,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIjH,GAAe,SAAS,GAEjDkH,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,mBAAuB,KAAe,KAAK,qBAAuB,OAChFA,EAAS,mBAAwB,cAAe,KAAK,mBAAqB,KAAK,mBAAmB,UAAU,EAAI,KAAK,oBAEnH,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMpH,GAAN,MAAM4H,CAAe,CACnB,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMnH,GAAN,MAAM4H,CAAY,CAChB,OAAO,UAAUZ,EAAO,CACtB,IAAIC,EAAI,IAAIW,EACZ,OAAAX,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMlH,GAAN,MAAM4H,CAAkB,CACtB,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAaD,EAAM,WAAW,IAAIa,EAAkB,SAAS,GAE7Db,EAAM,QACRC,EAAE,MAAQY,EAAkB,UAAUb,EAAM,KAAK,GAE/CA,EAAM,WACRC,EAAE,SAAW7I,GAAoBW,GAAoCiI,EAAM,QAAQ,GAE9EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EAgDMjH,GAAN,MAAM4H,CAAa,CACjB,OAAO,UAAUd,EAAO,CACtB,IAAIC,EAAI,IAAIa,EACZ,OAAAb,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE/CA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,WACRC,EAAE,SAAW,IAAI,KAAKD,EAAM,QAAQ,GAE/BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMhH,GAAN,MAAM4H,CAAgB,CACpB,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACM/G,GAAN,MAAM4H,CAAoB,CACxB,OAAO,UAAUhB,EAAO,CACtB,IAAIC,EAAI,IAAIe,EACZ,OAAAf,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE/CA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EA0CM9G,GAAN,MAAM4H,CAAK,CACT,OAAO,UAAUjB,EAAO,CACtB,IAAIC,EAAI,IAAIgB,EACZ,OAAAhB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE/CA,EAAM,OACRC,EAAE,KAAO1I,GAAoBU,GAAU+H,EAAM,IAAI,GAE/CA,EAAM,gBACRC,EAAE,cAAgBD,EAAM,cAAc,IAAI9G,GAAa,SAAS,GAE9D8G,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIlH,GAAS,SAAS,GAElDkH,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,oBACRC,EAAE,kBAAoBD,EAAM,kBAAkB,IAAIkB,GAAK3J,GAAoBS,GAAakJ,CAAC,CAAC,GAErFjB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACM7G,GAAN,MAAM6H,CAAQ,CACZ,OAAO,UAAUnB,EAAO,CACtB,IAAIC,EAAI,IAAIkB,EACZ,OAAAlB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EAOM5G,GAAN,MAAM6H,CAAa,CACjB,OAAO,UAAUpB,EAAO,CACtB,IAAIC,EAAI,IAAImB,EACZ,OAAAnB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EAOM3G,GAAN,MAAM6H,CAAU,CACd,OAAO,UAAUrB,EAAO,CACtB,IAAIC,EAAI,IAAIoB,EACZ,OAAApB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE/CA,EAAM,OACRC,EAAE,KAAOzI,GAAoBU,GAAe8H,EAAM,IAAI,GAEpDA,EAAM,SACRC,EAAE,OAASvG,GAAO,UAAUsG,EAAM,MAAM,GAEtCA,EAAM,oBACRC,EAAE,kBAAoBD,EAAM,kBAAkB,IAAIrG,GAAiB,SAAS,GAEvEsG,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAE7GA,CACT,CACF,EACM1G,GAAN,MAAM6H,CAAa,CACjB,OAAO,UAAUtB,EAAO,CACtB,IAAIC,EAAI,IAAIqB,EACZ,OAAArB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMzG,GAAN,MAAM6H,CAAO,CACX,OAAO,UAAUvB,EAAO,CACtB,IAAIC,EAAI,IAAIsB,EACZ,OAAAtB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcpG,GAAkB,UAAUmG,EAAM,WAAW,GAE3DA,EAAM,cACRC,EAAE,YAAchG,GAAkB,UAAU+F,EAAM,WAAW,GAExDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMxG,GAAN,MAAM6H,CAAiB,CACrB,OAAO,UAAUxB,EAAO,CACtB,IAAIC,EAAI,IAAIuB,EACZ,OAAAvB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO5G,GAAK,UAAU2G,EAAM,IAAI,GAEhCA,EAAM,gBACRC,EAAE,cAAgBD,EAAM,cAAc,IAAIzG,GAAa,SAAS,GAE3D0G,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMvG,GAAN,MAAM6H,CAAe,CACnB,OAAO,UAAUzB,EAAO,CACtB,IAAIC,EAAI,IAAIwB,EACZ,OAAAxB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMtG,GAAN,MAAM6H,CAAkB,CACtB,OAAO,UAAU1B,EAAO,CACtB,IAAIC,EAAI,IAAIyB,EACZ,OAAAzB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,uBAA2B,MACzCA,EAAS,uBAA4B,KAAK,wBAErCA,CACT,CACF,EACMrG,GAAN,MAAM6H,CAAY,CAChB,OAAO,UAAU3B,EAAO,CACtB,IAAIC,EAAI,IAAI0B,EACZ,OAAA1B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,uBACRC,EAAE,qBAAuBlG,GAAqB,UAAUiG,EAAM,oBAAoB,GAEhFA,EAAM,iBACRC,EAAE,eAAiBrG,GAAe,UAAUoG,EAAM,cAAc,GAE3DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,qBAAyB,KAAe,KAAK,uBAAyB,OACpFA,EAAS,qBAA0B,cAAe,KAAK,qBAAuB,KAAK,qBAAqB,UAAU,EAAI,KAAK,sBAEzH,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMpG,GAAN,MAAM6H,CAAqB,CACzB,OAAO,UAAU5B,EAAO,CACtB,IAAIC,EAAI,IAAI2B,EACZ,OAAA3B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgBjG,GAAkC,UAAUgG,EAAM,aAAa,GAE5EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMnG,GAAN,MAAM6H,CAAkC,CACtC,OAAO,UAAU7B,EAAO,CACtB,IAAIC,EAAI,IAAI4B,EACZ,OAAA5B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACMlG,GAAN,MAAM6H,CAAkB,CACtB,OAAO,UAAU9B,EAAO,CACtB,IAAIC,EAAI,IAAI6B,EACZ,OAAA7B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAczI,GAAoBW,GAAa6H,EAAM,WAAW,GAEhEA,EAAM,cACRC,EAAE,YAAcnG,GAAY,UAAUkG,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EAOMjG,GAAN,MAAM6H,CAAW,CACf,OAAO,UAAU/B,EAAO,CACtB,IAAIC,EAAI,IAAI8B,EACZ,OAAA9B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE/CA,EAAM,gBACRC,EAAE,cAAgBD,EAAM,cAAc,IAAIvG,GAAa,SAAS,GAE9DuG,EAAM,0BACRC,EAAE,wBAA0BD,EAAM,wBAAwB,IAAIkB,GAAKzJ,GAAoBS,GAAegJ,CAAC,CAAC,GAEnGjB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,wBAA4B,MAC1CA,EAAS,wBAA6B,KAAK,yBAEtCA,CACT,CACF,EACMhG,GAAN,MAAM6H,CAAc,CAClB,OAAO,UAAUhC,EAAO,CACtB,IAAIC,EAAI,IAAI+B,EACZ,OAAA/B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EAOM/F,GAAN,MAAM6H,CAA+B,CACnC,OAAO,UAAUjC,EAAO,CACtB,IAAIC,EAAI,IAAIgC,EACZ,OAAAhC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASvI,GAAoBU,GAAsC4H,EAAM,MAAM,GAE/EA,EAAM,SACRC,EAAE,OAAS5F,GAAqC,UAAU2F,EAAM,MAAM,GAEjEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM9F,GAAN,MAAM6H,CAAqC,CACzC,OAAO,UAAUlC,EAAO,CACtB,IAAIC,EAAI,IAAIiC,EACZ,OAAAjC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIzG,GAAa,SAAS,GAEjD0G,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACM7F,GAAN,MAAM6H,CAAY,CAChB,OAAO,UAAUnC,EAAO,CACtB,IAAIC,EAAI,IAAIkC,EACZ,OAAAlC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOvI,GAAoBY,GAAiB0H,EAAM,IAAI,GAEnDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACM5F,GAAN,MAAM6H,CAAa,CACjB,OAAO,UAAUpC,EAAO,CACtB,IAAIC,EAAI,IAAImC,EACZ,OAAAnC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAoCM3F,GAAN,MAAM6H,CAAoB,CACxB,OAAO,UAAUrC,EAAO,CACtB,IAAIC,EAAI,IAAIoC,EACZ,OAAApC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM1F,GAAN,MAAM6H,CAAsB,CAC1B,OAAO,UAAUtC,EAAO,CACtB,IAAIC,EAAI,IAAIqC,EACZ,OAAArC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EAOMzF,GAAN,MAAM6H,CAA6B,CACjC,OAAO,UAAUvC,EAAO,CACtB,IAAIC,EAAI,IAAIsC,EACZ,OAAAtC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE/CA,EAAM,OACRC,EAAE,KAAOtI,GAAkBO,GAAe8H,EAAM,IAAI,GAE/CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMxF,GAAN,MAAM6H,CAA8B,CAClC,OAAO,UAAUxC,EAAO,CACtB,IAAIC,EAAI,IAAIuC,EACZ,OAAAvC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYzG,GAAU,UAAUwG,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMvF,GAAN,MAAM6H,CAA8C,CAClD,OAAO,UAAUzC,EAAO,CACtB,IAAIC,EAAI,IAAIwC,EACZ,OAAAxC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB9F,GAAc,UAAU6F,EAAM,aAAa,GAExDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACMtF,GAAN,MAAM6H,CAAkB,CACtB,OAAO,UAAU1C,EAAO,CACtB,IAAIC,EAAI,IAAIyC,EACZ,OAAAzC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO5G,GAAK,UAAU2G,EAAM,IAAI,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACMrF,GAAN,MAAM6H,CAAmB,CACvB,OAAO,UAAU3C,EAAO,CACtB,IAAIC,EAAI,IAAI0C,EACZ,OAAA1C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACMpF,GAAN,MAAM6H,CAA0B,CAC9B,OAAO,UAAU5C,EAAO,CACtB,IAAIC,EAAI,IAAI2C,EACZ,OAAA3C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMnF,GAAN,MAAM6H,CAA2B,CAC/B,OAAO,UAAU7C,EAAO,CACtB,IAAIC,EAAI,IAAI4C,EACZ,OAAA5C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACMlF,GAAN,MAAM6H,CAAiC,CACrC,OAAO,UAAU9C,EAAO,CACtB,IAAIC,EAAI,IAAI6C,EACZ,OAAA7C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE/CA,EAAM,UACRC,EAAE,QAAUzB,GAAwC,UAAUwB,EAAM,OAAO,GAEtEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EA2BMjF,GAAN,MAAM6H,CAAuB,CAC3B,OAAO,UAAU/C,EAAO,CACtB,IAAIC,EAAI,IAAI8C,EACZ,OAAA9C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMhF,GAAN,MAAM6H,CAAwB,CAC5B,OAAO,UAAUhD,EAAO,CACtB,IAAIC,EAAI,IAAI+C,EACZ,OAAA/C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACM/E,GAAN,MAAM6H,CAAsB,CAC1B,OAAO,UAAUjD,EAAO,CACtB,IAAIC,EAAI,IAAIgD,EACZ,OAAAhD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACM9E,GAAN,MAAM6H,CAAkB,CACtB,OAAO,UAAUlD,EAAO,CACtB,IAAIC,EAAI,IAAIiD,EACZ,OAAAjD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACM7E,GAAN,MAAM6H,CAA0B,CAC9B,OAAO,UAAUnD,EAAO,CACtB,IAAIC,EAAI,IAAIkD,EACZ,OAAAlD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EAqBM5E,GAAN,MAAM6H,CAA0B,CAC9B,OAAO,UAAUpD,EAAO,CACtB,IAAIC,EAAI,IAAImD,EACZ,OAAAnD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAwBM3E,GAAN,MAAM6H,CAA8B,CAClC,OAAO,UAAUrD,EAAO,CACtB,IAAIC,EAAI,IAAIoD,EACZ,OAAApD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE/CA,EAAM,gBACRC,EAAE,cAAgBtI,GAAkBO,GAAe8H,EAAM,aAAa,GAEjEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACM1E,GAAN,MAAM6H,CAA+B,CACnC,OAAO,UAAUtD,EAAO,CACtB,IAAIC,EAAI,IAAIqD,EACZ,OAAArD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMzE,GAAN,MAAM6H,CAAsD,CAC1D,OAAO,UAAUvD,EAAO,CACtB,IAAIC,EAAI,IAAIsD,EACZ,OAAAtD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOtI,GAAkBO,GAAe8H,EAAM,IAAI,GAE/CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMxE,GAAN,MAAM6H,CAA4B,CAChC,OAAO,UAAUxD,EAAO,CACtB,IAAIC,EAAI,IAAIuD,EACZ,OAAAvD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE/CA,EAAM,OACRC,EAAE,KAAOtI,GAAkBO,GAAe8H,EAAM,IAAI,GAE/CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMvE,GAAN,MAAM6H,CAA2B,CAC/B,OAAO,UAAUzD,EAAO,CACtB,IAAIC,EAAI,IAAIwD,EACZ,OAAAxD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMtE,GAAN,MAAM6H,CAAwB,CAC5B,OAAO,UAAU1D,EAAO,CACtB,IAAIC,EAAI,IAAIyD,EACZ,OAAAzD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE/CA,EAAM,OACRC,EAAE,KAAOtI,GAAkBM,GAAU+H,EAAM,IAAI,GAE7CA,EAAM,oBACRC,EAAE,kBAAoBD,EAAM,kBAAkB,IAAIkB,GAAKvJ,GAAkBK,GAAakJ,CAAC,CAAC,GAEnFjB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEhCA,CACT,CACF,EACMrE,GAAN,MAAM6H,CAA0B,CAC9B,OAAO,UAAU3D,EAAO,CACtB,IAAIC,EAAI,IAAI0D,EACZ,OAAA1D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB9F,GAAc,UAAU6F,EAAM,aAAa,GAE3DA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAI1F,GAAY,SAAS,GAEzD0F,EAAM,eACRC,EAAE,aAAe1F,GAAa,UAAUyF,EAAM,YAAY,GAExDA,EAAM,cACRC,EAAE,YAActI,GAAkBU,GAAa2H,EAAM,WAAW,GAE9DA,EAAM,UACRC,EAAE,QAAUvB,GAAiC,UAAUsB,EAAM,OAAO,GAE/DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMpE,GAAN,MAAM6H,CAA2B,CAC/B,OAAO,UAAU5D,EAAO,CACtB,IAAIC,EAAI,IAAI2D,EACZ,OAAA3D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIzG,GAAa,SAAS,GAEjD0G,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACMnE,GAAN,MAAM6H,CAAoB,CACxB,OAAO,UAAU7D,EAAO,CACtB,IAAIC,EAAI,IAAI4D,EACZ,OAAA5D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMlE,GAAN,MAAM6H,CAAqB,CACzB,OAAO,UAAU9D,EAAO,CACtB,IAAIC,EAAI,IAAI6D,EACZ,OAAA7D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYzG,GAAU,UAAUwG,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMjE,GAAN,MAAM6H,CAAyC,CAC7C,OAAO,UAAU/D,EAAO,CACtB,IAAIC,EAAI,IAAI8D,EACZ,OAAA9D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACMhE,GAAN,MAAM6H,CAA0C,CAC9C,OAAO,UAAUhE,EAAO,CACtB,IAAIC,EAAI,IAAI+D,EACZ,OAAA/D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,MACRC,EAAE,IAAM7F,GAA+B,UAAU4F,EAAM,GAAG,GAErDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEnEA,CACT,CACF,EACM/D,GAAN,MAAM6H,CAAqB,CACzB,OAAO,UAAUjE,EAAO,CACtB,IAAIC,EAAI,IAAIgE,EACZ,OAAAhE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,qBAAyB,MACvCA,EAAS,qBAA0B,KAAK,sBAEnCA,CACT,CACF,EACM9D,GAAN,MAAM6H,CAAsB,CAC1B,OAAO,UAAUlE,EAAO,CACtB,IAAIC,EAAI,IAAIiE,EACZ,OAAAjE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAa/F,GAAW,UAAU8F,EAAM,UAAU,GAE/CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAExFA,CACT,CACF,EACM7D,GAAN,MAAM6H,CAAsC,CAC1C,OAAO,UAAUnE,EAAO,CACtB,IAAIC,EAAI,IAAIkE,EACZ,OAAAlE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACM5D,GAAN,MAAM6H,CAAuC,CAC3C,OAAO,UAAUpE,EAAO,CACtB,IAAIC,EAAI,IAAImE,EACZ,OAAAnE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAe/G,GAAa,UAAU8G,EAAM,YAAY,GAExDA,EAAM,8BACRC,EAAE,4BAA8B7G,GAAoB,UAAU4G,EAAM,2BAA2B,GAE1FC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,4BAAgC,KAAe,KAAK,8BAAgC,OAClGA,EAAS,4BAAiC,cAAe,KAAK,4BAA8B,KAAK,4BAA4B,UAAU,EAAI,KAAK,6BAE3IA,CACT,CACF,EAkDM3D,GAAN,MAAM6H,CAAmB,CACvB,OAAO,UAAUrE,EAAO,CACtB,IAAIC,EAAI,IAAIoE,EACZ,OAAApE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACM1D,GAAN,MAAM6H,CAAoB,CACxB,OAAO,UAAUtE,EAAO,CACtB,IAAIC,EAAI,IAAIqE,EACZ,OAAArE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWnH,GAAS,UAAUkH,EAAM,QAAQ,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMzD,GAAN,MAAM6H,CAAe,CACnB,OAAO,UAAUvE,EAAO,CACtB,IAAIC,EAAI,IAAIsE,EACZ,OAAAtE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMxD,GAAN,MAAM6H,CAAgB,CACpB,OAAO,UAAUxE,EAAO,CACtB,IAAIC,EAAI,IAAIuE,EACZ,OAAAvE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO5G,GAAK,UAAU2G,EAAM,IAAI,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACMvD,GAAN,MAAM6H,CAA8C,CAClD,OAAO,UAAUzE,EAAO,CACtB,IAAIC,EAAI,IAAIwE,EACZ,OAAAxE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE/CA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIzG,GAAa,SAAS,GAEnD0G,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMtD,GAAN,MAAM6H,CAA+C,CACnD,OAAO,UAAU1E,EAAO,CACtB,IAAIC,EAAI,IAAIyE,EACZ,OAAAzE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAkDMrD,GAAN,MAAM6H,CAAwB,CAC5B,OAAO,UAAU3E,EAAO,CACtB,IAAIC,EAAI,IAAI0E,EACZ,OAAA1E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOD,EAAM,KAAK,IAAIhH,GAAY,SAAS,GAExCiH,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACMpD,GAAN,MAAM6H,CAAyB,CAC7B,OAAO,UAAU5E,EAAO,CACtB,IAAIC,EAAI,IAAI2E,EACZ,OAAA3E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIlH,GAAS,SAAS,GAE/CmH,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMnD,GAAN,MAAM6H,CAAoB,CACxB,OAAO,UAAU7E,EAAO,CACtB,IAAIC,EAAI,IAAI4E,EACZ,OAAA5E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOD,EAAM,KAAK,IAAI1G,GAAQ,SAAS,GAEpC2G,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACMlD,GAAN,MAAM6H,CAAqB,CACzB,OAAO,UAAU9E,EAAO,CACtB,IAAIC,EAAI,IAAI6E,EACZ,OAAA7E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAI3G,GAAK,SAAS,GAEnC4G,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EACMjD,GAAN,MAAM6H,CAAmD,CACvD,OAAO,UAAU/E,EAAO,CACtB,IAAIC,EAAI,IAAI8E,EACZ,OAAA9E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOD,EAAM,KAAK,IAAI7G,GAAgB,SAAS,GAE/C6G,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIzG,GAAa,SAAS,GAEnD0G,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMhD,GAAN,MAAM6H,CAAoD,CACxD,OAAO,UAAUhF,EAAO,CACtB,IAAIC,EAAI,IAAI+E,EACZ,OAAA/E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM/C,GAAN,MAAM6H,CAAuB,CAC3B,OAAO,UAAUjF,EAAO,CACtB,IAAIC,EAAI,IAAIgF,EACZ,OAAAhF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACM9C,GAAN,MAAM6H,CAAwB,CAC5B,OAAO,UAAUlF,EAAO,CACtB,IAAIC,EAAI,IAAIiF,EACZ,OAAAjF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAe/G,GAAa,UAAU8G,EAAM,YAAY,GAErDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAE9FA,CACT,CACF,EACM7C,GAAN,MAAM6H,CAA8B,CAClC,OAAO,UAAUnF,EAAO,CACtB,IAAIC,EAAI,IAAIkF,EACZ,OAAAlF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACM5C,GAAN,MAAM6H,CAA+B,CACnC,OAAO,UAAUpF,EAAO,CACtB,IAAIC,EAAI,IAAImF,EACZ,OAAAnF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,sBACRC,EAAE,oBAAsB7G,GAAoB,UAAU4G,EAAM,mBAAmB,GAE1EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,oBAAwB,KAAe,KAAK,sBAAwB,OAClFA,EAAS,oBAAyB,cAAe,KAAK,oBAAsB,KAAK,oBAAoB,UAAU,EAAI,KAAK,qBAEnHA,CACT,CACF,EA0FM3C,GAAN,MAAM6H,CAAoC,CACxC,OAAO,UAAUrF,EAAO,CACtB,IAAIC,EAAI,IAAIoF,EACZ,OAAApF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM1C,GAAN,MAAM6H,CAAqC,CACzC,OAAO,UAAUtF,EAAO,CACtB,IAAIC,EAAI,IAAIqF,EACZ,OAAArF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACMzC,GAAN,MAAM6H,CAA+C,CACnD,OAAO,UAAUvF,EAAO,CACtB,IAAIC,EAAI,IAAIsF,EACZ,OAAAtF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB9F,GAAc,UAAU6F,EAAM,aAAa,GAE3DA,EAAM,UACRC,EAAE,QAAUvE,GAAsD,UAAUsE,EAAM,OAAO,GAEpFC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMxC,GAAN,MAAM6H,CAAgD,CACpD,OAAO,UAAUxF,EAAO,CACtB,IAAIC,EAAI,IAAIuF,EACZ,OAAAvF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAaD,EAAM,WAAW,IAAIxG,GAAU,SAAS,GAElDyG,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAExFA,CACT,CACF,EACMvC,GAAN,MAAM6H,CAAqB,CACzB,OAAO,UAAUzF,EAAO,CACtB,IAAIC,EAAI,IAAIwF,EACZ,OAAAxF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUtE,GAA4B,UAAUqE,EAAM,OAAO,GAE7DA,EAAM,gBACRC,EAAE,cAAgBzF,GAAoB,UAAUwF,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMtC,GAAN,MAAM6H,CAAsB,CAC1B,OAAO,UAAU1F,EAAO,CACtB,IAAIC,EAAI,IAAIyF,EACZ,OAAAzF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAaD,EAAM,WAAW,IAAIxG,GAAU,SAAS,GAErDwG,EAAM,WACRC,EAAE,SAAWxF,GAAsB,UAAUuF,EAAM,QAAQ,GAEtDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMrC,GAAN,MAAM6H,CAAuB,CAC3B,OAAO,UAAU3F,EAAO,CACtB,IAAIC,EAAI,IAAI0F,EACZ,OAAA1F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUzE,GAA8B,UAAUwE,EAAM,OAAO,GAE/DA,EAAM,gBACRC,EAAE,cAAgBzF,GAAoB,UAAUwF,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,qBAAyB,MACvCA,EAAS,qBAA0B,KAAK,sBAEnCA,CACT,CACF,EACMpC,GAAN,MAAM6H,CAAwB,CAC5B,OAAO,UAAU5F,EAAO,CACtB,IAAIC,EAAI,IAAI2F,EACZ,OAAA3F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAI9F,GAAW,SAAS,GAExD8F,EAAM,WACRC,EAAE,SAAWxF,GAAsB,UAAUuF,EAAM,QAAQ,GAEtDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMnC,GAAN,MAAM6H,CAAoB,CACxB,OAAO,UAAU7F,EAAO,CACtB,IAAIC,EAAI,IAAI4F,EACZ,OAAA5F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUrE,GAA2B,UAAUoE,EAAM,OAAO,GAE5DA,EAAM,gBACRC,EAAE,cAAgBzF,GAAoB,UAAUwF,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMlC,GAAN,MAAM6H,CAAqB,CACzB,OAAO,UAAU9F,EAAO,CACtB,IAAIC,EAAI,IAAI6F,EACZ,OAAA7F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIlH,GAAS,SAAS,GAElDkH,EAAM,WACRC,EAAE,SAAWxF,GAAsB,UAAUuF,EAAM,QAAQ,GAEtDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMjC,GAAN,MAAM6H,CAAiB,CACrB,OAAO,UAAU/F,EAAO,CACtB,IAAIC,EAAI,IAAI8F,EACZ,OAAA9F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUpE,GAAwB,UAAUmE,EAAM,OAAO,GAEzDA,EAAM,gBACRC,EAAE,cAAgBzF,GAAoB,UAAUwF,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMhC,GAAN,MAAM6H,CAAkB,CACtB,OAAO,UAAUhG,EAAO,CACtB,IAAIC,EAAI,IAAI+F,EACZ,OAAA/F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAI3G,GAAK,SAAS,GAEtC2G,EAAM,WACRC,EAAE,SAAWxF,GAAsB,UAAUuF,EAAM,QAAQ,GAEtDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACM/B,GAAN,MAAM6H,CAAwB,CAC5B,OAAO,UAAUjG,EAAO,CACtB,IAAIC,EAAI,IAAIgG,EACZ,OAAAhG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUxE,GAA+B,UAAUuE,EAAM,OAAO,GAEhEA,EAAM,gBACRC,EAAE,cAAgBzF,GAAoB,UAAUwF,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACM9B,GAAN,MAAM6H,CAAyB,CAC7B,OAAO,UAAUlG,EAAO,CACtB,IAAIC,EAAI,IAAIiG,EACZ,OAAAjG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgBD,EAAM,cAAc,IAAI9G,GAAa,SAAS,GAE9D8G,EAAM,+BACRC,EAAE,6BAA+BD,EAAM,6BAA6B,IAAI5G,GAAoB,SAAS,GAEnG4G,EAAM,WACRC,EAAE,SAAWxF,GAAsB,UAAUuF,EAAM,QAAQ,GAEtDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,6BAAiC,KAAe,KAAK,+BAAiC,OACpGA,EAAS,6BAAkC,cAAe,KAAK,6BAA+B,KAAK,6BAA6B,UAAU,EAAI,KAAK,8BAEjJ,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACM7B,GAAN,MAAM6H,CAAgC,CACpC,OAAO,UAAUnG,EAAO,CACtB,IAAIC,EAAI,IAAIkG,EACZ,OAAAlG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE/CA,EAAM,gBACRC,EAAE,cAAgBzF,GAAoB,UAAUwF,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACM5B,GAAN,MAAM6H,CAAiC,CACrC,OAAO,UAAUpG,EAAO,CACtB,IAAIC,EAAI,IAAImG,EACZ,OAAAnG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,uBACRC,EAAE,qBAAuBD,EAAM,qBAAqB,IAAI5G,GAAoB,SAAS,GAEnF4G,EAAM,WACRC,EAAE,SAAWxF,GAAsB,UAAUuF,EAAM,QAAQ,GAEtDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,qBAAyB,KAAe,KAAK,uBAAyB,OACpFA,EAAS,qBAA0B,cAAe,KAAK,qBAAuB,KAAK,qBAAqB,UAAU,EAAI,KAAK,sBAEzH,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EAkHM3B,GAAN,MAAM6H,CAAwC,CAC5C,OAAO,UAAUrG,EAAO,CACtB,IAAIC,EAAI,IAAIoG,EACZ,OAAApG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACM1B,GAAN,MAAM6H,CAA8B,CAClC,OAAO,UAAUtG,EAAO,CACtB,IAAIC,EAAI,IAAIqG,EACZ,OAAArG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACMzB,GAAN,MAAM6H,CAAiC,CACrC,OAAO,UAAUvG,EAAO,CACtB,IAAIC,EAAI,IAAIsG,EACZ,OAAAtG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAErCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,qBAAyB,MACvCA,EAAS,qBAA0B,KAAK,sBAEtC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMxB,GAAN,MAAM6H,CAA+B,CACnC,OAAO,UAAUxG,EAAO,CACtB,IAAIC,EAAI,IAAIuG,EACZ,OAAAvG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,oBACRC,EAAE,kBAAoBD,EAAM,kBAAkB,IAAIpF,GAA8C,SAAS,GAEvGoF,EAAM,eACRC,EAAE,aAAexG,GAAa,UAAUuG,EAAM,YAAY,GAErDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAE9FA,CACT,CACF,EACMvB,GAAN,MAAM6H,CAAkB,CACtB,OAAO,UAAUzG,EAAO,CACtB,IAAIC,EAAI,IAAIwG,EACZ,OAAAxG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO5G,GAAK,UAAU2G,EAAM,IAAI,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACMtB,GAAN,MAAM6H,CAA0B,CAC9B,OAAO,UAAU1G,EAAO,CACtB,IAAIC,EAAI,IAAIyG,EACZ,OAAAzG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYtH,GAAU,UAAUqH,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EA2BMrB,GAAN,MAAM6H,CAAuB,CAC3B,OAAO,UAAU3G,EAAO,CACtB,IAAIC,EAAI,IAAI0G,EACZ,OAAA1G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYzG,GAAU,UAAUwG,EAAM,SAAS,GAE/CA,EAAM,UACRC,EAAE,QAAUxB,GAA8B,UAAUuB,EAAM,OAAO,GAE5DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMpB,GAAN,MAAM6H,CAAwB,CAC5B,OAAO,UAAU5G,EAAO,CACtB,IAAIC,EAAI,IAAI2G,EACZ,OAAA3G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYzG,GAAU,UAAUwG,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMnB,GAAN,MAAM6H,CAAwB,CAC5B,OAAO,UAAU7G,EAAO,CACtB,IAAIC,EAAI,IAAI4G,EACZ,OAAA5G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAa/F,GAAW,UAAU8F,EAAM,UAAU,GAE/CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAExFA,CACT,CACF,EACMlB,GAAN,MAAM6H,CAAsB,CAC1B,OAAO,UAAU9G,EAAO,CACtB,IAAIC,EAAI,IAAI6G,EACZ,OAAA7G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWnH,GAAS,UAAUkH,EAAM,QAAQ,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMjB,GAAN,MAAM6H,CAAkB,CACtB,OAAO,UAAU/G,EAAO,CACtB,IAAIC,EAAI,IAAI8G,EACZ,OAAA9G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO5G,GAAK,UAAU2G,EAAM,IAAI,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EAeIhB,IAAoC,IAAM,CAC5C,MAAMA,CAAoB,CACxB,aAAc,CACZ,KAAK,YAAc6H,EAAOlP,EAAW,EACrC,KAAK,KAAOkP,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,gBAAgBC,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrI,GAAuBqI,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2DAA4DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQvI,GAAwB,UAAUuI,CAAI,CAAC,CAAC,CAClM,CACA,aAAaH,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInL,GAAoBmL,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wDAAyDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQrL,GAAqB,UAAUqL,CAAI,CAAC,CAAC,CAC5L,CACA,sBAAsBH,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzM,GAA6ByM,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iEAAkEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ3M,GAA8B,UAAU2M,CAAI,CAAC,CAAC,CAC9M,CACA,gBAAgBH,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjM,GAAuBiM,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2DAA4DC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAC/G,KAAK,WAAW,GAD+F,CAElH,QAAS,UACX,EAAC,CACH,CACA,cAAcL,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvJ,GAAqBuJ,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yDAA0DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQzJ,GAAsB,UAAUyJ,CAAI,CAAC,CAAC,CAC9L,CACA,wCAAwCH,EAAG,CACzC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzJ,GAA+CyJ,CAAC,EACtF,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mFAAoFC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ3J,GAAgD,UAAU2J,CAAI,CAAC,CAAC,CAClP,CACA,mBAAmBH,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrL,GAA0BqL,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8DAA+DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQvL,GAA2B,UAAUuL,CAAI,CAAC,CAAC,CACxM,CACA,kCAAkCH,EAAG,CACnC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjL,GAAyCiL,CAAC,EAChF,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6EAA8EC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQnL,GAA0C,UAAUmL,CAAI,CAAC,CAAC,CACtO,CACA,wBAAwBH,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxI,GAA+BwI,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mEAAoEC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACvH,KAAK,WAAW,GADuG,CAE1H,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAArI,EAAoB,UAAO,SAAqCU,EAAmB,CACjF,OAAO,IAAKA,GAAqBV,EACnC,EACAA,EAAoB,WAA0BW,GAAmB,CAC/D,MAAOX,EACP,QAASA,EAAoB,UAC7B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,IAAqC,IAAM,CAC7C,MAAMA,CAAqB,CACzB,aAAc,CACZ,KAAK,YAAc4H,EAAOlP,EAAW,EACrC,KAAK,KAAOkP,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,iBAAiBC,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInI,GAAwBmI,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6DAA8DC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACjH,KAAK,WAAW,GADiG,CAEpH,QAAS,UACX,EAAC,CACH,CACA,cAAcL,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/K,GAAqB+K,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0DAA2DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQjL,GAAsB,UAAUiL,CAAI,CAAC,CAAC,CAC/L,CACA,iBAAiBH,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhM,GAAwBgM,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6DAA8DC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACjH,KAAK,WAAW,GADiG,CAEpH,QAAS,UACX,EAAC,CACH,CACA,gBAAgBL,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrJ,GAAuBqJ,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4DAA6DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQvJ,GAAwB,UAAUuJ,CAAI,CAAC,CAAC,CACnM,CACF,CACA,OAAAlI,EAAqB,UAAO,SAAsCS,EAAmB,CACnF,OAAO,IAAKA,GAAqBT,EACnC,EACAA,EAAqB,WAA0BU,GAAmB,CAChE,MAAOV,EACP,QAASA,EAAqB,UAC9B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,IAAmC,IAAM,CAC3C,MAAMA,CAAmB,CACvB,aAAc,CACZ,KAAK,YAAc2H,EAAOlP,EAAW,EACrC,KAAK,KAAOkP,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,OAAOC,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlI,GAAsBkI,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iDAAkDC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACrG,KAAK,WAAW,GADqF,CAExG,QAAS,UACX,EAAC,CACH,CACA,IAAIL,EAAG,CACL,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3K,GAAmB2K,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8CAA+CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ7K,GAAoB,UAAU6K,CAAI,CAAC,CAAC,CACjL,CACA,SAASH,EAAG,CACV,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrK,GAAwBqK,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mDAAoDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQvK,GAAyB,UAAUuK,CAAI,CAAC,CAAC,CAC3L,CACA,KAAKH,EAAG,CACN,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInJ,GAAoBmJ,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQrJ,GAAqB,UAAUqJ,CAAI,CAAC,CAAC,CACnL,CACA,OAAOH,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/L,GAAsB+L,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iDAAkDC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACrG,KAAK,WAAW,GADqF,CAExG,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAnI,EAAmB,UAAO,SAAoCQ,EAAmB,CAC/E,OAAO,IAAKA,GAAqBR,EACnC,EACAA,EAAmB,WAA0BS,GAAmB,CAC9D,MAAOT,EACP,QAASA,EAAmB,UAC5B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,IAA+B,IAAM,CACvC,MAAMA,CAAe,CACnB,aAAc,CACZ,KAAK,YAAc0H,EAAOlP,EAAW,EACrC,KAAK,KAAOkP,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,OAAOC,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjI,GAAkBiI,CAAC,EACzD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6CAA8CC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACjG,KAAK,WAAW,GADiF,CAEpG,QAAS,UACX,EAAC,CACH,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItM,GAAkBsM,CAAC,EACzD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6CAA8CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQxM,GAAmB,UAAUwM,CAAI,CAAC,CAAC,CAC/K,CACA,OAAOH,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvI,GAAkBuI,CAAC,EACzD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6CAA8CC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACjG,KAAK,WAAW,GADiF,CAEpG,QAAS,UACX,EAAC,CACH,CACA,IAAIL,EAAG,CACL,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzK,GAAeyK,CAAC,EACtD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ3K,GAAgB,UAAU2K,CAAI,CAAC,CAAC,CACzK,CACA,SAASH,EAAG,CACV,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInK,GAAoBmK,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQrK,GAAqB,UAAUqK,CAAI,CAAC,CAAC,CACnL,CACA,OAAOH,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9L,GAAkB8L,CAAC,EACzD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6CAA8CC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACjG,KAAK,WAAW,GADiF,CAEpG,QAAS,UACX,EAAC,CACH,CACA,KAAKL,EAAG,CACN,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjJ,GAAiBiJ,CAAC,EACxD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2CAA4CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQnJ,GAAkB,UAAUmJ,CAAI,CAAC,CAAC,CAC5K,CACA,6BAA6BH,EAAG,CAC9B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3J,GAAoC2J,CAAC,EAC3E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mEAAoEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ7J,GAAqC,UAAU6J,CAAI,CAAC,CAAC,CACvN,CACF,CACA,OAAAhI,EAAe,UAAO,SAAgCO,EAAmB,CACvE,OAAO,IAAKA,GAAqBP,EACnC,EACAA,EAAe,WAA0BQ,GAAmB,CAC1D,MAAOR,EACP,QAASA,EAAe,UACxB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,IAAuC,IAAM,CAC/C,MAAMA,CAAuB,CAC3B,aAAc,CACZ,KAAK,YAAcyH,EAAOlP,EAAW,EACrC,KAAK,KAAOkP,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,OAAOC,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpM,GAA0BoM,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qDAAsDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQtM,GAA2B,UAAUsM,CAAI,CAAC,CAAC,CAC/L,CACA,cAAcH,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlM,GAAiCkM,CAAC,EACxE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4DAA6DC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAChH,KAAK,WAAW,GADgG,CAEnH,QAAS,UACX,EAAC,CACH,CACA,IAAIL,EAAG,CACL,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/J,GAAuB+J,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kDAAmDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQjK,GAAwB,UAAUiK,CAAI,CAAC,CAAC,CACzL,CACA,WAAWH,EAAG,CACZ,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7J,GAA8B6J,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yDAA0DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ/J,GAA+B,UAAU+J,CAAI,CAAC,CAAC,CACvM,CACA,mBAAmBH,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7K,GAAsC6K,CAAC,EAC7E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iEAAkEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ/K,GAAuC,UAAU+K,CAAI,CAAC,CAAC,CACvN,CACA,2BAA2BH,EAAG,CAC5B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvK,GAA8CuK,CAAC,EACrF,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yEAA0EC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQzK,GAA+C,UAAUyK,CAAI,CAAC,CAAC,CACvO,CACA,gCAAgCH,EAAG,CACjC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjK,GAAmDiK,CAAC,EAC1F,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8EAA+EC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQnK,GAAoD,UAAUmK,CAAI,CAAC,CAAC,CACjP,CACA,OAAOH,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItI,GAA0BsI,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qDAAsDC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACzG,KAAK,WAAW,GADyF,CAE5G,QAAS,UACX,EAAC,CACH,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5L,GAA0B4L,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qDAAsDC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACzG,KAAK,WAAW,GADyF,CAE5G,QAAS,UACX,EAAC,CACH,CACA,KAAKL,EAAG,CACN,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/I,GAAwB+I,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mDAAoDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQjJ,GAAyB,UAAUiJ,CAAI,CAAC,CAAC,CAC3L,CACA,aAAaH,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7I,GAAgC6I,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2DAA4DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ/I,GAAiC,UAAU+I,CAAI,CAAC,CAAC,CAC3M,CACA,OAAOH,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7L,GAA0B6L,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qDAAsDC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACzG,KAAK,WAAW,GADyF,CAE5G,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAjI,EAAuB,UAAO,SAAwCM,EAAmB,CACvF,OAAO,IAAKA,GAAqBN,EACnC,EACAA,EAAuB,WAA0BO,GAAmB,CAClE,MAAOP,EACP,QAASA,EAAuB,UAChC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,ICzgIG,SAAUkI,GAAgCC,EAAmB,CACjE,OAAQA,EAAI,CACV,KAAKC,GAAcC,qBACjB,OAAOC,GACT,KAAKF,GAAcG,gCACjB,OAAOC,GACT,KAAKJ,GAAcK,kCACjB,OAAOC,GACT,QACE,MAAO,aACX,CACF,CAEM,SAAUC,GAA2BC,EAAU,CACnD,OAAQA,EAAE,CACR,KAAKN,GACH,OAAOF,GAAcC,qBACvB,KAAKG,GACH,OAAOJ,GAAcG,gCACvB,KAAKG,GACH,OAAON,GAAcK,kCACvB,QACE,OAAOL,GAAcS,0BACzB,CACF,CAqMM,SAAUC,GAAiBC,EAAwB,CACvD,IAAMC,EAA2B,CAAA,EACjC,QAAWC,KAAUC,GACfD,EAAOE,WAAaC,GAAYC,+BAClCL,EAAQM,KAAKL,CAAM,EAEjBA,EAAOE,WAAaC,GAAYG,uBAAyBR,GAC3DC,EAAQM,KAAKL,CAAM,EAGvB,OAAOD,CACT,CAEM,SAAUQ,GAAgBC,EAAc,CAC5C,OAAOP,GAAcQ,KAAMT,GAAWA,EAAOU,OAAOD,KAAME,GAAMA,EAAEC,QAAUJ,CAAK,CAAC,CACpF,CAEM,SAAUK,GAAgBb,EAAc,CAC5C,OAAOC,GAAcQ,KAAMK,GAAMA,EAAEC,OAASf,CAAM,GAAGU,QAAU,CAAA,CACjE,CAEM,SAAUM,GAAoBR,EAAa,CAC/C,QAAWR,KAAUC,GAAe,CAClC,IAAMgB,EAAajB,EAAOU,OAAOD,KAAME,GAAMA,EAAEC,QAAUJ,CAAK,EAC9D,GAAIS,EACF,OAAOA,EAAWC,eAEtB,CAEF,CAEM,SAAUC,GAAaC,EAAwBC,EAAiB,CACpE,GAAID,EACF,OAAO,IAAIE,GAAU,CACnBC,sBAAuB,CACrBH,eAAgBA,GAEnB,EACI,GAAIC,EACT,OAAO,IAAIC,GAAU,CACnBE,iBAAkB,CAChBH,UAAWA,GAEd,CAGL,CAtRA,IAwDMpB,GAxDNwB,GAAAC,EAAA,KAAAC,KACAC,KAuDM3B,GAAiC,CACrC,CACEc,KAAM,2CACNb,SAAUC,GAAYC,8BACtByB,gBAAiB,iFACjBnB,OAAQ,CACN,CACEK,KAAM,QACNH,MAAO,QACPkB,OAAQ,mDACRC,OAAQ,+CACRb,gBAAiB,8FAEnB,CACEH,KAAM,OACNH,MAAO,OACPkB,OAAQ,iDACRC,OAAQ,+CACRb,gBAAiB,6FAEnB,CACEH,KAAM,UACNH,MAAO,UACPkB,OAAQ,mDACRC,OAAQ,+CACRb,gBAAiB,+FAClB,GAGL,CACEH,KAAM,2CACNb,SAAUC,GAAYC,8BACtByB,gBAAiB,gFACjBnB,OAAQ,CACN,CACEK,KAAM,MACNH,MAAO,MACPkB,OAAQ,iDACRC,OAAQ,+CACRb,gBAAiB,4FAEnB,CACEH,KAAM,SACNH,MAAO,SACPkB,OAAQ,iDACRC,OAAQ,+CACRb,gBAAiB,+FAEnB,CACEH,KAAM,QACNH,MAAO,QACPkB,OAAQ,mDACRC,OAAQ,+CACRb,gBAAiB,8FAEnB,CACEH,KAAM,OACNH,MAAO,OACPkB,OAAQ,mDACRC,OAAQ,+CACRb,gBAAiB,6FAEnB,CACEH,KAAM,QACNH,MAAO,QACPkB,OAAQ,iDACRC,OAAQ,+CACRb,gBAAiB,6FAClB,GAGL,CACEH,KAAM,gBACNb,SAAUC,GAAYG,sBACtBuB,gBAAiB,sEACjBnB,OAAQ,CACN,CACEK,KAAM,UACNH,MAAO,kBACPkB,OAAQ,mDACRC,OAAQ,+CACRb,gBACE,6GAEJ,CACEH,KAAM,OACNH,MAAO,eACPkB,OAAQ,mDACRC,OAAQ,+CACRb,gBACE,0GAEJ,CACEH,KAAM,SACNH,MAAO,iBACPkB,OAAQ,mDACRC,OAAQ,+CACRb,gBACE,4GAEJ,CACEH,KAAM,SACNH,MAAO,iBACPkB,OAAQ,mDACRC,OAAQ,+CACRb,gBACE,4GAEJ,CACEH,KAAM,OACNH,MAAO,eACPkB,OAAQ,mDACRC,OAAQ,+CACRb,gBACE,0GAEJ,CACEH,KAAM,QACNH,MAAO,gBACPkB,OAAQ,iDACRC,OAAQ,+CACRb,gBACE,2GAEJ,CACEH,KAAM,QACNH,MAAO,gBACPkB,OAAQ,iDACRC,OAAQ,+CACRb,gBACE,2GAEJ,CACEH,KAAM,UACNH,MAAO,kBACPkB,OAAQ,iDACRC,OAAQ,+CACRb,gBACE,6GAEJ,CACEH,KAAM,QACNH,MAAO,gBACPkB,OAAQ,iDACRC,OAAQ,oDACRb,gBACE,2GAEJ,CACEH,KAAM,UACNH,MAAO,kBACPkB,OAAQ,iDACRC,OAAQ,+CACRb,gBACE,6GAEJ,CACEH,KAAM,SACNH,MAAO,iBACPkB,OAAQ,iDACRC,OAAQ,+CACRb,gBACE,4GAEJ,CACEH,KAAM,OACNH,MAAO,eACPkB,OAAQ,iDACRC,OAAQ,+CACRb,gBACE,yGACH,EAEJ,ICrOH,IAkDMc,GACAC,GAGOC,GAtDbC,GAAAC,EAAA,KAAAC,IACAC,KAOAC,KAQAC,KAOAC,KAkBAC,KACAC,KACAC,IAEAC,KACAC,KACAD,KACAE,SAEMf,GAAkC,yBAClCC,GAA2C,yBAGpCC,IAAkB,IAAA,CAAzB,MAAOA,CAAkB,CAD/Bc,aAAA,CAEmB,KAAAC,WAAaC,EAAOC,EAAgB,EACpC,KAAAC,gBAAkBF,EAAOG,EAAsB,EAC/C,KAAAC,eAAiBC,GAAS,KAAKH,gBAAiB,CAAEI,YAAa,EAAI,CAAE,EACrE,KAAAC,UAAYP,EAAOQ,EAAe,EAC1C,KAAAC,kBAAoBT,EAAOU,EAA0B,EAErD,KAAAC,oBAAsBX,EAAOY,EAA4B,EAEjD,KAAAC,uBAAyBb,EAAOc,EAAoB,EACpD,KAAAC,sBAAwBf,EAAOgB,EAAmB,EAClD,KAAAC,iBAAmBjB,EAAOkB,EAAgB,EAC1C,KAAAC,mBAAqBnB,EAAOoB,EAAkB,EAC9C,KAAAC,eAAiBrB,EAAOsB,EAAc,EACtC,KAAAC,uBAAyBvB,EAAOwB,EAAsB,EACtD,KAAAC,mBAAqBzB,EAAO0B,EAAkB,EAC9C,KAAAC,OAAS3B,EAAO4B,EAAM,EAEtB,KAAAC,cAAgBxB,GAC/ByB,EAAc,CAAC,KAAK/B,WAAY,KAAKQ,SAAS,CAAC,EAAEwB,KAC/CC,EAAU,CAAC,CAACC,EAAWC,CAAQ,IAC7B,KAAKf,mBAAmBgB,eAAeF,EAAWC,EAAU,CAC1DE,GACAC,GACAC,GACAC,GACAC,EAAmB,CACpB,CAAC,EAEJC,GAAY,CAAC,CAAC,EAEhB,CAAEC,aAAc,CAAA,CAAgC,CAAE,EAGpC,KAAAC,eAAiBtC,GAC/B,KAAKH,gBAAgB6B,KACnBC,EAAW5B,GACJA,EAGE,KAAKiB,eACTuB,6BAA6B,CAC5BxC,eAAgBA,EACjB,EACA2B,KACCc,EAAKC,GAAS,CAAC,CAACA,EAAKC,aAAa,EAClCC,GAAW,IAAMC,EAAG,EAAK,CAAC,CAAC,EARtBA,EAAG,EAAK,CAUlB,EACDR,GAAY,CAAC,CAAC,EAEhB,CAAEC,aAAc,EAAK,CAAE,EAGT,KAAAQ,sBAAwBC,EAAS,IAAM,KAAKtB,cAAa,EAAGO,EAAa,CAAC,EAC1E,KAAAgB,kBAAoBD,EAAS,IAAM,KAAKtB,cAAa,EAAGQ,EAAQ,CAAC,EACjE,KAAAgB,yBAA2BF,EAAS,IAAM,KAAKtB,cAAa,EAAGS,EAAe,CAAC,EAC/E,KAAAgB,2BAA6BH,EAAS,IAAM,KAAKtB,cAAa,EAAGU,EAAkB,CAAC,EACpF,KAAAgB,2BAA6BJ,EAAS,IAAM,KAAKtB,cAAa,EAAGW,EAAmB,CAAC,EAErGgB,8BAA8BC,EAAmB,CAC/C,OAAO3B,EAAc,CAAC,KAAK/B,WAAY,KAAKG,eAAe,CAAC,EAAE6B,KAC5DC,EAAU,CAAC,CAACC,EAAW7B,CAAc,IACnC,KAAKsD,4BAA4BzB,EAAW7B,EAAgBqD,CAAW,CAAC,EAE1EhB,GAAY,CAAEkB,SAAU,GAAMC,WAAY,CAAC,CAAE,CAAC,CAElD,CAEAC,aAAa5B,EAAmB7B,EAAwBqD,EAAmB,CACzE,IAAMK,EAAM,IAAIC,GAAoB,CAAEC,GAAIP,CAAW,CAAE,EACjDQ,EAAYC,GAAa9D,EAAgB6B,CAAS,EACxD,OAAIgC,IACFH,EAAIG,UAAYA,GAGX,KAAKlD,sBAAsB8C,aAAaC,CAAG,EAAE/B,KAClDc,EAAKC,GAASA,EAAKqB,SAAS,EAC5BnB,GAAYoB,GAAO,CACjBC,cAAQC,MAAM,yCAA0CF,CAAG,EACrDA,CACR,CAAC,CAAC,CAEN,CAEAG,eAAetC,EAAmB7B,EAAwBoE,EAAoB,CAC5E,IAAMP,EAAYC,GAAa9D,EAAgB6B,CAAS,EAClD6B,EAAM,IAAIW,GACVC,EAAU,IAAIC,GAGpB,GAFAD,EAAQF,KAAOA,GAAQI,GAAcC,2BAEjCZ,EACFS,EAAQT,UAAYA,MAEpB,OAAM,IAAIa,MAAM,sCAAsC,EAGxDhB,OAAAA,EAAIY,QAAUA,EAEP,KAAK3D,sBAAsBgE,cAAcjB,CAAG,EAAE/B,KACnDc,EAAKC,GAASA,EAAKkC,UAAU,EAC7BhC,GAAYiC,GAAK,CACfZ,cAAQC,MAAM,6BAA8BW,CAAC,EACvC,IAAIH,MAAM,4BAA4B,CAC9C,CAAC,CAAC,CAEN,CAEAI,oBAAoBjD,EAAmB7B,EAAwBqD,EAAmB,CAChF,IAAMQ,EAAYC,GAAa9D,EAAgB6B,CAAS,EAClDuC,EAAOW,GAA2B1B,CAAW,EAEnD,OAAO,KAAK1C,sBACTqE,sBAAsB,CACrBpB,GAAIP,EACJQ,UAAWA,EACXO,KAAMA,EACP,EACAzC,KACCc,EAAKC,IACI,CACLqB,UAAWrB,EAAKqB,WAEnB,EACDnB,GAAYoB,GAAO,CACjB,MAAM,IAAIU,MAAM,kCAAmC,CAAEO,MAAOjB,CAAG,CAAE,CACnE,CAAC,CAAC,CAER,CAEAkB,gBACErD,EACA7B,EACAmF,EAA6B,CAE7B,IAAMtB,EAAYC,GAAa9D,EAAgB6B,CAAS,EACxD,OAAO,KAAKtB,oBAAoBoB,KAC9BC,EAAWwD,GACT,KAAK3E,uBACFyE,gBAAgB,CACfZ,QAAS,CACPT,UAAWA,GAEbsB,qBAAsBA,EACvB,EACAxD,KACCc,EAAKC,IACiBA,GAAM2C,aAAe,CAAA,GACtB5C,IAAK6C,IAAgB,CACtCA,WAAYA,EACZC,UAAW,GACXC,IAAK,KAAKC,0BAA0BH,CAAU,GAC9C,CACH,EACD7C,EAAKiD,IACHN,GAAsBO,QAASC,GAAuB,CACjCF,EAAcG,KAAMC,GACjCF,EAAoBN,WAAWS,OAASC,GACnCF,EAAER,WAAWS,OAASH,EAAoBN,WAAWS,KAG5DD,EAAER,WAAWW,iBAAmBL,EAAoBN,WAAWW,gBAC/DH,EAAER,WAAWS,OAASH,EAAoBN,WAAWS,IAExD,GAGCL,EAAcQ,KAAKN,CAAmB,CAE1C,CAAC,EACMF,EACR,EACD9C,GAAW,IAAK,CACd,MAAM,IAAI8B,MAAM,qCAAqC,CACvD,CAAC,CAAC,CACH,CACJ,CAEL,CAEApB,4BACEzB,EACA7B,EACAqD,EAAmB,CAEnB,OAAO,KAAK6B,gBAAgBrD,EAAW7B,EAAgB,EAAI,EAAE2B,KAC3Dc,EAAKiD,GAAiB,CACpB,IAAMS,EAAgBpB,GAA2B1B,CAAW,EAG5D,OAAOqC,EACJU,OAAQC,GACAA,GAAcf,YAAYgB,yBAAyBC,SAASJ,CAAa,CACjF,EACAC,OAAOI,EAAoB,CAChC,CAAC,CAAC,CAEN,CAEAC,wCACE5E,EACA7B,EACA0G,EACAT,EACAE,EAA6B,CAE7B,GAAI,CAACO,EACH,MAAM,IAAIhC,MAAM,2BAA2B,EAE7C,OAAO,KAAK/D,sBACT8F,wCAAwC,CACvCE,cAAe,CACb/C,GAAI8C,EACJ7C,UAAWC,GAAa9D,EAAgB6B,CAAS,EACjDoE,eAAgBA,GAElB3B,QAAS,CACPF,KAAM+B,GAET,EACAxE,KACCc,EAAKC,GAASA,EAAKkC,UAAU,EAC7BhC,GAAW,IAAK,CACd,MAAM,IAAI8B,MAAM,mDAAmD,CACrE,CAAC,CAAC,CAER,CAEAkC,oCAAoCvD,EAAmB,CACrD,OAAO,KAAKvD,gBAAgB6B,KAC1Bc,EAAKzC,GACCA,EACK,qBAAqBA,CAAc,kBAAkBqD,CAAW,QAElE,kBAAkBA,CAAW,OACrC,CAAC,CAEN,CAEAwD,WAAWxD,EAAoB,CAC7B,OAAOA,EAAc,SAASA,CAAW,GAAK,EAChD,CAEAyD,+BAA+B9G,EAAwBqD,EAAmB,CACxE,OAAIrD,EACK,qBAAqBA,CAAc,kBAAkBqD,CAAW,QAElE,kBAAkBA,CAAW,OACtC,CAEA0D,gCAAgChD,EAA+BiD,EAAgC,CAC7F,GAAI,CAACjD,EAAW,OAAO,KAEvB,IAAMkD,EAAcD,GAAmBnB,KAAMqB,GAAqBA,EAAiBnD,UAAUH,KAAOG,EAAUH,EAAE,EAChH,GAAI,CAACqD,EACH,MAAO,CACLlD,UAAWA,GAGf,IAAMoD,EAAcC,gBAAgBH,CAAW,EAC/CE,EAAY5B,UAAY,GAExB,IAAM8B,EAAcF,EAAYpD,UAAUgC,MAAQ,GAC5CuB,EAAiB,KAAKzG,iBAAiB0G,QAAQF,CAAW,EAChE,OAAKtD,EAAUgC,KAEJuB,EAAeE,YAAW,IAAOzD,EAAUgC,KAAKyB,YAAW,IACpEL,EAAYM,YAAcJ,GAF1BtD,EAAUgC,KAAOuB,EAInBH,EAAYpD,UAAYA,EACjBoD,CACT,CAEU1B,0BAA0BH,EAAsB,CACxD,IAAMoC,EAAmBpC,EAAWoC,iBACpC,GAAI,CAACA,EACH,MAAO,CAAA,EAGT,IAAMlC,EAAgB,CACpBmC,MAAO,iCACPC,OAAQ,CACNC,IAAKH,EACLI,cAAe,GACfC,WAAY,KAIhB,OAAIzC,EAAWzB,WAAWmE,wBACxBxC,EAAIoC,OAAOE,cAAgB,IAGtBtC,CACT,CAEMyC,6BACJ5E,EACAQ,EACAqE,EAA8B,QAAAC,GAAA,sBAE9B,GAAI,CAAC9E,EACH,MAAM,IAAIqB,MAAM,4DAA4D,EAG9E,GAAI,CAACb,EACH,MAAM,IAAIa,MAAM,yDAAyD,EAG3E,GAAI,EACmB,MAAM0D,GACzB,KAAKjH,uBACFkH,IAAI,CACHzE,GAAI,KAAK0E,gBAAgB3J,GAA0C0E,CAAW,EAC9EQ,UAAWA,EACZ,EACAlC,KACCc,EAAKC,GAASA,EAAK6F,YAAY,EAC/B3F,GAAYoB,GAAO,CACjB,GAAIA,EAAIwE,SAAW,IACjB,OAAO3F,EAAG,IAAI,EAEhB,MAAMmB,CACR,CAAC,CAAC,CACH,GAmBH,MAAMoE,GACJ,KAAKjH,uBACFsH,cAAc,CACb7E,GAAI,KAAK0E,gBAAgB3J,GAA0C0E,CAAW,EAC9EQ,UAAWA,EACX6E,QAASR,EACTS,QAAS,CACPC,aAAc,IAEjB,EACAjH,KACCiB,GAAYoB,GAAO,CACjB,MAAM,IAAIU,MAAM,iEAAkE,CAAEO,MAAOjB,CAAG,CAAE,CAClG,CAAC,CAAC,CACH,EA9BL,MAAMoE,GACJ,KAAKjH,uBACF0H,OAAO,CACNjF,GAAI,KAAK0E,gBAAgB3J,GAA0C0E,CAAW,EAC9EQ,UAAWA,EACXkC,KAAM,0BACN+C,YAAa,iDACbJ,QAASR,EACV,EACAvG,KACCiB,GAAYoB,GAAO,CACjB,MAAM,IAAIU,MAAM,yDAA0D,CAAEO,MAAOjB,CAAG,CAAE,CAC1F,CAAC,CAAC,CACH,GAqBM,MAAMoE,GACjB,KAAKnH,eACFoH,IAAI,CAAEzE,GAAI,KAAK0E,gBAAgB5J,GAAiC2E,CAAW,EAAGQ,UAAWA,CAAS,CAAE,EACpGlC,KACCc,EAAKC,GAASA,EAAKqG,IAAI,EACvBnG,GAAYoB,GAAO,CACjB,GAAIA,EAAIwE,SAAW,IACjB,OAAO3F,EAAG,IAAI,EAEhB,MAAMmB,CACR,CAAC,CAAC,CACH,KAGH,MAAMoE,GACJ,KAAKnH,eACF+H,OAAO,CACND,KAAM,CACJnF,GAAI,KAAK0E,gBAAgB5J,GAAiC2E,CAAW,EACrEQ,UAAWA,EACXkC,KAAM,0BACN+C,YAAa,yCACb1E,KAAM6E,GAASC,iBACfC,cAAe,CACb,IAAIC,GAAgB,CAClBxF,GAAI,KAAK0E,gBAAgB3J,GAA0C0E,CAAW,EAC9EQ,UAAWA,EACZ,CAAC,GAGP,EACAlC,KACCiB,GAAYoB,GAAO,CACjB,MAAM,IAAIU,MAAM,gDAAiD,CAAEO,MAAOjB,CAAG,CAAE,CACjF,CAAC,CAAC,CACH,EAGT,OAASA,EAAK,CACZ,MAAM,IAAIU,MAAM,gDAAiD,CAAEO,MAAOjB,CAAG,CAAE,CACjF,CAEA,OAAO,IAAIqF,GAAQ,CACjBzF,GAAI,KAAK0E,gBAAgB5J,GAAiC2E,CAAW,EACrEQ,UAAWA,EACZ,CACH,GAEQyE,gBAAgBgB,EAAmBjG,EAAmB,CAC5D,MAAO,GAAGiG,CAAS,IAAIjG,CAAW,EACpC,CAEAkG,uBAAuB3F,EAAYC,EAA+B2F,EAAe,CAC/E,OAAO,KAAKrI,uBAAuBsI,WAAW,CAAE7F,GAAIA,EAAIC,UAAWA,EAAW2F,QAASA,CAAO,CAAE,EAAE7H,KAChGc,EAAKC,GAASA,EAAKgH,mBAAmB,EACtCjH,EAAKiH,GAAwBA,GAAqBhB,SAAW,EAAE,CAAC,CAEpE,iDAjaW9J,EAAkB,CAAA,kCAAlBA,EAAkB+K,QAAlB/K,EAAkBgL,SAAA,CAAA,CAAA,SAAlBhL,CAAkB,GAAA,ICtD/B,IAAaiL,GAcAC,GAmBAC,GAcAC,GAcAC,GASAC,GAgBAC,GAOAC,GAGAC,GAOAC,GAvGbC,GAAAC,EAAA,KAAaX,GAAyB;;;;;;;;;;;;EAczBC,GAA0B;;;;;;;;;;;;;;;;;EAmB1BC,GAAsB;;;;;;;;;;;;QActBC,GAAsB;;;;;;;;;;;;EActBC,GAAmB;;;;;;;EASnBC,GAAmB;;;;;;;;;;;;;;EAgBnBC,GAAc;;;;;QAOdC,GAAU;QAGVC,GAAY;;;;;QAOZC,GAAe;;;;;;;;;;;ICvG5B,IAMaG,GANbC,GAAAC,EAAA,KAAAC,KACAC,KACAC,IACAC,SAGaN,IAAiB,IAAA,CAAxB,MAAOA,CAAiB,CAD9BO,aAAA,CAEmB,KAAAC,gBAAkBC,EAAOC,EAAsB,EAC/C,KAAAC,WAAaF,EAAOG,EAAgB,EACpC,KAAAC,WAAaJ,EAAOK,EAAU,EAC9B,KAAAC,iBAAmBN,EAAOO,EAAgB,EAE3C,KAAAC,aAAeC,EAAc,CAAC,KAAKV,gBAAiB,KAAKG,UAAU,CAAC,EAAEQ,KACpFC,EAAU,CAAC,CAACC,EAAgBC,CAAS,IAAK,CACxC,IAAIC,EAAU,GACZC,EAAkBC,GAAgBC,yBAEpC,OAAIL,GACFE,EAAUF,EACVG,EAAkBC,GAAgBE,gCACzBL,IACTC,EAAUD,EACVE,EAAkBC,GAAgBG,0BAG7B,KAAKf,WAAWgB,eAAe,CACpCC,WAAYP,EACZQ,KAAMP,EACP,CACH,CAAC,EACDQ,EAAKC,GAAgBA,GAAaC,WAAW,EAC7CC,GAAY,CAAEC,SAAU,GAAMC,WAAY,CAAC,CAAE,CAAC,EAGhC,KAAAC,oBAAsBpB,EAAc,CAAC,KAAKV,gBAAiB,KAAKG,UAAU,CAAC,EAAEQ,KAC3FC,EAAU,CAAC,CAACC,EAAgBC,CAAS,IAC5B,KAAKP,iBAAiBwB,qBAAqB,CAChDhB,QAASF,GAAkBC,EAC3BkB,UAAWnB,EAAiBoB,GAAUC,yBAA2BD,GAAUE,mBAC5E,CACF,EACDX,EAAKY,GAAa,CAAC,CAACA,EAASC,mBAAmBC,SAASC,OAAO,EAChEZ,GAAY,CAAEC,SAAU,GAAMC,WAAY,CAAC,CAAE,CAAC,kDApCrCrC,EAAiB,CAAA,kCAAjBA,EAAiBgD,QAAjBhD,EAAiBiD,SAAA,CAAA,CAAA,SAAjBjD,CAAiB,GAAA,ICijC9B,SAASkD,GAAoBC,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA5jCA,IA0EIC,GAKAC,GA6DEC,GAiEAC,GAg3BAC,GAoBAC,GAsCAC,GAuDAC,GA+CAC,GA0JAC,GAiFAC,GAuDAC,GA4NAC,GAuBAC,GA0BAC,GAuBAC,GAyHAC,GAoBAC,GAuBAC,GA6BAC,GAqEAC,GAoBAC,GAuBAC,GAuBAC,GAuBAC,GA0BAC,GAoBAC,GAkEAC,GAuBAC,GA6BAC,GA6BAC,GA6BAC,GA6BAC,GA6BAC,GA0BAC,GA+CAC,GAuBAC,GAmCAC,GAuBAC,GA0BAC,GA+NAC,GA2EAC,GA2FAC,GAoFAC,GAuBAC,GA8EAC,GA0BAC,GAiDAC,GA2dAC,GACAC,GAOFC,GA4GAC,GAuUAC,GA4GAC,GAwJAC,GAiGAC,GAwEAC,IA1hJJC,GAAAC,EAAA,KAAAC,IAEAC,KACAA,KACAC,KAsEI7D,GAAiC,SAAUA,EAAmB,CAChE,OAAAA,EAAkBA,EAAkB,wBAA6B,CAAC,EAAI,0BACtEA,EAAkBA,EAAkB,wBAA6B,CAAC,EAAI,0BAC/DA,CACT,EAAEA,IAAqB,CAAC,CAAC,EACrBC,GAA4B,SAAUA,EAAc,CACtD,OAAAA,EAAaA,EAAa,mBAAwB,CAAC,EAAI,qBACvDA,EAAaA,EAAa,mBAAwB,CAAC,EAAI,qBAChDA,CACT,EAAEA,IAAgB,CAAC,CAAC,EAyDdC,GAAN,MAAM4D,CAAY,CAChB,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEjCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEhCA,CACT,CACF,EAOM/D,GAAN,MAAMgE,CAAU,CACd,OAAO,UAAUJ,EAAO,CACtB,IAAIC,EAAI,IAAIG,EACZ,OAAAH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EA80BM9D,GAAN,MAAMgE,CAAwC,CAC5C,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACM7D,GAAN,MAAMgE,CAA4B,CAChC,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUxB,GAAqC,UAAUuB,EAAM,OAAO,GAEtEA,EAAM,SACRC,EAAE,OAASpB,GAAkC,UAAUmB,EAAM,MAAM,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACM5D,GAAN,MAAMgE,CAAqB,CACzB,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EAiCM3D,GAAN,MAAMgE,CAAmB,CACvB,OAAO,UAAUR,EAAO,CACtB,IAAIC,EAAI,IAAIO,EACZ,OAAAP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,mBACRC,EAAE,iBAAmB/B,GAAmC,UAAU8B,EAAM,gBAAgB,GAEtFA,EAAM,mBACRC,EAAE,iBAAmBvD,GAAmC,UAAUsD,EAAM,gBAAgB,GAEtFA,EAAM,cACRC,EAAE,YAAcnB,GAA8B,UAAUkB,EAAM,WAAW,GAEvEA,EAAM,0BACRC,EAAE,wBAA0BtD,GAA0C,UAAUqD,EAAM,uBAAuB,GAE3GA,EAAM,wBACRC,EAAE,sBAAwB5D,GAAwC,UAAU2D,EAAM,qBAAqB,GAElGC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,wBAA4B,KAAe,KAAK,0BAA4B,OAC1FA,EAAS,wBAA6B,cAAe,KAAK,wBAA0B,KAAK,wBAAwB,UAAU,EAAI,KAAK,yBAElI,OAAO,KAAK,sBAA0B,KAAe,KAAK,wBAA0B,OACtFA,EAAS,sBAA2B,cAAe,KAAK,sBAAwB,KAAK,sBAAsB,UAAU,EAAI,KAAK,uBAEzHA,CACT,CACF,EACM1D,GAAN,MAAMgE,CAAe,CACnB,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIxD,GAAmB,SAAS,GAE1DwD,EAAM,oBACRC,EAAE,kBAAoBnE,GAAoBG,GAAmB+D,EAAM,iBAAiB,GAElFA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIzD,GAAqB,SAAS,GAEvD0D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EAkHMzD,GAAN,MAAMgE,CAAmC,CACvC,OAAO,UAAUV,EAAO,CACtB,IAAIC,EAAI,IAAIS,EACZ,OAAAT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EA8DMxD,GAAN,MAAMgE,CAA0C,CAC9C,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EAoCMvD,GAAN,MAAMgE,CAAsC,CAC1C,OAAO,UAAUZ,EAAO,CACtB,IAAIC,EAAI,IAAIW,EACZ,OAAAX,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAIvD,GAAe,SAAS,GAE7CwD,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EAgMMtD,GAAN,MAAMgE,CAAwC,CAC5C,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMrD,GAAN,MAAMgE,CAAyC,CAC7C,OAAO,UAAUd,EAAO,CACtB,IAAIC,EAAI,IAAIa,EACZ,OAAAb,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc9D,GAAY,UAAU6D,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMpD,GAAN,MAAMgE,CAA2B,CAC/B,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMnD,GAAN,MAAMgE,CAA4B,CAChC,OAAO,UAAUhB,EAAO,CACtB,IAAIC,EAAI,IAAIe,EACZ,OAAAf,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAIvD,GAAe,SAAS,GAE7CwD,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EA6FMlD,GAAN,MAAMgE,CAAkB,CACtB,OAAO,UAAUjB,EAAO,CACtB,IAAIC,EAAI,IAAIgB,EACZ,OAAAhB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMjD,GAAN,MAAMgE,CAAmB,CACvB,OAAO,UAAUlB,EAAO,CACtB,IAAIC,EAAI,IAAIiB,EACZ,OAAAjB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAI7D,GAAY,SAAS,GAEtD8D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMhD,GAAN,MAAMgE,CAAyB,CAC7B,OAAO,UAAUnB,EAAO,CACtB,IAAIC,EAAI,IAAIkB,EACZ,OAAAlB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACM/C,GAAN,MAAMgE,CAA0B,CAC9B,OAAO,UAAUpB,EAAO,CACtB,IAAIC,EAAI,IAAImB,EACZ,OAAAnB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAItB,GAAc,SAAS,GAEpDuB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EA+CM9C,GAAN,MAAMgE,CAAyB,CAC7B,OAAO,UAAUrB,EAAO,CACtB,IAAIC,EAAI,IAAIoB,EACZ,OAAApB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM7C,GAAN,MAAMgE,CAA0B,CAC9B,OAAO,UAAUtB,EAAO,CACtB,IAAIC,EAAI,IAAIqB,EACZ,OAAArB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAaD,EAAM,WAAW,IAAI5D,GAAU,SAAS,GAElD6D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAExFA,CACT,CACF,EACM5C,GAAN,MAAMgE,CAA2B,CAC/B,OAAO,UAAUvB,EAAO,CACtB,IAAIC,EAAI,IAAIsB,EACZ,OAAAtB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM3C,GAAN,MAAMgE,CAA4B,CAChC,OAAO,UAAUxB,EAAO,CACtB,IAAIC,EAAI,IAAIuB,EACZ,OAAAvB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAeD,EAAM,aAAa,IAAI7D,GAAY,SAAS,GAExD8D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAE9FA,CACT,CACF,EACM1C,GAAN,MAAMgE,CAAsB,CAC1B,OAAO,UAAUzB,EAAO,CACtB,IAAIC,EAAI,IAAIwB,EACZ,OAAAxB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMzC,GAAN,MAAMgE,CAA8B,CAClC,OAAO,UAAU1B,EAAO,CACtB,IAAIC,EAAI,IAAIyB,EACZ,OAAAzB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMxC,GAAN,MAAMgE,CAA+B,CACnC,OAAO,UAAU3B,EAAO,CACtB,IAAIC,EAAI,IAAI0B,EACZ,OAAA1B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAIjB,GAAkD,SAAS,GAE5FkB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EA4CMvC,GAAN,MAAMgE,CAA2C,CAC/C,OAAO,UAAU5B,EAAO,CACtB,IAAIC,EAAI,IAAI2B,EACZ,OAAA3B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMtC,GAAN,MAAMgE,CAAsB,CAC1B,OAAO,UAAU7B,EAAO,CACtB,IAAIC,EAAI,IAAI4B,EACZ,OAAA5B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUrC,GAA2C,UAAUoC,EAAM,OAAO,GAE5EA,EAAM,gBACRC,EAAE,cAAgB1B,GAAoB,UAAUyB,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMrC,GAAN,MAAMgE,CAAuB,CAC3B,OAAO,UAAU9B,EAAO,CACtB,IAAIC,EAAI,IAAI6B,EACZ,OAAA7B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAaD,EAAM,WAAW,IAAI5D,GAAU,SAAS,GAErD4D,EAAM,iBACRC,EAAE,eAAiBzB,GAAsB,UAAUwB,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMpC,GAAN,MAAMgE,CAA+C,CACnD,OAAO,UAAU/B,EAAO,CACtB,IAAIC,EAAI,IAAI8B,EACZ,OAAA9B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMnC,GAAN,MAAMgE,CAAwB,CAC5B,OAAO,UAAUhC,EAAO,CACtB,IAAIC,EAAI,IAAI+B,EACZ,OAAA/B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUlC,GAA+C,UAAUiC,EAAM,OAAO,GAEhFA,EAAM,gBACRC,EAAE,cAAgB1B,GAAoB,UAAUyB,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMlC,GAAN,MAAMgE,CAAyB,CAC7B,OAAO,UAAUjC,EAAO,CACtB,IAAIC,EAAI,IAAIgC,EACZ,OAAAhC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAeD,EAAM,aAAa,IAAI7D,GAAY,SAAS,GAE3D6D,EAAM,iBACRC,EAAE,eAAiBzB,GAAsB,UAAUwB,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMjC,GAAN,MAAMgE,CAAmC,CACvC,OAAO,UAAUlC,EAAO,CACtB,IAAIC,EAAI,IAAIiC,EACZ,OAAAjC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMhC,GAAN,MAAMgE,CAAuB,CAC3B,OAAO,UAAUnC,EAAO,CACtB,IAAIC,EAAI,IAAIkC,EACZ,OAAAlC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM/B,GAAN,MAAMgE,CAAwB,CAC5B,OAAO,UAAUpC,EAAO,CACtB,IAAIC,EAAI,IAAImC,EACZ,OAAAnC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAItB,GAAc,SAAS,GAEpDuB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACM9B,GAAN,MAAMgE,CAA0B,CAC9B,OAAO,UAAUrC,EAAO,CACtB,IAAIC,EAAI,IAAIoC,EACZ,OAAApC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB1B,GAAoB,UAAUyB,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAE/BA,CACT,CACF,EACM7B,GAAN,MAAMgE,CAA2B,CAC/B,OAAO,UAAUtC,EAAO,CACtB,IAAIC,EAAI,IAAIqC,EACZ,OAAArC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAeD,EAAM,aAAa,IAAI7D,GAAY,SAAS,GAExD8D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAE9FA,CACT,CACF,EACM5B,GAAN,MAAMgE,CAAoB,CACxB,OAAO,UAAUvC,EAAO,CACtB,IAAIC,EAAI,IAAIsC,EACZ,OAAAtC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM3B,GAAN,MAAMgE,CAAsB,CAC1B,OAAO,UAAUxC,EAAO,CACtB,IAAIC,EAAI,IAAIuC,EACZ,OAAAvC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAyMM1B,GAAN,MAAMgE,CAAqC,CACzC,OAAO,UAAUzC,EAAO,CACtB,IAAIC,EAAI,IAAIwC,EACZ,OAAAxC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EAqDMzB,GAAN,MAAMgE,CAAc,CAClB,OAAO,UAAU1C,EAAO,CACtB,IAAIC,EAAI,IAAIyC,EACZ,OAAAzC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,mBACRC,EAAE,iBAAmBD,EAAM,iBAAiB,IAAIrB,GAAa,SAAS,GAEjEsB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE1GA,CACT,CACF,EA4DMxB,GAAN,MAAMgE,CAAa,CACjB,OAAO,UAAU3C,EAAO,CACtB,IAAIC,EAAI,IAAI0C,EACZ,OAAA1C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,wBACRC,EAAE,sBAAwB,SAASD,EAAM,sBAAuB,EAAE,GAE7DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,sBAA0B,MACxCA,EAAS,sBAA2B,KAAK,uBAEvC,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EAqDMvB,GAAN,MAAMgE,CAA8B,CAClC,OAAO,UAAU5C,EAAO,CACtB,IAAIC,EAAI,IAAI2C,EACZ,OAAA3C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACMtB,GAAN,MAAMgE,CAAkC,CACtC,OAAO,UAAU7C,EAAO,CACtB,IAAIC,EAAI,IAAI4C,EACZ,OAAA5C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EAqDMrB,GAAN,MAAMgE,CAA8B,CAClC,OAAO,UAAU9C,EAAO,CACtB,IAAIC,EAAI,IAAI6C,EACZ,OAAA7C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYnE,GAAoBI,GAAc8D,EAAM,SAAS,GAE1DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMpB,GAAN,MAAMgE,CAAkD,CACtD,OAAO,UAAU/C,EAAO,CACtB,IAAIC,EAAI,IAAI8C,EACZ,OAAA9C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAaD,EAAM,WAAW,IAAI5D,GAAU,SAAS,GAElD6D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAExFA,CACT,CACF,EAwBMnB,GAAN,MAAMgE,CAAsB,CAC1B,OAAO,UAAUhD,EAAO,CACtB,IAAIC,EAAI,IAAI+C,EACZ,OAAA/C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EAqcMlB,IAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,GAAU,CACd,MAAS,+BACT,KAAQ,GACR,KAAQ,+BACR,KAAQ,+BACR,WAAc,8BAChB,EACIC,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,GAAQD,GAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6B8D,EAAmB,CACjE,OAAO,IAAKA,GAAqB9D,EACnC,EACAA,EAAY,WAA0B+D,GAAmB,CACvD,MAAO/D,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EA0FCC,IAAmC,IAAM,CAC3C,MAAMA,CAAmB,CACvB,YAAY+D,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,kBAAkBC,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInG,GAAyBmG,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8CAA+CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQrG,GAA0B,UAAUqG,CAAI,CAAC,CAAC,CACvL,CACA,gBAAgBH,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInF,GAAuBmF,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQrF,GAAwB,UAAUqF,CAAI,CAAC,CAAC,CACnL,CACA,qBAAqBH,EAAG,CACtB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhH,GAA4BgH,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iDAAkDC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACrG,KAAK,WAAW,GADqF,CAExG,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAvE,EAAmB,UAAO,SAAoC6D,EAAmB,CAC/E,OAAO,IAAKA,GAAqB7D,GAAuBwE,EAAYC,EAAU,EAAMD,EAASzE,EAAW,CAAC,CAC3G,EACAC,EAAmB,WAA0B8D,GAAmB,CAC9D,MAAO9D,EACP,QAASA,EAAmB,UAC5B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EA+RCC,IAAgC,IAAM,CACxC,MAAMA,CAAgB,CACpB,YAAY8D,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,oBAAoBC,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvG,GAA2BuG,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sCAAuCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQzG,GAA4B,UAAUyG,CAAI,CAAC,CAAC,CACjL,CACA,+BAA+BH,EAAG,CAChC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1G,GAAsC0G,CAAC,EAC7E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iDAAkDC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACrG,KAAK,WAAW,GADqF,CAExG,QAAS,UACX,EAAC,CACH,CACA,eAAeL,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7F,GAAsB6F,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iCAAkCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQtH,GAAY,UAAUsH,CAAI,CAAC,CAAC,CAC5J,CACA,oBAAoBH,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/F,GAA2B+F,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sCAAuCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQjG,GAA4B,UAAUiG,CAAI,CAAC,CAAC,CACjL,CACA,iBAAiBH,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItF,GAAwBsF,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mCAAoCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQxF,GAAyB,UAAUwF,CAAI,CAAC,CAAC,CAC3K,CACA,iCAAiCH,EAAG,CAClC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzG,GAAwCyG,CAAC,EAC/E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mDAAoDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ3G,GAAyC,UAAU2G,CAAI,CAAC,CAAC,CAC3M,CACA,mBAAmBH,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjF,GAA0BiF,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qCAAsCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQnF,GAA2B,UAAUmF,CAAI,CAAC,CAAC,CAC/K,CACA,uBAAuBH,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1E,GAA8B0E,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yCAA0CC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAC7F,KAAK,WAAW,GAD6E,CAEhG,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAtE,EAAgB,UAAO,SAAiC4D,EAAmB,CACzE,OAAO,IAAKA,GAAqB5D,GAAoBuE,EAAYC,EAAU,EAAMD,EAASzE,EAAW,CAAC,CACxG,EACAE,EAAgB,WAA0B6D,GAAmB,CAC3D,MAAO7D,EACP,QAASA,EAAgB,UACzB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EA6CCC,IAAoC,IAAM,CAC5C,MAAMA,CAAoB,CACxB,YAAY6D,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,KAAKC,EAAG,CACN,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzF,GAAsByF,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ3F,GAAuB,UAAU2F,CAAI,CAAC,CAAC,CACxK,CACA,SAASH,EAAG,CACV,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjG,GAAyBiG,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sCAAuCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQnG,GAA0B,UAAUmG,CAAI,CAAC,CAAC,CAC/K,CACA,WAAWH,EAAG,CACZ,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrG,GAAkBqG,CAAC,EACzD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wCAAyCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQvG,GAAmB,UAAUuG,CAAI,CAAC,CAAC,CAC1K,CACA,uBAAuBH,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5F,GAA8B4F,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ9F,GAA+B,UAAU8F,CAAI,CAAC,CAAC,CAClM,CACA,eAAeH,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItE,GAAsBsE,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAChG,KAAK,WAAW,GADgF,CAEnG,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAArE,EAAoB,UAAO,SAAqC2D,EAAmB,CACjF,OAAO,IAAKA,GAAqB3D,GAAwBsE,EAAYC,EAAU,EAAMD,EAASzE,EAAW,CAAC,CAC5G,EACAG,EAAoB,WAA0B4D,GAAmB,CAC/D,MAAO5D,EACP,QAASA,EAAoB,UAC7B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAwGCC,IAAmC,IAAM,CAC3C,MAAMA,CAAmB,CACvB,YAAYuE,EAAM,CAChB,KAAK,KAAOA,CACd,CAEA,eAAeC,EAAWC,EAAeC,EAAQ,CAC/C,OAAOD,EAAgB,KAAK,0BAA0BD,EAAWC,CAAa,EAAI,KAAK,uBAAuBD,EAAWE,GAAU,EAAE,CACvI,CACA,gBAAgBF,EAAWG,EAASC,EAAS,CAC3C,IAAMC,EAAS,CACb,UAAWL,EACX,UAAWG,EACX,iBAAkBC,GAAS,kBAAoB,EACjD,EACA,OAAMA,GAAS,aACbC,EAAO,WAAaD,EAAQ,YAExBA,GAAS,UAAcA,GAAS,SACpCC,EAAO,cAAgB,CACrB,SAAUD,EAAQ,SAClB,OAAQA,EAAQ,MAClB,GAEIA,GAAS,UAAY,CAACA,GAAS,SACnCC,EAAO,cAAgB,CACrB,SAAUD,EAAQ,QACpB,GAEK,KAAK,KAAK,mBAAmBC,CAAM,EAAE,KAAKZ,EAAIF,GAAKA,EAAE,YAAY,CAAC,CAC3E,CACA,0BAA0BS,EAAWC,EAAe,CAClD,OAAO,KAAK,KAAK,eAAe,CAC9B,UAAWD,EACX,cAAeC,CACjB,CAAC,CACH,CACA,uBAAuBD,EAAWE,EAAQ,CACxC,OAAO,KAAK,KAAK,eAAe,CAC9B,UAAWF,EACX,OAAQE,CACV,CAAC,CACH,CACA,iBAAiBI,EAASC,EAAQC,EAAU,CAC1C,OAAO,KAAK,KAAK,iBAAiB,CAChC,QAASF,EACT,cAAe,CACb,OAAQC,EACR,SAAUC,CACZ,CACF,CAAC,EAAE,KAAKf,EAAIC,IACH,CACL,QAASA,EAAK,aACd,WAAYA,EAAK,eAAe,WAChC,QAASA,EAAK,eAAe,OAC/B,EACD,CAAC,CACJ,CACA,iCAAiCM,EAAWS,EAAU,CACpD,OAAO,KAAK,KAAK,iCAAiC,CAChD,UAAWT,EACX,SAAUS,CACZ,CAAC,CACH,CACA,uBAAuBT,EAAWC,EAAe,CAC/C,OAAO,KAAK,KAAK,uBAAuB,CACtC,UAAWD,EACX,cAAeC,CACjB,CAAC,CACH,CACA,oBAAoBD,EAAWU,EAAgB,CAC7C,OAAO,KAAK,KAAK,oBAAoB,CACnC,UAAWV,EACX,eAAgBU,CAClB,CAAC,EAAE,KAAKjB,EAAIC,GAAQA,EAAK,YAAY,CAAC,CACxC,CACF,CACA,OAAAlE,EAAmB,UAAO,SAAoC0D,EAAmB,CAC/E,OAAO,IAAKA,GAAqB1D,GAAuBqE,EAASvE,EAAe,CAAC,CACnF,EACAE,EAAmB,WAA0B2D,GAAmB,CAC9D,MAAO3D,EACP,QAASA,EAAmB,UAC5B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,IAAiC,IAAM,CACzC,MAAMA,CAAiB,CACrB,YAAYsE,EAAM,CAChB,KAAK,KAAOA,CACd,CACA,KAAKC,EAAWS,EAAUF,EAAQC,EAAU,CAC1C,OAAO,KAAK,KAAK,KAAK,CACpB,QAAS,CACP,UAAWR,EACX,SAAUS,CACZ,EACA,cAAe,CACb,OAAQF,EACR,SAAUC,CACZ,CACF,CAAC,EAAE,KAAKf,EAAIC,IAAS,CACnB,QAASA,EAAK,WACd,WAAYA,EAAK,eAAe,WAChC,QAASA,EAAK,eAAe,OAC/B,EAAE,CAAC,CACL,CACA,WAAWiB,EAAS,CAClB,OAAO,KAAK,KAAK,WAAW,CAC1B,QAASA,CACX,CAAC,EAAE,KAAKlB,EAAIC,GAAQA,EAAK,aAAe,CAAC,CAAC,CAAC,CAC7C,CACA,eAAeiB,EAASC,EAAa,CACnC,OAAO,KAAK,KAAK,eAAe,CAC9B,QAASD,EACT,YAAaC,CACf,CAAC,EAAE,KAAKC,GAAM,IAAI,CAAC,CACrB,CACA,2BAA2BZ,EAAe,CACxC,OAAO,KAAK,KAAK,uBAAuB,CACtC,eAAgB,CAACA,CAAa,CAChC,CAAC,EAAE,KAAKR,EAAIC,GACN,CAACA,GAAQ,CAACA,EAAK,YACV,CAAC,EAEHA,EAAK,YAAY,OAAO,CAACoB,EAAYC,IACnC,CAAC,GAAGD,EAAY,IAAKC,GAAW,CACrC,WAAY,CAAC,CACf,GAAG,YAAc,CAAC,CAAE,EACnB,CAAC,CAAC,CACN,CAAC,CACJ,CACA,SAASC,EAAU,CACjB,OAAO,KAAK,KAAK,SAAS,CACxB,SAAUA,CACZ,CAAC,EAAE,KAAKvB,EAAIC,GAAQA,EAAK,YAAc,CAAC,CAAC,CAAC,CAC5C,CACF,CACA,OAAAjE,EAAiB,UAAO,SAAkCyD,EAAmB,CAC3E,OAAO,IAAKA,GAAqBzD,GAAqBoE,EAAStE,EAAmB,CAAC,CACrF,EACAE,EAAiB,WAA0B0D,GAAmB,CAC5D,MAAO1D,EACP,QAASA,EAAiB,UAC1B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,KAAmC,IAAM,CAC3C,MAAMA,CAAmB,CACvB,YAAYuF,EAAoB,CAC9B,KAAK,mBAAqBA,CAC5B,CACA,kBAAkBjB,EAAWS,EAAUS,EAAgBC,EAAa,CAClE,OAAO,KAAK,mBAAmB,kBAAkB,CAC/C,UAAWnB,EACX,SAAUS,EACV,eAAgBS,EAChB,YAAaC,CACf,CAAC,EAAE,KAAK1B,EAAIC,GAAQA,EAAK,SAAS,CAAC,CACrC,CACA,gBAAgBM,EAAWS,EAAUW,EAAYhB,EAAS,CACxD,IAAMZ,EAAU,CACd,UAAWQ,EACX,SAAUS,CACZ,EACA,OAAMW,IACJ5B,EAAQ,WAAa4B,GAEvB5B,EAAQ,OAASY,GAAS,QAAUZ,EAAQ,OAC5CA,EAAQ,SAAWY,GAAS,UAAYZ,EAAQ,SAChDA,EAAQ,MAAQY,GAAS,SAAS,OAASZ,EAAQ,MACnDA,EAAQ,MAAQY,GAAS,SAAS,OAASZ,EAAQ,MACnDA,EAAQ,OAASY,GAAS,SAAS,QAAUZ,EAAQ,OAC9C,KAAK,mBAAmB,gBAAgBA,CAAO,EAAE,KAAKC,EAAIC,GAAQA,EAAK,SAAS,CAAC,CAC1F,CACF,CACA,OAAAhE,EAAmB,UAAO,SAAoCwD,EAAmB,CAC/E,OAAO,IAAKA,GAAqBxD,GAAuBmE,EAASxE,EAAkB,CAAC,CACtF,EACAK,EAAmB,WAA0ByD,GAAmB,CAC9D,MAAOzD,EACP,QAASA,EAAmB,UAC5B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,IChkJH,IA0Ba2F,GA1BbC,GAAAC,EAAA,KAAAC,IACAC,KAaAC,KAOAC,KAEAC,SAGaP,IAAoB,IAAA,CAA3B,MAAOA,CAAoB,CADjCQ,aAAA,CAEmB,KAAAC,eAAiBC,EAAOC,EAAqB,EAC7C,KAAAC,WAAaF,EAAOG,EAAgB,EACpC,KAAAC,gBAAkBJ,EAAOK,EAAsB,EAE/C,KAAAC,eAAiBN,EAAOO,EAAW,EACnC,KAAAC,mBAAqBR,EAAOS,EAAkB,EAC9C,KAAAC,iBAAmBV,EAAOW,EAAgB,EAE1C,KAAAC,4BAA8BC,EAAc,CAAC,KAAKX,WAAY,KAAKE,eAAe,CAAC,EAAEU,KACpGC,GAAqB,CAACC,EAAGC,IAAMD,EAAE,CAAC,IAAMC,EAAE,CAAC,GAAKD,EAAE,CAAC,IAAMC,EAAE,CAAC,CAAC,CAAC,EAG/C,KAAAC,eAAiBL,EAAc,CAAC,KAAKX,WAAY,KAAKH,cAAc,CAAC,EAAEe,KACtFK,EAAU,CAAC,CAACC,EAAWC,CAAM,IAAM,KAAKb,mBAAmBc,uBAAuBF,EAAWC,CAAM,CAAC,EACpGE,GAAW,IAAMC,EAAGC,MAAS,CAAC,EAC9BC,EAAKC,GAAgBA,GAAaC,eAAiB,EAAE,EACrDC,GAAY,CAAC,CAAC,EAGC,KAAAC,cAAgB,KAAKZ,eAAeJ,KACnDK,EAAWY,GAAQA,EAAK,KAAKrB,iBAAiBsB,2BAA2BD,CAAE,EAAIP,EAAG,CAAA,CAAE,CAAE,EACtFD,GAAW,IAAMC,EAAG,CAAA,CAAE,CAAC,EACvBE,EAAKO,GAAUA,EAAMP,IAAKQ,GAASA,GAAMC,OAAO,EAAEC,OAAQD,GAA+BA,IAAYV,MAAS,CAAC,CAAC,EAGjG,KAAAY,kBAAoBxB,EAAc,CAAC,KAAKD,4BAA6B,KAAKb,cAAc,CAAC,EAAEe,KAC1GK,EAAU,CAAC,CAAC,CAACC,EAAWkB,CAAc,EAAGjB,CAAM,IACzCiB,EACK,KAAKhC,eAAeiC,6BAA6B,CACtDC,6BAA8BC,GAA8C,CAAEC,YAAaJ,CAAc,CAAE,EAC3GjB,OAAQA,EACT,EAEM,KAAKH,eAAeJ,KACzBsB,GAAQR,GAAkB,CAAC,CAACA,CAAa,EACzCT,EAAU,IACR,KAAKb,eAAeiC,6BAA6B,CAC/CC,6BAA8BG,GAA6C,CAAEC,WAAYxB,CAAS,CAAE,EACpGC,OAAQA,EACT,CAAC,CACH,CAGN,EACDF,EAAW0B,GAAe,KAAKvC,eAAewC,YAAY,CAAED,WAAYA,CAAU,CAAE,CAAC,CAAC,EAGvE,KAAAE,gBAAkB,KAAKnC,4BAA4BE,KAClEK,EAAU,CAAC,CAAC6B,EAAGV,CAAc,IACvBA,EACK,KAAKhC,eAAe2C,0BAA0B,CAAEC,YAAa,CAACZ,CAAc,CAAC,CAAE,EAE/E,KAAKR,cAAchB,KACxBK,EAAWgC,GACTA,EAAaC,SAAW,EACpB5B,EAAG,CAAA,CAAE,EACL,KAAKlB,eAAe2C,0BAA0B,CAC5CC,YAAaC,EACd,CAAC,CACP,CAGN,EACDE,GAAUC,GACJA,EAAYF,SAAW,EAClB5B,EAAG,CAAA,CAAE,EAEP+B,GAASD,EAAY5B,IAAKmB,GAAe,KAAKvC,eAAewC,YAAY,CAAED,WAAAA,CAAU,CAAE,CAAC,CAAC,CACjG,CAAC,EAGa,KAAAW,cAAgB3C,EAAc,CAAC,KAAKwB,kBAAmB,KAAKU,eAAe,CAAC,EAAEjC,KAC7FY,EAAI,CAAC,CAAC+B,EAAkBC,CAAc,IAAM,CAACD,EAAkB,GAAGC,CAAc,CAAC,EACjF7B,GAAY,CAAC,CAAC,EAGC,KAAA8B,gBAAkB,KAAKH,cAAc1C,KACpDK,EAAWyC,GAAa,CACtB,IAAMN,EAAcM,EAAUlC,IAAKmC,GAAaA,EAAS9B,EAAE,EAE3D,OAAO,KAAKzB,eAAewD,4BAA4B,CACrDR,YAAaA,EACbS,SAAU,CAAA,EACX,CACH,CAAC,CAAC,EAGJC,uBAAqB,CACnB,OAAOnD,EAAc,CAAC,KAAK2C,cAAe,KAAKG,eAAe,CAAC,EAAE7C,KAC/DY,EAAI,CAAC,CAACkC,EAAWK,CAAM,IACrBL,EACGxB,OAAQyB,GAAaA,EAASK,eAAiBC,GAAaC,qBAAqB,EACjF1C,IACEmC,IACE,CACCQ,aAAcR,EAASS,YACvBzB,WAAYgB,EAAS9B,GACrBwC,aACEN,IAASJ,EAAS9B,EAAE,GAAGL,IAAK8C,IAAQ,CAClCC,KAAMD,EAAGC,KACTC,cAAeF,EAAGzC,GAClBc,WAAYgB,EAAS9B,IACrB,GAAK,CAAA,EACT4C,WAAYd,EAASK,eAAiBC,GAAaS,wBACvB,EAEjCC,KAAK,CAAC7D,EAAGgC,IAAOhC,EAAE2D,WAAa,GAAK,CAAE,CAAC,CAC3C,CAEL,iDA9GWrF,EAAoB,CAAA,kCAApBA,EAAoBwF,QAApBxF,EAAoByF,SAAA,CAAA,CAAA,SAApBzF,CAAoB,GAAA,ICuDjC,SAAS0F,GAAsBC,EAAyB,CACtD,OAAOC,GAAaD,EAAOE,eAAe,EAAIF,EAAOE,gBAAkBC,EAAGH,EAAOE,eAAe,CAClG,CAEA,SAASE,GAAgBJ,EAAyB,CAChD,OAAOC,GAAaD,EAAOK,SAAS,EAAIL,EAAOK,UAAYF,EAAGH,EAAOK,SAAS,CAChF,CAEA,SAASC,GAAiBN,EAAyB,CACjD,OAAOC,GAAaD,EAAOO,UAAU,EAAIP,EAAOO,WAAaJ,EAAGH,EAAOO,UAAU,CACnF,CAEA,SAASC,GAA0BR,EAAyB,CAC1D,OAAOC,GAAaD,EAAOS,mBAAmB,EAAIT,EAAOS,oBAAsBN,EAAGH,EAAOS,mBAAmB,CAC9G,CAEA,SAASC,GAA4BV,EAAyB,CAC5D,OAAOC,GAAaD,EAAOW,mBAAmB,EAAIX,EAAOW,oBAAsBR,EAAGH,EAAOW,mBAAmB,CAC9G,CAEA,SAASC,GAAqBZ,EAAyB,CACrD,OAAOC,GAAaD,EAAOa,cAAc,EAAIb,EAAOa,eAAiBV,EAAGH,EAAOa,cAAc,CAC/F,CAvGA,IAiCaC,IAjCbC,GAAAC,EAAA,KACAC,KAEAC,KASAC,KAGAC,KAYAC,KACAC,KAEAC,mBAGaT,KAAiB,IAAA,CAAxB,MAAOA,CAAiB,CAC5B,OAAOU,QAAQC,EAAgD,CAC7D,MAAO,CACLC,SAAUZ,EACVa,UAAW,CACTC,GACAC,GACAC,GACA,CAAEC,QAASC,GAA2BC,YAAaR,EAAEzB,MAAM,EAC3D,CAAE+B,QAASG,GAAwBC,KAAM,CAACH,EAAyB,EAAGI,WAAYrC,EAAqB,EACvG,CAAEgC,QAASM,GAAiBF,KAAM,CAACH,EAAyB,EAAGI,WAAYhC,EAAe,EAC1F,CAAE2B,QAASO,GAAkBH,KAAM,CAACH,EAAyB,EAAGI,WAAY9B,EAAgB,EAC5F,CACEyB,QAASQ,GACTJ,KAAM,CAACH,EAAyB,EAChCI,WAAY5B,IAEd,CACEuB,QAASS,GACTL,KAAM,CAACH,EAAyB,EAChCI,WAAY1B,IAEd,CACEqB,QAASU,GACTN,KAAM,CAACH,EAAyB,EAChCI,WAAYxB,GACb,EAGP,CAEA8B,YAAYC,EAA+BC,EAAuB,CAChED,EAAaE,kBACXC,GACAF,EAAUG,wBAAwBC,EAAsB,CAAC,EAE3DL,EAAaE,kBAAkB,wBAAyBD,EAAUG,wBAAwBE,EAAuB,CAAC,EAClHN,EAAaE,kBAAkB,oBAAqBD,EAAUG,wBAAwBG,EAAmB,CAAC,EAC1GP,EAAaE,kBAAkB,oBAAqBD,EAAUG,wBAAwBI,EAAmB,CAAC,EAC1GR,EAAaE,kBAAkB,iBAAkBD,EAAUG,wBAAwBK,EAAgB,CAAC,EACpGT,EAAaE,kBAAkB,iBAAkBD,EAAUG,wBAAwBM,EAAgB,CAAC,EACpGV,EAAaE,kBAAkB,gBAAiBD,EAAUG,wBAAwBO,EAAW,CAAC,EAC9FX,EAAaE,kBAAkB,MAAOD,EAAUG,wBAAwBQ,EAAO,CAAC,EAChFZ,EAAaE,kBAAkB,QAASD,EAAUG,wBAAwBS,EAAS,CAAC,EACpFb,EAAaE,kBAAkB,WAAYD,EAAUG,wBAAwBU,EAAY,CAAC,CAC5F,iDA7CW3C,GAAiB4C,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,gCAAjB9C,CAAiB,CAAA,CAAA,sCAAjBA,CAAiB,GAAA,ICsT9B,SAAS+C,GAAoBC,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAmqBA,SAASC,GAAkBF,EAASC,EAAO,CACzC,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CApgCA,IAwBIE,GAaAC,GAOAC,GAOAC,GAOAC,GAmSEC,GAoBAC,GAiBAC,GA+CAC,GA0BAC,GAoBAC,GAuBAC,GAsCAC,GA0BAC,GAkDAC,GAmCAC,GA0BAC,GAmCAC,GAmCAC,GAoBAC,GAsCAC,GA8DAC,GAoBAC,GA0BAC,GA0BAC,GA0BAC,GAkMAC,GAuBAC,GA0BAC,GAuBAC,GA0BAC,GA8CAC,GA0BAC,GAsEAC,GAuBAC,GAmEAC,GAuBAC,GAyOAC,GA6BAC,GA6GAC,GA6BAC,GAuBAC,GA6BAC,GA8CAC,GA0BAC,GAuBAC,GAgCAC,GAuBAC,GAgCAC,GAuFAC,GAgCAC,GA6BAC,GAgCAC,GA8EAC,GA2CAC,GA0BAC,GAiBAC,GA6BAC,GAmEAC,GA6BAC,GA6BAC,GAuBAC,GAqCAC,GACAC,GAOFC,GA6KAC,GAqDAC,GA2IAC,GArgGJC,GAAAC,EAAA,KAAAC,IACAA,IACAC,KACAC,KAqBIxE,GAAoC,SAAUA,EAAsB,CACtE,OAAAA,EAAqBA,EAAqB,wBAA6B,CAAC,EAAI,0BAC5EA,EAAqBA,EAAqB,8BAAmC,CAAC,EAAI,gCAClFA,EAAqBA,EAAqB,gCAAqC,CAAC,EAAI,kCACpFA,EAAqBA,EAAqB,+BAAoC,CAAC,EAAI,iCAC5EA,CACT,EAAEA,IAAwB,CAAC,CAAC,EAOxBC,GAAyC,SAAUA,EAA2B,CAChF,OAAAA,EAA0BA,EAA0B,qCAA0C,CAAC,EAAI,uCACnGA,EAA0BA,EAA0B,8CAAmD,CAAC,EAAI,gDAC5GA,EAA0BA,EAA0B,yCAA8C,CAAC,EAAI,2CACvGA,EAA0BA,EAA0B,4CAAiD,CAAC,EAAI,8CACnGA,CACT,EAAEA,IAA6B,CAAC,CAAC,EAC7BC,GAAgC,SAAUA,EAAkB,CAC9D,OAAAA,EAAiBA,EAAiB,iBAAsB,CAAC,EAAI,mBAC7DA,EAAiBA,EAAiB,gBAAqB,CAAC,EAAI,kBAC5DA,EAAiBA,EAAiB,qBAA0B,CAAC,EAAI,uBACjEA,EAAiBA,EAAiB,cAAmB,CAAC,EAAI,gBACnDA,CACT,EAAEA,IAAoB,CAAC,CAAC,EACpBC,GAA4C,SAAUA,EAA8B,CACtF,OAAAA,EAA6BA,EAA6B,yCAA8C,CAAC,EAAI,2CAC7GA,EAA6BA,EAA6B,wCAA6C,CAAC,EAAI,0CAC5GA,EAA6BA,EAA6B,2CAAgD,CAAC,EAAI,6CAC/GA,EAA6BA,EAA6B,yCAA8C,CAAC,EAAI,2CACtGA,CACT,EAAEA,IAAgC,CAAC,CAAC,EAChCC,GAA2C,SAAUA,EAA6B,CACpF,OAAAA,EAA4BA,EAA4B,uCAA4C,CAAC,EAAI,yCACzGA,EAA4BA,EAA4B,sCAA2C,CAAC,EAAI,wCACxGA,EAA4BA,EAA4B,2CAAgD,CAAC,EAAI,6CAC7GA,EAA4BA,EAA4B,oCAAyC,CAAC,EAAI,sCAC/FA,CACT,EAAEA,IAA+B,CAAC,CAAC,EA6R7BC,GAAN,MAAMoE,CAA+B,CACnC,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMvE,GAAN,MAAMwE,CAAwB,CAC5B,OAAO,UAAUJ,EAAO,CACtB,IAAIC,EAAI,IAAIG,EACZ,OAAAH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACMrE,GAAN,MAAMwE,CAAI,CACR,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE/CA,EAAM,oBACRC,EAAE,kBAAoBD,EAAM,kBAAkB,IAAI9D,GAAiB,SAAS,GAEvE+D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMrE,GAAN,MAAMwE,CAAO,CACX,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMpE,GAAN,MAAMwE,CAA2C,CAC/C,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMnE,GAAN,MAAMwE,CAAsC,CAC1C,OAAO,UAAUR,EAAO,CACtB,IAAIC,EAAI,IAAIO,EACZ,OAAAP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMlE,GAAN,MAAMwE,CAAc,CAClB,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE/CA,EAAM,sBACRC,EAAE,oBAAsBD,EAAM,oBAAoB,IAAI3D,GAAmB,SAAS,GAE7E4D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,oBAAwB,KAAe,KAAK,sBAAwB,OAClFA,EAAS,oBAAyB,cAAe,KAAK,oBAAsB,KAAK,oBAAoB,UAAU,EAAI,KAAK,qBAEnHA,CACT,CACF,EACMjE,GAAN,MAAMwE,CAAiB,CACrB,OAAO,UAAUV,EAAO,CACtB,IAAIC,EAAI,IAAIS,EACZ,OAAAT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMhE,GAAN,MAAMwE,CAAgB,CACpB,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE/CA,EAAM,SACRC,EAAE,OAAS7D,GAAsB,UAAU4D,EAAM,MAAM,GAErDA,EAAM,oBACRC,EAAE,kBAAoBD,EAAM,kBAAkB,IAAI9D,GAAiB,SAAS,GAE1E8D,EAAM,WACRC,EAAE,SAAW3D,GAAwB,UAAU0D,EAAM,QAAQ,GAExDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACM/D,GAAN,MAAMwE,CAAsB,CAC1B,OAAO,UAAUZ,EAAO,CACtB,IAAIC,EAAI,IAAIW,EACZ,OAAAX,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,wBACRC,EAAE,sBAAwBlE,GAA2C,UAAUiE,EAAM,qBAAqB,GAExGA,EAAM,mBACRC,EAAE,iBAAmBjE,GAAsC,UAAUgE,EAAM,gBAAgB,GAEzFA,EAAM,sBACRC,EAAE,oBAAsBvD,GAAyC,UAAUsD,EAAM,mBAAmB,GAE/FC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,sBAA0B,KAAe,KAAK,wBAA0B,OACtFA,EAAS,sBAA2B,cAAe,KAAK,sBAAwB,KAAK,sBAAsB,UAAU,EAAI,KAAK,uBAE5H,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,oBAAwB,KAAe,KAAK,sBAAwB,OAClFA,EAAS,oBAAyB,cAAe,KAAK,oBAAsB,KAAK,oBAAoB,UAAU,EAAI,KAAK,qBAEnHA,CACT,CACF,EACM9D,GAAN,MAAMwE,CAAmB,CACvB,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACM7D,GAAN,MAAMwE,CAAwB,CAC5B,OAAO,UAAUd,EAAO,CACtB,IAAIC,EAAI,IAAIa,EACZ,OAAAb,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW/E,GAAoBM,GAAkBwE,EAAM,QAAQ,GAE/DA,EAAM,aACRC,EAAE,WAAa,SAASD,EAAM,WAAY,EAAE,GAE1CA,EAAM,iBACRC,EAAE,eAAiB,SAASD,EAAM,eAAgB,EAAE,GAE/CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM5D,GAAN,MAAMwE,CAAU,CACd,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,wBACRC,EAAE,sBAAwBtE,GAA+B,UAAUqE,EAAM,qBAAqB,GAE5FA,EAAM,mBACRC,EAAE,iBAAmBzD,GAA0B,UAAUwD,EAAM,gBAAgB,GAE7EA,EAAM,iBACRC,EAAE,eAAiBrE,GAAwB,UAAUoE,EAAM,cAAc,GAEpEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,sBAA0B,KAAe,KAAK,wBAA0B,OACtFA,EAAS,sBAA2B,cAAe,KAAK,sBAAwB,KAAK,sBAAsB,UAAU,EAAI,KAAK,uBAE5H,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACM3D,GAAN,MAAMwE,CAA0B,CAC9B,OAAO,UAAUhB,EAAO,CACtB,IAAIC,EAAI,IAAIe,EACZ,OAAAf,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM1D,GAAN,MAAMwE,CAAoD,CACxD,OAAO,UAAUjB,EAAO,CACtB,IAAIC,EAAI,IAAIgB,EACZ,OAAAhB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc,IAAI,KAAKD,EAAM,WAAW,GAErCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACMzD,GAAN,MAAMwE,CAAyC,CAC7C,OAAO,UAAUlB,EAAO,CACtB,IAAIC,EAAI,IAAIiB,EACZ,OAAAjB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY/E,GAAoBO,GAA8BuE,EAAM,SAAS,GAE7EA,EAAM,eACRC,EAAE,aAAeD,EAAM,aAAa,IAAIvD,GAAoD,SAAS,GAEnGuD,EAAM,iBACRC,EAAE,eAAiB/E,GAAoBQ,GAA6BsE,EAAM,cAAc,GAEtFA,EAAM,cACRC,EAAE,YAAc,IAAI,KAAKD,EAAM,WAAW,GAExCA,EAAM,QACRC,EAAE,MAAQtD,GAAiE,UAAUqD,EAAM,KAAK,GAE9FA,EAAM,yBACRC,EAAE,uBAAyBD,EAAM,uBAAuB,IAAIvD,GAAoD,SAAS,GAEvHuD,EAAM,UACRC,EAAE,QAAUrD,GAA6D,UAAUoD,EAAM,OAAO,GAE3FC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,uBAA2B,KAAe,KAAK,yBAA2B,OACxFA,EAAS,uBAA4B,cAAe,KAAK,uBAAyB,KAAK,uBAAuB,UAAU,EAAI,KAAK,wBAE/H,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMxD,GAAN,MAAMwE,CAAiE,CACrE,OAAO,UAAUnB,EAAO,CACtB,IAAIC,EAAI,IAAIkB,EACZ,OAAAlB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACMvD,GAAN,MAAMwE,CAA6D,CACjE,OAAO,UAAUpB,EAAO,CACtB,IAAIC,EAAI,IAAImB,EACZ,OAAAnB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAElCA,CACT,CACF,EAOMtD,GAAN,MAAMwE,CAAU,CACd,OAAO,UAAUrB,EAAO,CACtB,IAAIC,EAAI,IAAIoB,EACZ,OAAApB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EAOMrD,GAAN,MAAMwE,CAAoB,CACxB,OAAO,UAAUtB,EAAO,CACtB,IAAIC,EAAI,IAAIqB,EACZ,OAAArB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMpD,GAAN,MAAMwE,CAAsB,CAC1B,OAAO,UAAUvB,EAAO,CACtB,IAAIC,EAAI,IAAIsB,EACZ,OAAAtB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EAsKMnD,GAAN,MAAMwE,CAA2B,CAC/B,OAAO,UAAUxB,EAAO,CACtB,IAAIC,EAAI,IAAIuB,EACZ,OAAAvB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgBhE,GAAc,UAAU+D,EAAM,aAAa,GAExDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMlD,GAAN,MAAMwE,CAA4B,CAChC,OAAO,UAAUzB,EAAO,CACtB,IAAIC,EAAI,IAAIwB,EACZ,OAAAxB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMjD,GAAN,MAAMwE,CAA6B,CACjC,OAAO,UAAU1B,EAAO,CACtB,IAAIC,EAAI,IAAIyB,EACZ,OAAAzB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,kBACRC,EAAE,gBAAkB9D,GAAgB,UAAU6D,EAAM,eAAe,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EACMhD,GAAN,MAAMwE,CAA8B,CAClC,OAAO,UAAU3B,EAAO,CACtB,IAAIC,EAAI,IAAI0B,EACZ,OAAA1B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACM/C,GAAN,MAAMwE,CAAiB,CACrB,OAAO,UAAU5B,EAAO,CACtB,IAAIC,EAAI,IAAI2B,EACZ,OAAA3B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EAqBM9C,GAAN,MAAMwE,CAA2B,CAC/B,OAAO,UAAU7B,EAAO,CACtB,IAAIC,EAAI,IAAI4B,EACZ,OAAA5B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACM7C,GAAN,MAAMwE,CAA6B,CACjC,OAAO,UAAU9B,EAAO,CACtB,IAAIC,EAAI,IAAI6B,EACZ,OAAA7B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EA6CM5C,GAAN,MAAMwE,CAA4C,CAChD,OAAO,UAAU/B,EAAO,CACtB,IAAIC,EAAI,IAAI8B,EACZ,OAAA9B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAIgC,GAAK3G,GAAkBE,GAA2ByG,CAAC,CAAC,GAErF/B,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACM3C,GAAN,MAAMyE,CAAuB,CAC3B,OAAO,UAAUjC,EAAO,CACtB,IAAIC,EAAI,IAAIgC,EACZ,OAAAhC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EA6CM1C,GAAN,MAAMyE,CAAiC,CACrC,OAAO,UAAUlC,EAAO,CACtB,IAAIC,EAAI,IAAIiC,EACZ,OAAAjC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMzC,GAAN,MAAMyE,CAAmC,CACvC,OAAO,UAAUnC,EAAO,CACtB,IAAIC,EAAI,IAAIkC,EACZ,OAAAlC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE/CA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAIgC,GAAK3G,GAAkBE,GAA2ByG,CAAC,CAAC,GAErF/B,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EA6MMxC,GAAN,MAAMyE,CAAc,CAClB,OAAO,UAAUpC,EAAO,CACtB,IAAIC,EAAI,IAAImC,EACZ,OAAAnC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,yBAA6B,MAC3CA,EAAS,yBAA8B,KAAK,0BAEvCA,CACT,CACF,EACMvC,GAAN,MAAMyE,CAAe,CACnB,OAAO,UAAUrC,EAAO,CACtB,IAAIC,EAAI,IAAIoC,EACZ,OAAApC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,MACRC,EAAE,IAAMpE,GAAI,UAAUmE,EAAM,GAAG,GAE1BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEnEA,CACT,CACF,EAuFMtC,GAAN,MAAMyE,CAAwB,CAC5B,OAAO,UAAUtC,EAAO,CACtB,IAAIC,EAAI,IAAIqC,EACZ,OAAArC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,2BAA+B,MAC7CA,EAAS,2BAAgC,KAAK,4BAEzCA,CACT,CACF,EACMrC,GAAN,MAAMyE,CAAyB,CAC7B,OAAO,UAAUvC,EAAO,CACtB,IAAIC,EAAI,IAAIsC,EACZ,OAAAtC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgBhE,GAAc,UAAU+D,EAAM,aAAa,GAExDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMpC,GAAN,MAAMyE,CAA0B,CAC9B,OAAO,UAAUxC,EAAO,CACtB,IAAIC,EAAI,IAAIuC,EACZ,OAAAvC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,yBAA6B,MAC3CA,EAAS,yBAA8B,KAAK,0BAEvCA,CACT,CACF,EACMnC,GAAN,MAAMyE,CAA2B,CAC/B,OAAO,UAAUzC,EAAO,CACtB,IAAIC,EAAI,IAAIwC,EACZ,OAAAxC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,kBACRC,EAAE,gBAAkB9D,GAAgB,UAAU6D,EAAM,eAAe,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EAwBMlC,GAAN,MAAMyE,CAAqC,CACzC,OAAO,UAAU1C,EAAO,CACtB,IAAIC,EAAI,IAAIyC,EACZ,OAAAzC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMjC,GAAN,MAAMyE,CAAsC,CAC1C,OAAO,UAAU3C,EAAO,CACtB,IAAIC,EAAI,IAAI0C,EACZ,OAAA1C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOD,EAAM,KAAK,IAAInE,GAAI,SAAS,GAEhCoE,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACMhC,GAAN,MAAMyE,CAAqC,CACzC,OAAO,UAAU5C,EAAO,CACtB,IAAIC,EAAI,IAAI2C,EACZ,OAAA3C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE/CA,EAAM,UACRC,EAAE,QAAU1C,GAA4C,UAAUyC,EAAM,OAAO,GAE1EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACM/B,GAAN,MAAMyE,CAAsC,CAC1C,OAAO,UAAU7C,EAAO,CACtB,IAAIC,EAAI,IAAI4C,EACZ,OAAA5C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,mBACRC,EAAE,iBAAmBD,EAAM,iBAAiB,IAAI7D,GAAgB,SAAS,GAEpE8D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE1GA,CACT,CACF,EACM9B,GAAN,MAAMyE,CAAgB,CACpB,OAAO,UAAU9C,EAAO,CACtB,IAAIC,EAAI,IAAI6C,EACZ,OAAA7C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUzC,GAAuB,UAAUwC,EAAM,OAAO,GAExDA,EAAM,gBACRC,EAAE,cAAgBnD,GAAoB,UAAUkD,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,yBAA6B,MAC3CA,EAAS,yBAA8B,KAAK,0BAEvCA,CACT,CACF,EACM7B,GAAN,MAAMyE,CAAiB,CACrB,OAAO,UAAU/C,EAAO,CACtB,IAAIC,EAAI,IAAI8C,EACZ,OAAA9C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOD,EAAM,KAAK,IAAInE,GAAI,SAAS,GAEnCmE,EAAM,WACRC,EAAE,SAAWlD,GAAsB,UAAUiD,EAAM,QAAQ,GAEtDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EA2DM5B,GAAN,MAAMyE,CAA0B,CAC9B,OAAO,UAAUhD,EAAO,CACtB,IAAIC,EAAI,IAAI+C,EACZ,OAAA/C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUxC,GAAiC,UAAUuC,EAAM,OAAO,GAElEA,EAAM,gBACRC,EAAE,cAAgBnD,GAAoB,UAAUkD,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,2BAA+B,MAC7CA,EAAS,2BAAgC,KAAK,4BAEzCA,CACT,CACF,EACM3B,GAAN,MAAMyE,CAA2B,CAC/B,OAAO,UAAUjD,EAAO,CACtB,IAAIC,EAAI,IAAIgD,EACZ,OAAAhD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiBD,EAAM,eAAe,IAAI/D,GAAc,SAAS,GAEjE+D,EAAM,WACRC,EAAE,SAAWlD,GAAsB,UAAUiD,EAAM,QAAQ,GAEtDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACM1B,GAAN,MAAMyE,CAA4B,CAChC,OAAO,UAAUlD,EAAO,CACtB,IAAIC,EAAI,IAAIiD,EACZ,OAAAjD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUvC,GAAmC,UAAUsC,EAAM,OAAO,GAEpEA,EAAM,gBACRC,EAAE,cAAgBnD,GAAoB,UAAUkD,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,yBAA6B,MAC3CA,EAAS,yBAA8B,KAAK,0BAEvCA,CACT,CACF,EACMzB,GAAN,MAAMyE,CAA6B,CACjC,OAAO,UAAUnD,EAAO,CACtB,IAAIC,EAAI,IAAIkD,EACZ,OAAAlD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,mBACRC,EAAE,iBAAmBD,EAAM,iBAAiB,IAAI7D,GAAgB,SAAS,GAEvE6D,EAAM,WACRC,EAAE,SAAWlD,GAAsB,UAAUiD,EAAM,QAAQ,GAEtDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EAkDMxB,GAAN,MAAMyE,CAAwC,CAC5C,OAAO,UAAUpD,EAAO,CACtB,IAAIC,EAAI,IAAImD,EACZ,OAAAnD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EAwBMvB,GAAN,MAAMyE,CAAqB,CACzB,OAAO,UAAUrD,EAAO,CACtB,IAAIC,EAAI,IAAIoD,EACZ,OAAApD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1D,GAAU,UAAUyD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMtB,GAAN,MAAMyE,CAAsB,CAC1B,OAAO,UAAUtD,EAAO,CACtB,IAAIC,EAAI,IAAIqD,EACZ,OAAArD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACMpB,GAAN,MAAMyE,CAAiC,CACrC,OAAO,UAAUvD,EAAO,CACtB,IAAIC,EAAI,IAAIsD,EACZ,OAAAtD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,qBACRC,EAAE,mBAAqB5D,GAAmB,UAAU2D,EAAM,kBAAkB,GAE1EA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIlE,GAAO,SAAS,GAEzCmE,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,mBAAuB,KAAe,KAAK,qBAAuB,OAChFA,EAAS,mBAAwB,cAAe,KAAK,mBAAqB,KAAK,mBAAmB,UAAU,EAAI,KAAK,oBAEnH,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMpB,GAAN,MAAMyE,CAAmB,CACvB,OAAO,UAAUxD,EAAO,CACtB,IAAIC,EAAI,IAAIuD,EACZ,OAAAvD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc5E,GAAkBC,GAAsB0E,EAAM,WAAW,GAEpEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAE/BA,CACT,CACF,EA8BMnB,GAAN,MAAMyE,CAA2B,CAC/B,OAAO,UAAUzD,EAAO,CACtB,IAAIC,EAAI,IAAIwD,EACZ,OAAAxD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgBhE,GAAc,UAAU+D,EAAM,aAAa,GAE3DA,EAAM,YACRC,EAAE,UAAYpD,GAAU,UAAUmD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMlB,GAAN,MAAMyE,CAA6B,CACjC,OAAO,UAAU1D,EAAO,CACtB,IAAIC,EAAI,IAAIyD,EACZ,OAAAzD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,kBACRC,EAAE,gBAAkB9D,GAAgB,UAAU6D,EAAM,eAAe,GAEjEA,EAAM,YACRC,EAAE,UAAYpD,GAAU,UAAUmD,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAE1G,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMjB,GAAN,MAAMyE,CAAiB,CACrB,OAAO,UAAU3D,EAAO,CACtB,IAAIC,EAAI,IAAI0D,EACZ,OAAA1D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,MACRC,EAAE,IAAMpE,GAAI,UAAUmE,EAAM,GAAG,GAE1BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEnEA,CACT,CACF,EACMhB,GAAN,MAAMyE,CAA6B,CACjC,OAAO,UAAU5D,EAAO,CACtB,IAAIC,EAAI,IAAI2D,EACZ,OAAA3D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,MACRC,EAAE,IAAMpE,GAAI,UAAUmE,EAAM,GAAG,GAE7BA,EAAM,sBACRC,EAAE,oBAAsBD,EAAM,oBAAoB,IAAI3D,GAAmB,SAAS,GAE7E4D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEtE,OAAO,KAAK,oBAAwB,KAAe,KAAK,sBAAwB,OAClFA,EAAS,oBAAyB,cAAe,KAAK,oBAAsB,KAAK,oBAAoB,UAAU,EAAI,KAAK,qBAEnHA,CACT,CACF,EASMf,IAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,GAAU,CACd,MAAS,oCACT,KAAQ,GACR,KAAQ,gCACR,KAAQ,gCACR,WAAc,+BAChB,EACIC,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,GAAQD,GAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6BuE,EAAmB,CACjE,OAAO,IAAKA,GAAqBvE,EACnC,EACAA,EAAY,WAA0BwE,GAAmB,CACvD,MAAOxE,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EA2JCC,IAA8C,IAAM,CACtD,MAAMA,CAA8B,CAClC,aAAc,CACZ,KAAK,YAAcwE,EAAOzE,EAAW,EACrC,KAAK,KAAOyE,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,cAAcC,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItF,GAAqBsF,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gEAAiEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQxF,GAAsB,UAAUwF,CAAI,CAAC,CAAC,CACrM,CACA,iCAAiCH,EAAG,CAClC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvF,GAAwCuF,CAAC,EAC/E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mFAAoFC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACvI,KAAK,WAAW,GADuH,CAE1I,QAAS,UACX,EAAC,CACH,CACA,qCAAsC,CACpC,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sFAAuF,CAAC,EAAGD,GAAAC,GAAA,GACzH,KAAK,WAAW,GADyG,CAE5H,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAhF,EAA8B,UAAO,SAA+CsE,EAAmB,CACrG,OAAO,IAAKA,GAAqBtE,EACnC,EACAA,EAA8B,WAA0BuE,GAAmB,CACzE,MAAOvE,EACP,QAASA,EAA8B,UACvC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,IAAwC,IAAM,CAChD,MAAMA,CAAwB,CAC5B,aAAc,CACZ,KAAK,YAAcuE,EAAOzE,EAAW,EACrC,KAAK,KAAOyE,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,oBAAoBC,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlH,GAA2BkH,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gEAAiEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQpH,GAA4B,UAAUoH,CAAI,CAAC,CAAC,CAC3M,CACA,iBAAiBH,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrG,GAAwBqG,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6DAA8DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQvG,GAAyB,UAAUuG,CAAI,CAAC,CAAC,CACrM,CACA,oBAAoBH,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlF,GAA2BkF,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gEAAiEC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACpH,KAAK,WAAW,GADoG,CAEvH,QAAS,UACX,EAAC,CACH,CACA,oBAAoBL,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7G,GAA2B6G,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gEAAiEC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACpH,KAAK,WAAW,GADoG,CAEvH,QAAS,UACX,EAAC,CACH,CACA,mBAAmBL,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3F,GAA0B2F,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+DAAgEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ7F,GAA2B,UAAU6F,CAAI,CAAC,CAAC,CACzM,CACA,sBAAsBH,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhH,GAA6BgH,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kEAAmEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQlH,GAA8B,UAAUkH,CAAI,CAAC,CAAC,CAC/M,CACA,mBAAmBH,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInG,GAA0BmG,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+DAAgEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQrG,GAA2B,UAAUqG,CAAI,CAAC,CAAC,CACzM,CACA,sBAAsBH,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjF,GAA6BiF,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kEAAmEC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACtH,KAAK,WAAW,GADsG,CAEzH,QAAS,UACX,EAAC,CACH,CACA,sBAAsBL,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5G,GAA6B4G,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kEAAmEC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACtH,KAAK,WAAW,GADsG,CAEzH,QAAS,UACX,EAAC,CACH,CACA,qBAAqBL,EAAG,CACtB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzF,GAA4ByF,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iEAAkEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ3F,GAA6B,UAAU2F,CAAI,CAAC,CAAC,CAC7M,CACA,UAAUH,EAAG,CACX,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhF,GAAiBgF,CAAC,EACxD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sDAAuDC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAC1G,KAAK,WAAW,GAD0F,CAE7G,QAAS,UACX,EAAC,CACH,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvG,GAAcuG,CAAC,EACrD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mDAAoDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQzG,GAAe,UAAUyG,CAAI,CAAC,CAAC,CACjL,CACA,UAAUH,EAAG,CACX,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9G,GAAiB8G,CAAC,EACxD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sDAAuDC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAC1G,KAAK,WAAW,GAD0F,CAE7G,QAAS,UACX,EAAC,CACH,CACA,SAASL,EAAG,CACV,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7F,GAAgB6F,CAAC,EACvD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qDAAsDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ/F,GAAiB,UAAU+F,CAAI,CAAC,CAAC,CACrL,CACA,8BAA8BH,EAAG,CAC/B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/F,GAAqC+F,CAAC,EAC5E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0EAA2EC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQjG,GAAsC,UAAUiG,CAAI,CAAC,CAAC,CAC/N,CACA,8BAA8BH,EAAG,CAC/B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjG,GAAqCiG,CAAC,EAC5E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0EAA2EC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQnG,GAAsC,UAAUmG,CAAI,CAAC,CAAC,CAC/N,CACA,sBAAsBH,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/E,GAA6B+E,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kEAAmEC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACtH,KAAK,WAAW,GADsG,CAEzH,QAAS,UACX,EAAC,CACH,CACA,0BAA0BL,EAAG,CAC3B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpF,GAAiCoF,CAAC,EACxE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sEAAuEC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAC1H,KAAK,WAAW,GAD0G,CAE7H,QAAS,UACX,EAAC,CACH,CACA,YAAYL,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInF,GAAmBmF,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wDAAyDC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAC5G,KAAK,WAAW,GAD4F,CAE/G,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAA/E,EAAwB,UAAO,SAAyCqE,EAAmB,CACzF,OAAO,IAAKA,GAAqBrE,EACnC,EACAA,EAAwB,WAA0BsE,GAAmB,CACnE,MAAOtE,EACP,QAASA,EAAwB,UACjC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,IAAqC,IAAM,CAC7C,MAAMA,CAAqB,CACzB,YAAY+E,EAAKC,EAAqB,CACpC,KAAK,IAAMD,EACX,KAAK,oBAAsBC,CAC7B,CACA,OAAOC,EAAK,CACV,OAAO,KAAK,IAAI,OAAOA,CAAG,EAAE,KAAKN,EAAIC,GAAQA,EAAK,GAAG,CAAC,CACxD,CACA,SAASK,EAAK,CACZ,OAAO,KAAK,IAAI,SAASA,CAAG,EAAE,KAAKN,EAAIC,GAAQA,CAAI,CAAC,CACtD,CACA,oBAAoBK,EAAK,CACvB,OAAO,KAAK,IAAI,oBAAoBA,CAAG,EAAE,KAAKN,EAAI,IAAM,EAAI,CAAC,CAC/D,CACA,mBAAmBM,EAAK,CACtB,OAAO,KAAK,IAAI,mBAAmBA,CAAG,EAAE,KAAKN,EAAIC,GAAQA,EAAK,eAAe,CAAC,CAChF,CACA,sBAAsBK,EAAK,CACzB,OAAO,KAAK,IAAI,sBAAsBA,CAAG,EAAE,KAAKN,EAAIC,GAAQA,CAAI,CAAC,CACnE,CACA,sBAAsBK,EAAK,CACzB,OAAO,KAAK,IAAI,sBAAsBA,CAAG,EAAE,KAAKN,EAAI,IAAM,EAAI,CAAC,CACjE,CACA,sBAAsBM,EAAK,CACzB,OAAO,KAAK,IAAI,sBAAsBA,CAAG,EAAE,KAAKN,EAAI,IAAM,EAAI,CAAC,CACjE,CACA,qBAAqBM,EAAK,CACxB,OAAO,KAAK,IAAI,qBAAqBA,CAAG,EAAE,KAAKN,EAAIC,GAAQA,CAAI,CAAC,CAClE,CACA,8BAA8BK,EAAK,CACjC,OAAO,KAAK,IAAI,8BAA8BA,CAAG,CACnD,CACA,8BAA8BA,EAAK,CACjC,OAAO,KAAK,IAAI,8BAA8BA,CAAG,CACnD,CACA,sBAAsBA,EAAK,CACzB,OAAO,KAAK,IAAI,sBAAsBA,CAAG,EAAE,KAAKN,EAAI,IAAM,EAAI,CAAC,CACjE,CACA,0BAA0BM,EAAK,CAC7B,OAAO,KAAK,IAAI,0BAA0BA,CAAG,EAAE,KAAKN,EAAI,IAAM,EAAI,CAAC,CACrE,CACA,cAAcM,EAAK,CACjB,OAAO,KAAK,oBAAoB,cAAcA,CAAG,CACnD,CACF,CACA,OAAAjF,EAAqB,UAAO,SAAsCoE,EAAmB,CACnF,OAAO,IAAKA,GAAqBpE,GAAyBkF,EAASnF,EAAuB,EAAMmF,EAASpF,EAA6B,CAAC,CACzI,EACAE,EAAqB,WAA0BqE,GAAmB,CAChE,MAAOrE,EACP,QAASA,EAAqB,UAC9B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,IC5jGH,IAIamF,GAIAC,GAIAC,GAIAC,GAIAC,GAIAC,GAIAC,GAIAC,GAhCbC,GAAAC,EAAA,KAAAC,IAIaV,GAA4B,IAAIW,GAC3C,wCAAwC,EAG7BV,GAA6D,IAAIU,GAC5E,yCAAyC,EAG9BT,GAAsD,IAAIS,GACrE,mCAAmC,EAGxBR,GAAuD,IAAIQ,GACtE,oCAAoC,EAGzBP,GAAiE,IAAIO,GAChF,6CAA6C,EAGlCN,GAAiE,IAAIM,GAChF,6CAA6C,EAGlCL,GAA0E,IAAIK,GACzF,oDAAoD,EAGzCJ,GAA+E,IAAII,GAC9F,iDAAiD,ICjCnD,IAMaC,GACAC,GAPbC,GAAAC,EAAA,KAMaH,GAAuB,gBACvBC,GAAqB,gBCPlC,IAkCAG,GACAC,GAQMC,GACAC,GAEOC,GA9CbC,GAAAC,EAAA,KAAAC,IACAC,KAqBAC,KACAC,KACAC,KAQAC,IAEAZ,GAAkB,SAClBC,GAAgB,SAEhBY,KACAC,KACAC,SAEAC,GAAAA,QAAMC,OAAOC,GAAAA,OAAG,EAEVhB,GAA6B,uBAC7BC,GAAsB,KAEfC,IAAkB,IAAA,CAAzB,MAAOA,CAAkB,CAD/Be,aAAA,CAEmB,KAAAC,qBAAuBC,EAAOC,EAAoB,EAClD,KAAAC,iBAAmBF,EAAOG,EAAgB,EAC1C,KAAAC,mBAAqBJ,EAAOK,EAAkB,EAC9C,KAAAC,eAAiBN,EAAOO,EAAc,EAE9C,KAAAC,UAAYC,GAAST,EAAOU,EAAgB,CAAC,EAC7C,KAAAC,SAAWF,GAAST,EAAOY,EAAe,CAAC,EAC3C,KAAAC,eAAiBJ,GAAST,EAAOc,EAAsB,CAAC,EAChD,KAAAC,mBAAqBN,GAAST,EAAOgB,EAA0B,CAAC,EAChE,KAAAC,mBAAqBR,GAAST,EAAOkB,EAA0B,CAAC,EAChE,KAAAC,uBAAyBV,GAAST,EAAOoB,EAAgC,CAAC,EAErFC,OAAOC,EAAYC,EAAkC,QAAAC,GAAA,sBACzD,OAAO,MAAMC,GACX,KAAK1B,qBAAqBsB,OAAO,CAC/BC,GAAIA,EACJI,UAAW,KAAKC,wBAAuB,EACvCJ,yBAA0BA,EAC3B,CAAC,CAEN,GAEMK,YAAYL,EAAkC,QAAAC,GAAA,sBAClD,IAAIK,EAAS,GACTC,EAAU,GACRC,EAAc,CAAA,EACpB,KAAOD,GAAS,CACd,IAAME,EAAW,MAAMP,GACrB,KAAK1B,qBAAqBkC,SAAS,CACjCC,QAAS,CACPR,UAAW,KAAKC,wBAAuB,GAEzCQ,cAAe,CACbN,OAAQA,EACRO,SAAU,KAEZb,yBAA0BA,EAC3B,CAAC,EAGJM,EAASG,EAASK,SAASC,WAC3BR,EAAUE,EAASK,SAASP,QAE5BC,EAAKQ,KAAK,GAAIP,EAASD,MAAQ,CAAA,CAAG,CACpC,CAEA,OAAO,MAAM,KAAKS,yBAAyBT,CAAI,CACjD,GAEcS,yBAAyBT,EAAW,QAAAP,GAAA,sBAIhD,IAAMiB,GAHY,MAAMhB,GACtB,KAAKrB,mBAAmBsC,eAAe,KAAKlC,UAAS,EAAI,KAAKG,SAAQ,EAAI,CAAC9B,EAA0B,CAAC,CAAC,GAEnEA,EAA0B,EAC1D8D,EAAgB,MAAMlB,GAC1B,KAAKnB,eACFsC,6BAA6B,CAC5B/B,eAAgB,KAAKA,eAAc,EACpC,EACAgC,KACCC,EAAKC,GAAS,CAAC,CAACA,EAAKJ,aAAa,EAClCK,GAAW,IAAMC,EAAG,EAAK,CAAC,EAC1BC,GAAY,CAAC,CAAC,CACf,EAEL,OAAOnB,EAAKoB,OACTC,GAAQA,EAAIC,UAAYZ,GAAuB,CAACE,EAAgBW,GAAuBC,GAAmB,CAE/G,GAEMC,mBACJlC,EACAI,EACAH,EAAkC,QAAAC,GAAA,sBAElC,OAAO,MAAMC,GACX,KAAK1B,qBAAqByD,mBAAmB,CAC3ClC,GAAIA,EACJI,UAAWA,EACXH,yBAA0BA,EAC3B,CAAC,CAEN,GAGMkC,qBACJC,EACAvB,EAA4C,QAAAX,GAAA,sBAE5C,IAAMmC,EAAgD,CACpDzB,QAAS,CACPR,UAAW,KAAKC,wBAAuB,EACvC+B,YAAaA,GAEfvB,cAAeA,GAEjB,OAAO,MAAMV,GAAe,KAAK1B,qBAAqB0D,qBAAqBE,CAAO,CAAC,CACrF,GAEMC,mCAAmCC,EAAuB,QAAArC,GAAA,sBAC9D,IAAMmC,EAAiD,CACrDG,gBAAiBD,EACjBE,UAAW,CACTC,MAAO,CAAC,OAAQ,QAAQ,IAG5B,MAAMvC,GAAe,KAAK1B,qBAAqBkE,sBAAsBN,CAAO,CAAC,CAC/E,GAEMO,sBAAsBC,EAAcC,EAAsC,QAAA5C,GAAA,sBAC9E,IAAMmC,EAAiD,CACrDG,gBAAiB,CACfpC,UAAW,KAAKC,wBAAuB,EACvCwC,KAAMA,EACNC,OAAQA,IAIZ,OADe,MAAM3C,GAAe,KAAK1B,qBAAqBmE,sBAAsBP,CAAO,CAAC,GAC9ErC,EAChB,GAEM+C,8BACJP,EACAK,EACAC,EAAsC,QAAA5C,GAAA,sBAEtC,GAAIsC,EAAiB,CACnB,IAAMD,EAASC,EACfD,OAAAA,EAAOM,KAAOA,EACdN,EAAOO,OAASA,EAChB,MAAM,KAAKR,mCAAmCC,CAAM,EAC7CA,EAAOvC,EAChB,KACE,QAAO,MAAM,KAAK4C,sBAAsBC,EAAMC,CAAM,CAExD,GAEME,sBAAsBhD,EAAU,QAAAE,GAAA,sBACpC,IAAMmC,EAAiD,CACrDrC,GAAIA,EACJI,UAAW,KAAKC,wBAAuB,GAEzC,MAAMF,GAAe,KAAK1B,qBAAqBuE,sBAAsBX,CAAO,CAAC,CAC/E,GAEMY,8BAA8BC,EAAyB,QAAAhD,GAAA,sBAC3D,IAAMmC,EAAyD,CAC7Da,kBAAmBA,EACnB9C,UAAW,KAAKC,wBAAuB,GAEnC8C,EAAU,MAAMhD,GAAe,KAAK1B,qBAAqBwE,8BAA8BZ,CAAO,CAAC,EACrG,OAAO,MAAM,KAAKnB,yBAAyBiC,EAAQ1C,MAAQ,CAAA,CAAE,CAC/D,GAEM2C,8BACJC,EACAjB,EAAyC,QAAAlC,GAAA,sBAEzC,IAAMmC,EAAyD,CAC7DgB,MAAOA,EACPjD,UAAW,KAAKC,wBAAuB,EACvCO,QAAS,CACPwB,YAAaA,IAIjB,OADgB,MAAMjC,GAAe,KAAK1B,qBAAqB2E,8BAA8Bf,CAAO,CAAC,GACtFiB,kBAAoB,CAAA,CACrC,GAEMC,sBACJF,EACAR,EACAW,EACAzB,EACAuB,EAA6C,QAAApD,GAAA,sBAE7C,IAAMuD,EAAsB,CAAA,EAE5B,QAAWlB,KAAUe,EACnBG,EAAoBxC,KAAK,CACvBiC,kBAAmBX,EAAOvC,GAC1BI,UAAWmC,EAAOnC,UACnB,EAGH,IAAMiC,EAAiD,CACrDP,IAAK,CACH9B,GAAIqD,EACJjD,UAAW,KAAKC,wBAAuB,EACvCwC,KAAMA,EACNW,iBAAkBA,EAClBzB,QAASA,GAEX0B,oBAAqBA,GAEvB,MAAMtD,GACJ,KAAK1B,qBAAqB8E,sBAAsBlB,CAAO,EAAEd,KAAKG,GAAYgC,GAAQC,GAAW,IAAMD,CAAG,CAAC,CAAC,CAAC,CAE7G,GAEME,0BAA0BV,EAA2BzC,EAAW,QAAAP,GAAA,sBACpE,IAAM2D,EAAU,CAAA,EAEhB,QAAW/B,KAAOrB,EAChBoD,EAAQ5C,KAAK,CACXoC,MAAOvB,EAAI9B,GACXI,UAAW0B,EAAI1B,UAChB,EAGH,IAAMiC,EAAqD,CACzDyB,mBAAoB,CAClBZ,kBAAmBA,EACnB9C,UAAW,KAAKC,wBAAuB,GAEzCwD,QAASA,GAEX,MAAM1D,GACJ,KAAK1B,qBAAqBmF,0BAA0BvB,CAAO,EAAEd,KAAKG,GAAYgC,GAAQC,GAAW,IAAMD,CAAG,CAAC,CAAC,CAAC,CAEjH,GAEArD,yBAAuB,CACrB,OAAI,KAAKd,eAAc,EACd,CACLwE,sBAAuB,CACrBxE,eAAgB,KAAKA,eAAc,IAIrC,KAAKL,UAAS,GAAM,KAAKA,UAAS,IAAO1B,GACpC,CACLwG,iBAAkB,CAChB9E,UAAW,KAAKA,UAAS,IAIxB,CACL+E,eAAgB,CAAA,EAEpB,CAEAC,yBAAuB,CACrB,OAAO,KAAKzE,mBAAkB,CAChC,CAEA0E,yBAAuB,CACrB,OAAO,KAAKxE,mBAAkB,CAChC,CAEAyE,yBAAuB,CACrB,OAAO,KAAKvE,uBAAsB,GAAIwE,OAAS,CACjD,CAEAC,4BAA4BC,EAAgB,CAC1C,OAAO,KAAK1E,uBAAsB,EAAG2B,IAAKgD,GAAW,CACnD,GAAI,OAAOA,GAAY,SACrB,OAAOA,IAAY,MAAQD,EAAWC,EAExC,GAAIA,EAAQ,QACV,OAAW,CAACC,EAAKC,CAAK,IAAKC,OAAOC,QAAQJ,EAAQ,OAAU,EAC1D,GAAI,OAAOE,GAAU,SACnBF,EAAQ,QAAWC,CAAG,EAAIC,IAAU,MAAQH,EAAWG,MAClD,CACL,IAAMG,EAAaH,EACnBF,EAAQ,QAAWC,CAAG,EAAII,EAAWrD,IAAKsD,GAAUA,IAAS,MAAQP,EAAWO,CAAK,CACvF,CAGJ,OAAON,CACT,CAAC,CACH,CAEAO,uCAAqC,CACnC,OAAI,KAAKxF,eAAc,EACd,uBAAuB,KAAKA,eAAc,CAAE,GAE9C,EACT,CAEAyF,oCAAoCC,EAAgB,GAAK,CACvD,OAAI,KAAK1F,eAAc,EACd,CACLS,GAAI,KAAK+E,sCAAqC,EAC9C3E,UAAW,KAAKC,wBAAuB,EACvCwC,KAAM,mBACNC,OAAQ,CACNoC,sBAAuB,CACrB3F,eAAgB,KAAKA,eAAc,IAGvC4F,YAAaF,GAGV,IACT,CAEAG,uCAAqC,CACnC,OAAI,KAAK7F,eAAc,EACd,uBAAuB,KAAKA,eAAc,CAAE,GAE9C,EACT,CAEA8F,oCAAoCC,EAAaL,EAAgB,GAAK,CACpE,OAAIK,EACK,CACLtF,GAAI,KAAKoF,sCAAqC,EAC9ChF,UAAW,KAAKC,wBAAuB,EACvCwC,KAAM,mBACNC,OAAQ,CACNyC,oBAAqB,CACnBD,IAAKA,EACLE,UAAWC,GAA6BC,wCACxCC,eAAgBC,GAA4BC,wCAGhDV,YAAaF,GAGV,IACT,CAEAa,oBAAoBvD,EAAuB,CACzC,OAAIA,GAAQO,QAAQoC,uBAAuB3F,eAClC,KAAKX,iBAAiBmH,QAAQ,qDAAqD,EAExFxD,GAAQO,QAAQkD,iBACXzD,GAAQO,QAAQkD,kBAAkBC,KAEvC1D,GAAQO,QAAQyC,oBACXhD,GAAQO,QAAQyC,qBAAqBD,IAGvC,EACT,CAEAY,eAAe3D,EAAuB,CACpC,IAAM4D,EAAc5D,GAAQO,QAAQyC,qBAAqBY,YACzD,OAAKA,EAIE9H,GAAAA,QAAM+H,IAAID,CAAW,EAAEE,OAAO,aAAa,EAHzC,SAIX,CAEMC,gBAAgB/D,EAAuB,QAAArC,GAAA,sBAC3C,MAAMC,GACJ,KAAK1B,qBAAqB8H,cAAc,CAAErD,kBAAmBX,EAAOvC,GAAII,UAAWmC,EAAOnC,SAAS,CAAE,CAAC,CAE1G,GAEAoG,kBAAkB1E,EAAQ,CACxB,OAAIA,EAAI2E,YACC3E,EAAIe,KAAO,WAAQf,EAAI2E,YAEzB3E,EAAIe,IACb,CAEM6D,yBAAyBxD,EAA2ByD,EAAoB,QAAAzG,GAAA,sBAC5E,GAAIgD,GAAqByD,EAAc,CAErC,IAAMC,GADO,MAAM,KAAK3D,8BAA8BC,CAAiB,GAC7CrB,OAAQC,GAAQ6E,GAAgB7E,EAAI9B,EAAE,EAChE,GAAI4G,EAAavC,OAAS,EACxB,OAAO,KAAKzF,iBAAiBmH,QAAQ,0BAA2B,CAAEc,MAAOD,EAAavC,MAAM,CAAE,CAElG,CACA,MAAO,EACT,mDAjXW5G,EAAkB,CAAA,kCAAlBA,EAAkBqJ,QAAlBrJ,EAAkBsJ,SAAA,CAAA,CAAA,SAAlBtJ,CAAkB,GAAA,ICM/B,SAASuJ,GAAsBC,EAAyB,CACtD,OAAOC,GAAaD,EAAOE,eAAe,EAAIF,EAAOE,gBAAkBC,EAAGH,EAAOE,eAAe,CAClG,CAEA,SAASE,GAAgBJ,EAAyB,CAChD,OAAOC,GAAaD,EAAOK,SAAS,EAAIL,EAAOK,UAAYF,EAAGH,EAAOK,SAAS,CAChF,CAEA,SAASC,GAAiBN,EAAyB,CACjD,OAAOC,GAAaD,EAAOO,UAAU,EAAIP,EAAOO,WAAaJ,EAAGH,EAAOO,UAAU,CACnF,CAEA,SAASC,GAA0BR,EAAyB,CAC1D,OAAOC,GAAaD,EAAOS,mBAAmB,EAAIT,EAAOS,oBAAsBN,EAAGH,EAAOS,mBAAmB,CAC9G,CAEA,SAASC,GAA0BV,EAAyB,CAC1D,OAAOC,GAAaD,EAAOW,mBAAmB,EAAIX,EAAOW,oBAAsBR,EAAGH,EAAOW,mBAAmB,CAC9G,CAEA,SAASC,GAAiCZ,EAAyB,CACjE,OAAOC,GAAaD,EAAOa,0BAA0B,EACjDb,EAAOa,2BACPV,EAAGH,EAAOa,0BAA0B,CAC1C,CAEA,SAASC,GAA8Bd,EAAyB,CAC9D,OAAOC,GAAaD,EAAOe,uBAAuB,EAC9Cf,EAAOe,wBACPZ,EAAGH,EAAOe,uBAAuB,CACvC,CAlFA,IAgBaC,IAhBbC,GAAAC,EAAA,KAEAC,KACAC,KAUAC,SAGaL,KAAiB,IAAA,CAAxB,MAAOA,CAAiB,CAC5B,OAAOM,QAAQC,EAAgD,CA+B7D,MA9Be,CACbC,SAAUR,EACVS,UAAW,CACTC,GACA,CAAEC,QAASC,GAA2BC,YAAaN,EAAEvB,MAAM,EAC3D,CAAE2B,QAASG,GAAwBC,KAAM,CAACH,EAAyB,EAAGI,WAAYjC,EAAqB,EACvG,CAAE4B,QAASM,GAAiBF,KAAM,CAACH,EAAyB,EAAGI,WAAY5B,EAAe,EAC1F,CAAEuB,QAASO,GAAkBH,KAAM,CAACH,EAAyB,EAAGI,WAAY1B,EAAgB,EAC5F,CACEqB,QAASQ,GACTJ,KAAM,CAACH,EAAyB,EAChCI,WAAYxB,IAEd,CACEmB,QAASS,GACTL,KAAM,CAACH,EAAyB,EAChCI,WAAYtB,IAEd,CACEiB,QAASU,GACTN,KAAM,CAACH,EAAyB,EAChCI,WAAYpB,IAEd,CACEe,QAASW,GACTP,KAAM,CAACH,EAAyB,EAChCI,WAAYlB,GACb,EAIP,iDAjCWE,EAAiB,CAAA,gCAAjBA,CAAiB,CAAA,CAAA,sCAAjBA,CAAiB,GAAA,ICN9B,SAASuB,GAA+BC,EAAIC,EAAK,CAC3CD,EAAK,GACJE,GAAa,CAAC,CAErB,CAdA,IASMC,GAMFC,GAsBAC,GA8BEC,GAOAC,GACFC,GAuKAC,GAmRAC,GAkCAC,GAiCAC,GAxkBJC,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,IACAA,IACAC,KACAC,KACAC,KACAC,KACMnB,GAAM,CAAC,GAAG,EAMZC,IAA8B,IAAM,CACtC,MAAMA,CAAc,CAClB,YAAcmB,EAAOC,EAAU,EAC/B,aAAc,CAAC,CAEf,OAAQ,CACN,KAAK,YAAY,cAAc,MAAM,CACvC,CACA,OAAO,UAAO,SAA+BC,EAAmB,CAC9D,OAAO,IAAKA,GAAqBrB,EACnC,EACA,OAAO,UAAyBsB,GAAkB,CAChD,KAAMtB,EACN,UAAW,CAAC,CAAC,GAAI,gBAAiB,EAAE,CAAC,EACrC,UAAW,CAAC,OAAQ,KAAK,CAC3B,CAAC,CACH,CACA,OAAOA,CACT,GAAG,EAICC,IAA6B,IAAM,CACrC,MAAMA,CAAa,CACjB,SAAWkB,EAAOI,EAAW,EAC7B,aAAc,CAAC,CACf,OAAO,UAAO,SAA8BF,EAAmB,CAC7D,OAAO,IAAKA,GAAqBpB,EACnC,EACA,OAAO,UAAyBqB,GAAkB,CAChD,KAAMrB,EACN,UAAW,CAAC,CAAC,GAAI,eAAgB,EAAE,CAAC,CACtC,CAAC,CACH,CACA,OAAOA,CACT,GAAG,EAiBGC,GAAa,CACjB,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,OACT,EAEMC,GAAsC,IAAIqB,GAAe,wBAAwB,EACnFpB,IAAwB,IAAM,CAChC,MAAMA,CAAQ,CACZ,gBACA,SAAWe,EAAOd,EAAU,EAC5B,6BAEA,UAEA,YAEA,QAEA,YAEA,WAAa,GAEb,iBAAmB,IAAIoB,GAEvB,MAEA,aAEA,UAKA,eAEA,MAEA,SAAW,GAEX,SAAW,GAEX,IAAI,WAAY,CACd,OAAO,KAAK,oBAAsB,KAAO,KAAK,qBAAqB,EAAI,KAAK,kBAC9E,CACA,IAAI,UAAUC,EAAO,CACnB,KAAK,mBAAqBA,CAC5B,CACA,mBAAqB,KACrB,sBAAuB,CACrB,OAAO,KAAK,YAAc,KAAK,YAAY,OAAS,KAAK,WAAa,KAAK,UAC7E,CAEA,IAAI,UAAW,CACb,OAAO,KAAK,cAAgB,KAAO,KAAK,iBAAiB,EAAI,KAAK,YACpE,CACA,IAAI,SAASA,EAAO,CAClB,KAAK,aAAeA,CACtB,CACA,aAAe,KACf,kBAAmB,CACjB,OAAO,KAAK,aAAe,KAAK,YAAY,SAAW,KAAK,UAC9D,CACA,aAAc,CACZ,IAAMC,EAAiBR,EAAOhB,GAAwB,CACpD,SAAU,EACZ,CAAC,EACD,KAAK,gBAAkBwB,GAAkC,CAAC,EAC1D,KAAK,6BAA+B,KAAK,gBAAgB,8BAAgC,EAC3F,CAEA,QAAS,CACP,KAAK,SAAS,SAAW,IAC3B,CAEA,OAAQ,CACN,KAAK,WAAa,GACd,KAAK,oBAAsB,OAC7B,KAAK,mBAAqB,IAExB,KAAK,cAAgB,OACvB,KAAK,aAAe,IAElB,KAAK,cAIP,KAAK,aAAa,QAAQC,GAAQA,EAAK,YAAY,CAAC,EACpD,KAAK,YAAY,MAAM,EAE3B,CACA,aAAc,CAGZ,KAAK,SAAS,cAAc,CAC9B,CACA,mBAAoB,CACb,KAAK,aACR,KAAK,WAAa,GAClB,KAAK,iBAAiB,KAAK,IAAI,EAEnC,CAEA,YAAa,CAGX,OAAO,KAAK,gBAAgB,WAAa,KAAK,cAAgB,IAChE,CACA,OAAO,UAAO,SAAyBP,EAAmB,CACxD,OAAO,IAAKA,GAAqBjB,EACnC,EACA,OAAO,UAAyByB,EAAkB,CAChD,KAAMzB,EACN,UAAW,CAAC,CAAC,UAAU,CAAC,EACxB,eAAgB,SAAgCR,EAAIC,EAAKiC,EAAU,CAUjE,GATIlC,EAAK,IACJmC,GAAeD,EAAU7B,GAAc,CAAC,EACxC8B,GAAeD,EAKlBE,GAAkB,CAAC,GAEjBpC,EAAK,EAAG,CACV,IAAIqC,EACDC,GAAeD,EAAQE,GAAY,CAAC,IAAMtC,EAAI,UAAYoC,EAAG,OAC7DC,GAAeD,EAAQE,GAAY,CAAC,IAAMtC,EAAI,YAAcoC,EACjE,CACF,EACA,UAAW,SAAuBrC,EAAIC,EAAK,CAIzC,GAHID,EAAK,GACJwC,GAAYb,GAAa,CAAC,EAE3B3B,EAAK,EAAG,CACV,IAAIqC,EACDC,GAAeD,EAAQE,GAAY,CAAC,IAAMtC,EAAI,QAAUoC,EAAG,MAChE,CACF,EACA,OAAQ,CACN,YAAa,cACb,MAAO,QACP,aAAc,eACd,UAAW,CAAC,EAAG,aAAc,WAAW,EACxC,eAAgB,CAAC,EAAG,kBAAmB,gBAAgB,EACvD,MAAO,QACP,SAAU,CAAC,EAAG,WAAY,WAAYI,EAAgB,EACtD,SAAU,CAAC,EAAG,WAAY,WAAYA,EAAgB,EACtD,UAAW,CAAC,EAAG,YAAa,YAAaA,EAAgB,EACzD,SAAU,CAAC,EAAG,WAAY,WAAYA,EAAgB,CACxD,EACA,QAAS,CACP,iBAAkB,YACpB,EACA,SAAU,CAAC,SAAS,EACpB,SAAU,CAAIC,GAA6BC,EAAoB,EAC/D,mBAAoBxC,GACpB,MAAO,EACP,KAAM,EACN,SAAU,SAA0BH,EAAIC,EAAK,CACvCD,EAAK,IACJ4C,GAAgB,EAChBC,EAAW,EAAG9C,GAAgC,EAAG,EAAG,aAAa,EAExE,EACA,cAAe,EACf,gBAAiB,CACnB,CAAC,CACH,CACA,OAAOS,CACT,GAAG,EAICC,IAA2B,IAAM,CACnC,MAAMA,CAAW,CACf,KAAOc,EAAOuB,GAAgB,CAC5B,SAAU,EACZ,CAAC,EACD,mBAAqBvB,EAAOwB,EAAiB,EAC7C,YAAcxB,EAAOC,EAAU,EAE/B,WAAa,IAAIwB,GAEjB,YAEA,OAEA,MAAQ,IAAIC,GAEZ,YAEA,eAAiB,IAAIA,GAErB,OAAS,GAET,IAAI,eAAgB,CAClB,OAAO,KAAK,cACd,CACA,IAAI,cAAcC,EAAO,CACnB,KAAK,OAAS,KAAK,QAEhB,KAAK,cAAcA,CAAK,EAG7B,KAAK,UAAU,kBAAkB,EAC7B,KAAK,iBAAmBA,GAAS,CAAC,KAAK,6BAA6BA,CAAK,IAAMA,GAAS,KAAK,gBAAkB,KAAK,MAAM,QAAQ,EAAEA,CAAK,EAAE,WAC7I,KAAK,yBAAyBA,CAAK,GAGrC,KAAK,eAAiBA,CAE1B,CACA,eAAiB,EAEjB,IAAI,UAAW,CACb,OAAO,KAAK,MAAQ,KAAK,MAAM,QAAQ,EAAE,KAAK,aAAa,EAAI,MACjE,CACA,IAAI,SAASC,EAAM,CACjB,KAAK,cAAgBA,GAAQ,KAAK,MAAQ,KAAK,MAAM,QAAQ,EAAE,QAAQA,CAAI,EAAI,EACjF,CAEA,gBAAkB,IAAItB,GAEtB,oBAAsB,IAAIA,GAE1B,SAAWN,EAAO6B,EAAY,EAAE,MAAM,cAAc,EAEpD,IAAI,aAAc,CAChB,OAAO,KAAK,YACd,CACA,IAAI,YAAYtB,EAAO,CAErB,KAAK,aAAeA,EAChB,KAAK,aACP,KAAK,YAAY,wBAAwBA,IAAU,UAAU,CAEjE,CACA,aAAe,aACf,aAAc,CAAC,CACf,oBAAqB,CACnB,KAAK,OAAO,QAAQ,KAAKuB,GAAU,KAAK,MAAM,EAAGC,GAAU,KAAK,UAAU,CAAC,EAAE,UAAUC,GAAS,CAC9F,KAAK,MAAM,MAAMA,EAAM,OAAOJ,GAAQA,EAAK,WAAa,IAAI,CAAC,EAC7D,KAAK,MAAM,gBAAgB,CAC7B,CAAC,CACH,CACA,iBAAkB,CAOhB,KAAK,YAAY,QAAQ,KAAKE,GAAU,KAAK,WAAW,EAAGC,GAAU,KAAK,UAAU,CAAC,EAAE,UAAUE,GAAW,CAC1G,KAAK,eAAe,MAAMA,EAAQ,QAAQ,EAAE,KAAK,CAACC,EAAGC,IAC1BD,EAAE,YAAY,cAAc,wBAAwBC,EAAE,YAAY,aAAa,EAI9E,KAAK,4BAA8B,GAAK,CACnE,CAAC,EACF,KAAK,eAAe,gBAAgB,CACtC,CAAC,EAID,KAAK,YAAc,IAAIC,GAAgB,KAAK,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,wBAAwB,KAAK,eAAiB,UAAU,GAC/I,KAAK,KAAO,KAAK,KAAK,OAASC,EAAG,GAAG,KAAKP,GAAU,KAAK,iBAAiB,CAAC,EAAGC,GAAU,KAAK,UAAU,CAAC,EAAE,UAAUO,GAAa,KAAK,YAAY,0BAA0BA,CAAS,CAAC,EACvL,KAAK,YAAY,iBAAiB,KAAK,cAAc,EAErD,KAAK,MAAM,QAAQ,UAAU,IAAM,CAC5B,KAAK,WACR,KAAK,eAAiB,KAAK,IAAI,KAAK,eAAiB,EAAG,CAAC,EAE7D,CAAC,EAII,KAAK,cAAc,KAAK,cAAc,IACzC,KAAK,eAAiB,EAE1B,CACA,aAAc,CACZ,KAAK,aAAa,QAAQ,EAC1B,KAAK,MAAM,QAAQ,EACnB,KAAK,eAAe,QAAQ,EAC5B,KAAK,WAAW,KAAK,EACrB,KAAK,WAAW,SAAS,CAC3B,CAEA,MAAO,CACL,KAAK,cAAgB,KAAK,IAAI,KAAK,eAAiB,EAAG,KAAK,MAAM,OAAS,CAAC,CAC9E,CAEA,UAAW,CACT,KAAK,cAAgB,KAAK,IAAI,KAAK,eAAiB,EAAG,CAAC,CAC1D,CAEA,OAAQ,CACN,KAAK,yBAAyB,CAAC,EAC/B,KAAK,MAAM,QAAQV,GAAQA,EAAK,MAAM,CAAC,EACvC,KAAK,cAAc,CACrB,CAEA,gBAAgBW,EAAG,CACjB,MAAO,GAAG,KAAK,QAAQ,UAAUA,CAAC,EACpC,CAEA,kBAAkBA,EAAG,CACnB,MAAO,GAAG,KAAK,QAAQ,YAAYA,CAAC,EACtC,CAEA,eAAgB,CACd,KAAK,mBAAmB,aAAa,CACvC,CAEA,uBAAuBZ,EAAO,CAC5B,IAAMa,EAAWb,EAAQ,KAAK,eAC9B,OAAIa,EAAW,EACN,KAAK,iBAAiB,IAAM,MAAQ,OAAS,WAC3CA,EAAW,EACb,KAAK,iBAAiB,IAAM,MAAQ,WAAa,OAEnD,SACT,CAEA,kBAAkBb,EAAOc,EAAQ1D,GAAW,OAAQ,CAClD,IAAM6C,EAAO,KAAK,MAAM,QAAQ,EAAED,CAAK,EACjCe,EAAgB,KAAK,eAAef,CAAK,EAC/C,OAAOC,EAAK,6BAA+B,KAAK,0BAA0BA,EAAMc,CAAa,EAAI,KAAK,mBAAmBd,EAAMc,EAAeD,CAAK,CACrJ,CACA,0BAA0Bb,EAAMc,EAAe,CAC7C,OAAId,EAAK,WAAW,GAAKA,EAAK,UAAY,CAACc,EAClC3D,GAAW,MACT,CAAC6C,EAAK,WAAac,EACrB3D,GAAW,OAEX6C,EAAK,SAAW7C,GAAW,KAAOA,GAAW,IAExD,CACA,mBAAmB6C,EAAMc,EAAeD,EAAQ1D,GAAW,OAAQ,CACjE,OAAI6C,EAAK,WAAW,GAAKA,EAAK,UAAY,CAACc,EAClC3D,GAAW,MACT6C,EAAK,WAAa,CAACc,EACrB3D,GAAW,KACT6C,EAAK,WAAac,EACpBD,EACEb,EAAK,UAAYc,EACnB3D,GAAW,KAEX0D,CAEX,CACA,eAAed,EAAO,CACpB,OAAO,KAAK,iBAAmBA,CACjC,CAEA,gBAAiB,CACf,OAAO,KAAK,YAAc,KAAK,YAAY,gBAAkB,KAAK,cACpE,CACA,yBAAyBgB,EAAU,CACjC,IAAMC,EAAa,KAAK,MAAM,QAAQ,EACtC,KAAK,gBAAgB,KAAK,CACxB,cAAeD,EACf,wBAAyB,KAAK,eAC9B,aAAcC,EAAWD,CAAQ,EACjC,uBAAwBC,EAAW,KAAK,cAAc,CACxD,CAAC,EAKD,KAAK,eAAe,EAAI,KAAK,YAAY,cAAcD,CAAQ,EAAI,KAAK,YAAY,iBAAiBA,CAAQ,EAC7G,KAAK,eAAiBA,EACtB,KAAK,oBAAoB,KAAK,KAAK,cAAc,EACjD,KAAK,cAAc,CACrB,CACA,WAAWE,EAAO,CAChB,IAAMC,EAAcC,GAAeF,CAAK,EAClCG,EAAUH,EAAM,QAChBI,EAAU,KAAK,YACjBA,EAAQ,iBAAmB,MAAQ,CAACH,IAAgBE,IAAY,IAASA,IAAY,KACvF,KAAK,cAAgBC,EAAQ,gBAC7BJ,EAAM,eAAe,GAErBI,EAAQ,eAAe,UAAU,EAAE,UAAUJ,CAAK,CAEtD,CACA,6BAA6BlB,EAAO,CAClC,OAAI,KAAK,QAAUA,GAAS,EACnB,KAAK,MAAM,QAAQ,EAAE,MAAM,EAAGA,CAAK,EAAE,KAAKC,GAAQ,CACvD,IAAMsB,EAAUtB,EAAK,YAErB,OADqBsB,EAAUA,EAAQ,SAAWA,EAAQ,SAAW,CAACtB,EAAK,WAAa,CAACA,EAAK,YACvE,CAACA,EAAK,UAAY,CAACA,EAAK,kBACjD,CAAC,EAEI,EACT,CACA,kBAAmB,CACjB,OAAO,KAAK,MAAQ,KAAK,KAAK,QAAU,MAAQ,MAAQ,KAC1D,CAEA,gBAAiB,CACf,IAAMuB,EAAiB,KAAK,YAAY,cAClCC,EAAiBC,GAAkC,EACzD,OAAOF,IAAmBC,GAAkBD,EAAe,SAASC,CAAc,CACpF,CAEA,cAAczB,EAAO,CACnB,OAAOA,EAAQ,KAAO,CAAC,KAAK,OAASA,EAAQ,KAAK,MAAM,OAC1D,CACA,OAAO,UAAO,SAA4BzB,EAAmB,CAC3D,OAAO,IAAKA,GAAqBhB,EACnC,EACA,OAAO,UAAyBiB,GAAkB,CAChD,KAAMjB,EACN,UAAW,CAAC,CAAC,GAAI,aAAc,EAAE,CAAC,EAClC,eAAgB,SAAmCT,EAAIC,EAAKiC,EAAU,CAKpE,GAJIlC,EAAK,IACJmC,GAAeD,EAAU1B,GAAS,CAAC,EACnC2B,GAAeD,EAAU9B,GAAe,CAAC,GAE1CJ,EAAK,EAAG,CACV,IAAIqC,EACDC,GAAeD,EAAQE,GAAY,CAAC,IAAMtC,EAAI,OAASoC,GACvDC,GAAeD,EAAQE,GAAY,CAAC,IAAMtC,EAAI,YAAcoC,EACjE,CACF,EACA,OAAQ,CACN,OAAQ,CAAC,EAAG,SAAU,SAAUI,EAAgB,EAChD,cAAe,CAAC,EAAG,gBAAiB,gBAAiBoC,EAAe,EACpE,SAAU,WACV,YAAa,aACf,EACA,QAAS,CACP,gBAAiB,kBACjB,oBAAqB,qBACvB,EACA,SAAU,CAAC,YAAY,EACvB,SAAU,CAAInC,EAAwB,CACxC,CAAC,CACH,CACA,OAAOjC,CACT,GAAG,EAMCC,IAA+B,IAAM,CACvC,MAAMA,CAAe,CACnB,SAAWa,EAAOd,EAAU,EAE5B,KAAO,SACP,aAAc,CAAC,CACf,OAAO,UAAO,SAAgCgB,EAAmB,CAC/D,OAAO,IAAKA,GAAqBf,EACnC,EACA,OAAO,UAAyBgB,GAAkB,CAChD,KAAMhB,EACN,UAAW,CAAC,CAAC,SAAU,iBAAkB,EAAE,CAAC,EAC5C,SAAU,EACV,aAAc,SAAqCV,EAAIC,EAAK,CACtDD,EAAK,GACJ8E,EAAW,QAAS,UAAmD,CACxE,OAAO7E,EAAI,SAAS,KAAK,CAC3B,CAAC,EAECD,EAAK,GACJ+E,GAAe,OAAQ9E,EAAI,IAAI,CAEtC,EACA,OAAQ,CACN,KAAM,MACR,CACF,CAAC,CACH,CACA,OAAOS,CACT,GAAG,EAKCC,IAAmC,IAAM,CAC3C,MAAMA,CAAmB,CACvB,SAAWY,EAAOd,EAAU,EAE5B,KAAO,SACP,aAAc,CAAC,CACf,OAAO,UAAO,SAAoCgB,EAAmB,CACnE,OAAO,IAAKA,GAAqBd,EACnC,EACA,OAAO,UAAyBe,GAAkB,CAChD,KAAMf,EACN,UAAW,CAAC,CAAC,SAAU,qBAAsB,EAAE,CAAC,EAChD,SAAU,EACV,aAAc,SAAyCX,EAAIC,EAAK,CAC1DD,EAAK,GACJ8E,EAAW,QAAS,UAAuD,CAC5E,OAAO7E,EAAI,SAAS,SAAS,CAC/B,CAAC,EAECD,EAAK,GACJ+E,GAAe,OAAQ9E,EAAI,IAAI,CAEtC,EACA,OAAQ,CACN,KAAM,MACR,CACF,CAAC,CACH,CACA,OAAOU,CACT,GAAG,EAICC,IAAiC,IAAM,CACzC,MAAMA,CAAiB,CACrB,OAAO,UAAO,SAAkCa,EAAmB,CACjE,OAAO,IAAKA,GAAqBb,EACnC,EACA,OAAO,UAAyBoE,GAAiB,CAC/C,KAAMpE,CACR,CAAC,EACD,OAAO,UAAyBqE,GAAiB,CAC/C,QAAS,CAACC,EAAU,CACtB,CAAC,CACH,CACA,OAAOtE,CACT,GAAG,ICxkBH,SAASuE,GAAqCC,EAAIC,EAAK,CAIrD,GAHID,EAAK,GACJE,GAAmB,EAAG,CAAC,EAExBF,EAAK,EAAG,CACV,IAAMG,EAAYC,EAAc,EAC7BC,EAAW,mBAAoBF,EAAO,cAAcA,EAAO,KAAK,CAAC,EAAE,0BAA2BA,EAAO,gBAAgB,CAAC,CAC3H,CACF,CACA,SAASG,GAA4CN,EAAIC,EAAK,CAM5D,GALID,EAAK,IACJO,EAAe,EAAG,OAAQ,CAAC,EAC3BC,EAAO,CAAC,EACRC,EAAa,GAEdT,EAAK,EAAG,CACV,IAAMG,EAAYC,EAAc,CAAC,EAC9BM,EAAU,EACVC,EAAkBR,EAAO,wBAAwBA,EAAO,KAAK,CAAC,CACnE,CACF,CACA,SAASS,GAA0DZ,EAAIC,EAAK,CAM1E,GALID,EAAK,IACJO,EAAe,EAAG,OAAQ,CAAC,EAC3BC,EAAO,CAAC,EACRC,EAAa,GAEdT,EAAK,EAAG,CACV,IAAMG,EAAYC,EAAc,CAAC,EAC9BM,EAAU,EACVC,EAAkBR,EAAO,MAAM,cAAc,CAClD,CACF,CACA,SAASU,GAA0Db,EAAIC,EAAK,CAM1E,GALID,EAAK,IACJO,EAAe,EAAG,OAAQ,CAAC,EAC3BC,EAAO,CAAC,EACRC,EAAa,GAEdT,EAAK,EAAG,CACV,IAAMG,EAAYC,EAAc,CAAC,EAC9BM,EAAU,EACVC,EAAkBR,EAAO,MAAM,aAAa,CACjD,CACF,CACA,SAASW,GAA4Cd,EAAIC,EAAK,CAO5D,GANID,EAAK,IACJe,EAAW,EAAGH,GAA2D,EAAG,EAAG,OAAQ,CAAC,EAAE,EAAGC,GAA2D,EAAG,EAAG,OAAQ,CAAC,EACvKN,EAAe,EAAG,WAAY,CAAC,EAC/BC,EAAO,CAAC,EACRC,EAAa,GAEdT,EAAK,EAAG,CACV,IAAMG,EAAYC,EAAc,CAAC,EAC9BY,EAAcb,EAAO,QAAU,OAAS,EAAIA,EAAO,QAAU,OAAS,EAAI,EAAE,EAC5EO,EAAU,CAAC,EACXC,EAAkBR,EAAO,wBAAwBA,EAAO,KAAK,CAAC,CACnE,CACF,CACA,SAASc,GAAqCjB,EAAIC,EAAK,CAIrD,GAHID,EAAK,GACJe,EAAW,EAAGT,GAA6C,EAAG,EAAG,OAAQ,CAAC,EAAE,EAAGQ,GAA6C,EAAG,CAAC,EAEjId,EAAK,EAAG,CACV,IAAIkB,EACEf,EAAYC,EAAc,EAC7BY,GAAeE,EAAUf,EAAO,SAAW,SAAW,EAAI,CAAC,CAChE,CACF,CACA,SAASgB,GAAqCnB,EAAIC,EAAK,CACjDD,EAAK,IACJO,EAAe,EAAG,MAAO,CAAC,EAC1BL,GAAmB,EAAG,CAAC,EACvBO,EAAa,GAEdT,EAAK,IACJU,EAAU,EACVL,EAAW,mBAAoBJ,EAAI,QAAQ,EAElD,CACA,SAASmB,GAAqCpB,EAAIC,EAAK,CAMrD,GALID,EAAK,IACJO,EAAe,EAAG,MAAO,CAAC,EAC1BC,EAAO,CAAC,EACRC,EAAa,GAEdT,EAAK,EAAG,CACV,IAAMG,EAAYC,EAAc,EAC7BM,EAAU,EACVC,EAAkBR,EAAO,KAAK,CACnC,CACF,CACA,SAASkB,GAAqCrB,EAAIC,EAAK,CAMrD,GALID,EAAK,IACJO,EAAe,EAAG,MAAO,CAAC,EAC1BC,EAAO,CAAC,EACRC,EAAa,GAEdT,EAAK,EAAG,CACV,IAAMG,EAAYC,EAAc,EAC7BM,EAAU,EACVC,EAAkBR,EAAO,MAAM,aAAa,CACjD,CACF,CACA,SAASmB,GAAqCtB,EAAIC,EAAK,CAMrD,GALID,EAAK,IACJO,EAAe,EAAG,MAAO,CAAC,EAC1BC,EAAO,CAAC,EACRC,EAAa,GAEdT,EAAK,EAAG,CACV,IAAMG,EAAYC,EAAc,EAC7BM,EAAU,EACVC,EAAkBR,EAAO,YAAY,CAC1C,CACF,CAEA,SAASoB,GAA6CvB,EAAIC,EAAK,CAAC,CAChE,SAASuB,GAA+BxB,EAAIC,EAAK,CAK/C,GAJID,EAAK,IACJyB,GAAa,CAAC,EACdV,EAAW,EAAGQ,GAA8C,EAAG,EAAG,cAAe,CAAC,GAEnFvB,EAAK,EAAG,CACV,IAAMG,EAAYC,EAAc,EAC7BM,EAAU,EACVL,EAAW,kBAAmBF,EAAO,OAAO,CACjD,CACF,CAYA,SAASuB,GAAkC1B,EAAIC,EAAK,CAC9CD,EAAK,GACJyB,GAAa,CAAC,CAErB,CACA,SAASE,GAA+C3B,EAAIC,EAAK,CAC3DD,EAAK,GACJ4B,EAAU,EAAG,MAAO,CAAC,CAE5B,CACA,SAASC,GAAiC7B,EAAIC,EAAK,CAKjD,GAJID,EAAK,IACJE,GAAmB,EAAG,CAAC,EACvBa,EAAW,EAAGY,GAAgD,EAAG,EAAG,MAAO,CAAC,GAE7E3B,EAAK,EAAG,CACV,IAAM8B,EAAU7B,EAAI,UACd8B,EAAe9B,EAAI,OACnB+B,EAAe/B,EAAI,OACtBG,EAAc,CAAC,EAClB,IAAM6B,EAAqBC,EAAY,CAAC,EACrC7B,EAAW,mBAAoB4B,CAAe,EAAE,0BAA8BE,GAAgB,EAAGC,GAAKN,EAASC,CAAY,CAAC,EAC5HrB,EAAU,EACVM,EAAgBe,IAAiBC,EAAe,EAAK,EAAI,EAAE,CAChE,CACF,CACA,SAASK,GAAiCrC,EAAIC,EAAK,CACjD,GAAID,EAAK,EAAG,CACV,IAAMsC,EAASC,EAAiB,EAC7BhC,EAAe,EAAG,MAAO,CAAC,EAC1BiC,EAAW,iCAAkC,SAAiGC,EAAQ,CACpJC,EAAcJ,CAAG,EACpB,IAAMK,EAAYvC,EAAc,CAAC,EACjC,OAAUwC,EAAYD,EAAO,eAAe,KAAKF,CAAM,CAAC,CAC1D,CAAC,EACEvC,GAAmB,EAAG,CAAC,EACvBO,EAAa,CAClB,CACA,GAAIT,EAAK,EAAG,CACV,IAAM6C,EAAU5C,EAAI,UACd6C,EAAgB7C,EAAI,OACpB0C,EAAYvC,EAAc,CAAC,EAC9B2C,GAAY,0CAA2CJ,EAAO,gBAAkBG,CAAa,EAC7FzC,EAAW,4BAAgC8B,GAAgB,EAAGa,GAAKL,EAAO,uBAAuBG,CAAa,EAAMG,GAAgB,EAAGC,GAAKP,EAAO,sBAAsB,CAAC,CAAC,CAAC,EAAE,KAAMA,EAAO,kBAAkBG,CAAa,CAAC,EAC3NK,GAAY,kBAAmBR,EAAO,gBAAgBG,CAAa,CAAC,EACpEpC,EAAU,EACVL,EAAW,mBAAoBwC,EAAQ,OAAO,CACnD,CACF,CACA,SAASO,GAA2BpD,EAAIC,EAAK,CAS3C,GARID,EAAK,IACJO,EAAe,EAAG,MAAO,CAAC,EAAE,EAAG,MAAO,CAAC,EACvC8C,GAAiB,EAAGxB,GAAkC,EAAG,EAAG,KAAM,KAASyB,EAAyB,EACpG7C,EAAa,EACbF,EAAe,EAAG,MAAO,CAAC,EAC1B8C,GAAiB,EAAGhB,GAAkC,EAAG,GAAI,MAAO,EAAMiB,EAAyB,EACnG7C,EAAa,EAAE,GAEhBT,EAAK,EAAG,CACV,IAAM2C,EAAYvC,EAAc,EAC7BM,EAAU,CAAC,EACX6C,GAAWZ,EAAO,KAAK,EACvBjC,EAAU,CAAC,EACX6C,GAAWZ,EAAO,KAAK,CAC5B,CACF,CACA,SAASa,GAAiCxD,EAAIC,EAAK,CACjD,GAAID,EAAK,EAAG,CACV,IAAMyD,EAASlB,EAAiB,EAC7BhC,EAAe,EAAG,MAAO,CAAC,EAC1BL,GAAmB,EAAG,CAAC,EACvBK,EAAe,EAAG,MAAO,EAAE,EAAE,EAAG,MAAO,EAAE,EACzCiC,EAAW,+BAAgC,SAA+FC,EAAQ,CAChJC,EAAce,CAAG,EACpB,IAAMd,EAAYvC,EAAc,CAAC,EACjC,OAAUwC,EAAYD,EAAO,eAAe,KAAKF,CAAM,CAAC,CAC1D,CAAC,EACElC,EAAe,EAAG,MAAO,EAAE,EAC3BL,GAAmB,EAAG,CAAC,EACvBO,EAAa,EAAE,EAAE,EAAE,CACxB,CACA,GAAIT,EAAK,EAAG,CACV,IAAM0D,EAAWzD,EAAI,UACf0D,EAAiB1D,EAAI,OACrB2D,EAAiB3D,EAAI,OACrB0C,EAAYvC,EAAc,CAAC,EAC3B6B,EAAqBC,EAAY,CAAC,EACrCxB,EAAU,EACVL,EAAW,mBAAoB4B,CAAe,EAAE,0BAA8BE,GAAgB,GAAIC,GAAKsB,EAAUC,CAAc,CAAC,EAChIjD,EAAU,EACVqC,GAAY,4BAA+BY,IAAmBC,EAAiB,CAAE,EACjFlD,EAAU,EACVqC,GAAY,wCAAyCJ,EAAO,gBAAkBgB,CAAc,EAC5FtD,EAAW,0BAA8B8B,GAAgB,GAAIa,GAAKL,EAAO,uBAAuBgB,CAAc,EAAMV,GAAgB,GAAIC,GAAKP,EAAO,sBAAsB,CAAC,CAAC,CAAC,EAAE,KAAMA,EAAO,kBAAkBgB,CAAc,CAAC,EAC7NR,GAAY,kBAAmBR,EAAO,gBAAgBgB,CAAc,CAAC,EACrEjD,EAAU,CAAC,EACXL,EAAW,mBAAoBqD,EAAS,OAAO,CACpD,CACF,CACA,SAASG,GAA2B7D,EAAIC,EAAK,CAI3C,GAHID,EAAK,GACJqD,GAAiB,EAAGG,GAAkC,EAAG,GAAI,MAAO,EAAMF,EAAyB,EAEpGtD,EAAK,EAAG,CACV,IAAM2C,EAAYvC,EAAc,EAC7BmD,GAAWZ,EAAO,KAAK,CAC5B,CACF,CACA,SAASmB,GAAkC9D,EAAIC,EAAK,CAClD,GAAID,EAAK,EAAG,CACV,IAAM+D,EAAUxB,EAAiB,EAC9BhC,EAAe,EAAG,kBAAmB,EAAE,EACvCiC,EAAW,QAAS,UAA8E,CACnG,IAAMwB,EAActB,EAAcqB,CAAI,EAAE,KACxC,OAAUnB,EAAYoB,EAAS,OAAO,CAAC,CACzC,CAAC,EAAE,UAAW,SAA8EvB,EAAQ,CAC/FC,EAAcqB,CAAI,EACrB,IAAMpB,EAAYvC,EAAc,EAChC,OAAUwC,EAAYD,EAAO,WAAWF,CAAM,CAAC,CACjD,CAAC,EACEhC,EAAa,CAClB,CACA,GAAIT,EAAK,EAAG,CACV,IAAMgE,EAAW/D,EAAI,KACfgE,EAAQhE,EAAI,EACZ0C,EAAYvC,EAAc,EAC7B2C,GAAY,gCAAiCJ,EAAO,cAAgB,YAAY,EAAE,8BAA+BA,EAAO,cAAgB,UAAU,EAClJtC,EAAW,WAAYsC,EAAO,eAAe,IAAMsB,EAAQ,EAAI,EAAE,EAAE,KAAMtB,EAAO,gBAAgBsB,CAAK,CAAC,EAAE,QAASA,CAAK,EAAE,QAAStB,EAAO,kBAAkBsB,EAAOD,EAAS,KAAK,CAAC,EAAE,QAASA,EAAS,WAAaA,EAAS,KAAK,EAAE,WAAYrB,EAAO,gBAAkBsB,CAAK,EAAE,SAAUtB,EAAO,iBAAiBsB,EAAOD,CAAQ,CAAC,EAAE,WAAYA,EAAS,QAAQ,EAAE,eAAgBA,EAAS,YAAY,EAAE,gBAAiBrB,EAAO,cAAc,EAAE,gBAAiBA,EAAO,eAAiB,CAACA,EAAO,iBAAiBsB,EAAOD,CAAQ,CAAC,EAAE,QAASA,EAAS,OAASrB,EAAO,KAAK,EAC1iBQ,GAAY,gBAAiBc,EAAQ,CAAC,EAAE,eAAgBtB,EAAO,MAAM,MAAM,EAAE,gBAAiBA,EAAO,kBAAkBsB,CAAK,CAAC,EAAE,gBAAiBtB,EAAO,eAAiBsB,CAAK,EAAE,aAAcD,EAAS,WAAa,IAAI,EAAE,kBAAmB,CAACA,EAAS,WAAaA,EAAS,eAAiBA,EAAS,eAAiB,IAAI,EAAE,gBAAiBrB,EAAO,iBAAiBsB,EAAOD,CAAQ,EAAI,KAAO,EAAI,CACzY,CACF,CAkDA,SAASE,GAAkCC,EAAY,CACrD,OAAOA,GAAc,IAAIC,EAC3B,CA/UA,IAiIMC,GAaAjC,GAIAc,GAGAF,GAuIFsB,GAqBAF,GAgCEG,GAKFC,GAyJEC,GACAC,GAKAC,GAkDFC,GA0BAC,GAiBAC,GA+FAC,GAgKAC,IA2BAC,IA0BAC,GAt4BJC,GAAAC,EAAA,KAAAC,KACAF,KACAG,IACAA,IACAA,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KAqHMzB,GAAM,CAAC,GAAG,EAaVjC,GAAM,CAAC2D,EAAIC,KAAQ,CACvB,KAAMD,EACN,EAAGC,CACL,GACM9C,GAAM6C,IAAO,CACjB,kBAAqBA,CACvB,GACM/C,GAAM,CAAC+C,EAAIC,KAAQ,CACvB,MAASD,EACT,OAAUC,CACZ,GAoII1B,IAA6B,IAAM,CACrC,MAAMA,UAAqB2B,EAAa,CACtC,OAAO,WAAuB,IAAM,CAClC,IAAIC,EACJ,OAAO,SAA8BC,EAAmB,CACtD,OAAQD,IAA8BA,EAA+BE,GAAsB9B,CAAY,IAAI6B,GAAqB7B,CAAY,CAC9I,CACF,GAAG,EACH,OAAO,UAAyB+B,GAAkB,CAChD,KAAM/B,EACN,UAAW,CAAC,CAAC,GAAI,eAAgB,EAAE,CAAC,EACpC,SAAU,CAAIgC,EAA0B,CAC1C,CAAC,CACH,CACA,OAAOhC,CACT,GAAG,EAMCF,IAA+B,IAAM,CACvC,MAAMA,CAAe,CAKnB,QAAU,IAAImC,GAEd,cAAgB,WAEhB,eAAiB,YAEjB,cAAgB,WAChB,OAAO,UAAO,SAAgCJ,EAAmB,CAC/D,OAAO,IAAKA,GAAqB/B,EACnC,EACA,OAAO,WAA0BoC,GAAmB,CAClD,MAAOpC,EACP,QAASA,EAAe,UACxB,WAAY,MACd,CAAC,CACH,CACA,OAAOA,CACT,GAAG,EASGG,GAA4B,CAChC,QAASH,GACT,KAAM,CAAC,CAAc,IAAIqC,GAAyB,IAAIC,GAAYtC,EAAc,CAAC,EACjF,WAAYF,EACd,EACIM,IAA8B,IAAM,CACtC,MAAMA,UAAsBmC,EAAc,CACxC,MAAQC,EAAOxC,EAAc,EAC7B,cAAgBwC,EAAOC,EAAY,EACnC,kBAEA,MAEA,MAEA,aAEA,cAEA,MAEA,SAEA,OAEA,SAEA,cAQA,MACA,aAAc,CACZ,MAAM,EACND,EAAOE,EAAsB,EAAE,KAAKC,EAAuB,EAC3DH,EAAOE,EAAsB,EAAE,KAAKE,EAAqB,EACzD,IAAMC,EAAoBL,EAAOM,EAAiB,EAClD,KAAK,kBAAoB,KAAK,MAAM,QAAQ,UAAU,IAAMD,EAAkB,aAAa,CAAC,CAC9F,CACA,iBAAkB,CAChB,KAAK,cAAc,QAAQ,KAAK,YAAa,EAAI,CACnD,CACA,aAAc,CACZ,KAAK,kBAAkB,YAAY,EACnC,KAAK,cAAc,eAAe,KAAK,WAAW,CACpD,CAEA,MAAME,EAAQC,EAAS,CACjBD,EACF,KAAK,cAAc,SAAS,KAAK,YAAaA,EAAQC,CAAO,EAE7D,KAAK,YAAY,cAAc,MAAMA,CAAO,CAEhD,CAEA,cAAe,CACb,OAAO,KAAK,iBAAiB9C,GAAe,KAAO,KAAK,KAC1D,CAEA,gBAAiB,CACf,OAAO,KAAK,iBAAiBA,GAAe,KAAK,MAAQ,IAC3D,CAEA,iBAAkB,CAChB,OAAO,KAAK,YAAY,aAC1B,CAEA,iBAAkB,CAChB,MAAO,CACL,MAAO,KAAK,MACZ,OAAQ,KAAK,OACb,SAAU,KAAK,QACjB,CACF,CACA,wBAAwB+C,EAAO,CAC7B,OAAIA,GAAS,SACJ,GAAG,KAAK,MAAQ,CAAC,GAEtBA,GAAS,OACJ,SAELA,GAAS,QACJ,UAEFA,CACT,CACA,OAAO,UAAO,SAA+BlB,EAAmB,CAC9D,OAAO,IAAKA,GAAqB3B,EACnC,EACA,OAAO,UAAyB8C,EAAkB,CAChD,KAAM9C,EACN,UAAW,CAAC,CAAC,iBAAiB,CAAC,EAC/B,UAAW,CAAC,OAAQ,MAAO,EAAG,iBAAiB,EAC/C,SAAU,EACV,aAAc,SAAoCxE,EAAIC,EAAK,CACrDD,EAAK,GACJuH,GAAW,QAAUtH,EAAI,OAAS,UAAU,CAEnD,EACA,OAAQ,CACN,MAAO,QACP,MAAO,QACP,aAAc,eACd,cAAe,gBACf,MAAO,QACP,SAAU,WACV,OAAQ,SACR,SAAU,WACV,cAAe,gBACf,MAAO,OACT,EACA,SAAU,CAAIqG,EAA0B,EACxC,MAAO,GACP,KAAM,GACN,OAAQ,CAAC,CAAC,YAAa,GAAI,EAAG,yBAA0B,sBAAuB,EAAG,mBAAoB,mBAAmB,EAAG,CAAC,EAAG,uBAAuB,EAAG,CAAC,EAAG,mBAAoB,yBAAyB,EAAG,CAAC,EAAG,gBAAgB,EAAG,CAAC,EAAG,qBAAqB,EAAG,CAAC,EAAG,mBAAmB,EAAG,CAAC,EAAG,0BAA0B,EAAG,CAAC,cAAe,MAAM,EAAG,CAAC,EAAG,qBAAqB,EAAG,CAAC,EAAG,kBAAkB,CAAC,EACxY,SAAU,SAAgCtG,EAAIC,EAAK,CAUjD,GATID,EAAK,IACJ4B,EAAU,EAAG,MAAO,CAAC,EACrBrB,EAAe,EAAG,KAAK,EAAE,EAAG,MAAO,CAAC,EACpCQ,EAAW,EAAGhB,GAAsC,EAAG,EAAG,eAAgB,CAAC,EAAE,EAAGkB,GAAsC,EAAG,CAAC,EAC1HR,EAAa,EAAE,EACfF,EAAe,EAAG,MAAO,CAAC,EAC1BQ,EAAW,EAAGI,GAAsC,EAAG,EAAG,MAAO,CAAC,EAAE,EAAGC,GAAsC,EAAG,EAAG,MAAO,CAAC,EAAE,EAAGC,GAAsC,EAAG,EAAG,MAAO,CAAC,EAAE,EAAGC,GAAsC,EAAG,EAAG,MAAO,CAAC,EAC7Ob,EAAa,GAEdT,EAAK,EAAG,CACV,IAAIwH,EACDnH,EAAW,mBAAoBJ,EAAI,gBAAgB,CAAC,EAAE,oBAAqBA,EAAI,aAAa,EAC5FS,EAAU,EACV+G,GAAuB,uBAAwBxH,EAAI,MAAO,gBAAgB,EAC1E8C,GAAY,yBAA0B9C,EAAI,QAAQ,EAClDS,EAAU,CAAC,EACXM,EAAcf,EAAI,eAAiBA,EAAI,cAAcA,EAAI,KAAK,EAAI,EAAI,CAAC,EACvES,EAAU,CAAC,EACXqC,GAAY,wBAAyB9C,EAAI,MAAM,EAAE,0BAA2BA,EAAI,QAAQ,EAAE,uBAAwBA,EAAI,OAAS,OAAO,EACtIS,EAAU,EACVM,GAAewG,EAAUvH,EAAI,eAAe,GAAK,EAAIA,EAAI,aAAa,EAAI,EAAI,GAAIuH,CAAO,EACzF9G,EAAU,CAAC,EACXM,EAAcf,EAAI,UAAYA,EAAI,OAAS,QAAU,EAAI,EAAE,EAC3DS,EAAU,EACVM,EAAcf,EAAI,QAAU,QAAU,EAAI,EAAE,CACjD,CACF,EACA,aAAc,CAACyH,GAAWC,GAAkBC,EAAO,EACnD,OAAQ,CAAC,2lIAA6lI,EACtmI,cAAe,EACf,gBAAiB,CACnB,CAAC,CACH,CACA,OAAOpD,CACT,GAAG,EAIGC,GAAwC,QACxCC,GAAsC,QAKtCC,GAAuB,CAE3B,yBAAuCkD,GAAQ,2BAA4B,CAAcR,GAAM,WAAyBS,GAAM,CAC5H,UAAW,2BACX,WAAY,QACd,CAAC,CAAC,EAKFT,GAAM,UAAwBS,GAAM,CAClC,UAAW,OACX,WAAY,SACd,CAAC,CAAC,EAAgBT,GAAM,OAAqBS,GAAM,CACjD,UAAW,0BACX,WAAY,QACd,CAAC,CAAC,EAAgBC,GAAW,SAAuBC,GAAM,CAAcC,GAAQ,sDAAsD,EAAgBC,GAAM,KAAmBC,GAAa,EAAG,CAC7L,SAAU,EACZ,CAAC,CAAC,CAAC,EAAG,CACJ,OAAQ,CACN,kBAAqB1D,EACvB,CACF,CAAC,CAAC,CAAC,EAEH,uBAAqCoD,GAAQ,yBAA0B,CAAcR,GAAM,WAAyBS,GAAM,CACxH,OAAQ,MACR,WAAY,QACd,CAAC,CAAC,EAAgBT,GAAM,OAAqBS,GAAM,CACjD,OAAQ,MACR,WAAY,QACd,CAAC,CAAC,EAKFT,GAAM,UAAwBS,GAAM,CAClC,OAAQ,IACR,WAAY,SACd,CAAC,CAAC,EAAgBC,GAAW,gBAA8BC,GAAM,CAAcC,GAAQ,sDAAsD,EAAgBC,GAAM,KAAmBC,GAAa,EAAG,CACpM,SAAU,EACZ,CAAC,CAAC,CAAC,EAAG,CACJ,OAAQ,CACN,kBAAqBzD,EACvB,CACF,CAAC,CAAC,CAAC,CACL,EAKIE,IAA+B,IAAM,CACvC,MAAMA,CAAe,CACnB,YAAcgC,EAAOwB,EAAW,EAEhC,KACA,aAAc,CAAC,CACf,OAAO,UAAO,SAAgCjC,EAAmB,CAC/D,OAAO,IAAKA,GAAqBvB,EACnC,EACA,OAAO,UAAyByB,GAAkB,CAChD,KAAMzB,EACN,UAAW,CAAC,CAAC,cAAe,iBAAkB,EAAE,CAAC,EACjD,OAAQ,CACN,KAAM,CAAC,EAAG,iBAAkB,MAAM,CACpC,CACF,CAAC,CACH,CACA,OAAOA,CACT,GAAG,EAQCC,IAA+B,IAAM,CACvC,MAAMA,CAAe,CACnB,UAAY+B,EAAOwB,EAAW,EAC9B,aAAc,CAAC,CACf,OAAO,UAAO,SAAgCjC,EAAmB,CAC/D,OAAO,IAAKA,GAAqBtB,EACnC,EACA,OAAO,UAAyBwB,GAAkB,CAChD,KAAMxB,EACN,UAAW,CAAC,CAAC,cAAe,iBAAkB,EAAE,CAAC,CACnD,CAAC,CACH,CACA,OAAOA,CACT,GAAG,EAICC,IAAwB,IAAM,CAChC,MAAMA,UAAgBuD,EAAQ,CAC5B,mBAAqBzB,EAAO0B,GAAmB,CAC7C,SAAU,EACZ,CAAC,EACD,kBAAoB1B,EAAO2B,EAAgB,EAC3C,YAAcC,GAAa,MAG3B,UAAY,OAQZ,MAEA,aAEA,QACA,oBAAqB,CACnB,KAAK,YAAc,KAAK,SAAS,MAAM,QAAQ,KAAKC,EAAU,IACrD,KAAK,SAAS,gBAAgB,KAAKC,EAAIC,GAASA,EAAM,eAAiB,IAAI,EAAGC,GAAU,KAAK,SAAS,WAAa,IAAI,CAAC,CAChI,CAAC,EAAE,UAAUC,GAAc,CACtBA,GAAc,KAAK,cAAgB,CAAC,KAAK,UAC3C,KAAK,QAAU,IAAIC,GAAe,KAAK,aAAa,UAAW,KAAK,iBAAiB,EAEzF,CAAC,CACH,CACA,aAAc,CACZ,KAAK,YAAY,YAAY,CAC/B,CAEA,aAAaC,EAASC,EAAM,CAC1B,IAAMC,EAAqB,KAAK,mBAAmB,aAAaF,EAASC,CAAI,EAIvEE,EAAmB,CAAC,EAAEH,GAAWA,EAAQ,SAAW,KAAK,YAC/D,OAAOE,GAAsBC,CAC/B,CACA,OAAO,WAAuB,IAAM,CAClC,IAAIC,EACJ,OAAO,SAAyBhD,EAAmB,CACjD,OAAQgD,IAAyBA,EAA0B/C,GAAsBtB,CAAO,IAAIqB,GAAqBrB,CAAO,CAC1H,CACF,GAAG,EACH,OAAO,UAAyBwC,EAAkB,CAChD,KAAMxC,EACN,UAAW,CAAC,CAAC,UAAU,CAAC,EACxB,eAAgB,SAAgC9E,EAAIC,EAAKmJ,EAAU,CAKjE,GAJIpJ,EAAK,IACJqJ,GAAeD,EAAU9E,GAAc,CAAC,EACxC+E,GAAeD,EAAUvE,GAAgB,CAAC,GAE3C7E,EAAK,EAAG,CACV,IAAIsJ,EACDC,GAAeD,EAAQE,GAAY,CAAC,IAAMvJ,EAAI,UAAYqJ,EAAG,OAC7DC,GAAeD,EAAQE,GAAY,CAAC,IAAMvJ,EAAI,aAAeqJ,EAAG,MACrE,CACF,EACA,UAAW,CAAC,SAAU,EAAE,EACxB,OAAQ,CACN,MAAO,OACT,EACA,SAAU,CAAC,SAAS,EACpB,SAAU,CAAIG,GAAmB,CAAC,CAChC,QAASnB,GACT,YAAaxD,CACf,EAAG,CACD,QAASuD,GACT,YAAavD,CACf,CAAC,CAAC,EAAMwB,EAA0B,EAClC,mBAAoBjC,GACpB,MAAO,EACP,KAAM,EACN,OAAQ,CAAC,CAAC,EAAG,iBAAiB,CAAC,EAC/B,SAAU,SAA0BrE,EAAIC,EAAK,CACvCD,EAAK,IACJ0J,GAAgB,EAChB3I,EAAW,EAAGS,GAAgC,EAAG,EAAG,aAAa,EAExE,EACA,aAAc,CAACmI,EAAe,EAC9B,cAAe,EACf,gBAAiB,CACnB,CAAC,CACH,CACA,OAAO7E,CACT,GAAG,EAICC,IAA2B,IAAM,CACnC,MAAMA,UAAmB6E,EAAW,CAGlC,YAAc,OAGd,OAAS,OAET,MAAQ,IAAIC,GAEZ,OAEA,cAAgB,IAAIC,GAEpB,cAQA,MAKA,cAAgB,MAKhB,eAAiB,MAEjB,eAAiB,CAAC,EAElB,eAAiB,IAAIvD,GAErB,IAAI,mBAAoB,CACtB,OAAO,KAAK,kBACd,CACA,IAAI,kBAAkBwD,EAAO,CAC3B,KAAK,mBAAqB,QAAQ,KAAKA,CAAK,EAAIA,EAAQ,KAAOA,CACjE,CACA,mBAAqB,GAErB,UAAY,CAACnD,EAAOoD,EAAQ,EAAE,UAC9B,aAAc,CACZ,MAAM,EAEN,IAAMC,EADarD,EAAOsD,EAAU,EACR,cAAc,SAAS,YAAY,EAC/D,KAAK,YAAcD,IAAa,uBAAyB,WAAa,YACxE,CACA,oBAAqB,CACnB,MAAM,mBAAmB,EACzB,KAAK,OAAO,QAAQ,CAAC,CACnB,KAAAE,EACA,YAAAC,CACF,IAAM,KAAK,eAAeD,CAAI,EAAIC,CAAW,EAE7C,KAAK,MAAM,QAAQ,KAAKC,GAAU,KAAK,UAAU,CAAC,EAAE,UAAU,IAAM,CAClE,KAAK,cAAc,CACrB,CAAC,EACD,KAAK,eAAe,KAAKA,GAAU,KAAK,UAAU,CAAC,EAAE,UAAU1B,GAAS,CAClEA,EAAM,UAAY,WACpB,KAAK,cAAc,KAAK,CAE5B,CAAC,CACH,CACA,iBAAiB2B,EAAOC,EAAM,CAC5B,OAAOA,EAAK,WAAa,KAAK,gBAAkBD,GAAS,CAAC,KAAK,MACjE,CACA,uBAAwB,CACtB,OAAI,KAAK,kBACA,KAAK,kBAEP,KAAK,cAAgB,aAAe7F,GAAwCC,EACrF,CACA,OAAO,UAAO,SAA4ByB,EAAmB,CAC3D,OAAO,IAAKA,GAAqBpB,EACnC,EACA,OAAO,UAAyBuC,EAAkB,CAChD,KAAMvC,EACN,UAAW,CAAC,CAAC,aAAa,EAAG,CAAC,sBAAsB,EAAG,CAAC,wBAAwB,EAAG,CAAC,GAAI,aAAc,EAAE,CAAC,EACzG,eAAgB,SAAmC/E,EAAIC,EAAKmJ,EAAU,CAKpE,GAJIpJ,EAAK,IACJqJ,GAAeD,EAAUtE,GAAS,CAAC,EACnCuE,GAAeD,EAAUxE,GAAgB,CAAC,GAE3C5E,EAAK,EAAG,CACV,IAAIsJ,EACDC,GAAeD,EAAQE,GAAY,CAAC,IAAMvJ,EAAI,OAASqJ,GACvDC,GAAeD,EAAQE,GAAY,CAAC,IAAMvJ,EAAI,OAASqJ,EAC5D,CACF,EACA,UAAW,SAA0BtJ,EAAIC,EAAK,CAI5C,GAHID,EAAK,GACJwK,GAAYhG,GAAe,CAAC,EAE7BxE,EAAK,EAAG,CACV,IAAIsJ,EACDC,GAAeD,EAAQE,GAAY,CAAC,IAAMvJ,EAAI,YAAcqJ,EACjE,CACF,EACA,UAAW,CAAC,OAAQ,SAAS,EAC7B,SAAU,GACV,aAAc,SAAiCtJ,EAAIC,EAAK,CAClDD,EAAK,IACJmD,GAAY,mBAAoBlD,EAAI,WAAW,EAC/C8C,GAAY,yBAA0B9C,EAAI,cAAgB,YAAY,EAAE,uBAAwBA,EAAI,cAAgB,UAAU,EAAE,iCAAkCA,EAAI,cAAgB,cAAgBA,EAAI,eAAiB,KAAK,EAAE,oCAAqCA,EAAI,cAAgB,cAAgBA,EAAI,eAAiB,QAAQ,EAAE,qCAAsCA,EAAI,iBAAmB,QAAQ,EAEtZ,EACA,OAAQ,CACN,cAAe,gBACf,MAAO,QACP,cAAe,gBACf,eAAgB,iBAChB,kBAAmB,mBACrB,EACA,QAAS,CACP,cAAe,eACjB,EACA,SAAU,CAAC,aAAc,qBAAsB,sBAAsB,EACrE,SAAU,CAAIwJ,GAAmB,CAAC,CAChC,QAASG,GACT,YAAa7E,CACf,CAAC,CAAC,EAAMuB,EAA0B,EAClC,mBAAoBjC,GACpB,MAAO,EACP,KAAM,EACN,OAAQ,CAAC,CAAC,eAAgB,EAAE,EAAG,CAAC,EAAG,gCAAgC,EAAG,CAAC,EAAG,yCAAyC,EAAG,CAAC,EAAG,kCAAkC,EAAG,CAAC,OAAQ,WAAY,EAAG,iCAAkC,EAAG,KAAM,yCAAyC,EAAG,CAAC,EAAG,mBAAoB,yBAAyB,EAAG,CAAC,EAAG,6BAA6B,EAAG,CAAC,OAAQ,WAAY,EAAG,iCAAkC,EAAG,IAAI,EAAG,CAAC,EAAG,kBAAkB,EAAG,CAAC,EAAG,UAAU,EAAG,CAAC,EAAG,gCAAgC,EAAG,CAAC,OAAQ,WAAY,EAAG,+BAAgC,EAAG,IAAI,EAAG,CAAC,EAAG,sBAAsB,EAAG,CAAC,EAAG,QAAS,UAAW,WAAY,KAAM,QAAS,QAAS,QAAS,WAAY,SAAU,WAAY,eAAgB,gBAAiB,gBAAiB,OAAO,CAAC,EAC3vB,SAAU,SAA6BrE,EAAIC,EAAK,CAK9C,GAJID,EAAK,IACJ0J,GAAgB,EAChB3I,EAAW,EAAGW,GAAmC,EAAG,CAAC,EAAE,EAAG0B,GAA4B,EAAG,EAAG,MAAO,CAAC,EAAE,EAAGS,GAA4B,EAAG,CAAC,EAAE,EAAGC,GAAmC,EAAG,GAAI,cAAe,KAAM,EAAM2G,EAAsB,GAE1OzK,EAAK,EAAG,CACV,IAAI0K,EACD1J,EAAcf,EAAI,UAAY,EAAI,EAAE,EACpCS,EAAU,EACVM,GAAe0J,EAAUzK,EAAI,eAAiB,aAAe,EAAIyK,IAAY,WAAa,EAAI,EAAE,CACrG,CACF,EACA,aAAc,CAAC/C,GAAkBnD,EAAa,EAC9C,OAAQ,CAAC,yzJAA6zJ,EACt0J,cAAe,EACf,KAAM,CACJ,UAAW,CAACG,GAAqB,yBAA0BA,GAAqB,sBAAsB,CACxG,EACA,gBAAiB,CACnB,CAAC,CACH,CACA,OAAOI,CACT,GAAG,EAMCC,KAA+B,IAAM,CACvC,MAAMA,UAAuB2F,EAAe,CAC1C,OAAO,WAAuB,IAAM,CAClC,IAAIC,EACJ,OAAO,SAAgCzE,EAAmB,CACxD,OAAQyE,IAAgCA,EAAiCxE,GAAsBpB,CAAc,IAAImB,GAAqBnB,CAAc,CACtJ,CACF,GAAG,EACH,OAAO,UAAyBqB,GAAkB,CAChD,KAAMrB,EACN,UAAW,CAAC,CAAC,SAAU,iBAAkB,EAAE,CAAC,EAC5C,UAAW,CAAC,EAAG,kBAAkB,EACjC,SAAU,EACV,aAAc,SAAqChF,EAAIC,EAAK,CACtDD,EAAK,GACJ6K,GAAe,OAAQ5K,EAAI,IAAI,CAEtC,EACA,SAAU,CAAIqG,EAA0B,CAC1C,CAAC,CACH,CACA,OAAOtB,CACT,GAAG,EAKCC,KAAmC,IAAM,CAC3C,MAAMA,UAA2B6F,EAAmB,CAClD,OAAO,WAAuB,IAAM,CAClC,IAAIC,EACJ,OAAO,SAAoC5E,EAAmB,CAC5D,OAAQ4E,IAAoCA,EAAqC3E,GAAsBnB,CAAkB,IAAIkB,GAAqBlB,CAAkB,CACtK,CACF,GAAG,EACH,OAAO,UAAyBoB,GAAkB,CAChD,KAAMpB,EACN,UAAW,CAAC,CAAC,SAAU,qBAAsB,EAAE,CAAC,EAChD,UAAW,CAAC,EAAG,sBAAsB,EACrC,SAAU,EACV,aAAc,SAAyCjF,EAAIC,EAAK,CAC1DD,EAAK,GACJ6K,GAAe,OAAQ5K,EAAI,IAAI,CAEtC,EACA,SAAU,CAAIqG,EAA0B,CAC1C,CAAC,CACH,CACA,OAAOrB,CACT,GAAG,EAICC,IAAiC,IAAM,CACzC,MAAMA,CAAiB,CACrB,OAAO,UAAO,SAAkCiB,EAAmB,CACjE,OAAO,IAAKA,GAAqBjB,EACnC,EACA,OAAO,UAAyB8F,GAAiB,CAC/C,KAAM9F,CACR,CAAC,EACD,OAAO,UAAyB+F,GAAiB,CAC/C,UAAW,CAAC1G,GAA2B+D,EAAiB,EACxD,QAAS,CAAC4C,GAAiBC,GAAcC,GAAkBC,GAAeC,GAAiBvG,GAAYP,GAAe0G,EAAe,CACvI,CAAC,CACH,CACA,OAAOhG,CACT,GAAG,ICp5BH,IAAAqG,GAAAC,EAAA,QCAA,IAAAC,GAAAC,GAAAC,EAAA,KAAAF,GAAA,CACE,OAAU,CACR,KAAQ,OACR,kBAAqB,oBACrB,KAAQ,OACR,KAAQ,OACR,KAAQ,OACR,OAAU,SACV,MAAS,QACT,OAAU,SACV,aAAgB,kBAChB,eAAkB,oBAClB,IAAO,MACP,GAAM,KACN,WAAc,aACd,MAAS,OACX,EACA,kBAAqB,oBACrB,iBAAoB,mBACpB,6BAAgC,8EAChC,gBAAmB,kBACnB,kBAAqB,oBACrB,cAAiB,gBACjB,kBAAqB,sBACrB,iBAAoB,mBACpB,qBAAwB,WACxB,aAAgB,qDAChB,QAAW,8CACX,8BAAiC,yBACjC,UAAa,YACb,eAAkB,CAChB,gBAAmB,mBACnB,kBAAqB,oBACrB,aAAgB,iCAChB,wBAA2B,kEAC3B,SAAY,UACZ,sBAAyB,CACvB,MAAS,wBACT,QAAW,0FACX,qBAAwB,kCAC1B,EACA,OAAU,CACR,MAAS,qCACT,MAAS,mEACT,iBAAoB,2HACpB,QAAW,CACT,UAAa,YACb,QAAW,SACb,CACF,CACF,EACA,eAAkB,CAChB,MAAS,iBACT,KAAQ,OACR,mBAAsB,CACpB,MAAS,OACT,YAAe,sEACf,QAAW,UACX,aAAgB,yIAClB,EACA,sBAAyB,CACvB,MAAS,UACT,YAAe,kCACf,IAAO,MACP,YAAe,2BACf,WAAc,OACd,YAAe,cACf,aAAgB,eAChB,kBAAqB,uGACrB,QAAW,UACX,aAAgB,+JAChB,SAAY,wLACZ,MAAS,QACT,wBAA2B,kEAC3B,sBAAyB,4BACzB,WAAc,aACd,YAAe,cACf,WAAc,+BACd,eAAkB,iBAClB,sBAAyB,sDACzB,cAAiB,mBACjB,mBAAsB,gBACtB,yCAA4C,sIAC5C,WAAc,aACd,WAAc,aACd,MAAS,QACT,WAAc,YAChB,EACA,SAAY,CACV,gBAAmB,kBACnB,qBAAwB,kBACxB,mCAAsC,mIACtC,iBAAoB,8IACtB,EACA,eAAkB,WAClB,gBAAmB,kBACnB,UAAa,YACb,mBAAsB,kBACtB,SAAY,yDACd,EACA,iBAAoB,CAClB,MAAS,2BACT,qBAAwB,mBAC1B,EACA,qBAAwB,CACtB,cAAiB,2CACjB,aAAgB,6FAChB,cAAiB,gBACjB,iBAAoB,oBACpB,YAAe,wBACjB,EACA,iBAAoB,CAClB,aAAgB,uDAChB,qBAAwB,+MACxB,iBAAoB,mBACpB,aAAgB,wCAChB,YAAe,oGACf,wBAA2B,yBAC7B,EACA,gBAAmB,CACjB,MAAS,mCACT,QAAW,yBACb,EACA,uBAA0B,CACxB,oBAAuB,8BACvB,QAAW,CACT,MAAS,uCACT,aAAgB,eAChB,wBAA2B,yBAC7B,EACA,MAAS,CACP,MAAS,uDACT,QAAW,aACX,IAAO,qBACT,EACA,mBAAsB,CACpB,MAAS,yDACT,KAAQ,oCACR,IAAO,oBACT,CACF,CACF,IC7IA,IAcaG,GAdbC,GAAAC,EAAA,KACAC,IACAC,KACAC,SAWaL,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,iDAArBA,EAAqB,CAAA,gCAArBA,CAAqB,CAAA,CAAA,oCAP9BM,EACAC,GAAcC,SAAS,CACrBC,cAAe,sBACfC,gBAAiBC,GAClB,CAAC,CAAA,CAAA,CAAA,SAGOX,CAAqB,GAAA,2BET9BY,EAAA,EAAA,OAAA,CAAA,EAA0BC,EAAA,CAAA,mBAAkDC,EAAA,SAAlDC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,gCAAA,CAAA,0BAE1BL,EAAA,EAAA,OAAA,CAAA,EAA0BC,EAAA,CAAA,mBAAoDC,EAAA,SAApDC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,kCAAA,CAAA,sCAU1BL,EAAA,EAAA,OAAA,CAAA,EACEC,EAAA,EAAA,KAAA,EAAED,EAAA,EAAA,IAAA,CAAA,EAAGM,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,SAAA,CAAU,CAAA,CAAA,EAAEX,EAAA,CAAA,mBAA2CC,EAAA,EAAI,QAA/CC,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,yBAAA,CAAA,6BAT5BL,EAAA,EAAA,OAAA,CAAA,EAA0BC,EAAA,CAAA,mBAAkFC,EAAA,EAC5GF,EAAA,EAAA,OAAA,CAAA,EACEC,EAAA,CAAA,mBAKFC,EAAA,EACAW,EAAA,EAAAC,GAAA,EAAA,EAAA,OAAA,CAAA,mBAR0BX,EAAA,EAAAC,EAAAW,GAAA,EAAA,EAAA,8BAAAC,GAAA,EAAAC,GAAAR,EAAAS,eAAA,CAAA,CAAA,CAAA,EAExBf,EAAA,CAAA,EAAAgB,EAAA,MAAAJ,GAAA,EAAA,EAAA,yCAAAK,GAAA,GAAAC,GAAAZ,EAAAa,qBAAA,EAAAb,EAAAc,qBAAA,CAAA,CAAA,EAAA,GAAA,EAMyBpB,EAAA,CAAA,EAAAqB,EAAA,OAAAf,EAAAgB,oBAAA,4BAhB7BZ,EAAA,EAAAa,GAAA,EAAA,EAAA,OAAA,CAAA,EAGG,EAAAC,GAAA,EAAA,EAAA,OAAA,CAAA,EAEkF,EAAAC,GAAA,EAAA,EAAA,iBALrFC,GAAApB,EAAAqB,iBAAA,MAAArB,EAAAqB,gBAAAC,QAAA,MAAAtB,EAAAqB,gBAAAC,OAAAC,qBAAA,KAAA,KAAAvB,EAAAqB,gBAAAC,OAAAC,oBAAAC,kBAAAxB,EAAAyB,4BAAAC,oCAAA,GAAA1B,EAAAqB,iBAAA,MAAArB,EAAAqB,gBAAAM,UAAA,KAAA,KAAA3B,EAAAqB,gBAAAM,SAAAC,YAAA5B,EAAA6B,iBAAAC,cAAA,EAAA9B,EAAAA,EAAAqB,iBAAA,MAAArB,EAAAqB,gBAAAC,QAAA,MAAAtB,EAAAqB,gBAAAC,OAAAC,qBAAA,OAAAvB,EAAAqB,gBAAAC,OAAAC,oBAAAQ,YAAA,EAAA,EAAA,GDDF,UAkBaC,GAlBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,+FAUaX,IAAoB,IAAA,CAA3B,MAAOA,CAAoB,CAPjCY,aAAA,CAWY,KAAAC,kBAAoB,IAAIC,GAEjB,KAAAC,iBAAmBC,EAAOC,EAAkB,EAC5C,KAAAC,kBAAoBF,EAAOG,EAA4B,EACvD,KAAAC,iBAAmBJ,EAAOK,EAAgB,EAC1C,KAAAC,WAAaN,EAAOO,EAAU,EAC9B,KAAAC,cAA+B,IAAIC,GAEpD,KAAAhC,4BAA8BA,GAC9B,KAAAI,iBAAmBA,GAEnB6B,YAAYC,EAAsB,CAC5BA,EAAQ,iBAAsB,KAAKC,0BAAyB,GAAM,CAAC,KAAKvC,iBAAiBwC,aAC3F,KAAKC,+BAA8B,CAEvC,CAEArD,gBAAc,CACZ,OAAO,KAAKsC,iBAAiBtC,eAAe,KAAKY,eAAe,CAClE,CAEAR,sBAAoB,CAClB,OACE,KAAKQ,iBAAiBC,QAAQC,qBAAqBwC,cAAcC,OAAQC,GAAMA,EAAEC,eAAe,GAAGC,QAAU,CAEjH,CAEArD,sBAAoB,CAClB,OAAO,KAAKO,iBAAiBC,QAAQC,qBAAqBwC,cAAcI,QAAU,CACpF,CAEMhE,UAAQ,QAAAiE,GAAA,sBACZ,KAAKlB,kBACFmB,UAAU,CACTC,MAAO,KAAKlB,iBAAiBmB,QAAQ,4CAA4C,EACjFC,QAAS,KAAKC,kBACV,KAAKrB,iBAAiBmB,QAAQ,2DAA2D,EACzF,KAAKnB,iBAAiBmB,QAAQ,8CAA8C,EAChFG,kBAAmB,KAAKtB,iBAAiBmB,QAAQ,YAAY,EAC7DI,iBAAkB,KAAKvB,iBAAiBmB,QAAQ,WAAW,EAC5D,EACAK,UAAiBC,GAAaT,GAAA,sBACzBS,IACF,MAAM,KAAK9B,iBAAiB+B,gBAAgB,KAAKzD,eAAe,EAChE,KAAKwB,kBAAkBkC,KAAK,KAAK1D,eAAe,EAChD,KAAKyC,+BAA8B,EAEvC,EAAC,CACL,GAEAA,gCAA8B,CAE5B,KAAKN,cAAcwB,KAAI,EAEvBC,GAAM,IACJC,GAAK,KAAKnC,iBAAiBoC,mBAAmB,KAAK9D,iBAAiB+D,GAAI,KAAK/D,iBAAiBgE,SAAS,CAAC,CAAC,EAExGC,KACCC,EAAKC,GAAM,CAET,GADA,KAAKnE,gBAAkBmE,EACnB,KAAK5B,0BAAyB,EAEhC,KAAM,EAEV,CAAC,EACD6B,GAAM,CAAEC,MAAO,GAAI,CAAE,EACrBC,GAAK,CAAC,EACNC,GAAmB,KAAKtC,UAAU,EAClCuC,GAAU,KAAKrC,aAAa,CAAC,EAE9BoB,UAAS,CACd,CAEAhB,2BAAyB,CACvB,OACE,KAAKvC,iBAAiBC,QAAQC,sBAC7B,KAAKF,iBAAiBC,QAAQC,qBAAqBC,iBAClDC,GAA4BC,qCAC5B,KAAKL,iBAAiBM,UAAUC,WAAaC,GAAiBC,cAEpE,iDApFWE,EAAoB,CAAA,+BAApBA,EAAoB8D,UAAA,CAAA,CAAA,2BAAA,CAAA,EAAAC,OAAA,CAAA1E,gBAAA,kBAAAL,qBAAA,uBAAAyD,kBAAA,mBAAA,EAAAuB,QAAA,CAAAnD,kBAAA,mBAAA,EAAAoD,SAAA,CAAAC,GAJpB,CAACjD,EAAkB,CAAC,EAAAkD,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,aAAA,EAAA,CAAA,QAAA,cAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GCdjCpG,EAAA,EAAAsG,GAAA,EAAA,CAAA,OAAAtF,EAAAqF,EAAAA,EAAApF,iBAAA,MAAAoF,EAAApF,gBAAAC,QAAA,OAAAmF,EAAApF,gBAAAC,OAAAC,qBAAA,CAAAkF,EAAApF,gBAAAwC,YAAA,EAAA,EAAA,iBDaY8C,EAAYC,GAAEC,EAAeC,EAAEC,EAAqB,EAAAC,OAAA,CAAA;iHAAA,CAAA,CAAA,CAAA,SAKnDhF,CAAoB,GAAA,2BGXvBiF,EAAA,EAAA,aAAA,CAAA,EAA6BC,EAAA,EAAA,WAAA,EAASC,EAAA,QAA1BC,EAAA,OAAA,OAAA,4BAKhBH,EAAA,EAAA,MAAA,CAAA,EAAiF,EAAA,MAAA,EACzEC,EAAA,CAAA,EAAiCC,EAAA,EAAO,kCAAxCE,EAAA,CAAA,EAAAC,EAAAC,EAAAC,oBAAAC,CAAA,CAAA,6BASRR,EAAA,EAAA,OAAA,EAAA,EAAmEC,EAAA,CAAA,EAAiCC,EAAA,kCAAjCE,EAAA,EAAAC,EAAAC,EAAAC,oBAAAC,CAAA,CAAA,sCAEnER,EAAA,EAAA,MAAA,EAAA,EAAqD,EAAA,KAAA,EAC9C,EAAA,WAAA,EAAA,EACyBS,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAH,EAAAI,EAAA,EAAAC,UAAAP,EAAAM,EAAA,EAAA,OAAAE,EAASR,EAAAS,YAAAP,CAAA,CAAmB,CAAA,CAAA,EAAEP,EAAA,EAAA,OAAA,EAAKC,EAAA,EAAW,EACtE,sCA1BZc,EAAA,CAAA,EACEhB,EAAA,EAAA,gBAAA,CAAA,EAAuD,EAAA,MAAA,CAAA,EAEA,EAAA,IAAA,CAAA,EACZS,EAAA,QAAA,UAAA,CAAA,IAAAD,EAAAE,EAAAO,CAAA,EAAAJ,UAAAP,EAAAM,EAAA,EAAA,OAAAE,EAASR,EAAAY,WAAAV,CAAA,CAAkB,CAAA,CAAA,EAAEP,EAAA,CAAA,EAAiBC,EAAA,EACrFiB,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,CAAA,EAGFlB,EAAA,EAGAiB,EAAA,EAAAE,GAAA,EAAA,EAAA,MAAA,CAAA,EAGArB,EAAA,EAAA,4BAAA,CAAA,EAGES,EAAA,oBAAA,SAAAa,EAAA,CAAAZ,EAAAO,CAAA,EAAA,IAAAX,EAAAM,EAAA,EAAA,OAAAE,EAAqBR,EAAAiB,kBAAAD,CAAA,CAAyB,CAAA,CAAA,EAC/CpB,EAAA,EAGDiB,EAAA,EAAAK,GAAA,EAAA,EAAA,OAAA,CAAA,EAAmE,EAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,EAOrEvB,EAAA,EACAwB,EAAA,GAAA,aAAA,sCAzBwEtB,EAAA,CAAA,EAAAC,EAAAG,EAAAmB,IAAA,EACpEvB,EAAA,EAAAwB,EAAApB,EAAAqB,YAAA,EAAA,EAAA,EAMoBzB,EAAA,EAAAD,EAAA,OAAAK,GAAA,MAAAA,EAAAsB,QAAA,KAAA,KAAAtB,EAAAsB,OAAAC,mBAAA,EAIpB3B,EAAA,EAAAD,EAAA,kBAAAK,CAAA,EAA0B,uBAAAF,EAAA0B,oBAAA,EAML5B,EAAA,EAAAD,EAAA,OAAA,EAAAK,EAAAA,GAAA,MAAAA,EAAAsB,QAAA,OAAAtB,EAAAsB,OAAAC,oBAAA,EAED3B,EAAA,EAAAD,EAAA,OAAAG,EAAA2B,gBAAAzB,CAAA,CAAA,GDxB5B,IA0Ba0B,GA1BbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,iCAiBaX,IAAsB,IAAA,CAA7B,MAAOA,CAAsB,CAdnCY,aAAA,CAkCY,KAAAC,aAAe,IAAIC,GACnB,KAAAC,cAAgB,IAAID,GACpB,KAAAE,yBAA2B,IAAIF,GAExB,KAAAG,iBAAmBC,EAAOC,EAAkB,EAvB7D,IACIC,kBAAgB,CAClB,OAAO,KAAKC,iBACd,CACA,IAAID,iBAAiBE,EAA2C,CAC9D,KAAKD,mBAAqBC,GAAW,CAAA,GAAIC,KAAK,CAACC,EAAGC,IAC5CD,GAAG5B,QAAQ8B,uBAAuBC,eAC7B,GAELF,GAAG7B,QAAQ8B,uBAAuBC,eAC7B,EAEFH,GAAG/B,MAAMmC,cAAcH,GAAGhC,IAAI,GAAK,CAC3C,CACH,CAWApB,oBAAoBwD,EAAuB,CACzC,OAAO,KAAKZ,iBAAiB5C,oBAAoBwD,CAAM,CACzD,CAEA7C,WAAW6C,EAAuB,CAChC,KAAKhB,aAAaiB,KAAKD,CAAM,CAC/B,CAEAhD,YAAYgD,EAAuB,CACjC,KAAKd,cAAce,KAAKD,CAAM,CAChC,CAEA9B,gBAAgB8B,EAAuB,CACrC,OAAIA,GAAQjC,QAAQ8B,uBAAuBC,eAClC,KAAKI,2BAEP,EACT,CAEM1C,kBAAkBwC,EAAuB,QAAAG,GAAA,sBAC7C,KAAKhB,yBAAyBc,KAAKD,CAAM,CAC3C,mDA/CW7B,EAAsB,CAAA,+BAAtBA,EAAsBiC,UAAA,CAAA,CAAA,6BAAA,CAAA,EAAAC,OAAA,CAAAd,iBAAA,mBAAAW,2BAAA,6BAAAjC,qBAAA,sBAAA,EAAAqC,QAAA,CAAAtB,aAAA,eAAAE,cAAA,gBAAAC,yBAAA,0BAAA,EAAAoB,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,QAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,mBAAA,GAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,8BAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,UAAA,kBAAA,GAAA,EAAA,MAAA,EAAA,CAAA,EAAA,oBAAA,kBAAA,sBAAA,EAAA,CAAA,QAAA,UAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,SAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IC1BnC1E,EAAA,EAAA,UAAA,EACEmB,EAAA,EAAAyD,GAAA,GAAA,EAAA,eAAA,CAAA,EA+BF1E,EAAA,SA/BmCE,EAAA,EAAAD,EAAA,UAAAwE,EAAArB,gBAAA,kBDc/BuB,EAAYC,GAAAC,GACZC,EACAC,GACAC,GAAaC,GACbC,GAAaC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACbC,GACAC,GAAiBC,EAAA,EAAAC,OAAA,CAAA;mHAAA,CAAA,CAAA,CAAA,SAKR5D,CAAsB,GAAA,uCGlB3B6D,EAAA,EAAA,OAAA,CAAA,EAA+C,EAAA,WAAA,CAAA,EACjBC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,UAAAC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAE,YAAAL,CAAA,CAAgB,CAAA,CAAA,EAAEM,EAAA,EAAA,OAAA,EAAKC,EAAA,EAAW,yBAK3EC,EAAA,EAAA,aAAA,4BAZFZ,EAAA,EAAA,gBAAA,CAAA,EACEY,EAAA,EAAA,cAAA,CAAA,EACAZ,EAAA,EAAA,OAAA,CAAA,EAAuBU,EAAA,CAAA,EAA4BC,EAAA,EACnDX,EAAA,EAAA,IAAA,CAAA,EAAuDU,EAAA,CAAA,mBAAwCC,EAAA,EAE/FE,EAAA,EAAAC,GAAA,EAAA,EAAA,OAAA,CAAA,EAKFH,EAAA,EACAE,EAAA,EAAAE,GAAA,EAAA,EAAA,aAAA,sDAVeC,EAAA,EAAAC,EAAA,MAAAb,EAAAc,OAAA,EACUF,EAAA,CAAA,EAAAG,EAAAZ,EAAAa,kBAAAhB,CAAA,CAAA,EACJY,EAAA,EAAAC,EAAA,aAAAb,EAAAiB,gBAAA,EAAoCL,EAAA,EAAAG,EAAAG,EAAA,EAAA,EAAA,sBAAA,CAAA,EAEvDN,EAAA,CAAA,EAAAO,EAAAhB,EAAAiB,WAAA,GAAA,CAAA,EAMFR,EAAA,EAAAO,EAAAE,IAAAC,EAAA,EAAA,EAAA,EAAA,GDbJ,OAyBaC,GAzBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,qDAgBaX,IAAwB,IAAA,CAA/B,MAAOA,CAAwB,CAdrCY,aAAA,CA2BY,KAAAC,cAAgB,IAAIC,GAEb,KAAAC,iBAAmBC,EAAOC,EAAkB,EAb7D,IACIC,MAAI,CACN,OAAO,KAAKC,KACd,CACA,IAAID,KAAKA,EAAW,CAClB,KAAKC,OAASD,GAAQ,CAAA,GAAIE,KAAK,CAACC,EAAGC,IAC1BD,GAAGE,MAAMC,cAAcF,GAAGC,IAAI,GAAK,CAC3C,CACH,CAOAzC,YAAY2C,EAAQ,CAClB,KAAKZ,cAAca,KAAKD,CAAG,CAC7B,CAEAhC,kBAAkBgC,EAAQ,CACxB,OAAO,KAAKV,iBAAiBtB,kBAAkBgC,CAAG,CACpD,iDAvBWzB,EAAwB,CAAA,+BAAxBA,EAAwB2B,UAAA,CAAA,CAAA,+BAAA,CAAA,EAAAC,OAAA,CAAA/B,WAAA,aAAAqB,KAAA,MAAA,EAAAW,QAAA,CAAAhB,cAAA,eAAA,EAAAiB,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,QAAA,GAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,KAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,SAAA,SAAA,EAAA,YAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICzBrC7D,EAAA,EAAA,UAAA,EACE+D,GAAA,EAAAC,GAAA,EAAA,EAAA,KAAA,KAAAC,EAAA,EAgBFtD,EAAA,SAhBEK,EAAA,EAAAkD,GAAAJ,EAAAjB,IAAA,kBDaEsB,EACAC,EAAeC,EACfC,GACAC,GAAaC,GACbC,GAAaC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACbC,GAAkBC,GAClBC,GAAYC,EAAA,EAAAC,OAAA,CAAA;qHAAA,CAAA,CAAA,CAAA,SAKHzD,CAAwB,GAAA,2BGxBnC0D,EAAA,EAAA,KAAA,CAAA,EAAkCC,EAAA,CAAA,mBAA8DC,EAAA,SAA9DC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,4CAAA,CAAA,yBAGlCC,EAAA,EAAA,sBAAA,qCAGEN,EAAA,EAAA,mBAAA,CAAA,EAAmC,EAAA,wBAAA,EAE/BC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,GAAA,EAAGC,EAAA,CAAA,mBAAqDC,EAAA,EACxDF,EAAA,EAAA,0BAAA,EAA0B,EAAA,SAAA,CAAA,EACGO,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,kBAAA,CAAmB,CAAA,CAAA,EACrDZ,EAAA,CAAA,oBACFC,EAAA,EAAS,EACgB,QATXY,EAAA,OAAA,OAAA,EAEdX,EAAA,CAAA,EAAAY,EAAA,IAAAV,EAAA,EAAA,EAAA,oCAAA,EAAA,GAAA,EAECF,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,mCAAA,CAAA,EAGCF,EAAA,CAAA,EAAAY,EAAA,IAAAV,EAAA,GAAA,EAAA,oCAAA,EAAA,GAAA,0BAyBAL,EAAA,EAAA,aAAA,CAAA,EAA8B,EAAA,MAAA,EAAA,EACfC,EAAA,CAAA,mBAAqCC,EAAA,EAAM,SAD9CY,EAAA,WAAA,EAAA,EACGX,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,mBAAA,CAAA,6BAKfL,EAAA,EAAA,aAAA,EAAA,EAAgD,EAAA,MAAA,EAAA,EACjCC,EAAA,CAAA,EAAcC,EAAA,EAC3BF,EAAA,EAAA,MAAA,EAAA,EAAmCC,EAAA,CAAA,EAAqBC,EAAA,EAAM,0BAFpDY,EAAA,QAAAE,CAAA,EACGb,EAAA,CAAA,EAAAC,EAAAY,EAAAC,IAAA,EACsBd,EAAA,CAAA,EAAAC,EAAAY,EAAAE,WAAA,sCA5B3ClB,EAAA,EAAA,KAAA,EAAKC,EAAA,CAAA,mBAAyDC,EAAA,EAE9DF,EAAA,EAAA,gCAAA,CAAA,EAEEO,EAAA,gBAAA,SAAAY,EAAA,CAAAX,EAAAY,CAAA,EAAA,IAAAV,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAiBF,EAAAW,UAAAF,CAAA,CAAiB,CAAA,CAAA,EACnCjB,EAAA,EAEDF,EAAA,EAAA,kBAAA,CAAA,EAAoC,EAAA,QAAA,EAAA,CAAA,mBAQhCO,EAAA,gBAAA,SAAAY,EAAA,CAAAX,EAAAY,CAAA,EAAA,IAAAV,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAiBF,EAAAY,YAAAH,CAAA,CAAmB,CAAA,CAAA,EAPtCjB,EAAA,EAUAF,EAAA,EAAA,mBAAA,EAAA,CAAA,EAA0CO,EAAA,iBAAA,SAAAY,EAAA,CAAAX,EAAAY,CAAA,EAAA,IAAAV,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAkBF,EAAAa,OAAAJ,EAAAK,OAAAC,KAAA,CAA2B,CAAA,CAAA,EACrFC,EAAA,GAAAC,GAAA,EAAA,EAAA,aAAA,CAAA,EAMAC,GAAA,GAAAC,GAAA,EAAA,EAAA,aAAA,GAAAC,EAAA,EAMF5B,EAAA,EAAmB,6BA/BhBC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,uCAAA,CAAA,EAGHF,EAAA,CAAA,EAAAW,EAAA,OAAAJ,EAAAqB,aAAA,CAAA,EASE5B,EAAA,CAAA,EAAA6B,GAAA,cAAA3B,EAAA,EAAA,EAAA,kCAAA,CAAA,EACAS,EAAA,cAAAJ,EAAAuB,kBAAA,EAAkC,kBAAAC,CAAA,EAMlC/B,EAAA,CAAA,EAAAgC,EAAAzB,EAAA0B,aAAA,EAAAC,SAAA,EAAA,GAAA,EAAA,EAMAlC,EAAA,EAAAmC,GAAA5B,EAAA0B,aAAA,CAAc,4BAtCpBV,EAAA,EAAAa,GAAA,GAAA,GAAA,mBAAA,CAAA,EAAwD,EAAAC,GAAA,GAAA,EAAA,mBAAxDL,IAAAM,EAAA/B,EAAAgC,KAAA,IAAA,KAAA,KAAAD,EAAAJ,UAAA,GAAA3B,EAAAiC,uBAAA,EAAA,EAAA,CAAA,GDNF,aA6DaC,GA7DbC,GAAAC,EAAA,KAAAC,IAaAC,KACAC,KAEAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAH,KACAI,IACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,0GA2BatB,IAA4B,IAAA,CAAnC,MAAOA,CAA4B,CAzBzCuB,aAAA,CA2BY,KAAAC,oBAAsB,IAAIC,GACpC,KAAAC,kBAAoB,GACpB,KAAAC,YAAc,GAEG,KAAAC,iBAAmBC,EAAOC,EAAkB,EACrD,KAAAC,kBAAoBF,EAAOG,EAA4B,EAC9C,KAAAC,iBAAmBJ,EAAOK,EAAgB,EAC3D,KAAAC,WAAaN,EAAOO,EAAU,EAC9B,KAAAtC,KAAOuC,EAAc,CAAA,CAAE,EACvB,KAAAC,YAAcD,EAAe,EAAE,EAC/B,KAAAlD,aAAekD,EAAc,IAAI,EACjC,KAAA7C,aAAe+C,EAAS,IACtB,KAAKzC,KAAI,EAAG0C,OACTC,GACCA,EAAIpE,KAAKqE,YAAW,EAAGC,QAAQ,KAAKL,YAAW,CAAE,GAAK,GACtD,CAAC,KAAKnD,aAAY,EAAGyD,KAAMC,GAAaA,EAASC,KAAOL,EAAIK,EAAE,CAAC,CAClE,EAEM,KAAAC,UAAYV,EAAO,EAAI,EACvB,KAAAW,iBAAmBX,EAAO,EAAK,EAExC,KAAAhD,mBAAqB,IAAI4D,GAMnBC,UAAQ,QAAAC,GAAA,sBACZ,MAAM,KAAKC,SAAQ,EAEnB,KAAK/D,mBAAmBgE,aAAaC,KAAKC,GAAmB,KAAKpB,UAAU,CAAC,EAAEqB,UAAWlB,GAAe,CACnG,OAAOA,GAAgB,UACzB,KAAKA,YAAYmB,IAAInB,GAAaI,YAAW,CAAE,CAEnD,CAAC,CACH,GAEMU,UAAQ,QAAAD,GAAA,sBACZ,KAAKJ,UAAUU,IAAI,EAAI,EACvB,KAAK3D,KAAK2D,IAAI,MAAM,KAAK7B,iBAAiB8B,YAAW,CAAE,EACvD,KAAK/B,YAAc,KAAK7B,KAAI,GAAIL,QAAU,EACtC,KAAKkE,mBACP,KAAKxE,aAAasE,IAAI,MAAM,KAAK7B,iBAAiBgC,8BAA8B,KAAKD,iBAAiB,CAAC,EAEzG,KAAKZ,UAAUU,IAAI,EAAK,CAC1B,GAEA1D,wBAAsB,CACpB,OAAO,KAAK6B,iBAAiBiC,wBAAuB,CACtD,CAEA5F,mBAAiB,CACf,KAAKuD,oBAAoBsC,KAAK,EAAI,CACpC,CAEArF,UAAUgE,EAAQ,CAChB,KAAKtD,aAAa4E,OAAQ5E,GAAgB,CACxC,IAAM6E,EAAQ7E,EAAawD,QAAQF,CAAG,EACtC,OAAIuB,GAAS,GACX7E,EAAa8E,OAAOD,EAAO,CAAC,EAEvB,CAAC,GAAG7E,CAAY,CACzB,CAAC,EACD,KAAKuC,kBAAoB,EAC3B,CAEA/C,OAAO8D,EAAQ,CACb,KAAKtD,aAAa4E,OAAQ5E,IACTA,EAAa+E,IAAKC,GAAMA,EAAErB,EAAE,EAC/BsB,SAAS3B,EAAIK,EAAE,GACzB3D,EAAakF,KAAK5B,CAAG,EAEvB,KAAK6B,iBAAgB,EACrB,KAAKC,uBAAuBC,WAAU,EAC/B,CAAC,GAAGrF,CAAY,EACxB,EACD,KAAKuC,kBAAoB,EAC3B,CAEAhD,YAAY+F,EAAU,CAEpB,GADAA,EAAMC,eAAc,EAChB,OAAKlF,aAAY,EAAGC,OAAS,IAI7B,KAAKD,aAAY,EAAGC,SAAW,EAAG,CACpC,IAAMkF,EAAc,KAAKnF,aAAY,EAAG,CAAC,EACzC,KAAKb,OAAOgG,CAAW,CACzB,CACF,CAEAL,kBAAgB,CACV,KAAKM,UAAUC,eAAehG,QAChC,KAAK+F,SAASC,cAAchG,MAAQ,IAEtC,KAAKQ,mBAAmByF,SAAS,EAAE,CACrC,CAEMC,2BAAyB,QAAA5B,GAAA,sBAC7B,GAAI,KAAKrD,KAAI,GAAIL,QAAU,EAAG,CAC5B,IAAMuF,EAAY,MAAMC,GACtB,KAAKlD,kBAAkBmD,UAAU,CAC/BC,MAAO,KAAKlD,iBAAiBmD,QAAQ,iDAAiD,EACtFC,QAAS,KAAKpD,iBAAiBmD,QAAQ,gDAAgD,EACvFE,kBAAmB,KAAKrD,iBAAiBmD,QAAQ,+CAA+C,EAChGG,iBAAkB,KAAKtD,iBAAiBmD,QAAQ,WAAW,EAC5D,CAAC,EAEJ,OAAIJ,IACF,KAAKxD,oBAAoBsC,KAAK,EAAI,EAClC,KAAKpC,kBAAoB,IAEpB,CAACsD,CACV,CACA,aAAM,KAAKpD,iBAAiBmD,0BAA0B,KAAKpB,kBAAmB,KAAKxE,aAAY,CAAE,EACjG,KAAKuC,kBAAoB,GAClB,EACT,mDAvHW1B,EAA4B,CAAA,+BAA5BA,EAA4BwF,UAAA,CAAA,CAAA,mCAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qRAJ5B,CAAC5D,EAAkB,CAAC,CAAA,EAAA8D,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,WAAA,GAAA,UAAA,wBAAA,EAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,EAAA,gBAAA,MAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,WAAA,GAAA,eAAA,MAAA,EAAA,gBAAA,cAAA,cAAA,iBAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,UAAA,GAAA,EAAA,eAAA,CAAA,EAAAC,SAAA,SAAAL,EAAAC,EAAA,CAAAD,EAAA,GCzDjC5G,EAAA,EAAAkH,GAAA,EAAA,EAAA,KAAA,CAAA,EAA0B,EAAAC,GAAA,EAAA,EAAA,sBAAA,EAGe,EAAAC,GAAA,EAAA,CAAA,QAHzC3G,EAAAoG,EAAA3C,iBAAA,EAAA,EAAA,EAAA,EAGAzF,EAAA,EAAAgC,EAAAoG,EAAA5C,UAAA,GAAA4C,EAAA3C,iBAAA,EAAA,EAAA,CAAA,kBDoCImD,EACAC,EAAeC,EACfC,GACAC,GAAeC,GACfC,GAAcC,GACdC,GACAC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAWC,GAAAC,GACXC,GAAmBC,GACnBC,GACAC,GACAC,GAA0BC,GAC1BC,GAAqBC,GACrBC,GACAC,GACAC,GACAC,GAAsBC,GAAAC,GAAAC,EAAA,EAAAC,OAAA,CAAA;yHAAA,CAAA,CAAA,CAAA,SAMblI,CAA4B,GAAA,2BGhDLmI,EAAA,CAAA,yBAAAC,EAAAC,EAAA,EAAA,EAAA,gCAAA,CAAA,wBAExBC,GAAA,CAAA,2BAAAC,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,uBAAeC,EAAA,mBAAAC,CAAA,0BAKWP,EAAA,CAAA,yBAAAC,EAAAC,EAAA,EAAA,EAAA,0BAAA,CAAA,qCAExBM,EAAA,EAAA,oCAAA,GAAA,CAAA,EAGEC,EAAA,sBAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAuBF,EAAAG,oBAAA,CAAqB,CAAA,CAAA,EAC7CC,EAAA,qBAFCV,EAAA,oBAAAM,EAAAK,iBAAA,KAAA,KAAAL,EAAAK,gBAAAC,EAAA,0BALNV,EAAA,EAAA,UAAA,EACEJ,EAAA,EAAAe,GAAA,EAAA,EAAA,cAAA,EAAA,EAA0B,EAAAC,GAAA,EAAA,EAAA,cAAA,EAAA,EAQ5BJ,EAAA,sCAtBJR,EAAA,EAAA,cAAA,GAAA,CAAA,EAIEC,EAAA,kBAAA,SAAAY,EAAA,CAAAX,EAAAY,CAAA,EAAA,IAAAV,EAAAC,EAAA,EAAA,OAAAC,EAAmBF,EAAAW,YAAAF,CAAA,CAAmB,CAAA,CAAA,EAEtCb,EAAA,EAAA,UAAA,EACEJ,EAAA,EAAAoB,GAAA,EAAA,EAAA,cAAA,EAAA,EAA0B,EAAAC,GAAA,EAAA,EAAA,cAAA,EAAA,EAI5BT,EAAA,EACAZ,EAAA,EAAAsB,GAAA,EAAA,EAAA,UAAA,EAYFV,EAAA,oBAtBEV,EAAA,SAAA,CAAAM,EAAAK,eAAA,EAAgC,gBAAA,QAAA,EAUhCU,EAAA,CAAA,EAAAC,EAAAhB,EAAAiB,mBAAA,GAAA,CAAA,yBAcF1B,GAAA,CAAA,2BAAAC,EAAA,EAAA0B,GAAA,EAAA,EAAA,eAAA,EAAA,sBAAexB,EAAA,mBAAAC,CAAA,0BASTC,EAAA,EAAA,YAAA,EACER,EAAA,CAAA,mBACFgB,EAAA,SADEW,EAAA,EAAAI,EAAA,IAAA7B,EAAA,EAAA,EAAA,+BAAA,EAAA,GAAA,0BAWFM,EAAA,EAAA,YAAA,EACER,EAAA,CAAA,mBACFgB,EAAA,SADEW,EAAA,EAAAI,EAAA,IAAA7B,EAAA,EAAA,EAAA,+BAAA,EAAA,GAAA,6BAlBR8B,EAAA,EAAA,EAAA,EACExB,EAAA,EAAA,kBAAA,EAAA,EAAmC,EAAA,YAAA,EACrBR,EAAA,CAAA,mBAAuCgB,EAAA,EACnDiB,EAAA,EAAA,QAAA,EAAA,EACA7B,EAAA,EAAA8B,GAAA,EAAA,EAAA,YAAA,EAKFlB,EAAA,EACAR,EAAA,EAAA,kBAAA,EAAA,EAAmC,EAAA,YAAA,EACrBR,EAAA,CAAA,oBAA6DgB,EAAA,EACzER,EAAA,GAAA,kBAAA,EAAA,EAAsCR,EAAA,EAAA,oBAEpCgB,EAAA,EACFiB,EAAA,GAAA,WAAA,EAAA,EACA7B,EAAA,GAAA+B,GAAA,EAAA,EAAA,YAAA,EAKFnB,EAAA,0BArBYV,EAAA,YAAAM,EAAAwB,IAAA,EACKT,EAAA,EAAArB,EAAA,WAAA,EAAA,EACHqB,EAAA,CAAA,EAAA1B,EAAAC,EAAA,EAAA,EAAA,qBAAA,CAAA,EAEZyB,EAAA,CAAA,EAAAC,GAAAS,EAAAzB,EAAAwB,KAAAE,IAAA,MAAA,IAAA,MAAAD,EAAAE,SAAA,UAAA,KAAAF,EAAAzB,EAAAwB,KAAAE,IAAA,MAAA,IAAA,MAAAD,EAAAG,OAAA,EAAA,EAAA,EAMeb,EAAA,EAAArB,EAAA,WAAA,EAAA,EACHqB,EAAA,CAAA,EAAA1B,EAAAC,EAAA,GAAA,GAAA,2CAAA,CAAA,EAC0ByB,EAAA,CAAA,EAAA1B,EAAAC,EAAA,GAAA,GAAA,gDAAA,CAAA,EAItCyB,EAAA,CAAA,EAAAC,GAAAa,EAAA7B,EAAAwB,KAAAE,IAAA,SAAA,IAAA,MAAAG,EAAAF,SAAA,UAAA,KAAAE,EAAA7B,EAAAwB,KAAAE,IAAA,SAAA,IAAA,MAAAG,EAAAD,OAAA,GAAA,EAAA,6BAYFhC,EAAA,EAAA,MAAA,CAAA,EAAgCR,EAAA,CAAA,EAAyBgB,EAAA,kBAAzBW,EAAA,EAAA1B,EAAAW,EAAA8B,kBAAA,CAAA,sCAI9BlC,EAAA,EAAA,MAAA,EAAA,EAAqC,EAAA,SAAA,EAAA,EACRC,EAAA,QAAA,UAAA,CAAAC,EAAAiC,CAAA,EAAA,IAAA/B,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAgC,KAAA,CAAM,CAAA,CAAA,EAAE5C,EAAA,CAAA,mBAA+BgB,EAAA,EAAS,QAAxCW,EAAA,CAAA,EAAA1B,EAAAC,EAAA,EAAA,EAAA,aAAA,CAAA,yBAexD+B,EAAA,EAAA,sBAAA,EDpFA,UAyBMY,GAyCOC,GAlEbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAF,KAEAG,KACAC,KACAC,KACAC,KAEAC,wGAIMtB,GAAuB,gBAyChBC,IAAmB,IAAA,CAA1B,MAAOA,CAAmB,CA2B9BsB,YACWC,EACFC,EACyBC,EAAU,CAFjC,KAAAF,WAAAA,EACF,KAAAC,UAAAA,EACyB,KAAAC,KAAAA,EA1BjB,KAAAC,gBAAkBC,EAAOC,EAAe,EACxC,KAAAC,iBAAmBF,EAAOG,EAAkB,EAC5C,KAAAC,gBAAkBJ,EAAOK,EAAsB,EAC/C,KAAAC,kBAAoBN,EAAOO,EAA4B,EACvD,KAAAC,iBAAmBR,EAAOS,EAAgB,EAC1C,KAAAC,OAASV,EAAOW,EAAM,EAE9B,KAAA1C,kBAAoB2C,EAAO,EAAE,EAC7B,KAAAC,UAAYD,EAAO,EAAI,EAIhC,KAAAE,WAAa,IAAIC,GAGjB,KAAAC,MAAkB,CAAC,EAAE,EAErB,KAAAC,aAAe,EAIf,KAAAC,iBAAmB,IAAIH,GAOrB,KAAKpD,KAAO,IAAIwD,GAAU,CACxBC,KAAM,IAAIC,GAAY,GAAI,CAACC,GAAWC,QAAQ,CAAC,EAC/CC,QAAS,IAAIH,GAAY,GAAI,CAACC,GAAWC,QAAQ,CAAC,EACnD,CACH,CAEME,UAAQ,QAAAC,GAAA,sBACZ,KAAK7B,UAAU8B,aAAe,GAE1B,KAAK7B,OACH,KAAKA,MAAM8B,qBACb,MAAM,KAAK1B,iBACR2B,mBAAmB,KAAK/B,KAAK8B,mBAAmBE,kBAAmB,KAAKhC,KAAK8B,mBAAmBG,SAAS,EACzGC,KACExF,GAAmB,CAClB,KAAKA,gBAAkBA,CACzB,EACCyF,GAAK,CACJ,KAAKzF,gBAAkB,IACzB,CAAC,EAGL,KAAKyB,kBAAkBiE,IACrB,MAAM,KAAKhC,iBAAiBiC,yBAC1B,KAAKrC,KAAK8B,mBAAmBE,kBAC7B,KAAKhC,KAAKsC,YAAY,CACvB,GAIL,KAAKhF,mBAAqB,KAAK0C,KAAK1C,oBAGjC,KAAKA,oBACR,KAAK4D,MAAMqB,KAAK,cAAc,EAEhC,KAAK1E,KAAO,IAAIwD,GAAU,CACxBC,KAAM,IAAIC,GAAY,KAAK7E,iBAAiB4E,MAAQ,GAAI,CAACE,GAAWC,QAAQ,CAAC,EAC7EC,QAAS,IAAIH,GAAY,KAAK7E,iBAAiB8F,QAAQC,kBAAkBC,MAAQ,GAAI,CAAClB,GAAWC,QAAQ,CAAC,EAC3G,EAED,KAAKV,UAAUqB,IAAI,EAAK,CAC1B,GAEMO,QAAM,QAAAf,GAAA,sBACV,GAAI,CAAC,KAAKgB,YAAW,EAAI,CACvB,KAAK3C,gBAAgB4C,eAAe,qBAAqB,EACzD,MACF,CACA,OAAQ,KAAK1B,aAAY,CACvB,IAAK,GAAG,CACN,IAAMG,EAAO,KAAKzD,KAAKE,IAAI,MAAM,EAAE+E,MAC7BN,EAAS,CACbC,iBAAkB,CAChBC,KAAM,KAAK7E,KAAKE,IAAI,SAAS,GAAG+E,QAG9BC,EAAO,MAAM,KAAK3C,iBAAiB4C,8BAA8B,KAAKtG,gBAAiB4E,EAAMkB,CAAM,EACzG,KAAKpB,iBAAiB6B,KAAKF,CAAI,EAE/B,KAAKlF,KAAKqF,eAAc,EACnB,KAAKC,WAAU,EAOlB,KAAKC,MAAK,GANV,KAAK1G,gBAAkB,MAAM,KAAK0D,iBAAiB2B,mBACjDgB,EACA,KAAK3C,iBAAiBiD,wBAAuB,CAAE,EAEjD,KAAKC,QAAQC,KAAI,GAInB,MACF,CACA,IAAK,GAAG,CACN,MAAM,KAAKC,oBAAoBC,0BAAyB,EACxD,KAAKL,MAAK,EACV,MACF,CACF,CACF,GAEQR,aAAW,CACjB,OAAQ,KAAKzB,aAAY,CACvB,IAAK,GAAG,CACN,IAAMuC,EAAW,CAAC,KAAK7F,KAAKE,IAAI,MAAM,EAAG,KAAKF,KAAKE,IAAI,SAAS,CAAC,EAC7D4F,EAAQ,GACZD,OAAAA,EAASE,QAASC,GAAK,CACrBA,GAAGC,YAAW,EACTD,GAAGF,QACNA,EAAQ,GAEZ,CAAC,EACMA,CACT,CACA,IAAK,GACH,MAAO,EAEX,CACA,MAAO,EACT,CAEAI,mBAAiB,CACf,OAAQ,KAAK5C,aAAY,CACvB,IAAK,GACH,OAAO,KAAKtD,MAAMI,MAEpB,IAAK,GACH,OAAO,KAAKuF,qBAAqBO,iBAErC,CACA,MAAO,EACT,CAEA/G,YAAYgH,EAA4B,CACtC,KAAK7C,aAAe6C,GAAOC,cAC3B,KAAKjD,WAAWiC,KAAK,KAAK/B,MAAM,KAAKC,YAAY,CAAC,CACpD,CAEA+C,UAAQ,CACN,OAAO,KAAK/C,aAAe,CAC7B,CAEA9C,MAAI,CACF,KAAK8F,mBAAmB,IAAK,CAC3B,KAAKb,SAASc,SAAQ,CACxB,CAAC,CACH,CAEAjB,YAAU,CACR,OAAO,KAAKhC,eAAiB,KAAKD,MAAMmD,OAAS,CACnD,CAEM7H,qBAAmB,QAAAoF,GAAA,sBACvB,KAAK4B,qBAAqBc,iBAAiBlC,IAAI,EAAI,EACnD,IAAMmC,EAAO,MAAMC,GACjB,KAAKlE,gBACFmE,aAAa,CACZnD,KAAM,WACNW,UAAW,KAAK7B,iBAAiBsE,eAAc,GAAM,KAAKtE,iBAAiBuE,UAAS,EACrF,EACAC,KACCC,GAAYC,IACV,KAAKtE,kBACFuE,UAAU,CACTC,MAAO,KAAKtE,iBAAiBuE,QAAQ,oCAAoC,EACzEC,QAAS,KAAKxE,iBAAiBuE,QAAQ,sCAAsC,EAC7EE,kBAAmB,KAAKzE,iBAAiBuE,QAAQ,kCAAkC,EACnFG,iBAAkB,KAAK1E,iBAAiBuE,QAAQ,WAAW,EAC5D,EACAI,UAAWC,GAAa,CACvB,KAAK9B,qBAAqBc,iBAAiBlC,IAAI,EAAK,EAChDkD,GACF,KAAK9I,oBAAmB,CAE5B,CAAC,EACI+I,GAAW,IAAMT,CAAG,EAC5B,CAAC,CACH,EAGCU,EAAWjB,EAAKkB,OAAOD,SACvBE,EAAmB,MAAM,KAAKC,oCAAoCH,CAAQ,EAChF,MAAM,KAAKpF,iBACRwF,sBAAsB,KAAKC,WAAWL,CAAQ,EAAGjB,EAAKkB,OAAOnE,KAAMoE,EAAkBpH,GAAsB,CAC1G,CACE3B,GAAI,KAAKD,iBAAiBC,GAC1BsF,UAAW,KAAKvF,iBAAiBuF,UAClC,CACF,EACA6D,MAEC,IAAMC,QAAQC,KAAK,qCAAqC,CAAC,EAE7D,KAAKxF,kBACFuE,UAAU,CACTC,MAAO,KAAKtE,iBAAiBuE,QAAQ,sCAAsC,EAC3EE,kBAAmB,KAAKzE,iBAAiBuE,QAAQ,wDAAwD,EACzGG,iBAAkB,KAAK1E,iBAAiBuE,QAAQ,6CAA6C,EAC9F,EACAI,UAAWC,GAAa,CACnBA,GACF,KAAKvF,UAAUqD,MAAM,EAAI,EACzB,KAAKxC,OAAOqF,SAAS,KAAK7F,iBAAiB8F,4BAA4BV,CAAQ,CAAC,IAEhF,KAAKhC,oBAAoB2C,SAAQ,EACjC,KAAK3C,qBAAqBc,iBAAiBlC,IAAI,EAAK,EAExD,CAAC,CACL,GAEMuD,oCAAoCH,EAAgB,QAAA5D,GAAA,sBACxD,OAAI,KAAKxB,iBAAiBsE,eAAc,EAC/B,qBAAqB,KAAKtE,iBAAiBsE,eAAc,CAAE,qBAAqBc,CAAQ,QAE1F,yBAAyBA,CAAQ,QAC1C,GAEAK,WAAWL,EAAgB,CACzB,MAAO,eAAeA,CAAQ,EAChC,CAEAY,UAAQ,CACN,OAAK,KAAKpG,MAAM8B,mBAGT,uBAFE,eAGX,CAEAqC,mBAAmBkC,EAAgB,CACjC,GAAI,CAAC,KAAKtC,kBAAiB,EAAI,CAC7BsC,EAAI,EACJ,MACF,CAEA,KAAK7F,kBACFuE,UAAU,CACTuB,KAAM,OACNtB,MAAO,KAAKtE,iBAAiBuE,QAAQ,uBAAuB,EAC5DC,QAAS,KAAKxE,iBAAiBuE,QAAQ,yBAAyB,EAChEE,kBAAmB,KAAKzE,iBAAiBuE,QAAQ,YAAY,EAC7DG,iBAAkB,KAAK1E,iBAAiBuE,QAAQ,WAAW,EAC5D,EACAI,UAAWC,GAAa,CACnBA,GACFe,EAAI,CAER,CAAC,CACL,CAEAjD,OAAK,CACH,KAAKe,mBAAmB,IAAK,CAC3B,KAAKnD,WAAWiC,KAAK,EAAE,EACvB,KAAKlD,UAAUqD,MAAK,CACtB,CAAC,CACH,CAEAmD,iBAAe,CACb,OAAI,KAAKpD,WAAU,EACV,cAEF,aACT,iDAhRW5E,GAAmBiI,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EA8BpBG,EAAe,CAAA,CAAA,CAAA,+BA9BdpI,EAAmBqI,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,6HAVnB,CACTzG,GACA,CACE2G,QAASC,GACTC,SAAU,CAAEC,4BAA6B,EAAK,EAC/C,CACF,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,aAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,SAAA,eAAA,EAAA,CAAA,QAAA,KAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,kBAAA,SAAA,eAAA,EAAA,CAAA,eAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,sBAAA,mBAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,WAAA,GAAA,kBAAA,MAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,WAAA,GAAA,kBAAA,UAAA,OAAA,KAAA,EAAA,eAAA,CAAA,EAAAC,SAAA,SAAAT,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WC9DH7K,EAAA,EAAA,MAAA,CAAA,EAA6B,EAAA,MAAA,CAAA,EACRR,EAAA,CAAA,mBAA4BgB,EAAA,EAAM,EAEvDR,EAAA,EAAA,MAAA,CAAA,EAA4B,EAAA,oBAAA,EAExBJ,EAAA,EAAA2L,GAAA,EAAA,EAAA,cAAA,CAAA,EAAwB,EAAAC,GAAA,EAAA,EAAA,cAAA,EA0Bf,EAAAC,GAAA,GAAA,GAAA,cAAA,KAAA,EAAAC,EAAA,EA6BXlL,EAAA,EACAR,EAAA,GAAA,qBAAA,CAAA,EAAgC,GAAA,MAAA,CAAA,EAE5BJ,EAAA,GAAA+L,GAAA,EAAA,EAAA,MAAA,CAAA,EAGA3L,EAAA,GAAA,MAAA,EAAA,EACEJ,EAAA,GAAAgM,GAAA,EAAA,EAAA,MAAA,EAAA,EAMA5L,EAAA,GAAA,MAAA,EAAA,EAAmC,GAAA,SAAA,EAAA,EACNC,EAAA,QAAA,UAAA,CAAA4L,OAAA3L,EAAA4L,CAAA,EAAAxL,EAASwK,EAAA3D,MAAA,CAAO,CAAA,CAAA,EAAE3H,EAAA,EAAA,oBAAgCgB,EAAA,EAC7ER,EAAA,GAAA,SAAA,EAAA,EAAwCC,EAAA,QAAA,UAAA,CAAA4L,OAAA3L,EAAA4L,CAAA,EAAAxL,EAASwK,EAAApE,OAAA,CAAQ,CAAA,CAAA,EACvDlH,EAAA,EAAA,oBACFgB,EAAA,EAAS,EACL,EACF,EACF,EACa,EAGvBZ,EAAA,GAAAmM,GAAA,EAAA,EAAA,uBAAA,EAAA,QAnFqB5K,EAAA,CAAA,EAAA1B,EAAAC,EAAA,EAAA,EAAAoL,EAAAX,SAAA,CAAA,CAAA,EAEhBhJ,EAAA,CAAA,EAAArB,EAAA,SAAAgL,EAAAhG,UAAA,CAAA,EAED3D,EAAA,CAAA,EAAAC,EAAA0J,EAAA7F,MAAAmD,OAAA,EAAA,EAAA,CAAA,EA0DEjH,EAAA,CAAA,EAAAC,EAAA0J,EAAA5I,kBAAA,EAAA,GAAA,EAAA,EAIEf,EAAA,CAAA,EAAAC,EAAA0J,EAAA7C,SAAA,EAAA,GAAA,EAAA,EAO+C9G,EAAA,CAAA,EAAA1B,EAAAC,EAAA,GAAA,GAAA,cAAA,CAAA,EAE3CyB,EAAA,CAAA,EAAAI,EAAA,IAAA7B,EAAA,GAAA,GAAAoL,EAAAR,gBAAA,CAAA,EAAA,GAAA,EAQWnJ,EAAA,CAAA,EAAArB,EAAA,OAAAgL,EAAAhG,UAAA,CAAA,kBD7CnBkH,EAAYC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GAAcC,GACdC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,GACAC,GAAqBC,GAAAC,GAAAC,GAAAC,GACrBC,GAA0BC,GAC1BC,GACAC,GACAC,GAAgBC,GAAAC,GAAAC,GAAAC,GAChBC,GACAC,GACAC,GACAC,GACAC,EAAgB,EAAAC,OAAA,CAAA;gHAAA,CAAA,CAAA,CAAA,SAYP5L,CAAmB,GAAA,IElEhC,IAQa6L,GARbC,GAAAC,EAAA,SAQaF,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,iDAAzBA,EAAyB,CAAA,+BAAzBA,EAAyBG,UAAA,CAAA,CAAA,8BAAA,CAAA,EAAAC,MAAA,GAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,OAAA,eAAA,EAAA,QAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,gBAAA,gBAAA,EAAA,CAAA,EAAA,gBAAA,gBAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,QAAA,KAAA,SAAA,KAAA,UAAA,YAAA,OAAA,OAAA,QAAA,4BAAA,EAAA,CAAA,YAAA,UAAA,YAAA,UAAA,IAAA,sqBAAA,OAAA,QAAA,EAAA,aAAA,EAAA,CAAA,IAAA,ooBAAA,OAAA,QAAA,EAAA,eAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,cAAA,cAAA,EAAA,CAAA,EAAA,cAAA,cAAA,EAAA,CAAA,EAAA,cAAA,cAAA,EAAA,CAAA,EAAA,cAAA,cAAA,EAAA,CAAA,EAAA,kBAAA,kBAAA,EAAA,CAAA,EAAA,kBAAA,kBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICRtCE,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,MAAA,CAAA,EAAiC,EAAA,MAAA,CAAA,EACe,EAAA,MAAA,CAAA,EAEhDD,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,MAAA,CAAA,EACFC,EAAA,OACAF,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,OAAA,CAAA,EAME,EAAA,OAAA,CAAA,EAMJC,EAAA,OACAF,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,GAAA,MAAA,EAAA,EAA4C,GAAA,MAAA,EAAA,EACA,GAAA,MAAA,EAAA,EACA,GAAA,MAAA,EAAA,EAE9CC,EAAA,EACAF,EAAA,GAAA,MAAA,EAAA,EACEC,EAAA,GAAA,MAAA,EAAA,EAA4C,GAAA,MAAA,EAAA,EACA,GAAA,MAAA,EAAA,EACA,GAAA,MAAA,EAAA,EAE9CC,EAAA,EACAF,EAAA,GAAA,MAAA,EAAA,EACEC,EAAA,GAAA,MAAA,EAAA,EAA4C,GAAA,MAAA,EAAA,EACA,GAAA,MAAA,EAAA,EACA,GAAA,MAAA,EAAA,EAE9CC,EAAA,EAAM;mID9BKZ,CAAyB,GAAA,6BGG9Ba,EAAA,CAAA,kBAAAC,EAAA,IAAAC,EAAAC,yBAAA,EAAA,GAAA,6BAVNC,EAAA,EAAA,mBAAA,CAAA,EAA+C,EAAA,uBAAA,EAE3CC,EAAA,EAAA,8BAAA,EACFC,EAAA,EACAF,EAAA,EAAA,wBAAA,EACEJ,EAAA,CAAA,mBACAO,EAAA,EAAAC,GAAA,EAAA,CAAA,EAMFF,EAAA,EACAF,EAAA,EAAA,GAAA,EAAGJ,EAAA,CAAA,mBAA8EM,EAAA,EAAI,kBARnFG,EAAA,CAAA,EAAAR,EAAA,IAAAS,EAAA,EAAA,EAAAR,EAAAS,yBAAA,CAAA,EAAA,GAAA,EACAF,EAAA,CAAA,EAAAG,EAAAV,EAAAW,aAAAC,WAAAZ,EAAAa,iBAAAC,sBAAAd,EAAAC,yBAAA,EAAA,GAAAD,EAAAW,aAAAC,WAAAZ,EAAAa,iBAAAE,eAAAf,EAAAgB,2BAAA,EAAA,EAAA,EAOCT,EAAA,CAAA,EAAAU,EAAAT,EAAA,EAAA,EAAA,4DAAA,CAAA,0BAqBWV,EAAA,CAAA,yBAAAC,EAAA,IAAAS,EAAA,EAAA,EAAA,wDAAA,EAAA,GAAA,4BAEAV,EAAA,CAAA,oCAAAC,EAAA,IAAAmB,GAAA,EAAA,EAAA,kDAAAC,GAAA,EAAAC,GAAApB,EAAAqB,iCAAA,CAAA,CAAA,EAAA,GAAA,sCAdNnB,EAAA,EAAA,KAAA,EAAK,EAAA,IAAA,CAAA,EACAoB,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAxB,EAAAyB,EAAA,CAAA,EAAA,OAAAC,EAAS1B,EAAA2B,mBAAmB,EAAI,CAAC,CAAA,CAAA,EAAE7B,EAAA,CAAA,mBAEpCM,EAAA,EACFN,EAAA,EAAA,KAAA,EACAI,EAAA,EAAA,IAAA,CAAA,EAAGoB,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAxB,EAAAyB,EAAA,CAAA,EAAA,OAAAC,EAAS1B,EAAA2B,mBAAmB,EAAK,CAAC,CAAA,CAAA,EAAE7B,EAAA,CAAA,mBAErCM,EAAA,EACDN,EAAA,EAAA,OAAA,EACDI,EAAA,EAAA,MAAA,EACGJ,EAAA,GAAA,IAAA,EACDO,EAAA,GAAAuB,GAAA,EAAA,CAAA,EAAgD,GAAAC,GAAA,EAAA,CAAA,EAQhD/B,EAAA,GAAA,IAAA,EAACM,EAAA,EACF,qBAnBqCG,EAAA,CAAA,EAAAU,EAAAT,EAAA,EAAA,EAAA,iDAAA,CAAA,EAICD,EAAA,CAAA,EAAAU,EAAAT,EAAA,EAAA,EAAA,kDAAA,CAAA,EAMrCD,EAAA,CAAA,EAAAG,EAAAV,EAAAqB,iCAAA,IAAA,EAAA,GAAA,EAAA,6BA4BFnB,EAAA,EAAA,MAAA,CAAA,EAA6B,EAAA,IAAA,CAAA,EACUJ,EAAA,CAAA,EAAcM,EAAA,EAAI,0BAApDG,EAAA,EAAAuB,EAAA,OAAAC,EAAAC,IAAAC,EAAA,EAAkC1B,EAAA,EAAAU,EAAAc,EAAAC,GAAA,6BAf3C9B,EAAA,EAAA,sBAAA,CAAA,EAAmD,EAAA,4BAAA,EACrB,EAAA,iBAAA,EACT,EAAA,WAAA,CAAA,EACkCJ,EAAA,EAAA,SAAA,EAAOM,EAAA,EACxDN,EAAA,CAAA,mBACFM,EAAA,EACAF,EAAA,EAAA,uBAAA,EACEJ,EAAA,CAAA,mBAIFM,EAAA,EAAwB,EAE1B8B,GAAA,GAAAC,GAAA,EAAA,EAAA,MAAA,EAAAC,EAAA,EAKFhC,EAAA,mBAdMG,EAAA,CAAA,EAAAR,EAAA,IAAAS,EAAA,EAAA,EAAA,qDAAA,EAAA,GAAA,EAGAD,EAAA,CAAA,EAAAR,EAAA,IAAAmB,GAAA,EAAA,EAAA,kDAAAC,GAAA,EAAAC,GAAApB,EAAAqC,4BAAA,CAAA,CAAA,EAAA,GAAA,EAMJ9B,EAAA,CAAA,EAAA+B,GAAAtC,EAAAuC,uBAAA,CAAwB,6BAUtBrC,EAAA,EAAA,eAAA,EAAA,EACEJ,EAAA,CAAA,EACAI,EAAA,EAAA,UAAA,EAAUJ,EAAA,CAAA,EAA+CM,EAAA,EAAW,kDAFxD0B,EAAA,cAAAU,CAAA,EACZjC,EAAA,EAAAR,EAAA,IAAAC,EAAAyC,qBAAA,MAAAzC,EAAAyC,oBAAAC,aAAAC,CAAA,GAAA,KAAA,KAAA3C,EAAAyC,oBAAAC,aAAAC,CAAA,EAAAC,MAAA,GAAA,EACUrC,EAAA,CAAA,EAAAU,EAAAjB,EAAAyC,qBAAA,MAAAzC,EAAAyC,oBAAAC,aAAAC,CAAA,GAAA,KAAA,KAAA3C,EAAAyC,oBAAAC,aAAAC,CAAA,EAAAX,GAAA,4BAHd3B,EAAA,EAAAwC,GAAA,EAAA,EAAA,eAAA,EAAA,6BAAAnC,EAAAV,EAAAA,EAAAyC,qBAAA,MAAAzC,EAAAyC,oBAAAC,aAAAC,CAAA,GAAA,OAAA3C,EAAAyC,oBAAAC,aAAAC,CAAA,EAAAG,aAAA,GAAA,CAAA,6BApDRC,EAAA,EAAA,CAAA,EACE7C,EAAA,EAAA,kBAAA,CAAA,EAA8C,EAAA,MAAA,CAAA,EACT,EAAA,MAAA,CAAA,EACRJ,EAAA,CAAA,mBAA8EM,EAAA,EACvGC,EAAA,EAAA2C,GAAA,GAAA,EAAA,KAAA,EAwBF5C,EAAA,EACAC,EAAA,EAAA4C,GAAA,GAAA,EAAA,sBAAA,CAAA,EAqBA/C,EAAA,EAAA,KAAA,EACEgC,GAAA,EAAAgB,GAAA,EAAA,EAAA,KAAA,KAAAd,EAAA,EAQFhC,EAAA,EAAM,uBA3DI0B,EAAA,YAAA9B,EAAAmD,IAAA,EAGiB5C,EAAA,CAAA,EAAAU,EAAAT,EAAA,EAAA,EAAA,4DAAA,CAAA,EACzBD,EAAA,CAAA,EAAAG,EAAAV,EAAAqB,iCAAA,EAAA,EAAA,EAAA,EAAA,EAyBFd,EAAA,EAAAG,EAAAV,EAAAqC,4BAAA,EAAA,EAAA,EAAA,EAAA,EAsBE9B,EAAA,CAAA,EAAA+B,GAAAtC,EAAAoD,kBAAAC,QAAA,yBAYNlD,EAAA,EAAA,sBAAA,2BAhEFE,EAAA,EAAAiD,GAAA,GAAA,EAAA,eAAA,CAAA,EAAoB,EAAAC,GAAA,EAAA,EAAA,sBAAA,iBAApB7C,EAAAV,EAAAwD,UAAA,EAAA,EAAA,CAAA,GDjBF,OAwBaC,GAsBAC,GA9CbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KAQAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,wFAEanB,GAAc,eAsBdC,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,CApBlCmB,aAAA,CAsBmB,KAAAC,iBAAmBC,EAAOC,EAAkB,EAC7D,KAAAC,WAAaF,EAAOG,EAAU,EAIrB,KAAA1B,UAAY2B,EAAO,EAAI,EAChC,KAAAnE,2BAA6B,GAuGV,KAAAH,iBAAmBA,GACnB,KAAAuE,KAAOA,KAtG1BC,YAAYC,EAAsB,CAChC,GAAIA,EAAQC,gBAAiB,CAI3B,GAHA,KAAK9C,oBAAsB,KAAK8C,iBAAiBC,QAAQ/C,oBACzD,KAAK9B,aAAe,KAAK4E,iBAAiBE,SAEtC,CAAC,KAAKF,iBAAmB,CAAC,KAAK9C,oBAAoBC,aAAc,OAErE,KAAKD,qBAAqBC,cAAcgD,KAAK,CAACC,EAAGC,IAC/CD,GAAGE,kBAAoBD,GAAGC,gBAAkBF,GAAG3D,KAAK8D,cAAcF,GAAG5D,GAAG,EAAI2D,GAAGE,gBAAkB,GAAK,CAAC,EAGzG,KAAK1C,KAAO,IAAI4C,GAAU,CACxBrD,aAAc,IAAIsD,GAAU,CAAA,CAAE,EAC/B,EACD,IAAM3C,EAAW,KAAKZ,qBAAqBC,cAAcuD,IAAKC,GAAS,IAAIC,GAAYD,EAAKL,eAAe,CAAC,EAC5G,KAAK1C,KAAKE,SAASX,aAAe,IAAIsD,GAAU3C,CAAQ,EACxD,KAAKF,KAAKE,SAASX,aAAa0D,aAC7BC,KACCC,GAAmB,KAAKrB,UAAU,EAClCgB,EAAI,IAAM,KAAK9C,KAAKoD,YAAW,CAAE,CAAC,EAEnCC,UAAS,EAEZ,KAAKhD,UAAUiD,IAAI,EAAK,CAC1B,CACF,CAEA,IAAIrD,mBAAiB,CACnB,OAAO,KAAKD,KAAKE,SAAS,YAC5B,CAEA1B,mBAAmB+E,EAAc,CAC/B,KAAKvD,KAAKE,SAASX,aAAe,IAAIsD,GACpC,KAAKvD,qBAAqBC,cAAcuD,IAAKU,GAAK,CAChD,IAAMlB,EAAWkB,GAAG7D,aAAe,GAAQ4D,EAC3C,OAAO,IAAIP,GAAYV,CAAQ,CACjC,CAAC,CAAC,EAEJ,KAAKtC,KAAKoD,YAAW,CACvB,CAEAlF,kCAAgC,CAC9B,OAAO,KAAKoB,qBAAqBC,cAAckE,OAAQD,GAAM,CAACA,GAAG7D,YAAY,EAAE+D,QAAU,CAC3F,CAEAtE,wBAAsB,CACpB,OAAO,KAAKE,qBAAqBC,cAAckE,OAAQD,GAAMA,GAAG7D,YAAY,CAC9E,CAEAT,6BAA2B,CACzB,OAAO,KAAKE,uBAAsB,EAAGsE,QAAU,CACjD,CAEAC,mBAAiB,CACf,OAAO,KAAK3D,MAAM4D,KACpB,CAEMC,QAAM,QAAAC,GAAA,sBACV,KAAK7D,kBAAkBC,SAAS6D,QAAQ,CAACC,EAAaC,IAAS,CAC7D,KAAK3E,oBAAoBC,aAAa0E,CAAK,EAAEvB,gBAAkBsB,EAAYT,KAC7E,CAAC,EACD,IAAMlB,EAAS,CACb/C,oBAAqB,KAAKA,qBAE5B,GAAI,KAAK8C,gBAAiB,CACxB,IAAM8B,EAAS,KAAK9B,gBACpB8B,OAAAA,EAAO7B,OAASA,EAChB,MAAM,KAAKV,iBAAiBwC,mCAAmCD,CAAM,EACrE,KAAKlE,KAAKoE,eAAc,EACjBF,EAAOG,EAChB,CACA,MAAM,IAAIC,MAAM,qBAAqB,CACvC,GAEAhH,0BAAwB,CACtB,OAAI,KAAK8E,gBAAgBE,SAAS7E,WAAaC,GAAiB6G,gBACvD,0CAEH,KAAKzH,yBAAwB,EAAK,EAC7B,+CAEA,yCAGb,CAEAA,0BAAwB,CACtB,IAAI0H,EAA2B,EAC/B,QAAWzB,KAAQ,KAAKzD,oBAAoBC,aACtCwD,EAAKL,iBACP8B,IAIJ,OAAI,KAAKhH,aAAaiH,WAAa,GAAK,KAAKjH,aAAakH,eAAiB,EAClEzC,KAAK0C,MAAO,KAAKnH,aAAakH,eAAiB,KAAKlH,aAAaiH,WAAcD,CAAwB,EAEvG,CAEX,iDA7GWjE,EAAqB,CAAA,+BAArBA,EAAqBqE,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,OAAA,CAAAzC,gBAAA,iBAAA,EAAA0C,SAAA,CAAAC,GAJrB,CAAClD,EAAkB,CAAC,EAAAmD,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,gBAAA,cAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,OAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,SAAA,SAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GC1CjCnI,EAAA,EAAAqI,GAAA,GAAA,EAAA,mBAAA,CAAA,EAAgH,EAAAC,GAAA,EAAA,CAAA,OAAhHjI,EAAA+H,EAAA9H,cAAA8H,EAAA9H,aAAAC,WAAA6H,EAAA5H,iBAAAE,eAAA0H,EAAAzH,2BAAA,EAAA,CAAA,iBD6BI4H,EACAC,EAAeC,EACfC,GACAC,GAAiBC,GACjBC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,GACAC,GAAqBC,GAAAC,GACrBC,GAAsBC,GAAAC,GAAAC,GACtBC,GAA0BC,GAC1BC,GAAkBC,GAAAC,GAAAC,GAAAC,GAClBC,GACAC,EAAyB,EAAAC,OAAA,CAAA;kHAAA,CAAA,CAAA,CAAA,SAMhB/G,CAAqB,GAAA,0BGpB5BgH,GAAA,CAAA,4BAXAC,EAAA,EAAA,MAAA,EAAA,EAA4B,EAAA,KAAA,EACrB,EAAA,IAAA,EAAA,EAEDC,EAAA,CAAA,EACAD,EAAA,EAAA,WAAA,EAAA,EAA4DC,EAAA,EAAA,aAAA,EAAWC,EAAA,EAAW,EAChF,EAENF,EAAA,EAAA,KAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,EAAM,EAERC,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,0BATOC,EAAA,CAAA,EAAAC,EAAA,OAAAC,EAAAC,qBAAA,KAAA,KAAAD,EAAAC,oBAAAC,IAAAC,EAAA,EACDL,EAAA,EAAAM,EAAA,IAAAJ,EAAAC,qBAAA,KAAA,KAAAD,EAAAC,oBAAAC,IAAA,GAAA,EAKFJ,EAAA,CAAA,EAAAM,EAAA,IAAAC,EAAA,EAAA,EAAAL,EAAAM,2BAAAN,EAAAC,qBAAA,KAAA,KAAAD,EAAAC,oBAAAM,SAAA,CAAA,EAAA,GAAA,EAGWT,EAAA,CAAA,EAAAC,EAAA,mBAAAS,CAAA,0BAIed,EAAA,CAAA,yBAAAe,EAAAJ,EAAA,EAAA,EAAA,iDAAA,CAAA,2BAoBhBX,EAAA,CAAA,kBAAAU,EAAA,IAAAJ,EAAAU,yBAAA,GAAA,6BAbNjB,EAAA,EAAA,mBAAA,EAAA,EAA6C,EAAA,uBAAA,EAEzCkB,EAAA,EAAA,8BAAA,EACFhB,EAAA,EACAF,EAAA,EAAA,wBAAA,EACEC,EAAA,CAAA,mBACAE,EAAA,EAAAgB,GAAA,EAAA,CAAA,EASFjB,EAAA,EACAF,EAAA,EAAA,GAAA,EAAGC,EAAA,CAAA,mBAAiGC,EAAA,EAAI,mBAXtGG,EAAA,CAAA,EAAAM,EAAA,IAAAC,EAAA,EAAA,EAAAL,EAAAa,uBAAA,CAAA,EAAA,GAAA,EACAf,EAAA,CAAA,EAAAgB,EAAAd,EAAAC,oBAAAc,iBAAAf,EAAAgB,qBAAAC,4CAAAjB,EAAAU,yBAAA,GAAAV,EAAAkB,4BAAAlB,EAAAC,oBAAAc,iBAAAf,EAAAgB,qBAAAG,oCAAA,EAAA,EAAA,EAUCrB,EAAA,CAAA,EAAAW,EAAAJ,EAAA,EAAA,EAAA,+EAAA,CAAA,sCAIHZ,EAAA,EAAA,mBAAA,EAAA,EAAmC,EAAA,uBAAA,EACV,EAAA,UAAA,EACXC,EAAA,EAAA,SAAA,EAAOC,EAAA,EAAW,EAE9BF,EAAA,EAAA,wBAAA,EACEC,EAAA,CAAA,mBAIFC,EAAA,EACAF,EAAA,EAAA,GAAA,EACEC,EAAA,CAAA,mBAIFC,EAAA,EACAF,EAAA,GAAA,0BAAA,EAA0B,GAAA,SAAA,EAAA,EACG2B,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAtB,EAAAuB,EAAA,CAAA,EAAA,OAAAC,EAASxB,EAAAyB,SAAA,CAAU,CAAA,CAAA,EAC5C/B,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,EAAA,EAAwC2B,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAtB,EAAAuB,EAAA,CAAA,EAAA,OAAAC,EAASxB,EAAA0B,UAAA,CAAW,CAAA,CAAA,EAC1DhC,EAAA,EAAA,oBACFC,EAAA,EAAS,EACgB,qBAvBXI,EAAA,OAAA,OAAA,EAKdD,EAAA,CAAA,EAAAM,EAAA,IAAAuB,GAAA,EAAA,EAAA,8BAAAC,GAAA,GAAAC,GAAA7B,EAAA8B,iBAAA,MAAA9B,EAAA8B,gBAAAC,QAAA,MAAA/B,EAAA8B,gBAAAC,OAAA9B,qBAAA,KAAA,KAAAD,EAAA8B,gBAAAC,OAAA9B,oBAAAC,GAAA,CAAA,EAAA,GAAA,EAMAJ,EAAA,CAAA,EAAAM,EAAA,IAAAuB,GAAA,EAAA,EAAA3B,EAAA8B,gBAAAC,OAAA9B,oBAAA+B,OAAA,KAAA,KAAAhC,EAAA8B,gBAAAC,OAAA9B,oBAAA+B,MAAAC,aAAAL,GAAA,GAAAC,GAAA7B,EAAA8B,iBAAA,MAAA9B,EAAA8B,gBAAAC,QAAA,MAAA/B,EAAA8B,gBAAAC,OAAA9B,qBAAA,KAAA,KAAAD,EAAA8B,gBAAAC,OAAA9B,oBAAAC,GAAA,CAAA,EAAA,GAAA,EAOEJ,EAAA,CAAA,EAAAM,EAAA,IAAAC,EAAA,GAAA,GAAA,yCAAA,EAAA,GAAA,EAGAP,EAAA,CAAA,EAAAM,EAAA,IAAAC,EAAA,GAAA,GAAA,uCAAA,EAAA,GAAA,0BAUAZ,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEG,EAAA,EAAAM,EAAA,IAAAC,EAAA,EAAA,EAAA,kDAAA,EAAA,GAAA,6BAmBAZ,EAAA,EAAA,aAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,iCAFYI,EAAA,QAAAmC,CAAA,EACVpC,EAAA,EAAAM,EAAA,IAAAC,EAAA,EAAA,EAAAL,EAAAM,2BAAA4B,CAAA,CAAA,EAAA,GAAA,6BAKJzC,EAAA,EAAA,WAAA,EACEC,EAAA,CAAA,mBAIFC,EAAA,mBAJEG,EAAA,EAAAM,EAAA,IAAAuB,GAAA,EAAA,EAAA,yDAAAC,GAAA,EAAAO,GAAAnC,EAAAoC,aAAA,CAAA,CAAA,EAAA,GAAA,6BAMF3C,EAAA,EAAA,WAAA,EACEC,EAAA,CAAA,mBAGFC,EAAA,mBAHEG,EAAA,EAAAM,EAAA,IAAAuB,GAAA,EAAA,EAAA,oDAAAC,GAAA,EAAAO,GAAAnC,EAAAoC,aAAA,CAAA,CAAA,EAAA,GAAA,yBAOR5C,GAAA,CAAA,4BA9CA6C,EAAA,EAAA,EAAA,EACE5C,EAAA,EAAA,kBAAA,EAAA,EAAmC,EAAA,YAAA,EACrBC,EAAA,CAAA,mBAA4DC,EAAA,EACxEgB,EAAA,EAAA,QAAA,EAAA,EACAf,EAAA,EAAA0C,GAAA,EAAA,EAAA,YAAA,EAKA7C,EAAA,EAAA,WAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,EAAY,EAEdF,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EACHC,EAAA,EAAA,oBAAuCC,EAAA,EACnDgB,EAAA,GAAA,QAAA,EAAA,oBAKFhB,EAAA,EACAF,EAAA,GAAA,kBAAA,EAAA,EAAmC,GAAA,YAAA,EACrBC,EAAA,EAAA,oBAAmEC,EAAA,EAC/EF,EAAA,GAAA,aAAA,EAAA,EACE8C,GAAA,GAAAC,GAAA,EAAA,EAAA,aAAA,GAAAC,EAAA,EAKF9C,EAAA,EACAC,EAAA,GAAA8C,GAAA,EAAA,EAAA,WAAA,EAA8F,GAAAC,GAAA,EAAA,EAAA,WAAA,EAchGhD,EAAA,MAEFC,EAAA,GAAAgD,GAAA,EAAA,EAAA,eAAA,EAAA,+BA9Cc7C,EAAA,YAAAC,EAAA6C,IAAA,EACK/C,EAAA,EAAAC,EAAA,WAAA,EAAA,EACHD,EAAA,CAAA,EAAAW,EAAAJ,EAAA,EAAA,GAAA,0CAAA,CAAA,EACsCP,EAAA,CAAA,EAAAC,EAAA,WAAA,EAAA,EAClDD,EAAA,EAAAgB,GAAAgC,EAAA9C,EAAA6C,KAAAE,IAAA,KAAA,IAAA,MAAAD,EAAAE,UAAAF,EAAA9C,EAAA6C,KAAAE,IAAA,KAAA,IAAA,MAAAD,EAAAG,OAAA,EAAA,EAAA,EAMEnD,EAAA,CAAA,EAAAM,EAAA,IAAAC,EAAA,EAAA,GAAA,+CAAA,EAAA,GAAA,EAIUP,EAAA,CAAA,EAAAW,EAAAJ,EAAA,GAAA,GAAA,qBAAA,CAAA,EAIVP,EAAA,CAAA,EAAAC,EAAA,cAAAM,EAAA,GAAA,GAAA,iDAAA,CAAA,EAGaP,EAAA,CAAA,EAAAC,EAAA,WAAA,EAAA,EACHD,EAAA,CAAA,EAAAW,EAAAJ,EAAA,GAAA,GAAA,iDAAA,CAAA,EAEVP,EAAA,CAAA,EAAAoD,GAAAlD,EAAAmD,oBAAA,CAAqB,EAMvBrD,EAAA,CAAA,EAAAgB,IAAAsC,EAAApD,EAAA6C,KAAAE,IAAA,WAAA,IAAA,KAAA,KAAAK,EAAAC,SAAArD,EAAAsD,WAAAC,2CAAA,KAAAH,EAAApD,EAAA6C,KAAAE,IAAA,WAAA,IAAA,KAAA,KAAAK,EAAAC,SAAArD,EAAAsD,WAAAE,yCAAA,GAAA,EAAA,EAgBW1D,EAAA,CAAA,EAAAC,EAAA,mBAAAS,CAAA,4BAzEjBZ,EAAA,EAAA6D,GAAA,GAAA,GAAA,mBAAA,EAAA,EAAyB,EAAAC,GAAA,GAAA,EAAA,kBAAzB5C,EAAAd,EAAA2D,gBAAA,EAAA,EAAA,CAAA,4BAxBF/D,EAAA,EAAAgE,GAAA,GAAA,EAAA,mBAAA,EAAA,EAIG,EAAAC,GAAA,EAAA,CAAA,kBAJH/C,EAAAd,EAAAC,qBAAAD,EAAAC,oBAAAc,iBAAAf,EAAAgB,qBAAAG,qCAAAnB,EAAAkB,2BAAA,EAAA,CAAA,0BAuGwBxB,EAAA,CAAA,yBAAAe,EAAAJ,EAAA,EAAA,EAAA,4CAAA,CAAA,2BAExBM,EAAA,EAAA,6BAAA,GAAA,CAAA,kBAEEZ,EAAA,kBAAAC,EAAA8B,eAAA,0BAMwBpC,EAAA,CAAA,yBAAAe,EAAAJ,EAAA,EAAA,EAAA,0BAAA,CAAA,qCAExBZ,EAAA,EAAA,oCAAA,GAAA,CAAA,EAGE2B,EAAA,sBAAA,UAAA,CAAAC,EAAAyC,CAAA,EAAA,IAAA9D,EAAAuB,EAAA,CAAA,EAAA,OAAAC,EAAuBxB,EAAA+D,oBAAA,CAAqB,CAAA,CAAA,EAC7CpE,EAAA,qBAFCI,EAAA,oBAAAC,EAAA8B,iBAAA,KAAA,KAAA9B,EAAA8B,gBAAAkC,EAAA,0BALNvE,EAAA,EAAA,UAAA,EACEG,EAAA,EAAAqE,GAAA,EAAA,EAAA,cAAA,EAAA,EAA0B,EAAAC,GAAA,EAAA,EAAA,cAAA,EAAA,EAQ5BvE,EAAA,sCA7HJF,EAAA,EAAA,cAAA,GAAA,CAAA,EAAiD2B,EAAA,kBAAA,SAAA+C,EAAA,CAAA9C,EAAA+C,CAAA,EAAA,IAAApE,EAAAuB,EAAA,EAAA,OAAAC,EAAmBxB,EAAAqE,YAAAF,CAAA,CAAmB,CAAA,CAAA,EACrF1E,EAAA,EAAA,UAAA,EACEG,EAAA,EAAA0E,GAAA,EAAA,EAAA,cAAA,EAAA,EAA0B,EAAAC,GAAA,EAAA,EAAA,cAAA,EAAA,EAuG5B5E,EAAA,EACAF,EAAA,EAAA,UAAA,EACEG,EAAA,EAAA4E,GAAA,EAAA,EAAA,cAAA,EAAA,EAA0B,EAAAC,GAAA,EAAA,EAAA,cAAA,EAAA,EAO5B9E,EAAA,EACAC,EAAA,EAAA8E,GAAA,EAAA,EAAA,UAAA,EAYF/E,EAAA,oBA/HsBI,EAAA,gBAAA,QAAA,EAmHpBD,EAAA,CAAA,EAAAgB,EAAAd,EAAA2E,mBAAA,GAAA,CAAA,0BAmBIlF,EAAA,EAAA,KAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEG,EAAA,EAAAM,EAAA,IAAAC,EAAA,EAAA,EAAA,4DAAA,EAAA,GAAA,6BAKFZ,EAAA,EAAA,KAAA,EACEkB,EAAA,EAAA,uBAAA,EAAA,EACAjB,EAAA,CAAA,mBACFC,EAAA,mBAFwBG,EAAA,EAAAC,EAAA,SAAA,EAAA,EACtBD,EAAA,EAAAM,EAAA,IAAAC,EAAA,EAAA,EAAAL,EAAAa,uBAAA,CAAA,EAAA,GAAA,6BAVNpB,EAAA,EAAA,MAAA,EAAA,EACEG,EAAA,EAAAgF,GAAA,EAAA,EAAA,KAAA,EAAmC,EAAAC,GAAA,EAAA,EAAA,KAAA,EAYrClF,EAAA,mBAZEG,EAAA,EAAAgB,EAAAd,EAAA8B,gBAAAgD,YAAA,GAAA9E,EAAAC,qBAAA,KAAA,KAAAD,EAAAC,oBAAAc,kBAAAf,EAAAgB,qBAAAG,oCAAA,EAAA,EAAA,4BAFJvB,EAAA,EAAAmF,GAAA,EAAA,EAAA,MAAA,EAAA,iBAAAjE,EAAAd,EAAA8B,gBAAA,EAAA,EAAA,6BAqBErC,EAAA,EAAA,MAAA,EAAA,EAAgCC,EAAA,CAAA,EAAyBC,EAAA,kBAAzBG,EAAA,EAAAW,EAAAT,EAAAgF,kBAAA,CAAA,sCAI9BvF,EAAA,EAAA,MAAA,EAAA,EAAqC,EAAA,SAAA,EAAA,EACR2B,EAAA,QAAA,UAAA,CAAAC,EAAA4D,CAAA,EAAA,IAAAjF,EAAAuB,EAAA,EAAA,OAAAC,EAASxB,EAAAkF,KAAA,CAAM,CAAA,CAAA,EAAExF,EAAA,CAAA,mBAA+BC,EAAA,EAAS,QAAxCG,EAAA,CAAA,EAAAW,EAAAJ,EAAA,EAAA,EAAA,aAAA,CAAA,sCAO5CZ,EAAA,EAAA,SAAA,EAAA,EAAwC2B,EAAA,QAAA,UAAA,CAAAC,EAAA8D,CAAA,EAAA,IAAAnF,EAAAuB,EAAA,EAAA,OAAAC,EAASxB,EAAAoF,OAAA,CAAQ,CAAA,CAAA,EACvD1F,EAAA,CAAA,mBACFC,EAAA,oBADEG,EAAA,EAAAM,EAAA,IAAAC,EAAA,EAAA,EAAAL,EAAAqF,gBAAA,CAAA,EAAA,GAAA,yBASd1E,EAAA,EAAA,sBAAA,ED1MA,mBAoDM2E,GA8COC,GAlGbC,GAAAC,EAAA,KAAAC,IACAC,IAYAC,KACAC,KACAC,IACAC,KACAC,KASAC,KACAC,KACAC,KACAC,KACAT,KACAU,KACAC,KACAC,KACAC,KACAX,KACAY,KACAC,KACAC,KACAC,KACAF,KACAG,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KAEAC,mNAEM9B,GAAuB,gBA8ChBC,IAAsB,IAAA,CAA7B,MAAOA,CAAsB,CAoCjC8B,YACWC,EACFC,EACyBC,EAAU,CAFjC,KAAAF,WAAAA,EACF,KAAAC,UAAAA,EACyB,KAAAC,KAAAA,EAlCjB,KAAAC,gBAAkBC,EAAOC,EAAe,EACxC,KAAAC,mBAAqBF,EAAOG,EAAkB,EAC9C,KAAAC,iBAAmBJ,EAAOK,EAAkB,EAC5C,KAAAC,iBAAmBN,EAAOO,EAAgB,EAC1C,KAAAC,kBAAoBR,EAAOS,EAA4B,EACvD,KAAAC,gBAAkBV,EAAOW,EAAsB,EAC/C,KAAAC,OAASZ,EAAOa,EAAM,EACtB,KAAAC,IAAMd,EAAOe,EAAiB,EACtC,KAAAC,UAAYC,EAAO,EAAI,EACvB,KAAA3D,kBAAoB2D,EAAO,EAAE,EAGtC,KAAArF,WAAasF,GACb,KAAA5H,qBAAuB6H,GACvB,KAAAC,uBAAyB,GAGzB,KAAAC,MAAQ,CAAC,GAAIC,EAAW,EACxB,KAAAC,aAAe,EAGf,KAAAC,WAAa,IAAIC,GAGjB,KAAAzI,yBAA2B,EAC3B,KAAAQ,2BAA6B,GAG7B,KAAAkI,cAAgB,GAChB,KAAAC,iBAAmB,IAAIF,GAOrB,KAAKtG,KAAO,IAAIyG,GAAU,CACxBC,KAAM,IAAIC,GAAY,EAAE,EACxBtJ,IAAK,IAAIsJ,GAAY,GAAI,CAACC,GAAcC,GAAWC,QAAQ,CAAC,EAC5DpJ,UAAW,IAAIiJ,GAAYZ,GAA6BgB,uCAAuC,EAChG,CACH,CAEMC,UAAQ,QAAAC,GAAA,sBACZ,KAAKvC,UAAUwC,aAAe,GAE1B,KAAKvC,OACH,KAAKA,MAAMwC,qBACb,MAAM,KAAKlC,iBACRmC,mBAAmB,KAAKzC,KAAKwC,mBAAmBE,kBAAmB,KAAK1C,KAAKwC,mBAAmBG,SAAS,EACzGC,KACEtI,GAAmB,CAClB,KAAKA,gBAAkBA,CACzB,EACCuI,GAAK,CACJ,KAAKvI,gBAAkB,IACzB,CAAC,EAGL,KAAKkD,kBAAkBsF,IACrB,MAAM,KAAKxC,iBAAiByC,yBAC1B,KAAK/C,KAAKwC,mBAAmBE,kBAC7B,KAAK1C,KAAKgD,YAAY,CACvB,EAGE,KAAK1I,iBAEN,KAAK0F,KAAKwC,mBAAmBE,oBAC7B,KAAKpC,iBAAiB2C,sCAAqC,IAE3D,KAAK3I,gBAAkB,KAAKgG,iBAAiB4C,oCAC3C,KAAKlD,KAAKzF,OAAO9B,oBAAoBC,IACrC,KAAKsH,KAAK1C,WAAW,EAEvB,KAAK0D,IAAImC,cAAa,GAI1B,KAAKC,iBAAgB,GAGvB,KAAKjG,mBAAqB,KAAK6C,KAAK7C,oBAEtC,KAAK+D,UAAU4B,IAAI,EAAK,EAEnB,KAAK3F,oBACR,KAAKoE,MAAM8B,KAAK,cAAc,EAGhC,KAAKC,cAAa,EAClB,KAAKjI,KAAO,IAAIyG,GAAU,CACxBC,KAAM,IAAIC,GAAY,KAAK1H,iBAAiByH,MAAQ,EAAE,EACtDrJ,IAAK,IAAIsJ,GAAY,KAAKvJ,qBAAqBC,KAAO,GAAI,CAACuJ,GAAcC,GAAWC,QAAQ,CAAC,EAC7FpJ,UAAW,IAAIiJ,GACb,KAAKvJ,qBAAqBM,WAAaqI,GAA6BgB,uCAAuC,EAE9G,CACH,GAEAkB,eAAa,CACP,KAAKhJ,kBACP,KAAK7B,oBAAsB,KAAK6B,iBAAiBC,QAAQ9B,oBACpD,KAAK6B,gBAAgBgD,cAEtB,KAAK7E,qBAAqBc,iBAAmB8H,GAA4B1H,qCAEzE,KAAK4J,0BAAyB,EAE5B,KAAKjJ,gBAAgBkJ,UAAUC,WAAaC,GAAiBC,eAC/D,KAAKC,0BAAyB,GAItC,CAEAzH,iBAAe,CACb,OAAO,KAAK7B,iBAAiBC,QAAQ9B,qBAAqB+B,OAAS,CAAC,KAAK8G,sBAC3E,CAEAiC,2BAAyB,CACvB,KAAKjC,uBAAyB,GAC9B,KAAKM,cAAgB,GACrBiC,GAAM,IACJC,GAAK,KAAKxD,iBAAiBmC,mBAAmB,KAAKnI,iBAAiBkC,GAAI,KAAKlC,iBAAiBqI,SAAS,CAAC,CAAC,EAExGoB,KACCC,GAAmB,KAAKlE,UAAU,EAClCmE,EAAKC,GAAM,CAKT,GAJA,KAAK5J,gBAAkB4J,EACvB,KAAKzL,oBAAsByL,GAAI3J,QAAQ9B,oBAEvC,KAAK0L,mBAAmB,KAAK1L,qBAAqB2L,sBAAsB,EAEtE,KAAK3L,qBAAqBc,iBAAmB8H,GAA4B1H,oCAEzE,WAAKiI,cAAgB,GACrB,KAAKlI,2BAA6B,GAE5B,GAEH,KAAKyC,gBAAe,GACnB,KAAKsF,cAAgB,GACvB4C,WAAW,IAAK,CACd,KAAKC,QAAQC,KAAI,EAEjB,KAAKvD,IAAImC,cAAa,CACxB,EAAG,GAAI,EAGXkB,WAAW,IAAK,CACd,KAAK3K,2BAA6B,GAClC,KAAKkI,cAAgB,EACvB,EAAG,GAAI,CACT,CAAC,EACD4C,GAAM,CAAEC,MAAO,GAAI,CAAE,EACrBC,GAAK,CAAC,CAAC,EAERC,UAAS,CACd,CAEQR,mBAAmBC,EAA6E,CACtG,GAAIA,GAA0BA,EAAuBQ,OAAS,EAAG,CAC/D,IAAIC,EAAQ,EACZ,QAAWC,KAAQV,EACbU,EAAKC,cAAcF,IAEzB,KAAK3L,yBAA2B2L,EAChC,MACF,CAEI,KAAKpM,qBAAqBc,iBAAmB8H,GAA4B1H,oCAC3E,KAAKT,yBAA2B,EAEhC,KAAKA,yBAA2B,KAAKT,oBAAoBuM,aAAaJ,MAE1E,CAEAhB,2BAAyB,CACvB,KAAKhC,cAAgB,GACrBiC,GAAM,IACJC,GAAK,KAAKxD,iBAAiBmC,mBAAmB,KAAKnI,iBAAiBkC,GAAI,KAAKlC,iBAAiBqI,SAAS,CAAC,CAAC,EAExGoB,KACCC,GAAmB,KAAKlE,UAAU,EAClCmE,EAAKC,GAAM,CAET,GADA,KAAK5J,gBAAkB4J,EACnB,KAAK5J,gBAAgBkJ,SAASC,WAAaC,GAAiBC,cAC9D,WAAK/B,cAAgB,GACrB,KAAKqD,sBAAsBvL,2BAA6B,GAElD,GAEH,KAAKyC,gBAAe,GACnB,KAAKsF,cAAgB,GACvB4C,WAAW,IAAK,CACT,KAAKa,WAAU,IAClB,KAAKZ,QAAQC,KAAI,EAEjB,KAAKvD,IAAImC,cAAa,EAE1B,EAAG,GAAI,EAGXkB,WAAW,IAAK,CACd,KAAKY,sBAAsBvL,2BAA6B,GACxD,KAAKkI,cAAgB,EACvB,EAAG,GAAI,CACT,CAAC,EACD4C,GAAM,CAAEC,MAAO,GAAI,CAAE,EACrBC,GAAK,CAAC,CAAC,EAERC,UAAS,CACd,CAEA9H,YAAYsI,EAA4B,CAOtC,OANA,KAAK1D,aAAe0D,GAAOC,cAC3B,KAAK1D,WAAW2D,KAAK,KAAK9D,MAAM,KAAKE,YAAY,CAAC,EAE9C0D,EAAMC,cAAgBD,EAAMG,0BAC9BH,EAAMI,uBAAuBC,UAAY,IAEnCL,EAAMC,cAAa,CACzB,IAAK,GACHD,EAAM1D,aAAa+D,UAAY,GAC3B,KAAKlL,iBAAiBkJ,UAAUC,WAAaC,GAAiBC,eAChE,KAAKC,0BAAyB,EAEhC,MACF,IAAK,GACHuB,EAAM1D,aAAa+D,UAAY,GAC/B,KACJ,CACF,CAEA7J,qBAAmB,CACjB,MAAO,CACLyF,GAA6BgB,wCAC7BhB,GAA6BrF,2CAC7BqF,GAA6BpF,wCAAwC,CAEzE,CAEAlD,2BAA2BC,EAAuC,CAChE,OAAQA,EAAS,CACf,KAAKqI,GAA6BgB,wCAChC,MAAO,mDAET,KAAKhB,GAA6BrF,2CAChC,MAAO,oDAET,KAAKqF,GAA6BpF,yCAChC,MAAO,+CAET,QACE,MAAO,EAEX,CACF,CAEA3C,wBAAsB,CACpB,OACE,KAAKZ,qBAAqBc,iBAAmB8H,GAA4BoE,sCAElE,qDAEH,KAAKvM,yBAA2B,EAC3B,0DAEA,oDAGb,CAEA0B,cAAY,CACV,OAAQ,KAAKwF,mBAAmBsF,eAAc,EAAE,CAC9C,KAAKC,GAAYC,MACjB,KAAKD,GAAYE,KACf,MAAO,IACT,KAAKF,GAAYG,KACf,MAAO,KACT,QACE,MAAO,EACX,CACF,CAEMlI,QAAM,QAAA0E,GAAA,sBACV,GAAI,CAAC,KAAKyD,kBAAiB,EAAI,CACxB,KAAKb,WAAU,EACf,KAAKc,MAAK,EADS,KAAK1B,QAAQC,KAAI,EAGzC,MACF,CAEA,GAAI,CAAC,KAAK0B,YAAW,EAAI,CACvB,KAAKhG,gBAAgBiG,eAAe,qBAAqB,EACzD,MACF,CAEA,OAAQ,KAAKzE,aAAY,CACvB,IAAK,GAAG,CACN,IAAMM,EACJ,KAAK1G,KAAKE,IAAI,MAAM,EAAEM,OACtB,KAAK2E,iBAAiB2F,QAAQ,iDAAiD,EAE3E5L,EAAS,CACb9B,oBAAqB,CACnBC,IAHQ,KAAK2C,KAAKE,IAAI,KAAK,GAAGM,MAI9B9C,UAAW,KAAKsC,KAAKE,IAAI,WAAW,GAAGM,MACvCmJ,aAAc,KAAKvM,qBAAqBuM,eAGtCxI,EAAK,MAAM,KAAK8D,iBAAiB8F,8BAA8B,KAAK9L,gBAAiByH,EAAMxH,CAAM,EACvG,KAAKsH,iBAAiBwD,KAAK7I,CAAE,EAC7B,KAAKoF,cAAgB,GACrB,KAAKN,uBAAyB,GAC9B,KAAKjG,KAAKgL,eAAc,EACxB,KAAKnN,yBAA2B,EAChC,MAAM,KAAKoN,uBAAuB9J,CAAE,EACpC,KAAK4G,iBAAgB,EACrB,KAAKG,0BAAyB,EAC9B,KACF,CACA,IAAK,GAAG,CACN,IAAM/G,EAAK,MAAM,KAAKyI,uBAAuBrH,OAAM,EACnD,MAAM,KAAK0I,uBAAuB9J,CAAE,EACpC,KAAK4G,iBAAgB,EACrB,KAAKQ,0BAAyB,EAC9B,KACF,CACA,IAAK,GAAG,CACN,MAAM,KAAK2C,oBAAoBC,0BAAyB,EACxD,KAAKR,MAAK,EACV,KACF,CACF,CACF,GAEcM,uBAAuB9J,EAAU,QAAA8F,GAAA,sBAC7C,IAAM4B,EAAK,MAAM,KAAK5D,iBAAiBmC,mBAAmBjG,EAAI,KAAK8D,iBAAiBmG,wBAAuB,CAAE,EAC7G,KAAKnM,gBAAkB4J,EACvB,KAAKzL,oBAAsByL,GAAI3J,QAAQ9B,mBACzC,GAEQwN,aAAW,CACjB,OAAQ,KAAKxE,aAAY,CACvB,IAAK,GAAG,CACN,IAAMiF,EAAW,CAAC,KAAKrL,KAAKE,IAAI,MAAM,EAAG,KAAKF,KAAKE,IAAI,KAAK,CAAC,EACzDoL,EAAQ,GACZD,OAAAA,EAASE,QAASC,GAAK,CACrBA,GAAGC,YAAW,EACTD,GAAGF,QACNA,EAAQ,GAEZ,CAAC,EACMA,CACT,CACA,IAAK,GACH,MAAO,GAET,IAAK,GACH,MAAO,EAEX,CACA,MAAO,EACT,CAEAZ,mBAAiB,CACf,OAAQ,KAAKtE,aAAY,CACvB,IAAK,GACH,OAAO,KAAKpG,MAAMI,MAEpB,IAAK,GACH,OAAO,KAAKwJ,uBAAuBc,kBAAiB,EAEtD,IAAK,GACH,OAAO,KAAKQ,qBAAqBR,iBAErC,CACA,MAAO,EACT,CAEM9L,UAAQ,QAAAqI,GAAA,sBACZ,MAAM,KAAKhC,iBAAiByG,gBAAgB,KAAKzM,eAAe,EAChE,KAAKA,gBAAkB,MAAM,KAAKgG,iBAAiBmC,mBACjD,KAAKnI,gBAAgBkC,GACrB,KAAK8D,iBAAiBmG,wBAAuB,CAAE,EAEjD,KAAKO,SAAS,CAAC,EACf,KAAK1D,cAAa,CACpB,GAEApJ,WAAS,CACP,KAAK0H,cAAgB,GACrB,KAAKN,uBAAyB,EAChC,CAEA2F,iBAAe,CACb,GAAI,KAAK3C,QAAS,CAChB,GAAI,KAAK4C,WAAY,CACnB,IAAMC,EAAY,KAAK5F,MAAM6F,QAAQ,KAAKF,UAAU,EAChDC,EAAY,IACd,KAAK7C,QAAQ/C,MAAMhG,IAAI,CAAC,EAAEiK,UAAY,GACtC,KAAKwB,SAASG,CAAS,EAE3B,CACA,KAAK7C,QAAQ/C,MAAMqF,QAAQ,CAACS,EAAMC,IAAO,CACvCD,EAAKE,OAAS,IAAK,CAEjB,GAAI,OAAKjD,QAAQkD,QAAU,CAACH,EAAK7B,WAIjC,IAAI,CAAC,KAAKO,kBAAiB,EAAI,CAC7B,KAAKzB,QAAQc,cAAgBkC,EAC7B,MACF,CAEA,KAAK5G,kBACF+G,UAAU,CACTC,KAAM,OACNC,MAAO,KAAKnH,iBAAiB2F,QAAQ,uBAAuB,EAC5DyB,QAAS,KAAKpH,iBAAiB2F,QAAQ,yBAAyB,EAChE0B,kBAAmB,KAAKrH,iBAAiB2F,QAAQ,YAAY,EAC7D2B,iBAAkB,KAAKtH,iBAAiB2F,QAAQ,WAAW,EAC5D,EACAxB,UAAWoD,GAAa,CACnBA,IACF,KAAKzD,QAAQc,cAAgBkC,EAEjC,CAAC,EACL,CACF,CAAC,EACD,KAAKlE,iBAAgB,CACvB,CACF,CAEM7G,qBAAmB,QAAA+F,GAAA,sBACvB,KAAKiE,qBAAqByB,iBAAiBlF,IAAI,EAAI,EACnD,IAAMmF,EAAO,MAAMC,GACjB,KAAKtH,gBACFuH,aAAa,CACZpG,KAAM,WACNY,UAAW,KAAKrC,iBAAiB8H,eAAc,GAAM,KAAK9H,iBAAiB+H,UAAS,EACrF,EACAtE,KACCuE,GAAYC,IACV,KAAK7H,kBACF+G,UAAU,CACTE,MAAO,KAAKnH,iBAAiB2F,QAAQ,oCAAoC,EACzEyB,QAAS,KAAKpH,iBAAiB2F,QAAQ,sCAAsC,EAC7E0B,kBAAmB,KAAKrH,iBAAiB2F,QAAQ,kCAAkC,EACnF2B,iBAAkB,KAAKtH,iBAAiB2F,QAAQ,WAAW,EAC5D,EACAxB,UAAWoD,GAAa,CACvB,KAAKxB,qBAAqByB,iBAAiBlF,IAAI,EAAK,EAChDiF,GACF,KAAKxL,oBAAmB,CAE5B,CAAC,EACIiM,GAAW,IAAMD,CAAG,EAC5B,CAAC,CACH,EAGCE,EAAWR,EAAKS,OAAOD,SACvBE,EAAmB,MAAM,KAAKC,oCAAoCH,CAAQ,EAChF,MAAM,KAAKnI,iBACRuI,sBAAsB,KAAKC,WAAWL,CAAQ,EAAGR,EAAKS,OAAO3G,KAAM4G,EAAkB7K,GAAsB,CAC1G,CACEtB,GAAI,KAAKlC,iBAAiBkC,GAC1BmG,UAAW,KAAKrI,iBAAiBqI,UAClC,CACF,EACAoG,MAEC,IAAMC,QAAQC,KAAK,qCAAqC,CAAC,EAE7D,KAAKvI,kBACF+G,UAAU,CACTE,MAAO,KAAKnH,iBAAiB2F,QAAQ,sCAAsC,EAC3E0B,kBAAmB,KAAKrH,iBAAiB2F,QAAQ,wDAAwD,EACzG2B,iBAAkB,KAAKtH,iBAAiB2F,QAAQ,6CAA6C,EAC9F,EACAxB,UAAWoD,GAAa,CACnBA,GACF,KAAKhI,UAAUiG,MAAM,EAAI,EACzB,KAAKlF,OAAOoI,SAAS,KAAK5I,iBAAiB6I,4BAA4BV,CAAQ,CAAC,IAEhF,KAAKlC,oBAAoB6C,SAAQ,EACjC,KAAK7C,qBAAqByB,iBAAiBlF,IAAI,EAAK,EAExD,CAAC,CACL,GAEM8F,oCAAoCH,EAAgB,QAAAnG,GAAA,sBACxD,OAAI,KAAKhC,iBAAiB8H,eAAc,EAC/B,qBAAqB,KAAK9H,iBAAiB8H,eAAc,CAAE,qBAAqBK,CAAQ,QAE1F,yBAAyBA,CAAQ,QAC1C,GAEAK,WAAWL,EAAgB,CACzB,MAAO,eAAeA,CAAQ,EAChC,CAEAY,UAAQ,CACN,OAAI,KAAK/O,iBAAiBgD,YACjB,KAAKhD,iBAAiByH,KAE1B,KAAK/B,MAAMwC,mBAGT,uBAFE,eAGX,CAEA8G,UAAQ,CACN,OAAO,KAAK7H,aAAe,CAC7B,CAEQ2B,kBAAgB,CAClB,KAAK9I,iBAAiBgD,cAE1B,KAAKgH,QAAQkD,OAAS,GAClB,KAAKlN,iBAAmB,CAAC,KAAKA,gBAAgBgD,cAE9C,KAAKhD,gBAAgBC,OAAO9B,oBAAoBc,iBAC9C8H,GAA4B1H,qCAC9B,KAAKW,gBAAgBC,OAAO9B,oBAAoB+B,OAEhD,KAAK8J,QAAQc,cAAgB,EAC7B,KAAKd,QAAQ/C,MAAMhG,IAAI,CAAC,EAAEiK,UAAY,GAClC,KAAKlB,QAAQ/C,MAAMhG,IAAI,CAAC,IAC1B,KAAK+I,QAAQ/C,MAAMhG,IAAI,CAAC,EAAEiK,UAAY,KAE/B,KAAKlL,gBAAgBkJ,SAASC,WAAaC,GAAiBC,eACrE,KAAKW,QAAQc,cAAgB,EACzB,KAAKd,QAAQ/C,MAAMhG,IAAI,CAAC,IAC1B,KAAK+I,QAAQ/C,MAAMhG,IAAI,CAAC,EAAEiK,UAAY,MAGxC,KAAKlB,QAAQkD,OAAS,GACtB,KAAKlD,QAAQ/C,MAAMhG,IAAI,CAAC,EAAEiK,UAAY,GAClC,KAAKlB,QAAQ/C,MAAMhG,IAAI,CAAC,IAC1B,KAAK+I,QAAQ/C,MAAMhG,IAAI,CAAC,EAAEiK,UAAY,MAI9C,CAEAwB,SAASG,EAAiB,CACxB,KAAK1F,aAAe0F,EACpB,KAAK7C,QAAQc,cAAgB,KAAK3D,YACpC,CAEA/D,MAAI,CACF,KAAK6L,mBAAmB,IAAK,CAC3B,KAAKjF,QAAQkF,SAAQ,CACvB,CAAC,CACH,CAEAtE,YAAU,CACR,OAAO,KAAKzD,eAAiB,KAAKF,MAAMqD,OAAS,CACnD,CAEA2E,mBAAmBE,EAAgB,CACjC,GAAI,CAAC,KAAK1D,kBAAiB,EAAI,CAC7B0D,EAAI,EACJ,MACF,CAEA,KAAK/I,kBACF+G,UAAU,CACTC,KAAM,OACNC,MAAO,KAAKnH,iBAAiB2F,QAAQ,uBAAuB,EAC5DyB,QAAS,KAAKpH,iBAAiB2F,QAAQ,yBAAyB,EAChE0B,kBAAmB,KAAKrH,iBAAiB2F,QAAQ,YAAY,EAC7D2B,iBAAkB,KAAKtH,iBAAiB2F,QAAQ,WAAW,EAC5D,EACAxB,UAAWoD,GAAa,CACnBA,GACF0B,EAAI,CAER,CAAC,CACL,CAEAzD,OAAK,CACH,KAAKuD,mBAAmB,IAAK,CAC3B,KAAK7H,WAAW2D,KAAK,EAAE,EACvB,KAAKtF,UAAUiG,MAAK,CACtB,CAAC,CACH,CAEAnI,iBAAe,CACb,OAAI,KAAKqH,WAAU,EACV,cAEF,aACT,CAEMwE,mBAAiB,QAAApH,GAAA,sBAErB,KAAKhI,gBAAkB,MAAM,KAAKgG,iBAAiBmC,mBACjD,KAAKnI,gBAAgBkC,GACrB,KAAK8D,iBAAiBmG,wBAAuB,CAAE,EAEjD,KAAKO,SAAS,CAAC,EACf,KAAK1D,cAAa,CACpB,mDArmBWvF,GAAsB4L,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAuCvBG,EAAe,CAAA,CAAA,CAAA,+BAvCd/L,EAAsBgM,UAAA,CAAA,CAAA,6BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,oLAVtB,CACT1J,GACA,CACE4J,QAASC,GACTC,SAAU,CAAEC,4BAA6B,EAAK,EAC/C,CACF,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,oBAAA,kBAAA,uBAAA,mBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,QAAA,KAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,SAAA,SAAA,EAAA,MAAA,EAAA,CAAA,SAAA,OAAA,kBAAA,GAAA,EAAA,aAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,kBAAA,eAAA,EAAA,CAAA,eAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,OAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,WAAA,GAAA,OAAA,OAAA,kBAAA,MAAA,EAAA,UAAA,EAAA,CAAA,WAAA,GAAA,kBAAA,OAAA,EAAA,aAAA,EAAA,CAAA,kBAAA,WAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,sBAAA,mBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,QAAA,CAAA,EAAAC,SAAA,SAAAT,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WC9FHhS,EAAA,EAAA,MAAA,CAAA,EAA6B,EAAA,MAAA,CAAA,EACRC,EAAA,CAAA,mBAA4BC,EAAA,EAC/CF,EAAA,EAAA,KAAA,EAAK,EAAA,4BAAA,CAAA,EAKD2B,EAAA,oBAAA,UAAA,CAAA+Q,OAAA9Q,EAAA+Q,CAAA,EAAA5Q,EAAqBkQ,EAAAR,kBAAA,CAAmB,CAAA,CAAA,EAE1CvR,EAAA,EAA4B,EACxB,EAERF,EAAA,EAAA,MAAA,CAAA,EAA4B,EAAA,oBAAA,EAExBG,EAAA,EAAAyS,GAAA,GAAA,CAAA,EAAoC,EAAAC,GAAA,EAAA,EAAA,cAAA,CAAA,EAa3B,GAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAqJX7S,EAAA,EACAF,EAAA,GAAA,qBAAA,CAAA,EAAgC,GAAA,MAAA,EAAA,EAE5BG,EAAA,GAAA6S,GAAA,EAAA,EAAA,MAAA,EAAA,EAGAhT,EAAA,GAAA,MAAA,EAAA,EACEG,EAAA,GAAA8S,GAAA,EAAA,EAAA,MAAA,EAAA,EAMAjT,EAAA,GAAA,MAAA,EAAA,EAAmC,GAAA,SAAA,EAAA,EACN2B,EAAA,QAAA,UAAA,CAAA+Q,OAAA9Q,EAAA+Q,CAAA,EAAA5Q,EAASkQ,EAAAlE,MAAA,CAAO,CAAA,CAAA,EAAE9N,EAAA,EAAA,oBAAgCC,EAAA,EAC7EC,EAAA,GAAA+S,GAAA,EAAA,EAAA,SAAA,EAAA,EAKFhT,EAAA,EAAM,EACF,EACF,EACa,EAGvBC,EAAA,GAAAgT,GAAA,EAAA,EAAA,uBAAA,EAAA,QAzMqB9S,EAAA,CAAA,EAAAW,EAAAJ,EAAA,EAAA,GAAAqR,EAAAb,SAAA,CAAA,CAAA,EAGf/Q,EAAA,CAAA,EAAAC,EAAA,kBAAA2R,EAAA5P,eAAA,EAAmC,uBAAA,EAAA,EACN,oBAAA4P,EAAAnE,kBAAA,CAAA,EAO9BzN,EAAA,EAAAC,EAAA,SAAA2R,EAAAhJ,UAAA,CAAA,EAED5I,EAAA,CAAA,EAAAgB,EAAA4Q,EAAA5P,iBAAA,MAAA4P,EAAA5P,gBAAAgD,YAAA,EAAA,CAAA,EAqKEhF,EAAA,CAAA,EAAAgB,EAAA4Q,EAAA1M,kBAAA,EAAA,GAAA,EAAA,EAIElF,EAAA,CAAA,EAAAgB,EAAA4Q,EAAAZ,SAAA,EAAA,GAAA,EAAA,EAO+ChR,EAAA,CAAA,EAAAW,EAAAJ,EAAA,GAAA,GAAA,cAAA,CAAA,EAC7CP,EAAA,CAAA,EAAAgB,EAAA4Q,EAAA5P,iBAAA,MAAA4P,EAAA5P,gBAAAgD,YAAA,GAAA,EAAA,EAWahF,EAAA,EAAAC,EAAA,OAAA2R,EAAAhJ,UAAA,CAAA,kBDxInBmK,EAAYC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GAAaC,GACbC,GAAeC,GAAAC,GACfC,GACAC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,GACAC,GAAqBC,GAAAC,GAAAC,GAAAC,GACrBC,GACAC,GAA0BC,GAC1BC,GAAcC,GACdC,GAAgBC,GAAAC,GAAAC,GAAAC,GAChBC,GACAC,GACAC,GAAsBC,GAAAC,GAAAC,GAAAC,GACtBC,GAAeC,GACfC,GACAC,GACAC,GACAC,EAAyB,EAAAC,OAAA,CAAA;mHAAA,CAAA,CAAA,CAAA,SAYhBtQ,CAAsB,GAAA,uCG5F7BuQ,EAAA,CAAA,EACEC,EAAA,EAAA,WAAA,CAAA,EAA8BC,EAAA,QAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,gBAAAP,CAAA,CAAuB,CAAA,CAAA,EAC5DF,EAAA,EAAA,kBAAA,EAAkB,EAAA,KAAA,CAAA,EACSU,EAAA,CAAA,mBAA8BC,EAAA,EACvDX,EAAA,EAAA,IAAA,CAAA,EACEU,EAAA,CAAA,mBACFC,EAAA,EAAI,EACa,gCAJQC,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAAZ,EAAAa,KAAA,CAAA,EAEvBH,EAAA,CAAA,EAAAI,EAAA,IAAAF,EAAA,EAAA,EAAAZ,EAAAe,WAAA,EAAA,GAAA,GDXd,IAuDaC,GAvDbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KASAC,2BAmCad,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,CAkBhCe,YACSC,EACSC,EACgBC,EAAU,CAFnC,KAAAF,UAAAA,EACS,KAAAC,WAAAA,EACgB,KAAAC,KAAAA,EApBjB,KAAAC,aAAe,QACf,KAAAC,WAAaC,EAAOC,EAAkB,EACtC,KAAAC,OAASF,EAAOG,EAAS,EAC1C,KAAAC,QAAoB,CAClB,CACE5B,MAAO,0CACPE,YAAa,gDACb2B,UAAWC,IAEb,CACE9B,MAAO,6CACPE,YAAa,mDACb2B,UAAWE,GACZ,EAEH,KAAAC,kBAAoB,IAAIC,EAMrB,CAEHC,UAAQ,CACN,KAAKf,UAAUgB,aAAe,EAChC,CAEAzC,gBAAgB0C,EAAc,CAC5B,IAAMP,EAAY,KAAKQ,WAAWD,EAAOP,SAAS,EAClD,KAAKG,kBAAkBM,KAAK,CAAEC,iBAAkBV,EAAUU,iBAAkBnB,WAAYS,EAAUT,UAAU,CAAE,EAC9G,KAAKoB,MAAK,CACZ,CAEQH,WAAWI,EAA0C,CAC3D,IAAMC,EAAwB,CAC5BC,MAAO,KAAKrB,aACZD,KAAM,CAAEuB,mBAAoB,KAAKvB,MAAMuB,kBAAkB,GAI3D,OADsB,KAAKrB,WAAWsB,UAAUC,GAAYC,MAAM,IAEhEL,EAAKM,SAAW,QAChBN,EAAKO,UAAY,SAEJ,KAAKvB,OAAOwB,KAAKT,EAAMC,CAAI,EAC5BS,iBAChB,CAEAX,OAAK,CACH,KAAKrB,UAAUqB,MAAK,CACtB,iDAnDWrC,GAAqBiD,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAqBtBG,EAAe,CAAA,CAAA,CAAA,+BArBdpD,EAAqBqD,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,SAAA,CAAAC,GAJrB,CAACC,EAAkB,CAAC,CAAA,EAAAC,MAAA,GAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,QAAA,KAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICnDjC/E,EAAA,EAAA,MAAA,CAAA,EAA6B,EAAA,MAAA,CAAA,EACRU,EAAA,CAAA,mBAAiCC,EAAA,EAAM,EAE5DX,EAAA,EAAA,KAAA,EAAK,EAAA,oBAAA,EACiB,EAAA,MAAA,CAAA,EAEhBiF,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,EAUFvE,EAAA,EAAM,EAERX,EAAA,EAAA,qBAAA,CAAA,EAAgC,EAAA,MAAA,CAAA,EACK,GAAA,SAAA,CAAA,EACNC,EAAA,QAAA,UAAA,CAAA,OAAS+E,EAAAzB,MAAA,CAAO,CAAA,EAAE7C,EAAA,EAAA,oBAAgCC,EAAA,EAAS,EAClF,EACa,SArBFC,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,eAAA,CAAA,EAKkBF,EAAA,CAAA,EAAAuE,EAAA,UAAAH,EAAArC,OAAA,EAcY/B,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,EAAA,cAAA,CAAA,kBDsB/CsE,EAAYC,GACZC,EAAeC,EACfC,GACAC,GAAaC,GAAAC,GACbC,GACAC,GACAC,GACAC,EAAgB,EAAAC,OAAA,CAAA;kHAAA,CAAA,CAAA,CAAA,SAMP9E,CAAqB,GAAA,uCG1C5B+E,EAAA,EAAA,oCAAA,GAAA,CAAA,EAGEC,EAAA,sBAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAuBF,EAAAG,oBAAA,CAAqB,CAAA,CAAA,EAC7CC,EAAA,oBAFCC,EAAA,oBAAAL,EAAAM,iBAAA,KAAA,KAAAN,EAAAM,gBAAAC,EAAA,6BAQAX,EAAA,EAAA,MAAA,CAAA,EAAgCY,EAAA,CAAA,EAAyBJ,EAAA,kBAAzBK,EAAA,EAAAC,EAAAV,EAAAW,kBAAA,CAAA,6BAI9Bf,EAAA,EAAA,MAAA,EAAA,EAAqC,EAAA,IAAA,EAAA,EAEjCY,EAAA,CAAA,mBACAZ,EAAA,EAAA,WAAA,EAAA,EAA0BY,EAAA,EAAA,aAAA,EAAWJ,EAAA,EAAW,EAC9C,kBAHoCK,EAAA,EAAAJ,EAAA,OAAAL,EAAAY,cAAA,KAAA,KAAAZ,EAAAY,aAAAC,KAAAC,EAAA,EACtCL,EAAA,EAAAM,EAAA,IAAAC,EAAA,EAAA,EAAAhB,EAAAY,cAAA,KAAA,KAAAZ,EAAAY,aAAAK,IAAA,EAAA,GAAA,sCAQFrB,EAAA,EAAA,SAAA,EAAA,EAAwCC,EAAA,QAAA,UAAA,CAAAC,EAAAoB,CAAA,EAAA,IAAAlB,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAmB,MAAA,CAAO,CAAA,CAAA,EAAEX,EAAA,CAAA,mBAAgCJ,EAAA,QAAhCK,EAAA,EAAAC,EAAAM,EAAA,EAAA,EAAA,cAAA,CAAA,sCAE1DpB,EAAA,EAAA,SAAA,EAAA,EAA2BC,EAAA,QAAA,UAAA,CAAAC,EAAAsB,CAAA,EAAA,IAAApB,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAmB,MAAA,CAAO,CAAA,CAAA,EAAEX,EAAA,CAAA,mBAAgCJ,EAAA,EAC7ER,EAAA,EAAA,SAAA,EAAA,EAAwCC,EAAA,QAAA,UAAA,CAAAC,EAAAsB,CAAA,EAAA,IAAApB,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAqB,OAAA,CAAQ,CAAA,CAAA,EACvDb,EAAA,CAAA,mBACFJ,EAAA,QAH6CK,EAAA,EAAAC,EAAAM,EAAA,EAAA,EAAA,cAAA,CAAA,EAE3CP,EAAA,CAAA,EAAAM,EAAA,IAAAC,EAAA,EAAA,EAAA,aAAA,EAAA,GAAA,yBASdM,EAAA,EAAA,sBAAA,EDlDA,OAiFaC,GAjFbC,GAAAC,EAAA,KAAAC,IACAC,IAWAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAZ,KACAa,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,qEA4Ca7B,IAAwB,IAAA,CAA/B,MAAOA,CAAwB,CAkBnC8B,YACWC,EACFC,EACyBC,EAAU,CAFjC,KAAAF,WAAAA,EACF,KAAAC,UAAAA,EACyB,KAAAC,KAAAA,EAlBjB,KAAAC,eAAiBC,GAASC,EAAOC,EAAsB,CAAC,EACxD,KAAAC,iBAAmBF,EAAOG,EAAkB,EAC5C,KAAAC,gBAAkBJ,EAAOK,EAAsB,EAC/C,KAAAC,kBAAoBN,EAAOO,EAA4B,EACvD,KAAAC,iBAAmBR,EAAOS,EAAgB,EAC1C,KAAAC,OAASV,EAAOW,EAAM,EACtB,KAAAC,IAAMZ,EAAOa,EAAiB,EAEtC,KAAAC,UAAYC,EAAO,EAAI,EAGhC,KAAAC,iBAAmB,IAAIC,GACvB,KAAAC,WAAa,IAAID,GACR,KAAAjE,kBAAoB+D,EAAO,EAAE,EA0DtC,KAAA9D,aAAe,CACbK,KAAM,2CACNJ,KAAM,KAAKgD,iBAAiBiB,wBAAuB,EAtDlD,CAEGC,UAAQ,QAAAC,GAAA,sBACZ,KAAKzB,UAAU0B,aAAe,GAE1B,KAAKzB,MAAM0B,qBACb,MAAM,KAAKrB,iBACRsB,mBAAmB,KAAK3B,KAAK0B,mBAAmBE,kBAAmB,KAAK5B,KAAK0B,mBAAmBG,SAAS,EACzGC,KACEhF,GAAmB,CAClB,KAAKA,gBAAkBA,CACzB,EACCiF,GAAK,CACJ,KAAKjF,gBAAkB,IACzB,CAAC,EAGL,KAAKK,kBAAkB6E,IACrB,MAAM,KAAK3B,iBAAiB4B,yBAC1B,KAAKjC,KAAK0B,mBAAmBE,kBAC7B,KAAK5B,KAAKkC,YAAY,CACvB,EAGE,KAAKpF,kBACR,KAAKA,gBAAkB,KAAKuD,iBAAiB8B,oCAAoC,KAAKnC,KAAKoC,WAAW,EACtG,KAAKrB,IAAIsB,cAAa,IAG1B,KAAKpB,UAAUe,IAAI,EAAK,CAC1B,GAEMnE,QAAM,QAAA2D,GAAA,sBACL,KAAK1E,kBACR,MAAM,KAAKuD,iBAAiBiC,sBAAsB,mBAAoB,CACpEC,sBAAuB,CACrBtC,eAAgB,KAAKA,eAAc,GAEtC,GAEH,MAAM,KAAKuC,oBAAoBC,0BAAyB,EACxD,KAAK9E,MAAK,CACZ,GAEA+E,mBAAiB,CACf,OAAO,KAAKF,qBAAqBE,iBACnC,CAEAC,cAAY,CACV,OAAO,KAAKD,kBAAiB,GAAM,CAAC,KAAK5F,iBAAmB,KAAK0F,qBAAqBI,WACxF,CAOMjG,qBAAmB,QAAA6E,GAAA,sBACvB,KAAKgB,qBAAqBK,iBAAiBb,IAAI,EAAI,EACnD,IAAMc,EAAO,MAAMC,GACjB,KAAKxC,gBACFyC,aAAa,CACZC,KAAM,WACNpB,UAAW,KAAKxB,iBAAiBJ,eAAc,GAAM,KAAKI,iBAAiB6C,UAAS,EACrF,EACAC,KACCC,GAAYC,IACV,KAAK5C,kBACF6C,UAAU,CACTC,MAAO,KAAK5C,iBAAiB6C,QAAQ,oCAAoC,EACzEC,QAAS,KAAK9C,iBAAiB6C,QAAQ,sCAAsC,EAC7EE,kBAAmB,KAAK/C,iBAAiB6C,QAAQ,kCAAkC,EACnFG,iBAAkB,KAAKhD,iBAAiB6C,QAAQ,WAAW,EAC5D,EACAI,UAAWC,GAAa,CACvB,KAAKrB,qBAAqBK,iBAAiBb,IAAI,EAAK,EAChD6B,GACF,KAAKlH,oBAAmB,CAE5B,CAAC,EACImH,GAAW,IAAMT,CAAG,EAC5B,CAAC,CACH,EAGCU,EAAWjB,EAAKkB,OAAOD,SACvBE,EAAmB,MAAM,KAAKC,oCAAoCH,CAAQ,EAChF,MAAM,KAAK1D,iBACR8D,sBAAsB,KAAKC,WAAWL,CAAQ,EAAGjB,EAAKkB,OAAOf,KAAMgB,EAAkBI,GAAsB,CAC1G,CACEtH,GAAI,KAAKD,iBAAiBC,GAC1B8E,UAAW,KAAK/E,iBAAiB+E,UAClC,CACF,EACAyC,MAEC,IAAMC,QAAQC,KAAK,qCAAqC,CAAC,EAE7D,KAAK/D,kBACF6C,UAAU,CACTC,MAAO,KAAK5C,iBAAiB6C,QAAQ,sCAAsC,EAC3EE,kBAAmB,KAAK/C,iBAAiB6C,QAAQ,wDAAwD,EACzGG,iBAAkB,KAAKhD,iBAAiB6C,QAAQ,6CAA6C,EAC9F,EACAI,UAAWC,GAAa,CACnBA,GACF,KAAK9D,UAAUpC,MAAM,EAAI,EACzB,KAAKkD,OAAO4D,SAAS,KAAKpE,iBAAiBqE,4BAA4BX,CAAQ,CAAC,IAEhF,KAAKvB,oBAAoBmC,SAAQ,EACjC,KAAKnC,qBAAqBK,iBAAiBb,IAAI,EAAK,EAExD,CAAC,CACL,GAEMkC,oCAAoCH,EAAgB,QAAAvC,GAAA,sBACxD,OAAI,KAAKnB,iBAAiBJ,eAAc,EAC/B,qBAAqB,KAAKI,iBAAiBJ,eAAc,CAAE,qBAAqB8D,CAAQ,QAE1F,yBAAyBA,CAAQ,QAC1C,GAEAK,WAAWL,EAAgB,CACzB,MAAO,eAAeA,CAAQ,EAChC,CAEAa,UAAQ,CACN,OAAK,KAAK5E,MAAM0B,mBAGT,uBAFE,eAGX,CAEAmD,mBAAmBC,EAAgB,CACjC,GAAI,CAAC,KAAKpC,kBAAiB,EAAI,CAC7BoC,EAAI,EACJ,MACF,CAEA,KAAKrE,kBACF6C,UAAU,CACTyB,KAAM,OACNxB,MAAO,KAAK5C,iBAAiB6C,QAAQ,uBAAuB,EAC5DC,QAAS,KAAK9C,iBAAiB6C,QAAQ,yBAAyB,EAChEE,kBAAmB,KAAK/C,iBAAiB6C,QAAQ,YAAY,EAC7DG,iBAAkB,KAAKhD,iBAAiB6C,QAAQ,WAAW,EAC5D,EACAI,UAAWC,GAAa,CACnBA,GACFiB,EAAI,CAER,CAAC,CACL,CAEAnH,OAAK,CACH,KAAKkH,mBAAmB,IAAK,CAC3B,KAAK9E,UAAUpC,MAAK,CACtB,CAAC,CACH,iDApLWI,GAAwBiH,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAqBzBG,EAAe,CAAA,CAAA,CAAA,+BArBdpH,EAAwBqH,UAAA,CAAA,CAAA,+BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,kFAJxB,CAAChF,EAAkB,CAAC,CAAA,EAAAkF,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,QAAA,KAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,sBAAA,mBAAA,EAAA,CAAA,qBAAA,GAAA,QAAA,YAAA,SAAA,SAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAL,EAAAC,EAAA,CAAAD,EAAA,IC7EjClJ,EAAA,EAAA,MAAA,CAAA,EAA6B,EAAA,MAAA,CAAA,EACRY,EAAA,CAAA,mBAA4BJ,EAAA,EAAM,EAEvDR,EAAA,EAAA,MAAA,CAAA,EAA4B,EAAA,oBAAA,EACN,EAAA,MAAA,CAAA,EAEhBY,EAAA,CAAA,mBACAZ,EAAA,EAAA,WAAA,CAAA,oBACEY,EAAA,GAAA,gBAAA,EACFJ,EAAA,EAAW,EAGbgJ,EAAA,GAAAC,GAAA,EAAA,EAAA,oCAAA,CAAA,EAOFjJ,EAAA,EACAR,EAAA,GAAA,qBAAA,CAAA,EAAgC,GAAA,MAAA,CAAA,EAE5BwJ,EAAA,GAAAE,GAAA,EAAA,EAAA,MAAA,CAAA,EAGA1J,EAAA,GAAA,MAAA,EAAA,EACEwJ,EAAA,GAAAG,GAAA,EAAA,EAAA,MAAA,EAAA,EASA3J,EAAA,GAAA,MAAA,EAAA,EACEwJ,EAAA,GAAAI,GAAA,EAAA,EAAA,SAAA,EAAA,EAAgC,GAAAC,GAAA,EAAA,CAAA,EAQlCrJ,EAAA,EAAM,EACF,EACF,EACa,EAGvBgJ,EAAA,GAAAM,GAAA,EAAA,EAAA,uBAAA,EAAA,SAjDqBjJ,EAAA,CAAA,EAAAC,EAAAM,EAAA,EAAA,EAAA+H,EAAAX,SAAA,CAAA,CAAA,EAEhB3H,EAAA,CAAA,EAAAJ,EAAA,SAAA0I,EAAAtE,UAAA,CAAA,EAGChE,EAAA,CAAA,EAAAM,EAAA,IAAAC,EAAA,EAAA,GAAA,+BAAA,EAAA,GAAA,EACUP,EAAA,CAAA,EAAAJ,EAAA,cAAAW,EAAA,GAAA,GAAA,uCAAA,CAAA,EAKZP,EAAA,CAAA,EAAAkJ,EAAAZ,EAAAvF,KAAAoG,mBAAA,GAAA,EAAA,EAUEnJ,EAAA,CAAA,EAAAkJ,EAAAZ,EAAAnI,cAAA,MAAAmI,EAAAnI,aAAAC,MAAAkI,EAAApI,kBAAA,EAAA,GAAA,EAAA,EAIEF,EAAA,CAAA,EAAAkJ,EAAAZ,EAAAnI,cAAA,MAAAmI,EAAAnI,aAAAC,KAAA,GAAA,EAAA,EAUEJ,EAAA,CAAA,EAAAkJ,EAAAZ,EAAAvF,MAAA,MAAAuF,EAAAvF,KAAAoG,mBAAA,GAAA,EAAA,EAcanJ,EAAA,CAAA,EAAAJ,EAAA,OAAA0I,EAAAtE,UAAA,CAAA,kBDInBoF,EAAYC,GACZC,EAAeC,EACfC,GACAC,GAAeC,GAAAC,GACfC,GAAeC,GAAAC,GACfC,GAAaC,GACbC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAA0BC,GAC1BC,GACAC,GACAC,GACAC,GAEAC,GAAmBC,GACnBC,EAA4B,EAAAC,OAAA,CAAA;qHAAA,CAAA,CAAA,CAAA,SAMnBpK,CAAwB,GAAA,0BGxD/BqK,EAAA,EAAA,aAAA,yBAIIC,EAAA,EAAA,aAAA,EAAA,EAAwDC,EAAA,CAAA,mBAA6BC,EAAA,SAAzEC,EAAA,OAAA,OAAA,EAA4CC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,WAAA,CAAA,6BAH5DN,EAAA,EAAA,aAAA,EAAA,EAA4F,EAAA,MAAA,CAAA,EAExFC,EAAA,CAAA,EACAM,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,EAAA,EACFN,EAAA,EACAF,EAAA,EAAA,MAAA,EAAA,EAAoCC,EAAA,CAAA,EAAiCC,EAAA,EAAM,iCALxBC,EAAA,QAAAM,CAAA,EAEjDL,EAAA,CAAA,EAAAM,EAAA,IAAAD,EAAAE,KAAA,GAAA,EAC8BP,EAAA,EAAAD,EAAA,OAAAM,EAAAG,WAAA,EAEIR,EAAA,CAAA,EAAAC,EAAAQ,EAAAC,oBAAAL,CAAA,CAAA,sCA/B5CM,EAAA,CAAA,EACEf,EAAA,EAAA,8BAAA,CAAA,EAGEgB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAN,EAAAO,EAAA,EAAA,OAAAC,EAAgBR,EAAAS,WAAAL,CAAA,CAAkB,CAAA,CAAA,EAAC,gBAAA,SAAAA,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAN,EAAAO,EAAA,EAAA,OAAAC,EAClBR,EAAAU,aAAAN,CAAA,CAAoB,CAAA,CAAA,EAEvCf,EAAA,EACAF,EAAA,EAAA,kBAAA,CAAA,EAA0C,EAAA,QAAA,EAAA,CAAA,mBAQtCgB,EAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAN,EAAAO,EAAA,EAAA,OAAAC,EAAiBR,EAAAW,YAAAP,CAAA,CAAmB,CAAA,CAAA,EAPtCf,EAAA,EAUAF,EAAA,EAAA,mBAAA,EAAA,CAAA,EAA0CgB,EAAA,iBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAN,EAAAO,EAAA,EAAA,OAAAC,EAAkBR,EAAAY,UAAAR,EAAAS,OAAAC,KAAA,CAA8B,CAAA,CAAA,EACxF3B,EAAA,EAAA,aAAA,CAAA,EAAkC,GAAA,IAAA,CAAA,EAE9BC,EAAA,EAAA,oBACFC,EAAA,EAAI,EAENK,EAAA,GAAAqB,GAAA,EAAA,EAAA,cAAA,EAAA,EAAkD,GAAAC,GAAA,EAAA,EAAA,aAAA,EAAA,EAQpD3B,EAAA,EAAmB,+BA/BnBE,EAAA,EAAAD,EAAA,mBAAAU,EAAAiB,gBAAA,CAAA,EAAsC,6BAAA,EAAA,EAWpC1B,EAAA,CAAA,EAAA2B,GAAA,cAAAzB,EAAA,EAAA,EAAA,eAAA,CAAA,EACAH,EAAA,cAAAU,EAAAmB,qBAAA,EAAqC,kBAAAC,CAAA,EAQjC7B,EAAA,CAAA,EAAAM,EAAA,IAAAJ,EAAA,GAAA,GAAA,mBAAA,EAAA,GAAA,EAGUF,EAAA,CAAA,EAAAD,EAAA,OAAAU,EAAAqB,gBAAA,EAAAC,OAAA,CAAA,EACiB/B,EAAA,EAAAD,EAAA,UAAAU,EAAAqB,gBAAA,CAAA,yBAYnCnC,EAAA,EAAA,sBAAA,EDtCF,aAgDaqC,GA8BAC,GA9EbC,GAAAC,EAAA,KAAAC,IAcAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAH,KACAI,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAA,KACAC,KACAC,KACAC,KACAC,KACAC,gHAGajC,GAAoB,oBA8BpBC,IAA6B,IAAA,CAApC,MAAOA,CAA6B,CA0CxCiC,YAA6BC,EAAsB,CAAtB,KAAAA,WAAAA,EAtCnB,KAAAC,sBAAwB,IAAIC,GAEtC,KAAAC,aAAe,QACE,KAAAC,OAASC,EAAOC,EAAS,EACzB,KAAAC,WAAaF,EAAOG,EAAkB,EAEtC,KAAAC,eAAiBC,GAASL,EAAOM,EAAsB,CAAC,EAExD,KAAAC,UAAYF,GAASL,EAAOQ,EAAgB,CAAC,EACtD,KAAAC,mBAAqBT,EAAOU,EAAkB,EAC9C,KAAAC,qCAAuC,GAE9B,KAAAC,iBAAmBZ,EAAOa,EAAkB,EAC5C,KAAAC,0BAA4BT,GAASL,EAAOe,EAAkC,CAAC,EAIxF,KAAAC,oBAAsB,GACtB,KAAAC,aAAe,GAEvB,KAAAC,QAAUC,EAA2C,CAAA,CAAE,EACvD,KAAAC,YAAcD,EAAe,EAAE,EAC/B,KAAAjE,gBAAkBiE,EAA2C,IAAI,EACjE,KAAA7D,gBAAkB+D,EAAS,IACzB,KAAKH,QAAO,EAAGI,OACZC,GACCA,EAAOxF,KAAKyF,YAAW,EAAGC,QAAQ,KAAKL,YAAW,CAAE,GAAK,GACzD,CAAC,KAAKlE,gBAAe,EAAGwE,KAAMC,GAAaA,EAASC,KAAOL,EAAOK,EAAE,CAAC,CACxE,EAEM,KAAAC,UAAYV,EAAO,EAAI,EAEhC,KAAA/D,sBAAwB,IAAI0E,GAOtB,KAAK1B,eAAc,IACrB,KAAK2B,oBAAsB/B,EAAOgC,EAAmB,GAEvDC,GAAO,IAAM,KAAKrC,sBAAsBsC,KAAK,KAAKhF,gBAAe,CAAE,CAAC,CACtE,CAEMiF,UAAQ,QAAAC,GAAA,sBACZ,KAAKzB,qCAAuC,MAAM,KAAK0B,iCAAgC,EAEvF,MAAM,KAAKC,4BAA2B,EACtC,MAAM,KAAKC,eAAc,EAEzB,IAAIC,EAAqD,CAAA,EACzD,GAAI,KAAKC,MACPD,EAAiB,MAAM,KAAK5B,iBAAiB8B,8BAA8B,KAAKD,KAAK,UAC5E,KAAK3B,0BAAyB,EAAI,CAC3C,IAAM6B,EAAwB,KAAK/B,iBAAiBgC,oCAAoC,EAAI,EAM5F,GALID,GACFH,EAAeK,KAAKF,CAAqB,EAIvC,KAAKhC,sCAAwC,KAAKK,qBAAuB,CAAC,KAAKC,aAAc,CAC/F,IAAM6B,EAAwB,KAAKlC,iBAAiBmC,oCAClD,KAAK/B,oBACL,EAAI,EAEF8B,GACFN,EAAeK,KAAKC,CAAqB,CAE7C,CACF,CACA,KAAK5F,gBAAgB8F,IAAIR,CAAc,EACvC,KAAKX,UAAUmB,IAAI,EAAK,EAExB,KAAK5F,sBAAsB6F,aAAaC,KAAKC,GAAmB,KAAKxD,UAAU,CAAC,EAAEyD,UAAWhC,GAAe,CACtG,OAAOA,GAAgB,UACzB,KAAKA,YAAY4B,IAAI5B,GAAaI,YAAW,CAAE,CAEnD,CAAC,CACH,GAEMa,kCAAgC,QAAAD,GAAA,sBACpC,OAAK,KAAK7B,UAAS,GAGH,MAAM8C,GACpB,KAAK5C,mBAAmB6C,eAAe,KAAK/C,UAAS,EAAI,GAAI,CAAC/C,EAAiB,CAAC,CAAC,GAEpEA,EAAiB,EALvB,EAMX,GAIM8E,6BAA2B,QAAAF,GAAA,sBAC/B,GAAI,KAAKtB,0BAAyB,GAAM,KAAKH,qCAAsC,CAEjF,IAAM4C,EAAe,MAAMF,GACzB,KAAKtB,oBAAoByB,IAAI,KAAKpD,eAAc,EAAI,IAAIqD,GAAiB,CAAEC,QAAS,EAAI,CAAE,CAAC,CAAC,EAE9F,KAAK1C,oBAAsBuC,GAAcG,SAASC,QAGlD,IAAMC,EAAkC,MAAM,KAAKhD,iBAAiBiD,qBAClE,CAACC,GAA0BC,2CAA2C,EACtE,CAAEC,SAAU,CAAC,CAAE,EAEjB,KAAK/C,aAAe2C,GAAiCK,kBAAkB1G,OAAS,CAClF,CACF,GAEMgF,gBAAc,QAAAH,GAAA,sBASlB,IAAM6B,GAPgB,MAAM,KAAKrD,iBAAiBiD,qBAChD,CACEC,GAA0BI,yCAC1BJ,GAA0BC,2CAA2C,EAEvE,CAAEC,SAAU,GAAG,CAAE,GAEoBC,kBAAoB,CAAA,EAC3D,GAAI,KAAKnD,0BAAyB,EAAI,CAEpC,IAAM6B,EAAwB,KAAK/B,iBAAiBgC,oCAAoC,EAAI,EAM5F,GALID,GACFsB,EAAiBE,QAAQxB,CAAqB,EAI5C,KAAKhC,sCAAwC,KAAKK,qBAAuB,CAAC,KAAKC,aAAc,CAC/F,IAAM6B,EAAwB,KAAKlC,iBAAiBmC,oCAClD,KAAK/B,oBACL,EAAI,EAEF8B,GACFmB,EAAiBE,QAAQrB,CAAqB,CAElD,CACF,CACA,KAAK5B,QAAQ8B,IAAIiB,CAAgB,EACjC,KAAKG,iBAAgB,CACvB,GAEMC,qBAAmB,QAAAjC,GAAA,sBACvB,KAAKP,UAAUmB,IAAI,EAAI,EACvB,MAAM,KAAKT,eAAc,EACzB,KAAKV,UAAUmB,IAAI,EAAK,CAC1B,GAEMtG,WAAW6E,EAAwC,QAAAa,GAAA,sBACvD,IAAMkC,EAAwB,CAC5BC,MAAO,KAAKzE,aACZ0E,KAAM,CACJC,mBAAoB,CAAEC,kBAAmBnD,GAAQK,GAAI+C,UAAWpD,GAAQoD,SAAS,EACjFC,mBAAoB,GACpBC,OAAQtD,GAAQsD,OAChB7I,YAAauF,GAAQvF,YACrB8I,aAAc,KAAKrC,QAID,KAAKvC,WAAW6E,UAAUC,GAAYC,MAAM,IAEhEX,EAAKY,SAAW,QAChBZ,EAAKa,UAAY,SAGnB,IAAIC,EASJ,GARI7D,GAAQsD,QAAQQ,oBAClBD,EAAS,KAAKrF,OAAOuF,KAAKC,GAAwBjB,CAAI,EAC7C/C,GAAQsD,QAAQW,iBACzBJ,EAAS,KAAKrF,OAAOuF,KAAKG,GAAqBnB,CAAI,EAEnDc,EAAS,KAAKrF,OAAOuF,KAAKI,GAA0BpB,CAAI,EAGtD,EADmB,MAAMjB,GAAe+B,EAAOO,YAAW,CAAE,IACzC,CAACpE,GAAQvF,YAAa,CAC3C,KAAK6F,UAAUmB,IAAI,EAAI,EACvB,IAAM4C,EAAmB,MAAM,KAAKhF,iBAAiBiF,mBAAmBtE,GAAQK,GAAIL,GAAQoD,SAAS,EACrG,KAAKzH,gBAAgB4I,OAAQC,GAAW,CACtC,IAAMC,EAAQD,EAAQE,UAAWC,GAASA,EAAKtE,KAAOL,GAAQK,EAAE,EAChE,OAAIoE,IAAU,KACZD,EAAQC,CAAK,EAAIJ,GAEZG,CACT,CAAC,EACD,KAAKlE,UAAUmB,IAAI,EAAK,CAC1B,CACF,GAEArG,aAAa4E,EAAuB,CAClC,KAAKrE,gBAAgB4I,OAAQ5I,GAAmB,CAC9C,IAAM8I,EAAQ9I,EAAgBuE,QAAQF,CAAM,EAC5C,OAAIyE,GAAS,GACX9I,EAAgBiJ,OAAOH,EAAO,CAAC,EAE1B,CAAC,GAAG9I,CAAe,CAC5B,CAAC,CACH,CAEAL,UAAU0E,EAAmC,CAC3C,GAAI,CAACA,EAAQ,CACX,KAAK6E,aAAY,EACjB,MACF,CAEA,KAAKlJ,gBAAgB4I,OAAQ5I,IACTA,EAAgBmJ,IAAKC,GAAMA,EAAE1E,EAAE,EAClC2E,SAAShF,EAAOK,EAAE,GAC/B1E,EAAgB2F,KAAKtB,CAAM,EAE7B,KAAK6C,iBAAgB,EACrB,KAAKoC,uBAAuBC,WAAU,EAC/B,CAAC,GAAGvJ,CAAe,EAC3B,CACH,CAEAN,YAAY8J,EAAU,CAEpB,GADAA,EAAMC,eAAc,EAChB,OAAKrJ,gBAAe,EAAGC,OAAS,IAIhC,KAAKD,gBAAe,EAAGC,SAAW,EAAG,CACvC,IAAMqJ,EAAc,KAAKtJ,gBAAe,EAAG,CAAC,EAC5C,KAAKT,UAAU+J,CAAW,CAC5B,CACF,CAEAxC,kBAAgB,CACV,KAAKyC,sBAAsBC,eAAe/J,QAC5C,KAAK8J,qBAAqBC,cAAc/J,MAAQ,IAElD,KAAKK,sBAAsB2J,SAAS,EAAE,CACxC,CAEMX,cAAY,QAAAhE,GAAA,sBAChB,IAAMkC,EAAwB,CAC5BC,MAAO,KAAKzE,aACZ0E,KAAM,CAAEI,mBAAoB,EAAI,GAGZ,KAAK1E,WAAW6E,UAAUC,GAAYC,MAAM,IAEhEX,EAAKY,SAAW,QAChBZ,EAAKa,UAAY,SAEnB,IAAMC,EAAS,KAAKrF,OAAOuF,KAAK0B,GAAuB1C,CAAI,EAC3Dc,EAAO6B,kBAAkBC,kBACtBhE,KAAKC,GAAmBiC,EAAO6B,kBAAkBtH,UAAU,CAAC,EAC5DyD,UAAWsD,GAAS,CACnB,KAAKS,4BAA4BT,EAAMU,iBAAkBV,EAAM/G,UAAU,CAC3E,CAAC,EACH,MAAM0D,GAAe+B,EAAOO,YAAW,CAAE,CAC3C,GAEQwB,4BAA4BT,EAA6B/G,EAAsB,CACrF+G,EACGxD,KACCC,GAAmBxD,CAAU,EAC7B0H,GAAK,CAAC,EACNC,EAAWC,GACT,KAAK3G,iBAAiBiF,mBAAmB0B,EAAU,KAAK3G,iBAAiB4G,wBAAuB,EAAI,EAAK,CAAC,EAE5GnB,EAAKoB,GAAO,KAAKvK,gBAAe,EAAG2F,KAAK4E,CAAE,CAAC,EAC3CpB,EAAI,IAAM,KAAKzG,sBAAsBsC,KAAK,KAAKhF,gBAAe,CAAE,CAAC,EACjEoK,EAAU,IAAM,KAAKjD,oBAAmB,CAAE,CAAC,EAE5CjB,UAAS,CACd,CAEAlH,oBAAoBqF,EAAuB,CACzC,OAAO,KAAKX,iBAAiB1E,oBAAoBqF,CAAM,CACzD,iDApRW9D,GAA6BiK,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAA7BlK,EAA6BmK,UAAA,CAAA,CAAA,oCAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,iSAJ7B,CAACjH,EAAkB,CAAC,CAAA,EAAAmH,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,uBAAA,GAAA,UAAA,wBAAA,EAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,eAAA,gBAAA,mBAAA,4BAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,WAAA,GAAA,eAAA,MAAA,EAAA,gBAAA,cAAA,cAAA,iBAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,GAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAAC,SAAA,SAAAL,EAAAC,EAAA,IAAAD,EAAA,GC1EjCnM,EAAA,EAAAyM,GAAA,GAAA,GAAA,eAAA,CAAA,EAAiD,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,kBAAlC/M,EAAA,OAAA,CAAAwM,EAAAlG,UAAA,CAAA,EAAoB,WAAA0G,CAAA,kBDqD/BC,EAAYC,GAAAC,GACZC,GACAC,EAAeC,EACfC,GACAC,GACAC,GACAC,GAAcC,GACdC,GACAC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAWC,GAAAC,GACXC,GAAmBC,GACnBC,GACAC,GACAC,GAA0BC,GAC1BC,GAAqBC,GACrBC,GACAC,GACAC,GAAgBC,GAChBC,GAAiBC,GACjBC,EAAiB,EAAAC,OAAA,CAAA;0HAAA,CAAA,CAAA,CAAA,SAMRjN,CAA6B,GAAA,0BG3EtCkN,EAAA,EAAA,sBAAA,4BAGEC,EAAA,EAAA,KAAA,EAAKC,EAAA,CAAA,mBAAgCC,EAAA,EACrCH,EAAA,EAAA,gCAAA,CAAA,mBADKI,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,cAAA,CAAA,EAC0BF,EAAA,CAAA,EAAAG,EAAA,OAAAC,EAAAC,eAAA,CAAA,EAAyB,aAAA,EAAA,0BAExDP,EAAA,CAAA,yBAAAQ,EAAA,IAAAJ,EAAA,EAAA,EAAA,SAAA,EAAA,GAAA,2BAJFK,EAAA,EAAAC,GAAA,EAAA,CAAA,EAAmC,EAAAC,GAAA,EAAA,CAAA,iBAAnCC,EAAAN,EAAAC,eAAA,EAAAM,OAAA,EAAA,EAAA,CAAA,GDLJ,IA+BaC,GA/BbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,4BAqBaZ,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CAMzCa,YACSC,EACyBC,EAA+B,CADxD,KAAAD,UAAAA,EACyB,KAAAC,KAAAA,EAPjB,KAAAC,iBAAmBC,EAAOC,EAAkB,EAC5C,KAAAC,gBAAkBF,EAAOG,EAAe,EAChD,KAAAC,UAAYC,EAAO,EAAI,EAChC,KAAA7B,eAAiB6B,EAAc,IAAI,CAKhC,CAEGC,UAAQ,QAAAC,GAAA,sBACZ,KAAK/B,eAAegC,IAAI,MAAM,KAAKT,iBAAiBU,8BAA8B,KAAKX,KAAKY,iBAAiB,CAAC,EAC9G,KAAKN,UAAUI,IAAI,EAAK,CAC1B,GAEAG,QAAM,CACJ,KAAKd,UAAUe,MAAK,CACtB,CAEMC,QAAM,QAAAN,GAAA,sBACV,MAAM,KAAKR,iBAAiBe,sBAAsB,KAAKhB,KAAKY,iBAAiB,EAC7E,KAAKR,gBAAgBa,iBAAiB,uCAAuC,EAC7E,KAAKlB,UAAUe,MAAM,EAAI,CAC3B,mDAxBW7B,GAA8BiC,EAAAC,EAAA,EAAAD,EAQ/BE,EAAe,CAAA,CAAA,CAAA,+BARdnC,EAA8BoC,UAAA,CAAA,CAAA,6CAAA,CAAA,EAAAC,SAAA,CAAAC,GAH9B,CAACpB,EAAkB,CAAC,CAAA,EAAAqB,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,OAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IC5BjC1D,EAAA,EAAA,KAAA,CAAA,EAAqBC,EAAA,CAAA,mBAA0CC,EAAA,EAC/DF,EAAA,EAAA,oBAAA,EACEU,EAAA,EAAAkD,GAAA,EAAA,EAAA,sBAAA,EAAmB,EAAAC,GAAA,EAAA,CAAA,EAUrB3D,EAAA,EACAF,EAAA,EAAA,oBAAA,EAAoB,EAAA,SAAA,CAAA,EACS8D,EAAA,QAAA,UAAA,CAAA,OAASH,EAAAhB,OAAA,CAAQ,CAAA,EAAE1C,EAAA,CAAA,mBAAiCC,EAAA,EAC/EF,EAAA,GAAA,SAAA,CAAA,EAAqC8D,EAAA,QAAA,UAAA,CAAA,OAASH,EAAAd,OAAA,CAAQ,CAAA,EAAE5C,EAAA,EAAA,oBAAiCC,EAAA,EAAS,SAf/EC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,wBAAA,CAAA,EAEnBF,EAAA,CAAA,EAAAU,EAAA8C,EAAAvB,UAAA,EAAA,EAAA,CAAA,EAY8CjC,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,eAAA,CAAA,EACUF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,EAAA,eAAA,CAAA,kBDItD0D,EACAC,EAAeC,EACfC,GACAC,GAAeC,GACfC,GAAeC,GAAAC,GAAAC,GACfC,GACAC,GAA0BC,GAC1BC,EAAoB,EAAAC,cAAA,CAAA,CAAA,CAAA,SAKX9D,CAA8B,GAAA,8BG5BrC+D,EAAA,EAAA,uBAAA,CAAA,mCAEEC,EAAA,oBAAAC,EAAA,EAAA,EAAAC,EAAAC,iBAAA,CAAA,EAAmD,kBAAAD,EAAAE,eAAA,GDL3D,IA8CaC,IA9CbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,yDAqBa3B,KAAkC,IAAA,CAAzC,MAAOA,CAAkC,CAnB/C4B,aAAA,CAsBE,KAAAC,aAAe,QACf,KAAAC,0BAA4BC,GACX,KAAAC,OAASC,EAAOC,EAAS,EACzB,KAAAC,WAAaF,EAAOG,EAAkB,EACtC,KAAAC,YAAcJ,EAAOK,EAAc,EAE3C,KAAAC,iBAAmBC,EAA0B,CAAA,CAAE,EACvC,KAAAC,0BAA4BC,GAAST,EAAOU,EAAkC,CAAC,EACxF,KAAAC,iBAAmBX,EAAOY,EAAkB,EACpD,KAAAC,kBAAoBb,EAAOc,EAA4B,EACvD,KAAAC,OAASf,EAAOgB,EAAM,EAEb,KAAAC,UAAYV,EAAO,EAAI,EAE1BW,UAAQ,QAAAC,GAAA,sBACZ,MAAM,KAAKC,eAAc,EACzB,IAAMC,EAAkB,KAAKjB,YAAYkB,SAASC,cAAcC,IAAI,YAAY,EAChF,GAAIH,EAAiB,CACnB,GAAM,CAACI,EAAUC,CAAM,EAAI,KAAKC,qCAAqCN,CAAe,EAC9EO,EAAS,KAAKtB,iBAAgB,EAAGuB,KAAMC,GAAMA,EAAEC,IAAMN,CAAQ,EAC/DG,IACF,MAAM,KAAKI,oBAAoBJ,EAAQF,CAAM,EAEjD,CACI,KAAKtB,YAAYkB,SAASC,cAAcC,IAAI,WAAW,IACzD,MAAM,KAAKS,sBAAqB,EAEpC,GAEAN,qCAAqCN,EAAuB,CAC1D,IAAMa,EAAab,EAAgBc,QAAQ,GAAG,EAC9C,OAAID,IAAe,GACV,CAACb,EAAiB,EAAE,EAEpB,CAACA,EAAgBe,UAAU,EAAGF,CAAU,EAAGb,EAAgBe,UAAUF,EAAa,CAAC,CAAC,CAE/F,CAEMd,gBAAc,QAAAD,GAAA,sBAClB,KAAKF,UAAUoB,IAAI,EAAI,EAQvB,IAAM/B,GAPS,MAAM,KAAKK,iBAAiB2B,qBACzC,CACEC,GAA0BC,yCAC1BD,GAA0BE,2CAA2C,EAEvE,CAAEC,SAAU,GAAG,CAAE,GAEapC,kBAAoB,CAAA,EACpD,GAAI,KAAKE,0BAAyB,EAAI,CAEpC,IAAMmC,EAAwB,KAAKhC,iBAAiBiC,oCAAmC,EACnFD,GACFrC,EAAiBuC,QAAQF,CAAqB,CAElD,CACA,KAAKrC,iBAAiB+B,IAAI/B,CAAgB,EAC1C,KAAKW,UAAUoB,IAAI,EAAK,CAC1B,GAEMJ,uBAAqB,QAAAd,GAAA,sBACzB,IAAM2B,EAAwB,CAC5BC,MAAO,KAAKnD,cAGQ,KAAKM,WAAW8C,UAAUC,GAAYC,MAAM,IAEhEJ,EAAKK,SAAW,QAChBL,EAAKM,UAAY,SAEnB,IAAMC,EAAS,KAAKtD,OAAOuD,KAAKC,GAAuBT,CAAI,EAC3DO,EAAOG,kBAAkBC,kBACtBC,KAAKC,GAAmBN,EAAOG,kBAAkBI,UAAU,EAAGC,GAAK,CAAC,CAAC,EACrEC,UAAWC,GAAS,CACnB,KAAKC,4BAA4BD,EAAME,iBAAkBF,EAAMH,UAAU,CAC3E,CAAC,EACH,MAAMM,GAAeb,EAAOc,YAAW,CAAE,CAC3C,GAEQH,4BAA4BD,EAA6BH,EAAsB,CACrFG,EACGL,KACCC,GAAmBC,CAAU,EAC7BC,GAAK,CAAC,EACNO,EAAU,IAAM,KAAKhD,eAAc,CAAE,CAAC,EAEvC0C,UAAS,CACd,CACM9B,oBAAoBJ,EAAyBF,EAAe,QAAAP,GAAA,sBAChE,IAAM2B,EAAwB,CAC5BC,MAAO,KAAKnD,aACZyE,KAAM,CACJC,mBAAoB,CAAEC,kBAAmB3C,GAAQG,GAAIyC,UAAW5C,GAAQ4C,SAAS,EACjFC,OAAQ7C,GAAQ6C,OAChBC,WAAYhD,IAIM,KAAKxB,WAAW8C,UAAUC,GAAYC,MAAM,IAEhEJ,EAAKK,SAAW,QAChBL,EAAKM,UAAY,SAGnB,IAAIC,EACAzB,EAAO6C,QAAQE,oBACjBtB,EAAS,KAAKtD,OAAOuD,KAAKsB,GAAwB9B,CAAI,EAC7ClB,EAAO6C,QAAQI,iBACxBxB,EAAS,KAAKtD,OAAOuD,KAAKwB,GAAqBhC,CAAI,EAEnDO,EAAS,KAAKtD,OAAOuD,KAAKyB,GAA0BjC,CAAI,EAE1D,KAAKkC,wBAAwBpD,GAAQG,GAAIL,CAAM,EAC/C2B,EAAOG,kBAAkByB,WACtBvB,KACCC,GAAmBN,EAAOG,kBAAkBI,UAAU,EACtDsB,EAAKR,GAAe,KAAKM,wBAAwBpD,GAAQG,GAAI2C,CAAU,CAAC,CAAC,EAE1EZ,UAAS,GAEW,MAAMI,GAAeb,EAAOc,YAAW,CAAE,KAE9D,KAAKa,wBAAwB,IAAI,EACjC,MAAM,KAAK5D,eAAc,EAE7B,GAEM+D,sBAAsBvD,EAAuB,QAAAT,GAAA,uBAClC,MAAM+C,GACnB,KAAKnE,OACFuD,KAAK8B,GAAgC,CACpCrC,MAAO,KAAKnD,aACZyE,KAAM,CAAEE,kBAAmB3C,EAAOG,EAAE,EACrC,EACAoC,YAAW,CAAE,KAGhB,MAAM,KAAK/C,eAAc,EAE7B,GAEA4D,wBAAwBK,EAA2B3D,EAAe,CAC5DA,IACF2D,EAAaA,EAAa,IAAM3D,GAElC,IAAM4D,EAAc,CAAED,WAAYA,CAAU,EAC5C,KAAKtE,OAAOwE,SAAS,CAAA,EAAI,CACvBC,WAAY,KAAKpF,YACjBkF,YAAAA,EACAG,oBAAqB,QACtB,CACH,iDAzJW1H,EAAkC,CAAA,+BAAlCA,EAAkC2H,UAAA,CAAA,CAAA,0CAAA,CAAA,EAAAC,OAAA,CAAA9H,kBAAA,oBAAAC,gBAAA,iBAAA,EAAA8H,SAAA,CAAAC,GAJlC,CAACjF,EAAkB,CAAC,CAAA,EAAAkF,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,oBAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,QAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,eAAA,gBAAA,2BAAA,mBAAA,sBAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,EAAA,oBAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IC1CjCE,EAAA,EAAA,YAAA,CAAA,EAAqC,EAAA,mBAAA,EAChB,EAAA,eAAA,EAEfC,EAAA,EAAAC,GAAA,EAAA,EAAA,uBAAA,CAAA,EAKFC,EAAA,EACAH,EAAA,EAAA,iBAAA,EAAiBI,EAAA,CAAA,mBAAqCD,EAAA,EAAkB,EAG1EH,EAAA,EAAA,oBAAA,CAAA,EAAwC,EAAA,MAAA,CAAA,EACjB,EAAA,UAAA,EACT,GAAA,iBAAA,EACS,GAAA,gBAAA,EACCI,EAAA,EAAA,oBAAoCD,EAAA,EAAiB,EAEvEH,EAAA,GAAA,kBAAA,EAAkB,GAAA,KAAA,EACX,GAAA,MAAA,EACGI,EAAA,EAAA,oBAAgDD,EAAA,EACtDH,EAAA,GAAA,8BAAA,CAAA,EAGEK,EAAA,eAAA,SAAAC,EAAA,CAAA,OAAgBP,EAAAnE,oBAAA0E,CAAA,CAA2B,CAAA,EAAC,gBAAA,SAAAA,EAAA,CAAA,OAC3BP,EAAAhB,sBAAAuB,CAAA,CAA6B,CAAA,EAAC,2BAAA,SAAAA,EAAA,CAAA,OACnBP,EAAAnE,oBAAA0E,EAAAP,EAAAtG,yBAAA,CAAsD,CAAA,EAEpF0G,EAAA,EAEAH,EAAA,GAAA,MAAA,CAAA,EAA4C,GAAA,SAAA,CAAA,EACfK,EAAA,QAAA,UAAA,CAAA,OAASN,EAAAlE,sBAAA,CAAuB,CAAA,EACzDuE,EAAA,EAAA,oBACFD,EAAA,EAAS,EACL,EACF,EACW,EACV,EACP,EACY,SAvCX7I,EAAA,YAAAyI,EAAAlF,UAAA,CAAA,EAIF0F,EAAA,CAAA,EAAAjJ,EAAA,OAAAyI,EAAArI,eAAA,EAKY6I,EAAA,CAAA,EAAAC,EAAAjJ,EAAA,EAAA,EAAA,mBAAA,CAAA,EAOKgJ,EAAA,CAAA,EAAAC,EAAAjJ,EAAA,GAAA,GAAA,kBAAA,CAAA,EAIRgJ,EAAA,CAAA,EAAAC,EAAAjJ,EAAA,GAAA,GAAA,8BAAA,CAAA,EAEJgJ,EAAA,CAAA,EAAAjJ,EAAA,mBAAAyI,EAAA7F,iBAAA,CAAA,EAAuC,uBAAA,EAAA,EAUrCqG,EAAA,CAAA,EAAAE,EAAA,IAAAlJ,EAAA,GAAA,GAAA,eAAA,EAAA,GAAA,kBDFZmJ,EAAYC,GACZC,EAAeC,EACfC,GACAC,GAAgBC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAChBC,GAAeC,GACfC,GACAC,GACAC,GACAC,GAAaC,GAAAC,GAAAC,GAAAC,GACbC,GACAC,EAAsB,EAAAC,OAAA,CAAA;gIAAA,CAAA,CAAA,CAAA,SAMbvK,CAAkC,GAAA,IE9C/C,IAAAwK,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCLA,IAAAC,GAAAC,EAAA,KAAAC,OCAA,OASaC,GATbC,GAAAC,EAAA,KACAC,wHAQaH,IAAqB,IAAA,CAA5B,MAAOA,UAA6BI,EAA2B,CANrEC,aAAA,qBAQW,KAAAC,SAAW,EAGX,KAAAC,MAAQ,UAGR,KAAAC,UAAY,GAErB,IACIC,SAAO,CACT,OAAQ,KAAKC,KAAI,CACf,IAAK,QACH,MAAO,IACT,IAAK,QACH,MAAO,GACT,QACE,MAAO,GACX,CACF,sEApBWV,CAAoB,IAAAW,GAApBX,CAAoB,CAAA,CAAA,GAAA,CAAA,+BAApBA,EAAoBY,UAAA,CAAA,CAAA,mBAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAApBE,GAAA,SAAAD,EAAAP,QAAA,IAAA,0PCTbS,EAAA,EAAA,MAAA,CAAA,EAUEC,EAAA,EAAA,MAAA,CAAA,EACFC,EAAA,SATEC,EAAA,UAAAC,GAAA,EAAAC,GAAAP,EAAAR,UAAA,CAAAQ,EAAAR,WAAAQ,EAAAT,QAAA,UAAA,CAAAS,EAAAR,WAAAQ,EAAAT,QAAA,OAAA,CAAAS,EAAAR,WAAAQ,EAAAT,QAAA,QAAA,CAAAS,EAAAR,WAAAQ,EAAAT,QAAA,SAAA,CAAA,EAQiDiB,EAAA,EAAAP,GAAA,QAAAD,EAAAV,SAAA,GAAA;6HDDtCN,CAAqB,GAAA,IETlC,IAMayB,GASAC,GAfbC,GAAAC,EAAA,KACAC,QAKaJ,GAAiB,CAACK,CAAY,EAS9BJ,IAAuB,IAAA,CAA9B,MAAOA,CAAuB,iDAAvBA,EAAuB,CAAA,gCAAvBA,CAAuB,CAAA,CAAA,oCAJzBD,EAAc,CAAA,CAAA,CAAA,SAIZC,CAAuB,GAAA,ICfpC,IAAAK,GAAAC,EAAA,KAAAC,OCAA,IAAAC,GAAAC,EAAA,KACAC,OCDA,IAAAC,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,OCHA,IAAAC,GAAAC,GAAAC,EAAA,KAAAF,GAAA,CACE,aAAgB,CACd,OAAU,CACR,OAAU,CACR,OAAU,SACV,SAAY,UACd,EACA,YAAe,cACf,KAAQ,OACR,KAAQ,OACR,OAAU,SACV,MAAS,QACT,QAAW,yBACX,gBAAmB,CACjB,MAAS,kBACT,QAAW,qEACX,QAAW,iBACb,CACF,EACA,UAAa,CACX,MAAS,eACT,iBAAoB,YACpB,OAAU,SACV,eAAkB,iBAClB,gBAAmB,kBACnB,QAAW,CACT,OAAU,SACV,eAAkB,YACpB,EACA,mBAAsB,CACpB,oBAAuB,CACrB,MAAS,sBACT,SAAY,oBACZ,YAAe,oLACjB,EACA,kBAAqB,CACnB,MAAS,oBACT,SAAY,GACZ,YAAe,oLACjB,EACA,mBAAsB,CACpB,MAAS,qBACT,SAAY,GACZ,YAAe,gKACf,aAAgB,6BAChB,oBAAuB,wFACvB,OAAU,CACR,aAAgB,8BAChB,sBAAyB,sCAC3B,EACA,OAAU,CACR,aAAgB,CACd,MAAS,eACT,QAAW,kFACb,EACA,SAAY,CACV,MAAS,WACT,QAAW,gEACb,EACA,YAAe,CACb,MAAS,cACT,QAAW,yCACb,CACF,EACA,aAAgB,sCAChB,eAAkB,gCACpB,EACA,gBAAmB,CACjB,MAAS,kBACT,SAAY,GACZ,YAAe,wMACjB,EACA,eAAkB,CAChB,MAAS,iBACT,SAAY,GACZ,YAAe,6JACjB,EACA,YAAe,CACb,MAAS,cACT,SAAY,cACZ,YAAe,mGACjB,EACA,YAAe,CACb,MAAS,cACT,SAAY,cACZ,YAAe,oJACjB,CACF,CACF,EACA,MAAS,CACP,eAAkB,CAChB,MAAS,uBACT,KAAQ,OACR,YAAe,cACf,KAAQ,OACR,mBAAsB,qBACtB,SAAY,CACV,aAAgB,eAChB,cAAiB,gBACjB,SAAY,WACZ,IAAO,MACP,MAAS,QACT,MAAS,QACT,SAAY,WACZ,UAAa,YACb,SAAY,UACd,EACA,OAAU,SACV,UAAa,YACb,aAAgB,mBAChB,WAAc,0BACd,aAAgB,gCAChB,aAAgB,qCAClB,CACF,EACA,SAAY,CACV,MAAS,QACT,kBAAqB,6BACrB,SAAY,WACZ,MAAS,8BACT,WAAc,aACd,uBAA0B,2DAC1B,mBAAsB,yBACtB,kBAAqB,oBACrB,8BAAiC,yEACjC,WAAc,aACd,qBAAwB,wBACxB,kBAAqB,kCACrB,uBAA0B,4BAC1B,2BAA8B,mDAC9B,gBAAmB,eACnB,uBAA0B,oBAC1B,eAAkB,OAClB,uBAA0B,4LAC1B,iBAAoB,SACpB,uBAA0B,eAC1B,oBAAuB,sBACvB,kCAAqC,0BACrC,8CAAiD,mEACjD,iDAAoD,sBACpD,0BAA6B,yWAC7B,SAAY,CACV,MAAS,WACT,SAAY,wEACZ,YAAe,2BACf,0BAA6B,+BAC7B,SAAY,WACZ,IAAO,MACP,sBAAyB,gDAC3B,EACA,oBAAuB,CACrB,YAAe,2BACf,YAAe,iJACjB,EACA,uBAA0B,CACxB,MAAS,gCACT,YAAe,oBACf,YAAe,wJACf,oBAAuB,qBACzB,EACA,aAAgB,CACd,kBAAqB,wCACrB,aAAgB,eAChB,KAAQ,qCACR,OAAU,SACV,OAAU,QACZ,EACA,2BAA8B,CAC5B,YAAe,yKACf,cAAiB,oSACjB,cAAiB,kOACnB,EACA,+BAAkC,CAChC,MAAS,sCACT,oBAAuB,WACvB,YAAe,oTACf,gBAAmB,yCACnB,UAAa,gJACb,UAAa,qHACb,UAAa,+EACb,UAAa,yGACb,UAAa,0HACb,UAAa,iHACb,QAAW,aACX,QAAW,YACX,QAAW,eACX,QAAW,gBACX,QAAW,UACX,QAAW,OACX,QAAW,iBACX,QAAW,kBACX,QAAW,UACX,oBAAuB,qCACvB,wBAA2B,uKAC7B,EACA,iBAAoB,CAClB,iBAAoB,mBACpB,aAAgB,wCAChB,YAAe,oGACf,wBAA2B,0BAC3B,WAAc,CACZ,MAAS,aACT,0BAA6B,2DAC7B,iBAAoB,sDACpB,cAAiB,gBACjB,sBAAyB,+BACzB,QAAW,UACX,aAAgB,eAChB,WAAc,aACd,MAAS,QACT,iBAAoB,mBACpB,kBAAqB,oBACrB,iBAAoB,mBACpB,kBAAqB,oBACrB,YAAe,aACjB,CACF,EACA,aAAgB,CACd,aAAgB,sBAChB,OAAU,WACV,mBAAsB,CACpB,MAAS,iDACT,QAAW,gCACX,OAAU,uDACV,yBAA4B,iDAC5B,wBAA2B,gCAC3B,cAAiB,qEACnB,EACA,MAAS,QACT,OAAU,CACR,KAAQ,OACR,OAAU,QACZ,EACA,OAAU,CACR,GAAM,KACN,GAAM,KACN,QAAW,SACb,EACA,SAAY,yBACZ,eAAkB,CAChB,UAAa,CACX,MAAS,yBACT,YAAe,uMACjB,EACA,eAAkB,CAChB,MAAS,iBACT,YAAe,8JACjB,EACA,iBAAoB,CAClB,MAAS,mBACT,YAAe,gLACjB,CACF,CACF,EACA,iBAAoB,CAClB,kBAAqB,oBACrB,iBAAoB,mBACpB,6BAAgC,6EAChC,gBAAmB,kBACnB,cAAiB,gBACjB,iBAAoB,mBACpB,iBAAoB,MACpB,YAAe,kIACf,uBAA0B,mCAC1B,qBAAwB,WACxB,aAAgB,2DAChB,QAAW,8CACX,KAAQ,CACN,MAAS,mBACT,KAAQ,OACR,QAAW,SACb,EACA,OAAU,CACR,MAAS,0BACX,CACF,EACA,YAAe,CACb,iBAAoB,wDACpB,eAAkB,gBACpB,CACF,CACF,CACF,IC1RA,IAeaG,GAfbC,GAAAC,EAAA,KACAC,IACAC,KACAC,SAYaL,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,iDAArBA,EAAqB,CAAA,gCAArBA,CAAqB,CAAA,CAAA,oCAR9BM,EACAC,GAAcC,SAAS,CACrBC,cAAe,sBACfC,gBAAiBC,GAClB,EAEOL,CAAe,CAAA,CAAA,CAAA,SAEdN,CAAqB,GAAA,ICmJlC,SAASY,GAAoBC,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAvKA,IAWIC,GAMAC,GAMAC,GA+CEC,GAoBAC,GAmCAC,GAoBAC,GAuBAC,GA6EAC,GA0BAC,GA0BAC,GAmCAC,GA0BAC,GAmCAC,GA0BAC,GAuBAC,GAuBAC,GA2CAC,GACAC,GAOFC,GA6BAC,GAjiBJC,GAAAC,EAAA,KAAAC,IACAA,IACAC,KACAC,KAQIzB,GAAwB,SAAUA,EAAU,CAC9C,OAAAA,EAASA,EAAS,kBAAuB,CAAC,EAAI,oBAC9CA,EAASA,EAAS,kBAAuB,CAAC,EAAI,oBAC9CA,EAASA,EAAS,mBAAwB,CAAC,EAAI,qBACxCA,CACT,EAAEA,IAAY,CAAC,CAAC,EACZC,GAA2B,SAAUA,EAAa,CACpD,OAAAA,EAAYA,EAAY,oBAAyB,CAAC,EAAI,sBACtDA,EAAYA,EAAY,iBAAsB,CAAC,EAAI,mBACnDA,EAAYA,EAAY,eAAoB,CAAC,EAAI,iBAC1CA,CACT,EAAEA,IAAe,CAAC,CAAC,EACfC,GAA2B,SAAUA,EAAa,CACpD,OAAAA,EAAYA,EAAY,yBAA8B,CAAC,EAAI,2BAC3DA,EAAYA,EAAY,8BAAmC,CAAC,EAAI,gCACzDA,CACT,EAAEA,IAAe,CAAC,CAAC,EA2CbC,GAAN,MAAMuB,CAA+B,CACnC,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM1B,GAAN,MAAM2B,CAAU,CACd,OAAO,UAAUJ,EAAO,CACtB,IAAIC,EAAI,IAAIG,EACZ,OAAAH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,wBACRC,EAAE,sBAAwBzB,GAA+B,UAAUwB,EAAM,qBAAqB,GAE5FA,EAAM,mBACRC,EAAE,iBAAmBvB,GAA0B,UAAUsB,EAAM,gBAAgB,GAE7EA,EAAM,kBACRC,EAAE,gBAAkBtB,GAAyB,UAAUqB,EAAM,eAAe,GAEvEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,sBAA0B,KAAe,KAAK,wBAA0B,OACtFA,EAAS,sBAA2B,cAAe,KAAK,sBAAwB,KAAK,sBAAsB,UAAU,EAAI,KAAK,uBAE5H,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EACMzB,GAAN,MAAM2B,CAA0B,CAC9B,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMxB,GAAN,MAAM2B,CAAyB,CAC7B,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EAOMtB,GAAN,MAAM2B,CAAW,CACf,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYxB,GAAU,UAAUuB,EAAM,SAAS,GAE/CA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,aACRC,EAAE,WAAaD,EAAM,WAAW,IAAIjB,GAAkB,SAAS,GAE7DiB,EAAM,WACRC,EAAE,SAAW/B,GAAoBG,GAAU2B,EAAM,QAAQ,GAEvDA,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE9CA,EAAM,WACRC,EAAE,SAAWpB,GAAS,UAAUmB,EAAM,QAAQ,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMtB,GAAN,MAAM2B,CAAS,CACb,OAAO,UAAUR,EAAO,CACtB,IAAIC,EAAI,IAAIO,EACZ,OAAAP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAchB,GAAY,UAAUe,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMrB,GAAN,MAAM2B,CAAqB,CACzB,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgBjB,GAAkC,UAAUgB,EAAM,aAAa,GAE5EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMpB,GAAN,MAAM2B,CAAkB,CACtB,OAAO,UAAUV,EAAO,CACtB,IAAIC,EAAI,IAAIS,EACZ,OAAAT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc/B,GAAoBI,GAAa0B,EAAM,WAAW,GAEhEA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMnB,GAAN,MAAM2B,CAAkC,CACtC,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACMlB,GAAN,MAAM2B,CAAY,CAChB,OAAO,UAAUZ,EAAO,CACtB,IAAIC,EAAI,IAAIW,EACZ,OAAAX,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc/B,GAAoBK,GAAayB,EAAM,WAAW,GAEhEA,EAAM,uBACRC,EAAE,qBAAuBnB,GAAqB,UAAUkB,EAAM,oBAAoB,GAE7EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,qBAAyB,KAAe,KAAK,uBAAyB,OACpFA,EAAS,qBAA0B,cAAe,KAAK,qBAAuB,KAAK,qBAAqB,UAAU,EAAI,KAAK,sBAEtHA,CACT,CACF,EAOMjB,GAAN,MAAM2B,CAAqB,CACzB,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYxB,GAAU,UAAUuB,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMhB,GAAN,MAAM2B,CAAsB,CAC1B,OAAO,UAAUd,EAAO,CACtB,IAAIC,EAAI,IAAIa,EACZ,OAAAb,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAarB,GAAW,UAAUoB,EAAM,UAAU,GAE/CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAExFA,CACT,CACF,EACMf,GAAN,MAAM2B,CAAoB,CACxB,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYxB,GAAU,UAAUuB,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMd,GAAN,MAAM2B,CAAqB,CACzB,OAAO,UAAUhB,EAAO,CACtB,IAAIC,EAAI,IAAIe,EACZ,OAAAf,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEpCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,gBACRC,EAAE,cAAgB,SAASD,EAAM,cAAe,EAAE,GAE7CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EASMb,IAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,GAAU,CACd,MAAS,+BACT,KAAQ,GACR,KAAQ,2BACR,KAAQ,2BACR,WAAc,0BAChB,EACIC,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,GAAQD,GAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6ByB,EAAmB,CACjE,OAAO,IAAKA,GAAqBzB,EACnC,EACAA,EAAY,WAA0B0B,GAAmB,CACvD,MAAO1B,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,IAAgC,IAAM,CACxC,MAAMA,CAAgB,CACpB,aAAc,CACZ,KAAK,YAAc0B,EAAO3B,EAAW,EACrC,KAAK,KAAO2B,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,cAAcC,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpC,GAAqBoC,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6CAA8CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQtC,GAAsB,UAAUsC,CAAI,CAAC,CAAC,CAClL,CACA,aAAaH,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlC,GAAoBkC,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQpC,GAAqB,UAAUoC,CAAI,CAAC,CAAC,CAChL,CACF,CACA,OAAAhC,EAAgB,UAAO,SAAiCwB,EAAmB,CACzE,OAAO,IAAKA,GAAqBxB,EACnC,EACAA,EAAgB,WAA0ByB,GAAmB,CAC3D,MAAOzB,EACP,QAASA,EAAgB,UACzB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,6BE7jBKiC,EAAA,EAAA,cAAA,CAAA,iBAAsCC,EAAA,MAAAC,EAAAC,YAAA,EAAAC,UAAAC,SAAA,4BAEtCL,EAAA,EAAA,cAAA,CAAA,qBAEEC,EAAA,WAAAK,GAAAA,EAAAJ,EAAAC,YAAA,EAAAI,aAAA,KAAA,KAAAD,EAAAE,qBAAA,MAAAF,IAAAG,OAAAH,EAAAJ,EAAAM,iBAAA,EAA4E,OAAAE,EAAAR,EAAAC,YAAA,EAAAI,aAAA,KAAA,KAAAG,EAAAC,aAAA,EAC7B,eAAAT,EAAAU,WAAA,CAAA,6BAO/CC,EAAA,EAAA,IAAA,CAAA,EAAoBC,EAAA,CAAA,mBAA2CC,EAAA,kBAA3CC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAAhB,EAAAC,YAAA,EAAAgB,WAAA,CAAA,0BAItBN,EAAA,EAAA,aAAA,EAAA,EAA8BC,EAAA,CAAA,mBAA4CC,EAAA,SAA9Dd,EAAA,QAAA,OAAA,EAAkBe,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,0BAAA,CAAA,6BAYxBlB,EAAA,EAAA,MAAA,EAAA,8CAGEC,EAAA,MAAAmB,EAAAC,WAAAC,QAAAC,EAAA,EAAuC,cAAAH,EAAAC,WAAAG,mBAAA,IAAAN,EAAA,EAAA,EAAAE,EAAAK,OAAA,CAAA,6BAIzCzB,EAAA,EAAA,WAAA,EAAA,8CAEE0B,GAAA,YAAAN,EAAAO,WAAA,EACA1B,EAAA,cAAAmB,EAAAC,WAAAG,mBAAA,IAAAN,EAAA,EAAA,EAAAE,EAAAK,OAAA,CAAA,EAAqG,UAAAL,EAAAC,WAAAO,cAAA,4BAXzGC,EAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,EAAA,EAA6D,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,2BAA7DC,EAAAZ,EAAAC,WAAAO,iBAAA,WAAA,EAAA,CAAA,4BADFC,EAAA,EAAAI,GAAA,EAAA,CAAA,yBAAAD,EAAAZ,EAAAC,WAAA,EAAA,EAAA,6BAFJR,EAAA,EAAA,MAAA,EAAA,EACEqB,GAAA,EAAAC,GAAA,EAAA,EAAA,KAAA,KAAAC,EAAA,EAoBFrB,EAAA,yBApBEC,EAAA,EAAAqB,GAAAC,CAAA,sCAwBAzB,EAAA,EAAA,SAAA,EAAA,EAAwC0B,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAvC,EAAAwC,EAAA,EAAA,OAAAC,EAASzC,EAAA0C,WAAAC,KAAA,CAAiB,CAAA,CAAA,EAChE/B,EAAA,CAAA,mBACFC,EAAA,oBADEC,EAAA,EAAA8B,EAAA,IAAA5B,EAAA,EAAA,EAAAhB,EAAAC,YAAA,EAAA4C,IAAAC,KAAA,EAAA,GAAA,0BAIFnC,EAAA,EAAA,YAAA,EAAYC,EAAA,CAAA,mBAA+CC,EAAA,SAA/CC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,6BAAA,CAAA,0BAEZL,EAAA,EAAA,YAAA,EAAYC,EAAA,CAAA,mBAAmDC,EAAA,SAAnDC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,iCAAA,CAAA,6BAGZL,EAAA,EAAA,IAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,kBAFsBd,EAAA,aAAAgD,GAAA,EAAAC,GAAAhD,EAAAiD,qBAAA,CAAA,CAAA,EAAuC,cAAAF,GAAA,EAAAG,GAAAlD,EAAAmD,UAAA,CAAA,EAC3DrC,EAAA,EAAA8B,EAAA,IAAA5B,EAAA,EAAA,EAAA,yCAAA,EAAA,GAAA,GDjEV,aAgDaoC,GAhDbC,GAAAC,EAAA,KAAAC,IACAC,IAaAC,KACAC,IACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,2FAkBapB,IAAwB,IAAA,CAA/B,MAAOA,CAAwB,CAhBrCqB,aAAA,CAiBwB,KAAAC,MAAQ,eAEX,KAAAC,mBAAqBC,EAAOC,EAAgB,EAC5C,KAAAC,cAAgBF,EAAOG,EAAmB,EAC5C,KAAAC,WAAaJ,EAAOK,EAAU,EAC9B,KAAAC,mBAAqBN,EAAOO,EAAkB,EAC9C,KAAAC,gBAAkBR,EAAOS,EAAe,EACxC,KAAAC,eAAiBC,GAASX,EAAOY,EAAsB,CAAC,EACxD,KAAAC,OAASb,EAAOc,EAAM,EAC9B,KAAAzF,YAAc0F,GAAMC,SAAQ,EAC5B,KAAAC,cAAgBF,GAAM,EAAK,EAC3B,KAAAjF,WAAaiF,GAAM,EAAK,EACxB,KAAAG,aAAeH,GAAM,EAAK,EAC1B,KAAAjD,WAAaqD,GAAM,EACT,KAAA5C,WAAa,KAAKsC,QAAQO,IACpC,KAAA1F,kBAAoB2F,GAE7B,KAAAhD,qBAAuBiD,EAAS,IACvB,KAAKhB,mBAAmBiB,+BAC7B,KAAKb,eAAc,GAAM,GACzB,KAAKrF,YAAW,EAAGC,UAAUkG,IAAM,EAAE,CAExC,EAEO,KAAAC,mBAAqBC,GAAUV,SAAqB,oBAAoB,EAE7D,KAAAW,cAAgBC,EAAe,EAAE,EACjC,KAAAC,SAAWD,EAAe,EAAE,EAI5B,KAAAE,wBAA0BR,EAAS,IAC7C,KAAKjG,YAAW,EAAGC,UAAUkG,KAAOO,EAC5C,EAGkB,KAAAC,kBAAoBV,EAAS,IAAK,CACnD,IAAMhG,EAAY,KAAKD,YAAW,EAClC,OAAKC,EAAU2G,aAAaC,OAIrB5G,EAAU2G,YACdE,OACC,CAAC5F,EAAY6F,EAAOC,IAClBA,EAAKC,UAAWC,GAAMA,EAAEhG,WAAWG,qBAAuBH,EAAWA,WAAWG,kBAAkB,IAAM0F,CAAK,EAEhHI,IAAKC,GAAkBC,GAAAC,GAAA,GACnBF,GADmB,CAEtB5F,YAAa,CAAC4F,EAAalG,WAAWqG,eAAeV,OACrDvF,QAAS8F,EAAalG,WAAWqG,eAAeV,OAC5C,wCACA,iDACJ,EACDW,KAAK,CAACC,EAAGC,IAAMC,OAAOF,EAAEjG,WAAW,EAAImG,OAAOD,EAAElG,WAAW,CAAC,EAftD,CAAA,CAgBX,CAAC,EAqEkB,KAAAoG,iBAAmB3B,EAAS,KAE1C,CAAC,KAAKjG,YAAW,EAAG6H,WAAa,KAAK7H,YAAW,EAAG8H,4BACrD,KAAK7C,mBAAmB8C,sBAAqB,GAC7C,CAAC,KAAK9C,mBAAmB+C,eAAc,CAE1C,EAEkB,KAAAC,aAAetD,EAAOuD,EAAiB,EAAED,aA3ElDE,WAAS,CACjB,KAAKC,uBAAuBC,YAAW,CACzC,CAEQC,iBAAiBC,EAAiB,CACxC,IAAMC,EAAO,KAAKpC,mBAAkB,EAAGqC,cAAcC,sBAAqB,EACpEC,EAAIJ,EAAMK,QAAUJ,EAAKK,KACzBC,EAAIP,EAAMQ,QAAUP,EAAKQ,IAC/B,MAAO,CAAEL,EAAAA,EAAGG,EAAAA,CAAC,CACf,CAEAG,UAAQ,CACF,KAAKjJ,YAAW,GAClB,KAAKkJ,mBAAkB,CAE3B,CAEUC,KAAKZ,EAAiB,CAC9B,GAAM,CAAEI,EAAAA,EAAGG,EAAAA,CAAC,EAAK,KAAKR,iBAAiBC,CAAK,EAC5C,KAAKa,cAAcT,EAAGG,CAAC,CACzB,CAEUO,MAAMd,EAAiB,CAC/B,GAAM,CAAEI,EAAGW,EAAQR,EAAGS,CAAM,EAAK,KAAKjB,iBAAiBC,CAAK,EAEtDiB,EAAW,KAEXC,EAAa,IADD,GAGZC,EAAYC,YAAYC,IAAG,EAEjC,KAAKxB,sBAAwByB,GAASJ,CAAU,EAC7CK,KACC3C,EAAI,IAAK,CACP,IAAM4C,EAAUJ,YAAYC,IAAG,EAAKF,EAC9BM,EAAWC,KAAKC,IAAIH,EAAUP,EAAU,CAAC,EACzCW,EAAgB,KAAKC,aAAaJ,CAAQ,EAChD,MAAO,CACLrB,EAAGW,GAAU,EAAIa,GACjBrB,EAAGS,GAAU,EAAIY,GAErB,CAAC,EACDE,GAAU,CAAC,CAAE1B,EAAAA,EAAGG,EAAAA,CAAC,IAAOmB,KAAKK,MAAM3B,CAAC,EAAI,GAAKsB,KAAKK,MAAMxB,CAAC,EAAI,CAAC,EAC9DyB,GAAmB,KAAKxF,UAAU,CAAC,EAEpCyF,UAAWC,GAAU,CACpB,KAAKrB,cAAcqB,EAAO9B,EAAG8B,EAAO3B,CAAC,CACvC,CAAC,CACL,CAEQsB,aAAaM,EAAS,CAC5B,MAAO,EAAEA,EAAIA,EAAIA,EAAI,CACvB,CAEQtB,cAAcT,EAAWG,EAAS,CACxC,KAAKtC,SAASmE,IACZ,6BAA6BhC,CAAC,MAAMG,CAAC,OAAO,KAAK9I,YAAW,EAAGI,YAAYkG,aAAa,wBAAwB,CAEpH,CAEQ4C,oBAAkB,CACpB,KAAKlJ,YAAW,GAAII,aACtB,KAAKkG,cAAcqE,IAAI,KAAK3K,YAAW,EAAGI,YAAYkG,eAAiB,MAAM,EAC7E,KAAK8C,cAAc,EAAG,CAAC,EAE3B,iDA3HWjG,EAAwB,CAAA,+BAAxBA,EAAwByH,UAAA,CAAA,CAAA,mBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,uFAAxBE,GAAAD,EAAAtG,KAAA,w5BChDb/D,EAAA,EAAA,MAAA,CAAA,EAAoC0B,EAAA,aAAA,UAAA,CAAA6I,OAAA5I,EAAA6I,CAAA,EAAA1I,EAAcuI,EAAA5C,UAAA,CAAW,CAAA,CAAA,EAAC,YAAA,SAAAgD,EAAA,CAAAF,OAAA5I,EAAA6I,CAAA,EAAA1I,EAAcuI,EAAA5B,KAAAgC,CAAA,CAAY,CAAA,CAAA,EAAC,aAAA,SAAAA,EAAA,CAAAF,OAAA5I,EAAA6I,CAAA,EAAA1I,EAAeuI,EAAA1B,MAAA8B,CAAA,CAAa,CAAA,CAAA,EACnHtL,EAAA,EAAA,MAAA,EAAA,CAAA,EACAa,EAAA,EAAA,MAAA,CAAA,EAAqB,EAAA,MAAA,CAAA,EAEjBgB,EAAA,EAAA0J,GAAA,EAAA,EAAA,cAAA,CAAA,EAAyC,EAAAC,GAAA,EAAA,EAAA,cAAA,CAAA,EAUzC3K,EAAA,EAAA,MAAA,CAAA,EAA4B,EAAA,IAAA,CAAA,EACTC,EAAA,CAAA,EAAkCC,EAAA,EACnDc,EAAA,GAAA4J,GAAA,EAAA,EAAA,IAAA,CAAA,EAGF1K,EAAA,EACAc,EAAA,GAAA6J,GAAA,EAAA,EAAA,aAAA,EAAA,EAGF3K,EAAA,EACAF,EAAA,GAAA,IAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACA4K,GAAA,EAAA,EACA9J,EAAA,GAAA+J,GAAA,EAAA,EAAA,MAAA,EAAA,EAwBA/K,EAAA,GAAA,MAAA,EAAA,EACEgB,EAAA,GAAAgK,GAAA,EAAA,EAAA,SAAA,EAAA,EAAuB,GAAAC,GAAA,EAAA,EAAA,YAAA,EAKH,GAAAC,GAAA,EAAA,EAAA,YAAA,EAES,GAAAC,GAAA,EAAA,EAAA,IAAA,EAAA,EAQ/BjL,EAAA,EAAM,EACF,UApEgDC,EAAA,EAAAiL,GAAA,aAAAf,EAAAvE,SAAA,CAAA,EAGlD3F,EAAA,CAAA,EAAAgB,EAAAkJ,EAAA/K,YAAA,EAAAC,UAAAC,UAAA,EAAA,CAAA,EAWmBW,EAAA,CAAA,EAAAC,EAAAiK,EAAA/K,YAAA,EAAAC,UAAA8L,IAAA,EACjBlL,EAAA,EAAAgB,EAAAkJ,EAAA/K,YAAA,EAAAgB,YAAA,GAAA,EAAA,EAIFH,EAAA,EAAAgB,EAAAkJ,EAAAtE,wBAAA,EAAA,GAAA,EAAA,EAKA5F,EAAA,CAAA,EAAA8B,EAAA,IAAA5B,EAAA,GAAA,GAAAgK,EAAA/K,YAAA,EAAAgM,cAAA,EAAA,GAAA,EAEFnL,EAAA,CAAA,QAAAoL,GAAqBlB,EAAApE,kBAAA,CAAmB,EACxC9F,EAAA,EAAAgB,GAAAqK,GAAA,KAAA,KAAAA,EAAArF,QAAA,EAAA,GAAA,EAAA,EAyBEhG,EAAA,CAAA,EAAAgB,EAAAkJ,EAAAnF,cAAA,EAAA,GAAA,EAAA,EAKA/E,EAAA,EAAAgB,EAAAkJ,EAAAtK,WAAA,EAAA,GAAAsK,EAAAlF,aAAA,EAAA,GAAA,EAAA,EAKAhF,EAAA,CAAA,EAAAgB,EAAAkJ,EAAAnD,iBAAA,EAAA,GAAA,EAAA,kBD5BFuE,EACAC,GAAkBC,GAClBC,GAAqBC,EACrBC,GACAC,GACAC,GAAeC,GACfC,GAAiBC,GACjBC,GAAmBC,GACnBC,EAAO,EAAAC,OAAA,CAAA;sHAAA,CAAA,CAAA,CAAA,SAKE9J,CAAwB,GAAA,8BGzC/B+J,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,mBAFqBC,EAAA,OAAAC,EAAAC,UAAA,CAAA,EAAoB,QAAAD,EAAAE,WAAA,CAAA,EACvCC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAL,EAAAM,aAAA,CAAA,EAAA,GAAA,6BAGFC,EAAA,EAAA,MAAA,CAAA,oCACER,EAAA,YAAAS,GAAA,EAAA,EAAA,mFAAAC,GAAA,EAAAC,GAAAV,EAAAW,YAAA,CAAA,CAAA,EAAAC,EAAA,6BAXNC,GAAA,CAAA,EACAjB,EAAA,EAAA,KAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,oBAAA,EACEkB,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,CAAA,EAA2B,EAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,EAY7BlB,EAAA,cAjBcmB,EAAA,EAAAC,gBAAA,EAEZf,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,2EAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAgB,EAAAC,IAAA,SAAA,EAAA,CAAA,0BAcFxB,EAAA,EAAA,oBAAA,EACEW,EAAA,EAAA,sBAAA,EACFT,EAAA,GDtBF,OA0BauB,GA1BbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,IACAC,KACAC,KACAJ,KACAK,KACAC,KACAC,KACAC,KACAC,KACAC,+CAeab,IAA0B,IAAA,CAAjC,MAAOA,CAA0B,CAbvCc,aAAA,CAcmB,KAAAC,iBAAmBC,EAAOC,EAAkB,EAC5C,KAAAC,kBAAoBF,EAAOG,EAAiB,EAC5C,KAAAC,gBAAkBJ,EAAOK,EAAe,EAEtC,KAAA/B,YAAcgC,GAC/B,KAAKJ,kBAAkBK,aAAaC,KAClCC,GAAYC,IACNA,EAAIC,SAAW,KACjB,KAAKP,gBAAgBQ,eAAe,4BAA4B,EAE3DC,EAAG,EAAE,EACb,CAAC,CACH,EAGgB,KAAAC,wBAA0B,KAAKf,iBAAiBgB,kBAEhD,KAAAC,wBAA0BV,GAC3C,KAAKJ,kBAAkBe,oBAAoBT,KACzCC,GAAYC,IACNA,EAAIC,SAAW,KACjB,KAAKP,gBAAgBQ,eACnB,2FAA2F,EAGxFC,EAAG,EAAK,EAChB,CAAC,CACH,EAGgB,KAAAK,uBAAyBZ,GAC1C,KAAKP,iBAAiBoB,8BAA8BC,EAA+B,EAAEZ,KACnFa,EAAKC,GACHA,EAAcC,KAAMC,GAAiBA,EAAaC,WAAWC,iBAAmBC,GAAeC,KAAK,CAAC,EAEvGnB,GAAYC,IACNA,EAAIC,SAAW,KACjB,KAAKP,gBAAgBQ,eACnB,kFAAkF,EAG/EC,EAAG,EAAK,EAChB,CAAC,CACH,EAGgB,KAAAhC,gBAAkBgD,EAAS,IAAK,CACjD,GAAI,MAAKC,UAAS,EAIlB,OAAK,KAAKhB,wBAAuB,EAI7B,CAAC,KAAKI,uBAAsB,GAAM,CAAC,KAAKF,wBAAuB,EAC1D,WAKL,KAAKE,uBAAsB,IAAO,KAAKF,wBAAuB,EACzD,eAGF,SAbE,aAcX,CAAC,EAGkB,KAAAc,UAAYD,EAAS,IACtC,CACE,KAAKf,wBAAuB,EAC5B,KAAKI,uBAAsB,EAC3B,KAAKF,wBAAuB,EAC5B,KAAK1C,YAAW,CAAE,EAClByD,SAASC,MAAS,CAAC,EAGJ,KAAApE,UAAYiE,EAAS,IAAK,CAC3C,OAAQ,KAAKhD,gBAAe,EAAE,CAC5B,IAAK,SACH,MAAO,UACT,IAAK,eACH,MAAO,UACT,IAAK,WACH,MAAO,MACT,IAAK,cACH,MAAO,MACT,QACE,MAAO,KACX,CACF,CAAC,EAEkB,KAAAhB,WAAagE,EAAS,IAChC,wEAAwE,KAAKhD,gBAAe,GAAM,eAAeoD,YAAW,CAAE,QACtI,EAEkB,KAAAhE,aAAe4D,EAAS,IAClC,wEAAwE,KAAKhD,gBAAe,GAAM,eAAeoD,YAAW,CAAE,UACtI,kDApGUjD,EAA0B,CAAA,+BAA1BA,EAA0BkD,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,WAAA,GAAA,EAAA,OAAA,OAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GC1BvC9D,EAAA,EAAAgE,GAAA,EAAA,CAAA,EAA6B,EAAAC,GAAA,EAAA,EAAA,oBAAA,OAA7B5D,EAAA0D,EAAAV,UAAA,IAAA,GAAA,EAAA,CAAA,iBDgBIa,GACAC,GACAC,GAAqBC,EACrBC,EACAC,GAA0BC,GAC1BC,GAAiBC,EAAA,EAAAC,OAAA,CAAA;0HAAA,CAAA,CAAA,CAAA,SAKRpE,CAA0B,GAAA,2BGpBjCqE,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,uBAAA,CAAA,EACFC,EAAA,SADwBC,EAAA,EAAAC,EAAA,OAAA,OAAA,sCAKpBJ,EAAA,EAAA,oBAAA,CAAA,EAIEK,EAAA,aAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAcF,EAAAG,cAAAP,CAAA,CAA0B,CAAA,CAAA,EAI1CJ,EAAA,4BANEE,EAAA,cAAAE,CAAA,EAA2B,gBAAA,CAAA,EAAAA,EAAAA,EAAAQ,KAAA,MAAAR,EAAAQ,IAAAC,QAAA,OAAAT,EAAAQ,IAAAC,OAAAC,WAAA,EAC4B,aAAAV,GAAA,KAAA,KAAAA,EAAAW,UAAA,EAEjB,eAAAX,GAAA,KAAA,KAAAA,EAAAY,YAAA,6BAP5ClB,EAAA,EAAA,MAAA,CAAA,EACEmB,GAAA,EAAAC,GAAA,EAAA,EAAA,oBAAA,EAAAC,EAAA,EAWFnB,EAAA,kBAXEC,EAAA,EAAAmB,GAAAZ,EAAAa,YAAA,CAAa,GDXrB,IA+BaC,GA/BbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,IACAH,KACAI,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,sCAcanB,IAAwB,IAAA,CAA/B,MAAOA,CAAwB,CAZrCoB,aAAA,CAaqB,KAAAC,mBAAqBC,EAAOC,EAAkB,EAC9C,KAAAC,iBAAmBF,EAAOG,EAAgB,EAC5C,KAAAC,WAAaJ,EAAOK,EAAgB,EACpC,KAAAC,gBAAkBN,EAAOO,EAAsB,EAC/C,KAAAC,kBAAoBR,EAAOS,EAA0B,EAC9D,KAAAC,UAAYV,EAAOW,EAAS,EACnB,KAAAC,OAASZ,EAAOa,EAAM,EACvC,KAAAC,kBAAoBd,EAAOe,EAAiB,EAC3B,KAAAC,aAAe,KAAKF,kBAAkBE,aACtC,KAAAC,kBAAoBC,GAAa,KAAKnB,mBAAmBoB,iBAAiB,EAE1E,KAAAC,aAAe,KAAKC,eAAc,EAElC,KAAAC,UAAYC,GAC3BC,EAAc,CAAC,KAAKpB,WAAY,KAAKE,eAAe,CAAC,EAAEmB,KAAKC,EAAI,IAAM,EAAI,CAAC,EAC3E,KAAKN,aAAaK,KAAKC,EAAI,IAAM,EAAK,CAAC,CAAC,EAGvB,KAAAC,UAAYC,GAAS,KAAKN,UAAW,CACtDO,YAAa,GACd,EAEkB,KAAApD,YAAcmD,GAAS,KAAKR,YAAY,EAEnDC,gBAAc,CACpB,OAAOG,EAAc,CAAC,KAAKpB,WAAY,KAAKE,gBAAiB,KAAKW,kBAAmB,KAAKT,iBAAiB,CAAC,EAAEiB,KAC5GK,EAAU,CAAC,CAACC,EAAWC,EAAgBC,EAAkBC,CAAgB,IAChE,KAAKnC,mBAAmBoC,eAAeJ,EAAWC,CAAc,EAAEP,KACvEC,EAAKU,GAAgB,CACnB,IAAIC,EACFD,GACIV,IAAKY,GACL,KAAKvC,mBAAmBwC,gCAAgCD,EAAWJ,CAAgB,CAAC,GAEpFM,OAAOC,EAAoB,GAAK,CAAA,EAuBtC,GApBAP,EAAiBQ,QAASC,GAAoB,CAC5C,GACE,CAACN,EAAWO,KAAMN,GAEdO,GACEP,EAAUA,UAAUQ,MAAQC,GAAcC,0BAA0B,IAChEL,EAAiBL,UAAUW,EAEpC,EACD,CAEA,IAAMC,EAAuBC,gBAAgBR,CAAgB,EAE7DO,EAAqBZ,UAAUc,KAAO,KAAKlD,iBAAiBmD,QAC1DH,EAAqBZ,UAAUc,MAAQ,EAAE,EAE3Cf,EAAWiB,KAAKJ,CAAoB,CACtC,CACF,CAAC,EAEG,CAACjB,EACHI,EAAaA,EAAWG,OAAQF,GACvBA,EAAUA,UAAUW,KAAOM,EACnC,MACI,CAEL,IAAMC,EAAiBnB,EAAWO,KAC/BN,GAAcA,EAAUA,UAAUW,KAAOM,EAA+B,EAEvEC,GAAgBxF,MAClBwF,EAAexF,IAAIC,OAAS,CAC1BC,WAAY,GACZuF,SAAU,KAAKC,gCAAgCC,KAAK,IAAI,GAG9D,CAEA,OAAOtB,CACT,CAAC,EACDP,EAAWO,GACY,KAAKtC,mBAAmB6D,gBAAgB7B,EAAWC,EAAgB,EAAI,EACxEP,KAClBC,EAAKmC,GACIxB,EAAWX,IAAKY,IACrBA,EAAUwB,YAAcD,EAAcrB,OAAQuB,GAE1CzB,EAAUA,UAAUQ,OAASkB,QAC7BD,EAAaE,WAAWC,yBAAyBC,SAAS7B,EAAUA,UAAUQ,IAAI,CAErF,EACMR,EACR,CACF,CAAC,CAEL,EACD8B,GAAYC,IACVC,QAAQC,MAAM,6BAA8BF,CAAC,EACtCG,EAAG,CAAA,CAAE,EACb,CAAC,CAEL,CAAC,CAEN,CAEgBd,iCAA+B,QAAAe,GAAA,sBAC7C,KAAK/D,UAAUgE,KAAKC,EAA0B,CAChD,GAEU5G,cAAc6G,EAAwB,CAC1CA,GACF,KAAKC,6BAA6BD,CAAW,IAAG,CAEpD,CAEUC,6BAA6BD,EAAwB,CAC7D,GAAI,CAACA,GAAa5G,KAAO,CAAC4G,GAAa5G,IAAIC,QAAQC,WACjD,OAGF,IAAMD,EAAS2G,GAAa5G,KAAKC,OACjC,GAAIA,GAAQ6G,IACV,MAAO,IAAMC,OAAOL,KAAKzG,EAAO6G,IAAK,QAAQ,EAG/C,GAAI7G,GAAQ+G,aACV,MAAO,IAAM,KAAKpE,OAAOqE,SAAShH,EAAO+G,YAAY,EAGvD,GAAI/G,GAAQwF,SACV,OAAOxF,EAAOwF,QAGlB,iDAlIW/E,EAAwB,CAAA,+BAAxBA,EAAwBwG,UAAA,CAAA,CAAA,mBAAA,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,cAAA,MAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,YAAA,WAAA,WAAA,EAAA,cAAA,gBAAA,aAAA,cAAA,EAAA,CAAA,EAAA,iBAAA,YAAA,WAAA,WAAA,EAAA,aAAA,cAAA,gBAAA,aAAA,cAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IC/BrCrI,EAAA,EAAA,WAAA,EAAW,EAAA,mBAAA,EACU,EAAA,iBAAA,EACAuI,EAAA,CAAA,mBAAgDrI,EAAA,EAAkB,EAErFF,EAAA,EAAA,oBAAA,CAAA,EACEwI,EAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,EAAmB,EAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,EAmBrBxI,EAAA,EAAoB,SAtBDC,EAAA,CAAA,EAAAwI,EAAAC,EAAA,EAAA,EAAA,8BAAA,CAAA,EAGjBzI,EAAA,CAAA,EAAA0I,EAAAP,EAAA7D,UAAA,EAAA,EAAA,CAAA,kBDiBAqE,EACAC,GAAgBC,GAAAC,GAAAC,GAAAC,GAChBC,GACAC,GAAqBC,EACrBC,GAA0BC,EAAA,EAAAC,OAAA,CAAA;sHAAA,CAAA,CAAA,CAAA,SAKjBjI,CAAwB,GAAA,6BG1B3BkI,EAAA,EAAA,cAAA,CAAA,mBAAaC,EAAA,OAAAC,EAAAC,EAAAC,YAAA,IAAA,MAAAF,EAAAG,WAAA,KAAA,KAAAH,EAAAG,UAAAC,SAAA,4BAEbN,EAAA,EAAA,cAAA,CAAA,mBAAaC,EAAA,WAAAC,EAAAC,EAAAC,YAAA,IAAA,MAAAF,EAAAK,YAAA,KAAA,KAAAL,EAAAK,WAAAC,iBAAA,6BAKXC,EAAA,EAAA,IAAA,CAAA,EAAoBC,EAAA,CAAA,mBAAkDC,EAAA,oBAAlDC,EAAA,EAAAC,EAAAC,EAAA,EAAA,GAAAZ,GAAAA,EAAAC,EAAAC,YAAA,IAAA,KAAA,KAAAF,EAAAa,eAAA,MAAAb,IAAAc,OAAAd,EAAA,EAAA,CAAA,GDZhC,UAkBae,IAlBbC,GAAAC,EAAA,KAAAC,IACAC,IAEAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,uDAQaX,KAAiC,IAAA,CAAxC,MAAOA,CAAiC,CAoB5CY,YAAoBC,EAAsB,CAAtB,KAAAA,WAAAA,EAnBX,KAAAzB,UAAY0B,GAAMC,SAAQ,EAC1B,KAAAC,eAAiBC,GAASC,EAAOC,EAAsB,CAAC,EAEhD,KAAAC,mBAAqBF,EAAOG,EAAkB,EAC9C,KAAAC,OAASJ,EAAOK,EAAM,EACpB,KAAAC,WAAa,KAAKF,OAAOG,IAC5C,KAAAC,iBAAmBT,GAAS,KAAKG,mBAAmBO,kBAAmB,CAAEC,aAAc,CAAA,CAAE,CAAE,EAE3F,KAAAzC,YAAc0C,EAAS,IACrB,KAAKT,mBAAmBU,gCAAgC,KAAK1C,UAAS,EAAI,KAAKsC,iBAAgB,CAAE,CAAC,EAEpG,KAAAK,cAAgBF,EAAS,IAAM,KAAK1C,YAAW,GAAIG,YAAYyC,aAAa,EAE5E,KAAAC,qBAAuBH,EAAS,IACvB,KAAKzC,UAAS,EACjB,KAAKgC,mBAAmBa,+BAA+B,KAAKjB,eAAc,GAAM,GAAI,KAAK5B,UAAS,EAAG8C,IAAM,EAAE,EAC7G,EACL,EAGC,IAAMC,EAAU,KAAKtB,WAAWuB,cAChCC,GAAO,IAAK,CACVF,EAAQG,MAAMC,YAAY,yBAA0B,KAAKR,cAAa,CAAE,CAC1E,CAAC,CACH,iDAzBW/B,GAAiCwC,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAjCzC,EAAiC0C,UAAA,CAAA,CAAA,6BAAA,CAAA,EAAAC,OAAA,CAAAvD,UAAA,CAAA,EAAA,WAAA,CAAA,EAAAwD,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,mBAAA,EAAA,aAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IClB9CxD,EAAA,EAAA,MAAA,CAAA,EAAoC,EAAA,MAAA,CAAA,EACA,EAAA,MAAA,CAAA,EACJ,EAAA,MAAA,CAAA,EAExB0D,EAAA,EAAAC,GAAA,EAAA,EAAA,cAAA,CAAA,EAA2C,EAAAC,GAAA,EAAA,EAAA,cAAA,CAAA,EAK3C5D,EAAA,EAAA,MAAA,CAAA,EAA4B,EAAA,IAAA,CAAA,EACTC,EAAA,CAAA,EAAoCC,EAAA,EACrDwD,EAAA,EAAAG,GAAA,EAAA,EAAA,IAAA,CAAA,EAGF3D,EAAA,EAAM,EAERF,EAAA,GAAA,IAAA,CAAA,EAMEC,EAAA,EAAA,oBACFC,EAAA,EAAI,EACA,EACF,kBArBAC,EAAA,CAAA,EAAA2D,EAAAC,GAAAA,EAAAN,EAAA9D,YAAA,IAAA,MAAAoE,EAAAnE,WAAA,OAAAmE,EAAAnE,UAAAC,UAAA,EAAA,CAAA,EAMmBM,EAAA,CAAA,EAAAC,GAAAX,EAAAgE,EAAA9D,YAAA,IAAA,MAAAF,EAAAG,WAAA,KAAA,KAAAH,EAAAG,UAAAoE,IAAA,EACjB7D,EAAA,EAAA2D,GAAAG,EAAAR,EAAA9D,YAAA,IAAA,MAAAsE,EAAA3D,YAAA,EAAA,EAAA,EAQFH,EAAA,EAAAX,EAAA,aAAA0E,GAAA,EAAAC,GAAAV,EAAAjB,qBAAA,CAAA,CAAA,EAAuC,cAAA0B,GAAA,GAAAE,GAAAX,EAAAzB,UAAA,CAAA,EAGvC7B,EAAA,EAAAkE,EAAA,IAAAhE,EAAA,GAAA,EAAA,oDAAA,EAAA,GAAA,kBDRIiE,EAAcC,GAAkBC,GAAEC,GAAYC,GAAeC,GAAEC,GAAqBC,CAAA,EAAAC,OAAA,CAAA;gIAAA,CAAA,CAAA,CAAA,SAInFtE,CAAiC,GAAA,IElB9C,IAAAuE,GAAAC,EAAA,KAAAC,KACAC,KACAC,OCFA,IAAAC,GAAAC,EAAA,QCAA,IAWaC,GAXbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,KACAC,sBAOaN,IAAgC,IAAA,CAAvC,MAAOA,CAAgC,iDAAhCA,EAAgC,CAAA,+BAAhCA,EAAgCO,UAAA,CAAA,CAAA,+BAAA,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,mBAAA,EAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICX7CE,EAAA,EAAA,KAAA,CAAA,EAAqBC,EAAA,CAAA,mBAAyEC,EAAA,EAC9FF,EAAA,EAAA,oBAAA,EAAoB,EAAA,GAAA,EACfC,EAAA,CAAA,mBAAgFC,EAAA,EACnFF,EAAA,EAAA,GAAA,EAAGC,EAAA,CAAA,mBAAkFC,EAAA,EACrFF,EAAA,GAAA,GAAA,EAAGC,EAAA,EAAA,oBAAkFC,EAAA,EAAI,EAE3FF,EAAA,GAAA,oBAAA,EAAoB,GAAA,SAAA,CAAA,EACuCC,EAAA,EAAA,oBAA6CC,EAAA,EAAS,SAP5FC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,uDAAA,CAAA,EAEhBF,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,8DAAA,CAAA,EACAF,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,gEAAA,CAAA,EACAF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,gEAAA,CAAA,EAGsDF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,2BAAA,CAAA,kBDC/CC,EAAcC,GAAeC,GAAAC,GAAAC,GAAAC,GAAEC,GAAeC,GAAEC,EAAeC,CAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAG9D9B,CAAgC,GAAA,IEX7C,IAWa+B,GAXbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,KACAC,KACAC,4BAMaP,IAAqC,IAAA,CAA5C,MAAOA,CAAqC,iDAArCA,EAAqC,CAAA,+BAArCA,EAAqCQ,UAAA,CAAA,CAAA,mCAAA,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,QAAA,aAAA,OAAA,OAAA,EAAA,CAAA,OAAA,GAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,mBAAA,EAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICXlDE,EAAA,EAAA,KAAA,CAAA,EACEC,EAAA,CAAA,mBACAD,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,EAAa,EAGfF,EAAA,EAAA,oBAAA,EAAoB,EAAA,GAAA,EACf,EAAA,QAAA,EACOC,EAAA,CAAA,oBAA4FC,EAAA,EACpGD,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAwFC,EAAA,EAC5FF,EAAA,GAAA,IAAA,EAAI,GAAA,IAAA,EACEC,EAAA,EAAA,oBAAkFC,EAAA,EACtFF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAkFC,EAAA,EACtFF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAkFC,EAAA,EACtFF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAkFC,EAAA,EACtFF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAkFC,EAAA,EACtFF,EAAA,GAAA,IAAA,EACEC,EAAA,EAAA,oBACAD,EAAA,GAAA,KAAA,CAAA,EAAa,GAAA,IAAA,EACPC,EAAA,EAAA,oBAAgFC,EAAA,EACpFF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAgFC,EAAA,EACpFF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAgFC,EAAA,EACpFF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAgFC,EAAA,EACpFF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAgFC,EAAA,EACpFF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAgFC,EAAA,EACpFF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAgFC,EAAA,EACpFF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAgFC,EAAA,EACpFF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAgFC,EAAA,EAAK,EACtF,EACF,EAEPF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAA4FC,EAAA,EAChGF,EAAA,GAAA,GAAA,EAAGC,EAAA,EAAA,oBAAgGC,EAAA,EAAI,EAEzGF,EAAA,GAAA,oBAAA,EAAoB,GAAA,SAAA,CAAA,EACuCC,EAAA,EAAA,oBAA6CC,EAAA,EAAS,SArC/GC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,GAAA,4DAAA,EAAA,GAAA,EAEEF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,GAAA,0BAAA,EAAA,GAAA,EAMQF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,0EAAA,CAAA,EACRF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,kEAAA,EAAA,GAAA,EAEEF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,sEAAA,CAAA,EAEEF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,gEAAA,CAAA,EACAF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,gEAAA,CAAA,EACAF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,gEAAA,CAAA,EACAF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,gEAAA,CAAA,EACAF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,gEAAA,CAAA,EAEFF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,gEAAA,EAAA,GAAA,EAEMF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,8DAAA,CAAA,EACAF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,8DAAA,CAAA,EACAF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,8DAAA,CAAA,EACAF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,8DAAA,CAAA,EACAF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,8DAAA,CAAA,EACAF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,8DAAA,CAAA,EACAF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,8DAAA,CAAA,EACAF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,8DAAA,CAAA,EACAF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,8DAAA,CAAA,EAINF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,0EAAA,CAAA,EACDF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,8EAAA,CAAA,EAGsDF,EAAA,CAAA,EAAAG,EAAAD,EAAA,GAAA,GAAA,2BAAA,CAAA,kBD9B/CE,EAAcC,GAAeC,GAAAC,GAAAC,GAAAC,GAAEC,GAAeC,GAAEC,GAAqBC,EAAEC,GAAiBC,EAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAGvFlC,CAAqC,GAAA,8BGN9CmC,EAAA,EAAA,IAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,mBAFyCC,EAAA,aAAAC,GAAA,EAAAC,GAAAC,EAAAC,UAAA,CAAA,EACvCC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAJ,EAAAK,gBAAA,4BAAA,EAAA,GAAA,4BADFC,EAAA,EAAAC,GAAA,EAAA,EAAA,IAAA,CAAA,iBAAuBV,EAAA,OAAAG,EAAAC,UAAA,sCAIvBP,EAAA,EAAA,SAAA,CAAA,EAA2Bc,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAV,EAAAW,EAAA,EAAA,OAAAC,EAASZ,EAAAa,YAAAC,KAAA,CAAkB,CAAA,CAAA,EACpDnB,EAAA,CAAA,mBACFC,EAAA,oBADEM,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAJ,EAAAK,gBAAA,4BAAA,EAAA,GAAA,GDVN,OAmBaU,GAnBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,0CAaaT,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,CAZlCU,aAAA,CAamB,KAAAC,YAAc,IAAIC,GAClB,KAAAd,YAAc,IAAIc,GAEnB,KAAAC,SAAW,mDAJhBb,EAAqB,CAAA,+BAArBA,EAAqBc,UAAA,CAAA,CAAA,kBAAA,CAAA,EAAAC,OAAA,CAAA7B,WAAA,aAAA2B,SAAA,WAAAG,eAAA,iBAAA1B,eAAA,gBAAA,EAAA2B,QAAA,CAAAN,YAAA,cAAAb,YAAA,aAAA,EAAAoB,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,QAAA,UAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,YAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICnBlC3C,EAAA,EAAA,oBAAA,EAAoB,EAAA,SAAA,CAAA,EACsBc,EAAA,QAAA,UAAA,CAAA,OAAS8B,EAAAZ,YAAAZ,KAAA,CAAkB,CAAA,EACjEnB,EAAA,CAAA,mBACFC,EAAA,EACAU,EAAA,EAAAiC,GAAA,EAAA,EAAA,IAAA,CAAA,EAAkB,EAAAC,GAAA,EAAA,EAAA,SAAA,CAAA,EASpB5C,EAAA,SAZuEM,EAAA,EAAAL,EAAA,WAAAyC,EAAAV,QAAA,EACnE1B,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAkC,EAAAP,gBAAA,0BAAA,EAAA,GAAA,EAEF7B,EAAA,CAAA,EAAAuC,EAAAH,EAAArC,WAAA,EAAA,CAAA,kBDMEyC,EAAYC,GACZC,GAAYC,GACZC,GACAC,GAAeC,GAAAC,GACfC,GAAqBC,EACrBC,GAAwBrC,EAAA,EAAAsC,cAAA,CAAA,CAAA,CAAA,SAIftC,CAAqB,GAAA,IEnBlC,IAOauC,GAPbC,GAAAC,EAAA,KAEAC,KACAC,mBAIaJ,IAAmB,IAAA,CAA1B,MAAOA,UAA2BK,EAA0B,CAChEC,YACUC,EACAC,EAAsC,CAE9C,MAAMD,CAAU,EAHR,KAAAA,WAAAA,EACA,KAAAC,mBAAAA,CAGV,CAEOC,QAAM,CACX,OAAQ,KAAKD,mBAAmBE,eAAc,EAAE,CAC9C,KAAKC,GAAYC,KACf,MAAO,gDAET,KAAKD,GAAYE,KACf,MAAO,gDAET,QACE,MAAO,+CAEX,CACF,CAEAC,aAAaC,EAAkB,CAC7B,IAAMC,EAAgBD,GAAUE,MAAMC,cAAgBH,EAASI,KACzDC,EAAW,IAAIC,SAErBD,OAAAA,EAASE,OAAO,QAASN,CAAa,EAC/B,KAAKT,WAAWgB,KAAqB,KAAKd,OAAM,EAAIW,EAAU,CAAEI,gBAAiB,EAAI,CAAE,CAChG,iDA5BWxB,GAAkByB,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,kCAAlB3B,EAAkB4B,QAAlB5B,EAAkB6B,SAAA,CAAA,CAAA,SAAlB7B,CAAmB,GAAA,uCEIpB8B,EAAA,EAAA,SAAA,CAAA,EAA2BC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,SAAA,CAAU,CAAA,CAAA,EAAEC,EAAA,EAAA,QAAA,EAAMC,EAAA,sCAN5DT,EAAA,EAAA,MAAA,CAAA,EACEU,EAAA,EAAA,cAAA,CAAA,EAEAV,EAAA,EAAA,MAAA,CAAA,EAA2B,EAAA,SAAA,CAAA,EACEC,EAAA,QAAA,UAAA,CAAAC,EAAAS,CAAA,EAAA,IAAAP,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAQ,MAAAC,IAAe,QAAQ,CAAC,CAAA,CAAA,EAAEL,EAAA,EAAA,QAAA,EAAMC,EAAA,EACpEK,EAAA,EAAAC,GAAA,EAAA,EAAA,SAAA,CAAA,EAGFN,EAAA,EAAM,oBAPOO,EAAA,EAAAC,EAAA,MAAAb,EAAAc,KAAAC,QAAA,EAAqB,UAAAf,EAAAc,KAAAE,UAAA,EAA4B,QAAA,GAAA,EAI5DJ,EAAA,CAAA,EAAAK,EAAAjB,EAAAc,KAAAC,SAAA,EAAA,EAAA,sCAQFnB,EAAA,EAAA,sBAAA,CAAA,mBAGEC,EAAA,oBAAA,SAAAqB,EAAA,CAAApB,EAAAqB,CAAA,EAAA,IAAAnB,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAqBF,EAAAoB,QAAAF,CAAA,CAAe,CAAA,CAAA,EAAC,eAAA,SAAAA,EAAA,CAAApB,EAAAqB,CAAA,EAAA,IAAAnB,EAAAC,EAAA,CAAA,EAAA,OAAAC,EACrBF,EAAAqB,SAAAH,CAAA,CAAgB,CAAA,CAAA,EAAC,eAAA,SAAAA,EAAA,CAAApB,EAAAqB,CAAA,EAAA,IAAAnB,EAAAC,EAAA,CAAA,EAAA,OAAAC,EACjBF,EAAAsB,eAAAJ,CAAA,CAAsB,CAAA,CAAA,EAEvCb,EAAA,OANCQ,EAAA,WAAAU,EAAA,EAAA,EAAA,yCAAA,CAAA,EAAkE,WAAA,CAAA,EACpD,SAAA,iBAAA,qCAOhB3B,EAAA,EAAA,oBAAA,CAAA,EAMEC,EAAA,SAAA,SAAAqB,EAAA,CAAApB,EAAA0B,CAAA,EAAA,IAAAxB,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAUF,EAAAyB,QAAAP,CAAA,CAAe,CAAA,CAAA,EAN3Bb,EAAA,qBACEQ,EAAA,kBAAA,OAAA,EAA2B,WAAAb,EAAA0B,KAAA,CAAA,EACR,QAAA,OAAA,EACF,gBAAAC,GAAA,EAAAC,EAAA,CAAA,EAC4B,eAAAC,GAAA,EAAAC,GAAAH,GAAA,EAAAI,EAAA,CAAA,CAAA,4BAdjDrB,EAAA,EAAAsB,GAAA,EAAA,EAAA,sBAAA,CAAA,EAAe,EAAAC,GAAA,EAAA,EAAA,oBAAA,CAAA,iBAAfhB,EAAAjB,EAAA0B,KAAA,EAAA,EAAA,CAAA,GDjBN,aAuBaQ,GAvBbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KAMAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,2HASaZ,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CASpCa,YAA4CjC,EAA8C,CAA9C,KAAAA,KAAAA,EAR5C,KAAAY,KAAOsB,EAAwB,IAAI,EAClB,KAAAC,cAAgBC,EAAOC,EAA6B,EAClD,KAAA3C,MAAQwC,EAAO,QAAQ,EAEzB,KAAAI,UAAYF,EAAOG,EAAuC,EAE1D,KAAAC,MAAQJ,EAAOK,EAAe,EAG7C,KAAK/C,MAAMC,IAAIK,EAAKC,SAAW,OAAS,QAAQ,CAClD,CAEAZ,UAAQ,CACN,KAAKiD,UAAUI,MAAM,CAAEC,QAAS,EAAI,CAAE,CACxC,CAEArC,QAAQsC,EAAsB,CAC5B,KAAKJ,MAAMK,eAAeD,EAAME,MAAMC,OAAO,EAC7C,KAAKT,UAAUI,MAAK,CACtB,CAEAnC,SAASyC,EAAyB,CAC3BA,IACL,KAAKb,cAAcc,MAAK,EACxB,KAAKX,UAAUI,MAAM,CAAEQ,YAAaF,EAASG,GAAG,CAAE,EACpD,CAEA3C,eAAe4C,EAAiB,CAC9B,IAAMJ,EAAWI,IAAQ,CAAC,EACtBJ,GACF,KAAKpC,KAAKjB,IAAIqD,CAAQ,CAE1B,CAEMrC,QAAQ0C,EAAkB,QAAAC,GAAA,sBAC9B,IAAMC,EAAc,KAAK3C,KAAI,EACzByC,GAAQE,GACV,KAAKpB,cAAcqB,gBAAgBD,EAAaF,CAAI,EACpD,KAAKlB,cAAcsB,kBAAiB,EAEpCC,GAAe,KAAKvB,cAAcwB,aAAa,EAAEC,KAAMZ,GAAY,CACjE,KAAKV,UAAUI,MAAM,CACnBQ,YAAaF,EAASG,IACvB,CACH,CAAC,IAED,KAAKhB,cAAcc,MAAK,EACxB,KAAKrC,KAAKjB,IAAI,IAAI,EAClB,KAAK2C,UAAUI,MAAK,EAExB,mDAnDWtB,GAAyByC,EAShBC,EAAe,CAAA,CAAA,CAAA,+BATxB1C,EAAyB2C,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,SAAA,CAAAC,GAFzB,CAAC,CAAEC,QAAS7B,GAA+B8B,SAAUC,EAAkB,CAAE,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,MAAA,UAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,CAAA,EAAA,WAAA,WAAA,QAAA,EAAA,CAAA,EAAA,eAAA,EAAA,kBAAA,WAAA,QAAA,gBAAA,cAAA,EAAA,CAAA,EAAA,oBAAA,eAAA,eAAA,WAAA,WAAA,QAAA,EAAA,CAAA,EAAA,eAAA,EAAA,SAAA,kBAAA,WAAA,QAAA,gBAAA,cAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,ICrBvF3F,EAAA,EAAA,KAAA,CAAA,EAAqBQ,EAAA,CAAA,mBAAwEC,EAAA,EAE7FT,EAAA,EAAA,oBAAA,EAEIc,EAAA,EAAA+E,GAAA,EAAA,EAAA,MAAA,CAAA,EAAgB,EAAAC,GAAA,EAAA,CAAA,EAmCpBrF,EAAA,cAvCqBO,EAAA,EAAA+E,EAAApE,EAAA,EAAA,EAAA,sDAAA,CAAA,EAGnBX,EAAA,CAAA,EAAAK,GAAA2E,EAAAJ,EAAAhF,MAAA,KAAA,OAAM,EAAAoF,IAAN,SAAQ,EAAA,EAAA,kBDeEC,GAAeC,GAAAC,GAAEC,GAAoBC,GAAAC,GAAEC,EAAeC,EAAEC,GAAkBC,GAAEC,GAAeC,GAAEC,EAAa,EAAAC,OAAA,CAAA;uHAAA,CAAA,CAAA,CAAA,SAKzGxE,CAAyB,GAAA,8BGflCyE,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,cAAA,CAAA,EACFC,EAAA,kBADeC,EAAA,EAAAC,EAAA,UAAAC,EAAAC,WAAA,CAAA,EAAwB,QAAA,EAAA,GDT3C,IA2BaC,GA3BbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,mBAiBab,IAAoB,IAAA,CAA3B,MAAOA,CAAoB,CAfjCc,aAAA,CAgBE,KAAAC,SAAWC,GAAK,EAChB,KAAAjB,WAAaiB,GAAK,EACR,KAAAC,gBAAkB,IAAIC,GAEhC,KAAAC,oBAAsBC,EAAsB,IAAI,EAC/B,KAAAC,OAASC,EAAOC,EAAS,EAE1CC,eAAa,CACO,KAAKH,OAAOI,KAAKC,GAA2B,CAC5DC,MAAO,QACPC,KAAM,CACJC,SAAU,KAAKd,SAAQ,EACvBhB,WAAY,KAAKA,WAAU,GAE9B,EAES+B,YAAW,EAAGC,UAAWC,GAAU,CACvCA,IACEA,EAAOC,OACT,KAAKhB,gBAAgBiB,KAAK,EAAE,GAE5B,KAAKjB,gBAAgBiB,KAAKF,EAAOG,WAAW,EAC5C,KAAKhB,oBAAoBiB,IAAIJ,EAAOG,WAAW,GAGrD,CAAC,CACH,iDA3BWnC,EAAoB,CAAA,+BAApBA,EAAoBqC,UAAA,CAAA,CAAA,iBAAA,CAAA,EAAAC,OAAA,CAAAvB,SAAA,CAAA,EAAA,UAAA,EAAAhB,WAAA,CAAA,EAAA,YAAA,CAAA,EAAAwC,QAAA,CAAAtB,gBAAA,iBAAA,EAAAuB,SAAA,CAAAC,GAJpB,CAAC,CAAEC,QAASC,GAA+BC,SAAUC,EAAkB,CAAE,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,UAAA,OAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,UAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICvBvFzD,EAAA,EAAA,MAAA,CAAA,EAA8B2D,EAAA,QAAA,UAAA,CAAA,OAASD,EAAA3B,cAAA,CAAe,CAAA,EACpD9B,EAAA,EAAA,cAAA,CAAA,EAEAD,EAAA,EAAA,MAAA,CAAA,EAA0B,EAAA,UAAA,EACd4D,EAAA,EAAA,cAAA,EAAY1D,EAAA,EAAW,EAGnC2D,EAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,EAKF5D,EAAA,SAXeC,EAAA,EAAAC,EAAA,MAAAsD,EAAAhC,oBAAA,GAAAgC,EAAApC,SAAA,CAAA,EAA2C,UAAAoC,EAAApD,WAAA,CAAA,EAAyB,QAAA,GAAA,EAMjFH,EAAA,CAAA,EAAA4D,EAAAL,EAAAhC,oBAAA,GAAAgC,EAAApC,SAAA,EAAA,EAAA,EAAA,kBDQE0C,EACAC,EACAC,GACAC,GACAC,GAAkBC,GAClBC,GAAaC,GACbC,EAAa,EAAAC,OAAA,CAAA;iHAAA,CAAA,CAAA,CAAA,SAMJlE,CAAoB,GAAA,IE3BjC,IAMamE,GANbC,GAAAC,EAAA,KAAAC,IACAC,KAEAC,SAGaL,IAAmB,IAAA,CAA1B,MAAOA,CAAmB,CADhCM,aAAA,CAEmB,KAAAC,kBAAoBC,EAAOC,EAA4B,EACvD,KAAAC,kBAAoBC,EAAO,EAAK,EAEjDC,eAAa,CACX,OAAI,KAAKF,kBAAiB,EACjB,KAAKH,kBACTM,UAAU,CACTC,KAAM,OACNC,MAAO,4CACPC,QAAS,8CACTC,kBAAmB,8CACpB,EACAC,KAAKC,EAAKC,GAAiB,CAAC,CAACA,CAAY,CAAC,EAExC,EACT,CAEAC,mBAAmBC,EAAmB,CACpC,KAAKZ,kBAAkBa,IAAID,CAAU,CACvC,iDApBWtB,EAAmB,CAAA,kCAAnBA,EAAmBwB,QAAnBxB,EAAmByB,UAAAC,WADN,MAAM,CAAA,CAAA,SACnB1B,CAAmB,GAAA,ICNhC,UAkBa2B,GAlBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,qFAQaZ,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CAN3Ca,aAAA,CAOE,KAAAC,UAAYC,GAAK,EAEE,KAAAC,mBAAqBC,EAAOC,EAAgB,EAC9C,KAAAC,gBAAkBF,EAAOG,EAAe,EAEhD,KAAAC,sBAAwB,IAEjC,KAAAC,WAAaC,GAAa,KAAKT,SAAS,EAAEU,KACxCC,GAAQX,GAAc,CAAC,CAACA,CAAS,EACjCY,EAAWZ,GAAc,KAAKK,gBAAgBQ,aAAa,CAAEb,UAAWA,CAAS,CAAE,CAAC,EACpFc,EAAKC,GAAK,CAER,IAAMC,EAAeC,KAAKC,MAAMH,GAAGI,cAAgB,IAAc,EACjE,MAAO,CACLH,aAAcA,EACdI,UAAWL,GAAGM,UACdC,QAASP,GAAGQ,QACZC,aAAcP,KAAKQ,IAAIR,KAAKS,MAAOV,EAAe,KAAKT,sBAAyB,GAAG,EAAG,GAAG,EAE7F,CAAC,EACDoB,GAAY,CAAC,CAAC,kDArBLzC,EAA8B,CAAA,+BAA9BA,EAA8B0C,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,OAAA,CAAA7B,UAAA,CAAA,EAAA,WAAA,CAAA,EAAA8B,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,WAAA,WAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,kBAAA,QAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IClB3CE,GAAA,CAAA,eACAC,EAAA,EAAA,MAAA,CAAA,EAAmC,EAAA,KAAA,EAE/BC,EAAA,CAAA,mBAQFC,EAAA,EACAC,EAAA,EAAA,oBAAA,CAAA,EACAH,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,CAAA,6CAQFC,EAAA,EACAC,EAAA,GAAA,MAAA,CAAA,EACFD,EAAA,kCAtBOE,EAAA,CAAA,EAAAC,GAAAC,EAAA,GAAA,WAAA,EACHF,EAAA,EAAAG,EAAA,IAAAC,GAAA,EAAA,GAAA,4EAAAC,GAAA,GAAAC,IAAAJ,GAAA,KAAA,KAAAA,EAAA3B,eAAA,EAAAmB,EAAA5B,qBAAA,CAAA,EAAA,GAAA,EASiBkC,EAAA,CAAA,EAAAO,EAAA,YAAAL,GAAA,KAAA,KAAAA,EAAAnB,eAAA,CAAA,EAAyC,YAAA,CAAAmB,CAAA,EACvDF,EAAA,EAAAC,GAAAC,EAAA,GAAA,WAAA,EACHF,EAAA,EAAAG,EAAA,IAAAC,GAAA,GAAA,GAAA,8EAAAC,GAAA,GAAAG,GAAAC,GAAA,EAAA,GAAAP,GAAA,KAAA,KAAAA,EAAAvB,UAAA,QAAA,KAAA,EAAA8B,GAAA,GAAA,GAAAP,GAAA,KAAA,KAAAA,EAAArB,QAAA,QAAA,KAAA,CAAA,CAAA,EAAA,GAAA,kBDAQ6B,EAAYC,GAAAC,GAAEC,GAAqBC,EAAEC,GAAuBC,GAAEC,GAAeC,EAAmB,EAAAC,OAAA,CAAA;6HAAA,CAAA,CAAA,CAAA,SAI/F1E,CAA8B,GAAA,IEH3C,SAAS2E,GAA4CC,EAAIC,EAAK,CAM5D,GALID,EAAK,IACJE,EAAe,EAAG,MAAO,EAAG,CAAC,EAAE,EAAG,MAAO,CAAC,EAAE,EAAG,OAAQ,CAAC,EACxDC,EAAO,CAAC,EACRC,EAAa,EAAE,EAAE,GAElBJ,EAAK,EAAG,CACV,IAAMK,EAAYC,EAAc,EAC7BC,EAAU,CAAC,EACXC,EAAkBH,EAAO,kBAAkB,CAChD,CACF,CAGA,SAASI,GAAqDT,EAAIC,EAAK,CAIrE,GAHID,EAAK,GACJU,EAAU,EAAG,KAAK,EAEnBV,EAAK,EAAG,CACV,IAAMW,EAAcV,EAAI,UAClBW,EAAgBX,EAAI,OACpBY,EAAYP,EAAc,CAAC,EAC9BQ,GAAWH,IAAgB,EAAI,gCAAkC,iCAAiC,EAClGI,GAAY,YAAaF,EAAO,uBAAuBD,CAAa,CAAC,CAC1E,CACF,CACA,SAASI,GAA+ChB,EAAIC,EAAK,CAI/D,GAHID,EAAK,GACJiB,GAAiB,EAAGR,GAAsD,EAAG,EAAG,MAAO,EAAMS,EAAsB,EAEpHlB,EAAK,EAAG,CACV,IAAMa,EAAYP,EAAc,CAAC,EAC9Ba,GAAWN,EAAO,UAAU,CACjC,CACF,CACA,SAASO,GAAiCpB,EAAIC,EAAK,CAMjD,GALID,EAAK,IACJE,EAAe,EAAG,MAAO,EAAG,CAAC,EAC7BmB,EAAW,EAAGL,GAAgD,EAAG,CAAC,EAClEZ,EAAa,GAEdJ,EAAK,EAAG,CACV,IAAMa,EAAYP,EAAc,EAC7BC,EAAU,CAAC,EACXe,EAAcT,EAAO,aAAe,EAAI,EAAE,CAC/C,CACF,CACA,SAASU,GAAiCvB,EAAIC,EAAK,CAIjD,GAHID,EAAK,GACJU,EAAU,EAAG,0BAA2B,CAAC,EAE1CV,EAAK,EAAG,CACV,IAAMa,EAAYP,EAAc,EAC7BkB,EAAW,WAAYX,EAAO,QAAQ,EAAE,gBAAiB,CAAC,EAAE,qBAAsBA,EAAO,uBAAuB,CACrH,CACF,CAtEA,IAaMY,GACAC,GAaAC,GACAC,GA2CFC,GAMAC,GAWEC,GAMAC,GAMAC,GAMAC,GAsBFC,GAmRAC,GAowBEC,GAsBFC,GAkqBAC,GA/0DJC,GAAAC,EAAA,KAAAC,KACAC,KACAC,IACAA,IACAA,KACAC,KACAC,KACAC,KAMMtB,GAAM,CAAC,MAAM,EACbC,GAAM,CAAC,yBAAyB,EAahCC,GAAM,CAAC,aAAa,EACpBC,GAAM,CAAC,GAAG,EA2CZC,GAAyB,SAAUA,EAAW,CAChD,OAAAA,EAAUA,EAAU,MAAW,CAAC,EAAI,QACpCA,EAAUA,EAAU,IAAS,CAAC,EAAI,MAC3BA,CACT,EAAEA,IAAa,CAAC,CAAC,EAEbC,GAA4B,SAAUA,EAAc,CACtD,OAAAA,EAAaA,EAAa,OAAY,CAAC,EAAI,SAC3CA,EAAaA,EAAa,SAAc,CAAC,EAAI,WACtCA,CACT,EAAEA,IAAgB,CAAC,CAAC,EAOdC,GAA0B,IAAIiB,GAAe,YAAY,EAMzDhB,GAAgC,IAAIgB,GAAe,iBAAiB,EAMpEf,GAAsC,IAAIe,GAAe,sBAAsB,EAM/Ed,GAAuC,IAAIc,GAAe,uBAAuB,EAsBnFb,IAAqC,IAAM,CAC7C,MAAMA,CAAqB,CACzB,KAAOc,EAAOC,EAAiB,EAC/B,QAAUD,EAAOE,EAAM,EACvB,QAAUF,EAAOlB,EAAU,EAC3B,UAAYkB,EAAOG,EAAS,EAC5B,kBAEA,SAEA,cAEA,mBAEA,QAEA,MAEA,yBAEA,aAEA,eAEA,gBAEA,gBAEA,iBAEA,WAAa,GAEb,UAAY,GAEZ,yBAA2B,GAE3B,aAAeH,EAAOI,EAAU,EAAE,cAClC,UAAYJ,EAAOK,EAAQ,EAC3B,aAAc,CAAC,CACf,iBAAkB,CAChB,IAAMC,EAAc,KAAK,QAAQ,UAAU,KAAK,aAAa,EAGxDA,IAGL,KAAK,QAAQ,OAAS,GACtB,KAAK,aAAeA,EACpB,KAAK,eAAiB,KAAK,aAAa,aAGxC,KAAK,QAAQ,kBAAkB,IAAM,CACnC,IAAMC,EAAQ,KAAK,eACbC,EAAW,KAAK,UACtB,KAAK,kBAAoB,CAACA,EAAS,OAAOD,EAAO,cAAe,KAAK,cAAc,EAAGC,EAAS,OAAOD,EAAO,cAAe,KAAK,YAAY,EAAGC,EAAS,OAAOD,EAAO,YAAa,KAAK,UAAU,EAAGC,EAAS,OAAOD,EAAO,eAAgB,KAAK,aAAa,EAAGC,EAAS,OAAOD,EAAO,QAAS,KAAK,QAAQ,EAAGC,EAAS,OAAOD,EAAO,OAAQ,KAAK,OAAO,CAAC,CAChW,CAAC,EACH,CACA,aAAc,CACZ,KAAK,mBAAmB,QAAQE,GAAWA,EAAQ,CAAC,CACtD,CACA,eAAiBC,GAAS,CACxB,GAAI,KAAK,aAAa,WACpB,OAEF,IAAMC,EAAO,KAAK,aAAa,sBAAsB,EAC/CC,EAAY,KAAK,QAAQ,uBAAuBF,EAAOC,CAAI,EACjE,KAAK,WAAaC,EACdA,EACF,KAAK,iBAAiB,EAEtB,KAAK,YAAY,KAAK,eAAe,CAEzC,EACA,cAAgB,IAAM,CACpB,KAAK,WAAa,GAClB,KAAK,YAAY,KAAK,eAAe,CACvC,EACA,SAAW,IAAM,CAGf,KAAK,YAAY,KAAK,eAAe,EACrC,KAAK,iBAAiB,EACtB,KAAK,aAAa,UAAU,IAAI,4BAA4B,CAC9D,EACA,QAAU,IAAM,CAET,KAAK,WACR,KAAK,YAAY,KAAK,eAAe,EAGnC,KAAK,YACP,KAAK,iBAAiB,EAExB,KAAK,aAAa,UAAU,OAAO,4BAA4B,CACjE,EACA,aAAeF,GAAS,CAClBA,EAAM,SAAW,IAGrB,KAAK,UAAY,GACjB,KAAK,kBAAkB,EACzB,EACA,WAAa,IAAM,CACjB,KAAK,UAAY,GACjB,KAAK,YAAY,KAAK,gBAAgB,EAEjC,KAAK,aAAa,YACrB,KAAK,YAAY,KAAK,eAAe,EAInC,KAAK,UAAU,QACjB,KAAK,iBAAiB,CAE1B,EAEA,kBAAmB,CACZ,KAAK,iBAAiB,KAAK,eAAe,IAC7C,KAAK,gBAAkB,KAAK,YAAY,CACtC,cAAe,EACf,aAAc,CAChB,CAAC,EACD,KAAK,iBAAiB,QAAQ,UAAU,IAAI,6BAA6B,EAE7E,CAEA,kBAAmB,CAEZ,KAAK,iBAAiB,KAAK,eAAe,IAC7C,KAAK,gBAAkB,KAAK,YAAY,CACtC,cAAe,EACf,aAAc,CAChB,EAAG,EAAI,EACP,KAAK,iBAAiB,QAAQ,UAAU,IAAI,6BAA6B,EAE7E,CAEA,mBAAoB,CACb,KAAK,iBAAiB,KAAK,gBAAgB,IAC9C,KAAK,iBAAmB,KAAK,YAAY,CACvC,cAAe,IACf,aAAc,GAChB,CAAC,EACD,KAAK,kBAAkB,QAAQ,UAAU,IAAI,8BAA8B,EAE/E,CAEA,iBAAiBG,EAAW,CAC1B,OAAOA,GAAW,QAAUC,GAAY,WAAaD,GAAW,QAAUC,GAAY,OACxF,CAEA,YAAYC,EAAWC,EAA0B,CAC/C,GAAI,MAAK,QAAQ,WAGjB,KAAK,oBAAoB,EACrB,KAAK,QAAQ,UACC,KAAK,QAAQ,UAAU,KAAK,gBAAkBpC,GAAU,MAAQA,GAAU,IAAMA,GAAU,KAAK,EACvG,oBAAoB,EAE1B,OAAK,QAAQ,sBAAsB,UAAY,CAACoC,IAGpD,OAAO,KAAK,QAAQ,OAAO,CACzB,UAAW,KAAK,QAAQ,gBAAkB,CACxC,cAAe,EACf,aAAc,CAChB,EAAID,EACJ,SAAU,GACV,WAAY,EACd,CAAC,CACH,CAKA,YAAYF,EAAW,CAErB,GADAA,GAAW,QAAQ,EACf,KAAK,oBAAoB,EAC3B,OAEG,KAAK,QAAQ,UAChB,KAAK,oBAAoB,EAE3B,IAAMI,EAAU,KAAK,YAAY,EAC5BA,EAAQ,oBAAoB,IAC/B,KAAK,oBAAoB,EACzBA,EAAQ,oBAAoB,EAEhC,CAEA,qBAAsB,CACpB,KAAK,aAAa,UAAU,IAAI,mCAAmC,CACrE,CAEA,qBAAsB,CACpB,KAAK,aAAa,UAAU,OAAO,mCAAmC,CACxE,CACA,aAAc,CACZ,OAAO,KAAK,QAAQ,UAAU,KAAK,gBAAkBrC,GAAU,MAAQA,GAAU,IAAMA,GAAU,KAAK,CACxG,CAEA,6BAA8B,CAC5B,OAAO,KAAK,0BAA0B,aACxC,CAEA,UAAW,CACT,OAAO,KAAK,MAAM,aACpB,CACA,qBAAsB,CACpB,OAAO,KAAK,iBAAiB,KAAK,eAAe,GAAK,KAAK,iBAAiB,KAAK,eAAe,GAAK,KAAK,iBAAiB,KAAK,gBAAgB,CAClJ,CACA,OAAO,UAAO,SAAsCsC,EAAmB,CACrE,OAAO,IAAKA,GAAqBhC,EACnC,EACA,OAAO,UAAyBiC,EAAkB,CAChD,KAAMjC,EACN,UAAW,CAAC,CAAC,yBAAyB,CAAC,EACvC,UAAW,SAAoCnC,EAAIC,EAAK,CAMtD,GALID,EAAK,IACJqE,GAAYC,GAAW,CAAC,EACxBD,GAAY5C,GAAK,CAAC,EAClB4C,GAAY3C,GAAK,CAAC,GAEnB1B,EAAK,EAAG,CACV,IAAIuE,EACDC,GAAeD,EAAQE,GAAY,CAAC,IAAMxE,EAAI,QAAUsE,EAAG,OAC3DC,GAAeD,EAAQE,GAAY,CAAC,IAAMxE,EAAI,MAAQsE,EAAG,OACzDC,GAAeD,EAAQE,GAAY,CAAC,IAAMxE,EAAI,yBAA2BsE,EAAG,MACjF,CACF,EACA,UAAW,CAAC,EAAG,oBAAqB,6BAA6B,EACjE,OAAQ,CACN,SAAU,WACV,cAAe,gBACf,mBAAoB,oBACtB,EACA,SAAU,CAAIG,GAAmB,CAAC,CAChC,QAASxC,GACT,YAAaC,CACf,CAAC,CAAC,CAAC,EACH,MAAO,EACP,KAAM,EACN,OAAQ,CAAC,CAAC,OAAQ,EAAE,EAAG,CAAC,0BAA2B,EAAE,EAAG,CAAC,EAAG,uCAAuC,EAAG,CAAC,EAAG,wBAAwB,EAAG,CAAC,YAAa,GAAI,EAAG,sBAAuB,EAAG,mBAAmB,EAAG,CAAC,EAAG,6BAA6B,EAAG,CAAC,EAAG,kCAAkC,CAAC,EACrR,SAAU,SAAuCnC,EAAIC,EAAK,CACpDD,EAAK,IACJqB,EAAW,EAAGtB,GAA6C,EAAG,EAAG,MAAO,CAAC,EACzEW,EAAU,EAAG,MAAO,EAAG,CAAC,EAAE,EAAG,MAAO,CAAC,GAEtCV,EAAK,IACJsB,EAAcrB,EAAI,SAAW,EAAI,EAAE,EACnCM,EAAU,CAAC,EACXiB,EAAW,oBAAqB,EAAI,EAE3C,EACA,aAAc,CAAC8C,EAAS,EACxB,OAAQ,CAAC,2SAA2S,EACpT,cAAe,EACf,gBAAiB,CACnB,CAAC,CACH,CACA,OAAOnC,CACT,GAAG,EAaCC,IAA0B,IAAM,CAClC,MAAMA,CAAU,CACd,QAAUa,EAAOE,EAAM,EACvB,KAAOF,EAAOC,EAAiB,EAC/B,YAAcD,EAAOI,EAAU,EAC/B,KAAOJ,EAAO0B,GAAgB,CAC5B,SAAU,EACZ,CAAC,EACD,qBAAuB1B,EAAO2B,GAA2B,CACvD,SAAU,EACZ,CAAC,EAED,aAEA,QAEA,OAEA,QAEA,IAAI,UAAW,CACb,OAAO,KAAK,SACd,CACA,IAAI,SAASC,EAAG,CACd,KAAK,UAAYA,EACjB,IAAMC,EAAW,KAAK,UAAUjD,GAAU,GAAG,EACvCkD,EAAa,KAAK,UAAUlD,GAAU,KAAK,EAC7CiD,IACFA,EAAS,SAAW,KAAK,WAEvBC,IACFA,EAAW,SAAW,KAAK,UAE/B,CACA,UAAY,GAEZ,IAAI,UAAW,CACb,OAAO,KAAK,SACd,CACA,IAAI,SAASF,EAAG,CACd,KAAK,UAAYA,EACjB,KAAK,yBAAyB,CAChC,CACA,UAAY,GAEZ,cAAgB,GAEhB,IAAI,KAAM,CACR,OAAO,KAAK,IACd,CACA,IAAI,IAAIA,EAAG,CACT,IAAMG,EAAM,MAAMH,CAAC,EAAI,KAAK,KAAOA,EAC/B,KAAK,OAASG,GAChB,KAAK,WAAWA,CAAG,CAEvB,CACA,KAAO,EAQP,MAEA,cAAgB,GAChB,WAAWA,EAAK,CACd,IAAMC,EAAU,KAAK,KACrB,KAAK,KAAOD,EACZ,KAAK,SAAW,KAAK,gBAAgB,CACnC,IAAKC,EACL,IAAKD,CACP,CAAC,EAAI,KAAK,mBAAmBA,CAAG,EAChC,KAAK,sBAAsB,CAC7B,CACA,gBAAgBA,EAAK,CACnB,IAAMF,EAAW,KAAK,UAAUjD,GAAU,GAAG,EACvCkD,EAAa,KAAK,UAAUlD,GAAU,KAAK,EAC3CqD,EAAcJ,EAAS,MACvBK,EAAgBJ,EAAW,MACjCA,EAAW,IAAMC,EAAI,IACrBF,EAAS,IAAM,KAAK,IAAIE,EAAI,IAAKD,EAAW,KAAK,EACjDA,EAAW,IAAM,KAAK,IAAID,EAAS,IAAKA,EAAS,KAAK,EACtDC,EAAW,qBAAqB,EAChCD,EAAS,qBAAqB,EAC9BE,EAAI,IAAMA,EAAI,IAAM,KAAK,gCAAgCF,EAAUC,CAAU,EAAI,KAAK,gCAAgCA,EAAYD,CAAQ,EACtII,IAAgBJ,EAAS,OAC3B,KAAK,eAAeA,CAAQ,EAE1BK,IAAkBJ,EAAW,OAC/B,KAAK,eAAeA,CAAU,CAElC,CACA,mBAAmBC,EAAK,CACtB,IAAMxB,EAAQ,KAAK,UAAU3B,GAAU,GAAG,EAC1C,GAAI2B,EAAO,CACT,IAAM4B,EAAW5B,EAAM,MACvBA,EAAM,IAAMwB,EACZxB,EAAM,sBAAsB,EAC5B,KAAK,eAAeA,CAAK,EACrB4B,IAAa5B,EAAM,OACrB,KAAK,eAAeA,CAAK,CAE7B,CACF,CAEA,IAAI,KAAM,CACR,OAAO,KAAK,IACd,CACA,IAAI,IAAIqB,EAAG,CACT,IAAMQ,EAAM,MAAMR,CAAC,EAAI,KAAK,KAAOA,EAC/B,KAAK,OAASQ,GAChB,KAAK,WAAWA,CAAG,CAEvB,CACA,KAAO,IACP,WAAWA,EAAK,CACd,IAAMC,EAAU,KAAK,KACrB,KAAK,KAAOD,EACZ,KAAK,SAAW,KAAK,gBAAgB,CACnC,IAAKC,EACL,IAAKD,CACP,CAAC,EAAI,KAAK,mBAAmBA,CAAG,EAChC,KAAK,sBAAsB,CAC7B,CACA,gBAAgBA,EAAK,CACnB,IAAMP,EAAW,KAAK,UAAUjD,GAAU,GAAG,EACvCkD,EAAa,KAAK,UAAUlD,GAAU,KAAK,EAC3CqD,EAAcJ,EAAS,MACvBK,EAAgBJ,EAAW,MACjCD,EAAS,IAAMO,EAAI,IACnBN,EAAW,IAAM,KAAK,IAAIM,EAAI,IAAKP,EAAS,KAAK,EACjDA,EAAS,IAAMC,EAAW,MAC1BD,EAAS,qBAAqB,EAC9BC,EAAW,qBAAqB,EAChCM,EAAI,IAAMA,EAAI,IAAM,KAAK,gCAAgCN,EAAYD,CAAQ,EAAI,KAAK,gCAAgCA,EAAUC,CAAU,EACtIG,IAAgBJ,EAAS,OAC3B,KAAK,eAAeA,CAAQ,EAE1BK,IAAkBJ,EAAW,OAC/B,KAAK,eAAeA,CAAU,CAElC,CACA,mBAAmBM,EAAK,CACtB,IAAM7B,EAAQ,KAAK,UAAU3B,GAAU,GAAG,EAC1C,GAAI2B,EAAO,CACT,IAAM4B,EAAW5B,EAAM,MACvBA,EAAM,IAAM6B,EACZ7B,EAAM,sBAAsB,EAC5B,KAAK,eAAeA,CAAK,EACrB4B,IAAa5B,EAAM,OACrB,KAAK,eAAeA,CAAK,CAE7B,CACF,CAEA,IAAI,MAAO,CACT,OAAO,KAAK,KACd,CACA,IAAI,KAAKqB,EAAG,CACV,IAAMU,EAAO,MAAMV,CAAC,EAAI,KAAK,MAAQA,EACjC,KAAK,QAAUU,GACjB,KAAK,YAAYA,CAAI,CAEzB,CACA,MAAQ,EACR,YAAYA,EAAM,CAChB,KAAK,MAAQA,EACb,KAAK,SAAW,KAAK,iBAAiB,EAAI,KAAK,oBAAoB,EACnE,KAAK,sBAAsB,CAC7B,CACA,kBAAmB,CACjB,IAAMT,EAAW,KAAK,UAAUjD,GAAU,GAAG,EACvCkD,EAAa,KAAK,UAAUlD,GAAU,KAAK,EAC3CqD,EAAcJ,EAAS,MACvBK,EAAgBJ,EAAW,MAC3BS,EAAiBT,EAAW,MAClCD,EAAS,IAAM,KAAK,KACpBC,EAAW,IAAM,KAAK,KACtBD,EAAS,KAAO,KAAK,MACrBC,EAAW,KAAO,KAAK,MACnB,KAAK,UAAU,SACjBD,EAAS,MAAQA,EAAS,MAC1BC,EAAW,MAAQA,EAAW,OAEhCD,EAAS,IAAM,KAAK,IAAI,KAAK,KAAMC,EAAW,KAAK,EACnDA,EAAW,IAAM,KAAK,IAAI,KAAK,KAAMD,EAAS,KAAK,EACnDC,EAAW,qBAAqB,EAChCD,EAAS,qBAAqB,EAC9BA,EAAS,MAAQU,EAAiB,KAAK,gCAAgCT,EAAYD,CAAQ,EAAI,KAAK,gCAAgCA,EAAUC,CAAU,EACpJG,IAAgBJ,EAAS,OAC3B,KAAK,eAAeA,CAAQ,EAE1BK,IAAkBJ,EAAW,OAC/B,KAAK,eAAeA,CAAU,CAElC,CACA,qBAAsB,CACpB,IAAMvB,EAAQ,KAAK,UAAU3B,GAAU,GAAG,EAC1C,GAAI2B,EAAO,CACT,IAAM4B,EAAW5B,EAAM,MACvBA,EAAM,KAAO,KAAK,MACd,KAAK,UAAU,SACjBA,EAAM,MAAQA,EAAM,OAEtBA,EAAM,sBAAsB,EACxB4B,IAAa5B,EAAM,OACrB,KAAK,eAAeA,CAAK,CAE7B,CACF,CAMA,YAAciC,GAAS,GAAGA,CAAK,GAE/B,WAEA,gBAEA,uBAEA,gBAEA,aACA,YACA,cAAgB,GAGhB,wBAA0B,GAE1B,sBAAwB,GAExB,mBACA,qBACA,SAAW,GAEX,OAAS,GACT,oBAAsB,GAKtB,oBAAsB,EACtB,cAAgB,GAChB,aAAe,KACf,UAAYxC,EAAOK,EAAQ,EAC3B,aAAc,CACZL,EAAOyC,EAAsB,EAAE,KAAKC,EAAuB,EAC3D,IAAMC,EAAgB3C,EAAO4C,GAAuB,CAClD,SAAU,EACZ,CAAC,EACD,KAAK,gBAAkBD,IAAkB,iBACrC,KAAK,OACP,KAAK,uBAAyB,KAAK,KAAK,OAAO,UAAU,IAAM,KAAK,aAAa,CAAC,EAClF,KAAK,OAAS,KAAK,KAAK,QAAU,MAEtC,CAEA,YAAc,EACd,cACA,iBAAkB,CACZ,KAAK,UAAU,WACjB,KAAK,kBAAkB,EAEzB,IAAME,EAAS,KAAK,UAAUjE,GAAU,GAAG,EACrCkE,EAAS,KAAK,UAAUlE,GAAU,KAAK,EAC7C,KAAK,SAAW,CAAC,CAACiE,GAAU,CAAC,CAACC,EAC9B,KAAK,KAAK,cAAc,EAIxB,IAAMC,EAAQ,KAAK,UAAUnE,GAAU,GAAG,EAC1C,KAAK,cAAgBmE,EAAM,QAAQ,OACnC,KAAK,cAAgB,KAAK,cAAgB,KAAK,YAC/C,KAAK,SAAW,KAAK,aAAaF,EAAQC,CAAM,EAAI,KAAK,gBAAgBD,CAAM,EAC/E,KAAK,eAAeA,CAAM,EAC1B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,KAAK,cAAc,CAC1B,CACA,gBAAgBA,EAAQ,CACtBA,EAAO,UAAU,EACjBA,EAAO,OAAO,EACd,KAAK,wBAAwBA,CAAM,EACnC,KAAK,oBAAsB,GAC3BA,EAAO,sBAAsB,CAC/B,CACA,aAAaA,EAAQC,EAAQ,CAC3BD,EAAO,UAAU,EACjBA,EAAO,OAAO,EACdC,EAAO,UAAU,EACjBA,EAAO,OAAO,EACdD,EAAO,cAAc,EACrBC,EAAO,cAAc,EACrBD,EAAO,oBAAoB,EAC3BC,EAAO,oBAAoB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,oBAAsB,GAC3BD,EAAO,sBAAsB,EAC7BC,EAAO,sBAAsB,CAC/B,CACA,aAAc,CACZ,KAAK,uBAAuB,YAAY,EACxC,KAAK,iBAAiB,WAAW,EACjC,KAAK,gBAAkB,IACzB,CAEA,cAAe,CACb,KAAK,OAAS,KAAK,MAAM,QAAU,MACnC,KAAK,SAAW,KAAK,kBAAkB,EAAI,KAAK,qBAAqB,EACrE,KAAK,kBAAkB,CACzB,CACA,mBAAoB,CAClB,IAAMjB,EAAW,KAAK,UAAUjD,GAAU,GAAG,EACvCkD,EAAa,KAAK,UAAUlD,GAAU,KAAK,EACjDiD,EAAS,gBAAgB,EACzBC,EAAW,gBAAgB,EAC3BD,EAAS,WAAaA,EAAS,uBAAuB,EACtDC,EAAW,WAAaA,EAAW,uBAAuB,EAC1DD,EAAS,oBAAoB,EAC7BC,EAAW,oBAAoB,EAC/BD,EAAS,qBAAqB,EAC9BC,EAAW,qBAAqB,EAChCD,EAAS,sBAAsB,EAC/BC,EAAW,sBAAsB,CACnC,CACA,sBAAuB,CACP,KAAK,UAAUlD,GAAU,GAAG,EACpC,sBAAsB,CAC9B,CAEA,oBAAqB,CACf,OAAO,eAAmB,KAAe,CAAC,gBAG9C,KAAK,QAAQ,kBAAkB,IAAM,CACnC,KAAK,gBAAkB,IAAI,eAAe,IAAM,CAC1C,KAAK,UAAU,IAGf,KAAK,cACP,aAAa,KAAK,YAAY,EAEhC,KAAK,UAAU,EACjB,CAAC,EACD,KAAK,gBAAgB,QAAQ,KAAK,YAAY,aAAa,CAC7D,CAAC,CACH,CAEA,WAAY,CACV,OAAO,KAAK,UAAUA,GAAU,KAAK,EAAE,WAAa,KAAK,UAAUA,GAAU,GAAG,EAAE,SACpF,CACA,UAAUoE,EAAgBpE,GAAU,IAAK,CACvC,IAAM2B,EAAQ,KAAK,UAAUyC,CAAa,EAC1C,OAAKzC,EAGEA,EAAM,MAFJ,KAAK,GAGhB,CACA,aAAc,CACZ,MAAO,CAAC,EAAE,KAAK,UAAU3B,GAAU,KAAK,GAAG,eAAiB,KAAK,UAAUA,GAAU,GAAG,GAAG,cAC7F,CAEA,mBAAoB,CAClB,KAAK,aAAe,KAAK,YAAY,cAAc,YACnD,KAAK,YAAc,KAAK,YAAY,cAAc,sBAAsB,EAAE,IAC5E,CAEA,sBAAsBqE,EAAQ,CAC5B,IAAMC,EAAa,KAAK,aAAa,cAAc,MACnDA,EAAW,KAAOD,EAAO,KACzBC,EAAW,MAAQD,EAAO,MAC1BC,EAAW,gBAAkBD,EAAO,gBACpCC,EAAW,UAAYD,EAAO,SAChC,CAEA,uBAAuBE,EAAO,CAE5B,IAAMC,EAASD,GAAS,KAAK,qBAAuB,KAAK,WAAW,OAAS,IAE7E,MAAO,cADY,KAAK,OAAS,KAAK,aAAe,EAAIC,EAASA,CACnC,IACjC,CAEA,oBAAoBC,EAAQ,CACrB,KAAK,sBAGV,KAAK,eAAeA,CAAM,EAC1B,KAAK,eAAeA,CAAM,EAC1B,KAAK,0BAA0BA,CAAM,EACvC,CACA,gCAAgCC,EAAQC,EAAQ,CACzC,KAAK,sBAGVD,EAAO,sBAAsB,EAC7BC,EAAO,sBAAsB,EAC/B,CACA,eAAeF,EAAQ,CAChB,KAAK,sBAGV,KAAK,wBAAwBA,CAAM,EACnC,KAAK,kBAAkB,EACvB,KAAK,KAAK,cAAc,EAC1B,CACA,uBAAwB,CACjB,KAAK,sBAGV,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,KAAK,aAAa,EACzB,CACA,WAAY,CACV,GAAK,KAAK,oBAIV,IADA,KAAK,kBAAkB,EACnB,KAAK,SAAU,CACjB,IAAMR,EAAS,KAAK,UAAUjE,GAAU,GAAG,EACrCkE,EAAS,KAAK,UAAUlE,GAAU,KAAK,EAC7CiE,EAAO,sBAAsB,EAC7BC,EAAO,sBAAsB,EAC7BD,EAAO,oBAAoB,EAC3BC,EAAO,oBAAoB,EAC3BD,EAAO,cAAc,EACrBC,EAAO,cAAc,EACrBD,EAAO,qBAAqB,EAC5BC,EAAO,qBAAqB,CAC9B,KAAO,CACL,IAAMD,EAAS,KAAK,UAAUjE,GAAU,GAAG,EACvCiE,GACFA,EAAO,sBAAsB,CAEjC,CACA,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,KAAK,cAAc,EAC1B,CAEA,eAAiB,GAEjB,uBAAwB,CACtB,IAAMf,EAAa,KAAK,UAAUlD,GAAU,KAAK,EAC3CiD,EAAW,KAAK,UAAUjD,GAAU,GAAG,EAC7C,MAAI,CAACkD,GAAc,CAACD,EACX,GAEFA,EAAS,WAAaC,EAAW,WAAa,EACvD,CAKA,kCAAkCuB,EAAQ,CACxC,IAAMpC,EAAUoC,EAAO,WAAW,EAC5BG,EAAc,KAAK,UAAUH,EAAO,aAAa,EAClC,KAAK,UAAUpC,EAAQ,aAAa,EAC5C,aAAa,UAAU,OAAO,wBAAwB,EACnEuC,EAAY,aAAa,UAAU,OAAO,yBAA0B,KAAK,cAAc,CACzF,CAEA,0BAA0BH,EAAQ,CAC5B,CAAC,KAAK,UAAY,KAAK,YAAY,GAGnC,KAAK,iBAAmB,KAAK,sBAAsB,IACrD,KAAK,eAAiB,CAAC,KAAK,eAC5B,KAAK,kCAAkCA,CAAM,EAEjD,CAQA,eAAeA,EAAQ,CACrB,GAAI,KAAK,YAAY,EACnB,OAEF,IAAMN,EAAQ,KAAK,UAAUM,EAAO,gBAAkBzE,GAAU,IAAMA,GAAU,IAAMA,GAAU,KAAK,EACrGmE,EAAM,aAAa,MAAM,UAAY,cAAcM,EAAO,UAAU,KACtE,CAQA,wBAAwBA,EAAQ,CAC9B,GAAI,KAAK,YAAY,EACnB,OAEF,IAAMI,EAAY,KAAK,YAAYJ,EAAO,KAAK,EAE/C,GADA,KAAK,oBAAsBA,EAAO,WAAW,IAAII,CAAS,EAAIJ,EAAO,aAAa,aAAa,iBAAkBI,CAAS,EACtH,KAAK,SAAU,CACjBJ,EAAO,gBAAkBzE,GAAU,MAAQ,KAAK,wBAA0B6E,EAAY,KAAK,sBAAwBA,EACnH,IAAMC,EAAc,KAAK,UAAUL,EAAO,aAAa,EACvDI,EAAU,OAAS,EAAIC,EAAY,aAAa,UAAU,IAAI,gCAAgC,EAAIA,EAAY,aAAa,UAAU,OAAO,gCAAgC,CAC9K,CACF,CAEA,0BAA2B,CACzB,IAAMb,EAAS,KAAK,UAAUjE,GAAU,GAAG,EACrCkE,EAAS,KAAK,UAAUlE,GAAU,KAAK,EACzCiE,GACF,KAAK,wBAAwBA,CAAM,EAEjCC,GACF,KAAK,wBAAwBA,CAAM,CAEvC,CAWA,wBAAyB,CACvB,GAAI,CAAC,KAAK,eAAiB,KAAK,YAAY,EAC1C,OAEF,IAAMR,EAAO,KAAK,OAAS,KAAK,MAAQ,EAAI,KAAK,MAAQ,EAEnDqB,GADW,KAAK,MAAM,KAAK,IAAMrB,CAAI,EAAIA,EAChB,KAAK,MAAQ,KAAK,IAAM,KAAK,KAC5D,KAAK,qBAAuB,KAAK,aAAe,GAAKqB,CACvD,CAeA,eAAeN,EAAQ,CACjB,KAAK,YAAY,IAGrB,KAAK,SAAW,KAAK,oBAAoBA,CAAM,EAAI,KAAK,uBAAuBA,CAAM,EACvF,CACA,oBAAoBA,EAAQ,CAC1B,IAAMpC,EAAUoC,EAAO,WAAW,EAClC,GAAI,CAACpC,GAAW,CAAC,KAAK,aACpB,OAEF,IAAM2C,EAAmB,KAAK,IAAI3C,EAAQ,WAAaoC,EAAO,UAAU,EAAI,KAAK,aAC7EA,EAAO,cAAgB,KAAK,aAC9B,KAAK,sBAAsB,CACzB,KAAM,OACN,MAAO,GAAG,KAAK,aAAepC,EAAQ,UAAU,KAChD,gBAAiB,QACjB,UAAW,UAAU2C,CAAgB,GACvC,CAAC,EAED,KAAK,sBAAsB,CACzB,KAAM,GAAG3C,EAAQ,UAAU,KAC3B,MAAO,OACP,gBAAiB,OACjB,UAAW,UAAU2C,CAAgB,GACvC,CAAC,CAEL,CACA,uBAAuBP,EAAQ,CAC7B,KAAK,OAAS,KAAK,sBAAsB,CACvC,KAAM,OACN,MAAO,MACP,gBAAiB,QACjB,UAAW,UAAU,EAAIA,EAAO,cAAc,GAChD,CAAC,EAAI,KAAK,sBAAsB,CAC9B,KAAM,MACN,MAAO,OACP,gBAAiB,OACjB,UAAW,UAAUA,EAAO,cAAc,GAC5C,CAAC,CACH,CASA,mBAAoB,CAClB,GAAI,CAAC,KAAK,eAAiB,KAAK,OAAS,QAAa,KAAK,MAAQ,QAAa,KAAK,MAAQ,OAC3F,OAEF,IAAMf,EAAO,KAAK,KAAO,EAAI,KAAK,KAAO,EACzC,KAAK,SAAW,KAAK,uBAAuBA,CAAI,EAAI,KAAK,0BAA0BA,CAAI,CACzF,CACA,0BAA0BA,EAAM,CAC9B,IAAME,EAAQ,KAAK,UAAU,EACzBqB,EAAY,KAAK,IAAI,KAAK,OAAOrB,EAAQ,KAAK,KAAOF,CAAI,EAAG,CAAC,EAAI,EACjEwB,EAAc,KAAK,IAAI,KAAK,OAAO,KAAK,IAAMtB,GAASF,CAAI,EAAG,CAAC,EAAI,EACvE,KAAK,OAASuB,IAAcC,IAC5B,KAAK,WAAa,MAAMD,CAAS,EAAE,KAAKhF,GAAa,MAAM,EAAE,OAAO,MAAMiF,CAAW,EAAE,KAAKjF,GAAa,QAAQ,CAAC,CACpH,CACA,uBAAuByD,EAAM,CAC3B,IAAMyB,EAAW,KAAK,UAAU,EAC1BC,EAAa,KAAK,UAAUpF,GAAU,KAAK,EAC3CqF,EAA8B,KAAK,IAAI,KAAK,OAAOD,EAAa,KAAK,KAAO1B,CAAI,EAAG,CAAC,EACpFuB,EAAY,KAAK,IAAI,KAAK,OAAOE,EAAWC,GAAc1B,CAAI,EAAI,EAAG,CAAC,EACtE4B,EAA2B,KAAK,IAAI,KAAK,OAAO,KAAK,IAAMH,GAAYzB,CAAI,EAAG,CAAC,EACrF,KAAK,WAAa,MAAM2B,CAA2B,EAAE,KAAKpF,GAAa,QAAQ,EAAE,OAAO,MAAMgF,CAAS,EAAE,KAAKhF,GAAa,MAAM,EAAG,MAAMqF,CAAwB,EAAE,KAAKrF,GAAa,QAAQ,CAAC,CACjM,CAEA,UAAUmE,EAAe,CACvB,GAAIA,IAAkBpE,GAAU,KAAO,KAAK,OAC1C,OAAO,KAAK,OAEd,GAAI,KAAK,SAAS,OAChB,OAAOoE,IAAkBpE,GAAU,MAAQ,KAAK,QAAQ,MAAQ,KAAK,QAAQ,IAGjF,CAEA,UAAUoE,EAAe,CACvB,OAAOA,IAAkBpE,GAAU,IAAM,KAAK,SAAS,KAAO,KAAK,SAAS,KAC9E,CACA,eAAeuF,EAAe,CAC5B,KAAK,cAAgB,CAAC,KAAK,UAAU,KAAOA,GAAiB,CAAC,KAAK,gBACnE,KAAK,YAAY,cAAc,UAAU,OAAO,gCAAiC,KAAK,aAAa,CACrG,CAEA,uBAAuBzD,EAAOC,EAAM,CAClC,IAAMyD,EAASzD,EAAK,MAAQ,EACtB0D,EAAU1D,EAAK,EAAIyD,EACnBE,EAAU3D,EAAK,EAAIyD,EACnBG,EAAK7D,EAAM,QAAU2D,EACrBG,EAAK9D,EAAM,QAAU4D,EAC3B,OAAO,KAAK,IAAIC,EAAI,CAAC,EAAI,KAAK,IAAIC,EAAI,CAAC,EAAI,KAAK,IAAIJ,EAAQ,CAAC,CAC/D,CACA,OAAO,UAAO,SAA2BlD,EAAmB,CAC1D,OAAO,IAAKA,GAAqB/B,EACnC,EACA,OAAO,UAAyBgC,EAAkB,CAChD,KAAMhC,EACN,UAAW,CAAC,CAAC,YAAY,CAAC,EAC1B,eAAgB,SAAkCpC,EAAIC,EAAKyH,EAAU,CAKnE,GAJI1H,EAAK,IACJ2H,GAAeD,EAAU1F,GAAkB,CAAC,EAC5C2F,GAAeD,EAAUzF,GAAwB,CAAC,GAEnDjC,EAAK,EAAG,CACV,IAAIuE,EACDC,GAAeD,EAAQE,GAAY,CAAC,IAAMxE,EAAI,OAASsE,EAAG,OAC1DC,GAAeD,EAAQE,GAAY,CAAC,IAAMxE,EAAI,QAAUsE,EAC7D,CACF,EACA,UAAW,SAAyBvE,EAAIC,EAAK,CAK3C,GAJID,EAAK,IACJqE,GAAY1C,GAAK,CAAC,EAClB0C,GAAYnC,GAAyB,CAAC,GAEvClC,EAAK,EAAG,CACV,IAAIuE,EACDC,GAAeD,EAAQE,GAAY,CAAC,IAAMxE,EAAI,aAAesE,EAAG,OAChEC,GAAeD,EAAQE,GAAY,CAAC,IAAMxE,EAAI,QAAUsE,EAC7D,CACF,EACA,UAAW,CAAC,EAAG,iBAAkB,YAAY,EAC7C,SAAU,GACV,aAAc,SAAgCvE,EAAIC,EAAK,CACjDD,EAAK,IACJc,GAAW,QAAUb,EAAI,OAAS,UAAU,EAC5C2H,GAAY,oBAAqB3H,EAAI,QAAQ,EAAE,uBAAwBA,EAAI,QAAQ,EAAE,uBAAwBA,EAAI,QAAQ,EAAE,yBAA0BA,EAAI,aAAa,EAAE,0BAA2BA,EAAI,eAAe,EAE7N,EACA,OAAQ,CACN,SAAU,CAAC,EAAG,WAAY,WAAY4H,EAAgB,EACtD,SAAU,CAAC,EAAG,WAAY,WAAYA,EAAgB,EACtD,cAAe,CAAC,EAAG,gBAAiB,gBAAiBA,EAAgB,EACrE,IAAK,CAAC,EAAG,MAAO,MAAOC,EAAe,EACtC,MAAO,QACP,cAAe,CAAC,EAAG,gBAAiB,gBAAiBD,EAAgB,EACrE,IAAK,CAAC,EAAG,MAAO,MAAOC,EAAe,EACtC,KAAM,CAAC,EAAG,OAAQ,OAAQA,EAAe,EACzC,YAAa,aACf,EACA,SAAU,CAAC,WAAW,EACtB,SAAU,CAAIpD,GAAmB,CAAC,CAChC,QAAS3C,GACT,YAAaK,CACf,CAAC,CAAC,EAAM2F,EAAwB,EAChC,mBAAoBnG,GACpB,MAAO,EACP,KAAM,EACN,OAAQ,CAAC,CAAC,cAAe,EAAE,EAAG,CAAC,oBAAqB,EAAE,EAAG,CAAC,EAAG,mBAAmB,EAAG,CAAC,EAAG,6BAA6B,EAAG,CAAC,EAAG,2BAA2B,EAAG,CAAC,EAAG,gCAAgC,EAAG,CAAC,EAAG,wBAAwB,EAAG,CAAC,EAAG,WAAY,gBAAiB,oBAAoB,EAAG,CAAC,EAAG,QAAS,WAAW,CAAC,EAChT,SAAU,SAA4B5B,EAAIC,EAAK,CACzCD,EAAK,IACJgI,GAAgB,EAChBC,GAAa,CAAC,EACd/H,EAAe,EAAG,MAAO,CAAC,EAC1BQ,EAAU,EAAG,MAAO,CAAC,EACrBR,EAAe,EAAG,MAAO,CAAC,EAC1BQ,EAAU,EAAG,MAAO,EAAG,CAAC,EACxBN,EAAa,EACbiB,EAAW,EAAGD,GAAkC,EAAG,EAAG,MAAO,CAAC,EAC9DhB,EAAa,EACbiB,EAAW,EAAGE,GAAkC,EAAG,EAAG,0BAA2B,CAAC,EAClFb,EAAU,EAAG,0BAA2B,CAAC,GAE1CV,EAAK,IACJO,EAAU,CAAC,EACXe,EAAcrB,EAAI,cAAgB,EAAI,EAAE,EACxCM,EAAU,EACVe,EAAcrB,EAAI,SAAW,EAAI,EAAE,EACnCM,EAAU,EACViB,EAAW,WAAYvB,EAAI,QAAQ,EAAE,gBAAiB,CAAC,EAAE,qBAAsBA,EAAI,qBAAqB,EAE/G,EACA,aAAc,CAACkC,EAAoB,EACnC,OAAQ,CAAC,yoSAAipS,EAC1pS,cAAe,EACf,gBAAiB,CACnB,CAAC,CACH,CACA,OAAOC,CACT,GAAG,EAkCGC,GAAkC,CACtC,QAAS6F,GACT,YAA0BC,GAAW,IAAM7F,EAAc,EACzD,MAAO,EACT,EAkBIA,IAA+B,IAAM,CACvC,MAAMA,CAAe,CACnB,QAAUW,EAAOE,EAAM,EACvB,YAAcF,EAAOI,EAAU,EAC/B,KAAOJ,EAAOC,EAAiB,EAC/B,QAAUD,EAAOlB,EAAU,EAC3B,UAAYkB,EAAOK,EAAQ,EAC3B,kBACA,IAAI,OAAQ,CACV,OAAOwE,GAAgB,KAAK,aAAa,MAAO,CAAC,CACnD,CACA,IAAI,MAAMrC,EAAO,CACfA,EAAQ,MAAMA,CAAK,EAAI,EAAIA,EAC3B,IAAM2C,EAAc3C,EAAQ,GAC5B,GAAI,CAAC,KAAK,oBAAqB,CAC7B,KAAK,cAAgB2C,EACrB,MACF,CACI,KAAK,WAGT,KAAK,UAAUA,CAAW,CAC5B,CAKA,UAAU3C,EAAO,CACf,KAAK,aAAa,MAAQA,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,eAAe,IAAI,EAChC,KAAK,KAAK,cAAc,EACxB,KAAK,QAAQ,KAAK,aAAa,CACjC,CAEA,YAAc,IAAI4C,GAElB,UAAY,IAAIA,GAEhB,QAAU,IAAIA,GAKd,IAAI,YAAa,CACf,OAAI,KAAK,QAAQ,KAAO,KAAK,QAAQ,KACnC,KAAK,YAAc,KAAK,gBACjB,KAAK,cAEV,KAAK,cAAgB,SACvB,KAAK,YAAc,KAAK,uBAAuB,GAE1C,KAAK,YACd,CACA,IAAI,WAAWxD,EAAG,CAChB,KAAK,YAAcA,CACrB,CACA,YAKA,cAAgBhD,GAAU,IAE1B,IAAI,KAAM,CACR,OAAOiG,GAAgB,KAAK,aAAa,IAAK,CAAC,CACjD,CACA,IAAI,IAAIjD,EAAG,CACT,KAAK,aAAa,IAAMA,EAAI,GAC5B,KAAK,KAAK,cAAc,CAC1B,CAEA,IAAI,KAAM,CACR,OAAOiD,GAAgB,KAAK,aAAa,IAAK,CAAC,CACjD,CACA,IAAI,IAAIjD,EAAG,CACT,KAAK,aAAa,IAAMA,EAAI,GAC5B,KAAK,KAAK,cAAc,CAC1B,CACA,IAAI,MAAO,CACT,OAAOiD,GAAgB,KAAK,aAAa,KAAM,CAAC,CAClD,CACA,IAAI,KAAKjD,EAAG,CACV,KAAK,aAAa,KAAOA,EAAI,GAC7B,KAAK,KAAK,cAAc,CAC1B,CAEA,IAAI,UAAW,CACb,OAAOgD,GAAiB,KAAK,aAAa,QAAQ,CACpD,CACA,IAAI,SAAShD,EAAG,CACd,KAAK,aAAa,SAAWA,EAC7B,KAAK,KAAK,cAAc,EACpB,KAAK,QAAQ,WAAa,KAAK,WACjC,KAAK,QAAQ,SAAW,KAAK,SAEjC,CAEA,IAAI,YAAa,CACf,OAAI,KAAK,QAAQ,KAAO,KAAK,QAAQ,IAC5B,KAAK,QAAQ,OAAS,EAAI,GAE3B,KAAK,MAAQ,KAAK,QAAQ,MAAQ,KAAK,QAAQ,IAAM,KAAK,QAAQ,IAC5E,CAEA,IAAI,gBAAiB,CACnB,OAAK,KAAK,QAAQ,aAGd,KAAK,cAAgB,EAChB,EAEF,KAAK,WAAa,KAAK,QAAQ,aAL7B,KAAK,QAAQ,OAAS,EAAI,CAMrC,CAEA,aAAe,KAAK,YAAY,cAEhC,WAAayD,EAAO,EAAE,EAEtB,YAAc,EAEd,gBAAkB,EAElB,UAAY,GAEZ,WAAa,GAEb,cAAczD,EAAG,CACf,KAAK,WAAaA,CACpB,CAOA,oBAAsB,GAEtB,cAEA,aAEA,WAAa,IAAI0D,GAOjB,cAAgB,GAEhB,YAEA,aAAe,IAAM,CAAC,EAStB,sBAAwB,GACxB,aAAc,CACZ,IAAM9E,EAAWR,EAAOG,EAAS,EACjC,KAAK,QAAQ,kBAAkB,IAAM,CACnC,KAAK,kBAAoB,CAACK,EAAS,OAAO,KAAK,aAAc,cAAe,KAAK,eAAe,KAAK,IAAI,CAAC,EAAGA,EAAS,OAAO,KAAK,aAAc,cAAe,KAAK,eAAe,KAAK,IAAI,CAAC,EAAGA,EAAS,OAAO,KAAK,aAAc,YAAa,KAAK,aAAa,KAAK,IAAI,CAAC,CAAC,CAC/Q,CAAC,CACH,CACA,aAAc,CACZ,KAAK,kBAAkB,QAAQC,GAAWA,EAAQ,CAAC,EACnD,KAAK,WAAW,KAAK,EACrB,KAAK,WAAW,SAAS,EACzB,KAAK,UAAU,SAAS,EACxB,KAAK,QAAQ,SAAS,CACxB,CAEA,WAAY,CACV,KAAK,qBAAqB,EAEtB,KAAK,WAAa,KAAK,QAAQ,WAEjC,KAAK,QAAQ,SAAW,IAE1B,KAAK,KAAO,KAAK,QAAQ,KACzB,KAAK,IAAM,KAAK,QAAQ,IACxB,KAAK,IAAM,KAAK,QAAQ,IACxB,KAAK,WAAW,CAClB,CAEA,QAAS,CACP,KAAK,sBAAsB,CAC7B,CACA,YAAa,CACX,KAAK,oBAAsB,GACvB,KAAK,gBAAkB,OACzB,KAAK,MAAQ,KAAK,iBAAiB,GAEnC,KAAK,aAAa,MAAQ,KAAK,cAC/B,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,eAAe,IAAI,EAChC,KAAK,KAAK,cAAc,EAE5B,CACA,kBAAmB,CACjB,OAAO,KAAK,GACd,CACA,SAAU,CACR,KAAK,cAAc,EAAK,EACxB,KAAK,aAAa,CACpB,CACA,UAAW,CACT,KAAK,QAAQ,eAAe,EAAK,EACjC,KAAK,QAAQ,eAAe,IAAI,EAChC,KAAK,cAAc,EAAI,CACzB,CACA,WAAY,CACV,KAAK,YAAY,KAAK,KAAK,KAAK,EAG5B,KAAK,WACP,KAAK,sBAAsB,CACzB,cAAe,EACjB,CAAC,CAEL,CACA,UAAW,CACT,KAAK,cAAc,KAAK,KAAK,GAGzB,KAAK,QAAQ,MAAQ,CAAC,KAAK,YAC7B,KAAK,sBAAsB,CACzB,cAAe,EACjB,CAAC,EAEH,KAAK,QAAQ,eAAe,IAAI,CAClC,CACA,yBAA0B,EAGpB,CAAC,KAAK,WAAa,CAAC,KAAK,cAC3B,KAAK,QAAQ,eAAe,IAAI,EAChC,KAAK,sBAAsB,GAE7B,KAAK,QAAQ,SAAW,KAAK,aAAa,QAC5C,CACA,eAAeC,EAAO,CACpB,GAAI,OAAK,UAAYA,EAAM,SAAW,GAKtC,IAAI,KAAK,UAAU,IAAK,CACtB,IAAM6E,EAAwB,KAAK,QAAQ,uBAAuB7E,EAAO,KAAK,QAAQ,UAAU,KAAK,aAAa,EAAE,aAAa,sBAAsB,CAAC,EACxJ,KAAK,UAAY6E,EACjB,KAAK,mBAAmB,EACxB,KAAK,QAAQ,kBAAkB,EAC/B,MACF,CACA,KAAK,UAAY,GACjB,KAAK,cAAc,EAAI,EACvB,KAAK,mBAAmB,EACxB,KAAK,QAAQ,kBAAkB,EAG1B,KAAK,QAAQ,MAChB,KAAK,6BAA6B7E,EAAO,CACvC,cAAe,EACjB,CAAC,EAEE,KAAK,WACR,KAAK,uBAAuBA,CAAK,EACjC,KAAK,UAAU,KAAK,CAClB,OAAQ,KACR,OAAQ,KAAK,QACb,MAAO,KAAK,KACd,CAAC,GAEL,CAOA,uBAAuBA,EAAO,CAK5B,KAAK,cAAgB,GAMrB,WAAW,IAAM,CACf,KAAK,cAAgB,GACrB,KAAK,UAAUA,CAAK,CACtB,EAAG,CAAC,CACN,CAEA,UAAUA,EAAO,CACf,IAAM8E,EAAO9E,EAAM,QAAU,KAAK,QAAQ,YACpC+E,EAAQ,KAAK,QAAQ,aACrBnD,EAAO,KAAK,QAAQ,OAAS,EAAI,EAAI,KAAK,QAAQ,KAClDoD,EAAW,KAAK,OAAO,KAAK,QAAQ,IAAM,KAAK,QAAQ,KAAOpD,CAAI,EAClEqB,EAAa,KAAK,QAAQ,OAAS,EAAI6B,EAAOC,EAAQD,EAAOC,EAG7DE,EADkB,KAAK,MAAMhC,EAAa+B,CAAQ,EAAIA,GAClB,KAAK,QAAQ,IAAM,KAAK,QAAQ,KAAO,KAAK,QAAQ,IACxFlD,EAAQ,KAAK,MAAMmD,EAAiBrD,CAAI,EAAIA,EAC5CsD,EAAY,KAAK,MACvB,GAAIpD,IAAUoD,EAAW,CAIvB,KAAK,QAAQ,eAAe,IAAI,EAChC,KAAK,QAAQ,KAAO,EAAI,KAAK,sBAAsB,EAAI,KAAK,6BAA6BlF,EAAO,CAC9F,cAAe,KAAK,QAAQ,aAC9B,CAAC,EACD,MACF,CACA,KAAK,MAAQ8B,EACb,KAAK,YAAY,KAAK,KAAK,KAAK,EAChC,KAAK,cAAc,KAAK,KAAK,EAC7B,KAAK,QAAQ,eAAe,IAAI,EAChC,KAAK,QAAQ,KAAO,EAAI,KAAK,sBAAsB,EAAI,KAAK,6BAA6B9B,EAAO,CAC9F,cAAe,KAAK,QAAQ,aAC9B,CAAC,CACH,CACA,eAAeA,EAAO,CAGhB,CAAC,KAAK,QAAQ,MAAQ,KAAK,WAC7B,KAAK,6BAA6BA,CAAK,CAE3C,CACA,cAAe,CACT,KAAK,YACP,KAAK,UAAY,GACb,KAAK,UAAU,QACjB,KAAK,cAAc,EAAK,EAE1B,KAAK,QAAQ,KAAK,CAChB,OAAQ,KACR,OAAQ,KAAK,QACb,MAAO,KAAK,KACd,CAAC,EAKD,WAAW,IAAM,KAAK,qBAAqB,EAAG,KAAK,UAAU,IAAM,GAAK,CAAC,EAE7E,CACA,OAAOkB,EAAG,CACR,IAAMG,EAAM,KAAK,gBACXK,EAAM,KAAK,QAAQ,aAAe,KAAK,gBAC7C,OAAO,KAAK,IAAI,KAAK,IAAIR,EAAGQ,CAAG,EAAGL,CAAG,CACvC,CACA,wBAAyB,CACvB,OAAI,KAAK,QAAQ,QACP,EAAI,KAAK,aAAe,KAAK,QAAQ,aAAe,KAAK,gBAAkB,GAAK,KAAK,gBAExF,KAAK,YAAc,KAAK,QAAQ,aAAe,KAAK,gBAAkB,GAAK,KAAK,eACzF,CACA,8BAA8BrB,EAAO,CACnC,OAAOA,EAAM,QAAU,KAAK,QAAQ,WACtC,CAKA,oBAAqB,CAAC,CAKtB,sBAAuB,CACrB,KAAK,aAAa,MAAM,QAAU,KAAK,KAAK,QAAQ,aAAa,KACjE,KAAK,aAAa,MAAM,MAAQ,eAAe,KAAK,QAAQ,cAAgB,KAAK,gBAAkB,CAAC,MACpG,KAAK,aAAa,MAAM,KAAO,IAAI,KAAK,QAAQ,cAAgB,KAAK,eAAe,IACtF,CACA,sBAAsBmF,EAAS,CAC7B,KAAK,WAAa,KAAK,OAAO,KAAK,uBAAuB,CAAC,EAC3D,KAAK,eAAeA,CAAO,CAC7B,CACA,6BAA6BnF,EAAOmF,EAAS,CAC3C,KAAK,WAAa,KAAK,OAAO,KAAK,8BAA8BnF,CAAK,CAAC,EACvE,KAAK,eAAemF,CAAO,CAC7B,CACA,eAAeA,EAAS,CACtB,KAAK,QAAQ,eAAe,CAAC,CAACA,GAAS,aAAa,EACpD,KAAK,QAAQ,oBAAoB,IAAI,CACvC,CAMA,WAAWrD,EAAO,EACZ,KAAK,uBAAyBA,IAAU,QAC1C,KAAK,MAAQA,EAEjB,CAMA,iBAAiBsD,EAAI,CACnB,KAAK,YAAcA,EACnB,KAAK,sBAAwB,EAC/B,CAMA,kBAAkBA,EAAI,CACpB,KAAK,aAAeA,CACtB,CAMA,iBAAiBC,EAAY,CAC3B,KAAK,SAAWA,CAClB,CACA,OAAQ,CACN,KAAK,aAAa,MAAM,CAC1B,CACA,MAAO,CACL,KAAK,aAAa,KAAK,CACzB,CACA,OAAO,UAAO,SAAgC7E,EAAmB,CAC/D,OAAO,IAAKA,GAAqB7B,EACnC,EACA,OAAO,UAAyB2G,GAAkB,CAChD,KAAM3G,EACN,UAAW,CAAC,CAAC,QAAS,iBAAkB,EAAE,CAAC,EAC3C,UAAW,CAAC,OAAQ,QAAS,EAAG,mBAAmB,EACnD,SAAU,EACV,aAAc,SAAqCtC,EAAIC,EAAK,CACtDD,EAAK,GACJkJ,EAAW,SAAU,UAAoD,CAC1E,OAAOjJ,EAAI,UAAU,CACvB,CAAC,EAAE,QAAS,UAAmD,CAC7D,OAAOA,EAAI,SAAS,CACtB,CAAC,EAAE,OAAQ,UAAkD,CAC3D,OAAOA,EAAI,QAAQ,CACrB,CAAC,EAAE,QAAS,UAAmD,CAC7D,OAAOA,EAAI,SAAS,CACtB,CAAC,EAECD,EAAK,GACJmJ,GAAY,iBAAkBlJ,EAAI,WAAW,CAAC,CAErD,EACA,OAAQ,CACN,MAAO,CAAC,EAAG,QAAS,QAAS6H,EAAe,CAC9C,EACA,QAAS,CACP,YAAa,cACb,UAAW,YACX,QAAS,SACX,EACA,SAAU,CAAC,gBAAgB,EAC3B,SAAU,CAAIpD,GAAmB,CAACrC,GAAiC,CACjE,QAASL,GACT,YAAaM,CACf,CAAC,CAAC,EAAMyF,EAAwB,CAClC,CAAC,CACH,CACA,OAAOzF,CACT,GAAG,EAqMCC,IAAgC,IAAM,CACxC,MAAMA,CAAgB,CACpB,OAAO,UAAO,SAAiC4B,EAAmB,CAChE,OAAO,IAAKA,GAAqB5B,EACnC,EACA,OAAO,UAAyB6G,GAAiB,CAC/C,KAAM7G,CACR,CAAC,EACD,OAAO,UAAyB8G,GAAiB,CAC/C,QAAS,CAACC,GAAiBC,EAAe,CAC5C,CAAC,CACH,CACA,OAAOhH,CACT,GAAG,uCE11DCiH,EAAA,EAAA,WAAA,CAAA,EAAsCC,EAAA,QAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,YAAAC,KAAAR,EAAAS,EAAA,CAAyB,CAAA,CAAA,EACtEX,EAAA,EAAA,kBAAA,EAAkB,EAAA,KAAA,EAEdY,EAAA,CAAA,EACFC,EAAA,EACAb,EAAA,EAAA,MAAA,CAAA,EACEY,EAAA,CAAA,EACFC,EAAA,EAAM,EACW,4BALfC,EAAA,CAAA,EAAAC,EAAA,IAAAb,EAAAc,KAAA,GAAA,EAGAF,EAAA,CAAA,EAAAC,EAAA,IAAAb,EAAAe,YAAA,GAAA,GDRV,IAaaC,GAbbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,KACAC,KACAC,aAQaP,IAAkB,IAAA,CAAzB,MAAOA,CAAkB,CAN/BQ,aAAA,CAOW,KAAAC,MAAQC,GAAMC,SAAQ,EAC/B,KAAApB,YAAcqB,GAAM,kDAFTZ,EAAkB,CAAA,+BAAlBA,EAAkBa,UAAA,CAAA,CAAA,eAAA,CAAA,EAAAC,OAAA,CAAAL,MAAA,CAAA,EAAA,OAAA,CAAA,EAAAM,QAAA,CAAAxB,YAAA,aAAA,EAAAyB,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,kBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICb/BtC,EAAA,EAAA,MAAA,CAAA,EACEwC,GAAA,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAAC,EAAA,EAYF7B,EAAA,SAZEC,EAAA,EAAA6B,GAAAJ,EAAAZ,MAAA,CAAO,kBDQGiB,EAAcC,GAAaC,GAAAC,GAAEC,GAAeC,EAAqB,EAAAC,OAAA,CAAA;+GAAA,CAAA,CAAA,CAAA,SAIhEhC,CAAkB,GAAA,IEb/B,IAiBaiC,GAjBbC,GAAAC,EAAA,KAAAC,IACAC,KAQAC,KACAC,SAOaN,IAAa,IAAA,CAApB,MAAOA,CAAa,CAH1BO,aAAA,CAImB,KAAAC,eAAiBC,EAAOC,EAAc,EACtC,KAAAC,uBAAyBF,EAAOG,EAAsB,EACtD,KAAAC,mBAAqBJ,EAAOK,EAAkB,EAE/DC,0BAA0BC,EAAwBC,EAAc,CAC9D,OAAID,EACK,qBAAqBA,CAAc,aAAaC,CAAM,QAExD,aAAaA,CAAM,OAC5B,CAEAC,QAAQF,EAAwBG,EAAmBF,EAAc,CAC/D,OAAO,KAAKT,eACTY,IAAI,CACHC,GAAIJ,EACJK,UAAWC,GAAaP,EAAgBG,CAAS,EAClD,EACAK,KAAKC,EAAKC,GAAaA,GAAUC,IAAI,CAAC,CAC3C,CAEAC,gBAAgBC,EAAwC,CAItD,OAAO,KAAKlB,uBACTmB,mBAAmB,CAClBT,GAAIQ,EAAeR,GACnBC,UAAWO,EAAeP,UAC3B,EACAE,KACCC,EAAKC,IAAc,CACjBK,aAAcL,GAAUK,aACxBC,cAAeN,GAAUO,6BACzB,CAAC,CAET,CAEAC,WAAWP,EAAmB,CAC5B,OAAO,KAAKnB,eAAe2B,OAAO,CAAER,KAAAA,CAAI,CAAE,CAC5C,iDAxCW3B,EAAa,CAAA,kCAAbA,EAAaoC,QAAbpC,EAAaqC,UAAAC,WAFZ,MAAM,CAAA,CAAA,SAEPtC,CAAa,GAAA,2BERlBuC,EAAA,EAAA,QAAA,EACAC,EAAA,EAAA,aAAA,CAAA,EAA8BD,EAAA,CAAA,mBAA4CE,EAAA,SAA9DC,EAAA,EAAAC,EAAA,QAAA,OAAA,EAAkBD,EAAA,EAAAE,EAAAC,EAAA,EAAA,EAAA,0BAAA,CAAA,4BAMhCC,GAAA,EAAA,CAAA,yBACEH,EAAA,mBAAAI,CAAA,EAAkC,0BAAAC,GAAA,EAAAC,GAAAC,EAAAC,MAAA,CAAA,CAAA,yBAW1BC,EAAA,EAAA,uBAAA,EAAA,qCAEAZ,EAAA,EAAA,kBAAA,EAAA,EACEa,EAAA,kBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAN,EAAAO,EAAA,CAAA,EAAA,OAAAC,EAAmBR,EAAAS,eAAAL,CAAA,CAAsB,CAAA,CAAA,EAG1Cb,EAAA,yBAFCE,EAAA,YAAAiB,EAAAV,EAAAW,cAAAC,IAAA,oBAAA,IAAA,KAAA,KAAAF,EAAAG,KAAA,EAA2D,cAAAC,GAAAA,EAAAd,EAAAe,YAAA,IAAA,MAAAD,EAAAE,YAAA,KAAA,KAAAF,EAAAE,WAAAC,qBAAA,MAAAH,IAAAI,OAAAJ,EAAA,EAAA,6BAgC7DxB,EAAA,EAAA,aAAA,EAAA,EAAwB,EAAA,QAAA,EACdD,EAAA,EAAA,WAAA,EAASE,EAAA,EACjBF,EAAA,CAAA,mBACAa,EAAA,EAAA,2BAAA,EAAA,EAIFX,EAAA,qBALEC,EAAA,CAAA,EAAA2B,EAAA,WAAAxB,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,EAGEH,EAAA,CAAA,EAAAC,EAAA,aAAAqB,EAAAd,EAAAoB,UAAA,IAAA,KAAA,KAAAN,EAAAO,SAAA,yBAWAnB,EAAA,EAAA,sBAAA,yBAIEZ,EAAA,EAAA,mBAAA,EAAA,EAAmC,EAAA,uBAAA,EACV,EAAA,UAAA,EACXD,EAAA,EAAA,OAAA,EAAKE,EAAA,EAAW,EAE5BD,EAAA,EAAA,wBAAA,EACGD,EAAA,CAAA,mBACHE,EAAA,EAAyB,SANTE,EAAA,OAAA,OAAA,EAKbD,EAAA,CAAA,EAAA2B,EAAA,GAAAxB,EAAA,EAAA,EAAA,sDAAA,EAAA,GAAA,6BAsBWN,EAAA,CAAA,8CAAA8B,EAAA,IAAAG,GAAA,EAAA,EAAA,0CAAAxB,GAAA,EAAAyB,GAAAC,GAAA,KAAA,KAAAA,EAAAC,WAAAC,IAAA,CAAA,EAAA,GAAA,6BAKArC,EAAA,CAAA,8CAAA8B,EAAA,IAAAxB,EAAA,EAAA,GAAA6B,EAAAG,KAAA,KAAA,KAAAH,EAAAG,IAAAC,QAAA,gCAAA,EAAA,GAAA,sCAVJtC,EAAA,EAAA,IAAA,EAAA,EACEa,EAAA,QAAA,SAAAC,EAAA,CAAAC,EAAAwB,CAAA,EAAA,IAAAL,EAAAjB,EAAA,EAAAuB,UAAS9B,OAATO,EAAA,CAAA,EAASwB,cAAAP,CAAA,EAA2BhB,EAAEJ,EAAA4B,eAAA,CAAuB,CAAA,CAAA,EAG7DC,EAAA,EAAAC,GAAA,EAAA,CAAA,EAA0D,EAAAC,GAAA,EAAA,CAAA,EAQ5D5C,EAAA,8BAREC,EAAA,EAAA4C,EAAAZ,EAAAa,WAAA,EAAAb,EAAAG,KAAA,MAAAH,EAAAG,IAAAC,OAAA,EAAA,CAAA,6BAdZtC,EAAA,EAAA,kBAAA,EAAA,EAAsC,EAAA,eAAA,EAAA,EAC6B,EAAA,MAAA,EAAA,EAE7DY,EAAA,EAAA,MAAA,EAAA,EACAZ,EAAA,EAAA,KAAA,EAAK,EAAA,KAAA,EAEDD,EAAA,CAAA,EACFE,EAAA,EAEA0C,EAAA,EAAAK,GAAA,EAAA,EAAA,IAAA,EAAA,EAeF/C,EAAA,EAAM,EACF,EACO,4DAzBDC,EAAA,EAAAC,EAAA,kBAAA8C,CAAA,EAEL/C,EAAA,CAAA,EAAAC,EAAA,MAAA+B,EAAAC,WAAAe,QAAAC,EAAA,EAGDjD,EAAA,CAAA,EAAA2B,EAAA,IAAAnB,EAAA0C,kBAAAlB,EAAAC,WAAAkB,GAAAC,GAAA,EAAAC,EAAA,CAAA,EAAA,GAAA,EAGFrD,EAAA,EAAA4C,EAAAZ,EAAAA,EAAAG,KAAA,MAAAH,EAAAG,IAAAmB,QAAA,OAAAtB,EAAAG,IAAAmB,OAAAC,WAAA,EAAA,EAAA,6BAXVC,GAAA,CAAA,eACAC,GAAA,EAAAC,GAAA,EAAA,EAAA,kBAAA,GAAAC,EAAA,+BADAC,GAAAzD,EAAA,EAAA,EAAAK,EAAAqD,kBAAA,CAAA,EACA7D,EAAA,CAAA,EAAA8D,GAAAC,CAAA,6BAbFP,GAAA,CAAA,eACAf,EAAA,EAAAuB,GAAA,EAAA,EAAA,mBAAA,EAAA,EAAmC,EAAAC,GAAA,EAAA,CAAA,cADnCL,GAAAzD,EAAA,EAAA,EAAAY,EAAA,CAAA,EAAAmD,YAAA,CAAA,EACAlE,EAAA,CAAA,EAAA4C,GAAAuB,GAAA,KAAA,KAAAA,EAAAC,UAAA,EAAA,EAAA,CAAA,6BA8DMtE,EAAA,EAAA,aAAA,EAAA,EAAkC,EAAA,KAAA,EAC3BD,EAAA,CAAA,EAAiBE,EAAA,EAAM,0BADlBE,EAAA,QAAAoE,EAAAnC,IAAA,EACLlC,EAAA,CAAA,EAAAE,EAAAmE,EAAAnC,IAAA,6BAMTpC,EAAA,EAAA,WAAA,EACED,EAAA,CAAA,mBACFE,EAAA,yBADEC,EAAA,EAAA2B,EAAA,IAAAxB,EAAA,EAAA,EAAAmE,EAAAC,eAAA,EAAA,GAAA,6BAYIzE,EAAA,EAAA,aAAA,EAAA,EACED,EAAA,CAAA,oCACFE,EAAA,0BAFYE,EAAA,QAAAuE,EAAAnD,KAAA,EACVrB,EAAA,EAAAyE,GAAA,IAAAD,EAAAtC,KAAA,KAAA/B,EAAA,EAAA,EAAAqE,EAAAE,MAAA,EAAA,KAAAvE,EAAA,EAAA,EAAAqE,EAAAG,MAAA,EAAA,IAAA,0BAOJ7E,EAAA,EAAA,UAAA,EAAUD,EAAA,EAAA,MAAA,EAAIE,EAAA,0BAEdD,EAAA,EAAA,UAAA,EAAUD,EAAA,EAAA,YAAA,EAAUE,EAAA,0BAepBD,EAAA,EAAA,MAAA,EAAA,EAA6D,EAAA,iBAAA,EAC1C,EAAA,YAAA,EAEbD,EAAA,CAAA,mBACFE,EAAA,EACAD,EAAA,EAAA,aAAA,EAAA,EACEY,EAAA,EAAA,QAAA,EAAA,EACFX,EAAA,EACAD,EAAA,EAAA,WAAA,EACGD,EAAA,CAAA,mBAIHE,EAAA,EAAY,EAEdD,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EAEbD,EAAA,EAAA,oBAGFE,EAAA,EACAD,EAAA,GAAA,aAAA,EAAA,EACEY,EAAA,GAAA,QAAA,EAAA,EACFX,EAAA,EACAD,EAAA,GAAA,WAAA,EACGD,EAAA,EAAA,oBAIHE,EAAA,EAAY,EAEdD,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EAEbD,EAAA,EAAA,oBAIFE,EAAA,EACAD,EAAA,GAAA,aAAA,EAAA,EACEY,EAAA,GAAA,QAAA,EAAA,EACFX,EAAA,EACAD,EAAA,GAAA,WAAA,EACGD,EAAA,EAAA,oBAIHE,EAAA,EAAY,EACI,SA5CdC,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,EAAA,EAAA,mEAAA,EAAA,GAAA,EAMCH,EAAA,CAAA,EAAA2B,EAAA,GAAAxB,EAAA,EAAA,EAAA,yEAAA,EAAA,GAAA,EAQDH,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,GAAA,GAAA,wEAAA,EAAA,GAAA,EAQCH,EAAA,CAAA,EAAA2B,EAAA,GAAAxB,EAAA,GAAA,GAAA,8EAAA,EAAA,GAAA,EAQDH,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,GAAA,GAAA,0EAAA,EAAA,GAAA,EASCH,EAAA,CAAA,EAAA2B,EAAA,GAAAxB,EAAA,GAAA,GAAA,gFAAA,EAAA,GAAA,sCAnDbL,EAAA,EAAA,eAAA,EAAe,EAAA,qBAAA,KAAA,CAAA,EACyC,EAAA,IAAA,CAAA,EACjDa,EAAA,QAAA,UAAA,CAAAE,EAAA+D,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAA9D,EAAS6D,EAAAE,OAAA,CAAsB,CAAA,CAAA,EAChCjF,EAAA,EAAA,WAAA,EAAA,EACGD,EAAA,CAAA,EACHE,EAAA,EACAF,EAAA,CAAA,mBACFE,EAAA,EACA0C,EAAA,EAAAuC,GAAA,GAAA,GAAA,MAAA,EAAA,EAmDFjF,EAAA,EAAqB,qBAvDdC,EAAA,CAAA,EAAA2B,EAAA,GAAAkD,EAAAI,SAAA,cAAA,cAAA,GAAA,EAEHjF,EAAA,EAAA2B,EAAA,IAAAxB,EAAA,EAAA,EAAA,6CAAA,EAAA,GAAA,EAEFH,EAAA,CAAA,EAAA4C,EAAAiC,EAAAI,SAAA,EAAA,EAAA,sCAzDdnF,EAAA,EAAA,OAAA,EAAA,EAAoC,EAAA,MAAA,EAAA,EACR,EAAA,UAAA,EACd,EAAA,iBAAA,EACS,EAAA,gBAAA,EACCD,EAAA,CAAA,mBAAmEE,EAAA,EAAiB,EAEtGD,EAAA,EAAA,kBAAA,EAAkB,EAAA,iBAAA,EACC,EAAA,YAAA,EAEbD,EAAA,EAAA,oBACFE,EAAA,EACAD,EAAA,GAAA,aAAA,EAAA,EACE2D,GAAA,GAAAyB,GAAA,EAAA,EAAA,aAAA,GAAAC,EAAA,EAKFpF,EAAA,EACAyD,GAAA,EAAA,EACAf,EAAA,GAAA2C,GAAA,EAAA,EAAA,WAAA,EAKFrF,EAAA,EACAD,EAAA,GAAA,MAAA,EAAA,EAAoC,GAAA,MAAA,EAAA,EAEhCD,EAAA,EAAA,oBACFE,EAAA,EACAD,EAAA,GAAA,MAAA,EAAA,EAAsC,GAAA,kBAAA,EAAA,EAC0B,GAAA,aAAA,EAAA,EAE1D2D,GAAA,GAAA4B,GAAA,EAAA,EAAA,aAAA,GAAAF,EAAA,EAKFpF,EAAA,EAAa,EAEfD,EAAA,GAAA,SAAA,EAAA,EAA+Ca,EAAA,QAAA,UAAA,CAAAE,EAAAyE,CAAA,EAAA,IAAA9E,EAAAO,EAAA,CAAA,EAAA,OAAAC,EAASR,EAAA+E,cAAA,CAAe,CAAA,CAAA,EACrE9C,EAAA,GAAA+C,GAAA,EAAA,EAAA,UAAA,EAAiC,GAAAC,GAAA,EAAA,EAAA,UAAA,EAKnC1F,EAAA,EAAS,EACL,EAER0C,EAAA,GAAAiD,GAAA,EAAA,EAAA,eAAA,EA+DF3F,EAAA,EAAmB,EACV,EACP,uBAjHFE,EAAA,YAAAO,EAAAmF,eAAA,EAIkB3F,EAAA,CAAA,EAAAE,EAAAC,EAAA,EAAA,EAAA,iDAAA,CAAA,EAKZH,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,GAAA,GAAA,2CAAA,EAAA,GAAA,EAGAH,EAAA,CAAA,EAAA8D,GAAAtD,EAAAoF,aAAA,EAMF5F,EAAA,CAAA,QAAA4D,GAA2BpD,EAAAqF,YAAA,CAAa,EACxC7F,EAAA,EAAA4C,EAAAkD,EAAA,GAAA,EAAA,EAQE9F,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,GAAA,GAAA,0CAAA,EAAA,GAAA,EAGiBH,EAAA,CAAA,EAAAC,EAAA,gBAAA,MAAA,EAEbD,EAAA,CAAA,EAAA8D,GAAAtD,EAAAuF,gBAAA,CAAiB,EAQnB/F,EAAA,CAAA,EAAA4C,EAAApC,EAAAwF,wBAAA,EAAA,GAAA,EAAA,EAQNhG,EAAA,CAAA,EAAA4C,IAAAqD,EAAAzF,EAAAqF,YAAA,IAAA,KAAA,KAAAI,EAAAC,YAAA1F,EAAA2F,aAAAC,8BAAA,GAAA,EAAA,0BAyGoBtG,EAAA,EAAA,UAAA,EAAUD,EAAA,EAAA,QAAA,EAAME,EAAA,0BAEhBD,EAAA,EAAA,UAAA,EAAUD,EAAA,EAAA,OAAA,EAAKE,EAAA,6BAJnBD,EAAA,EAAA,aAAA,EAAA,EACE2C,EAAA,EAAA4D,GAAA,EAAA,EAAA,UAAA,EAA2B,EAAAC,GAAA,EAAA,EAAA,UAAA,EAK3BzG,EAAA,CAAA,EACFE,EAAA,0CAPYE,EAAA,QAAAsG,CAAA,EACVvG,EAAA,EAAA4C,EAAA4D,EAAAC,WAAA,EAAA,CAAA,EAKAzG,EAAA,CAAA,EAAA2B,EAAA,IAAA4E,EAAArE,KAAA,GAAA,6BARNpC,EAAA,EAAA,eAAA,EAAA,EACE2D,GAAA,EAAAiD,GAAA,EAAA,EAAA,aAAA,GAAAvB,EAAA,EAUFpF,EAAA,0BAXcE,EAAA,QAAAuG,EAAAG,YAAA,EACZ3G,EAAA,EAAA8D,GAAA0C,EAAAI,YAAA,sCAPR9G,EAAA,EAAA,kBAAA,EAAA,EAAwC,EAAA,YAAA,EAEpCD,EAAA,CAAA,mBACFE,EAAA,EACAD,EAAA,EAAA,aAAA,EAAA,EACE2D,GAAA,EAAAoD,GAAA,EAAA,EAAA,eAAA,GAAA1B,EAAA,eAcArF,EAAA,EAAA,aAAA,EAAA,EAA2Ba,EAAA,QAAA,UAAA,CAAAE,EAAAiG,CAAA,EAAA,IAAAtG,EAAAO,EAAA,CAAA,EAAA,OAAAC,EAASR,EAAAuG,aAAA,CAAc,CAAA,CAAA,EAChDjH,EAAA,EAAA,UAAA,EAAUD,EAAA,GAAA,KAAA,EAAGE,EAAA,EACbD,EAAA,GAAA,OAAA,EAAA,EACED,EAAA,EAAA,oBACFE,EAAA,EAAO,EACI,EACF,qBAvBXC,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,EAAA,EAAA,oDAAA,EAAA,GAAA,EAEmDH,EAAA,CAAA,EAAAC,EAAA,cAAAO,EAAAwG,qBAAA,EACnDhH,EAAA,EAAA8D,GAAA3D,EAAA,EAAA,EAAAK,EAAAyG,mBAAA,CAAA,EAcYjH,EAAA,CAAA,EAAAC,EAAA,QAAA,IAAA,EAGRD,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,GAAA,EAAA,kEAAA,EAAA,GAAA,6BA3BZL,EAAA,EAAA,iBAAA,EAAiB,EAAA,eAAA,EAAA,EAEbD,EAAA,CAAA,mBACFE,EAAA,EACA0C,EAAA,EAAAyE,GAAA,GAAA,GAAA,kBAAA,EAAA,EA6BFnH,EAAA,qBA/BIC,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,EAAA,EAAA,0DAAA,EAAA,GAAA,EAEFH,EAAA,CAAA,EAAA4C,EAAApC,EAAAA,EAAAW,eAAA,OAAAgG,EAAA3G,EAAAW,cAAAC,IAAA,sBAAA,IAAA,OAAA+F,EAAA9F,MAAA,EAAA,EAAA,sCAjBJvB,EAAA,EAAA,IAAA,EAAID,EAAA,CAAA,mBAAgEE,EAAA,EACpED,EAAA,EAAA,iBAAA,EAAiB,EAAA,eAAA,EAAA,EAEbD,EAAA,CAAA,mBACAC,EAAA,EAAA,UAAA,EACED,EAAA,CAAA,mBACAC,EAAA,GAAA,IAAA,EAAA,EAA+Ba,EAAA,QAAA,UAAA,CAAAE,EAAAuG,CAAA,EAAA,IAAA5G,EAAAO,EAAA,CAAA,EAAA,OAAAC,EAASR,EAAA6G,4BAAA,CAA6B,CAAA,CAAA,EACnExH,EAAA,EAAA,oBACFE,EAAA,EAAI,EACK,EACE,EAEjB0C,EAAA,GAAA6E,GAAA,EAAA,EAAA,iBAAA,qBAZItH,EAAA,EAAAE,EAAAC,EAAA,EAAA,EAAA,8CAAA,CAAA,EAGAH,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,EAAA,EAAA,uDAAA,EAAA,GAAA,EAEEH,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,EAAA,EAAA,uDAAA,EAAA,GAAA,EAEEH,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,GAAA,GAAA,kCAAA,EAAA,GAAA,EAKRH,EAAA,CAAA,EAAA4C,EAAApC,EAAA+G,yBAAA,EAAA,GAAA,EAAA,6BA8DEzH,EAAA,EAAA,WAAA,EACED,EAAA,CAAA,EACFE,EAAA,+BADEC,EAAA,EAAAwH,GAAA,KAAAC,EAAApG,OAAA,KAAA,KAAAoG,EAAApG,MAAA+C,SAAA,EAAA,IAAA5D,EAAAkH,4BAAA,GAAA,6BAEF5H,EAAA,EAAA,aAAA,EAAA,EAIED,EAAA,CAAA,mBAEFE,EAAA,+BAFEC,EAAA,EAAAyE,GAAA,IAAAtE,EAAA,EAAA,EAAA,wEAAA,EAAA,UAAAsH,EAAApG,OAAA,KAAA,KAAAoG,EAAApG,MAAA+C,SAAA,EAAA,KAAA5D,EAAAkH,4BAAA,GAAA,sCA/BJ5H,EAAA,EAAA,IAAA,EACED,EAAA,CAAA,mBACAC,EAAA,EAAA,aAAA,EAAA,EACED,EAAA,CAAA,mBACFE,EAAA,EAAa,EAEfD,EAAA,EAAA,iBAAA,EAAiB,EAAA,YAAA,EAEbD,EAAA,CAAA,mBACAC,EAAA,GAAA,IAAA,EAAA,EAA+Ba,EAAA,QAAA,UAAA,CAAAE,EAAA8G,CAAA,EAAA,IAAAnH,EAAAO,EAAA,CAAA,EAAA,OAAAC,EAASR,EAAAoH,iCAAA,CAAkC,CAAA,CAAA,EACxE/H,EAAA,EAAA,oBACFE,EAAA,EAAI,EAENW,EAAA,GAAA,WAAA,GAAA,CAAA,oBAWA+B,EAAA,GAAAoF,GAAA,EAAA,EAAA,YAAA,EAAA,EAA0F,GAAAC,GAAA,EAAA,EAAA,aAAA,EAAA,EAU5F/H,EAAA,6BAjCEC,EAAA,EAAA2B,EAAA,IAAAxB,EAAA,EAAA,EAAA,yDAAA,EAAA,GAAA,EAEEH,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,EAAA,EAAA,0BAAA,EAAA,GAAA,EAKAH,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,EAAA,GAAA,qEAAA,EAAA,GAAA,EAEEH,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,GAAA,GAAA,kCAAA,EAAA,GAAA,EASFH,EAAA,CAAA,EAAAC,EAAA,cAAAE,EAAA,GAAA,GAAA,qEAAA,CAAA,EAKUH,EAAA,CAAA,EAAAC,EAAA,QAAAwH,EAAApG,OAAA,KAAA,KAAAoG,EAAApG,MAAA+C,SAAA5D,EAAAkH,2BAAA,EAKT1H,EAAA,EAAAC,EAAA,QAAAwH,EAAApG,OAAA,KAAA,KAAAoG,EAAApG,MAAA+C,QAAA5D,EAAAkH,2BAAA,sCAOL5H,EAAA,EAAA,IAAA,EAAID,EAAA,CAAA,mBAA6DE,EAAA,EACjED,EAAA,EAAA,gBAAA,EAAA,EAAiCa,EAAA,cAAA,SAAAC,EAAA,CAAAC,EAAAkH,CAAA,EAAA,IAAAvH,EAAAO,EAAA,CAAA,EAAA,OAAAC,EAAeR,EAAAwH,SAAApH,CAAA,CAAgB,CAAA,CAAA,EAAEb,EAAA,qBAD9DC,EAAA,EAAAE,EAAAC,EAAA,EAAA,EAAA,2CAAA,CAAA,EACWH,EAAA,CAAA,EAAAC,EAAA,QAAAO,EAAAyH,MAAA,CAAA,yBAafvH,EAAA,EAAA,uBAAA,EAAA,qCAEAZ,EAAA,EAAA,qCAAA,EAAA,EAEEa,EAAA,wBAAA,SAAAC,EAAA,CAAAC,EAAAqH,CAAA,EAAA,IAAA1H,EAAAO,EAAA,CAAA,EAAA,OAAAC,EAAyBR,EAAA2H,sBAAAvH,CAAA,CAA6B,CAAA,CAAA,EACvDb,EAAA,qBAFCE,EAAA,QAAAO,EAAA4H,cAAAC,UAAA,MAAA7H,EAAA4H,cAAAC,SAAAC,gBAAA,KAAA,KAAA9H,EAAA4H,cAAAC,SAAAC,eAAAjH,KAAA,sCAnVhBvB,EAAA,EAAA,MAAA,CAAA,EAA0B,EAAA,MAAA,CAAA,EACI,EAAA,OAAA,EAAA,EAEQ,EAAA,MAAA,EAAA,EAG9B2C,EAAA,EAAA8F,GAAA,EAAA,EAAA,uBAAA,EAAA,EAAoB,EAAAC,GAAA,EAAA,EAAA,kBAAA,EAAA,EAStBzI,EAAA,EAGAD,EAAA,EAAA,iBAAA,EAAiB,EAAA,aAAA,EAAA,EAEbD,EAAA,CAAA,mBACAC,EAAA,GAAA,WAAA,EAAA,oBAKED,EAAA,GAAA,gBAAA,EACFE,EAAA,EAAW,EAEbW,EAAA,GAAA,QAAA,EAAA,oBAMFX,EAAA,EAAkB,EACb,EAGTD,EAAA,GAAA,MAAA,EAAA,EAA0B,GAAA,OAAA,EAAA,EACW,GAAA,MAAA,EAAA,EAE/B2C,EAAA,GAAAgG,GAAA,EAAA,EAAA,aAAA,EAAA,EAUA3I,EAAA,GAAA,UAAA,EAAU,GAAA,iBAAA,EACS,GAAA,gBAAA,EACCD,EAAA,EAAA,oBAAwDE,EAAA,EACxED,EAAA,GAAA,mBAAA,EAAmBD,EAAA,EAAA,oBAA2DE,EAAA,EAAoB,EAEpGD,EAAA,GAAA,mBAAA,EAAA,EACE2C,EAAA,GAAAiG,GAAA,EAAA,EAAA,sBAAA,EAAoB,GAAAC,GAAA,EAAA,CAAA,EAgDtB5I,EAAA,EAAmB,EACV,EACP,EAER0C,EAAA,GAAAmG,GAAA,GAAA,GAAA,OAAA,EAAA,EAsHA9I,EAAA,GAAA,OAAA,EAAA,EAAkC,GAAA,MAAA,EAAA,EACN,GAAA,UAAA,EACd,GAAA,iBAAA,EACS,GAAA,gBAAA,EACCD,EAAA,EAAA,oBAA4DE,EAAA,EAAiB,EAE/FD,EAAA,GAAA,kBAAA,EACE2C,EAAA,GAAAoG,GAAA,GAAA,EAAA,EAAkC,GAAAC,GAAA,GAAA,EAAA,EAkDR,GAAAC,GAAA,EAAA,CAAA,EAwC5BhJ,EAAA,EAAmB,EAErBD,EAAA,GAAA,UAAA,EAAU,GAAA,iBAAA,EACS,GAAA,gBAAA,EACCD,EAAA,EAAA,oBAA2DE,EAAA,EAC3ED,EAAA,GAAA,mBAAA,EACGD,EAAA,EAAA,oBACHE,EAAA,EAAoB,EAEtBD,EAAA,GAAA,kBAAA,EACE2C,EAAA,GAAAuG,GAAA,EAAA,EAAA,uBAAA,EAAA,EAAoB,GAAAC,GAAA,EAAA,EAAA,qCAAA,EAAA,EAQtBlJ,EAAA,EAAmB,EACV,EACP,EACD,EACH,EAERmJ,GAAA,EAAA,EAEApJ,EAAA,GAAA,mBAAA,EAAA,EAAkBa,EAAA,cAAA,UAAA,CAAAE,EAAAsI,CAAA,EAAA,IAAA3I,EAAAO,EAAA,EAAA,OAAAC,EAAeR,EAAA4I,OAAA,CAAQ,CAAA,CAAA,EAAC,cAAA,UAAA,CAAAvI,EAAAsI,CAAA,EAAA,IAAA3I,EAAAO,EAAA,EAAA,OAAAC,EAAyCR,EAAA6I,KAAA,CAAM,CAAA,CAAA,EAAEtJ,EAAA,oBA5VjFC,EAAA,CAAA,EAAAC,EAAA,YAAAO,EAAAW,aAAA,EAGFnB,EAAA,CAAA,EAAA4C,EAAApC,EAAA8I,WAAA,EAAA,EAAA,CAAA,EAcEtJ,EAAA,CAAA,EAAA2B,EAAA,IAAAxB,EAAA,EAAA,GAAA,sCAAA,EAAA,GAAA,EAGEH,EAAA,CAAA,EAAAC,EAAA,cAAAE,EAAA,GAAA,GAAA,8CAAA,CAAA,EAA0E,mBAAAoJ,GAAA,GAAAC,GAAAhJ,EAAAiJ,iBAAAC,QAAAlJ,EAAAiJ,iBAAAE,UAAA,CAAA,EAU5E3J,EAAA,CAAA,EAAA4J,GAAA,cAAAzJ,EAAA,GAAA,GAAA,8CAAA,CAAA,EAOAH,EAAA,CAAA,EAAAC,EAAA,YAAAO,EAAAqJ,cAAA,EAEF7J,EAAA,CAAA,EAAA4C,EAAApC,EAAAsJ,kBAAA,EAAA,GAAA,EAAA,EAYoB9J,EAAA,CAAA,EAAAE,EAAAC,EAAA,GAAA,GAAA,sCAAA,CAAA,EACGH,EAAA,CAAA,EAAAE,EAAAC,EAAA,GAAA,GAAA,yCAAA,CAAA,EAGnBH,EAAA,CAAA,EAAA4C,EAAApC,EAAA8I,WAAA,EAAA,GAAA,EAAA,EAoDRtJ,EAAA,CAAA,EAAA4C,EAAApC,EAAAsJ,kBAAA,EAAA,GAAA,EAAA,EAsHM9J,EAAA,EAAAC,EAAA,YAAAO,EAAAW,aAAA,EAIkBnB,EAAA,CAAA,EAAAE,EAAAC,EAAA,GAAA,GAAA,0CAAA,CAAA,EAGhBH,EAAA,CAAA,EAAA4C,EAAApC,EAAAuJ,yBAAA,EAAA,GAAA,EAAA,EAkDA/J,EAAA,EAAA4C,EAAApC,EAAAwJ,gBAAA,EAAA,GAAA,EAAA,EA4CgBhK,EAAA,CAAA,EAAAE,EAAAC,EAAA,GAAA,GAAA,yCAAA,CAAA,EAEbH,EAAA,CAAA,EAAA2B,EAAA,GAAAxB,EAAA,GAAA,GAAA,qDAAA,EAAA,GAAA,EAIHH,EAAA,CAAA,EAAA4C,EAAApC,EAAA8I,WAAA,EAAA,GAAA,EAAA,EAgB+BtJ,EAAA,CAAA,EAAAC,EAAA,WAAA,CAAAO,EAAAyJ,SAAA,CAAA,6BAM/CnK,EAAA,EAAA,aAAA,EAAA,EAAyB,EAAA,QAAA,EACfD,EAAA,CAAA,mBAA8DE,EAAA,EACtED,EAAA,EAAA,qBAAA,EACED,EAAA,CAAA,EACFE,EAAA,EAAsB,6BAHdC,EAAA,CAAA,EAAAE,EAAAC,EAAA,EAAA,EAAA,4CAAA,CAAA,EAENH,EAAA,CAAA,EAAA2B,EAAA,IAAAuI,EAAA,GAAA,GD7XN,sBAqGMC,GACAC,GACAC,GAGAC,GACAC,GACAC,GACAC,GAGAC,GACAC,GAwCOC,GAzJbC,GAAAC,EAAA,KAAAC,IACAC,IAYAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KAcAC,KACAC,KACAC,KAYAC,KACAC,KACAC,KAKAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAOAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAtC,KACAuC,KACAC,KACAC,KAEA5B,KACA6B,KAKA7B,KACA8B,KACAC,wRAEMzD,GAAgC,IAChCC,GAAoB,SACpBC,GAAc,kCAGdC,GAA+B,qBAC/BC,GAAkC,gCAClCC,GAAkC,yBAClCC,GAA8B,iBAG9BC,GAA8B,aAC9BC,GAAkC,gBAwC3BC,IAAwB,IAAA,CAA/B,MAAOA,CAAwB,CAKnC,OAAOiD,4BAA4BjM,EAAgCkM,EAA8B,CAC/F,IAAMC,EACJD,GAAeE,IACZC,GACC,IAAIC,GAAY,CACd7M,MAAO4M,EAAahM,WAAWkM,eAAeC,KAAMC,GAAiBA,EAAaC,KAAO1M,GAAW0M,EAAE,EACtGC,SAAUN,EAAahM,WAAWuM,oBAAsBP,EAAapL,UACtE,CAAC,GACD,CAAA,EAEP,OAAO,IAAI4L,GAAU,CACnBC,YAAa,IAAIC,GAAUZ,CAAS,EACrC,CACH,CAEA,OAAOa,0BACLC,EACAjN,EACAkN,EAA+B,CAE/B,IAAIC,EAAqB,GACrBF,EAAiBG,yBAAwB,EAC3CD,EACEnN,GAAWqN,mBAAmBb,KAAMc,GAASA,EAAKA,MAAMZ,KAAOhE,EAA4B,GAAK,IAElGyE,EAAqBnN,GAAWuN,QAAQC,aAAaL,oBAAsB,GAC3ED,EAAyBlN,GAAWuN,QAAQC,aAAaN,wBAA0B,IAGrF,IAAIO,EAAwB,GACxBC,EAAa,GACbC,EAAgB,GACpB,GAAIV,EAAiBW,2BAA0B,EAAI,CACjD,IAAMC,EAAc7N,GAAWqN,mBAAmBS,KAC/CR,GAASA,EAAKA,MAAMZ,KAAO/D,EAA+B,EAG7D8E,EAAwBM,EAAQF,EAChCH,EACEG,GAAaG,eAAeF,KAAMP,GAAWA,EAAOU,MAAQnF,EAA2B,GAAGrJ,OAAS,GACrGkO,EACEE,GAAaG,eAAeF,KAAMP,GAAWA,EAAOU,MAAQlF,EAA+B,GAAGtJ,OAAS,EAC3G,CAEA,OAAO,IAAIoN,GAAU,CACnBvM,KAAM,IAAIgM,GAAYtM,GAAWM,MAAQ,EAAE,EAC3C4N,mBAAoB,IAAI5B,GAAYtM,GAAWmO,WAAa,EAAE,EAC9DC,kBAAmB,IAAI9B,GAAYa,GAAsB,EAAK,EAC9DkB,qBAAsB,IAAI/B,GAAYmB,GAAyB,EAAK,EACpEa,uBAAwB,IAAIhC,GAAY,CACtCoB,WAAYA,GAAc,GAC1BC,cAAeA,GAAiB,GACjC,EACDY,iBAAkB,IAAIjC,GAAYY,GAA0B,GAAI,CAC9DsB,GAAWC,UAAUlG,EAA6B,CAAC,CACpD,EACDmG,YAAa,IAAIpC,GAAYtM,GAAW0M,IAAM,EAAE,EAChDzM,UAAW,IAAIqM,GAAYtM,GAAWC,SAAS,EAChD,CACH,CAEA,OAAO0O,4BAA4B3O,EAA8B,CAE/D,IAAI4O,EAAQ5O,GAAWuN,QAAQsB,aAAaC,aAAaC,sBAAsBH,OAAS,QACpFI,EAASC,GAAgBL,CAAK,EAGlC,OAFoB5O,GAAWuN,QAAQsB,aAAaK,aAAeC,GAAY3K,iCAE3D2K,GAAYC,wBAC9BR,EAAQ5O,GAAWuN,QAAQsB,aAAaC,aAAaO,gBAAgBT,OAAS,kBAC9EI,EAASC,GAAgBL,CAAK,GAGzB,IAAI/B,GAAU,CACnBmC,OAAQ,IAAI1C,GAAY0C,GAAQ1O,MAAQ,0CAA0C,EAClFsO,MAAO,IAAItC,GAAYsC,CAAK,EAC5BU,SAAU,IAAIzC,GAAU,CACtB0C,uBAAwB,IAAIjD,GAC1BtM,GAAWuN,QAAQsB,aAAaC,aAAaC,sBAAsBS,eAAeC,WAAa,GAAI,EAErGC,2BAA4B,IAAIpD,GAC9BtM,GAAWuN,QAAQsB,aAAaC,aAAaC,sBAAsBS,eAAeG,eAAiB,GAAG,EAExGC,6BAA8B,IAAItD,GAChCtM,GAAWuN,QAAQsB,aAAaC,aAAaC,sBAAsBS,eAAeK,iBAAmB,GAAG,EAE3G,EACF,CACH,CAEA,OAAOC,0BAA0BpB,EAAoB,CACnD,IAAMqB,EAAMC,EAAOC,EAAkB,EAAEC,WAAWxB,CAAW,EAC7D,OAAO,IAAI7B,GAAU,CACnBsD,iBAAkB,IAAI7D,GAA+B,CAAA,CAAE,EAEvD5F,eAAgB,IAAI4F,GAAoByD,CAAG,EAC5C,CACH,CA6KAK,YAAoBC,EAAkB,CAAlB,KAAAA,SAAAA,EAjRZ,KAAAC,WAAaN,EAAOO,EAAU,EAEtC,KAAA1I,iBAAmBA,GAoGF,KAAA2I,aAAeR,EAAOS,EAAmB,EACzC,KAAAC,gBAAkBV,EAAOW,EAAe,EACxC,KAAAC,iBAAmBZ,EAAOa,EAAkB,EAC5C,KAAA5D,iBAAmB+C,EAAOC,EAAkB,EAC5C,KAAAa,YAAcd,EAAOe,EAAa,EAClC,KAAAC,mBAAqBhB,EAAOiB,EAAkB,EAC9C,KAAAC,qBAAuBlB,EAAOmB,EAAoB,EAClD,KAAAC,OAASpB,EAAOqB,EAAM,EACtB,KAAAC,MAAQtB,EAAOuB,EAAc,EAC7B,KAAAC,aAAexB,EAAOyB,EAAmB,EACzC,KAAAC,OAAS1B,EAAO2B,EAAS,EACzB,KAAAC,SAAW5B,EAAO6B,EAAmB,EACrC,KAAAC,gBAAkB9B,EAAO+B,EAAsB,EAC/C,KAAAC,WAAahC,EAAOiC,EAAgB,EACpC,KAAAC,uBAAyBlC,EAAOmC,EAAsB,EACtD,KAAAC,iBAAmBpC,EAAOqC,EAAgB,EACxC,KAAAC,0BAA4BA,GACrC,KAAAtO,cAAiC,CAAA,EACxB,KAAAO,aAAe4K,GACxB,KAAAhL,gBAAkBoO,EAAkB,CAAA,CAAE,EAC/B,KAAAC,kBAAoBxC,EAAOyC,EAA0B,EACnD,KAAAxO,YAAcsO,EAA6B,IAAI,EACjD,KAAAG,WAAuB,CAAA,EAC9B,KAAAC,aAAeJ,EAAO,IAAIK,MAAM,EAAE,CAAC,EACnC,KAAAxO,wBAA0BmO,EAAO,EAAK,EAG/B,KAAAM,4BAA8BC,EAAc,CAAC,KAAKd,WAAY,KAAKF,eAAe,CAAC,EAAEiB,KACpGC,GAAqB,CAACC,EAAGC,IAAMD,EAAE,CAAC,IAAMC,EAAE,CAAC,GAAKD,EAAE,CAAC,IAAMC,EAAE,CAAC,CAAC,CAAC,EAG7C,KAAAC,UAAYZ,EAAO,EAAK,EACxB,KAAA1T,MAAQ0T,EAAsB,IAAI,EAElC,KAAAzM,4BAA8ByC,GAEhC,KAAA6K,mBAAqBb,EAAO,EAAK,EACjC,KAAAc,gBAAkBd,EAAiC,IAAI,EACrD,KAAAlK,SAAWiL,EAAS,IAAM,CAAC,KAAK5L,WAAU,GAAM,KAAK0L,mBAAkB,CAAE,EAElF,KAAA7T,cAAgByJ,EAAyBgE,0BAA0B,KAAKC,gBAAgB,EACxF,KAAAzG,cAAgBwC,EAAyB8G,0BAAyB,EAClE,KAAA7H,eAAiBe,EAAyBiD,4BAA2B,EACrE,KAAAlI,gBAAkBiF,EAAyB2F,4BAA2B,EAGhE,KAAAvG,gBAAkBkL,EAAS,IAClC,KAAKrG,iBAAiBsG,2BAA0B,GAAM,KAAKtG,iBAAiBG,yBAAwB,CAC5G,EAEgB,KAAAsB,YAAc,KAAK4C,MAAMkC,SAASC,OAAO,YAEjD,KAAAC,aAAeZ,EAAc,CAAC,KAAKD,4BAA6B,KAAKL,iBAAiB,CAAC,EAAEO,KAChGY,EAAU,CAAC,CAACC,EAA4BC,CAAgB,IAAK,CAC3D,IAAMC,EAAYF,EAA2B,CAAC,EACxCG,EAAiBH,EAA2B,CAAC,EACnD,OAAO,KAAK3G,iBAAiB+G,aAAaF,EAAWC,EAAgB,KAAKrF,WAAW,EAAEqE,KACrF3G,EAAKpM,GACI,KAAKiN,iBAAiBgH,gCAAgCjU,EAAW6T,CAAgB,CACzF,EACDK,GAAYC,GAENA,EAAIC,SAAW,IACV,KAAKnH,iBAAiBoH,oBAAoBP,EAAWC,EAAgB,KAAKrF,WAAW,EAAEqE,KAC5F3G,EAAKpM,GAAcA,CAAS,EAC5BkU,GAAYC,IACV,KAAKtV,MAAMyV,IAAIH,EAAII,OAAO,EACnBC,GACR,CAAC,GAGJ,KAAK3V,MAAMyV,IAAIH,EAAII,OAAO,EACnBC,GAEV,CAAC,CAEN,CAAC,EACDC,GAAY,CAAEC,SAAU,GAAMC,WAAY,CAAC,CAAE,CAAC,EAEvC,KAAAhV,YAAciV,GAAS,KAAKlB,aAAc,CACjDmB,aAAc,KACf,EAEQ,KAAA7U,UAAYsT,EAAS,IAAM,KAAK3T,YAAW,GAAIK,SAAS,EAExD,KAAAqG,MAAQiN,EAAS,KAChB,KAAKtT,UAAS,GAAIqN,mBAAqB,CAAA,GAC5CjB,IAAK0I,GAAqBA,EAAiBxH,IAAI,EAC/CyH,OAAQzH,GAAS,CAACA,GAAMrN,WAAW+U,eAAe,CACtD,EAEQ,KAAAC,wBAA0B,KAAKvB,aAAaX,KACnDY,EAAWhU,GAAe,CACxB,IAAMuV,EAAqCvV,GAAaK,WAAWqN,mBAAmBS,KACnFR,GAASA,EAAKA,MAAMZ,KAAO,KAAKyI,kCAAkCxV,GAAaK,WAAW0M,IAAM,EAAE,CAAC,GACnGY,MAAM8H,gBAAgB,CAAC,EAC1B,OAAIF,EACK,KAAKjI,iBACToI,uBACCH,EAAmCxI,IAAM,GACzCwI,EAAmCjV,WAAa,CAAA,EAChDiV,EAAmCI,iBAAmB,EAAE,EAEzDvC,KAAK3G,EAAKmJ,GAAiBA,GAAgB,EAAE,CAAC,EAE5CC,EAAG,EAAE,CACd,CAAC,CAAC,EAGK,KAAAC,wBAA0Bb,GAAS,KAAKK,wBAAyB,CACxEJ,aAAc,GACf,EAEQ,KAAAvS,aAAe,KAAKuQ,4BAA4BE,KACvDY,EAAU,CAAC,CAACG,EAAWC,CAAc,IACnC,KAAK9G,iBAAiByI,4BAA4B5B,EAAWC,EAAgB,KAAKrF,WAAW,CAAC,EAEhGwF,GAAW,KACT,KAAKxD,gBAAgBiF,eAAe,4CAA4C,EACzEH,EAAG,CAAA,CAAoB,EAC/B,CAAC,EAEK,KAAAI,aAAehB,GAAS,KAAKtS,YAAY,EAE/B,KAAA4F,kBAAoBoL,EAAS,IACvC,KAAKtT,UAAS,GAAM,KAAKA,UAAS,GAAI6V,OAASC,GAAcC,iCACrE,EAEkB,KAAA5N,yBAA2BmL,EAAS,IAC9C,KAAKtT,UAAS,GAAM,KAAKA,UAAS,GAAI6V,OAASC,GAAcC,iCACrE,EAEkB,KAAApQ,yBAA2B,KAAKsH,iBAAiBW,2BAEjD,KAAAoI,eAAiB1C,EAAS,IACpC,KAAKtT,UAAS,GAAM,KAAKA,UAAS,GAAI6V,OAASC,GAAcC,iCACrE,EAEkB,KAAA9T,mBAAqB,KAAKK,aAAayQ,KACxD3G,EAAKF,GACHA,EACG6I,OAAQ1I,GAAiBA,EAAahM,WAAW4V,iBAAmBC,EAA8B,EAClG9J,IAAKC,GAAiBA,EAAahM,WAAWqM,EAAE,CAAC,EAEtDiH,EAAWwC,GAA8B,CACvC,IAAMC,EAAYD,EAA2BpB,OAAQrI,GAAO,CAACA,EAAG2J,SAAS,SAAS,CAAC,EACnF,OAAID,GAAW5T,OAAS,EACf,KAAK0P,uBAAuBoE,eAAe,CAAEF,UAAWA,CAAS,CAAE,EAAErD,KAC1E3G,EAAKmK,GAAaA,EAASC,OAAO,EAClCtC,GAAW,KACT,KAAKxD,gBAAgBiF,eAAe,0DAA0D,EACvFH,EAAG,CAAA,CAAE,EACb,CAAC,EAGCA,EAAG,CAAA,CAAE,CACd,CAAC,EACDf,GAAY,CAAEC,SAAU,GAAMC,WAAY,CAAC,CAAE,CAAC,EAG/B,KAAA8B,UAAY3D,EAAc,CAAC,KAAKxQ,aAAc,KAAKL,mBAAoB,KAAKyR,YAAY,CAAC,EAAEX,KAC1G3G,EAAI,IAAM,EAAK,EACfsK,GAAU,EAAI,CAAC,EAEA,KAAAC,UAAY/B,GAAS,KAAK6B,UAAW,CACpDG,YAAa,GACd,EACkB,KAAAlP,WAAa4L,EAAS,IAAM,KAAKqD,UAAS,GAAM,KAAKxD,UAAS,CAAE,EAEhE,KAAA9N,oBAAsB,KAAK6L,qBAAqB2F,sBAAqB,EAgIhF,KAAAC,kBAA0E,KA3HhFC,GAAO,IAAM,KAAKvF,aAAawF,mBAAmB,KAAK5D,mBAAkB,CAAE,CAAC,EAE5E2D,GAAO,IAAK,CACV,IAAM/W,EAAY,KAAKA,UAAS,EAC1BkN,EAAyB,KAAKuI,wBAAuB,EACvDzV,GACF,KAAKwG,cAAchH,IAAI,gBAAgB,GAAGyX,SAAS,KAAKhK,iBAAiBiD,WAAWlQ,EAAU0M,EAAE,CAAC,EAEnG,IAAMR,EAAgB,KAAK0J,aAAY,EACnC5V,GAAakM,IAEf,KAAK3M,cAAgB2X,GAEnB,KAAKtF,SAAU,IACf5I,EAAyBgE,0BAA0B,KAAKC,iBAAkBjN,EAAWkN,CAAsB,CAAC,EAE9G,KAAKjF,eAAiBiP,GAEpB,KAAKtF,SAAU,IAAM5I,EAAyBiD,4BAA4BjM,EAAWkM,CAAa,CAAC,EAErG,KAAKnI,gBAAkBmT,GAErB,KAAKtF,SAAU,IAAM5I,EAAyB2F,4BAA4B3O,CAAS,CAAC,EAGtF,KAAKmX,uBAAsB,EAE3B,KAAKlT,YAAYqQ,IACf,KAAKtQ,cAAc8J,KAAMsJ,GAAMA,EAAE9W,OAAS,KAAKyD,gBAAgB0C,SAASuI,OAAOvP,KAAK,GAAK,IAAI,EAG/F,KAAKkT,aAAa2B,IAAI,IAAI1B,MAAMyE,GAAoB,KAAKtT,gBAAgB0C,SAASmI,MAAMnP,OAAS,EAAE,GAAK,EAAE,CAAC,EAE3G,KAAK0E,gBAAgBmQ,IAAIgD,GAAgB,KAAKvT,gBAAgB0C,SAASuI,OAAOvP,OAAS,EAAE,CAAC,GAE5F,KAAKuS,WACFe,KACCY,EAAWG,GACT,KAAK9C,mBAAmBuG,eAAezD,EAAW,GAAI,CAACjL,EAA2B,CAAC,EAAEkK,KACnF3G,EAAKoL,GAASA,EAAK3O,EAA2B,CAAC,EAC/CqL,GAAW,IAAMsB,EAAG,EAAK,CAAC,CAAC,CAC5B,EAEHiC,GAAK,CAAC,CAAC,EAERC,UAAWC,GAAmB,CAC7B,KAAK3T,cAAgB4T,GAAiBD,CAAe,CACvD,CAAC,CACL,CAAC,EAED,KAAKrG,MAAMuG,YAAYH,UAAWjE,GAAU,CAC1C,KAAKqE,YAAcrE,EAAO,SAC5B,CAAC,CACH,CAEQ0D,wBAAsB,CAC5B,KAAK5X,cAAcwY,aAAahF,KAAKiF,GAAmB,KAAK1H,UAAU,CAAC,EAAEoH,UAAU,IAAK,CACvF,KAAKO,YAAW,EAChB,KAAKC,uBAAsB,CAC7B,CAAC,EAED,KAAKjQ,eAAe8P,aAAahF,KAAKiF,GAAmB,KAAK1H,UAAU,CAAC,EAAEoH,UAAU,IAAK,CACxF,KAAKO,YAAW,CAClB,CAAC,EAED,KAAKzR,cAAcuR,aAAahF,KAAKiF,GAAmB,KAAK1H,UAAU,CAAC,EAAEoH,UAAU,IAAK,CACvF,KAAKO,YAAW,CAClB,CAAC,EAED,KAAKlU,gBAAgBgU,aAAahF,KAAKiF,GAAmB,KAAK1H,UAAU,CAAC,EAAEoH,UAAU,IAAK,CACzF,KAAKO,YAAW,CAClB,CAAC,EAED,KAAKlU,gBAAgB0C,SAASuI,OAAO+I,aAClChF,KAAKiF,GAAmB,KAAK1H,UAAU,CAAC,EACxCoH,UAAWS,GAAc,CACxB,GAAI,CAACA,EAAY,CACf,KAAKhU,gBAAgBmQ,IAAI,CAAA,CAAE,EAC3B,MACF,CAEA,KAAKnQ,gBAAgBmQ,IAAIgD,GAAgBa,CAAU,CAAC,EACpD,KAAKlU,YAAYqQ,IAAI,KAAKtQ,cAAc8J,KAAMsJ,GAAMA,EAAE9W,OAAS6X,CAAU,GAAK,IAAI,EAE9E,KAAKhU,gBAAe,EAAG3B,OAAS,GAClC,KAAKuB,gBAAgB0C,SAASmI,MAAMqI,SAAS,KAAK9S,gBAAe,EAAG,CAAC,EAAE1E,KAAK,CAEhF,CAAC,EAEH,KAAKsE,gBAAgB0C,SAASmI,MAAMmJ,aAAahF,KAAKiF,GAAmB,KAAK1H,UAAU,CAAC,EAAEoH,UAAW9I,GAAS,CAC7G,KAAKwJ,mBAAkB,EACvB,KAAKzF,aAAa2B,IAAI,IAAI1B,MAAMyE,GAAoBzI,GAAS,EAAE,GAAK,EAAE,CAAC,CACzE,CAAC,CACH,CAEUjL,eAAa,CACrB,GAAI,KAAKS,wBAAuB,EAAI,CAClC,KAAKgU,mBAAkB,EACvB,MACF,CAEA,KAAKhU,wBAAwBkQ,IAAI,EAAI,EAErC,IAAM+D,EAAcA,IAAK,CACvB,KAAKjU,wBAAwBkQ,IAAI,EAAK,EACtC,KAAK3B,aAAY,EAAG2F,oBAAoB,QAASD,CAAW,CAC9D,EAEA,KAAK1F,aAAY,GACb4F,KAAI,EACLC,KAAK,IAAK,CACT,KAAK1B,kBAAoBuB,EACzB,KAAK1F,aAAY,EAAG8F,iBAAiB,QAASJ,CAAW,CAC3D,CAAC,CACL,CAEQD,oBAAkB,CACxB,KAAKzF,aAAY,EAAG+F,MAAK,EACzB,KAAK/F,aAAY,EAAGgG,YAAc,EAClC,KAAKvU,wBAAwBkQ,IAAI,EAAK,EACtC,KAAKsE,2BAA0B,CACjC,CAIQA,4BAA0B,CAC5B,KAAK9B,oBACP,KAAKnE,aAAY,EAAG2F,oBAAoB,QAAS,KAAKxB,iBAAiB,EACvE,KAAKA,kBAAoB,KAE7B,CAEQ+B,6BAA2B,CACjC,IAAMC,EAAiB,KAAKtS,cAAchH,IAAI,kBAAkB,GAAGC,MACnE,GAAI,KAAK4T,gBAAe,GAAI7Q,SAAWsW,GAAgBtW,OACrD,MAAO,GAET,QAAWuW,KAAU,KAAK1F,gBAAe,GAAM,CAAA,EAC7C,GAAI,EAAEyF,GAAkB,CAAA,GAAItM,KAAMwM,GAAMA,EAAEtM,KAAOqM,EAAOrM,EAAE,EACxD,MAAO,GAGX,MAAO,EACT,CAEUpL,kBAAkBjB,EAAiCmW,EAAiB,CAC5E,GACEnW,EAAWJ,WAAWgZ,uBACtB5Y,EAAW4V,iBAAmBiD,GAAeC,eAC7C9Y,EAAWC,OAAS8Y,IACpB,CAAC/Y,EAAWkM,eAAe/J,OAE3B,OAAO,KAAK4P,iBAAiBiH,QAAQ,oDAAoD,EAG3F,IAAMC,EAAS9C,GAAS1I,KAAMwL,GAAWA,EAAOC,WAAalZ,EAAWqM,EAAE,EAC1E,OAAO4M,EAASA,EAAOhZ,MAAQ,GAAKD,EAAWC,MAAQ,EACzD,CAEUiG,sBAAsBiT,EAAiC,CAC3D,KAAKnG,gBAAe,IAAO,MAAQmG,IAAY,MACjD,KAAKnG,gBAAgBiB,IAAImF,KAAKC,MAAMD,KAAKE,UAAUH,CAAO,CAAC,CAAC,EAE9D,KAAKhT,cAAchH,IAAI,kBAAkB,GAAGyX,SAASuC,CAAO,CAC9D,CAEgBpT,SAASwT,EAAc,QAAAC,GAAA,sBACrC,IAAM9F,EAAiB,MAAM+F,GAAe,KAAKhI,eAAe,EAC1DiI,EAAuB,KAAKjJ,YAAYkJ,0BAA0BjG,EAAgB6F,CAAM,EAE9F,KAAKxI,OAAO6I,SAAS,CAACF,CAAoB,EAAG,CAAEG,WAAY,KAAK5I,KAAK,CAAE,CACzE,GAGA6I,eAAeC,EAAwB,CACjC,KAAKhH,mBAAkB,IACzBgH,EAAMxZ,eAAc,EACpBwZ,EAAMC,gBAAe,EACrBD,EAAME,YAAc,GAExB,CAEgB9S,QAAM,QAAAqS,GAAA,sBAGpB,GAFA,KAAKta,cAAcgb,iBAAgB,EAGjC,KAAKhb,cAAcib,SACnB,KAAKhU,cAAcgU,SAClB,CAAC,KAAKjb,cAAckb,OACnB,CAAC,KAAKxS,eAAewS,OACrB,CAAC,KAAK5B,4BAA2B,GACjC,CAAC,KAAK9U,gBAAgB0W,MAExB,OAGF,IAAIC,EACAC,GACA,KAAKpb,cAAckb,OAAS,KAAK5B,4BAA2B,GAAM,KAAK9U,gBAAgB0W,SACzFC,EAAmB,KAAKE,gBAAe,GAErC,KAAK3S,eAAewS,QACtBE,EAAoB,KAAKE,kBAAiB,GAG5C,KAAK1H,UAAUmB,IAAI,EAAI,EACvB,GAAI,CACF,MAAMwG,QAAQC,IAAI,CAACL,EAAkBC,CAAiB,CAAC,EACvD,KAAKK,YAAW,EAChB,KAAKtK,gBAAgBuK,iBAAiB,yCAAyC,CACjF,MAAY,CACV,KAAKvK,gBAAgBiF,eAAe,8CAA8C,CACpF,QAAC,CACC,KAAKxC,UAAUmB,IAAI,EAAK,CAC1B,CACF,GAEQ2D,aAAW,CACjB,IAAMiD,EACJ,KAAK3b,cAAckb,OACnB,KAAKjU,cAAciU,OACnB,KAAK5B,4BAA2B,GAChC,KAAK5Q,eAAewS,OACpB,KAAK1W,gBAAgB0W,MACvB,KAAKrH,mBAAmBkB,IAAI4G,CAAU,CACxC,CAEQF,aAAW,CACjB,KAAKzb,cAAc4b,eAAc,EACjC,KAAK3U,cAAc2U,eAAc,EACjC,KAAKlT,eAAekT,eAAc,EAClC,KAAKpX,gBAAgBoX,eAAc,EACnC,KAAK9H,gBAAgBiB,IAAImF,KAAKC,MAAMD,KAAKE,UAAU,KAAKnT,cAAchH,IAAI,kBAAkB,GAAGC,KAAK,CAAC,CAAC,EACtG,KAAK2T,mBAAmBkB,IAAI,EAAK,CACnC,CAEQ4D,wBAAsB,CAC5B,IAAM7J,EAAuB,KAAK9O,cAAcC,IAAI,sBAAsB,GAAGC,MACvE6O,EAAyB,KAAK/O,cAAcC,IAAI,wBAAwB,EAC1E6O,EACFC,GAAwB8M,cAAc,CACnCC,GAAa,CAACA,GAAS5b,OAAOiO,YAAc,CAAC2N,GAAS5b,OAAOkO,cAAgB,CAAE2N,aAAc,EAAI,EAAK,IAAK,CAC7G,EAEDhN,GAAwBiN,gBAAe,EAEzCjN,GAAwBkN,uBAAuB,CAAEC,UAAW,EAAK,CAAE,CACrE,CAEcb,iBAAe,QAAAf,GAAA,sBAC3B,IAAM7Z,EAAY,KAAK0b,YAAW,EAElC,GAAI,CACF,MAAM,KAAKC,YAAY3b,CAAS,CAClC,OAASmU,EAAK,CACZ,MAAM,IAAIyH,MAAM,mCAAoC,CAAEC,MAAO1H,CAAG,CAAE,CACpE,CAEA,IAAMzF,EAAc,KAAKA,YACnBoN,EAAmB,MAAMhC,GAC7B,KAAK7M,iBAAiB8O,oCAAoCrN,CAAW,CAAC,EAElEsN,EAAY,KAAKC,kBAAiB,EACxC,MAAM,KAAKrL,iBAAiBsL,sBAC1B,KAAKjP,iBAAiBiD,WAAWxB,CAAW,EAC5C1O,GAAWM,MAAQ,GACnBwb,EACAK,GACAH,CAAS,EAEX,MAAMlC,GACJ,KAAKtJ,aACF4L,gBAAgB,CACfpc,UAAWA,EACZ,EACA+S,KAAKmB,GAAYC,GAAQkI,GAAW,IAAMlI,CAAG,CAAC,CAAC,CAAC,CAEvD,GAEcwH,YAAY3b,EAA6B,QAAA6Z,GAAA,sBAEhD7Z,EAAUqN,oBACbrN,EAAUqN,kBAAoB,CAAA,GAGhC,IAAM2H,EAAkB,IAAIsH,GAAU,CACpCtH,gBAAiB,CAAA,EAClB,EAED,OAAQhV,EAAU6V,KAAI,CACpB,KAAKC,GAAcyG,qBASjB,GARI,KAAKhd,cAAcC,IAAI,mBAAmB,GAAGC,MAC/C,KAAK+c,WAAW9T,GAA8BsM,EAAiBhV,EAAUqN,iBAAiB,EAE1FrN,EAAUqN,kBAAoBrN,EAAUqN,mBAAmB0H,OACxDzH,GAASA,EAAKA,MAAMZ,KAAOhE,EAA4B,EAIxD,KAAKnJ,cAAcC,IAAI,sBAAsB,GAAGC,MAAO,CACzD,IAAMgd,EAAsC,CAC1C,CACExO,IAAKnF,GACLrJ,MAAO,KAAKF,cAAcC,IAAI,wBAAwB,GAAGC,OAAOiO,YAAc,IAEhF,CACEO,IAAKlF,GACLtJ,MAAO,KAAKF,cAAcC,IAAI,wBAAwB,GAAGC,OAAOkO,eAAiB,GAClF,EAEH,KAAK6O,WAAW7T,GAAiCqM,EAAiBhV,EAAUqN,kBAAmBoP,CAAU,CAC3G,MACEzc,EAAUqN,kBAAoBrN,EAAUqN,mBAAmB0H,OACxDzH,GAASA,EAAKA,MAAMZ,KAAO/D,EAA+B,EAG/D,MACF,KAAKmN,GAAcC,kCAEjB,KACJ,CAEA,GAAI,CACF,MAAM,KAAK2G,8BAA8B1c,CAAS,CACpD,OAASmU,EAAK,CACZ,MAAM,IAAIyH,MAAM,wCAAyC,CAAEC,MAAO1H,CAAG,CAAE,CACzE,CACF,GAEQqI,WACNG,EACA1c,EACA2c,EACAH,EAAoC,CAEpC,IAAMI,EAAYD,EAAcE,UAAWxP,GAASA,GAAMA,MAAMZ,KAAOiQ,CAAa,EAChFE,IAAc,GAChBD,EAAcG,KACZ,IAAIC,GAAiB,CACnB1P,KAAM,CACJZ,GAAIiQ,EACJ1c,UAAWA,GAEb+N,cAAeyO,EAChB,CAAC,EAGJG,EAAcC,CAAS,EAAE7O,cAAgByO,CAE7C,CAEcC,8BAA8B1c,EAA6B,QAAA6Z,GAAA,sBACvE,IAAMoD,EAAgCjd,EAAUqN,mBAAmBb,KAChEc,GAASA,EAAKA,MAAMZ,KAAO,KAAKyI,kCAAkCnV,EAAU0M,EAAE,CAAC,EAE5EwQ,EAAkC,KAAK3d,cAAcC,IAAI,kBAAkB,GAAGC,MACpF,GAAIyd,EACF,GAAI,CACF,IAAMC,EAAU,MAAM,KAAKlQ,iBAAiBmQ,6BAC1Cpd,EAAU0M,GACV1M,EAAUC,UACVid,CAA+B,EAG5BD,GACHjd,EAAUqN,mBAAmB0P,KAC3B,IAAIC,GAAiB,CACnB1P,KAAM6P,EACP,CAAC,CAGR,OAAShJ,EAAK,CACZ,MAAM,IAAIyH,MAAM,gDAAiD,CAAEC,MAAO1H,CAAG,CAAE,CACjF,MACS8I,IACTjd,EAAUqN,kBAAoBrN,EAAUqN,mBAAmB0H,OACxDzH,GAASA,EAAKA,MAAMZ,KAAO,KAAKyI,kCAAkCnV,EAAU0M,EAAE,CAAC,EAGtF,GAEQyI,kCAAkCzG,EAAoB,CAC5D,OAAIA,IAAgB5O,QAClBud,QAAQC,KAAK,2BAA2B,EACjC,IAEF,GAAG1U,EAA+B,IAAI8F,CAAW,EAC1D,CAEcmM,mBAAiB,QAAAhB,GAAA,sBAC7B,MAAMC,GACJ,KAAKtJ,aAAa+M,wBAAwB,CACxC9Q,aAAc,CACZC,GAAI,KAAK1M,UAAS,GAAI0M,GACtBzM,UAAW,KAAKD,UAAS,GAAIC,WAE/Bud,kBAAmB,KAAK5H,aAAY,GAChCxJ,IAAI,CAACC,EAAcoR,IAClBpR,GAAchM,WAAWuM,mBAStB,KARA,CACE8Q,cAAe,CACbhR,GAAIL,EAAahM,WAAWqM,GAC5BzM,UAAWoM,EAAahM,WAAWJ,UACnCgW,eAAgB5J,EAAahM,WAAW4V,gBAE1C0H,aAAc,KAAK1V,eAAe2V,YAAW,EAAG9Q,YAAY2Q,CAAK,EAE/D,EAET1I,OAAQ1U,GAAeA,IAAe,IAAI,EAC9C,CAAC,CAEN,GAEQqb,aAAW,CACjB,MAAO,CACLpb,KAAM,KAAKf,cAAcC,IAAI,MAAM,GAAGC,OAAS,GAC/CiN,GAAI,KAAKnN,cAAcC,IAAI,aAAa,GAAGC,OAAS,GACpDQ,UAAW,KAAKV,cAAcC,IAAI,WAAW,GAAGC,OAAU,CAAA,EAC1DoW,KAAMgI,GAA2B,KAAKte,cAAcC,IAAI,aAAa,GAAGC,OAAS,EAAE,EACnF8N,OAAQ,CACNC,YAAa,CACXL,mBAAoB,KAAK5N,cAAcC,IAAI,mBAAmB,GAAGC,OAAS,GAC1EyN,uBAAwB,KAAK3N,cAAcC,IAAI,kBAAkB,GAAGC,OAAS,IAE/EoP,YAAa,KAAK3G,kBAAiB,EAC/B,CACEgH,YAAa,KAAKjL,YAAW,GAAIK,SACjCwK,YAAa,KAAKgP,sBAAqB,GAEzChe,QAENqO,UAAW,KAAK5O,cAAcC,IAAI,oBAAoB,GAAGC,OAAS,GAClE4N,kBAAmB,KAAKrN,UAAS,GAAIqN,kBAEzC,CAEQyQ,uBAAqB,CAC3B,IAAM9O,EAAS,KAAKjL,gBAAgBvE,IAAI,QAAQ,GAAGC,MAC7CmP,EAAQ,KAAK7K,gBAAgBvE,IAAI,OAAO,GAAGC,OAAS,GAG1D,OAFoB,KAAKuE,cAAc8J,KAAMsJ,GAAMA,EAAE9W,OAAS0O,CAAM,GAEnD1K,WAAa6K,GAAYC,sBACjC,CACLC,eAAgB,CACdT,MAAOA,IAKN,CACLG,qBAAsB,CACpBH,MAAOA,EACPY,cAAe,CACbC,UAAW,KAAK1L,gBAAgBvE,IAAI,UAAU,GAAGA,IAAI,wBAAwB,GAAGC,OAAS,IACzFkQ,cAAe,KAAK5L,gBAAgBvE,IAAI,UAAU,GAAGA,IAAI,4BAA4B,GAAGC,OAAS,IACjGoQ,gBAAiB,KAAK9L,gBAAgBvE,IAAI,UAAU,GAAGA,IAAI,8BAA8B,GAAGC,OAAS,MAI7G,CAEQwc,mBAAiB,CACvB,OAAO,KAAKzV,cAAchH,IAAI,kBAAkB,GAAGC,OAAS,CAAA,CAC9D,CAEAgG,6BAA2B,CACzB,KAAKiM,OAAOqM,KAAKC,GAAkC,CACjDC,MAAO,QACR,CACH,CAEAjY,kCAAgC,CAC9B,KAAK0L,OAAOqM,KAAKG,GAAuC,CACtDD,MAAO,QACR,CACH,CAEA5e,eAAe8e,EAAgB,CAC7B,KAAK5e,cAAcC,IAAI,oBAAoB,GAAG4e,YAAW,EACzD,KAAK7e,cAAcC,IAAI,oBAAoB,GAAGyX,SAASkH,CAAQ,CACjE,CAEUxd,cAAc0L,EAA0B,CAC5CA,GACF,KAAKgS,8BAA8BhS,CAAY,IAAG,CAEtD,CAEUgS,8BAA8BhS,EAA0B,CAChE,GAAI,CAACA,GAAc9L,KAAO,CAAC8L,GAAc9L,IAAImB,QAAQC,WACnD,OAGF,IAAMD,EAAS2K,GAAc9L,KAAKmB,OAElC,GAAIA,GAAQ4c,IAEV,OACEjS,EAAahM,WAAWJ,WAAWse,kBACnC7c,EAAO4c,IAAIjI,SAAS,OAAO,GAC3B,CAAC3U,EAAO4c,IAAIjI,SAAS,YAAY,EAE1B,IAAM,KAAKjF,OAAO6I,SAAS,CAAC,GAAI,CAAEuE,QAAS,CAAEC,MAAO/c,EAAO4c,GAAG,CAAE,CAAE,CAAC,EAGxE5c,EAAOgd,QAAU,CAAChd,EAAOid,cACpB,IAAMC,OAAOb,KAAKrc,EAAO4c,IAAK,QAAQ,EAGxC,IAAM,KAAKlN,OAAO6I,SAAS,CAACvY,EAAO4c,GAAG,EAAG5c,EAAOid,cAAgB,CAAEzE,WAAY,KAAK5I,KAAK,EAAKxR,MAAS,EAG/G,GAAI4B,GAAQmd,aACV,MAAO,IAAM,KAAKzN,OAAO6I,SAASvY,EAAOmd,YAAY,EAGvD,GAAInd,GAAQod,SACV,OAAOpd,EAAOod,QAGlB,CAEUC,SAAO,CACf,OAAOvW,EACT,CAEgBf,MAAI,QAAAoS,GAAA,sBAClB,GAAI,CACF,IAAM9F,EAAiB,MAAM+F,GAAe,KAAKhI,gBAAgBiB,KAAK0E,GAAK,CAAC,CAAC,CAAC,EAE1E1D,GAAkB,KAAK+D,aAAazB,SAAStC,CAAc,EAC7D,MAAM,KAAK3C,OAAO6I,SAAS,CAAC,KAAKnC,WAAW,CAAC,EAE7C,MAAM,KAAK1G,OAAO6I,SAAS,CAACzR,EAAiB,EAAG,CAAE0R,WAAY,KAAK5I,KAAK,CAAE,CAE9E,OAASzS,EAAO,CACdwe,QAAQxe,MAAM,yBAA0BA,CAAK,CAC/C,CACF,GAEUsG,cAAY,CACpB,KAAK6V,YAAW,EAChB,KAAK5J,OAAO6I,SAAS,CAACxR,EAAW,EAAG,CAAEyR,WAAY,KAAK5I,KAAK,CAAE,CAChE,CAEUlM,sBAAsB6N,EAAgBC,EAAc,CAC5D,OAAOD,EAAEvF,aAAewF,EAAExF,YAAcuF,EAAEtF,gBAAkBuF,EAAEvF,aAChE,CAEAqR,aAAW,CACT,KAAK5G,mBAAkB,CACzB,iDA7zBWpP,GAAwBiW,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAxBlW,EAAwBmW,UAAA,CAAA,CAAA,mBAAA,CAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAxBtgB,EAAA,eAAA,SAAAC,EAAA,CAAA,OAAAsgB,EAAAnF,eAAAnb,CAAA,CAAsB,EAAA,GAAAugB,EAAA,suECzJnCrhB,EAAA,EAAA,YAAA,CAAA,EAAsC,EAAA,mBAAA,EACjB,EAAA,eAAA,EACF,EAAA,uBAAA,CAAA,EACSa,EAAA,QAAA,UAAA,CAAAygB,OAAAvgB,EAAAwgB,CAAA,EAAArgB,EAASkgB,EAAA7X,KAAA,CAAM,CAAA,CAAA,EAAEtJ,EAAA,EAAuB,EAGhED,EAAA,EAAA,iBAAA,EACGD,EAAA,CAAA,mBACD4C,EAAA,EAAA6e,GAAA,EAAA,CAAA,EAIFvhB,EAAA,EAAkB,EAEpBD,EAAA,EAAA,oBAAA,CAAA,EACE2C,EAAA,EAAA8e,GAAA,EAAA,EAAA,eAAA,CAAA,EAAiB,GAAAC,GAAA,GAAA,EAAA,EAuWnBzhB,EAAA,EAAoB,EAGtB0C,EAAA,GAAAgf,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,gBAzXWzhB,EAAA,YAAAihB,EAAA5X,WAAA,CAAA,EAOJtJ,EAAA,CAAA,EAAA2B,EAAA,GAAAG,GAAA,EAAA,EAAA,8BAAAxB,GAAA,EAAAqhB,IAAAC,EAAAV,EAAA3f,YAAA,IAAA,MAAAqgB,EAAAhgB,WAAA,KAAA,KAAAggB,EAAAhgB,UAAAM,IAAA,CAAA,EAAA,GAAA,EACDlC,EAAA,CAAA,EAAA4C,EAAAse,EAAAtJ,eAAA,EAAA,EAAA,EAAA,EAOF5X,EAAA,CAAA,EAAA4C,EAAAse,EAAAzgB,MAAA,EAAA,EAAA,EAAA,kBDuGAohB,EAAYC,GAAAC,GAAAC,GACZC,GAAcC,GAAAC,GACdC,GAAaC,GAAAC,GAAAC,GAAAC,GAAAC,GACbC,GAAeC,GAAAC,GACfC,GAAeC,GACfC,GAAeC,GAAAC,GACfC,GAAkBC,GAAAC,GAClBC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,GACAC,GAAeC,GACfC,GAAqBC,GAAAC,GAAAC,GAAAC,GAAAC,GACrBC,GAA0BC,GAC1BC,GACAC,GAAqBC,EACrBC,GAAiBC,GACjBC,GACAC,GAAaC,GACbC,GACAC,GACAC,GACAC,GACAC,GAAiBC,GACjBC,GACAC,GAAmBC,GACnBC,GACAC,GAAgBC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAChBC,GAAiBC,GAAAC,GACjBC,GAAsBC,GAAAC,GAAAC,GACtBC,GACAC,GACAC,EAAkB,EAAAC,OAAA,CAAA;sHAAA,CAAA,CAAA,CAAA,SAKThc,CAAwB,GAAA,IEzJrC,IAEaic,GAWAC,GAbbC,GAAAC,EAAA,KAAAC,KAEaJ,GAAe,IAAIK,IAAoB,CAClD,CAACC,GAAYC,sBAAuB,0DAA0D,EAC9F,CAACD,GAAYE,qBAAsB,qDAAqD,EACxF,CAACF,GAAYG,iBAAkB,gDAAgD,EAC/E,CAACH,GAAYI,mBAAoB,kDAAkD,EACnF,CAACJ,GAAYK,mBAAoB,kDAAkD,EACnF,CAACL,GAAYM,sBAAuB,qDAAqD,EACzF,CAACN,GAAYO,uBAAwB,sDAAsD,EAC3F,CAACP,GAAYQ,sBAAuB,qDAAqD,CAAC,CAC3F,EAEYb,GAAmB,IAAII,IAAoB,CACtD,CAACC,GAAYE,qBAAsB,eAAe,EAClD,CAACF,GAAYG,iBAAkB,KAAK,EACpC,CAACH,GAAYK,mBAAoB,OAAO,EACxC,CAACL,GAAYQ,sBAAuB,UAAU,CAAC,CAChD,6BE2BmBC,EAAA,EAAA,cAAA,EAAA,2BAAaC,EAAA,QAAA,EAAA,EAAY,UAAAC,EAAAC,IAAA,sCAT/BC,EAAA,EAAA,kBAAA,CAAA,EAIEC,EAAA,QAAA,UAAA,CAAA,IAAAH,EAAAI,EAAAC,CAAA,EAAAC,UAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,uBAAAV,EAAAW,EAAA,CAAkC,CAAA,CAAA,EAG3CT,EAAA,EAAA,MAAA,EAAA,EACEU,EAAA,EAAAC,GAAA,EAAA,EAAA,cAAA,EAAA,EAGAC,EAAA,CAAA,mBACFC,EAAA,EAAM,0CAXNhB,EAAA,aAAA,EAAA,EAAmB,YAAA,EAAA,EACA,YAAAiB,EAAAC,EAAAC,IAAA,mBAAA,IAAA,MAAAF,EAAAG,OAAA,KAAA,KAAAH,EAAAG,MAAAC,SAAApB,EAAAW,EAAA,CAAA,EAMjBU,EAAA,CAAA,EAAAC,EAAAf,EAAAgB,iBAAAL,IAAAlB,EAAAW,EAAA,EAAA,EAAA,EAAA,EAGAU,EAAA,EAAAG,EAAA,IAAAC,EAAA,EAAA,EAAAzB,GAAA,KAAA,KAAAA,EAAA0B,IAAA,EAAA,GAAA,6BAkBJxB,EAAA,EAAA,WAAA,EAAA,EAAiD,EAAA,kBAAA,EAE7CY,EAAA,CAAA,EACAZ,EAAA,EAAA,MAAA,EAAA,EACEY,EAAA,CAAA,EACFC,EAAA,EAAM,EACW,0BAJjBM,EAAA,CAAA,EAAAG,EAAA,IAAAG,EAAAhB,GAAA,GAAA,EAEEU,EAAA,CAAA,EAAAG,EAAA,IAAAG,EAAAC,YAAA,GAAA,sCA5Dd1B,EAAA,EAAA,MAAA,CAAA,EAAwB,EAAA,iBAAA,EAEL,EAAA,YAAA,EACHY,EAAA,CAAA,mBAA0DC,EAAA,EACtEjB,EAAA,EAAA,QAAA,CAAA,EACFiB,EAAA,EAGAb,EAAA,EAAA,iBAAA,EAAiB,EAAA,YAAA,EACHY,EAAA,CAAA,mBAAiEC,EAAA,EAC7EjB,EAAA,GAAA,QAAA,CAAA,EACFiB,EAAA,EAGAb,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EACHY,EAAA,EAAA,oBAAwEC,EAAA,EACpFb,EAAA,GAAA,mBAAA,CAAA,EAA2B,GAAA,kBAAA,CAAA,EAKvBC,EAAA,QAAA,UAAA,CAAAC,EAAAyB,CAAA,EAAA,IAAAtB,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAuB,kBAAA,CAAmB,CAAA,CAAA,EAG5BhB,EAAA,EAAA,oBACFC,EAAA,EACAgB,GAAA,GAAAC,GAAA,EAAA,EAAA,kBAAA,EAAAC,EAAA,EAgBFlB,EAAA,EAAmB,EAIrBb,EAAA,GAAA,kBAAA,CAAA,EAAmC,GAAA,YAAA,EACrBY,EAAA,EAAA,oBAA4DC,EAAA,EACxEjB,EAAA,GAAA,WAAA,EAAA,EACFiB,EAAA,EAGAb,EAAA,GAAA,iBAAA,EAAiB,GAAA,YAAA,EACHY,EAAA,EAAA,oBAA+DC,EAAA,EAC3Eb,EAAA,GAAA,MAAA,EAAA,EACE6B,GAAA,GAAAG,GAAA,EAAA,EAAA,WAAA,GAAAD,EAAA,EAUA/B,EAAA,GAAA,WAAA,EAAA,EAA6B,GAAA,kBAAA,EACTY,EAAA,EAAA,oBAAkEC,EAAA,EAAmB,EAC9F,EACP,EACU,EAGpBb,EAAA,GAAA,mBAAA,EAAA,EAAkBC,EAAA,cAAA,UAAA,CAAAC,EAAAyB,CAAA,EAAA,IAAAtB,EAAAC,EAAA,EAAA,OAAAC,EAAeF,EAAA4B,OAAA,CAAQ,CAAA,CAAA,EAAC,cAAA,UAAA,CAAA/B,EAAAyB,CAAA,EAAA,IAAAtB,EAAAC,EAAA,EAAA,OAAAC,EAAgBF,EAAA6B,OAAA,CAAQ,CAAA,CAAA,EAA0BrB,EAAA,4BAxEvFhB,EAAA,YAAAkB,CAAA,EAGWI,EAAA,CAAA,EAAAgB,EAAAZ,EAAA,EAAA,GAAA,wCAAA,CAAA,EAMAJ,EAAA,CAAA,EAAAgB,EAAAZ,EAAA,EAAA,GAAA,+CAAA,CAAA,EAMAJ,EAAA,CAAA,EAAAgB,EAAAZ,EAAA,GAAA,GAAA,sDAAA,CAAA,EAGRJ,EAAA,CAAA,EAAAtB,EAAA,aAAA,EAAA,EAAmB,YAAA,EAAA,EACA,aAAAuC,EAAArB,EAAAC,IAAA,mBAAA,IAAA,MAAAoB,EAAAnB,OAAA,KAAA,KAAAmB,EAAAnB,MAAAoB,UAAA,CAAA,EAKnBlB,EAAA,EAAAG,EAAA,IAAAC,EAAA,GAAA,GAAA,yDAAA,EAAA,GAAA,EAEFJ,EAAA,CAAA,EAAAmB,GAAAjC,EAAAkC,qBAAA,EAoBapB,EAAA,CAAA,EAAAtB,EAAA,WAAA,EAAA,EACHsB,EAAA,CAAA,EAAAgB,EAAAZ,EAAA,GAAA,GAAA,0CAAA,CAAA,EAMAJ,EAAA,CAAA,EAAAgB,EAAAZ,EAAA,GAAA,GAAA,6CAAA,CAAA,EAEVJ,EAAA,CAAA,EAAAmB,IAAAxB,EAAAC,EAAAC,IAAS,WAAW,IAAC,KAAA,KAAAF,EAAAG,KAAA,EAWDE,EAAA,CAAA,EAAAgB,EAAAZ,EAAA,GAAA,GAAA,gDAAA,CAAA,EAM0CJ,EAAA,CAAA,EAAAtB,EAAA,WAAA,CAAAQ,EAAAmC,QAAA,CAAA,GDjF1E,OAuBMC,GAKAC,GAsBOC,GAlDbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,6FAEM1B,GAAqB,CACzB2B,GAAYC,iBACZD,GAAYE,qBACZF,GAAYG,qBAAqB,EAE7B7B,GAAoB,sBAsBbC,IAAmB,IAAA,CAA1B,MAAOA,CAAmB,CA4C9B6B,YAAoBC,EAAsB,CAAtB,KAAAA,WAAAA,EA3CH,KAAAC,MAAQC,EAAOC,EAAc,EAC7B,KAAAC,YAAcF,EAAOG,EAAa,EAClC,KAAAC,gBAAkBJ,EAAOK,EAAe,EACxC,KAAAC,YAAcN,EAAOO,EAAW,EAChC,KAAAC,OAASR,EAAOS,EAAM,EAEtB,KAAAC,gBAAkBV,EAAOW,EAAsB,EAC/C,KAAAC,WAAaZ,EAAOa,EAAgB,EAElC,KAAAnE,iBAAmBA,GACnB,KAAA+C,YAAcA,GACd,KAAA7B,sBAAwBE,GAAmBgD,IAAKC,IAAa,CAC9EjF,GAAIiF,EACJlE,KAAMmE,GAAa3E,IAAI0E,CAAO,EAC9B3F,KAAMsB,GAAiBL,IAAI0E,CAAO,GAClC,EAEe,KAAAE,OAAS,KAAKlB,MAAMmB,SAASC,OAAO,OAElC,KAAAC,MAAQC,EAAc,CAAC,KAAKT,WAAY,KAAKF,eAAe,CAAC,EAAEY,KAChFC,EAAU,CAAC,CAACC,EAAWC,CAAc,IAAM,KAAKvB,YAAYwB,QAAQD,EAAgBD,EAAW,KAAKP,MAAM,CAAC,CAAC,EAG3F,KAAAU,cAAgB,KAAKP,MAAME,KAC5CC,EAAWK,GACL,CAACA,EAAKC,eAAiBD,EAAKC,cAAcnE,SAAW,EAChDoE,EAAG,IAAI,EAET,KAAK5B,YAAY6B,gBAAgBH,EAAKC,cAAc,CAAC,CAAC,CAC9D,CAAC,EAGe,KAAAG,KAAOC,GACxBZ,EAAc,CAAC,KAAKD,MAAO,KAAKO,aAAa,CAAC,EAAEL,KAC9CR,EAAI,CAAC,CAACc,EAAMM,CAAY,IAAM,KAAKC,SAASP,EAAMM,GAAcE,eAAeC,SAAW,EAAE,CAAC,CAAC,CAC/F,EAGgB,KAAAC,UAAYC,EAAS,IAAM,CAAC,KAAKP,KAAI,CAAE,EACvC,KAAAQ,aAAeC,EAAO,EAAK,EAC3B,KAAAC,kBAAoBD,EAAO,EAAK,EAChC,KAAA5E,QAAU0E,EAAS,IAAM,CAAC,KAAKD,UAAS,GAAM,CAAC,KAAKE,aAAY,GAAM,KAAKE,kBAAiB,CAAE,EAG/GC,GAAO,IAAK,CACV,KAAKX,KAAI,GACLY,aAAatB,KAAKuB,GAAmB,KAAK/C,UAAU,CAAC,EACtDgD,UAAU,IAAM,KAAKJ,kBAAkBK,IAAI,EAAI,CAAC,CACrD,CAAC,CACH,CAEQZ,SAASP,EAAqBoB,EAAqB,CACzD,OAAO,IAAIC,GAAU,CACnBpG,KAAM,IAAIqG,GAAYtB,GAAM/E,KAAM,CAACsG,GAAWC,QAAQ,CAAC,EACvDrG,YAAa,IAAImG,GAAYtB,GAAM7E,WAAW,EAC9CsG,kBAAmB,IAAIH,GAAYtB,GAAMyB,mBAAqB,CAAA,CAAE,EAChEC,OAAQ,IAAIJ,GAAYF,GAAiB,EAAE,EAC3CO,UAAW,IAAIL,GAAYtB,EAAK2B,WAAa,CAAA,CAAE,EAChD,CACH,CAEA1H,uBAAuB2H,EAAkB,CACvC,IAAMC,EAAU,KAAKzB,KAAI,GAAI3F,IAAI,mBAAmB,EACpD,GAAIoH,EAAS,CACX,IAAIC,EAAgBD,EAAQnH,OAAsB,CAAA,EAE9CoH,EAAanH,SAASiH,CAAU,EAClCE,EAAeA,EAAaC,OAAQC,GAAQA,IAAQJ,CAAU,EAE9DE,EAAe,CAAC,GAAGA,EAAcF,CAAU,EAE7CC,EAAQI,SAASH,CAAY,CAC/B,CACF,CAEAzG,mBAAiB,CACf,IAAMwG,EAAU,KAAKzB,KAAI,GAAI3F,IAAI,mBAAmB,EAChDoH,GACFA,EAAQI,SAAS,CAAA,CAAE,CAEvB,CAEAC,gBAAgBC,EAAc,CAE5B,OAAO,KAAK3C,MAAME,KAChBR,EAAKc,GAAQ,CACX,IAAMoC,EAAUC,GAAA,GAAKrC,GACrBoC,OAAAA,EAAQnH,KAAOkH,EAAUlH,KACzBmH,EAAQjH,YAAcgH,EAAUhH,YAChCiH,EAAQX,kBAAoBU,EAAUV,kBAC/BW,CACT,CAAC,CAAC,CAEN,CAEM1G,QAAM,QAAA4G,GAAA,sBACV,GAAI,CAAC,KAAKlC,KAAI,GAAImC,MAAO,CACvB,KAAK/D,gBAAgBgE,eAAe,gDAAgD,EACpF,MACF,CAEA,KAAK5B,aAAaO,IAAI,EAAI,EAC1B,GAAI,CACF,IAAMnB,EAAO,MAAMyC,GAAe,KAAKP,gBAAgB,KAAK9B,KAAI,GAAI1F,KAAK,CAAC,EAC1E,MAAM+H,GAAe,KAAKnE,YAAYoE,WAAW1C,CAAI,CAAC,EACtD,KAAKxB,gBAAgBmE,iBAAiB,gDAAgD,CACxF,MAAgB,CACd,KAAKnE,gBAAgBgE,eAAe,8CAA8C,CACpF,CACA,KAAK5B,aAAaO,IAAI,EAAK,CAC7B,GAEUxF,QAAM,CACd,IAAMiH,EAAO,KAAKlE,YAAYmE,mBAAmB,EAAE,EAC/CD,EACF,KAAKhE,OAAOkE,SAAS,CAACF,CAAI,CAAC,EAE3B,KAAKhE,OAAOkE,SAAS,CAAC3G,EAAiB,EAAG,CAAE4G,WAAY,KAAK5E,KAAK,CAAE,CAExE,iDAxHW/B,GAAmB4G,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAnB7G,EAAmB8G,UAAA,CAAA,CAAA,iBAAA,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,OAAA,OAAA,WAAA,GAAA,kBAAA,MAAA,EAAA,CAAA,OAAA,OAAA,WAAA,GAAA,kBAAA,aAAA,EAAA,CAAA,WAAA,EAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,QAAA,aAAA,YAAA,UAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,aAAA,YAAA,UAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,WAAA,GAAA,kBAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,cAAA,cAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IClDhC9J,EAAA,EAAA,YAAA,CAAA,EAAuD,EAAA,mBAAA,EAClC,EAAA,eAAA,EAEfJ,EAAA,EAAA,uBAAA,CAAA,EACFiB,EAAA,EACAb,EAAA,EAAA,iBAAA,EAAiBY,EAAA,CAAA,mBAA2DC,EAAA,EAAkB,EAEhGb,EAAA,EAAA,oBAAA,CAAA,EACEU,EAAA,EAAAsJ,GAAA,GAAA,EAAA,EA2EFnJ,EAAA,EAAoB,cAnFXhB,EAAA,YAAAkK,EAAA9C,UAAA,GAAA8C,EAAA5C,aAAA,CAAA,EAGiBhG,EAAA,CAAA,EAAAtB,EAAA,aAAA,EAAA,EAEPsB,EAAA,CAAA,EAAAgB,EAAAZ,EAAA,EAAA,EAAA,yCAAA,CAAA,EAEAJ,EAAA,CAAA,EAAAtB,EAAA,cAAA,QAAA,EACjBsB,EAAA,EAAAC,GAAA6I,EAAAF,EAAApD,KAAA,GAAA,EAAA,GAAAsD,CAAA,kBDyBAC,EACAC,GAAgBC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAChBC,GAAqBC,GAAAC,GACrBC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,GACAC,GACAC,GAAcC,GAAAC,GACdC,GAAkBC,GAClBC,GAAaC,GAAAC,GACbC,GACAC,GAAqBC,EACrBC,GACAC,GAAcC,EAAA,EAAAC,OAAA,CAAA;iHAAA,CAAA,CAAA,CAAA,SAKLxJ,CAAmB,GAAA,IEjDhC,IAKayJ,IALbC,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KAEaN,IAA+B,CAC1C,CACEO,KAAM,aACNC,SAAU,CACR,CACED,KAAM,GACNE,UAAWC,IAEb,CACEH,KAAM,oBACNE,UAAWE,GACXC,cAAe,CAACC,EAAmB,EACpC,GAGL,CACEN,KAAM,QACNC,SAAU,CACR,CACED,KAAM,eACNE,UAAWK,GACZ,EAEJ,IC7BH,IAAAC,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCHA,IAAaC,GAAbC,GAAAC,EAAA,KAAaF,GAAqB,CAChCG,kBAAmB,OACnBC,oBAAqB,oCEIrBC,EAAA,EAAA,WAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,2BAFyCC,EAAA,UAAA,wBAAAC,EAAAC,IAAA,EACvCC,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GDTJ,IAUMC,GASOC,GAnBbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,KACAC,KACAJ,KACAK,IACAC,+BAGMV,GAAmB,OASZC,IAAa,IAAA,CAApB,MAAOA,CAAa,CAP1BU,aAAA,CAQmB,KAAAC,MAAQC,EAA2BC,MAAS,EAC5C,KAAAC,UAAYF,EAAO,EAAK,EACxB,KAAAG,uBAAyBH,EAAO,EAAK,EAa3B,KAAAI,MAAQ,GAQ1B,KAAArB,KAAsB,UAEZ,KAAAsB,MAAQC,EAAS,IAC3B,KAAKJ,UAAS,EAAKK,GAAmBC,kBAAqBD,GAAmBE,mBACtF,EACkB,KAAAC,SAAWJ,EAAS,IACjC,KAAKJ,UAAS,GAAM,CAAC,KAAKC,uBAAsB,EAC3ChB,GAEF,KAAKY,MAAK,CAClB,EAEkB,KAAAY,UAAYL,EAAS,IAClC,CAAC,KAAKP,MAAK,GAGX,KAAKG,UAAS,EACT,GAEF,KAAKC,uBAAsB,GAAM,EACzC,EAvCD,IACIS,sBAAsBC,EAAc,CACtC,KAAKV,uBAAuBW,IAAID,CAAK,CACvC,CACA,IACIE,KAAKF,EAAyB,CAChC,KAAKd,MAAMe,IAAID,CAAK,CACtB,CACA,IAAIE,MAAI,CACN,OAAO,KAAKhB,MAAK,CACnB,CAEA,IACIiB,SAASH,EAAc,CACzB,KAAKX,UAAUY,IAAID,CAAK,CAC1B,CACA,IAAIG,UAAQ,CACV,OAAO,KAAKd,UAAS,CACvB,iDAvBWd,EAAa,CAAA,+BAAbA,EAAa6B,UAAA,CAAA,CAAA,UAAA,CAAA,EAAAC,OAAA,CAAAN,sBAAA,CAAA,EAAA,wBAAA,wBAKJO,EAAqB,EAAAJ,KAAA,OAAAX,MAAA,QAAAY,SAAA,CAAA,EAAA,WAAA,WAYrBG,EAAqB,EAAApC,KAAA,MAAA,EAAAqC,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,YAAA,GAAA,EAAA,UAAA,OAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICpC3ChD,EAAA,EAAA,aAAA,CAAA,mBAOEkD,EAAA,EAAA,OAAA,CAAA,EACAC,EAAA,EAAAC,GAAA,EAAA,EAAA,WAAA,CAAA,EAGApD,EAAA,EAAA,OAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,EAAO,SATPC,EAAA,UAAA,cAAA8C,EAAA5C,IAAA,EAAgC,QAAA4C,EAAAtB,MAAA,CAAA,+DAG1BrB,EAAA,CAAA,EAAA+C,GAAA,SAAAJ,EAAAX,QAAA,EAA0BnC,EAAA,UAAA,0CAAA8C,EAAA5C,IAAA,EACrBC,EAAA,EAAAH,EAAA,OAAA8C,EAAAjB,SAAA,CAAA,EAGc1B,EAAA,EAAA+C,GAAA,SAAAJ,EAAAhB,UAAA,CAAA,EACvB3B,EAAA,EAAAC,EAAA,IAAA+C,EAAA,EAAA,GAAAL,EAAAvB,KAAA,EAAA,GAAA,kBDIQ6B,EAAYC,GAAAC,GAAEC,GAAiBC,GAAEC,GAAaC,GAAEC,GAAeC,GAAEC,EAAeC,CAAA,EAAAC,OAAA,CAAA;yGAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAG/EzD,CAAa,GAAA,6BGFtB0D,EAAA,EAAA,MAAA,CAAA,6BAGEC,GAAA,mCAAAC,IAAAC,EAAAC,YAAA,sCAbJC,EAAA,EAAA,MAAA,CAAA,EAA+E,EAAA,WAAA,CAAA,EAQ3EC,EAAA,QAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAP,EAAAQ,EAAA,EAAA,OAAAC,EAAST,EAAAU,gBAAAN,EAAAO,KAAA,CAA2B,CAAA,CAAA,EACrCC,EAAA,EACDC,EAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,EAKFF,EAAA,kCAZIG,EAAA,EAAAC,EAAA,wBAAAhB,EAAAiB,qBAAA,EAA+C,QAAAb,EAAAc,KAAA,EAC3B,OAAAd,EAAAe,IAAA,EACF,WAAAf,EAAAO,QAAAX,EAAAoB,QAAA,EACkB,OAAApB,EAAAqB,IAAA,EAKnCN,EAAA,EAAAC,EAAA,OAAAhB,EAAAsB,YAAA,GDlBP,IAeaC,GAfbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,IAEAC,aAWaN,IAAiB,IAAA,CAAxB,MAAOA,CAAiB,CAP9BO,aAAA,CAQ+C,KAAAb,sBAAwB,GAE1C,KAAAc,MAA2B,CAAA,EAG5C,KAAAC,eAAiB,IAAIC,GAEtB,KAAAZ,KAAsB,UAWrB,KAAApB,aAAe,GACf,KAAAqB,aAAe,GAVAY,WAAS,CAChC,KAAKZ,aAAe,GACpB,KAAKrB,aAAe,KAAK8B,OAAOI,UAAWC,GAASA,EAAKzB,QAAU,KAAKS,QAAQ,GAAK,EACvF,CAC0BiB,YAAU,CAClC,KAAKf,aAAe,GACpB,KAAKrB,aAAe,EACtB,CAKUS,gBAAgBC,EAAQ,CAChC,KAAK2B,YAAY3B,CAAK,CACxB,CAEU4B,cAAcC,EAAoB,CAC1C,OAAQA,EAAMC,KAAI,CAChB,IAAK,YACC,EAAE,KAAKxC,aAAe,IACxB,KAAKA,aAAe,KAAK8B,MAAMW,OAAS,GAE1C,MACF,IAAK,aACC,EAAE,KAAKzC,cAAgB,KAAK8B,MAAMW,SACpC,KAAKzC,aAAe,GAEtB,MACF,IAAK,QACL,IAAK,QACH,KAAKqC,YAAY,KAAKP,QAAQ,KAAK9B,YAAY,GAAGU,KAAK,EACnD6B,EAAMG,kBAAkBC,aACtBJ,EAAMG,QAAQE,8BAA8BD,aAC9CJ,EAAMG,OAAOE,mBAAmBC,MAAK,EAGzC,MACF,QACE,MACJ,CACAN,EAAMO,eAAc,CACtB,CAEUT,YAAY3B,EAAQ,CACxB,KAAKS,WAAaT,IAGtB,KAAKS,SAAWT,EAChB,KAAKqB,eAAegB,KAAKrC,CAAK,EAChC,iDA3DWY,EAAiB,CAAA,+BAAjBA,EAAiB0B,UAAA,CAAA,CAAA,eAAA,CAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAjBhD,EAAA,UAAA,UAAA,CAAA,OAAAiD,EAAAlB,UAAA,CAAW,CAAA,EAAM,WAAA,UAAA,CAAA,OAAjBkB,EAAAf,WAAA,CAAY,CAAA,oFACHgB,EAAqB,EAAAtB,MAAA,QAAAX,SAAA,WAAAC,KAAA,MAAA,EAAAiC,QAAA,CAAAtB,eAAA,gBAAA,EAAAuB,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,OAAA,UAAA,uBAAA,QAAA,mBAAA,aAAA,EAAA,SAAA,EAAA,CAAA,WAAA,IAAA,cAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,CAAA,QAAA,sBAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,OAAA,SAAA,EAAA,QAAA,wBAAA,QAAA,OAAA,WAAA,MAAA,EAAA,CAAA,QAAA,0BAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,EAAA,yBAAA,CAAA,EAAAC,SAAA,SAAAT,EAAAC,EAAA,CAAAD,EAAA,IChB3CjD,EAAA,EAAA,MAAA,CAAA,EAKC,EAAA,MAAA,CAAA,EACiEC,EAAA,UAAA,SAAA0D,EAAA,CAAA,OAAWT,EAAAb,cAAAsB,CAAA,CAAqB,CAAA,EAAEjD,EAAA,EAClGC,EAAA,EAAAiD,GAAA,EAAA,EAAA,MAAA,CAAA,EAgBFlD,EAAA,SAtBEI,EAAA,UAAA,wBAAAoC,EAAA/B,IAAA,EAMsBN,EAAA,CAAA,EAAAC,EAAA,UAAAoC,EAAArB,KAAA,kBDKZgC,GAAeC,EAAYC,GAAAC,GAAAC,EAAA,EAAAC,OAAA,CAAA;8GAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAG1B9C,CAAiB,GAAA,IEf9B,IAAA+C,GAAAC,EAAA,KAAAC,OCAA,IAgBaC,GAhBbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,cAaaL,IAA6B,IAAA,CAApC,MAAOA,CAA6B,CAT1CM,aAAA,CAUW,KAAAC,MAAgBC,mDADdR,EAA6B,CAAA,+BAA7BA,EAA6BS,UAAA,CAAA,CAAA,yBAAA,CAAA,EAAAC,OAAA,CAAAH,MAAA,OAAA,EAAAI,SAAA,CAAAC,GAH7B,CAAA,CAAE,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,OAAA,SAAA,kBAAA,UAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAFXE,EAAA,EAAA,cAAA,CAAA,OAAaC,EAAA,QAAAF,EAAAX,KAAA,iBAGLc,EAAcC,GAAkBC,EAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAE/BxB,CAA6B,GAAA,IChB1C,IAUayB,GAVbC,GAAAC,EAAA,KAEAC,KACAC,KACAC,KAEAC,mBAIaN,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,CAGhCO,YAC8CC,EACpCC,EACSC,EACAC,EAAmC,CAHR,KAAAH,OAAAA,EACpC,KAAAC,gBAAAA,EACS,KAAAC,WAAAA,EACA,KAAAC,gBAAAA,EANnB,KAAAC,MAAQ,IAAIC,GAQV,KAAKD,MAAQ,KAAKJ,OAAOM,eAAeC,KACtCC,GAAoB,EACpBC,EAAWC,GACF,KAAKR,WAAWS,QAAQ,IAAIC,GAAe,CAAEC,OAAQH,CAAa,CAAE,CAAC,CAC7E,EACDI,EAAKC,GAAUC,GAAAC,GAAA,GACVF,GADU,CAEbG,SAAU,GAAGH,EAAKI,SAAS,IAAIJ,EAAKK,QAAQ,GAAGC,KAAI,GACnD,EACFC,GAAY,CAAC,CAAC,CAElB,CAEAC,YACEC,EACAC,EACAC,EACAC,EAAgB,CAEhB,IAAMC,EAAoBF,EAAaZ,IACpCe,IACE,CACCC,YAAaD,EAAYC,YACzBC,cAAeF,EAAYE,cAC3BC,iBAAkBH,EAAYG,kBACE,EAEhCC,EAAW,CACfD,iBAAkBR,EAClBC,OAAQA,EACRC,aAAcE,EACdD,QAASA,GAGX,OAAO,KAAK1B,gBAAgBiC,eAAeD,CAAQ,EAAE1B,KACnD4B,GAAI,IAAK,CACP,KAAKhC,gBAAgBiC,WAAW,WAAY,qBAAsB,CAChEZ,aAAcA,EACf,CACH,CAAC,CAAC,CAEN,CAEAa,YAAYC,EAAkB,CAC5B,OAAO,KAAKrC,gBAAgBsC,mBAAmB,CAACD,CAAU,CAAC,EAAE/B,KAAKO,EAAK0B,GAAeA,EAAW,CAAC,CAAC,CAAC,CACtG,CAEAC,eACEH,EACAd,EACAC,EACAC,EACAC,EACAe,EAAoB,CAEpB,IAAMd,EAAoB,CAAA,EAC1BF,EAAaiB,QAASd,GAAe,CACnCD,EAAkBgB,KAAK,CACrBd,YAAaD,EAAYC,YACzBC,cAAeF,EAAYE,cAC3BC,iBAAkBH,EAAYG,iBACC,CACnC,CAAC,EACD,IAAMC,EAAW,CACfH,YAAaQ,EACbN,iBAAkBR,EAClBC,OAAQA,EACRC,aAAcE,EACdD,QAASA,GAGX,OAAKe,GAAWG,OAGT,KAAK5C,gBAAgBwC,eAAeR,EAAU,CAAEa,MAAOJ,CAAS,CAAE,EAAEnC,KACzEO,EAAI,IAAMwB,CAAU,EACpBH,GAAI,IAAK,CACP,KAAKhC,gBAAgBiC,WAAW,WAAY,uBAAwB,CAClEZ,aAAcA,EACdc,WAAYA,EACb,CACH,CAAC,CAAC,EATKS,EAAGT,CAAU,CAWxB,iDA5FW9C,GAAqBwD,EAItBC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,CAAA,CAAA,CAAA,kCAJhB5D,EAAqB6D,QAArB7D,EAAqB8D,SAAA,CAAA,CAAA,SAArB9D,CAAqB,GAAA,ICVlC,IAAA+D,GAAAC,EAAA,QCAA,IAQaC,GARbC,GAAAC,EAAA,SAQaF,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CACpC,IAAaG,iBAAiBC,EAAgB,CAC5C,KAAKC,UAAYD,CACnB,iDAHWJ,EAAyB,CAAA,gCAAzBA,EAAyBM,UAAA,CAAA,CAAA,GAAA,mBAAA,EAAA,CAAA,EAAAC,OAAA,CAAAJ,iBAAA,kBAAA,CAAA,CAAA,CAAA,SAAzBH,CAAyB,GAAA,2BEM9BQ,EAAA,EAAA,aAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,2CAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,EAAA,sBAAqCL,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAC,eAAAC,SAAA,UAAA,CAAA,0BAyBnCd,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,yCAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAQ,GAAA,EAAA,EAAA,aAAA,CAAA,sBAAaZ,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAI,eAAAF,SAAA,UAAA,CAAA,0BAoBbd,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,8CAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAU,GAAA,EAAA,EAAA,aAAA,CAAA,sBAAad,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAM,oBAAAJ,SAAA,UAAA,CAAA,GD3DvB,gBAwCaK,GAxCbC,GAAAC,EAAA,KAAAC,KACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,IAEAC,KACAC,KACAC,KACAC,KACAC,KAGAC,KACAC,KACAC,KACAN,KACAO,KACAC,qQAmBapB,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CACzC,IAAaqB,SAASC,EAA+B,CACnD,KAAKC,UAAUD,CAAK,CACtB,CAEA,IACIE,YAAYF,EAAoB,CAG9BA,IAAU,KAAK9B,UAAUC,SAAS,gBAAmBgC,YAAW,GAClE,KAAKjC,UAAUkC,WAAW,CAAEhC,eAAgB4B,GAAS,EAAE,EAAI,CAAEK,UAAW,EAAK,CAAE,CAEnF,CA+BAC,YAA6BC,EAA8B,CAA9B,KAAAA,cAAAA,EAvCgB,KAAAC,OAAyB,KAS5D,KAAAC,kBAAoB,IAAIC,GAKxB,KAAAC,WAAa,GACJ,KAAAC,kBAAoBA,GACpB,KAAAC,WAAaA,GACb,KAAAC,gBAAkBA,GAClB,KAAAC,SAAW,EAE9B,KAAAC,0BAA4BA,GAC5B,KAAAC,0BAA4BA,GAE5B,KAAA/C,UAAY,IAAIgD,GAAW,EAAGC,YAAYC,MACxC,CACEhD,eAAgB,GAChBK,oBAAqB,GACrBF,eAAgB8C,GAAW,IAAIC,KAAQ,oBAAoB,EAC3DC,iBAAkB,GAClBC,kBAAmB,IAErB,CACEC,WAAYC,GACV,IAAM,KAAKf,WACX,CAAC,iBAAkB,sBAAuB,gBAAgB,CAAC,EAE9D,EAID,KAAKzC,UAAUC,SAASC,eAAeuD,aACpCC,KAAKC,GAAkB,EAAIC,GAAoB,CAAE,EACjDC,UAAW/B,GAAU,KAAKS,kBAAkBuB,KAAKhC,CAAK,CAAC,CAC5D,CAEAiC,iBAAe,CACb,KAAKC,cAAcC,eAAeC,MAAK,CACzC,CAEAC,UAAQ,CACN,KAAK1B,WAAa,GAClB,KAAKzC,UAAUoE,iBAAgB,EAC/B,KAAKC,uBAAsB,CAC7B,CAEAA,wBAAsB,CACpB,KAAKrE,UAAUqE,uBAAsB,CACvC,CAEQtC,UAAUF,EAAkC,CAClD,GAAIA,EAAU,CACZ,IAAMyC,EAAW,KAAKjC,cAAckC,2BAA2B1C,EAAU2C,EAAYC,gBAAgB,EAC/FC,EAAW,KAAKrC,cAAckC,2BAA2B1C,EAAU2C,EAAYG,gBAAgB,EAC/FC,EAAgB,KAAKvC,cAAckC,2BAA2B1C,EAAU2C,EAAYK,qBAAqB,EACzGC,EAAa,KAAKzC,cAAckC,2BAA2B1C,EAAU2C,EAAYO,kBAAkB,EACnGC,EAAc,KAAK3C,cAAckC,2BAA2B1C,EAAU2C,EAAYS,mBAAmB,EAE3G,KAAKjF,UAAUkF,SAAS,CACtBhF,eAAgBwE,GAAUS,aAAe,GACzC5E,oBAAqBqE,GAAeO,aAAe,GACnD9E,eAAgBiE,GAAUc,UAAYjC,GAAWmB,EAASc,UAAW,oBAAoB,EAAI,GAC7F/B,iBAAkByB,GAAYK,aAAe,GAC7C7B,kBAAmB0B,GAAaG,aAAe,GAChD,CACH,MAAW,KAAKnF,UAAUqF,OACxB,KAAKC,UAAS,CAElB,CAEAC,WAAS,CACP,IAAMC,EAAa,KAAKxF,UAAUiC,YAAW,EAC7C,MAAO,CACL,CACEwD,QAASjB,EAAYC,iBACrBW,UAAWI,EAAWnF,eAAiB,IAAI+C,KAAKoC,EAAWnF,cAAc,EAAIqF,QAE/E,CACED,QAASjB,EAAYG,iBACrBQ,YAAaK,EAAWtF,gBAE1B,CACEuF,QAASjB,EAAYK,sBACrBM,YAAaK,EAAWjF,qBAE1B,CACEkF,QAASjB,EAAYO,mBACrBI,YAAaK,EAAWnC,kBAE1B,CACEoC,QAASjB,EAAYS,oBACrBE,YAAaK,EAAWlC,kBACzB,CAEL,CAEAgC,WAAS,CACP,KAAK7C,WAAa,GAClB,KAAKzC,UAAU2F,MAAM,CACnBzF,eAAgB,KAAK8B,aAAe,GACpC3B,eAAgB8C,GAAW,IAAIC,KAAQ,oBAAoB,EAC5D,EACD,KAAKiB,uBAAsB,CAC7B,iDApHW7D,GAA8BoF,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAA9BrF,EAA8BsF,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,4KAIrBE,EAAqB,EAAAlE,YAAA,aAAA,EAAAmE,QAAA,CAAA5D,kBAAA,mBAAA,EAAA6D,SAAA,CAAAC,EAAA,EAAAC,mBAAAC,GAAAC,MAAA,GAAAC,KAAA,IAAAC,OAAA,CAAA,CAAA,OAAA,QAAA,EAAA,CAAA,WAAA,EAAA,EAAA,CAAA,aAAA,GAAA,EAAA,WAAA,EAAA,CAAA,YAAA,WAAA,EAAA,mBAAA,EAAA,YAAA,eAAA,cAAA,cAAA,UAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,gBAAA,QAAA,OAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,YAAA,EAAA,CAAA,kBAAA,iBAAA,OAAA,iBAAA,WAAA,GAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,QAAA,EAAA,oBAAA,EAAA,YAAA,YAAA,EAAA,CAAA,kBAAA,sBAAA,EAAA,aAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,mBAAA,EAAA,aAAA,EAAA,CAAA,kBAAA,oBAAA,EAAA,aAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAX,EAAAC,EAAA,CAAAD,EAAA,WC5C3C3G,EAAA,EAAA,OAAA,EAAA,CAAA,EAAwD,EAAA,KAAA,EACjD,EAAA,eAAA,EAEDuH,EAAA,EAAA,wBAAA,CAAA,EAUAhH,EAAA,EAAAiH,GAAA,EAAA,EAAA,eAAA,CAAA,EAKFtH,EAAA,EAAgB,EAElBuH,GAAA,CAAA,EACAzH,EAAA,EAAA,KAAA,EAAK,EAAA,gBAAA,CAAA,EAC4D,EAAA,kBAAA,CAAA,EAS3DuH,EAAA,GAAA,QAAA,CAAA,oBAMAA,EAAA,GAAA,iBAAA,KAAA,CAAA,EACAhH,EAAA,GAAAmH,GAAA,EAAA,EAAA,eAAA,CAAA,EAKFxH,EAAA,EACAF,EAAA,GAAA,kBAAA,CAAA,EAMC,GAAA,aAAA,CAAA,oBAKGA,EAAA,GAAA,aAAA,EAAA,EAAqDC,EAAA,EAAA,oBAAqCC,EAAA,EAC1FF,EAAA,GAAA,aAAA,EAAA,EAAoDC,EAAA,EAAA,oBAAoCC,EAAA,EAAa,EAEvGK,EAAA,GAAAoH,GAAA,EAAA,EAAA,eAAA,CAAA,EAKFzH,EAAA,EAAkB,EAEpBF,EAAA,GAAA,eAAA,EAAe,GAAA,kBAAA,CAAA,EAOZ,GAAA,aAAA,EAAA,oBAKGA,EAAA,GAAA,aAAA,EAAA,EAA+CC,EAAA,EAAA,oBAA2CC,EAAA,EAC1FF,EAAA,GAAA,aAAA,EAAA,EAA0CC,EAAA,EAAA,oBAAsCC,EAAA,EAChFF,EAAA,GAAA,aAAA,EAAA,EAA8CC,EAAA,EAAA,oBAA0CC,EAAA,EACxFF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EAA8CC,EAAA,EAAA,oBAA2CC,EAAA,EACzFF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EAAa,EACF,EAEfF,EAAA,GAAA,kBAAA,CAAA,EAMC,GAAA,aAAA,EAAA,oBAKGA,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EAAa,EACF,EACG,EAEpBuH,GAAA,GAAA,CAAA,EACFvH,EAAA,EAAM,SAhIFO,EAAA,YAAAmG,EAAAjG,SAAA,EAMER,EAAA,CAAA,EAAAM,EAAA,YAAA,EAAA,EAAkB,eAAA,EAAA,EACG,cAAAmG,EAAAjG,UAAAC,SAAA,cAAA,EAC+B,cAAA,EAAA,EAChC,UAAAgG,EAAAnD,yBAAA,EACiB,UAAAmD,EAAAlD,yBAAA,EAGxBvD,EAAA,EAAAM,EAAA,OAAAmG,EAAAxD,UAAA,EASsBjD,EAAA,CAAA,EAAAyH,GAAA,SAAAhB,EAAA3D,MAAA,EAMnC9C,EAAA,EAAAyH,GAAA,SAAAhB,EAAA3D,MAAA,EAHAxC,EAAA,YAAA,EAAA,EAAmB,aAAA,YAAA,EAUjBN,EAAA,EAAA0H,GAAA,cAAAxH,EAAA,GAAA,GAAA,8CAAA,CAAA,EAGaF,EAAA,CAAA,EAAAM,EAAA,OAAAmG,EAAAxD,UAAA,EAUfjD,EAAA,EAAAyH,GAAA,SAAAhB,EAAA3D,MAAA,EAFAxC,EAAA,YAAA,EAAA,EAAmB,aAAA,gBAAA,EAOjBN,EAAA,EAAA0H,GAAA,cAAAxH,EAAA,GAAA,GAAA,mDAAA,CAAA,EAEYF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAAvD,kBAAAyE,QAAA,EAAyC3H,EAAA,EAAA4H,EAAA1H,EAAA,GAAA,GAAA,mBAAA,CAAA,EACzCF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAAvD,kBAAA2E,OAAA,EAAwC7H,EAAA,EAAA4H,EAAA1H,EAAA,GAAA,GAAA,kBAAA,CAAA,EAEvCF,EAAA,CAAA,EAAAM,EAAA,OAAAmG,EAAAxD,UAAA,EAYfjD,EAAA,CAAA,EAAAyH,GAAA,SAAAhB,EAAA3D,MAAA,EAFAxC,EAAA,YAAA,EAAA,EAAmB,aAAA,OAAA,EAOjBN,EAAA,EAAA0H,GAAA,cAAAxH,EAAA,GAAA,GAAA,gDAAA,CAAA,EAEYF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAAtD,WAAA2E,SAAA,EAAmC9H,EAAA,EAAA4H,EAAA1H,EAAA,GAAA,GAAA,yBAAA,CAAA,EACnCF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAAtD,WAAA4E,IAAA,EAA8B/H,EAAA,EAAA4H,EAAA1H,EAAA,GAAA,GAAA,oBAAA,CAAA,EAC9BF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAAtD,WAAA6E,QAAA,EAAkChI,EAAA,EAAA4H,EAAA1H,EAAA,GAAA,GAAA,wBAAA,CAAA,EAClCF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAAtD,WAAA8E,SAAA,EACVjI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,8BAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAAtD,WAAA+E,QAAA,EAAkClI,EAAA,EAAA4H,EAAA1H,EAAA,GAAA,GAAA,yBAAA,CAAA,EAClCF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAAtD,WAAAgF,YAAA,EACVnI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,8BAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAAtD,WAAAiF,WAAA,EACVpI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,4BAAA,EAAA,GAAA,EAQJF,EAAA,CAAA,EAAAyH,GAAA,SAAAhB,EAAA3D,MAAA,EAFAxC,EAAA,YAAA,EAAA,EAAmB,aAAA,UAAA,EAOjBN,EAAA,EAAA0H,GAAA,cAAAxH,EAAA,GAAA,GAAA,iDAAA,CAAA,EAEYF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAArD,gBAAAiF,UAAA,EACVrI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,sCAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAArD,gBAAAkF,UAAA,EACVtI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,qCAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAArD,gBAAAmF,cAAA,EACVvI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,0CAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAArD,gBAAAoF,IAAA,EACVxI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,yCAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAArD,gBAAAqF,QAAA,EACVzI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,+CAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAArD,gBAAAsF,YAAA,EACV1I,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,IAAA,uCAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA0H,GAAA,QAAAjB,EAAArD,gBAAAuF,QAAA,EACV3I,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,IAAA,mCAAA,EAAA,GAAA,kBD9FR0I,EAAYC,GACZC,EAAeC,EACfC,GACAC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAeC,GAAAC,GACfC,GAAmBC,GACnBC,GAAcC,GACdC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,GACAC,GAA0BC,EAAA,EAAAC,OAAA,CAAA;iGAAA,CAAA,CAAA,CAAA,SAGjBvJ,CAA8B,GAAA,2BGzBnCwJ,EAAA,EAAA,aAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,2CAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,EAAA,sBAAqCL,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAC,uBAAAC,SAAA,UAAA,CAAA,0BAyBnCd,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,0CAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAQ,GAAA,EAAA,EAAA,aAAA,CAAA,sBAAaZ,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAI,gBAAAF,SAAA,UAAA,CAAA,0BAuBbd,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,+CAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAU,GAAA,EAAA,EAAA,aAAA,CAAA,sBAAad,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAM,qBAAAJ,SAAA,UAAA,CAAA,GD/DvB,gBA0CaK,GA1CbC,GAAAC,EAAA,KAAAC,KACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,IAEAC,KACAC,KACAC,KACAC,KACAC,KAGAC,KACAC,KACAC,KACAN,KACAO,KACAC,qQAoBarB,IAA+B,IAAA,CAAtC,MAAOA,CAA+B,CAC1C,IAAasB,SAASC,EAA+B,CACnD,KAAKC,UAAUD,CAAK,CACtB,CAEA,IACIE,YAAYF,EAAoB,CAG9BA,IAAU,KAAK/B,UAAUC,SAAS,wBAA2BiC,YAAW,GAC1E,KAAKlC,UAAUmC,WAAW,CAAEjC,uBAAwB6B,GAAS,EAAE,EAAI,CAAEK,UAAW,EAAK,CAAE,CAE3F,CA2BAC,YAA6BC,EAA8B,CAA9B,KAAAA,cAAAA,EAnCgB,KAAAC,OAAyB,KAS5D,KAAAC,kBAAoB,IAAIC,GAKxB,KAAAC,WAAa,GACJ,KAAAC,kBAAoBA,GACpB,KAAAC,SAAW,EAE9B,KAAAC,0BAA4BA,GAC5B,KAAAC,0BAA4BA,GAE5B,KAAA9C,UAAY,IAAI+C,GAAW,EAAGC,YAAYC,MACxC,CACE/C,uBAAwB,GACxBK,qBAAsB,GACtBF,gBAAiB6C,GAAW,IAAIC,KAAQ,oBAAoB,GAE9D,CACEC,WAAYC,GACV,IAAM,KAAKX,WACX,CAAC,yBAA0B,uBAAwB,iBAAiB,CAAC,EAExE,EAID,KAAK1C,UAAUC,SAASC,uBAAuBoD,aAC5CC,KAAKC,GAAkB,EAAIC,GAAoB,CAAE,EACjDC,UAAW3B,GAAU,KAAKS,kBAAkBmB,KAAK5B,CAAK,CAAC,CAC5D,CAEA6B,iBAAe,CACb,KAAKC,cAAcC,eAAeC,MAAK,CACzC,CAEAC,UAAQ,CACN,KAAKtB,WAAa,GAClB,KAAK1C,UAAUiE,iBAAgB,EAC/B,KAAKC,uBAAsB,CAC7B,CAEAA,wBAAsB,CACpB,KAAKlE,UAAUkE,uBAAsB,CACvC,CAEQlC,UAAUF,EAAkC,CAClD,GAAIA,EAAU,CACZ,IAAMqC,EAAY,KAAK7B,cAAc8B,2BAA2BtC,EAAUuC,EAAYC,iBAAiB,EACjGC,EAAY,KAAKjC,cAAc8B,2BAA2BtC,EAAUuC,EAAYG,iBAAiB,EACjGC,EAAiB,KAAKnC,cAAc8B,2BACxCtC,EACAuC,EAAYK,sBAAsB,EAGpC,KAAK1E,UAAU2E,SAAS,CACtBzE,uBAAwBqE,GAAWK,aAAe,GAClDrE,qBAAsBkE,GAAgBG,aAAe,GACrDvE,gBAAiB8D,GAAWU,UAAY3B,GAAWiB,EAAUU,UAAW,oBAAoB,EAAI,GACjG,CACH,MAAW,KAAK7E,UAAU8E,OACxB,KAAKC,UAAS,CAElB,CAEAC,WAAS,CACP,IAAMC,EAAa,KAAKjF,UAAUkC,YAAW,EAC7C,MAAO,CACL,CACEgD,QAASb,EAAYC,kBACrBO,UAAWI,EAAW5E,gBAAkB,IAAI8C,KAAK8B,EAAW5E,eAAe,EAAI8E,QAEjF,CACED,QAASb,EAAYG,kBACrBI,YAAaK,EAAW/E,wBAE1B,CACEgF,QAASb,EAAYK,uBACrBE,YAAaK,EAAW1E,qBACzB,CAEL,CAEAwE,WAAS,CACP,KAAKrC,WAAa,GAClB,KAAK1C,UAAUoF,MAAM,CACnBlF,uBAAwB,KAAK+B,aAAe,GAC5C5B,gBAAiB6C,GAAW,IAAIC,KAAQ,oBAAoB,EAC7D,EACD,KAAKe,uBAAsB,CAC7B,iDAvGW1D,GAA+B6E,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAA/B9E,EAA+B+E,UAAA,CAAA,CAAA,2BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,4KAItBE,EAAqB,EAAA1D,YAAA,aAAA,EAAA2D,QAAA,CAAApD,kBAAA,mBAAA,EAAAqD,SAAA,CAAAC,EAAA,EAAAC,mBAAAC,GAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,OAAA,QAAA,EAAA,CAAA,YAAA,EAAA,EAAA,CAAA,aAAA,GAAA,EAAA,WAAA,EAAA,CAAA,YAAA,YAAA,kBAAA,yBAAA,EAAA,mBAAA,EAAA,YAAA,eAAA,cAAA,cAAA,UAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,gBAAA,QAAA,OAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,YAAA,EAAA,CAAA,kBAAA,kBAAA,OAAA,iBAAA,WAAA,GAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,QAAA,EAAA,oBAAA,EAAA,YAAA,YAAA,EAAA,CAAA,kBAAA,uBAAA,EAAA,aAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAX,EAAAC,EAAA,CAAAD,EAAA,WC9C3CpG,EAAA,EAAA,OAAA,EAAA,CAAA,EAAwD,EAAA,KAAA,EACjD,EAAA,eAAA,EAEDgH,EAAA,EAAA,wBAAA,CAAA,EAWAzG,EAAA,EAAA0G,GAAA,EAAA,EAAA,eAAA,CAAA,EAKF/G,EAAA,EAAgB,EAElBgH,GAAA,CAAA,EACAlH,EAAA,EAAA,KAAA,EAAK,EAAA,gBAAA,CAAA,EAC4D,EAAA,kBAAA,CAAA,EAS3DgH,EAAA,GAAA,QAAA,CAAA,oBAMAA,EAAA,GAAA,iBAAA,KAAA,CAAA,EACAzG,EAAA,GAAA4G,GAAA,EAAA,EAAA,eAAA,CAAA,EAKFjH,EAAA,EACAF,EAAA,GAAA,kBAAA,CAAA,EAMC,GAAA,aAAA,CAAA,oBAKGA,EAAA,GAAA,aAAA,EAAA,EAAqDC,EAAA,EAAA,oBAAqCC,EAAA,EAC1FF,EAAA,GAAA,aAAA,EAAA,EAAoDC,EAAA,EAAA,oBAAoCC,EAAA,EACxFF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EAAa,EAEfK,EAAA,GAAA6G,GAAA,EAAA,EAAA,eAAA,CAAA,EAKFlH,EAAA,EAAkB,EAEpBgH,GAAA,GAAA,CAAA,EACFhH,EAAA,EAAM,SAtEFO,EAAA,YAAA4F,EAAA1F,SAAA,EAOER,EAAA,CAAA,EAAAM,EAAA,YAAA,EAAA,EAAkB,eAAA,EAAA,EACG,cAAA4F,EAAA1F,UAAAC,SAAA,sBAAA,EACuC,cAAA,EAAA,EACxC,UAAAyF,EAAA7C,yBAAA,EACiB,UAAA6C,EAAA5C,yBAAA,EAGxBtD,EAAA,EAAAM,EAAA,OAAA4F,EAAAhD,UAAA,EASsBlD,EAAA,CAAA,EAAAkH,GAAA,SAAAhB,EAAAnD,MAAA,EAMnC/C,EAAA,EAAAkH,GAAA,SAAAhB,EAAAnD,MAAA,EAHAzC,EAAA,YAAA,EAAA,EAAmB,aAAA,YAAA,EAUjBN,EAAA,EAAAmH,GAAA,cAAAjH,EAAA,GAAA,GAAA,+CAAA,CAAA,EAGaF,EAAA,CAAA,EAAAM,EAAA,OAAA4F,EAAAhD,UAAA,EAUflD,EAAA,EAAAkH,GAAA,SAAAhB,EAAAnD,MAAA,EAFAzC,EAAA,YAAA,EAAA,EAAmB,aAAA,gBAAA,EAOjBN,EAAA,EAAAmH,GAAA,cAAAjH,EAAA,GAAA,GAAA,oDAAA,CAAA,EAEYF,EAAA,CAAA,EAAAmH,GAAA,QAAAjB,EAAA/C,kBAAAiE,QAAA,EAAyCpH,EAAA,EAAAqH,EAAAnH,EAAA,GAAA,GAAA,mBAAA,CAAA,EACzCF,EAAA,CAAA,EAAAmH,GAAA,QAAAjB,EAAA/C,kBAAAmE,OAAA,EAAwCtH,EAAA,EAAAqH,EAAAnH,EAAA,GAAA,GAAA,kBAAA,CAAA,EACxCF,EAAA,CAAA,EAAAmH,GAAA,QAAAjB,EAAA/C,kBAAAoE,SAAA,EACVvH,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,oBAAA,EAAA,GAAA,EAGWF,EAAA,CAAA,EAAAM,EAAA,OAAA4F,EAAAhD,UAAA,kBDjCnBsE,EAAYC,GACZC,EAAeC,EACfC,GACAC,GACAC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAeC,GAAAC,GACfC,GAAmBC,GACnBC,GAAcC,GACdC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,GACAC,GAA0BC,EAAA,EAAAC,OAAA,CAAA;iGAAA,CAAA,CAAA,CAAA,SAGjBpI,CAA+B,GAAA,2BG5BpCqI,EAAA,EAAA,aAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,2CAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,EAAA,sBAAqCL,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAC,kBAAAC,SAAA,UAAA,CAAA,0BAyBnCd,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,4CAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAQ,GAAA,EAAA,EAAA,aAAA,CAAA,sBAAaZ,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAI,kBAAAF,SAAA,UAAA,CAAA,0BAgEbd,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,8CAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAU,GAAA,EAAA,EAAA,aAAA,CAAA,sBAAad,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAM,oBAAAJ,SAAA,UAAA,CAAA,GDvGvB,gBAuCaK,GAvCbC,GAAAC,EAAA,KAAAC,KACAC,IACAC,IACAC,KACAC,KACAC,IAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAN,KACAO,KACAC,qQAmBapB,IAAiC,IAAA,CAAxC,MAAOA,CAAiC,CAC5C,IAAaqB,SAASC,EAA+B,CACnD,KAAKC,UAAUD,CAAK,CACtB,CAEA,IACIE,YAAYF,EAAoB,CAG9BA,IAAU,KAAK9B,UAAUC,SAAS,mBAAsBgC,YAAW,GACrE,KAAKjC,UAAUkC,WAAW,CAAEhC,kBAAmB4B,GAAS,EAAE,EAAI,CAAEK,UAAW,EAAK,CAAE,CAEtF,CA4BAC,YAA6BC,EAA8B,CAA9B,KAAAA,cAAAA,EApCgB,KAAAC,OAAyB,KAS5D,KAAAC,kBAAoB,IAAIC,GAKxB,KAAAC,WAAa,GACJ,KAAAC,gBAAkBA,GAClB,KAAAC,gBAAkBA,GAClB,KAAAC,cAAgBA,GAChB,KAAAC,SAAW,EAE9B,KAAAC,0BAA4BA,GAC5B,KAAAC,0BAA4BA,GAE5B,KAAA/C,UAAY,IAAIgD,GAAW,EAAGC,YAAYC,MACxC,CACEhD,kBAAmB,GACnBK,oBAAqB,GACrB4C,qBAAsB,GACtBC,sBAAuB,EACvB/C,kBAAmBgD,GAAW,IAAIC,KAAQ,oBAAoB,GAEhE,CACEC,WAAYC,GAA0B,IAAM,KAAKf,WAAY,CAAC,oBAAqB,mBAAmB,CAAC,EACxG,EAID,KAAKzC,UAAUC,SAASC,kBAAkBuD,aACvCC,KAAKC,GAAkB,EAAIC,GAAoB,CAAE,EACjDC,UAAW/B,GAAU,KAAKS,kBAAkBuB,KAAKhC,CAAK,CAAC,CAC5D,CAEAiC,iBAAe,CACb,KAAKC,cAAcC,eAAeC,MAAK,CACzC,CAEAC,WAAS,CACP,KAAK1B,WAAa,GAClB,KAAKzC,UAAUoE,MAAM,CACnBlE,kBAAmB,KAAK8B,aAAe,GACvC3B,kBAAmBgD,GAAW,IAAIC,KAAQ,oBAAoB,EAC/D,EACD,KAAKe,uBAAsB,CAC7B,CAEAC,WAAS,CACP,IAAMC,EAAa,KAAKvE,UAAUiC,YAAW,EAC7C,MAAO,CACL,CACEuC,QAASC,EAAYC,yBACrBC,UAAWJ,EAAWlE,kBAAoB,IAAIiD,KAAKiB,EAAWlE,iBAAiB,EAAIuE,QAErF,CACEJ,QAASC,EAAYI,oBACrBC,YAAaP,EAAWrE,mBAE1B,CACEsE,QAASC,EAAYM,sBACrBD,YAAaP,EAAWhE,qBAE1B,CACEiE,QAASC,EAAYO,uBACrBF,YAAaP,EAAWpB,sBAE1B,CACEqB,QAASC,EAAYQ,wBACrBC,aAAcX,EAAWnB,sBAC1B,CAEL,CAEQrB,UAAUF,EAAkC,CAClD,GAAIA,EAAU,CACZ,IAAMsD,EAAc,KAAK9C,cAAc+C,2BAA2BvD,EAAU4C,EAAYC,wBAAwB,EAC1GW,EAAc,KAAKhD,cAAc+C,2BAA2BvD,EAAU4C,EAAYI,mBAAmB,EACrGS,EAAgB,KAAKjD,cAAc+C,2BAA2BvD,EAAU4C,EAAYM,qBAAqB,EACzGQ,EAAiB,KAAKlD,cAAc+C,2BACxCvD,EACA4C,EAAYO,sBAAsB,EAE9BQ,EAAkB,KAAKnD,cAAc+C,2BACzCvD,EACA4C,EAAYQ,uBAAuB,EAGrC,KAAKjF,UAAUyF,SAAS,CACtBpF,kBAAmB8E,GAAaR,UAAYtB,GAAW8B,EAAYR,UAAW,oBAAoB,EAAI,GACtGzE,mBAAoBmF,GAAaP,aAAe,IAAIY,QAAQ,MAAO,MAAM,EACzEnF,oBAAqB+E,GAAeR,aAAe,GACnD3B,qBAAsBoC,GAAgBT,aAAe,GACrD1B,sBAAuBoC,GAAiBN,cAAgB,EACzD,CACH,MAAW,KAAKlF,UAAU2F,OACxB,KAAKxB,UAAS,CAElB,CAEAyB,UAAQ,CACN,KAAKnD,WAAa,GAClB,KAAKzC,UAAU6F,iBAAgB,EAC/B,KAAKxB,uBAAsB,CAC7B,CAEAA,wBAAsB,CACpB,KAAKrE,UAAUqE,uBAAsB,CACvC,iDAvHW7D,GAAiCsF,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAjCvF,EAAiCwF,UAAA,CAAA,CAAA,6BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,4KAIxBE,EAAqB,EAAApE,YAAA,aAAA,EAAAqE,QAAA,CAAA9D,kBAAA,mBAAA,EAAA+D,SAAA,CAAAC,EAAA,EAAAC,mBAAAC,GAAAC,MAAA,GAAAC,KAAA,IAAAC,OAAA,CAAA,CAAA,OAAA,QAAA,EAAA,CAAA,cAAA,EAAA,EAAA,CAAA,aAAA,GAAA,EAAA,WAAA,EAAA,CAAA,YAAA,cAAA,EAAA,mBAAA,EAAA,YAAA,eAAA,cAAA,cAAA,UAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,gBAAA,QAAA,OAAA,UAAA,EAAA,oBAAA,EAAA,aAAA,WAAA,EAAA,CAAA,kBAAA,oBAAA,OAAA,iBAAA,WAAA,GAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,QAAA,EAAA,oBAAA,EAAA,aAAA,WAAA,EAAA,CAAA,kBAAA,wBAAA,EAAA,aAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,sBAAA,EAAA,aAAA,EAAA,CAAA,kBAAA,uBAAA,EAAA,aAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAX,EAAAC,EAAA,CAAAD,EAAA,WC3C3C7G,EAAA,EAAA,OAAA,EAAA,CAAA,EAAwD,EAAA,KAAA,EACjD,EAAA,eAAA,EAEDyH,EAAA,EAAA,wBAAA,CAAA,EAUAlH,EAAA,EAAAmH,GAAA,EAAA,EAAA,eAAA,CAAA,EAKFxH,EAAA,EAAgB,EAElByH,GAAA,CAAA,EACA3H,EAAA,EAAA,KAAA,EAAK,EAAA,gBAAA,CAAA,EAC4D,EAAA,kBAAA,CAAA,EAS3DyH,EAAA,GAAA,QAAA,CAAA,oBAMAA,EAAA,GAAA,iBAAA,KAAA,CAAA,EACAlH,EAAA,GAAAqH,GAAA,EAAA,EAAA,eAAA,CAAA,EAKF1H,EAAA,EACAF,EAAA,GAAA,kBAAA,CAAA,EAMC,GAAA,aAAA,CAAA,oBAKGA,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EAAa,EACF,EACG,EAEpBF,EAAA,GAAA,gBAAA,CAAA,EAA+D,GAAA,kBAAA,CAAA,EAO5D,GAAA,aAAA,EAAA,oBAKGA,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EAA+CC,EAAA,EAAA,oBAA4CC,EAAA,EAAa,EAE1GK,EAAA,GAAAsH,GAAA,EAAA,EAAA,eAAA,CAAA,EAKF3H,EAAA,EACAF,EAAA,GAAA,kBAAA,CAAA,EAMC,GAAA,aAAA,EAAA,oBAKGA,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EAAa,EACF,EACG,EAEpByH,GAAA,GAAA,CAAA,EACFzH,EAAA,EAAM,SAhJFO,EAAA,YAAAqG,EAAAnG,SAAA,EAMER,EAAA,CAAA,EAAAM,EAAA,YAAA,EAAA,EAAkB,eAAA,EAAA,EACG,cAAAqG,EAAAnG,UAAAC,SAAA,iBAAA,EACkC,cAAA,EAAA,EACnC,UAAAkG,EAAArD,yBAAA,EACiB,UAAAqD,EAAApD,yBAAA,EAGxBvD,EAAA,EAAAM,EAAA,OAAAqG,EAAA1D,UAAA,EASsBjD,EAAA,CAAA,EAAA2H,GAAA,SAAAhB,EAAA7D,MAAA,EAOnC9C,EAAA,EAAA2H,GAAA,SAAAhB,EAAA7D,MAAA,EALAxC,EAAA,aAAA,YAAA,EAA2B,YAAA,EAAA,EAWzBN,EAAA,EAAA4H,GAAA,cAAA1H,EAAA,GAAA,GAAA,iDAAA,CAAA,EAGaF,EAAA,CAAA,EAAAM,EAAA,OAAAqG,EAAA1D,UAAA,EAWfjD,EAAA,EAAA2H,GAAA,SAAAhB,EAAA7D,MAAA,EAJAxC,EAAA,aAAA,OAAA,EAAsB,YAAA,EAAA,EAQpBN,EAAA,EAAA4H,GAAA,cAAA1H,EAAA,GAAA,GAAA,qDAAA,CAAA,EAEYF,EAAA,CAAA,EAAAM,EAAA,QAAAqG,EAAAxD,gBAAA0E,OAAA,EACV7H,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,wBAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAAM,EAAA,QAAAqG,EAAAxD,gBAAA2E,UAAA,EACV9H,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,yBAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAAM,EAAA,QAAAqG,EAAAxD,gBAAA4E,SAAA,EACV/H,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,yBAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAAM,EAAA,QAAAqG,EAAAxD,gBAAA6E,OAAA,EACVhI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,yBAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAAM,EAAA,QAAAqG,EAAAxD,gBAAA8E,gBAAA,EACVjI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,gCAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAAM,EAAA,QAAAqG,EAAAxD,gBAAA+E,YAAA,EACVlI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,kCAAA,EAAA,GAAA,EAK+BF,EAAA,CAAA,EAAA2H,GAAA,SAAAhB,EAAA7D,MAAA,EAMnC9C,EAAA,EAAA2H,GAAA,SAAAhB,EAAA7D,MAAA,EAJAxC,EAAA,aAAA,MAAA,EAAqB,YAAA,EAAA,EAQnBN,EAAA,EAAA4H,GAAA,cAAA1H,EAAA,GAAA,GAAA,mDAAA,CAAA,EAEYF,EAAA,CAAA,EAAA4H,GAAA,QAAAjB,EAAAvD,cAAA+E,SAAA,EACVnI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,4BAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA4H,GAAA,QAAAjB,EAAAvD,cAAAgF,WAAA,EACVpI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,8BAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA4H,GAAA,QAAAjB,EAAAvD,cAAAiF,SAAA,EACVrI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,4BAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA4H,GAAA,QAAAjB,EAAAvD,cAAAkF,SAAA,EACVtI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,4BAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA4H,GAAA,QAAAjB,EAAAvD,cAAAmF,MAAA,EAAmCvI,EAAA,EAAAwI,EAAAtI,EAAA,GAAA,GAAA,0BAAA,CAAA,EAElCF,EAAA,CAAA,EAAAM,EAAA,OAAAqG,EAAA1D,UAAA,EAWfjD,EAAA,EAAA2H,GAAA,SAAAhB,EAAA7D,MAAA,EAJAxC,EAAA,aAAA,UAAA,EAAyB,YAAA,EAAA,EAQvBN,EAAA,EAAA4H,GAAA,cAAA1H,EAAA,GAAA,GAAA,oDAAA,CAAA,EAEYF,EAAA,CAAA,EAAA4H,GAAA,QAAAjB,EAAAzD,gBAAAuF,UAAA,EACVzI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,IAAA,sCAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA4H,GAAA,QAAAjB,EAAAzD,gBAAAwF,UAAA,EACV1I,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,IAAA,qCAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA4H,GAAA,QAAAjB,EAAAzD,gBAAAyF,cAAA,EACV3I,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,IAAA,0CAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA4H,GAAA,QAAAjB,EAAAzD,gBAAA0F,IAAA,EACV5I,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,IAAA,yCAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA4H,GAAA,QAAAjB,EAAAzD,gBAAA2F,QAAA,EACV7I,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,IAAA,+CAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA4H,GAAA,QAAAjB,EAAAzD,gBAAA4F,YAAA,EACV9I,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,IAAA,uCAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA4H,GAAA,QAAAjB,EAAAzD,gBAAA6F,QAAA,EACV/I,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,IAAA,mCAAA,EAAA,GAAA,kBD/GR8I,EAAYC,GACZC,EAAeC,EACfC,GACAC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAcC,GACdC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,GACAC,GAAmBC,GACnBC,GAAeC,GAAAC,GACfC,GAA0BC,EAAA,EAAAC,OAAA,CAAA;iGAAA,CAAA,CAAA,CAAA,SAGjB3J,CAAiC,GAAA,2BGzBtC4J,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,2CAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,CAAA,sBAAqCL,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAC,SAAAC,SAAA,UAAA,CAAA,GDd7C,gBA2CaC,GA3CbC,GAAAC,EAAA,KACAC,KACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,IAEAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,4OAqBatB,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CACzC,IAAauB,SAASC,EAA+B,CACnD,KAAKC,UAAUD,CAAK,CACtB,CAEA,IACIE,YAAYF,EAAoB,CAG9B,KAAK5B,WAAWC,SAAS,UAAa8B,YAAW,IAAOH,GAC1D,KAAK5B,UAAUgC,WAAW,CAAE9B,SAAU0B,GAAS,EAAE,EAAI,CAAEK,UAAW,EAAK,CAAE,CAE7E,CAuBAC,YAC8CC,EAC3BC,EAA8B,CADH,KAAAD,OAAAA,EAC3B,KAAAC,cAAAA,EAjC0B,KAAAC,OAAyB,KAS5D,KAAAC,kBAAoB,IAAIC,GAKxB,KAAAC,WAAa,GACJ,KAAAC,SAAW,EAE9B,KAAAC,0BAA4BA,GAC5B,KAAAC,0BAA4BA,GAE5B,KAAA3C,UAAY,IAAI4C,GAAW,EAAGC,YAAYC,MACxC,CACE5C,SAAU,IAEZ,CACE6C,WAAYC,GAA0B,IAAM,KAAKR,WAAY,CAAC,UAAU,CAAC,EAC1E,EAGH,KAAAS,kBAA8B,CAACC,GAAOC,GAAK,EAMzC,KAAKnD,UAAUC,SAASC,SAASkD,aAC9BC,KAAKC,GAAkB,EAAIC,GAAoB,CAAE,EACjDC,UAAW5B,GAAU,KAAKU,kBAAkBmB,KAAK7B,CAAK,CAAC,CAC5D,CAEA8B,iBAAe,CACb,KAAKC,cAAcC,eAAeC,MAAK,CACzC,CAEAC,WAAS,CACP,KAAKtB,WAAa,GAClB,KAAKxC,UAAU+D,MAAM,CAAE7D,SAAU,KAAK4B,aAAe,EAAE,CAAE,EACzD,KAAKkC,uBAAsB,CAC7B,CAEAC,WAAS,CACP,IAAMC,EAAa,KAAKlE,UAAU+B,YAAW,EAM7C,MAAO,CALiB,CACtBoC,QAASC,EAAYC,iBACrBC,YAAaJ,EAAWhE,SAGH,CACzB,CAEQ2B,UAAUF,EAAkC,CAClD,GAAIA,EAAU,CACZ,IAAMzB,EAAW,KAAKkC,cAAcmC,2BAA2B5C,EAAUyC,EAAYC,gBAAgB,EAErG,KAAKrE,UAAUwE,SAAS,CACtBtE,UAAWA,GAAUoE,aAAe,IAAIG,QAAQ,MAAO,MAAM,EAC9D,CACH,MAAW,KAAKzE,UAAU0E,OACxB,KAAKZ,UAAS,CAElB,CAEAa,UAAQ,CACN,KAAKnC,WAAa,GAClB,KAAKxC,UAAU4E,iBAAgB,EAC/B,KAAKZ,uBAAsB,CAC7B,CAEAA,wBAAsB,CACpB,KAAKhE,UAAUgE,uBAAsB,CACvC,iDApFW5D,GAA8ByE,EAoC/BC,EAAiB,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BApChB3E,EAA8B4E,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,4KAIrBE,EAAqB,EAAAtD,YAAA,aAAA,EAAAuD,QAAA,CAAA/C,kBAAA,mBAAA,EAAAgD,SAAA,CAAAC,EAAA,EAAAC,mBAAAC,GAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,OAAA,QAAA,EAAA,CAAA,aAAA,GAAA,EAAA,WAAA,EAAA,CAAA,YAAA,WAAA,EAAA,mBAAA,EAAA,YAAA,eAAA,cAAA,cAAA,UAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAX,EAAAC,EAAA,CAAAD,EAAA,WC/C3C7F,EAAA,EAAA,OAAA,EAAA,CAAA,EAAwD,EAAA,KAAA,EACjD,EAAA,eAAA,EAEDyG,EAAA,EAAA,wBAAA,CAAA,EAUAlG,EAAA,EAAAmG,GAAA,EAAA,EAAA,eAAA,CAAA,EAKFxG,EAAA,EAAgB,EAElByG,GAAA,CAAA,EACA3G,EAAA,EAAA,KAAA,EACE2G,GAAA,EAAA,CAAA,EACFzG,EAAA,EAAM,SAvBFO,EAAA,YAAAqF,EAAAnF,SAAA,EAMER,EAAA,CAAA,EAAAM,EAAA,YAAA,EAAA,EAAkB,eAAA,EAAA,EACG,cAAAqF,EAAAnF,UAAAC,SAAA,QAAA,EACyB,cAAA,EAAA,EAC1B,UAAAkF,EAAAzC,yBAAA,EACiB,UAAAyC,EAAAxC,yBAAA,EAGxBnD,EAAA,EAAAM,EAAA,OAAAqF,EAAA3C,UAAA,kBDgBjByD,EAAYC,GACZC,EAAeC,EACfC,GACAC,GACAC,GACAC,GAAqBC,GAAAC,GACrBC,GACAC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,GACAC,GACAC,GACAC,GAA0BC,EAAA,EAAAC,OAAA,CAAA;iGAAA,CAAA,CAAA,CAAA,SAGjBnH,CAA8B,GAAA,uCG1CzCoH,EAAA,CAAA,EACEC,EAAA,EAAA,eAAA,CAAA,EAAcC,EAAA,UAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAWF,EAAAG,UAAAN,CAAA,CAAiB,CAAA,CAAA,EACxCO,EAAA,CAAA,EACAT,EAAA,EAAA,SAAA,CAAA,EAAsB,EAAA,UAAA,EACVS,EAAA,EAAA,QAAA,EAAMC,EAAA,EAAW,EACpB,gCAJiCC,EAAA,EAAAC,GAAA,aAAAC,CAAA,EAC1CF,EAAA,EAAAG,EAAA,IAAAD,EAAA,GAAA,6BAiBFb,EAAA,EAAA,aAAA,EAAA,EACES,EAAA,CAAA,EACFC,EAAA,0BAFqCK,EAAA,QAAAC,CAAA,EACnCL,EAAA,EAAAG,EAAA,IAAAE,EAAA,GAAA,6BAFJjB,EAAA,CAAA,EACEkB,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,CAAA,yBAA4BP,EAAA,EAAAI,EAAA,UAAAI,CAAA,GDpBhC,IA8BaC,GA9BbC,GAAAC,EAAA,KAAAC,KAEAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,oDAgBahB,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CAGzC,IAA+BiB,KAAKC,EAAe,CACjD,KAAKC,aAAaC,IAAIF,CAAK,CAC7B,CAeAG,YAC8CC,EAC3BC,EAAkC,CADP,KAAAD,OAAAA,EAC3B,KAAAC,iBAAAA,EArB0B,KAAAC,OAAyB,KAK5D,KAAAC,YAAc,IAAIC,GAElB,KAAAC,WAAa,GAEvB,KAAAC,aAAe,IAAIC,GAAsB,CAAA,CAAE,EAC3C,KAAAC,UAAY,IAAIC,GAAU,CACxBC,eAAgB,KAAKJ,aACtB,EAGD,KAAAK,kBAA8B,CAACC,GAAOC,GAAK,EAC3C,KAAAC,SAAW,IAAIP,GAAoB,EAAE,EAClB,KAAAV,aAAekB,EAAiB,CAAA,CAAE,EAMnD,IAAMC,EAAiB,KAAKF,SAASG,aAAaC,KAAKC,GAAU,EAAE,CAAC,EACpE,KAAKC,cAAgBC,EAAc,CAACL,EAAgB,KAAKhB,OAAOsB,UAAU,CAAC,EAAEJ,KAC3EK,GAAa,GAAG,EAChBC,EAAU,CAAC,CAACC,EAAYC,CAAS,IACxB,KAAKzB,iBAAiB0B,iBAAiB,WAAY,CACxDD,UAAWA,EACXE,QAASC,EAAYC,aACrBC,SAAU,GACVN,WAAYA,GAAc,GAC3B,CACF,EACDO,EAAKC,GAASA,EAAKC,SAAW,CAAA,CAAE,CAAC,CAErC,CAEAC,UAAUC,EAAwB,CAChC,KAAKC,OAAOD,EAAMxC,KAAK,EACvB,KAAKkB,SAASwB,SAAS,IAAI,CAC7B,CAEAC,YAAYC,EAAiC,CACtCA,GAAKC,QAAQ7C,QAGlB,KAAKyC,OAAOG,EAAIC,OAAO7C,KAAK,EAC5B,KAAKkB,SAASwB,SAAS,IAAI,EAC7B,CAEQD,OAAOG,EAAW,CACxB,IAAM7C,EAAO,KAAKE,aAAY,EACzBF,EAAK+C,SAASF,CAAG,IACpB7C,EAAKgD,KAAKH,CAAG,EACb,KAAK3C,aAAaC,IAAIH,CAAI,EAC1B,KAAKW,aAAagC,SAAS3C,CAAI,EAC/B,KAAKW,aAAasC,YAAW,EAC7B,KAAKzC,YAAY0C,KAAKlD,CAAI,EAE9B,CAEA7B,UAAUsE,EAAmB,CAC3B,IAAMI,EAAMJ,EAAMU,KAAKlD,MACjBD,EAAO,KAAKE,aAAY,EAAGkD,OAAQC,GAAMA,IAAMR,CAAG,EACxD,KAAK3C,aAAaC,IAAIH,CAAI,EAC1B,KAAKW,aAAagC,SAAS3C,CAAI,EAC/B,KAAKW,aAAasC,YAAW,EAC7B,KAAKzC,YAAY0C,KAAKlD,CAAI,CAC5B,iDAtEWjB,GAA8BuE,EAqB/BC,EAAiB,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BArBhBzE,EAA8B0E,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,OAAA,CAAAnD,OAAA,CAAA,EAAA,SAAA,SACrBoD,EAAqB,EAAA3D,KAAA,MAAA,EAAA4D,QAAA,CAAApD,YAAA,aAAA,EAAAqD,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,kBAAA,iBAAA,EAAA,CAAA,aAAA,OAAA,EAAA,aAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,uBAAA,cAAA,kBAAA,gCAAA,kBAAA,aAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,UAAA,YAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WC/B3CxG,EAAA,EAAA,gBAAA,EAAA,CAAA,EACEiB,EAAA,EAAAyF,GAAA,EAAA,EAAA,eAAA,CAAA,EAQA1G,EAAA,EAAA,QAAA,CAAA,mBAMEC,EAAA,uBAAA,SAAAC,EAAA,CAAAyG,OAAAxG,EAAAyG,CAAA,EAAArG,EAAwBkG,EAAA5B,UAAA3E,CAAA,CAAiB,CAAA,CAAA,EAN3CQ,EAAA,EAOE,EAEJV,EAAA,EAAA,mBAAA,EAAA,CAAA,EAAqDC,EAAA,iBAAA,SAAAC,EAAA,CAAAyG,OAAAxG,EAAAyG,CAAA,EAAArG,EAAkBkG,EAAAxB,YAAA/E,CAAA,CAAmB,CAAA,CAAA,EACxFe,EAAA,EAAA4F,GAAA,EAAA,EAAA,eAAA,CAAA,eAKFnG,EAAA,4BAxB0CK,EAAA,cAAA0F,EAAAzD,YAAA,EACVrC,EAAA,CAAA,EAAAI,EAAA,UAAA0F,EAAAlE,aAAA,CAAA,EAS5B5B,EAAA,EAAAC,GAAA,cAAAkG,EAAA,EAAA,EAAA,0BAAA,CAAA,EACA/F,EAAA,kBAAAgG,CAAA,EAA2B,gCAAAN,EAAApD,iBAAA,EACwB,kBAAA2D,CAAA,EAChB,cAAAP,EAAAjD,QAAA,EAMtB7C,EAAA,CAAA,EAAAI,EAAA,OAAA+F,EAAA,EAAA,GAAAL,EAAA3C,aAAA,CAAA,kBDCbmD,EAAYC,GAAAC,GAAAC,GACZC,GACAC,GAAmBC,GAAAC,GAAAC,GACnBC,GAAcC,GAAAC,GAAAC,GAAAC,GACdC,GAAaC,GACbC,GAAiBC,EACjBC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAgBC,EAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAGPrH,CAA8B,GAAA,uCG9B3CsH,EAAA,EAAA,SAAA,CAAA,EAKEC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,eAAe,EAAI,CAAC,CAAA,CAAA,EAE7BC,EAAA,CAAA,mBACFC,EAAA,QADEC,EAAA,EAAAC,EAAA,MAAAC,EAAA,EAAA,EAAA,8CAAA,EAAA;CAAA,6BAiCQZ,EAAA,EAAA,aAAA,EAAA,EACEQ,EAAA,CAAA,mBACFC,EAAA,0BAF2CI,EAAA,QAAAC,EAAAC,KAAA,EACzCL,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAE,EAAAE,OAAA,EAAA,GAAA,wDA/BVhB,EAAA,EAAA,MAAA,EAAMQ,EAAA,CAAA,mBAA+DC,EAAA,EACrET,EAAA,EAAA,OAAA,EAAA,CAAA,EAAwD,EAAA,gBAAA,CAAA,EACS,EAAA,kBAAA,CAAA,EAS3DiB,EAAA,EAAA,QAAA,CAAA,mBAMAA,EAAA,EAAA,gBAAA,EACFR,EAAA,EACAT,EAAA,GAAA,kBAAA,CAAA,EAMC,GAAA,aAAA,CAAA,oBAKGkB,EAAA,GAAAC,GAAA,EAAA,EAAA,aAAA,EAAA,EAGFV,EAAA,EAAa,EAEfT,EAAA,GAAA,SAAA,EAAA,EAAwBC,EAAA,QAAA,UAAA,CAAAC,EAAAkB,CAAA,EAAA,IAAAhB,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,eAAe,EAAK,CAAC,CAAA,CAAA,EACpDP,EAAA,GAAA,UAAA,EAAUQ,EAAA,GAAA,OAAA,EAAKC,EAAA,EAAW,EACnB,EACK,EAElBS,EAAA,GAAAG,GAAA,EAAA,EAAA,aAAA,oBAxCMX,EAAA,EAAAY,EAAAV,EAAA,EAAA,GAAA,6CAAA,CAAA,EACAF,EAAA,CAAA,EAAAG,EAAA,YAAAT,EAAAmB,SAAA,EACmCb,EAAA,CAAA,EAAAc,GAAA,SAAApB,EAAAqB,MAAA,EAMnCf,EAAA,EAAAc,GAAA,SAAApB,EAAAqB,MAAA,EAHAZ,EAAA,YAAA,EAAA,EAAmB,aAAA,OAAA,EAUjBH,EAAA,EAAAgB,GAAA,cAAAd,EAAA,EAAA,GAAA,kDAAA,CAAA,EASFF,EAAA,CAAA,EAAAc,GAAA,SAAApB,EAAAqB,MAAA,EAJAZ,EAAA,aAAA,WAAA,EAA0B,YAAA,EAAA,EAQxBH,EAAA,EAAAgB,GAAA,cAAAd,EAAA,GAAA,GAAA,8CAAA,CAAA,EAE6BF,EAAA,CAAA,EAAAG,EAAA,UAAAT,EAAAuB,SAAA,GDxCvC,OAsCaC,GAtCbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAJ,KACAK,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,+EAoBanB,IAAsC,IAAA,CAA7C,MAAOA,CAAsC,CAgBjDoB,YACmBC,EACAC,EAAkC,CADlC,KAAAD,cAAAA,EACA,KAAAC,iBAAAA,EAjB0B,KAAAzB,OAAyB,KAG5D,KAAA0B,gBAAkB,IAAIC,GACxB,KAAAC,aAAe,IAAIC,GAAyB,EAAK,EACzD,KAAAC,YAAc,KAAKF,aAAaG,aAAY,EAAGC,KAAKC,GAAKC,GAAe,KAAKR,gBAAgBS,KAAKD,CAAU,CAAC,CAAC,EAEtG,KAAAE,MAAQ,IAAIC,KACpB,KAAAvC,UAAY,IAAIwC,GAAW,EAAGC,YAAYC,MAAM,CAC9CC,YAAaC,GAAW,KAAKN,MAAMO,QAAQ,KAAKP,MAAMQ,QAAO,EAAK,CAAC,EAAGC,EAAoB,EAC1FC,SAAUC,GAAiBC,KAC5B,EAEkB,KAAA9C,UAAY+C,EAK5B,CAEHnE,eAAeoD,EAAmB,CAChC,KAAKN,aAAasB,KAAKhB,CAAU,CACnC,CAEAiB,UAAUC,EAAqB,CAC7B,IAAMC,EAAa,KAAKvD,UAAUwD,YAAW,EACvCC,EAAe,KAAK9B,iBAAiB+B,QAAQ,sDAAsD,EACzG,MAAO,CACL,CACEC,QAAS,KAAKjC,cAAckC,WAAWC,EAAYC,YAAY,EAC/DC,YAAa,GAAGN,CAAY,IAAIH,CAAa,IAE/C,CACEK,QAAS,KAAKjC,cAAckC,WAAWC,EAAYG,mBAAmB,EACtEC,UAAWV,EAAWZ,YAAc,IAAIJ,KAAKgB,EAAWZ,WAAW,EAAIuB,QAEzE,CACEP,QAAS,KAAKjC,cAAckC,WAAWC,EAAYZ,gBAAgB,EACnEc,YAAaR,EAAWP,UAE1B,CACEW,QAAS,KAAKjC,cAAckC,WAAWC,EAAYM,kBAAkB,EACrEJ,YAAaK,GACd,CAEL,CAEAC,aAAW,CACT,KAAKzC,gBAAgBS,KAAK,EAAK,CACjC,iDAlDWhC,GAAsCiE,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAAtCnE,EAAsCoE,UAAA,CAAA,CAAA,oCAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,wGAC7BE,EAAqB,CAAA,EAAAC,QAAA,CAAAlD,gBAAA,iBAAA,EAAAmD,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,OAAA,QAAA,EAAA,CAAA,aAAA,GAAA,QAAA,mBAAA,QAAA,UAAA,EAAA,QAAA,EAAA,OAAA,UAAA,EAAA,CAAA,aAAA,GAAA,QAAA,UAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,aAAA,GAAA,EAAA,WAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,gBAAA,QAAA,OAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,YAAA,EAAA,CAAA,kBAAA,cAAA,OAAA,iBAAA,WAAA,GAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,QAAA,EAAA,oBAAA,EAAA,aAAA,WAAA,EAAA,CAAA,kBAAA,WAAA,EAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAT,EAAAC,EAAA,IAAAD,EAAA,ICvC3ChF,EAAA,EAAA0F,GAAA,EAAA,EAAA,SAAA,CAAA,eASA1F,EAAA,EAAA2F,GAAA,GAAA,GAAA,cAAA,KAAA,EAAAC,EAAA,mBALGjG,EAAA,OAAAD,EAAA,EAAA,EAAAuF,EAAA5C,WAAA,IAAA,EAAA,EAAuC,WAAAwD,CAAA,kBDmBtCC,EAAYC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GAAqBC,GAAAC,GACrBC,GAAcC,GACdC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,GACAC,GAAmBC,GACnBC,GAAeC,GAAAC,GACfC,GAAeC,GAAAC,GACfC,GAAaC,EAAA,EAAAC,OAAA,CAAA;mHAAA,CAAA,CAAA,CAAA,SAKJlH,CAAsC,GAAA,IEtCnD,IAAAmH,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,8BEMQC,EAAA,EAAA,aAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,2CAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,EAAA,sBAAqCL,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAC,wBAAAC,SAAA,UAAA,CAAA,0BAyBnCd,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,kDAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAQ,GAAA,EAAA,EAAA,aAAA,CAAA,sBAAaZ,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAI,wBAAAF,SAAA,UAAA,CAAA,0BAoCbd,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,qDAAA,EAAA,GAAA,6BAFJC,EAAA,CAAA,EACEC,EAAA,EAAAU,GAAA,EAAA,EAAA,aAAA,CAAA,sBAAad,EAAA,EAAAM,EAAA,OAAAC,EAAAC,UAAAC,SAAAM,2BAAAJ,SAAA,UAAA,CAAA,GD3EvB,gBA2CaK,GA3CbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAIAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAF,KACAG,KACAC,qQAoBarB,IAAuC,IAAA,CAA9C,MAAOA,CAAuC,CAClD,IAAasB,kBAAkBC,EAA2B,CAGpDA,IAAU,KAAK/B,UAAUC,SAAS,2BAA8B+B,YAAW,GAC7E,KAAKhC,UAAUiC,WAAW,CAAEC,2BAA4BH,CAAK,CAAE,CAEnE,CACA,IAAaI,SAASJ,EAA+B,CACnD,KAAKK,UAAUL,CAAK,CACtB,CAGA,IACIM,YAAYN,EAAoB,CAG9BA,IAAU,KAAK/B,UAAUC,SAAS,yBAA4B+B,YAAW,GAC3E,KAAKhC,UAAUiC,WAAW,CAAE/B,wBAAyB6B,GAAS,EAAE,EAAI,CAAEO,UAAW,EAAK,CAAE,CAE5F,CA8BAC,YAA6BC,EAA8B,CAA9B,KAAAA,cAAAA,EAvCgB,KAAAC,OAAyB,KAU5D,KAAAC,kBAAoB,IAAIC,GAKxB,KAAAC,WAAa,GACJ,KAAAC,SAAW,EACX,KAAAC,gBAAkBA,GAErC,KAAAC,0BAA4BA,GAC5B,KAAAC,0BAA4BA,GAE5B,KAAAhD,UAAY,IAAIiD,GAAW,EAAGC,YAAYC,MACxC,CACEjB,2BAA4B,GAC5B3B,2BAA4B,GAC5B6C,0BAA2B,GAC3BC,wBAAyB,GACzBnD,wBAAyB,GACzBG,wBAAyBiD,GAAW,IAAIC,KAAQ,oBAAoB,GAEtE,CACEC,WAAYC,GACV,IAAM,KAAKb,WACX,CAAC,0BAA2B,yBAAyB,CAAC,EAEzD,EAID,KAAK5C,UAAUC,SAASC,wBAAwBwD,aAC7CC,KAAKC,GAAkB,EAAIC,GAAoB,CAAE,EACjDC,UAAW/B,GAAU,KAAKW,kBAAkBqB,KAAKhC,CAAK,CAAC,CAC5D,CAEAiC,iBAAe,CACb,KAAKC,cAAcC,eAAeC,MAAK,CACzC,CAEAC,UAAQ,CACN,KAAKxB,WAAa,GAClB,KAAK5C,UAAUqE,iBAAgB,EAC/B,KAAKC,uBAAsB,CAC7B,CAEAA,wBAAsB,CACpB,KAAKtE,UAAUsE,uBAAsB,CACvC,CAEQlC,UAAUD,EAAkC,CAClD,GAAIA,EAAU,CACZ,IAAMoC,EAAuB,KAAK/B,cAAcgC,2BAC9CrC,EACAsC,EAAYC,4BAA4B,EAEpCC,EAAuB,KAAKnC,cAAcgC,2BAC9CrC,EACAsC,EAAYG,4BAA4B,EAEpCC,EAAsB,KAAKrC,cAAcgC,2BAC7CrC,EACAsC,EAAYK,2BAA2B,EAEnCC,EAAoB,KAAKvC,cAAcgC,2BAC3CrC,EACAsC,EAAYO,yBAAyB,EAEjCC,EAAoB,KAAKzC,cAAcgC,2BAC3CrC,EACAsC,EAAYS,yBAAyB,EAEjCC,EAAoB,KAAK3C,cAAcgC,2BAC3CrC,EACAsC,EAAYW,yBAAyB,EAGvC,KAAKpF,UAAUqF,SAAS,CACtBnD,2BAA4BqC,GAAsBe,aAAe,GACjE/E,2BAA4BoE,GAAsBW,aAAe,GACjElC,0BAA2ByB,GAAqBS,aAAe,GAC/DjC,wBAAyB0B,GAAmBO,aAAe,GAC3DpF,wBAAyB+E,GAAmBK,aAAe,GAC3DjF,wBAAyB8E,GAAmBI,UACxCjC,GAAW6B,EAAkBI,UAAW,oBAAoB,EAC5D,GACL,CACH,MAAW,KAAKvF,UAAUwF,OACxB,KAAKC,UAAS,CAElB,CAEAC,WAAS,CACP,IAAMC,EAAa,KAAK3F,UAAUgC,YAAW,EAC7C,MAAO,CACL,CACE4D,QAASnB,EAAYC,6BACrBY,YAAaK,EAAWzD,4BAE1B,CACE0D,QAASnB,EAAYS,0BACrBI,YAAaK,EAAWzF,yBAE1B,CACE0F,QAASnB,EAAYG,6BACrBU,YAAaK,EAAWpF,4BAE1B,CACEqF,QAASnB,EAAYO,0BACrBM,YAAaK,EAAWtC,yBAE1B,CACEuC,QAASnB,EAAYK,4BACrBQ,YAAaK,EAAWvC,2BAE1B,CACEwC,QAASnB,EAAYW,0BACrBG,UAAWI,EAAWtF,wBAA0B,IAAIkD,KAAKoC,EAAWtF,uBAAuB,EAAIwF,OAChG,CAEL,CAEAJ,WAAS,CACP,KAAK7C,WAAa,GAClB,KAAK5C,UAAU8F,MAAM,CACnB5F,wBAAyB,KAAKmC,aAAe,GAC7ChC,wBAAyBiD,GAAW,IAAIC,KAAQ,oBAAoB,EACrE,EACD,KAAKe,uBAAsB,CAC7B,iDArJW9D,GAAuCuF,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAvCxF,EAAuCyF,UAAA,CAAA,CAAA,mCAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,kNAW9BE,EAAqB,EAAAhE,YAAA,aAAA,EAAAiE,QAAA,CAAA5D,kBAAA,mBAAA,EAAA6D,SAAA,CAAAC,EAAA,EAAAC,mBAAAC,GAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,OAAA,QAAA,EAAA,CAAA,YAAA,EAAA,EAAA,CAAA,aAAA,GAAA,EAAA,WAAA,EAAA,CAAA,YAAA,oBAAA,EAAA,mBAAA,EAAA,YAAA,eAAA,cAAA,cAAA,UAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,gBAAA,QAAA,OAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,YAAA,EAAA,CAAA,OAAA,iBAAA,kBAAA,0BAAA,WAAA,GAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,QAAA,EAAA,oBAAA,EAAA,YAAA,YAAA,EAAA,CAAA,kBAAA,6BAAA,EAAA,aAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAX,EAAAC,EAAA,CAAAD,EAAA,WCtD3C9G,EAAA,EAAA,OAAA,EAAA,CAAA,EAAwD,EAAA,KAAA,EACjD,EAAA,eAAA,EAED0H,EAAA,EAAA,wBAAA,CAAA,EAUAnH,EAAA,EAAAoH,GAAA,EAAA,EAAA,eAAA,CAAA,EAKFzH,EAAA,EAAgB,EAElB0H,GAAA,CAAA,EACA5H,EAAA,EAAA,KAAA,EAAK,EAAA,gBAAA,CAAA,EAC4D,EAAA,kBAAA,CAAA,EAS3D0H,EAAA,GAAA,QAAA,CAAA,oBAMAA,EAAA,GAAA,iBAAA,KAAA,CAAA,EACAnH,EAAA,GAAAsH,GAAA,EAAA,EAAA,eAAA,CAAA,EAKF3H,EAAA,EACAF,EAAA,GAAA,kBAAA,CAAA,EAMC,GAAA,aAAA,CAAA,oBAKGA,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,aAAA,EAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EAAa,EAEfK,EAAA,GAAAuH,GAAA,EAAA,EAAA,eAAA,CAAA,EAKF5H,EAAA,EAAkB,EAEpB0H,GAAA,GAAA,CAAA,EACF1H,EAAA,EAAM,SAlFFO,EAAA,YAAAsG,EAAApG,SAAA,EAMER,EAAA,CAAA,EAAAM,EAAA,YAAA,EAAA,EAAkB,eAAA,EAAA,EACG,cAAAsG,EAAApG,UAAAC,SAAA,uBAAA,EACwC,cAAA,EAAA,EACzC,UAAAmG,EAAArD,yBAAA,EACiB,UAAAqD,EAAApD,yBAAA,EAGxBxD,EAAA,EAAAM,EAAA,OAAAsG,EAAAxD,UAAA,EASsBpD,EAAA,CAAA,EAAA4H,GAAA,SAAAhB,EAAA3D,MAAA,EAMnCjD,EAAA,EAAA4H,GAAA,SAAAhB,EAAA3D,MAAA,EAHA3C,EAAA,YAAA,EAAA,EAAmB,aAAA,YAAA,EAUjBN,EAAA,EAAA6H,GAAA,cAAA3H,EAAA,GAAA,GAAA,uDAAA,CAAA,EAGaF,EAAA,CAAA,EAAAM,EAAA,OAAAsG,EAAAxD,UAAA,EAUfpD,EAAA,EAAA4H,GAAA,SAAAhB,EAAA3D,MAAA,EAFA3C,EAAA,YAAA,EAAA,EAAmB,aAAA,UAAA,EAOjBN,EAAA,EAAA6H,GAAA,cAAA3H,EAAA,GAAA,GAAA,4DAAA,CAAA,EAEYF,EAAA,CAAA,EAAA6H,GAAA,QAAAjB,EAAAtD,gBAAAwE,UAAA,EACV9H,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,sCAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA6H,GAAA,QAAAjB,EAAAtD,gBAAAyE,UAAA,EACV/H,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,qCAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA6H,GAAA,QAAAjB,EAAAtD,gBAAA0E,cAAA,EACVhI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,0CAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA6H,GAAA,QAAAjB,EAAAtD,gBAAA2E,IAAA,EACVjI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,yCAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA6H,GAAA,QAAAjB,EAAAtD,gBAAA4E,QAAA,EACVlI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,+CAAA,EAAA,GAAA,EAEUF,EAAA,CAAA,EAAA6H,GAAA,QAAAjB,EAAAtD,gBAAA6E,QAAA,EACVnI,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,mCAAA,EAAA,GAAA,EAGWF,EAAA,CAAA,EAAAM,EAAA,OAAAsG,EAAAxD,UAAA,kBD5CnBgF,EAAYC,GACZC,EAAeC,EACfC,GACAC,GACAC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAeC,GAAAC,GACfC,GAAmBC,GACnBC,GAAcC,GACdC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,GACAC,GAA0BC,EAAA,EAAAC,OAAA,CAAA;iGAAA,CAAA,CAAA,CAAA,SAGjBhJ,CAAuC,GAAA,IE3CpD,OAcaiJ,GAdbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KAGAC,KACAC,uBAOaR,IAAqC,IAAA,CAA5C,MAAOA,UAA6CS,EAA8C,CALxGC,aAAA,qBASW,KAAAC,QAAyB,KACW,KAAAC,OAAyB,KAC7D,KAAAC,YAAc,GAEb,KAAAC,mBAAqB,IAAIC,GAEhB,KAAAC,cAAgB,OAChB,KAAAC,YAAc,KAAKC,OAAOC,UAAUF,YACpC,KAAAG,yBAA2BC,EAAS,IAChC,KAAKC,iBAAgB,EACtBC,OAAQC,GAAgBA,EAAYC,cAAgB,KAAKd,OAAO,CACrF,EAdD,IAA+Be,aAAaC,EAA6B,CACvE,KAAKC,gBAAgBD,CAAK,CAC5B,CAcyBE,aAAaC,EAAmB,QAAAC,GAAA,sBACvD,IAAMC,EAAQ,KAAKf,YAAc,MAAMgB,GAAe,KAAKhB,YAAYiB,cAAcJ,CAAS,CAAC,EAAI,CAAA,EACnG,OAAO,KAAKK,gBAAgBH,CAAK,CACnC,GAEmBI,iBAAe,CAChC,OAAO,KAAKC,aAAaC,aAAY,EAAGC,KACtCC,GAAa,GAAG,EAChBC,GAAoB,EACpBC,EAAWC,GAAW,KAAK1B,aAAa2B,cAAcD,CAAM,GAAKE,EAAG,CAAA,CAAE,CAAC,EACvEC,EAAKC,GAAoB,KAAKZ,gBAAgBY,CAAe,CAAC,EAC9DD,EAAKC,GAAoBA,EAAgBxB,OAAQyB,GAAMA,EAAEvB,cAAgB,KAAKd,OAAO,CAAC,CAAC,CAE3F,CAEQwB,gBAAgBH,EAAuB,CAC7C,OACEA,GAAOc,IACJG,IACE,CACCC,KAAMD,EAAOE,YACb1B,YAAawB,EAAOG,OACpBpC,cAAe,KAAKA,eACI,GACzB,CAAA,CAET,CAEAqC,UAAU7B,EAAiC,CACzC,IAAME,EAAe,KAAKJ,iBAAgB,EAC1C,GAAI,CAACI,EAAa4B,KAAMC,GAAMA,EAAE9B,cAAgBD,EAAYC,WAAW,EAAG,CACxE,IAAM+B,EAAkB,CAAC,GAAG9B,EAAcF,CAAW,EACrD,KAAKF,iBAAiBmC,IAAID,CAAe,EACzC,KAAK1C,mBAAmB4C,KAAKF,CAAe,CAC9C,CACF,CAEAG,aAAanC,EAAiC,CAC5C,IAAME,EAAe,KAAKJ,iBAAgB,EAAGC,OAAQgC,GAAMA,EAAE9B,cAAgBD,EAAYC,WAAW,EACpG,KAAKH,iBAAiBmC,IAAI/B,CAAY,EACtC,KAAKZ,mBAAmB4C,KAAKhC,CAAY,CAC3C,CAEAkC,uBAAuBC,EAAoB,CACzC,KAAKC,iBAAiBD,CAAU,CAClC,sEA9DW7D,CAAoC,IAAA+D,GAApC/D,CAAoC,CAAA,CAAA,GAAA,CAAA,+BAApCA,EAAoCgE,UAAA,CAAA,CAAA,iCAAA,CAAA,EAAAC,OAAA,CAAAvC,aAAA,eAAAf,QAAA,UAAAC,OAAA,CAAA,EAAA,SAAA,SAK3BsD,EAAqB,EAAArD,YAAA,aAAA,EAAAsD,QAAA,CAAArD,mBAAA,oBAAA,EAAAsD,SAAA,CAAAC,GAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,MAAA,SAAA,mBAAA,eAAA,UAAA,SAAA,UAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,ICnB3CE,EAAA,EAAA,6BAAA,CAAA,eAMEC,EAAA,MAAA,SAAAC,EAAA,CAAA,OAAOH,EAAAvB,UAAA0B,CAAA,CAAiB,CAAA,EAAC,SAAA,SAAAA,EAAA,CAAA,OACfH,EAAAjB,aAAAoB,CAAA,CAAoB,CAAA,EAAC,mBAAA,SAAAA,EAAA,CAAA,OACXH,EAAAhB,uBAAAmB,CAAA,CAA8B,CAAA,EACnDC,EAAA,cARCC,EAAA,eAAAL,EAAAxD,yBAAA,CAAA,EAA2C,UAAAwD,EAAAjE,OAAA,EACxB,SAAAiE,EAAAhE,MAAA,EACF,WAAAsE,EAAAC,EAAA,EAAA,EAAAP,EAAAQ,QAAA,KAAA,MAAAF,IAAAG,OAAAH,EAAAI,GAAA,EAAAC,EAAA,CAAA,EACmB,cAAAX,EAAA/D,WAAA,kBDQ1B2E,EAAYC,GAAEC,EAAgC,EAAAC,cAAA,CAAA,CAAA,CAAA,SAE7C3F,CAAqC,GAAA,IEdlD,OAca4F,GAdbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KAGAC,KACAC,uBAOaR,IAAiD,IAAA,CAAxD,MAAOA,UAAyDS,EAA8C,CALpHC,aAAA,qBAY+C,KAAAC,OAAyB,KAC7D,KAAAC,YAAc,GAEb,KAAAC,mBAAqB,IAAIC,GAEhB,KAAAC,cAAgB,cAChB,KAAAC,mBAAqB,KAAKC,OAAOC,UAAUF,mBAZ9D,IAA+BG,eAAeC,EAAoB,CAChE,KAAKJ,oBAAoBK,kBAAkBD,GAAS,EAAE,CACxD,CACA,IAA+BE,aAAaF,EAA6B,CACvE,KAAKG,gBAAgBH,CAAK,CAC5B,CASyBI,aAAaC,EAAmB,QAAAC,GAAA,sBACvD,IAAMC,EAAgB,KAAKX,mBACvB,MAAMY,GAAe,KAAKZ,mBAAmBa,oBAAoBJ,CAAS,CAAC,EAC3E,CAAA,EACJ,OAAO,KAAKK,gBAAgBH,CAAa,CAC3C,GAEmBI,iBAAe,CAChC,OAAO,KAAKC,aAAaC,aAAY,EAAGC,KACtCC,GAAa,GAAG,EAChBC,GAAoB,EACpBC,EAAWC,GAAY,KAAKtB,mBAAqB,KAAKA,mBAAmBuB,oBAAoBD,CAAM,EAAIE,EAAG,CAAA,CAAE,CAAE,EAC9GC,EAAKC,GAAoB,KAAKZ,gBAAgBY,CAAe,CAAC,CAAC,CAEnE,CAEQZ,gBAAgBH,EAAsC,CAC5D,OACEA,GAAec,IACZE,IACE,CACCC,KAAMD,EAAOC,KACbC,YAAaF,EAAOG,cACpB/B,cAAe,KAAKA,eACI,GACzB,CAAA,CAET,CAEAgC,UAAUC,EAAiC,CACzC,IAAM1B,EAAe,KAAK2B,iBAAgB,EAC1C,GAAI,CAAC3B,EAAa4B,KAAMC,GAAMA,EAAEN,cAAgBG,EAAYH,WAAW,EAAG,CACxE,IAAMO,EAAkB,CAAC,GAAG9B,EAAc0B,CAAW,EACrD,KAAKC,iBAAiBI,IAAID,CAAe,EACzC,KAAKvC,mBAAmByC,KAAKF,CAAe,CAC9C,CACF,CAEAG,aAAaP,EAAiC,CAC5C,IAAM1B,EAAe,KAAK2B,iBAAgB,EAAGO,OAAQL,GAAMA,EAAEN,cAAgBG,EAAYH,WAAW,EACpG,KAAKI,iBAAiBI,IAAI/B,CAAY,EACtC,KAAKT,mBAAmByC,KAAKhC,CAAY,CAC3C,CAEAmC,uBAAuBC,EAAoB,CACzC,KAAKC,iBAAiBD,CAAU,CAClC,sEA7DW1D,CAAgD,IAAA4D,GAAhD5D,CAAgD,CAAA,CAAA,GAAA,CAAA,+BAAhDA,EAAgD6D,UAAA,CAAA,CAAA,8CAAA,CAAA,EAAAC,OAAA,CAAA3C,eAAA,iBAAAG,aAAA,eAAAX,OAAA,CAAA,EAAA,SAAA,SAOvCoD,EAAqB,EAAAnD,YAAA,aAAA,EAAAoD,QAAA,CAAAnD,mBAAA,oBAAA,EAAAoD,SAAA,CAAAC,GAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,MAAA,SAAA,mBAAA,eAAA,SAAA,UAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,ICrB3CE,EAAA,EAAA,6BAAA,CAAA,eAKEC,EAAA,MAAA,SAAAC,EAAA,CAAA,OAAOH,EAAA1B,UAAA6B,CAAA,CAAiB,CAAA,EAAC,SAAA,SAAAA,EAAA,CAAA,OACfH,EAAAlB,aAAAqB,CAAA,CAAoB,CAAA,EAAC,mBAAA,SAAAA,EAAA,CAAA,OACXH,EAAAhB,uBAAAmB,CAAA,CAA8B,CAAA,EACnDC,EAAA,cAPCC,EAAA,eAAAL,EAAAxB,iBAAA,CAAA,EAAmC,SAAAwB,EAAA9D,MAAA,EAClB,WAAAoE,EAAAC,EAAA,EAAA,EAAAP,EAAAQ,QAAA,KAAA,MAAAF,IAAAG,OAAAH,EAAAI,GAAA,EAAAC,EAAA,CAAA,EACmB,cAAAX,EAAA7D,WAAA,kBDS1ByE,EAAYC,GAAEC,EAAgC,EAAAC,cAAA,CAAA,CAAA,CAAA,SAE7CxF,CAAiD,GAAA,IEd9D,OAwBayF,GAxBbC,GAAAC,EAAA,KAAAC,IACAC,IAEAC,KACAC,KACAC,KAWAC,KACAC,uBAOaT,IAAsC,IAAA,CAA7C,MAAOA,CAAsC,CALnDU,aAAA,CAME,KAAAC,WAAaC,GAAMC,SAAQ,EAC3B,KAAAC,iBAAmBC,GAA8B,CAAA,CAAE,EAClC,KAAAC,qBAAuBC,EAAOC,EAAuB,EACrD,KAAAC,aAAe,IAAIC,GAAwB,EAAE,EAC7C,KAAAC,YAAc,KAAKF,aAAaG,aAAY,EAC5C,KAAAC,OAASN,EAAOO,EAAiB,EACjC,KAAAC,iBAAmBR,EAAOS,EAAgB,EAC1C,KAAAC,kBAAoBV,EAAOW,EAAiB,EAC1C,KAAAC,SAAW,KAAKC,gBAAe,EACjC,KAAAC,sBAAwBd,EAAOe,GAAyB,CAAEC,SAAU,EAAI,CAAE,EACjFC,iBAAiBC,EAAoB,CACzC,OAAOA,GAAe,SACxB,KAAKhB,aAAaiB,KAAKD,EAAWE,KAAI,CAAE,EAExC,KAAKlB,aAAaiB,KAAK,EAAE,CAE7B,CACUE,UAAUC,EAAiC,CACnD,KAAKzB,iBAAiB0B,OAAQC,GACvBA,EAAiBC,KAAMC,GAAMA,EAAEC,cAAgBL,EAAYK,WAAW,EAGpEH,EAFE,CAAC,GAAGA,EAAkBF,CAAW,CAG3C,CACH,CAEUM,aAAaN,EAAiC,CACtD,KAAKzB,iBAAiB0B,OAAQC,GACrBA,EAAiBK,OAAQH,GAAMA,EAAEC,cAAgBL,EAAYK,WAAW,CAChF,CACH,CAEMG,2BAA2BC,EAAmBb,EAAkB,QAAAc,GAAA,sBACpE,IAAMC,EAAiB,MAAM,KAAKvB,kBAAkBwB,0BAA0B,KAAKxC,WAAU,CAAE,EAC/F,MAAO,CACLqC,UAAAA,EACAI,OAAQ,CAAEjB,WAAAA,CAAU,EACpBkB,cAAe,CAAEC,OAAQ,GAAIC,SAAU,EAAE,EACzCC,UAAW,KAAK/B,iBAAiBgC,eAAeP,CAAc,EAElE,GAEUpB,iBAAe,CACvB,OAAO4B,EAAc,CAAC,KAAKrC,YAAa,KAAKE,OAAOoC,UAAU,CAAC,EAAEC,KAC/DC,GAAa,GAAG,EAChBC,GAAoB,EACpBC,EAAU,CAAC,CAAC5B,EAAYa,CAAS,IAAMgB,GAAK,KAAKjB,2BAA2BC,EAAWb,CAAU,CAAC,CAAC,EACnG4B,EAAWE,GAAsC,KAAKxC,iBAAiByC,YAAY,KAAKvD,WAAU,EAAIsD,CAAC,CAAC,EACxGE,EACGC,GACCA,GAAiBC,YAAYF,IAC1BG,IACE,CACCC,KAAM,KAAKxC,uBAAuByC,eAC9B,KAAKzC,uBAAuByC,eAAeF,CAAM,EACjD,KAAKtD,qBAAqByD,qBAAqB,KAAK9D,WAAU,EAAI2D,CAAM,EAC5EI,gBAAiB,KAAK1D,qBAAqB2D,mBAAmB,KAAKhE,WAAU,EAAI2D,CAAM,EACvF1B,YAAa0B,EAAO1B,YACpBgC,cAAe,KAAKjE,WAAU,GACN,GACzB,CAAA,CAAE,CACV,CAEL,iDAhEWX,EAAsC,CAAA,+BAAtCA,EAAsC6E,UAAA,CAAA,CAAA,mCAAA,CAAA,EAAAC,OAAA,CAAAnE,WAAA,CAAA,EAAA,YAAA,EAAAG,iBAAA,CAAA,EAAA,kBAAA,CAAA,EAAAiE,QAAA,CAAAjE,iBAAA,wBAAA,EAAAkE,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,MAAA,SAAA,mBAAA,eAAA,UAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,ICxBnDE,EAAA,EAAA,6BAAA,CAAA,4CAIEC,EAAA,MAAA,SAAAC,EAAA,CAAA,OAAOH,EAAA/C,UAAAkD,CAAA,CAAiB,CAAA,EAAC,SAAA,SAAAA,EAAA,CAAA,OACfH,EAAAxC,aAAA2C,CAAA,CAAoB,CAAA,EAAC,mBAAA,SAAAA,EAAA,CAAA,OACXH,EAAAnD,iBAAAsD,CAAA,CAAwB,CAAA,EAC7CC,EAAA,cANCC,EAAA,eAAAL,EAAAvE,iBAAA,CAAA,EAAmC,WAAA6E,EAAAC,EAAA,EAAA,EAAAP,EAAAxD,QAAA,KAAA,MAAA8D,IAAAE,OAAAF,EAAAG,GAAA,EAAAC,EAAA,CAAA,EACC,cAAAC,GAAA,EAAA,EAAA,+BAAAX,EAAA1E,WAAA,CAAA,CAAA,kBDoB1BsF,EAAYC,GAAEC,GAAkCC,EAAyB,EAAAC,cAAA,CAAA,CAAA,CAAA,SAExErG,CAAsC,GAAA,IExBnD,OAgCasG,GAhCbC,GAAAC,EAAA,KAAAC,IACAC,IAEAC,KACAC,KAOAC,KAYAC,KACAC,IACAC,2BAOaV,IAA2C,IAAA,CAAlD,MAAOA,CAA2C,CALxDW,aAAA,CAUE,KAAAC,SAAWC,GAAe,EAAK,EAErB,KAAAC,WAAaC,GAAkB,SAAS,EACjC,KAAAC,YAAcC,GAAa,KAAKH,UAAU,EACjD,KAAAI,cAAgBH,GAAK,EACd,KAAAI,eAAiBF,GAAa,KAAKC,aAAa,EAEjE,KAAAE,qBAAuBP,GAAK,EAC5B,KAAAQ,sBAAwBN,GAA8B,CAAA,CAAE,EACxD,KAAAO,8BAAgCC,EAAS,IAAK,CAC5C,IAAMH,EAAuB,KAAKA,qBAAoB,EACtD,OAAO,KAAKC,sBAAqB,EAAGG,OAAQC,GACrCL,EAGEA,EAAqBM,SAASD,EAAME,IAAI,EAFtC,EAGV,CACH,CAAC,EAES,KAAAC,4BAA8B,IAAIC,GAE3B,KAAAC,qBAAuBC,EAAOC,EAAuB,EACrD,KAAAC,aAAe,IAAIC,GAAwB,EAAE,EAC7C,KAAAC,YAAc,KAAKF,aAAaG,aAAY,EAC5C,KAAAC,OAASN,EAAOO,EAAiB,EACjC,KAAAC,iBAAmBR,EAAOS,EAAgB,EAC1C,KAAAC,kBAAoBV,EAAOW,EAAiB,EAC1C,KAAAC,mBAAqB,KAAKN,OAAOO,UAAUD,mBAC3C,KAAAE,SAAW,KAAKC,gBAAe,EACjC,KAAAC,sBAAwBhB,EAAOiB,GAAyB,CAAEC,SAAU,EAAI,CAAE,EAjC3F,IAA+BC,eAAeC,EAAoB,CAChE,KAAKR,oBAAoBS,kBAAkBD,GAAS,EAAE,CACxD,CAiCUE,iBAAiBC,EAAoB,CACzC,OAAOA,GAAe,SACxB,KAAKrB,aAAasB,KAAKD,EAAWE,KAAI,CAAE,EAExC,KAAKvB,aAAasB,KAAK,EAAE,CAE7B,CAEUE,aAAaC,EAAiC,CACtD,KAAKrC,sBAAsBsC,OAAQtC,GAAyB,CAC1D,IAAIuC,EAAQ,GACNC,EAA+BxC,EAAsByC,IAAKrC,GAAS,CACvE,GAAIA,EAAME,OAAS+B,EAAYK,cAAe,CAC5CH,EAAQ,GACR,IAAMI,EAAsBvC,EAAMwC,aAAazC,OAAQ0C,GAAMA,EAAEC,cAAgBT,EAAYS,WAAW,EACtG,OAAOC,GAAAC,GAAA,GAAK5C,GAAL,CAAYwC,aAAcD,CAAmB,EACtD,CACA,OAAOvC,CACT,CAAC,EACD,OAAKmC,GACHU,QAAQC,KAAK,8BAA8Bb,EAAYK,aAAa,YAAY,EAElF,KAAKnC,4BAA4B4C,KAAK,CAAC,GAAGX,CAA4B,CAAC,EAChEA,CACT,CAAC,CACH,CAEUY,aAAapD,EAA6C,CAClE,KAAKA,sBAAsBsC,OAAQe,GAC1BA,EAAOZ,IAAKrC,GAAS,CAC1B,IAAMkD,EACJtD,EAAsBuD,KAAMC,GAAMA,EAAElD,OAASF,EAAME,IAAI,GAAGsC,cAAgBxC,EAAMwC,aAClF,OAAOG,GAAAC,GAAA,GAAK5C,GAAL,CAAYwC,aAAcU,CAAe,EAClD,CAAC,CACF,EACD,KAAK/C,4BAA4B4C,KAAK,KAAKnD,sBAAqB,CAAE,CACpE,CAEUyD,iBAAiB,CAAChE,EAAYI,CAAa,EAAwB,CAC3E,KAAKJ,WAAWiE,IAAIjE,CAAU,EAC9B,KAAKI,cAAc6D,IAAI7D,CAAa,CACtC,CAEc8D,2BACZC,EACA3B,EAAkB,QAAA4B,GAAA,sBAElB,IAAMC,EAAiB,MAAM,KAAK1C,kBAAkB2C,0BAA0B,KAAKtE,WAAU,CAAE,EAC/F,MAAO,CACLmE,UAAAA,EACAI,OAAQ,CAAE/B,WAAAA,CAAU,EACpBgC,cAAe,CAAEC,OAAQ,GAAIC,SAAU,EAAE,EACzCC,UAAW,KAAKlD,iBAAiBmD,eAAeP,CAAc,EAC9DQ,iBAAkB,KAAKzE,cAAa,EAExC,GAEU4B,iBAAe,CACvB,OAAO8C,EAAc,CAAC,KAAKzD,YAAa,KAAKE,OAAOwD,WAAY,KAAK7E,YAAa,KAAKG,cAAc,CAAC,EAAE2E,KACtGC,GAAa,GAAG,EAChBC,GAAoB,EACpBC,EAAU,CAAC,CAAC3C,EAAY2B,EAAWnE,EAAYI,CAAa,IACnDgF,GAAK,KAAKlB,2BAA2BC,EAAW3B,CAAU,CAAC,EAAEwC,KAClEhC,EACGqC,GACC,CAACA,EAAGrF,EAAYI,EAAeoC,CAAU,CAKxC,CACJ,CAEJ,EACD2C,EACE,CAAC,CAACE,EAAGrF,EAAYI,EAAeoC,CAAU,IAMpCxC,IAAe,cACb,KAAK6B,mBACA,KAAKA,mBAAmByD,oBAAoB9C,CAAU,EAAEwC,KAC7DhC,EAAKuC,GACI,KAAKC,2BAA2BD,CAAa,CACrD,CAAC,EAGGE,EAAG,CAAA,CAAE,EAGT,KAAKhE,iBAAiBiE,YAAY1F,EAAYqF,CAAC,EAAEL,KACtDhC,EAAK2C,GACI,KAAKC,mBAAmBD,EAAiB3F,EAAYI,CAAa,CAC1E,CAAC,CAEL,CACF,CAEL,CAEQwF,mBACND,EACA3F,EACAI,EAAsB,CAEtB,OACEuF,GAAiBE,YAAY7C,IAC1B8C,IACE,CACCC,KAAM,KAAK9D,uBAAuB+D,eAC9B,KAAK/D,uBAAuB+D,eAAeF,CAAM,EACjD,KAAK9E,qBAAqBiF,qBAAqBjG,EAAY8F,CAAM,EACrEI,gBAAiB,KAAKlF,qBAAqBmF,mBAAmBnG,EAAY8F,CAAM,EAChFzC,YAAayC,EAAOzC,YACpBJ,cAAejD,EACf6E,iBAAkBzE,GACM,GACzB,CAAA,CAET,CAEQoF,2BAA2BD,EAAsC,CACvE,OACEA,GAAevC,IACZ8C,IACE,CACCC,KAAMD,EAAOC,KACb1C,YAAayC,EAAOM,cACpBnD,cAAe,KAAKjD,WAAU,GACN,GACzB,CAAA,CAET,iDA1KWd,EAA2C,CAAA,+BAA3CA,EAA2CmH,UAAA,CAAA,CAAA,yCAAA,CAAA,EAAAC,OAAA,CAAAlE,eAAA,iBAAAtC,SAAA,CAAA,EAAA,UAAA,EAAAE,WAAA,CAAA,EAAA,YAAA,EAAAI,cAAA,CAAA,EAAA,eAAA,EAAAE,qBAAA,CAAA,EAAA,sBAAA,EAAAC,sBAAA,CAAA,EAAA,uBAAA,CAAA,EAAAgG,QAAA,CAAAvG,WAAA,mBAAAI,cAAA,sBAAAG,sBAAA,8BAAAO,4BAAA,6BAAA,EAAA0F,MAAA,EAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,EAAA,SAAA,SAAA,mBAAA,aAAA,2BAAA,wBAAA,UAAA,cAAA,8BAAA,iCAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IChCxDE,EAAA,EAAA,6BAAA,CAAA,gCAQEC,EAAA,SAAA,SAAAC,EAAA,CAAA,OAAUH,EAAAlD,aAAAqD,CAAA,CAAoB,CAAA,EAAC,SAAA,SAAAA,EAAA,CAAA,OACrBH,EAAAlE,aAAAqE,CAAA,CAAoB,CAAA,EAAC,mBAAA,SAAAA,EAAA,CAAA,OACXH,EAAAtE,iBAAAyE,CAAA,CAAwB,CAAA,EAAC,aAAA,SAAAA,EAAA,CAAA,OAC/BH,EAAA7C,iBAAAgD,CAAA,CAAwB,CAAA,EACvCC,EAAA,cAXCC,EAAA,2BAAA,EAAA,EAAiC,wBAAAL,EAAArG,8BAAA,CAAA,EACwB,WAAA2G,EAAAC,EAAA,EAAA,EAAAP,EAAA9E,QAAA,KAAA,MAAAoF,IAAAE,OAAAF,EAAAG,GAAA,GAAAC,EAAA,CAAA,EACrB,cAAAH,EAAA,EAAA,EAAA,qCAAA,CAAA,EAC6B,8BAAAP,EAAA7G,WAAA,CAAA,EACrB,iCAAA6G,EAAAzG,cAAA,CAAA,EACM,WAAAyG,EAAA/G,SAAA,CAAA,kBDwBxC0H,EAAYC,GAAEC,GAAkCC,EAAeC,CAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAE9D3I,CAA2C,GAAA,IEhCxD,IAAA4I,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,gCEAQC,GAAA,EAAA,EAAA,uBAAcC,EAAA,mBAAAC,CAAA,yBAUdF,GAAA,EAAA,EAAA,wBAGIA,GAAA,CAAA,4BADFG,EAAA,CAAA,EACEC,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,6BAAeC,EAAA,EAAAL,EAAA,mBAAAM,CAAA,yBAIbP,GAAA,CAAA,4BAFJG,EAAA,CAAA,EACEK,EAAA,EAAA,gBAAA,EAAA,EACEJ,EAAA,EAAAK,GAAA,EAAA,EAAA,eAAA,EAAA,EACFC,EAAA,oCAFuCJ,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACtBP,EAAA,EAAAL,EAAA,mBAAAa,CAAA,6BAMnBX,EAAA,CAAA,EACEK,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,EAAA,EAAA,EACFU,EAAA,oCAFuCJ,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAc,CAAA,sCAtBtBP,EAAA,EAAA,2BAAA,EAAA,eAKEQ,GAAA,oBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAAC,OAAAC,GAAAH,EAAAI,kBAAAP,CAAA,IAAAG,EAAAI,kBAAAP,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAEAb,EAAA,EAAAsB,GAAA,EAAA,EAAA,eAAA,EAAA,EACAvB,EAAA,EAAA,EAAA,EACEC,EAAA,EAAAuB,GAAA,EAAA,EAAA,eAAA,EAAA,EAAqD,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAQrDpB,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,EAAA,EAAA,EACFU,EAAA,EACAN,EAAA,EAAAyB,GAAA,EAAA,EAAA,eAAA,EAAA,EAKArB,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,GAAA,EAAA,EACFU,EAAA,EACAV,GAAA,GAAA,EAAA,MAEJU,EAAA,uEA3BET,EAAA,WAAA6B,EAAA,EAAA,GAAAV,EAAAW,SAAA,CAAA,EAA8B,SAAAnB,EAAAC,MAAA,EAE9BmB,GAAA,cAAAZ,EAAAI,iBAAA,EAEelB,EAAA,CAAA,EAAAL,EAAA,mBAAAgC,CAAA,EAEE3B,EAAA,CAAA,EAAAL,EAAA,OAAAiC,IAAA,EAAA,EAGA5B,EAAA,EAAAL,EAAA,OAAAiC,CAAA,EAKwB5B,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAkC,CAAA,EAED7B,EAAA,EAAAL,EAAA,OAAAiC,IAAA,EAAA,EAKwB5B,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAmC,CAAA,EAEF9B,EAAA,EAAAL,EAAA,mBAAAoC,CAAA,yBAWhBrC,GAAA,EAAA,EAAA,wBAGIA,GAAA,CAAA,4BADFG,EAAA,CAAA,EACEC,EAAA,EAAAkC,GAAA,EAAA,EAAA,eAAA,EAAA,6BAAehC,EAAA,EAAAL,EAAA,mBAAAM,CAAA,yBAIbP,GAAA,CAAA,4BAFJG,EAAA,CAAA,EACEK,EAAA,EAAA,gBAAA,EAAA,EACEJ,EAAA,EAAAmC,GAAA,EAAA,EAAA,eAAA,EAAA,EACF7B,EAAA,oCAFuCJ,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACtBP,EAAA,EAAAL,EAAA,mBAAAa,CAAA,6BAMnBX,EAAA,CAAA,EACEK,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,EAAA,EAAA,EACFU,EAAA,oCAFuCJ,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAc,CAAA,sCAtBtBP,EAAA,EAAA,4BAAA,EAAA,eAKEQ,GAAA,oBAAA,SAAAC,EAAA,CAAAC,EAAAsB,CAAA,EAAA,IAAApB,EAAAC,EAAA,CAAA,EAAAC,OAAAC,GAAAH,EAAAI,kBAAAP,CAAA,IAAAG,EAAAI,kBAAAP,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAEAb,EAAA,EAAAqC,GAAA,EAAA,EAAA,eAAA,EAAA,EACAtC,EAAA,EAAA,EAAA,EACEC,EAAA,EAAAsC,GAAA,EAAA,EAAA,eAAA,EAAA,EAAqD,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAQrDnC,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,EAAA,EAAA,EACFU,EAAA,EACAN,EAAA,EAAAwC,GAAA,EAAA,EAAA,eAAA,EAAA,EAKApC,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,GAAA,EAAA,EACFU,EAAA,EACAV,GAAA,GAAA,EAAA,MAEJU,EAAA,uEA3BET,EAAA,WAAA6B,EAAA,EAAA,GAAAV,EAAAW,SAAA,CAAA,EAA8B,SAAAnB,EAAAC,MAAA,EAE9BmB,GAAA,cAAAZ,EAAAI,iBAAA,EAEelB,EAAA,CAAA,EAAAL,EAAA,mBAAAgC,CAAA,EAEE3B,EAAA,CAAA,EAAAL,EAAA,OAAAiC,IAAA,EAAA,EAGA5B,EAAA,EAAAL,EAAA,OAAAiC,CAAA,EAKwB5B,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAkC,CAAA,EAED7B,EAAA,EAAAL,EAAA,OAAAiC,IAAA,EAAA,EAKwB5B,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAmC,CAAA,EAEF9B,EAAA,EAAAL,EAAA,mBAAAoC,CAAA,yBAWhBrC,GAAA,EAAA,EAAA,wBAGIA,GAAA,CAAA,4BADFG,EAAA,CAAA,EACEC,EAAA,EAAAyC,GAAA,EAAA,EAAA,eAAA,EAAA,6BAAevC,EAAA,EAAAL,EAAA,mBAAAM,CAAA,yBAIbP,GAAA,CAAA,4BAFJG,EAAA,CAAA,EACEK,EAAA,EAAA,gBAAA,EAAA,EACEJ,EAAA,EAAA0C,GAAA,EAAA,EAAA,eAAA,EAAA,EACFpC,EAAA,oCAFuCJ,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACtBP,EAAA,EAAAL,EAAA,mBAAAa,CAAA,6BAMnBX,EAAA,CAAA,EACEK,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,EAAA,EAAA,EACFU,EAAA,oCAFuCJ,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAc,CAAA,sCAtBtBP,EAAA,EAAA,2BAAA,EAAA,eAKEQ,GAAA,oBAAA,SAAAC,EAAA,CAAAC,EAAA6B,CAAA,EAAA,IAAA3B,EAAAC,EAAA,CAAA,EAAAC,OAAAC,GAAAH,EAAAI,kBAAAP,CAAA,IAAAG,EAAAI,kBAAAP,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAEAb,EAAA,EAAA4C,GAAA,EAAA,EAAA,eAAA,EAAA,EACA7C,EAAA,EAAA,EAAA,EACEC,EAAA,EAAA6C,GAAA,EAAA,EAAA,eAAA,EAAA,EAAqD,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAQrD1C,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,EAAA,EAAA,EACFU,EAAA,EACAN,EAAA,EAAA+C,GAAA,EAAA,EAAA,eAAA,EAAA,EAKA3C,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,GAAA,EAAA,EACFU,EAAA,EACAV,GAAA,GAAA,EAAA,MAEJU,EAAA,uEA3BET,EAAA,WAAA6B,EAAA,EAAA,GAAAV,EAAAW,SAAA,CAAA,EAA8B,SAAAnB,EAAAC,MAAA,EAE9BmB,GAAA,cAAAZ,EAAAI,iBAAA,EAEelB,EAAA,CAAA,EAAAL,EAAA,mBAAAgC,CAAA,EAEE3B,EAAA,CAAA,EAAAL,EAAA,OAAAiC,IAAA,EAAA,EAGA5B,EAAA,EAAAL,EAAA,OAAAiC,CAAA,EAKwB5B,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAkC,CAAA,EAED7B,EAAA,EAAAL,EAAA,OAAAiC,IAAA,EAAA,EAKwB5B,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAmC,CAAA,EAEF9B,EAAA,EAAAL,EAAA,mBAAAoC,CAAA,yBAWhBrC,GAAA,EAAA,EAAA,wBAGIA,GAAA,CAAA,4BADFG,EAAA,CAAA,EACEC,EAAA,EAAAgD,GAAA,EAAA,EAAA,eAAA,EAAA,6BAAe9C,EAAA,EAAAL,EAAA,mBAAAM,CAAA,yBAIbP,GAAA,CAAA,6BAFJG,EAAA,CAAA,EACEK,EAAA,EAAA,gBAAA,EAAA,EACEJ,EAAA,EAAAiD,GAAA,EAAA,EAAA,eAAA,EAAA,EACF3C,EAAA,oCAFuCJ,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACtBP,EAAA,EAAAL,EAAA,mBAAAa,CAAA,8BAMnBX,EAAA,CAAA,EACEK,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,EAAA,EAAA,EACFU,EAAA,oCAFuCJ,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAc,CAAA,uCAtBtBP,EAAA,EAAA,8BAAA,EAAA,eAKEQ,GAAA,oBAAA,SAAAC,EAAA,CAAAC,EAAAoC,CAAA,EAAA,IAAAlC,EAAAC,EAAA,CAAA,EAAAC,OAAAC,GAAAH,EAAAI,kBAAAP,CAAA,IAAAG,EAAAI,kBAAAP,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAEAb,EAAA,EAAAmD,GAAA,EAAA,EAAA,eAAA,EAAA,EACApD,EAAA,EAAA,EAAA,EACEC,EAAA,EAAAoD,GAAA,EAAA,EAAA,eAAA,EAAA,EAAqD,EAAAC,IAAA,EAAA,EAAA,eAAA,EAAA,EAQrDjD,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,EAAA,EAAA,EACFU,EAAA,EACAN,EAAA,EAAAsD,IAAA,EAAA,EAAA,eAAA,EAAA,EAKAlD,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,GAAA,EAAA,EACFU,EAAA,EACAV,GAAA,GAAA,EAAA,MAEJU,EAAA,uEA3BET,EAAA,WAAA6B,EAAA,EAAA,GAAAV,EAAAW,SAAA,CAAA,EAA8B,SAAAnB,EAAAC,MAAA,EAE9BmB,GAAA,cAAAZ,EAAAI,iBAAA,EAEelB,EAAA,CAAA,EAAAL,EAAA,mBAAAgC,CAAA,EAEE3B,EAAA,CAAA,EAAAL,EAAA,OAAAiC,IAAA,EAAA,EAGA5B,EAAA,EAAAL,EAAA,OAAAiC,CAAA,EAKwB5B,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAkC,CAAA,EAED7B,EAAA,EAAAL,EAAA,OAAAiC,IAAA,EAAA,EAKwB5B,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAmC,CAAA,EAEF9B,EAAA,EAAAL,EAAA,mBAAAoC,CAAA,0BAchBrC,GAAA,EAAA,EAAA,yBAGIA,GAAA,CAAA,6BADFG,EAAA,CAAA,EACEC,EAAA,EAAAuD,IAAA,EAAA,EAAA,eAAA,EAAA,6BAAerD,EAAA,EAAAL,EAAA,mBAAAM,CAAA,0BAIbP,GAAA,CAAA,6BAFJG,EAAA,CAAA,EACEK,EAAA,EAAA,gBAAA,EAAA,EACEJ,EAAA,EAAAwD,IAAA,EAAA,EAAA,eAAA,EAAA,EACFlD,EAAA,oCAFuCJ,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACtBP,EAAA,EAAAL,EAAA,mBAAAa,CAAA,8BAGnBX,EAAA,CAAA,EACEK,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,EAAA,EAAA,EACFU,EAAA,oCAFuCJ,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAc,CAAA,uCAtBtBP,EAAA,EAAA,2BAAA,EAAA,4BAOEQ,GAAA,oBAAA,SAAAC,EAAA,CAAAC,EAAA2C,CAAA,EAAA,IAAAzC,EAAAC,EAAA,CAAA,EAAAC,OAAAC,GAAAH,EAAAI,kBAAAP,CAAA,IAAAG,EAAAI,kBAAAP,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAAmC,qBAAA,SAAAA,EAAA,CAAAC,EAAA2C,CAAA,EAAA,IAAAzC,EAAAC,EAAA,CAAA,EAAAC,OAAAC,GAAAH,EAAA0C,iBAAA7C,CAAA,IAAAG,EAAA0C,iBAAA7C,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAGnCb,EAAA,EAAA2D,IAAA,EAAA,EAAA,eAAA,EAAA,EACA5D,EAAA,EAAA,EAAA,EACEC,EAAA,EAAA4D,IAAA,EAAA,EAAA,eAAA,EAAA,EAAqD,EAAAC,IAAA,EAAA,EAAA,eAAA,EAAA,EAGV,EAAAC,IAAA,EAAA,EAAA,eAAA,EAAA,EAU3C1D,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,EAAA,EAAA,EACFU,EAAA,MAEJA,EAAA,uDA1BET,EAAA,WAAA6B,EAAA,EAAA,GAAAV,EAAAW,SAAA,CAAA,EAA8B,gBAAAX,EAAA+C,aAAA,EACC,SAAAvD,EAAAC,MAAA,EACP,OAAAiB,EAAA,EAAA,GAAAV,EAAAgD,KAAA,CAAA,EAExBpC,GAAA,cAAAZ,EAAAI,iBAAA,EAAmC,eAAAJ,EAAA0C,gBAAA,EAGpBxD,EAAA,CAAA,EAAAL,EAAA,mBAAAgC,CAAA,EAEE3B,EAAA,CAAA,EAAAL,EAAA,OAAAiC,IAAA,EAAA,EAGA5B,EAAA,EAAAL,EAAA,OAAAiC,CAAA,EAKA5B,EAAA,EAAAL,EAAA,OAAAiC,IAAA,EAAA,EAKwB5B,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAmC,CAAA,0BAalBpC,GAAA,EAAA,EAAA,yBAGIA,GAAA,CAAA,6BADFG,EAAA,CAAA,EACEC,EAAA,EAAAiE,IAAA,EAAA,EAAA,eAAA,EAAA,6BAAe/D,EAAA,EAAAL,EAAA,mBAAAM,CAAA,0BAIbP,GAAA,CAAA,6BAFJG,EAAA,CAAA,EACEK,EAAA,EAAA,gBAAA,EAAA,EACEJ,EAAA,EAAAkE,IAAA,EAAA,EAAA,eAAA,EAAA,EACF5D,EAAA,oCAFuCJ,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACtBP,EAAA,EAAAL,EAAA,mBAAAa,CAAA,8BAMnBX,EAAA,CAAA,EACEK,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,EAAA,EAAA,EACFU,EAAA,oCAFuCJ,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAc,CAAA,uCAvBtBP,EAAA,EAAA,oCAAA,EAAA,eAMEQ,GAAA,oBAAA,SAAAC,EAAA,CAAAC,EAAAqD,CAAA,EAAA,IAAAnD,EAAAC,EAAA,CAAA,EAAAC,OAAAC,GAAAH,EAAAI,kBAAAP,CAAA,IAAAG,EAAAI,kBAAAP,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAEAb,EAAA,EAAAoE,IAAA,EAAA,EAAA,eAAA,EAAA,EACArE,EAAA,EAAA,EAAA,EACEC,EAAA,EAAAqE,IAAA,EAAA,EAAA,eAAA,EAAA,EAAqD,EAAAC,IAAA,EAAA,EAAA,eAAA,EAAA,EAQrDlE,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,EAAA,EAAA,EACFU,EAAA,EACAN,EAAA,EAAAuE,IAAA,EAAA,EAAA,eAAA,EAAA,EAKAnE,EAAA,EAAA,gBAAA,EAAA,EACER,GAAA,GAAA,EAAA,EACFU,EAAA,EACAV,GAAA,GAAA,EAAA,MAEJU,EAAA,uEA5BET,EAAA,WAAA6B,EAAA,EAAA,GAAAV,EAAAW,SAAA,CAAA,EAA8B,SAAAnB,EAAAC,MAAA,EACN,oBAAAO,EAAAwD,4BAAA,EAExB5C,GAAA,cAAAZ,EAAAI,iBAAA,EAEelB,EAAA,CAAA,EAAAL,EAAA,mBAAAgC,CAAA,EAEE3B,EAAA,CAAA,EAAAL,EAAA,OAAAiC,IAAA,EAAA,EAGA5B,EAAA,EAAAL,EAAA,OAAAiC,CAAA,EAKwB5B,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAkC,CAAA,EAED7B,EAAA,EAAAL,EAAA,OAAAiC,IAAA,EAAA,EAKwB5B,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EACvBP,EAAA,EAAAL,EAAA,mBAAAmC,CAAA,EAEF9B,EAAA,EAAAL,EAAA,mBAAAoC,CAAA,uCAKlB7B,EAAA,EAAA,OAAA,EAAA,EAAgD,EAAA,MAAA,EAAA,EACf,EAAA,eAAA,EACd,EAAA,kBAAA,EAAA,EAC8C,EAAA,WAAA,EAAA,mBAKvDqE,EAAA,QAAA,UAAA,CAAA3D,EAAA4D,CAAA,EAAA,IAAA1D,EAAAC,EAAA,CAAA,EAAA,OAAAI,EAASL,EAAA2D,wBAAA,CAAyB,CAAA,CAAA,EACnCrE,EAAA,EAAW,EACI,EACJ,EAElBV,GAAA,EAAA,EAAA,EAIFU,EAAA,0BAd6CJ,EAAA,CAAA,EAAAL,EAAA,YAAA,EAAA,EAGnCK,EAAA,EAAA0E,GAAA,cAAAlD,EAAA,EAAA,EAAA,kCAAA,CAAA,EACA7B,EAAA,OAAA,CAAA,EAONK,EAAA,CAAA,EAAAL,EAAA,mBAAAgC,CAAA,EAAqC,0BAAAgD,GAAA,EAAAC,EAAA,CAAA,0BAMzClF,GAAA,CAAA,6BADFG,EAAA,CAAA,EACEC,EAAA,EAAA+E,IAAA,EAAA,EAAA,eAAA,EAAA,4BAAe7E,EAAA,EAAAL,EAAA,mBAAAmF,CAAA,6BAMfC,EAAA,EAAA,cAAA,EAAA,6BAGEpF,EAAA,QAAAqF,EAAAC,EAAAC,YAAA,MAAAF,IAAAG,OAAAH,EAAA,EAAA,EAA4B,QAAAlE,EAAAsE,YAAA,EACN,MAAAH,EAAAI,iBAAA,EAAA,6BAKxBN,EAAA,EAAA,0BAAA,EAAA,kBAAyBpF,EAAA,QAAAmB,EAAAsE,YAAA,8BAV3BlF,EAAA,EAAA,MAAA,EAAA,EACEJ,EAAA,EAAAwF,IAAA,EAAA,EAAA,cAAA,EAAA,eAOFlF,EAAA,EACAN,EAAA,EAAAyF,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,oCAT8BnF,GAAA,SAAAC,EAAAC,MAAA,EAA8B,UAAAD,EAAAmF,OAAA,EAGvDzF,EAAA,EAAAL,EAAA,OAAA6B,EAAA,EAAA,EAAAV,EAAAgD,KAAA,CAAA,EAAoB,WAAA4B,CAAA,uCA4BnBxF,EAAA,EAAA,SAAA,EAAA,EAGEqE,EAAA,QAAA,UAAA,CAAA,IAAAoB,EAAA/E,EAAAgF,CAAA,EAAAC,UAAA/E,EAAAC,EAAA,CAAA,EAAA,OAAAI,EAASL,EAAAgF,2BAA2B,gBAAeH,EAAAI,KAAA,CAA0B,CAAA,CAAA,EAE7EC,EAAA,CAAA,mBACF5F,EAAA,4BADEJ,EAAA,EAAAiG,EAAA,IAAAzE,EAAA,EAAA,EAAAmE,EAAAO,KAAA,EAAA,GAAA,uCAtBRhG,EAAA,EAAA,MAAA,EAAA,EAA2F,EAAA,MAAA,EAAA,EAC3D,EAAA,gBAAA,GAAA,EAAA,mBAO1BqE,EAAA,iBAAA,SAAA5D,EAAA,CAAAC,EAAAuF,CAAA,EAAA,IAAArF,EAAAC,EAAA,CAAA,EAAA,OAAAI,EAAkBL,EAAAsF,sBAAAzF,CAAA,CAA6B,CAAA,CAAA,EAEhDP,EAAA,EAEDF,EAAA,EAAA,SAAA,EAAA,EACE8F,EAAA,CAAA,mBACA9F,EAAA,EAAA,WAAA,EAAA,EAAiD8F,EAAA,EAAA,iBAAA,EAAe5F,EAAA,EAAW,EAE7EF,EAAA,GAAA,WAAA,KAAA,EAAA,EACEJ,EAAA,GAAAuG,IAAA,EAAA,EAAA,SAAA,EAAA,EAOFjG,EAAA,EAAW,EACP,uDAzBoDC,GAAA,aAAAiG,CAAA,EAKtDtG,EAAA,CAAA,EAAAL,EAAA,wBAAAW,EAAAC,MAAA,EAAuC,QAAAO,EAAAyF,yBAAA,EACJ,WAAAzF,EAAA0F,oBAAA,EACF,OAAAlG,EAAAC,OAAA,QAAA,SAAA,+EAKRP,EAAA,CAAA,EAAAL,EAAA,oBAAA8G,CAAA,EACzBzG,EAAA,EAAAiG,EAAA,IAAAzE,EAAA,EAAA,GAAAV,EAAA4F,+BAAA,CAAA,EAAA,GAAA,EAMgC1G,EAAA,CAAA,EAAAL,EAAA,UAAAmB,EAAA6F,8BAAA,6BAnBtC7G,EAAA,EAAA8G,IAAA,GAAA,GAAA,MAAA,EAAA,sBAAMjH,EAAA,OAAA,CAAAW,EAAAmF,OAAA,uCA6BNvF,EAAA,EAAA,gBAAA,EAAA,EAAyG,EAAA,kBAAA,EAAA,EAMtG,EAAA,oCAAA,EAAA,EAGGQ,GAAA,yBAAA,SAAAC,EAAA,CAAAC,EAAAiG,CAAA,EAAA,IAAA/F,EAAAC,EAAA,CAAA,EAAAC,OAAAC,GAAAH,EAAAgG,oBAAAnG,CAAA,IAAAG,EAAAgG,oBAAAnG,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAEDP,EAAA,EAAoC,EAEvCF,EAAA,EAAA,kBAAA,EAAA,EAKC,EAAA,oCAAA,EAAA,EAGGQ,GAAA,yBAAA,SAAAC,EAAA,CAAAC,EAAAiG,CAAA,EAAA,IAAA/F,EAAAC,EAAA,CAAA,EAAAC,OAAAC,GAAAH,EAAAiG,oBAAApG,CAAA,IAAAG,EAAAiG,oBAAApG,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAEDP,EAAA,EAAoC,EACrB,gCAxBsDC,GAAA,SAAAC,EAAAC,MAAA,EAKtEP,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EAHAZ,EAAA,aAAA,QAAA,EAMEK,EAAA,EAAAL,EAAA,aAAA,SAAA,EACA+B,GAAA,mBAAAZ,EAAAgG,mBAAA,EAQF9G,EAAA,EAAAK,GAAA,SAAAC,EAAAC,MAAA,EAGEP,EAAA,EAAAL,EAAA,aAAA,SAAA,EACA+B,GAAA,mBAAAZ,EAAAiG,mBAAA,6BArBNjH,EAAA,EAAAkH,IAAA,EAAA,GAAA,gBAAA,EAAA,kBAAgBrH,EAAA,OAAA,CAAAmB,EAAAmG,yBAAA,6BA8BZlC,EAAA,EAAA,MAAA,EAAA,6BAIEmC,GAAA,QAAApG,EAAAsE,aAAA,IAAA,EAFA/E,GAAA,SAAAC,EAAAC,MAAA,EAA8B,UAAAD,EAAAmF,OAAA,2BAa9B5F,EAAA,CAAA,EACEmG,EAAA,CAAA,8BAAAhG,EAAA,EAAAiG,EAAA,IAAAzE,EAAA,EAAA,EAAA,sBAAA,EAAA,GAAA,2BAGA3B,EAAA,CAAA,EACEmG,EAAA,CAAA,8BAAAhG,EAAA,EAAAiG,EAAA,IAAAzE,EAAA,EAAA,EAAA,6BAAA,EAAA,GAAA,2BAGAwE,EAAA,CAAA,yBAAAC,EAAA,IAAAzE,EAAA,EAAA,EAAA,8BAAA,EAAA,GAAA,4BAJF1B,EAAA,EAAAqH,IAAA,EAAA,EAAA,eAAA,EAAA,EAAwE,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,GAAA5B,EAAA,yBAAzD7F,EAAA,OAAAmB,EAAA0F,uBAAA,MAAA,EAAuC,WAAAa,CAAA,uCArB9DnH,EAAA,EAAA,mBAAA,EAAA,EACEJ,EAAA,EAAAwH,IAAA,EAAA,EAAA,MAAA,EAAA,EAQApH,EAAA,EAAA,SAAA,EAAA,eAIEqE,EAAA,QAAA,UAAA,CAAA3D,EAAA2G,CAAA,EAAA,IAAAzG,EAAAC,EAAA,CAAA,EAAA,OAAAI,EAASL,EAAA0G,eAAA,CAAgB,CAAA,CAAA,EAGzBtH,EAAA,EAAA,gCAAA,EAAA,eACEJ,EAAA,EAAA2H,IAAA,EAAA,EAAA,eAAA,EAAA,EAA0D,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,GAAAlC,EAAA,EAW5DpF,EAAA,EAAgC,EAElCF,EAAA,EAAA,SAAA,EAAA,EAA2BqE,EAAA,QAAA,UAAA,CAAA3D,EAAA2G,CAAA,EAAA,IAAAzG,EAAAC,EAAA,CAAA,EAAA,OAAAI,EAASL,EAAA6G,oBAAA,CAAqB,CAAA,CAAA,EACvD3B,EAAA,EAAA,oBACF5F,EAAA,EAAS,sCAhCuDC,GAAA,UAAAC,EAAAmF,OAAA,EAAhD9F,EAAA,QAAA,OAAA,EAChBK,EAAA,EAAA4H,EAAA9G,EAAA+G,iCAAA,EAAA,GAAA,CAAA,EAaE7H,EAAA,EAAAL,EAAA,WAAA6B,EAAA,EAAA,EAAAV,EAAAgH,4BAAA,CAAA,EAE+B9H,EAAA,CAAA,EAAAL,EAAA,YAAA6B,EAAA,EAAA,GAAAV,EAAAgH,4BAAA,IAAA,EAAA,EACd9H,EAAA,CAAA,EAAAL,EAAA,OAAAW,EAAAmF,OAAA,EAAsB,WAAAsC,CAAA,EAcvC/H,EAAA,CAAA,EAAAiG,EAAA,IAAAzE,EAAA,GAAA,GAAA,wBAAA,EAAA,GAAA,uCAKJtB,EAAA,EAAA,kBAAA,EAAA,EAMC,EAAA,kCAAA,EAAA,gCAIGQ,GAAA,qBAAA,SAAAC,EAAA,CAAAC,EAAAoH,CAAA,EAAA,IAAAlH,EAAAC,EAAA,CAAA,EAAAC,OAAAC,GAAAH,EAAA0C,iBAAA7C,CAAA,IAAAG,EAAA0C,iBAAA7C,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAIDP,EAAA,EAAkC,gCATnCC,GAAA,SAAAC,EAAAC,MAAA,EAKEP,EAAA,EAAA0B,GAAA,eAAAZ,EAAA0C,gBAAA,EACA7D,EAAA,UAAA6B,EAAA,EAAA,EAAAV,EAAAmH,gBAAA,CAAA,EAAoC,SAAA3H,EAAAC,MAAA,EACZ,cAAAiB,EAAA,EAAA,EAAA,6CAAA,CAAA,6BAZ5B1B,EAAA,EAAAoI,IAAA,EAAA,GAAA,kBAAA,EAAA,kBACGvI,EAAA,OAAAmB,EAAAqH,mBAAA,uCAiBHjI,EAAA,EAAA,kBAAA,EAAA,EAMC,EAAA,+CAAA,EAAA,gCAKGQ,GAAA,qBAAA,SAAAC,EAAA,CAAAC,EAAAwH,CAAA,EAAA,IAAAtH,EAAAC,EAAA,CAAA,EAAAC,OAAAC,GAAAH,EAAAuH,wBAAA1H,CAAA,IAAAG,EAAAuH,wBAAA1H,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAGDP,EAAA,EAA+C,gCAThDC,GAAA,SAAAC,EAAAC,MAAA,EAKEP,EAAA,EAAAL,EAAA,iBAAA6B,EAAA,EAAA,EAAAV,EAAAwH,sBAAA,CAAA,EACA5G,GAAA,eAAAZ,EAAAuH,uBAAA,EACA1I,EAAA,SAAAW,EAAAC,MAAA,EAAwB,cAAAiB,EAAA,EAAA,EAAA,6CAAA,CAAA,8BAZ5B1B,EAAA,EAAAyI,IAAA,EAAA,GAAA,kBAAA,EAAA,gCACG5I,EAAA,OAAA6B,EAAA,EAAA,EAAAV,EAAA0H,mBAAA,CAAA,uCAiBHtI,EAAA,EAAA,kBAAA,EAAA,EAKC,EAAA,2BAAA,EAAA,eAMGqE,EAAA,cAAA,SAAA5D,EAAA,CAAAC,EAAA6H,CAAA,EAAA,IAAA3H,EAAAC,EAAA,CAAA,EAAA,OAAAI,EAAeL,EAAA4H,WAAA/H,CAAA,CAAkB,CAAA,CAAA,EAClCP,EAAA,EAA2B,+BAR5BC,GAAA,SAAAC,EAAAC,MAAA,EAKEP,EAAA,EAAAL,EAAA,OAAA6B,EAAA,EAAA,EAAAV,EAAA6H,KAAA,CAAA,EAAsB,SAAArI,EAAAC,MAAA,uCAO1BL,EAAA,EAAA,qCAAA,EAAA,EAEEqE,EAAA,kBAAA,SAAA5D,EAAA,CAAAC,EAAAgI,CAAA,EAAA,IAAA9H,EAAAC,EAAA,CAAA,EAAA,OAAAI,EAAmBL,EAAA+H,wBAAAlI,CAAA,CAA+B,CAAA,CAAA,EACnDP,EAAA,6BAHDN,EAAA,EAAAgJ,IAAA,EAAA,EAAA,qCAAA,EAAA,sBACGnJ,EAAA,OAAA,CAAAW,EAAAmF,OAAA,uCAKHvF,EAAA,EAAA,kBAAA,EAAA,EAMC,EAAA,0CAAA,EAAA,4BAMGqE,EAAA,8BAAA,SAAA5D,EAAA,CAAAC,EAAAmI,CAAA,EAAA,IAAAjI,EAAAC,EAAA,CAAA,EAAA,OAAAI,EAA+BL,EAAAkI,+BAAArI,CAAA,CAAsC,CAAA,CAAA,EAEtEP,EAAA,EAA0C,gCAT3CC,GAAA,SAAAC,EAAAC,MAAA,EAGEP,EAAA,EAAAL,EAAA,wBAAAmB,EAAAmI,mBAAA,CAAA,EAA8C,iBAAAzH,EAAA,EAAA,EAAAV,EAAAwH,sBAAA,CAAA,EACG,WAAAhI,EAAAC,MAAA,EACvB,uBAAAiB,EAAA,EAAA,EAAAV,EAAAoI,qBAAA,CAAA,6BAV9BpJ,EAAA,EAAAqJ,IAAA,EAAA,GAAA,kBAAA,EAAA,kBACGxJ,EAAA,OAAA,CAAAmB,EAAAmG,yBAAA,8BAxYPpH,EAAA,CAAA,EACEuJ,GAAA,CAAA,eACAlJ,EAAA,EAAA,UAAA,EAA2C,EAAA,mBAAA,EAAA,EAEvCJ,EAAA,EAAAuJ,GAAA,EAAA,EAAA,eAAA,EAAA,EAA2C,EAAAC,GAAA,GAAA,GAAA,2BAAA,EAAA,EAU1C,EAAAC,GAAA,GAAA,GAAA,4BAAA,EAAA,EAgCA,EAAAC,GAAA,GAAA,GAAA,2BAAA,EAAA,EAgCA,EAAAC,IAAA,GAAA,GAAA,8BAAA,EAAA,EAgCA,GAAAC,IAAA,GAAA,GAAA,2BAAA,EAAA,EAmCA,GAAAC,IAAA,GAAA,GAAA,oCAAA,EAAA,EA6BA,GAAAC,IAAA,EAAA,EAAA,OAAA,EAAA,EA6CHxJ,EAAA,EACAN,EAAA,GAAA+J,IAAA,EAAA,EAAA,eAAA,EAAA,EAGFzJ,EAAA,EAEAN,EAAA,GAAAgK,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAtE,EAAA,EAAqB,GAAAuE,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAvE,EAAA,EAcoC,GAAAwE,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAxE,EAAA,EA6BxB,GAAAyE,IAAA,GAAA,GAAA,cAAA,KAAA,EAAAzE,EAAA,EA4BP,GAAA0E,IAAA,EAAA,EAAA,cAAA,KAAA,EAAA1E,EAAA,EAoCG,GAAA2E,IAAA,EAAA,EAAA,cAAA,KAAA,EAAA3E,EAAA,EAkBE,GAAA4E,IAAA,EAAA,EAAA,cAAA,KAAA,EAAA5E,EAAA,EAkBT,GAAA6E,IAAA,EAAA,EAAA,cAAA,KAAA,EAAA7E,EAAA,EAgBQ,GAAA8E,IAAA,EAAA,EAAA,cAAA,KAAA,EAAA9E,EAAA,+BA/X9BxF,EAAA,EAAAuK,GAAA/I,EAAA,EAAA,GAAAV,EAAA0J,qBAAA,CAAA,EACUxK,EAAA,CAAA,EAAAK,GAAA,UAAAC,EAAAmF,OAAA,EAC4CzF,EAAA,EAAAK,GAAA,UAAAC,EAAAmF,OAAA,EAAlC9F,EAAA,WAAAmB,EAAA0F,oBAAA,EAChBxG,EAAA,EAAA4H,EAAA9G,EAAA+G,iCAAA,EAAA,GAAA,CAAA,EAKG7H,EAAA,EAAAL,EAAA,eAAA,MAAA,EAgCAK,EAAA,EAAAL,EAAA,eAAA,OAAA,EAgCAK,EAAA,EAAAL,EAAA,eAAA,MAAA,EAgCAK,EAAA,EAAAL,EAAA,eAAA,SAAA,EAgCAK,EAAA,EAAAL,EAAA,eAAA,MAAA,EA+BAK,EAAA,EAAAL,EAAA,eAAA,eAAA,EAoDUK,EAAA,CAAA,EAAAL,EAAA,OAAAmB,EAAA0F,oBAAA,GD5NnB,UAqFMiE,GAEAC,IAIAnE,IA8BAI,IAiBAgE,GA2COC,GArLbC,GAAAC,EAAA,KACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,IAQAC,KACAC,KACAC,KAGAC,KACAA,KACAC,KAaAC,KACAC,KAEAC,KACAC,KAQAC,KAEAC,KACAC,KACAC,KAWAC,KACAC,KAQAC,gJAQMlC,GAA+C,OAE/CC,IAA4B,QAI5BnE,IAAsD,CAC1D,CACER,MAAO,OACPG,MAAO,sBACP0G,KAAM,SAER,CACE7G,MAAO,QACPG,MAAO,uBACP0G,KAAM,SAER,CACE7G,MAAO,OACPG,MAAO,sBACP0G,KAAM,SAER,CACE7G,MAAO,UACPG,MAAO,yBACP0G,KAAM,kBAER,CACE7G,MAAO,OACPG,MAAO,sBACP0G,KAAM,uBACP,EAKGjG,IAAgE,CACpE,CACEZ,MAAO,MACPG,MAAO,6CAET,CACEH,MAAO,QACPG,MAAO,+CAET,CACEH,MAAO,WACPG,MAAO,iDACR,EAKGyE,GAAgD,CACpDkC,QAASC,EAAYC,uBACrBC,aAAc,IAyCHpC,IAA0B,IAAA,CAAjC,MAAOA,CAA0B,CAyBrC,IAA+BqC,WAAWlH,EAAiB,CACzD,KAAKmH,aAAaC,KAAKpH,CAAK,CAC9B,CAIA,IAA+BqH,YAAYrH,EAAa,CACtD,KAAKsH,cAAcF,KAAKpH,CAAK,CAC/B,CAkBA,IAAauH,oBAAoBvH,EAAyB,CACxD,IAAMwH,EAAexH,GAAkC0E,GACvD,KAAKrE,sBAAsBmH,CAAY,CACzC,CAMA,IAAaC,OAAOzH,EAAa,CAC/B,KAAK0H,SAASN,KAAKpH,CAAK,CAC1B,CAOA,IAAa2H,cAAc3H,EAAa,CACtC,KAAK4H,gBAAgBR,KAAKpH,CAAK,CACjC,CAeA,IAAce,qBAAmB,CAC/B,OAAO,KAAKmC,mBAAkB,EAAG2E,KAAMC,GAAUA,EAAMC,OAAS,SAAS,GAAGC,cAAgB,CAAA,CAC9F,CACA,IAAcjH,oBAAoBkH,EAAuC,CACvE,KAAK/E,mBAAmBgF,OAAQC,GACvBA,EAAOC,IAAKN,GAAWA,EAAMC,OAAS,UAAYM,GAAAC,GAAA,GAAKR,GAAL,CAAYE,aAAcC,CAAe,GAAKH,CAAM,CAC9G,CACH,CAEA,IAAc9G,qBAAmB,CAC/B,OAAO,KAAKkC,mBAAkB,EAAG2E,KAAMC,GAAUA,EAAMC,OAAS,SAAS,GAAGC,cAAgB,CAAA,CAC9F,CACA,IAAchH,oBAAoBiH,EAAuC,CACvE,KAAK/E,mBAAmBgF,OAAQC,GACvBA,EAAOC,IAAKN,GAAWA,EAAMC,OAAS,UAAYM,GAAAC,GAAA,GAAKR,GAAL,CAAYE,aAAcC,CAAe,GAAKH,CAAM,CAC9G,CACH,CAEA,IAAcxF,yBAAuB,CACnC,OAAO,KAAKY,mBAAkB,EAAG2E,KAAMC,GAAUA,EAAMC,OAAS,aAAa,GAAGC,cAAgB,CAAA,CAClG,CACA,IAAc1F,wBAAwB2F,EAAuC,CAC3E,KAAK/E,mBAAmBgF,OAAQC,GACvBA,EAAOC,IAAKN,GACjBA,EAAMC,OAAS,cAAgBM,GAAAC,GAAA,GAAKR,GAAL,CAAYE,aAAcC,CAAe,GAAKH,CAAK,CAErF,CACH,CAiBAS,YAC8CC,EAC3BC,EACTC,EACAC,EACSC,EACAC,EACAC,EACAC,EAAsC,CAPX,KAAAP,OAAAA,EAC3B,KAAAC,eAAAA,EACT,KAAAC,sBAAAA,EACA,KAAAC,iBAAAA,EACS,KAAAC,aAAAA,EACA,KAAAC,cAAAA,EACA,KAAAC,mBAAAA,EACA,KAAAC,mBAAAA,EA/HnB,KAAA1J,aAAeA,GACf,KAAAmB,0BAA4BA,IAC5B,KAAAI,+BAAiCA,IAGjC,KAAAoI,UAAYC,EAAgB,EAAI,EAChC,KAAA9N,kBAAmC,GAElB,KAAAuM,SAAoC,IAAIwB,GAAwB,MAAM,EAGtE,KAAA/B,aAAe,IAAIgC,GAA0B,CAAC,EACrD,KAAAC,YAAc,KAAKjC,aAAakC,aAAY,EAC5C,KAAAC,WAAkC,KAAKF,YAAYG,KAAKnB,EAAKlB,GAAeA,IAAe,SAAS,CAAC,EAK9F,KAAAI,cAAgB,IAAI6B,GAAsB,CAAC,EAClD,KAAAK,aAAe,KAAKlC,cAAc+B,aAAY,EAKjD,KAAAtL,MAAQ,KAAK2K,sBAAsB3K,MAWjC,KAAAmD,0BAA4B,GAoBpB,KAAA0G,gBAAkB,IAAIsB,GAAwB,EAAE,EACvD,KAAAO,eAAiB,KAAK7B,gBAAgByB,aAAY,EAMlD,KAAAK,gBAAmD,IAAIC,GACvD,KAAAC,gBAAmD,IAAID,GAEvD,KAAAE,OAA6B,IAAIF,GAE3C,KAAAG,WAAa,IAAIZ,GAA0C,IAAI,EAC/D,KAAAxN,UAAY,KAAKoO,WAAWT,aAAY,EAE9B,KAAA5L,iBAAmBwL,EAA+B,CAAA,CAAE,EACpD,KAAA/F,mBAAqB+F,EAA+B,CAAA,CAAE,EAiChE,KAAAc,OAAS,IAAIb,GAA0B,CAAA,CAAE,EACzC,KAAAtG,MAAQ,KAAKmH,OAAOV,aAAY,EAEf,KAAAW,yBAA2B,IAAIC,GAC7B,KAAAlI,6BAA+B,KAAKiI,yBAAyBE,WAEtE,KAAA9H,oBAAsB,GACtB,KAAA+H,qBAAuB,GACvB,KAAA1F,sBAAwB,KAAK+D,OAAO4B,oCAAsCC,EAAG,EAAK,EAI3E,KAAAC,mBAAqB,IAAIpB,GAAyB,EAAK,EAC9D,KAAApH,iCAAmCyI,GAAS,KAAK/B,QAAQgC,mCAAqCH,EAAG,EAAK,CAAC,EAY/G,KAAKZ,eACFF,KACCkB,GAAkB,EAClBC,EAAW/C,GACTA,EAAgB,KAAKe,sBAAsBiC,YAAYhD,CAAa,EAAI0C,EAAG,IAAI,CAAC,EAElFO,GAAKC,GAAY,CAEf,GADA,KAAKf,WAAW1C,KAAKyD,CAAQ,EACzBA,EAAU,CACZ,IAAMC,EAAO,KAAKjC,cAAckC,2BAA2BF,EAAU9D,EAAYiE,YAAY,EAC7F,KAAKjB,OAAO3C,KAAK0D,GAAMG,cAAcC,QAAU,CAAA,CAAE,CACnD,MACE,KAAKnB,OAAO3C,KAAK,CAAA,CAAE,CAEvB,CAAC,CAAC,EAEH+D,UAAS,EACZ,KAAKjJ,iBAAmBkJ,EAAc,CAAC,KAAK1P,UAAW,KAAKqC,KAAK,CAAC,EAAEwL,KAClEkB,GAAkB,EAClBrC,EAAI,CAAC,CAACyC,EAAUQ,CAAI,IAAcR,GAAUS,SAAWD,GAAME,QAAU,EAAE,EACzEC,GAAoB,CAAE,EAGxB,KAAKC,WAAa,KAAKhC,eAAeF,KAAKnB,EAAKT,GAAkB+D,EAAQ/D,CAAc,CAAC,EACzF,KAAKvF,oBAAsBsJ,EAAQ,KAAKlD,QAAQmD,UAAUC,aAAaC,YACvE,KAAK1B,qBAAuBuB,EAAQ,KAAKlD,QAAQmD,UAAUG,mBAC3D,KAAKC,WAAaX,EAAc,CAAC,KAAK5B,aAAc,KAAKJ,WAAW,CAAC,EAAEG,KACrEmB,EAAU,CAAC,CAACrD,EAAa2E,CAAa,IAAM,KAAKrD,iBAAiBsD,eAAeD,EAAe,CAAC3E,CAAW,CAAC,CAAC,EAC9Ge,EAAK8D,GAAaA,GAAUC,aAAa,CAAC,CAAC,EAC3CC,GAAOV,OAAO,EACdW,GAAY,CAAC,CAAC,EAGhB,KAAKC,eAAiBlB,EAAc,CAAC,KAAKW,WAAY,KAAK3C,WAAW,CAAC,EAAEG,KACvEnB,EAAI,CAAC,CAACmE,EAAWrF,CAAU,IAAM,KAAKuB,eAAe+D,qBAAqBtF,EAAYqF,CAAS,CAAC,CAAC,EAEnG,KAAKhK,uBAAyB,KAAKwJ,WAAWxC,KAAKnB,EAAKmE,GAAc,KAAKE,yBAAyBF,CAAS,CAAC,CAAC,EAC/G,KAAKpJ,sBAAwBiI,EAAc,CACzC,KAAK9B,WACL,KAAK/G,uBACL,KAAKiG,OAAOkE,gBAAgB,CAC7B,EAAEnD,KACDnB,EAAI,CAAC,CAACuE,EAAWC,EAAgBC,CAAe,IAE5CF,IACCE,GAAmBD,IACpB,KAAKzC,sBACL,CAAC,KAAKjJ,0BAEC,CAAC,UAAW,UAAW,cAAe,cAAc,EAEpD,CAAC,UAAW,UAAW,cAAc,CAE/C,EACD4L,GAAU,CAAA,CAAkB,CAAC,EAE/B,KAAKrK,oBAAsB,KAAKU,sBAAsBoG,KAAKnB,EAAK2E,GAAUA,EAAMC,SAAS,aAAa,CAAC,CAAC,EAExG,KAAKC,cAAgB,KAAKC,mBAAkB,EAE5C,KAAKlD,yBAAyBmD,aAC3B5D,KACCkB,GAAkB,EAClBC,EAAW0C,GAAWC,GAAKD,CAAM,CAAC,EAClCE,GAAUC,GAAU,KAAK7E,sBAAsBiC,YAAY4C,CAAK,CAAC,EACjE3C,GAAKC,GAAY,CACIA,GAAU2C,SAASC,QAAO,IAAO5C,GAAU6C,SAASD,QAAO,EAE5E,KAAK/D,gBAAgBiE,KAAK9C,CAAQ,EAElC,KAAKjB,gBAAgB+D,KAAK9C,CAAQ,CAEtC,CAAC,CAAC,EAEHM,UAAS,EAEZ,KAAKnB,yBAAyB4D,eAAerE,KAAKkB,GAAkB,CAAE,EAAEU,UAAiB0C,GAAWC,GAAA,sBAClG,IAAMC,EAAY,MAAMC,GAAe,KAAKvC,UAAU,EAChDwC,EAAaF,EAAY,uCAAyC,kCAClEG,EAAWH,EAAY,qCAAuC,gCAC/DF,GAKH,KAAKjF,aAAauF,iBAAiBF,EAAY,CAC7CG,SAAUC,IACX,EACIN,GAAW,KAAKO,SAAQ,GAP7B,KAAK1F,aAAa2F,eAAeL,EAAU,CACzCE,SAAUC,IACX,CAOL,EAAC,EAED,KAAKG,mBAAkB,CACzB,CAEQA,oBAAkB,CACxBC,GAAa,KAAKzF,SAAS,EACxBO,KACCkB,GAAkB,EAClB2B,GAAQsC,GAAgB,CAACA,CAAW,EACpCC,GAAe,KAAKlD,UAAU,EAC9Bf,EAAU,CAAC,CAACkE,EAAGb,CAAS,IAClBA,EACK,KAAKtE,eAAeF,KACzBmB,EAAW/C,GAAkB,KAAKe,sBAAsBiC,YAAYhD,CAAa,CAAC,EAClFS,EAAKyC,IACI,CACLA,SAAUA,EACVkD,UAAWA,GAEd,CAAC,EAGG1D,EAAG,CACRQ,SAAU,CAAA,EACVkD,UAAWA,EACZ,CAEJ,CAAC,EAEH5C,UAAWN,GAAY,CAEtB,IAAMrD,EAAeqD,EAASA,UAAUgE,iBACpCrH,GACF,KAAKnH,sBAAsBmH,CAAY,EAErCqD,EAASA,UACX,KAAKiE,uBAAsB,EAExBjE,EAASkD,WAGZ,KAAKgB,6BAA4B,EACjC,KAAKC,qBAAqBnE,EAASA,SAAS7C,cAAgB,CAAA,CAAE,GAH9D,KAAKiH,mBAAkB,CAK3B,CAAC,CACL,CAEQA,oBAAkB,CACxB,KAAKC,0BAAyB,EAE9B,KAAKH,6BAA4B,EACjC,KAAKI,mCAAmC,SAAS,EACjD,KAAKA,mCAAmC,SAAS,EACjD,KAAKA,mCAAmC,cAAc,EACtD,KAAKC,mCAAkC,CACzC,CAEQA,oCAAkC,CACxChE,EAAc,CAAC,KAAKhC,YAAa,KAAK2C,UAAU,CAAC,EAC9CxC,KAAK8F,GAAK,CAAC,CAAC,EACZlE,UAAU,CAAC,CAACjE,EAAYqF,CAAS,IAAK,CACrC,IAAM+C,EAAsC,CAC1CC,KAAM,KAAK9G,eAAe+D,qBAAqBtF,EAAYqF,CAAS,EACpElF,YAAakF,EAAUlF,YACvB2E,cAAe9E,GAGjB,KAAKsI,oCAAoCtI,EAAY,CAACoI,CAAa,EAAG,EAAK,CAC7E,CAAC,CACL,CAEQJ,2BAAyB,CAC/B,KAAKnR,MAAMwL,KAAK8F,GAAK,CAAC,CAAC,EAAElE,UAAWE,GAClC,KAAK5N,iBAAiByK,OAAQuH,GAAY,CACxC,IAAMC,EAAoC,CACxCrI,YAAagE,GAAME,QAAU,GAC7BS,cAAe,QAEjB,MAAO,CAAC,GAAGyD,EAAUC,CAAW,CAClC,CAAC,CAAC,CAEN,CAEQP,mCAAmCjI,EAAsB,CAC/D,KAAKyI,mCAAmCzI,CAAU,EAC/CqC,KAAK8F,GAAK,CAAC,CAAC,EACZlE,UAAWnD,GAAiB,KAAKwH,oCAAoCtI,EAAYc,EAAc,EAAK,CAAC,CAC1G,CAEQ+G,8BAA4B,CAClC,KAAK7L,mBAAmB0M,IAAI,CAC1B,CACE7H,KAAM,UACNC,aAAc,CAAA,GAEhB,CACED,KAAM,UACNC,aAAc,CAAA,GAEhB,CACED,KAAM,cACNC,aAAc,CAAA,GAEhB,CACED,KAAM,eACNC,aAAc,CAAA,EACS,CAC1B,CACH,CAEA2H,mCACEE,EACAC,EAAiC,CAEjC,OAAO1E,EAAc,CAAC,KAAKhC,YAAa,KAAKI,YAAY,CAAC,EAAED,KAC1DmB,EAAU,CAAC,CAACxD,EAAY6I,CAAQ,IAC1B,KAAK7O,2BAA6B4O,GAAoBjI,KAAME,GAASA,IAASb,CAAU,EACnFmD,EAAG,CAAA,CAAE,EAEP,KAAKvB,mBAAmBkH,8CAC7BD,EACA7I,EACA2I,CAAqB,CAExB,EACDzH,EAAKJ,GACIA,EAAaI,IAAK6H,IAChB,CACLV,KAAM,KAAK9G,eAAe+D,qBAAqBqD,EAAuBI,EAAYC,gBAAgB,EAClGlE,cAAe6D,EACfhB,iBAAkBoB,EAAYC,iBAAiBrB,iBAC/CxH,YAAa4I,EAAYC,iBAAiB7I,aAE7C,CACF,EACD8I,GAAYvB,GACHvE,EAAG,CAAA,CAA4B,CACvC,CAAC,CAEN,CAEUpH,+BAA+BmN,EAA2C,CAClF,KAAKlN,mBAAmB0M,IAAI,CAAC,GAAGQ,CAAmB,CAAC,CACtD,CAEA/P,sBAAsBL,EAA0B,CAC9C,KAAKqQ,OAAM,EACX,KAAK5P,qBAAuBT,GAASZ,OACrC,KAAKb,6BAA+Ba,MACtC,CAEAW,2BAA2ByH,EAA4B8I,EAA0C,CAC/F,KAAKD,OAAM,EACX,KAAK5P,qBAAuB+G,EAC5B,KAAKjJ,6BAA+B+R,CACtC,CAEA3P,gCAA8B,CAC5B,OAAO,KAAKpC,6BACR,yCAAyC,KAAKA,6BAA6BgS,YAAW,CAAE,GACxF,qBACN,CAEA9O,gBAAc,CACZ,GAAI,CAAC,KAAK+O,aAAY,EAAI,CACxB,KAAK5H,aAAa2F,eAAe,4CAA6C,CAC5EH,SAAUC,IACX,EACD,MACF,CAEA,IAAMoC,EAAc,KAAKC,qBAAoB,GAAIC,UAAS,GAAM,CAAA,EAC1DrF,EAAU,KAAKoF,qBAAoB,GAAIpF,QACvCsF,EAAQxF,EAAc,CAAC,KAAKK,WAAY,KAAK7I,MAAO,KAAK0J,eAAgB,KAAKhC,kBAAkB,CAAC,EAAEf,KACvGmB,EAAU,CAAC,CAACqD,EAAWjD,EAAM+F,EAAeC,CAAkB,IAAK,CACjE,IAAMC,EAAiC,CACrCjK,QAASC,EAAYiE,aACrBC,aAAmC,CAAEC,OAAQJ,CAAI,GAE/CkG,EACJ,GAAIjD,EACFiD,EAAW,CACT,KAAKvH,eAAeF,KAClBmB,EAAWuG,GAAc,CACvB,IAAMC,EAAY,CAChB,eACA,GAAG,KAAKrI,cAAcsI,0BAA0B,KAAKT,qBAAoB,GAAIU,SAAS,EACtFrK,EAAYiE,YAAY,EAE1B,OAAIM,GAAWA,IAAY,KAAKxB,WAAWuH,SAAQ,GAAI/F,SACrD4F,EAAUI,KAAK,SAAS,EAEnB,KAAK5I,sBAAsB6I,eAChCN,EACA,KAAKxQ,qBACL,CAAC,GAAGgQ,EAAaM,CAAS,EAC1B,KAAKS,kBAAiB,EACtBlG,EACA4F,CAAS,CAEb,CAAC,CAAC,CACH,UAGHF,EAAW,CACT,KAAKtI,sBAAsB+I,YACzB,KAAKhR,qBACL,CAAC,GAAGgQ,EAAa7L,GAA0BmM,CAAS,EACpD,KAAKS,kBAAiB,EACtBlG,CAAO,CACR,EAECwF,EAAoB,CACtB,IAAMY,EAAsB,KAAKC,6BAA6BhB,UAAUE,CAAa,GAAK,CAAA,EAC1FG,EAASM,KACP,KAAK5I,sBAAsB+I,YACzB,OACA,CAAC,GAAGC,EAAqB9M,EAAwB,EACjD,KAAK4M,kBAAiB,EACtBlG,CAAO,CACR,CAEL,CAEF,OAAOF,EAAc4F,CAAQ,CAC/B,CAAC,CAAC,EAGJ,KAAKhH,yBAAyB4H,UAAUhB,CAAK,CAC/C,CAEQF,sBAAoB,CAC1B,OAAQ,KAAKjQ,qBAAoB,CAC/B,IAAK,OACH,OAAO,KAAKoR,oBACd,IAAK,QACH,OAAO,KAAKC,qBACd,IAAK,OACH,OAAO,KAAKC,oBACd,IAAK,UACH,OAAO,KAAKC,uBACd,IAAK,OACH,OAAO,KAAKC,oBACd,IAAK,gBACH,OAAO,KAAKC,6BACd,QACE,MACJ,CACF,CAEAC,aAAW,CACT,MAAOzG,EAAQ,KAAKgF,qBAAoB,GAAIU,WAAWgB,KACzD,CAEA5B,cAAY,CACV,YAAK1B,uBAAsB,EACpB,KAAKqD,YAAW,CACzB,CAEAnD,qBAAqBhH,EAA4C,CAC/D,IAAMvK,EAAmBuK,EACtBoE,OAAQiG,GAASA,EAAKrG,gBAAkB,MAAM,EAC9C5D,IAAK6H,IACG,CACL5I,YAAa4I,EAAY5I,YACzB2E,cAAeiE,EAAYjE,eAE9B,EACH,KAAKvO,iBAAiBmS,IAAInS,CAAgB,EAE1C,IAAM6E,EAA0B0F,EAC7BoE,OAAQiG,GAASA,EAAKrG,gBAAkB,aAAa,EACrD5D,IAAK6H,IACG,CACL5I,YAAa4I,EAAY5I,YACzB2E,cAAeiE,EAAYjE,eAE9B,EACH,KAAKwD,oCAAoC,cAAelN,EAAyB,EAAI,EAErF,IAAMvB,EAAsBiH,EACzBoE,OAAQiG,GAASA,EAAKrG,gBAAkB,SAAS,EACjD5D,IAAK6H,IACG,CACL5I,YAAa4I,EAAY5I,YACzB2E,cAAeiE,EAAYjE,eAE9B,EACH,KAAKsG,4BAA4B,UAAWvR,CAAmB,EAE/D,IAAMC,EAAsBgH,EACzBoE,OAAQiG,GAASA,EAAKrG,gBAAkB,SAAS,EACjD5D,IAAK6H,IACG,CACL5I,YAAa4I,EAAY5I,YACzB2E,cAAeiE,EAAYjE,eAE9B,EACH,KAAKsG,4BAA4B,UAAWtR,CAAmB,EAE/D,IAAMuR,EAA0BvK,EAC7BoE,OAAQiG,GAASA,EAAKrG,gBAAkB,cAAc,EACtD5D,IAAK6H,IACG,CACL5I,YAAa4I,EAAY5I,YACzB2E,cAAeiE,EAAYjE,cAC3B6C,iBAAkBoB,EAAYpB,kBAEjC,EACH,KAAKyD,4BAA4B,eAAgBC,CAAuB,CAC1E,CAEcD,4BACZpL,EACAc,EAAoC,QAAA8F,GAAA,sBAEpC,KAAK0E,sBAAsBxK,EAAcd,CAAU,EAAEuL,KAAMC,GAAc,CACvE,KAAKlD,oCAAoCtI,EAAYwL,EAAY,EAAI,CACvE,CAAC,CACH,GAEcF,sBACZxK,EACAd,EAAsB,QAAA4G,GAAA,sBAEtB,IAAM6E,EAAY3K,EAAaI,IAAK6H,GAAgBA,EAAY5I,aAAe,EAAE,EAEjF,QADgB,MAAM2G,GAAe,KAAKrF,iBAAiBsD,eAAe/E,EAAYyL,CAAS,CAAC,IAC/ExG,YAAc,CAAA,GAAI/D,IAAKmE,IAC/B,CACLgD,KAAM,KAAK9G,eAAe+D,qBAAqBtF,EAAYqF,CAAS,EACpEP,cAAe9E,EACfG,YAAakF,EAAUlF,YACvBwH,iBAAkBtC,EAAUsC,kBAE/B,CACH,GAEQW,oCACNtI,EACAe,EACA2K,EAAwB,CAExB,KAAK1P,mBAAmBgF,OAAQC,GACvBA,EAAOC,IAAKN,GACbA,EAAMC,OAASb,EACVmB,GAAAC,GAAA,GACFR,GADE,CAELE,aAAc4K,EAAkB3K,EAAkB,CAAC,GAAGH,EAAME,aAAc,GAAGC,CAAe,IAGzFH,CACR,CACF,CACH,CAEAgH,wBAAsB,CACpB,KAAK4B,qBAAoB,GAAImC,SAAQ,CACvC,CAEAxC,QAAM,CACJ,KAAKrH,UAAU4G,IAAI,EAAK,CAC1B,CAEAtB,UAAQ,CACN,KAAK7N,qBAAuBrB,OAC5B,KAAK4J,UAAU4G,IAAI,EAAI,EACvB,KAAKkD,YAAW,EAChB,KAAKrS,qBAAuBrB,OAC5B,KAAKb,6BAA+Ba,MACtC,CAEA0D,wBAAwBiQ,EAAmB,CACzC,KAAKzI,mBAAmBlD,KAAK2L,CAAU,CACzC,CAEAnR,qBAAmB,CACjB,KAAK0M,SAAQ,EACb,KAAKzE,OAAO8D,KAAI,CAClB,CAEAjP,yBAAuB,CACrB,KAAK2B,sBAAsBqE,EAA8B,CAC3D,CAEAoO,aAAW,CACT,KAAKjB,qBAAqBmB,UAAS,EACnC,KAAKlB,sBAAsBkB,UAAS,EACpC,KAAKjB,qBAAqBiB,UAAS,EACnC,KAAKhB,wBAAwBgB,UAAS,EACtC,KAAKf,qBAAqBe,UAAS,EACnC,KAAKd,8BAA8Bc,UAAS,EAC5C,KAAKjE,6BAA4B,EACjC,KAAKtR,iBAAiBmS,IAAI,CAAA,CAAE,EAC5B,KAAK7F,OAAO3C,KAAK,CAAA,CAAE,EACnB,KAAKjM,kBAAoB,EAC3B,CAEQqW,mBAAiB,CACvB,IAAMyB,EAAoB,KAAKA,mBAAqB,CAAA,EAC9CC,EAAqB,CAAA,EAC3B,YAAKhQ,mBAAkB,EAAGiQ,QAASlD,GAAe,CAChDiD,EAAmB5B,KAAK,GAAGrB,EAAYjI,YAAY,CACrD,CAAC,EACM,CAAC,GAAGkL,EAAoB,GAAG,KAAKzV,iBAAgB,EAAI,GAAGwV,CAAiB,CACjF,CAEQxG,yBAAyBF,EAA6B,CAK5D,OAJmB,KAAK1D,cAAckC,2BACpCwB,EACA6G,GAA0BC,cAAc,GAEvBC,aAAe,IACpC,CAQQpG,oBAAkB,CACxB,IAAMqG,EAAe,KAAKxK,mBAAmByK,QAAQ,eAAe7O,GAAyB,GAAG,EAAE4E,KAChGiC,GAAoB,EACpBpD,EAAKqL,GAAWA,EAAOC,OAAO,CAAC,EAEjC,OAAO,KAAKhM,SAAS6B,KACnBnB,EAAKX,GAAWA,IAAW,QAAQ,EACnCkM,GAAgBJ,CAAY,CAAC,CAEjC,CAEA5Q,WAAWiR,EAAkB,CAC3B,KAAK7J,QAAQ3C,KAAKwM,CAAQ,CAC5B,iDAxpBW/O,GAA0BgP,EAmI3BC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,CAAA,CAAA,CAAA,+BAnIhBxP,EAA0ByP,UAAA,CAAA,CAAA,qBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,OAC1BE,GAA8B,CAAA,KAC9BC,GAA+B,CAAA,KAC/BC,GAA8B,CAAA,KAC9BC,GAAiC,CAAA,KACjCC,GAA8B,CAAA,KAC9BC,GAAuC,CAAA,KAEvCC,GAAsC,CAAA,itBAVtC,CAAChB,EAAqB,CAAC,CAAA,EAAAiB,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,SAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,EAAA,CAAA,oBAAA,SAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,UAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,QAAA,mBAAA,EAAA,WAAA,SAAA,cAAA,oBAAA,EAAA,cAAA,EAAA,CAAA,QAAA,mBAAA,EAAA,WAAA,gBAAA,SAAA,OAAA,cAAA,eAAA,oBAAA,qBAAA,EAAA,cAAA,EAAA,CAAA,QAAA,mBAAA,EAAA,WAAA,SAAA,oBAAA,cAAA,oBAAA,EAAA,cAAA,EAAA,CAAA,QAAA,mBAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,oBAAA,WAAA,SAAA,aAAA,EAAA,CAAA,mBAAA,oBAAA,EAAA,kBAAA,EAAA,CAAA,mBAAA,QAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,mBAAA,mBAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,oBAAA,qBAAA,WAAA,gBAAA,SAAA,OAAA,cAAA,cAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,oBAAA,WAAA,SAAA,oBAAA,aAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,gBAAA,QAAA,EAAA,WAAA,EAAA,CAAA,WAAA,GAAA,EAAA,QAAA,cAAA,MAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,OAAA,QAAA,MAAA,EAAA,OAAA,UAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,OAAA,QAAA,KAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,yBAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,iBAAA,wBAAA,QAAA,WAAA,MAAA,EAAA,CAAA,qBAAA,GAAA,OAAA,SAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,gBAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,QAAA,EAAA,MAAA,oBAAA,EAAA,YAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,yBAAA,aAAA,kBAAA,EAAA,CAAA,aAAA,SAAA,gBAAA,QAAA,EAAA,MAAA,mBAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,SAAA,UAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,OAAA,SAAA,EAAA,QAAA,UAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,qBAAA,GAAA,OAAA,SAAA,EAAA,OAAA,EAAA,CAAA,aAAA,QAAA,gBAAA,QAAA,QAAA,oBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,aAAA,QAAA,gBAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,MAAA,EAAA,qBAAA,eAAA,UAAA,SAAA,aAAA,EAAA,CAAA,aAAA,kBAAA,gBAAA,QAAA,QAAA,oBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,aAAA,kBAAA,gBAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,MAAA,EAAA,qBAAA,iBAAA,eAAA,SAAA,aAAA,EAAA,CAAA,aAAA,cAAA,gBAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,MAAA,EAAA,cAAA,OAAA,QAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,aAAA,OAAA,gBAAA,QAAA,QAAA,oBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,aAAA,OAAA,gBAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,8BAAA,wBAAA,iBAAA,WAAA,sBAAA,CAAA,EAAAC,SAAA,SAAAZ,EAAAC,EAAA,CAAAD,EAAA,ICnLpCza,EAAA,EAAAsb,IAAA,GAAA,GAAA,eAAA,EAAA,kCAAezb,EAAA,OAAA0b,GAAA,EAAAC,GAAA9Z,EAAA,EAAA,EAAAgZ,EAAAxH,aAAA,EAAAxR,EAAA,EAAA,EAAAgZ,EAAAhJ,UAAA,CAAA,CAAA,iBDoJX+J,EAAYC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GAAaC,GAAAC,GAAAC,GAAAC,GACbC,GAAaC,GACbC,GACAC,GACAC,GAAeC,GACfC,GAAkBC,GAClBC,GAAqBC,GAAAC,GACrBC,GAAcC,GACdC,GAAmBC,GAAAC,GACnBC,GACAC,GACAC,GAAkCC,GAClCC,GACAC,GACAnD,GACAC,GACAC,GACAC,GACAC,GACAgD,GACAC,GACAhD,GACAiD,GAAaC,GAAAC,GAAAC,GACbC,GACApD,GACAqD,GACAC,EAA2C,EAAAC,OAAA,CAAA;qHAAA;iGAAA,CAAA,CAAA,CAAA,SAIlC1T,CAA0B,GAAA,IErLvC,IA2FM2T,IAyBOC,GApHbC,GAAAC,EAAA,KAAAC,IACAC,KAGAC,KAaAC,KAYAC,KACAC,KACAC,KAQAC,KAOAC,4BA6CMZ,IAA+C,CACnDa,SAAUC,GAAoBC,0BAC9BC,QAAS,CACP,CACEC,QAASC,EAAYC,mBACrBN,SAAUO,GAAeC,mBACzBC,OAAQ,CACN,CACEC,OAAQJ,GAAmBK,KAC5B,GAGL,CACEP,QAASC,EAAYO,oBACrBZ,SAAUO,GAAeM,0BACzBJ,OAAQ,CACN,CACEK,YAAaC,GAAYC,mBAC1B,EAEe,GAKX5B,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CAMpC6B,YACkBC,EACCC,EACAC,EACAC,EACAC,EACAC,EAC2BC,EAAuB,CANnD,KAAAN,MAAAA,EACC,KAAAC,gBAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,iBAAAA,EACA,KAAAC,WAAAA,EACA,KAAAC,iBAAAA,EAC2B,KAAAC,OAAAA,EAZrC,KAAAC,oBAAsB,KAAKJ,iBAAiBK,QAAQ,+CAA+C,EACnG,KAAAC,cAAgB,IAAIC,GAA+B,IAAI,EACvD,KAAAC,aAAe,IAAID,GAA2D,IAAI,EACnF,KAAAE,WAAaC,EAAOC,EAAU,EAWpC,KAAKd,MAAMe,IAAI,CACbC,kBAAmB,GACnBC,mBAAoB,GACpBC,kBAAmB,GACnBC,gCAAiC,KACjCC,WAAY,CAAA,EACZC,iBAAkB,CAAA,EAClBC,cAAe,CAAA,EACfC,WAAY,GACZtC,QAAS,CAAA,EACTuC,4BAA6B,IAAIC,IACjCC,YAAa,GACd,EACD,KAAKC,sBAAqB,EAC1B,KAAKC,cAAa,EAClB,KAAKC,iBAAgB,CACvB,CAEAC,oBAAoBV,EAAgCW,EAA8B,CAChF,IAAMV,EAA+C,CAAA,EAE/CW,EAA8BZ,EAAWa,IAAKC,GAAY,CAC9D,IAAMC,EAAM,KAAKC,4BAA4BF,CAAQ,EACrD,OAAIC,GAAKE,cACPF,EAAIG,cAAgB,KAAKtC,MAAMuC,IAAI,6BAA6B,EAAEA,IAAIJ,EAAIE,WAAW,GAAKF,EAAIG,eAEzFH,CACT,CAAC,EAEGK,EAAoD,CAAA,EACpDT,IACFS,EAAeR,EACZS,OAAQP,GAEL,KAAKhC,aAAawC,2BAA2BR,EAAU/C,EAAYC,kBAAkB,GAAGuD,cACtFvD,GAAmBK,MAAQyC,EAASI,cAAcM,QAAO,EAAKC,KAAKC,IAAG,CAE3E,EACAC,KAAK,CAACC,EAAGC,IAAMD,EAAEV,cAAcM,QAAO,EAAKK,EAAEX,cAAcM,QAAO,CAAE,GAIzE,IAAMM,EAAqBlB,EAA4BS,OACpDP,GAAaA,EAASI,cAAcM,QAAO,EAAKC,KAAKC,IAAG,CAAE,EAGvDK,EAAoC,CAAC,GAAGX,EAAc,GAAGU,CAAkB,EAE3EE,EAAiBpB,EAA4BS,OAChDP,GAAa,CAACiB,GAAmCE,KAAMC,GAASA,EAAKjB,cAAgBH,EAASG,WAAW,CAAC,EAIzGc,EAAkCI,OAAS,GAC7ClC,EAAiBmC,KAAK,CACpBC,KAAM,KAAKlD,oBACXa,WAAY+B,EACb,EAIH,IAAMO,EAAkB,IAAIjC,IAC5B,QAAWS,KAAYkB,EAAgB,CACrC,IAAMO,EAAe,IAAId,KAAKX,EAASI,cAAcsB,YAAW,EAAI1B,EAASI,cAAcuB,SAAQ,CAAE,EAC/FC,EAAmBH,EAAaf,QAAO,EAC7C,GAAI,CAACc,EAAgBK,IAAID,CAAgB,EAAG,CAC1CJ,EAAgB3C,IAAI+C,EAAkB,CACpCL,KAAM,GAAGE,EAAaK,eAAe,UAAW,CAAEC,MAAO,MAAM,CAAE,CAAC,IAAIN,EAAaC,YAAW,CAAE,GAChGxC,WAAY,CAACc,CAAQ,EACrBgC,KAAMP,EACP,EACD,QACF,CACAD,EAAgBnB,IAAIuB,CAAgB,GAAG1C,WAAWoC,KAAKtB,CAAQ,CACjE,CAGA,IAAMiC,EAAe,CAAC,GAAGT,EAAgBnE,OAAM,CAAE,EAAEwD,KAAK,CAACC,EAAGC,IACtDD,EAAEkB,OAAS,KACN,GAELjB,EAAEiB,OAAS,KACN,EAELlB,EAAEkB,OAASjB,EAAEiB,KACR,EAEFjB,EAAEiB,KAAKtB,QAAO,EAAKI,EAAEkB,KAAKtB,QAAO,CACzC,EACDvB,OAAAA,EAAiBmC,KAAK,GAAGW,CAAY,EAE9B9C,CACT,CAEQe,4BAA4BgC,EAA8B,CAChE,IAAM9B,EACJ,KAAKpC,aAAawC,2BAA2B0B,EAAaC,GAAeC,qBAAqB,GAAGC,WACjG,KACIC,EACJ,KAAKtE,aAAawC,2BAA2B0B,EAAajF,EAAYsF,sBAAsB,GAAGC,cAC/F,GACF,GAAIpC,IAAkB,KACpB,MAAM,IAAIqC,MAAM,mCAAmCP,EAAY/B,WAAW,EAAE,EAE9E,OAAOuC,GAAAC,GAAA,GACFT,GADE,CAELI,iBAAkBA,EAClBlC,cAAeA,GAEnB,CAEAwC,gBAAgBvD,EAAoBtC,EAAgC,CAClE,KAAKe,MAAMe,IAAI,CACbQ,WAAYA,EACZtC,QAASA,EACTyC,YAAa,GACd,CACH,CAEAE,eAAa,CACXmD,EAAc,CACZ,KAAK/E,MAAMgF,OAAO,aAAa,EAC/B,KAAKhF,MAAMgF,OAAO,oBAAoB,EACtC,KAAKhF,MAAMgF,OAAO,YAAY,EAC9B,KAAKhF,MAAMgF,OAAO,SAAS,EAC3B,KAAKvE,cAAcwE,aAAY,EAC/B,KAAKtE,aAAasE,aAAY,CAAE,CACjC,EACEC,KACCC,GAAmB,KAAKvE,UAAU,EAClCwE,GAAU,CAAC,CAAC1D,CAAW,IAAM,CAACA,CAAW,EACzC2D,GAAa,GAAG,EAChB5C,GAAO,CAAC,CAAA,CAAGxB,CAAkB,IAAMA,CAAkB,EAErDqE,GAAI,IAAK,CACP,KAAKtF,MAAMe,IAAI,CAAEC,kBAAmB,EAAI,CAAE,CAC5C,CAAC,EACDuE,EAAU,CAAC,CAAA,CAAA,CAAKhE,EAAYtC,EAASoD,EAAamD,CAAU,IAAK,CAC/D,IAAMrE,EAAkC,KAAKnB,MAAMuC,IAAI,iCAAiC,EACxF,GAAIpB,GAAiCsE,UAAY,GAC/C,OAAOC,EAAG,CAAA,CAAE,EAEd,IAAMC,EAAa,KAAKtF,iBAAiBuF,eAAe3G,CAAO,EACzD4G,EAAU,CACdxD,YAAaA,EACbyD,cAAeN,EACfO,cAAe,CACbC,SAAUC,GACVC,OAAQ/E,GAAiCgF,YAAc,IAEzDC,OAAQ,CACN7E,WAAYA,GAEd8E,UAAW,KAAKC,qBAAqBX,EAAY,CAACtD,CAAW,GAEzDkE,EAAc,KAAKtG,gBAAgBuG,eAAeX,CAAO,EAE/D,GAAI1E,GAAiCgF,YAAclH,EAAQsE,OAAS,GAAKhC,EAAWgC,OAAS,EAC3F,OAAOgD,EAGT,IAAIE,EAA6Df,EAAG,CAAEtE,WAAY,CAAA,CAAE,CAAE,EACtF,GAAIiB,EAAa,CACf,IAAMqE,EAAiB,CACrBrE,YAAaA,EACbyD,cAAeN,EACfO,cAAe,CACbC,SAAU,IACVE,OAAQ,IAEVE,OAAQ,CACN7E,WAAYA,GAEd8E,UAAWpI,KAEbwI,EAAgB,KAAKxG,gBAAgBuG,eAAeE,CAAc,CACpE,CAEA,OAAO3B,EAAc,CAACwB,EAAaE,CAAa,CAAC,EAAEvB,KACjDjD,EAAI,CAAC,CAACb,EAAYoB,CAAY,IAAK,CACjC,IAAMmE,EAAWvF,EACXwF,EAAgB,CAAC,GAAIxF,GAAYA,YAAc,CAAA,EAAK,GAAIoB,GAAcpB,YAAc,CAAA,CAAG,EAC7FuF,OAAAA,EAASvF,WAAawF,EACfD,CACT,CAAC,CAAC,CAEN,CAAC,EACDrB,GAAKqB,GAA6C,CAC3CA,GAIL,KAAK3G,MAAMe,IAAI,CACbE,mBAAoB,GACpBE,gCAAiC,CAC/BgF,WAAYQ,GAAUE,gBAAgBV,YAAc,GACpDV,QAASkB,GAAUE,gBAAgBpB,SAAW,IAEjD,CACH,CAAC,EACDxD,EAAK0E,GAAaA,GAAUvF,YAAc,CAAA,CAAE,EAC5CkE,GAAKlE,GAAc,CACjB,IAAM0F,EAAqB,KAAKC,iBAAiB,CAAC,GAAG,KAAK/G,MAAMuC,IAAI,YAAY,EAAG,GAAGnB,CAAU,CAAC,EAC3F4F,EAAmB,KAAKhH,MAAMuC,IAAI,kBAAkB,EACpD,CAAC0E,EAAyBC,CAAiB,EAAI,KAAKC,qBACxDL,EACAE,CAAgB,EAElB,KAAKhH,MAAMe,IAAI,CACbK,WAAY8F,EACZlG,kBAAmB,GACnBE,kBAAmB,GACnB8F,iBAAkBC,EACnB,CACH,CAAC,CAAC,EAEHG,UAAS,CACd,CAEAvF,kBAAgB,CACd,KAAK7B,MAAMqH,QACT,gBACA,KAAKrH,MAAMgF,OAAO,YAAY,EAAEE,KAC9BjD,EAAKb,GAAc,CACjB,IAAME,EAAgB,CAAC,GAAG,KAAKtB,MAAMuC,IAAI,eAAe,CAAC,EACzD,QAAWL,KAAYd,EACjBc,EAASoF,SAAW,CAAChG,EAAciG,SAASrF,EAASoF,OAAO,GAC9DhG,EAAckC,KAAKtB,EAASoF,OAAO,EAGvC,OAAOhG,CACT,CAAC,CAAC,CACH,EAGH,KAAKtB,MAAMqH,QACT,cACA,KAAKrH,MACFgF,OAAO,eAAe,EACtBE,KAAKK,EAAWjE,GAAkBkG,GAAclG,EAAe,KAAKhB,OAAQ,KAAKF,UAAU,CAAC,CAAC,CAAC,CAErG,CAEAuB,uBAAqB,CACnBoD,EAAc,CAAC,KAAKtE,cAAcwE,aAAY,EAAI,KAAKtE,aAAasE,aAAY,CAAE,CAAC,EAChFC,KACCC,GAAmB,KAAKvE,UAAU,EAClC6G,GAAqB,CAACzE,EAAGC,IAAMD,EAAE,CAAC,IAAMC,EAAE,CAAC,GAAKD,EAAE,CAAC,IAAMC,EAAE,CAAC,CAAC,EAC7DqC,GAAI,CAAC,CAACjD,EAAamD,CAAU,IAAK,CAC5BnD,GAAemD,GAEjB,KAAKkC,iBAAgB,CAEzB,CAAC,CAAC,EAEHN,UAAS,CACd,CAEAO,oBAAkB,CACwB,KAAK3H,MAAMuC,IAAI,iCAAiC,GACnDkD,UAAY,IAGjD,KAAKzF,MAAMe,IAAI,CACbE,mBAAoB,GACrB,CACH,CAEAyG,kBAAgB,CACd,KAAK1H,MAAMe,IAAI,CACbC,kBAAmB,GACnBC,mBAAoB,GACpBC,kBAAmB,GACnBC,gCAAiC,KACjCC,WAAY,CAAA,EACZC,iBAAkB,CAAA,EAClBG,4BAA6B,IAAIC,IAClC,CACH,CAEAsF,iBAAiB3F,EAA+B,CAC9C,IAAMwG,EAAiC,IAAInG,IAE3CL,OAAAA,EAAWa,IAAKC,GAAY,CAC1B,GAAI,CAACA,EAASG,YACZ,MAAM,IAAIsC,MAAM,6BAA6B,EAE/CiD,EAA+B7G,IAAImB,EAASG,YAAa,KAAKD,4BAA4BF,CAAQ,CAAC,CACrG,CAAC,EAEM,CAAC,GAAG0F,EAA+BrI,OAAM,CAAE,CACpD,CAEAsI,0BAA0B3F,EAA2B,CACnD,GAAIA,EAASG,YAAa,CACxB,IAAMb,EAA8B,KAAKxB,MAAMuC,IAAI,6BAA6B,EAChF,GAAIf,EAA4Be,IAAIL,EAASG,WAAW,EACtD,OAEF,IAAIC,EAAgBJ,EAAS4F,SAAW,IAAIjF,KAC5C,GAAI,CACFP,EAAgB,KAAKF,4BAA4BF,CAAQ,EAAEI,aAC7D,MAAY,CACV,CAGFd,EAA4BT,IAAImB,EAASG,YAAaC,CAAa,EACnE,KAAKtC,MAAMe,IAAI,CAAES,4BAA6BA,CAA2B,CAAE,CAC7E,CACF,CAEA8E,qBACErH,EACA8I,EAAoC,CAEpC,IAAMC,EAAkC,CACtC,CACE9I,QAAS,+CACTJ,SAAU,EACVS,OAAQ,CAAC,CAAEC,OAAQ,SAAS,CAAE,EAC/B,EAGH,OAAIuI,IACFC,EAAaxE,KAAK,CAChBtE,QAASC,EAAYsF,uBACrB3F,SAAU,EACVS,OAAQ,CAAC,CAAE0I,QAAS,EAAI,CAAE,EACR,EACpBD,EAAaxE,KAAK,CAChBtE,QAASmF,GAAe6D,aACxBpJ,SAAU,EACVS,OAAQ,CAAC,CAAEC,OAAQ,MAAM,CAAE,EACT,GAGjBP,EAMHA,EAAQA,QAAU,CAAC,GAAGA,EAAQA,QAAS,GAAG+I,CAAY,EALtD/I,EAAU,CACRH,SAAU,EACVG,QAAS+I,GAMN/I,CACT,CAEAkI,qBACE/F,EACA4F,EAAkC,CAElC,IAAMmB,EAAqB,KAAKC,mBAAmBpB,CAAgB,EAEnE5F,EAAWiH,QAASnG,GAAY,CAC9B,IAAMoG,EAAY,KAAKpI,aAAawC,2BAClCR,EACA/C,EAAYoJ,iBAAiB,GAC5B5F,YACG6F,EAAU,KAAKtI,aAAawC,2BAA2BR,EAAU/C,EAAYsJ,eAAe,GAAG9F,YAErG,GACE6F,IACCF,GAAa,4BACZA,GAAa,0BACbA,GAAa,yBACf,CACA,IAAMI,EAA2BP,EAAmB5F,IAAIiG,CAAO,GAAK,CAClEG,mBAAoBzG,EACpB0G,kBAAmB,CAAA,GAGhBT,EAAmBpE,IAAIyE,CAAO,EAKVE,EAAyBE,kBAAkBC,KAC/DC,GAAoBA,EAAgBzG,cAAgBH,EAASG,WAAW,GAIzEqG,EAAyBE,kBAAkBpF,KAAKtB,CAAQ,GAT1DwG,EAAyBE,kBAAkBpF,KAAKtB,CAAQ,EACxDiG,EAAmBpH,IAAIyH,EAASE,CAAwB,EAW5D,CACF,CAAC,EAED,IAAMzB,EAA0B8B,MAAMC,KAAKb,EAAmB5I,OAAM,CAAE,EACtE,OAAO,KAAK0J,yBAAyBhC,EAAyB7F,CAAU,CAC1E,CAEQgH,mBAAmBpB,EAAkC,CAC3D,IAAMkC,EAA6B,IAAIzH,IACvCuF,OAAAA,GAAkBqB,QAASnG,GAAY,CACrC,IAAMsG,EAAU,KAAKtI,aAAawC,2BAChCR,EAASyG,mBACTxJ,EAAYsJ,eAAe,GAC1B9F,YACC6F,GACFU,EAA2BnI,IAAIyH,EAAStG,CAAQ,CAEpD,CAAC,EACMgH,CACT,CAEQD,yBACNjC,EACA5F,EAA8B,CAE9B,IAAM+H,EAAqB,IAAIC,IAE/BpC,EAAiBqB,QAASnG,GAAY,CAGpC,GAFAA,EAAS0G,kBAAkB7F,KAAK,CAACC,EAAGC,KAAOA,EAAEoG,SAASzG,QAAO,GAAM,IAAMI,EAAEqG,SAASzG,QAAO,GAAM,EAAE,EAE/FV,EAAS0G,kBAAkBrF,OAAS,EAAG,CAEzCrB,EAASyG,mBAAqBzG,EAAS0G,kBAAkB,CAAC,EAC1D1G,EAAS0G,kBAAoB1G,EAAS0G,kBAAkBU,MAAM,CAAC,EAG/D,IAAIC,EAAU,KAAKrJ,aAAawC,2BAC9BR,EAASyG,mBACTxJ,EAAYqK,oBAAoB,GAC/B7G,YAEC8G,EAAO,KAAKvJ,aAAawC,2BAC3BR,EAASyG,mBACTxJ,EAAYuK,iBAAiB,GAC5B/G,YAECgH,EAAc,CAACJ,GAAWA,EAAQhG,SAAW,EAC7CqG,EAAW,CAACH,GAAQA,EAAKlG,SAAW,EAGxC,GAAIoG,GAAeC,EACjB,QAAWd,KAAmB5G,EAAS0G,kBAAmB,CAExD,GAAI,CAACe,GAAe,CAACC,EAAU,MAG/B,GAAID,EAAa,CACf,IAAME,EAAiB,KAAK3J,aAAawC,2BACvCoG,EACA3J,EAAYqK,oBAAoB,GAC/B7G,YAECkH,GAAkBA,EAAetG,OAAS,IAC5CrB,EAASyG,mBAAqB,KAAKzI,aAAa4J,yBAC9C5H,EAASyG,mBACTxJ,EAAYqK,qBACZK,CAAc,EAEhBN,EAAUM,EAEVF,EAAc,GAElB,CAGA,GAAIC,EAAU,CACZ,IAAMG,EAAc,KAAK7J,aAAawC,2BACpCoG,EACA3J,EAAYuK,iBAAiB,GAC5B/G,YAECoH,GAAeA,EAAYxG,OAAS,IACtCrB,EAASyG,mBAAqB,KAAKzI,aAAa4J,yBAC9C5H,EAASyG,mBACTxJ,EAAYuK,kBACZK,CAAW,EAEbN,EAAOM,EAEPH,EAAW,GAEf,CACF,CAEJ,CAEA1H,EAAS0G,kBAAkBP,QAASnG,GAAY,CAC9C,GAAI,CAACA,EAASG,YACZ,MAAM,IAAIsC,MAAM,6BAA6B,EAE/CwE,EAAmBa,IAAI9H,EAASG,WAAW,CAC7C,CAAC,CACH,CAAC,EAED,IAAMyE,EAAqB1F,EAAWqB,OACnCP,GAAaA,EAASG,aAAe,CAAC8G,EAAmBpF,IAAI7B,EAASG,WAAW,CAAC,EAGrF,MAAO,CAAC2E,EAAkBF,CAAkB,CAC9C,CAEAmD,6BAA6BC,EAA8B,CACzD,GAAI,CAACA,EACH,MAAM,IAAIvF,MAAM,6BAA6B,EAE/C,OACE,KAAK3E,MACFuC,IAAI,kBAAkB,GACrBE,OAAQ0H,GAAqBA,EAAiBxB,oBAAoBtG,cAAgB6H,CAAU,EAC7FE,QAASD,GAAqBA,EAAiBvB,iBAAiB,GAAK,CAAA,CAE5E,iDAzgBW1K,GAAyBmM,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAa1BO,EAAiB,CAAA,CAAA,CAAA,kCAbhB1M,EAAyB2M,QAAzB3M,EAAyB4M,SAAA,CAAA,CAAA,SAAzB5M,CAAyB,GAAA,ICwBtC,SAAS6M,GAAoBC,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAmRA,SAASC,IAAoBF,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA2JA,SAASE,GAAoBH,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAi/BA,SAASG,IAAkBJ,EAASC,EAAO,CACzC,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA/jDA,IAWII,GAUAC,GAQAC,GAeAC,GAkBAC,GAMAC,GAQAC,GAKAC,GAKAC,GA4DEC,GA6BAC,GA6BAC,GAuBAC,GA0BAC,GA6BAC,GAmFAC,GAuBAC,GA+EAC,GAgCAC,GA6BAC,GAuBAC,GAmCAC,GAgCAC,GAuBAC,GAoBAC,GAuBAC,GAgCAC,GA6BAC,GAmFAC,GAwDAC,GAqDAC,GAoKAC,GA0BAC,GA0BAC,GA4CAC,GAsCAC,GAgCAC,GAuBAC,GA6BAC,GAmCAC,GAgCAC,GAsNAC,GA6BAC,GA6BAC,GAuBAC,GAuBAC,GA6BAC,GAwCAC,GAyCAC,GAuBAC,GA6BAC,GA+EAC,GA0BAC,GAgFAC,GAuBAC,GA6BAC,GAoBAC,GA8CAC,GA0BAC,GAuBAC,GA2JAC,GAoBAC,GA6BAC,GAuBAC,GAuBAC,GAuBAC,GA0BAC,GAuBAC,GAuBAC,GA2CAC,GAuFAC,GA+CAC,GA0BAC,GA6BAC,GA0BAC,GAuBAC,GA6BAC,GAuBAC,GA0BAC,GAiBAC,GAqEAC,GAoBAC,GAmCAC,GA6BAC,GA8CAC,GA2FAC,GAmCAC,GAuBAC,GAgCAC,GAuBAC,GAgCAC,GA4GAC,GAgCAC,GAuBAC,GAmCAC,GAuBAC,GA6BAC,GAuBAC,GA6BAC,GAuBAC,GA6BAC,GAuBAC,GAyCAC,GAuBAC,GAmCAC,GAuBAC,GAgCAC,GA8CAC,GA6BAC,GAuBAC,GAgCAC,GAuBAC,GA6BAC,GAuBAC,GA6BAC,GAuBAC,GA0BAC,GAiBAC,GA6BAC,GAiBAC,GA6BAC,GAiBAC,GAqCAC,IACAC,IAOFC,GAyJAC,IAiMAC,IAiHEC,IACFC,GAoOAC,IAt6JJC,GAAAC,EAAA,KAAAC,IACAA,IACAC,KACAC,KAQItI,GAAwB,SAAUA,EAAU,CAC9C,OAAAA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MACzBA,CACT,EAAEA,IAAY,CAAC,CAAC,EACZC,GAA8B,SAAUA,EAAgB,CAC1D,OAAAA,EAAeA,EAAe,YAAiB,CAAC,EAAI,cACpDA,EAAeA,EAAe,MAAW,CAAC,EAAI,QAC9CA,EAAeA,EAAe,KAAU,CAAC,EAAI,OAC7CA,EAAeA,EAAe,IAAS,CAAC,EAAI,MAC5CA,EAAeA,EAAe,KAAU,CAAC,EAAI,OACtCA,CACT,EAAEA,IAAkB,CAAC,CAAC,EAClBC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,QAAa,CAAC,EAAI,UAC9CA,EAAcA,EAAc,MAAW,CAAC,EAAI,QAC5CA,EAAcA,EAAc,OAAY,CAAC,EAAI,SAC7CA,EAAcA,EAAc,SAAc,CAAC,EAAI,WAC/CA,EAAcA,EAAc,QAAa,CAAC,EAAI,UAC9CA,EAAcA,EAAc,OAAY,CAAC,EAAI,SACtCA,CACT,EAAEA,IAAiB,CAAC,CAAC,EAOjBC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,yBAA8B,CAAC,EAAI,2BAC/DA,EAAcA,EAAc,uBAA4B,CAAC,EAAI,yBAC7DA,EAAcA,EAAc,8BAAmC,CAAC,EAAI,gCACpEA,EAAcA,EAAc,iCAAsC,CAAC,EAAI,mCACvEA,EAAcA,EAAc,gCAAqC,CAAC,EAAI,kCACtEA,EAAcA,EAAc,6BAAkC,CAAC,EAAI,+BACnEA,EAAcA,EAAc,8BAAmC,CAAC,EAAI,gCACpEA,EAAcA,EAAc,2BAAgC,CAAC,EAAI,6BACjEA,EAAcA,EAAc,6BAAkC,CAAC,EAAI,+BAC5DA,CACT,EAAEA,IAAiB,CAAC,CAAC,EAOjBC,GAA4B,SAAUA,EAAc,CACtD,OAAAA,EAAaA,EAAa,oBAAyB,CAAC,EAAI,sBACxDA,EAAaA,EAAa,2BAAgC,CAAC,EAAI,6BAC/DA,EAAaA,EAAa,6BAAkC,CAAC,EAAI,+BAC1DA,CACT,EAAEA,IAAgB,CAAC,CAAC,EAChBC,GAAsC,SAAUA,EAAwB,CAC1E,OAAAA,EAAuBA,EAAuB,MAAW,CAAC,EAAI,QAC9DA,EAAuBA,EAAuB,UAAe,CAAC,EAAI,YAClEA,EAAuBA,EAAuB,mBAAwB,CAAC,EAAI,qBAC3EA,EAAuBA,EAAuB,UAAe,CAAC,EAAI,YAClEA,EAAuBA,EAAuB,MAAW,CAAC,EAAI,QACvDA,CACT,EAAEA,IAA0B,CAAC,CAAC,EAC1BC,GAAwC,SAAUA,EAA0B,CAC9E,OAAAA,EAAyBA,EAAyB,YAAiB,CAAC,EAAI,cACxEA,EAAyBA,EAAyB,eAAoB,CAAC,EAAI,iBACpEA,CACT,EAAEA,IAA4B,CAAC,CAAC,EAC5BC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,UAAe,CAAC,EAAI,YAChDA,EAAcA,EAAc,WAAgB,CAAC,EAAI,aAC1CA,CACT,EAAEA,IAAiB,CAAC,CAAC,EACjBC,GAAiD,SAAUA,EAAmC,CAChG,OAAAA,EAAkCA,EAAkC,2BAAgC,CAAC,EAAI,6BACzGA,EAAkCA,EAAkC,YAAiB,CAAC,EAAI,cAC1FA,EAAkCA,EAAkC,QAAa,CAAC,EAAI,UACtFA,EAAkCA,EAAkC,eAAoB,CAAC,EAAI,iBAC7FA,EAAkCA,EAAkC,KAAU,CAAC,EAAI,OACnFA,EAAkCA,EAAkC,cAAmB,CAAC,EAAI,gBAC5FA,EAAkCA,EAAkC,eAAoB,CAAC,EAAI,iBAC7FA,EAAkCA,EAAkC,aAAkB,CAAC,EAAI,eAC3FA,EAAkCA,EAAkC,eAAoB,CAAC,EAAI,iBAC7FA,EAAkCA,EAAkC,OAAY,CAAC,EAAI,SACrFA,EAAkCA,EAAkC,cAAmB,EAAE,EAAI,gBACtFA,CACT,EAAEA,IAAqC,CAAC,CAAC,EA+CnCC,GAAN,MAAM8H,CAAe,CACnB,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEhCA,CACT,CACF,EACMjI,GAAN,MAAMkI,CAAc,CAClB,OAAO,UAAUJ,EAAO,CACtB,IAAIC,EAAI,IAAIG,EACZ,OAAAH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEpCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMhI,GAAN,MAAMkI,CAAK,CACT,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc,SAASD,EAAM,YAAa,EAAE,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACM/H,GAAN,MAAMkI,CAAmB,CACvB,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc,SAASD,EAAM,YAAa,EAAE,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACM9H,GAAN,MAAMkI,CAAS,CACb,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,WACRC,EAAE,SAAW/I,GAAoBO,GAAgBuI,EAAM,QAAQ,GAE1DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM7H,GAAN,MAAMkI,CAAS,CACb,OAAO,UAAUR,EAAO,CACtB,IAAIC,EAAI,IAAIO,EACZ,OAAAP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAShI,GAAe,UAAU+H,EAAM,MAAM,GAE9CA,EAAM,WACRC,EAAE,SAAW/I,GAAoBM,GAAUwI,EAAM,QAAQ,GAEvDA,EAAM,iBACRC,EAAE,eAAiB1H,GAAQ,UAAUyH,EAAM,cAAc,GAEvDA,EAAM,iBACRC,EAAE,eAAiB1H,GAAQ,UAAUyH,EAAM,cAAc,GAEvDA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEtCA,EAAM,OACRC,EAAE,KAAO9H,GAAK,UAAU6H,EAAM,IAAI,GAEhCA,EAAM,eACRC,EAAE,aAAeD,EAAM,aAAa,IAAI5H,GAAmB,SAAS,GAElE4H,EAAM,gBACRC,EAAE,cAAgB/H,GAAc,UAAU8H,EAAM,aAAa,GAExDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM5H,GAAN,MAAMkI,CAAQ,CACZ,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,oBACRC,EAAE,kBAAoBD,EAAM,kBAAkB,IAAIxH,GAAiB,SAAS,GAEvEyH,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAE7GA,CACT,CACF,EACM3H,GAAN,MAAMkI,CAAiB,CACrB,OAAO,UAAUV,EAAO,CACtB,IAAIC,EAAI,IAAIS,EACZ,OAAAT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,SACRC,EAAE,OAAS/I,GAAoBQ,GAAesI,EAAM,MAAM,GAErDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEhCA,CACT,CACF,EAgDM1H,GAAN,MAAMkI,CAAa,CACjB,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU5I,IAAoBM,GAAeqI,EAAM,OAAO,GAEvDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMzH,GAAN,MAAMkI,CAAQ,CACZ,OAAO,UAAUZ,EAAO,CACtB,IAAIC,EAAI,IAAIW,EACZ,OAAAX,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIvH,GAAa,SAAS,GAE7CwH,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EAOMxH,GAAN,MAAMkI,CAAY,CAChB,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiBrH,GAAe,UAAUoH,EAAM,cAAc,GAE3DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMvH,GAAN,MAAMkI,CAAe,CACnB,OAAO,UAAUd,EAAO,CACtB,IAAIC,EAAI,IAAIa,EACZ,OAAAb,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiB,SAASD,EAAM,eAAgB,EAAE,GAElDA,EAAM,mBACRC,EAAE,iBAAmB,SAASD,EAAM,iBAAkB,EAAE,GAEnDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAE/BA,CACT,CACF,EAOMtH,GAAN,MAAMkI,CAAW,CACf,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMrH,GAAN,MAAMkI,CAAW,CACf,OAAO,UAAUhB,EAAO,CACtB,IAAIC,EAAI,IAAIe,EACZ,OAAAf,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EACMpH,GAAN,MAAMkI,CAAiB,CACrB,OAAO,UAAUjB,EAAO,CACtB,IAAIC,EAAI,IAAIgB,EACZ,OAAAhB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACMnH,GAAN,MAAMkI,CAAiB,CACrB,OAAO,UAAUlB,EAAO,CACtB,IAAIC,EAAI,IAAIiB,EACZ,OAAAjB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ3I,GAAoBO,GAAwBmI,EAAM,KAAK,GAE5DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMlH,GAAN,MAAMkI,CAAwB,CAC5B,OAAO,UAAUnB,EAAO,CACtB,IAAIC,EAAI,IAAIkB,EACZ,OAAAlB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,MACRC,EAAE,IAAM,IAAI,KAAKD,EAAM,GAAG,GAErBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEtE,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACMjH,GAAN,MAAMkI,CAAgB,CACpB,OAAO,UAAUpB,EAAO,CACtB,IAAIC,EAAI,IAAImB,EACZ,OAAAnB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAa,IAAI,KAAKD,EAAM,UAAU,GAEtCA,EAAM,WACRC,EAAE,SAAW,IAAI,KAAKD,EAAM,QAAQ,GAE/BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMhH,GAAN,MAAMkI,CAAgC,CACpC,OAAO,UAAUrB,EAAO,CACtB,IAAIC,EAAI,IAAIoB,EACZ,OAAApB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,oBACRC,EAAE,kBAAoB/G,GAAgB,UAAU8G,EAAM,iBAAiB,GAErEA,EAAM,0BACRC,EAAE,wBAA0B/G,GAAgB,UAAU8G,EAAM,uBAAuB,GAEjFA,EAAM,yBACRC,EAAE,uBAAyBrG,GAAuB,UAAUoG,EAAM,sBAAsB,GAEtFA,EAAM,wBACRC,EAAE,sBAAwB/G,GAAgB,UAAU8G,EAAM,qBAAqB,GAE7EA,EAAM,sBACRC,EAAE,oBAAsBpG,GAAoB,UAAUmG,EAAM,mBAAmB,GAE7EA,EAAM,eACRC,EAAE,aAAe/G,GAAgB,UAAU8G,EAAM,YAAY,GAExDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,wBAA4B,KAAe,KAAK,0BAA4B,OAC1FA,EAAS,wBAA6B,cAAe,KAAK,wBAA0B,KAAK,wBAAwB,UAAU,EAAI,KAAK,yBAElI,OAAO,KAAK,uBAA2B,KAAe,KAAK,yBAA2B,OACxFA,EAAS,uBAA4B,cAAe,KAAK,uBAAyB,KAAK,uBAAuB,UAAU,EAAI,KAAK,wBAE/H,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,sBAA0B,KAAe,KAAK,wBAA0B,OACtFA,EAAS,sBAA2B,cAAe,KAAK,sBAAwB,KAAK,sBAAsB,UAAU,EAAI,KAAK,uBAE5H,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,sBAA0B,MACxCA,EAAS,sBAA2B,KAAK,uBAEvC,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,oBAAwB,KAAe,KAAK,sBAAwB,OAClFA,EAAS,oBAAyB,cAAe,KAAK,oBAAsB,KAAK,oBAAoB,UAAU,EAAI,KAAK,qBAEtH,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAE/BA,CACT,CACF,EACM/G,GAAN,MAAMkI,CAAiC,CACrC,OAAO,UAAUtB,EAAO,CACtB,IAAIC,EAAI,IAAIqB,EACZ,OAAArB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU9G,GAAgC,UAAU6G,EAAM,OAAO,GAEjEA,EAAM,aACRC,EAAE,WAAanG,GAAmC,UAAUkG,EAAM,UAAU,GAE1EA,EAAM,mBACRC,EAAE,iBAAmBlH,GAAiB,UAAUiH,EAAM,gBAAgB,GAEpEA,EAAM,aACRC,EAAE,WAAanH,GAAW,UAAUkH,EAAM,UAAU,GAElDA,EAAM,eACRC,EAAE,aAAe3I,GAAoBM,GAAcoI,EAAM,YAAY,GAEhEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACM9G,GAAN,MAAMkI,CAAyB,CAC7B,OAAO,UAAUvB,EAAO,CACtB,IAAIC,EAAI,IAAIsB,EACZ,OAAAtB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEtCA,EAAM,UACRC,EAAE,QAAU9G,GAAgC,UAAU6G,EAAM,OAAO,GAEjEA,EAAM,aACRC,EAAE,WAAanG,GAAmC,UAAUkG,EAAM,UAAU,GAEvEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM7G,GAAN,MAAMkI,CAAY,CAChB,OAAO,UAAUxB,EAAO,CACtB,IAAIC,EAAI,IAAIuB,EACZ,OAAAvB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIvG,GAAQ,SAAS,GAE/CuG,EAAM,oBACRC,EAAE,kBAAoB,IAAI,KAAKD,EAAM,iBAAiB,GAEpDA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,0BACRC,EAAE,wBAA0B,SAASD,EAAM,wBAAyB,EAAE,GAEpEA,EAAM,yBACRC,EAAE,uBAAyB,SAASD,EAAM,uBAAwB,EAAE,GAElEA,EAAM,mBACRC,EAAE,iBAAmBjH,GAAiB,UAAUgH,EAAM,gBAAgB,GAEpEA,EAAM,mBACRC,EAAE,iBAAmB,IAAI,KAAKD,EAAM,gBAAgB,GAElDA,EAAM,oBACRC,EAAE,kBAAoB,IAAI,KAAKD,EAAM,iBAAiB,GAEpDA,EAAM,mBACRC,EAAE,iBAAmB,IAAI,KAAKD,EAAM,gBAAgB,GAElDA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAInH,GAAW,SAAS,GAExDmH,EAAM,2BACRC,EAAE,yBAA2B5H,GAAS,UAAU2H,EAAM,wBAAwB,GAE5EA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAI1H,GAAS,SAAS,GAElD0H,EAAM,UACRC,EAAE,QAAUvH,GAAQ,UAAUsH,EAAM,OAAO,GAEzCA,EAAM,cACRC,EAAE,YAActH,GAAY,UAAUqH,EAAM,WAAW,GAErDA,EAAM,eACRC,EAAE,aAAe,IAAI,KAAKD,EAAM,YAAY,GAEvCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,wBAA4B,MAC1CA,EAAS,wBAA6B,KAAK,yBAEzC,OAAO,KAAK,uBAA2B,MACzCA,EAAS,uBAA4B,KAAK,wBAExC,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,yBAA6B,KAAe,KAAK,2BAA6B,OAC5FA,EAAS,yBAA8B,cAAe,KAAK,yBAA2B,KAAK,yBAAyB,UAAU,EAAI,KAAK,0BAErI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACM5G,GAAN,MAAMkI,CAAiB,CACrB,OAAO,UAAUzB,EAAO,CACtB,IAAIC,EAAI,IAAIwB,EACZ,OAAAxB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACM3G,GAAN,MAAMkI,CAAiB,CACrB,OAAO,UAAU1B,EAAO,CACtB,IAAIC,EAAI,IAAIyB,EACZ,OAAAzB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACM1G,GAAN,MAAMkI,CAAQ,CACZ,OAAO,UAAU3B,EAAO,CACtB,IAAIC,EAAI,IAAI0B,EACZ,OAAA1B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW3I,GAAoBE,GAAUwI,EAAM,QAAQ,GAEvDA,EAAM,iBACRC,EAAE,eAAiB1H,GAAQ,UAAUyH,EAAM,cAAc,GAEvDA,EAAM,iBACRC,EAAE,eAAiB1H,GAAQ,UAAUyH,EAAM,cAAc,GAEvDA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMzG,GAAN,MAAMkI,CAAmB,CACvB,OAAO,UAAU5B,EAAO,CACtB,IAAIC,EAAI,IAAI2B,EACZ,OAAA3B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ,IAAI,KAAKD,EAAM,KAAK,GAEzBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACMxG,GAAN,MAAMkI,CAAsB,CAC1B,OAAO,UAAU7B,EAAO,CACtB,IAAIC,EAAI,IAAI4B,EACZ,OAAA5B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ,IAAI,KAAKD,EAAM,KAAK,GAEzBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,qBAAyB,MACvCA,EAAS,qBAA0B,KAAK,sBAEtC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACMvG,GAAN,MAAMkI,CAAuB,CAC3B,OAAO,UAAU9B,EAAO,CACtB,IAAIC,EAAI,IAAI6B,EACZ,OAAA7B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMtG,GAAN,MAAMkI,CAAoB,CACxB,OAAO,UAAU/B,EAAO,CACtB,IAAIC,EAAI,IAAI8B,EACZ,OAAA9B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc,IAAI,KAAKD,EAAM,WAAW,GAExCA,EAAM,gBACRC,EAAE,cAAgB3I,GAAoBQ,GAA0BkI,EAAM,aAAa,GAE9EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACMrG,GAAN,MAAMkI,CAAmC,CACvC,OAAO,UAAUhC,EAAO,CACtB,IAAIC,EAAI,IAAI+B,EACZ,OAAA/B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY3I,GAAoBS,GAAeiI,EAAM,SAAS,GAE9DA,EAAM,QACRC,EAAE,MAAQ3I,GAAoBU,GAAmCgI,EAAM,KAAK,GAEvEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EAOMpG,GAAN,MAAMkI,CAAS,CACb,OAAO,UAAUjC,EAAO,CACtB,IAAIC,EAAI,IAAIgC,EACZ,OAAAhC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIhG,GAAM,SAAS,GAEtCiG,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACMnG,GAAN,MAAMkI,CAAM,CACV,OAAO,UAAUlC,EAAO,CACtB,IAAIC,EAAI,IAAIiC,EACZ,OAAAjC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EA6LMlG,GAAN,MAAMkI,CAAkC,CACtC,OAAO,UAAUnC,EAAO,CACtB,IAAIC,EAAI,IAAIkC,EACZ,OAAAlC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EACMjG,GAAN,MAAMkI,CAA8B,CAClC,OAAO,UAAUpC,EAAO,CACtB,IAAIC,EAAI,IAAImC,EACZ,OAAAnC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMhG,GAAN,MAAMkI,CAA+B,CACnC,OAAO,UAAUrC,EAAO,CACtB,IAAIC,EAAI,IAAIoC,EACZ,OAAApC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACM/F,GAAN,MAAMkI,CAAyC,CAC7C,OAAO,UAAUtC,EAAO,CACtB,IAAIC,EAAI,IAAIqC,EACZ,OAAArC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACM9F,GAAN,MAAMkI,CAAyB,CAC7B,OAAO,UAAUvC,EAAO,CACtB,IAAIC,EAAI,IAAIsC,EACZ,OAAAtC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAI5F,GAAyC,SAAS,GAEzE6F,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACM7F,GAAN,MAAMkI,CAA0B,CAC9B,OAAO,UAAUxC,EAAO,CACtB,IAAIC,EAAI,IAAIuC,EACZ,OAAAvC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EAwBM3F,GAAN,MAAMkI,CAA8B,CAClC,OAAO,UAAUzC,EAAO,CACtB,IAAIC,EAAI,IAAIwC,EACZ,OAAAxC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS1I,IAAkBM,GAAwBmI,EAAM,MAAM,GAE/DA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEjCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACM3F,GAAN,MAAMkI,CAA+B,CACnC,OAAO,UAAU1C,EAAO,CACtB,IAAIC,EAAI,IAAIyC,EACZ,OAAAzC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACM1F,GAAN,MAAMkI,CAA6B,CACjC,OAAO,UAAU3C,EAAO,CACtB,IAAIC,EAAI,IAAI0C,EACZ,OAAA1C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMzF,GAAN,MAAMkI,CAA8B,CAClC,OAAO,UAAU5C,EAAO,CACtB,IAAIC,EAAI,IAAI2C,EACZ,OAAA3C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EAyDMxF,GAAN,MAAMkI,CAAiD,CACrD,OAAO,UAAU7C,EAAO,CACtB,IAAIC,EAAI,IAAI4C,EACZ,OAAA5C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMvF,GAAN,MAAMkI,CAAyB,CAC7B,OAAO,UAAU9C,EAAO,CACtB,IAAIC,EAAI,IAAI6C,EACZ,OAAA7C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,oBACRC,EAAE,kBAAoB,IAAI,KAAKD,EAAM,iBAAiB,GAEpDA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIrF,GAAiD,SAAS,GAExFqF,EAAM,2BACRC,EAAE,yBAA2B5H,GAAS,UAAU2H,EAAM,wBAAwB,GAE5EA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAI1H,GAAS,SAAS,GAE/C2H,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,yBAA6B,KAAe,KAAK,2BAA6B,OAC5FA,EAAS,yBAA8B,cAAe,KAAK,yBAA2B,KAAK,yBAAyB,UAAU,EAAI,KAAK,0BAErI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACMtF,GAAN,MAAMkI,CAA0B,CAC9B,OAAO,UAAU/C,EAAO,CACtB,IAAIC,EAAI,IAAI8C,EACZ,OAAA9C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMrF,GAAN,MAAMkI,CAAsB,CAC1B,OAAO,UAAUhD,EAAO,CACtB,IAAIC,EAAI,IAAI+C,EACZ,OAAA/C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIhF,GAAyC,SAAS,GAEzEiF,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACMpF,GAAN,MAAMkI,CAAuB,CAC3B,OAAO,UAAUjD,EAAO,CACtB,IAAIC,EAAI,IAAIgD,EACZ,OAAAhD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMnF,GAAN,MAAMkI,CAAyC,CAC7C,OAAO,UAAUlD,EAAO,CACtB,IAAIC,EAAI,IAAIiD,EACZ,OAAAjD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EAwBMlF,GAAN,MAAMkI,CAAyB,CAC7B,OAAO,UAAUnD,EAAO,CACtB,IAAIC,EAAI,IAAIkD,EACZ,OAAAlD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEhCA,CACT,CACF,EACMjF,GAAN,MAAMkI,CAAsB,CAC1B,OAAO,UAAUpD,EAAO,CACtB,IAAIC,EAAI,IAAImD,EACZ,OAAAnD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMhF,GAAN,MAAMkI,CAAuB,CAC3B,OAAO,UAAUrD,EAAO,CACtB,IAAIC,EAAI,IAAIoD,EACZ,OAAApD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EA2IM9E,GAAN,MAAMkI,CAAsC,CAC1C,OAAO,UAAUtD,EAAO,CACtB,IAAIC,EAAI,IAAIqD,EACZ,OAAArD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM9E,GAAN,MAAMkI,CAA0C,CAC9C,OAAO,UAAUvD,EAAO,CACtB,IAAIC,EAAI,IAAIsD,EACZ,OAAAtD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM7E,GAAN,MAAMkI,CAA2C,CAC/C,OAAO,UAAUxD,EAAO,CACtB,IAAIC,EAAI,IAAIuD,EACZ,OAAAvD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIzG,GAAiB,SAAS,GAEnD0G,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACM5E,GAAN,MAAMkI,CAAsB,CAC1B,OAAO,UAAUzD,EAAO,CACtB,IAAIC,EAAI,IAAIwD,EACZ,OAAAxD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM3E,GAAN,MAAMkI,CAAuB,CAC3B,OAAO,UAAU1D,EAAO,CACtB,IAAIC,EAAI,IAAIyD,EACZ,OAAAzD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACM1E,GAAN,MAAMkI,CAA0C,CAC9C,OAAO,UAAU3D,EAAO,CACtB,IAAIC,EAAI,IAAI0D,EACZ,OAAA1D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMzE,GAAN,MAAMkI,CAA2C,CAC/C,OAAO,UAAU5D,EAAO,CACtB,IAAIC,EAAI,IAAI2D,EACZ,OAAA3D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIxG,GAAiB,SAAS,GAEnDyG,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMxE,GAAN,MAAMkI,CAA+B,CACnC,OAAO,UAAU7D,EAAO,CACtB,IAAIC,EAAI,IAAI4D,EACZ,OAAA5D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMvE,GAAN,MAAMkI,CAAgC,CACpC,OAAO,UAAU9D,EAAO,CACtB,IAAIC,EAAI,IAAI6D,EACZ,OAAA7D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EAwBMtE,GAAN,MAAMkI,CAAkC,CACtC,OAAO,UAAU/D,EAAO,CACtB,IAAIC,EAAI,IAAI8D,EACZ,OAAA9D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EAoEMrE,GAAN,MAAMkI,CAA0B,CAC9B,OAAO,UAAUhE,EAAO,CACtB,IAAIC,EAAI,IAAI+D,EACZ,OAAA/D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAI1G,GAAY,SAAS,GAEjD0G,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE9CA,EAAM,+BACRC,EAAE,6BAA+B,SAASD,EAAM,6BAA8B,EAAE,GAE9EA,EAAM,+BACRC,EAAE,6BAA+B,SAASD,EAAM,6BAA8B,EAAE,GAE3EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,6BAAiC,MAC/CA,EAAS,6BAAkC,KAAK,8BAE9C,OAAO,KAAK,6BAAiC,MAC/CA,EAAS,6BAAkC,KAAK,8BAE3CA,CACT,CACF,EACMpE,GAAN,MAAMkI,CAAqB,CACzB,OAAO,UAAUjE,EAAO,CACtB,IAAIC,EAAI,IAAIgE,EACZ,OAAAhE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAchE,GAAoB,UAAU+D,EAAM,WAAW,GAE1DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMnE,GAAN,MAAMkI,CAAsB,CAC1B,OAAO,UAAUlE,EAAO,CACtB,IAAIC,EAAI,IAAIiE,EACZ,OAAAjE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIjG,GAAS,SAAS,GAE9CiG,EAAM,iBACRC,EAAE,eAAiB/D,GAAsB,UAAU8D,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMlE,GAAN,MAAMkI,CAAoB,CACxB,OAAO,UAAUnE,EAAO,CACtB,IAAIC,EAAI,IAAIkE,EACZ,OAAAlE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMjE,GAAN,MAAMkI,CAAsB,CAC1B,OAAO,UAAUpE,EAAO,CACtB,IAAIC,EAAI,IAAImE,EACZ,OAAAnE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMhE,GAAN,MAAMkI,CAAiC,CACrC,OAAO,UAAUrE,EAAO,CACtB,IAAIC,EAAI,IAAIoE,EACZ,OAAApE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM/D,GAAN,MAAMkI,CAAkC,CACtC,OAAO,UAAUtE,EAAO,CACtB,IAAIC,EAAI,IAAIqE,EACZ,OAAArE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACM9D,GAAN,MAAMkI,CAA4B,CAChC,OAAO,UAAUvE,EAAO,CACtB,IAAIC,EAAI,IAAIsE,EACZ,OAAAtE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM7D,GAAN,MAAMkI,CAA6B,CACjC,OAAO,UAAUxE,EAAO,CACtB,IAAIC,EAAI,IAAIuE,EACZ,OAAAvE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACM3D,GAAN,MAAMkI,CAA+B,CACnC,OAAO,UAAUzE,EAAO,CACtB,IAAIC,EAAI,IAAIwE,EACZ,OAAAxE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EAyCM3D,GAAN,MAAMkI,CAAwB,CAC5B,OAAO,UAAU1E,EAAO,CACtB,IAAIC,EAAI,IAAIyE,EACZ,OAAAzE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACM1D,GAAN,MAAMkI,CAAyB,CAC7B,OAAO,UAAU3E,EAAO,CACtB,IAAIC,EAAI,IAAI0E,EACZ,OAAA1E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,qBACRC,EAAE,mBAAqBD,EAAM,mBAAmB,IAAItG,GAAmB,SAAS,GAE9EsG,EAAM,wBACRC,EAAE,sBAAwBD,EAAM,sBAAsB,IAAIrG,GAAsB,SAAS,GAEvFqG,EAAM,sBACRC,EAAE,oBAAsBD,EAAM,oBAAoB,IAAI/G,GAAwB,SAAS,GAElFgH,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,mBAAuB,KAAe,KAAK,qBAAuB,OAChFA,EAAS,mBAAwB,cAAe,KAAK,mBAAqB,KAAK,mBAAmB,UAAU,EAAI,KAAK,oBAEnH,OAAO,KAAK,sBAA0B,KAAe,KAAK,wBAA0B,OACtFA,EAAS,sBAA2B,cAAe,KAAK,sBAAwB,KAAK,sBAAsB,UAAU,EAAI,KAAK,uBAE5H,OAAO,KAAK,oBAAwB,KAAe,KAAK,sBAAwB,OAClFA,EAAS,oBAAyB,cAAe,KAAK,oBAAsB,KAAK,oBAAoB,UAAU,EAAI,KAAK,qBAEnHA,CACT,CACF,EACMzD,GAAN,MAAMkI,CAAyB,CAC7B,OAAO,UAAU5E,EAAO,CACtB,IAAIC,EAAI,IAAI2E,EACZ,OAAA3E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIhG,GAAM,SAAS,GAEtCiG,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACMxD,GAAN,MAAMkI,CAA0B,CAC9B,OAAO,UAAU7E,EAAO,CACtB,IAAIC,EAAI,IAAI4E,EACZ,OAAA5E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EA8BMtD,GAAN,MAAMkI,CAAwB,CAC5B,OAAO,UAAU9E,EAAO,CACtB,IAAIC,EAAI,IAAI6E,EACZ,OAAA7E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAa,IAAI,KAAKD,EAAM,UAAU,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAExFA,CACT,CACF,EA4DMtD,GAAN,MAAMkI,CAA8B,CAClC,OAAO,UAAU/E,EAAO,CACtB,IAAIC,EAAI,IAAI8E,EACZ,OAAA9E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,mBACRC,EAAE,iBAAmB,IAAI,KAAKD,EAAM,gBAAgB,GAE/CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMrD,GAAN,MAAMkI,CAA+B,CACnC,OAAO,UAAUhF,EAAO,CACtB,IAAIC,EAAI,IAAI+E,EACZ,OAAA/E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMpD,GAAN,MAAMkI,CAA+B,CACnC,OAAO,UAAUjF,EAAO,CACtB,IAAIC,EAAI,IAAIgF,EACZ,OAAAhF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,oBACRC,EAAE,kBAAoB,IAAI,KAAKD,EAAM,iBAAiB,GAEjDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAE7GA,CACT,CACF,EACMnD,GAAN,MAAMkI,CAAgC,CACpC,OAAO,UAAUlF,EAAO,CACtB,IAAIC,EAAI,IAAIiF,EACZ,OAAAjF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMlD,GAAN,MAAMkI,CAAuB,CAC3B,OAAO,UAAUnF,EAAO,CACtB,IAAIC,EAAI,IAAIkF,EACZ,OAAAlF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAI1H,GAAS,SAAS,GAE/C2H,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMjD,GAAN,MAAMkI,CAAwB,CAC5B,OAAO,UAAUpF,EAAO,CACtB,IAAIC,EAAI,IAAImF,EACZ,OAAAnF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EAsFMhD,GAAN,MAAMkI,CAAiC,CACrC,OAAO,UAAUrF,EAAO,CACtB,IAAIC,EAAI,IAAIoF,EACZ,OAAApF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,2BACRC,EAAE,yBAA2B5H,GAAS,UAAU2H,EAAM,wBAAwB,GAEzEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,yBAA6B,KAAe,KAAK,2BAA6B,OAC5FA,EAAS,yBAA8B,cAAe,KAAK,yBAA2B,KAAK,yBAAyB,UAAU,EAAI,KAAK,0BAElIA,CACT,CACF,EACM/C,GAAN,MAAMkI,CAAkC,CACtC,OAAO,UAAUtF,EAAO,CACtB,IAAIC,EAAI,IAAIqF,EACZ,OAAArF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACM9C,GAAN,MAAMkI,CAA0C,CAC9C,OAAO,UAAUvF,EAAO,CACtB,IAAIC,EAAI,IAAIsF,EACZ,OAAAtF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,oBACRC,EAAE,kBAAoB,IAAI,KAAKD,EAAM,iBAAiB,GAEjDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAElCA,CACT,CACF,EACM7C,GAAN,MAAMkI,CAA2C,CAC/C,OAAO,UAAUxF,EAAO,CACtB,IAAIC,EAAI,IAAIuF,EACZ,OAAAvF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACM5C,GAAN,MAAMkI,CAA+B,CACnC,OAAO,UAAUzF,EAAO,CACtB,IAAIC,EAAI,IAAIwF,EACZ,OAAAxF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM3C,GAAN,MAAMkI,CAAgC,CACpC,OAAO,UAAU1F,EAAO,CACtB,IAAIC,EAAI,IAAIyF,EACZ,OAAAzF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACM1C,GAAN,MAAMkI,CAA6B,CACjC,OAAO,UAAU3F,EAAO,CACtB,IAAIC,EAAI,IAAI0F,EACZ,OAAA1F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMzC,GAAN,MAAMkI,CAA8B,CAClC,OAAO,UAAU5F,EAAO,CACtB,IAAIC,EAAI,IAAI2F,EACZ,OAAA3F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMxC,GAAN,MAAMkI,CAA8B,CAClC,OAAO,UAAU7F,EAAO,CACtB,IAAIC,EAAI,IAAI4F,EACZ,OAAA5F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMvC,GAAN,MAAMkI,CAA+B,CACnC,OAAO,UAAU9F,EAAO,CACtB,IAAIC,EAAI,IAAI6F,EACZ,OAAA7F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMtC,GAAN,MAAMkI,CAAgC,CACpC,OAAO,UAAU/F,EAAO,CACtB,IAAIC,EAAI,IAAI8F,EACZ,OAAA9F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiB1H,GAAQ,UAAUyH,EAAM,cAAc,GAEvDA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMrC,GAAN,MAAMkI,CAAiC,CACrC,OAAO,UAAUhG,EAAO,CACtB,IAAIC,EAAI,IAAI+F,EACZ,OAAA/F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMpC,GAAN,MAAMkI,CAAuC,CAC3C,OAAO,UAAUjG,EAAO,CACtB,IAAIC,EAAI,IAAIgG,EACZ,OAAAhG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU1H,GAAQ,UAAUyH,EAAM,OAAO,GAEtCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMnC,GAAN,MAAMkI,CAAwC,CAC5C,OAAO,UAAUlG,EAAO,CACtB,IAAIC,EAAI,IAAIiG,EACZ,OAAAjG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMlC,GAAN,MAAMkI,CAA+C,CACnD,OAAO,UAAUnG,EAAO,CACtB,IAAIC,EAAI,IAAIkG,EACZ,OAAAlG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMjC,GAAN,MAAMkI,CAAiC,CACrC,OAAO,UAAUpG,EAAO,CACtB,IAAIC,EAAI,IAAImG,EACZ,OAAAnG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EAkBMhC,GAAN,MAAMkI,CAAoC,CACxC,OAAO,UAAUrG,EAAO,CACtB,IAAIC,EAAI,IAAIoG,EACZ,OAAApG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACM/B,GAAN,MAAMkI,CAAqC,CACzC,OAAO,UAAUtG,EAAO,CACtB,IAAIC,EAAI,IAAIqG,EACZ,OAAArG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACM9B,GAAN,MAAMkI,CAAoC,CACxC,OAAO,UAAUvG,EAAO,CACtB,IAAIC,EAAI,IAAIsG,EACZ,OAAAtG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAElCA,CACT,CACF,EACM7B,GAAN,MAAMkI,CAAqC,CACzC,OAAO,UAAUxG,EAAO,CACtB,IAAIC,EAAI,IAAIuG,EACZ,OAAAvG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACM5B,GAAN,MAAMkI,CAA6B,CACjC,OAAO,UAAUzG,EAAO,CACtB,IAAIC,EAAI,IAAIwG,EACZ,OAAAxG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACM3B,GAAN,MAAMkI,CAA8B,CAClC,OAAO,UAAU1G,EAAO,CACtB,IAAIC,EAAI,IAAIyG,EACZ,OAAAzG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACM1B,GAAN,MAAMkI,CAA6B,CACjC,OAAO,UAAU3G,EAAO,CACtB,IAAIC,EAAI,IAAI0G,EACZ,OAAA1G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEhCA,CACT,CACF,EACMzB,GAAN,MAAMkI,CAA8B,CAClC,OAAO,UAAU5G,EAAO,CACtB,IAAIC,EAAI,IAAI2G,EACZ,OAAA3G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3G,GAAY,UAAU0G,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMxB,GAAN,MAAMkI,CAA0B,CAC9B,OAAO,UAAU7G,EAAO,CACtB,IAAIC,EAAI,IAAI4G,EACZ,OAAA5G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMvB,GAAN,MAAMkI,CAA2B,CAC/B,OAAO,UAAU9G,EAAO,CACtB,IAAIC,EAAI,IAAI6G,EACZ,OAAA7G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACMrB,GAAN,MAAMkI,CAA+B,CACnC,OAAO,UAAU/G,EAAO,CACtB,IAAIC,EAAI,IAAI8G,EACZ,OAAA9G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMrB,GAAN,MAAMkI,CAAgC,CACpC,OAAO,UAAUhH,EAAO,CACtB,IAAIC,EAAI,IAAI+G,EACZ,OAAA/G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACMnB,GAAN,MAAMkI,CAAsC,CAC1C,OAAO,UAAUjH,EAAO,CACtB,IAAIC,EAAI,IAAIgH,EACZ,OAAAhH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMnB,GAAN,MAAMkI,CAAuC,CAC3C,OAAO,UAAUlH,EAAO,CACtB,IAAIC,EAAI,IAAIiH,EACZ,OAAAjH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACMjB,GAAN,MAAMkI,CAA+B,CACnC,OAAO,UAAUnH,EAAO,CACtB,IAAIC,EAAI,IAAIkH,EACZ,OAAAlH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEhCA,CACT,CACF,EASMjB,KAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,IAAU,CACd,MAAS,yCACT,KAAQ,GACR,KAAQ,yCACR,KAAQ,yCACR,WAAc,wCAChB,EACIC,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,IAAQD,IAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6BgI,EAAmB,CACjE,OAAO,IAAKA,GAAqBhI,EACnC,EACAA,EAAY,WAA0BiI,GAAmB,CACvD,MAAOjI,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAuICC,KAA6C,IAAM,CACrD,MAAMA,CAA6B,CACjC,aAAc,CACZ,KAAK,YAAciI,EAAOlI,EAAW,EACrC,KAAK,KAAOkI,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,kBAAkBC,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7M,GAAyB6M,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8DAA+DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ/M,GAA0B,UAAU+M,CAAI,CAAC,CAAC,CACvM,CACA,eAAeH,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlM,GAAsBkM,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2DAA4DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQpM,GAAuB,UAAUoM,CAAI,CAAC,CAAC,CACjM,CACA,+BAA+BH,EAAG,CAChC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrM,GAAsCqM,CAAC,EAC7E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2EAA4EC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQpM,GAAuB,UAAUoM,CAAI,CAAC,CAAC,CACjN,CACA,kBAAkBH,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpO,GAAyBoO,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8DAA+DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ9L,GAA0B,UAAU8L,CAAI,CAAC,CAAC,CACvM,CACA,mCAAmCH,EAAG,CACpC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpM,GAA0CoM,CAAC,EACjF,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+EAAgFC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQtM,GAA2C,UAAUsM,CAAI,CAAC,CAAC,CACzO,CACA,sBAAsBH,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhK,GAA6BgK,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kEAAmEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQlK,GAA8B,UAAUkK,CAAI,CAAC,CAAC,CAC/M,CACA,6BAA6BH,EAAG,CAC9B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItJ,GAAoCsJ,CAAC,EAC3E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yEAA0EC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQxJ,GAAqC,UAAUwJ,CAAI,CAAC,CAAC,CAC7N,CACA,sBAAsBH,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhJ,GAA6BgJ,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kEAAmEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQlJ,GAA8B,UAAUkJ,CAAI,CAAC,CAAC,CAC/M,CACA,6BAA6BH,EAAG,CAC9B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpJ,GAAoCoJ,CAAC,EAC3E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yEAA0EC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQtJ,GAAqC,UAAUsJ,CAAI,CAAC,CAAC,CAC7N,CACA,mCAAmCH,EAAG,CACpC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpK,GAA0CoK,CAAC,EACjF,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+EAAgFC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQtK,GAA2C,UAAUsK,CAAI,CAAC,CAAC,CACzO,CACA,uBAAuBH,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9J,GAA8B8J,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mEAAoEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQhK,GAA+B,UAAUgK,CAAI,CAAC,CAAC,CACjN,CACA,uBAAuBH,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvN,GAA8BuN,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mEAAoEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQzN,GAA+B,UAAUyN,CAAI,CAAC,CAAC,CACjN,CACA,0BAA0BH,EAAG,CAC3B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItL,GAAiCsL,CAAC,EACxE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sEAAuEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQxL,GAAkC,UAAUwL,CAAI,CAAC,CAAC,CACvN,CACA,gCAAgCH,EAAG,CACjC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1J,GAAuC0J,CAAC,EAC9E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4EAA6EC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ5J,GAAwC,UAAU4J,CAAI,CAAC,CAAC,CACnO,CACA,yBAAyBH,EAAG,CAC1B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5J,GAAgC4J,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qEAAsEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ9J,GAAiC,UAAU8J,CAAI,CAAC,CAAC,CACrN,CACA,sBAAsBH,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhN,GAA6BgN,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kEAAmEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQlN,GAA8B,UAAUkN,CAAI,CAAC,CAAC,CAC/M,CACA,uBAAuBH,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlN,GAA8BkN,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mEAAoEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQpN,GAA+B,UAAUoN,CAAI,CAAC,CAAC,CACjN,CACA,wBAAwBH,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1K,GAA+B0K,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oEAAqEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ5K,GAAgC,UAAU4K,CAAI,CAAC,CAAC,CACnN,CACA,uBAAuBH,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5K,GAA8B4K,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mEAAoEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ9K,GAA+B,UAAU8K,CAAI,CAAC,CAAC,CACjN,CACA,kBAAkBH,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxM,GAAyBwM,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8DAA+DC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAClH,KAAK,WAAW,GADkG,CAErH,QAAS,UACX,EAAC,CACH,CACA,wBAAwBL,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlL,GAA+BkL,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oEAAqEC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACxH,KAAK,WAAW,GADwG,CAE3H,QAAS,UACX,EAAC,CACH,CACA,wBAAwBL,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlK,GAA+BkK,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oEAAqEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQpK,GAAgC,UAAUoK,CAAI,CAAC,CAAC,CACnN,CACA,oBAAoBH,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjL,GAAwBiL,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gEAAiEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQnL,GAAyB,UAAUmL,CAAI,CAAC,CAAC,CACxM,CACA,sBAAsBH,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlJ,GAA6BkJ,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kEAAmEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQpJ,GAA8B,UAAUoJ,CAAI,CAAC,CAAC,CAC/M,CACA,wBAAwBH,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9L,GAA+B8L,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oEAAqEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQhM,GAAgC,UAAUgM,CAAI,CAAC,CAAC,CACnN,CACA,0BAA0BH,EAAG,CAC3B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItK,GAAiCsK,CAAC,EACxE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sEAAuEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQxK,GAAkC,UAAUwK,CAAI,CAAC,CAAC,CACvN,CACA,0BAA0BH,EAAG,CAC3B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvJ,GAAiCuJ,CAAC,EACxE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sEAAuEC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAC1H,KAAK,WAAW,GAD0G,CAE7H,QAAS,UACX,EAAC,CACH,CACA,2BAA2BL,EAAG,CAC5B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxN,GAAkCwN,CAAC,EACzE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uEAAwEC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAC3H,KAAK,WAAW,GAD2G,CAE9H,QAAS,UACX,EAAC,CACH,CACA,+BAA+BL,EAAG,CAChC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7K,GAAwB6K,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2EAA4EC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAC/H,KAAK,WAAW,GAD+G,CAElI,QAAS,UACX,EAAC,CACH,CACA,8BAA8BL,EAAG,CAC/B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxK,GAAuBwK,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0EAA2EC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ1K,GAAwB,UAAU0K,CAAI,CAAC,CAAC,CACjN,CACA,sCAAsCH,EAAG,CACvC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxI,GAA+BwI,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kFAAmFC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACtI,KAAK,WAAW,GADsH,CAEzI,QAAS,UACX,EAAC,CACH,CACA,mCAAmCL,EAAG,CACpC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhM,GAA0CgM,CAAC,EACjF,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+EAAgFC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQlM,GAA2C,UAAUkM,CAAI,CAAC,CAAC,CACzO,CACA,0BAA0BH,EAAG,CAC3B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrO,GAAiCqO,CAAC,EACxE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sEAAuEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ/L,GAAkC,UAAU+L,CAAI,CAAC,CAAC,CACvN,CACA,wCAAwCH,EAAG,CACzC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxJ,GAA+CwJ,CAAC,EACtF,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oFAAqFC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACxI,KAAK,WAAW,GADwH,CAE3I,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAzI,EAA6B,UAAO,SAA8C+H,EAAmB,CACnG,OAAO,IAAKA,GAAqB/H,EACnC,EACAA,EAA6B,WAA0BgI,GAAmB,CACxE,MAAOhI,EACP,QAASA,EAA6B,UACtC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,KAAyC,IAAM,CACjD,MAAMA,CAAyB,CAC7B,aAAc,CACZ,KAAK,YAAcgI,EAAOlI,EAAW,EACrC,KAAK,KAAOkI,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,eAAeC,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3M,GAAsB2M,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uDAAwDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ7M,GAAuB,UAAU6M,CAAI,CAAC,CAAC,CAC7L,CACA,cAAcH,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1L,GAAqB0L,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sDAAuDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ5L,GAAsB,UAAU4L,CAAI,CAAC,CAAC,CAC3L,CACA,mBAAmBH,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9I,GAA0B8I,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2DAA4DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQhJ,GAA2B,UAAUgJ,CAAI,CAAC,CAAC,CACrM,CACA,wBAAwBH,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5I,GAA+B4I,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gEAAiEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ9I,GAAgC,UAAU8I,CAAI,CAAC,CAAC,CAC/M,CACA,+BAA+BH,EAAG,CAChC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1I,GAAsC0I,CAAC,EAC7E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uEAAwEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ5I,GAAuC,UAAU4I,CAAI,CAAC,CAAC,CAC7N,CACA,kBAAkBH,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/K,GAAyB+K,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0DAA2DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQjL,GAA0B,UAAUiL,CAAI,CAAC,CAAC,CACnM,CACA,kBAAkBH,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpN,GAAyBoN,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0DAA2DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQtN,GAA0B,UAAUsN,CAAI,CAAC,CAAC,CACnM,CACA,qBAAqBH,EAAG,CACtB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpL,GAA4BoL,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6DAA8DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQtL,GAA6B,UAAUsL,CAAI,CAAC,CAAC,CACzM,CACA,eAAeH,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvM,GAAsBuM,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uDAAwDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQzM,GAAuB,UAAUyM,CAAI,CAAC,CAAC,CAC7L,CACF,CACA,OAAAtI,EAAyB,UAAO,SAA0C8H,EAAmB,CAC3F,OAAO,IAAKA,GAAqB9H,EACnC,EACAA,EAAyB,WAA0B+H,GAAmB,CACpE,MAAO/H,EACP,QAASA,EAAyB,UAClC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAoDGC,IAAsB,UACxBC,IAA0C,IAAM,CAClD,MAAMA,CAA0B,CAC9B,YAAYuI,EAAM,CAChB,KAAK,KAAOA,CACd,CACA,mCAAmCC,EAAgBC,EAAeC,EAAmBC,EAAmBC,EAAqB,CAC3H,IAAMC,EAAM,CACV,eAAgBL,EAChB,cAAeC,EACf,kBAAmBC,EACnB,kBAAmBC,EACnB,oBAAqBC,GAAuB,EAC9C,EACA,OAAO,KAAK,KAAK,mCAAmCC,CAAG,EAAE,KAAKV,EAAIC,GAAQA,EAAK,WAAW,CAAC,CAC7F,CACA,6BAA6BI,EAAgBC,EAAeC,EAAmBI,EAAeF,EAAqB,CACjH,IAAMC,EAAM,CACV,eAAgBL,EAChB,cAAeC,EACf,kBAAmBC,EACnB,cAAeI,EACf,oBAAqBF,GAAuB,EAC9C,EACA,OAAO,KAAK,KAAK,6BAA6BC,CAAG,EAAE,KAAKV,EAAIC,GAAQA,EAAK,WAAW,CAAC,CACvF,CACA,cAAcK,EAAeD,EAAgBO,EAAMC,EAAK,CACtD,OAAO,KAAK,KAAK,2BAA2B,CAC1C,cAAeP,EACf,eAAgBD,EAChB,KAAMO,EACN,IAAKC,CACP,CAAC,CACH,CACA,OAAOR,EAAgBM,EAAeG,EAAUC,EAAWP,EAAmBQ,EAAaC,EAAYL,EAAMM,EAAUC,EAAOC,EAAMC,EAA0BC,EAAWC,GAAmBC,GAAiB,CAC3M,OAAO,KAAK,KAAK,kBAAkB,IAAIvO,GAAyB,CAC9D,eAAgBoN,EAChB,cAAeM,EACf,SAAUG,EACV,UAAWC,EACX,SAAUG,EACV,kBAAmBV,EACnB,YAAaQ,EACb,KAAMJ,EACN,MAAOO,EACP,KAAMC,EACN,yBAA0BC,EAC1B,WAAYJ,EACZ,UAAWK,EACX,kBAAmBC,GACnB,gBAAiBC,EACnB,CAAC,CAAC,EAAE,KAAKxB,EAAIC,IAAQA,GAAK,WAAW,CAAC,CACxC,CACA,IAAIK,EAAeD,EAAgB,CACjC,OAAO,KAAK,KAAK,eAAe,CAC9B,cAAeC,EACf,eAAgBD,CAClB,CAAC,EAAE,KAAKL,EAAIC,GAAQA,EAAK,WAAW,CAAC,CACvC,CACA,QAAQc,EAAWD,EAAU,CAC3B,OAAO,KAAK,KAAK,wBAAwB,CACvC,UAAAC,EACA,SAAAD,CACF,CAAC,EAAE,KAAKd,EAAIC,GAAQA,EAAK,MAAQ,CAAC,CAAC,CAAC,CACtC,CACA,WAAWwB,EAAeC,EAAgBC,EAAmBP,EAAM,CACjE,OAAO,KAAK,KAAK,sBAAsB,CACrC,cAAeK,EACf,eAAgBC,EAChB,kBAAmBC,EACnB,KAAMP,CACR,CAAC,EAAE,KAAKpB,EAAIC,GAAQA,EAAK,WAAW,CAAC,CACvC,CACA,uBAAuBK,EAAeD,EAAgBE,EAAmBY,EAAO,CAC9E,OAAO,KAAK,KAAK,uBAAuB,CACtC,cAAeb,EACf,eAAgBD,EAChB,kBAAmBE,EACnB,MAAOY,CACT,CAAC,EAAE,KAAKnB,EAAIC,GAAQA,EAAK,WAAW,CAAC,CACvC,CACA,mCAAmC2B,EAAiBC,EAAUd,EAAWD,EAAU,CACjF,OAAO,KAAK,KAAK,mCAAmC,CAClD,gBAAiBc,EACjB,aAAcC,EACd,UAAWd,EACX,SAAUD,CACZ,CAAC,EAAE,KAAKd,EAAIC,GAAQA,EAAK,OAAO,CAAC,CACnC,CACA,mCAAmC2B,EAAiBb,EAAWD,EAAU,CACvE,OAAO,KAAK,KAAK,mCAAmC,CAClD,gBAAiBc,EACjB,UAAWb,EACX,SAAUD,CACZ,CAAC,EAAE,KAAKd,EAAIC,GAAQA,EAAK,OAAO,CAAC,CACnC,CACA,oCAAoC6B,EAAe,CACjD,OAAO,KAAK,KAAK,+BAA+B,CAC9C,cAAeA,EAAc,cAC7B,eAAgBA,EAAc,eAC9B,kBAAmBA,EAAc,kBACjC,WAAYA,EAAc,UAC5B,CAAC,CACH,CACA,0BAA0BxB,EAAeD,EAAgBE,EAAmBU,EAAY,CACtF,OAAO,KAAK,KAAK,0BAA0B,CACzC,cAAeX,EACf,eAAgBD,EAChB,kBAAmBE,EACnB,WAAYU,CACd,CAAC,CACH,CACA,6BAA6BX,EAAeD,EAAgBE,EAAmBS,EAAa,CAC1F,OAAO,KAAK,KAAK,6BAA6B,CAC5C,cAAeV,EACf,eAAgBD,EAChB,kBAAmBE,EACnB,YAAaS,CACf,CAAC,EAAE,KAAKhB,EAAIC,GAAQA,EAAK,WAAW,CAAC,CACvC,CACA,sBAAsBK,EAAeD,EAAgBmB,EAAiBjB,EAAmB,CACvF,OAAO,KAAK,KAAK,sBAAsB,CACrC,cAAeD,EACf,eAAgBD,EAChB,gBAAiBmB,EACjB,kBAAmBjB,CACrB,CAAC,EAAE,KAAKP,EAAIC,GAAQA,EAAK,WAAW,CAAC,CACvC,CACA,0BAA0BK,EAAeD,EAAgBE,EAAmBc,EAA0B,CACpG,OAAO,KAAK,KAAK,0BAA0B,CACzC,cAAAf,EACA,eAAAD,EACA,kBAAAE,EACA,yBAAAc,CACF,CAAC,EAAE,KAAKrB,EAAIC,GAAQA,EAAK,WAAW,CAAC,CACvC,CACA,8BAA8BK,EAAeD,EAAgBE,EAAmBe,EAAW,CACzF,OAAO,KAAK,KAAK,8BAA8B,CAC7C,cAAAhB,EACA,eAAAD,EACA,kBAAAE,EACA,UAAAe,CACF,CAAC,EAAE,KAAKtB,EAAIC,GAAQA,EAAK,WAAW,CAAC,CACvC,CACA,sCAAsCK,EAAeD,EAAgBE,EAAmBgB,EAAmB,CACzG,OAAO,KAAK,KAAK,sCAAsC,CACrD,cAAAjB,EACA,eAAAD,EACA,kBAAAE,EACA,kBAAAgB,CACF,CAAC,CACH,CACA,KAAKR,EAAWD,EAAUiB,EAASC,EAAYC,EAAYC,EAAUC,EAAQ,CAC3E,OAAO,KAAK,KAAK,kBAAkB,CACjC,UAAWpB,EACX,SAAUD,EACV,QAASiB,EACT,WAAYC,EACZ,WAAYC,EACZ,SAAUC,EACV,OAAQC,CACV,CAAC,EAAE,KAAKnC,EAAIC,IACJA,EAAK,SACTA,EAAK,QAAQ,QAAQH,GAAK,EACpB,CAACA,EAAE,YAAcA,EAAE,aAAe,MACpCA,EAAE,WAAalI,IAEnB,CAAC,EAEIqI,EACR,CAAC,CACJ,CACA,kBAAkBK,EAAeD,EAAgBM,EAAeyB,EAAQ,CACtE,IAAMrC,EAAU,CACd,cAAeO,EACf,eAAgBD,EAChB,kBAAmBM,EACnB,OAAQyB,CACV,EACA,OAAO,KAAK,KAAK,wBAAwBrC,CAAO,EAAE,KAAKC,EAAIqC,GAClDA,EAAS,SAAW,GAC5B,CAAC,CACJ,CACA,sBAAsB/B,EAAeD,EAAgBM,EAAeQ,EAAO,CACzE,IAAMpB,EAAU,CACd,cAAeO,EACf,eAAgBD,EAChB,kBAAmBM,EACnB,MAAOQ,CACT,EACA,OAAO,KAAK,KAAK,sBAAsBpB,CAAO,EAAE,KAAKC,EAAIqC,GAAYA,EAAS,WAAW,CAAC,CAC5F,CACA,uBAAuB/B,EAAeD,EAAgBM,EAAeyB,EAAQjB,EAAO,CAClF,IAAMpB,EAAU,CACd,cAAeO,EACf,eAAgBD,EAChB,kBAAmBM,EACnB,OAAQyB,EACR,MAAOjB,CACT,EACA,OAAO,KAAK,KAAK,uBAAuBpB,CAAO,EAAE,KAAKC,EAAIqC,GAAYA,EAAS,WAAW,CAAC,CAC7F,CACA,0BAA0BtB,EAAWD,EAAUiB,EAASC,EAAYC,EAAYK,EAAYC,EAAYC,EAAc,CACpH,IAAMzC,EAAU,CACd,UAAWgB,EACX,SAAUD,EACV,QAASiB,EACT,WAAYC,EACZ,WAAYC,EACZ,iBAAkBM,EAClB,WAAYD,EACZ,aAAcE,CAChB,EACA,OAAO,KAAK,KAAK,0BAA0BzC,CAAO,EAAE,KAAKC,EAAIqC,GAAYA,EAAS,QAAQ,CAAC,CAC7F,CACF,CACA,OAAAxK,EAA0B,UAAO,SAA2C4H,EAAmB,CAC7F,OAAO,IAAKA,GAAqB5H,GAA8B4K,EAAS/K,GAA4B,CAAC,CACvG,EACAG,EAA0B,WAA0B6H,GAAmB,CACrE,MAAO7H,EACP,QAASA,EAA0B,UACnC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAICC,KAAsC,IAAM,CAC9C,MAAMA,CAAsB,CAC1B,YAAYsI,EAAM,CAChB,KAAK,KAAOA,CACd,CACA,eAAeW,EAAWH,EAAM8B,EAAQ,CACtC,IAAM3C,EAAU,CACd,UAAWgB,EACX,KAAMH,EACN,OAAQ8B,CACV,EACA,OAAO,KAAK,KAAK,eAAe3C,CAAO,CACzC,CACA,KAAKgB,EAAW,CACd,IAAMhB,EAAU,CACd,UAAWgB,CACb,EACA,OAAO,KAAK,KAAK,cAAchB,CAAO,EAAE,KAAKC,EAAIC,GACxCA,EAAK,OACb,CAAC,CACJ,CACA,mBAAmBc,EAAWE,EAAYL,EAAM,CAC9C,IAAMb,EAAU,CACd,UAAWgB,EACX,KAAMH,EACN,WAAYK,CACd,EACA,OAAO,KAAK,KAAK,mBAAmBlB,CAAO,CAC7C,CACA,wBAAwBgB,EAAWE,EAAY0B,EAASC,EAAW,CACjE,IAAM7C,EAAU,CACd,UAAWgB,EACX,WAAYE,EACZ,QAAS0B,EACT,UAAWC,CACb,EACA,OAAO,KAAK,KAAK,wBAAwB7C,CAAO,CAClD,CACA,+BAA+BgB,EAAWE,EAAY0B,EAAS3B,EAAa,CAC1E,IAAMjB,EAAU,CACd,UAAWgB,EACX,WAAYE,EACZ,QAAS0B,EACT,YAAa3B,CACf,EACA,OAAO,KAAK,KAAK,+BAA+BjB,CAAO,CACzD,CACA,kBAAkBgB,EAAWE,EAAYyB,EAAQ,CAC/C,IAAM3C,EAAU,CACd,UAAWgB,EACX,WAAYE,EACZ,OAAQyB,CACV,EACA,OAAO,KAAK,KAAK,kBAAkB3C,CAAO,CAC5C,CACA,kBAAkBgB,EAAWE,EAAYyB,EAAQ,CAC/C,IAAM3C,EAAU,CACd,UAAWgB,EACX,WAAYE,EACZ,OAAQyB,CACV,EACA,OAAO,KAAK,KAAK,kBAAkB3C,CAAO,CAC5C,CACA,qBAAqBgB,EAAWE,EAAY4B,EAAU,CACpD,IAAM9C,EAAU,CACd,UAAWgB,EACX,WAAYE,EACZ,SAAU4B,CACZ,EACA,OAAO,KAAK,KAAK,qBAAqB9C,CAAO,CAC/C,CACA,eAAegB,EAAWE,EAAY,CACpC,IAAMlB,EAAU,CACd,UAAWgB,EACX,WAAYE,CACd,EACA,OAAO,KAAK,KAAK,eAAelB,CAAO,CACzC,CACF,CACA,OAAAjI,EAAsB,UAAO,SAAuC2H,EAAmB,CACrF,OAAO,IAAKA,GAAqB3H,GAA0B2K,EAAS9K,GAAwB,CAAC,CAC/F,EACAG,EAAsB,WAA0B4H,GAAmB,CACjE,MAAO5H,EACP,QAASA,EAAsB,UAC/B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,IC9/JH,IAOagL,GAPbC,GAAAC,EAAA,KAAAC,aAOaH,IAAgB,IAAA,CAAvB,MAAOA,CAAgB,CAC3BI,YAAoBC,EAAwB,CAAxB,KAAAA,WAAAA,CAA2B,CAE/CC,UAAUC,EAAU,CAClB,OAAO,KAAKF,WAAWG,SAASC,GAAgBC,KAAMH,CAAK,CAC7D,iDALWP,GAAgBW,EAAAC,GAAA,EAAA,CAAA,CAAA,CAAA,qDAAhBZ,EAAgBa,KAAA,EAAA,CAAA,CAAA,SAAhBb,CAAgB,GAAA,+BEQrBc,EAAA,EAAA,IAAA,CAAA,EACEC,EAAA,CAAA,cACFC,EAAA,6BADEC,EAAA,EAAAC,EAAA,IAAAC,GAAA,EAAA,EAAAC,EAAAC,cAAAC,EAAAC,UAAA,EAAA,GAAA,8BASFT,EAAA,EAAA,MAAA,EAAA,EACEC,EAAA,CAAA,mBACAD,EAAA,EAAA,OAAA,EAAA,EAMGC,EAAA,CAAA,EAAyBC,EAAA,EAC3B,uBARDC,EAAA,EAAAC,EAAA,IAAAM,EAAA,EAAA,EAAA,2DAAA,EAAA,GAAA,EAGEP,EAAA,CAAA,EAAAQ,EAAA,UAAAC,GAAA,EAAAC,IAAAC,EAAAC,SAAA,cAAAD,EAAAC,SAAA,YAAA,CAAA,EAICZ,EAAA,EAAAa,EAAAF,EAAAC,MAAA,8BAIHf,EAAA,EAAA,MAAA,EAAA,EACEC,EAAA,CAAA,mBACAD,EAAA,EAAA,OAAA,EAAA,EAAoCC,EAAA,CAAA,EAA6BC,EAAA,EAAO,wBADxEC,EAAA,EAAAC,EAAA,IAAAM,EAAA,EAAA,EAAA,oDAAA,EAAA,GAAA,EACoCP,EAAA,CAAA,EAAAa,EAAAF,EAAAG,UAAA,8BAHxCjB,EAAA,EAAA,KAAA,EACEkB,EAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAIFjB,EAAA,uBAJ8BC,EAAA,EAAAQ,EAAA,OAAAG,EAAAC,MAAA,8BAK9Bf,EAAA,EAAA,MAAA,EAAA,EACEC,EAAA,CAAA,mBACAD,EAAA,EAAA,OAAA,EAAA,EACEoB,EAAA,EAAA,MAAA,EAAA,sBACFlB,EAAA,EAAO,uBAHPC,EAAA,EAAAC,EAAA,IAAAM,EAAA,EAAA,EAAA,mDAAA,EAAA,GAAA,EAEOP,EAAA,CAAA,EAAAQ,EAAA,YAAAD,EAAA,EAAA,EAAAI,EAAAO,KAAA,EAAAC,EAAA,uCAxBXtB,EAAA,EAAA,KAAA,EAAmD,EAAA,IAAA,CAAA,EAC9CuB,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAjB,EAAAkB,EAAA,CAAA,EAAA,OAAAC,EAASnB,EAAAoB,sBAAA,CAAuB,CAAA,CAAA,EACjC5B,EAAA,EAAA,MAAA,CAAA,EAA8BC,EAAA,CAAA,EAAkCC,EAAA,EAAM,EAExEgB,EAAA,EAAAW,IAAA,EAAA,EAAA,MAAA,CAAA,EAAuD,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAW7B,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAY5B7B,EAAA,8BAzBkCC,EAAA,CAAA,EAAAa,EAAAF,EAAAkB,eAAA,EAEJ7B,EAAA,EAAAQ,EAAA,OAAAG,EAAAC,MAAA,EAWtBZ,EAAA,EAAAQ,EAAA,OAAA,CAAAH,EAAAyB,WAAA,EAMoB9B,EAAA,EAAAQ,EAAA,OAAAG,EAAAO,KAAA,8BA1ClCa,EAAA,CAAA,EACElC,EAAA,EAAA,UAAA,EAAU,EAAA,iBAAA,EAC0F,EAAA,MAAA,CAAA,EAE9FoB,EAAA,EAAA,cAAA,CAAA,EAMFlB,EAAA,EACAF,EAAA,EAAA,gBAAA,EAAgB,EAAA,OAAA,CAAA,EACMC,EAAA,CAAA,EAAyBC,EAAA,EAAO,EAEtDF,EAAA,EAAA,mBAAA,EACEkB,EAAA,EAAAiB,IAAA,EAAA,EAAA,IAAA,CAAA,EAGFjC,EAAA,EAAoB,EAEtBF,EAAA,GAAA,kBAAA,EACEkB,EAAA,GAAAkB,IAAA,EAAA,EAAA,MAAA,CAAA,EA4BFlC,EAAA,EAAmB,+BA/CFC,EAAA,CAAA,EAAAkC,GAAA,cAAA7B,EAAA8B,WAAA,MAAA9B,EAAA+B,aAAA,IAAAC,SAAA,EAAA,IAAA,EAGXrC,EAAA,CAAA,EAAAQ,EAAA,QAAAH,EAAA+B,YAAA,EAOkBpC,EAAA,CAAA,EAAAa,EAAAV,EAAAmC,UAAA,EAGhBtC,EAAA,CAAA,EAAAQ,EAAA,OAAAL,EAAAC,gBAAA,IAAA,EAKUJ,EAAA,EAAAkC,GAAA,eAAA7B,EAAA+B,aAAA,IAAAC,SAAA,EAAA,IAAA,EACVrC,EAAA,EAAAQ,EAAA,OAAAL,EAAAoC,YAAA,GDrBZ,QA8BaC,GA9BbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IACAC,KAEAC,KACAC,KACAC,KACAC,KAGAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,mFASapB,IAAsC,IAAA,CAA7C,MAAOA,CAAsC,CACjDqB,GAEQC,gBAAc,CACpB,IAAMC,EACJ,KAAKC,aAAaC,2BAA2B,KAAKJ,GAAS,EAAIK,EAAYC,sCAAsC,GAC7GC,aAAe,GAErB,KAAKtC,YAAciC,EAAwBM,YAAW,IAAO,YAC/D,CAEAC,UAAQ,CACN,KAAKR,eAAc,CACrB,CACA,IAAaS,SAASA,EAA2B,CAC/C,KAAKV,GAAUW,IAAID,CAAQ,CAC7B,CAEA,IAAIA,UAAQ,CACV,OAAO,KAAKV,GAAS,CACvB,CAKA,IAAa1B,WAAWA,EAAmB,CACzC,KAAKsC,YAActC,CACrB,CAEA,IAAIA,YAAU,CACZ,OAAO,KAAKsC,WACd,CAuEQC,mBAAmBH,EAA6BI,EAAe,CACrE,OAAO,KAAKX,aAAaC,2BAA2BM,EAAUI,CAAO,GAAGP,aAAe,EACzF,CAUgB3C,uBAAqB,QAAAmD,GAAA,sBACnC,IAAMC,EAAgB,KAAKH,mBAAmB,KAAKH,SAAUL,EAAYY,2BAA2B,EAC9FC,EAAiB,MAAMC,GAAe,KAAKC,eAAe,EAC5D,KAAKC,OAAOC,eAAiB,KAAKD,OAAOC,cAAcC,0BACzD,KAAKF,OAAOC,cAAcC,yBAAyBP,EAAeE,CAAc,CAEpF,GAcAM,YACmBrB,EACAsB,EACAC,EAC4BC,EACDN,EACQO,EAAqC,CALxE,KAAAzB,aAAAA,EACA,KAAAsB,iBAAAA,EACA,KAAAC,sBAAAA,EAC4B,KAAAC,mBAAAA,EACD,KAAAN,OAAAA,EACQ,KAAAO,eAAAA,EA3ItD,KAAA5B,GAAY6B,EAA0B,CAAA,CAAE,EACxC,KAAA5D,YAAc,GAoBN,KAAA2C,YAAc,GACH,KAAArC,aAAeA,GAUlC,KAAA9B,WAAaqF,GAAWC,OAExB,KAAAC,cAAgCC,EAAS,IAErC,KAAK9B,aAAaC,2BAA2B,KAAKM,SAAUL,EAAY6B,sCAAsC,GAC1G3B,aAAe,EAEtB,EAEgB,KAAA4B,UAAYC,GAAS,KAAKf,OAAOgB,UAAU,EAE5D,KAAAC,aAAeT,EAAiCU,MAAS,EAEzD,KAAA9D,WAAawD,EAAS,IAAK,CACzB,IAAMK,EAAe,KAAKA,aAAY,EAGtC,OADoB,KAAKN,cAAa,EAGlC,KAAKP,iBAAiBe,QAAQ,4DAA4D,EAC1F,IACAF,GAAcG,qBAGX,KAAKhB,iBAAiBe,QAAQ,yDAAyD,CAChG,CAAC,EAED,KAAAE,SAAWT,EAAS,IAAK,CACvB,IAAMxD,EAAa,KAAKA,WAAU,EAC5BlC,EAAgB,KAAKA,cAAa,EAClCyB,EAAkB,KAAKA,gBAAe,EACtC2E,EAAY,KAAKL,aAAY,GAAIG,qBAEjCvC,EACJ,KAAKC,aAAaC,2BAA2B,KAAKJ,GAAS,EAAIK,EAAYC,sCAAsC,GAC7GC,aAAe,GACfqC,EACJ,KAAKzC,aAAaC,2BAA2B,KAAKJ,GAAS,EAAIK,EAAYwC,mCAAmC,GAC1GtC,aAAe,GACfuC,EACJ,KAAKjC,mBAAmB,KAAKb,GAAS,EAAIK,EAAY0C,8BAA8B,GAAK,GAErFC,GACJ9C,EAAwB+C,OAAO,CAAC,EAAEC,YAAW,EAAKhD,EAAwBiD,MAAM,CAAC,EAAE3C,YAAW,EAC1F4C,GACJR,EAA4BK,OAAO,CAAC,EAAEC,YAAW,EAAKN,EAA4BO,MAAM,CAAC,EAAE3C,YAAW,EASxG,MAAO,CACL/B,WAAAA,EACAlC,cAAAA,EACAoG,UAAAA,EACAjE,aAXmB,CACnB3B,OAAQiG,GACR/F,WAAYmG,GACZ/F,MAAOyF,EACP9E,gBAAiBA,GASrB,CAAC,EAED,KAAAzB,cAAgB0F,EAAS,IAErB,KAAK9B,aAAaC,2BAA2B,KAAKJ,GAAS,EAAIqD,GAAeC,qBAAqB,GAAGC,WACtG,IAEH,EAMD,KAAAnC,gBAAkBoC,GAAa,KAAKxD,EAAS,EAAEyD,KAC7CC,EACGhD,IACEA,EAASiD,cAAgB,CAAA,GAAIC,KAAMC,GAAgBA,EAAYC,gBAAkB,SAAS,GAAGC,aAAe,EAAE,EAEnHC,GAAQC,GAAc,CAAC,CAACA,CAAS,EACjCC,EAAWD,GAAc,KAAKvC,sBAAsByC,0BAA0BF,CAAS,CAAC,CAAC,EAU3F,KAAAjG,gBAAkBoE,GAChBgC,EAAc,CAAC,KAAKhD,gBAAiBoC,GAAa,KAAKxD,EAAS,CAAC,CAAC,EAAEyD,KAClES,EAAU,CAAC,CAAChD,EAAgBR,CAAQ,IAAK,CACvC,IAAMM,EAAgB,KAAKH,mBAAmBH,EAAUL,EAAYY,2BAA2B,EAC/F,OAAO,KAAKW,eAAeyC,IAAIrD,EAAeE,CAAc,EAAEuC,KAC5DC,EAAKY,GAAgBA,EAAYC,IAAI,EACrCC,GAAW,IAAMC,EAAG,SAAS,CAAC,CAAC,CAEnC,CAAC,CAAC,CACH,EAWDC,GAAO,IAAK,CACV,IAAMvC,EAAY,KAAKA,UAAS,GAAM,GACtC,GAAI,KAAKH,cAAa,EACpB,OAAO,KAAKL,mBACTgD,0BAA0BxC,EAAW,KAAKH,cAAa,CAAE,EACzDyB,KACCC,EAAKkB,GAAgB,GAAGA,EAAYC,SAAS,IAAID,EAAYE,QAAQ,EAAE,EACvEN,GAAW,IAAMC,EAAG,SAAS,CAAC,CAAC,EAEhChB,KAAKsB,GAAK,CAAC,CAAC,EACZC,UAAWJ,GAAe,CACzB,IAAMtC,EAAe,CAAA,EACrBA,EAAaG,qBAAuBmC,EACpC,KAAKtC,aAAa3B,IAAI2B,CAAY,CACpC,CAAC,CAEP,CAAC,CACH,iDA/JW3D,GAAsCsG,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EA0IvCI,EAAkB,EAAAJ,EAClBK,EAAiB,EAAAL,EACjBM,EAAyB,CAAA,CAAA,CAAA,+BA5IxB5G,EAAsC6G,UAAA,CAAA,CAAA,kCAAA,CAAA,EAAAC,OAAA,CAAA/E,SAAA,WAAApC,WAAA,YAAA,EAAAoH,SAAA,CAAAC,GAHtC,CAACC,GAASR,EAAqB,CAAC,CAAA,EAAAS,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,OAAA,kBAAA,kBAAA,kCAAA,YAAA,UAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,QAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,cAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GC3B7C/I,EAAA,EAAAiJ,IAAA,GAAA,EAAA,eAAA,CAAA,OAAexJ,EAAA,OAAAuJ,EAAAxD,SAAA,CAAA,iBD4BH0D,EAAYC,GAAAC,GAAAC,GAAEC,EAAeC,EAAEC,GAAaC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAEC,GAAmBC,GAAkBC,GAAEC,EAAgB,EAAAC,OAAA,CAAA;uHAAA,CAAA,CAAA,CAAA,SAEpG1I,CAAsC,GAAA,IE9BnD,IAaa2I,GAbbC,GAAAC,EAAA,KAAAC,QAaaH,IAAiB,IAAA,CAAxB,MAAOA,CAAiB,CAE5BI,gBAAc,CACZ,KAAKC,eAAeC,KAAI,CAC1B,CAKAC,YAAoBC,EAAmB,CAAnB,KAAAA,QAAAA,EAHV,KAAAH,eAAiB,IAAII,GAIzBC,OAAOC,iBACT,KAAKC,eAAiB,IAAID,eAAe,IAAK,CAC5C,KAAKN,eAAeC,KAAI,CAC1B,CAAC,EACD,KAAKM,eAAeC,QAAQ,KAAKL,QAAQM,aAAa,EAE1D,iDAhBWd,GAAiBe,EAAAC,EAAA,CAAA,CAAA,CAAA,gCAAjBhB,EAAiBiB,UAAA,CAAA,CAAA,GAAA,cAAA,EAAA,CAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAjBE,EAAA,SAAA,UAAA,CAAA,OAAAD,EAAAhB,eAAA,CAAgB,EAAA,GAAAkB,EAAA,uDAAhBtB,CAAiB,GAAA,8BCWxBuB,EAAA,EAAA,MAAA,CAAA,iBAGEC,GAAA,aAAAC,EAAAC,YAAA,IAAA,uCAGJC,EAAA,EAAA,IAAA,CAAA,EAMEC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAL,EAAAM,EAAA,EAAA,OAAAC,EAASP,EAAAQ,gBAAA,CAAiB,CAAA,CAAA,EAE1BC,EAAA,CAAA,mBACFC,EAAA,oBANEC,EAAA,UAAAC,GAAA,EAAAC,IAAA,CAAAb,EAAAc,UAAA,CAAA,CAAA,EAKAC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAjB,EAAAc,UAAA,EAAA,gCAAA,+BAAA,EAAA,GAAA,GAtCN,oBA4CaI,GA5CbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IACAC,KACAC,KACAC,iNAuCaR,IAA2B,IAAA,CAAlC,MAAOA,CAA2B,CArCxCS,aAAA,CAwCW,KAAA1B,YAAc,IACd,KAAA2B,wBAA0B,GAGnC,KAAAd,UAAYe,EAAgB,EAAI,EAChC,KAAAC,YAAcD,EAAgB,EAAK,EAEnCrB,iBAAe,CACb,KAAKM,UAAUiB,OAAQC,GAAU,CAACA,CAAK,CACzC,CAEAC,kBAAgB,CAId,IAAMC,EAAU,KAAKC,4BAA4BC,cAC3CC,EAAaH,EAAQI,aAAeJ,EAAQK,cAAgBL,EAAQK,aAAe,KAAKtC,YAC9F,KAAK6B,YAAYU,IAAIH,CAAU,CACjC,iDArBWnB,EAA2B,CAAA,+BAA3BA,EAA2BuB,UAAA,CAAA,CAAA,yBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,klBAlCpCzC,EAAA,EAAA,MAAA,CAAA,EAAiC,EAAA,MAAA,EAAA,CAAA,EAI7BC,EAAA,iBAAA,UAAA,CAAA0C,OAAAzC,EAAA0C,CAAA,EAAAvC,EAAkBqC,EAAAX,iBAAA,CAAkB,CAAA,CAAA,EAAC,oBAAA,UAAA,CAAAY,OAAAzC,EAAA0C,CAAA,EAAAvC,EAChBqC,EAAAX,iBAAA,CAAkB,CAAA,CAAA,EAOvCc,GAAA,CAAA,EACFrC,EAAA,EACAsC,EAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAKFvC,EAAA,EACAsC,EAAA,EAAAE,IAAA,EAAA,EAAA,IAAA,CAAA,QAdInC,EAAA,EAAAhB,GAAA,aAAA6C,EAAA9B,UAAA,EAAA8B,EAAA3C,YAAAkD,OAAA,IAAA,EACAxC,EAAA,UAAAyC,GAAA,EAAAC,IAAAT,EAAA9B,UAAA,EAAA8B,EAAA9B,UAAA,GAAA8B,EAAAhB,uBAAA,CAAA,EAQCb,EAAA,CAAA,EAAAJ,EAAA,OAAAiC,EAAAd,YAAA,GAAAc,EAAA9B,UAAA,CAAA,EAMFC,EAAA,EAAAJ,EAAA,OAAAiC,EAAAd,YAAA,CAAA,kBAWKwB,EAAYC,GAAAC,GAAEC,EAAeC,EAAEC,GAAmBC,GAAeC,GAAEC,EAAiB,EAAAC,OAAA,CAAA;wHAAA,CAAA,CAAA,CAAA,SAEnF7C,CAA2B,GAAA,+BEhB9B8C,EAAA,EAAA,KAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,wBADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,gCAAA,EAAA,MAAAC,GAAA,KAAA,KAAAA,EAAAC,OAAA,GAAA,8BAIFP,EAAA,EAAA,KAAA,EACEC,EAAA,CAAA,mBAKFC,EAAA,wBALEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,mDAAA,EAAA,KAAAC,EAAAE,cAAAC,UAAA,GAAA,8BAQFT,EAAA,EAAA,KAAA,EACEC,EAAA,CAAA,mBAKFC,EAAA,wBALEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,wDAAA,EAAA,KAAAC,EAAAE,cAAAE,cAAA,GAAA,8BAQFV,EAAA,EAAA,KAAA,EACEC,EAAA,CAAA,mBAKFC,EAAA,wBALEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,0DAAA,EAAA,KAAAC,EAAAE,cAAAG,gBAAA,GAAA,uCA/CNC,GAAA,CAAA,eACAA,GAAA,CAAA,EACAZ,EAAA,EAAA,WAAA,EAAA,EAAkCa,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,KAAA,CAAc,CAAA,CAAA,EAAuBlB,EAAA,EAAA,eAAA,EAAaC,EAAA,EAE7FF,EAAA,EAAA,eAAA,GAAA,CAAA,EAEEoB,GAAA,eAAA,SAAAC,EAAA,CAAAP,EAAAC,CAAA,EAAA,IAAAO,EAAAC,EAAA,EAAAC,OAAAC,GAAAH,EAAAI,KAAAL,CAAA,IAAAC,EAAAI,KAAAL,GAAAH,EAAAG,CAAA,CAAA,CAAA,EAeApB,EAAA,CAAA,mBACA0B,EAAA,EAAAC,IAAA,EAAA,EAAA,KAAA,EAAmC,GAAAC,IAAA,EAAA,EAAA,KAAA,EAKmB,GAAAC,IAAA,EAAA,EAAA,KAAA,EASI,GAAAC,IAAA,EAAA,EAAA,KAAA,EAkB5D7B,EAAA,mDArDAC,EAAA,CAAA,QAAA6B,GAAAC,GAAA,MAAAA,EAAAC,UAAA,MAAAD,EAAAC,SAAAC,aAAA,KAAA,KAAAF,EAAAC,SAAAC,YAAAC,oBAAA,EACUjC,EAAA,EAAAkC,EAAA,cAAArB,CAAA,EAIRb,EAAA,CAAA,EAAAmC,GAAA,SAAAhB,EAAAI,IAAA,EACAW,EAAA,WAAA,OAAA,EAAoB,YAAA,OAAA,EACC,cAAA,EAAA,EACD,eAAA,EAAA,EACE,uBAAA,EAAA,EACO,mBAAA,EAAA,EACJ,WAAA,EAAA,EACP,eAAA,EAAA,EACG,UAAA,OAAA,EACF,eAAA,EAAA,EACG,YAAAE,GAAA,GAAAC,IAAAlB,EAAAmB,iBAAAC,IAAA,CAAA,EACe,mBAAA,EAAA,EACX,kBAAA,EAAA,EAG1BvC,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,GAAA,4CAAA,EAAA,GAAA,EACAF,EAAA,CAAA,EAAAwC,EAAAC,GAAA,MAAAA,EAAArC,MAAA,EAAA,EAAA,EAKAJ,EAAA,EAAAwC,EAAAC,EAAAA,GAAA,MAAAA,EAAApC,eAAA,OAAAoC,EAAApC,cAAAC,UAAA,GAAA,EAAA,EASAN,EAAA,EAAAwC,EAAAC,EAAAA,GAAA,MAAAA,EAAApC,eAAA,OAAAoC,EAAApC,cAAAE,cAAA,GAAA,EAAA,EASAP,EAAA,EAAAwC,EAAAC,EAAAA,GAAA,MAAAA,EAAApC,eAAA,OAAAoC,EAAApC,cAAAG,gBAAA,GAAA,EAAA,8BAmCIkC,EAAA,EAAA,oBAAA,EAAA,sCAAmBR,EAAA,cAAAS,GAAA,EAAA,EAAAC,EAAAC,UAAA,WAAA,CAAA,EAAqD,cAAAD,EAAAE,OAAA,8BAX5EjD,EAAA,EAAA,0BAAA,CAAA,EAUEkD,GAAA,EAAAC,IAAA,EAAA,EAAA,oBAAA,GAAAC,EAAA,EAGFlD,EAAA,kDAZEmC,EAAA,OAAAgB,EAAAC,OAAA,KAAA,OAAA,UAAA,EAAyD,iBAAAD,EAAAC,OAAA,KAAA,CAAAC,EAAA,EAAA,EACe,gBAAAF,EAAAC,OAAA,KAAAE,EAAAC,MAAA,EACS,cAAAJ,EAAAC,OAAA,KAAAhC,EAAAoC,KAAAC,OAAArC,EAAAoC,KAAAE,QAAA,EACT,iBAAAP,EAAAC,OAAA,MAAA,CAAAC,EAAAjC,EAAAuC,oBAAAJ,MAAA,EAC4B,yBAAAJ,EAAAC,OAAA,MAAA,CAAAC,EAAAjC,EAAAwC,4BAAAL,MAAA,EAKpGtD,EAAA,EAAA4D,GAAAV,EAAAW,QAAA,GDpFV,QAiCaC,GAjCbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,gDAoBaf,IAA4B,IAAA,CAAnC,MAAOA,CAA4B,CAyBvCgB,YACSC,EAEyBxB,EAAc,CAFvC,KAAAwB,UAAAA,EAEyB,KAAAxB,KAAAA,EA3BlC,KAAAyB,WAAa,KAAKC,wBAAwB,KAAK1B,KAAK2B,cAAc,EAEzD,KAAAxB,oBAAsByB,GACtB,KAAAxB,4BAA8B,UAEtB,KAAAyB,iBAAmBC,EAAOC,EAAkB,EAE5C,KAAAC,SAAWF,EAAOG,EAAe,EASlD,KAAAjE,KAAOkE,EAAO,EAAK,EAEnB,KAAAC,MAAQL,EAAOM,EAAc,EAC7B,KAAAC,iBAAwC,KAAKF,MAAMG,cAAcC,KAC/DC,GAAKC,GAAWC,QAAQC,IAAI,oBAAqBF,CAAM,CAAC,EACxDG,EAAKH,GAAWA,EAAOI,IAAI,OAAO,IAAM,MAAM,CAAC,EAuG9B,KAAA9D,iBAAmBA,GA/FpC,IAAM+D,EAAY9C,EAAK+C,eACnB,CACEC,sBAAuB,CACrBD,eAAgB/C,EAAK+C,iBAGzB/C,EAAKiD,UACH,CACEC,iBAAkB,CAChBD,UAAWjD,EAAKiD,YAGpBlD,OA2BN,GA1BIC,EAAKmD,cAAgBL,EACvB,KAAKM,YAAc,KAAKpB,SACrBqB,cAAc,CACbC,GAAItD,EAAKmD,aACTL,UAAAA,EACD,EACAP,KACCK,EAAKW,GAASA,EAAKC,UAAU,EAC7BC,GAAY,CAAEC,SAAU,GAAMC,WAAY,CAAC,CAAE,CAAC,EAGlD,KAAKP,YAAcQ,EAAG7D,MAAS,EAGjC,KAAK8D,4BAA8B,KAAKT,YAAYb,KAClDK,EAAKY,GAAc,CACjB,IAAMM,EAASN,GAAYhF,UAAUC,aAAaC,qBAClD,MAAOqF,GACLD,GAAQjH,OACNiH,GAAQhH,eAAeG,iBACvB6G,GAAQhH,eAAeE,eACvB8G,GAAQhH,eAAeC,UAE7B,CAAC,CAAC,EAGAiD,EAAKiD,WAAajD,EAAK+C,eAAgB,CACzC,IAAMiB,EAAOhE,EAAK+C,eACZkB,EAAMjE,EAAKiD,UACjB,KAAKiB,0BAA4B,KAAKd,YAAYb,KAChD4B,EAAWX,GACF,KAAK3B,iBAAiBuC,aAC3BH,EACAD,EACAR,GAAYhF,UAAU6F,aAAe,8BAA8B,CAEtE,CAAC,CAEN,MACE,KAAKH,0BAA4BN,EAAG7D,MAAS,EAG/C,IAAMuE,EAAoB,KAAKJ,0BAA0B3B,KACvDK,EAAK2B,IAAe,CAClBC,UAAWD,GAAWC,WAAazE,OACnC0E,QAAS,IACT,EACFC,GAAU,CAAEF,UAAWzE,OAAW0E,QAAS,EAAI,CAAE,CAAC,EAEpD,KAAKE,qBAAuBL,EAAkB/B,KAAKK,EAAKgC,GAAYA,EAAQJ,SAAS,CAAC,EACtF,KAAKK,kBAAoBP,EAAkB/B,KAAKK,EAAKgC,GAAYA,EAAQH,OAAO,CAAC,CACnF,CAEAK,aAAW,CACT,KAAKtD,UAAUuD,MAAK,CACtB,CAEQrD,wBAAwBC,EAAsB,CACpD,IAAMrB,EAAgC0E,KAAKC,MAAMtD,CAAc,EAC/D,GAAI,CAACrB,GAAYA,EAAS4E,SAAW,EACnC,MAAO,CAAA,EAET,IAAMC,EAAoC,CACxC,CACEvF,KAAMU,EAAS,CAAC,EAAEV,KAClBU,SAAU,CAACA,EAAS,CAAC,CAAC,EACvB,EAEHA,EAAS8E,MAAK,EACd,QAAWC,KAAW/E,EAChB+E,EAAQzF,OAASuF,EAAQA,EAAQD,OAAS,CAAC,EAAEtF,KAC/CuF,EAAQA,EAAQD,OAAS,CAAC,EAAE5E,SAASgF,KAAKD,CAAO,EAEjDF,EAAQG,KAAK,CACX1F,KAAMyF,EAAQzF,KACdU,SAAU,CAAC+E,CAAO,EACnB,EAGL,OAAOF,CACT,iDA3HW5E,GAA4BgF,EAAAC,EAAA,EAAAD,EA4B7BE,EAAe,CAAA,CAAA,CAAA,+BA5BdlF,EAA4BmF,UAAA,CAAA,CAAA,2BAAA,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,mBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,SAAA,mBAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,OAAA,iBAAA,gBAAA,cAAA,iBAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,QAAA,aAAA,EAAA,CAAA,EAAA,eAAA,SAAA,WAAA,YAAA,cAAA,eAAA,uBAAA,mBAAA,WAAA,eAAA,UAAA,eAAA,YAAA,mBAAA,iBAAA,EAAA,CAAA,EAAA,cAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WCjCzCzJ,EAAA,EAAA,MAAA,CAAA,EAAoB,EAAA,MAAA,CAAA,EACO,EAAA,KAAA,CAAA,EACYC,EAAA,CAAA,mBAAiDC,EAAA,EAEpFyB,EAAA,EAAAgI,IAAA,GAAA,EAAA,4BAyDFzJ,EAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EAA0B,EAAA,SAAA,CAAA,EACAa,EAAA,QAAA,UAAA,CAAAW,OAAAV,EAAA8I,CAAA,EAAA1I,EAASwI,EAAAlB,YAAA,CAAa,CAAA,CAAA,EAC5CxI,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,OAAA,EAAKC,EAAA,EAAW,EACnB,EACL,EAERF,EAAA,GAAA,qBAAA,CAAA,EAA2C,GAAA,sBAAA,CAAA,EACoB,GAAA,MAAA,CAAA,EAEzDY,GAAA,EAAA,gBACAA,GAAA,EAAA,gBACAsC,GAAA,GAAA2G,IAAA,EAAA,EAAA,0BAAA,EAAAzG,EAAA,EAgBFlD,EAAA,EAAM,EACc,gBAxFeC,EAAA,CAAA,EAAA2J,EAAAzJ,EAAA,EAAA,EAAA,+BAAA,CAAA,EAEnCF,EAAA,CAAA,EAAAwC,EAAAtC,EAAA,EAAA,EAAAqJ,EAAA3D,gBAAA,GAAA1F,EAAA,EAAA,EAAAqJ,EAAAnC,2BAAA,EAAA,EAAA,EAAA,EAiEmBpH,EAAA,CAAA,EAAAkC,EAAA,SAAA,EAAA,EAAa,oBAAA,GAAA,EAE9BlC,EAAA,CAAA,EAAA6B,IAAA+H,EAAA1J,EAAA,GAAA,GAAAqJ,EAAArB,oBAAA,KAAA,MAAA0B,IAAAtG,OAAAsG,EAAgEtG,MAAS,EACzEtD,EAAA,CAAA,EAAA6B,GAAA3B,EAAA,GAAA,GAAAqJ,EAAAnB,iBAAA,CAAA,EACApI,EAAA,CAAA,EAAA4D,GAAA2F,EAAAvE,UAAA,kBDpDF6E,GAAeC,GAAAC,GACfC,EAAeC,EACfC,GACAC,EAAYC,GACZC,GACAC,GACAC,GAAgBC,GAChBC,GAAmBC,GAAAC,GACnBC,GACAC,EAAa,EAAAC,OAAA,CAAA;0HAAA,CAAA,CAAA,CAAA,SAGJhH,CAA4B,GAAA,+BG9BnCiH,EAAA,EAAA,MAAA,EAAA,EACEC,EAAA,EAAA,cAAA,EAAA,EAMFC,EAAA,mBALIC,EAAA,EAAAC,EAAA,QAAAC,EAAAC,YAAA,8BAOFN,EAAA,EAAA,OAAA,EAAA,EAAqEO,EAAA,CAAA,EAAgBL,EAAA,qBAAhBC,EAAA,EAAAK,EAAAC,CAAA,2BAEnET,EAAA,EAAA,OAAA,EAAA,EAAoBO,EAAA,CAAA,mBAA0CL,EAAA,SAA1CC,EAAA,EAAAK,EAAAE,EAAA,EAAA,EAAA,wBAAA,CAAA,8BAItBV,EAAA,EAAA,IAAA,EAAA,EACEO,EAAA,CAAA,cACFL,EAAA,6BADEC,EAAA,EAAAQ,EAAA,IAAAC,GAAA,EAAA,EAAAC,EAAAC,KAAAT,EAAAU,UAAA,EAAA,GAAA,8BAOAf,EAAA,EAAA,OAAA,EAAA,EAAqDO,EAAA,CAAA,EAAeL,EAAA,qBAAfC,EAAA,EAAAK,EAAAQ,CAAA,8BAUzChB,EAAA,EAAA,MAAA,EAAMO,EAAA,CAAA,EAAqBL,EAAA,wBAArBC,EAAA,EAAAQ,EAAA,IAAAE,EAAAI,KAAA,GAAA,8BAMNjB,EAAA,EAAA,MAAA,EAAMO,EAAA,CAAA,EAAmBL,EAAA,wBAAnBC,EAAA,EAAAQ,EAAA,IAAAE,EAAAK,GAAA,GAAA,8BATVlB,EAAA,EAAA,KAAA,EACEO,EAAA,CAAA,EACAY,EAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,EAGFlB,EAAA,EACAF,EAAA,EAAA,KAAA,EACEO,EAAA,CAAA,EACAY,EAAA,EAAAE,IAAA,EAAA,EAAA,MAAA,EAGFnB,EAAA,8BAVEC,EAAA,EAAAQ,EAAA,IAAAW,EAAA,GAAA,EACAnB,EAAA,EAAAoB,EAAAV,EAAAI,KAAA,EAAA,EAAA,EAKAd,EAAA,CAAA,EAAAQ,EAAA,OAAAN,EAAAmB,UAAA,EAAA,GAAA,EACArB,EAAA,EAAAoB,EAAAV,EAAAK,GAAA,EAAA,EAAA,8BAVNlB,EAAA,EAAA,MAAA,EACEmB,EAAA,EAAAM,IAAA,EAAA,CAAA,EAcFvB,EAAA,qBAdEC,EAAA,EAAAoB,GAAAG,EAAArB,EAAAsB,oBAAA,GAAA,EAAA,GAAAD,CAAA,8BAoBI1B,EAAA,EAAA,MAAA,EAAMO,EAAA,CAAA,EAAmBL,EAAA,wBAAnBC,EAAA,EAAAQ,EAAA,IAAAE,EAAAK,GAAA,GAAA,8BAOJlB,EAAA,EAAA,MAAA,EAAMO,EAAA,CAAA,EAAqBL,EAAA,wBAArBC,EAAA,EAAAQ,EAAA,IAAAE,EAAAI,KAAA,GAAA,8BAHVjB,EAAA,EAAA,KAAA,EACEO,EAAA,CAAA,EACAY,EAAA,EAAAS,IAAA,EAAA,EAAA,MAAA,EAGF1B,EAAA,wBAJEC,EAAA,EAAAQ,EAAA,OAAAW,EAAA,GAAA,EACAnB,EAAA,EAAAoB,EAAAV,EAAAI,KAAA,EAAA,EAAA,8BAVNjB,EAAA,EAAA,MAAA,EAAM,EAAA,KAAA,EAEFO,EAAA,CAAA,EACAY,EAAA,EAAAU,IAAA,EAAA,EAAA,MAAA,EAGF3B,EAAA,EACAiB,EAAA,EAAAW,IAAA,EAAA,EAAA,KAAA,EAQF5B,EAAA,+BAbIC,EAAA,CAAA,EAAAQ,EAAA,IAAAN,EAAAmB,UAAA,EAAA,GAAA,EACArB,EAAA,EAAAoB,EAAAV,EAAAK,GAAA,EAAA,EAAA,EAIFf,EAAA,EAAAoB,GAAAQ,EAAA1B,EAAAsB,oBAAA,GAAA,EAAA,GAAAI,CAAA,8BAaF/B,EAAA,EAAA,0BAAA,EAAA,EACEC,EAAA,EAAA,OAAA,EAAA,wBACFC,EAAA,uBAFyBE,EAAA,cAAA,GAAA,EACCD,EAAA,EAAAC,EAAA,YAAAM,EAAA,EAAA,EAAAG,EAAAmB,IAAA,EAAAC,EAAA,8BAI9BC,EAAA,CAAA,EACElC,EAAA,EAAA,QAAA,EAAA,EACEO,EAAA,CAAA,mBACFL,EAAA,yBAFwEC,EAAA,EAAAgC,GAAA,MAAAC,EAAAC,EAAA,EACtElC,EAAA,EAAAQ,EAAA,IAAAD,EAAA,EAAA,EAAA,+BAAA,EAAA,GAAA,uCAIFV,EAAA,EAAA,IAAA,EAAA,EAA2CsC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAnC,EAAAoC,EAAA,CAAA,EAAA,OAAAC,EAASrC,EAAAsC,oBAAA,CAAqB,CAAA,CAAA,EAAEpC,EAAA,CAAA,mBAEzEL,EAAA,QAFyEC,EAAA,EAAAK,EAAAE,EAAA,EAAA,EAAA,+BAAA,CAAA,8BA/EvFV,EAAA,EAAA,KAAA,EAAoC,EAAA,WAAA,CAAA,EACJ,EAAA,iBAAA,EAE1BmB,EAAA,EAAAyB,IAAA,EAAA,EAAA,MAAA,CAAA,EAQA5C,EAAA,EAAA,gBAAA,EACEmB,EAAA,EAAA0B,IAAA,EAAA,EAAA,OAAA,CAAA,EAAqE,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAIvE7C,EAAA,EACAF,EAAA,EAAA,mBAAA,EACEmB,EAAA,EAAA6B,IAAA,EAAA,EAAA,IAAA,CAAA,EAGF9C,EAAA,EAAoB,EAEtBF,EAAA,GAAA,kBAAA,EAA8E,GAAA,WAAA,CAAA,EACzB,GAAA,iBAAA,CAAA,EAE/CmB,EAAA,GAAA8B,IAAA,EAAA,EAAA,OAAA,CAAA,EACF/C,EAAA,EACAF,EAAA,GAAA,kBAAA,EAAkB,GAAA,MAAA,CAAA,EAEdmB,EAAA,GAAA+B,IAAA,EAAA,EAAA,MAAA,EAAwC,GAAAC,IAAA,EAAA,EAAA,MAAA,EAmC1CjD,EAAA,EACAF,EAAA,GAAA,KAAA,EACEmB,EAAA,GAAAiC,IAAA,EAAA,EAAA,0BAAA,EAAA,EAKFlD,EAAA,EACAiB,EAAA,GAAAkC,IAAA,EAAA,EAAA,eAAA,CAAA,gBAKAlC,EAAA,GAAAmC,IAAA,EAAA,EAAA,IAAA,EAAA,EAKFpD,EAAA,EAAmB,EACV,EACM,EACV,kCApFQC,EAAA,CAAA,EAAAoD,GAAA,cAAAlD,EAAAmD,WAAA,EAAA,MAAAnD,EAAAC,aAAA,IAAAmD,SAAA,EAAA,IAAA,EACKtD,EAAA,EAAAC,EAAA,OAAAC,EAAAmD,WAAA,CAAA,EASXrD,EAAA,CAAA,EAAAC,EAAA,OAAAC,EAAAqD,WAAA,CAAA,EAAmB,WAAAC,CAAA,EAMtBxD,EAAA,CAAA,EAAAC,EAAA,OAAAS,EAAAC,OAAA,IAAA,EAKUX,EAAA,EAAAoD,GAAA,eAAAlD,EAAAC,aAAA,IAAAmD,SAAA,EAAA,IAAA,EAGLtD,EAAA,CAAA,EAAAC,EAAA,OAAAC,EAAAuD,UAAA,CAAA,EAILzD,EAAA,CAAA,EAAAoB,EAAAV,EAAAgD,YAAA,UAAA,GAAA,EAAA,EAqCA1D,EAAA,CAAA,EAAAoB,EAAAV,EAAAmB,KAAA,GAAA,EAAA,EAMa7B,EAAA,EAAAC,EAAA,OAAAM,EAAA,GAAA,GAAAL,EAAAyD,oBAAA,CAAA,EAKf3D,EAAA,CAAA,EAAAoB,EAAAV,EAAAkD,eAAA,GAAA,EAAA,GD9EV,IA+CaC,GA/CbC,GAAAC,EAAA,KAAAC,IAEAC,IACAC,KACAC,KACAC,IACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KAMAC,KACAC,KAEAC,KACAC,KAEAC,KACAC,oDAkBatB,IAAwB,IAAA,CAA/B,MAAOA,CAAwB,CAkB3BuB,yBAAuB,CAC7B,OAAOC,EAAc,CAAC,KAAKC,YAAa,KAAKC,mBAAmB,CAAC,EAAEC,KACjEC,EAAU,CAAC,CAACC,EAAYC,CAAkB,IACpCD,IAAe,UACV,KAAKE,iBAAiBC,eAAe,UAAW,CAACF,CAAkB,CAAC,EAAEH,KAC3EM,EAAKC,GAA4C,CAC/C,IAAMC,EAAYD,GAAME,WAAW,CAAC,EAC9BC,EACJ,KAAKC,aAAaC,2BAA2BJ,EAAWK,GAAoBC,SAAS,GAAGC,aACxF,GACIC,EACJ,KAAKL,aAAaC,2BAA2BJ,EAAWK,GAAoBI,QAAQ,GAAGF,aACvF,GACF,MAAO,CAACL,EAAWM,CAAQ,EAAEE,OAAOC,OAAO,EAAEC,KAAK,GAAG,CACvD,CAAC,CAAC,EAGFlB,IAAe,UACV,KAAKE,iBAAiBC,eAAe,UAAW,CAACF,CAAkB,CAAC,EAAEH,KAC3EM,EAAKC,GAA4C,CAC/C,IAAMC,EAAYD,GAAME,WAAW,CAAC,EAGpC,MAAO,GADL,KAAKE,aAAaC,2BAA2BJ,EAAWa,EAAYC,WAAW,GAAGP,aAAe,EAC9E,EACvB,CAAC,CAAC,EAGCQ,EAAG,EAAE,CACb,CAAC,CAEN,CA6DQC,mBAAmBC,EAA6BC,EAAe,CACrE,OAAO,KAAKf,aAAaC,2BAA2Ba,EAAUC,CAAO,GAAGX,aAAe,EACzF,CAEQY,kBAAkBC,EAAmB,CAI3C,OAHqBC,GAA2BD,EAAa,CAC3DE,eAAgB,KACjB,GACoBC,oBAAmB,GAAMH,CAChD,CAEM5E,qBAAmB,QAAAgF,GAAA,sBACvB,IAAIC,EAAS,KAAKpG,UAAS,EACvBqG,EAAW,KAAKlG,oBAAmB,GAAM,GACzC,KAAKmG,SAAQ,EAAGjE,YAAc,YAChC+D,EAAS,KAAKjG,oBAAmB,GAAM,GACvCkG,EAAW,KAAKrG,UAAS,GAG3B,GAAM,CAACuG,EAAWC,CAAe,EAAI,MAAMC,GACzCzC,EAAc,CAAC,KAAK0C,OAAOC,WAAY,KAAKD,OAAOE,gBAAgB,CAAC,CAAC,EAEjEC,EAAYL,GAAoCD,EAChDO,EAAiBP,EACjBQ,EAAY,KAAKC,OAAOC,KAAKC,GAA8B,CAC/DC,MAAO,QACPC,SAAU,QACVC,UAAW,QACX3C,KAAM,CACJmC,UAAAA,EACAC,eAAAA,EACAQ,aAAc,KAAKhB,SAAQ,EAAGgB,aAC9B/E,eAAgB,KAAK+D,SAAQ,EAAG/D,eAChC6D,OAAQA,GAAU,KAAKE,SAAQ,EAAG5G,GAClC2G,SAAUA,GAAY,KAAKC,SAAQ,EAAG7G,MAEzC,EAEK8H,EAA0B,KAAKC,aAAaC,UAAWC,GAAQ,CAC/DA,EAAKC,QACPZ,EAAUa,WAAW,QAAS,OAAO,EAErCb,EAAUa,WAAW,QAAS,KAAK,CAEvC,CAAC,EACDb,EAAUc,YAAW,EAAGJ,UAAU,IAAK,CACrCF,EAAwBO,YAAW,CACrC,CAAC,CACH,GAEAC,YACmBjD,EACAkD,EACAzD,EACAyC,EAAiB,CAHjB,KAAAlC,aAAAA,EACA,KAAAkD,KAAAA,EACA,KAAAzD,iBAAAA,EACA,KAAAyC,OAAAA,EAlKnB,KAAAzH,WAAa0I,GAAWC,oBAEf,KAAAtC,SAAWuC,GAAMC,SAA2B,CAAA,CAAE,EAC9C,KAAA9D,mBAAqB6D,GAAM,EAAE,EACrB,KAAAjE,oBAAsBmE,GAAa,KAAK/D,kBAAkB,EAClE,KAAAD,WAAa8D,GAAkB,SAAS,EAChC,KAAAlE,YAAcoE,GAAa,KAAKhE,UAAU,EAClD,KAAArC,WAAamG,GAAM,EAAI,EAEhC,KAAAG,qBAAuBD,GAAa,KAAKzC,QAAQ,EAAEzB,KAAKC,EAAU,IAAM,KAAKL,wBAAuB,CAAE,CAAC,EACvG,KAAA5D,oBAAsBoI,GAAS,KAAKD,oBAAoB,EAEvC,KAAA5B,OAAS8B,EAAOC,EAAiB,EAEjC,KAAAC,mBAAqBF,EAAOG,EAAkB,EAC9C,KAAAnB,aAAe,KAAKkB,mBAAmBE,QAAQC,GAAYC,MAAM,EAkClF,KAAA5G,WAAa6G,EAAS,IAAK,CACzB,GAAM,CAAE1G,UAAAA,CAAS,EAAK,KAAKiE,SAAQ,EAC/B0C,EAAgB,GACpB,OAAI3G,IAAc,UAChB2G,EAAgB,aAAa,KAAK7I,oBAAmB,CAAE,GAC9CkC,IAAc,aACvB2G,EAAgB,WAAW,KAAK7I,oBAAmB,CAAE,IAEhD6I,CACT,CAAC,EAED,KAAA5G,UAAY2G,EAAS,IAAK,CACxB,GAAM,CAAEE,OAAAA,EAAQC,SAAAA,CAAQ,EAAK,KAAK5C,SAAQ,EACpC6C,EAAUC,KAAKC,MAAMH,EAAW,GAAK,EACrCI,GAAYJ,EAAW,IAAS,KAAMK,QAAQ,CAAC,EACrD,OAAIN,IAAW,YACN,YAAYE,CAAO,aAAaG,CAAO,WAEzC,UAAUL,CAAM,EACzB,CAAC,EAED,KAAAjJ,UAAY+I,EAAS,IAAK,CACxB,IAAMS,EAAQ,KAAK5D,SAAQ,GAAI6D,UAC/B,GAAID,EACF,MAAO,GAAGA,GAAO3E,WAAa,EAAE,IAAI2E,GAAOrE,UAAY,EAAE,GAAGuE,KAAI,EAElE,GAAI,CAAC,KAAK9D,SAAQ,EAAG+D,QAAS,CAC5B,IAAMC,EAAa,KAAKjE,mBAAmB,KAAKC,SAAQ,EAAIJ,EAAYqE,kBAAkB,EAC1F,GAAID,EACF,OAAOA,CAEX,CACA,MAAO,SACT,CAAC,EAED,KAAAtD,SAA4CyC,EAAS,IAAK,CACxD,IAAMzC,EAAoC,CACxC9F,KAAM,KAAKmF,mBAAmB,KAAKC,SAAQ,EAAIJ,EAAYsE,gBAAgB,EAC3Eb,OAAQ,KAAKtD,mBAAmB,KAAKC,SAAQ,EAAIJ,EAAYuE,kBAAkB,EAC/E1H,UAAW,KAAKsD,mBAAmB,KAAKC,SAAQ,EAAIJ,EAAYwE,qBAAqB,EACrF1K,KACE,KAAKwF,aAAaC,2BAA2B,KAAKa,SAAQ,EAAIqE,GAAeC,qBAAqB,GAC9FC,WAAa,KACnBzK,GAAI,KAAKoG,kBAAkB,KAAKH,mBAAmB,KAAKC,SAAQ,EAAIJ,EAAY4E,oBAAoB,CAAC,EACrG3K,KAAM,KAAKqG,kBAAkB,KAAKH,mBAAmB,KAAKC,SAAQ,EAAIJ,EAAY6E,sBAAsB,CAAC,EACzGnB,SACE,KAAKpE,aAAaC,2BAA2B,KAAKa,SAAQ,EAAIJ,EAAY8E,oBAAoB,GAAGC,cACjG,EACFhI,eAAgB,KAAKoD,mBAAmB,KAAKC,SAAQ,EAAIJ,EAAYgF,sBAAsB,GAEvFC,EAAmB,KAAK9E,mBAAmB,KAAKC,SAAQ,EAAIJ,EAAYkF,wBAAwB,EACtG,OAAID,IACFnE,EAASmE,iBAAmBA,GAE9BnE,EAASgB,aAAe,KAAK3B,mBAAmB,KAAKC,SAAQ,EAAIJ,EAAYmF,oBAAoB,EAE1FrE,CACT,CAAC,EAuEkB,KAAAxH,aAAeA,GAbhC,KAAKwD,qBAAuB+F,GAAa,KAAK/B,QAAQ,EAAEnC,KACtDC,EAAWkC,GACJA,EAASmE,iBAGP,KAAKzC,KAAK4C,IAAItE,EAASmE,iBAAkB,CAC9CI,aAAc,OACdC,gBAAiB,GAClB,EALQpF,EAAG,IAAI,CAMjB,CAAC,CAEN,iDAhLWlD,GAAwBuI,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,CAAA,CAAA,CAAA,+BAAxB3I,EAAwB4I,UAAA,CAAA,CAAA,mBAAA,CAAA,EAAAC,OAAA,CAAAzF,SAAA,CAAA,EAAA,UAAA,EAAAtB,mBAAA,CAAA,EAAA,oBAAA,EAAAD,WAAA,CAAA,EAAA,YAAA,EAAArC,WAAA,CAAA,EAAA,YAAA,CAAA,EAAAsJ,SAAA,CAAAC,GAZxB,CAACC,EAAO,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,MAAA,EAAA,CAAA,QAAA,QAAA,EAAA,OAAA,UAAA,EAAA,CAAA,QAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,WAAA,EAAA,YAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,QAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,cAAA,qCAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,OAAA,OAAA,kBAAA,kCAAA,YAAA,UAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,CAAA,UAAA,WAAA,WAAA,GAAA,EAAA,+BAAA,EAAA,KAAA,EAAA,CAAA,cAAA,sCAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAA/L,EAAA,CAAA+L,EAAA,GCnCtBlM,EAAA,EAAAmM,IAAA,GAAA,GAAA,MAAA,CAAA,OAAMlN,EAAA,OAAAkB,EAAAwG,SAAA,CAAA,iBDqCFyF,EAAYC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GACAC,GAAaC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACbC,GAAkBC,GAClBC,GAAiBC,GACjBC,EAAgB,EAAAC,OAAA,CAAA;yGAAA,CAAA,CAAA,CAAA,SAGP3K,CAAwB,GAAA,IE/CrC,IAwBa4K,GAxBbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,mBAkBaT,IAA0B,IAAA,CAAjC,MAAOA,CAA0B,CAErC,IAAIU,SAASA,EAA2B,CACtC,KAAKC,UAAUC,IAAIF,CAAQ,CAC7B,CACA,IAAIA,UAAQ,CACV,OAAO,KAAKC,UAAS,CACvB,CAmBAE,YACmBC,EACAC,EACAC,EAAsD,CAFtD,KAAAF,aAAAA,EACA,KAAAC,cAAAA,EACA,KAAAC,wBAAAA,EA5BX,KAAAL,UAA+CM,EAAO,CAAA,CAAE,EAmB7C,KAAAC,OAASC,EAAOC,EAAiB,EACjC,KAAAC,uBAAyBF,EAAOG,EAAiC,EACjE,KAAAC,mBAAqB,KAAKL,OAAOM,UAAUD,mBAC3C,KAAAE,YAAc,KAAKP,OAAOM,UAAUC,YACtC,KAAAC,sBAAwBP,EAAOQ,EAAwB,EAOtE,KAAKC,YAAcC,GAAS,KAAKX,OAAOY,YAAY,EAEpD,IAAMC,EAAaC,GAAa,KAAKrB,SAAS,EAAEsB,KAC9CC,EAAWxB,IAAY,CACrB,IAAMyB,GACJzB,IAAU0B,cACNC,OAAQC,IAAMA,GAAEC,eAAiB,WAAaD,GAAEE,WAAW,EAC5DC,IAAKH,IACGA,GAAEE,WACV,GAAK,CAAA,EACV,OAAML,IAAOA,GAAIO,OAAS,EACjB,KAAK3B,cAAc4B,eAAe,UAAWR,EAAG,EAEhDS,EAAG,IAAI,CAElB,CAAC,EACDH,EAAKI,KAAcA,IAAUC,YAAc,CAAA,GAAIT,OAAQU,IAAcA,IAAWP,WAAW,CAAC,EAC5FC,EAAKK,IACIA,GAAWL,IAAKO,IACd,KAAKC,kCACV,KAAKnC,aAAaoC,2BAA2BF,GAAGG,EAAYC,WAAW,GAAGC,aAAe,IACzF,GAAGC,GAAYC,QAAQC,IAAI,IAAIF,GAAYC,QAAQE,UAAUC,OAAO,GAAGC,QACrE,eACAX,GAAER,aAAe,EAAE,EAErB,sBAAsB,CAEzB,CACF,CAAC,EAGJ,KAAKoB,UAAY/B,GAASE,EAAY,CAAE8B,aAAc,CAAA,CAAE,CAAE,EAE1D,IAAMC,EAAY9B,GAAa,KAAKrB,SAAS,EAAEsB,KAC7CC,EAAWxB,IAAY,CACrB,IAAMyB,GACJzB,IAAU0B,cACNC,OAAQC,IAAMA,GAAEC,eAAiB,WAAaD,GAAEE,WAAW,EAC5DC,IAAKH,IACGA,GAAEE,WACV,GAAK,CAAA,EACV,OAAIL,GAAIO,OAAS,EACR,KAAK3B,cAAc4B,eAAe,UAAWR,EAAG,EAEhDS,EAAG,IAAI,CAElB,CAAC,EACDH,EAAKI,KAAcA,IAAUC,YAAc,CAAA,GAAIT,OAAQU,IAAcA,IAAWP,WAAW,CAAC,EAC5FC,EAAKK,IACIA,GAAWL,IAAKO,IAAK,CAC1B,IAAMe,IACH,KAAKjD,aAAaoC,2BAA2BF,GAAGgB,GAAoBC,SAAS,GAAGZ,aAAe,KAChG,KACC,KAAKvC,aAAaoC,2BAA2BF,GAAGgB,GAAoBE,QAAQ,GAAGb,aAAe,KACjG,OAAO,KAAKJ,kCACVc,GACA,GAAGT,GAAYa,QAAQX,IAAI,IAAIF,GAAYa,QAAQV,UAAUC,OAAO,GAAGC,QACrE,eACAX,GAAER,aAAe,EAAE,EAErB,sBAAsB,CAE1B,CAAC,CACF,CAAC,EAGJ,KAAK4B,SAAWvC,GAASiC,EAAW,CAAED,aAAc,CAAA,CAAE,CAAE,EAExD,IAAMQ,EAAiBrC,GAAa,KAAKrB,SAAS,EAAEsB,KAClDC,EAAWxB,IAAY,CACrB,IAAMyB,GACJzB,IAAU0B,cACNC,OAAQC,IAAMA,GAAEC,eAAiB,gBAAkBD,GAAEE,WAAW,EACjEC,IAAKH,IACGA,GAAEE,WACV,GAAK,CAAA,EACV,OAAIL,GAAIO,OAAS,EACR,KAAK3B,cAAc4B,eAAe,eAAgBR,EAAG,EAErDS,EAAG,IAAI,CAElB,CAAC,EACDH,EAAKI,KAAcA,IAAUC,YAAc,CAAA,GAAIT,OAAQU,IAAcA,IAAWP,WAAW,CAAC,EAC5FC,EAAKK,IACIA,GAAWL,IAAKO,IAAK,CAC1B,IAAMe,GACJ,KAAKjD,aAAaoC,2BAA2BF,GAAGG,EAAYmB,gBAAgB,GAAGjB,aAAe,IAChG,OAAO,KAAKJ,kCACVc,GACA,GAAGT,GAAYiB,cAAcf,IAAI,IAAIF,GAAYiB,cAAcd,UAAUC,OAAO,GAC7EC,QAAQ,sBAAuBX,GAAEwB,kBAAoB,EAAE,EACvDb,QAAQ,eAAgBX,GAAER,aAAe,EAAE,EAC9C,6BACAQ,GAAEwB,kBAAoB,EAAE,CAE5B,CAAC,CACF,CAAC,EAGJ,KAAKC,cAAgB5C,GAASwC,EAAgB,CAAER,aAAc,CAAA,CAAE,CAAE,EAElE,IAAMa,EAAsBC,EAAc,CAAC3C,GAAa,KAAKyC,aAAa,EAAG,KAAKvD,OAAO0D,UAAU,CAAC,EAAE3C,KACpGC,EAAU,CAAC,CAACuC,GAAeI,EAAS,IAAK,CACvC,IAAMC,GAAkBC,MAAMC,KAAK,IAAIC,IAAIR,GAAchC,IAAKO,IAAMA,GAAEkC,aAAa,CAAC,CAAC,EACrF,OAAIJ,GAAgBpC,SAAW,EACtBE,EAAG,CAAC,CAAA,EAAwC6B,EAAa,CAG/D,EAEI,KAAKzD,wBACTmE,yBAAyB,CACxBN,UAAWA,GACXO,oBAAqBN,GACsB,EAC5C7C,KACCQ,EACGI,IACC,CAACA,GAAU4B,EAAa,CAAyE,CACpG,CAEP,CAAC,EACDhC,EAAI,CAAC,CAACI,GAAU4B,EAAa,IAA2E,CACtG,IAAMY,GAA4D,CAAA,EAClE,GAAI,CAACxC,GAASyC,kBACZ,OAAOD,GAET,QAAWE,MAAoB1C,GAASyC,kBACtCD,GAAmBG,KAAK,CACtBN,cAAeK,GAAiBE,mBAChCC,gBAAiBH,GAAiBI,iBAClCC,+BAAgC,CAAA,EACM,EAE1C,QAAWC,MAAgBpB,GAAe,CACxC,IAAMqB,GAAQT,GAAmBU,KAAMD,IAAUA,GAAMZ,gBAAkBW,GAAaX,aAAa,EAC/FY,IACFA,GAAMF,+BAA+BJ,KAAKK,EAAY,CAE1D,CACA,OAAOR,EACT,CAAC,CAAC,EAGJ,KAAKA,mBAAqBxD,GAAS6C,EAAqB,CAAEb,aAAc,CAAA,CAAE,CAAE,EAE5E,IAAMmC,EAAkBhE,GAAa,KAAKrB,SAAS,EAAEsB,KACnDQ,EACG/B,IACCA,IAAU0B,cACNC,OAAQC,IAAMA,GAAEC,eAAiB,eAAiBD,GAAEE,WAAW,EAChEC,IAAKH,IAAMA,GAAEE,aAAe,EAAE,GAAK,CAAA,CAAE,CAC3C,EAEGyD,EAAwBtB,EAAc,CAC1C,KAAKtD,uBAAuBY,KAAKiE,GAAU,EAAE,CAAC,EAC9CF,CAAe,CAChB,EAAE/D,KACDC,EAAU,CAAC,CAACiE,GAAgBC,EAAc,IAAM,KAAKC,yBAAyBF,GAAgBC,EAAc,CAAC,CAAC,EAE1GE,EAAoBN,EAAgB/D,KACxCC,EAAWkE,IAAmB,KAAKG,sBAAsBH,EAAc,CAAC,CAAC,EAGrEI,EAA+D7B,EAAc,CACjF2B,EACAL,CAAqB,CACtB,EAAEhE,KAAKQ,EAAI,CAAC,CAACgE,GAAeC,EAAoB,IAAMD,GAAcE,OAAOD,EAAoB,CAAC,CAAC,EAE5FE,EAAsBjC,EAAc,CAACb,EAAW/B,CAAU,CAAC,EAAEE,KACjEQ,EAAI,CAAC,CAAC2B,GAAUR,EAAS,IAChBQ,GAAS1B,OAAS,EAAI0B,GAAS,CAAC,EAAIR,GAAUlB,OAAS,EAAIkB,GAAU,CAAC,EAAI,IAClF,CAAC,EAEJ,KAAKiD,mBAAqBhF,GAAS+E,EAAqB,CAAE/C,aAAc,IAAI,CAAE,EAE9E,KAAK4C,cAAgB5E,GAAS2E,EAAgB,CAAE3C,aAAc,CAAA,CAAE,CAAE,EAElE,IAAMiD,EAAyD9E,GAAa,KAAKrB,SAAS,EAAEsB,KAC1FC,EAAWxB,IAA+B,CACxC,IAAMyB,GAAMzB,IAAU0B,cAClBC,OAAQC,IAAMA,GAAEC,eAAiB,MAAM,EACxCE,IAAKH,IACGA,GAAEE,WACV,EACH,OAAIL,IAAOA,GAAIO,OAAS,EACf,KAAKjB,aAAasF,cAAc5E,EAAG,EAErCS,EAAG,CAAA,CAAsB,CAClC,CAAC,EACDH,EAAKuE,KAA6BA,IAAS,CAAA,GAAI3E,OAAQ4E,IAASA,IAAMC,MAAM,CAAC,EAC7EzE,EAAKuE,IACEA,GAGEA,IAAOvE,IAAKO,IACV,KAAKC,kCAAkCD,IAAGe,aAAe,IAAK,GAAI,EAAE,CAC5E,EAJQ,CAAA,CAKV,CAAC,EAGJ,KAAKoD,YAActF,GAASiF,EAAU,CAAEjD,aAAc,CAAA,CAAE,CAAE,EAE1D,IAAMuD,GAAoBzC,EAAc,CAAC5C,EAAY+B,EAAWO,EAAgBmC,EAAgBM,CAAQ,CAAC,EAAE7E,KACzGQ,EAAKL,IAAiBA,GAAaiF,OAAO,CAACC,GAAKC,KAASD,GAAMC,GAAK7E,OAAQ,CAAC,CAAC,CAAC,EAGjF,KAAK8E,qBAAuB3F,GAASuF,GAAmB,CAAEvD,aAAc,IAAI,CAAE,CAChF,CAEQZ,kCACNwE,EACAC,EACAC,EACAzC,EAAsB,CAEtB,MAAO,CACLuC,KAAMA,EACNG,QAASF,EACTC,WAAYA,EACZzC,cAAeA,EAEnB,CAEQmB,yBACNF,EACAC,EAAwB,CAExB,IAAMyB,EAAYzB,EAAe/D,OAAQyF,GAAO,CAACA,EAAGC,WAAU,eAAA,CAA8B,EAC5F,OAAI5B,GAAkB0B,EAAUnF,OAAS,GAAK,KAAKnB,oBACjD,KAAKA,mBAAmByG,kBAAkB7B,CAAc,EACjD,KAAK5E,mBAAmB0G,oBAAoBJ,CAAS,EAAE5F,KAC5DQ,EAAKI,GACEA,EAGEA,EAASJ,IAAKO,GACnB,KAAKC,kCAAkCD,GAAGyE,MAAQ,IAAK,GAAI,0BAA0B,CAAC,EAH/E,CAAA,CAKV,CAAC,GAGC7E,EAAG,CAAA,CAAE,CACd,CAEQ2D,sBAAsBH,EAAwB,CACpD,IAAMjE,EAAMiE,EAAe/D,OAAQyF,GAAOA,EAAGC,WAAU,eAAA,CAA8B,EACrF,OAAI5F,EAAIO,OAAS,EACR,KAAKxB,OAAO0D,WAAW3C,KAC5BC,EAAW2C,GAAc,KAAKnD,sBAAsBuG,oBAAoB,CAAEpD,UAAAA,EAAWqD,aAAc/F,CAAG,CAAE,CAAC,EACzGM,EAAKI,GAAaA,GAAUC,YAAYL,IAAKO,GAAM,KAAKmF,mBAAmBnF,CAAC,CAAC,GAAK,CAAA,CAAE,CAAC,EAGlFJ,EAAG,CAAA,CAAE,CACd,CAEQuF,mBAAmBpF,EAAoB,CAC7C,IAAM0E,EAAO1E,EAAUqF,OAAOrC,KAAMsC,GAAMA,EAAEC,UAAYnF,EAAYoF,eAAe,GAAGlF,aAAe,IAC/FqE,EAAO,GAAGpE,GAAYkF,YAAYhF,IAAI,IAAIF,GAAYkF,YAAY/E,UAAUC,OAAO,GAAGC,QAC1F,eACAZ,EAAUP,WAAW,EAEvB,OAAO,KAAKS,kCAAkCwE,EAAMC,EAAM,0BAA0B,CACtF,iDAtSW1H,GAA0ByI,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,kCAA1B5I,EAA0B6I,QAA1B7I,EAA0B8I,SAAA,CAAA,CAAA,SAA1B9I,CAA0B,GAAA,2BEvBrC+I,EAAA,EAAA,KAAA,CAAA,sCAGIC,EAAA,EAAA,IAAA,CAAA,EAAgCC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,YAAAH,EAAAI,QAAA,CAAqB,CAAA,CAAA,EAC5DR,EAAA,EAAA,WAAA,EAAA,EAAoCS,EAAA,EAAA,MAAA,EAAIC,EAAA,EACxCV,EAAA,EAAA,MAAA,EACES,EAAA,CAAA,mBAEFC,EAAA,EAAO,4BALNC,EAAA,cAAAC,CAAA,EAGCC,EAAA,CAAA,EAAAC,GAAA,IAAAV,EAAAW,qBAAA,EAAA,IAAAC,EAAA,EAAA,EAAAZ,EAAAW,qBAAA,IAAA,EAAA,uBAAA,uBAAA,EAAA,GAAA,8BAPVf,EAAA,EAAA,KAAA,EACEiB,EAAA,EAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,EACAlB,EAAA,EAAA,MAAA,CAAA,EACEiB,EAAA,EAAAE,IAAA,EAAA,EAAA,IAAA,CAAA,EASFT,EAAA,EAAM,kBAXDG,EAAA,EAAAF,EAAA,OAAA,CAAAP,EAAAgB,WAAA,EAEHP,EAAA,CAAA,EAAAQ,EAAAjB,EAAAW,qBAAA,EAAA,EAAA,EAAA,6BAsBEO,GAAA,EAAA,EAAA,yCAAcX,EAAA,mBAAAY,CAAA,EAAiC,0BAAAC,GAAA,EAAAC,GAAAC,CAAA,CAAA,8BAHnD1B,EAAA,EAAA,MAAA,EAAA,EAAwD,EAAA,MAAA,EAAA,EAChCS,EAAA,CAAA,mBAA6CC,EAAA,EACnEiB,GAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,GAAAC,EAAA,EAGFnB,EAAA,kBAJwBG,EAAA,CAAA,EAAAiB,EAAAd,EAAA,EAAA,EAAA,2BAAA,CAAA,EACtBH,EAAA,CAAA,EAAAkB,GAAA3B,EAAA4B,SAAA,CAAU,6BAORV,GAAA,EAAA,EAAA,yCAAcX,EAAA,mBAAAY,CAAA,EAAiC,0BAAAC,GAAA,EAAAC,GAAAQ,CAAA,CAAA,8BAHnDjC,EAAA,EAAA,MAAA,EAAA,EAAyD,EAAA,MAAA,EAAA,EACjCS,EAAA,CAAA,mBAA8CC,EAAA,EACpEiB,GAAA,EAAAO,IAAA,EAAA,EAAA,eAAA,GAAAL,EAAA,EAGFnB,EAAA,kBAJwBG,EAAA,CAAA,EAAAiB,EAAAd,EAAA,EAAA,EAAA,4BAAA,CAAA,EACtBH,EAAA,CAAA,EAAAkB,GAAA3B,EAAA+B,UAAA,CAAW,6BAWLb,GAAA,EAAA,EAAA,yCACEX,EAAA,mBAAAY,CAAA,EAAiC,0BAAAC,GAAA,EAAAC,GAAAW,CAAA,CAAA,8BANvCpC,EAAA,EAAA,MAAA,EAAA,EAAyB,EAAA,MAAA,EAAA,EAErBS,EAAA,CAAA,mBACFC,EAAA,EACAiB,GAAA,EAAAU,IAAA,EAAA,EAAA,eAAA,GAAAC,EAAA,EAMF5B,EAAA,0BARIG,EAAA,CAAA,EAAA0B,EAAA,IAAAC,GAAA,EAAA,EAAA,eAAAhB,GAAA,EAAAiB,IAAAC,EAAAC,eAAA,CAAA,EAAA,GAAA,EAEF9B,EAAA,CAAA,EAAAkB,GAAAW,EAAAE,8BAAA,8BANN5C,EAAA,EAAA,KAAA,EACE2B,GAAA,EAAAkB,IAAA,EAAA,EAAA,MAAA,GAAAhB,EAAA,EAaFnB,EAAA,kBAbEG,EAAA,EAAAkB,GAAA3B,EAAA0C,mBAAA,CAAoB,6BAiBlBxB,GAAA,EAAA,EAAA,yCACEX,EAAA,mBAAAY,CAAA,EAAiC,0BAAAC,GAAA,EAAAC,GAAAsB,CAAA,CAAA,8BAJvC/C,EAAA,EAAA,MAAA,EAAA,EAA6D,EAAA,MAAA,EAAA,EACrCS,EAAA,CAAA,mBAAkDC,EAAA,EACxEiB,GAAA,EAAAqB,IAAA,EAAA,EAAA,eAAA,GAAAnB,EAAA,EAMFnB,EAAA,kBAPwBG,EAAA,CAAA,EAAAiB,EAAAd,EAAA,EAAA,EAAA,gCAAA,CAAA,EACtBH,EAAA,CAAA,EAAAkB,GAAA3B,EAAA6C,cAAA,CAAe,6BAUb3B,GAAA,EAAA,EAAA,yCAAcX,EAAA,mBAAAY,CAAA,EAAiC,0BAAAC,GAAA,EAAAC,GAAAyB,CAAA,CAAA,8BAHnDlD,EAAA,EAAA,MAAA,EAAA,EAA2D,EAAA,MAAA,EAAA,EACnCS,EAAA,CAAA,mBAAiDC,EAAA,EACvEiB,GAAA,EAAAwB,IAAA,EAAA,EAAA,eAAA,GAAAtB,EAAA,EAGFnB,EAAA,kBAJwBG,EAAA,CAAA,EAAAiB,EAAAd,EAAA,EAAA,EAAA,+BAAA,CAAA,EACtBH,EAAA,CAAA,EAAAkB,GAAA3B,EAAAgD,YAAA,CAAa,8BAQbpD,EAAA,EAAA,KAAA,EAAK,EAAA,IAAA,EAAA,EAEDS,EAAA,CAAA,EACFC,EAAA,EAAI,kCAFDG,EAAA,EAAAF,EAAA,aAAAP,EAAAiD,YAAA,EAAA,IAAAC,EAAAC,OAAA,EACD1C,EAAA,EAAA0B,EAAA,IAAAe,EAAAE,KAAA,GAAA,8BAIJxD,EAAA,EAAA,KAAA,EAAKS,EAAA,CAAA,EAAeC,EAAA,4BAAfG,EAAA,EAAAiB,EAAAwB,EAAAE,IAAA,6BAPPvC,EAAA,EAAAwC,IAAA,EAAA,EAAA,KAAA,EAA0C,EAAAC,IAAA,EAAA,EAAA,KAAA,+BAA1CrC,EAAAiC,EAAAC,SAAA,CAAAnD,EAAAuD,gBAAA,EAAA,EAAA,CAAA,GDnEF,eAsBaC,GAtBbC,GAAAC,EAAA,KAAAC,IAEAC,KAEAC,KAMAC,KACAC,KACAC,KACAC,KACAC,0GAQaV,IAAsC,IAAA,CAA7C,MAAOA,CAAsC,CACjD,IAAapD,SAASA,EAA2B,CAC/C,KAAK+D,mBAAmB/D,SAAWA,CACrC,CACA,IAAIA,UAAQ,CACV,OAAO,KAAK+D,mBAAmB/D,QACjC,CAgBAgE,YAC2DC,EACxCF,EAA8C,CADN,KAAAE,oBAAAA,EACxC,KAAAF,mBAAAA,EAhBV,KAAAnD,YAAc,GAEvB,KAAAsD,UAAY,CAAA,EACZ,KAAAC,iBAAmBA,GAEnB,KAAAxC,UAAsD,KAAKoC,mBAAmBpC,UAC9E,KAAAH,SAAqD,KAAKuC,mBAAmBvC,SAC7E,KAAAc,mBAAoE,KAAKyB,mBAAmBzB,mBAC5F,KAAAG,cAA0D,KAAKsB,mBAAmBtB,cAClF,KAAAG,YAAwD,KAAKmB,mBAAmBnB,YAChF,KAAAC,YAA8B,KAAKkB,mBAAmBlB,YACtD,KAAAtC,qBAA8C,KAAKwD,mBAAmBxD,qBACtE,KAAA4C,gBAAkBiB,GAAS,KAAKH,oBAAoBI,kBAAoBC,EAAG,EAAK,CAAC,CAK9E,CAEHvE,YAAYC,EAA2B,CACrC,KAAKkE,UAAUlE,EAASuE,WAAW,EAAI,EACzC,iDA7BWnB,GAAsCoB,EAuBvCC,EAA8B,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAvB7BtB,EAAsCuB,UAAA,CAAA,CAAA,yBAAA,CAAA,EAAAC,OAAA,CAAA5E,SAAA,WAAAY,YAAA,aAAA,EAAAiE,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,eAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,SAAA,uBAAA,mBAAA,YAAA,WAAA,EAAA,CAAA,QAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,aAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,QAAA,aAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WCtBnDxE,EAAA,EAAA0E,IAAA,EAAA,EAAA,MAAA,CAAA,EAcA3F,EAAA,EAAA,eAAA,EAAA,CAAA,EAEE4F,GAAA,eAAA,SAAAC,EAAA,CAAAC,OAAA5F,EAAA6F,CAAA,EAAAC,GAAAN,EAAAhB,UAAAgB,EAAAlF,SAAAuE,WAAA,EAAAc,CAAA,IAAAH,EAAAhB,UAAAgB,EAAAlF,SAAAuE,WAAA,EAAAc,GAAAvF,EAAAuF,CAAA,CAAA,CAAA,EAMA5E,EAAA,EAAAgF,IAAA,EAAA,EAAA,MAAA,CAAA,EAAwD,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAMC,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAMX,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAee,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAe/D3F,EAAA,EAEAO,EAAA,EAAAqF,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,wBAlEM5F,EAAA,QAAA+E,EAAAlF,UAAA,MAAAkF,EAAAlF,SAAAgG,cAAA,KAAA,KAAAd,EAAAlF,SAAAgG,aAAAC,QAAA,CAAA,EAgBJ5F,EAAA,EAAA6F,GAAA,SAAAhB,EAAAhB,UAAAgB,EAAAlF,SAAAuE,WAAA,CAAA,EACApE,EAAA,uBAAA,EAAA,EAA6B,mBAAA,EAAA,EACJ,YAAAgG,GAAA,GAAAC,IAAAlB,EAAAf,iBAAAkC,OAAAnB,EAAAf,iBAAAmC,GAAA,CAAA,EACoC,YAAA,GAAA,EAGvDjG,EAAA,CAAA,EAAAF,EAAA,SAAAoG,EAAArB,EAAA1D,SAAA,IAAA,KAAA,KAAA+E,EAAAN,QAAA,CAAA,EAMA5F,EAAA,EAAAF,EAAA,SAAAqG,EAAAtB,EAAAvD,UAAA,IAAA,KAAA,KAAA6E,EAAAP,QAAA,CAAA,EAMA5F,EAAA,EAAAF,EAAA,SAAAsG,EAAAvB,EAAA5C,mBAAA,IAAA,KAAA,KAAAmE,EAAAR,QAAA,CAAA,EAeA5F,EAAA,EAAAF,EAAA,SAAAuG,EAAAxB,EAAAzC,cAAA,IAAA,KAAA,KAAAiE,EAAAT,QAAA,CAAA,EASA5F,EAAA,EAAAF,EAAA,SAAAwG,EAAAzB,EAAAtC,YAAA,IAAA,KAAA,KAAA+D,EAAAV,QAAA,CAAA,kBDtCIW,EAAYC,GAAAC,GAAEC,GAAiBC,EAAEC,GAAYC,GAAmBC,GAAAC,GAAEC,GAAaC,EAAA,EAAAC,OAAA,CAAA;wHAAA,CAAA,CAAA,CAAA,SAE9EnE,CAAsC,GAAA,IEtB7C,SAAUoE,GAAeC,EAA+B,CAC5D,GAAI,CAACA,EACH,OAAO,KAGT,IAAIC,EAAaD,EACbA,EAAYE,WAAW,MAAM,IAC/BD,EAAa,WAAaD,GAG5B,GAAI,CACF,IAAMG,EAAM,IAAIC,IAAIH,CAAU,EAC9B,GAAIE,EAAIE,KACN,OAAOF,EAAIG,SAAQ,CAEvB,MAAY,CACV,CAIF,MADoC,kCACJC,KAAKP,CAAW,EAC3BQ,OAAOC,SAASC,SAAW,KAAOF,OAAOC,SAASJ,KAAOG,OAAOC,SAASE,SACxEX,EAGTQ,OAAOC,SAASC,SAAW,KAAOF,OAAOC,SAASJ,KACjDL,CAChB,CA3BA,IAAAY,GAAAC,EAAA,mCEKUC,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,cAAA,CAAA,EAMFC,EAAA,mBALIC,EAAA,EAAAC,EAAA,QAAAC,EAAAC,YAAA,EAAsB,OAAAD,EAAAE,YAAA,EAAA,OAAA,iBAAA,8BASxBP,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,MAAA,CAAA,sBACFC,EAAA,mBADOC,EAAA,EAAAC,EAAA,YAAAI,EAAA,EAAA,EAAAH,EAAAI,SAAA,EAAAC,IAAA,EAAAC,EAAA,8BAIPX,EAAA,EAAA,KAAA,EAAK,EAAA,IAAA,CAAA,EACgCY,EAAA,CAAA,EAA0DV,EAAA,EAAI,mBAA9FC,EAAA,EAAAC,EAAA,OAAAC,EAAAI,SAAA,EAAAI,YAAAC,EAAA,EAAgCX,EAAA,EAAAY,EAAAV,EAAAI,SAAA,EAAAO,iBAAAX,EAAAI,SAAA,EAAAI,WAAA,8BAMrCb,EAAA,EAAA,IAAA,CAAA,EACEY,EAAA,CAAA,cACFV,EAAA,mBADEC,EAAA,EAAAc,EAAA,IAAAC,GAAA,EAAA,EAAAb,EAAAI,SAAA,EAAAU,cAAAd,EAAAe,UAAA,EAAA,GAAA,8BA1BRpB,EAAA,EAAA,iBAAA,EACEqB,EAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAUAtB,EAAA,EAAA,gBAAA,EACEqB,EAAA,EAAAE,IAAA,EAAA,EAAA,MAAA,CAAA,EAAuB,EAAAC,IAAA,EAAA,EAAA,KAAA,EAUzBtB,EAAA,EACAF,EAAA,EAAA,mBAAA,EACEqB,EAAA,EAAAI,IAAA,EAAA,EAAA,IAAA,CAAA,EAKFvB,EAAA,EAAoB,mBA7BLwB,GAAA,cAAArB,EAAAsB,WAAA,MAAAtB,EAAAC,aAAA,IAAAsB,SAAA,EAAA,IAAA,EACfzB,EAAA,EAAA0B,EAAAxB,EAAAsB,WAAA,EAAA,EAAA,EAWExB,EAAA,CAAA,EAAA0B,EAAAxB,EAAAI,SAAA,EAAAC,KAAA,EAAA,EAAA,EAKAP,EAAA,EAAA0B,EAAAxB,EAAAI,SAAA,EAAAI,YAAA,EAAA,EAAA,EAOAV,EAAA,CAAA,EAAA0B,EAAAxB,EAAAI,SAAA,EAAAU,cAAA,EAAA,EAAA,8BAUAnB,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,cAAA,CAAA,EAMFC,EAAA,mBALIC,EAAA,EAAAC,EAAA,QAAAC,EAAAC,YAAA,8BAQJN,EAAA,EAAA,iBAAA,CAAA,EAAuC,EAAA,OAAA,CAAA,EACjBY,EAAA,CAAA,EAAkBV,EAAA,EAAO,mBAAzBC,EAAA,CAAA,EAAAY,EAAAV,EAAAyB,WAAA,CAAA,2BAGtB9B,EAAA,EAAA,gBAAA,EAAgB,EAAA,OAAA,CAAA,EACMY,EAAA,CAAA,mBAA0CV,EAAA,EAAO,SAAjDC,EAAA,CAAA,EAAAY,EAAAP,EAAA,EAAA,EAAA,wBAAA,CAAA,8BAItBR,EAAA,EAAA,mBAAA,EAAmB,EAAA,IAAA,CAAA,EAEfY,EAAA,CAAA,cACFV,EAAA,EAAI,mBADFC,EAAA,CAAA,EAAAc,EAAA,IAAAC,GAAA,EAAA,EAAAb,EAAAI,SAAA,EAAAU,cAAAd,EAAAe,UAAA,EAAA,GAAA,8BASFpB,EAAA,EAAA,QAAA,EAAQ,EAAA,MAAA,EACAY,EAAA,CAAA,EAA6BV,EAAA,EAAO,mBAApCC,EAAA,CAAA,EAAAY,EAAAV,EAAAI,SAAA,EAAAsB,YAAA,8BAKR/B,EAAA,EAAA,QAAA,EAAQ,EAAA,OAAA,CAAA,EACyB,EAAA,IAAA,EAAA,EAC2BY,EAAA,CAAA,EAA2BV,EAAA,EAAI,EAClF,qBADFC,EAAA,CAAA,EAAA6B,GAAA,QAAAC,EAAA5B,EAAAI,SAAA,IAAA,KAAA,KAAAwB,EAAApB,YAAAC,EAAA,EAAqDX,EAAA,EAAAY,EAAAV,EAAAI,SAAA,EAAAyB,UAAA,8BAxClElC,EAAA,EAAA,iBAAA,EACEqB,EAAA,EAAAc,IAAA,EAAA,EAAA,MAAA,CAAA,EAAkB,EAAAC,IAAA,EAAA,EAAA,iBAAA,CAAA,EAUE,EAAAC,IAAA,EAAA,EAAA,gBAAA,EAIX,EAAAC,IAAA,EAAA,EAAA,mBAAA,EAYXpC,EAAA,EAEAF,EAAA,EAAA,kBAAA,EAA8E,EAAA,OAAA,CAAA,EAE1EqB,EAAA,EAAAkB,IAAA,EAAA,EAAA,QAAA,EAKA3B,EAAA,CAAA,mBACAS,EAAA,GAAAmB,IAAA,EAAA,EAAA,QAAA,EAOFtC,EAAA,EAAO,mBA5CQwB,GAAA,cAAArB,EAAAsB,WAAA,MAAAtB,EAAAC,aAAA,IAAAsB,SAAA,EAAA,IAAA,EACfzB,EAAA,EAAA0B,EAAAxB,EAAAsB,WAAA,EAAA,EAAA,EAUAxB,EAAA,EAAA0B,EAAAxB,EAAAyB,WAAA,EAAA,EAAA,CAAA,EASA3B,EAAA,CAAA,EAAA0B,EAAAxB,EAAAI,SAAA,EAAAU,cAAA,EAAA,EAAA,EASgBhB,EAAA,EAAAuB,GAAA,eAAArB,EAAAC,aAAA,IAAAsB,SAAA,EAAA,IAAA,EAEdzB,EAAA,CAAA,EAAA0B,EAAAxB,EAAAI,SAAA,EAAAsB,aAAA,EAAA,EAAA,EAKA5B,EAAA,EAAAc,EAAA,IAAAT,EAAA,EAAA,GAAA,iCAAA,EAAA,GAAA,EACAL,EAAA,CAAA,EAAA0B,EAAAxB,EAAAI,SAAA,EAAAyB,WAAA,GAAA,EAAA,8BAvERlC,EAAA,EAAA,UAAA,EACEqB,EAAA,EAAAoB,IAAA,EAAA,EAAA,kBAAA,CAAA,EAAwB,EAAAC,IAAA,GAAA,EAAA,EAgF1BxC,EAAA,kBAhFEC,EAAA,EAAA0B,EAAAxB,EAAAsC,cAAA,EAAA,EAAA,CAAA,GDFJ,IA2BaC,GA3BbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KAGAC,IACAC,IACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KAIAC,qCAQahB,IAAiC,IAAA,CAAxC,MAAOA,CAAiC,CAK5C,IAAaiB,SAASA,EAA2B,CAC/C,KAAKC,UAAUC,IAAIF,CAAQ,CAC7B,CAEA,IAAIA,UAAQ,CACV,OAAO,KAAKC,UAAS,CACvB,CAEA,IAAaE,WAAWA,EAAsB,CAC5C,KAAKC,YAAYF,IAAIC,CAAU,CACjC,CAEA,IAAaE,mBAAmBC,EAAmB,CACjD,KAAKC,oBAAoBL,IAAII,CAAW,CAC1C,CAUAE,YACmBC,EACAC,EACAC,EACAC,EAA6C,CAH7C,KAAAH,aAAAA,EACA,KAAAC,iBAAAA,EACA,KAAAC,iBAAAA,EACA,KAAAC,qBAAAA,EAhCX,KAAAX,UAA8CY,EAAO,CAAA,CAAE,EACvD,KAAAT,YAA0CS,EAAO,SAAS,EAC1D,KAAAN,oBAA8CM,EAAO,EAAE,EAkBtD,KAAA/C,WAAa,GAEH,KAAArB,aAAeA,GACf,KAAAc,WAAauD,GAAWC,OAE3C,KAAAC,yBAA2BC,GAAa,KAAKhB,SAAS,EAAEiB,KAAKC,EAAU,IAAM,KAAKC,wBAAuB,CAAE,CAAC,EAC5G,KAAAC,wBAA0BC,GAAS,KAAKN,wBAAwB,EAShE,KAAApE,SAAqC2E,EAAS,KACrC,CACLrD,aAAc,KAAKsD,mBAAmB,KAAKxB,SAAUyB,EAAYC,YAAY,GAAK,GAClFrD,WAAY,KAAKmD,mBAAmB,KAAKxB,SAAUyB,EAAYE,kBAAkB,EACjF9E,KAAM,KAAK2E,mBAAmB,KAAKxB,SAAUyB,EAAYG,yBAAyB,EAClFtE,cAAe,KAAKmD,aAAaoB,2BAA2B,KAAK7B,SAAU8B,GAAeC,qBAAqB,GAC3GC,UACJhF,YAAaiF,GAAe,KAAKT,mBAAmB,KAAKxB,SAAUyB,EAAYS,WAAW,CAAC,EAC3F/E,gBAAiB,KAAKqE,mBAAmB,KAAKxB,SAAUyB,EAAYU,eAAe,GAAK,GACxFC,kBAAmB,KAAKZ,mBAAmB,KAAKxB,SAAUyB,EAAYY,yBAAyB,GAAK,GACpGC,oBAAqB,KAAKd,mBAAmB,KAAKxB,SAAUyB,EAAYc,2BAA2B,GAAK,IAE3G,EAED,KAAAtE,WAAasD,EAAS,IAAK,CACzB,GAAM,CAAEa,kBAAAA,EAAmBE,oBAAAA,CAAmB,EAAK,KAAK1F,SAAQ,EAChE,GAAIwF,IAAsB,eACxB,MAAO,GAET,IAAMI,EAAW,KAAK9B,iBAAiB+B,QAAQ,oDAAoD,EAAI,IACjGC,EAAW,KAAKrB,wBAAuB,GAAM,GAC7CsB,EAAW,KAAKC,cAAcN,CAAmB,EACvD,MAAO,GAAGE,CAAQ,GAAGG,CAAQ,GAAGD,CAAQ,GAAGG,KAAI,CACjD,CAAC,EAqBD,KAAAnG,YAAc6E,EAAS,IACd,KAAK3E,SAAQ,EAAGwF,oBAAsB,YAC9C,EAED,KAAAtD,cAAgByC,EAAS,IAChB,KAAK3E,SAAQ,EAAGwF,oBAAsB,cAC9C,CApDE,CA2BKQ,cAAcE,EAAc,CAClC,OAAQA,EAAM,CACZ,IAAK,OACH,OAAO,KAAKpC,iBAAiB+B,QAAQ,yBAAyB,EAAI,IACpE,IAAK,YACH,OAAO,KAAK/B,iBAAiB+B,QAAQ,8BAA8B,EAAI,IACzE,IAAK,SACH,OAAO,KAAK/B,iBAAiB+B,QAAQ,2BAA2B,EAAI,IACtE,IAAK,cACH,OAAO,KAAK/B,iBAAiB+B,QAAQ,gCAAgC,EAAI,IAC3E,QACE,MAAO,EACX,CACF,CAEQjB,mBAAmBxB,EAA6B+C,EAAe,CACrE,OAAO,KAAKtC,aAAaoB,2BAA2B7B,EAAU+C,CAAO,GAAGC,aAAe,EACzF,CAUA5B,yBAAuB,CACrB,IAAM6B,EAAsB,KAAKjD,UAAUkD,cAAcC,KACtDC,GAAgBA,GAAaC,gBAAkB,SAAS,GACxD/C,YAEH,OAAI2C,EACK,KAAKK,cAAcL,EAAqB,SAAS,EAEjD,KAAKM,sBAAqB,CAErC,CAEAA,uBAAqB,CACnB,OAAI,KAAKpD,aAAe,UACf,KAAKmD,cAAc,KAAKjD,mBAAoB,SAAS,EAE1D,KAAKF,aAAe,UACf,KAAKmD,cAAc,KAAKjD,mBAAoB,SAAS,EAEvDmD,EAAG,EAAE,CACd,CAEQF,cAAcG,EAAkBC,EAAsB,CAC5D,OAAO,KAAK/C,iBAAiBgD,eAAeD,EAAY,CAACD,CAAQ,CAAC,EAAEvC,KAClE0C,EAAKC,GAA4C,CAC/C,IAAMC,EAAYD,GAAME,WAAW,CAAC,EACpC,OAAO,KAAKnD,qBAAqBoD,qBAAqBN,EAAYI,CAAS,CAC7E,CAAC,CAAC,CAEN,iDArHW/E,GAAiCkF,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,CAAA,CAAA,CAAA,+BAAjCtF,EAAiCuF,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,OAAA,CAAAvE,SAAA,WAAAG,WAAA,aAAAE,mBAAA,qBAAAvC,WAAA,YAAA,EAAA0G,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,kBAAA,kCAAA,YAAA,UAAA,EAAA,QAAA,MAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,OAAA,WAAA,kBAAA,kCAAA,YAAA,UAAA,EAAA,OAAA,EAAA,CAAA,SAAA,SAAA,EAAA,MAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GC3B9CpH,EAAA,EAAAsH,IAAA,EAAA,EAAA,UAAA,OAAA9G,EAAA6G,EAAAjI,SAAA,EAAA,EAAA,EAAA,iBDyBYmI,EAAYC,GAAEC,EAAeC,EAAEC,GAAmBC,GAAaC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAEC,GAAkBC,GAAEC,EAAgB,EAAAC,OAAA,CAAA;2HAAA,CAAA,CAAA,CAAA,SAEpG/G,CAAiC,GAAA,+BGpBxCgH,EAAA,EAAA,cAAA,EAAA,6CAEEC,EAAA,OAAAC,CAAA,EAAiB,QAAAC,EAAAC,YAAA,EACK,OAAAC,EAAAC,EAAA,EAAA,EAAAH,EAAAI,gBAAA,KAAA,MAAAF,IAAAG,OAAAH,EAAA,EAAA,8BAJ1BI,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAAC,IAAA,EAAA,EAAA,cAAA,EAAA,eAMFC,EAAA,0BALKC,EAAA,EAAAZ,EAAA,OAAAK,EAAA,EAAA,EAAAH,EAAAW,kBAAA,IAAA,EAAA,EAA8C,WAAAC,CAAA,8BAQ/CN,EAAA,EAAA,OAAA,EAAA,EAA8DO,EAAA,CAAA,EAAcJ,EAAA,qBAAdC,EAAA,EAAAI,EAAAC,CAAA,8BAC9DT,EAAA,EAAA,MAAA,EAAgDO,EAAA,CAAA,mBAA4BJ,EAAA,qBAA5BC,EAAA,EAAAI,EAAAX,EAAA,EAAA,EAAAa,CAAA,CAAA,8BAE9CC,EAAA,CAAA,EACEX,EAAA,EAAA,OAAA,EAAA,EACEO,EAAA,CAAA,oCACAP,EAAA,EAAA,IAAA,EAAA,EAAmEO,EAAA,CAAA,EAA6BJ,EAAA,EAAI,gCADpGC,EAAA,CAAA,EAAAQ,GAAA,IAAAf,EAAA,EAAA,EAAA,wBAAA,EAAA,IAAAA,EAAA,EAAA,EAAAgB,EAAAC,YAAA,EAAA,EAAA,GAAA,EACGV,EAAA,CAAA,EAAAZ,EAAA,aAAAE,EAAAqB,YAAA,EAAA,IAAAF,EAAAG,OAAA,EAAgEZ,EAAA,EAAAI,EAAAK,EAAAI,IAAA,8BAJzEN,EAAA,CAAA,EACEV,EAAA,EAAAiB,IAAA,EAAA,EAAA,eAAA,CAAA,uBAAed,EAAA,EAAAZ,EAAA,OAAAE,EAAAyB,mBAAA,CAAA,0BAUnBC,GAAA,CAAA,6BA5BJpB,EAAA,EAAA,iBAAA,EAKEC,EAAA,EAAAoB,IAAA,EAAA,EAAA,MAAA,CAAA,EAQArB,EAAA,EAAA,gBAAA,EAAgB,EAAA,OAAA,CAAA,EAEZC,EAAA,EAAAqB,IAAA,EAAA,EAAA,OAAA,CAAA,eACArB,EAAA,EAAAsB,IAAA,EAAA,EAAA,OAAA,CAAA,eACAtB,EAAA,EAAAuB,IAAA,EAAA,EAAA,eAAA,CAAA,EAQFrB,EAAA,EAAO,EAETH,EAAA,EAAA,mBAAA,EACEC,EAAA,GAAAwB,IAAA,EAAA,EAAA,eAAA,CAAA,EACFtB,EAAA,EAEAuB,GAAA,GAAA,CAAA,EACFvB,EAAA,iCA9BEwB,GAAA,cAAAjC,EAAAkC,WAAA,MAAAlC,EAAAC,aAAA,IAAAkC,SAAA,EAAA,IAAA,EAGoBzB,EAAA,EAAAZ,EAAA,OAAAE,EAAAkC,UAAA,EAUTxB,EAAA,CAAA,EAAAZ,EAAA,OAAAK,EAAA,EAAA,EAAAH,EAAAoC,SAAA,CAAA,EACA1B,EAAA,CAAA,EAAAZ,EAAA,OAAAK,EAAA,EAAA,GAAAH,EAAAqC,WAAA,CAAA,EACQ3B,EAAA,CAAA,EAAAZ,EAAA,OAAAE,EAAAsC,sBAAA,EAWF5B,EAAA,CAAA,EAAAZ,EAAA,OAAAE,EAAAuC,gBAAA,EAAwB,WAAAC,CAAA,EAA6B,WAAAC,CAAA,6BAYxE5C,EAAA,EAAA,0BAAA,EAAA,iBAAyBC,EAAA,QAAAE,EAAAC,YAAA,8BAIzBK,EAAA,EAAA,IAAA,EAAA,EACEO,EAAA,CAAA,cACFJ,EAAA,4BADEC,EAAA,EAAAgC,EAAA,IAAAC,GAAA,EAAA,EAAAC,EAAA5C,EAAA6C,UAAA,EAAA,GAAA,8BADFtC,EAAA,EAAAuC,IAAA,EAAA,EAAA,IAAA,EAAA,+BAAIhD,EAAA,OAAAK,EAAA,EAAA,EAAAH,EAAA+C,cAAA,CAAA,0BAOFrB,GAAA,CAAA,6BADFpB,EAAA,EAAA,MAAA,EAAA,EACEC,EAAA,EAAAyC,IAAA,EAAA,EAAA,eAAA,EAAA,EACFvC,EAAA,kBADiBC,EAAA,EAAAZ,EAAA,mBAAAE,EAAAuC,gBAAA,GDpDnB,YAmCaU,GAnCbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KAEAC,KACAC,+HAkBajB,IAA4B,IAAA,CAAnC,MAAOA,CAA4B,CAIvC,IAAakB,SAASA,EAA2B,CAC/C,KAAKC,MAAMC,IAAI,CAAEF,SAAUA,CAAQ,CAAE,CACvC,CACA,IAAIA,UAAQ,CACV,OAAO,KAAKC,MAAME,IAAG,EAAGH,QAC1B,CAEA,IAAaI,UAAUA,EAA2B,CAChD,KAAKH,MAAMC,IAAI,CAAEE,UAAWA,CAAS,CAAE,CACzC,CACA,IAAIA,WAAS,CACX,OAAO,KAAKH,MAAME,IAAG,EAAGC,SAC1B,CAEA,IAAaC,wBAAwBA,EAAgC,CACnE,KAAKJ,MAAMC,IAAI,CAAEG,wBAAyBA,CAAuB,CAAE,CACrE,CACA,IAAIA,yBAAuB,CACzB,OAAO,KAAKJ,MAAME,IAAG,EAAGE,uBAC1B,CAEA,IAAaC,WAAWC,EAAY,CAClC,KAAKN,MAAMC,IAAI,CAAEI,WAAYC,CAAI,CAAE,CACrC,CACA,IAAID,YAAU,CACZ,OAAO,KAAKL,MAAME,IAAG,EAAGG,UAC1B,CAGA,IAAavC,WAAWA,EAAmB,CACzC,KAAKyC,YAAczC,CACrB,CACA,IAAIA,YAAU,CACZ,OAAO,KAAKyC,WACd,CA6BAC,YACmBR,EACAS,EACAC,EAAkC,CAFlC,KAAAV,MAAAA,EACA,KAAAS,aAAAA,EACA,KAAAC,iBAAAA,EArEnB,KAAA7E,aAAeA,GACf,KAAA4C,WAAakC,GAAWC,OA8BhB,KAAAL,YAAc,GAUb,KAAAM,aAAe,GAKf,KAAA3C,uBAAyB,GAElC,KAAA4C,uBAAyB,KAAKJ,iBAAiBK,QAAQ,iCAAiC,EACxF,KAAA/C,UAAY,KAAKgC,MAAMgB,OAAO,UAAU,EAC/B,KAAA/C,YAAc,KAAK+B,MACzBgB,OAAO,UAAU,EACjBC,KAAKC,EAAKnB,GAAa,KAAKoB,2BAA2BpB,GAAUqB,gBAAgB,CAAC,CAAC,EACtF,KAAAzC,eAAiB,KAAKqB,MAAMgB,OAAO,eAAe,EAElD,KAAAzE,mBAAqB8E,EAAc,CACjC,KAAKrB,MAAMgB,OAAO,eAAe,EACjC,KAAKhB,MAAMgB,OAAO,yBAAyB,CAAC,CAC7C,EAAEC,KAAKC,EAAI,CAAC,CAACI,EAAelB,CAAuB,IAAMkB,GAAiBlB,CAAuB,CAAC,EAEnG,KAAApE,iBAAmB,KAAKgE,MAAMgB,OAAO,WAAW,EAAEC,KAAKC,EAAKK,GAASA,GAAMC,iBAAmB,EAAE,CAAC,EAEhF,KAAAC,mBAAqBC,EAAOC,EAA0B,EACvE,KAAAtE,mBAAqB,KAAKoE,mBAAmBpE,mBAC7C,KAAAJ,YAAc,KAAKwE,mBAAmBxE,YAOpC,KAAK+C,MAAMC,IAAI,CACbG,wBAAyB,GACzBD,UAAWlE,OACX8D,SAAU9D,OACV2F,SAAU,KAAKd,uBACfQ,cAAe,GACfO,cAAe,KAChB,EAED,KAAK7B,MAAM8B,QACT,WACA,KAAK9B,MAAMgB,OAAO,WAAW,EAAEC,KAC7Bc,GAAQR,GAAuBA,IAAS,IAAI,EAC5CL,EAAKK,GAAS,GAAGA,EAAKS,WAAa,EAAE,IAAIT,EAAKU,UAAY,EAAE,GAAGC,KAAI,CAAE,EACrEC,GAAKP,GAAa,KAAK5B,MAAMC,IAAI,CAAEqB,cAAeM,IAAa,EAAE,CAAE,CAAC,EACpEV,EAAKU,GAAaA,GAAY,KAAKd,sBAAsB,CAAC,CAC3D,EAGH,KAAKd,MAAM8B,QACT,gBACA,KAAK9B,MACFgB,OAAO,UAAU,EACjBC,KACCC,EACGnB,GACC,KAAKU,aAAa2B,2BAA2BrC,EAAUsC,GAAeC,qBAAqB,GAAGC,WAC9F,IAAI,CACP,CACF,CAEP,CAEQpB,2BAA2BqB,EAAqB,CACtD,OAAQA,EAAY,CAClB,IAAK,OACH,MAAO,iDACT,IAAK,QACH,MAAO,yDACT,IAAK,OACH,MAAO,wDACT,IAAK,UACH,MAAO,2DACT,IAAK,OACH,MAAO,iDACT,IAAK,gBACH,MAAO,iEACT,QACE,MAAO,EACX,CACF,iDA1HW3D,GAA4B4D,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,+BAA5B/D,EAA4BgE,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,OAAA,CAAA/C,SAAA,WAAAI,UAAA,YAAAC,wBAAA,0BAAAC,WAAA,aAAAvC,WAAA,aAAA+C,aAAA,eAAA1C,iBAAA,mBAAAD,uBAAA,wBAAA,EAAA6E,SAAA,CAAAC,GAZ5B,CAACN,EAAO,CAAC,CAAA,EAAAO,mBAAAC,IAAAC,MAAA,GAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,EAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,YAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,WAAA,UAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,OAAA,QAAA,MAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,OAAA,QAAA,KAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,kBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,YCvBtBrH,EAAA,EAAA,UAAA,EACEC,EAAA,EAAAsH,IAAA,GAAA,GAAA,kBAAA,CAAA,eAiCAvH,EAAA,EAAA,kBAAA,EAEE0B,GAAA,CAAA,EACFvB,EAAA,EAAmB,EAGrBF,EAAA,EAAAuH,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAAgC,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAD,EAAA,EAIM,EAAAE,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAF,EAAA,SA1CjCrH,EAAA,EAAAZ,EAAA,OAAAK,EAAA,EAAA,EAAAyH,EAAAxF,SAAA,CAAA,EAgCe1B,EAAA,CAAA,EAAAuB,GAAA,eAAA2F,EAAA3H,aAAA,IAAAkC,SAAA,EAAA,IAAA,kBDThB+F,EAAYC,GAAAC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GAAaC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACbC,GACAC,GAAkBC,GAClBC,GACAC,EAAU,EAAAC,OAAA,CAAA;sHAAA,CAAA,CAAA,CAAA,SAGDrG,CAA4B,GAAA,IEnCzC,IAMasG,GANbC,GAAAC,EAAA,SAMaF,IAAmC,IAAA,CAA1C,MAAOA,CAAmC,iDAAnCA,EAAmC,CAAA,gCAAnCA,EAAmCG,UAAA,CAAA,CAAA,GAAA,6BAAA,EAAA,CAAA,CAAA,CAAA,CAAA,SAAnCH,CAAmC,GAAA,ICsoBhD,SAASI,GAAoBC,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA6IA,SAASC,GAAkBF,EAASC,EAAO,CACzC,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAnyBA,IAuCIE,GAmBAC,GAMAC,GA6CAC,GAOAC,GAMAC,GAQAC,GAMAC,GAgBAC,GAQAC,GAOAC,GAKAC,GAUAC,GAIAC,GAMAC,GAQAC,GAQAC,GAKAC,GAOAC,GAMAC,GAMAC,GAMAC,GAOAC,GAQAC,GA8VEC,GAuDAC,GAmCAC,GA6BAC,GA0BAC,GAwDAC,GAoBAC,GA0BAC,GA+CAC,GAoBAC,GAsCAC,GAgCAC,GAmCAC,GA+CAC,GAyFAC,GA6BAC,GA6BAC,GAsCAC,GAwGAC,GAmCAC,GAoBAC,GA0BAC,GAoBAC,GAuBAC,GAqEAC,GAgCAC,GAoBAC,GAuBAC,GAgNAC,GAgCAC,GAuBAC,GA6BAC,GA0BAC,GAwCAC,GA6BAC,GA0BAC,GAoBAC,GA6BAC,GAgCAC,GAoBAC,GAuBAC,GAoBAC,GAuEAC,GA6BAC,GA6BAC,GAmCAC,GAuBAC,GAkDAC,GAmCAC,GAuBAC,GAuBAC,GAgCAC,GAuBAC,GAmCAC,GAyCAC,GAoBAC,GAuBAC,GAgCAC,GAuBAC,GAgCAC,GAuBAC,GAoBAC,GAgCAC,GAoBAC,GAuBAC,GAoBAC,GAuBAC,GA0BAC,GA6BAC,GAoBAC,GAuBAC,GAoBAC,GAuBAC,GAgCAC,GA+HAC,GAoHAC,GA6BAC,GAoBAC,GA0BAC,GAoBAC,GA6BAC,GAuBAC,GAuBAC,GAuBAC,GA+CAC,GAoBAC,GA0BAC,GAmCAC,GAuBAC,GAoEAC,GA6BAC,GA2DAC,GA6BAC,GAmFAC,GA0BAC,GAyCAC,GA6BAC,GA4CAC,GA6BAC,GAoBAC,GAoBAC,GAoBAC,GAiFAC,GAmCAC,GA6BAC,GA6BAC,GAmCAC,GA6BAC,GAgCAC,GAuBAC,GAgCAC,GAuBAC,GA0BAC,GA0BAC,GA6BAC,GAoBAC,GAoBAC,GA4CAC,GA0BAC,GAoBAC,GAuGAC,GAmFAC,GA4CAC,GA0BAC,GA4CAC,GAkEAC,GAoBAC,GA6EAC,GAyCAC,GAoBAC,GAgCAC,GAgCAC,GA0BAC,GAgCAC,GA2EAC,GAuBAC,GAoBAC,GAuBAC,GA+CAC,GAgCAC,GAmCAC,GA4GAC,GA+CAC,GA6BAC,GA2GAC,GAqFAC,GAoIAC,IACAC,IAOFC,GA6BAC,IA0DAC,IAmDAC,IAsDAC,IAuEAC,IAqEAC,IA8NAC,IA6EAC,IA2HAC,IAwLAC,IAgDEC,IACFC,GAuMAC,GA4EAC,IA4GAC,IAqDAC,IA2EAC,IA0BAC,IAqCAC,IA0BAC,IA2BAC,IA1lPJC,GAAAC,EAAA,KAAAC,IACAA,IACAC,KACAC,KAoCItM,GAA2B,SAAUA,EAAa,CACpD,OAAAA,EAAYA,EAAY,qBAA0B,CAAC,EAAI,uBACvDA,EAAYA,EAAY,mBAAwB,CAAC,EAAI,qBACrDA,EAAYA,EAAY,uBAA4B,CAAC,EAAI,yBACzDA,EAAYA,EAAY,sBAA2B,CAAC,EAAI,wBACxDA,EAAYA,EAAY,uBAA4B,CAAC,EAAI,yBACzDA,EAAYA,EAAY,uBAA4B,CAAC,EAAI,yBACzDA,EAAYA,EAAY,uBAA4B,CAAC,EAAI,yBACzDA,EAAYA,EAAY,wBAA6B,CAAC,EAAI,0BAC1DA,EAAYA,EAAY,wBAA6B,CAAC,EAAI,0BAC1DA,EAAYA,EAAY,wBAA6B,CAAC,EAAI,0BAC1DA,EAAYA,EAAY,0BAA+B,EAAE,EAAI,4BAC7DA,EAAYA,EAAY,0BAA+B,EAAE,EAAI,4BAC7DA,EAAYA,EAAY,0BAA+B,EAAE,EAAI,4BAC7DA,EAAYA,EAAY,uBAA4B,EAAE,EAAI,yBAC1DA,EAAYA,EAAY,uBAA4B,EAAE,EAAI,yBAC1DA,EAAYA,EAAY,uBAA4B,EAAE,EAAI,yBACnDA,CACT,EAAEA,IAAe,CAAC,CAAC,EACfC,GAAmC,SAAUA,EAAqB,CACpE,OAAAA,EAAoBA,EAAoB,8BAAmC,CAAC,EAAI,gCAChFA,EAAoBA,EAAoB,0BAA+B,CAAC,EAAI,4BAC5EA,EAAoBA,EAAoB,yBAA8B,CAAC,EAAI,2BACpEA,CACT,EAAEA,IAAuB,CAAC,CAAC,EACvBC,GAA8B,SAAUA,EAAgB,CAC1D,OAAAA,EAAeA,EAAe,wBAA6B,CAAC,EAAI,0BAChEA,EAAeA,EAAe,yBAA8B,CAAC,EAAI,2BACjEA,EAAeA,EAAe,6BAAkC,CAAC,EAAI,+BACrEA,EAAeA,EAAe,mBAAwB,CAAC,EAAI,qBAC3DA,EAAeA,EAAe,uBAA4B,CAAC,EAAI,yBAC/DA,EAAeA,EAAe,uBAA4B,CAAC,EAAI,yBAC/DA,EAAeA,EAAe,2BAAgC,CAAC,EAAI,6BACnEA,EAAeA,EAAe,uBAA4B,CAAC,EAAI,yBAC/DA,EAAeA,EAAe,2BAAgC,CAAC,EAAI,6BACnEA,EAAeA,EAAe,yBAA8B,CAAC,EAAI,2BACjEA,EAAeA,EAAe,iCAAsC,EAAE,EAAI,mCAC1EA,EAAeA,EAAe,4BAAiC,EAAE,EAAI,8BACrEA,EAAeA,EAAe,gCAAqC,EAAE,EAAI,kCACzEA,EAAeA,EAAe,gCAAqC,EAAE,EAAI,kCACzEA,EAAeA,EAAe,4CAAiD,EAAE,EAAI,8CACrFA,EAAeA,EAAe,6BAAkC,EAAE,EAAI,+BACtEA,EAAeA,EAAe,yCAA8C,EAAE,EAAI,2CAClFA,EAAeA,EAAe,0BAA+B,EAAE,EAAI,4BACnEA,EAAeA,EAAe,gCAAqC,EAAE,EAAI,kCACzEA,EAAeA,EAAe,yBAA8B,EAAE,EAAI,2BAClEA,EAAeA,EAAe,+BAAoC,EAAE,EAAI,iCACxEA,EAAeA,EAAe,2BAAgC,EAAE,EAAI,6BACpEA,EAAeA,EAAe,+BAAoC,EAAE,EAAI,iCACxEA,EAAeA,EAAe,yBAA8B,EAAE,EAAI,2BAClEA,EAAeA,EAAe,6BAAkC,EAAE,EAAI,+BAC/DA,CACT,EAAEA,IAAkB,CAAC,CAAC,EAkBlBC,GAA+B,SAAUA,EAAiB,CAC5D,OAAAA,EAAgBA,EAAgB,0BAA+B,CAAC,EAAI,4BACpEA,EAAgBA,EAAgB,8BAAmC,CAAC,EAAI,gCACxEA,EAAgBA,EAAgB,2BAAgC,CAAC,EAAI,6BACrEA,EAAgBA,EAAgB,wBAA6B,CAAC,EAAI,0BAC3DA,CACT,EAAEA,IAAmB,CAAC,CAAC,EACnBC,GAAqC,SAAUA,EAAuB,CACxE,OAAAA,EAAsBA,EAAsB,4BAAiC,CAAC,EAAI,8BAClFA,EAAsBA,EAAsB,0BAA+B,CAAC,EAAI,4BAChFA,EAAsBA,EAAsB,wBAA6B,CAAC,EAAI,0BACvEA,CACT,EAAEA,IAAyB,CAAC,CAAC,EACzBC,GAAsC,SAAUA,EAAwB,CAC1E,OAAAA,EAAuBA,EAAuB,qCAA0C,CAAC,EAAI,uCAC7FA,EAAuBA,EAAuB,gCAAqC,CAAC,EAAI,kCACxFA,EAAuBA,EAAuB,+CAAoD,CAAC,EAAI,iDACvGA,EAAuBA,EAAuB,iCAAsC,CAAC,EAAI,mCACzFA,EAAuBA,EAAuB,mCAAwC,CAAC,EAAI,qCACpFA,CACT,EAAEA,IAA0B,CAAC,CAAC,EAC1BC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,2BAAgC,CAAC,EAAI,6BACjEA,EAAcA,EAAc,sBAA2B,CAAC,EAAI,wBAC5DA,EAAcA,EAAc,oBAAyB,CAAC,EAAI,sBACnDA,CACT,EAAEA,IAAiB,CAAC,CAAC,EACjBC,GAAqC,SAAUA,EAAuB,CACxE,OAAAA,EAAsBA,EAAsB,qCAA0C,CAAC,EAAI,uCAC3FA,EAAsBA,EAAsB,mCAAwC,CAAC,EAAI,qCACzFA,EAAsBA,EAAsB,iCAAsC,CAAC,EAAI,mCACvFA,EAAsBA,EAAsB,mCAAwC,CAAC,EAAI,qCACzFA,EAAsBA,EAAsB,kCAAuC,CAAC,EAAI,oCACxFA,EAAsBA,EAAsB,gCAAqC,CAAC,EAAI,kCACtFA,EAAsBA,EAAsB,8BAAmC,CAAC,EAAI,gCACpFA,EAAsBA,EAAsB,+BAAoC,CAAC,EAAI,iCACrFA,EAAsBA,EAAsB,qCAA0C,CAAC,EAAI,uCAC3FA,EAAsBA,EAAsB,qCAA0C,CAAC,EAAI,uCAC3FA,EAAsBA,EAAsB,iCAAsC,EAAE,EAAI,mCACxFA,EAAsBA,EAAsB,sCAA2C,EAAE,EAAI,wCAC7FA,EAAsBA,EAAsB,mCAAwC,EAAE,EAAI,qCACnFA,CACT,EAAEA,IAAyB,CAAC,CAAC,EACzBC,GAA0C,SAAUA,EAA4B,CAClF,OAAAA,EAA2BA,EAA2B,2CAAgD,CAAC,EAAI,6CAC3GA,EAA2BA,EAA2B,sCAA2C,CAAC,EAAI,wCACtGA,EAA2BA,EAA2B,sCAA2C,CAAC,EAAI,wCACtGA,EAA2BA,EAA2B,uCAA4C,CAAC,EAAI,yCACvGA,EAA2BA,EAA2B,oCAAyC,CAAC,EAAI,sCAC7FA,CACT,EAAEA,IAA8B,CAAC,CAAC,EAC9BC,GAAgC,SAAUA,EAAkB,CAC9D,OAAAA,EAAiBA,EAAiB,+BAAoC,CAAC,EAAI,iCAC3EA,EAAiBA,EAAiB,yBAA8B,CAAC,EAAI,2BACrEA,EAAiBA,EAAiB,qCAA0C,CAAC,EAAI,uCACjFA,EAAiBA,EAAiB,uBAA4B,CAAC,EAAI,yBAC5DA,CACT,EAAEA,IAAoB,CAAC,CAAC,EACpBC,GAA2B,SAAUA,EAAa,CACpD,OAAAA,EAAYA,EAAY,qBAA0B,CAAC,EAAI,uBACvDA,EAAYA,EAAY,mBAAwB,CAAC,EAAI,qBAC9CA,CACT,EAAEA,IAAe,CAAC,CAAC,EACfC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,wBAA6B,CAAC,EAAI,0BAC9DA,EAAcA,EAAc,yBAA8B,CAAC,EAAI,2BAC/DA,EAAcA,EAAc,2BAAgC,CAAC,EAAI,6BACjEA,EAAcA,EAAc,0BAA+B,CAAC,EAAI,4BAChEA,EAAcA,EAAc,wBAA6B,CAAC,EAAI,0BAC9DA,EAAcA,EAAc,0BAA+B,CAAC,EAAI,4BAChEA,EAAcA,EAAc,wBAA6B,CAAC,EAAI,0BACvDA,CACT,EAAEA,IAAiB,CAAC,CAAC,EACjBC,GAAiC,SAAUA,EAAmB,CAChE,OAAAA,EAAkBA,EAAkB,0CAA+C,CAAC,EAAI,4CACjFA,CACT,EAAEA,IAAqB,CAAC,CAAC,EACrBC,GAA2C,SAAUA,EAA6B,CACpF,OAAAA,EAA4BA,EAA4B,uCAA4C,CAAC,EAAI,yCACzGA,EAA4BA,EAA4B,2CAAgD,CAAC,EAAI,6CAC7GA,EAA4BA,EAA4B,wCAA6C,CAAC,EAAI,0CACnGA,CACT,EAAEA,IAA+B,CAAC,CAAC,EAC/BC,GAAuB,SAAUA,EAAS,CAC5C,OAAAA,EAAQA,EAAQ,aAAkB,CAAC,EAAI,eACvCA,EAAQA,EAAQ,SAAc,CAAC,EAAI,WACnCA,EAAQA,EAAQ,WAAgB,CAAC,EAAI,aACrCA,EAAQA,EAAQ,cAAmB,CAAC,EAAI,gBACxCA,EAAQA,EAAQ,kBAAuB,CAAC,EAAI,oBACrCA,CACT,EAAEA,IAAW,CAAC,CAAC,EACXC,GAAuB,SAAUA,EAAS,CAC5C,OAAAA,EAAQA,EAAQ,oBAAyB,CAAC,EAAI,sBAC9CA,EAAQA,EAAQ,gBAAqB,CAAC,EAAI,kBAC1CA,EAAQA,EAAQ,eAAoB,CAAC,EAAI,iBACzCA,EAAQA,EAAQ,cAAmB,CAAC,EAAI,gBACxCA,EAAQA,EAAQ,aAAkB,CAAC,EAAI,eAChCA,CACT,EAAEA,IAAW,CAAC,CAAC,EACXC,GAAsB,SAAUA,EAAQ,CAC1C,OAAAA,EAAOA,EAAO,eAAoB,CAAC,EAAI,iBACvCA,EAAOA,EAAO,aAAkB,CAAC,EAAI,eAC9BA,CACT,EAAEA,IAAU,CAAC,CAAC,EACVC,GAAuC,SAAUA,EAAyB,CAC5E,OAAAA,EAAwBA,EAAwB,sCAA2C,CAAC,EAAI,wCAChGA,EAAwBA,EAAwB,iCAAsC,CAAC,EAAI,mCAC3FA,EAAwBA,EAAwB,iCAAsC,CAAC,EAAI,mCAC3FA,EAAwBA,EAAwB,oCAAyC,CAAC,EAAI,sCACvFA,CACT,EAAEA,IAA2B,CAAC,CAAC,EAC3BC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,uBAA4B,CAAC,EAAI,yBAC7DA,EAAcA,EAAc,2BAAgC,CAAC,EAAI,6BACjEA,EAAcA,EAAc,wBAA6B,CAAC,EAAI,0BACvDA,CACT,EAAEA,IAAiB,CAAC,CAAC,EACjBC,GAA0B,SAAUA,EAAY,CAClD,OAAAA,EAAWA,EAAW,oBAAyB,CAAC,EAAI,sBACpDA,EAAWA,EAAW,oBAAyB,CAAC,EAAI,sBACpDA,EAAWA,EAAW,qBAA0B,CAAC,EAAI,uBAC9CA,CACT,EAAEA,IAAc,CAAC,CAAC,EACdC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,mBAAwB,CAAC,EAAI,qBACzDA,EAAcA,EAAc,qBAA0B,CAAC,EAAI,uBAC3DA,EAAcA,EAAc,sBAA2B,CAAC,EAAI,wBACrDA,CACT,EAAEA,IAAiB,CAAC,CAAC,EACjBC,GAAyB,SAAUA,EAAW,CAChD,OAAAA,EAAUA,EAAU,oBAAyB,CAAC,EAAI,sBAClDA,EAAUA,EAAU,iBAAsB,CAAC,EAAI,mBAC/CA,EAAUA,EAAU,uBAA4B,CAAC,EAAI,yBACrDA,EAAUA,EAAU,uBAA4B,CAAC,EAAI,yBAC9CA,CACT,EAAEA,IAAa,CAAC,CAAC,EACbC,GAAwB,SAAUA,EAAU,CAC9C,OAAAA,EAASA,EAAS,qBAA0B,CAAC,EAAI,uBACjDA,EAASA,EAAS,eAAoB,CAAC,EAAI,iBAC3CA,EAASA,EAAS,mBAAwB,CAAC,EAAI,qBAC/CA,EAASA,EAAS,gBAAqB,CAAC,EAAI,kBAC5CA,EAASA,EAAS,kBAAuB,CAAC,EAAI,oBACvCA,CACT,EAAEA,IAAY,CAAC,CAAC,EACZC,GAA8B,SAAUA,EAAgB,CAC1D,OAAAA,EAAeA,EAAe,wBAA6B,CAAC,EAAI,0BAChEA,EAAeA,EAAe,sBAA2B,CAAC,EAAI,wBAC9DA,EAAeA,EAAe,0BAA+B,CAAC,EAAI,4BAC3DA,CACT,EAAEA,IAAkB,CAAC,CAAC,EAyVhBC,GAAN,MAAM+K,CAAU,CACd,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EAoCMlL,GAAN,MAAMmL,CAAO,CACX,OAAO,UAAUJ,EAAO,CACtB,IAAIC,EAAI,IAAIG,EACZ,OAAAH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW7M,GAAoBM,GAAgBsM,EAAM,QAAQ,GAE7DA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAI5K,GAAY,SAAS,GAE5C6K,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMjL,GAAN,MAAMmL,CAAY,CAChB,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW7M,GAAoBK,GAAqBuM,EAAM,QAAQ,GAElEA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAI/K,GAAO,SAAS,GAEzCgL,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMhL,GAAN,MAAMmL,CAAM,CACV,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM/K,GAAN,MAAMmL,CAAY,CAChB,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEpCA,EAAM,OACRC,EAAE,KAAO,IAAI,KAAKD,EAAM,IAAI,GAE1BA,EAAM,cACRC,EAAE,YAAc7M,GAAoBI,GAAawM,EAAM,WAAW,GAEhEA,EAAM,QACRC,EAAE,MAAQ9K,GAAM,UAAU6K,EAAM,KAAK,GAEhCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EAOM9K,GAAN,MAAMmL,CAA2B,CAC/B,OAAO,UAAUR,EAAO,CACtB,IAAIC,EAAI,IAAIO,EACZ,OAAAP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM7K,GAAN,MAAMmL,CAAgC,CACpC,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EACM5K,GAAN,MAAMmL,CAA4B,CAChC,OAAO,UAAUV,EAAO,CACtB,IAAIC,EAAI,IAAIS,EACZ,OAAAT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,YACRC,EAAE,UAAYtD,GAAY,UAAUqD,EAAM,SAAS,GAEjDA,EAAM,OACRC,EAAE,KAAO,IAAI,KAAKD,EAAM,IAAI,GAE1BA,EAAM,gBACRC,EAAE,cAAgB7C,GAAc,UAAU4C,EAAM,aAAa,GAExDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACM3K,GAAN,MAAMmL,CAA6B,CACjC,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAElCA,CACT,CACF,EACM1K,GAAN,MAAMmL,CAAyB,CAC7B,OAAO,UAAUZ,EAAO,CACtB,IAAIC,EAAI,IAAIW,EACZ,OAAAX,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW1M,GAAkBU,GAAkB+L,EAAM,QAAQ,GAE7DA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMzK,GAAN,MAAMmL,CAAwB,CAC5B,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAa1M,GAAkBoB,GAAYqL,EAAM,UAAU,GAExDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMxK,GAAN,MAAMmL,CAAmC,CACvC,OAAO,UAAUd,EAAO,CACtB,IAAIC,EAAI,IAAIa,EACZ,OAAAb,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,OACRC,EAAE,KAAO,IAAI,KAAKD,EAAM,IAAI,GAEvBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACMvK,GAAN,MAAMmL,CAAiC,CACrC,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,OACRC,EAAE,KAAO,IAAI,KAAKD,EAAM,IAAI,GAE1BA,EAAM,WACRC,EAAE,SAAWvD,GAAkB,UAAUsD,EAAM,QAAQ,GAErDA,EAAM,gBACRC,EAAE,cAAgB7C,GAAc,UAAU4C,EAAM,aAAa,GAExDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMtK,GAAN,MAAMmL,CAAoB,CACxB,OAAO,UAAUhB,EAAO,CACtB,IAAIC,EAAI,IAAIe,EACZ,OAAAf,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,uBACRC,EAAE,qBAAuB,SAASD,EAAM,qBAAsB,EAAE,GAE9DA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,OACRC,EAAE,KAAO,SAASD,EAAM,KAAM,EAAE,GAE9BA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEpCA,EAAM,gBACRC,EAAE,cAAgB,SAASD,EAAM,cAAe,EAAE,GAEhDA,EAAM,aACRC,EAAE,WAAa,SAASD,EAAM,WAAY,EAAE,GAE1CA,EAAM,kBACRC,EAAE,gBAAkB,SAASD,EAAM,gBAAiB,EAAE,GAEpDA,EAAM,gBACRC,EAAE,cAAgB,SAASD,EAAM,cAAe,EAAE,GAEhDA,EAAM,qBACRC,EAAE,mBAAqB,SAASD,EAAM,mBAAoB,EAAE,GAEvDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,qBAAyB,MACvCA,EAAS,qBAA0B,KAAK,sBAEtC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EACMrK,GAAN,MAAMmL,CAAkB,CACtB,OAAO,UAAUjB,EAAO,CACtB,IAAIC,EAAI,IAAIgB,EACZ,OAAAhB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMpK,GAAN,MAAMmL,CAAkB,CACtB,OAAO,UAAUlB,EAAO,CACtB,IAAIC,EAAI,IAAIiB,EACZ,OAAAjB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY1M,GAAkBQ,GAAuBiM,EAAM,SAAS,GAEpEA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEjCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMnK,GAAN,MAAMmL,CAAsB,CAC1B,OAAO,UAAUnB,EAAO,CACtB,IAAIC,EAAI,IAAIkB,EACZ,OAAAlB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW1M,GAAkBU,GAAkB+L,EAAM,QAAQ,GAE7DA,EAAM,wBACRC,EAAE,sBAAwB,SAASD,EAAM,sBAAuB,EAAE,GAE7DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,sBAA0B,MACxCA,EAAS,sBAA2B,KAAK,uBAEvC,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMlK,GAAN,MAAMmL,CAAkB,CACtB,OAAO,UAAUpB,EAAO,CACtB,IAAIC,EAAI,IAAImB,EACZ,OAAAnB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEpCA,EAAM,OACRC,EAAE,KAAO,SAASD,EAAM,KAAM,EAAE,GAE9BA,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE9CA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEpCA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEpCA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEpCA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,cACRC,EAAE,YAAc,SAASD,EAAM,YAAa,EAAE,GAE5CA,EAAM,OACRC,EAAE,KAAO,SAASD,EAAM,KAAM,EAAE,GAE9BA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEjCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMjK,GAAN,MAAMmL,CAAY,CAChB,OAAO,UAAUrB,EAAO,CACtB,IAAIC,EAAI,IAAIoB,EACZ,OAAApB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAa1M,GAAkBoB,GAAYqL,EAAM,UAAU,GAExDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMhK,GAAN,MAAMmL,CAAoC,CACxC,OAAO,UAAUtB,EAAO,CACtB,IAAIC,EAAI,IAAIqB,EACZ,OAAArB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM/J,GAAN,MAAMmL,CAAqC,CACzC,OAAO,UAAUvB,EAAO,CACtB,IAAIC,EAAI,IAAIsB,EACZ,OAAAtB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS1M,GAAkBI,GAAiBqM,EAAM,MAAM,GAErDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM9J,GAAN,MAAMmL,CAAwC,CAC5C,OAAO,UAAUxB,EAAO,CACtB,IAAIC,EAAI,IAAIuB,EACZ,OAAAvB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM7J,GAAN,MAAMmL,CAAyC,CAC7C,OAAO,UAAUzB,EAAO,CACtB,IAAIC,EAAI,IAAIwB,EACZ,OAAAxB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS1M,GAAkBc,GAA6B2L,EAAM,MAAM,GAEjEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACM5J,GAAN,MAAMmL,CAAQ,CACZ,OAAO,UAAU1B,EAAO,CACtB,IAAIC,EAAI,IAAIyB,EACZ,OAAAzB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO1M,GAAkBW,GAAa8L,EAAM,IAAI,GAE7CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EA4CM3J,GAAN,MAAMmL,CAAsB,CAC1B,OAAO,UAAU3B,EAAO,CACtB,IAAIC,EAAI,IAAI0B,EACZ,OAAA1B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,QACRC,EAAE,MAAQ1M,GAAkBgB,GAASyL,EAAM,KAAK,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACM1J,GAAN,MAAMmL,CAAuB,CAC3B,OAAO,UAAU5B,EAAO,CACtB,IAAIC,EAAI,IAAI2B,EACZ,OAAA3B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMzJ,GAAN,MAAMmL,CAA2B,CAC/B,OAAO,UAAU7B,EAAO,CACtB,IAAIC,EAAI,IAAI4B,EACZ,OAAA5B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWxI,GAAoB,UAAUuI,EAAM,QAAQ,GAEpDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMxJ,GAAN,MAAMmL,CAAmB,CACvB,OAAO,UAAU9B,EAAO,CACtB,IAAIC,EAAI,IAAI6B,EACZ,OAAA7B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,OACRC,EAAE,KAAO1M,GAAkBK,GAAuBoM,EAAM,IAAI,GAE1DA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,iBACRC,EAAE,eAAiB,IAAI,KAAKD,EAAM,cAAc,GAE9CA,EAAM,eACRC,EAAE,aAAe,IAAI,KAAKD,EAAM,YAAY,GAEvCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAE9FA,CACT,CACF,EAkKMvJ,GAAN,MAAMmL,CAAiB,CACrB,OAAO,UAAU/B,EAAO,CACtB,IAAIC,EAAI,IAAI8B,EACZ,OAAA9B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAa1M,GAAkBoB,GAAYqL,EAAM,UAAU,GAExDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMtJ,GAAN,MAAMmL,CAAkB,CACtB,OAAO,UAAUhC,EAAO,CACtB,IAAIC,EAAI,IAAI+B,EACZ,OAAA/B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc/J,GAAY,UAAU8J,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMrJ,GAAN,MAAMmL,CAAW,CACf,OAAO,UAAUjC,EAAO,CACtB,IAAIC,EAAI,IAAIgC,EACZ,OAAAhC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMpJ,GAAN,MAAMmL,CAAkC,CACtC,OAAO,UAAUlC,EAAO,CACtB,IAAIC,EAAI,IAAIiC,EACZ,OAAAjC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EACMnJ,GAAN,MAAMmL,CAAsB,CAC1B,OAAO,UAAUnC,EAAO,CACtB,IAAIC,EAAI,IAAIkC,EACZ,OAAAlC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EAqBMlJ,GAAN,MAAMmL,CAAiB,CACrB,OAAO,UAAUpC,EAAO,CACtB,IAAIC,EAAI,IAAImC,EACZ,OAAAnC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAa1M,GAAkBoB,GAAYqL,EAAM,UAAU,GAExDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMjJ,GAAN,MAAMmL,CAAqC,CACzC,OAAO,UAAUrC,EAAO,CACtB,IAAIC,EAAI,IAAIoC,EACZ,OAAApC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,kBACRC,EAAE,gBAAkB9I,GAAyB,UAAU6I,EAAM,eAAe,GAEvEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EACMhJ,GAAN,MAAMmL,CAAyB,CAC7B,OAAO,UAAUtC,EAAO,CACtB,IAAIC,EAAI,IAAIqC,EACZ,OAAArC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACM/I,GAAN,MAAMmL,CAAyB,CAC7B,OAAO,UAAUvC,EAAO,CACtB,IAAIC,EAAI,IAAIsC,EACZ,OAAAtC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,kBACRC,EAAE,gBAAkB9I,GAAyB,UAAU6I,EAAM,eAAe,GAEvEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EACM9I,GAAN,MAAMmL,CAA2B,CAC/B,OAAO,UAAUxC,EAAO,CACtB,IAAIC,EAAI,IAAIuC,EACZ,OAAAvC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,kBACRC,EAAE,gBAAkB9I,GAAyB,UAAU6I,EAAM,eAAe,GAEvEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EACM7I,GAAN,MAAMmL,CAA0B,CAC9B,OAAO,UAAUzC,EAAO,CACtB,IAAIC,EAAI,IAAIwC,EACZ,OAAAxC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM5I,GAAN,MAAMmL,CAA6B,CACjC,OAAO,UAAU1C,EAAO,CACtB,IAAIC,EAAI,IAAIyC,EACZ,OAAAzC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM3I,GAAN,MAAMmL,CAA8B,CAClC,OAAO,UAAU3C,EAAO,CACtB,IAAIC,EAAI,IAAI0C,EACZ,OAAA1C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM1I,GAAN,MAAMmL,CAAoB,CACxB,OAAO,UAAU5C,EAAO,CACtB,IAAIC,EAAI,IAAI2C,EACZ,OAAA3C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB1M,GAAkBgB,GAASyL,EAAM,aAAa,GAE9DA,EAAM,SACRC,EAAE,OAAS1M,GAAkBwB,GAAgBiL,EAAM,MAAM,GAEvDA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEjCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,qBAAyB,MACvCA,EAAS,qBAA0B,KAAK,sBAEtC,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMzI,GAAN,MAAMmL,CAAmB,CACvB,OAAO,UAAU7C,EAAO,CACtB,IAAIC,EAAI,IAAI4C,EACZ,OAAA5C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,wBAA4B,MAC1CA,EAAS,wBAA6B,KAAK,yBAEzC,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACMxI,GAAN,MAAMmL,CAAqC,CACzC,OAAO,UAAU9C,EAAO,CACtB,IAAIC,EAAI,IAAI6C,EACZ,OAAA7C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMvI,GAAN,MAAMmL,CAA0C,CAC9C,OAAO,UAAU/C,EAAO,CACtB,IAAIC,EAAI,IAAI8C,EACZ,OAAA9C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,wBAA4B,MAC1CA,EAAS,wBAA6B,KAAK,yBAEzC,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMtI,GAAN,MAAMmL,CAA2C,CAC/C,OAAO,UAAUhD,EAAO,CACtB,IAAIC,EAAI,IAAI+C,EACZ,OAAA/C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAIzF,GAAiB,SAAS,GAE/C0F,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EACMrI,GAAN,MAAMmL,CAAkC,CACtC,OAAO,UAAUjD,EAAO,CACtB,IAAIC,EAAI,IAAIgD,EACZ,OAAAhD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ1M,GAAkBgB,GAASyL,EAAM,KAAK,GAE9CA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIkD,GAAK3P,GAAkBuB,GAAUoO,CAAC,CAAC,GAEjElD,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIkD,GAAK3P,GAAkBO,GAAeoP,CAAC,CAAC,GAElElD,EAAM,aACRC,EAAE,WAAanJ,GAAW,UAAUkJ,EAAM,UAAU,GAE/CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAExFA,CACT,CACF,EACMpI,GAAN,MAAMoL,CAAmC,CACvC,OAAO,UAAUnD,EAAO,CACtB,IAAIC,EAAI,IAAIkD,EACZ,OAAAlD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB,SAASD,EAAM,cAAe,EAAE,GAEhDA,EAAM,uBACRC,EAAE,qBAAuB,SAASD,EAAM,qBAAsB,EAAE,GAE3DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,wBAA4B,MAC1CA,EAAS,wBAA6B,KAAK,yBAEzC,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,qBAAyB,MACvCA,EAAS,qBAA0B,KAAK,sBAEnCA,CACT,CACF,EACMnI,GAAN,MAAMoL,CAAsC,CAC1C,OAAO,UAAUpD,EAAO,CACtB,IAAIC,EAAI,IAAImD,EACZ,OAAAnD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACMlI,GAAN,MAAMoL,CAAuC,CAC3C,OAAO,UAAUrD,EAAO,CACtB,IAAIC,EAAI,IAAIoD,EACZ,OAAApD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,qBACRC,EAAE,mBAAqBD,EAAM,mBAAmB,IAAIkD,GAAK3P,GAAkBe,GAAS4O,CAAC,CAAC,GAEjFjD,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EACMjI,GAAN,MAAMoL,CAA+B,CACnC,OAAO,UAAUtD,EAAO,CACtB,IAAIC,EAAI,IAAIqD,EACZ,OAAArD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAanJ,GAAW,UAAUkJ,EAAM,UAAU,GAE/CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAExFA,CACT,CACF,EACMhI,GAAN,MAAMoL,CAAgC,CACpC,OAAO,UAAUvD,EAAO,CACtB,IAAIC,EAAI,IAAIsD,EACZ,OAAAtD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQpK,GAAoB,UAAUmK,EAAM,KAAK,GAE9CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EACM/H,GAAN,MAAMoL,CAAwB,CAC5B,OAAO,UAAUxD,EAAO,CACtB,IAAIC,EAAI,IAAIuD,EACZ,OAAAvD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,OACRC,EAAE,KAAO1M,GAAkBK,GAAuBoM,EAAM,IAAI,GAE1DA,EAAM,aACRC,EAAE,WAAa1M,GAAkBiB,GAAQwL,EAAM,UAAU,GAEpDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM9H,GAAN,MAAMoL,CAAyB,CAC7B,OAAO,UAAUzD,EAAO,CACtB,IAAIC,EAAI,IAAIwD,EACZ,OAAAxD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,iBACRC,EAAE,eAAiB,IAAI,KAAKD,EAAM,cAAc,GAE9CA,EAAM,eACRC,EAAE,aAAe,IAAI,KAAKD,EAAM,YAAY,GAEvCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAE9FA,CACT,CACF,EACM7H,GAAN,MAAMoL,CAAmB,CACvB,OAAO,UAAU1D,EAAO,CACtB,IAAIC,EAAI,IAAIyD,EACZ,OAAAzD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM5H,GAAN,MAAMoL,CAAoB,CACxB,OAAO,UAAU3D,EAAO,CACtB,IAAIC,EAAI,IAAI0D,EACZ,OAAA1D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWvG,GAAmB,UAAUsG,EAAM,QAAQ,GAEnDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACM3H,GAAN,MAAMoL,CAA8B,CAClC,OAAO,UAAU5D,EAAO,CACtB,IAAIC,EAAI,IAAI2D,EACZ,OAAA3D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,OAAO,KAAKD,EAAM,QAAQ,EAAE,OAAO,CAAC6D,EAAKC,KACpDD,EAAIC,CAAC,EAAI9D,EAAM,SAAS8D,CAAC,EAClBD,GACN,CAAC,CAAC,GAEA5D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACM1H,GAAN,MAAMsL,CAA+B,CACnC,OAAO,UAAU/D,EAAO,CACtB,IAAIC,EAAI,IAAI8D,EACZ,OAAA9D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMzH,GAAN,MAAMsL,CAA4B,CAChC,OAAO,UAAUhE,EAAO,CACtB,IAAIC,EAAI,IAAI+D,EACZ,OAAA/D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAanJ,GAAW,UAAUkJ,EAAM,UAAU,GAE/CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAExFA,CACT,CACF,EACMxH,GAAN,MAAMsL,CAA6B,CACjC,OAAO,UAAUjE,EAAO,CACtB,IAAIC,EAAI,IAAIgE,EACZ,OAAAhE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAI/J,GAAkB,SAAS,GAExDgK,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMvH,GAAN,MAAMsL,CAAiB,CACrB,OAAO,UAAUlE,EAAO,CACtB,IAAIC,EAAI,IAAIiE,EACZ,OAAAjE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMtH,GAAN,MAAMsL,CAAkB,CACtB,OAAO,UAAUnE,EAAO,CACtB,IAAIC,EAAI,IAAIkE,EACZ,OAAAlE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAErCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMrH,GAAN,MAAMsL,CAAwB,CAC5B,OAAO,UAAUpE,EAAO,CACtB,IAAIC,EAAI,IAAImE,EACZ,OAAAnE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMpH,GAAN,MAAMsL,CAAyB,CAC7B,OAAO,UAAUrE,EAAO,CACtB,IAAIC,EAAI,IAAIoE,EACZ,OAAApE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWxI,GAAoB,UAAUuI,EAAM,QAAQ,GAEpDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMnH,GAAN,MAAMsL,CAAyB,CAC7B,OAAO,UAAUtE,EAAO,CACtB,IAAIC,EAAI,IAAIqE,EACZ,OAAArE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMlH,GAAN,MAAMsL,CAA0B,CAC9B,OAAO,UAAUvE,EAAO,CACtB,IAAIC,EAAI,IAAIsE,EACZ,OAAAtE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIvI,GAAoB,SAAS,GAE1DwI,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMjH,GAAN,MAAMsL,CAAoB,CACxB,OAAO,UAAUxE,EAAO,CACtB,IAAIC,EAAI,IAAIuE,EACZ,OAAAvE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMhH,GAAN,MAAMsL,CAAqB,CACzB,OAAO,UAAUzE,EAAO,CACtB,IAAIC,EAAI,IAAIwE,EACZ,OAAAxE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAI1F,GAAU,SAAS,GAE3C0F,EAAM,4BACRC,EAAE,0BAA4B,SAASD,EAAM,0BAA2B,EAAE,GAErEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,0BAA8B,MAC5CA,EAAS,0BAA+B,KAAK,2BAExCA,CACT,CACF,EACM/G,GAAN,MAAMsL,CAAyB,CAC7B,OAAO,UAAU1E,EAAO,CACtB,IAAIC,EAAI,IAAIyE,EACZ,OAAAzE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACM9G,GAAN,MAAMsL,CAA0B,CAC9B,OAAO,UAAU3E,EAAO,CACtB,IAAIC,EAAI,IAAI0E,EACZ,OAAA1E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAItG,GAAmB,SAAS,GAEzDuG,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACM7G,GAAN,MAAMsL,CAA4B,CAChC,OAAO,UAAU5E,EAAO,CACtB,IAAIC,EAAI,IAAI2E,EACZ,OAAA3E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAElCA,CACT,CACF,EACM5G,GAAN,MAAMsL,CAA6B,CACjC,OAAO,UAAU7E,EAAO,CACtB,IAAIC,EAAI,IAAI4E,EACZ,OAAA5E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,oBACRC,EAAE,kBAAoBzD,GAAwB,UAAUwD,EAAM,iBAAiB,GAE1EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAE7GA,CACT,CACF,EACM3G,GAAN,MAAMsL,CAAkC,CACtC,OAAO,UAAU9E,EAAO,CACtB,IAAIC,EAAI,IAAI6E,EACZ,OAAA7E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgBjE,GAAqD,UAAUgE,EAAM,aAAa,GAE/FC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACM1G,GAAN,MAAMsL,CAAmC,CACvC,OAAO,UAAU/E,EAAO,CACtB,IAAIC,EAAI,IAAI8E,EACZ,OAAA9E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiBhE,GAAsB,UAAU+D,EAAM,cAAc,GAErEA,EAAM,OACRC,EAAE,KAAOD,EAAM,KAAK,IAAIvD,GAAoB,SAAS,GAEhDwD,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EAmGMzG,GAAN,MAAMsL,CAAmB,CACvB,OAAO,UAAUhF,EAAO,CACtB,IAAIC,EAAI,IAAI+E,EACZ,OAAA/E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEpCA,EAAM,QACRC,EAAE,MAAQ1M,GAAkBgB,GAASyL,EAAM,KAAK,GAE9CA,EAAM,mBACRC,EAAE,iBAAmBD,EAAM,iBAAiB,IAAIhK,GAAsB,SAAS,GAE7EgK,EAAM,0BACRC,EAAE,wBAA0B,SAASD,EAAM,wBAAyB,EAAE,GAEpEA,EAAM,cACRC,EAAE,YAAc,SAASD,EAAM,YAAa,EAAE,GAE5CA,EAAM,SACRC,EAAE,OAAS1M,GAAkBuB,GAAUkL,EAAM,MAAM,GAEjDA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEpCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,wBAA4B,MAC1CA,EAAS,wBAA6B,KAAK,yBAEzC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMxG,GAAN,MAAMsL,CAAgC,CACpC,OAAO,UAAUjF,EAAO,CACtB,IAAIC,EAAI,IAAIgF,EACZ,OAAAhF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,YACRC,EAAE,UAAY1M,GAAkBe,GAAS0L,EAAM,SAAS,GAEnDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMvG,GAAN,MAAMsL,CAAiC,CACrC,OAAO,UAAUlF,EAAO,CACtB,IAAIC,EAAI,IAAIiF,EACZ,OAAAjF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMtG,GAAN,MAAMsL,CAAgC,CACpC,OAAO,UAAUnF,EAAO,CACtB,IAAIC,EAAI,IAAIkF,EACZ,OAAAlF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EACMrG,GAAN,MAAMsL,CAAiC,CACrC,OAAO,UAAUpF,EAAO,CACtB,IAAIC,EAAI,IAAImF,EACZ,OAAAnF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMpG,GAAN,MAAMsL,CAAuC,CAC3C,OAAO,UAAUrF,EAAO,CACtB,IAAIC,EAAI,IAAIoF,EACZ,OAAApF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB,IAAI,KAAKD,EAAM,aAAa,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMnG,GAAN,MAAMsL,CAAyC,CAC7C,OAAO,UAAUtF,EAAO,CACtB,IAAIC,EAAI,IAAIqF,EACZ,OAAArF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMlG,GAAN,MAAMsL,CAA0C,CAC9C,OAAO,UAAUvF,EAAO,CACtB,IAAIC,EAAI,IAAIsF,EACZ,OAAAtF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,yBACRC,EAAE,uBAAyBD,EAAM,uBAAuB,IAAIzD,GAAsB,SAAS,GAEtF0D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,uBAA2B,KAAe,KAAK,yBAA2B,OACxFA,EAAS,uBAA4B,cAAe,KAAK,uBAAyB,KAAK,uBAAuB,UAAU,EAAI,KAAK,wBAE5HA,CACT,CACF,EACMjG,GAAN,MAAMsL,CAAyC,CAC7C,OAAO,UAAUxF,EAAO,CACtB,IAAIC,EAAI,IAAIuF,EACZ,OAAAvF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMhG,GAAN,MAAMsL,CAAsC,CAC1C,OAAO,UAAUzF,EAAO,CACtB,IAAIC,EAAI,IAAIwF,EACZ,OAAAxF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB,IAAI,KAAKD,EAAM,aAAa,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACM/F,GAAN,MAAMsL,CAAuC,CAC3C,OAAO,UAAU1F,EAAO,CACtB,IAAIC,EAAI,IAAIyF,EACZ,OAAAzF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAElCA,CACT,CACF,EACM9F,GAAN,MAAMsL,CAA2C,CAC/C,OAAO,UAAU3F,EAAO,CACtB,IAAIC,EAAI,IAAI0F,EACZ,OAAA1F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS1M,GAAkBkB,GAAyBuL,EAAM,MAAM,GAE7DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACM7F,GAAN,MAAMsL,CAAU,CACd,OAAO,UAAU5F,EAAO,CACtB,IAAIC,EAAI,IAAI2F,EACZ,OAAA3F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc,SAASD,EAAM,YAAa,EAAE,GAE5CA,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM5F,GAAN,MAAMsL,CAAiB,CACrB,OAAO,UAAU7F,EAAO,CACtB,IAAIC,EAAI,IAAI4F,EACZ,OAAA5F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACM3F,GAAN,MAAMsL,CAAkC,CACtC,OAAO,UAAU9F,EAAO,CACtB,IAAIC,EAAI,IAAI6F,EACZ,OAAA7F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,QACRC,EAAE,MAAQ1M,GAAkBgB,GAASyL,EAAM,KAAK,GAE9CA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIkD,GAAK3P,GAAkBuB,GAAUoO,CAAC,CAAC,GAEjElD,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIkD,GAAK3P,GAAkBO,GAAeoP,CAAC,CAAC,GAElElD,EAAM,gBACRC,EAAE,cAAgBlE,GAAoB,UAAUiE,EAAM,aAAa,GAEjEA,EAAM,oBACRC,EAAE,kBAAoB1M,GAAkBa,GAAmB4L,EAAM,iBAAiB,GAEhFA,EAAM,cACRC,EAAE,YAAc5C,GAAY,UAAU2C,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACM1F,GAAN,MAAMsL,CAAmC,CACvC,OAAO,UAAU/F,EAAO,CACtB,IAAIC,EAAI,IAAI8F,EACZ,OAAA9F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAIpF,GAAwB,SAAS,GAEzDoF,EAAM,iBACRC,EAAE,eAAiBhE,GAAsB,UAAU+D,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMzF,GAAN,MAAMsL,CAAyB,CAC7B,OAAO,UAAUhG,EAAO,CACtB,IAAIC,EAAI,IAAI+F,EACZ,OAAA/F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ1M,GAAkBgB,GAASyL,EAAM,KAAK,GAE9CA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIkD,GAAK3P,GAAkBuB,GAAUoO,CAAC,CAAC,GAEjElD,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIkD,GAAK3P,GAAkBO,GAAeoP,CAAC,CAAC,GAElElD,EAAM,gBACRC,EAAE,cAAgBlE,GAAoB,UAAUiE,EAAM,aAAa,GAEjEA,EAAM,oBACRC,EAAE,kBAAoB1M,GAAkBa,GAAmB4L,EAAM,iBAAiB,GAE7EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMxF,GAAN,MAAMsL,CAA0B,CAC9B,OAAO,UAAUjG,EAAO,CACtB,IAAIC,EAAI,IAAIgG,EACZ,OAAAhG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAIpF,GAAwB,SAAS,GAEzDoF,EAAM,iBACRC,EAAE,eAAiBhE,GAAsB,UAAU+D,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMvF,GAAN,MAAMsL,CAAwB,CAC5B,OAAO,UAAUlG,EAAO,CACtB,IAAIC,EAAI,IAAIiG,EACZ,OAAAjG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB,SAASD,EAAM,cAAe,EAAE,GAEhDA,EAAM,iBACRC,EAAE,eAAiB,SAASD,EAAM,eAAgB,EAAE,GAElDA,EAAM,kBACRC,EAAE,gBAAkB,SAASD,EAAM,gBAAiB,EAAE,GAEpDA,EAAM,SACRC,EAAE,OAAS1M,GAAkBuB,GAAUkL,EAAM,MAAM,GAEjDA,EAAM,QACRC,EAAE,MAAQ1M,GAAkBO,GAAekM,EAAM,KAAK,GAEpDA,EAAM,cACRC,EAAE,YAAc,SAASD,EAAM,YAAa,EAAE,GAE5CA,EAAM,OACRC,EAAE,KAAOD,EAAM,KAAK,IAAInF,GAAuB,SAAS,GAEtDmF,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMtF,GAAN,MAAMsL,CAAuB,CAC3B,OAAO,UAAUnG,EAAO,CACtB,IAAIC,EAAI,IAAIkG,EACZ,OAAAlG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMrF,GAAN,MAAMsL,CAAqB,CACzB,OAAO,UAAUpG,EAAO,CACtB,IAAIC,EAAI,IAAImG,EACZ,OAAAnG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIkD,GAAK3P,GAAkBgB,GAAS2O,CAAC,CAAC,GAE9DlD,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIkD,GAAK3P,GAAkBuB,GAAUoO,CAAC,CAAC,GAEjElD,EAAM,gBACRC,EAAE,cAAgBlE,GAAoB,UAAUiE,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMpF,GAAN,MAAMsL,CAAsB,CAC1B,OAAO,UAAUrG,EAAO,CACtB,IAAIC,EAAI,IAAIoG,EACZ,OAAApG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAItG,GAAmB,SAAS,GAE5DsG,EAAM,iBACRC,EAAE,eAAiBhE,GAAsB,UAAU+D,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMnF,GAAN,MAAMsL,CAAuB,CAC3B,OAAO,UAAUtG,EAAO,CACtB,IAAIC,EAAI,IAAIqG,EACZ,OAAArG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIkD,GAAK3P,GAAkBuB,GAAUoO,CAAC,CAAC,GAEjElD,EAAM,gBACRC,EAAE,cAAgBlE,GAAoB,UAAUiE,EAAM,aAAa,GAEjEA,EAAM,cACRC,EAAE,YAAc5C,GAAY,UAAU2C,EAAM,WAAW,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMlF,GAAN,MAAMsL,CAAwB,CAC5B,OAAO,UAAUvG,EAAO,CACtB,IAAIC,EAAI,IAAIsG,EACZ,OAAAtG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAItG,GAAmB,SAAS,GAE5DsG,EAAM,WACRC,EAAE,SAAWhE,GAAsB,UAAU+D,EAAM,QAAQ,GAEtDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMjF,GAAN,MAAMsL,CAA2B,CAC/B,OAAO,UAAUxG,EAAO,CACtB,IAAIC,EAAI,IAAIuG,EACZ,OAAAvG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMhF,GAAN,MAAMsL,CAA4B,CAChC,OAAO,UAAUzG,EAAO,CACtB,IAAIC,EAAI,IAAIwG,EACZ,OAAAxG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACM/E,GAAN,MAAMsL,CAA8B,CAClC,OAAO,UAAU1G,EAAO,CACtB,IAAIC,EAAI,IAAIyG,EACZ,OAAAzG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM9E,GAAN,MAAMsL,CAA+B,CACnC,OAAO,UAAU3G,EAAO,CACtB,IAAIC,EAAI,IAAI0G,EACZ,OAAA1G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,oBACRC,EAAE,kBAAoBD,EAAM,kBAAkB,IAAIxD,GAAwB,SAAS,GAE9EyD,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAE7GA,CACT,CACF,EA2DM7E,GAAN,MAAMsL,CAAgC,CACpC,OAAO,UAAU5G,EAAO,CACtB,IAAIC,EAAI,IAAI2G,EACZ,OAAA3G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIkD,GAAK3P,GAAkBgB,GAAS2O,CAAC,CAAC,GAE9DlD,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIkD,GAAK3P,GAAkBuB,GAAUoO,CAAC,CAAC,GAEjElD,EAAM,gBACRC,EAAE,cAAgBlE,GAAoB,UAAUiE,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACM5E,GAAN,MAAMsL,CAA2B,CAC/B,OAAO,UAAU7G,EAAO,CACtB,IAAIC,EAAI,IAAI4G,EACZ,OAAA5G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM3E,GAAN,MAAMsL,CAA4B,CAChC,OAAO,UAAU9G,EAAO,CACtB,IAAIC,EAAI,IAAI6G,EACZ,OAAA7G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAeD,EAAM,aAAa,IAAI9J,GAAY,SAAS,GAExD+J,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACM1E,GAAN,MAAMsL,CAAyB,CAC7B,OAAO,UAAU/G,EAAO,CACtB,IAAIC,EAAI,IAAI8G,EACZ,OAAA9G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAa1M,GAAkBoB,GAAYqL,EAAM,UAAU,GAE3DA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMzE,GAAN,MAAMsL,CAA0B,CAC9B,OAAO,UAAUhH,EAAO,CACtB,IAAIC,EAAI,IAAI+G,EACZ,OAAA/G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAeD,EAAM,aAAa,IAAI9J,GAAY,SAAS,GAExD+J,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMxE,GAAN,MAAMsL,CAA+B,CACnC,OAAO,UAAUjH,EAAO,CACtB,IAAIC,EAAI,IAAIgH,EACZ,OAAAhH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,YACRC,EAAE,UAAYtD,GAAY,UAAUqD,EAAM,SAAS,GAE9CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMvE,GAAN,MAAMsL,CAAgC,CACpC,OAAO,UAAUlH,EAAO,CACtB,IAAIC,EAAI,IAAIiH,EACZ,OAAAjH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,oBACRC,EAAE,kBAAoBzD,GAAwB,UAAUwD,EAAM,iBAAiB,GAE1EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAE7GA,CACT,CACF,EACMtE,GAAN,MAAMsL,CAAgC,CACpC,OAAO,UAAUnH,EAAO,CACtB,IAAIC,EAAI,IAAIkH,EACZ,OAAAlH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,aACRC,EAAE,WAAaD,EAAM,WAAW,IAAIrD,GAAY,SAAS,GAEpDsD,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMrE,GAAN,MAAMsL,CAAiC,CACrC,OAAO,UAAUpH,EAAO,CACtB,IAAIC,EAAI,IAAImH,EACZ,OAAAnH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,qBACRC,EAAE,mBAAqBD,EAAM,mBAAmB,IAAIxD,GAAwB,SAAS,GAEhFyD,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,mBAAuB,KAAe,KAAK,qBAAuB,OAChFA,EAAS,mBAAwB,cAAe,KAAK,mBAAqB,KAAK,mBAAmB,UAAU,EAAI,KAAK,oBAEhHA,CACT,CACF,EACMpE,GAAN,MAAMsL,CAAoB,CACxB,OAAO,UAAUrH,EAAO,CACtB,IAAIC,EAAI,IAAIoH,EACZ,OAAApH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMnE,GAAN,MAAMsL,CAAqD,CACzD,OAAO,UAAUtH,EAAO,CACtB,IAAIC,EAAI,IAAIqH,EACZ,OAAArH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMlE,GAAN,MAAMsL,CAAsB,CAC1B,OAAO,UAAUvH,EAAO,CACtB,IAAIC,EAAI,IAAIsH,EACZ,OAAAtH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACMjE,GAAN,MAAMsL,CAAqB,CACzB,OAAO,UAAUxH,EAAO,CACtB,IAAIC,EAAI,IAAIuH,EACZ,OAAAvH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMhE,GAAN,MAAMsL,CAA8B,CAClC,OAAO,UAAUzH,EAAO,CACtB,IAAIC,EAAI,IAAIwH,EACZ,OAAAxH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAElCA,CACT,CACF,EACM/D,GAAN,MAAMsL,CAA4B,CAChC,OAAO,UAAU1H,EAAO,CACtB,IAAIC,EAAI,IAAIyH,EACZ,OAAAzH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACM9D,GAAN,MAAMsL,CAA6B,CACjC,OAAO,UAAU3H,EAAO,CACtB,IAAIC,EAAI,IAAI0H,EACZ,OAAA1H,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACM7D,GAAN,MAAMsL,CAA6B,CACjC,OAAO,UAAU5H,EAAO,CACtB,IAAIC,EAAI,IAAI2H,EACZ,OAAA3H,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACM5D,GAAN,MAAMsL,CAAsB,CAC1B,OAAO,UAAU7H,EAAO,CACtB,IAAIC,EAAI,IAAI4H,EACZ,OAAA5H,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,oBACRC,EAAE,kBAAoBzD,GAAwB,UAAUwD,EAAM,iBAAiB,GAE7EA,EAAM,YACRC,EAAE,UAAYnK,GAAkB,UAAUkK,EAAM,SAAS,GAEpDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EA2EM3D,GAAN,MAAMsL,CAAwB,CAC5B,OAAO,UAAU9H,EAAO,CACtB,IAAIC,EAAI,IAAI6H,EACZ,OAAA7H,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEpCA,EAAM,SACRC,EAAE,OAAS1M,GAAkBM,GAAwBmM,EAAM,MAAM,GAE/DA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIlD,GAA+B,SAAS,GAEtEkD,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE9CA,EAAM,iBACRC,EAAE,eAAiB,IAAI,KAAKD,EAAM,cAAc,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACM1D,GAAN,MAAMsL,CAAoB,CACxB,OAAO,UAAU/H,EAAO,CACtB,IAAIC,EAAI,IAAI8H,EACZ,OAAA9H,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY3D,GAA6B,UAAU0D,EAAM,SAAS,GAElEA,EAAM,UACRC,EAAE,QAAU5K,GAA2B,UAAU2K,EAAM,OAAO,GAE5DA,EAAM,aACRC,EAAE,WAAa,IAAI,KAAKD,EAAM,UAAU,GAEtCA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMzD,GAAN,MAAMsL,CAAkB,CACtB,OAAO,UAAUhI,EAAO,CACtB,IAAIC,EAAI,IAAI+H,EACZ,OAAA/H,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB/K,GAAY,UAAU8K,EAAM,aAAa,GAEtDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMxD,GAAN,MAAMsL,CAAY,CAChB,OAAO,UAAUjI,EAAO,CACtB,IAAIC,EAAI,IAAIgI,EACZ,OAAAhI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO1M,GAAkBmB,GAAesL,EAAM,IAAI,GAElDA,EAAM,UACRC,EAAE,QAAU1J,GAAQ,UAAUyJ,EAAM,OAAO,GAEtCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMvD,GAAN,MAAMsL,CAA6B,CACjC,OAAO,UAAUlI,EAAO,CACtB,IAAIC,EAAI,IAAIiI,EACZ,OAAAjI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EA4CMtD,GAAN,MAAMsL,CAA+B,CACnC,OAAO,UAAUnI,EAAO,CACtB,IAAIC,EAAI,IAAIkI,EACZ,OAAAlI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAElCA,CACT,CACF,EACMrD,GAAN,MAAMsL,CAA+B,CACnC,OAAO,UAAUpI,EAAO,CACtB,IAAIC,EAAI,IAAImI,EACZ,OAAAnI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEpCA,EAAM,mBACRC,EAAE,iBAAmB1M,GAAkBU,GAAkB+L,EAAM,gBAAgB,GAE7EA,EAAM,gBACRC,EAAE,cAAgB,IAAI,KAAKD,EAAM,aAAa,GAE5CA,EAAM,WACRC,EAAE,SAAW,IAAI,KAAKD,EAAM,QAAQ,GAElCA,EAAM,wBACRC,EAAE,sBAAwB,SAASD,EAAM,sBAAuB,EAAE,GAEhEA,EAAM,aACRC,EAAE,WAAa1M,GAAkBS,GAA4BgM,EAAM,UAAU,GAE3EA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIjK,GAAkB,SAAS,GAElDkK,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,sBAA0B,MACxCA,EAAS,sBAA2B,KAAK,uBAEvC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACMpD,GAAN,MAAMsL,CAAiC,CACrC,OAAO,UAAUrI,EAAO,CACtB,IAAIC,EAAI,IAAIoI,EACZ,OAAApI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,WACRC,EAAE,SAAW,OAAO,KAAKD,EAAM,QAAQ,EAAE,OAAO,CAAC6D,EAAKC,KACpDD,EAAIC,CAAC,EAAI9D,EAAM,SAAS8D,CAAC,EAClBD,GACN,CAAC,CAAC,GAEA5D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMnD,GAAN,MAAMsL,CAAkC,CACtC,OAAO,UAAUtI,EAAO,CACtB,IAAIC,EAAI,IAAIqI,EACZ,OAAArI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMlD,GAAN,MAAMsL,CAAwB,CAC5B,OAAO,UAAUvI,EAAO,CACtB,IAAIC,EAAI,IAAIsI,EACZ,OAAAtI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACMjD,GAAN,MAAMsL,CAAsC,CAC1C,OAAO,UAAUxI,EAAO,CACtB,IAAIC,EAAI,IAAIuI,EACZ,OAAAvI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,wBAA4B,MAC1CA,EAAS,wBAA6B,KAAK,yBAEtCA,CACT,CACF,EACMhD,GAAN,MAAMsL,CAAO,CACX,OAAO,UAAUzI,EAAO,CACtB,IAAIC,EAAI,IAAIwI,EACZ,OAAAxI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO1M,GAAkBoB,GAAYqL,EAAM,IAAI,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACM/C,GAAN,MAAMsL,CAAc,CAClB,OAAO,UAAU1I,EAAO,CACtB,IAAIC,EAAI,IAAIyI,EACZ,OAAAzI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,4BAAgC,MAC9CA,EAAS,4BAAiC,KAAK,6BAE1CA,CACT,CACF,EACM9C,GAAN,MAAMsL,CAAY,CAChB,OAAO,UAAU3I,EAAO,CACtB,IAAIC,EAAI,IAAI0I,EACZ,OAAA1I,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ1M,GAAkBsB,GAAWmL,EAAM,KAAK,GAEhDA,EAAM,YACRC,EAAE,UAAY1M,GAAkBqB,GAAeoL,EAAM,SAAS,GAEzDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EA+CM7C,GAAN,MAAMsL,CAAiB,CACrB,OAAO,UAAU5I,EAAO,CACtB,IAAIC,EAAI,IAAI2I,EACZ,OAAA3I,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM5C,GAAN,MAAMsL,CAAuB,CAC3B,OAAO,UAAU7I,EAAO,CACtB,IAAIC,EAAI,IAAI4I,EACZ,OAAA5I,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM3C,GAAN,MAAMsL,CAA0B,CAC9B,OAAO,UAAU9I,EAAO,CACtB,IAAIC,EAAI,IAAI6I,EACZ,OAAA7I,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACM1C,GAAN,MAAMsL,CAAoB,CACxB,OAAO,UAAU/I,EAAO,CACtB,IAAIC,EAAI,IAAI8I,EACZ,OAAA9I,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,sBACRC,EAAE,oBAAsBD,EAAM,oBAAoB,IAAIkD,GAAK3P,GAAkBY,GAAe+O,CAAC,CAAC,GAE5FlD,EAAM,2BACRC,EAAE,yBAA2B,SAASD,EAAM,yBAA0B,EAAE,GAEtEA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,sBAA0B,MACxCA,EAAS,sBAA2B,KAAK,uBAEvC,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,gCAAoC,MAClDA,EAAS,gCAAqC,KAAK,iCAEjD,OAAO,KAAK,yBAA6B,MAC3CA,EAAS,yBAA8B,KAAK,0BAE1C,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EACMzC,GAAN,MAAMsL,CAAqB,CACzB,OAAO,UAAUhJ,EAAO,CACtB,IAAIC,EAAI,IAAI+I,EACZ,OAAA/I,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAErCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMxC,GAAN,MAAMsL,CAA2B,CAC/B,OAAO,UAAUjJ,EAAO,CACtB,IAAIC,EAAI,IAAIgJ,EACZ,OAAAhJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EACMvC,GAAN,MAAMsL,CAAwB,CAC5B,OAAO,UAAUlJ,EAAO,CACtB,IAAIC,EAAI,IAAIiJ,EACZ,OAAAjJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,OACRC,EAAE,KAAO1M,GAAkBK,GAAuBoM,EAAM,IAAI,GAE1DA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EA0EMtC,GAAN,MAAMsL,CAA4B,CAChC,OAAO,UAAUnJ,EAAO,CACtB,IAAIC,EAAI,IAAIkJ,EACZ,OAAAlJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEtCA,EAAM,uBACRC,EAAE,qBAAuB,SAASD,EAAM,qBAAsB,EAAE,GAE9DA,EAAM,YACRC,EAAE,UAAYjL,GAAU,UAAUgL,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,qBAAyB,MACvCA,EAAS,qBAA0B,KAAK,sBAEtC,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMrC,GAAN,MAAMsL,CAAsB,CAC1B,OAAO,UAAUpJ,EAAO,CACtB,IAAIC,EAAI,IAAImJ,EACZ,OAAAnJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMpC,GAAN,MAAMsL,CAAsB,CAC1B,OAAO,UAAUrJ,EAAO,CACtB,IAAIC,EAAI,IAAIoJ,EACZ,OAAApJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ1M,GAAkBgB,GAASyL,EAAM,KAAK,GAE9CA,EAAM,SACRC,EAAE,OAAS1M,GAAkBuB,GAAUkL,EAAM,MAAM,GAEjDA,EAAM,mBACRC,EAAE,iBAAmBD,EAAM,iBAAiB,IAAIhK,GAAsB,SAAS,GAE7EgK,EAAM,0BACRC,EAAE,wBAA0B,SAASD,EAAM,wBAAyB,EAAE,GAEpEA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEpCA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEpCA,EAAM,YACRC,EAAE,UAAYjL,GAAU,UAAUgL,EAAM,SAAS,GAE/CA,EAAM,SACRC,EAAE,OAAS9C,GAAO,UAAU6C,EAAM,MAAM,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,wBAA4B,MAC1CA,EAAS,wBAA6B,KAAK,yBAEzC,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACMnC,GAAN,MAAMsL,CAAoB,CACxB,OAAO,UAAUtJ,EAAO,CACtB,IAAIC,EAAI,IAAIqJ,EACZ,OAAArJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,sBACRC,EAAE,oBAAsBD,EAAM,oBAAoB,IAAIkD,GAAK3P,GAAkBY,GAAe+O,CAAC,CAAC,GAE5FlD,EAAM,2BACRC,EAAE,yBAA2B,SAASD,EAAM,yBAA0B,EAAE,GAEnEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,sBAA0B,MACxCA,EAAS,sBAA2B,KAAK,uBAEvC,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,gCAAoC,MAClDA,EAAS,gCAAqC,KAAK,iCAEjD,OAAO,KAAK,yBAA6B,MAC3CA,EAAS,yBAA8B,KAAK,0BAEvCA,CACT,CACF,EA6CMlC,GAAN,MAAMsL,CAA+B,CACnC,OAAO,UAAUvJ,EAAO,CACtB,IAAIC,EAAI,IAAIsJ,EACZ,OAAAtJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEpCA,EAAM,SACRC,EAAE,OAAS1M,GAAkBM,GAAwBmM,EAAM,MAAM,GAE/DA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIlD,GAA+B,SAAS,GAEtEkD,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE9CA,EAAM,iBACRC,EAAE,eAAiB,IAAI,KAAKD,EAAM,cAAc,GAE9CA,EAAM,YACRC,EAAE,UAAYjL,GAAU,UAAUgL,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAsCMjC,KAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,IAAU,CACd,MAAS,mCACT,KAAQ,GACR,KAAQ,+BACR,KAAQ,+BACR,WAAc,8BAChB,EACIC,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,IAAQD,IAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6BoL,EAAmB,CACjE,OAAO,IAAKA,GAAqBpL,EACnC,EACAA,EAAY,WAA0BqL,GAAmB,CACvD,MAAOrL,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,KAAsC,IAAM,CAC9C,MAAMA,CAAsB,CAC1B,aAAc,CACZ,KAAK,YAAcqL,EAAOtL,EAAW,EACrC,KAAK,KAAOsL,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,yBAAyBC,EAAG,CAC1B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvU,GAAgCuU,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qDAAsDC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GACzG,KAAK,WAAW,GADyF,CAE5G,QAAS,UACX,EAAC,CACH,CACA,gBAAgBH,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhQ,GAAgCgQ,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQpQ,GAAiC,UAAUoQ,CAAI,CAAC,CAAC,CAC5L,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9S,GAAkC8S,CAAC,EACzE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8CAA+CC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAClG,KAAK,WAAW,GADkF,CAErG,QAAS,UACX,EAAC,CACH,CACA,gBAAgBH,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlQ,GAAgCkQ,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQtQ,GAAiC,UAAUsQ,CAAI,CAAC,CAAC,CAC5L,CACF,CACA,OAAA7L,EAAsB,UAAO,SAAuCmL,EAAmB,CACrF,OAAO,IAAKA,GAAqBnL,EACnC,EACAA,EAAsB,WAA0BoL,GAAmB,CACjE,MAAOpL,EACP,QAASA,EAAsB,UAC/B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,KAAyC,IAAM,CACjD,MAAMA,CAAyB,CAC7B,aAAc,CACZ,KAAK,YAAcoL,EAAOtL,EAAW,EACrC,KAAK,KAAOsL,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,aAAaC,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7L,GAAoB6L,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAChG,KAAK,WAAW,GADgF,CAEnG,QAAS,UACX,EAAC,CACH,CACA,UAAUH,EAAG,CACX,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjR,GAAiBiR,CAAC,EACxD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yCAA0CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQrR,GAAkB,UAAUqR,CAAI,CAAC,CAAC,CAC1K,CACA,aAAaL,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpM,GAAoBoM,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQxM,GAAqB,UAAUwM,CAAI,CAAC,CAAC,CAChL,CACF,CACA,OAAA5L,EAAyB,UAAO,SAA0CkL,EAAmB,CAC3F,OAAO,IAAKA,GAAqBlL,EACnC,EACAA,EAAyB,WAA0BmL,GAAmB,CACpE,MAAOnL,EACP,QAASA,EAAyB,UAClC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,KAAwC,IAAM,CAChD,MAAMA,CAAwB,CAC5B,aAAc,CACZ,KAAK,YAAcmL,EAAOtL,EAAW,EACrC,KAAK,KAAOsL,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,iBAAiBC,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzR,GAAwByR,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ7R,GAAyB,UAAU6R,CAAI,CAAC,CAAC,CACvL,CACA,YAAYL,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlT,GAAmBkT,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC9F,KAAK,WAAW,GAD8E,CAEjG,QAAS,UACX,EAAC,CACH,CACA,iBAAiBH,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjM,GAAwBiM,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GACnG,KAAK,WAAW,GADmF,CAEtG,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAzL,EAAwB,UAAO,SAAyCiL,EAAmB,CACzF,OAAO,IAAKA,GAAqBjL,EACnC,EACAA,EAAwB,WAA0BkL,GAAmB,CACnE,MAAOlL,EACP,QAASA,EAAwB,UACjC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,KAAwC,IAAM,CAChD,MAAMA,CAAwB,CAC5B,aAAc,CACZ,KAAK,YAAckL,EAAOtL,EAAW,EACrC,KAAK,KAAOsL,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,2BAA2BC,EAAG,CAC5B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/R,GAAkC+R,CAAC,EACzE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yDAA0DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQnS,GAAmC,UAAUmS,CAAI,CAAC,CAAC,CAC3M,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInP,GAAyBmP,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gDAAiDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQvP,GAA0B,UAAUuP,CAAI,CAAC,CAAC,CACzL,CACA,wBAAwBL,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3R,GAA+B2R,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sDAAuDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ/R,GAAgC,UAAU+R,CAAI,CAAC,CAAC,CACrM,CACA,aAAaL,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3Q,GAAoB2Q,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2CAA4CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ/Q,GAAqB,UAAU+Q,CAAI,CAAC,CAAC,CAC/K,CACA,2BAA2BL,EAAG,CAC5B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrQ,GAAkCqQ,CAAC,EACzE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yDAA0DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQzQ,GAAmC,UAAUyQ,CAAI,CAAC,CAAC,CAC3M,CACA,qBAAqBL,EAAG,CACtB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInR,GAA4BmR,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mDAAoDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQvR,GAA6B,UAAUuR,CAAI,CAAC,CAAC,CAC/L,CACA,8BAA8BL,EAAG,CAC/B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlS,GAAqCkS,CAAC,EAC5E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4DAA6DC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAChH,KAAK,WAAW,GADgG,CAEnH,QAAS,UACX,EAAC,CACH,CACA,2BAA2BH,EAAG,CAC5B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrP,GAAkCqP,CAAC,EACzE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yDAA0DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQzP,GAAmC,UAAUyP,CAAI,CAAC,CAAC,CAC3M,CACF,CACA,OAAA1L,EAAwB,UAAO,SAAyCgL,EAAmB,CACzF,OAAO,IAAKA,GAAqBhL,EACnC,EACAA,EAAwB,WAA0BiL,GAAmB,CACnE,MAAOjL,EACP,QAASA,EAAwB,UACjC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,KAA0C,IAAM,CAClD,MAAMA,CAA0B,CAC9B,aAAc,CACZ,KAAK,YAAciL,EAAOtL,EAAW,EACrC,KAAK,KAAOsL,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,OAAOC,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjT,GAAiBiT,CAAC,EACxD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uCAAwCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQrT,GAAkB,UAAUqT,CAAI,CAAC,CAAC,CACxK,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpO,GAAyBoO,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kDAAmDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQxO,GAA0B,UAAUwO,CAAI,CAAC,CAAC,CAC3L,CACA,iBAAiBL,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInU,GAAwBmU,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iDAAkDC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GACrG,KAAK,WAAW,GADqF,CAExG,QAAS,UACX,EAAC,CACH,CACA,sBAAsBH,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjN,GAA6BiN,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sDAAuDC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC1G,KAAK,WAAW,GAD0F,CAE7G,QAAS,UACX,EAAC,CACH,CACA,oBAAoBH,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItO,GAA2BsO,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ1O,GAA4B,UAAU0O,CAAI,CAAC,CAAC,CAC/L,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5S,GAAiB4S,CAAC,EACxD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uCAAwCC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC3F,KAAK,WAAW,GAD2E,CAE9F,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAvL,EAA0B,UAAO,SAA2C+K,EAAmB,CAC7F,OAAO,IAAKA,GAAqB/K,EACnC,EACAA,EAA0B,WAA0BgL,GAAmB,CACrE,MAAOhL,EACP,QAASA,EAA0B,UACnC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,KAAoC,IAAM,CAC5C,MAAMA,CAAoB,CACxB,aAAc,CACZ,KAAK,YAAcgL,EAAOtL,EAAW,EACrC,KAAK,KAAOsL,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,eAAeC,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7S,GAAsB6S,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yCAA0CC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC7F,KAAK,WAAW,GAD6E,CAEhG,QAAS,UACX,EAAC,CACH,CACA,eAAeH,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9L,GAAsB8L,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yCAA0CC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC7F,KAAK,WAAW,GAD6E,CAEhG,QAAS,UACX,EAAC,CACH,CACA,mBAAmBH,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrM,GAA0BqM,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6CAA8CC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GACjG,KAAK,WAAW,GADiF,CAEpG,QAAS,UACX,EAAC,CACH,CACA,cAAcH,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/O,GAAqB+O,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wCAAyCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQnP,GAAsB,UAAUmP,CAAI,CAAC,CAAC,CAC7K,CACA,yBAAyBL,EAAG,CAC1B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvO,GAAgCuO,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mDAAoDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQnP,GAAsB,UAAUmP,CAAI,CAAC,CAAC,CACxL,CACA,YAAYL,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvR,GAAmBuR,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sCAAuCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ3R,GAAoB,UAAU2R,CAAI,CAAC,CAAC,CACzK,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzQ,GAAyByQ,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ7Q,GAA0B,UAAU6Q,CAAI,CAAC,CAAC,CACrL,CACA,2BAA2BL,EAAG,CAC5B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItS,GAA6BsS,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qDAAsDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ1S,GAA8B,UAAU0S,CAAI,CAAC,CAAC,CAClM,CACA,iCAAiCL,EAAG,CAClC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxT,GAAwCwT,CAAC,EAC/E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2DAA4DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ5T,GAAyC,UAAU4T,CAAI,CAAC,CAAC,CACnN,CACA,uBAAuBL,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzS,GAAyByS,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iDAAkDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ5S,GAA0B,UAAU4S,CAAI,CAAC,CAAC,CAC1L,CACA,yBAAyBL,EAAG,CAC1B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxS,GAA2BwS,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mDAAoDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ5S,GAA0B,UAAU4S,CAAI,CAAC,CAAC,CAC5L,CACA,6BAA6BL,EAAG,CAC9B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1T,GAAoC0T,CAAC,EAC3E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uDAAwDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ9T,GAAqC,UAAU8T,CAAI,CAAC,CAAC,CAC3M,CACA,8BAA8BL,EAAG,CAC/B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3S,GAAqC2S,CAAC,EAC5E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wDAAyDC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC5G,KAAK,WAAW,GAD4F,CAE/G,QAAS,UACX,EAAC,CACH,CACA,+BAA+BH,EAAG,CAChC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3M,GAAsC2M,CAAC,EAC7E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yDAA0DC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC7G,KAAK,WAAW,GAD6F,CAEhH,QAAS,UACX,EAAC,CACH,CACA,YAAYH,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInS,GAAmBmS,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sCAAuCC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC1F,KAAK,WAAW,GAD0E,CAE7F,QAAS,UACX,EAAC,CACH,CACA,eAAeH,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrT,GAAsBqT,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yCAA0CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQzT,GAAuB,UAAUyT,CAAI,CAAC,CAAC,CAC/K,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpU,GAAyBoU,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ5M,GAAiB,UAAU4M,CAAI,CAAC,CAAC,CAC5K,CACA,uBAAuBL,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrR,GAA8BqR,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iDAAkDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQzR,GAA+B,UAAUyR,CAAI,CAAC,CAAC,CAC/L,CACA,0BAA0BL,EAAG,CAC3B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9M,GAAiC8M,CAAC,EACxE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQlN,GAAkC,UAAUkN,CAAI,CAAC,CAAC,CACrM,CACA,qBAAqBL,EAAG,CACtB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhM,GAA4BgM,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ5M,GAAiB,UAAU4M,CAAI,CAAC,CAAC,CAC/K,CACA,gBAAgBL,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7O,GAAuB6O,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQjP,GAAwB,UAAUiP,CAAI,CAAC,CAAC,CACjL,CACA,cAAcL,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3N,GAAqB2N,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wCAAyCC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC5F,KAAK,WAAW,GAD4E,CAE/F,QAAS,UACX,EAAC,CACH,CACA,gBAAgBH,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItM,GAAuBsM,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC9F,KAAK,WAAW,GAD8E,CAEjG,QAAS,UACX,EAAC,CACH,CACA,+BAA+BH,EAAG,CAChC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7R,GAAsC6R,CAAC,EAC7E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yDAA0DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQjS,GAAuC,UAAUiS,CAAI,CAAC,CAAC,CAC/M,CACF,CACA,OAAAxL,EAAoB,UAAO,SAAqC8K,EAAmB,CACjF,OAAO,IAAKA,GAAqB9K,EACnC,EACAA,EAAoB,WAA0B+K,GAAmB,CAC/D,MAAO/K,EACP,QAASA,EAAoB,UAC7B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EA6ECC,KAAwC,IAAM,CAChD,MAAMA,CAAwB,CAC5B,aAAc,CACZ,KAAK,YAAc+K,EAAOtL,EAAW,EACrC,KAAK,KAAOsL,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,oBAAoBC,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInT,GAA2BmT,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kDAAmDC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GACtG,KAAK,WAAW,GADsF,CAEzG,QAAS,UACX,EAAC,CACH,CACA,oBAAoBH,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlM,GAA2BkM,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kDAAmDC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GACtG,KAAK,WAAW,GADsF,CAEzG,QAAS,UACX,EAAC,CACH,CACA,iBAAiBH,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/Q,GAAwB+Q,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQnR,GAAyB,UAAUmR,CAAI,CAAC,CAAC,CACvL,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7Q,GAAyB6Q,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gDAAiDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQjR,GAA0B,UAAUiR,CAAI,CAAC,CAAC,CACzL,CACA,qBAAqBL,EAAG,CACtB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzN,GAA4ByN,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mDAAoDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ7N,GAA6B,UAAU6N,CAAI,CAAC,CAAC,CAC/L,CACA,oBAAoBL,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3O,GAA2B2O,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kDAAmDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ/O,GAA4B,UAAU+O,CAAI,CAAC,CAAC,CAC7L,CACA,mCAAmCL,EAAG,CACpC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjS,GAA0CiS,CAAC,EACjF,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iEAAkEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQrS,GAA2C,UAAUqS,CAAI,CAAC,CAAC,CAC3N,CACA,YAAYL,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5M,GAAwB4M,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC9F,KAAK,WAAW,GAD8E,CAEjG,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAArL,EAAwB,UAAO,SAAyC6K,EAAmB,CACzF,OAAO,IAAKA,GAAqB7K,EACnC,EACAA,EAAwB,WAA0B8K,GAAmB,CACnE,MAAO9K,EACP,QAASA,EAAwB,UACjC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,KAA6C,IAAM,CACrD,MAAMA,CAA6B,CACjC,aAAc,CACZ,KAAK,YAAc8K,EAAOtL,EAAW,EACrC,KAAK,KAAOsL,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,qCAAqCC,EAAG,CACtC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9P,GAAuC8P,CAAC,EAC9E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+EAAgFC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GACnI,KAAK,WAAW,GADmH,CAEtI,QAAS,UACX,EAAC,CACH,CACA,yBAAyBH,EAAG,CAC1B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1P,GAAsC0P,CAAC,EAC7E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mEAAoEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ9P,GAAuC,UAAU8P,CAAI,CAAC,CAAC,CACzN,CACA,4BAA4BL,EAAG,CAC7B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3P,GAAyC2P,CAAC,EAChF,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sEAAuEC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC1H,KAAK,WAAW,GAD0G,CAE7H,QAAS,UACX,EAAC,CACH,CACA,4BAA4BH,EAAG,CAC7B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7P,GAAyC6P,CAAC,EAChF,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sEAAuEC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQjQ,GAA0C,UAAUiQ,CAAI,CAAC,CAAC,CAC/N,CACA,8BAA8BL,EAAG,CAC/B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxP,GAA2CwP,CAAC,EAClF,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wEAAyEC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC5H,KAAK,WAAW,GAD4G,CAE/H,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAApL,EAA6B,UAAO,SAA8C4K,EAAmB,CACnG,OAAO,IAAKA,GAAqB5K,EACnC,EACAA,EAA6B,WAA0B6K,GAAmB,CACxE,MAAO7K,EACP,QAASA,EAA6B,UACtC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAqECC,KAA4C,IAAM,CACpD,MAAMA,CAA4B,CAChC,aAAc,CACZ,KAAK,YAAc6K,EAAOtL,EAAW,EACrC,KAAK,KAAOsL,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,wBAAwBC,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5L,GAA+B4L,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0DAA2DC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC9G,KAAK,WAAW,GAD8F,CAEjH,QAAS,UACX,EAAC,CACH,CACA,uBAAuBH,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzO,GAA8ByO,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yDAA0DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ7O,GAA+B,UAAU6O,CAAI,CAAC,CAAC,CACvM,CACA,uBAAuBL,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1N,GAA8B0N,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yDAA0DC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC7G,KAAK,WAAW,GAD6F,CAEhH,QAAS,UACX,EAAC,CACH,CACA,wBAAwBH,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhN,GAA+BgN,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0DAA2DC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAC9G,KAAK,WAAW,GAD8F,CAEjH,QAAS,UACX,EAAC,CACH,CACA,qBAAqBH,EAAG,CACtB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvQ,GAA4BuQ,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uDAAwDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ3Q,GAA6B,UAAU2Q,CAAI,CAAC,CAAC,CACnM,CACA,wBAAwBL,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlO,GAA+BkO,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0DAA2DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQtO,GAAgC,UAAUsO,CAAI,CAAC,CAAC,CACzM,CACA,yBAAyBL,EAAG,CAC1B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhO,GAAgCgO,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2DAA4DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQpO,GAAiC,UAAUoO,CAAI,CAAC,CAAC,CAC3M,CACA,qBAAqBL,EAAG,CACtB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItU,GAA4BsU,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uDAAwDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ1U,GAA6B,UAAU0U,CAAI,CAAC,CAAC,CACnM,CACA,0BAA0BL,EAAG,CAC3B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjU,GAAiCiU,CAAC,EACxE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4DAA6DC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GAChH,KAAK,WAAW,GADgG,CAEnH,QAAS,UACX,EAAC,CACH,CACA,6BAA6BH,EAAG,CAC9B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlU,GAAmCkU,CAAC,EAC1E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+DAAgEC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GACnH,KAAK,WAAW,GADmG,CAEtH,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAnL,EAA4B,UAAO,SAA6C2K,EAAmB,CACjG,OAAO,IAAKA,GAAqB3K,EACnC,EACAA,EAA4B,WAA0B4K,GAAmB,CACvE,MAAO5K,EACP,QAASA,EAA4B,UACrC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAwGCC,KAAoC,IAAM,CAC5C,MAAMA,CAAoB,CACxB,aAAc,CACZ,KAAK,YAAc4K,EAAOtL,EAAW,EACrC,KAAK,KAAOsL,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,OAAOC,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/L,GAAsB+L,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iCAAkCC,EAAQ,UAAU,EAAGC,GAAAC,GAAA,GACrF,KAAK,WAAW,GADqE,CAExF,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAlL,EAAoB,UAAO,SAAqC0K,EAAmB,CACjF,OAAO,IAAKA,GAAqB1K,EACnC,EACAA,EAAoB,WAA0B2K,GAAmB,CAC/D,MAAO3K,EACP,QAASA,EAAoB,UAC7B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAgBGC,IAAW,IAAIjI,GACjBkI,IAAgC,IAAM,CACxC,MAAMA,CAAgB,CACpB,YAAYmL,EAAK,CACf,KAAK,IAAMA,CACb,CACA,OAAOC,EAAQC,EAAM,CACnB,OAAO,KAAK,IAAI,eAAe,CAC7B,KAAMA,EACN,OAAQD,EACR,MAAO7V,GAAQ,YACjB,CAAC,EAAE,KAAK0V,EAAI/G,GAAKA,EAAE,UAAU,CAAC,CAChC,CACA,OAAOoH,EAAY,CACjB,OAAO,KAAK,IAAI,eAAe,CAC7B,WAAYA,CACd,CAAC,EAAE,KAAKL,EAAI,IAAM,IAAI,CAAC,CACzB,CACA,QAAQG,EAAQE,EAAYC,EAAUC,EAAWH,EAAM,CACrD,IAAMI,EAAM,CACV,WAAYH,EACZ,SAAUC,EACV,UAAWC,EACX,OAAQJ,EACR,KAAMC,CACR,EACA,OAAO,KAAK,IAAI,kBAAkBI,CAAG,EAAE,KAAKR,EAAIC,GAAQA,CAAI,CAAC,CAC/D,CACA,WAAWE,EAAQE,EAAYI,EAAgBF,EAAWH,EAAMM,EAAsBC,EAAI,CACxF,IAAMH,EAAM,CACV,WAAYH,EACZ,eAAgBI,EAChB,UAAWF,EACX,OAAQJ,EACR,KAAMC,EACN,qBAAsBM,EACtB,UAAWC,CACb,EACA,OAAO,KAAK,IAAI,qBAAqBH,CAAG,EAAE,KAAKR,EAAIC,GAAQA,CAAI,CAAC,CAClE,CACA,IAAIW,EAAY,CACd,OAAO,KAAK,IAAI,YAAY,CAC1B,WAAYA,CACd,CAAC,EAAE,KAAKZ,EAAIC,GAAQA,EAAK,QAAQ,EAAGD,EAAIa,IACtCA,EAAS,iBAAmBA,EAAS,kBAAoB,CAAC,EACnDA,EACR,CAAC,CACJ,CACA,SAASC,EAAa,CACpB,OAAO,KAAK,IAAI,kBAAkB,CAChC,YAAaA,CACf,CAAC,EAAE,KAAKd,EAAIC,GAAQA,EAAK,SAAS,CAAC,CACrC,CACA,KAAKc,EAAWC,EAASC,EAAUb,EAAMc,EAAe,CACtD,OAAO,KAAK,IAAI,cAAc,IAAIrQ,GAAqB,CACrD,UAAWkQ,EACX,QAASC,GAAW,CAAC,EACrB,SAAUC,GAAY,CAAC,EACvB,cAAeC,GAAiB,CAAC,EACjC,KAAMd,CACR,CAAC,CAAC,EAAE,KAAKJ,EAAI/G,IAAMA,EAAE,WAAa,CAAC,GAAG,IAAIkI,IACxCA,EAAG,iBAAmBA,EAAG,kBAAoB,CAAC,EAC9CA,EAAG,kBAAoBA,EAAG,mBAAqB,CAAC,EACzCA,EACR,CAAC,CAAC,CACL,CACA,yBAAyBC,EAAM,CAC7B,OAAO,KAAK,IAAI,yBAAyB,CACvC,QAASA,EAAK,QACd,SAAUA,EAAK,SACf,cAAeA,EAAK,aACtB,CAAC,EAAE,KAAKpB,EAAIC,GAAQA,CAAI,CAAC,CAC3B,CACA,2BAA2BI,EAAYgB,EAAQ,CAC7C,IAAMb,EAAM,CACV,WAAYH,EACZ,eAAgBgB,CAClB,EACA,OAAO,KAAK,IAAI,2BAA2Bb,CAAG,EAAE,KAAKR,EAAI/G,GAAKA,EAAE,QAAQ,CAAC,CAC3E,CACA,iCAAiCqI,EAAkB,CACjD,IAAMd,EAAM,CACV,SAAUc,CACZ,EACA,OAAO,KAAK,IAAI,iCAAiCd,CAAG,EAAE,KAAKR,EAAI/G,GAAKA,EAAE,MAAM,CAAC,CAC/E,CACA,uBAAuBoH,EAAYkB,EAAiB,CAClD,IAAMf,EAAM,CACV,WAAYH,EACZ,UAAWkB,CACb,EACA,OAAO,KAAK,IAAI,uBAAuBf,CAAG,EAAE,KAAKR,EAAI/G,GAAKA,EAAE,QAAQ,CAAC,CACvE,CACA,yBAAyBoH,EAAYF,EAAQ,CAC3C,IAAMK,EAAM,CACV,WAAYH,EACZ,OAAQF,CACV,EACA,OAAO,KAAK,IAAI,yBAAyBK,CAAG,EAAE,KAAKR,EAAI/G,GAAKA,EAAE,QAAQ,CAAC,CACzE,CACA,6BAA6BqI,EAAkB,CAC7C,IAAMd,EAAM,CACV,SAAUc,CACZ,EACA,OAAO,KAAK,IAAI,6BAA6Bd,CAAG,CAClD,CACA,oBAAoBH,EAAYI,EAAgBW,EAAM,CACpD,OAAO,KAAK,IAAI,uBAAuB,CACrC,WAAYf,EACZ,eAAgBI,EAChB,SAAUW,CACZ,CAAC,CACH,CACA,kBAAkBjB,EAAQE,EAAYI,EAAgBe,EAAcJ,EAAM,CACxE,OAAO,KAAK,IAAI,0BAA0B,CACxC,OAAQjB,EACR,WAAYE,EACZ,eAAgBI,EAChB,aAAce,EACd,SAAUJ,CACZ,CAAC,CACH,CACA,aAAajB,EAAQS,EAAYa,EAAQ,CACvC,OAAO,KAAK,IAAI,eAAe,CAC7B,OAAQtB,EACR,WAAYS,EACZ,OAAQa,EACR,UAAW,CACT,MAAO,CAAC,QAAQ,CAClB,CACF,CAAC,EAAE,KAAKC,GAAM,MAAS,CAAC,CAC1B,CACA,WAAWvB,EAAQS,EAAYR,EAAM,CACnC,OAAO,KAAK,IAAI,eAAe,CAC7B,OAAQD,EACR,WAAYS,EACZ,KAAMR,EACN,UAAW,CACT,MAAO,CAAC,MAAM,CAChB,CACF,CAAC,EAAE,KAAKsB,GAAM,MAAS,CAAC,CAC1B,CACA,uBAAuBvB,EAAQS,EAAYe,EAAkB,CAC3D,OAAO,KAAK,IAAI,eAAe,CAC7B,OAAQxB,EACR,WAAYS,EACZ,iBAAkBe,EAClB,UAAW,CACT,MAAO,CAAC,kBAAkB,CAC5B,CACF,CAAC,EAAE,KAAKD,GAAM,MAAS,CAAC,CAC1B,CACA,qBAAqBvB,EAAQS,EAAYgB,EAAQ,CAC/C,OAAO,KAAK,IAAI,eAAe,CAC7B,OAAQzB,EACR,WAAYS,EACZ,OAAQgB,EACR,UAAW,CACT,MAAO,CAAC,QAAQ,CAClB,CACF,CAAC,EAAE,KAAKF,GAAM,MAAS,CAAC,CAC1B,CACA,gBAAgBvB,EAAQc,EAAUY,EAAYX,EAAeY,EAAa,CACxE,OAAO,KAAK,IAAI,gBAAgB,CAC9B,OAAQ3B,EACR,SAAUc,GAAY,CAAC,EACvB,cAAeC,GAAiB,CAAC,EACjC,WAAYW,EACZ,YAAaC,GAAe,CAAC,CAC/B,CAAC,EAAE,KAAK9B,EAAIC,GAAQA,CAAI,CAAC,CAC3B,CACA,cAAcI,EAAY,CACxB,OAAO,KAAK,IAAI,cAAc,CAC5B,WAAYA,CACd,CAAC,EAAE,KAAKqB,GAAM,MAAS,CAAC,CAC1B,CACA,gBAAgBrB,EAAY,CAC1B,OAAO,KAAK,IAAI,gBAAgB,CAC9B,WAAYA,CACd,CAAC,EAAE,KAAKqB,GAAM,MAAS,CAAC,CAC1B,CACA,+BAA+BvB,EAAQ,CACrC,OAAO,KAAK,IAAI,+BAA+B,CAC7C,OAAQA,CACV,CAAC,EAAE,KAAKH,EAAIC,GAAQA,CAAI,CAAC,CAC3B,CACF,CACA,OAAAlL,EAAgB,UAAO,SAAiCwK,EAAmB,CACzE,OAAO,IAAKA,GAAqBxK,GAAoBgN,EAAStN,GAAmB,CAAC,CACpF,EACAM,EAAgB,WAA0ByK,GAAmB,CAC3D,MAAOzK,EACP,QAASA,EAAgB,UACzB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAICC,IAAyC,IAAM,CACjD,MAAMA,CAAyB,CAC7B,YAAYkL,EAAK,CACf,KAAK,IAAMA,CACb,CACA,KAAK8B,EAAgB,CACnB,OAAO,KAAK,IAAI,uBAAuB,CACrC,eAAgBA,CAClB,CAAC,EAAE,KAAKhC,EAAIC,GAAQA,EAAK,iBAAiB,CAAC,CAC7C,CACA,cAAcI,EAAYF,EAAQ8B,EAAWC,EAAMC,EAASC,EAAe,CACzE,OAAO,KAAK,IAAI,qBAAqB,CACnC,WAAY/B,EACZ,OAAQF,EACR,UAAW8B,EACX,KAAMC,EACN,cAAeE,EACf,QAASD,CACX,CAAC,EAAE,KAAKnC,EAAIC,GAAQA,CAAI,CAAC,CAC3B,CACA,kBAAkBI,EAAYF,EAAQ+B,EAAMC,EAASE,EAAaR,EAAYO,EAAe,CAC3F,OAAO,KAAK,IAAI,0BAA0B,CACxC,WAAY/B,EACZ,OAAQF,EACR,KAAM+B,EACN,SAAU,CACR,cAAeG,EACf,WAAYR,CACd,EACA,cAAeO,EACf,QAASD,CACX,CAAC,EAAE,KAAKnC,EAAI,IAAM,IAAI,CAAC,CACzB,CACA,wBAAwBK,EAAYF,EAAQ8B,EAAW,CACrD,OAAO,KAAK,IAAI,wBAAwB,CACtC,WAAY5B,EACZ,OAAQF,EACR,UAAW8B,CACb,CAAC,EAAE,KAAKjC,EAAIC,GAAQA,CAAI,CAAC,CAC3B,CACA,yBAAyBI,EAAYF,EAAQmC,EAAY,CACvD,OAAO,KAAK,IAAI,yBAAyB,CACvC,WAAYjC,EACZ,OAAQF,EACR,WAAYmC,CACd,CAAC,EAAE,KAAKtC,EAAIC,GAAQA,CAAI,CAAC,CAC3B,CACA,qBAAqBsC,EAAqB,CACxC,OAAO,KAAK,IAAI,qBAAqB,CACnC,oBAAqBA,CACvB,CAAC,EAAE,KAAKvC,EAAIC,GAAQA,GAAM,iBAAiB,CAAC,CAC9C,CACA,uBAAuBsC,EAAqB,CAC1C,OAAO,KAAK,IAAI,uBAAuB,CACrC,oBAAqBA,CACvB,CAAC,EAAE,KAAKb,GAAM,MAAS,CAAC,CAC1B,CACA,wBAAwBa,EAAqB,CAC3C,OAAO,KAAK,IAAI,wBAAwB,CACtC,oBAAqBA,CACvB,CAAC,EAAE,KAAKb,GAAM,MAAS,CAAC,CAC1B,CACF,CACA,OAAA1M,EAAyB,UAAO,SAA0CuK,EAAmB,CAC3F,OAAO,IAAKA,GAAqBvK,GAA6B+M,EAASnN,GAA2B,CAAC,CACrG,EACAI,EAAyB,WAA0BwK,GAAmB,CACpE,MAAOxK,EACP,QAASA,EAAyB,UAClC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAICC,KAAqC,IAAM,CAC7C,MAAMA,CAAqB,CACzB,YAAYiL,EAAK,CACf,KAAK,IAAMA,CACb,CACA,IAAIsC,EAAY,CACd,OAAO,KAAK,IAAI,iBAAiB,CAC/B,WAAYA,CACd,CAAC,EAAE,KAAKxC,EAAIC,GAAQA,EAAK,QAAQ,CAAC,CACpC,CACA,oBAAoBuC,EAAY,CAC9B,OAAO,KAAK,IAAI,oBAAoB,CAClC,WAAYA,CACd,CAAC,EAAE,KAAKxC,EAAIC,GAAQA,EAAK,KAAK,CAAC,CACjC,CACA,SAASwC,EAAa,CACpB,OAAO,KAAK,IAAI,kBAAkB,CAChC,YAAaA,CACf,CAAC,EAAE,KAAKzC,EAAIC,GAAQA,EAAK,SAAS,CAAC,CACrC,CACA,qBAAqByC,EAAYC,EAAgBC,EAAWC,EAAUjB,EAAQkB,EAAQ3C,EAAQ,CAC5F,IAAMK,EAAM,CACV,WAAYkC,EACZ,eAAgBC,EAChB,UAAWC,EACX,SAAUC,EACV,OAAQjB,EACR,OAAQkB,EACR,OAAQ3C,CACV,EACA,OAAO,KAAK,IAAI,qBAAqBK,CAAG,EAAE,KAAKR,EAAI/G,IAAM,CACvD,SAAUA,EAAE,aACZ,QAASA,EAAE,QACX,KAAMA,EAAE,IACV,EAAE,CAAC,CACL,CACA,YAAYkH,EAAQ4C,EAAaC,EAASC,EAAiB,CACzD,IAAMzC,EAAM,CACV,OAAQL,EACR,YAAa4C,EACb,QAASC,EACT,gBAAiBC,CACnB,EACA,OAAO,KAAK,IAAI,YAAYzC,CAAG,CACjC,CACF,CACA,OAAAvL,EAAqB,UAAO,SAAsCsK,EAAmB,CACnF,OAAO,IAAKA,GAAqBtK,GAAyB8M,EAASrN,GAAuB,CAAC,CAC7F,EACAO,EAAqB,WAA0BuK,GAAmB,CAChE,MAAOvK,EACP,QAASA,EAAqB,UAC9B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAqDCC,KAAqC,IAAM,CAC7C,MAAMA,CAAqB,CACzB,YAAYgL,EAAK,CACf,KAAK,IAAMA,CACb,CACA,IAAIkB,EAAM,CACR,OAAO,KAAK,IAAI,2BAA2BA,CAAI,EAAE,KAAKpB,EAAIC,GAAQA,CAAI,CAAC,CACzE,CACA,KAAKmB,EAAM,CACT,OAAO,KAAK,IAAI,kBAAkBA,CAAI,EAAE,KAAKpB,EAAIC,IAC/CA,EAAK,MAAQA,EAAK,OAAS,CAAC,EAC5BA,EAAK,MAAQA,EAAK,MAAM,IAAIiD,IAC1BA,EAAK,KAAOA,EAAK,MAAQ,CAAC,EACnBA,EACR,EACMjD,EACR,CAAC,CACJ,CACA,wBAAwBmB,EAAM,CAC5B,OAAO,KAAK,IAAI,wBAAwBA,CAAI,EAAE,KAAKpB,EAAIC,GAAQA,CAAI,CAAC,CACtE,CACA,aAAamB,EAAM,CACjB,OAAO,KAAK,IAAI,aAAaA,CAAI,EAAE,KAAKpB,EAAIC,GAAQA,CAAI,CAAC,CAC3D,CACA,2BAA2BmB,EAAM,CAC/B,OAAO,KAAK,IAAI,2BAA2BA,CAAI,CACjD,CACA,qBAAqBA,EAAM,CACzB,OAAO,KAAK,IAAI,qBAAqBA,CAAI,EAAE,KAAKpB,EAAIC,GAAQA,CAAI,CAAC,CACnE,CACA,8BAA8BmB,EAAM,CAClC,OAAO,KAAK,IAAI,8BAA8BA,CAAI,EAAE,KAAKpB,EAAI,IAAM,IAAI,CAAC,CAC1E,CACA,mBAAmBoB,EAAM,CACvB,OAAO,KAAK,IAAI,2BAA2BA,CAAI,EAAE,KAAKpB,EAAI/G,IACxDA,EAAE,MAAQA,EAAE,OAAS,CAAC,EACfA,EACR,CAAC,CACJ,CACF,CACA,OAAA/D,EAAqB,UAAO,SAAsCqK,EAAmB,CACnF,OAAO,IAAKA,GAAqBrK,GAAyB6M,EAASxN,GAAuB,CAAC,CAC7F,EACAW,EAAqB,WAA0BsK,GAAmB,CAChE,MAAOtK,EACP,QAASA,EAAqB,UAC9B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAICC,KAAuC,IAAM,CAC/C,MAAMA,CAAuB,CAC3B,YAAY+K,EAAK,CACf,KAAK,IAAMA,CACb,CACA,OAAOiD,EAAYC,EAAUC,EAAMC,EAAQ,CACzC,IAAM9C,EAAM,CACV,WAAY2C,EACZ,SAAUC,EACV,KAAMC,EACN,OAAQC,CACV,EACA,OAAO,KAAK,IAAI,OAAO9C,CAAG,EAAE,KAAKR,EAAIC,GAAQA,EAAK,WAAW,CAAC,CAChE,CACA,kBAAkBkD,EAAYC,EAAUG,EAAQC,EAAU,CACxD,IAAMhD,EAAM,CACV,WAAY2C,EACZ,SAAUC,EACV,OAAQG,EACR,SAAUC,CACZ,EACA,OAAO,KAAK,IAAI,kBAAkBhD,CAAG,EAAE,KAAKR,EAAI/G,IAC9CA,EAAE,aAAeA,EAAE,cAAgB,CAAC,EAC7BA,EACR,CAAC,CACJ,CACA,iBAAiBkK,EAAYC,EAAU/C,EAAYoD,EAAO,CACxD,IAAMjD,EAAM,CACV,WAAY2C,EACZ,SAAUC,EACV,WAAY/C,EACZ,MAAOoD,CACT,EACA,OAAO,KAAK,IAAI,iBAAiBjD,CAAG,EAAE,KAAKR,EAAI,IAAM,IAAI,CAAC,CAC5D,CACA,sBAAsBK,EAAYoD,EAAO,CACvC,IAAMjD,EAAM,IAAI7N,GAA6B,CAC3C,WAAY0N,EACZ,MAAOoD,CACT,CAAC,EACD,OAAO,KAAK,IAAI,sBAAsBjD,CAAG,EAAE,KAAKR,EAAI,IAAM,IAAI,CAAC,CACjE,CACA,oBAAoBK,EAAYkD,EAAQC,EAAU,CAChD,IAAMhD,EAAM,CACV,WAAYH,EACZ,OAAQkD,EACR,SAAUC,CACZ,EACA,OAAO,KAAK,IAAI,oBAAoBhD,CAAG,EAAE,KAAKR,EAAI/G,IAChDA,EAAE,aAAeA,EAAE,cAAgB,CAAC,EAC7BA,EACR,CAAC,CACJ,CACA,UAAUkK,EAAYC,EAAUK,EAAO,CACrC,IAAMjD,EAAM,CACV,WAAY2C,EACZ,SAAUC,EACV,MAAOK,CACT,EACA,OAAO,KAAK,IAAI,OAAOjD,CAAG,EAAE,KAAKR,EAAI,IAAM,IAAI,CAAC,CAClD,CACF,CACA,OAAA7K,EAAuB,UAAO,SAAwCoK,EAAmB,CACvF,OAAO,IAAKA,GAAqBpK,GAA2B4M,EAASvN,GAAyB,CAAC,CACjG,EACAW,EAAuB,WAA0BqK,GAAmB,CAClE,MAAOrK,EACP,QAASA,EAAuB,UAChC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAICC,KAAuC,IAAM,CAC/C,MAAMA,CAAuB,CAC3B,YAAY8K,EAAK,CACf,KAAK,IAAMA,CACb,CACA,8BAA8BqC,EAAqBd,EAAQ,CACzD,IAAMjB,EAAM,CACV,oBAAqB+B,EACrB,OAAQd,CACV,EACA,OAAO,KAAK,IAAI,8BAA8BjB,CAAG,EAAE,KAAKR,EAAI,IAAM,IAAI,CAAC,CACzE,CACF,CACA,OAAA5K,EAAuB,UAAO,SAAwCmK,EAAmB,CACvF,OAAO,IAAKA,GAAqBnK,GAA2B2M,EAASpN,GAA4B,CAAC,CACpG,EACAS,EAAuB,WAA0BoK,GAAmB,CAClE,MAAOpK,EACP,QAASA,EAAuB,UAChC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAICC,KAA8B,IAAM,CACtC,MAAMA,CAAc,CAClB,YAAY6K,EAAK,CACf,KAAK,IAAMA,CACb,CACA,UAAUG,EAAY,CACpB,IAAMG,EAAM,CACV,WAAYH,CACd,EACA,OAAO,KAAK,IAAI,UAAUG,CAAG,CAC/B,CACA,aAAaH,EAAYqD,EAAuBC,EAAqBC,EAAiCC,EAA0B1D,EAAQ2D,EAAiB,CACvJ,IAAMtD,EAAM,CACV,WAAYH,EACZ,sBAAuBqD,EACvB,oBAAqBC,EACrB,gCAAiCC,EACjC,yBAA0BC,EAC1B,OAAQ1D,EACR,mBAAoB2D,CACtB,EACA,OAAO,KAAK,IAAI,aAAatD,CAAG,CAClC,CACF,CACA,OAAAnL,EAAc,UAAO,SAA+BkK,EAAmB,CACrE,OAAO,IAAKA,GAAqBlK,GAAkB0M,EAAS1N,GAAwB,CAAC,CACvF,EACAgB,EAAc,WAA0BmK,GAAmB,CACzD,MAAOnK,EACP,QAASA,EAAc,UACvB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAICC,KAAkC,IAAM,CAC1C,MAAMA,CAAkB,CACtB,YAAY4K,EAAK,CACf,KAAK,IAAMA,CACb,CACA,gBAAgBC,EAAQ4D,EAAS,CAC/B,IAAMvD,EAAM,CACV,OAAQL,EACR,UAAW4D,CACb,EACA,OAAO,KAAK,IAAI,gBAAgBvD,CAAG,EAAE,KAAKR,EAAI/G,GAAKA,CAAC,CAAC,CACvD,CACF,CACA,OAAA3D,EAAkB,UAAO,SAAmCiK,EAAmB,CAC7E,OAAO,IAAKA,GAAqBjK,GAAsByM,EAAS3N,GAAqB,CAAC,CACxF,EACAkB,EAAkB,WAA0BkK,GAAmB,CAC7D,MAAOlK,EACP,QAASA,EAAkB,UAC3B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAICC,KAA6B,IAAM,CACrC,MAAMA,CAAa,CACjB,YAAY2K,EAAK,CACf,KAAK,IAAMA,CACb,CACA,iBAAiBC,EAAQ6D,EAAMC,EAAY,CACzC,IAAMzD,EAAM,CACV,OAAQL,EACR,KAAM6D,EACN,WAAYC,CACd,EACA,OAAO,KAAK,IAAI,iBAAiBzD,CAAG,CACtC,CACF,CACA,OAAAjL,EAAa,UAAO,SAA8BgK,EAAmB,CACnE,OAAO,IAAKA,GAAqBhK,GAAiBwM,EAASzN,GAAuB,CAAC,CACrF,EACAiB,EAAa,WAA0BiK,GAAmB,CACxD,MAAOjK,EACP,QAASA,EAAa,UACtB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAICC,KAAiC,IAAM,CACzC,MAAMA,CAAiB,CACrB,YAAY0K,EAAK,CACf,KAAK,IAAMA,CACb,CACA,kBAAkBG,EAAYqC,EAAYtC,EAAM8D,EAAS,CACvD,IAAM1D,EAAM,CACV,WAAYH,EACZ,WAAYqC,EACZ,KAAMtC,EACN,QAAS8D,CACX,EACA,OAAO,KAAK,IAAI,OAAO1D,CAAG,EAAE,KAAKR,EAAI,IAAM,IAAI,CAAC,CAClD,CACF,CACA,OAAAxK,EAAiB,UAAO,SAAkC+J,EAAmB,CAC3E,OAAO,IAAKA,GAAqB/J,GAAqBuM,EAASlN,GAAmB,CAAC,CACrF,EACAW,EAAiB,WAA0BgK,GAAmB,CAC5D,MAAOhK,EACP,QAASA,EAAiB,UAC1B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,+BE9mPK2O,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,cAAA,CAAA,EAMFC,EAAA,mBALIC,EAAA,EAAAC,EAAA,QAAAC,EAAAC,YAAA,8BAOJN,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,cAAA,CAAA,EAMFC,EAAA,mBALIC,EAAA,EAAAC,EAAA,QAAAC,EAAAC,YAAA,8BAQJN,EAAA,EAAA,OAAA,CAAA,EAAqEO,EAAA,CAAA,EAAgBL,EAAA,qBAAhBC,EAAA,EAAAK,EAAAC,CAAA,2BAEnET,EAAA,EAAA,OAAA,CAAA,EAAoBO,EAAA,CAAA,mBAA0CL,EAAA,SAA1CC,EAAA,EAAAK,EAAAE,EAAA,EAAA,EAAA,wBAAA,CAAA,8BAItBV,EAAA,EAAA,IAAA,EAAA,EACEO,EAAA,CAAA,cACFL,EAAA,6BADEC,EAAA,EAAAQ,EAAA,IAAAC,GAAA,EAAA,EAAAC,EAAAC,cAAAT,EAAAU,UAAA,EAAA,GAAA,8BAWAf,EAAA,EAAA,OAAA,EAAA,EAAsC,EAAA,IAAA,EAAA,EACWO,EAAA,CAAA,EAAoBL,EAAA,EAAI,mBAApEC,EAAA,EAAAa,GAAA,OAAAX,EAAAY,aAAA,EAAAC,EAAA,EAA4Cf,EAAA,EAAAK,EAAAH,EAAAc,aAAA,CAAA,8BAGjDnB,EAAA,EAAA,OAAA,EAAA,EACEO,EAAA,CAAA,EACFL,EAAA,mBADEC,EAAA,EAAAQ,EAAA,IAAAN,EAAAc,aAAA,EAAA,GAAA,2BAMEnB,EAAA,EAAA,UAAA,EAAUO,EAAA,EAAA,aAAA,EAAWL,EAAA,EACrBK,EAAA,CAAA,0BAAAJ,EAAA,CAAA,EAAAQ,EAAA,IAAAD,EAAA,EAAA,EAAA,kCAAA,EAAA,GAAA,2BAEAV,EAAA,EAAA,UAAA,EAAUO,EAAA,EAAA,aAAA,EAAWL,EAAA,EACrBK,EAAA,CAAA,0BAAAJ,EAAA,CAAA,EAAAQ,EAAA,IAAAD,EAAA,EAAA,EAAA,kCAAA,EAAA,GAAA,8BASQV,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,cAAA,EAAA,EAMFC,EAAA,mBALIC,EAAA,EAAAC,EAAA,QAAAC,EAAAe,kBAAA,8BAQJpB,EAAA,EAAA,gBAAA,EAAgB,EAAA,OAAA,CAAA,EACMO,EAAA,CAAA,EAA0BL,EAAA,EAAO,4BAAjCC,EAAA,CAAA,EAAAK,EAAAa,EAAAC,WAAA,8BAItBtB,EAAA,EAAA,mBAAA,EAAmB,EAAA,IAAA,EAAA,EAEfO,EAAA,CAAA,cACFL,EAAA,EAAI,mCADFC,EAAA,CAAA,EAAAQ,EAAA,IAAAC,GAAA,EAAA,EAAAS,EAAAP,cAAAT,EAAAU,UAAA,EAAA,GAAA,8BArBZf,EAAA,EAAA,MAAA,EAAA,EAA+E,EAAA,WAAA,EAAA,EACvC,EAAA,iBAAA,EAElCuB,EAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAAkB,EAAAC,IAAA,EAAA,EAAA,gBAAA,EAUU,EAAAC,IAAA,EAAA,EAAA,mBAAA,EAY9BxB,EAAA,EAAkB,EACT,uDA1BuBE,EAAA,UAAAuB,GAAA,EAAAC,GAAAC,IAAAC,EAAA,CAAA,CAAA,EAEf3B,EAAA,CAAA,EAAA4B,GAAA,cAAA,EAAA1B,EAAAe,mBAAA,GAAAY,SAAA,EAAA,IAAA,EACf7B,EAAA,EAAA8B,EAAA5B,EAAA6B,WAAA,EAAA,EAAA,EAUA/B,EAAA,EAAA8B,EAAAZ,EAAAC,YAAA,EAAA,EAAA,EAKAnB,EAAA,EAAA8B,EAAAZ,EAAAP,cAAA,EAAA,EAAA,6BAnBRqB,GAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,GAAAC,EAAA,uBAAAC,GAAAzB,EAAA0B,iBAAA,uCAVFvC,EAAA,EAAA,MAAA,EAAA,EAA6BwC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAArC,EAAAsC,EAAA,CAAA,EAAA,OAAAC,EAASvC,EAAAwC,sBAAAC,IAAA,CAA2BzC,EAAAwC,sBAAA,CAAuB,CAAC,CAAA,CAAA,EACvFtB,EAAA,EAAAwB,IAAA,EAAA,CAAA,EAA+B,EAAAC,IAAA,EAAA,CAAA,EAOjC9C,EAAA,EACAqB,EAAA,EAAA0B,IAAA,EAAA,CAAA,qBARE9C,EAAA,EAAA8B,EAAA5B,EAAAwC,sBAAA,EAAA,EAAA,CAAA,EAQF1C,EAAA,CAAA,EAAA8B,EAAA5B,EAAAwC,sBAAA,EAAA,EAAA,EAAA,8BAvBF7C,EAAA,EAAA,OAAA,EAAA,EAA+B,EAAA,OAAA,EAAA,EACRO,EAAA,CAAA,EAA2BL,EAAA,EAChDK,EAAA,CAAA,mBACFL,EAAA,EACAqB,EAAA,EAAA2B,IAAA,EAAA,EAAA,OAAA,EAAA,EAA4B,EAAAC,IAAA,EAAA,EAAA,OAAA,EAAA,EAInB,EAAAC,IAAA,EAAA,CAAA,6BAPcjD,EAAA,CAAA,EAAAK,EAAAK,EAAAwC,YAAA,EACrBlD,EAAA,EAAAQ,EAAA,IAAAD,EAAA,EAAA,EAAA,iCAAA,EAAA,GAAA,EAEFP,EAAA,CAAA,EAAA8B,EAAA5B,EAAAiD,kBAAA,EAAA,EAAA,CAAA,EASAnD,EAAA,CAAA,EAAA8B,EAAA5B,EAAAkC,kBAAA,EAAAgB,OAAA,EAAA,EAAA,EAAA,8BA+CIhD,EAAA,CAAA,yCAAAiD,GAAA,IAAA9C,EAAA,EAAA,EAAA,iCAAA,EAAA,IAAAG,EAAAM,aAAA,GAAA,8BAKFnB,EAAA,EAAA,WAAA,CAAA,EAAmD,EAAA,mBAAA,EAAA,EAC8C,EAAA,KAAA,EACxF,EAAA,0BAAA,EAAA,EAEDC,EAAA,EAAA,OAAA,EAAA,wBACFC,EAAA,EAA0B,EACtB,EACW,8BANeC,EAAA,EAAA4B,GAAA,cAAA,EAAA1B,EAAAC,aAAA,IAAA0B,SAAA,EAAA,IAAA,EAEL7B,EAAA,CAAA,EAAAC,EAAA,cAAA,GAAA,EACCD,EAAA,EAAAC,EAAA,YAAAM,EAAA,EAAA,EAAAG,EAAA4C,SAAA,EAAAC,EAAA,2BAS5B1D,EAAA,EAAA,UAAA,EAAUO,EAAA,EAAA,aAAA,EAAWL,EAAA,EACrBK,EAAA,CAAA,0BAAAJ,EAAA,CAAA,EAAAQ,EAAA,IAAAD,EAAA,EAAA,EAAA,kCAAA,EAAA,GAAA,2BAEAV,EAAA,EAAA,UAAA,EAAUO,EAAA,EAAA,aAAA,EAAWL,EAAA,EACrBK,EAAA,CAAA,0BAAAJ,EAAA,CAAA,EAAAQ,EAAA,IAAAD,EAAA,EAAA,EAAA,kCAAA,EAAA,GAAA,uCANJV,EAAA,EAAA,MAAA,EAAA,EAA6BwC,EAAA,QAAA,UAAA,CAAAC,EAAAkB,CAAA,EAAA,IAAAtD,EAAAsC,EAAA,CAAA,EAAA,OAAAC,EAASvC,EAAAwC,sBAAAC,IAAA,CAA2BzC,EAAAwC,sBAAA,CAAuB,CAAC,CAAA,CAAA,EACvFtB,EAAA,EAAAqC,IAAA,EAAA,CAAA,EAA+B,EAAAC,IAAA,EAAA,CAAA,EAOjC3D,EAAA,qBAPEC,EAAA,EAAA8B,EAAA5B,EAAAwC,sBAAA,EAAA,EAAA,CAAA,8BAeQ7C,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,cAAA,EAAA,EAMFC,EAAA,mBALIC,EAAA,EAAAC,EAAA,QAAAC,EAAAe,kBAAA,8BAQJpB,EAAA,EAAA,gBAAA,EAAgB,EAAA,OAAA,CAAA,EACMO,EAAA,CAAA,EAA0BL,EAAA,EAAO,4BAAjCC,EAAA,CAAA,EAAAK,EAAAsD,EAAAxC,WAAA,8BAItBtB,EAAA,EAAA,mBAAA,EAAmB,EAAA,IAAA,EAAA,EAEfO,EAAA,CAAA,cACFL,EAAA,EAAI,mCADFC,EAAA,CAAA,EAAAQ,EAAA,IAAAC,GAAA,EAAA,EAAAkD,EAAAhD,cAAAT,EAAAU,UAAA,EAAA,GAAA,8BArBZf,EAAA,EAAA,MAAA,EAAA,EAA+E,EAAA,WAAA,EAAA,EACvC,EAAA,iBAAA,EAElCuB,EAAA,EAAAwC,IAAA,EAAA,EAAA,MAAA,CAAA,EAAkB,EAAAC,IAAA,EAAA,EAAA,gBAAA,EAUU,EAAAC,IAAA,EAAA,EAAA,mBAAA,EAY9B/D,EAAA,EAAkB,EACT,uDA1BuBE,EAAA,UAAAuB,GAAA,EAAAC,GAAAsC,IAAAC,EAAA,CAAA,CAAA,EAEfhE,EAAA,CAAA,EAAA4B,GAAA,cAAA,EAAA1B,EAAAe,mBAAA,GAAAY,SAAA,EAAA,IAAA,EACf7B,EAAA,EAAA8B,EAAA5B,EAAA6B,WAAA,EAAA,EAAA,EAUA/B,EAAA,EAAA8B,EAAA6B,EAAAxC,YAAA,EAAA,EAAA,EAKAnB,EAAA,EAAA8B,EAAA6B,EAAAhD,cAAA,EAAA,EAAA,6BAnBRqB,GAAA,EAAAiC,IAAA,EAAA,EAAA,MAAA,GAAA/B,EAAA,uBAAAC,GAAAzB,EAAA0B,iBAAA,8BA9BFvC,EAAA,EAAA,OAAA,EAAA,EAA+B,EAAA,OAAA,EAAA,EACRO,EAAA,CAAA,EAA2BL,EAAA,EAChDqB,EAAA,EAAA8C,IAAA,EAAA,CAAA,EAIFnE,EAAA,EACAqB,EAAA,EAAA+C,IAAA,EAAA,EAAA,WAAA,CAAA,EAA0B,EAAAC,IAAA,EAAA,EAAA,MAAA,EAAA,EAWY,EAAAC,IAAA,EAAA,CAAA,6BAjBfrE,EAAA,CAAA,EAAAK,EAAAK,EAAAwC,YAAA,EACrBlD,EAAA,EAAA8B,EAAApB,EAAAM,aAAA,EAAA,EAAA,EAKFhB,EAAA,EAAA8B,EAAApB,EAAA4C,UAAA,EAAA,EAAA,EAWAtD,EAAA,EAAA8B,EAAA5B,EAAAkC,kBAAA,EAAAgB,OAAA,EAAA,EAAA,EAAA,EAWApD,EAAA,EAAA8B,EAAA5B,EAAAwC,sBAAA,EAAA,EAAA,EAAA,8BAwCQ7C,EAAA,EAAA,KAAA,EACEO,EAAA,CAAA,EACFL,EAAA,qBADEC,EAAA,EAAAQ,EAAA,IAAA8D,EAAA,GAAA,8BAFJzE,EAAA,EAAA,MAAA,EACEuB,EAAA,EAAAmD,IAAA,EAAA,EAAA,MAAA,CAAA,EAGAnE,EAAA,CAAA,mBACFL,EAAA,mBAJQC,EAAA,EAAAC,EAAA,OAAAC,EAAAsE,UAAA,CAAA,EAGNxE,EAAA,EAAAQ,EAAA,IAAAD,EAAA,EAAA,EAAA,8BAAA,EAAA,GAAA,2BAICV,EAAA,EAAA,MAAA,EAA2BO,EAAA,EAAA,IAAA,EAAEL,EAAA,8BAFhCF,EAAA,EAAA,MAAA,EAAmE,EAAA,IAAA,EAAA,EACHO,EAAA,CAAA,EAAaL,EAAA,EAC1EqB,EAAA,EAAAqD,IAAA,EAAA,EAAA,OAAA,CAAA,EACH1E,EAAA,mCAFKC,EAAA,EAAA0E,GAAA,OAAA,UAAAC,EAAA,GAAA5D,EAAA,EAA2Df,EAAA,EAAAK,EAAAsE,CAAA,EACtD3E,EAAA,EAAAC,EAAA,OAAA,CAAA2E,CAAA,8BAGZ/E,EAAA,EAAA,KAAA,EAAgC,EAAA,0BAAA,EAAA,EAE5BC,EAAA,EAAA,OAAA,EAAA,wBACFC,EAAA,EAA0B,wBAFDC,EAAA,EAAAC,EAAA,cAAA,GAAA,EACCD,EAAA,EAAAC,EAAA,YAAAM,EAAA,EAAA,EAAAG,EAAA4C,SAAA,EAAAC,EAAA,8BAnBhC1D,EAAA,EAAA,WAAA,CAAA,EAAmD,EAAA,iBAAA,EAAA,EACV,EAAA,OAAA,CAAA,EACjBO,EAAA,CAAA,EAA2BL,EAAA,EAAO,EAExDF,EAAA,EAAA,mBAAA,EAAA,EAA+F,EAAA,MAAA,EAAA,EAE3FuB,EAAA,EAAAyD,IAAA,EAAA,EAAA,OAAA,CAAA,EAAqD,EAAAC,IAAA,EAAA,EAAA,OAAA,EAAA,EAUvD/E,EAAA,EACAqB,EAAA,EAAA2D,IAAA,EAAA,EAAA,MAAA,CAAA,EAKFhF,EAAA,EAAmB,6BApBGC,EAAA,CAAA,EAAAK,EAAAK,EAAAwC,YAAA,EAEYlD,EAAA,EAAA4B,GAAA,cAAA,EAAA1B,EAAAC,aAAA,IAAA0B,SAAA,EAAA,IAAA,EAEvB7B,EAAA,CAAA,EAAAC,EAAA,OAAAS,EAAAsE,iBAAA,UAAA,EAMmBhF,EAAA,EAAAC,EAAA,UAAAC,EAAA+E,cAAA,CAAA,EAKtBjF,EAAA,EAAAC,EAAA,OAAAS,EAAA4C,SAAA,8BA5KlBzD,EAAA,EAAA,KAAA,EAAoC,EAAA,WAAA,CAAA,EACJ,EAAA,iBAAA,EAE1BuB,EAAA,EAAA8D,IAAA,EAAA,EAAA,MAAA,CAAA,EAAkC,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAmBlCtF,EAAA,EAAA,gBAAA,EACEuB,EAAA,EAAAgE,IAAA,EAAA,EAAA,OAAA,CAAA,EAAqE,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAIvEvF,EAAA,EACAF,EAAA,EAAA,mBAAA,EACEuB,EAAA,GAAAmE,IAAA,EAAA,EAAA,IAAA,CAAA,EAGFxF,EAAA,EAAoB,EAEtBF,EAAA,GAAA,kBAAA,EACEuB,EAAA,GAAAoE,IAAA,EAAA,CAAA,EAAoB,GAAAC,IAAA,EAAA,CAAA,EAyD8C,GAAAC,IAAA,EAAA,EAAA,WAAA,CAAA,EAwFpE3F,EAAA,EAAmB,EACV,kCAnLQC,EAAA,CAAA,EAAA4B,GAAA,cAAA1B,EAAA6B,WAAA,MAAA7B,EAAAC,aAAA,IAAA0B,SAAA,EAAA,IAAA,EACf7B,EAAA,EAAA8B,EAAA5B,EAAA6B,YAAA7B,EAAAyF,WAAA,EAAA,EAAAzF,EAAA6B,YAAA,CAAA7B,EAAAyF,WAAA,EAAA,EAAA,EAAA,EAoBS3F,EAAA,CAAA,EAAAC,EAAA,OAAAC,EAAA0F,WAAA,CAAA,EAAmB,WAAAC,CAAA,EAMtB7F,EAAA,CAAA,EAAAC,EAAA,OAAAS,EAAAC,gBAAA,IAAA,EAKUX,EAAA,EAAA4B,GAAA,eAAA1B,EAAAC,aAAA,IAAA0B,SAAA,EAAA,IAAA,EAChB7B,EAAA,EAAA8B,EAAA5B,EAAAyF,WAAA,EAAA,GAAAzF,EAAA4F,sBAAA,GAAA5F,EAAA6F,uBAAA,EAAA,GAAA,EAAA,GDnCN,OAmDaC,GAnDbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KAEAC,IACAC,KAQAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAQAC,KACAC,0FAoBanB,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CAMpC,IAA+BoB,SAASA,EAA0B,CAChE,KAAKC,UAAU1E,IAAIyE,CAAQ,CAC7B,CAEA,IAAIA,UAAQ,CACV,OAAO,KAAKC,UAAS,CACvB,CAEA,IAAaC,WAAWA,EAAsB,CAC5C,KAAKC,YAAY5E,IAAI2E,CAAU,CACjC,CAEA,IAAIA,YAAU,CACZ,OAAO,KAAKC,YAAW,CACzB,CAEA,IAAaC,mBAAmBC,EAAmB,CACjD,KAAKC,oBAAoB/E,IAAI8E,CAAW,CAC1C,CAEA,IAAID,oBAAkB,CACpB,OAAO,KAAKE,oBAAmB,CACjC,CAGA,IAAa3F,WAAWA,EAAmB,CACzC,KAAK4F,YAAc5F,CACrB,CAEA,IAAIA,YAAU,CACZ,OAAO,KAAK4F,WACd,CA+KAC,YAC8CC,EAC3BC,EACAC,EACAC,EACAC,EACAC,EACEC,EACFC,EACAC,EAA6C,CARlB,KAAAR,OAAAA,EAC3B,KAAAC,aAAAA,EACA,KAAAC,gBAAAA,EACA,KAAAC,yBAAAA,EACA,KAAAC,iBAAAA,EACA,KAAAC,iBAAAA,EACE,KAAAC,0BAAAA,EACF,KAAAC,UAAAA,EACA,KAAAC,qBAAAA,EA5NnB,KAAAC,uBAAyB,KAAKJ,iBAAiBK,QAAQ,iCAAiC,EAChF,KAAAlB,UAA8CmB,EAAO,CAAA,CAAE,EACvD,KAAAd,oBAA8Cc,EAAO,EAAE,EACvD,KAAAjB,YAA0CiB,EAAO,SAAS,EA0B1D,KAAAb,YAAc,GAStB,KAAA/G,WAAa6H,GAAWC,OAExB,KAAAhG,sBAAwB8F,EAAgB,EAAK,EAE7C,KAAAG,yBAA2BC,GAAa,KAAKvB,SAAS,EAAEwB,KAAKC,EAAU,IAAM,KAAKC,wBAAuB,CAAE,CAAC,EAC5G,KAAAC,wBAA0BC,GAAS,KAAKN,wBAAwB,EAEhE,KAAAO,eAAiBN,GAAa,KAAKvB,SAAS,EAAEwB,KAAKC,EAAW1B,GAAa,KAAK+B,iBAAiB/B,CAAQ,CAAC,CAAC,EAC3G,KAAAnC,cAAgBgE,GAAS,KAAKC,cAAc,EAE5C,KAAAE,YAAcR,GAAa,KAAKvB,SAAS,EAAEwB,KAAKC,EAAW1B,GAAa,KAAKiC,cAAcjC,CAAQ,CAAC,CAAC,EACrG,KAAAkC,WAAaL,GAAS,KAAKG,WAAW,EAEtC,KAAAG,cAAgBX,GAAa,KAAKvB,SAAS,EAAEwB,KAAKC,EAAW1B,GAAa,KAAKoC,YAAYpC,CAAQ,CAAC,CAAC,EACrG,KAAApG,aAAeiI,GAAS,KAAKM,aAAa,EAE1C,KAAApG,kBAAoBsG,EAAS,IAAK,CAChC,IAAMC,EAAO,KAAK1I,aAAY,EAC9B,OAAO0I,GAAQA,EAAKC,SAAS,KAAKzB,iBAAiBK,QAAQ,4BAA4B,CAAC,CAC1F,CAAC,EAED,KAAAqB,gBAAkBhB,GAAa,KAAKvB,SAAS,EAAEwB,KAAKC,EAAW1B,GAAa,KAAKyC,kBAAkBzC,CAAQ,CAAC,CAAC,EAC7G,KAAA0C,eAAiBb,GAAS,KAAKW,eAAe,EAE9C,KAAAxH,kBAAoBqH,EAAS,IACpB,KAAKtB,0BAA0B4B,6BAA6B,KAAK1C,UAAS,EAAGI,WAAW,CAChG,EAED,KAAAuC,SAA4CP,EAAS,KAC5C,CACLnG,UACE,KAAK8E,UAAU6B,SACbC,GAAgBC,KAChB,KAAKC,mBAAmB,KAAKhD,SAAUiD,EAAYC,iBAAiB,CAAC,GAClE,GAEPpH,aAAc,KAAKkH,mBAAmB,KAAKhD,SAAUiD,EAAYE,oBAAoB,EACrFpJ,YAAa,KAAKiJ,mBAAmB,KAAKhD,SAAUiD,EAAYG,mBAAmB,EACnFxF,eAAgB,KAAKoF,mBAAmB,KAAKhD,SAAUiD,EAAYI,sBAAsB,GAAGC,YAAW,EAEvGC,UAAW,KAAKP,mBAAmB,KAAKhD,SAAUiD,EAAYO,iBAAiB,EAC/EC,aAAc,KAAKT,mBAAmB,KAAKhD,SAAUiD,EAAYS,oBAAoB,GAAK,GAC1FC,WAAY,KAAKX,mBAAmB,KAAKhD,SAAUiD,EAAYW,kBAAkB,EACjFrK,cAAe,KAAKsK,iBAAiB,KAAK7D,SAAU8D,GAAeC,qBAAqB,EACxF/I,kBAAmB,KAAKgJ,6BAA4B,EACpDpK,aAAc,KAAKoJ,mBAAmB,KAAKhD,SAAUiD,EAAYgB,yBAAyB,GAE7F,EAED,KAAA7G,UAAYiF,EAAS,IAAK,CACxB,IAAM6B,EAAQ,KAAKlE,UAAUmE,UAC7B,OAAID,EACK,GAAGA,GAAOE,WAAa,EAAE,IAAIF,GAAOG,UAAY,EAAE,GAAGC,KAAI,EAE3D,KAAKpD,sBACd,CAAC,EAED,KAAA3C,WAAa8D,EAAS,IAAK,CACzB,GAAM,CAAEkB,UAAAA,CAAS,EAAK,KAAKX,SAAQ,EACnC,OAAOW,IAAc,0BACvB,CAAC,EAED,KAAA7E,sBAAwB2D,EAAS,IAAK,CACpC,GAAM,CAAEkB,UAAAA,CAAS,EAAK,KAAKX,SAAQ,EACnC,OAAOW,IAAc,uBACvB,CAAC,EAED,KAAA5E,uBAAyB0D,EAAS,IAAK,CACrC,GAAM,CAAEkB,UAAAA,CAAS,EAAK,KAAKX,SAAQ,EACnC,OAAOW,IAAc,wBACvB,CAAC,EAED,KAAA/E,WAAa6D,EAAS,IAAK,CACzB,GAAM,CAAEkB,UAAAA,EAAW3F,eAAAA,EAAgB7D,YAAAA,CAAW,EAAK,KAAK6I,SAAQ,EAC5D2B,EAAW,GACTC,GAAgB,KAAKpH,UAAS,EAAK,IACnCqH,IAAmB,KAAK7C,wBAAuB,GAAM,IAAM,IAC7D2B,IAAc,2BAChBgB,EAAW,KAAKzD,iBAAiBK,QAAQ,yBAAyB,EAAI,IAC7DoC,IAAc,yBACvBgB,EAAW,KAAKzD,iBAAiBK,QAAQ,iCAAiC,EAAI,IAE9EoD,EAAW,KAAKzD,iBAAiBK,QAAQ,sBAAsB,EAAI,IAGrE,IAAIuD,GAAW,GACf,GAAI9G,IAAmB,WACrB8G,GAAW,KAAK5D,iBAAiBK,QAAQ,+BAA+B,EAAI,YACnEvD,IAAmB,YAC5B8G,GAAW,KAAK5D,iBAAiBK,QAAQ,gCAAgC,EAAI,YACpEvD,IAAmB,UAC5B8G,GAAW,KAAK5D,iBAAiBK,QAAQ,8BAA8B,EAAI,QAE3E,QAAQpH,EAAW,CACjB,IAAK,UACH2K,GAAW,KAAK5D,iBAAiBK,QAAQ,8BAA8B,EAAI,IAC3E,MACF,IAAK,UACHuD,GAAW,KAAK5D,iBAAiBK,QAAQ,8BAA8B,EAAI,IAC3E,MACF,IAAK,WACHuD,GAAW,KAAK5D,iBAAiBK,QAAQ,+BAA+B,EAAI,IAC5E,MACF,IAAK,YACHuD,GAAW,KAAK5D,iBAAiBK,QAAQ,gCAAgC,EAAI,IAC7E,MACF,IAAK,UACHuD,GAAW,KAAK5D,iBAAiBK,QAAQ,8BAA8B,EAAI,IAC3E,MACF,IAAK,SACHuD,GAAW,KAAK5D,iBAAiBK,QAAQ,6BAA6B,EAAI,IAC1E,MACF,IAAK,SACHuD,GAAW,KAAK5D,iBAAiBK,QAAQ,6BAA6B,EAAI,IAC1E,MACF,IAAK,YACHuD,GAAW,KAAK5D,iBAAiBK,QAAQ,gCAAgC,EAAI,IAC7E,MACF,IAAK,WACHuD,GAAW,KAAK5D,iBAAiBK,QAAQ,+BAA+B,EAAI,IAC5E,MACF,IAAK,QACHuD,GAAW,KAAK5D,iBAAiBK,QAAQ,4BAA4B,EAAI,IACzE,MACF,IAAK,eACHuD,GAAW,KAAK5D,iBAAiBK,QAAQ,mCAAmC,EAAI,IAChF,MACF,IAAK,OACHuD,GAAW,KAAK5D,iBAAiBK,QAAQ,2BAA2B,EAAI,IACxE,MACF,IAAK,OACHuD,GAAW,KAAK5D,iBAAiBK,QAAQ,2BAA2B,EAAI,IACxE,MACF,IAAK,aACHuD,GAAW,KAAK5D,iBAAiBK,QAAQ,2BAA2B,EAAI,IACxE,MACF,IAAK,eACHuD,GAAW,KAAK5D,iBAAiBK,QAAQ,mCAAmC,EAAI,IAChF,KACJ,CAGF,IAAIwD,GAAgB,GAChBC,GAAS,GACb,OAAQrB,EAAS,CACf,IAAK,2BACHqB,GAAS,GAAGL,CAAQ,GAAGG,EAAQ,GAAGD,EAAe,GACjD,MACF,IAAK,yBACHE,GAAgB,KAAK7D,iBAAiBK,QAAQ,+BAA+B,EAAI,IACjFyD,GAAS,GAAGL,CAAQ,GAAGI,EAAa,GAAGH,EAAa,GAAGE,EAAQ,GAAGD,EAAe,GACjF,MACF,IAAK,wBACHE,GAAgB,KAAK7D,iBAAiBK,QAAQ,+BAA+B,EAAI,IACjFyD,GAAS,GAAGL,CAAQ,GAAGI,EAAa,GAAGH,EAAa,GAAGE,EAAQ,GAAGD,EAAe,GACjF,MACF,QACEG,GAAS,GAAGL,CAAQ,GAAGG,EAAQ,GAAGF,EAAa,GAC/C,KACJ,CACA,OAAOI,EACT,CAAC,EAED,KAAAlL,aAAe2I,EAAS,IAClB,KAAKwC,8BAA6B,EAC7B,qBAAqB,KAAKnC,eAAc,CAAE,cAAc,KAAKR,WAAU,CAAE,WAEzE,+BAA+B,KAAKA,WAAU,CAAE,EAE1D,EAwBkB,KAAAnJ,aAAeA,GACf,KAAAc,mBAAqBd,GAAe,EAVrD,KAAK8L,8BAAgChD,GACnCpB,EAAOqE,iBAAiBrD,KACtBsD,EAAKC,GACIA,IAAoB,EAC5B,CAAC,CACH,CAEL,CAKQhB,8BAA4B,CAClC,IAAMhJ,EAAoB,KAAKA,kBAAiB,EAChD,GAAIA,EAAkBgB,SAAW,EAC/B,OAEF,IAAMiJ,EAAuD,CAAA,EAE7D,QAAWjF,KAAYhF,EAAmB,CACxC,IAAMjB,EAAc,KAAKiJ,mBAAmBhD,EAAUiD,EAAYG,mBAAmB,EAC/E8B,EAAa,KAAKC,cAAcpL,CAAW,EAC3CR,EAAgB,KAAKsK,iBAAiB7D,EAAU8D,GAAeC,qBAAqB,EAC1FkB,EAA0BG,KAAK,CAC7BrL,YAAamL,EACb3L,cAAeA,EAChB,CACH,CAEA,OAAO0L,CACT,CAEQE,cAAcpL,EAAmB,CACvC,OAAQA,EAAW,CACjB,IAAK,UACH,OAAO,KAAK+G,iBAAiBK,QAAQ,+BAA+B,EACtE,IAAK,UACH,OAAO,KAAKL,iBAAiBK,QAAQ,+BAA+B,EACtE,IAAK,WACH,OAAO,KAAKL,iBAAiBK,QAAQ,gCAAgC,EACvE,IAAK,YACH,OAAO,KAAKL,iBAAiBK,QAAQ,iCAAiC,EACxE,IAAK,UACH,OAAO,KAAKL,iBAAiBK,QAAQ,+BAA+B,EACtE,IAAK,SACH,OAAO,KAAKL,iBAAiBK,QAAQ,8BAA8B,EACrE,IAAK,SACH,OAAO,KAAKL,iBAAiBK,QAAQ,8BAA8B,EACrE,IAAK,YACH,OAAO,KAAKL,iBAAiBK,QAAQ,iCAAiC,EACxE,IAAK,WACH,OAAO,KAAKL,iBAAiBK,QAAQ,gCAAgC,EACvE,IAAK,QACH,OAAO,KAAKL,iBAAiBK,QAAQ,6BAA6B,EACpE,IAAK,eACH,OAAO,KAAKL,iBAAiBK,QAAQ,oCAAoC,EAC3E,IAAK,OACH,OAAO,KAAKL,iBAAiBK,QAAQ,4BAA4B,EACnE,IAAK,OACH,OAAO,KAAKL,iBAAiBK,QAAQ,4BAA4B,EACnE,IAAK,aACH,OAAO,KAAKL,iBAAiBK,QAAQ,4BAA4B,EACnE,IAAK,eACH,OAAO,KAAKL,iBAAiBK,QAAQ,oCAAoC,CAC7E,CACF,CAEQ6B,mBAAmBhD,EAA6BqF,EAAe,CACrE,OAAO,KAAK3E,aAAa4E,2BAA2BtF,EAAUqF,CAAO,GAAGE,aAAe,EACzF,CAEQC,gBAAgBC,EAAU,CAChC,OAAIA,IAAO,GACF,KAAK9E,gBAAgB+E,IAAID,CAAE,EAAEhE,KAClCsD,EAAKY,GACIA,EAAarD,IACrB,EACDsD,GAAYC,IACVC,QAAQC,KAAK,oBAAoBN,CAAE,aAAcI,CAAK,EAC/CG,EAAG,IAAI,KAAKlF,iBAAiBK,QAAQ,4BAA4B,CAAC,GAAG,EAC7E,CAAC,EAGC6E,EAAG,EAAE,CACd,CAEQnC,iBAAiB7D,EAA6BqF,EAAe,CACnE,OAAO,KAAK3E,aAAa4E,2BAA2BtF,EAAUqF,CAAO,GAAGY,WAAa,IACvF,CAEQhE,cAAcjC,EAA2B,CAC/C,IAAMkG,EAAc,KAAKlD,mBAAmBhD,EAAUiD,EAAYkD,kBAAkB,EACpF,OAAID,IAAgB,GACX,KAAKtF,yBAAyBwF,qBAAqBF,CAAW,EAAEzE,KACrEsD,EAAKsB,GACIA,EAAkBnE,UAC1B,CAAC,EAGC8D,EAAG,EAAE,CACd,CAEQvD,kBAAkBzC,EAA2B,CACnD,IAAMkG,EAAc,KAAKlD,mBAAmBhD,EAAUiD,EAAYkD,kBAAkB,EACpF,OAAID,IAAgB,GACX,KAAKtF,yBAAyBwF,qBAAqBF,CAAW,EAAEzE,KACrEsD,EAAKsB,GAA8C,CACjD,IAAMC,EAAQD,EAAkBE,UAAUC,MAAM,GAAG,EACnD,OAAIF,EAAMtK,OAAS,EACVsK,EAAM,CAAC,EAET,EACT,CAAC,CAAC,EAICN,EAAG,EAAE,CACd,CAEQ5D,YAAYpC,EAA2B,CAE7C,OADoB,KAAKiC,cAAcjC,CAAQ,EAC5ByB,KACjBC,EAAWQ,GACF,KAAKsD,gBAAgBtD,CAAU,CACvC,CAAC,CAEN,CAEAP,yBAAuB,CACrB,IAAM8E,EAAsB,KAAKxG,UAAS,GAAIyG,cAAcC,KACzDC,GAAgBA,GAAaC,gBAAkB,SAAS,GACxDxG,YAEH,OAAIoG,EACK,KAAKK,eAAeL,CAAmB,EAEvC,KAAKM,sBAAqB,CAErC,CAEAA,uBAAqB,CACnB,OAAI,KAAK7G,aAAe,UACf,KAAK4G,eAAe,KAAK1G,kBAAkB,EAEhD,KAAKF,aAAe,UACf,KAAKW,iBAAiBmG,eAAe,UAAW,CAAC,KAAK5G,kBAAkB,CAAC,EAAEqB,KAChFsD,EAAKkC,GAA4C,CAC/C,GAAI,CAACA,GAAMC,YAAcD,EAAKC,WAAWlL,SAAW,EAClD,MAAO,GAET,IAAMmL,EAAYF,EAAKC,WAAW,CAAC,EACnC,OAAO,KAAKjG,qBAAqBmG,qBAAqB,UAAWD,CAAS,CAC5E,CAAC,CAAC,EAGCnB,EAAG,EAAE,CACd,CAEQc,eAAeO,EAAgB,CACrC,OAAO,KAAKxG,iBAAiBmG,eAAe,UAAW,CAACK,CAAQ,CAAC,EAAE5F,KACjEsD,EAAKkC,GAA4C,CAC/C,GAAI,CAACA,GAAMC,YAAcD,EAAKC,WAAWlL,SAAW,EAClD,MAAO,GAET,IAAMmL,EAAYF,EAAKC,WAAW,CAAC,EACnC,OAAO,KAAKjG,qBAAqBmG,qBAAqB,UAAWD,CAAS,CAC5E,CAAC,CAAC,CAEN,CAEQpF,iBAAiB/B,EAA2B,CAClD,IAAMsH,EAAyB,CAAA,EAM/B,OALAtH,EAAS0G,cAAca,QAASX,GAAe,CACzCA,GAAaC,gBAAkB,WAAaD,GAAavG,aAC3DiH,EAAalC,KAAKwB,EAAYvG,WAAW,CAE7C,CAAC,EACGiH,EAAatL,OAAS,EACA,KAAK6E,iBAAiBmG,eAAe,UAAWM,CAAY,EAC7D7F,KACrBsD,EAAKyC,GACIA,GAAMN,WACTM,GAAMN,YAAYnC,IACf0C,GACC,KAAK/G,aAAa4E,2BAA2BmC,EAASC,GAAoBC,KAAK,GAAGpC,WAAW,EAEjG,CAAA,CACL,CAAC,EAGCS,EAAG,CAAA,CAAE,CACd,iDA9ZWpH,GAAyBgJ,EAqN1BC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,EAAAR,EAAAS,EAAA,CAAA,CAAA,CAAA,+BArNhBzJ,EAAyB0J,UAAA,CAAA,CAAA,oBAAA,CAAA,EAAAC,OAAA,CAAAvI,SAAA,WAAAE,WAAA,aAAAE,mBAAA,qBAAAzF,WAAA,YAAA,EAAA6N,SAAA,CAAAC,GAZzB,CAACC,EAAO,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,QAAA,QAAA,EAAA,OAAA,UAAA,EAAA,CAAA,QAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,WAAA,EAAA,YAAA,EAAA,CAAA,OAAA,WAAA,kBAAA,kCAAA,YAAA,6BAAA,EAAA,OAAA,EAAA,CAAA,OAAA,OAAA,kBAAA,kCAAA,YAAA,6BAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,mBAAA,QAAA,EAAA,CAAA,SAAA,SAAA,EAAA,MAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,OAAA,SAAA,kBAAA,kCAAA,YAAA,6BAAA,EAAA,OAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,SAAA,SAAA,MAAA,WAAA,EAAA,MAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GCvCtB/O,EAAA,EAAAiP,IAAA,GAAA,EAAA,MAAA,CAAA,OAAMpQ,EAAA,OAAAmQ,EAAApG,SAAA,CAAA,iBDyCFsG,EAAYC,GAAAC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GACAC,GAAaC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACbC,GAAkBC,GAClBC,GAAaC,GACbC,GAAiBC,EAAA,EAAAC,OAAA,CAAA;0GAAA,CAAA,CAAA,CAAA,SAGR5L,CAAyB,GAAA,IEnDtC,IACA6L,GAUaC,GAXbC,GAAAC,EAAA,KACAH,GAAsB,SACtBI,KACAC,aAQaJ,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CANtCK,aAAA,CAOE,KAAAC,kBAAoB,GAEpB,IAA+BC,SAASC,EAAgB,CACtD,IAAMC,EAAcD,EAEjBE,QAAQ,kBAAmB,EAAE,EAE7BA,QAAQ,UAAW,GAAG,EAEtBA,QAAQ,uBAAwB,MAAM,EAEzC,KAAKJ,kBAAoBK,GAAAA,QAAUC,SAASH,CAAW,CACzD,iDAbWT,EAAyB,CAAA,+BAAzBA,EAAyBa,UAAA,CAAA,CAAA,wBAAA,CAAA,EAAAC,OAAA,CAAAP,SAAA,UAAA,EAAAQ,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IAJzBE,EAAA,EAAA,OAAA,CAAA,8BAAwBC,EAAA,YAAAC,EAAA,EAAA,EAAAH,EAAAd,iBAAA,EAAAkB,EAAA,iBAEzBC,EAAcC,GAAiBC,EAAA,EAAAC,OAAA,CAAA;uHAAA,CAAA,CAAA,CAAA,SAE9B5B,CAAyB,GAAA,+BEPpC6B,EAAA,CAAA,EACEC,EAAA,EAAA,QAAA,CAAA,EACEC,EAAA,EAAA,mCAAA,EACFC,EAAA,yBAFwEC,EAAA,EAAAC,GAAA,MAAAC,EAAAC,EAAA,8BAL5EN,EAAA,EAAA,KAAA,EAAoC,EAAA,0BAAA,CAAA,EAEhCO,EAAA,EAAA,yBAAA,CAAA,EACFL,EAAA,EACAM,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,eAKAT,EAAA,EAAA,MAAA,CAAA,EACEU,GAAA,EAAA,CAAA,EAGgB,EAAA,CAAA,EAIA,EAAA,CAAA,EAIA,EAAA,CAAA,eAKlBR,EAAA,EAAM,kCAzBmBC,EAAA,EAAAQ,EAAA,cAAA,GAAA,EACCR,EAAA,EAAAQ,EAAA,WAAAC,EAAAC,IAAA,EAEXV,EAAA,EAAAQ,EAAA,OAAAG,EAAA,EAAA,GAAAC,EAAAC,oBAAA,CAAA,EAOXb,EAAA,CAAA,EAAAQ,EAAA,mBAAAM,CAAA,EAAiC,0BAAAC,GAAA,GAAAC,IAAAP,EAAAQ,SAAA,CAAA,EAIjCjB,EAAA,EAAAQ,EAAA,mBAAAM,CAAA,EAAiC,0BAAAC,GAAA,GAAAG,IAAAT,EAAAU,MAAA,CAAA,EAIjCnB,EAAA,EAAAQ,EAAA,mBAAAM,CAAA,EAAiC,0BAAAC,GAAA,GAAAK,IAAAX,EAAAY,OAAA,CAAA,EAIjCrB,EAAA,EAAAQ,EAAA,mBAAAM,CAAA,EAAiC,0BAAAC,GAAA,GAAAO,IAAAC,GAAA,GAAA,GAAAd,EAAAe,KAAAZ,EAAAa,UAAA,CAAA,CAAA,8BAajC7B,EAAA,CAAA,EACEE,EAAA,CAAA,4BAAAE,EAAA,EAAA0B,EAAA,IAAAC,EAAA,GAAA,8BAPN9B,EAAA,EAAA,MAAA,CAAA,EAAoC,EAAA,MAAA,CAAA,EAEhCC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EAEEQ,EAAA,EAAAuB,IAAA,EAAA,EAAA,eAAA,CAAA,EAGF7B,EAAA,EAAM,gCAPJC,EAAA,CAAA,EAAA0B,EAAA,IAAAf,EAAA,EAAA,EAAAkB,CAAA,EAAA,GAAA,EAIe7B,EAAA,CAAA,EAAAQ,EAAA,OAAAmB,CAAA,GDpCrB,oBAqBaG,GArBbC,GAAAC,EAAA,KAAAC,IAEAC,IACAC,KACAC,IAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,6OASab,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CAKzC,IAA+Bc,SAASA,EAA2B,CACjE,KAAKC,UAAUC,IAAIF,CAAQ,CAC7B,CAEA,IAAIA,UAAQ,CACV,OAAO,KAAKC,UAAS,CACvB,CAmBQE,aAAaH,EAA6BI,EAAe,CAC/D,OAAO,KAAKC,aAAaC,2BAA2BN,EAAUI,CAAO,GAAGG,aAAe,EACzF,CAEAC,YACmBC,EACAJ,EAA6B,CAD7B,KAAAI,KAAAA,EACA,KAAAJ,aAAAA,EAnCnB,KAAAxB,WAAa6B,GAAWC,oBAGhB,KAAAV,UAA+CW,EAAO,CAAA,CAAE,EAShE,KAAAC,SAA4CC,EAAS,IAAK,CACxD,IAAMD,EAAgB,CACpB/C,KAAM,KAAKqC,aAAa,KAAKF,UAAS,EAAIc,EAAYC,gBAAgB,EACtE3C,UAAW,KAAK8B,aAAa,KAAKF,UAAS,EAAIc,EAAYE,qBAAqB,EAChF1C,OAAQ,KAAK4B,aAAa,KAAKF,UAAS,EAAIc,EAAYG,kBAAkB,EAC1EzC,QAAS,KAAK0B,aAAa,KAAKF,UAAS,EAAIc,EAAYI,mBAAmB,EAC5EvC,KACE,KAAKyB,aAAaC,2BAA2B,KAAKL,UAAS,EAAImB,GAAeC,qBAAqB,GAC/FC,WAAa,MAEfC,EAAmB,KAAKpB,aAAa,KAAKF,UAAS,EAAIc,EAAYS,wBAAwB,EACjG,OAAID,IACFV,EAASU,iBAAmBA,GAEvBV,CACT,CAAC,EAUC,KAAK5C,qBAAuBwD,GAAa,KAAKZ,QAAQ,EAAEa,KACtDC,EAAWd,GACJA,EAASU,iBAGP,KAAKd,KAAKmB,IAAIf,EAASU,iBAAkB,CAC9CM,aAAc,OACdC,gBAAiB,GAClB,EALQC,EAAG,IAAI,CAMjB,CAAC,CAEN,iDAjDW7C,GAA8B8C,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAA9BhD,EAA8BiD,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,OAAA,CAAApC,SAAA,UAAA,EAAAqC,SAAA,CAAAC,GAH9B,CAAA,CAAE,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,eAAA,EAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,EAAA,CAAA,UAAA,WAAA,WAAA,GAAA,EAAA,+BAAA,EAAA,KAAA,EAAA,CAAA,EAAA,MAAA,YAAA,UAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GClBflF,EAAA,EAAAoF,IAAA,GAAA,GAAA,MAAA,CAAA,EAAoC,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,OAA9BnF,EAAA,OAAAgF,EAAA/B,SAAA,CAAA,iBDmBMmC,EAAYC,GAAAC,GAAAC,GAAAC,GAAEC,EAAeC,EAAEC,GAAmBC,GAA6BC,EAAyB,EAAAC,OAAA,CAAA;gHAAA,CAAA,CAAA,CAAA,SAEvGxE,CAA8B,GAAA,+BGlBvCyE,EAAA,EAAA,MAAA,CAAA,EAA+C,EAAA,IAAA,CAAA,EACZC,EAAA,CAAA,EAAsDC,EAAA,EAAI,uBAAxFC,EAAA,EAAAC,EAAA,OAAAC,EAAAC,YAAAC,EAAA,EAA8BJ,EAAA,EAAAK,EAAAH,EAAAI,iBAAAJ,EAAAC,WAAA,8BAJvCN,EAAA,EAAA,KAAA,EAAoC,EAAA,0BAAA,CAAA,EAEhCU,EAAA,EAAA,yBAAA,CAAA,EACAC,EAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAGFV,EAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EACEa,GAAA,EAAA,CAAA,EAGgB,EAAA,CAAA,EAIA,EAAA,CAAA,cAKlBX,EAAA,EAAM,kCAnBmBC,EAAA,EAAAC,EAAA,cAAA,GAAA,EACCD,EAAA,EAAAC,EAAA,WAAAC,EAAAS,IAAA,EACLX,EAAA,EAAAC,EAAA,OAAAC,EAAAC,WAAA,EAMjBH,EAAA,CAAA,EAAAC,EAAA,mBAAAW,CAAA,EAAiC,0BAAAC,GAAA,GAAAC,IAAAZ,EAAAa,OAAA,CAAA,EAIjCf,EAAA,EAAAC,EAAA,mBAAAW,CAAA,EAAiC,0BAAAC,GAAA,GAAAG,IAAAd,EAAAe,OAAA,CAAA,EAIjCjB,EAAA,EAAAC,EAAA,mBAAAW,CAAA,EAAiC,0BAAAC,GAAA,GAAAK,IAAAC,GAAA,EAAA,EAAAjB,EAAAkB,KAAAC,EAAAC,UAAA,CAAA,CAAA,8BAajCC,EAAA,CAAA,EACEzB,EAAA,CAAA,4BAAAE,EAAA,EAAAwB,EAAA,IAAAC,EAAA,GAAA,8BAPN5B,EAAA,EAAA,MAAA,CAAA,EAAoC,EAAA,MAAA,EAAA,EAEhCC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,MAAA,EAAA,EAEEW,EAAA,EAAAkB,IAAA,EAAA,EAAA,eAAA,CAAA,EAGF3B,EAAA,EAAM,gCAPJC,EAAA,CAAA,EAAAwB,EAAA,IAAAG,EAAA,EAAA,EAAAC,CAAA,EAAA,GAAA,EAIe5B,EAAA,CAAA,EAAAC,EAAA,OAAAwB,CAAA,GD9BrB,gBA0BaI,GA1BbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IACAC,KACAC,KACAC,KAEAC,KACAC,KAEAC,kKAgBaX,IAAuC,IAAA,CAA9C,MAAOA,CAAuC,CAElD,IAA+BY,SAASA,EAA2B,CACjE,KAAKC,UAAUC,IAAIF,CAAQ,CAC7B,CAEA,IAAIA,UAAQ,CACV,OAAO,KAAKC,UAAS,CACvB,CAkBQE,aAAaH,EAA6BI,EAAe,CAC/D,OAAO,KAAKC,aAAaC,2BAA2BN,EAAUI,CAAO,GAAGG,aAAe,EACzF,CAEAC,YAA6BH,EAA6B,CAA7B,KAAAA,aAAAA,EA7BrB,KAAAJ,UAA+CQ,EAAO,CAAA,CAAE,EAShE,KAAA5B,WAAa6B,GAAWC,oBAExB,KAAAC,SAA4CC,EAAS,KAC7B,CACpB3C,KAAM,KAAKiC,aAAa,KAAKF,UAAS,EAAIa,EAAYC,yBAAyB,EAC/ErD,YAAa,KAAKyC,aAAa,KAAKF,UAAS,EAAIa,EAAYE,WAAW,EACxEnD,gBAAiB,KAAKsC,aAAa,KAAKF,UAAS,EAAIa,EAAYG,eAAe,GAAK,GACrF3C,QAAS,KAAK6B,aAAa,KAAKF,UAAS,EAAIa,EAAYI,4BAA4B,EACrF1C,QAAS,KAAK2B,aAAa,KAAKF,UAAS,EAAIa,EAAYK,4BAA4B,EACrFxC,KACE,KAAK0B,aAAaC,2BAA2B,KAAKL,UAAS,EAAImB,GAAeC,qBAAqB,GAC/FC,WAAa,MAGtB,CAM4D,iDA9BlDlC,GAAuCmC,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAvCpC,EAAuCqC,UAAA,CAAA,CAAA,mCAAA,CAAA,EAAAC,OAAA,CAAA1B,SAAA,UAAA,EAAA2B,SAAA,CAAAC,GAVvC,CAAA,CAAE,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,eAAA,EAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,QAAA,OAAA,EAAA,MAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,YAAA,UAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GChBflE,EAAA,EAAAoE,IAAA,EAAA,GAAA,MAAA,CAAA,EAAoC,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,OAA9B7E,EAAA,OAAA0E,EAAAtB,SAAA,CAAA,iBDkBF0B,EAAYC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GACAC,GACAC,EAAyB,EAAAC,OAAA,CAAA;yHAAA,CAAA,CAAA,CAAA,SAGhB5D,CAAuC,GAAA,+BGtBlD6D,EAAA,EAAA,MAAA,CAAA,EAAmE,EAAA,MAAA,CAAA,EAE/DC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,EAAM,qBAJJC,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,iCAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAC,EAAA,IAAAE,IAAA,OAAA,WAAAA,EAAA,GAAA,8BATNN,EAAA,EAAA,KAAA,EAAiD,EAAA,0BAAA,CAAA,EAE7CO,EAAA,EAAA,yBAAA,CAAA,EACFL,EAAA,EACAM,EAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,eAQFP,EAAA,2BAX2BC,EAAA,EAAAO,EAAA,cAAA,GAAA,EACCP,EAAA,EAAAO,EAAA,WAAAC,CAAA,EAEpBR,EAAA,EAAAO,EAAA,OAAAL,EAAA,EAAA,EAAAO,EAAAC,UAAA,CAAA,GDJR,IAkBaC,GAlBbC,GAAAC,EAAA,KAAAC,IAEAC,IACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,2BASaV,IAA+B,IAAA,CAAtC,MAAOA,CAA+B,CAC1C,IAAaW,SAASA,EAA2B,CAC/C,KAAKC,MAAMC,IAAI,CAAEF,SAAUA,CAAQ,CAAE,CACvC,CACA,IAAIA,UAAQ,CACV,OAAO,KAAKC,MAAME,IAAG,EAAGH,QAC1B,CAKAI,YACmBH,EACAI,EAA6B,CAD7B,KAAAJ,MAAAA,EACA,KAAAI,aAAAA,EALnB,KAAAC,aAAe,KAAKL,MAAMM,OAAO,aAAa,EAC9C,KAAAnB,WAAa,KAAKa,MAAMM,OAAO,WAAW,EAMxC,KAAKN,MAAMC,IAAI,CACbF,SAAUQ,OACVC,YAAa,GACbC,UAAW,GACZ,EAED,KAAKT,MAAMU,QACT,cACA,KAAKV,MACFM,OAAO,UAAU,EACjBK,KACCC,EACGb,GACC,KAAKK,aAAaS,2BAA2Bd,EAAUe,EAAYC,iBAAiB,GAAGC,aAAe,EAAE,CAC3G,CACF,EAGL,KAAKhB,MAAMU,QACT,YACA,KAAKV,MACFM,OAAO,UAAU,EACjBK,KACCC,EACGb,GACC,KAAKK,aAAaS,2BAA2Bd,EAAUe,EAAYG,sBAAsB,GAAGD,aAC5F,EAAE,CACL,CACF,CAEP,iDA7CW5B,GAA+B8B,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAA/BhC,EAA+BiC,UAAA,CAAA,CAAA,2BAAA,CAAA,EAAAC,OAAA,CAAAvB,SAAA,UAAA,EAAAwB,SAAA,CAAAC,GAH/B,CAACL,EAAO,CAAC,CAAA,EAAAM,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,QAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICftB/C,EAAA,EAAAiD,IAAA,EAAA,EAAA,MAAA,CAAA,qBAAM/C,EAAA,OAAAL,EAAA,EAAA,EAAAmD,EAAAzB,YAAA,CAAA,iBDgBM2B,EAAYC,GAAAC,GAAEC,EAAeC,EAAEC,GAAmBC,GAA6BC,EAAyB,EAAAC,OAAA,CAAA;iHAAA,CAAA,CAAA,CAAA,SAEvGpD,CAA+B,GAAA,+BGlB5CqD,EAAA,EAAA,KAAA,EAAoC,EAAA,0BAAA,CAAA,EAEhCC,EAAA,EAAA,yBAAA,CAAA,EACFC,EAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EACEG,GAAA,EAAA,CAAA,EAGgB,EAAA,CAAA,EAIA,EAAA,CAAA,cAKhBA,GAAA,EAAA,CAAA,EAIFD,EAAA,EAAM,kCApBmBE,EAAA,EAAAC,EAAA,cAAA,GAAA,EACCD,EAAA,EAAAC,EAAA,WAAAC,EAAAC,IAAA,EAItBH,EAAA,CAAA,EAAAC,EAAA,mBAAAG,CAAA,EAAiC,0BAAAC,GAAA,GAAAC,IAAAJ,EAAAK,MAAA,CAAA,EAIjCP,EAAA,EAAAC,EAAA,mBAAAG,CAAA,EAAiC,0BAAAC,GAAA,GAAAG,IAAAN,EAAAO,OAAA,CAAA,EAIjCT,EAAA,EAAAC,EAAA,mBAAAG,CAAA,EAAiC,0BAAAC,GAAA,GAAAK,IAAAC,GAAA,EAAA,GAAAT,EAAAU,KAAAC,EAAAC,UAAA,CAAA,CAAA,EAIjCd,EAAA,CAAA,EAAAC,EAAA,mBAAAG,CAAA,EAAiC,0BAAAC,GAAA,GAAAU,IAAAb,EAAAc,QAAA,CAAA,8BAajCC,EAAA,CAAA,EACEC,EAAA,CAAA,4BAAAlB,EAAA,EAAAmB,EAAA,IAAAC,EAAA,GAAA,8BAPNxB,EAAA,EAAA,MAAA,CAAA,EAAoC,EAAA,MAAA,CAAA,EAEhCsB,EAAA,CAAA,mBACFpB,EAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EAEEyB,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EAGFxB,EAAA,EAAM,gCAPJE,EAAA,CAAA,EAAAmB,EAAA,IAAAI,EAAA,EAAA,EAAAC,CAAA,EAAA,GAAA,EAIexB,EAAA,CAAA,EAAAC,EAAA,OAAAmB,CAAA,GD/BrB,oBAkBaK,GAlBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,mMASaX,IAAiC,IAAA,CAAxC,MAAOA,CAAiC,CAG5C,IAA+BY,SAASA,EAA2B,CACjE,KAAKC,UAAUC,IAAIF,CAAQ,CAC7B,CACA,IAAIA,UAAQ,CACV,OAAO,KAAKC,UAAS,CACvB,CAeQE,mBAAmBH,EAA6BI,EAAe,CACrE,OAAO,KAAKC,aAAaC,2BAA2BN,EAAUI,CAAO,GAAGG,aAAe,EACzF,CACQC,oBAAoBR,EAA6BI,EAAe,CACtE,OAAO,KAAKC,aAAaC,2BAA2BN,EAAUI,CAAO,GAAGK,cAAgB,CAC1F,CACQC,qCAAqC/B,EAAgB,CAC3D,GAAIA,IAAa,EAAG,MAAO,GAC3B,IAAMgC,EAAoBC,GAAmB,CAAEC,MAAO,EAAGC,IAAKnC,CAAQ,CAAE,EACxE,OAAIgC,EAAkBI,MAAQ,EACrB,GAAGJ,EAAkBI,KAAK,KAAKJ,EAAkBK,OAAO,IAE1D,GAAGL,EAAkBK,OAAO,GACrC,CAEAC,YAA6BZ,EAA6B,CAA7B,KAAAA,aAAAA,EArC7B,KAAA5B,WAAayC,GAAWC,oBAChB,KAAAlB,UAA+CmB,EAAO,CAAA,CAAE,EAQhE,KAAAC,SAA4CC,EAAS,IAAK,CACxD,IAAM3C,EAAW,KAAK6B,oBAAoB,KAAKP,UAAS,EAAIsB,EAAYC,uBAAuB,EAC/F,MAAO,CACL1D,KAAM,KAAKqC,mBAAmB,KAAKF,UAAS,EAAIsB,EAAYE,mBAAmB,EAC/EvD,OAAQ,KAAKiC,mBAAmB,KAAKF,UAAS,EAAIsB,EAAYG,qBAAqB,EACnFtD,QAAS,KAAK+B,mBAAmB,KAAKF,UAAS,EAAIsB,EAAYI,sBAAsB,EACrFpD,KACE,KAAK8B,aAAaC,2BAA2B,KAAKL,UAAS,EAAI2B,GAAeC,qBAAqB,GAC/FC,WAAa,KACnBnD,SAAU,KAAK+B,qCAAqC/B,CAAQ,EAEhE,CAAC,CAiB4D,iDAtClDS,GAAiC2C,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAjC5C,EAAiC6C,UAAA,CAAA,CAAA,6BAAA,CAAA,EAAAC,OAAA,CAAAlC,SAAA,UAAA,EAAAmC,SAAA,CAAAC,GAHjC,CAAA,CAAE,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,eAAA,EAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,YAAA,UAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GCffzD,EAAA,EAAA2D,IAAA,EAAA,GAAA,MAAA,CAAA,EAAoC,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,OAA9BjF,EAAA,OAAA8E,EAAArB,SAAA,CAAA,iBDgBMyB,EAAYC,GAAAC,GAAAC,GAAEC,EAAeC,EAAEC,GAAmBC,GAA6BC,EAAyB,EAAAC,OAAA,CAAA;mHAAA,CAAA,CAAA,CAAA,SAEvGnE,CAAiC,GAAA,+BGlB9CoE,EAAA,EAAA,KAAA,EAA2C,EAAA,0BAAA,CAAA,EAEvCC,EAAA,EAAA,yBAAA,CAAA,EACFC,EAAA,EAA0B,qBAFDC,EAAA,EAAAC,EAAA,cAAA,GAAA,EACCD,EAAA,EAAAC,EAAA,WAAAC,CAAA,GDF5B,IAiBaC,GAjBbC,GAAAC,EAAA,KAAAC,IAEAC,IACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,uBAQaV,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CACzC,IAAaW,SAASA,EAA2B,CAC/C,KAAKC,MAAMC,IAAI,CAAEF,SAAUA,CAAQ,CAAE,CACvC,CACA,IAAIA,UAAQ,CACV,OAAO,KAAKC,MAAME,IAAG,EAAGH,QAC1B,CAIAI,YACmBH,EACAI,EAA6B,CAD7B,KAAAJ,MAAAA,EACA,KAAAI,aAAAA,EAJnB,KAAAC,UAAY,KAAKL,MAAMM,OAAO,UAAU,EAMtC,KAAKN,MAAMC,IAAI,CACbF,SAAUQ,OACVC,SAAU,GACX,EAED,KAAKR,MAAMS,QACT,WACA,KAAKT,MACFM,OAAO,UAAU,EACjBI,KACCC,EACGZ,GACC,KAAKK,aAAaQ,2BAA2Bb,EAAUc,EAAYC,gBAAgB,GAAGC,aAAe,EAAE,CAC1G,CACF,CAEP,iDA9BW3B,GAA8B4B,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAA9B9B,EAA8B+B,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,OAAA,CAAArB,SAAA,UAAA,EAAAsB,SAAA,CAAAC,GAH9B,CAACL,EAAO,CAAC,CAAA,EAAAM,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICdtBE,EAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,qBAAM5C,EAAA,OAAA6C,EAAA,EAAA,EAAAH,EAAAvB,SAAA,CAAA,iBDeM2B,EAAYC,GAAAC,GAAEC,EAAiBC,GAAmBC,GAA6BC,EAAyB,EAAAC,cAAA,CAAA,CAAA,CAAA,SAEvGnD,CAA8B,GAAA,8BGV7BoD,EAAA,EAAA,cAAA,CAAA,kBACEC,EAAA,QAAAC,EAAAC,YAAA,6BAMFH,EAAA,EAAA,cAAA,CAAA,kBACEC,EAAA,QAAAC,EAAAC,YAAA,8BAVNC,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAAC,IAAA,EAAA,EAAA,cAAA,CAAA,EAAwB,EAAAC,IAAA,EAAA,EAAA,cAAA,CAAA,EAe1BC,EAAA,mBAfEC,EAAA,EAAAC,EAAAR,EAAAS,eAAA,EAAA,EAAA,CAAA,8BAuBMC,EAAA,EAAA,KAAA,EAAER,EAAA,EAAA,IAAA,CAAA,EAAkDQ,EAAA,CAAA,EAAuBJ,EAAA,mBAAtEC,EAAA,EAAAI,GAAA,OAAAC,EAAAC,SAAAC,EAAA,EAA+CP,EAAA,EAAAQ,EAAAH,EAAAI,QAAA,6BAEpDN,EAAA,CAAA,kBAAAO,EAAA,MAAAL,EAAAI,SAAA,GAAA,6BAHFb,EAAA,EAAAe,IAAA,EAAA,CAAA,EAA8C,EAAAC,IAAA,EAAA,CAAA,kBAA9CX,EAAAI,EAAAC,UAAAD,EAAAI,SAAA,EAAAJ,EAAAI,SAAA,EAAA,EAAA,8BAHJd,EAAA,EAAA,OAAA,CAAA,EACEQ,EAAA,CAAA,EACAP,EAAA,EAAAiB,IAAA,EAAA,CAAA,EAOFd,EAAA,mBAREC,EAAA,EAAAU,EAAA,IAAAjB,EAAAqB,WAAA,EAAA,GAAA,EACAd,EAAA,EAAAC,EAAAR,EAAAS,eAAA,EAAA,EAAA,EAAA,2BASFP,EAAA,EAAA,OAAA,CAAA,EAAoBQ,EAAA,CAAA,mBAA0CJ,EAAA,SAA1CC,EAAA,EAAAQ,EAAAO,EAAA,EAAA,EAAA,wBAAA,CAAA,8BAKpBpB,EAAA,EAAA,IAAA,CAAA,EACEQ,EAAA,CAAA,cACFJ,EAAA,wBADEC,EAAA,EAAAU,EAAA,IAAAM,GAAA,EAAA,EAAAX,EAAAY,cAAAxB,EAAAyB,UAAA,EAAA,GAAA,8BAOJvB,EAAA,EAAA,WAAA,CAAA,EAAmD,EAAA,kBAAA,EAE/CwB,GAAA,EAAA,CAAA,EACFpB,EAAA,EAAmB,wBADHC,EAAA,CAAA,EAAAR,EAAA,mBAAA4B,CAAA,6BAIlBD,GAAA,EAAA,CAAA,uBAAc3B,EAAA,mBAAA4B,CAAA,8BAQlBzB,EAAA,EAAA,KAAA,EAAK,EAAA,0BAAA,EAAA,EAC0C,EAAA,IAAA,EAAA,EAEzCJ,EAAA,EAAA,OAAA,EAAA,sBACFQ,EAAA,EAAI,EACoB,mBAJDC,EAAA,EAAAR,EAAA,cAAA,GAAA,EAEfQ,EAAA,CAAA,EAAAR,EAAA,YAAAuB,EAAA,EAAA,EAAAV,EAAAgB,QAAA,EAAAC,EAAA,8BAMZ3B,EAAA,EAAA,MAAA,CAAA,EAAkB,EAAA,IAAA,CAAA,EACiCQ,EAAA,CAAA,EAAsDJ,EAAA,EAAI,mBAAxGC,EAAA,EAAAR,EAAA,OAAAa,EAAAkB,YAAAhB,EAAA,EAA8CP,EAAA,EAAAQ,EAAAH,EAAAmB,iBAAAnB,EAAAkB,WAAA,6BAXrD3B,EAAA,EAAA6B,IAAA,EAAA,EAAA,KAAA,EAAyB,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,iBAAzBzB,EAAAI,EAAAgB,SAAA,EAAA,EAAA,EASArB,EAAA,EAAAC,EAAAI,EAAAkB,YAAA,EAAA,EAAA,8BAtEF5B,EAAA,EAAA,KAAA,EAAK,EAAA,UAAA,EACO,EAAA,iBAAA,EAENC,EAAA,EAAA+B,IAAA,EAAA,EAAA,MAAA,CAAA,EAmBAhC,EAAA,EAAA,gBAAA,EACEC,EAAA,EAAAgC,IAAA,EAAA,EAAA,OAAA,CAAA,EAAoB,EAAAC,IAAA,EAAA,EAAA,OAAA,CAAA,EActB9B,EAAA,EACAJ,EAAA,EAAA,mBAAA,EACEC,EAAA,EAAAkC,IAAA,EAAA,EAAA,IAAA,CAAA,EAKF/B,EAAA,EAAoB,EAEtBJ,EAAA,EAAA,kBAAA,EACEC,EAAA,GAAAmC,IAAA,EAAA,EAAA,WAAA,CAAA,EAAwB,GAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EAS1BjC,EAAA,EAAmB,EACV,EAGbH,EAAA,GAAAqC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,kBA1DqBlC,EAAA,CAAA,EAAAmC,GAAA,cAAA1C,EAAA2C,WAAA,MAAA3C,EAAAC,aAAA,IAAA2C,SAAA,EAAA,IAAA,EACfrC,EAAA,EAAAC,EAAAR,EAAA2C,WAAA,EAAA,EAAA,EAoBEpC,EAAA,CAAA,EAAAC,EAAAR,EAAAqB,WAAA,EAAA,EAAA,CAAA,EAgBAd,EAAA,CAAA,EAAAC,EAAAqC,EAAArB,gBAAA,KAAA,EAAA,EAAA,EAOcjB,EAAA,EAAAmC,GAAA,eAAA1C,EAAAC,aAAA,IAAA2C,SAAA,EAAA,IAAA,EAChBrC,EAAA,EAAAC,EAAAR,EAAAS,eAAA,EAAA,GAAA,EAAA,GDhDR,IAgCaqC,GAhCbC,GAAAC,EAAA,KAAAC,KACAC,IACAC,KACAC,KACAC,KAEAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,gCAiBajB,IAAwB,IAAA,CAA/B,MAAOA,CAAwB,CAEnC,IAA+BkB,SAASA,EAA2B,CACjE,KAAKC,UAAUC,IAAIF,CAAQ,CAC7B,CACA,IAAIA,UAAQ,CACV,OAAO,KAAKC,UAAS,CACvB,CAGA,IAAatB,WAAWA,EAAmB,CACzC,KAAKwB,YAAcxB,CACrB,CAEA,IAAIA,YAAU,CACZ,OAAO,KAAKwB,WACd,CA8BQC,mBAAmBJ,EAA6BK,EAAe,CACrE,OAAO,KAAKC,aAAaC,2BAA2BP,EAAUK,CAAO,GAAGG,aAAe,EACzF,CAEQC,iBAAiBT,EAA6BK,EAAe,CACnE,OAAO,KAAKC,aAAaC,2BAA2BP,EAAUK,CAAO,GAAGK,WAAa,IACvF,CAEQC,aAAW,CACjB,IAAMC,EAAS,KAAKR,mBAAmB,KAAKJ,SAAUa,EAAYC,8BAA8B,EAChG,GAAIF,IAAW,IAAM,CAAC,KAAKnE,eAAc,EACvC,OAAO,KAET,IAAMsE,EAAO,sBAAsBH,CAAM,GACzC,OAAI,KAAKI,sBAAqB,EACrB,qBAAqB,KAAKC,UAAS,CAAE,GAAGF,CAAI,GAE9CA,CACT,CAEAG,YACmBZ,EAC2Ba,EAAuB,CADlD,KAAAb,aAAAA,EAC2B,KAAAa,OAAAA,EAnEtC,KAAAlB,UAA+CmB,EAAO,CAAA,CAAE,EAQxD,KAAAjB,YAAc,GAQtB,KAAA1C,WAAa4D,GAAWC,OAExB,KAAA7E,eAAiB8E,EAAS,IACD,KAAKnB,mBAAmB,KAAKJ,SAAUa,EAAYW,kBAAkB,IAClE,MAC3B,EAED,KAAAP,UAAYQ,GAAS,KAAKN,OAAOO,UAAU,EAE3C,KAAAV,sBAAwBS,GACtB,KAAKN,OAAOQ,iBAAiBC,KAC3BC,EAAKC,GACIA,IAAoB,EAC5B,CAAC,CACH,EAGH,KAAAC,SAA4CR,EAAS,KAC5C,CACL3D,SAAU,KAAKwC,mBAAmB,KAAKJ,SAAUa,EAAYmB,gBAAgB,EAC7EC,UAAW,KAAK7B,mBAAmB,KAAKJ,SAAUa,EAAYqB,iBAAiB,EAC/E1E,cAAe,KAAKiD,iBAAiB,KAAKT,SAAUmC,GAAeC,qBAAqB,EACxFtE,YAAa,KAAKsC,mBAAmB,KAAKJ,SAAUa,EAAYwB,WAAW,EAC3EtE,gBAAiB,KAAKqC,mBAAmB,KAAKJ,SAAUa,EAAYyB,eAAe,EACnFtF,SAAU,KAAKoD,mBAAmB,KAAKJ,SAAUa,EAAY0B,8BAA8B,EAC3F1F,SAAU,KAAK8D,YAAW,GAE7B,EA2BkB,KAAA1E,aAAeA,GAElC,KAAAoB,WAAakE,EAAS,IAAK,CACzB,GAAM,CAAEU,UAAAA,CAAS,EAAK,KAAKF,SAAQ,EACnC,OAAOE,GAAa,EACtB,CAAC,CAPE,iDArEQnD,GAAwB0D,EAAAC,EAAA,EAAAD,EAoEzBE,EAAiB,CAAA,CAAA,CAAA,+BApEhB5D,EAAwB6D,UAAA,CAAA,CAAA,mBAAA,CAAA,EAAAC,OAAA,CAAA5C,SAAA,WAAArB,WAAA,YAAA,EAAAkE,SAAA,CAAAC,GAXxB,CAACC,EAAO,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,aAAA,WAAA,EAAA,YAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,OAAA,eAAA,kBAAA,kCAAA,YAAA,UAAA,EAAA,OAAA,EAAA,CAAA,OAAA,WAAA,kBAAA,kCAAA,YAAA,UAAA,EAAA,OAAA,EAAA,CAAA,SAAA,SAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAvE,EAAA,IAAAuE,EAAA,GCrBtBjH,EAAA,EAAAkH,IAAA,GAAA,CAAA,aAAA7G,GAAA8G,EAAAzE,EAAAkD,SAAA,GAAA,EAAA,GAAAuB,CAAA,kBDuBIC,EAAYC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GACAC,GAAaC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACbC,GAAkBC,GAClBC,EAAgB,EAAAC,OAAA,CAAA;yGAAA,CAAA,CAAA,CAAA,SAGP1F,CAAwB,GAAA,+BG7B/B2F,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAA,cAAA,CAAA,EAMFC,EAAA,mBALIC,EAAA,EAAAC,EAAA,QAAAC,EAAAC,YAAA,EAAsB,OAAAD,EAAAE,KAAA,CAAA,0BAM1BN,EAAA,EAAA,MAAA,CAAA,6BAKED,EAAA,EAAA,IAAA,CAAA,EACEQ,EAAA,CAAA,cACFN,EAAA,8BADEC,EAAA,EAAAM,EAAA,IAAAC,GAAA,EAAA,EAAAC,EAAAC,cAAAP,EAAAQ,UAAA,EAAA,GAAA,8BAhBRb,EAAA,EAAA,UAAA,EAAmC,EAAA,iBAAA,EAE/Bc,EAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAA0D,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAS1DhB,EAAA,EAAA,gBAAA,EAAgB,EAAA,OAAA,CAAA,EACMQ,EAAA,CAAA,EAAyBN,EAAA,EAAO,EAEtDF,EAAA,EAAA,mBAAA,EACEc,EAAA,EAAAG,IAAA,EAAA,EAAA,IAAA,CAAA,EAGFf,EAAA,EAAoB,EAEtBF,EAAA,EAAA,kBAAA,EAA8E,GAAA,OAAA,CAAA,EACtDQ,EAAA,EAAA,EAA0BN,EAAA,EAAO,EACtC,6BArBFC,EAAA,EAAAe,GAAA,cAAAb,EAAAc,WAAA,MAAAd,EAAAC,aAAA,IAAAc,SAAA,EAAA,IAAA,EACKjB,EAAA,EAAAC,EAAA,OAAAO,EAAAU,qBAAA,EAQAlB,EAAA,EAAAC,EAAA,OAAA,CAAAO,EAAAU,qBAAA,EAEElB,EAAA,CAAA,EAAAmB,EAAAX,EAAAY,UAAA,EAGhBpB,EAAA,CAAA,EAAAC,EAAA,OAAAO,EAAAC,gBAAA,IAAA,EAKUT,EAAA,EAAAe,GAAA,eAAAb,EAAAC,aAAA,IAAAc,SAAA,EAAA,IAAA,EACMjB,EAAA,CAAA,EAAAmB,EAAAX,EAAAa,WAAA,8BAtB5BC,EAAA,CAAA,EACEX,EAAA,EAAAY,IAAA,GAAA,EAAA,WAAA,CAAA,yBAAWvB,EAAA,EAAAC,EAAA,OAAAO,EAAAgB,OAAA,GDDb,IAkCMC,GAWOC,GA7CbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,IAEAC,KACAC,KAEAC,KACAC,KAEAC,KACAC,KACAC,KAQAC,KACAC,KAEAC,sCASMlB,GAAoB,CACxBmB,QAAS,WACTC,YAAa,mBASFnB,IAAgC,IAAA,CAAvC,MAAOA,CAAgC,CAI3CoB,GAOA,IAAaC,SAASA,EAA2B,CAC/C,KAAKD,GAAUE,IAAID,CAAQ,CAC7B,CAEA,IAAIA,UAAQ,CACV,OAAO,KAAKD,GAAS,CACvB,CAEA,IAAI9B,YAAU,CACZ,OAAO,KAAKiC,WACd,CAyIAC,YACmBC,EACAC,EACAC,EAC2BC,EACCC,EAA4B,CAJxD,KAAAJ,aAAAA,EACA,KAAAC,6BAAAA,EACA,KAAAC,iBAAAA,EAC2B,KAAAC,OAAAA,EACC,KAAAC,mBAAAA,EAlK/C,KAAApD,aAAeA,GACf,KAAAO,WAAa8C,GAAWC,OAExB,KAAAX,GAAYY,EAA0B,CAAA,CAAE,EACvB,KAAAC,UAAYC,GAAS,KAAKN,OAAOO,UAAU,EAEpD,KAAAZ,YAAc,GAEtB,KAAAzB,QAAUkC,EAAgB,EAAK,EAc/B,KAAAI,iBAAmBC,EAAS,IACnB,KAAKZ,aAAaa,2BAA2B,KAAKlB,GAAS,EAAImB,GAAoBC,wBAAwB,GAC9GC,WACL,EAED,KAAAC,WAAaL,EAAS,IAAK,CACzB,IAAMhB,EAAW,KAAKD,GAAS,EAC/B,GAAIC,EAASsB,eAAiBC,QAAavB,EAASsB,aAAaE,SAAW,EAAG,CAC7EC,QAAQC,KAAK,oEAAqE,KAAK3B,GAAS,EAAG4B,WAAW,EAC9G,MACF,CACA,OAAO3B,EAASsB,aAAa,CAAC,EAAEM,aAClC,CAAC,EAED,KAAAvE,KAAO2D,EAAS,IACK,KAAKK,WAAU,IACf,cACV3C,GAAkBoB,YAEpBpB,GAAkBmB,OAC1B,EAED,KAAAgC,WAAab,EAAS,IACb,KAAKZ,aAAaa,2BAA2B,KAAKlB,GAAS,EAAI+B,EAAYC,kBAAkB,GAAGX,WACxG,EAED,KAAAY,SAAWhB,EAAS,KACX,CACLvC,QAAS,KAAKA,QAAO,EACrBJ,WAAY,KAAKA,WAAU,EAC3BC,YAAa,KAAKA,YAAW,EAC7BZ,cAAe,KAAKA,cAAa,EACjCS,sBAAuB,KAAKA,sBAAqB,GAEpD,EAED,KAAAE,WAAa2C,EAAS,IAAK,CACzB,IAAMiB,EAAe,KAAKA,aAAY,EAElCC,EAAa,GACjB,OAAQ,KAAKnB,iBAAgB,EAAE,CAC7B,IAAK,UACHmB,EAAa,iCACb,MACF,IAAK,0BACHA,EAAa,iDACb,KACJ,CACA,IAAMC,EAAqB,KAAKd,WAAU,EAC1C,GAAIc,IAAuBZ,OACzB,MAAO,GAET,IAAMM,EAAa,KAAKA,WAAU,EAC9BA,IAAeN,SACjBW,EAAa,sCAEf,IAAME,EAAa,KAAK/B,6BAA6BgC,2BAA2BF,EAAoBD,CAAU,EAC9G,OAAIL,IAAeN,OACV,GAAGa,CAAU,IAAIP,CAAU,GAGhC,KAAKd,iBAAgB,IAAO,0BASvB,GAPyB,KAAKV,6BAA6BgC,2BAChEF,EAFiB,iDAIjB,CACEG,aAAc,cACf,CAE8B,IAAIL,GAAcM,cAAc,CAAC,EAAEC,aAAe,EAAE,GAAGC,KAAI,EAEvFL,CACT,CAAC,EAED,KAAA1E,cAAgBsD,EAAS,IAErB,KAAKZ,aAAaa,2BAA2B,KAAKlB,GAAS,EAAI2C,GAAeC,qBAAqB,GAAGC,WACtG,IAEH,EAED,KAAAX,aAAetB,EAAiCY,MAAS,EAEzD,KAAAjD,YAAc0C,EAAS,IAAK,CAC1B,IAAMiB,EAAe,KAAKA,aAAY,EAEhCE,EAAqB,KAAKd,WAAU,EAC1C,GAAIc,IAAuBZ,OACzB,MAAO,GAGT,GAAI,KAAKR,iBAAgB,IAAO,0BAA2B,CACzD,GAAIkB,GAAcY,uBAAyB,MAAQZ,GAAca,uBAAwB,CAEvF,IAAMC,EAA+B,KAAK1C,6BAA6BgC,2BACrEF,EAFiB,oEAGP,EAOZ,MAAO,GAJ8B,KAAK9B,6BAA6BgC,2BACrEF,EAFiB,4DAGP,CAE0B,IAAIY,CAA4B,GAAGN,KAAI,CAC/E,CACA,GAAIR,GAAcY,uBAAyB,KAAM,CAC/C,IAAMX,EAAa,6DACbc,EAAsB,CAC1Bf,GAAcY,qBAAqBI,WAAa,GAChDhB,GAAcY,qBAAqBK,UAAY,EAAE,EAEhDC,IAAKC,GAASA,EAAKX,KAAI,CAAE,EACzBY,KAAK,GAAG,EAKX,MAAO,GAJ8B,KAAKhD,6BAA6BgC,2BACrEF,EACAD,CAAU,CAE0B,IAAIc,CAAmB,GAAGP,KAAI,CACtE,CAMA,MAAO,GAJkC,KAAKpC,6BAA6BgC,2BACzEF,EAFiB,yEAGP,CAE8B,EAC5C,CACA,MAAO,EACT,CAAC,EAED,KAAAhE,sBAAwB6C,EAAS,IACV,KAAKiB,aAAY,GACjBqB,UAAUC,mBAAqB,EACrD,EASCC,GAAO,IAAK,CACV,GAAI,CAAC,KAAKzC,iBAAgB,GAAM,KAAKA,iBAAgB,IAAO,0BAC1D,KAAKkB,aAAahC,IAAIsB,MAAS,EAC/B,KAAK9C,QAAQwB,IAAI,EAAI,UACZ,KAAKc,iBAAgB,IAAO,0BAA2B,CAChE,IAAM0C,EACJ,KAAK1D,GAAS,EAAGuB,cAAcoC,KAAMC,GAAgBA,EAAY/B,gBAAkB,SAAS,GAAGD,aAC/F,GACIiC,EACJ,KAAKxD,aAAaa,2BAA2B,KAAKlB,GAAS,EAAI+B,EAAY+B,4BAA4B,GACnGzC,aAAe,GAErB,KAAKd,iBACFwD,kBAAkB,CACjBlC,cAAe,KAAKP,WAAU,EAC9BT,UAAW,KAAKA,UAAS,EACzBmD,wBAAyB,CACvB,CACEpC,YAAa8B,EACbO,YAAaJ,EACd,EAEJ,EACAK,KACCC,EAAWC,GAAO,CAChB,IAAMC,EAASD,EAAIE,WAAW,CAAC,EACzBC,EAAmB,KAAKlE,aAAaa,2BACzCmD,EACAtC,EAAYyC,2BAA2B,GACtCnD,YACGoD,EAAkBJ,EAAOI,gBACzB5D,EAAY,KAAKA,UAAS,GAAM,GAEtC,OAAO6D,EAAc,CACnBC,EAAGN,CAAM,EACTE,EACI,KAAK9D,mBACFmE,0BAA0B/D,EAAW0D,CAAgB,EACrDL,KAAKW,GAAW,IAAMF,EAAG,IAAI,CAAC,CAAC,EAClCA,EAAG,IAAI,EACXF,EAAkB,KAAKjE,OAAOsE,UAAUC,aAAaC,cAAc,CAACP,CAAe,CAAC,GAAKQ,GAAQA,GACjGN,EAAGJ,CAAgB,CAAC,CACrB,CACH,CAAC,EACDW,GAAK,CAAC,CAAC,EAERC,UAAU,CAAC,CAACd,EAAQe,EAAaC,EAAgBd,CAAgB,IAAK,CACrE,IAAMrC,EAAe,CAAA,EACrBA,EAAaqB,UAAYc,EACzBnC,EAAaY,qBAAuBsC,EACpClD,EAAaM,cAAgB6C,EAC7BnD,EAAaa,uBAAyBwB,GAAoB,KAC1D,KAAKrC,aAAahC,IAAIgC,CAAY,EAClC,KAAKxD,QAAQwB,IAAI,EAAI,CACvB,CAAC,CACL,CACF,CAAC,CACH,iDA9NWtB,GAAgC0G,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAkKjCI,EAAiB,EAAAJ,EACjBK,EAAkB,CAAA,CAAA,CAAA,+BAnKjB/G,EAAgCgH,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,OAAA,CAAA5F,SAAA,UAAA,EAAA6F,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,kBAAA,kCAAA,YAAA,UAAA,EAAA,QAAA,MAAA,EAAA,CAAA,EAAA,gBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GC7C7CrI,EAAA,EAAAuI,IAAA,EAAA,EAAA,eAAA,CAAA,OAAejJ,EAAA,OAAAgJ,EAAAlE,SAAA,CAAA,iBD2CHoE,EAAYC,GAAAC,GAAEC,EAAiBC,GAAmBC,GAAaC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAEC,GAAmBC,GAAkBC,EAAA,EAAAC,OAAA,CAAA;wGAAA,CAAA,CAAA,CAAA,SAErGxI,CAAgC,GAAA,wCG7C7CyI,EAAA,EAAA,KAAA,EAAoC,EAAA,0BAAA,CAAA,EACW,EAAA,kBAAA,CAAA,EACL,EAAA,MAAA,CAAA,EACR,EAAA,eAAA,CAAA,EACyBC,EAAA,SAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAUF,EAAAG,2BAAA,CAA4B,CAAA,CAAA,EAAGC,EAAA,EAC5FR,EAAA,EAAA,KAAA,EAAK,EAAA,MAAA,CAAA,EACgBS,EAAA,CAAA,EAAoBD,EAAA,EACvCR,EAAA,EAAA,UAAA,EACEU,EAAA,EAAA,MAAA,CAAA,uBACFF,EAAA,EAAW,EACP,EACF,EACU,EAGpBR,EAAA,GAAA,MAAA,CAAA,EACEW,GAAA,GAAA,CAAA,eAIAA,GAAA,GAAA,CAAA,oBAIAA,GAAA,GAAA,CAAA,EAGgB,GAAA,CAAA,EAKlBH,EAAA,EAAM,oCA/BmBI,EAAA,EAAAC,EAAA,cAAA,GAAA,EAGLD,EAAA,CAAA,EAAAC,EAAA,cAAAT,EAAAU,oBAAA,EAEOF,EAAA,CAAA,EAAAG,EAAAC,EAAAC,KAAA,EAESL,EAAA,CAAA,EAAAC,EAAA,YAAAK,EAAA,GAAA,GAAAF,EAAAG,IAAA,EAAAC,EAAA,EAShCR,EAAA,CAAA,EAAAC,EAAA,mBAAAQ,CAAA,EAAiC,0BAAAC,GAAA,GAAAC,IAAAC,GAAA,GAAA,GAAAR,EAAAS,QAAArB,EAAAsB,UAAA,CAAA,CAAA,EAIjCd,EAAA,CAAA,EAAAC,EAAA,mBAAAQ,CAAA,EAAiC,0BAAAC,GAAA,GAAAK,IAAAT,EAAA,GAAA,GAAAF,EAAAY,QAAA,CAAA,CAAA,EAIjChB,EAAA,CAAA,EAAAC,EAAA,mBAAAQ,CAAA,EAAiC,0BAAAC,GAAA,GAAAO,IAAAb,EAAAc,IAAA,CAAA,EAIjClB,EAAA,EAAAC,EAAA,mBAAAQ,CAAA,EAAiC,0BAAAC,GAAA,GAAAS,IAAAf,EAAAgB,QAAA,CAAA,8BAajCC,EAAA,CAAA,EACExB,EAAA,CAAA,4BAAAG,EAAA,EAAAsB,EAAA,IAAAC,EAAA,GAAA,8BAPNnC,EAAA,EAAA,MAAA,EAAA,EAAoC,EAAA,MAAA,EAAA,EAEhCS,EAAA,CAAA,mBACFD,EAAA,EACAR,EAAA,EAAA,MAAA,EAAA,EAEEoC,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EAGF7B,EAAA,EAAM,gCAPJI,EAAA,CAAA,EAAAsB,EAAA,IAAAhB,EAAA,EAAA,EAAAoB,CAAA,EAAA,GAAA,EAIe1B,EAAA,CAAA,EAAAC,EAAA,OAAAsB,CAAA,GD1CrB,oBAgDaI,GAhDbC,GAAAC,EAAA,KAAAC,IACAC,IAWAC,IACAC,KACAC,KACAC,KAEAC,KAEAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,sPAqBajB,IAAwB,IAAA,CAA/B,MAAOA,CAAwB,CAInC,IAA+BkB,SAASA,EAA2B,CACjE,KAAKC,UAAUC,IAAIF,CAAQ,CAC7B,CACA,IAAIA,UAAQ,CACV,OAAO,KAAKC,UAAS,CACvB,CAyBAE,UAAQ,CACN,IAAMC,EACJ,KAAKJ,UAAUK,QAAQC,KAAMC,GAAUA,EAAMC,UAAYC,EAAYC,kBAAkB,GAAGC,cAC1FD,GAAmBE,UACrB,KAAKvD,qBAAqBwD,SAAST,EAAiB,CAAEU,UAAW,EAAK,CAAE,CAC1E,CAEQC,aAAaf,EAA6BQ,EAAe,CAC/D,OAAO,KAAKQ,aAAaC,2BAA2BjB,EAAUQ,CAAO,GAAGG,aAAe,EACzF,CAEQO,gBAAgBlB,EAA2B,CACjD,IAAMmB,EAAUnB,GAAUmB,SAAW,GAC/BC,EAAO,KAAKC,OAAOf,KAAMc,GAASA,EAAKE,SAAWH,CAAO,EAK/D,MAJiB,CAACC,GAAMG,UAAWH,GAAMI,QAAQ,EAC9CC,IAAKC,GAASA,GAAMC,KAAI,CAAE,EAC1BC,OAAQF,GAASA,CAAI,EACrBG,KAAK,GAAG,GACQ,KAAKC,sBAC1B,CAEQC,yBAAuB,CAC7B,OAAO,KAAK1E,qBAAqB2E,MAAQtB,GAAmBE,UAAYF,GAAmBuB,IAC7F,CAEQC,gBAAgBlC,EAA2B,CACjD,OAAOA,GAAUmC,YACnB,CAEQC,iBAAiBC,EAAc,CACrC,IAAMrC,EAAW,KAAKA,SAChBO,EAAQ,KAAKS,aAAaC,2BAA2BjB,EAAUS,EAAYC,kBAAkB,EAC/FH,EACFA,EAAMI,YAAc0B,EAEpBrC,EAASK,QAAQiC,KAAK,CAAE9B,QAASC,EAAYC,mBAAoBC,YAAa0B,CAAM,CAAE,EAExF,KAAKpC,UAAUC,IAAIF,CAAQ,EAC3B,KAAKuC,eAAeC,KAAKxC,CAAQ,CACnC,CAEMlD,4BAA0B,QAAA2F,GAAA,sBAC9B,IAAMJ,EAAS,KAAKN,wBAAuB,EACrC/B,EAA8B,CAClC0C,YAAa,KAAK1C,SAAS0C,YAC3BC,iBAAkB,KAAK3C,SAAS2C,iBAChCtC,OAAQ,CAAC,CAAEG,QAASC,EAAYC,mBAAoBC,YAAa0B,CAAM,CAAE,GAGrEO,EAA2B,CAC/BC,MAAO,CAACpC,EAAYC,kBAAkB,GAExC,GAAI,CACF,MAAMoC,GAAe,KAAKC,gBAAgBC,eAAehD,EAAU4C,CAAI,CAAC,EACxE,KAAKK,MAAMC,iBAAiB,4BAA4B,EACxD,KAAKd,iBAAiBC,CAAM,CAC9B,MAAY,CACV,KAAKY,MAAME,eAAe,0BAA0B,CACtD,CACF,GAEAC,YACmBpC,EACA+B,EACAE,EAAsB,CAFtB,KAAAjC,aAAAA,EACA,KAAA+B,gBAAAA,EACA,KAAAE,MAAAA,EAjGnB,KAAA5F,qBAAuB,IAAIgG,GAAqB,EAAK,EACrD,KAAApF,WAAaqF,GAAWC,oBAChB,KAAAtD,UAA+CuD,EAAO,CAAA,CAAE,EAOtD,KAAAjB,eAAiB,IAAIkB,GAMvB,KAAA3B,uBAAyB,kCAEjC,KAAA4B,SAA4CC,EAAS,KAC5C,CACLjB,YAAa,KAAKzC,UAAS,EAAGyC,YAC9BlF,MAAO,KAAKuD,aAAa,KAAKd,UAAS,EAAIQ,EAAYmD,YAAY,EACnElG,KAAM,KAAKqD,aAAa,KAAKd,UAAS,EAAIQ,EAAYoD,gBAAgB,EACtExB,OAAQ,KAAKtB,aAAa,KAAKd,UAAS,EAAIQ,EAAYC,kBAAkB,EAC1ErC,KAAM,KAAK0C,aAAa,KAAKd,UAAS,EAAIQ,EAAYqD,gBAAgB,EACtEvF,SAAU,KAAKwC,aAAa,KAAKd,UAAS,EAAIQ,EAAYsD,oBAAoB,EAC9E/F,QACE,KAAKgD,aAAaC,2BAA2B,KAAKhB,UAAS,EAAIQ,EAAYuD,mBAAmB,GAAGC,WACjG,KACF9F,SAAU,KAAK+C,gBAAgB,KAAKjB,UAAS,CAAE,EAC/CkC,aAAc,KAAKD,gBAAgB,KAAKjC,UAAS,CAAE,GAEtD,CAmEE,iDAnGQnB,GAAwBoF,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,+BAAxBvF,EAAwBwF,UAAA,CAAA,CAAA,mBAAA,CAAA,EAAAC,OAAA,CAAAvE,SAAA,WAAAqB,MAAA,QAAAmD,iBAAA,kBAAA,EAAAC,QAAA,CAAAlC,eAAA,gBAAA,EAAAmC,SAAA,CAAAC,GAdxB,CAAA,CAAE,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,eAAA,EAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,MAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,SAAA,aAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,WAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,YAAA,UAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GClCfrG,EAAA,EAAAuG,IAAA,GAAA,GAAA,MAAA,CAAA,EAAoC,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,OAA9BhI,EAAA,OAAA6H,EAAAvB,SAAA,CAAA,iBDoCF2B,EAAYC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GAAiBC,GACjBC,GAAmBC,GAAAC,GACnBC,GAAqBC,GAAAC,GACrBC,GACAC,GACAC,GACAC,EAAgB,EAAAC,OAAA,CAAA;yGAAA,CAAA,CAAA,CAAA,SAGP1H,CAAwB,GAAA,IE2IrC,SAAS2H,IAAoBC,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA+IA,SAASC,GAAkBF,EAASC,EAAO,CACzC,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CApVA,IAIME,IACAC,IAOFC,IA6BAC,GASAC,GAYAC,GAMAC,GAgBAC,GAgDEC,GA0BAC,GAmCAC,GAiHAC,GAmCAC,GAuBAC,GAoBAC,GAmCAC,GAyCAC,GAoBAC,GAuBAC,GAsCAC,GA6BAC,GA2CFC,GArmBJC,GAAAC,EAAA,KAAAC,IACAA,IACAC,KACAC,KACM1B,KAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,IAAU,CACd,MAAS,0CACT,KAAQ,GACR,KAAQ,sCACR,KAAQ,sCACR,WAAc,qCAChB,EACIC,KAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,IAAQD,IAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6ByB,EAAmB,CACjE,OAAO,IAAKA,GAAqBzB,EACnC,EACAA,EAAY,WAA0B0B,GAAmB,CACvD,MAAO1B,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,GAAqC,SAAUA,EAAuB,CACxE,OAAAA,EAAsBA,EAAsB,oCAAyC,CAAC,EAAI,sCAC1FA,EAAsBA,EAAsB,gCAAqC,CAAC,EAAI,kCACtFA,EAAsBA,EAAsB,gCAAqC,CAAC,EAAI,kCACtFA,EAAsBA,EAAsB,8BAAmC,CAAC,EAAI,gCACpFA,EAAsBA,EAAsB,kCAAuC,CAAC,EAAI,oCACxFA,EAAsBA,EAAsB,oCAAyC,CAAC,EAAI,sCACnFA,CACT,EAAEA,IAAyB,CAAC,CAAC,EACzBC,GAAkC,SAAUA,EAAoB,CAClE,OAAAA,EAAmBA,EAAmB,gCAAqC,CAAC,EAAI,kCAChFA,EAAmBA,EAAmB,gCAAqC,CAAC,EAAI,kCAChFA,EAAmBA,EAAmB,yBAA8B,CAAC,EAAI,2BAClEA,CACT,EAAEA,IAAsB,CAAC,CAAC,EAOtBC,GAAkC,SAAUA,EAAoB,CAClE,OAAAA,EAAmBA,EAAmB,8BAAmC,CAAC,EAAI,gCAC9EA,EAAmBA,EAAmB,6BAAkC,CAAC,EAAI,+BAC7EA,EAAmBA,EAAmB,6BAAkC,CAAC,EAAI,+BACtEA,CACT,EAAEA,IAAsB,CAAC,CAAC,EACtBC,GAAgC,SAAUA,EAAkB,CAC9D,OAAAA,EAAiBA,EAAiB,4BAAiC,CAAC,EAAI,8BACxEA,EAAiBA,EAAiB,qCAA0C,CAAC,EAAI,uCACjFA,EAAiBA,EAAiB,uCAA4C,CAAC,EAAI,yCACnFA,EAAiBA,EAAiB,0CAA+C,CAAC,EAAI,4CACtFA,EAAiBA,EAAiB,kCAAuC,CAAC,EAAI,oCAC9EA,EAAiBA,EAAiB,iCAAsC,CAAC,EAAI,mCAC7EA,EAAiBA,EAAiB,wBAA6B,CAAC,EAAI,0BAC7DA,CACT,EAAEA,IAAoB,CAAC,CAAC,EAOpBC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,qBAA0B,CAAC,EAAI,uBAC3DA,EAAcA,EAAc,yBAA8B,CAAC,EAAI,2BAC/DA,EAAcA,EAAc,0BAA+B,CAAC,EAAI,4BACzDA,CACT,EAAEA,IAAiB,CAAC,CAAC,EA2CfC,GAAN,MAAMqB,CAAoB,CACxB,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMxB,GAAN,MAAMyB,CAAsB,CAC1B,OAAO,UAAUJ,EAAO,CACtB,IAAIC,EAAI,IAAIG,EACZ,OAAAH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EAOMvB,GAAN,MAAMyB,CAAa,CACjB,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASnC,IAAoBQ,GAAoB0B,EAAM,MAAM,GAE7DA,EAAM,cACRC,EAAE,YAAc,IAAI,KAAKD,EAAM,WAAW,GAExCA,EAAM,oBACRC,EAAE,kBAAoBD,EAAM,kBAAkB,IAAInB,GAAiB,SAAS,GAE1EmB,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,aACRC,EAAE,WAAa,SAASD,EAAM,WAAY,EAAE,GAE1CA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,qBAAyB,MACvCA,EAAS,qBAA0B,KAAK,sBAEtC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,sBAA0B,MACxCA,EAAS,sBAA2B,KAAK,uBAEvC,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMtB,GAAN,MAAMyB,CAAiB,CACrB,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EAOMrB,GAAN,MAAMyB,CAA0B,CAC9B,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAerB,GAAa,UAAUoB,EAAM,YAAY,GAErDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAE9FA,CACT,CACF,EACMpB,GAAN,MAAMyB,CAA2B,CAC/B,OAAO,UAAUR,EAAO,CACtB,IAAIC,EAAI,IAAIO,EACZ,OAAAP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACMnB,GAAN,MAAMyB,CAAwB,CAC5B,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWhC,GAAkBM,GAAoByB,EAAM,QAAQ,GAE/DA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIU,GAAKzC,GAAkBO,GAAkBkC,CAAC,CAAC,GAEpET,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMlB,GAAN,MAAM0B,CAAgC,CACpC,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAShC,GAAkBK,GAAoB0B,EAAM,MAAM,GAE3DA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,aACRC,EAAE,WAAa,SAASD,EAAM,WAAY,EAAE,GAEvCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMjB,GAAN,MAAM0B,CAAuB,CAC3B,OAAO,UAAUZ,EAAO,CACtB,IAAIC,EAAI,IAAIW,EACZ,OAAAX,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACMhB,GAAN,MAAM0B,CAAwB,CAC5B,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAerB,GAAa,UAAUoB,EAAM,YAAY,GAErDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAE9FA,CACT,CACF,EACMf,GAAN,MAAM0B,CAAyB,CAC7B,OAAO,UAAUd,EAAO,CACtB,IAAIC,EAAI,IAAIa,EACZ,OAAAb,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhB,GAAgC,UAAUe,EAAM,OAAO,GAEjEA,EAAM,gBACRC,EAAE,cAAgBvB,GAAoB,UAAUsB,EAAM,aAAa,GAEjEA,EAAM,OACRC,EAAE,KAAOX,GAA6B,UAAUU,EAAM,IAAI,GAErDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMd,GAAN,MAAM0B,CAA0B,CAC9B,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgBD,EAAM,cAAc,IAAIpB,GAAa,SAAS,GAE9DoB,EAAM,WACRC,EAAE,SAAWtB,GAAsB,UAAUqB,EAAM,QAAQ,GAEtDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMb,GAAN,MAAM0B,CAA6B,CACjC,OAAO,UAAUhB,EAAO,CACtB,IAAIC,EAAI,IAAIe,EACZ,OAAAf,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQhC,GAAkBI,GAAuB2B,EAAM,KAAK,GAE5DA,EAAM,YACRC,EAAE,UAAYhC,GAAkBQ,GAAeuB,EAAM,SAAS,GAEzDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EAeIZ,IAA0C,IAAM,CAClD,MAAMA,CAA0B,CAC9B,aAAc,CACZ,KAAK,YAAc0B,EAAO7C,GAAW,EACrC,KAAK,KAAO6C,EAAOC,EAAU,EAC7B,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,mBAAmBC,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItC,GAA0BsC,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0DAA2DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQxC,GAA2B,UAAUwC,CAAI,CAAC,CAAC,CACpM,CACA,kBAAkBH,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhC,GAAyBgC,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yDAA0DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQlC,GAA0B,UAAUkC,CAAI,CAAC,CAAC,CAClM,CACA,gBAAgBH,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlC,GAAuBkC,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uDAAwDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQpC,GAAwB,UAAUoC,CAAI,CAAC,CAAC,CAC9L,CACA,iBAAiBH,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpC,GAAwBoC,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wDAAyDC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAC5G,KAAK,WAAW,GAD4F,CAE/G,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAlC,EAA0B,UAAO,SAA2CM,EAAmB,CAC7F,OAAO,IAAKA,GAAqBN,EACnC,EACAA,EAA0B,WAA0BO,GAAmB,CACrE,MAAOP,EACP,QAASA,EAA0B,UACnC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,ICjpBH,QA6BamC,GA7BbC,GAAAC,EAAA,KACAC,KACAC,KACAC,KAEAC,IACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,8CAiBaZ,IAA0B,IAAA,CAAjC,MAAOA,CAA0B,CAGrCa,YACSC,EACyBC,EACxBC,EAAsB,CAFvB,KAAAF,UAAAA,EACyB,KAAAC,KAAAA,EACxB,KAAAC,WAAAA,EAaV,KAAAC,UAAY,IAAIC,GAAW,EAAGC,MAAM,CAClCC,kBAAmB,CAAC,EAAK,EACzBC,oBAAqB,CAAC,EAAK,EAC3BC,sBAAuB,CAAC,EAAK,EAC7BC,cAAe,CAAC,EAAK,EACrBC,cAAe,CAAC,EAAK,EACrBC,MAAO,CAAC,EAAK,EACbC,QAAS,CAAC,EAAE,EACb,CApBE,CAEHC,UAAQ,CACN,KAAKV,UAAUW,SAAS,MAASC,aAC9BC,KAAKC,GAAmB,KAAKf,UAAU,CAAC,EACxCgB,UAAWC,GAAgB,CACtBA,GACF,KAAKhB,UAAUW,SAAS,QAAWM,OAAM,CAE7C,CAAC,CACL,CAYAC,gBAAc,CACZ,IAAMC,EAAsC,CAAA,EACtCC,EAAa,KAAKpB,UAAUqB,MAE9BD,EAAWjB,mBAAmBgB,EAAgBG,KAAKC,GAAiBC,oCAAoC,EACxGJ,EAAWhB,qBAAqBe,EAAgBG,KAAKC,GAAiBE,sCAAsC,EAC5GL,EAAWf,uBACbc,EAAgBG,KAAKC,GAAiBG,yCAAyC,EAC7EN,EAAWd,eAAea,EAAgBG,KAAKC,GAAiBI,iCAAiC,EACjGP,EAAWb,eAAeY,EAAgBG,KAAKC,GAAiBK,gCAAgC,EAChGR,EAAWZ,OAAOW,EAAgBG,KAAKC,GAAiBM,uBAAuB,EAEnF,IAAMC,EAAe,CACnBX,gBAAiBA,EACjBY,aAAcC,GAAmBC,6BACjCxB,QAASW,EAAWX,SAGtB,KAAKZ,UAAUqC,MAAMJ,CAAY,CACnC,iDAhDW/C,GAA0BoD,EAAAC,EAAA,EAAAD,EAK3BE,EAAe,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,+BALdvD,EAA0BwD,UAAA,CAAA,CAAA,yBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,4bC7BvCE,EAAA,EAAA,IAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,EAEAF,EAAA,EAAA,qBAAA,CAAA,EAAgD,EAAA,GAAA,EAC3CC,EAAA,CAAA,mBAA2EC,EAAA,EAE9EF,EAAA,EAAA,MAAA,CAAA,EAA0B,EAAA,iBAAA,EACP,EAAA,eAAA,CAAA,EAEbC,EAAA,EAAA,oBACFC,EAAA,EAEAF,EAAA,GAAA,eAAA,CAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EAEAF,EAAA,GAAA,eAAA,CAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EAEAF,EAAA,GAAA,eAAA,CAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,eAAA,CAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EAEAF,EAAA,GAAA,eAAA,CAAA,EACEC,EAAA,EAAA,oBACFC,EAAA,EAAe,EACC,EAGpBF,EAAA,GAAA,iBAAA,EACEG,EAAA,GAAA,WAAA,EAAA,CAAA,oBAOAH,EAAA,GAAA,YAAA,CAAA,EAAyBC,EAAA,EAAA,EAAmDC,EAAA,EAAY,EACxE,EAGpBF,EAAA,GAAA,qBAAA,CAAA,EAA0C,GAAA,SAAA,CAAA,EACbI,EAAA,QAAA,UAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAST,EAAA7C,UAAAqC,MAAA,CAAiB,CAAA,CAAA,EACnDU,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,CAAA,EAAwCI,EAAA,QAAA,UAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAST,EAAAxB,eAAA,CAAgB,CAAA,CAAA,EAC/D0B,EAAA,EAAA,oBACFC,EAAA,EAAS,sBAnDTO,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,GAAA,kDAAA,EAAA;CAAA,EAIGF,EAAA,CAAA,EAAAG,EAAAD,EAAA,EAAA,GAAA,yDAAA,CAAA,EAIeF,EAAA,CAAA,EAAAI,EAAA,cAAAd,EAAA1C,UAAAW,SAAA,iBAAA,EACZyC,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,+DAAA,EAAA,GAAA,EAGYF,EAAA,CAAA,EAAAI,EAAA,cAAAd,EAAA1C,UAAAW,SAAA,mBAAA,EACZyC,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,iEAAA,EAAA,GAAA,EAGYF,EAAA,CAAA,EAAAI,EAAA,cAAAd,EAAA1C,UAAAW,SAAA,qBAAA,EACZyC,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,oEAAA,EAAA,GAAA,EAGYF,EAAA,CAAA,EAAAI,EAAA,cAAAd,EAAA1C,UAAAW,SAAA,aAAA,EACZyC,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,4DAAA,EAAA,GAAA,EAEYF,EAAA,CAAA,EAAAI,EAAA,cAAAd,EAAA1C,UAAAW,SAAA,aAAA,EACZyC,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,2DAAA,EAAA,GAAA,EAGYF,EAAA,CAAA,EAAAI,EAAA,cAAAd,EAAA1C,UAAAW,SAAA,KAAA,EACZyC,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,kDAAA,EAAA,GAAA,EAUFF,EAAA,CAAA,EAAAK,GAAA,cAAAH,EAAA,GAAA,GAAA,4DAAA,CAAA,EACAE,EAAA,cAAAd,EAAA1C,UAAAW,SAAA,OAAA,EAEuByC,EAAA,CAAA,EAAAC,EAAA,IAAAK,EAAArC,OAAA,KAAA,KAAAqC,EAAArC,MAAAsC,SAAA,EAAA,MAAA,EAMzBP,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,4DAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,0DAAA,EAAA,GAAA,kBDhCAM,EAAeC,EACfC,GACAC,GAAmBC,GAAAC,GAAAC,GAAAC,GACnBC,GAAqBC,GAAAC,GACrBC,GAAeC,GAAAC,GAAAC,GACfC,GACAC,GACAC,EAAW,EAAAC,OAAA,CAAA;wHAAA,CAAA,CAAA,CAAA,SAGF/F,CAA0B,GAAA,+BGMjCgG,EAAA,EAAA,IAAA,EAA0CC,EAAA,CAAA,EAAcC,EAAA,0BAAdC,EAAA,EAAAC,EAAAC,CAAA,8BAO1CL,EAAA,EAAA,IAAA,EAAqCC,EAAA,CAAA,EAAUC,EAAA,0BAAVC,EAAA,EAAAC,EAAAE,CAAA,uCAevCN,EAAA,EAAA,SAAA,EAAA,EAAiDO,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,mBAAA,CAAoB,CAAA,CAAA,EAC5EZ,EAAA,CAAA,mBACFC,EAAA,QADEC,EAAA,EAAAW,EAAA,IAAAC,EAAA,EAAA,EAAA,uDAAA,EAAA,GAAA,uCAEFf,EAAA,EAAA,SAAA,EAAA,EAA+DO,EAAA,QAAA,UAAA,CAAAC,EAAAQ,CAAA,EAAA,IAAAN,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAO,cAAA,CAAe,CAAA,CAAA,EACrFhB,EAAA,CAAA,mBACFC,EAAA,QADEC,EAAA,EAAAW,EAAA,IAAAC,EAAA,EAAA,EAAA,kDAAA,EAAA,GAAA,GDoHA,SAAUG,GAAqCC,EAAgB,CACnE,GAAIA,IAAa,EAAG,MAAO,GAC3B,IAAMC,EAAoBC,GAAmB,CAAEC,MAAO,EAAGC,IAAKJ,CAAQ,CAAE,EACxE,OAAIC,EAAkBI,QAAUC,QAAaL,EAAkBI,MAAQ,EAC9D,GAAGJ,EAAkBI,KAAK,KAAKJ,EAAkBM,OAAO,IAE1D,GAAGN,EAAkBM,OAAO,GACrC,CAxLA,QA+CaC,GA/CbC,GAAAC,EAAA,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,IACAC,KACAC,KAGAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAF,2EA8Bad,IAA4B,IAAA,CAAnC,MAAOA,CAA4B,CAIvCiB,YACSC,EACyBC,EACxBC,EACAC,EACSC,EACTC,EACSC,EAAsD,CANhE,KAAAN,UAAAA,EACyB,KAAAC,KAAAA,EACxB,KAAAC,KAAAA,EACA,KAAAC,gBAAAA,EACS,KAAAC,OAAAA,EACT,KAAAC,0BAAAA,EACS,KAAAC,2BAAAA,EAKnB,KAAAC,MAAQ,KAAKN,KAAKO,aAClB,KAAAC,QAAU,KAAKR,KAAKQ,QACpB,KAAAC,aAAe,KAAKT,KAAKS,aACzB,KAAAC,YAAc,KAAKV,KAAKU,YACxB,KAAArC,SAAW,KAAK2B,KAAK3B,SACrB,KAAAsC,YAAc,KAAKX,KAAKW,YACxB,KAAAC,aAAe,KAAKZ,KAAKY,aACzB,KAAAC,cAAgB,KAAKb,KAAKa,cAC1B,KAAAC,eAAiB,KAAKd,KAAKc,eAC3B,KAAAC,WAAa,KAAKf,KAAKe,WACvB,KAAAC,UAAY,KAAKhB,KAAKgB,UACtB,KAAAC,sBAAwB,KAAKjB,KAAKiB,sBAdhC,KAAKZ,2BAA2Ba,SAAW,KAAKlB,KAAKkB,QACvD,CAeAC,cAAY,CACV,MAAO,CAAC,CAAC,KAAKP,YAChB,CAEAzC,eAAa,CACP,KAAKyC,cACPQ,OAAOC,KAAK,KAAKT,aAAc,QAAQ,CAE3C,CAEA7C,oBAAkB,CAChB,KAAKkC,KACFqB,IAAI,KAAKT,eAAiB,GAAI,CAC7BU,aAAc,OACdC,gBAAiB,GAClB,EACAC,KAAKC,GAAK,CAAC,CAAC,EACZC,UAAU,CACTC,KAAOC,GAAU,CACf,KAAK3B,gBAAgB4B,iBAAiB,+DAA+D,EACrG,KAAKC,aAAaF,EAAQ,gBAAgB,CAC5C,EACAG,MAAQA,GAAS,CACfC,QAAQD,MAAMA,CAAK,EACnB,KAAK9B,gBAAgBgC,eAAeF,GAAOG,OAAO,CACpD,EACD,CACL,CAEAJ,aAAaK,EAAYC,EAAgB,CAEvC,IAAMC,EAAMlB,OAAOmB,IAAIC,gBACrB,IAAIC,KAAK,CAACL,CAAI,EAAG,CACfM,KAAM,aACP,CAAC,EAEEC,EAAO,KAAKC,eAAeC,cACjCF,EAAKG,KAAOR,EACZK,EAAKI,SAAWV,EAChBM,EAAKK,MAAK,EACV5B,OAAOmB,IAAIU,gBAAgBX,CAAG,CAChC,CAEAY,UAAQ,CACN,KAAKC,iBAAiBC,GAAmBC,6BAA8B,CAAA,EAAI,EAAE,CAC/E,CAEAC,YAAU,CACU,KAAKnD,OAAOkB,KAAKkC,GAA4B,CAC7DC,MAAO,QACPxD,KAAM,CAAEiB,sBAAuB,KAAKA,qBAAqB,EAC1D,EAESwC,YAAW,EAAG9B,UAAWE,GAAU,CACvCA,GACF,KAAKsB,iBAAiBtB,EAAO6B,aAAc7B,EAAO8B,gBAAiB9B,EAAO+B,OAAO,CAErF,CAAC,CACH,CACAT,iBAAiBO,EAAkCC,EAAqCC,EAAe,CACrG,IAAMC,EAAU,CACdC,eAAgB,KAAK7C,sBACrB8C,SAAUL,EACVE,QAASA,EACTI,QAASL,GAGX,KAAKvD,0BACF6D,iBAAiBJ,CAAO,EACxBpC,KAAKC,GAAK,CAAC,CAAC,EACZC,UAAU,CACTC,KAAMA,IAAK,CACT,KAAK1B,gBAAgB4B,iBAAiB,oDAAoD,CAC5F,EACAE,MAAOA,IAAK,CACV,KAAK9B,gBAAgBgC,eAAe,kDAAkD,CACxF,EACD,CACL,CAEAgC,aAAW,CACT,KAAKnE,UAAUoE,MAAK,CACtB,iDA/GWtF,GAA4BuF,EAAAC,EAAA,EAAAD,EAM7BE,EAAe,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,CAAA,CAAA,CAAA,+BANd9F,EAA4B+F,UAAA,CAAA,CAAA,2BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,8EAX5B,CACTH,GACA,CACEK,QAASC,GACTC,WAAYA,IAEHC,EAAG,EAAE,EAEf,CACF,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,mBAAA,GAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,aAAA,EAAA,CAAA,EAAA,MAAA,WAAA,WAAA,UAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,kBAAA,GAAA,WAAA,KAAA,EAAA,YAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,WAAA,KAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,WAAA,KAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,WAAA,KAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAT,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WC7CH5H,EAAA,EAAA,KAAA,CAAA,EAA4CC,EAAA,CAAA,EAAWC,EAAA,EACvDF,EAAA,EAAA,qBAAA,CAAA,EAAkD,EAAA,MAAA,CAAA,EACnB,EAAA,MAAA,CAAA,EACiB,EAAA,MAAA,CAAA,EACTC,EAAA,CAAA,mBAAiCC,EAAA,EAClEF,EAAA,EAAA,MAAA,CAAA,EAAiCC,EAAA,CAAA,eAAyCC,EAAA,EAAM,EAElFF,EAAA,GAAA,MAAA,CAAA,EAA4C,GAAA,MAAA,CAAA,EACTC,EAAA,EAAA,oBAAqCC,EAAA,EACtEF,EAAA,GAAA,MAAA,CAAA,EAAiCC,EAAA,EAAA,EAAcC,EAAA,EAAM,EAEvDF,EAAA,GAAA,MAAA,CAAA,EAA4C,GAAA,MAAA,CAAA,EACTC,EAAA,EAAA,oBAAiEC,EAAA,EAClGF,EAAA,GAAA,MAAA,CAAA,EAAiCC,EAAA,EAAA,EAAgBC,EAAA,EAAM,EAEzDF,EAAA,GAAA,MAAA,CAAA,EAA4C,GAAA,MAAA,CAAA,EACTC,EAAA,EAAA,oBAAqEC,EAAA,EACtGF,EAAA,GAAA,MAAA,CAAA,EAAiCC,EAAA,EAAA,EAAoBC,EAAA,EAAM,EAE7DF,EAAA,GAAA,MAAA,CAAA,EAA4C,GAAA,MAAA,CAAA,EACTC,EAAA,EAAA,oBAAkEC,EAAA,EACnGF,EAAA,GAAA,MAAA,CAAA,EAAiCsI,EAAA,GAAA,0BAAA,CAAA,EAAwEpI,EAAA,EAAM,EAC3G,EAGRoI,EAAA,GAAA,MAAA,CAAA,EAEAtI,EAAA,GAAA,MAAA,CAAA,EAAqB,GAAA,IAAA,EACfC,EAAA,EAAA,oBAAmEC,EAAA,EACvEF,EAAA,GAAA,GAAA,EAAGC,EAAA,EAAA,EAAaC,EAAA,EAAI,EAGtBF,EAAA,GAAA,MAAA,CAAA,EAAqB,GAAA,IAAA,EACfC,EAAA,EAAA,oBAAmEC,EAAA,EACvEF,EAAA,GAAA,IAAA,EACEuI,EAAA,GAAAC,IAAA,EAAA,EAAA,KAAA,EAAA,EACFtI,EAAA,EAAK,EAGPF,EAAA,GAAA,MAAA,CAAA,EAAqB,GAAA,IAAA,EACfC,EAAA,EAAA,oBAAkEC,EAAA,EACtEF,EAAA,GAAA,IAAA,EACEuI,EAAA,GAAAE,IAAA,EAAA,EAAA,KAAA,EAAA,EACFvI,EAAA,EAAK,EACD,EAGRF,EAAA,GAAA,qBAAA,EAAA,EAA0C,GAAA,MAAA,EAAA,EACV,GAAA,SAAA,EAAA,EACcO,EAAA,QAAA,UAAA,CAAAmI,OAAAlI,EAAAmI,CAAA,EAAA/H,EAASiH,EAAA7B,SAAA,CAAU,CAAA,CAAA,EAC3DhG,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,UAAA,EAAQC,EAAA,EAAW,EAE/BF,EAAA,GAAA,SAAA,EAAA,EAA4CO,EAAA,QAAA,UAAA,CAAAmI,OAAAlI,EAAAmI,CAAA,EAAA/H,EAASiH,EAAAzB,WAAA,CAAY,CAAA,CAAA,EAC/DpG,EAAA,GAAA,UAAA,EAAUC,EAAA,GAAA,YAAA,EAAUC,EAAA,EAAW,EACxB,EAEXF,EAAA,GAAA,OAAA,EAAA,EACEuI,EAAA,GAAAK,IAAA,EAAA,EAAA,SAAA,EAAA,EAAgF,GAAAC,IAAA,EAAA,EAAA,SAAA,EAAA,EAMlF3I,EAAA,EAAO,EAGToI,EAAA,GAAA,IAAA,GAAA,CAAA,QAlE4CnI,EAAA,EAAAC,EAAAyH,EAAAzE,KAAA,EAILjD,EAAA,CAAA,EAAAC,EAAAW,EAAA,EAAA,GAAA,eAAA,CAAA,EACAZ,EAAA,CAAA,EAAAC,EAAA0I,GAAA,GAAA,GAAAjB,EAAApE,YAAA,eAAA,CAAA,EAGAtD,EAAA,CAAA,EAAAC,EAAAW,EAAA,GAAA,GAAA,mBAAA,CAAA,EACAZ,EAAA,CAAA,EAAAC,EAAAyH,EAAA1G,QAAA,EAGAhB,EAAA,CAAA,EAAAC,EAAAW,EAAA,GAAA,GAAA,+CAAA,CAAA,EACAZ,EAAA,CAAA,EAAAC,EAAAyH,EAAAhE,UAAA,EAGA1D,EAAA,CAAA,EAAAC,EAAAW,EAAA,GAAA,GAAA,mDAAA,CAAA,EACAZ,EAAA,CAAA,EAAAC,EAAAyH,EAAAjE,cAAA,EAGAzD,EAAA,CAAA,EAAAC,EAAAW,EAAA,GAAA,GAAA,gDAAA,CAAA,EACyBZ,EAAA,CAAA,EAAA4I,EAAA,cAAA,EAAA,EAOxD5I,EAAA,CAAA,EAAAC,EAAAW,EAAA,GAAA,GAAA,iDAAA,CAAA,EACDZ,EAAA,CAAA,EAAAC,EAAAyH,EAAAvE,OAAA,EAICnD,EAAA,CAAA,EAAAC,EAAAW,EAAA,GAAA,GAAA,iDAAA,CAAA,EAEuBZ,EAAA,CAAA,EAAA4I,EAAA,UAAAlB,EAAAtE,YAAA,EAKvBpD,EAAA,CAAA,EAAAC,EAAAW,EAAA,GAAA,GAAA,gDAAA,CAAA,EAEmBZ,EAAA,CAAA,EAAA4I,EAAA,UAAAlB,EAAArE,WAAA,EAeKrD,EAAA,EAAA,EAAA4I,EAAA,OAAAlB,EAAAlE,aAAA,EAGaxD,EAAA,EAAA4I,EAAA,OAAAlB,EAAA5D,aAAA,CAAA,EAM1B9D,EAAA,EAAA4I,EAAA,SAAA,EAAA,kBDzCfC,GAAeC,GAAAC,GAAAC,GACfC,EAAeC,EACfC,GACAC,GACAC,GAAaC,GACbC,GAEAC,GAAeC,GAAAC,GACfC,EAAYC,GAAAC,GACZC,EAAsC,EAAAC,OAAA,CAAA;0HAAA,CAAA,CAAA,CAAA,SAa7BvI,CAA4B,GAAA,+BG5CnCwI,EAAA,EAAA,MAAA,EAAA,EACEC,EAAA,EAAA,cAAA,EAAA,EAMFC,EAAA,mBALIC,EAAA,EAAAC,EAAA,QAAAC,EAAAC,YAAA,8BAOFN,EAAA,EAAA,OAAA,EAAA,EACEO,EAAA,CAAA,EACFL,EAAA,qBADEC,EAAA,EAAAK,EAAA,IAAAC,EAAA,GAAA,0BAGAR,EAAA,EAAA,OAAA,EAAA,6BAIFD,EAAA,EAAA,IAAA,EAAA,EACEO,EAAA,CAAA,cACFL,EAAA,mBADEC,EAAA,EAAAK,EAAA,IAAAE,GAAA,EAAA,EAAAL,EAAAM,SAAAC,KAAAP,EAAAQ,UAAA,EAAA,GAAA,8BAOAb,EAAA,EAAA,MAAA,EAAuCO,EAAA,CAAA,EAAeL,EAAA,qBAAfC,EAAA,EAAAW,EAAAC,CAAA,8BADzCf,EAAA,EAAA,iBAAA,EAAA,EACEgB,EAAA,EAAAC,IAAA,EAAA,EAAA,OAAA,EAAA,EACFf,EAAA,mBADSC,EAAA,EAAAC,EAAA,OAAAC,EAAAa,UAAA,CAAA,8BAKLlB,EAAA,EAAA,MAAA,EAAA,EACEC,EAAA,EAAA,MAAA,EAAA,EACFC,EAAA,mBADOC,EAAA,EAAAC,EAAA,YAAAC,EAAAM,SAAAQ,oBAAAC,EAAA,uCAGPpB,EAAA,EAAA,MAAA,EAAA,EAAkE,EAAA,MAAA,EAAA,EAE9DC,EAAA,EAAA,WAAA,EAAA,EACAD,EAAA,EAAA,KAAA,EAAKO,EAAA,CAAA,mBAAkDL,EAAA,EAAM,EAE/DF,EAAA,EAAA,MAAA,EAAA,EACEC,EAAA,EAAA,OAAA,EAAA,EACFC,EAAA,EACAF,EAAA,EAAA,IAAA,EAAA,EAAuEqB,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAlB,EAAAmB,EAAA,CAAA,EAAA,OAAAC,EAASpB,EAAAqB,iBAAA,CAAkB,CAAA,CAAA,EAAEnB,EAAA,CAAA,oBAElGL,EAAA,EAAI,qBAPCC,EAAA,CAAA,EAAAW,EAAAa,EAAA,EAAA,EAAA,gCAAA,CAAA,EAGCxB,EAAA,CAAA,EAAAC,EAAA,YAAAC,EAAAM,SAAAiB,mBAAAR,EAAA,EAE4FjB,EAAA,CAAA,EAAAW,EAAAa,EAAA,GAAA,EAAA,gDAAA,CAAA,6BAZtGX,EAAA,EAAAa,IAAA,EAAA,EAAA,MAAA,EAAA,EAAwE,EAAAC,IAAA,GAAA,EAAA,MAAA,EAAA,kBAAlE1B,EAAA,OAAAC,EAAAM,SAAAQ,mBAAA,EAIyBhB,EAAA,EAAAC,EAAA,OAAAC,EAAAM,SAAAiB,kBAAA,8BAa/B5B,EAAA,EAAA,KAAA,EAAkC,EAAA,0BAAA,EAAA,EAE9BC,EAAA,EAAA,OAAA,EAAA,EACFC,EAAA,EAA0B,mBAFDC,EAAA,EAAAC,EAAA,cAAA,GAAA,EACID,EAAA,EAAAC,EAAA,YAAAC,EAAAM,SAAAoB,YAAAX,EAAA,6BAF/BJ,EAAA,EAAAgB,IAAA,EAAA,EAAA,MAAA,EAAA,kBAAM5B,EAAA,OAAAC,EAAAM,SAAAoB,WAAA,6BAYNE,GAAA,EAAA,EAAA,yBAEE7B,EAAA,mBAAA8B,CAAA,EAAiC,0BAAAC,GAAA,EAAAC,IAAA/B,EAAAM,SAAA0B,eAAA,CAAA,6BAGnCJ,GAAA,EAAA,EAAA,yBAEE7B,EAAA,mBAAA8B,CAAA,EAAiC,0BAAAC,GAAA,EAAAG,IAAAjC,EAAAM,SAAA4B,kBAAA,KAAA,CAAA,6BAMnCN,GAAA,EAAA,EAAA,yBAEE7B,EAAA,mBAAA8B,CAAA,EAAiC,0BAAAC,GAAA,EAAAK,IAAAnC,EAAAM,SAAA8B,aAAA,CAAA,6BAGnCR,GAAA,EAAA,EAAA,yBAEE7B,EAAA,mBAAA8B,CAAA,EAAiC,0BAAAC,GAAA,EAAAO,IAAArC,EAAAM,SAAAgC,eAAA,CAAA,6BAGnCV,GAAA,EAAA,EAAA,yBAEE7B,EAAA,mBAAA8B,CAAA,EAAiC,0BAAAC,GAAA,EAAAS,IAAAvC,EAAAM,SAAAkC,wBAAA,KAAA,CAAA,8BAvF/C7C,EAAA,EAAA,MAAA,CAAA,EAAoD,EAAA,WAAA,CAAA,EACpB,EAAA,iBAAA,EAE1BgB,EAAA,EAAA8B,IAAA,EAAA,EAAA,MAAA,CAAA,EAQA9C,EAAA,EAAA,gBAAA,EACEgB,EAAA,EAAA+B,IAAA,EAAA,EAAA,OAAA,CAAA,eAGA/B,EAAA,EAAAgC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAGF/C,EAAA,EACAF,EAAA,EAAA,mBAAA,EACEgB,EAAA,GAAAkC,IAAA,EAAA,EAAA,IAAA,CAAA,EAGFhD,EAAA,EAAoB,EAEtBF,EAAA,GAAA,kBAAA,EAA8E,GAAA,WAAA,CAAA,EAE1EgB,EAAA,GAAAmC,IAAA,EAAA,EAAA,iBAAA,CAAA,EAIAnD,EAAA,GAAA,kBAAA,EACEgB,EAAA,GAAAoC,IAAA,EAAA,CAAA,EAAmE,GAAAC,IAAA,EAAA,EAAA,KAAA,EAyBnErD,EAAA,GAAA,MAAA,EAAA,EACEiC,GAAA,GAAA,EAAA,eAIAjB,EAAA,GAAAsC,IAAA,EAAA,EAAA,eAAA,EAAA,EAIC,GAAAC,IAAA,EAAA,EAAA,eAAA,EAAA,EAQA,GAAAC,IAAA,EAAA,EAAA,eAAA,EAAA,EAKA,GAAAC,IAAA,EAAA,EAAA,eAAA,EAAA,EAKA,GAAAC,IAAA,EAAA,EAAA,eAAA,EAAA,EASHxD,EAAA,EACAD,EAAA,GAAA,0BAAA,EAAA,EACFC,EAAA,EAAmB,EACV,EACM,EACV,gCAhGQC,EAAA,CAAA,EAAAwD,GAAA,cAAAtD,EAAAuD,WAAA,MAAAvD,EAAAC,aAAA,IAAAuD,SAAA,EAAA,IAAA,EACK1D,EAAA,EAAAC,EAAA,OAAAC,EAAAuD,UAAA,EASXzD,EAAA,CAAA,EAAAC,EAAA,OAAAuB,EAAA,EAAA,GAAAtB,EAAAyD,YAAA,CAAA,CAAA,EAA4B,WAAAC,CAAA,EAQ/B5D,EAAA,CAAA,EAAAC,EAAA,OAAAC,EAAAM,SAAAC,OAAA,IAAA,EAKUT,EAAA,EAAAwD,GAAA,eAAAtD,EAAAC,aAAA,IAAAuD,SAAA,EAAA,IAAA,EAEG1D,EAAA,CAAA,EAAAC,EAAA,OAAA,CAAAC,EAAAM,SAAAQ,mBAAA,EAIChB,EAAA,EAAAwD,GAAA,cAAA,EAAAtD,EAAAC,aAAA,IAAAuD,SAAA,EAAA,IAAA,EAChB1D,EAAA,EAAA6D,EAAA3D,EAAAM,SAAAiB,oBAAAvB,EAAAM,SAAAQ,oBAAA,GAAA,EAAA,EA2BIhB,EAAA,CAAA,EAAAC,EAAA,mBAAA8B,CAAA,EAAiC,0BAAAC,GAAA,GAAA8B,IAAAvD,GAAA,GAAA,GAAAL,EAAAM,SAAAC,KAAAP,EAAAQ,UAAA,CAAA,CAAA,EAIhCV,EAAA,CAAA,EAAAC,EAAA,OAAAC,EAAAM,SAAA0B,eAAA,EAKAlC,EAAA,EAAAC,EAAA,OAAAC,EAAAM,SAAA4B,iBAAA,EAQApC,EAAA,EAAAC,EAAA,OAAA,CAAAC,EAAAM,SAAAkC,uBAAA,EAKA1C,EAAA,EAAAC,EAAA,OAAAC,EAAAM,SAAAgC,eAAA,EAKAxC,EAAA,EAAAC,EAAA,OAAAC,EAAAM,SAAAkC,uBAAA,EAQoB1C,EAAA,EAAAC,EAAA,cAAA,EAAA,8BAc7B8D,EAAA,CAAA,EACE3D,EAAA,CAAA,4BAAAJ,EAAA,EAAAK,EAAA,IAAA2D,EAAA,GAAA,8BAPNnE,EAAA,EAAA,MAAA,EAAA,EAAoC,EAAA,MAAA,EAAA,EAEhCO,EAAA,CAAA,mBACFL,EAAA,EACAF,EAAA,EAAA,MAAA,EAAA,EAEEgB,EAAA,EAAAoD,IAAA,EAAA,EAAA,eAAA,EAAA,EAGFlE,EAAA,EAAM,gCAPJC,EAAA,CAAA,EAAAK,EAAA,IAAAmB,EAAA,EAAA,EAAA0C,CAAA,EAAA,GAAA,EAIelE,EAAA,CAAA,EAAAC,EAAA,OAAA+D,CAAA,GD5GrB,4BA+DaG,GA/DbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,IACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KAGAC,KACAC,KAEAC,KAGAC,KACAC,sVAwCanB,IAA2B,IAAA,CAAlC,MAAOA,CAA2B,CAQtC,IAAaoB,WAAWA,EAAsB,CAC5C,KAAKC,YAAYC,IAAIF,CAAU,CACjC,CAEA,IAAIA,YAAU,CACZ,OAAO,KAAKC,YAAW,CACzB,CAEA,IAAaE,mBAAmBC,EAAmB,CACjD,KAAKC,oBAAoBH,IAAIE,CAAW,CAC1C,CAEA,IAAID,oBAAkB,CACpB,OAAO,KAAKE,oBAAmB,CACjC,CAGA,IAAanC,WAAWA,EAAmB,CACzC,KAAKoC,YAAcpC,CACrB,CAEA,IAAIA,YAAU,CACZ,OAAO,KAAKoC,WACd,CAEA,IAA+BrF,SAASsF,EAAyD,CAC3F,KAAKC,+BAA+BD,CAAI,EAC1C,KAAKE,UAAUP,IAAIK,CAA+B,GAElD,KAAKG,mBAAmBC,SAAWJ,EACnC,KAAKE,UAAUP,IAAI,KAAKU,0BAA0BL,CAAwB,CAAC,EAE/E,CAEA,IAAItF,UAAQ,CACV,OAAO,KAAKwF,UAAS,CACvB,CAEQD,+BAA+BD,EAAS,CAC9C,MAAO,SAAUA,GAAQA,EAAKM,OAAS,UACzC,CAEQD,0BAA0BL,EAAsB,CACtD,IAAMO,EAAW,KAAKC,oBAAoBR,EAAMS,EAAYC,uBAAuB,EACnF,MAAO,CACL5E,YACE,KAAK6E,UAAUC,SAASC,GAAgBC,KAAM,KAAKC,mBAAmBf,EAAMS,EAAYO,mBAAmB,CAAC,GAC5G,GACFxE,cAAe,KAAKuE,mBAAmBf,EAAMS,EAAYQ,qBAAqB,EAC9EvE,gBAAiB,KAAKqE,mBAAmBf,EAAMS,EAAYS,uBAAuB,EAClFvG,KAAM,KAAKwG,aAAaC,2BAA2BpB,EAAMqB,GAAeC,qBAAqB,GAAGC,WAAa,KAC7GnF,gBAAiBoF,GAAqCjB,CAAQ,EAC9DA,SAAUA,EACVrF,oBAAqB,KAAK6F,mBAAmBf,EAAMS,EAAYgB,2BAA2B,EAC1FC,oBAAqB,KAAKC,yBAAyB3B,EAAMS,EAAYmB,2BAA2B,EAChGC,mBAAoB,KAAKF,yBAAyB3B,EAAMS,EAAYqB,0BAA0B,EAC9FnG,mBAAoB,KAAKoF,mBAAmBf,EAAMS,EAAYsB,0BAA0B,EACxFnF,wBAAyB,KAAK4D,oBAAoBR,EAAMS,EAAYuB,wBAAwB,EAC5F1F,kBAAmB,KAAKkE,oBAAoBR,EAAMS,EAAYwB,yBAAyB,EACvFC,qBAAsB,KAAKnB,mBAAmBf,EAAMS,EAAY0B,4BAA4B,EAC5FC,oBAAqB,KAAKrB,mBAAmBf,EAAMS,EAAY4B,2BAA2B,EAC1FC,sBAAuB,KAAKvB,mBAAmBf,EAAMS,EAAY8B,4CAA4C,EAC7GC,QAAS,KAAKzB,mBAAmBf,EAAMqB,GAAeoB,eAAe,EACrErC,SAAUJ,EAEd,CA8DA0C,YACmBvB,EACAwB,EACAhC,EACAiC,EACAzC,EACA0C,EAAoC,CALpC,KAAA1B,aAAAA,EACA,KAAAwB,iBAAAA,EACA,KAAAhC,UAAAA,EACA,KAAAiC,OAAAA,EACA,KAAAzC,mBAAAA,EACA,KAAA0C,YAAAA,EA5InB,KAAAjI,WAAakI,GAAWC,oBAChB,KAAA7C,UAA8D8C,EAAO,CAAA,CAAE,EACvE,KAAAlD,oBAA8CkD,EAAO,EAAE,EACvD,KAAAtD,YAA0CsD,EAAO,SAAS,EAClE,KAAAC,UAAsD,KAAK9C,mBAAmB8C,UAmBtE,KAAAlD,YAAc,GAmDtB,KAAAlC,YAAcqF,EAAS,IAAK,CAC1B,IAAMxI,EAAW,KAAKA,SACtB,GAAI,CAACA,GAAY,CAACA,EAAS8B,cACzB,OAAO,KAAKmG,iBAAiBQ,OAAO,+CAA+C,EAyBrF,IAAMC,EAtBsF,CAC1F,CAACC,GAAcC,UAAUC,YAAW,CAAE,EAAG,CACvCC,QAAS,2CACTC,oBAAqB,IAEvB,CAACJ,GAAcK,YAAYH,YAAW,CAAE,EAAG,CACzCC,QAAS,6CACTC,oBAAqB,IAEvB,CAACJ,GAAcM,UAAUJ,YAAW,CAAE,EAAG,CACvCC,QAAS,2CACTC,oBAAqB,IAEvB,CAACJ,GAAcO,UAAUL,YAAW,CAAE,EAAG,CACvCC,QAAS,2CACTC,oBAAqB,IAEvB,CAACJ,GAAcQ,OAAON,YAAW,CAAE,EAAG,CACpCC,QAAS,yCACTC,oBAAqB,KAGU/I,EAAS8B,cAAc+G,YAAW,CAAE,EACvE,OAAKH,EAGD,CAACA,EAAaK,qBAAuB,CAAC/I,EAAS8H,QAC1C,KAAKG,iBAAiBQ,OAAOC,EAAaI,OAAO,EAInD,KAAKX,YAAYiB,cAAc,CAACpJ,EAAS8H,OAAO,CAAC,EAAEuB,KACxDC,EAAKC,GAAK,CACR,IAAIC,EAAa,KAAKvB,iBAAiBwB,QAAQf,EAAaI,OAAO,EACnE,OAAIS,GAAKA,EAAE,CAAC,GAAGG,cACbF,GACE,IACA,KAAKvB,iBAAiBwB,QAAQ,0CAA2C,CAAEE,UAAWJ,EAAE,CAAC,EAAEG,WAAW,CAAE,GAErGF,CACT,CAAC,CAAC,EAhBK,KAAKvB,iBAAiBQ,OAAO,+CAA+C,CAkBvF,CAAC,EAED,KAAAlI,UAAYiI,EAAS,IAAK,CACxB,GAAM,CAAE3C,SAAAA,CAAQ,EAAK,KAAK7F,SACpB4J,EAAUC,KAAKC,MAAMjE,EAAW,GAAK,EACrCkE,EAAQF,KAAKC,MAAMF,EAAU,EAAE,EACrC,OAAIG,EAAQ,EACH,GAAGA,CAAK,SAASH,EAAU,EAAE,kBAE/B,GAAGA,CAAO,iBACnB,CAAC,EAWkB,KAAAjK,aAAeA,EAF/B,CAIK0G,mBAAmBX,EAA6BsE,EAAe,CACrE,OAAO,KAAKvD,aAAaC,2BAA2BhB,EAAUsE,CAAO,GAAGC,aAAe,EACzF,CAEQhD,yBAAyBvB,EAA6BsE,EAAe,CAC3E,OAAO,KAAKvD,aAAaC,2BAA2BhB,EAAUsE,CAAO,GAAGE,cAAcC,QAAU,CAAA,CAClG,CAEQrE,oBAAoBJ,EAA6BsE,EAAe,CACtE,OAAO,KAAKvD,aAAaC,2BAA2BhB,EAAUsE,CAAO,GAAGI,cAAgB,CAC1F,CAEArJ,kBAAgB,CACd,IAAMsJ,EAAc,KAAKrK,SACnBsK,EAAc,KAAK/B,UAAS,EAEhB,KAAKL,OAAOqC,KAAKC,GAA8B,CAC/DC,MAAO,QACPnF,KAAM,CACJoF,aAAcL,EAAY7J,oBAC1BmK,YAAaN,EAAYpK,KACzB4F,SAAUwE,EAAY3I,gBACtBkJ,eAAgB,GAAGP,EAAYnI,uBAAuB,QACtD2I,WAAY,GAAGR,EAAYzI,iBAAiB,QAC5CkJ,QAAST,EAAYpJ,mBACrB8J,aAAcV,EAAYrD,oBAC1BgE,YAAaX,EAAYlD,mBACzB8D,cAAeZ,EAAY7C,qBAC3B0D,aAAcb,EAAY3C,oBAC1Ba,UAAW+B,EACX1C,sBAAuByC,EAAYzC,sBACnCuD,QAASd,EAAYvC,QACrBpC,SAAU2E,EAAY3E,UAEzB,EAES0F,YAAW,EAAGC,UAAU,IAAK,CACrC,KAAKC,SAAW,EAClB,CAAC,CACH,iDAzLW3H,GAA2B4H,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,CAAA,CAAA,CAAA,+BAA3BlI,EAA2BmI,UAAA,CAAA,CAAA,sBAAA,CAAA,EAAAC,OAAA,CAAAhH,WAAA,aAAAG,mBAAA,qBAAAjC,WAAA,aAAAjD,SAAA,UAAA,EAAAgM,SAAA,CAAAC,GAb3B,CAACC,EAAO,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,eAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,QAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,MAAA,EAAA,CAAA,QAAA,QAAA,EAAA,OAAA,UAAA,EAAA,CAAA,QAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,WAAA,EAAA,YAAA,EAAA,CAAA,QAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,iBAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,EAAA,CAAA,EAAA,mBAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,OAAA,iBAAA,kBAAA,kCAAA,YAAA,UAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,sBAAA,iBAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,iBAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,UAAA,iBAAA,EAAA,SAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,cAAA,wCAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,WAAA,EAAA,CAAA,EAAA,MAAA,YAAA,UAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GClDtBlM,EAAA,EAAAoM,IAAA,GAAA,GAAA,MAAA,CAAA,EAAoD,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAApK,EAAA,OAA9C7C,EAAA,OAAA+M,EAAAxM,QAAA,iBDoDF2M,EAAYC,GAAAC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GACAC,GAAaC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACbC,GAAkBC,GAClBC,GACAC,GACAC,EAAO,EAAAC,OAAA,CAAA;4GAAA,CAAA,CAAA,CAAA,SAGErK,CAA2B,GAAA,IE/DxC,IAAAsK,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCnBA,IAkBaC,GAlBbC,GAAAC,EAAA,KAEAC,SAgBaH,IAA+B,IAAA,CAAtC,MAAOA,CAA+B,CAC1CI,UAAUC,EAA6BC,EAAiB,CACtD,GAAIA,GAAa,KAAKC,aAAaD,EAAUE,UAAU,EACrD,MAAO,CACLA,WAAYF,EAAUE,WACtBC,YAAaH,EAAUG,aAK3B,GAAIJ,GAAUK,cAAcC,QAC1B,QAAWC,KAAOP,EAASK,aACzB,GAAI,KAAKH,aAAaK,EAAIC,aAAa,EACrC,MAAO,CACLL,WAAYI,EAAIC,cAChBJ,YAAaG,EAAIH,aAMzB,MAAO,CAAA,CACT,CAEQF,aAAaC,EAAmB,CACtC,OAAOM,GAAYC,SAASP,CAAwB,CACtD,iDA1BWR,EAA+B,CAAA,oEAA/BA,EAA+BgB,KAAA,EAAA,CAAA,CAAA,SAA/BhB,CAA+B,GAAA,2BETpCiB,GAAA,CAAA,6BAAAC,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,EAAA,yDACGC,EAAA,mBAAAC,EAAA,EAAA,EAAAC,EAAAC,QAAA,EAAAC,EAAAC,CAAA,EAEc,0BAAAC,GAAA,EAAAC,IAAAL,EAAAC,QAAA,CAAA,6BAabK,EAAA,EAAA,2BAAA,EAAA,kBAAiDR,EAAA,WAAAE,EAAAC,QAAA,6BACjDK,EAAA,EAAA,4BAAA,EAAA,kBAAmDR,EAAA,WAAAE,EAAAC,QAAA,6BACnDK,EAAA,EAAA,2BAAA,EAAA,kBAAiDR,EAAA,WAAAE,EAAAC,QAAA,6BACjDK,EAAA,EAAA,8BAAA,EAAA,kBAAuDR,EAAA,WAAAE,EAAAC,QAAA,uCACvDM,EAAA,EAAA,oBAAA,EAAA,eAGEC,EAAA,iBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAX,EAAAY,EAAA,CAAA,EAAA,OAAAC,EAAkBb,EAAAc,eAAAL,CAAA,CAAsB,CAAA,CAAA,EAGzCM,EAAA,qBAJCjB,EAAA,WAAAE,EAAAC,QAAA,EAAqB,mBAAAD,EAAAgB,oBAAA,CAAA,EAEqB,QAAAjB,EAAA,EAAA,EAAAC,EAAAiB,YAAA,CAAA,6BAG5CX,EAAA,EAAA,oCAAA,EAAA,kBAEER,EAAA,WAAAE,EAAAC,QAAA,8BAfNiB,EAAA,CAAA,EAAgC,EAAA,EAAA,EAE5BtB,EAAA,EAAAuB,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAuE,EAAAC,IAAA,EAAA,EAAA,4BAAA,EAAA,EACE,EAAAC,IAAA,EAAA,EAAA,2BAAA,EAAA,EACF,EAAAC,IAAA,EAAA,EAAA,8BAAA,EAAA,EACM,EAAAC,IAAA,EAAA,EAAA,oBAAA,EAAA,EAO5E,EAAAC,IAAA,EAAA,EAAA,oCAAA,EAAA,yBAXWC,EAAA,EAAA3B,EAAA,WAAAE,EAAAC,SAAAyB,gBAAA,EACeD,EAAA,EAAA3B,EAAA,eAAA,MAAA,EACC2B,EAAA,EAAA3B,EAAA,eAAA,OAAA,EACD2B,EAAA,EAAA3B,EAAA,eAAA,MAAA,EACG2B,EAAA,EAAA3B,EAAA,eAAA,SAAA,EAE3B2B,EAAA,EAAA3B,EAAA,eAAA,MAAA,EAOA2B,EAAA,EAAA3B,EAAA,eAAA,eAAA,uCAOLS,EAAA,EAAA,sBAAA,EAAA,EASEC,EAAA,SAAA,UAAA,CAAAE,EAAAiB,CAAA,EAAA,IAAA3B,EAAAY,EAAA,CAAA,EAAA,OAAAC,EAAAb,EAAA4B,SAAqB,EAAK,CAAA,CAAA,EAAC,kBAAA,SAAAnB,EAAA,CAAAC,EAAAiB,CAAA,EAAA,IAAA3B,EAAAY,EAAA,CAAA,EAAA,OAAAC,EACRb,EAAAc,eAAAL,CAAA,CAAsB,CAAA,CAAA,EAC1CM,EAAA,8BARCjB,EAAA,cAAA+B,EAAAC,WAAA,EAAuC,aAAAD,EAAAE,UAAA,EACF,gBAAA/B,EAAAC,SAAA6B,WAAA,EACE,sBAAA9B,EAAAC,SAAAyB,gBAAA,EACU,4BAAA1B,EAAAgC,oBAAA,CAAA,EACE,gBAAAhC,EAAAC,SAAAgC,SAAA,8BARvDf,EAAA,CAAA,EACEtB,EAAA,EAAAsC,IAAA,EAAA,EAAA,sBAAA,EAAA,0DACGT,EAAA,EAAA3B,EAAA,OAAAqC,GAAA,EAAA,EAAAnC,EAAAC,SAAAD,EAAAgB,oBAAA,CAAA,CAAA,uCAqBCT,EAAA,EAAA,SAAA,EAAA,EAAsBC,EAAA,QAAA,UAAA,CAAAE,EAAA0B,CAAA,EAAA,IAAApC,EAAAY,EAAA,CAAA,EAAA,OAAAC,EAASb,EAAAqC,mBAAA,CAAoB,CAAA,CAAA,EACjDC,EAAA,CAAA,mBACFvB,EAAA,QADEU,EAAA,EAAAc,EAAA,IAAAxC,EAAA,EAAA,EAAA,yBAAA,EAAA,GAAA,uCAPRQ,EAAA,EAAA,MAAA,EAAA,EAAgF,EAAA,WAAA,KAAA,CAAA,EACrC,EAAA,SAAA,EAAA,EACjBC,EAAA,QAAA,UAAA,CAAAE,EAAA8B,CAAA,EAAA,IAAAxC,EAAAY,EAAA,CAAA,EAAA,OAAAC,EAAAb,EAAA4B,SAAoB,EAAI,CAAA,CAAA,EAC5CU,EAAA,CAAA,mBACFvB,EAAA,EACAnB,EAAA,EAAA6C,IAAA,EAAA,EAAA,SAAA,EAAA,EAKF1B,EAAA,EACAR,EAAA,EAAA,SAAA,EAAA,EAAkE,EAAA,UAAA,EACtD+B,EAAA,EAAA,WAAA,EAASvB,EAAA,EAAW,EACvB,4BAVLU,EAAA,CAAA,EAAAc,EAAA,IAAAxC,EAAA,EAAA,EAAA,oBAAA,EAAA,GAAA,EAEF0B,EAAA,CAAA,EAAAiB,EAAA1C,EAAA2C,aAAA,EAAA,EAAA,EAAA,EAMsBlB,EAAA,EAAA3B,EAAA,oBAAA8C,CAAA,8BArE9BrC,EAAA,EAAA,MAAA,CAAA,EAMEX,EAAA,EAAAiD,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAQAvC,EAAA,EAAA,wBAAA,CAAA,EAOEX,EAAA,EAAAmD,IAAA,EAAA,EAAA,eAAA,CAAA,EAAgC,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EAmChC1C,EAAA,EAAA,0BAAA,EAAA,EAEAV,EAAA,EAAAqD,IAAA,GAAA,EAAA,MAAA,EAAA,EAeFlC,EAAA,EAAwB,0BAvExBjB,EAAA,WAAAE,EAAAC,SAAAyB,gBAAA,EAAsC,UAAAtB,GAAA,GAAA8C,GAAAlD,EAAAmD,MAAA,CAAA,EAapC1B,EAAA,CAAA,EAAA3B,EAAA,WAAAE,EAAAC,QAAA,EAAqB,YAAAD,EAAAC,SAAAgC,SAAA,EACW,0BAAAjC,EAAAC,SAAAmD,UAAA,EAAA,EACmB,mBAAApD,EAAAC,SAAAyB,mBAAA,OAAA2B,EAAAC,MAAA,EACiC,yBAAA,CAAAtD,EAAAgB,oBAAA,EAAAc,WAAA,EAGrEL,EAAA,EAAA3B,EAAA,OAAA,CAAAE,EAAA4B,QAAA,EAoBAH,EAAA,EAAA3B,EAAA,OAAAE,EAAA4B,QAAA,EAeUH,EAAA,EAAA3B,EAAA,WAAAE,EAAAC,QAAA,EAEsCwB,EAAA,EAAA3B,EAAA,OAAA,CAAAE,EAAA4B,QAAA,8BA3DrEV,EAAA,CAAA,EACEtB,EAAA,EAAA2D,IAAA,EAAA,GAAA,MAAA,CAAA,sBACG9B,EAAA,EAAA3B,EAAA,OAAAE,EAAAwD,gBAAA,CAAA,6BAkFDlD,EAAA,EAAA,6BAAA,EAAA,kBAA4BR,EAAA,WAAAE,EAAAC,QAAA,6BAC5BK,EAAA,EAAA,oBAAA,EAAA,kBAA0CR,EAAA,WAAAE,EAAAC,QAAA,6BAC1CK,EAAA,EAAA,qBAAA,EAAA,kBAEER,EAAA,WAAAE,EAAAC,QAAA,EAAqB,qBAAAD,EAAAgB,oBAAA,EAAAc,WAAA,EACmC,aAAA9B,EAAAgB,oBAAA,EAAAe,UAAA,6BAG1DzB,EAAA,EAAA,oBAAA,EAAA,kBAEER,EAAA,WAAAE,EAAAC,QAAA,EAAqB,qBAAAD,EAAAgB,oBAAA,EAAAc,WAAA,EACmC,aAAA9B,EAAAgB,oBAAA,EAAAe,UAAA,6BAG1DzB,EAAA,EAAA,6BAAA,EAAA,kBAEER,EAAA,WAAAE,EAAAC,QAAA,EAAqB,qBAAAD,EAAAgB,oBAAA,EAAAc,WAAA,EACmC,aAAA9B,EAAAgB,oBAAA,EAAAe,UAAA,6BAG1DzB,EAAA,EAAA,mCAAA,EAAA,kBAEER,EAAA,WAAAE,EAAAC,QAAA,6BAEFK,EAAA,EAAA,uBAAA,EAAA,kBAEER,EAAA,WAAAE,EAAAC,QAAA,EAAqB,qBAAAD,EAAAgB,oBAAA,EAAAc,WAAA,EACmC,aAAA9B,EAAAgB,oBAAA,EAAAe,UAAA,8BAjC5DxB,EAAA,EAAA,MAAA,CAAA,EAMEX,EAAA,EAAA6D,IAAA,EAAA,EAAA,6BAAA,EAAA,EAAiF,EAAAC,IAAA,EAAA,EAAA,oBAAA,EAAA,EACjB,EAAAC,IAAA,EAAA,EAAA,qBAAA,EAAA,EAM/D,EAAAC,IAAA,EAAA,EAAA,oBAAA,EAAA,EAMA,EAAAC,IAAA,EAAA,EAAA,6BAAA,EAAA,EAMA,EAAAC,IAAA,EAAA,EAAA,mCAAA,EAAA,EAIA,EAAAC,IAAA,EAAA,EAAA,uBAAA,EAAA,EAOHhD,EAAA,mBAlCEjB,EAAA,WAAAE,EAAAC,SAAAyB,gBAAA,EAAsC,UAAAtB,GAAA,EAAA8C,GAAAlD,EAAAmD,MAAA,CAAA,EAIa1B,EAAA,EAAA3B,EAAA,eAAA,cAAA,EAC/B2B,EAAA,EAAA3B,EAAA,eAAA,MAAA,EAEjB2B,EAAA,EAAA3B,EAAA,eAAA,OAAA,EAMA2B,EAAA,EAAA3B,EAAA,eAAA,MAAA,EAMA2B,EAAA,EAAA3B,EAAA,eAAA,eAAA,EAMA2B,EAAA,EAAA3B,EAAA,eAAA,mBAAA,EAIA2B,EAAA,EAAA3B,EAAA,eAAA,SAAA,6BA/BLF,EAAA,EAAAoE,IAAA,EAAA,GAAA,MAAA,CAAA,iBACGlE,EAAA,OAAAE,EAAAwD,gBAAA,CAAA,8BAwCLjD,EAAA,EAAA,KAAA,EAAK+B,EAAA,CAAA,+DAA8FvB,EAAA,+BAA9FU,EAAA,EAAAwC,GAAA,GAAAlE,EAAA,EAAA,EAAA,cAAA,EAAA,KAAAoC,GAAA,EAAA,EAAApC,EAAA,EAAA,EAAAmE,CAAA,EAAAlE,EAAAmE,UAAA,EAAA,EAAA,8BAIL5D,EAAA,EAAA,MAAA,EAAA,EAAuC,EAAA,UAAA,EAC3B+B,EAAA,EAAA,OAAA,EAAKvB,EAAA,EACfR,EAAA,EAAA,MAAA,EAAM+B,EAAA,CAAA,+DAAkGvB,EAAA,EAAO,+BAAzGU,EAAA,CAAA,EAAAwC,GAAA,GAAAlE,EAAA,EAAA,EAAA,kBAAA,EAAA,KAAAoC,GAAA,EAAA,EAAApC,EAAA,EAAA,EAAAqE,CAAA,EAAApE,EAAAmE,UAAA,EAAA,EAAA,GD9HV,WAwFaE,GAxFbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KAgBAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,uFA2Ca/B,IAA4B,IAAA,CAAnC,MAAOA,CAA4B,CAzCzCgC,aAAA,CA2CE,KAAArF,oBAAsBsF,GAAMC,SAAQ,EAC3B,KAAApD,OAAS,GAClB,KAAAR,aAAe2D,GAAM,EAAK,EAET,KAAAE,0BAA4BC,EAAOC,EAAyB,EAC5D,KAAAC,aAAeF,EAAOG,EAAe,EACrC,KAAAC,UAAYJ,EAAOK,EAAS,EAC5B,KAAAC,SAAWN,EAAOO,EAAQ,EAC1B,KAAAC,gBAAkBR,EAAOS,EAAe,EAEzD,KAAAjG,aAAe,KAAKuF,0BAA0BW,MAAMC,OAAO,aAAa,EAExE,KAAAxF,SAAW,GACF,KAAAuC,WAAakD,GAAWC,OACd,KAAAtF,oBAAsBuF,EAAS,IAAK,CACrD,IAAMC,EAAQ,KAAKxG,oBAAmB,EACtC,OAAOwG,EAAMzF,aAAe,eAAiB,CAACyF,EAAM1F,YAAY2F,WAAU,eAAA,CAC5E,CAAC,EAEDjE,iBAAe,CACb,IAAMvD,EAAW,KAAKA,SACtB,GAAIA,GAAa,KACf,MAAO,GAGT,OAAQA,EAASyB,iBAAgB,CAC/B,IAAK,QACH,MAAO,GACT,IAAK,OACH,OACE,KAAKiF,aAAae,2BAA2BzH,EAAU0H,EAAYC,iBAAiB,GAAGC,aACvF,KAAKlB,aAAae,2BAA2BzH,EAAU0H,EAAYG,gBAAgB,GAAGD,YAE1F,IAAK,UACH,MAAO,GACT,IAAK,OACH,MAAO,GACT,IAAK,eACH,OAAOE,GAA0BC,SAC/B,KAAKrB,aAAae,2BAA2BzH,EAAUgI,GAAoBC,wBAAwB,GAC/FL,WAA+B,EAEvC,IAAK,OACH,MAAO,GACT,IAAK,gBACH,MAAO,GACT,IAAK,oBACH,MAAO,GACT,QACEM,eAAQC,MAAM,6BAA6BnI,EAASyB,gBAAgB,EAAE,EAC/D,EACX,CACF,CAEQ2G,mBAAiB,CACvB,IAAMC,EAAc,KAAKvB,SAASwB,IAAIC,MAAM,GAAG,EAAE,CAAC,EAE5CC,EAAoC,CACxCC,QAASC,GAAeC,WACxBC,SAAUC,GAAqBC,mBAC/BC,OAAQ,CACN,CACEC,OAAQ,KAAKhJ,SAAS6B,YACvB,GAGCoH,EAAgBC,GAAc,CAACV,CAAU,CAAC,EAChD,MAAO,GAAGH,CAAW,WAAWY,CAAa,EAC/C,CAEA7G,oBAAkB,CAChB,KAAKwE,UAAUuC,KAAK,KAAKf,kBAAiB,CAAE,EAC5C,KAAKpB,gBAAgBoC,iBAAiB,sCAAsC,CAC9E,CAEAvI,eAAeb,EAA2B,CACxC,IAAMqJ,EAAa,KAAK9C,0BAA0BW,MAAMoC,IAAI,YAAY,EAClEC,EAAQF,EAAWG,UAAWC,GAAMA,EAAE5H,cAAgB,KAAK7B,SAAS6B,WAAW,EACjF0H,GAAS,IACX,KAAKhD,0BAA0BmD,0BAA0BL,EAAWE,CAAK,CAAC,EAC1EF,EAAWE,CAAK,EAAIvJ,EACpB,KAAKuG,0BAA0BW,MAAMyC,IAAI,CAAEN,WAAY,CAAC,GAAGA,CAAU,CAAC,CAAE,EACpE,KAAKrJ,SAAS6B,cAChB,KAAKF,SAAW,IAGtB,iDAxFWyC,EAA4B,CAAA,+BAA5BA,EAA4BwF,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,OAAA,CAAA7J,SAAA,WAAAe,oBAAA,CAAA,EAAA,qBAAA,EAAAmC,OAAA,SAAAR,aAAA,CAAA,EAAA,cAAA,CAAA,EAAAoH,SAAA,CAAAC,GArC5B,CAACC,EAA0B,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,CAAA,sBAAA,SAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,QAAA,gBAAA,EAAA,WAAA,UAAA,EAAA,MAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,WAAA,SAAA,EAAA,CAAA,EAAA,WAAA,YAAA,0BAAA,mBAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,QAAA,wBAAA,6BAAA,GAAA,EAAA,MAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,WAAA,EAAA,cAAA,EAAA,CAAA,EAAA,WAAA,mBAAA,QAAA,iBAAA,EAAA,cAAA,EAAA,CAAA,EAAA,iBAAA,WAAA,mBAAA,OAAA,EAAA,CAAA,6BAAA,GAAA,EAAA,cAAA,aAAA,gBAAA,sBAAA,4BAAA,gBAAA,SAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,6BAAA,GAAA,EAAA,SAAA,kBAAA,cAAA,aAAA,gBAAA,sBAAA,4BAAA,eAAA,EAAA,CAAA,6BAAA,GAAA,EAAA,uBAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,WAAA,qBAAA,aAAA,EAAA,cAAA,EAAA,CAAA,EAAA,WAAA,qBAAA,aAAA,EAAA,cAAA,EAAA,CAAA,EAAA,WAAA,qBAAA,YAAA,EAAA,CAAA,EAAA,WAAA,qBAAA,YAAA,EAAA,CAAA,EAAA,2BAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,ICnDzC/J,EAAA,EAAA,KAAA,EACEX,EAAA,EAAA4K,IAAA,EAAA,EAAA,eAAA,CAAA,EAAqE,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAA3H,EAAA,EAoHvE/B,EAAA,EAEAnB,EAAA,EAAA8K,IAAA,EAAA,EAAA,cAAA,KAAA,EAAA5H,EAAA,EAAsD,EAAA6H,IAAA,EAAA,EAAA,cAAA,KAAA,EAAA7H,EAAA,mBAtHrCrB,EAAA,EAAA3B,EAAA,OAAAyK,EAAAtK,SAAA2K,gBAAA,EAAiC,WAAAC,CAAA,kBDoD9CC,EAAYC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GACAC,GACAC,GAAaC,GACbC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAAaC,GAAAC,GAAAC,GACbC,GAAeC,GACfC,GACAC,GACAC,GAEAC,GACAC,EAA2B,EAAAC,OAAA,CAAA;sHAAA,CAAA,CAAA,CAAA,SAGlBtJ,CAA4B,GAAA,4BGzE7BuJ,EAAA,CAAA,yBAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAC,CAAA,EAAA,GAAA,6BAKEH,EAAA,CAAA,mBACAI,EAAA,EAAA,IAAA,CAAA,EAAmEJ,EAAA,CAAA,EAA6BK,EAAA,uBADhGJ,EAAA,IAAAC,EAAA,EAAA,EAAA,wBAAA,EAAA,GAAA,EACGI,EAAA,CAAA,EAAAC,EAAA,aAAAC,EAAAC,YAAA,EAAA,IAAAC,EAAAC,OAAA,EAAgEL,EAAA,EAAAM,EAAAF,EAAAG,IAAA,6BAFrEC,EAAA,EAAAC,IAAA,EAAA,CAAA,oBAAAC,GAAAC,EAAAT,EAAAU,mBAAA,GAAA,EAAA,GAAAD,CAAA,0BASFE,GAAA,CAAA,4BAAAL,EAAA,EAAAM,IAAA,EAAA,EAAA,eAAA,CAAA,uBAAeb,EAAA,mBAAAc,CAAA,0BAEfF,GAAA,CAAA,4BAAAL,EAAA,EAAAQ,IAAA,EAAA,EAAA,eAAA,CAAA,uBAAef,EAAA,mBAAAgB,CAAA,8BA7BvBnB,EAAA,EAAA,WAAA,CAAA,EAA8B,EAAA,iBAAA,EACwE,EAAA,MAAA,CAAA,EAEhGoB,EAAA,EAAA,cAAA,CAAA,EAOFnB,EAAA,EACAD,EAAA,EAAA,gBAAA,EAAgB,EAAA,OAAA,CAAA,EAEZU,EAAA,EAAAW,IAAA,EAAA,CAAA,EAGAzB,EAAA,CAAA,EACAc,EAAA,EAAAY,IAAA,EAAA,CAAA,EAMFrB,EAAA,EAAO,EAETD,EAAA,EAAA,mBAAA,EACEU,EAAA,GAAAa,IAAA,EAAA,EAAA,cAAA,EAAwB,GAAAC,IAAA,EAAA,EAAA,cAAA,EAK1BvB,EAAA,EACAwB,GAAA,EAAA,EACFxB,EAAA,EACAD,EAAA,GAAA,kBAAA,EAA8E,GAAA,WAAA,CAAA,EACzB,GAAA,mBAAA,CAAA,EAE/CyB,GAAA,GAAA,CAAA,EACFxB,EAAA,EAAmB,EACV,EACM,oBAvCFC,EAAA,EAAAwB,GAAA,cAAAtB,EAAAuB,WAAA,EAAA,MAAAvB,EAAAwB,aAAA,IAAAC,SAAA,EAAA,IAAA,EAIX3B,EAAA,CAAA,EAAA4B,GAAA,OAAA1B,EAAA2B,aAAA,CAAA,EADA5B,EAAA,QAAAC,EAAAwB,YAAA,EASA1B,EAAA,CAAA,EAAAU,GAAAoB,EAAA5B,EAAA6B,WAAA,GAAA,EAAA,GAAAD,CAAA,EAGA9B,EAAA,EAAAL,EAAA,IAAAE,EAAA,GAAA,EACAG,EAAA,EAAAU,EAAAR,EAAA8B,uBAAA,EAAA,EAAA,EAAA,EASFhC,EAAA,CAAA,EAAAU,EAAAR,EAAA+B,iBAAA,GAAA,EAAA,EAQcjC,EAAA,CAAA,EAAAwB,GAAA,eAAAtB,EAAAwB,aAAA,IAAAC,SAAA,EAAA,IAAA,EAEoB3B,EAAA,CAAA,EAAAwB,GAAA,cAAA,EAAAtB,EAAAwB,aAAA,IAAAC,SAAA,EAAA,IAAA,8BAUtC7B,EAAA,EAAA,IAAA,EAAA,EACEJ,EAAA,CAAA,cACFK,EAAA,mBADEC,EAAA,EAAAL,EAAA,IAAAuC,GAAA,EAAA,EAAArC,EAAAK,EAAAiC,UAAA,EAAA,GAAA,6BAFJ3B,EAAA,EAAA4B,IAAA,EAAA,EAAA,IAAA,EAAA,mBAAA1B,GAAA2B,EAAAnC,EAAAoC,cAAA,GAAA,EAAA,GAAAD,CAAA,0BASExB,GAAA,CAAA,6BADFf,EAAA,EAAA,MAAA,EAAA,EACEU,EAAA,EAAA+B,IAAA,EAAA,EAAA,eAAA,CAAA,EACFxC,EAAA,kBADiBC,EAAA,EAAAC,EAAA,mBAAAC,EAAA+B,gBAAA,GDvDnB,YAiCaO,GAjCbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KAEAC,KAGAC,KACAC,+HAiBaf,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CAwCzCgB,YACmBC,EACAC,EACAC,EAA8C,CAF9C,KAAAF,aAAAA,EACA,KAAAC,iBAAAA,EACA,KAAAC,mBAAAA,EA1CnB,KAAAjC,aAAeA,GACf,KAAAS,WAAayB,GAAWC,OACxB,KAAAC,uBAAyB,KAAKJ,iBAAiBK,QAAQ,iCAAiC,EAExF,KAAAC,SAAWC,GAAyB,CAAA,CAAE,EACtC,KAAAC,UAAYD,GAAwBE,MAAS,EAC7C,KAAAC,wBAA0BH,GAAe,EAAK,EAC9C,KAAAxC,WAAawC,GAAe,EAAI,EAKhC,KAAAjC,uBAAyBiC,GAAe,EAAK,EAE7C,KAAAI,SAAWC,EAAS,IAAK,CACvB,IAAMC,EAAO,KAAKL,UAAS,EAC3B,MAAO,GAAGK,GAAMC,WAAa,EAAE,IAAID,GAAME,UAAY,EAAE,GAAGC,KAAI,GAAM,KAAKZ,sBAC3E,CAAC,EAEQ,KAAA/B,WAAauC,EAAS,IAAM,KAAKK,2BAA2B,KAAKX,SAAQ,GAAIY,gBAAgB,CAAC,EAE9F,KAAAtC,cAAgBgC,EAAS,IAE9B,KAAKb,aAAaoB,2BAA2B,KAAKb,SAAQ,EAAIc,GAAeC,qBAAqB,GAAGC,WACrG,IAEH,EAED,KAAApE,mBAAqB,KAAK+C,mBAAmB/C,mBAC7C,KAAAT,YAAc,KAAKwD,mBAAmBxD,YAEtC,KAAA0B,aAAeyC,EAAS,IAAK,CAC3B,IAAMW,EAAe,KAAKjB,SAAQ,GAAIY,iBACtC,GAAKK,EAGL,OAAOC,GAAcD,CAAY,CACnC,CAAC,EA2BkB,KAAAE,aAAeC,EArB/B,CAEKT,2BAA2BM,EAAqB,CACtD,OAAQA,EAAY,CAClB,KAAK,KAAKE,aAAaE,KACrB,MAAO,oDACT,KAAK,KAAKF,aAAaG,MACrB,MAAO,4DACT,KAAK,KAAKH,aAAaI,KACrB,MAAO,2DACT,KAAK,KAAKJ,aAAaK,QACrB,MAAO,8DACT,KAAK,KAAKL,aAAaM,KACrB,MAAO,oDACT,KAAK,KAAKN,aAAaO,cACrB,MAAO,oEACT,QACE,MAAO,EACX,CACF,iDA/DWlD,GAA8BmD,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,+BAA9BtD,EAA8BuD,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,OAAA,CAAAhC,SAAA,CAAA,EAAA,UAAA,EAAAE,UAAA,CAAA,EAAA,WAAA,EAAAE,wBAAA,CAAA,EAAA,yBAAA,EAAA3C,WAAA,CAAA,EAAA,YAAA,EAAAQ,iBAAA,mBAAAD,uBAAA,CAAA,EAAA,wBAAA,CAAA,EAAAiE,QAAA,CAAAjC,SAAA,iBAAAE,UAAA,kBAAAE,wBAAA,gCAAA3C,WAAA,mBAAAO,uBAAA,8BAAA,EAAAkE,SAAA,CAAAC,GAX9B,CAACC,EAAO,CAAC,CAAA,EAAAC,mBAAAC,IAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,QAAA,SAAA,kBAAA,kCAAA,YAAA,UAAA,EAAA,QAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,WAAA,EAAA,YAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,gBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAA9G,EAAA,IAAA8G,EAAA,YCtBtBnG,EAAA,EAAAoG,IAAA,GAAA,GAAA,WAAA,CAAA,EAA+B,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EA6CO,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAD,EAAA,cA7CtCpG,GAAAsG,EAAAnH,EAAAwE,SAAA,GAAA,EAAA,GAAA2C,CAAA,kBDwBIC,EAAYC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GAAaC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACbC,GACAC,GAAkBC,GAClBC,EAAU,EAAAC,OAAA,CAAA;yHAAA,CAAA,CAAA,CAAA,SAGD1F,CAA8B,GAAA,2BG5BjC2F,GAAA,CAAA,6BAAAC,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,yDACGC,EAAA,mBAAAC,EAAA,EAAA,EAAAC,EAAAC,QAAA,EAAAC,EAAAC,CAAA,EAEgB,0BAAAC,GAAA,EAAAC,IAAAL,EAAAC,QAAA,CAAA,6BAeXK,EAAA,EAAA,2BAAA,CAAA,kBAA0BR,EAAA,WAAAE,EAAAC,QAAA,6BAG1BK,EAAA,EAAA,4BAAA,CAAA,kBAA2BR,EAAA,WAAAE,EAAAC,QAAA,6BAG3BK,EAAA,EAAA,2BAAA,CAAA,kBAA0BR,EAAA,WAAAE,EAAAC,QAAA,6BAG1BK,EAAA,EAAA,8BAAA,CAAA,kBAA6BR,EAAA,WAAAE,EAAAC,QAAA,uCAG7BM,EAAA,EAAA,oBAAA,EAAA,eAEEC,EAAA,iBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAX,EAAAY,EAAA,CAAA,EAAA,OAAAC,EAAkBb,EAAAc,eAAAL,CAAA,CAAsB,CAAA,CAAA,EAGzCM,EAAA,qBAJCjB,EAAA,WAAAE,EAAAC,QAAA,EAAqB,mBAAAD,EAAAgB,oBAAA,CAAA,EAEqB,QAAAjB,EAAA,EAAA,EAAAC,EAAAiB,YAAA,CAAA,6BAK5CX,EAAA,EAAA,oCAAA,CAAA,kBAAmCR,EAAA,WAAAE,EAAAC,QAAA,8BAvBzCiB,EAAA,CAAA,EAEItB,EAAA,EAAAuB,IAAA,EAAA,EAAA,2BAAA,CAAA,EAA2B,EAAAC,IAAA,EAAA,EAAA,4BAAA,CAAA,EAGC,EAAAC,IAAA,EAAA,EAAA,2BAAA,CAAA,EAGD,EAAAC,IAAA,EAAA,EAAA,8BAAA,CAAA,EAGG,EAAAC,IAAA,EAAA,EAAA,oBAAA,CAAA,EAGH,EAAAC,IAAA,EAAA,EAAA,oCAAA,CAAA,yBAb7BC,EAAA,EAAAC,GAAAC,EAAA3B,EAAAC,SAAA2B,oBAAA5B,EAAA6B,aAAAC,KAAA,EAAAH,IAAA3B,EAAA6B,aAAAE,MAAA,EAAAJ,IAAA3B,EAAA6B,aAAAG,KAAA,EAAAL,IAAA3B,EAAA6B,aAAAI,QAAA,EAAAN,IAAA3B,EAAA6B,aAAAK,KAAA,EAAAP,IAAA3B,EAAA6B,aAAAM,cAAA,EAAA,EAAA,uCA4BA5B,EAAA,EAAA,sBAAA,EAAA,EAQEC,EAAA,SAAA,UAAA,CAAAE,EAAA0B,CAAA,EAAA,IAAApC,EAAAY,EAAA,CAAA,EAAA,OAAAC,EAAAb,EAAAqC,SAAqB,EAAK,CAAA,CAAA,EAAC,kBAAA,SAAA5B,EAAA,CAAAC,EAAA0B,CAAA,EAAA,IAAApC,EAAAY,EAAA,CAAA,EAAA,OAAAC,EACRb,EAAAc,eAAAL,CAAA,CAAsB,CAAA,CAAA,EAC1CM,EAAA,yBARCjB,EAAA,cAAAwC,EAAAC,WAAA,EAAuC,aAAAD,EAAAE,UAAA,EACF,gBAAAxC,EAAAC,SAAAsC,WAAA,EACE,sBAAAvC,EAAAC,SAAA2B,gBAAA,EACU,4BAAA5B,EAAAyC,oBAAA,CAAA,EACE,gBAAAzC,EAAAC,SAAAyC,SAAA,8BAPvD9C,EAAA,EAAA+C,IAAA,EAAA,EAAA,sBAAA,EAAA,wDAAAjB,GAAAC,EAAAiB,GAAA,EAAA,EAAA5C,EAAAC,SAAAD,EAAAgB,oBAAA,CAAA,GAAA,EAAA,GAAAW,CAAA,uCAwBMpB,EAAA,EAAA,SAAA,EAAA,EAAsBC,EAAA,QAAA,UAAA,CAAAE,EAAAmC,CAAA,EAAA,IAAA7C,EAAAY,EAAA,CAAA,EAAA,OAAAC,EAASb,EAAA8C,mBAAA,CAAoB,CAAA,CAAA,EACjDC,EAAA,CAAA,mBACFhC,EAAA,QADEU,EAAA,EAAAuB,EAAA,IAAAjD,EAAA,EAAA,EAAA,yBAAA,EAAA,GAAA,uCAPRQ,EAAA,EAAA,MAAA,CAAA,EAA8D,EAAA,WAAA,KAAA,CAAA,EACnB,EAAA,SAAA,EAAA,EACjBC,EAAA,QAAA,UAAA,CAAAE,EAAAuC,CAAA,EAAA,IAAAjD,EAAAY,EAAA,CAAA,EAAA,OAAAC,EAAAb,EAAAqC,SAAoB,EAAI,CAAA,CAAA,EAC5CU,EAAA,CAAA,mBACFhC,EAAA,EACAnB,EAAA,EAAAsD,IAAA,EAAA,EAAA,SAAA,EAAA,EAKFnC,EAAA,EACAR,EAAA,EAAA,SAAA,EAAA,EAAkE,EAAA,UAAA,EACtDwC,EAAA,EAAA,WAAA,EAAShC,EAAA,EAAW,EACvB,4BAVLU,EAAA,CAAA,EAAAuB,EAAA,IAAAjD,EAAA,EAAA,EAAA,oBAAA,EAAA,GAAA,EAEF0B,EAAA,CAAA,EAAAC,EAAA1B,EAAAmD,aAAA,EAAA,EAAA,EAAA,EAMsB1B,EAAA,EAAA3B,EAAA,oBAAAsD,CAAA,8BA1EhC7C,EAAA,EAAA,MAAA,CAAA,EACEX,EAAA,EAAAyD,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAQA/C,EAAA,EAAA,2BAAA,CAAA,EAOEX,EAAA,EAAA2D,IAAA,EAAA,EAAA,cAAA,EAAiB,EAAAC,IAAA,EAAA,CAAA,EA4CjBlD,EAAA,EAAA,0BAAA,CAAA,EAEAV,EAAA,EAAA6D,IAAA,GAAA,EAAA,MAAA,CAAA,EAiBF1C,EAAA,EAA2B,0BA/EFjB,EAAA,UAAAM,GAAA,EAAAsD,GAAA1D,EAAA2D,MAAA,CAAA,EAUvBlC,EAAA,CAAA,EAAA3B,EAAA,WAAAE,EAAAC,QAAA,EAAqB,YAAAD,EAAAC,SAAAyC,SAAA,EACW,0BAAA1C,EAAAC,SAAA2D,UAAA,EAAA,EACmB,mBAAA5D,EAAAC,SAAA2B,mBAAA5B,EAAA6B,aAAAK,KAAA2B,EAAAC,MAAA,EAC4C,yBAAA,CAAA9D,EAAAgB,oBAAA,EAAAuB,WAAA,EAG/Fd,EAAA,EAAAC,EAAA1B,EAAAqC,SAAA,EAAA,CAAA,EA4CyBZ,EAAA,CAAA,EAAA3B,EAAA,WAAAE,EAAAC,QAAA,EAEzBwB,EAAA,EAAAC,EAAA1B,EAAAqC,SAAA,GAAA,CAAA,6BA/DNzC,EAAA,EAAAmE,IAAA,EAAA,GAAA,MAAA,CAAA,iBAAArC,EAAA1B,EAAAgE,gBAAA,EAAA,EAAA,EAAA,6BAwFQ1D,EAAA,EAAA,6BAAA,CAAA,kBAA4BR,EAAA,WAAAE,EAAAC,QAAA,6BAG5BK,EAAA,EAAA,oBAAA,CAAA,kBAAmBR,EAAA,WAAAE,EAAAC,QAAA,6BAGnBK,EAAA,EAAA,qBAAA,EAAA,kBACER,EAAA,WAAAE,EAAAC,QAAA,EAAqB,qBAAAD,EAAAgB,oBAAA,EAAAuB,WAAA,EACmC,aAAAvC,EAAAgB,oBAAA,EAAAwB,UAAA,6BAK1DlC,EAAA,EAAA,oBAAA,EAAA,kBACER,EAAA,WAAAE,EAAAC,QAAA,EAAqB,qBAAAD,EAAAgB,oBAAA,EAAAuB,WAAA,EACmC,aAAAvC,EAAAgB,oBAAA,EAAAwB,UAAA,6BAK1DlC,EAAA,EAAA,6BAAA,EAAA,kBACER,EAAA,WAAAE,EAAAC,QAAA,EAAqB,qBAAAD,EAAAgB,oBAAA,EAAAuB,WAAA,EACmC,aAAAvC,EAAAgB,oBAAA,EAAAwB,UAAA,6BAK1DlC,EAAA,EAAA,mCAAA,CAAA,kBAAkCR,EAAA,WAAAE,EAAAC,QAAA,6BAGlCK,EAAA,EAAA,uBAAA,EAAA,kBACER,EAAA,WAAAE,EAAAC,QAAA,EAAqB,qBAAAD,EAAAgB,oBAAA,EAAAuB,WAAA,EACmC,aAAAvC,EAAAgB,oBAAA,EAAAwB,UAAA,8BAnChEjC,EAAA,EAAA,MAAA,CAAA,EAEIX,EAAA,EAAAqE,IAAA,EAAA,EAAA,6BAAA,CAAA,EAAmC,EAAAC,IAAA,EAAA,EAAA,oBAAA,CAAA,EAGR,EAAAC,IAAA,EAAA,EAAA,qBAAA,EAAA,EAGC,EAAAC,IAAA,EAAA,EAAA,oBAAA,EAAA,EAOD,EAAAC,IAAA,EAAA,EAAA,6BAAA,EAAA,EAOS,EAAAC,IAAA,EAAA,EAAA,mCAAA,CAAA,EAOI,EAAAC,IAAA,EAAA,EAAA,uBAAA,EAAA,EAW5CxD,EAAA,qBAxC2BjB,EAAA,UAAAM,GAAA,EAAAsD,GAAA1D,EAAA2D,MAAA,CAAA,EACzBlC,EAAA,EAAAC,GAAA8C,EAAAxE,EAAAC,SAAA2B,oBAAA5B,EAAA6B,aAAA4C,aAAA,EAAAD,IAAAxE,EAAA6B,aAAAC,KAAA,EAAA0C,IAAAxE,EAAA6B,aAAAE,MAAA,EAAAyC,IAAAxE,EAAA6B,aAAAG,KAAA,EAAAwC,IAAAxE,EAAA6B,aAAAM,cAAA,EAAAqC,IAAAxE,EAAA6B,aAAA6C,kBAAA,EAAAF,IAAAxE,EAAA6B,aAAAI,QAAA,EAAA,EAAA,6BAFJrC,EAAA,EAAA+E,IAAA,EAAA,EAAA,MAAA,CAAA,iBAAAjD,EAAA1B,EAAAgE,gBAAA,EAAA,EAAA,EAAA,8BA+CFzD,EAAA,EAAA,KAAA,EAAKwC,EAAA,CAAA,+DAA8FhC,EAAA,+BAA9FU,EAAA,EAAAmD,GAAA,GAAA7E,EAAA,EAAA,EAAA,cAAA,EAAA,KAAA6C,GAAA,EAAA,EAAA7C,EAAA,EAAA,EAAA8E,CAAA,EAAA7E,EAAA8E,UAAA,EAAA,EAAA,8BAILvE,EAAA,EAAA,MAAA,EAAA,EAAuC,EAAA,UAAA,EAC3BwC,EAAA,EAAA,OAAA,EAAKhC,EAAA,EACfR,EAAA,EAAA,MAAA,EAAMwC,EAAA,CAAA,+DAAkGhC,EAAA,EAAO,+BAAzGU,EAAA,CAAA,EAAAmD,GAAA,GAAA7E,EAAA,EAAA,EAAA,kBAAA,EAAA,KAAA6C,GAAA,EAAA,EAAA7C,EAAA,EAAA,EAAAgF,CAAA,EAAA/E,EAAA8E,UAAA,EAAA,EAAA,GD3IV,WA0FaE,GA1FbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KAgBAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,uFA4CahC,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CA1C3CiC,aAAA,CA4CE,KAAAjG,oBAAsBkG,GAAMC,SAAQ,EAC3B,KAAAxD,OAAS,GAClB,KAAAR,aAAe+D,GAAM,EAAK,EAET,KAAAE,0BAA4BC,EAAOC,EAAyB,EAC5D,KAAAC,aAAeF,EAAOG,EAAe,EACrC,KAAAC,UAAYJ,EAAOK,EAAS,EAC5B,KAAAC,SAAWN,EAAOO,EAAQ,EAC1B,KAAAC,gBAAkBR,EAAOS,EAAe,EAEzD,KAAA7G,aAAe,KAAKmG,0BAA0BW,MAAMC,OAAO,aAAa,EAExE,KAAA3F,SAAW,GACF,KAAAyC,WAAamD,GAAWC,OACd,KAAAzF,oBAAsB0F,EAAS,IAAK,CACrD,IAAMC,EAAQ,KAAKpH,oBAAmB,EACtC,OAAOoH,EAAM5F,aAAe,eAAiB,CAAC4F,EAAM7F,YAAY8F,WAAU,eAAA,CAC5E,CAAC,EAuEkB,KAAAxG,aAAeyG,GArElCtE,iBAAe,CACb,IAAM/D,EAAW,KAAKA,SACtB,GAAIA,GAAa,KACf,MAAO,GAGT,OAAQA,EAAS2B,iBAAgB,CAC/B,KAAK,KAAKC,aAAaE,MACrB,MAAO,GACT,KAAK,KAAKF,aAAaC,KACrB,OACE,KAAKyF,aAAagB,2BAA2BtI,EAAUuI,EAAYC,iBAAiB,GAAGC,aACvF,KAAKnB,aAAagB,2BAA2BtI,EAAUuI,EAAYG,gBAAgB,GAAGD,YAE1F,KAAK,KAAK7G,aAAaI,QACrB,MAAO,GACT,KAAK,KAAKJ,aAAaG,KACrB,MAAO,GACT,KAAK,KAAKH,aAAa4C,aACrB,OAAOmE,GAA0BC,SAC/B,KAAKtB,aAAagB,2BAA2BtI,EAAU6I,GAAoBC,wBAAwB,GAC/FL,WAA+B,EAEvC,KAAK,KAAK7G,aAAaK,KACrB,MAAO,GACT,KAAK,KAAKL,aAAaM,cACrB,MAAO,GACT,KAAK,KAAKN,aAAa6C,kBACrB,MAAO,GACT,QACEsE,eAAQC,MAAM,6BAA6BhJ,EAAS2B,gBAAgB,EAAE,EAC/D,EACX,CACF,CAEQsH,mBAAiB,CACvB,IAAMC,EAAc,KAAKxB,SAASyB,IAAIC,MAAM,GAAG,EAAE,CAAC,EAE5CC,EAAoC,CACxCC,QAASC,GAAeC,WACxBC,SAAUC,GAAqBC,mBAC/BC,OAAQ,CACN,CACEC,OAAQ,KAAK7J,SAASsC,YACvB,GAGCwH,EAAgBC,GAAc,CAACV,CAAU,CAAC,EAChD,MAAO,GAAGH,CAAW,WAAWY,CAAa,EAC/C,CAEAjH,oBAAkB,CAChB,KAAK2E,UAAUwC,KAAK,KAAKf,kBAAiB,CAAE,EAC5C,KAAKrB,gBAAgBqC,iBAAiB,sCAAsC,CAC9E,CAEApJ,eAAeb,EAA2B,CACxC,IAAMkK,EAAa,KAAK/C,0BAA0BW,MAAMqC,IAAI,YAAY,EAClEC,EAAQF,EAAWG,UAAWC,GAAMA,EAAEhI,cAAgB,KAAKtC,SAASsC,WAAW,EACjF8H,GAAS,IACX,KAAKjD,0BAA0BoD,0BAA0BL,EAAWE,CAAK,CAAC,EAC1EF,EAAWE,CAAK,EAAIpK,EACpB,KAAKmH,0BAA0BW,MAAM0C,IAAI,CAAEN,WAAY,CAAC,GAAGA,CAAU,CAAC,CAAE,EACpE,KAAKlK,SAASsC,cAChB,KAAKF,SAAW,IAGtB,iDAxFW2C,EAA8B,CAAA,+BAA9BA,EAA8B0F,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,OAAA,CAAA1K,SAAA,WAAAe,oBAAA,CAAA,EAAA,qBAAA,EAAA2C,OAAA,SAAAR,aAAA,CAAA,EAAA,cAAA,CAAA,EAAAyH,SAAA,CAAAC,GAtC9B,CAACC,EAA0B,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,CAAA,sBAAA,SAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,CAAA,EAAA,WAAA,YAAA,0BAAA,mBAAA,wBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,6BAAA,GAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,EAAA,CAAA,EAAA,WAAA,mBAAA,OAAA,EAAA,CAAA,EAAA,iBAAA,WAAA,mBAAA,OAAA,EAAA,CAAA,6BAAA,GAAA,EAAA,cAAA,aAAA,gBAAA,sBAAA,4BAAA,eAAA,EAAA,CAAA,6BAAA,GAAA,EAAA,SAAA,kBAAA,cAAA,aAAA,gBAAA,sBAAA,4BAAA,eAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,WAAA,qBAAA,YAAA,EAAA,CAAA,EAAA,WAAA,qBAAA,YAAA,EAAA,CAAA,EAAA,2BAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICpDzC5K,EAAA,EAAA,KAAA,EACEX,EAAA,EAAAyL,IAAA,EAAA,CAAA,EAAiC,EAAAC,IAAA,EAAA,CAAA,EAiInCvK,EAAA,EAEAnB,EAAA,EAAA2L,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAjI,EAAA,EAAsD,EAAAkI,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAlI,EAAA,SAnIpD7B,EAAA,EAAAC,EAAA0J,EAAAnL,SAAAwL,iBAAA,EAAA,CAAA,kBDqDEC,EAAYC,GAAAC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GACAC,GACAC,GAAaC,GACbC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAAaC,GAAAC,GAAAC,GACbC,GAAeC,GACfC,GACAC,GACAC,GAEAC,GACAC,GAEAC,GACAC,GACAC,EAA8B,EAAAC,OAAA,CAAA;yHAAA,CAAA,CAAA,CAAA,SAGrBpJ,CAA8B,GAAA,8BG/E3BqJ,EAAA,EAAA,2BAAA,EAAA,0DACEC,EAAA,WAAAC,CAAA,EAAqB,sBAAAC,CAAA,EACgB,SAAAC,CAAA,EACtB,eAAAC,EAAAC,aAAA,CAAA,6BAIjBN,EAAA,EAAA,wBAAA,EAAA,0DACEC,EAAA,WAAAC,CAAA,EAAqB,sBAAAC,CAAA,EACgB,SAAAC,CAAA,EACtB,eAAAC,EAAAC,aAAA,CAAA,8BAZrBC,EAAA,CAAA,EACEC,EAAA,EAAAC,IAAA,EAAA,EAAA,2BAAA,EAAA,eAOED,EAAA,EAAAE,IAAA,EAAA,EAAA,wBAAA,EAAA,uBAPFC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAAR,EAAAS,oCAAA,EAAA,EAAA,CAAA,8BAFJP,EAAA,CAAA,EACEC,EAAA,EAAAO,IAAA,EAAA,EAAA,eAAA,CAAA,uCAAmCJ,EAAA,EAAAV,EAAA,UAAAe,EAAAC,UAAA,EAAuB,eAAAZ,EAAAa,iBAAA,8BAL9DC,EAAA,EAAA,MAAA,CAAA,EAA0G,EAAA,MAAA,CAAA,EAClE,EAAA,KAAA,CAAA,EACJC,EAAA,CAAA,mBAA8BC,EAAA,EAAK,EAErEb,EAAA,EAAAc,IAAA,EAAA,EAAA,eAAA,CAAA,eAmBFD,EAAA,iCArBoCV,EAAA,CAAA,EAAAY,EAAAV,EAAA,EAAA,EAAAG,EAAAQ,IAAA,CAAA,EAEnBb,EAAA,CAAA,EAAAV,EAAA,OAAAY,EAAA,EAAA,EAAAR,EAAAoB,eAAA,CAAA,8BALnBlB,EAAA,CAAA,EACEC,EAAA,EAAAkB,IAAA,EAAA,EAAA,MAAA,CAAA,kCAAmDf,EAAA,EAAAV,EAAA,UAAA0B,CAAA,EAAqB,eAAAtB,EAAAuB,uBAAA,2BAyB1ErB,EAAA,CAAA,EACEP,EAAA,EAAA,sBAAA,kCA5BJO,EAAA,CAAA,EACEC,EAAA,EAAAqB,IAAA,EAAA,EAAA,eAAA,CAAA,EAAwE,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,oDAAzDnB,EAAA,EAAAV,EAAA,OAAA0B,EAAAI,OAAA,CAAA,EAAmC,WAAAC,CAAA,EA0BnCrB,EAAA,EAAAV,EAAA,OAAAY,EAAA,EAAA,EAAAR,EAAA4B,2BAAA,CAAA,8BA5BnB1B,EAAA,CAAA,EACEC,EAAA,EAAA0B,IAAA,EAAA,EAAA,eAAA,CAAA,mCAAevB,EAAA,EAAAV,EAAA,OAAAY,EAAA,EAAA,EAAAR,EAAA8B,iBAAA,CAAA,0BAmCjBnC,EAAA,EAAA,sBAAA,0BAaMO,EAAA,CAAA,EACEY,EAAA,EAAA,wBAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,GAAA,EAAGC,EAAA,CAAA,mBAA0DC,EAAA,aAF3DV,EAAA,CAAA,EAAAyB,EAAA,IAAAvB,EAAA,EAAA,EAAA,0CAAA,EAAA,GAAA,EAECF,EAAA,CAAA,EAAAY,EAAAV,EAAA,EAAA,EAAA,wCAAA,CAAA,2BAGHM,EAAA,EAAA,wBAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,GAAA,EAAGC,EAAA,CAAA,mBAAiEC,EAAA,SAFlEV,EAAA,EAAAyB,EAAA,IAAAvB,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,EAECF,EAAA,CAAA,EAAAY,EAAAV,EAAA,EAAA,EAAA,+CAAA,CAAA,8BAlBTN,EAAA,CAAA,EACEY,EAAA,EAAA,mBAAA,EAAA,EAAgD,EAAA,uBAAA,EAE5CnB,EAAA,EAAA,MAAA,EAAA,mBAIFqB,EAAA,EACAb,EAAA,EAAA6B,IAAA,EAAA,EAAA,eAAA,CAAA,EAAyF,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAY3FlB,EAAA,kCAfMV,EAAA,CAAA,EAAAV,EAAA,MAAAY,EAAA,EAAA,EAAA,6CAAA,CAAA,EAGWF,EAAA,CAAA,EAAAV,EAAA,OAAAuC,EAAAC,eAAA,EAA0C,WAAAC,CAAA,8BAT/DnC,EAAA,CAAA,EACEC,EAAA,EAAAmC,IAAA,EAAA,EAAA,eAAA,CAAA,oCAAehC,EAAA,EAAAV,EAAA,OAAAY,EAAA,EAAA,EAAAR,EAAAuC,QAAA,IAAA,EAAA,8BADjBpC,EAAA,EAAAqC,IAAA,EAAA,EAAA,eAAA,CAAA,+BAAe5C,EAAA,OAAA6C,GAAA,EAAAC,IAAAlC,EAAA,EAAA,EAAAR,EAAA2C,gBAAA,CAAA,CAAA,GDzCjB,QAkDaC,GAlDbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KAGAC,KAEAC,iFAwBavB,IAAoB,IAAA,CAA3B,MAAOA,CAAoB,CAG/B,IACIwB,YAAYA,EAAmB,CACjC,KAAKC,0BAA0BC,cAAcC,KAAKH,CAAW,CAC/D,CAEA,IACII,WAAWA,EAA8C,CAC3D,KAAKH,0BAA0BI,aAAaF,KAAKC,CAAU,CAC7D,CA6CAE,YAC8CC,EAC3BN,EACAO,EACAC,EAAmC,CAHR,KAAAF,OAAAA,EAC3B,KAAAN,0BAAAA,EACA,KAAAO,aAAAA,EACA,KAAAC,gBAAAA,EA3DnB,KAAA5E,aAAe6E,GAAM,EAAK,EAYhB,KAAAC,kBAAoB,IAAIC,GAEzB,KAAAC,WAAaC,GAAWC,OACxB,KAAAC,IAAM,IAAIC,KAEnB,KAAAjE,gBAAmDkE,EAAc,CAC/D,KAAKjB,0BAA0BC,cAAciB,aAAY,EACzD,KAAKlB,0BAA0BI,aAAac,aAAY,CAAE,CAC3D,EAAEC,KAAKC,EAAI,CAAC,CAACrB,EAAaI,CAAU,KAAO,CAAEJ,YAAAA,EAAaI,WAAAA,CAAU,EAA0B,CAAC,EAChG,KAAA1C,kBAAoB,KAAKuC,0BAA0BqB,MAAMC,OAAO,kBAAkB,EACzE,KAAAC,SAAW,KAAKvB,0BAA0BqB,MAAMC,OAAO,SAAS,EAEzE,KAAApD,SAAW+C,EAAc,CACvB,KAAKjB,0BAA0BqB,MAAMC,OAAO,mBAAmB,EAC/D,KAAKtB,0BAA0BqB,MAAMC,OAAO,oBAAoB,CAAC,CAClE,EAAEH,KAAKC,EAAI,CAAC,CAACI,EAAmBC,CAAkB,IAAMD,GAAqBC,CAAkB,CAAC,EACjG,KAAAnD,iBAAmB2C,EAAc,CAC/B,KAAKjB,0BAA0BqB,MAAMC,OAAO,YAAY,EACxD,KAAKtB,0BAA0BqB,MAAMC,OAAO,SAAS,CAAC,CACvD,EAAEH,KACDC,EAAI,CAAC,CAACM,EAAYC,CAAO,IACnBD,EAAAA,EAAWrE,SAAW,GAGtBsE,EAAQtE,SAAW,EAIxB,CAAC,EAEJ,KAAAE,4BAA8B0D,EAAc,CAC1C,KAAK/C,SACL,KAAK8B,0BAA0BqB,MAAMC,OAAO,iCAAiC,CAAC,CAC/E,EAAEH,KAAKC,EAAI,CAAC,CAACQ,EAASC,CAAK,IAAMD,GAAWC,CAAK,CAAC,EACnD,KAAAC,gCAAkCb,EAAc,CAC9C,KAAK/C,SACL,KAAK8B,0BAA0BqB,MAAMC,OAAO,iCAAiC,CAAC,CAC/E,EAAEH,KAAKC,EAAI,CAAC,CAACQ,EAASC,CAAK,IAAMD,GAAW,CAACC,CAAK,CAAC,EAEpD,KAAAE,cAAgBC,GAAiBC,IAAG,EAEpC,KAAA7F,qCAAuC,KAAKkE,OAAO4B,iCAOhD,CAEHC,UAAQ,CACN,KAAKC,iCAAiC,CAAC,CAAC,KAAKpC,0BAA0BC,cAAcoC,SAAQ,CAAE,EAC/F,KAAKrC,0BAA0BqB,MAAMiB,QAAQ,mBAAoB,KAAK7E,iBAAiB,EACvF,KAAKuC,0BAA0BqB,MAC5BC,OAAO,mBAAmB,EAC1BH,KAAKoB,GAAoB,EAAIC,GAAOC,OAAO,CAAC,EAC5CC,UAAU,IAAK,CACd,KAAK1C,0BAA0BqB,MAAMsB,IAAI,CAAEjC,kBAAmB,EAAK,CAAE,EACrE,KAAKA,kBAAkBkC,KAAK,KAAK5C,0BAA0BqB,MAAMwB,IAAI,YAAY,CAAC,CACpF,CAAC,CACL,CAEAC,aAAW,CACT,KAAKf,cAAcgB,QAAO,CAC5B,CAEAC,WAAWrB,EAAgC,CACzC,KAAK3B,0BAA0BqB,MAAMsB,IAAI,CAAEhB,QAASA,CAAO,CAAE,EAC7D,KAAK3B,0BAA0BiD,iBAAgB,EAC/C,KAAKzC,gBAAgB0C,iBAAiB,KAAK/C,WAAYwB,CAAO,CAChE,CAEAwB,cAAczB,EAAkB,CAE9B,KAAK1B,0BAA0BqB,MAAMsB,IAAI,CAAEjB,WAAYA,CAAU,CAAE,EACnE,KAAK1B,0BAA0BiD,iBAAgB,CACjD,CAEAb,iCAAiCgB,EAA8B,CAC7D,KAAK3F,kBAAoBwD,EAAc,CACrC,KAAKjB,0BAA0BqB,MAAMC,OAAO,YAAY,EACxD,KAAKtB,0BAA0BqB,MAAMC,OAAO,aAAa,CAAC,CAC3D,EAAEH,KACDC,EAAI,CAAC,CAAC7E,EAAY8G,CAAW,IACpB9G,EAAW6E,IAAKkC,GACdC,GAAAC,GAAA,GACFF,GADE,CAELG,UAAWJ,EAAYK,KAAMC,GAASA,EAAKC,SAAWN,EAASO,OAAO,EACtEC,iBACE,KAAKvD,aAAawD,2BAA2BT,EAAUU,EAAYC,sBAAsB,GACrFC,cAAgB,IAEzB,CACF,EACD9C,EAAK+C,GACH,KAAKnE,0BAA0BoE,oBAAoBD,EAAyBf,CAAqB,CAAC,CACnG,CAEL,CAEAiB,YAAYf,EAA2B,CACrC,KAAKtD,0BAA0BqB,MAAMsB,IAAI,CACvCpG,WAAY,CAAC+G,EAAU,GAAG,KAAKtD,0BAA0BqB,MAAMwB,IAAI,YAAY,CAAC,EACjF,CACH,CAEAyB,oBAAkB,CAChB,KAAKtE,0BAA0BsE,mBAAkB,CACnD,CAEApH,wBAAwBqH,EAAeC,EAAiC,CACtE,MAAO,GAAGD,CAAK,IAAIC,EAAQ1H,IAAI,EACjC,CAEAN,kBAAkB+H,EAAejB,EAA2B,CAC1D,MAAO,GAAGiB,CAAK,IAAIjB,EAASvD,WAAW,EACzC,iDAjIWxB,GAAoBkG,EAyDrBC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,CAAA,CAAA,CAAA,+BAzDhBtG,EAAoBuG,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,OAAA,CAAAnJ,aAAA,CAAA,EAAA,cAAA,EAAAmE,YAAA,cAAAI,WAAA,YAAA,EAAA6E,QAAA,CAAAtE,kBAAA,mBAAA,EAAAuE,SAAA,CAAAC,GAlBpB,CAACC,EAAO,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,oBAAA,EAAA,QAAA,UAAA,cAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,QAAA,UAAA,cAAA,EAAA,CAAA,EAAA,WAAA,sBAAA,SAAA,cAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,MAAA,6FAAA,EAAA,KAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IChCtB/I,EAAA,EAAA,KAAA,EACEX,EAAA,EAAA4J,IAAA,EAAA,EAAA,eAAA,CAAA,eAiCF/I,EAAA,EAEAb,EAAA,EAAA6J,IAAA,EAAA,EAAA,cAAA,KAAA,EAAA9H,EAAA,EAAsB,EAAA+H,IAAA,EAAA,EAAA,cAAA,KAAA,EAAA/H,EAAA,mBAnCL5B,EAAA,EAAAV,EAAA,OAAAY,EAAA,EAAA,EAAAsJ,EAAA3D,+BAAA,IAAA,EAAA,EAA2D,WAAA+D,CAAA,kBDiCxEC,EAAYC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GAAsBC,GAAAC,GAAAC,GACtBC,GAA0BC,GAC1BC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EAA8B,EAAAC,OAAA,CAAA;6GAAA,CAAA,CAAA,CAAA,SAGrB7I,CAAoB,GAAA,2BGlCrB8I,EAAA,EAAA,sBAAA,6BAEAC,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,kBADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,uCAGFN,EAAA,EAAA,IAAA,CAAA,EACAC,EAAA,EAAA,SAAA,CAAA,EAA6DM,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,kBAAkB,EAAI,CAAC,CAAA,CAAA,EAC3FX,EAAA,CAAA,mBACFC,EAAA,oBAHGW,EAAA,YAAAR,EAAAS,EAAA,EAEDX,EAAA,CAAA,EAAAC,EAAA,IAAAW,EAAA,EAAA,EAAA,wCAAA,EAAA,GAAA,6BATJC,EAAA,EAAAC,IAAA,EAAA,EAAA,sBAAA,EAA4B,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,EAEA,EAAAC,IAAA,EAAA,CAAA,kBAF5BC,EAAAX,EAAAY,mBAAA,EAAA,EAAAZ,EAAAa,YAAA,EAAA,EAAA,CAAA,0BAaAvB,EAAA,EAAA,sBAAA,6BAdFiB,EAAA,EAAAO,IAAA,EAAA,CAAA,eAaEP,EAAA,EAAAQ,IAAA,EAAA,EAAA,sBAAA,qBAbFJ,GAAAK,EAAAV,EAAA,EAAA,EAAAN,EAAAiB,kBAAA,GAAA,EAAA,EAAAD,CAAA,uCAbNzB,EAAA,EAAA,MAAA,CAAA,EAA6C,EAAA,sBAAA,CAAA,EAGzCM,EAAA,iBAAA,SAAAqB,EAAA,CAAApB,EAAAqB,CAAA,EAAA,IAAAnB,EAAAC,EAAA,EAAA,OAAAC,EAAkBF,EAAAoB,iBAAAF,CAAA,CAAwB,CAAA,CAAA,EAG1C3B,EAAA,EAAA,4BAAA,EAA4B,EAAA,iBAAA,EAExBD,EAAA,EAAA,WAAA,CAAA,EACAE,EAAA,CAAA,mBACFC,EAAA,EAAkB,EAEpBc,EAAA,EAAAc,IAAA,EAAA,EAAA,cAAA,CAAA,EAkBF5B,EAAA,EAAsB,oBA5BpBC,EAAA,EAAAU,EAAA,WAAAJ,EAAAsB,4BAAA,CAAA,EAOI5B,EAAA,CAAA,EAAAC,EAAA,IAAAW,EAAA,EAAA,EAAA,2BAAA,EAAA,GAAA,uCAwBRf,EAAA,EAAA,MAAA,CAAA,EAA6C,EAAA,sBAAA,CAAA,EAC+B,EAAA,6BAAA,CAAA,EAC5CM,EAAA,QAAA,UAAA,CAAAC,EAAAyB,CAAA,EAAA,IAAAvB,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAwB,yBAAA,CAA0B,CAAA,CAAA,EAC7DjC,EAAA,EAAA,iBAAA,EACED,EAAA,EAAA,WAAA,CAAA,EACAE,EAAA,CAAA,mBACFC,EAAA,EAAkB,EACS,EACT,QAPDC,EAAA,EAAAU,EAAA,WAAA,EAAA,EAIfV,EAAA,CAAA,EAAAC,EAAA,IAAAW,EAAA,EAAA,EAAA,2BAAA,EAAA,GAAA,GDvCV,IAkCamB,GAlCbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,KAEAC,KAEAC,KAEAC,KACAC,KAEAC,IACAC,IACAC,KACAC,KACAC,qDAkBaf,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,CAsBhCgB,YAC8CC,EAC3BC,EACAC,EACAC,EACAC,EAAmC,CAJR,KAAAJ,OAAAA,EAC3B,KAAAC,eAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,gBAAAA,EACA,KAAAC,gBAAAA,EA1BnB,KAAAC,YAAcC,GAAc,EAAE,EACb,KAAAC,aAAeC,GAAa,KAAKH,WAAW,EAC7D,KAAAI,cAAgBH,GAAyB,IAAI,EAC5B,KAAAI,eAAiBF,GAAa,KAAKC,aAAa,EAEzD,KAAAE,mBAAqB,IAAIC,GAChB,KAAAC,oBAAsBC,EAAgB,EAAK,EACpD,KAAAC,yBAA2B,GAEhB,KAAA7C,mBAAqB4C,EAAgB,EAAI,EACzC,KAAA3C,YAAc2C,EAAO,EAAK,EAC1B,KAAAE,8BAAgCF,EAAgB,EAAK,EAErD,KAAAlC,4BAAuDkC,EAAO,EAAK,EAEnE,KAAAG,sBAAwB,KAAKjB,OAAOkB,sBAAsB,gBAAgB,GAAKC,EAAG,EAAK,EAGzF,KAAAC,iBAAmBC,EAAOC,EAAgB,EAC1C,KAAAC,cAAgBF,EAAOG,EAAmB,EASzD,KAAKD,cAAcE,UAAS,EAE5B,KAAKT,8BAA8BU,IAAI,CAAC,CAAC,KAAK1B,OAAO2B,oBAAoB,EACzE,KAAKpD,mBAAqB,KAAKqD,qBAAoB,EAGnD,IAAMC,EAAqB,KAAK5B,eAAe6B,cAAcC,KAC3DC,GAAK,CAAC,EACNC,EAAKC,GAAWA,EAAOC,IAAI,WAAW,GAAK,EAAE,EAC7CF,EAAKG,GAAcA,IAAc,MAAM,EACvCC,GAAKC,GAAqB,CACpBA,GACF,KAAKlC,gBAAgBmC,WAAW,KAAK9B,cAAa,EAAkB,qCAAqC,CAE7G,CAAC,CAAC,EAEJ,KAAK6B,kBAAoBE,GAASX,EAAoB,CAAEY,aAAc,EAAK,CAAE,EAE7EC,GAAO,IAAK,CACV,KAAKrC,YAAW,EACZ,KAAKiC,kBAAiB,GACxB,KAAKA,kBAAoBxB,EAAO,EAAK,EACrC,KAAKlC,4BAA4B8C,IAAI,EAAI,GAEzC,KAAK9C,4BAA4B8C,IAAI,EAAK,CAE9C,CAAC,EAEDgB,GAAO,IAAK,CACV,KAAKrC,YAAW,EAChB,KAAKU,yBAA2B,EAClC,CAAC,CACH,CAEUjC,0BAAwB,CAChC,KAAKkB,OAAO2B,uBAAuB,gBAAgB,CACrD,CAEUlE,kBAAkBA,EAA0B,CACpD,KAAKoD,oBAAoBa,IAAIjE,CAAiB,EAC9C,KAAKkD,mBAAmBgC,KAAI,CAC9B,CAEUjE,iBAAiBkE,EAAiB,CAC1C,KAAKhE,4BAA4B8C,IAAIkB,CAAQ,CAC/C,CAEQhB,sBAAoB,CAC1B,OAAOiB,EAAc,CACnB,KAAKtC,aACL,KAAKG,eACL,KAAKV,OAAO8C,WACZ,KAAK9C,OAAO+C,SAAW5B,EAAG,EAAE,EAC5BX,GAAa,KAAK5B,2BAA2B,EAC7C,KAAK+B,mBAAmBoB,KAAKiB,GAAUC,MAAS,CAAC,CAAC,CACnD,EAAElB,KACDM,GAAI,IAAK,CACH,KAAKa,wBAAuB,GAC9B,KAAKhF,mBAAmBwD,IAAI,EAAI,CAEpC,CAAC,EACDyB,GAAM,GAAG,EACTC,GAAO,IAAM,KAAKF,wBAAuB,CAAE,EAC3CG,EAAU,CAAC,CAAChD,EAAaI,EAAe6C,EAAWC,CAAM,IAAK,CAC5D,IAAM1C,EAAsB,KAAKA,oBAAmB,EAEpD,OADA,KAAKA,oBAAoBa,IAAI,EAAK,EAC9B,CAAC4B,GAAa,CAAC7C,GAAiB,CAACJ,GAAe,CAAC,KAAKzB,4BAA2B,EAC5EuC,EAAG,EAAE,EAEP,KAAKjB,aACTsD,yBAAyB,CACxBC,mBAAoBH,EACpB7C,cAAeA,GAAiB,GAChCJ,YAAaA,EACbqD,SAAUH,EACV9F,kBAAmBoD,EACpB,EACAkB,KACCE,EAAK0B,GAAaA,GAAUA,QAAQ,EACpCtB,GAAKsB,GAAY,CACVA,EAGH,KAAKxF,YAAYuD,IAAI,EAAK,EAF1B,KAAKvD,YAAYuD,IAAI,EAAI,EAI3B,KAAKX,yBAA2B,GAChC,KAAKX,gBAAgBmC,WAAW9B,EAA6B,oCAAoC,CACnG,CAAC,EACDwB,EAAK0B,GACC,KAAKxF,YAAW,EACX,KAAKiD,iBAAiBwC,QAAQ,gCAAgC,EAExD,IAAIC,UAAS,EACdC,gBAAgBH,EAAU,WAAW,EAAEI,KAAKC,SAC3D,EACDC,GAAW,KACT,KAAK9D,gBAAgB+D,eAAe,2BAA2B,EAC/D,KAAK9D,gBAAgBmC,WAAW9B,EAA6B,yCAAyC,EAC/FU,EAAG,EAAE,EACb,CAAC,CAER,CAAC,EACDkB,GAAI,IAAM,KAAKnE,mBAAmBwD,IAAI,EAAK,CAAC,CAAC,CAEjD,CAEQwB,yBAAuB,CAC7B,OAAO,KAAKrC,oBAAmB,GAAO,KAAKjC,4BAA2B,GAAM,KAAKmC,wBACnF,iDAzIWhC,GAAqBoF,EAuBtBC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,CAAA,CAAA,CAAA,+BAvBhBzF,EAAqB0F,UAAA,CAAA,CAAA,gBAAA,CAAA,EAAAC,OAAA,CAAArE,YAAA,CAAA,EAAA,aAAA,EAAAI,cAAA,CAAA,EAAA,eAAA,CAAA,EAAAkE,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,iBAAA,UAAA,EAAA,CAAA,UAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,2BAAA,EAAA,EAAA,CAAA,OAAA,KAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,4BAAA,EAAA,OAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IClClClH,EAAA,EAAAoH,IAAA,EAAA,EAAA,MAAA,CAAA,eAiCEpH,EAAA,EAAAqH,IAAA,EAAA,EAAA,MAAA,CAAA,QAjCFjH,EAAAL,EAAA,EAAA,EAAAoH,EAAA/D,qBAAA,EAAA,EAAA+D,EAAAhE,8BAAA,EAAA,EAAA,EAAA,iBDwBImE,GACAC,GAAkBC,GAAAC,GAAAC,GAClBC,GACAC,EAAeC,EACfC,GACAC,GAAiBC,GACjBC,GAA0BC,GAC1BC,GAAaC,EAAA,EAAAC,OAAA,CAAA;+GAAA,CAAA,CAAA,CAAA,SAGJnH,CAAqB,GAAA,IElClC,IAAAoH,GAAAC,EAAA,KAAAC,2CEIIC,EAAA,EAAA,sBAAA,EAAA,EAGEC,EAAA,kBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAmBF,EAAAG,YAAAN,CAAA,CAAmB,CAAA,CAAA,EACvCO,EAAA,4BAHCC,EAAA,cAAAL,EAAAM,YAAA,CAAA,EAA6B,aAAAC,CAAA,6BAO/BC,EAAA,EAAA,iBAAA,CAAA,yBAAgBH,EAAA,cAAAL,EAAAM,YAAA,CAAA,EAA6B,gBAAAC,CAAA,0BAerCC,EAAA,EAAA,OAAA,EAAA,sCA0CVb,EAAA,EAAA,+BAAA,EAAA,EAGEC,EAAA,YAAA,UAAA,CAAAE,EAAAW,CAAA,EAAA,IAAAT,EAAAC,EAAA,EAAA,OAAAC,EAAaF,EAAAU,mBAAA,CAAoB,CAAA,CAAA,EAClCN,EAAA,OAFCC,EAAA,oBAAA,EAAA,EDvEJ,wBAgJaM,IAhJbC,GAAAC,EAAA,KAAAC,IACAC,IAgBAC,IACAC,KAQAC,KACAC,KAYAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAMAC,KACAC,KACAC,KAEAC,KACAC,KAEAC,KACAC,KACAC,KAEAC,KACAC,KACAC,kLA+Ea3B,KAA8B,IAAA,CAArC,MAAOA,CAA8B,CA4GzC4B,YAC8CC,EAC3BC,EAEAC,EACAC,EACAC,EAA8B,CALH,KAAAJ,OAAAA,EAC3B,KAAAC,0BAAAA,EAEA,KAAAC,gCAAAA,EACA,KAAAC,OAAAA,EACA,KAAAC,eAAAA,EA7GnB,KAAAtC,YAAcuC,GAAc,EAAE,EAE9B,KAAAC,gBAAkB,GAElB,KAAAC,mBAAqBF,GAAyB,IAAI,EAClD,KAAAG,gBAAkBH,GAAe,EAAK,EAEtC,KAAAI,iCAAmCC,GAAS,KAAKV,QAAQW,mCAAqCC,EAAG,EAAK,CAAC,EAEvG,KAAAC,WAAyB,WAER,KAAAC,iBAAmBC,EAAOC,EAAgB,EAC1C,KAAAC,WAAaF,EAAOG,EAAU,EAE5B,KAAAC,QAAUC,EAAgC,CAAA,CAAE,EAC5C,KAAAC,eAAiBC,EAAS,IAAM,KAAKH,QAAO,EAAGI,OAAS,CAAC,EAC5E,KAAAC,cAA8B,CAC5B,CAAEC,KAAM,KAAKX,iBAAiBY,QAAQ,0BAA0B,EAAGP,QAAS,CAAA,CAAE,EAC9E,CACEM,KAAM,KAAKX,iBAAiBY,QAAQ,4BAA4B,EAChEP,QAAS,CACP,CACEQ,QAAS,iCACTC,SAAUC,GAAqBC,mBAC/BC,OAAQ,CAAC,CAAEC,OAAQ,MAAM,CAAE,EAC5B,GAGL,CACEP,KAAM,KAAKX,iBAAiBY,QAAQ,6BAA6B,EACjEP,QAAS,CACP,CACEQ,QAAS,iCACTC,SAAUC,GAAqBC,mBAC/BC,OAAQ,CAAC,CAAEC,OAAQ,OAAO,CAAE,EAC7B,GAGL,CACEP,KAAM,KAAKX,iBAAiBY,QAAQ,4BAA4B,EAChEP,QAAS,CACP,CACEQ,QAAS,iCACTC,SAAUC,GAAqBC,mBAC/BC,OAAQ,CAAC,CAAEC,OAAQ,MAAM,CAAE,EAC5B,GAGL,CACEP,KAAM,KAAKX,iBAAiBY,QAAQ,+BAA+B,EACnEP,QAAS,CACP,CACEQ,QAAS,iCACTC,SAAUC,GAAqBC,mBAC/BC,OAAQ,CAAC,CAAEC,OAAQ,SAAS,CAAE,EAC/B,GAGL,CACEP,KAAM,KAAKX,iBAAiBY,QAAQ,4BAA4B,EAChEP,QAAS,CACP,CACEQ,QAAS,iCACTC,SAAUC,GAAqBC,mBAC/BC,OAAQ,CAAC,CAAEC,OAAQ,MAAM,CAAE,EAC5B,GAGL,CACEP,KAAM,KAAKX,iBAAiBY,QAAQ,qCAAqC,EACzEP,QAAS,CACP,CACEQ,QAAS,iCACTC,SAAUC,GAAqBC,mBAC/BC,OAAQ,CAAC,CAAEC,OAAQ,eAAe,CAAE,EACrC,GAGL,CACEP,KAAM,KAAKX,iBAAiBY,QAAQ,wCAAwC,EAC5EP,QAAS,CACP,CACEQ,QAASM,EAAYC,mBACrBN,SAAUC,GAAqBM,0BAEjC,CACER,QAASM,EAAYG,0BACrBR,SAAUC,GAAqBQ,uBAC/BN,OAAQ,CAAC,CAAEC,OAAQ,cAAc,CAAE,EACpC,EAEJ,EAEH,KAAAM,cAAgB,IAAIC,GAAoB,EAAE,EAC1C,KAAAC,cAAgC,CAAA,EAChC,KAAAC,aAAe,GACP,KAAAC,UAAY,EAEZ,KAAAC,kBAAoB,GACpB,KAAAC,qBAAuB,GACvB,KAAAC,eAA0C,CAAA,EAWhD,IAAMC,EAAc,KAAK1C,eAAe2C,SAASC,cAAcC,IAAI,QAAQ,EACvE9B,EAAmC,CAAA,EACvC,GAAI2B,EAAa,CACf,IAAMI,EAAIC,GAAcL,CAAW,EAC/BM,GAAgBF,CAAC,GAAKA,EAAE3B,OAAS,IACnCJ,EAAU+B,EAEd,CACA,KAAKL,eAAiB1B,EACtB,KAAKjB,gCAAgCmD,2BAA2BlC,CAAO,EAEvE,IAAMmC,EAAiB,CAAA,EACnB,KAAKtD,QAAQuD,OACfD,EAAKE,KAAK,OAAS,KAAKxD,OAAOuD,MAAQ,4BAA4B,EAErED,EAAKE,KAAK,+BAA+B,EACzC,KAAKF,KAAOA,EAEZG,GAAO,IAAK,CACL,KAAK3F,YAAW,IACnB,KAAK0D,cAAgB,KAAKA,cAAckC,OACrCA,GAAWA,EAAOjC,OAAS,KAAKX,iBAAiBY,QAAQ,4BAA4B,CAAC,EAG7F,CAAC,CACH,CAEAiC,UAAQ,CACN,IAAMC,EAAc,KAAKxD,eAAe2C,SAASC,cAAcC,IAAI,QAAQ,EACvEW,IACF,KAAKjB,kBAAoBkB,UAAUD,CAAW,GAEhD,KAAK3D,0BAA0B6D,gBAAgB,KAAKnB,kBAAmB,KAAKE,cAAc,EAE1F,KAAKL,cAAcgB,KACjB,KAAKlB,cAAcyB,aAChBC,KACCC,GAAWC,GAASA,IAAS,KAAKvB,iBAAiB,EACnDwB,GAAaC,GAAkB,EAC/BC,EAAKC,GAAUA,GAAOC,KAAI,GAAM,EAAE,EAClCC,GAAKC,GAAc,CACjB,IAAIb,EAA6B,KAC7Ba,IACFb,EAAcc,UAAUD,CAAU,GAEpC,KAAKtE,OAAOwE,SAAS,CAAA,EAAI,CACvBC,WAAY,KAAKxE,eACjByE,YAAa,CAAEC,OAAQlB,CAAW,EAClCmB,oBAAqB,QACtB,EACD,KAAKC,SAASC,cAAcR,CAAU,CACxC,CAAC,CAAC,EAEHS,UAAS,CAAE,CAElB,CAEAC,oBAAkB,CACX,KAAKvC,uBACR,KAAKN,cAAc8C,SAAS,KAAKzC,iBAAiB,EAClD,KAAKL,cAAc+C,uBAAsB,EACzC,KAAKzC,qBAAuB,GAEhC,CAEA0C,oBAAkB,CAChB,KAAKN,SAASO,SAASvB,KAAKwB,GAAmB,KAAKvE,UAAU,CAAC,EAAEiE,UAAW/D,GAAY,KAAKA,QAAQsE,IAAItE,CAAO,CAAC,CACnH,CAEAxD,YAAY+H,EAA2B,CACrC,KAAKV,SAASrH,YAAY+H,CAAQ,CACpC,CAEAC,wBAAwBC,EAA+B,CACrD,KAAKC,oBAAoBC,cAAcpD,UAAY,KAAKA,UACxD,KAAKD,aAAemD,GAAYrE,OAAS,CAC3C,CAEArD,oBAAkB,CAChB,KAAKwE,UAAY,KAAKmD,qBAAqBC,eAAepD,WAAa,EACvE,KAAKsC,UAAU9G,mBAAkB,CACnC,CAEA6H,aAAW,CACT,KAAKvD,cAAcwD,QAASC,GAAiBA,EAAaC,YAAW,CAAE,CACzE,CAEAC,iBAAe,CACb,KAAK7F,gBAAkB,CAAC,KAAKA,eAC/B,CAEA8F,cAAc/I,EAAiCgJ,EAAwB,CACrE,GAAI,CAAC,KAAKrB,SACR,OAEF,IAAIlC,EAA6B,KACjC,GAAIzF,EAAOkE,OAAS,EAAG,CACrB,IAAM+E,EAAejJ,EAAOqG,OACzBR,GAAM,EAAEA,EAAEtB,WAAaC,GAAqBC,oBAAsBoB,EAAEnB,QAAQR,SAAW,EAAE,EAExF+E,EAAa/E,OAAS,IACxBuB,EAAcyD,GAAcD,CAAY,EAE5C,CACA,KAAKnG,OAAOwE,SAAS,CAAA,EAAI,CACvBC,WAAY,KAAKxE,eACjByE,YAAa,CAAEnB,OAAQZ,CAAW,EAClCiC,oBAAqB,QACtB,EACD,KAAKC,SAASwB,WAAWnJ,CAAM,EAC3BgJ,GACF,KAAKI,eAAetF,QAAQsE,IAAIpI,CAAM,CAE1C,iDArOWc,GAA8BuI,EA6G/BC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAEjBG,EAA8B,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,CAAA,CAAA,CAAA,+BA/G7B5I,EAA8B6I,UAAA,CAAA,CAAA,yBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,ySAzE9B,CACTE,GACAR,GACA,CACES,QAASR,GACTS,WAAYC,GAAoC,UAAU,GAE5D,CACEF,QAASG,GACTF,WAAYA,CACVG,EACAC,EACAC,IACE,CACF,IAAMC,EAAeC,GAAaJ,EAAK3J,WAAW,EAC5CgK,EAAiBD,GAAaJ,EAAKlH,kBAAkB,EAAEyD,KAAKN,GAAOqE,OAAO,CAAC,EACjF,OAAOC,EAAc,CAACJ,EAAcE,CAAc,CAAC,EAAE9D,KACnDiE,EAAWC,GAA2B,CACpC,IAAMpK,EAAcoK,EAAE,CAAC,EACjBC,EAAgBD,EAAE,CAAC,EACzB,OAAOR,EAAcU,eAAeD,EAAe,CAACrK,CAAW,CAAC,CAClE,CAAC,EACDuG,EAAKgE,GAAaA,GAAUC,aAAa,CAAC,CAAC,EAC3CjE,EAAKkE,GAEDZ,EAAaa,2BAA2BD,EAAYE,GAA0BC,cAAc,GACxFC,aAAe,IAEtB,EACDjF,GAAOqE,OAAO,EACda,GAAY,CAAC,CAAC,CAElB,EACAC,KAAM,CAAC1K,EAAgC2K,GAAkBC,EAAe,EACzE,CACF,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,yBAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,cAAA,YAAA,EAAA,CAAA,EAAA,cAAA,eAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,qBAAA,GAAA,cAAA,yBAAA,EAAA,iBAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,QAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,aAAA,SAAA,gBAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,CAAA,OAAA,OAAA,WAAA,GAAA,EAAA,cAAA,aAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,gBAAA,UAAA,OAAA,eAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,eAAA,GAAA,EAAA,iBAAA,kBAAA,EAAA,CAAA,EAAA,oBAAA,cAAA,aAAA,cAAA,EAAA,CAAA,EAAA,oBAAA,YAAA,EAAA,MAAA,EAAA,CAAA,EAAA,kBAAA,cAAA,YAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,YAAA,mBAAA,CAAA,EAAAC,SAAA,SAAAjC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WC1GHkC,GAAA,CAAA,EAEAjM,EAAA,EAAA,MAAA,EAAA,CAAA,EACEkM,EAAA,EAAAC,IAAA,EAAA,EAAA,sBAAA,CAAA,EAAkB,EAAAC,IAAA,EAAA,EAAA,iBAAA,CAAA,EAYlBpM,EAAA,EAAA,MAAA,CAAA,EAAyC,EAAA,MAAA,CAAA,EACJ,EAAA,MAAA,CAAA,EACA,EAAA,SAAA,CAAA,EAM7BC,EAAA,QAAA,UAAA,CAAAoM,OAAAlM,EAAAmM,CAAA,EAAA/L,EAASyJ,EAAAhB,gBAAA,CAAiB,CAAA,CAAA,EAE1BhJ,EAAA,EAAA,WAAA,EAAA,EACEuM,EAAA,GAAA,eAAA,EACAL,EAAA,GAAAM,IAAA,EAAA,EAAA,OAAA,EAAA,EACF/L,EAAA,EACAT,EAAA,GAAA,OAAA,EAAA,EAAoCuM,EAAA,EAAA,oBAAsD9L,EAAA,EAAO,EAGnGT,EAAA,GAAA,kBAAA,EAAA,EAMEa,EAAA,GAAA,QAAA,EAAA,oBACFJ,EAAA,EAAkB,EAEpBT,EAAA,GAAA,kBAAA,EAAA,EAGEC,EAAA,gBAAA,SAAAC,EAAA,CAAAmM,OAAAlM,EAAAmM,CAAA,EAAA/L,EAAiByJ,EAAAf,cAAA/I,EAAsB,EAAI,CAAC,CAAA,CAAA,EAG7CO,EAAA,EAAkB,EAErBT,EAAA,GAAA,MAAA,EAAA,EAA2E,GAAA,MAAA,EAAA,EACpC,GAAA,oBAAA,GAAA,CAAA,oBAIjCC,EAAA,iBAAA,SAAAC,EAAA,CAAAmM,OAAAlM,EAAAmM,CAAA,EAAA/L,EAAkByJ,EAAAf,cAAA/I,CAAA,CAAqB,CAAA,CAAA,EAExCO,EAAA,EAAoB,EACjB,EACF,EAGRT,EAAA,GAAA,eAAA,GAAA,CAAA,EAIEC,EAAA,oBAAA,SAAAC,EAAA,CAAAmM,OAAAlM,EAAAmM,CAAA,EAAA/L,EAAqByJ,EAAAxB,wBAAAtI,CAAA,CAA+B,CAAA,CAAA,EAErDO,EAAA,EAEDyL,EAAA,GAAAO,IAAA,EAAA,EAAA,+BAAA,EAAA,EAKFhM,EAAA,gBA1EAiM,GAAkB1C,EAAA5G,mBAAA,CAAoB,EAGpCuJ,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,EAQAF,EAAA,EAAAC,EAAA5C,EAAA3G,gBAAA,EAAA,EAAA,EAAA,EAWQsJ,EAAA,CAAA,EAAAjM,EAAA,UAAAoM,GAAA,GAAAC,IAAA/C,EAAA7G,eAAA,CAAA,EAKSwJ,EAAA,CAAA,EAAAjM,EAAA,OAAAsJ,EAAA9F,eAAA,CAAA,EAE2ByI,EAAA,CAAA,EAAAK,EAAAC,EAAA,GAAA,GAAA,oCAAA,CAAA,EAOpCN,EAAA,CAAA,EAAAjM,EAAA,UAAAoM,GAAA,GAAAI,IAAAlD,EAAA1G,iCAAA,CAAA,CAAA,EAEmBqJ,EAAA,EAAAjM,EAAA,cAAAuM,EAAA,GAAA,GAAA,gBAAA,CAAA,EAA4C,cAAAjD,EAAA7E,aAAA,EAKjEwH,EAAA,CAAA,EAAAjM,EAAA,UAAAsJ,EAAAhG,QAAA,CAAA,EAAqB,OAAAgG,EAAA7D,IAAA,EAER,gBAAA6D,EAAA3F,aAAA,EAIOsI,EAAA,EAAAjM,EAAA,aAAAsJ,EAAA7G,gBAAA,OAAA,QAAA,EAIlBwJ,EAAA,CAAA,EAAAjM,EAAA,mBAAAuM,EAAA,GAAA,GAAA,gBAAA,CAAA,EAUNN,EAAA,CAAA,EAAAjM,EAAA,cAAAsJ,EAAArJ,YAAA,CAAA,EAA6B,aAAAkM,CAAA,EACH,eAAA,EAAA,EAMzBF,EAAA,CAAA,EAAAjM,EAAA,OAAAsJ,EAAA1E,YAAA,kBDyDD6H,EAAYC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GACAC,GACAC,GAAqBC,GACrBC,GAAcC,GACdC,GAAmBC,GAAAC,GAAAC,GACnBC,GAAeC,GACfC,GACAC,GAAaC,GACbC,GAAiCC,GACjCC,GACAC,GACAC,EAAqB,EAAAC,OAAA,CAAA;wHAAA,EAAAC,KAAA,CAAAC,UAlCX,CACVC,GAAQ,YAAa,CACnBC,GACE,OACAC,GAAM,CACJC,OAAQ,IACRC,QAAS,EACV,CAAC,EAEJH,GACE,SACAC,GAAM,CACJC,OAAQ,MACRC,QAAS,EACV,CAAC,EAEJC,GAAW,kBAAmB,CAACC,GAAQ,MAAM,CAAC,CAAC,CAAC,CACjD,CAAC,CACH,CAAA,CAAA,CAAA,SAmBUtO,CAA8B,GAAA,IEhJ3C,IAqBMuO,IASOC,GA9BbC,GAAAC,EAAA,KAAAC,IACAC,KAYAC,KAEAC,KACAC,KACAC,KAEAC,SAEMV,IAA+B,CACnCW,GAAWC,0BACXD,GAAWE,2BACXF,GAAWG,4BACXH,GAAWI,wBACXJ,GAAWK,oBAAoB,EAIpBf,IAA6B,IAAA,CAApC,MAAOA,CAA6B,CAD1CgB,aAAA,CAEmB,KAAAC,sBAAwBC,EAAOC,EAAqB,EACpD,KAAAC,WAAaF,EAAOG,EAAU,EAC9B,KAAAC,OAASJ,EAAOK,EAAiB,EAElD,KAAAC,QAAU,IAAIC,GAA+B,CAAA,CAAE,EAC/C,KAAAC,UAAY,IAAID,GAA+B,CAAA,CAAE,EACjD,KAAAE,UAAY,IAAIF,GAA4CG,MAAS,EACpD,KAAAC,SAAW,IAAIJ,GAAuCG,MAAS,EAC/D,KAAAE,OAAS,IAAIL,GAAkCG,MAAS,EAEzEG,IAAIC,EAA+C,CACjD,IAAMC,EAASD,GAAKE,UAAU,CAAC,EACzBC,EAAOH,GAAKI,UAAU,CAAC,EACvBC,EAAS,KAAKf,OAAOgB,WAAWC,KACpCC,GAAI,IAAK,CACP,KAAKhB,QAAQiB,KAAK,CAAA,CAAE,EACpB,KAAKf,UAAUe,KAAK,CAAA,CAAE,EACtB,KAAKd,UAAUc,KAAKb,MAAS,CAC/B,CAAC,EACDc,EAAKC,GAAc,KAAKC,mBAAmBD,EAAWV,CAAM,CAAC,EAC7DY,EAAWC,GAAW,KAAK7B,sBAAsB8B,mBAAmBD,CAAM,CAAC,EAC3EN,GAAKQ,GAAY,CACf,IAAMC,EAAU,KAAKC,WAAWF,GAAUG,SAAS,EACnD,KAAK3B,QAAQiB,KAAKQ,EAAQG,KAAK,EAC/B,KAAK1B,UAAUe,KAAKQ,EAAQI,OAAO,CACrC,CAAC,EACDX,EAAKM,GAAa,KAAKM,mBAAmBN,GAAUO,iBAAiB,CAAC,EACtEV,EAAWW,GAAS,KAAKC,cAAcD,CAAI,CAAC,EAC5ChB,GAAKQ,GAAY,CACf,KAAKnB,SAASY,KAAKR,CAAM,EACzB,KAAKN,UAAUc,KAAKO,CAAQ,CAC9B,CAAC,CAAC,EAIJ,OADEf,GAAU,CAAC,KAAKyB,cAAczB,EAAQ,KAAKJ,SAAS8B,SAAQ,CAAE,EAAItB,EAAS,KAAKV,UAAUiC,aAAY,GAC5FrB,KACVC,GAAI,IAAOL,EAAO,KAAKL,OAAOW,KAAKN,CAAI,EAAIP,MAAU,EACrDc,EAAKc,GAAS,KAAKK,SAASL,GAAQ,CAAA,EAAI,KAAK1B,OAAO6B,SAAQ,CAAE,CAAC,EAC/DjB,EAAKc,GAAS,KAAKM,YAAYN,CAAI,CAAC,CAAC,CAEzC,CAEQC,cAAcD,EAAoB,CACxC,IAAMO,EAAUP,EAAKd,IAAKsB,GAASA,EAAKC,MAAM,EAC9C,OAAOC,GAAcH,EAAS,KAAKzC,OAAQ,KAAKF,UAAU,EAAEmB,KAC1DG,EAAKyB,GACIX,EAAKd,IAAKsB,GAAQ,CACvB,IAAMI,EAAOD,EAAME,KAAMC,GAAMA,EAAEL,SAAWD,EAAKC,MAAM,EACjDM,EAAW,CAACH,GAAMI,UAAWJ,GAAMK,QAAQ,EAAExC,OAAOyC,OAAO,EAAEC,KAAK,GAAG,EAC3E,OAAOC,GAAAC,GAAA,GACFb,GADE,CAELO,SAAUA,EACVO,eAAgBV,GAAMW,iBAE1B,CAAC,CACF,CAAC,CAEN,CAEQlB,SAASL,EAAsBrB,EAAW,CAChD,IAAM6C,EAAQ7C,GAAM8C,QAAU,OACxBC,EAAQ/C,GAAMgD,YAAc,OAClC,OAAO3B,EAAKrB,KAAK,CAACiD,EAAGC,IAAK,CACxB,GAAIL,IAAU,OACZ,OAAO,KAAKM,QAAQF,EAAEb,SAAUc,EAAEd,SAAUW,CAAK,EAGnD,IAAMK,EAAa,KAAKD,QAAQF,EAAEI,MAAMR,CAAK,EAAGK,EAAEG,MAAMR,CAAK,EAAGE,CAAK,EACrE,OAAIK,IAAe,EACVA,EAEF,KAAKD,QAAQF,EAAEb,SAAUc,EAAEd,SAAU,EAAI,CAClD,CAAC,CACH,CAEQe,QAAQF,EAAoBC,EAAoBH,EAAc,CACpE,OAAI,OAAOE,GAAM,UAAY,OAAOC,GAAM,SACjCH,EAAQE,EAAEK,cAAcJ,CAAC,EAAIA,EAAEI,cAAcL,CAAC,EAEnD,OAAOA,GAAM,UAAY,OAAOC,GAAM,SACjCH,EAAQE,EAAIC,EAAIA,EAAID,EAEtB,CACT,CAEQ1B,cAAcgC,EAAqBC,EAAmB,CAC5D,OAAOC,KAAKC,UAAUH,CAAO,IAAME,KAAKC,UAAUF,CAAO,CAC3D,CAEQ7B,YAAYN,EAAoB,CACtC,MAAO,CACLA,KAAMA,EACNsC,eAAgB,CAAEC,WAAY,KAAMC,QAAS,EAAK,EAEtD,CAEQpD,mBAAmBD,EAAmBG,EAAkB,CAC9D,IAAMZ,EAAgC,CACpC+D,SAAUC,GAAoBC,0BAC9BjE,QAAS,CACP,CACEkE,QAASC,GAAeC,gBACxBL,SAAUM,GAAeC,2BACzBC,OAAQ,CAAC,CAAEC,KAAM5D,EAAO6D,cAAc,EAAI,CAAED,KAAM5D,EAAO8D,YAAY,CAAE,EACxE,GAGL,MAAO,CACLjE,UAAWA,EACXT,QAASA,EACT2E,YAAa9G,IAEjB,CAEQuD,mBAAmBwD,EAAsC,CAC/D,OAAKA,EAGEA,EAAQpE,IAAKqE,IACX,CACL9C,OAAQ8C,EAAOC,QACfzC,SAAU,GACViB,MAAO,KAAKyB,iBAAiBF,EAAOG,YAAY,GAEnD,EARQ,CAAA,CASX,CAEQD,iBAAiBE,EAAmC,CAC1D,MAAO,CACLC,YAAa,KAAKC,eAAeF,EAAazG,GAAWC,yBAAyB,EAClF2G,aAAc,KAAKD,eAAeF,EAAazG,GAAWE,0BAA0B,EACpF2G,aAAc,KAAKF,eAAeF,EAAazG,GAAWG,2BAA2B,EACrF2G,cAAe,KAAKH,eAAeF,EAAazG,GAAWI,uBAAuB,EAClF2G,QAAS,KAAKJ,eAAeF,EAAazG,GAAWK,oBAAoB,EAE7E,CAEQmC,WAAWC,EAAoC,CACrD,OAAKA,EAGE,CACLC,MAAO,KAAK6D,iBACV9D,EAAUT,IAAKO,IAAa,CAAEyE,WAAYzE,EAAQyE,WAAYlC,MAAOvC,EAAQG,KAAK,EAAG,CAAC,EAExFC,QAAS,KAAK4D,iBACZ9D,EAAUT,IAAKO,IAAa,CAAEyE,WAAYzE,EAAQyE,WAAYlC,MAAOvC,EAAQI,OAAO,EAAG,CAAC,GAPnF,CAAED,MAAO,CAAA,EAAIC,QAAS,CAAA,CAAE,CAUnC,CAEQgE,eAAeF,EAAqCO,EAAsB,CAChF,OAAOP,EAAY9C,KAAMsD,GAAWA,EAAOD,aAAeA,CAAU,GAAGlC,OAAS,CAClF,iDA1JWxF,EAA6B,CAAA,kCAA7BA,EAA6B4H,QAA7B5H,EAA6B6H,SAAA,CAAA,CAAA,SAA7B7H,CAA6B,GAAA,2BE5BtC8H,EAAA,EAAA,KAAA,EAAA,0BAGEC,EAAA,EAAA,KAAA,EAAA,EAAsCC,EAAA,CAAA,mBAA4CC,EAAA,SAA5CC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,0BAAA,CAAA,8BACtCL,EAAA,EAAA,KAAA,EAAA,EAA6CC,EAAA,CAAA,EAAeC,EAAA,sBAAfC,EAAA,EAAAC,EAAAE,EAAA,CAAA,0BAC7CP,EAAA,EAAA,KAAA,EAAA,0BAIAC,EAAA,EAAA,KAAA,EAAA,EAAsDC,EAAA,CAAA,mBAA4CC,EAAA,SAA5CC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,0BAAA,CAAA,8BACtDL,EAAA,EAAA,KAAA,EAAA,EAAuC,EAAA,MAAA,EAAA,EAEnCD,EAAA,EAAA,cAAA,EAAA,EACAC,EAAA,EAAA,MAAA,EAAMC,EAAA,CAAA,EAAsBC,EAAA,EAAO,EAC/B,0BAFwBC,EAAA,CAAA,EAAAI,EAAA,MAAAC,EAAAC,cAAA,EAA8B,OAAAD,EAAAE,QAAA,EAA0B,QAAA,EAAA,EAC9EP,EAAA,CAAA,EAAAC,EAAAI,EAAAE,QAAA,uCAGVV,EAAA,EAAA,KAAA,EAAA,EAAsC,EAAA,kBAAA,EAAA,EACsB,EAAA,aAAA,EAAA,EAC5CW,GAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,GAAAH,EAAAI,WAAAP,CAAA,IAAAG,EAAAI,WAAAP,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EACVZ,EAAA,EAAA,aAAA,EAAA,EAA0BC,EAAA,CAAA,mBAAkDC,EAAA,EAC5EF,EAAA,EAAA,aAAA,EAAA,EAA4BC,EAAA,CAAA,mBAAoDC,EAAA,EAAa,EAClF,EACG,oBALoBC,EAAA,EAAAI,EAAA,YAAA,EAAA,EACxBJ,EAAA,EAAAkB,GAAA,UAAAN,EAAAI,UAAA,EACgBhB,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,gCAAA,CAAA,EACEF,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,kCAAA,CAAA,2BAOlCL,EAAA,EAAA,KAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAmB,EAAA,IAAAjB,EAAA,EAAA,EAAA,mCAAA,EAAA,GAAA,8BAEFL,EAAA,EAAA,KAAA,EAAA,EAAuCC,EAAA,CAAA,EAA+BC,EAAA,0BAA/BC,EAAA,EAAAC,EAAAmB,EAAAC,MAAAC,WAAA,8BACvCzB,EAAA,EAAA,KAAA,EAAA,EAAsCC,EAAA,CAAA,gBAAgDC,EAAA,kBAAhDC,EAAA,EAAAC,EAAAsB,GAAA,EAAA,EAAAX,EAAAY,WAAA,EAAAF,YAAA,OAAA,CAAA,2BAGtCzB,EAAA,EAAA,KAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAmB,EAAA,IAAAjB,EAAA,EAAA,EAAA,oCAAA,EAAA,GAAA,8BAEFL,EAAA,EAAA,KAAA,EAAA,EAAuCC,EAAA,CAAA,EAAgCC,EAAA,0BAAhCC,EAAA,EAAAC,EAAAwB,EAAAJ,MAAAK,YAAA,8BACvC7B,EAAA,EAAA,KAAA,EAAA,EAAsCC,EAAA,CAAA,gBAAiDC,EAAA,kBAAjDC,EAAA,EAAAC,EAAAsB,GAAA,EAAA,EAAAX,EAAAY,WAAA,EAAAE,aAAA,OAAA,CAAA,2BAGtC7B,EAAA,EAAA,KAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAmB,EAAA,IAAAjB,EAAA,EAAA,EAAA,oCAAA,EAAA,GAAA,8BAEFL,EAAA,EAAA,KAAA,EAAA,EAAuCC,EAAA,CAAA,EAAgCC,EAAA,0BAAhCC,EAAA,EAAAC,EAAA0B,EAAAN,MAAAO,YAAA,8BACvC/B,EAAA,EAAA,KAAA,EAAA,EAAsCC,EAAA,CAAA,gBAAiDC,EAAA,kBAAjDC,EAAA,EAAAC,EAAAsB,GAAA,EAAA,EAAAX,EAAAY,WAAA,EAAAI,aAAA,OAAA,CAAA,2BAGtC/B,EAAA,EAAA,KAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAmB,EAAA,IAAAjB,EAAA,EAAA,EAAA,qCAAA,EAAA,GAAA,8BAEFL,EAAA,EAAA,KAAA,EAAA,EAAuCC,EAAA,CAAA,EAAiCC,EAAA,0BAAjCC,EAAA,EAAAC,EAAA4B,EAAAR,MAAAS,aAAA,8BACvCjC,EAAA,EAAA,KAAA,EAAA,EAAsCC,EAAA,CAAA,gBAAkDC,EAAA,kBAAlDC,EAAA,EAAAC,EAAAsB,GAAA,EAAA,EAAAX,EAAAY,WAAA,EAAAM,cAAA,OAAA,CAAA,2BAGtCjC,EAAA,EAAA,KAAA,EAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAmB,EAAA,IAAAjB,EAAA,EAAA,EAAA,8BAAA,EAAA,GAAA,8BAEFL,EAAA,EAAA,KAAA,EAAA,EAAuCC,EAAA,CAAA,EAA2BC,EAAA,0BAA3BC,EAAA,EAAAC,EAAA8B,EAAAV,MAAAW,OAAA,8BACvCnC,EAAA,EAAA,KAAA,EAAA,EAAsCC,EAAA,CAAA,gBAA4CC,EAAA,kBAA5CC,EAAA,EAAAC,EAAAsB,GAAA,EAAA,EAAAX,EAAAY,WAAA,EAAAQ,QAAA,OAAA,CAAA,0BAGxCpC,EAAA,EAAA,KAAA,EAAA,yBACAA,EAAA,EAAA,KAAA,EAAA,EDjEJ,IAiEaqC,GAjEbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,KACAC,KAEAH,KACAA,KAgBAI,KACAC,KACAC,KACAC,KACAR,KACAS,IACAC,gCAoCab,IAA4B,IAAA,CAAnC,MAAOA,CAA4B,CAmDvCc,aAAA,CAlDA,KAAAC,mBAAqBC,EAAOC,EAA6B,EACzD,KAAAC,UAAYC,GAAK,EAEjB,KAAAC,QAA6B,CAC3B,CACEC,GAAI,OACJC,MAAO,4BAET,CACED,GAAI,OACJC,MAAO,2BACPC,OAAQ,GACRC,OAAQ,IAEV,CACEH,GAAI,cACJC,MAAO,qCAET,CACED,GAAI,eACJC,MAAO,sCAET,CACED,GAAI,eACJC,MAAO,sCAET,CACED,GAAI,gBACJC,MAAO,uCAET,CACED,GAAI,UACJC,MAAO,+BACR,EAEH,KAAAG,aAAe,KAAKL,QAAQM,IAAKC,GAAMA,EAAEN,EAAE,EAE3C,KAAAO,WAAa,IAAIC,GAAgD,KAAKd,kBAAkB,EACxF,KAAAe,aAAsB,CAAA,EAEtB,KAAA/C,WAAagD,EAAmB,OAAO,EAC/B,KAAAC,YAAcC,GAAS,KAAKlB,mBAAmBmB,OAAO,EACtD,KAAAC,cAAgBF,GAAS,KAAKlB,mBAAmBqB,SAAS,EAClE,KAAA7C,WAAa8C,EAAS,IAAK,CACzB,IAAMC,EAAO,KAAKvD,WAAU,EACtBwD,EAAQ,KAAKP,YAAW,EACxBQ,EAAU,KAAKL,cAAa,EAClC,OAAOG,IAAS,QAAUC,EAAQC,CACpC,CAAC,EAGCC,GAAO,IAAK,CACV,IAAMvB,EAAY,KAAKA,UAAS,EAChC,KAAKU,WAAWc,WAAW,CAACxB,CAAS,CAAC,CACxC,CAAC,CACH,CAEAyB,UAAQ,CACN,KAAKf,WAAWc,WAAW,CAAA,CAAE,CAC/B,CAEUE,WAAWC,EAAU,CAC7B,KAAKjB,WAAWkB,WAAW,CAACD,CAAI,CAAC,CACnC,iDAhEW7C,EAA4B,CAAA,+BAA5BA,EAA4B+C,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,OAAA,CAAA9B,UAAA,CAAA,EAAA,WAAA,CAAA,EAAA+B,MAAA,GAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,aAAA,UAAA,SAAA,YAAA,EAAA,CAAA,YAAA,GAAA,UAAA,GAAA,EAAA,gBAAA,YAAA,EAAA,CAAA,iBAAA,GAAA,EAAA,iBAAA,EAAA,CAAA,eAAA,MAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,kBAAA,EAAA,CAAA,WAAA,GAAA,EAAA,YAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,kBAAA,EAAA,CAAA,eAAA,MAAA,EAAA,CAAA,kBAAA,GAAA,kBAAA,GAAA,EAAA,kBAAA,EAAA,CAAA,eAAA,aAAA,EAAA,CAAA,kBAAA,GAAA,kBAAA,GAAA,gBAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,eAAA,cAAA,EAAA,CAAA,eAAA,cAAA,EAAA,CAAA,eAAA,eAAA,EAAA,CAAA,eAAA,SAAA,EAAA,CAAA,UAAA,GAAA,EAAA,YAAA,kBAAA,EAAA,CAAA,iBAAA,GAAA,EAAA,iBAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,kBAAA,GAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,OAAA,OAAA,EAAA,CAAA,gBAAA,OAAA,EAAA,WAAA,EAAA,CAAA,EAAA,gBAAA,SAAA,EAAA,CAAA,QAAA,OAAA,EAAA,CAAA,QAAA,SAAA,EAAA,CAAA,kBAAA,GAAA,kBAAA,GAAA,gBAAA,QAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICjEzCzF,EAAA,EAAA,uBAAA,CAAA,EAAyG,EAAA,QAAA,CAAA,EACpD2F,EAAA,gBAAA,SAAA/E,EAAA,CAAA,OAAiB8E,EAAAV,WAAApE,CAAA,CAAkB,CAAA,EACpFgF,EAAA,EAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,EAEAC,EAAA,EAAA,CAAA,EACEF,EAAA,EAAAG,IAAA,EAAA,EAAA,KAAA,CAAA,EAAsC,EAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,EACO,EAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,MAI/CH,EAAA,EAAA,CAAA,EACEF,EAAA,EAAAM,IAAA,EAAA,EAAA,KAAA,CAAA,EAAsD,EAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,EACf,GAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,MAgBzCN,EAAA,GAAA,CAAA,EACEF,EAAA,GAAAS,IAAA,EAAA,EAAA,KAAA,EAAA,EAA6E,GAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,EAGtC,GAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,MAGzCT,EAAA,GAAA,EAAA,EACEF,EAAA,GAAAY,IAAA,EAAA,EAAA,KAAA,EAAA,EAA6E,GAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,EAGtC,GAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,MAGzCZ,EAAA,GAAA,EAAA,EACEF,EAAA,GAAAe,IAAA,EAAA,EAAA,KAAA,EAAA,EAA6E,GAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,EAGtC,GAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,MAGzCf,EAAA,GAAA,EAAA,EACEF,EAAA,GAAAkB,IAAA,EAAA,EAAA,KAAA,EAAA,EAA6E,GAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,EAGtC,GAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,MAGzClB,EAAA,GAAA,EAAA,EACEF,EAAA,GAAAqB,IAAA,EAAA,EAAA,KAAA,EAAA,EAA6E,GAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,EAGtC,GAAAC,IAAA,EAAA,EAAA,KAAA,CAAA,MAIzCvB,EAAA,GAAAwB,IAAA,EAAA,EAAA,KAAA,EAAA,EAAwD,GAAAC,IAAA,EAAA,EAAA,KAAA,EAAA,EAE1DnH,EAAA,EAAQ,SAlEYK,EAAA,aAAAmF,EAAA1B,UAAA,EAAyB,UAAA0B,EAAAlC,OAAA,EAAoB,SAAA,EAAA,EAAgB,aAAA,EAAA,EAChErD,EAAA,EAAAI,EAAA,aAAAmF,EAAA1B,UAAA,EACK7D,EAAA,EAAAI,EAAA,kBAAAmF,EAAA7B,YAAA,EA8Da1D,EAAA,EAAA,EAAAI,EAAA,mBAAAmF,EAAA7B,YAAA,EACb1D,EAAA,EAAAI,EAAA,kBAAAmF,EAAA7B,YAAA,kBD1BpByD,GAAiBC,GACjBC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAAkBC,GAClBC,GAAqBC,GACrBC,GACAC,GAAWC,GAAAC,GACXC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EAAeC,CAAA,EAAAC,OAAA,CAAA;yHAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAGNjH,CAA4B,GAAA,IEjEzC,IA+BakH,IA/BbC,GAAAC,EAAA,KACAC,IACAC,KACAC,IACAC,KACAA,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,SAmBab,KAAyB,IAAA,CAAhC,MAAOA,CAAyB,iDAAzBA,EAAyB,CAAA,gCAAzBA,CAAyB,CAAA,CAAA,qCAFzB,CAACc,EAA6B,EAACC,QAAA,CAZxCC,EACAC,GACAC,EACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EAA4B,CAAA,CAAA,CAAA,SAInB1B,CAAyB,GAAA,+BE3BhC2B,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,0BAFoDC,EAAA,QAAAC,CAAA,EAClDC,EAAA,EAAAC,EAAA,IAAAF,EAAAG,KAAA,GAAA,uCAINP,EAAA,EAAA,kBAAA,CAAA,EACEQ,EAAA,EAAA,wBAAA,CAAA,EACAR,EAAA,EAAA,uBAAA,CAAA,EACEQ,EAAA,EAAA,QAAA,EAAA,mBAKAR,EAAA,EAAA,QAAA,EAAA,mBAIES,EAAA,aAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAcF,EAAAG,0BAAA,CAA2B,CAAA,CAAA,EAJ3Cb,EAAA,EAKE,EAEJM,EAAA,EAAA,wBAAA,KAAA,CAAA,EACFN,EAAA,2BAfmCG,EAAA,EAAAF,EAAA,MAAAa,CAAA,EACXX,EAAA,EAAAF,EAAA,cAAAa,CAAA,EAIlBX,EAAA,EAAAY,GAAA,cAAAC,EAAA,EAAA,EAAA,gCAAA,CAAA,EAFAf,EAAA,cAAAS,EAAAO,gBAAA,EAOAd,EAAA,CAAA,EAAAY,GAAA,cAAAC,EAAA,EAAA,EAAA,8BAAA,CAAA,EAFAf,EAAA,cAAAS,EAAAQ,cAAA,GDlBR,IAWAC,GAmCaC,IA9CbC,GAAAC,EAAA,KAAAC,KAWAJ,GAAyB,SACzBK,KACAD,KACAE,IACAC,IACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KAEAN,oDAuBaN,KAA0B,IAAA,CAAjC,MAAOA,CAA0B,CAkDrCa,YACmBC,EACAC,EAAsB,CADtB,KAAAD,UAAAA,EACA,KAAAC,WAAAA,EAnDT,KAAAC,iBAAmB,IAAIC,GAEjC,KAAAC,YAAc,IAAIC,KAClB,KAAAC,UAAYC,GAAU,KAAKH,YAAa,CAAC,EACzC,KAAAI,SAAWC,GAAS,KAAKL,YAAa,CAAC,EACvC,KAAAM,eAAiB,aAEjB,KAAAC,iBAAsC,CACpC,CACEC,UAAW,CACTC,eAAgBC,GAAa,KAAKV,WAAW,EAC7CW,aAAcC,GAAW,KAAKZ,WAAW,GAE3CjC,KAAM,GAAG,KAAK6B,UAAUiB,QAAQ,oCAAoC,CAAC,KAAKC,GAAO,KAAKd,YAAa,WAAW,CAAC,IAC/Ge,GAAI,aAEN,CACEP,UAAW,CACTC,eAAgBC,GAAa,KAAKR,SAAS,EAC3CS,aAAcC,GAAW,KAAKV,SAAS,GAEzCnC,KAAM,GAAG,KAAK6B,UAAUiB,QAAQ,oCAAoC,CAAC,KAAKC,GAAO,KAAKZ,UAAW,WAAW,CAAC,IAC7Ga,GAAI,aAEN,CACEP,UAAW,CACTC,eAAgBO,GAAY,KAAKhB,WAAW,EAC5CW,aAAcM,GAAU,KAAKjB,WAAW,GAE1CjC,KAAM,GAAG,KAAK6B,UAAUiB,QAAQ,mCAAmC,CAAC,KAAKC,GAAO,KAAKd,YAAa,MAAM,CAAC,IACzGe,GAAI,YAEN,CACEP,UAAW,CACTC,eAAgBO,GAAY,KAAKZ,QAAQ,EACzCO,aAAcM,GAAU,KAAKb,QAAQ,GAEvCrC,KAAM,GAAG,KAAK6B,UAAUiB,QAAQ,mCAAmC,CAAC,KAAKC,GAAO,KAAKV,SAAU,MAAM,CAAC,IACtGW,GAAI,YAEN,CAAEhD,KAAM,GAAG,KAAK6B,UAAUiB,QAAQ,gCAAgC,CAAC,GAAIE,GAAI,KAAKT,cAAc,CAAE,EAGxF,KAAA3B,iBAAmB,IAAIuC,GAAyB,IAAI,EACpD,KAAAtC,eAAiB,IAAIsC,GAAyB,IAAI,EAE3C,KAAAC,YAAc,IAAIC,GAA2B,KAAKb,iBAAiB,CAAC,EAAEC,SAAS,EAChF,KAAAa,yBAA2B,IAAID,GAAyB,EAAK,CAK1E,CAEHE,UAAQ,CACN,KAAKH,YAAYI,KAAKC,GAAmB,KAAK3B,UAAU,CAAC,EAAE4B,UAAWC,GAAa,CAC7EA,GAAWjB,gBAAkBiB,GAAWf,cAC1C,KAAKb,iBAAiB6B,KAAKD,CAAS,CAExC,CAAC,CACH,CAEAE,aAAaC,EAAsB,CAC7BA,EAAMd,KAAO,KAAKT,gBACpB,KAAKe,yBAAyBS,KAAK,EAAI,EACvC,KAAKvD,0BAAyB,IAE9B,KAAK8C,yBAAyBS,KAAK,EAAK,EACxC,KAAKX,YAAYW,KAAKD,EAAMrB,SAAS,EAEzC,CAEAjC,2BAAyB,CACvB,IAAIwD,EAAQ,KAAKpD,iBAAiBqD,MAC9BC,EAAM,KAAKrD,eAAeoD,MAC9BD,KAAQG,aAASH,CAAK,EAAIA,EAAMI,OAAM,EAAKJ,EAC3CE,KAAMC,aAASD,CAAG,EAAIA,EAAIE,OAAM,EAAKF,EAEjCF,GAASE,GACX,KAAKd,YAAYW,KAAK,CACpBrB,eAAgB2B,GAAWL,CAAK,EAChCpB,aAAc0B,GAASJ,CAAG,EAC3B,CAEL,iDArFWnD,GAA0BwD,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAA1B1D,EAA0B2D,UAAA,CAAA,CAAA,yBAAA,CAAA,EAAAC,QAAA,CAAA5C,iBAAA,kBAAA,EAAA6C,SAAA,CAAAC,GAF1B,CAACC,GAAwB,CAAE,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,SAAA,EAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,gBAAA,OAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,kBAAA,OAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,QAAA,cAAA,gBAAA,OAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,OAAA,EAAA,aAAA,EAAA,CAAA,YAAA,GAAA,EAAA,KAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,eAAA,GAAA,EAAA,cAAA,aAAA,EAAA,CAAA,aAAA,GAAA,EAAA,aAAA,cAAA,aAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IC5CzC1F,EAAA,EAAA,MAAA,CAAA,EAA0B,EAAA,kBAAA,CAAA,EAC4D,EAAA,YAAA,EACtEC,EAAA,CAAA,mBAA0CC,EAAA,EACtDF,EAAA,EAAA,aAAA,CAAA,EAAYS,EAAA,kBAAA,SAAAmF,EAAA,CAAA,OAAmBD,EAAAvB,aAAAwB,EAAApB,KAAA,CAA0B,CAAA,EACvDqB,EAAA,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,EAGF5F,EAAA,EAAa,EAEf2F,EAAA,EAAAE,IAAA,EAAA,GAAA,kBAAA,CAAA,eAiBF7F,EAAA,SAzB6CG,EAAA,EAAAF,EAAA,YAAA,EAAA,EAC7BE,EAAA,CAAA,EAAA2F,EAAA9E,EAAA,EAAA,EAAA,wBAAA,CAAA,EAC+Cb,EAAA,CAAA,EAAAF,EAAA,QAAAwF,EAAA5C,iBAAA,CAAA,CAAA,EAC1B1C,EAAA,EAAAF,EAAA,UAAAwF,EAAA5C,gBAAA,EAKG1C,EAAA,EAAAF,EAAA,OAAAe,EAAA,EAAA,EAAAyE,EAAA9B,wBAAA,IAAA,EAAA,kBD2BpCoC,EAAYC,GAAAC,GAAAC,GACZC,GAAqBC,GAAAC,GACrBC,GAAmBC,GAAAC,GAAAC,GACnBC,EAAeC,EACfC,GACAC,GAAeC,GAAAC,GAAAC,GACfC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,EAAA,EAAAC,OAAA,CAAA;wHAAA,CAAA,CAAA,CAAA,SAIVnG,CAA0B,GAAA,IE9CvC,IAYaoG,IAZbC,GAAAC,EAAA,KACAC,KAMAC,SAKaJ,KAAa,IAAA,CAApB,MAAOA,CAAa,CACxB,OAAOK,QACLC,EACAC,EAAkE,CAElE,MAAO,CACLC,SAAUR,EACVS,UAAW,CACT,CACEC,QAASC,GACTC,YAAaN,EACbO,KAAM,CAAA,GAER,CACEH,QAASI,GACTF,YAAaL,GAAuBD,EACpCO,KAAM,CAAA,GAERE,EAA4B,EAGlC,iDArBWf,EAAa,CAAA,gCAAbA,CAAa,CAAA,CAAA,sCAAbA,CAAa,GAAA,4BEQlBgB,EAAA,EAAA,kBAAA,EAAA,EACEC,EAAA,EAAA,QAAA,EAAA,EAA0E,EAAA,gBAAA,EAE5EC,EAAA,GDvBR,IAqFaC,GArFbC,GAAAC,EAAA,KACAC,IACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAH,KACAI,KACAC,KACAC,KACAC,KAQAC,KAEAC,KAMAC,KACAA,KACAC,KACAC,KAGAC,KACAF,KACAG,kFA0Ca3B,IAA4B,IAAA,CAAnC,MAAOA,CAA4B,CAYvC4B,YACmBC,EACiBC,EAC1BC,EACSC,EACAC,EAC2BC,EACnCC,EACDC,EACSC,EAETC,EAAgC,CAVvB,KAAAT,WAAAA,EACiB,KAAAC,UAAAA,EAC1B,KAAAC,OAAAA,EACS,KAAAC,UAAAA,EACA,KAAAC,cAAAA,EAC2B,KAAAC,OAAAA,EACnC,KAAAC,IAAAA,EACD,KAAAC,gBAAAA,EACS,KAAAC,yBAAAA,EAET,KAAAC,gBAAAA,EAtBV,KAAAC,UAAY,IAAIC,GAAW,EAAGC,YAAYC,MAAM,CAC9CC,kBAAmB,GACnBC,gBAAiBC,GAAW,IAAIC,KAAQ,oBAAoB,EAC7D,EAGD,KAAAC,QAAU,IAAID,KAAKA,KAAKE,IAAG,CAAE,EAG7B,KAAAC,UAAsC,IAAIC,GAAyB,EAAK,EAetE,KAAKC,WAAalB,EAAcmB,eAAe,UAAW,CAAC,KAAKtB,UAAUuB,IAAM,EAAE,CAAC,EAAEC,KACnFC,EAAKC,GAAQ,CACX,IAAMC,EAASD,GAAME,aAAa,CAAC,EACnC,OAAIF,GAAME,YAAYC,SAAW,GAAK,CAACF,EAC9B,CAAA,EAEFA,CACT,CAAC,CAAC,CAEN,CAEAG,UAAQ,CACN,KAAKC,iBAAmB,KAAK/B,UAAUgC,QACzC,CAEAC,cAAY,CACV,GAAI,KAAKF,mBAAqBG,OAAW,CACvC,KAAK5B,gBAAgB6B,eAAe,sDAAsD,EAC1F,MACF,CACA,IAAIC,EACJC,EAAc,CAAC,KAAKjC,OAAOkC,WAAY,KAAKlC,OAAOmC,gBAAgB,CAAC,EACjEf,KAAKgB,GAAK,CAAC,CAAC,EACZC,UAAU,CAAC,CAACC,EAAWC,CAAe,IAAK,CAC1C,IAAIC,EAAaC,GAAWC,oBACxBH,IACFC,EAAaC,GAAWE,sBAE1BX,EAAS,CACPY,KAAMJ,EACNrB,GAAImB,EAER,CAAC,EAEH,IAAMO,EAA8C,KAAK5B,WAAWG,KAClEC,EAAKE,IACI,CACLJ,GAAII,EAAOuB,YACXF,KAAMG,GAAcC,2BACpBC,QAAS,CACPL,KAAMM,GAAYC,mBAClBC,MAAO,KAAKhD,gBAAgBiD,2BAA2B9B,EAAQ+B,GAAoBC,KAAK,GAAGC,aAE7FC,aAAc,KAAKrD,gBAAgBiD,2BAA2B9B,EAAQ+B,GAAoBC,KAAK,GAAGC,YAClGE,YAAa,KAAKtD,gBAAgBiD,2BAA2B9B,EAAQ+B,GAAoBK,WAAW,GAChGH,aAEP,CAAC,EAGJ,KAAKzC,UAAU6C,KAAK,EAAI,EACxBf,EACGzB,KACCyC,GAAmB,KAAKlE,UAAU,EAClCmE,EAAWC,GAAO,CAChB,IAAMC,EAAa,KAAK3D,UAAU4D,YAAW,EAC7C,YAAKC,kBAAoBF,EAAWtD,gBAChC,IAAIE,KAAKoD,EAAWtD,eAAe,EACnC,IAAIE,KAAKA,KAAKE,IAAG,CAAE,EAEhB,KAAKX,yBACTgE,cAAc,KAAKxC,iBAAiBR,GAAIa,EAAQ+B,EAAK,KAAKG,kBAAmB,CAAC,CAACF,EAAWtD,eAAe,EACzGU,KACCC,EAAI,IAAM,EAAE,EACZ+C,GAAYC,GACHC,EAAGD,EAAIE,MAAMC,OAAO,CAC5B,CAAC,CAER,CAAC,CAAC,EAEHnC,UAAWf,GAAQ,CACdA,EACF,KAAKpB,gBAAgB6B,eAAe,KAAKjC,UAAU2E,QAAQ,KAAKC,gBAAgBpD,CAAI,CAAC,CAAC,GAEtF,KAAKP,UAAU6C,KAAK,EAAK,EACzB,KAAK1D,gBAAgByE,iBACnB,KAAK7E,UAAU2E,QAAQ,sCAAsC,EAAI,IAAM,KAAK9C,iBAAiBiD,KAAK,GAGtG,KAAKC,MAAK,CACZ,CAAC,CACL,CAEAH,gBAAgBH,EAAa,CAC3B,OAAIA,EAAMO,WAAW,aAAa,EACzB,wDACEP,EAAMO,WAAW,cAAc,EACjC,0DAEF,oCACT,CAEAD,OAAK,CACH,KAAK5E,IAAI4E,MAAK,CAChB,CAEAE,MAAI,CACF,KAAK9E,IAAI4E,MAAK,EACd,KAAKhF,OAAOmF,KAAKC,GAA4B,CAC3CC,MAAO,QACPC,KAAM,CACJhE,GAAI,KAAKvB,UAAUuB,IAEtB,CACH,iDAjIWrD,GAA4BsH,EAAAC,EAAA,EAAAD,EAc7BE,EAAe,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAIfM,EAAiB,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,EAAAR,EAAAS,EAAA,EAAAT,EAAAU,EAAA,CAAA,CAAA,CAAA,+BAlBhBhI,EAA4BiI,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,SAAA,CAAAC,GAT5B,CACTJ,GACAC,GACA,CACEI,QAASC,GACTC,WAAYC,GAAqC,SAAS,EAC3D,CACF,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,kBAAA,oBAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,UAAA,OAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,aAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,GAAA,QAAA,UAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,OAAA,iBAAA,WAAA,GAAA,kBAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICnFH/I,EAAA,EAAA,KAAA,CAAA,EAAqBiJ,EAAA,CAAA,mBAA0D/I,EAAA,EAC/EF,EAAA,EAAA,oBAAA,EAAoB,EAAA,IAAA,CAAA,EACEiJ,EAAA,CAAA,mBAAgD/I,EAAA,EACpEF,EAAA,EAAA,MAAA,CAAA,EAAa,EAAA,OAAA,CAAA,EACmB,EAAA,kBAAA,CAAA,EACoB,GAAA,kBAAA,CAAA,EACwB,GAAA,mBAAA,CAAA,EAElEiJ,EAAA,EAAA,oBACAjJ,EAAA,GAAA,WAAA,CAAA,EACEiJ,EAAA,EAAA,iCACF/I,EAAA,EAAW,EAEbF,EAAA,GAAA,mBAAA,CAAA,EACEiJ,EAAA,EAAA,oBACAjJ,EAAA,GAAA,WAAA,CAAA,EACEiJ,EAAA,EAAA,oBACF/I,EAAA,EAAW,EACZ,EAEHgJ,EAAA,GAAAC,IAAA,EAAA,EAAA,kBAAA,CAAA,EAIFjJ,EAAA,EAAkB,EACb,EACH,EAERF,EAAA,GAAA,oBAAA,EACEoJ,EAAA,EAAA,EACEpJ,EAAA,GAAA,SAAA,EAAA,EAAwEqJ,EAAA,QAAA,UAAA,CAAA,OAASL,EAAA5B,KAAA,CAAM,CAAA,EACrF6B,EAAA,EAAA,oBACF/I,EAAA,EACAF,EAAA,GAAA,SAAA,EAAA,EAAqEqJ,EAAA,QAAA,UAAA,CAAA,OAASL,EAAA9E,aAAA,CAAc,CAAA,EAC1FlE,EAAA,GAAA,+BAAA,EACEiJ,EAAA,EAAA,oBACF/I,EAAA,EAAgC,MAGtCA,EAAA,SAvCqBoJ,EAAA,EAAAC,EAAAC,EAAA,EAAA,GAAA,wCAAA,CAAA,EAECF,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,GAAA,8BAAA,CAAA,EAEZF,EAAA,CAAA,EAAAG,EAAA,YAAAT,EAAAtG,SAAA,EAGkB4G,EAAA,CAAA,EAAAG,EAAA,UAAA,EAAA,EAAgB,QAAA,KAAA,EAChCH,EAAA,EAAAI,EAAA,IAAAF,EAAA,GAAA,GAAA,2CAAA,EAAA,GAAA,EAEEF,EAAA,CAAA,EAAAK,GAAA,IAAAH,EAAA,GAAA,GAAA,kCAAA,EAAA,IAAAI,GAAA,GAAA,GAAAZ,EAAA9F,QAAA,MAAA,EAAA,GAAA,EAGcoG,EAAA,CAAA,EAAAG,EAAA,QAAA,OAAA,EAChBH,EAAA,EAAAI,EAAA,IAAAF,EAAA,GAAA,GAAA,6CAAA,EAAA,GAAA,EAEEF,EAAA,CAAA,EAAAI,EAAA,IAAAF,EAAA,GAAA,GAAA,oCAAA,EAAA,GAAA,EAIYF,EAAA,CAAA,EAAAG,EAAA,OAAAT,EAAAtG,UAAAmH,SAAA/G,kBAAA2C,QAAA,OAAA,EAWpB6D,EAAA,CAAA,EAAAI,EAAA,IAAAF,EAAA,GAAA,GAAA,cAAA,EAAA,GAAA,EAIEF,EAAA,CAAA,EAAAI,EAAA,IAAAF,EAAA,GAAA,GAAA,wCAAA,EAAA,GAAA,kBDmBJM,EAAYC,GAAAC,GACZC,GAAeC,GACfC,EAAeC,EACfC,GACAC,GAAeC,GAAAC,GAAAC,GACfC,GACAC,GACAC,GAAqBC,GAAAC,GACrBC,GAAcC,GAAAC,GACdC,GAAWC,GAAAC,GAAAC,GAAAC,GACXC,GACAC,GAAcC,GACdC,GAAkCC,GAClCC,GACAC,GACAC,GACAC,GAAmBC,GAAAC,GACnBC,GACAC,GACAC,GACAC,GAAmBC,EAAA,EAAAC,OAAA,CAAA;0HAAA,CAAA,CAAA,CAAA,SAWVpM,CAA4B,GAAA,wCGvE/BqM,EAAA,EAAA,KAAA,EAAiD,EAAA,MAAA,EAAA,EACzB,EAAA,mBAAA,EAAA,EACoBC,EAAA,SAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAUF,EAAAG,aAAAP,CAAA,CAAsB,CAAA,CAAA,EACtEQ,EAAA,CAAA,EACAV,EAAA,EAAA,UAAA,EACEU,EAAA,CAAA,+BAEFC,EAAA,EAAW,EACM,EACf,4BAPcC,EAAA,CAAA,EAAAC,EAAA,QAAAX,EAAAY,EAAA,EAChBF,EAAA,EAAAG,EAAA,IAAAb,EAAAc,MAAA,GAAA,EAEEJ,EAAA,CAAA,EAAAK,GAAA,IAAAC,EAAA,EAAA,EAAA,sCAAA,EAAA,IAAAC,GAAA,EAAA,EAAAjB,EAAAkB,QAAA,YAAA,EAAA,GAAA,2BAQZpB,EAAA,EAAA,mBAAA,EAAA,EAA+G,EAAA,uBAAA,EACtF,EAAA,UAAA,EACXU,EAAA,EAAA,gBAAA,EAAcC,EAAA,EAAW,EAErCX,EAAA,EAAA,GAAA,EAAGU,EAAA,CAAA,mBAA6DC,EAAA,EAAI,SAJwBE,EAAA,OAAA,OAAA,EAIzFD,EAAA,CAAA,EAAAS,EAAAH,EAAA,EAAA,EAAA,2CAAA,CAAA,GD/BX,IAyFaI,GAzFbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KAMAC,IACAC,KACAC,KAUAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAN,KACAA,KACAO,KACAC,KAEAC,KACAC,uFA+Ca1B,IAA0B,IAAA,CAAjC,MAAOA,CAA0B,CAWrC2B,YACmBC,EACAC,EAC2BC,EACnCC,EACQC,EACTC,EAC0BC,EAAsB,CANvC,KAAAN,UAAAA,EACA,KAAAC,cAAAA,EAC2B,KAAAC,OAAAA,EACnC,KAAAC,IAAAA,EACQ,KAAAC,gBAAAA,EACT,KAAAC,OAAAA,EAC0B,KAAAC,UAAAA,EAhBpC,KAAAC,cAAgB,IAAIC,GACpB,KAAAC,YAAc,IAAIC,GAA4B,CAAA,CAAgB,EAC9D,KAAAC,WAAa,KAAKF,YAAYG,aAAY,EAC1C,KAAAC,UAAY,KAAKN,cAAcO,aAAaC,KAAKC,GAAU,EAAE,EAAGC,GAAoB,EAAIC,GAAa,GAAG,CAAC,EAGzG,KAAAC,UAAsC,IAAIT,GAAyB,EAAK,EACxE,KAAAU,YAAc,GAWZ,KAAKC,WAAapB,EAAcqB,eAAe,UAAW,CAAC,KAAKhB,UAAU1C,IAAM,EAAE,CAAC,EAAEmD,KACnFQ,EAAKC,GAAQ,CACX,IAAMC,EAASD,GAAME,aAAa,CAAC,EACnC,OAAIF,GAAME,YAAYC,SAAW,GAAK,CAACF,EAC9B,CAAA,EAEFA,CACT,CAAC,CAAC,CAEN,CAEAG,UAAQ,CACNC,EAAc,CAAC,KAAK3B,OAAO4B,WAAY,KAAK5B,OAAO6B,gBAAgB,CAAC,EACjEhB,KAAKiB,GAAK,CAAC,CAAC,EACZC,UAAU,CAAC,CAACC,EAAWC,CAAe,IAAK,CAC1C,IAAIC,EAAaC,GAAWC,oBACxBH,IACFC,EAAaC,GAAWE,sBAE1B,KAAKC,WAAa,KAAKC,kBAAkBP,EAAWE,CAAU,EAC9D,KAAKzB,WAAa,KAAK6B,WAAWE,OAClC,KAAKtB,YAAc,KAAKpB,UAAU2C,QAAQ,6CAA6C,CACzF,CAAC,CACL,CAEAC,OAAK,CACH,KAAKzC,IAAIyC,MAAK,CAChB,CAEAC,UAAQ,CACN,KAAKL,YAAYM,SAAQ,CAC3B,CAEAvF,aAAawF,EAAkB,CAC7B,KAAKC,iBAAmBD,CAC1B,CAEAN,kBAAkBQ,EAAkBb,EAAsB,CACxD,OAAO,IAAIc,GAA6B,KAAKrC,UAAW,CAACsC,EAAUC,IAC1D,KAAKN,SAASK,EAAUC,EAAQH,EAAUb,CAAU,CAC5D,CACH,CAEAU,SAASK,EAAkBC,EAAgBH,EAAkBb,EAAsB,CACjF,YAAKjB,UAAUkC,KAAK,EAAI,EACjB,KAAKjD,gBACTkD,gBACC,CAAEC,KAAMnB,EAAYxE,GAAIqF,CAAQ,EAChC,CAACO,GAASC,gBAAiBD,GAASE,kBAAkB,EACtDP,EACA,CAAEC,OAAQA,EAAQO,SAAU,EAAE,EAC9B,CAAEC,MAAOC,GAAUC,uBAAwBC,UAAWC,GAAcC,qBAAqB,CAAiB,EAE3GlD,KACCQ,EAAK2C,IACH,KAAK/C,UAAUkC,KAAK,EAAK,EAClB,CACLc,MAAOD,EAASE,UAAU7C,IAAKwB,IACtB,CACLnF,GAAImF,EAASsB,WACbvG,MAAOiF,EAASuB,KAChBpG,QAAS6E,EAAS7E,QAAQqG,YAAW,GAExC,EACDnB,OAAQc,EAASM,UAAUC,YAAc,KACzCC,QAASR,EAASM,UAAUE,SAAW,IAE1C,EACDC,GAAW,IAAMC,EAAG,CAAET,MAAO,CAAA,EAAuBf,OAAQ,GAAIsB,QAAS,EAAK,CAAE,CAAC,CAAC,CAExF,CAEAG,yBAAuB,CACrB,KAAK1E,IAAIyC,MAAK,EACd,KAAKvC,OAAOyE,KAAKC,GAA8B,CAC7CC,KAAM,CACJjC,SAAU,KAAKC,iBACfpF,GAAI,KAAK0C,UAAU1C,IAErBqH,MAAO,QACR,CACH,iDArGW7G,GAA0B8G,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAc3BG,EAAiB,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAIjBO,EAAe,CAAA,CAAA,CAAA,+BAlBdrH,EAA0BsH,UAAA,CAAA,CAAA,wBAAA,CAAA,EAAAC,SAAA,CAAAC,GAT1B,CACTC,GACAC,GACA,CACEC,QAASC,GACTC,WAAYC,GAAqC,SAAS,EAC3D,CACF,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,aAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,CAAA,OAAA,SAAA,WAAA,GAAA,EAAA,cAAA,aAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,EAAA,YAAA,oBAAA,WAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,qBAAA,GAAA,QAAA,UAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,UAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,SAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,ICvFHzJ,EAAA,EAAA,KAAA,CAAA,EAAqBU,EAAA,CAAA,mBAA0DC,EAAA,EAC/EX,EAAA,EAAA,oBAAA,EACE2J,EAAA,CAAA,EACE3J,EAAA,EAAA,kBAAA,CAAA,EACE4J,EAAA,EAAA,QAAA,CAAA,mBAMFjJ,EAAA,EACAX,EAAA,EAAA,MAAA,CAAA,EAAa,EAAA,kBAAA,CAAA,EACqC,GAAA,iBAAA,EAE5C6J,EAAA,GAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,gBAWFnJ,EAAA,EAAkB,EAEpBkJ,EAAA,GAAAE,IAAA,EAAA,EAAA,mBAAA,CAAA,8BAMA/J,EAAA,GAAA,KAAA,EACE2J,EAAA,EAAA,EACE3J,EAAA,GAAA,+BAAA,CAAA,EACEC,EAAA,YAAA,UAAA,CAAA,OAAayJ,EAAA3D,SAAA,CAAU,CAAA,EAGxBpF,EAAA,MAELA,EAAA,EAAM,MAGZA,EAAA,EACAX,EAAA,GAAA,oBAAA,EACE2J,EAAA,GAAA,CAAA,EACE3J,EAAA,GAAA,SAAA,CAAA,EAAwEC,EAAA,QAAA,UAAA,CAAA,OAASyJ,EAAA5D,MAAA,CAAO,CAAA,EACtFpF,EAAA,EAAA,oBACFC,EAAA,EACAX,EAAA,GAAA,SAAA,EAAA,gBAIEC,EAAA,QAAA,UAAA,CAAA,OAASyJ,EAAA3B,wBAAA,CAAyB,CAAA,EAGlC/H,EAAA,GAAA,gCAAA,EAAA,gBACEU,EAAA,EAAA,oBACFC,EAAA,EAAgC,MAGtCA,EAAA,cA9DqBC,EAAA,EAAAS,EAAAH,EAAA,EAAA,GAAA,wCAAA,CAAA,EAGoBN,EAAA,CAAA,EAAAC,EAAA,YAAA,EAAA,EAGjCD,EAAA,EAAAoJ,GAAA,cAAA9I,EAAA,EAAA,GAAA,iDAAA,CAAA,EAEAL,EAAA,cAAA6I,EAAAjG,aAAA,EAM4B7C,EAAA,CAAA,EAAAC,EAAA,UAAAK,EAAA,GAAA,GAAAwI,EAAA7F,UAAA,CAAA,EAaXjD,EAAA,CAAA,EAAAC,EAAA,SAAAoJ,EAAA/I,EAAA,GAAA,GAAAwI,EAAA7F,UAAA,IAAA,KAAA,KAAAoG,EAAApF,UAAA,GAAA3D,EAAA,GAAA,GAAAwI,EAAArF,SAAA,IAAA,EAAA,EAUbzD,EAAA,CAAA,EAAAC,EAAA,oBAAA,CAAA,EAAuB,YAAA,CAAA,EAW7BD,EAAA,CAAA,EAAAG,EAAA,IAAAG,EAAA,GAAA,GAAA,gBAAA,EAAA,GAAA,EAOAN,EAAA,CAAA,EAAAC,EAAA,WAAAK,EAAA,GAAA,GAAAwI,EAAArF,SAAA,CAAA,EAE+BzD,EAAA,CAAA,EAAAC,EAAA,YAAAK,EAAA,GAAA,GAAAwI,EAAArF,SAAA,CAAA,EAC7BzD,EAAA,CAAA,EAAAG,EAAA,IAAAG,EAAA,GAAA,GAAA,cAAA,EAAA,GAAA,kBDCJgJ,EAAYC,GAAAC,GAAAC,GAAAC,GACZC,GAAeC,GACfC,EAAeC,EACfC,GACAC,GAAeC,GAAAC,GAAAC,GACfC,GAAsBC,GAAAC,GACtBC,GAAaC,GACbC,GAAqBC,GAAAC,GACrBC,GAAcC,GAAAC,GACdC,GAAWC,GAAAC,GACXC,GACAC,GAAcC,GACdC,GAAkCC,GAClCC,GACAC,GACAC,GAAiCC,GACjCC,GAAmBC,GACnBC,GACAC,GACAC,EAAkB,EAAAC,OAAA,CAAA;wHAAA,CAAA,CAAA,CAAA,SAWTtL,CAA0B,GAAA,IEzFvC,IAYauL,GAZbC,GAAAC,EAAA,KACAC,IACAC,KACAC,kBASaL,IAAgC,IAAA,CAAvC,MAAOA,CAAgC,CAM3CM,YAAoBC,EAA2B,CAA3B,KAAAA,UAAAA,CAA8B,CAElDC,aAAW,CACT,OAAQ,KAAKC,wBAAuB,CAClC,KAAKC,GAAuBC,gCAC1B,KAAKC,OAAS,KAAKL,UAAUM,QAAQ,uCAAuC,EAC5E,KAAKC,MAAQ,OACb,MACF,KAAKJ,GAAuBK,iCAC1B,KAAKH,OAAS,KAAKL,UAAUM,QAAQ,sCAAsC,EAC3E,KAAKC,MAAQ,OACb,MACF,KAAKJ,GAAuBM,mCAC1B,KAAKJ,OAAS,KAAKL,UAAUM,QAAQ,yCAAyC,EAC9E,KAAKC,MAAQ,QACb,KACJ,CACF,iDAvBWd,GAAgCiB,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAhClB,EAAgCmB,UAAA,CAAA,CAAA,+BAAA,CAAA,EAAAC,OAAA,CAAAX,wBAAA,yBAAA,EAAAY,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,OAAA,QAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICZ7CE,EAAA,EAAA,aAAA,CAAA,EAAyCC,EAAA,CAAA,EAAYC,EAAA,SAAzCC,EAAA,QAAAJ,EAAAd,KAAA,EAA6BmB,EAAA,EAAAC,EAAAN,EAAAhB,MAAA,kBDQ7BuB,EAAcC,GAAiBC,EAAA,EAAAC,OAAA,CAAA;8HAAA,CAAA,CAAA,CAAA,SAI9BtC,CAAgC,GAAA,+BGFrCuC,EAAA,EAAA,iBAAA,EAAA,EAAoD,EAAA,IAAA,EAAA,EAClBC,EAAA,CAAA,EAAoBC,EAAA,EAAI,4BAArDC,EAAA,EAAAC,EAAA,aAAAC,EAAAC,IAAA,EAA6BH,EAAA,EAAAI,EAAAF,EAAAG,KAAA,uCAI9BC,EAAA,CAAA,EACET,EAAA,EAAA,SAAA,EAAA,EAAsBU,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAP,EAAAQ,EAAA,CAAA,EAAAC,UAAAC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAE,cAAAZ,CAAA,CAAuB,CAAA,CAAA,EACpDJ,EAAA,CAAA,mBACFC,EAAA,YADEC,EAAA,CAAA,EAAAe,EAAA,IAAAC,EAAA,EAAA,EAAA,kDAAA,EAAA,GAAA,6BAFJC,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,EAAA,2BAAejB,EAAA,OAAAC,EAAAiB,mBAAA,uCAMfb,EAAA,CAAA,EACET,EAAA,EAAA,SAAA,EAAA,EAAsBU,EAAA,QAAA,UAAA,CAAAC,EAAAY,CAAA,EAAA,IAAAlB,EAAAQ,EAAA,CAAA,EAAAC,UAAAC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAS,eAAAnB,CAAA,CAAwB,CAAA,CAAA,EACrDJ,EAAA,CAAA,mBACFC,EAAA,YADEC,EAAA,CAAA,EAAAe,EAAA,IAAAC,EAAA,EAAA,EAAA,oDAAA,EAAA,GAAA,6BAFJC,EAAA,EAAAK,IAAA,EAAA,EAAA,eAAA,EAAA,2BAAerB,EAAA,OAAAC,EAAAiB,mBAAA,8BAOnBtB,EAAA,EAAA,SAAA,EAAA,EAMC,EAAA,UAAA,EACWC,EAAA,EAAA,WAAA,EAASC,EAAA,EAAW,uBAJ9BE,EAAA,oBAAAsB,CAAA,8BAxBRjB,EAAA,CAAA,EACET,EAAA,EAAA,WAAA,CAAA,EAAuB,EAAA,kBAAA,CAAA,EAEnBoB,EAAA,EAAAO,IAAA,EAAA,EAAA,iBAAA,CAAA,EAGA3B,EAAA,EAAA,WAAA,KAAA,CAAA,EACEoB,EAAA,EAAAQ,IAAA,EAAA,EAAA,cAAA,EAAmG,EAAAC,IAAA,EAAA,EAAA,cAAA,EAarG3B,EAAA,EACAkB,EAAA,EAAAU,IAAA,EAAA,EAAA,SAAA,CAAA,EASF5B,EAAA,EACAF,EAAA,EAAA,mBAAA,CAAA,EACE+B,EAAA,GAAA,gCAAA,EAAA,EAEF7B,EAAA,EAAmB,oCA/BAC,EAAA,CAAA,EAAAC,EAAA,OAAAC,EAAAG,KAAA,EAIfL,EAAA,CAAA,EAAA6B,EAAA3B,EAAA4B,0BAAAlB,EAAAmB,uBAAAC,gCAAA,EAAA9B,EAAA4B,0BAAAlB,EAAAmB,uBAAAE,iCAAA,EAAA,EAAA,EAmBCjC,EAAA,CAAA,EAAAC,EAAA,OAAAW,EAAAsB,YAAAhC,EAAA4B,uBAAA,CAAA,EAM4B9B,EAAA,CAAA,EAAAC,EAAA,0BAAAC,EAAA4B,uBAAA,uCAMnCjC,EAAA,EAAA,SAAA,CAAA,EAAsEU,EAAA,QAAA,UAAA,CAAAC,EAAA2B,CAAA,EAAA,IAAAvB,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAwB,QAAA,CAAS,CAAA,CAAA,EACtFtC,EAAA,CAAA,mBACFC,EAAA,QADEC,EAAA,EAAAe,EAAA,IAAAC,EAAA,EAAA,EAAA,iCAAA,EAAA,GAAA,GD9CN,IAgEaqB,IAhEbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KAEAC,KACAC,KACAC,KAMAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAGAC,KAEAC,mEAgCazB,KAA6B,IAAA,CAApC,MAAOA,CAA6B,CAYxC0B,YACmBC,EAC2BC,EAC3BC,EACAC,EACAC,EACAC,EACTC,EACAC,EAAuC,CAP9B,KAAAP,OAAAA,EAC2B,KAAAC,OAAAA,EAC3B,KAAAC,gBAAAA,EACA,KAAAC,yBAAAA,EACA,KAAAC,OAAAA,EACA,KAAAC,gBAAAA,EACT,KAAAC,UAAAA,EACA,KAAAC,eAAAA,EAnBV,KAAAC,GAAKC,GAAK,EACV,KAAAC,KAAOD,GAAc,EAAE,EACvB,KAAAE,WAAaF,GAAkB,SAAS,EAErB,KAAAG,kBAAoBC,EAAOC,EAA4B,EAKlE,KAAAC,cAAgC,CAAA,EA6LrB,KAAAhD,uBAAyBA,GAjL1C,KAAKiD,oBAAsBC,GAAa,KAAKT,EAAE,EAAEU,KAC/CC,EAAWX,GAAO,KAAKL,yBAAyBiB,KAAKZ,GAAM,EAAE,CAAC,CAAC,EAEjE,KAAKa,qBAAuB,KAAKpB,OAAOqB,UAAUC,eAAeF,sBAAwBG,EAAG,EAAK,EACjG,KAAKC,WAAa,KAAKC,uBAAsB,EAC7C,KAAKC,8BAAgCC,GACnC3B,EAAO4B,iBAAiBX,KACtBY,EAAKC,GACIA,IAAoB,EAC5B,CAAC,CACH,CAEL,CAEUC,cAAY,CACpB,KAAKhC,OAAOiC,KAAKC,GAA4B,CAC3CC,MAAO,QACPC,KAAM,CACJ5B,GAAI,KAAKA,GAAE,GAEd,CACH,CAEQkB,wBAAsB,CAC5B,IAAIW,EAAgD,CAAA,EAOpD,OAN8B,KAAKrB,oBAAoBE,KACrDoB,GAAKF,GAAQ,CACXC,EAAqBD,CACvB,CAAC,EACDN,EAAI,CAACO,EAAqB,CAAA,IAAOA,EAAmBP,IAAKS,GAAgCA,EAAGC,UAAU,CAAC,CAAC,EAE7EtB,KAC3BC,EAAWsB,GACL,CAACA,GAAeA,EAAYC,SAAW,EAClClB,EAAG,CAAA,CAAE,EAEP,KAAKtB,gBAAgByC,SAASF,CAAW,EAAEvB,KAChDC,EAAWyB,GACFpB,EACLoB,EAAUd,IAAKe,GAAY,CACzB,IAAMC,EAAe,KAAKC,gBAAgBF,EAASL,WAAYK,EAASG,SAAS,EAC3EC,EACJZ,EAAmBa,KAAMX,GAAOA,EAAGC,aAAeK,EAASL,UAAU,GAAK,KAC5E,MAAO,CACLhC,GAAIqC,EAASL,WACbrF,oBAAqB8F,GAAmB9F,oBACxCd,MAAOwG,EAASnC,KAChBvE,KAAM2G,EACNhF,wBAAyBmF,GAAmBE,OAC5CC,UAAWP,EAASG,UAExB,CAAC,CAAC,CAEL,CAAC,CAEL,CAAC,CAEN,CAEQD,gBAAgBP,EAAoBa,EAAiB,CAC3D,OAAI,KAAK1B,8BAA6B,EAE7B,qBADI0B,EAAUC,MAAM,GAAG,EAAE,CAAC,CACH,cAAcd,CAAU,WAE/C,+BAA+BA,CAAU,EAEpD,CAEUpE,SAAO,CACX,KAAKuD,8BAA6B,EACpC,KAAK1B,OAAOsD,WAAWrC,KAAKsC,GAAK,CAAC,CAAC,EAAEC,UAAWJ,GAAa,CAC3D,KAAKjD,OAAOsD,SAAS,CAAC,qBAAqBL,CAAS,iBAAiB,CAAC,CACxE,CAAC,EAED,KAAKjD,OAAOsD,SAAS,CAAC,0BAA0B,CAAC,CAErD,CAEUxF,YAAYiF,EAA8B,CAMlD,MALiB,CACfpF,GAAuBC,gCACvBD,GAAuBE,iCACvBF,GAAuB4F,8CAA8C,EAEvDC,SAAST,CAAM,CACjC,CAEUrG,cAAc+F,EAA0B,CAChD,IAAMgB,EAAa,KAAKvD,UAAUwD,QAAQ,uDAAwD,CAChGzH,MAAOwG,EAASxG,MAChB0H,UAAW,KAAKrD,KAAI,EACrB,EACKsD,EAAU,KAAK1D,UAAUwD,QAAQ,wDAAwD,EACzFG,EAAc,KAAK3D,UAAUwD,QAAQ,wDAAwD,EACnG,KAAK/C,cAAcmD,KACjB,KAAKC,sBAAsBN,EAAYG,EAASC,CAAW,EACxD/C,KACCkD,GAAQC,GAAWA,CAAM,EACzBlD,EAAU,IACR,KAAKhB,yBAAyBmE,uBAAuBzB,EAAS1F,mBAAmB,EAAE+D,KACjFoB,GAAI,IAAK,CACP,KAAKb,WAAa,KAAKC,uBAAsB,EAC7C,KAAKrB,gBAAgBkE,iBACnB,KAAKjE,UAAUwD,QAAQ,2CAA2C,CAAC,CAEvE,CAAC,EACDU,GAAYC,IACVC,QAAQC,MAAMF,CAAG,EACjB,KAAKpE,gBAAgBuE,eACnB,KAAKtE,UAAUwD,QAAQ,2CAA2C,CAAC,EAE9DtC,EAAG,IAAI,EACf,CAAC,CACH,CACF,EAEFiC,UAAU,IAAK,CACd,KAAKlD,eAAesE,WAAW,kCAAmC,0BAA2B,QAAS,EAAG,CACvGC,IAAKjC,EAASO,UACd2B,oBAAqBlC,EAAS1F,oBAC9B6H,UAAW,KAAKxE,GAAE,EACnB,CACH,CAAC,CAAC,CAER,CAEUnD,eAAewF,EAA0B,CACjD,IAAMgB,EAAa,KAAKvD,UAAUwD,QAAQ,wDAAyD,CACjGzH,MAAOwG,EAASxG,MAChB0H,UAAW,KAAKrD,KAAI,EACrB,EACKsD,EAAU,KAAK1D,UAAUwD,QAAQ,yDAAyD,EAC1FG,EAAc,KAAK3D,UAAUwD,QAAQ,yDAAyD,EACpG,KAAK/C,cAAcmD,KACjB,KAAKC,sBAAsBN,EAAYG,EAASC,CAAW,EACxD/C,KACCkD,GAAQC,GAAWA,CAAM,EACzBlD,EAAU,IACR,KAAKhB,yBAAyB8E,wBAAwBpC,EAAS1F,mBAAmB,EAAE+D,KAClFoB,GAAI,IAAK,CACP,KAAKb,WAAa,KAAKC,uBAAsB,EAC7C,KAAKrB,gBAAgBkE,iBACnB,KAAKjE,UAAUwD,QAAQ,4CAA4C,CAAC,CAExE,CAAC,EACDU,GAAYC,IACVC,QAAQC,MAAMF,CAAG,EACjB,KAAKpE,gBAAgBuE,eACnB,KAAKtE,UAAUwD,QAAQ,4CAA4C,CAAC,EAE/DtC,EAAG,IAAI,EACf,CAAC,CACH,CACF,EAEFiC,UAAU,IAAK,CACd,KAAKlD,eAAesE,WAAW,mCAAoC,2BAA4B,QAAS,EAAG,CACzGC,IAAKjC,EAASO,UACd2B,oBAAqBlC,EAAS1F,oBAC9B6H,UAAW,KAAKxE,GAAE,EACnB,CACH,CAAC,CAAC,CAER,CAEU2D,sBAAsB9H,EAAe2H,EAAiBkB,EAAyB,CACvF,OAAO,KAAKtE,kBAAkBuE,UAAU,CACtC9I,MAAOA,EACP2H,QAASA,EACTkB,kBAAmBA,EACpB,CACH,CAEAE,aAAW,CACT,KAAKrE,cAAcsE,QAASC,GAAQA,EAAIC,YAAW,CAAE,CACvD,iDArMWlH,GAA6BmH,EAAAC,EAAA,EAAAD,EAc9BE,EAAiB,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,CAAA,CAAA,CAAA,+BAdhB3H,EAA6B4H,UAAA,CAAA,CAAA,oBAAA,CAAA,EAAAC,OAAA,CAAA1F,GAAA,CAAA,EAAA,IAAA,EAAAE,KAAA,CAAA,EAAA,MAAA,EAAAC,WAAA,CAAA,EAAA,YAAA,CAAA,EAAAwF,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,OAAA,SAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,GAAA,QAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,qBAAA,GAAA,QAAA,UAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,QAAA,OAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,QAAA,cAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IChE1C1K,EAAA,EAAA,sBAAA,CAAA,EAAmC,EAAA,4BAAA,EACL,EAAA,iBAAA,EACTC,EAAA,CAAA,mBAAgDC,EAAA,EAAkB,EAErFF,EAAA,EAAA,SAAA,CAAA,EAAsEU,EAAA,QAAA,UAAA,CAAA,OAASiK,EAAAxE,aAAA,CAAc,CAAA,EAC3FnG,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,KAAA,EAAGC,EAAA,EAAYD,EAAA,CAAA,mBAC3BC,EAAA,EACAkB,EAAA,GAAAwJ,IAAA,GAAA,EAAA,eAAA,CAAA,gBAqCAxJ,EAAA,GAAAyJ,IAAA,EAAA,EAAA,SAAA,CAAA,gBAKF3K,EAAA,SA/CqBC,EAAA,CAAA,EAAAI,EAAAY,EAAA,EAAA,EAAA,8BAAA,CAAA,EAGQhB,EAAA,CAAA,EAAAe,EAAA,IAAAC,EAAA,EAAA,EAAA,wCAAA,EAAA,GAAA,EAEQhB,EAAA,CAAA,EAAAC,EAAA,UAAAe,EAAA,GAAA,EAAAwJ,EAAA/E,UAAA,CAAA,EAqCnCzF,EAAA,CAAA,EAAA6B,EAAAb,EAAA,GAAA,GAAAwJ,EAAAnF,oBAAA,EAAA,GAAA,EAAA,kBDCEsF,EAAYC,GAAAC,GAAAC,GACZC,GAAiBC,EACjBC,GAAkBC,GAAAC,GAAAC,GAClBC,GACAC,GACAC,GAAeC,GAAAC,GACfC,GACAC,GAAaC,GACbC,GAAaC,GAAAC,GAAAC,GAAAC,GACbC,GACAC,GAAaC,GAAAC,GAAAC,GACbC,GACAC,GACAC,GACAC,EAAgC,EAAAC,OAAA,CAAA;4HAAA;mHAAA,CAAA,CAAA,CAAA,SAKvBtK,CAA6B,GAAA,wCGjC5BuK,EAAA,EAAA,IAAA,EAAA,EAAGC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,gBAAA,CAAiB,CAAA,CAAA,EAC3BC,EAAA,CAAA,+BAIFC,EAAA,qBAJEC,EAAA,EAAAC,EAAA,IAAAC,GAAA,EAAA,EAAA,mDAAAR,EAAAS,WAAAC,GAAA,EAAAC,IAAAX,EAAAY,WAAAC,MAAAC,gBAAA,CAAA,EAAA,GAAA,uCAMFlB,EAAA,EAAA,MAAA,EAAA,EACEQ,EAAA,CAAA,+BAIFC,EAAA,EACAT,EAAA,EAAA,IAAA,EAAA,EAAGC,EAAA,QAAA,UAAA,CAAAC,EAAAiB,CAAA,EAAA,IAAAf,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,gBAAA,CAAiB,CAAA,CAAA,EAC3BC,EAAA,CAAA,+BACFC,EAAA,qBAPEC,EAAA,EAAAC,EAAA,IAAAC,GAAA,EAAA,EAAA,+CAAAR,EAAAS,WAAAC,GAAA,EAAAM,GAAAhB,EAAAY,WAAAC,MAAAC,gBAAA,CAAA,EAAA,GAAA,EAMAR,EAAA,CAAA,EAAAC,EAAA,IAAAU,GAAA,EAAA,EAAA,gDAAAjB,EAAAS,UAAA,EAAA,GAAA,8BAjBRb,EAAA,EAAA,MAAA,CAAA,EAAkD,EAAA,MAAA,EAAA,EAE9CsB,EAAA,EAAAC,IAAA,EAAA,EAAA,GAAA,eAOED,EAAA,EAAAE,IAAA,EAAA,EAAA,EAWJf,EAAA,EAAM,kBAlBJC,EAAA,CAAA,EAAAe,EAAAC,EAAA,EAAA,EAAAtB,EAAAuB,aAAA,IAAA,GAAA,EAAA,CAAA,0BAwBNC,EAAA,EAAA,KAAA,EAAA,yBAIMA,EAAA,EAAA,sBAAA,6BAFJ5B,EAAA,EAAA,KAAA,EAAA,EACEsB,EAAA,EAAAO,IAAA,EAAA,EAAA,sBAAA,EAGFpB,EAAA,kBAHEC,EAAA,EAAAe,EAAArB,EAAA0B,KAAAC,gBAAA,GAAA,CAAA,8BAIF/B,EAAA,EAAA,KAAA,EAAA,EACE4B,EAAA,EAAA,uBAAA,EAAA,EAKFnB,EAAA,gCAJIC,EAAA,EAAAsB,EAAA,MAAAC,CAAA,EAAW,wBAAA7B,EAAA8B,qBAAA,EACoC,kBAAA9B,EAAA+B,YAAA,6BAKrDP,EAAA,EAAA,KAAA,EAAA,8FAGA5B,EAAA,EAAA,mBAAA,EAAA,EAA4F,EAAA,uBAAA,EAExF4B,EAAA,EAAA,MAAA,EAAA,+BAKFnB,EAAA,EACAT,EAAA,EAAA,wBAAA,EACEQ,EAAA,CAAA,+BACFC,EAAA,EACAT,EAAA,EAAA,GAAA,EAAGQ,EAAA,CAAA,+BAA+EC,EAAA,EAAI,kBANlFC,EAAA,CAAA,EAAAsB,EAAA,MAAAX,GAAA,EAAA,EAAA,2CAAAjB,EAAAS,UAAA,CAAA,EAIFH,EAAA,CAAA,EAAAC,EAAA,IAAAU,GAAA,EAAA,EAAA,wCAAAjB,EAAAS,UAAA,EAAA,GAAA,EAECH,EAAA,CAAA,EAAA0B,EAAAf,GAAA,EAAA,EAAA,sCAAAjB,EAAAS,UAAA,CAAA,6BAUDL,EAAA,CAAA,kBAAAG,EAAA,IAAAP,EAAAiC,iBAAA,GAAA,8BAEA7B,EAAA,CAAA,gDAAAG,EAAA,IAAAU,GAAA,EAAA,EAAA,0BAAAjB,EAAAS,UAAA,EAAA,GAAA,uCALNb,EAAA,EAAA,MAAA,EAAA,EAAsC,EAAA,SAAA,EAAA,EACDC,EAAA,QAAA,UAAA,CAAAC,EAAAoC,CAAA,EAAA,IAAAlC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAmC,kBAAA,CAAmB,CAAA,CAAA,EAC7DjB,EAAA,EAAAkB,IAAA,EAAA,CAAA,EAAwB,EAAAC,IAAA,EAAA,CAAA,EAK1BhC,EAAA,EAAS,oBALPC,EAAA,CAAA,EAAAe,EAAArB,EAAAiC,iBAAA,EAAA,CAAA,2BAeA7B,EAAA,CAAA,yBAAAG,EAAA,IAAAe,EAAA,EAAA,EAAA,aAAA,EAAA,GAAA,6BAGAlB,EAAA,CAAA,+CAAAG,EAAA,IAAAU,GAAA,EAAA,EAAA,4BAAAjB,EAAAS,UAAA,EAAA,GAAA,8BAIEb,EAAA,EAAA,KAAA,EACEQ,EAAA,CAAA,+BAIFC,EAAA,mBAJEC,EAAA,EAAAC,EAAA,IAAAC,GAAA,EAAA,EAAA,6BAAAR,EAAAS,WAAAC,GAAA,EAAAM,GAAAhB,EAAAY,WAAAC,MAAAC,gBAAA,CAAA,EAAA,GAAA,8BAMFlB,EAAA,EAAA,KAAA,EACEQ,EAAA,CAAA,+BACFC,EAAA,mBADEC,EAAA,EAAAC,EAAA,IAAAC,GAAA,EAAA,EAAA,6BAAAR,EAAAS,WAAAC,GAAA,EAAAM,GAAAhB,EAAAsC,YAAA,CAAA,CAAA,EAAA,GAAA,6BATJpB,EAAA,EAAAqB,IAAA,EAAA,EAAA,KAAA,EAAkC,EAAAC,IAAA,EAAA,EAAA,KAAA,iBAAlCnB,EAAArB,EAAAY,WAAAC,MAAA4B,UAAA,EAAA,CAAA,GDjHR,cAwDMC,IA+BOC,GAvFbC,GAAAC,EAAA,KAAAC,KACAC,IACAC,IACAC,KACAC,KAEAC,KAEAC,KACAC,KACAC,KACAC,KAEAJ,KAEAK,KACAC,KAEAC,KACAC,KACAC,KAEAC,KACAC,KAGAC,KAEAZ,+JA4BMT,IAAgB,CAACsB,EAAgB,EA+B1BrB,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CAqCzCsB,YACkCvC,EACYwC,EAC3BC,EACTC,EACSC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAmC,CATpB,KAAAhD,KAAAA,EACY,KAAAwC,OAAAA,EAC3B,KAAAC,QAAAA,EACT,KAAAC,UAAAA,EACS,KAAAC,aAAAA,EACA,KAAAC,iBAAAA,EACA,KAAAC,mBAAAA,EACA,KAAAC,6BAAAA,EACA,KAAAC,kBAAAA,EACA,KAAAC,gBAAAA,EA9CA,KAAA9D,WAAoE,KAAKuD,QAAQvD,WACjF,KAAA+D,SAA0C,KAAKR,QAAQQ,SACvD,KAAAC,yBAAgD,KAAKT,QAAQS,yBAC7D,KAAAC,gBAAuC,KAAKV,QAAQU,gBACpD,KAAApE,WAAa,KAAKiB,KAAKjB,WACvB,KAAAqE,oBAA2C,KAAKlE,WAAWmE,gBAC3D,KAAAC,UAAY,KAAKT,mBAAmBU,QAAQC,GAAYC,MAAM,EAAEC,KACjFC,GAAU,CACRC,QAAS,GACTC,YAAa,CACX,CAACL,GAAYC,MAAM,EAAG,IAEN,EACpBK,EAAKC,GAAgCA,EAAWH,OAAO,CAAC,EAEvC,KAAA/D,cAAgB,KAAKX,YAAY8E,YAAcC,EAAG,EAAK,EACvD,KAAAC,iBAAmB,KAAKlE,MAAMmE,mBAAqBC,OAAY,GAAQ,CAAC,KAAKpE,KAAKmE,iBAClF,KAAA5D,iBAAmB,KAAKP,MAAMO,iBAEhC,KAAA8D,aAAeC,EAAc,CAAA,CAAE,EAC7B,KAAA1D,YAAc2D,EAAS,IAAM,KAAKF,aAAY,EAAGG,MAAM,EAEvD,KAAApE,sBACjB,KAAKJ,KAAKyE,aAAaX,IAAKY,IACnB,CACLC,GAAID,GAAaE,kBAAkBC,YACnC7E,KAAM,CAAA,GAET,GAAK,CAAA,EAEW,KAAA8E,gBAA4BC,GAC5B,KAAAC,SAAmBC,GACnB,KAAAC,kBAAmD,KAAKC,uBAAuB,KAAKpG,UAAU,EAC9F,KAAAqG,qBAAuB,KAAKF,kBAAkBxB,KAAKI,EAAKuB,GAAYA,EAAQb,OAAS,CAAC,CAAC,EACvF,KAAAc,gBAAkB,KAAKtF,KAAKyE,aAAaD,OAAS,EAcnE,KAAKzB,kBAAkBwC,kBAAkB,KAAKvF,KAAKwF,SAAW,CAAA,CAAE,EAChE,KAAK/C,QAAQgD,cAAc,KAAKzF,KAAKjB,UAAU,EAC/C,KAAK0D,QAAQiD,eAAe,EAAK,EACjC,KAAKjD,QAAQkD,eAAe,KAAK3F,KAAK4F,aAAa,EAEnD,IAAMC,EAAiB,CACrB,CACElB,GAAI,KAAK3E,MAAMK,aACfL,KAAM,CAAA,EACA,EAEJ8F,EAAwB,KAAK9F,MAAM+F,+BAAiC,GAC1E,KAAK1F,aAAeyF,EAAwB,CAAA,EAAKD,EAEjD,KAAK7F,KAAKgG,gBAAgBC,QAAStB,GAAM,CACvC,KAAKtE,aAAa6F,QAAQ,CACxBvB,GAAAA,EACA3E,KAAM,CAAA,EACA,CACV,CAAC,EAEI,KAAKsF,kBACJ,KAAKtF,KAAKmG,sBACZ,KAAK9F,aACH,KAAKL,MAAMoG,iBAAiBtC,IAAKa,IACxB,CACLA,GAAAA,EACA3E,KAAM,CAAA,GAET,GAAK,CAAA,EAER,KAAKI,sBACH,KAAKJ,MAAMoG,iBAAiBtC,IAAKa,IACxB,CACLA,GAAAA,EACA3E,KAAM,CAAA,GAET,GAAK,CAAA,EAGd,CAEAqG,cAAcb,EAAgC,CAC5C,KAAKtG,WAAWoH,WAAWd,CAAO,EAClC,KAAKxC,gBAAgBuD,iBAAiB,KAAKxH,WAAYyG,CAAO,CAChE,CAEAgB,iBAAiBC,EAAW,CAC1B,GAAI,KAAKrG,sBAAsBoE,OAAS,EAAG,CACzC,IAAMkC,EAAeD,EAAKE,OAAQ3G,GAAS,CAAC,KAAKI,sBAAsBwG,KAAMC,GAASA,EAAKlC,KAAO3E,EAAK2E,EAAE,CAAC,EAC1G,KAAKN,aAAayC,IAAIJ,CAAY,EAClC,MACF,CACA,KAAKrC,aAAayC,IAAIL,CAAI,CAC5B,CAEAM,QAAM,CACJ,KAAKrE,UAAUsE,MAAK,CACtB,CAEAvG,mBAAiB,CACf,KAAKiC,UAAUsE,MAAM,CAAE3C,aAAc,KAAKA,aAAY,EAAI4C,cAAe,EAAI,CAAgC,CAC/G,CAEAxI,iBAAe,CACb,KAAKS,WAAWgI,gBAAe,CACjC,CAEQ/B,uBAAuBpG,EAAsB,CACnD,OAAOA,IAAe,UAAa,KAAKyD,OAAO2E,SAASC,wBAA0BnD,EAAG,CAAA,CAAE,EAAKA,EAAG,CAAA,CAAE,CACnG,CAEAoD,MAAI,CACF,GAAI,KAAKhD,aAAY,EAAGG,OAAS,EAC/B,KAAK9B,UAAUsE,MAAM,CACnB3C,aAAc,KAAKA,aAAY,EAC/BiD,aAAc,KAAKpI,WAAWC,MAAM4B,UACpCyE,QAAS,KAAKtG,WAAWC,MAAMqG,QAC/B+B,aAAc,KAAKrI,WAAWC,MAAMC,iBACpCoI,WAAY,KAAKtI,WAAWC,MAAMqI,WACnC,MACI,CACL,IAAMC,EAAmB,KAAK3E,6BAA6B4E,2BACzD,KAAK3I,WACL,0BAA0B,EAE5B,KAAK4D,aAAagF,gBAAgB,KAAK/E,iBAAiBgF,QAAQH,CAAgB,EAAG,CACjFI,SAAUC,IACX,CACH,CACF,iDA3IW7G,GAA8B8G,EAsC/BC,EAAe,EAAAD,EACfE,EAAiB,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,EAAAR,EAAAS,EAAA,EAAAT,EAAAU,EAAA,CAAA,CAAA,CAAA,+BAvChBxH,EAA8ByH,UAAA,CAAA,CAAA,8BAAA,CAAA,EAAAC,SAAA,CAAAC,GAZ9B,CACTV,GACAW,GACA,GAAG7H,IACH,CACE8H,QAASC,GACTC,SAAU,CACRC,mBAAoB,KAEvB,CACF,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,mBAAA,UAAA,aAAA,kBAAA,WAAA,gBAAA,kBAAA,WAAA,EAAA,CAAA,EAAA,WAAA,cAAA,cAAA,kBAAA,oBAAA,qBAAA,mBAAA,sBAAA,EAAA,CAAA,eAAA,GAAA,EAAA,iBAAA,kBAAA,EAAA,CAAA,sBAAA,GAAA,EAAA,kBAAA,EAAA,CAAA,YAAA,GAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,GAAA,EAAA,iBAAA,EAAA,CAAA,eAAA,QAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,kBAAA,EAAA,CAAA,WAAA,GAAA,EAAA,YAAA,EAAA,CAAA,UAAA,GAAA,EAAA,YAAA,kBAAA,EAAA,CAAA,cAAA,gCAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,OAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,CAAA,EAAA,MAAA,wBAAA,iBAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,MAAA,wFAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,CAAA,aAAA,GAAA,QAAA,UAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,ICrFHpL,EAAA,EAAA,KAAA,CAAA,EAAqBQ,EAAA,CAAA,EAAqBC,EAAA,EAC1CT,EAAA,EAAA,qBAAA,CAAA,EAAyC,EAAA,uBAAA,CAAA,eAQrCC,EAAA,mBAAA,SAAAqL,EAAA,CAAA,OAAoBD,EAAA/C,iBAAAgD,CAAA,CAAwB,CAAA,EAG5CtL,EAAA,EAAA,4BAAA,CAAA,yCAUEA,EAAA,EAAA,oBAAA,CAAA,gCAEEC,EAAA,iBAAA,SAAAqL,EAAA,CAAA,OAAkBD,EAAAlD,cAAAmD,CAAA,CAAqB,CAAA,EAExC7K,EAAA,EACDa,EAAA,GAAAiK,IAAA,EAAA,EAAA,MAAA,CAAA,gBAwBF9K,EAAA,EAEAT,EAAA,GAAA,QAAA,CAAA,gBACEsB,EAAA,GAAAkK,IAAA,EAAA,EAAA,KAAA,CAAA,EACAC,EAAA,GAAA,CAAA,EACEnK,EAAA,GAAAoK,IAAA,EAAA,EAAA,KAAA,CAAA,EAAsC,GAAAC,IAAA,EAAA,EAAA,KAAA,EAAA,MAaxCrK,EAAA,GAAAsK,IAAA,EAAA,EAAA,KAAA,EAAA,EACFnL,EAAA,EACAa,EAAA,GAAAuK,IAAA,GAAA,GAAA,mBAAA,EAAA,gBAeFpL,EAAA,EAAuB,EAEzBT,EAAA,GAAA,oBAAA,EACEsB,EAAA,GAAAwK,IAAA,EAAA,EAAA,MAAA,EAAA,EAWA9L,EAAA,GAAA,SAAA,EAAA,EAA2BC,EAAA,QAAA,UAAA,CAAA,OAASoL,EAAAxC,OAAA,CAAQ,CAAA,EAC1CrI,EAAA,EAAA,oBACFC,EAAA,EAEAT,EAAA,GAAA,SAAA,EAAA,EAAwCC,EAAA,QAAA,UAAA,CAAA,OAASoL,EAAAlC,KAAA,CAAM,CAAA,EAEnD7H,EAAA,GAAAyK,IAAA,EAAA,CAAA,EAAW,GAAAC,IAAA,EAAA,CAAA,EAGA,GAAAC,IAAA,EAAA,CAAA,EAkBfxL,EAAA,EAAS,gBA/HUC,EAAA,EAAA0B,EAAAiJ,EAAAvJ,KAAAoK,UAAA,EAGjBxL,EAAA,CAAA,EAAAsB,EAAA,UAAAN,EAAA,EAAA,GAAA2J,EAAAtG,QAAA,CAAA,EAA4B,aAAAsG,EAAArK,UAAA,EACH,kBAAAqK,EAAAzE,eAAA,EACU,WAAAyE,EAAAvE,QAAA,EACd,gBAAA,EAAA,EACC,kBAAAuE,EAAAvJ,KAAAC,iBAAA,EAAA,EAC2B,YAAA,EAAA,EAK/CrB,EAAA,CAAA,EAAAsB,EAAA,WAAA,EAAA,EAAkB,cAAAqJ,EAAAvJ,KAAAqK,aAAA,EAAA,EACuB,cAAA,EAAA,EACrB,kBAAA,EAAA,EACK,oBAAAzK,EAAA,EAAA,GAAA2J,EAAAjG,SAAA,IAAA,EAAA,EAC0B,sBAAAgH,EAAA1K,EAAA,EAAA,GAAA2J,EAAAnG,mBAAA,KAAA,MAAAkH,IAAAlG,OAAAkG,EAAA,EAAA,EACU,mBAAAf,EAAAvJ,KAAAuK,kBAAA,EAAA,EACV,uBAAA3K,EAAA,EAAA,GAAA2J,EAAA1J,aAAA,CAAA,EAIjDjB,EAAA,CAAA,EAAAsB,EAAA,mBAAAX,GAAA,GAAA,GAAA,uBAAAgK,EAAAxK,UAAA,CAAA,EAIFH,EAAA,CAAA,EAAAe,EAAAC,EAAA,GAAA,GAAA2J,EAAAnE,oBAAA,EAAA,GAAA,EAAA,EA0BexG,EAAA,CAAA,EAAAsB,EAAA,SAAAN,EAAA,GAAA,GAAA2J,EAAArG,wBAAA,CAAA,EACKtE,EAAA,CAAA,EAAAsB,EAAA,kBAAAsK,GAAA,GAAAC,EAAA,CAAA,EAea7L,EAAA,CAAA,EAAAsB,EAAA,mBAAAsK,GAAA,GAAAC,EAAA,CAAA,EAEnC7L,EAAA,EAAAe,EAAAC,EAAA,GAAA,GAAA2J,EAAApG,eAAA,EAAA,GAAA,EAAA,EAkBFvE,EAAA,CAAA,EAAAe,EAAA4J,EAAArF,iBAAA,GAAA,EAAA,EAYEtF,EAAA,CAAA,EAAAC,EAAA,IAAAe,EAAA,GAAA,GAAA,gBAAA,EAAA,GAAA,EAIAhB,EAAA,CAAA,EAAAe,GAAA+K,EAAAnB,EAAA3I,YAAA,KAAA,EAAC,GAAA8J,IAAD,EAAC,GAAA,EAAA,kBD1CDC,EAAYC,GACZC,GAAeC,GACfC,GAAiBC,EACjBC,GAAeC,GAAAC,GAAAC,GAEfC,GACAC,GAAsBC,GAAAC,GAAAC,GACtBC,GAAiBC,GAAAC,GAAAC,GACjBC,GAAcC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACdC,GAAuBC,GACvBC,EAAyB,EAAAC,OAAA,CAAA;6HAAA,CAAA,CAAA,CAAA,SAchB3L,CAA8B,GAAA,wCGlFzC4L,EAAA,CAAA,EACEC,EAAA,EAAA,uBAAA,CAAA,EAGEC,EAAA,cAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,KAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAeF,EAAAG,wBAAAP,CAAA,CAA+B,CAAA,CAAA,EAC/CQ,EAAA,2BAHCC,EAAA,EAAAC,EAAA,WAAAV,CAAA,EAAmB,oBAAA,EAAA,uCAMrBF,EAAA,EAAA,SAAA,CAAA,EAAmFC,EAAA,QAAA,UAAA,CAAAE,EAAAU,CAAA,EAAA,IAAAP,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAQ,mBAAA,CAAoB,CAAA,CAAA,EAC9Gd,EAAA,EAAA,UAAA,EAAUe,EAAA,EAAA,KAAA,EAAGL,EAAA,EACbK,EAAA,CAAA,mBACFL,EAAA,QADEC,EAAA,CAAA,EAAAK,EAAA,IAAAC,EAAA,EAAA,EAAA,wDAAA,EAAA,GAAA,uCAKFjB,EAAA,EAAA,uBAAA,CAAA,EAIEC,EAAA,cAAA,UAAA,CAAAE,EAAAe,CAAA,EAAA,IAAAC,EAAAZ,EAAA,EAAAa,UAAAd,EAAAC,EAAA,EAAA,OAAAC,EAAeF,EAAAe,uBAAAF,CAAA,CAA6B,CAAA,CAAA,EAC7CT,EAAA,8BAHCE,EAAA,WAAAO,CAAA,EAAkB,oBAAA,EAAA,8BAHtBpB,EAAA,CAAA,EACEuB,EAAA,EAAAC,IAAA,EAAA,EAAA,uBAAA,CAAA,8BACGZ,EAAA,EAAAC,EAAA,OAAAO,EAAAK,YAAA,GDrBP,IAoFaC,IApFbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAGAC,KACAC,KAGAC,KACAC,KACAC,KAUAC,KACAC,KAEAC,KAIAC,KAEAC,KASAC,KACAC,+CAuCatB,KAA2C,IAAA,CAAlD,MAAOA,CAA2C,CAqBtDuB,YAC8CC,EAC3BC,EACAC,EACAC,EACAC,EACTC,EACSC,EACTC,EACSC,EAA6B,CARF,KAAAR,OAAAA,EAC3B,KAAAC,cAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,mBAAAA,EACA,KAAAC,OAAAA,EACT,KAAAC,iBAAAA,EACS,KAAAC,qBAAAA,EACT,KAAAC,sBAAAA,EACS,KAAAC,aAAAA,EA7BnB,KAAAC,KAAOC,EAAOC,EAA+B,EAK7C,KAAAC,mBAAqB,IAAIC,GAA+B,CAAA,CAAE,EAC1D,KAAAC,kBAAoB,IAAID,GAA+B,CAAA,CAAE,EAGzD,KAAAE,aAAe,GACf,KAAAC,wBAA0B,IAAIH,GAA0B,CAAA,CAAE,EAC1D,KAAAI,8BAAgC,IAAIJ,GAA0B,CAAA,CAAE,EAChE,KAAAK,uBAAyB,IAAIL,GAAyCM,MAAS,EAE/E,KAAAC,aAAe,IAAIP,GAAwB,EAAE,EAC7C,KAAAQ,sBAAwB,IAAIR,GAA+B,CAAA,CAAE,EAC5C,KAAAS,yBAA2BZ,EAAOa,EAA4B,EAE9D,KAAAC,SAAWd,EAAOe,EAAQ,EAazC,KAAKtB,mBAAmBuB,0BAA0B,KAAKjB,MAAMkB,YAAc,EAAE,EAC7E,KAAKC,UAAY3B,EAAc4B,eAAe,UAAW,CAAC,KAAKpB,KAAKkB,YAAc,EAAE,CAAC,EAAEG,KACrFC,EAAKC,GAAQ,CACX,IAAMC,EAASD,GAAME,aAAa,CAAC,EACnC,OAAIF,GAAME,YAAYC,SAAW,GAAK,CAACF,EAC9B,GAEF,KAAK3B,qBAAqB8B,qBAAqB,UAAWH,GAAU,CAAA,CAAE,CAC/E,CAAC,CAAC,EAGJ,KAAKI,iBAAmB,KAAKlC,mBAAmBmC,uCAAuC,KAAK7B,KAAKkB,YAAc,EAAE,EAEjH,IAAMY,EAAmB,KAAK3B,mBAAmBkB,KAC/CU,EAAU,IACRC,EAAc,CACZ,KAAKJ,iBACL,KAAKrC,OAAO0C,aACZ,KAAK9B,mBACL,KAAKS,sBACL,KAAKO,SAAS,CACf,CAAC,EAEJe,GAAI,IAAK,CACP,KAAK3B,wBAAwB4B,KAAK,CAAA,CAAE,CACtC,CAAC,EACDb,EAAI,CAAC,CAACc,EAAcC,EAAaC,GAAeC,GAASC,EAAQ,IAAK,CACpE,IAAMC,GAAoBH,GAAchB,IAAKoB,KACpC,CACLC,cAAeD,GAAYC,cAC3BC,gBAAiB,kBACjBC,KAAM,CAAA,EACNC,iBAAkBJ,IAErB,EAEKK,GAAe,CAAC,GAAGX,EAAc,GAAGK,EAAiB,EACrDO,GAA+B,CAAC,GAAGP,EAAiB,EAC1D,YAAKpC,kBAAkB8B,KAAKa,EAA4B,EAChCC,GAA+BF,GAAcR,EAAO,EAGzEW,OAAO,CAACR,GAAaS,GAAOC,KAEzB,CAAC,CAACV,GAAYI,kBACdM,GAAMC,UAAWC,IAAMA,GAAEX,gBAAkBD,GAAYC,aAAa,IAAMQ,EAE7E,EACA7B,IAAKoB,IACCA,GAAYI,iBAIJ,CACXH,cAAeD,GAAYC,cAC3BY,kBAAmBf,GACnB1E,aAAc,KAAK2B,aAAa+D,2BAC9Bd,GAAYI,iBACZW,EAAYC,WAAW,GACtBC,YACHC,gBAAiB,KAAKnE,aAAa+D,2BACjCd,GAAYI,iBACZW,EAAYI,cAAc,GACzBF,YACHG,KAAM,WACNjB,MAAOH,GAAYG,MAAQ,CAAA,GAAIK,OAAQa,IAAQA,KAAQ,QAAQ,EAC/DC,GAAItB,GAAYI,iBAAiBmB,aAAe,GAChDC,iBACE,GAAG7B,CAAW,IAAI8B,GAAYC,QAAQC,IAAI,IAAIF,GAAYC,QAAQE,UAAUC,OAAO,GAAGC,QACpF,eACA9B,GAAYI,iBAAiBmB,aAAe,EAAE,GApB3C,CAAA,CAwBV,CACL,CAAC,CAAC,EAGJ,KAAKQ,gBAAkBzC,EAAc,CAACF,EAAkB,KAAKvB,wBAAwBmE,aAAY,CAAE,CAAC,EAAErD,KACpGC,EAAI,CAAC,CAACqD,EAAWC,CAAO,IACfD,EAAUzB,OAAQ2B,IAChB,CAACD,EAAQE,SAASD,GAAQlC,aAAa,CAC/C,CACF,CAAC,EAGJ,IAAMoC,EAAuB,KAAKrF,mBAAmBsF,wCACnD,KAAKhF,KAAKkB,YAAc,EAAE,EAE5B,KAAK+D,eAAiBjD,EAAc,CAClC+C,EACA,KAAKvE,8BAA8BkE,aAAY,EAC/C,KAAKnF,OAAO0C,aACZ,KAAKd,UACL,KAAKV,uBAAuBiE,aAAY,CAAE,CAC3C,EAAErD,KACDC,EAAI,CAAC,CAAC4D,EAAeN,EAASvC,GAAaG,GAAU2C,EAAoB,KACnEA,IACFD,EAAcE,OAAO,EAAG,EAAG,CACzBzC,cAAewC,GAAqBxC,cACpCC,gBAAiB,kBACjBC,KAAM,CAAA,EACNC,iBAAkBqC,GACJ,EAEXD,EACJhC,OAAQ2B,IACA,CAACD,EAAQE,SAASD,GAAQlC,aAAa,CAC/C,EACArB,IAAKuD,KACG,CACLlC,cAAekC,GAAQlC,cACvB0C,iBAAkB7C,GAClB1E,aAAc,KAAK2B,aAAa+D,2BAC9BqB,GAAQ/B,iBACRW,EAAYC,WAAW,GACtBC,YACHC,gBAAiB,KAAKnE,aAAa+D,2BACjCqB,GAAQ/B,iBACRW,EAAYI,cAAc,GACzBF,YACHG,KAAM,WACNjB,MAAOgC,GAAQhC,MAAQ,CAAA,GAAIK,OAAQa,IAAQA,KAAQ,QAAQ,EAC3DC,GAAIa,GAAQ/B,iBAAiBmB,aAAe,GAC5CC,iBACE,GAAG7B,EAAW,IAAI8B,GAAYC,QAAQC,IAAI,IAAIF,GAAYC,QAAQE,UAAUC,OAAO,GAAGC,QACpF,eACAK,GAAQ/B,iBAAiBmB,aAAe,EAAE,GAGjD,EAAE,CAAC,EACP,CAAC,EAGJ,KAAKqB,WAAatD,EAAc,CAAC,KAAKb,UAAW,KAAKd,kBAAmB,KAAKM,YAAY,CAAC,EAAEU,KAC3FC,EAAI,CAAC,CAACiE,EAAiBnD,EAAcoD,EAAU,KAAO,CACpDC,WAAYF,EACZG,cAAe,GACfC,YAAa,GACbC,aAAc,CAAA,EACdC,qBAAsB,CAAA,EACtBC,OAAQ,GACRC,eAAgB,CAAA,EAChBnD,gBAAiB,GACjBR,aAAcA,EACd4D,aAAcR,IACd,CAAC,CAEP,CAEAS,mBAAiB,CACX,KAAK3F,eAGT,KAAKA,aAAe,GACpB,KAAKgF,WACFjE,KACC6E,GAAK,CAAC,EACNhE,GAAI,IAAK,CACP,KAAK5B,aAAe,EACtB,CAAC,EACDyB,EAAW/B,GACS,KAAKL,OAAOwG,KAAKC,GAAgC,CACjEpG,KAAM,CACJqG,cAAe,CAAA,EACfC,WAAY,UACZb,WAAY,KAAK7F,iBAAiB2G,QAChC,oEACA,CACEC,YAAaxG,EAAKyF,WACnB,EAEHrD,aAAcpC,EAAKoC,aACnBQ,gBAAiB,kBACjBoD,aAAchG,EAAKgG,aACnBS,iBAAkB,IAEpB1F,SAAUC,GAAS0F,OAAO,CACxBC,UAAW,CACT,CACEC,QAASC,GACTC,WAAYC,GAAqC,SAAS,GAE5D,CACEH,QAASI,GACTF,WAAYG,GAAoC,SAAS,EAC1D,EAEHC,OAAQ,KAAKnG,SACd,EACF,EACgBoG,YAAW,CAC7B,EACD7F,EAAK8F,GAAiB,CACpB,IAAIxB,EAAewB,GAAexB,cAAgB,CAAA,EAClD,OAAIwB,GAAeC,gBAAkB,KACnCzB,EAAe,IAAI0B,OAEd1B,CACT,CAAC,EACD1C,GAAQ0C,GAAiB,CAAC,CAACA,CAAY,EACvC7D,EAAW6D,GAAuB,CAChC,IAAM2B,EAAc3B,EAAatE,IAAKkG,GAC7BA,EAAIxD,EACZ,EACD,OAAO,KAAKxE,cAAc4B,eAAe,UAAWmG,CAAW,EAAElG,KAC/DC,EAAKC,IAEI,CACLE,WAF2CF,EAAKE,YAAYH,IAAKE,GAAWA,CAAM,GAAK,CAAA,EAGvFiG,QAASlG,EAAKE,YAAYH,IAAKE,IACtB,CACLwC,GAAIxC,GAAQyC,YACZyD,KAAM,KAAK7H,qBAAqB8B,qBAAqB,UAAWH,GAAU,CAAA,CAAE,GAE/E,GAEJ,CAAC,CAEN,CAAC,EACDU,GAAKyF,GAAoC,CACvC,IAAMC,EAAiB,CACrBnG,WAAYkG,EAAgBlG,YAAc,CAAA,EAC1CgG,QAASE,EAAgBF,SAAW,CAAA,GAEtC,KAAK/H,mBAAmBmI,kBAAkBD,CAAc,CAC1D,CAAC,EACDE,GAAS,IACA,KAAKhI,sBAAsBiI,mBAAmB,kBAAmB,CAAC,QAAQ,EAAG,EAAK,CAC1F,CAAC,EAGHC,UAAWjC,GAAkB,CACxBA,EAAekC,UAAUC,MAC3B,KAAKnI,aAAaoI,iBAAiB,uCAAwC,CACzEC,SAAUC,IACVC,2BAA4B,CAC1BC,aAAcxC,EAAekC,UAAUM,aACvCC,WAAYzC,EAAekC,UAAUO,YAExC,EAED,KAAKzI,aAAaoI,iBAAiB,+BAAgC,CACjEC,SAAUC,IACX,EAEH,KAAKlI,mBAAmBgC,KAAK4D,EAAe0C,qBAAqB,CACnE,CAAC,EACL,CAEArL,oBAAkB,CACZ,KAAKkD,eAGT,KAAKA,aAAe,GACpB,KAAKgF,WACFjE,KACC6E,GAAK,CAAC,EACNhE,GAAI,IAAK,CACP,KAAK5B,aAAe,EACtB,CAAC,EACDyB,EAAW/B,GACS,KAAKL,OAAOwG,KAAKC,GAAgC,CACjEpG,KAAM,CACJqG,cAAe,CAAA,EACfC,WAAY,UACZb,WAAY,KAAK7F,iBAAiB2G,QAChC,qEACA,CACEC,YAAaxG,EAAKyF,WACnB,EAEHrD,aAAcpC,EAAKoC,aACnBQ,gBAAiB,kBACjBoD,aAAchG,EAAKgG,aACnBS,iBAAkB,GAClBiC,gBAAiB,IAEnB3H,SAAUC,GAAS0F,OAAO,CACxBC,UAAW,CACT,CACEC,QAASC,GACTC,WAAYC,GAAqC,SAAS,GAE5D,CACEH,QAASI,GACTF,WAAYG,GAAoC,SAAS,EAC1D,EAEHC,OAAQ,KAAKnG,SACd,EACF,EACgBoG,YAAW,CAC7B,EACD7F,EAAK8F,GAAiB,CACpB,IAAIxB,EAAewB,GAAexB,cAAgB,CAAA,EAClD,OAAIwB,GAAeC,gBAAkB,KACnCzB,EAAe,IAAI0B,OAEd1B,CACT,CAAC,EACD1C,GAAQ0C,GAAiB,CAAC,CAACA,CAAY,EACvC7D,EAAW6D,GAAuB,CAChC,IAAM2B,EAAc3B,EAAatE,IAAKkG,GAC7BA,EAAIxD,EACZ,EACD,OAAO,KAAKxE,cAAc4B,eAAe,UAAWmG,CAAW,EAAElG,KAC/DC,EAAKC,IAEI,CACLE,WAF2CF,EAAKE,YAAYH,IAAKE,GAAWA,CAAM,GAAK,CAAA,EAGvFiG,QAASlG,EAAKE,YAAYH,IAAKE,IACtB,CACLwC,GAAIxC,GAAQyC,YACZyD,KAAM,KAAK7H,qBAAqB8B,qBAAqB,UAAWH,GAAU,CAAA,CAAE,GAE/E,GAEJ,CAAC,CAEN,CAAC,EACDU,GAAKyF,GAAoC,CACvC,IAAMC,EAAiB,CACrBnG,WAAYkG,EAAgBlG,YAAc,CAAA,EAC1CgG,QAASE,EAAgBF,SAAW,CAAA,GAEtC,KAAK/H,mBAAmBmI,kBAAkBD,CAAc,CAC1D,CAAC,EACDE,GAAS,IACA,KAAKhI,sBAAsBiI,mBAAmB,kBAAmB,CAAC,QAAQ,EAAG,GAAO,IAAI,CAChG,CAAC,EAGHC,UAAWjC,GAAkB,CACxBA,EAAekC,UAAUC,MAC3B,KAAKnI,aAAaoI,iBAAiB,uCAAwC,CACzEC,SAAUC,IACVC,2BAA4B,CAC1BC,aAAcxC,EAAekC,UAAUM,aACvCC,WAAYzC,EAAekC,UAAUO,YAExC,EAED,KAAKzI,aAAaoI,iBAAiB,+BAAgC,CACjEC,SAAUC,IACX,EAEH,KAAK5H,uBAAuB0B,KAAK4D,EAAe0C,sBAAsB,CAAC,CAAC,CAC1E,CAAC,EACL,CAEA9K,uBAAuBgL,EAA0C,CAC/D,KAAK9H,yBACF+H,UAAU,CACT9E,KAAM,OACN+E,MAAO,KAAKjJ,iBAAiB2G,QAAQ,kCAAkC,EACvEuC,QAAS,KAAKlJ,iBAAiB2G,QAAQ,qCAAsC,CAC3EwC,SAAUJ,EAASpF,kBACnByF,WAAYL,EAAS7K,aACtB,EACDmL,kBAAmB,KAAKrJ,iBAAiB2G,QAAQ,oCAAoC,EACrF2C,iBAAkB,KAAKtJ,iBAAiB2G,QAAQ,gBAAgB,EACjE,EACAlF,KACC6E,GAAK,CAAC,EACNnE,EAAWoH,GACLA,EACK,KAAKzJ,mBAAmB0J,kBAAkBT,EAAShG,aAAa,EAElE0G,EAAG,IAAI,CACf,EACDnH,GAAKiH,GAAW,CACVA,IACF,KAAK5I,wBAAwB4B,KAAK,CAAC,GAAG,KAAK5B,wBAAwB+I,MAAOX,EAAShG,aAAa,CAAC,EACjG,KAAKtC,kBAAkB8B,KACrB,KAAK9B,kBAAkBkJ,SAAQ,EAAGrG,OAAQsE,GAAQA,EAAI7E,gBAAkBgG,EAAShG,aAAa,CAAC,EAGrG,CAAC,CAAC,EAEHqF,UAAU,CACT7F,KAAOgH,GAAW,CACZA,GACF,KAAKpJ,aAAaoI,iBAAiB,qCAAsC,CACvEC,SAAUC,IACX,CAEL,EACAH,MAAOA,IAAK,CACV,KAAKnI,aAAayJ,eAAe,mCAAoC,CACnEpB,SAAUC,IACX,CACH,EACD,CACL,CAEAtL,wBAAwB4L,EAA2C,CACjE,KAAK9H,yBACF+H,UAAU,CACT9E,KAAM,OACN+E,MAAO,KAAKjJ,iBAAiB2G,QAAQ,kCAAkC,EACvEuC,QAAS,KAAKlJ,iBAAiB2G,QAAQ,qCAAsC,CAC3EwC,SAAUJ,EAAStD,iBACnB2D,WAAYL,EAAS7K,aACtB,EACDmL,kBAAmB,KAAKrJ,iBAAiB2G,QAAQ,oCAAoC,EACrF2C,iBAAkB,KAAKtJ,iBAAiB2G,QAAQ,gBAAgB,EACjE,EACAlF,KACC6E,GAAK,CAAC,EACNnE,EAAWoH,GACLA,EACK,KAAKzJ,mBAAmB0J,kBAAkBT,EAAShG,aAAa,EAElE0G,EAAG,IAAI,CACf,EACDnH,GAAKiH,GAAW,CACVA,IACF,KAAK3I,8BAA8B2B,KAAK,CACtC,GAAG,KAAK3B,8BAA8B8I,MACtCX,EAAShG,aAAa,CACvB,EACD,KAAKlC,uBAAuB0B,KAAKzB,MAAS,EAE9C,CAAC,CAAC,EAEHsH,UAAU,CACT7F,KAAOgH,GAAW,CACZA,GACF,KAAKpJ,aAAaoI,iBAAiB,qCAAsC,CACvEC,SAAUC,IACX,CAEL,EACAH,MAAOA,IAAK,CACV,KAAKnI,aAAayJ,eAAe,mCAAoC,CACnEpB,SAAUC,IACX,CACH,EACD,CACL,iDAxdWtK,GAA2C0L,EAsB5CC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAI,EAAA,EAAAJ,EAAAQ,EAAA,CAAA,CAAA,CAAA,+BAtBhBlM,EAA2CmM,UAAA,CAAA,CAAA,4CAAA,CAAA,EAAAC,SAAA,CAAAC,GAZ3C,CACT,CACExD,QAASC,GACTC,WAAYC,GAAqC,SAAS,EAC3D,CACF,CAAA,EAAAsD,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,qBAAA,GAAA,QAAA,UAAA,EAAA,kCAAA,EAAA,OAAA,EAAA,CAAA,EAAA,cAAA,WAAA,mBAAA,EAAA,CAAA,EAAA,WAAA,oBAAA,cAAA,EAAA,MAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WC7EHnO,EAAA,EAAA,sBAAA,CAAA,EAAmC,EAAA,4BAAA,EACL,EAAA,iBAAA,EACTe,EAAA,CAAA,mBAA6DL,EAAA,EAAkB,EAElGV,EAAA,EAAA,KAAA,EAAKe,EAAA,CAAA,mBAA4EL,EAAA,EACjFY,EAAA,EAAA+M,IAAA,EAAA,EAAA,eAAA,CAAA,eAOA/M,EAAA,GAAAgN,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAMAvO,EAAA,GAAA,KAAA,EAAKe,EAAA,EAAA,oBAA2EL,EAAA,EAChFY,EAAA,GAAAkN,IAAA,EAAA,EAAA,eAAA,CAAA,gBAQAxO,EAAA,GAAA,SAAA,CAAA,EAAmFC,EAAA,QAAA,UAAA,CAAAwO,OAAAtO,EAAAuO,CAAA,EAAAlO,EAAS4N,EAAAzE,kBAAA,CAAmB,CAAA,CAAA,EAC7G3J,EAAA,GAAA,UAAA,EAAUe,EAAA,GAAA,KAAA,EAAGL,EAAA,EACbK,EAAA,EAAA,oBACFL,EAAA,EAAS,sBA5BUC,EAAA,CAAA,EAAAgO,EAAA1N,EAAA,EAAA,EAAA,2CAAA,CAAA,EAEdN,EAAA,CAAA,EAAAgO,EAAA1N,EAAA,EAAA,EAAA,0DAAA,CAAA,EACUN,EAAA,CAAA,EAAAC,EAAA,OAAAK,EAAA,EAAA,GAAAmN,EAAAzF,cAAA,CAAA,EAA6B,WAAAiG,CAAA,EAavCjO,EAAA,CAAA,EAAAgO,EAAA1N,EAAA,GAAA,GAAA,yDAAA,CAAA,EAC2BN,EAAA,CAAA,EAAAC,EAAA,UAAAK,EAAA,GAAA,GAAAmN,EAAAjG,eAAA,CAAA,EAU9BxH,EAAA,CAAA,EAAAK,EAAA,IAAAC,EAAA,GAAA,GAAA,uDAAA,EAAA,GAAA,kBD+BA4N,EAAYC,GAAAC,GAAAC,GACZC,GAAiBC,EACjBC,GAAkBC,GAAAC,GAAAC,GAClBC,GACAC,GACAC,GAAaC,GACbC,GAAeC,GACfC,GACAC,GACAC,GACAC,EAAa,EAAAC,OAAA,CAAA;4IAAA;mHAAA,CAAA,CAAA,CAAA,SAcJxO,CAA2C,GAAA,IEpFxD,IAAAyO,GAAAC,EAAA,QEAA,IAwBaC,GAxBbC,GAAAC,EAAA,KACAC,IACAC,KACAC,KACAC,IACAC,KACAC,uBAkBaR,IAAkC,IAAA,CAAzC,MAAOA,CAAkC,CAU7CS,YACmBC,EAC2BC,EAA6B,CADxD,KAAAD,UAAAA,EAC2B,KAAAC,KAAAA,EAX7B,KAAAC,aAAe,KAAKD,KAAKE,aAAaC,MAAQ,CAAA,GAAIC,IAAKC,GAAQA,GAAKC,UAAY,EAAE,EAChF,KAAAC,YAAc,KAAKN,YAAYO,OAC/CH,GAAQA,IAAQ,IAAM,CAACI,GAAcC,SAASL,EAAIM,YAAW,CAAE,CAAC,EAGlD,KAAAC,UAAY,KAAKX,YAAYS,SAASG,EAAW,EAC/C,KAAAC,gBAAkB,KAAKd,KAAKE,aAAaY,iBAAmB,GACrE,KAAAC,WAAuB,CAAA,CAK9B,CAEHC,MAAI,CACF,GAAI,KAAKT,cAAgB,KAAKQ,WAC5B,KAAKhB,WAAWkB,MAAM,CAAEC,QAAS,GAAOC,YAAa,CAAA,CAAE,CAAE,MACpD,CACL,IAAMJ,EAAa,KAAKH,UAAY,CAACC,GAAa,GAAG,KAAKE,UAAU,EAAI,KAAKA,WAC7E,KAAKhB,UAAUkB,MAAM,CAAEC,QAAS,GAAMC,YAAaJ,CAAU,CAAE,CACjE,CACF,CAEAK,QAAM,CACJ,KAAKrB,WAAWkB,MAAM,CAAEC,QAAS,GAAOC,YAAa,CAAA,CAAE,CAAE,CAC3D,CAEAE,YAAYlB,EAAc,CACxB,KAAKY,WAAaZ,GAAQ,CAAA,CAC5B,iDA9BWd,GAAkCiC,EAAAC,EAAA,EAAAD,EAYnCE,EAAe,CAAA,CAAA,CAAA,+BAZdnC,EAAkCoC,UAAA,CAAA,CAAA,kCAAA,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,cAAA,OAAA,iBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICxB/CE,EAAA,EAAA,KAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,oBAAA,EAAoB,EAAA,KAAA,CAAA,EACWC,EAAA,CAAA,EAA0BC,EAAA,EACvDF,EAAA,EAAA,4BAAA,CAAA,EAGEG,EAAA,cAAA,SAAAC,EAAA,CAAA,OAAeL,EAAAV,YAAAe,CAAA,CAAmB,CAAA,EACnCF,EAAA,EAA4B,EAE/BF,EAAA,EAAA,oBAAA,EAAoB,EAAA,SAAA,CAAA,EACSG,EAAA,QAAA,UAAA,CAAA,OAASJ,EAAAX,OAAA,CAAQ,CAAA,EAC1Ca,EAAA,CAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,CAAA,EAAwCG,EAAA,QAAA,UAAA,CAAA,OAASJ,EAAAf,KAAA,CAAM,CAAA,EACrDiB,EAAA,EAAA,oBACFC,EAAA,EAAS,SAhBTG,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,4CAAA,EAAA;CAAA,EAG6BF,EAAA,CAAA,EAAAG,EAAAT,EAAA/B,KAAAyC,eAAA,EAE3BJ,EAAA,EAAAK,EAAA,OAAAX,EAAAxB,WAAA,EAAoB,kBAAAwB,EAAAjB,eAAA,EAOpBuB,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,EAAA,gBAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,cAAA,EAAA,GAAA,kBDIQI,EAAcC,EAAeC,EAAEC,GAAeC,GAAAC,GAAAC,GAAEC,GAAeC,GAAEC,EAA4B,EAAAC,OAAA,CAAA;iIAAA,CAAA,CAAA,CAAA,SAI5FhE,CAAkC,GAAA,wCGlBrCiE,EAAA,EAAA,aAAA,CAAA,EAAuCC,EAAA,CAAA,EAErCC,EAAA,EACFF,EAAA,EAAA,MAAA,CAAA,EAA2B,EAAA,mBAAA,CAAA,EAMvBC,EAAA,CAAA,+BACAD,EAAA,EAAA,UAAA,EACEC,EAAA,CAAA,+BACFC,EAAA,EAAW,EAEbF,EAAA,EAAA,4BAAA,CAAA,EAGEG,EAAA,cAAA,SAAAC,EAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,UAAAC,EAAAF,EAAA,EAAA,OAAAG,EAAeD,EAAAE,aAAAR,EAAAG,EAAAM,eAAA,MAAAT,IAAAU,OAAAV,EAAuC,GAAED,CAAA,CAAS,CAAA,CAAA,EAClEF,EAAA,EAA4B,sCAlBQc,EAAA,EAAAC,EAAAN,EAAAO,uBAAAC,KAAAC,EAAAZ,EAAAM,eAAA,MAAAM,IAAAL,OAAAK,EAAA,EAAA,CAAA,EAMnCJ,EAAA,CAAA,EAAAK,EAAA,QAAAb,EAAAM,WAAA,EAAiC,UAAAH,EAAAW,mBAAA,IAAAd,EAAAM,WAAA,EAGjCE,EAAA,EAAAO,EAAA,IAAAC,GAAA,EAAA,EAAA,wDAAAb,EAAAc,UAAA,EAAA,GAAA,EAEET,EAAA,CAAA,EAAAO,EAAA,IAAAC,GAAA,EAAA,GAAA,+DAAAb,EAAAc,UAAA,EAAA,GAAA,EAIFT,EAAA,CAAA,EAAAK,EAAA,OAAAK,GAAA,GAAAC,GAAA,CAAA,EAAW,kBAAAhB,EAAAiB,KAAAC,eAAA,6BAhBjBC,EAAA,EAAAC,IAAA,GAAA,EAAA,yBAAAC,EAAAxB,EAAAM,YAAA,EAAA,EAAA,GDLR,YA+CamB,GA/CbC,GAAAC,EAAA,KAAAC,IACAC,KAQAC,KACAC,KAEAC,KACAC,KACAC,KACAC,+EAgCaV,IAAsC,IAAA,CAA7C,MAAOA,CAAsC,CAOjDW,YACSC,EACyBjB,EACfkB,EAA6C,CAFvD,KAAAD,UAAAA,EACyB,KAAAjB,KAAAA,EACf,KAAAkB,qBAAAA,EATA,KAAAC,OAASC,EAAO,IAAIC,GAAuB,EAC3C,KAAAC,aAAe,KAAKtB,KAAKuB,gBACzB,KAAA1B,WAAa,KAAKG,KAAKH,WACvB,KAAAH,mBAAqB0B,EAAO,MAAME,aAAa,CAAC,GAAGpC,aAAe,EAAE,EACpE,KAAAI,uBAAyB,IAAI+B,IAO9C,KAAKrB,KAAKuB,gBAAgBC,QAASC,GAAU,CAC3C,KAAKnC,uBAAuBoC,IAC1BD,EAAOvC,aAAe,GACtB,KAAKgC,qBAAqBS,qBAAqB,KAAK9B,WAAY4B,CAAM,CAAC,CAE3E,CAAC,CACH,CAEAxC,YAAY2C,EAAkBC,EAAc,CAC1C,KAAKV,OAAOW,OAAQC,GACXA,EAAKL,IAAIE,EAAUC,CAAI,CAC/B,CACH,CAEAG,sBAAsBJ,EAAgB,CACpC,KAAKlC,mBAAmBgC,IAAIE,CAAQ,CACtC,CAEAK,QAAM,CACJ,KAAKhB,UAAUiB,MAAM,CAAEC,SAAU,GAAOhB,OAAQ,KAAKA,OAAM,CAAE,CAA0C,CACzG,CAEAiB,MAAI,CACF,IAAMC,EAAY,KAAK3C,mBAAkB,EACnCyB,EAAS,KAAKA,OAAM,EACpBmB,EAAWnB,EAAO5B,IAAI8C,CAAS,GAAK,CAAA,EAC1ClB,EAAOO,IAAIW,EAAW,CAAC,UAAW,GAAGC,CAAQ,CAAC,EAC9C,KAAKrB,UAAUiB,MAAM,CAAEC,SAAU,GAAMhB,OAAQA,CAAM,CAA0C,CACjG,iDAxCWd,GAAsCkC,EAAAC,EAAA,EAAAD,EASvCE,EAAe,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,+BATdrC,EAAsCsC,UAAA,CAAA,CAAA,sCAAA,CAAA,EAAAC,MAAA,GAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,OAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,cAAA,OAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IC/CnD5E,EAAA,EAAA,KAAA,CAAA,EAAqBC,EAAA,CAAA,mBAAwDC,EAAA,EAC7EF,EAAA,EAAA,oBAAA,EAAoB,EAAA,iBAAA,EACD,EAAA,kBAAA,CAAA,EACEG,EAAA,SAAA,SAAAC,EAAA,CAAA,OAAUyE,EAAAjB,sBAAAxD,EAAA0E,KAAA,CAAmC,CAAA,EAC5DC,GAAA,EAAAC,IAAA,EAAA,EAAA,KAAA,KAAAC,GAAA,EAwBF/E,EAAA,EAAkB,EACF,EAEpBF,EAAA,EAAA,oBAAA,EAAoB,EAAA,SAAA,CAAA,EACSG,EAAA,QAAA,UAAA,CAAA,OAAS0E,EAAAhB,OAAA,CAAQ,CAAA,EAC1C5D,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,CAAA,EAAwCG,EAAA,QAAA,UAAA,CAAA,OAAS0E,EAAAb,KAAA,CAAM,CAAA,EACrD/D,EAAA,EAAA,oBACFC,EAAA,EAAS,SArCUc,EAAA,EAAAC,EAAAiE,EAAA,EAAA,EAAA,sCAAA,CAAA,EAIflE,EAAA,CAAA,EAAAmE,GAAAN,EAAA3B,YAAA,EA6BFlC,EAAA,CAAA,EAAAO,EAAA,IAAA2D,EAAA,GAAA,EAAA,gBAAA,EAAA,GAAA,EAGAlE,EAAA,CAAA,EAAAO,EAAA,IAAA2D,EAAA,GAAA,EAAA,aAAA,EAAA,GAAA,kBDDAE,GACAC,GACAC,GAAqBC,GAAAC,GAAAC,GACrBC,GACAC,GACAC,GAAiBC,EACjBC,GACAC,GAAcC,GAAAC,GACdC,GACAC,EAAyB,EAAAC,OAAA,CAAA;qIAAA,CAAA,CAAA,CAAA,SAGhBnE,CAAsC,GAAA,IEpCnD,IAAaoE,GAAbC,GAAAC,EAAA,KAAaF,GAAP,KAAsB,CAA5BG,aAAA,CACE,KAAAC,aAAmD,CAAA,CA6CrD,CA3CEC,mBAAmBC,EAAkD,CACnE,KAAKF,aAAeG,MAAA,GAAK,KAAKH,cAAiBE,EACjD,CAEAE,oBAAkB,CAChB,IAAMC,EAAkB,CAAA,EACxB,QAAWC,KAAcC,OAAOC,OAAO,KAAKR,YAAY,EAClDM,EAAWG,mBAAqBH,EAAWI,WAAa,WAC1DL,EAAgBM,KAAKL,EAAWG,iBAAiB,EAGrD,OAAOJ,CACT,CAEAO,eAAa,CACX,IAAMC,EAAa,CAAA,EACnB,QAAWP,KAAcC,OAAOC,OAAO,KAAKR,YAAY,EAClDM,EAAWQ,cAAgBR,EAAWI,WAAa,WACrDG,EAAWF,KAAKL,EAAWQ,YAAY,EAG3C,OAAOD,CACT,CAEAE,2BAAyB,CACvB,IAAMV,EAAkB,CAAA,EACxB,QAAWC,KAAcC,OAAOC,OAAO,KAAKR,YAAY,EAClDM,EAAWG,mBAAqBH,EAAWI,WAAa,WAC1DL,EAAgBM,KAAKL,EAAWG,iBAAiB,EAGrD,OAAOJ,CACT,CAEAW,sBAAoB,CAClB,IAAMH,EAAa,CAAA,EACnB,QAAWP,KAAcC,OAAOC,OAAO,KAAKR,YAAY,EAClDM,EAAWQ,cAAgBR,EAAWI,WAAa,WACrDG,EAAWF,KAAKL,EAAWQ,YAAY,EAG3C,OAAOD,CACT,KCxDF,IAaaI,GAbbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,SAGaZ,IAAiB,IAAA,CAAxB,MAAOA,CAAiB,CAD9Ba,aAAA,CAEmB,KAAAC,eAAiBC,EAAOC,EAAc,EACtC,KAAAC,aAAeF,EAAOG,EAAe,EACrC,KAAAC,gBAAkBJ,EAAOK,EAAkB,EAC3C,KAAAC,6BAA+BN,EAAOO,EAA4B,EAClE,KAAAC,uCAAyCR,EAAOS,EAAsC,EACtF,KAAAC,sBAAwBV,EAAOW,GAAyB,CAAEC,SAAU,EAAI,CAAE,EAEnF,KAAAC,YAAc,GAId,KAAAC,aAAeC,EAAO,EAAK,EACnC,KAAAC,cAAgBC,GAAa,KAAKH,YAAY,EAItC,KAAAI,eAAiB,KAAKR,uBAAuBQ,gBAAkBC,EAAG,EAAE,EAR5EC,YAAYC,EAAgB,CAC1B,KAAKR,YAAcQ,CACrB,CAGAC,cAAcC,EAAmB,CAC/B,KAAKT,aAAaU,IAAID,CAAU,CAClC,CAGAE,eAAeC,EAAwBC,EAA6B,CAC7D,KAAKb,aAAY,GAItB,KAAKI,eACFU,KACCC,EAAWC,GACF,KAAK/B,eACTgC,kCAAkCL,EAAY,KAAKb,YAAac,EAAQG,CAAa,EACrFF,KAAKI,GAAK,CAAC,CAAC,CAChB,EACDC,GACE,KAAK3B,6BAA6B4B,2BAA2BR,EAAY,wBAAwB,EACjG,KAAKR,cAAc,CACpB,EAEFiB,UAAU,CACTC,KAAMA,CAAC,CAACC,EAAcC,EAASR,CAAa,IAAK,CAC3CO,IAAiB,OAGrB,KAAK7B,uCAAuC+B,oBAAoBb,EAAYW,EAAcP,CAAa,EACvG,KAAK1B,gBAAgBoC,WAAWd,EAAY,mBAAmB,EAC/D,KAAKxB,aAAauC,iBAAiBH,EAAS,CAC1CI,SAAUC,IACX,EACH,EACAC,MAAQA,GAAS,CACf,KAAKxC,gBAAgBoC,WAAWd,EAAY,iBAAiB,EAC7D,KAAKmB,cAAcD,EAAO,6BAA6B,CACzD,EACD,CACL,CAEQC,cAAcD,EAAmBE,EAAsB,CAC7D,IAAIC,EAAyB,KACzBH,GAASA,EAAMG,UACjBA,EAAUH,EAAMG,SAElB,KAAK7C,aAAa8C,eAAeD,GAAWD,EAAgB,CAC1DJ,SAAUC,IACX,CACH,iDA9DW1D,EAAiB,CAAA,kCAAjBA,EAAiBgE,QAAjBhE,EAAiBiE,SAAA,CAAA,CAAA,SAAjBjE,CAAiB,GAAA,ICb9B,IAmBakE,GAnBbC,GAAAC,EAAA,SAmBaF,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CAGpCG,YAAoBC,EAAkC,CAAlC,KAAAA,iBAAAA,EAFX,KAAAC,QAA2C,IAEK,CAEzDC,UAAQ,CACN,KAAKD,SAASE,OAAO,KAAKH,gBAAgB,CAC5C,CAEAI,aAAW,CACT,KAAKH,SAASE,OAAO,KAAKH,gBAAgB,CAC5C,CAEAK,aAAW,CACT,KAAKJ,QAAU,IACjB,iDAfWL,GAAyBU,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAzBX,EAAyBY,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,OAAA,CAAAR,QAAA,SAAA,EAAAS,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GALzBE,GAAA,CAAA,+CAKArB,CAAyB,GAAA,ICnBtC,IAMasB,GANbC,GAAAC,EAAA,KAEAC,KACAC,SAGaJ,IAAmB,IAAA,CAA1B,MAAOA,CAAmB,CAC9BK,gBACEC,EACAC,EACAC,EAA2B,CAE3B,IAAMC,EAAW,CAAA,EACjB,QAAWC,KAAeH,EACxBE,EAASE,KAAKD,EAAYJ,CAAO,CAAC,EAEpC,OAAOM,GAASH,CAAQ,EAAEI,KACxBC,GAAe,IAAI,EACnBC,EAAKC,GAAW,CACd,IAAIC,EAAqC,CAAA,EACzC,GAAI,CAACD,EACH,OAAO,KAGT,QAAWE,KAAOF,EAChBC,EAAmBE,MAAA,GAAKF,GAAqBC,GAG/C,QAAWR,KAAeF,EAAc,CACtC,IAAMY,EAASV,EAAYJ,CAAO,EAC9Bc,IACFH,EAAmBE,MAAA,GAAKF,GAAqBG,GAEjD,CACA,OAAOH,CACT,CAAC,CAAC,CAEN,iDA/BWjB,EAAmB,CAAA,kCAAnBA,EAAmBqB,QAAnBrB,EAAmBsB,SAAA,CAAA,CAAA,SAAnBtB,CAAmB,GAAA,+BC8DxBuB,EAAA,CAAA,EACEC,EAAA,CAAA,uBAAAC,EAAA,EAAAC,EAAA,IAAAC,EAAAC,QAAAC,MAAA,GAAA,8BAPNC,EAAA,EAAA,MAAA,CAAA,EAAsE,EAAA,MAAA,CAAA,EAElEN,EAAA,CAAA,mBACFO,EAAA,EACAD,EAAA,EAAA,MAAA,CAAA,EAEEE,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EAGFF,EAAA,EAAM,kBAPJN,EAAA,CAAA,EAAAC,EAAA,IAAAQ,EAAA,EAAA,EAAAP,EAAAQ,KAAA,EAAA,GAAA,EAIeV,EAAA,CAAA,EAAAW,EAAA,OAAAT,EAAAC,QAAAC,KAAA,8BAOfC,EAAA,EAAA,YAAA,EAA0BN,EAAA,CAAA,mBAAuBO,EAAA,mBAAvBN,EAAA,EAAAY,EAAAH,EAAA,EAAA,EAAAP,EAAAQ,KAAA,CAAA,uCAD5BL,EAAA,EAAA,iBAAA,EACEE,EAAA,EAAAM,IAAA,EAAA,EAAA,aAAA,CAAA,EACAR,EAAA,EAAA,aAAA,CAAA,mBAGES,EAAA,OAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAd,EAAAe,EAAA,EAAA,OAAAC,EAAQhB,EAAAiB,UAAA,CAAW,CAAA,CAAA,EAEnBd,EAAA,EAAA,aAAA,CAAA,EAA2BN,EAAA,CAAA,mBAAkDO,EAAA,EAC7ED,EAAA,EAAA,aAAA,CAAA,EAA4BN,EAAA,CAAA,mBAAmDO,EAAA,EAAa,EACjF,oBARAN,EAAA,EAAAW,EAAA,OAAAT,EAAAQ,KAAA,EAEXV,EAAA,EAAAW,EAAA,cAAAT,EAAAC,OAAA,EAAuB,cAAAiB,GAAA,EAAA,EAAA,oCAAAC,GAAA,GAAAC,IAAApB,EAAAQ,OAAA,KAAA,KAAAR,EAAAQ,MAAAa,YAAA,CAAA,CAAA,CAAA,EAIXvB,EAAA,CAAA,EAAAW,EAAA,QAAA,EAAA,EAAeX,EAAA,EAAAY,EAAAH,EAAA,EAAA,GAAA,gCAAA,CAAA,EACfT,EAAA,CAAA,EAAAW,EAAA,QAAA,EAAA,EAAgBX,EAAA,EAAAY,EAAAH,EAAA,EAAA,GAAA,iCAAA,CAAA,GAlFtC,QAaae,GAgFAC,IA7FbC,GAAAC,EAAA,KAAAC,KAEAC,IACAC,IACAC,KACAC,KAEAC,KACAC,KAEAC,sEAGaX,GAAP,KAA0B,CAI9BY,YACSC,EACAC,EACAC,EACA7B,EACAN,EACAoC,EACAC,EAAW,GACXC,EAA8B,IAAIC,GAAiB,CAPnD,KAAAN,WAAAA,EACA,KAAAC,QAAAA,EACA,KAAAC,KAAAA,EACA,KAAA7B,MAAAA,EACA,KAAAN,MAAAA,EACA,KAAAoC,YAAAA,EACA,KAAAC,SAAAA,EACA,KAAAC,WAAAA,EAXD,KAAAE,UAA2D,KAajE,KAAKC,YAAc,IAAIC,GAAmB1C,CAAK,CACjD,CAEA2C,cAAcL,EAA2B,CACvC,KAAKA,WAAaA,EAClB,KAAKG,YAAYG,cAAcN,EAAWO,cAAa,CAAE,EACzD,KAAKJ,YAAYK,mBAAmBR,EAAWS,mBAAkB,CAAE,CACrE,CAEAC,YAAU,CACR,MAAO,CACLd,QAAS,KAAKA,QACde,aAAc,KAAKR,YAAYzC,MAEnC,CAEAkD,iBAAe,CACb,OAAO,KAAKT,aAAaU,KAC3B,CAEAC,OAAOC,EAAkC,CACvCA,EAAiBC,MAAK,EACtB,IAAMd,EAAYa,EAAiBE,gBAA0ClC,GAAwB,EACrGmB,EAAUgB,SAAStB,QAAU,KAAKA,QAClCM,EAAUgB,SAASvB,WAAa,KAAKA,WACrCO,EAAUgB,SAASzD,QAAU,KAAK0C,YAClCD,EAAUgB,SAASlD,MAAQ,KAAKA,MAChCkC,EAAUgB,SAASpB,YAAc,KAAKA,YACtCI,EAAUgB,SAASnB,SAAW,KAAKA,SACnC,KAAKG,UAAYA,CACnB,GAoCWnB,KAAwB,IAAA,CAA/B,MAAOA,CAAwB,CAQnCW,YAA6ByB,EAAoC,CAApC,KAAAA,kBAAAA,CAAuC,CAEpE1C,WAAS,CACP,KAAK0C,kBAAkBC,eAAe,KAAKzB,WAAY,CACrD,CACEC,QAAS,KAAKA,QACde,aAAc,KAAKlD,QAAQC,MAC5B,CACF,CACH,iDAjBWqB,GAAwBsC,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAxBvC,EAAwBwC,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,GALxB,CAACC,EAAmB,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,YAAA,EAAA,EAAA,CAAA,QAAA,0BAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,cAAA,aAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,GA1B9BlE,EAAA,EAAAoE,IAAA,EAAA,EAAA,MAAA,CAAA,EAAsE,EAAAC,IAAA,GAAA,GAAA,cAAA,KAAA,EAAAC,EAAA,kBAAhClE,EAAA,OAAA+D,EAAAjC,QAAA,EAAgB,WAAAqC,CAAA,kBAyB9CC,EAAYC,GAAEC,GAAgBC,GAAmBC,GAAAC,GAAEC,EAAeC,EAAEC,GAAqBC,GAAAC,GAAEC,GAAeC,GAAAC,EAAA,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAMzGtE,CAAwB,GAAA,IC7E/B,SAAUuE,IAAkB,CAChC,OAAOC,KAAKC,OAAM,EAAGC,SAAS,EAAE,EAAEC,UAAU,CAAC,CAC/C,CAlBA,IAAAC,GAAAC,EAAA,QCAA,IAOMC,IAkBAC,IAwBOC,GAjDbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KAGAC,SAEMR,IACJA,CAACS,EAAgEC,IAAoB,IAC5ED,EAAmBE,KACxBC,GAAK,CAAC,EACNC,EAAKC,GAC6BA,EAAiBC,OAAOC,KACrDC,GAAMA,EAAEC,SAAW,uBAAyBD,EAAEE,SAASC,iBAAiBV,UAAYA,CAAO,EAKvF,CACLW,oBAAqB,IAHd,IAKV,CAAC,EAIFpB,IACJA,CAACQ,EAAgEC,IAAoB,IAC5ED,EAAmBE,KACxBC,GAAK,CAAC,EACNC,EAAKC,GAAoB,CACvB,IAAMQ,EAA0BR,EAAiBC,OAAOC,KACrDC,GAAMA,EAAEC,SAAW,sBAAwBD,EAAEE,SAASC,iBAAiBV,UAAYA,CAAO,EAE7F,OAAKY,IAGqBA,EAAwBH,SAASC,iBAAiBG,sBACxCC,OAAS,EAEpC,CACLC,mBAAoB,IANf,IAUX,CAAC,CAAC,EAKKvB,IAAuB,IAAA,CAA9B,MAAOA,CAAuB,CADpCwB,aAAA,CAEmB,KAAAC,YAAcC,EAAOC,EAAc,EAG5C,KAAAC,cAAqCC,EAAG,EAAK,EAC7C,KAAAC,iBAA+C,CAAA,EAGvD,KAAAC,yBACE,IAAIC,GAAuD,IAAI,EAEjEC,WACEC,EACAC,EACAL,EACAF,EAA8B,CAE9B,KAAKM,WAAaA,EAClB,KAAKN,cAAgBA,EAAcnB,KAAKE,EAAKyB,GAAM,CAAC,CAACA,CAAC,CAAC,EACvD,KAAKN,iBAAmBA,EACxB,KAAKvB,mBAAqB,KAAKqB,cAAcnB,KAC3C4B,GAAa,GAAG,EAChBC,EAAU,IAAK,CACb,IAAMC,EAAS,KAAKT,iBAAiBnB,IAAK6B,GAAMA,EAAEC,WAAU,CAAE,EAC9D,OAAO,KAAKhB,YAAYiB,mBAAmB,KAAKR,WAAY,CAC1DS,YAAaR,EACbI,OAAAA,EACD,CACH,CAAC,EACDK,GAAY,CAAEC,WAAY,EAAGC,SAAU,EAAI,CAAE,EAI7CC,GAAKX,GAAM,KAAKL,yBAAyBiB,KAAKZ,CAAC,CAAC,CAAC,CAErD,CAEAa,qCAAqCzC,EAAe,CAClD,MAAO,CACLW,oBAAqB,CACnB+B,SAAU,UACVC,QAAS,mDACTC,aAAc,KACdC,kBAAmBvD,IAA6B,KAAKS,mBAAoBC,CAAO,GAElFe,mBAAoB,CAClB2B,SAAU,UACVC,QAAS,kDACTC,aAAc,KACdC,kBAAmBtD,IAA6B,KAAKQ,mBAAoBC,CAAO,GAGtF,iDApDWR,EAAuB,CAAA,kCAAvBA,EAAuBsD,QAAvBtD,EAAuBuD,SAAA,CAAA,CAAA,SAAvBvD,CAAuB,GAAA,+BEhDlCwD,EAAA,CAAA,EACEC,EAAA,EAAA,uBAAA,CAAA,yBAAsBC,EAAA,EAAAC,EAAA,WAAAC,CAAA,EAAqB,kBAAA,EAAA,0BAG3CH,EAAA,EAAA,uBAAA,CAAA,OAAsBE,EAAA,SAAA,EAAA,6BAL1BE,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,eAGAD,EAAA,EAAAE,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAGFC,EAAA,yBANiBR,EAAA,EAAAC,EAAA,OAAAQ,EAAA,EAAA,EAAAC,EAAAC,eAAA,CAAA,EAA8B,WAAAC,CAAA,8BAO/CT,EAAA,EAAA,KAAA,EAAkE,EAAA,YAAA,EAE9DU,EAAA,CAAA,+BAIFL,EAAA,EAAa,kBAJXR,EAAA,CAAA,EAAAc,EAAA,IAAAC,GAAA,EAAA,EAAA,oEAAAL,EAAAM,WAAAC,GAAA,EAAAC,IAAAR,EAAAS,MAAAC,YAAA,CAAA,CAAA,EAAA,GAAA,GDVJ,QAyCaC,GAzCbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,IAEAC,KACAC,KAEAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KAKAC,8DAoBajB,IAAoC,IAAA,CAA3C,MAAOA,CAAoC,CAoB/CkB,aAAW,CACT,KAAKC,mBAAmBC,KAAK,EAAK,EAClC,KAAKC,aAAaC,KAAK,EAAI,CAC7B,CAgEAC,YAC8CC,EAC3BC,EACAC,EACAC,EACAC,EACAC,EAAyB,CALE,KAAAL,OAAAA,EAC3B,KAAAC,iBAAAA,EACA,KAAAC,cAAAA,EACA,KAAAC,gBAAAA,EACA,KAAAC,qBAAAA,EACA,KAAAC,SAAAA,EAxFT,KAAAR,aAAe,IAAIS,GAAsB,EAAI,EAEvD,KAAAX,mBAAqB,IAAIY,GAAyB,EAAK,EAC/C,KAAAC,2BAA6B,KAAKP,iBAAiBQ,yBAAyBC,KAClFC,EAAKC,GAAc,CACjB,IAAMC,GAA0BD,GAAYE,QAAU,CAAA,GAAIC,OACvDC,GAAMA,EAAEC,SAASC,iBAAiBC,UAAY,KAAKA,OAAO,EAE7D,OAAIN,EAAuBO,OAAS,EAC3BP,EAAuB,CAAC,EAE1B,IACT,CAAC,CAAC,EAQI,KAAAQ,WAAa,KAAKb,2BAA2BE,KACnDC,EAAKW,GAAqB,CACxB,IAAMC,EAAoBD,GAAmBL,SAASC,iBAAiBM,qBACvE,OAAKD,GAAmBH,OAGjBG,EAAkB,CAAC,EAFjB,EAGX,CAAC,EACDE,EAAWC,GACJA,EAGE,KAAKxB,cAAcyB,eAAe,KAAKxD,WAAY,CAACuD,CAAQ,CAAC,EAF3D,CAAA,CAGV,EACDf,EAAKiB,GAAcA,EAASC,WAAaD,EAASC,WAAW,CAAC,EAAI,CAAEC,OAAQ,CAAA,CAAE,CAAG,EACjFC,GAAYC,GACNA,EAAMC,SAAW,KACnB,KAAKtC,mBAAmBC,KAAK,EAAI,EACjC,KAAKC,aAAaC,KAAK,EAAK,EACrBoC,EAAG,CAAA,CAAwB,IAElCC,QAAQH,MAAMA,CAAK,EACnB,KAAK3B,SAAS+B,eAAe,wBAAwB,EAC9CF,EAAG,CAAA,CAAwB,EAErC,CAAC,EAEJ,KAAApE,gBAA+C,KAAKuD,WAAWX,KAC7De,EAAWY,GACF,KAAKC,gBAAgB5B,KAC1BC,EAAK4B,GAAQ,CACX,OAAQ,KAAKpE,WAAU,CACrB,IAAK,UACH,OAAO,KAAKqE,oBAAoBH,EAAWE,CAAI,EACjD,IAAK,UACH,OAAO,KAAKE,oBAAoBJ,EAAWE,CAAI,EACjD,QACEJ,eAAQO,KAAK,wDAAwD,EAC9D,IACX,CACF,CAAC,CAAC,CAEL,CAAC,EAEJ,KAAAJ,gBAAsC,KAAKjB,WAAWX,KACpDiC,GAAe,KAAK3C,OAAO4C,YAAY,EACvCjC,EAAI,CAAC,CAAC,CAAEkC,YAAAA,CAAW,EAAIC,CAAW,IAAK,CACrC,IAAIC,EAAe,GACnB,OAAQ,KAAK5E,WAAU,CACrB,IAAK,UACH4E,OAAAA,EAAe,GAAGD,CAAW,IAAIE,GAAYC,QAAQC,IAAI,IAAIF,GAAYC,QAAQE,UAAUC,OAAO,GAC3FL,EAAaM,QAAQ,eAAgBR,GAAe,EAAE,EAC/D,IAAK,UACHE,OAAAA,EAAe,GAAGD,CAAW,IAAIE,GAAYM,QAAQJ,IAAI,IAAIF,GAAYM,QAAQH,UAAUC,OAAO,GAC3FL,EAAaM,QAAQ,eAAgBR,GAAe,EAAE,EAC/D,QACEV,eAAQO,KAAK,wDAAwD,EAC9D,EACX,CACF,CAAC,CAAC,CAUD,CAEKF,oBAAoBH,EAA+BkB,EAAwB,CACjF,IAAMC,EAAQ,KAAKrD,gBAAgBsD,WAAWC,GAAoBC,KAAK,EAEjEC,EADYvB,EAAUP,QAAQ+B,KAAMC,GAAMA,EAAE3C,UAAYqC,CAAK,GACrCO,aAAe,GAE7C,MAAO,CACLC,KAAM,OACNC,SAAU,KAAK7D,qBAAqB8D,qBAAqB,KAAK/F,WAAYkE,CAAS,EACnFmB,MAAOI,EACPL,iBAAkBA,EAEtB,CAEQd,oBAAoBJ,EAA+BkB,EAAwB,CAIjF,MAAO,CACLS,KAAM,WACNG,aALsB9B,EAAUP,QAAQ+B,KAAMC,GAAMA,EAAE3C,UAAYiD,EAAYC,WAAW,GACjDN,aAAe,GAKvDR,iBAAkBA,EAEtB,iDAtHW/E,GAAoC8F,EAwFrCC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,CAAA,CAAA,CAAA,+BAxFhBpG,EAAoCqG,UAAA,CAAA,CAAA,gCAAA,CAAA,EAAAC,OAAA,CAAAC,YAAA,cAAA5G,WAAA,aAAAgD,QAAA,UAAA7C,MAAA,OAAA,EAAA0G,QAAA,CAAAnF,aAAA,cAAA,EAAAoF,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,QAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,WAAA,iBAAA,EAAA,CAAA,EAAA,QAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICzCjDhI,EAAA,EAAAkI,IAAA,EAAA,EAAA,MAAA,CAAA,eAQAlI,EAAA,EAAAmI,IAAA,EAAA,EAAA,MAAA,CAAA,sBARMtI,EAAA,OAAAoI,EAAAT,aAAAnH,EAAA,EAAA,EAAA4H,EAAA7F,kBAAA,IAAA,EAAA,EAQAxC,EAAA,CAAA,EAAAC,EAAA,OAAAoI,EAAAT,aAAAnH,EAAA,EAAA,EAAA4H,EAAA7F,kBAAA,IAAA,EAAA,kBDqBFgG,EAAYC,GAAAC,GACZC,GACAC,GACAC,EACAC,GAAqBC,GACrBC,GACAC,GAA0BC,GAC1BC,GACAC,GACAC,EAAwB,EAAAC,OAAA,CAAA;+HAAA,CAAA,CAAA,CAAA,SAGfjI,CAAoC,GAAA,+BGxC/CkI,EAAA,EAAA,YAAA,EAKEC,EAAA,CAAA,+BAGFC,EAAA,kCAHEC,EAAA,EAAAC,EAAA,IAAAC,GAAA,EAAA,EAAAC,EAAAC,WAAAC,aAAAC,CAAA,EAAAC,QAAAJ,EAAAK,WAAAC,GAAA,EAAAC,GAAAP,EAAAQ,MAAAC,YAAA,CAAA,CAAA,EAAA,GAAA,uCANJC,EAAA,CAAA,EACEC,EAAA,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,eASAlB,EAAA,EAAA,iCAAA,CAAA,EAKEmB,EAAA,eAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAhB,EAAAiB,EAAA,EAAA,OAAAC,EAAgBlB,EAAAmB,UAAAL,CAAA,CAAiB,CAAA,CAAA,EAClClB,EAAA,sCAdEC,EAAA,EAAAuB,EAAA,OAAApB,EAAAqB,QAAAC,SAAAnB,CAAA,GAAAH,EAAAC,WAAAC,aAAAC,CAAA,EAAAoB,WAAA,WAAAC,EAAA,EAAA,EAAAxB,EAAAyB,WAAA,CAAA,EASD5B,EAAA,CAAA,EAAAuB,EAAA,cAAApB,EAAAqB,QAAAC,SAAAnB,CAAA,GAAAA,IAAA,qBAAA,EAAkF,aAAAH,EAAAK,UAAA,EACzD,UAAAL,EAAA0B,OAAA,EACN,QAAA1B,EAAAQ,KAAA,8BAMrBd,EAAA,EAAA,OAAA,CAAA,EACEC,EAAA,CAAA,+BAGFC,EAAA,6BAHEC,EAAA,EAAAC,EAAA,IAAAC,GAAA,EAAA,EAAAC,EAAAC,WAAAC,aAAAyB,CAAA,EAAAvB,QAAAJ,EAAAK,WAAAC,GAAA,EAAAC,GAAAP,EAAAQ,MAAAC,YAAA,CAAA,CAAA,EAAA,GAAA,8BAFJf,EAAA,EAAA,WAAA,EACEiB,EAAA,EAAAiB,IAAA,EAAA,EAAA,OAAA,CAAA,EAKFhC,EAAA,kBALSC,EAAA,EAAAuB,EAAA,OAAApB,EAAAqB,QAAAQ,SAAA,OAAA,GDnBT,OA2BaC,GA3BbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,IACAC,KACAC,KACAC,KAGAC,KAEAC,8CAgBaV,IAAgC,IAAA,CAAvC,MAAOA,CAAgC,CAY3CW,YAAoBC,EAAmC,CAAnC,KAAAA,eAAAA,EALpB,KAAAC,WAAuB,CAAA,EAGvB,KAAAlB,YAAc,IAAImB,GAAyB,EAAK,CAEU,CAE1DC,UAAQ,CACN,KAAKpB,YAAYqB,KAAK,EAAI,EAC1B,KAAKH,WAAaI,OAAOC,KAAK,KAAK/C,WAAWC,YAAY,EAC1D,KAAK+C,aAAe,KAAK5B,QAAQ6B,aAAaC,KAC5CC,EAAU,IACD,KAAKV,eAAeW,gBACzB,KAAKhC,QACL,KAAKpB,WAAWqD,0BAAyB,EACzC,KAAKrD,WAAWsD,qBAAoB,CAAE,CAEzC,EACDC,EAAKC,GACCA,IAAa,MAAQV,OAAOC,KAAKS,CAAQ,EAAEC,OAAS,EAC/CX,OAAOC,KAAKS,CAAQ,EAAE,CAAC,EAEzB,EACR,CAAC,CAEN,CAEAtC,UAAUwC,EAAY,CACpB,KAAKlC,YAAYqB,KAAKa,CAAG,CAC3B,iDApCW7B,GAAgC8B,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAhC/B,EAAgCgC,UAAA,CAAA,CAAA,6BAAA,CAAA,EAAAC,OAAA,CAAA1D,WAAA,aAAAqB,QAAA,UAAAL,QAAA,UAAApB,WAAA,aAAAO,MAAA,OAAA,EAAAwD,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,cAAA,aAAA,UAAA,OAAA,EAAA,CAAA,QAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,kBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IC3B7CzD,EAAA,EAAA2D,IAAA,EAAA,EAAA,eAAA,CAAA,EAAmD,EAAAC,IAAA,EAAA,EAAA,YAAA,CAAA,sBAAfnD,EAAA,UAAAiD,EAAA1B,UAAA,EAkBxB9C,EAAA,EAAAuB,EAAA,OAAAI,EAAA,EAAA,EAAA6C,EAAApB,YAAA,CAAA,kBDARuB,EAAYC,GAAAC,GAAAC,GACZC,GACAC,GACAC,EACAC,GAAqBC,GAAAC,GACrBC,GACAC,EAAoC,EAAAC,OAAA,CAAA;4HAAA,CAAA,CAAA,CAAA,SAG3BtD,CAAgC,GAAA,IE3B7C,IAWauD,GAXbC,GAAAC,EAAA,KACAC,KACAC,KAMAC,6BAGaL,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CAqCpCM,YACmBC,EACAC,EACAC,EACAC,EAC2BC,EAAuB,CAJlD,KAAAJ,iBAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,cAAAA,EACA,KAAAC,eAAAA,EAC2B,KAAAC,OAAAA,EAzCtC,KAAAC,aAAmC,KAAKJ,MAAMK,OAAOC,KAC3DC,EAAKF,GAAmBA,EAAO,WAAc,EAC7CG,GAAoB,EACpBC,GAAY,CAAC,CAAC,EAER,KAAAC,WAAoD,KAAKN,aAAaE,KAC5EK,EACGC,GACC,KAAKb,iBAAiBc,eAAe,UAAW,CAACD,CAAW,CAAC,CAA0C,EAE3GH,GAAY,CAAC,CAAC,EAGR,KAAAK,gBAAwC,KAAKZ,eAAea,aAAY,EAAGT,KACjFK,EAAWK,GACF,KAAKf,cAAcgB,6BAA6B,CACrDD,UAAWA,EACXE,cAAe,CACbC,SAAU,IACVC,OAAQ,IAEX,CACF,EACDb,EAAKc,GACC,CAACA,GAAY,CAACA,EAASC,aAAqB,CAAA,EACzCD,EAASC,aAAaf,IAAKgB,GAAUA,EAAMC,OAAO,CAC1D,CAAC,EAGI,KAAAC,cAAgBC,EAAc,CAAC,KAAKvB,OAAOwB,SAASC,UAAYC,EAAG,CAAA,CAAE,EAAG,KAAKf,eAAe,CAAC,EAAER,KACrGC,EAAI,CAAC,CAACuB,EAASC,CAAc,IACpB,CAAC,GAAGD,EAAS,GAAGC,CAAc,CACtC,EACDtB,GAAY,CAAC,CAAC,CASb,CAEHuB,cAAY,CACV,OAAO,KAAK7B,OAAOwB,SAASM,aAAa,KAAKvB,UAAU,GAAKmB,EAAG,EAAE,CACpE,CAEAK,YAAU,CACR,OAAO,KAAKF,aAAY,EAAG1B,KAAKC,EAAK4B,GAAO,CAAC,CAACA,CAAE,CAAC,CACnD,CAEAC,iBAAe,CACb,OAAO,KAAKX,aACd,iDAvDWjC,GAAyB6C,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EA0C1BK,EAAiB,CAAA,CAAA,CAAA,kCA1ChBlD,EAAyBmD,QAAzBnD,EAAyBoD,SAAA,CAAA,CAAA,SAAzBpD,CAAyB,GAAA,wCEVpCqD,EAAA,EAAA,MAAA,CAAA,EAA0CC,EAAA,YAAA,UAAA,CAAAC,EAAAC,CAAA,EAAAC,EAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAaF,EAAAG,KAAA,CAAc,CAAA,CAAA,EACnER,EAAA,EAAA,MAAA,CAAA,EAAoC,EAAA,WAAA,CAAA,EACHS,EAAA,EAAA,UAAA,EAAQC,EAAA,EAAW,EAC9C,yBAHUC,EAAA,cAAAN,CAAA,GDDpB,IAiBaO,GAjBbC,GAAAC,EAAA,KACAC,KACAC,KACAC,IAGAC,KACAC,KACAC,qCASaR,IAAiB,IAAA,CAAxB,MAAOA,CAAiB,CAc5BS,YACmBC,EACAC,EAAoD,CADpD,KAAAD,OAAAA,EACA,KAAAC,0BAAAA,EAfnB,KAAAC,aAAe,GAGf,KAAAC,YAAcC,EAAc,CAC1B,KAAKH,0BAA0BI,WAAU,EACzC,KAAKJ,0BAA0BK,gBAAe,CAAE,CACjD,EAAEC,KACDC,EAAI,CAAC,CAACH,EAAYI,CAAY,IAAK,CACjC,IAAMC,EAAWD,GAAcE,KAAMC,GAAOA,IAAO,KAAKC,OAAO,EAC/D,OAAOR,GAAcK,CACvB,CAAC,CAAC,CAMD,CAEHI,aAAW,CACT,KAAKb,0BACFc,aAAY,EACZR,KAAKS,GAAK,CAAC,CAAC,EACZC,UAAWL,GAAM,CAChB,GAAI,CAACA,EAAI,CACPM,QAAQC,MAAM,2BAA2B,EACzC,MACF,CACA,IAAMC,EAAS,uBAAuBR,CAAE,WACxC,KAAKZ,OAAOqB,cAAcD,CAAM,CAClC,CAAC,CACL,iDA/BW9B,GAAiBgC,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAAjBlC,EAAiBmC,UAAA,CAAA,CAAA,eAAA,CAAA,EAAAC,OAAA,CAAAb,QAAA,SAAA,EAAAc,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,OAAA,EAAA,aAAA,EAAA,CAAA,EAAA,SAAA,sBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,YAAA,aAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,cAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WCjB9BE,EAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,eAOAxD,EAAA,EAAA,eAAA,EAAA,CAAA,EAA6E,EAAA,oBAAA,EACvDS,EAAA,CAAA,mBAA8BC,EAAA,EAClDD,EAAA,CAAA,mBACAT,EAAA,EAAA,IAAA,CAAA,EAAqBC,EAAA,QAAA,UAAA,CAAAwD,OAAAvD,EAAAwD,CAAA,EAAAnD,EAAS+C,EAAAlB,YAAA,CAAa,CAAA,CAAA,EAAE3B,EAAA,EAAA,oBAAgCC,EAAA,EAAI,QAVnFiD,EAAAC,EAAA,EAAA,EAAAN,EAAA7B,WAAA,EAAA,EAAA,EAAA,EAOuBoC,EAAA,CAAA,EAAAlD,EAAA,SAAA2C,EAAA9B,YAAA,EAAuB,uBAAA,EAAA,EACxBqC,EAAA,CAAA,EAAAC,EAAAF,EAAA,EAAA,EAAA,YAAA,CAAA,EACpBC,EAAA,CAAA,EAAAE,EAAA,IAAAH,EAAA,EAAA,GAAA,kBAAA,EAAA,GAAA,EAC6CC,EAAA,CAAA,EAAAC,EAAAF,EAAA,GAAA,GAAA,cAAA,CAAA,kBDGnCI,GAASC,GAAmBC,GAAAC,GAAAC,GAAEC,EAAeC,EAAEC,EAAS,EAAAC,OAAA,CAAA;8GAAA,CAAA,CAAA,CAAA,SAIvD5D,CAAiB,GAAA,+BE0DtB6D,EAAA,CAAA,EACEC,EAAA,CAAA,mCAAAC,EAAA,EAAAC,EAAA,IAAAC,GAAA,EAAA,EAAAC,EAAAC,QAAAC,MAAA,WAAA,EAAA,GAAA,8BARNC,EAAA,EAAA,KAAA,EAAsC,EAAA,MAAA,CAAA,EAElCP,EAAA,CAAA,mBACAQ,EAAA,EAAA,gBAAA,CAAA,EACFC,EAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EAEEG,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EAGFF,EAAA,EAAM,kBARJR,EAAA,CAAA,EAAAC,EAAA,IAAAU,EAAA,EAAA,EAAAR,EAAAS,KAAA,EAAA,GAAA,EACeZ,EAAA,CAAA,EAAAa,EAAA,UAAAV,EAAAW,OAAA,EAIAd,EAAA,CAAA,EAAAa,EAAA,OAAAV,EAAAC,QAAAC,KAAA,8BAOfC,EAAA,EAAA,YAAA,EACEP,EAAA,CAAA,mBACAQ,EAAA,EAAA,gBAAA,CAAA,EACFC,EAAA,mBAFER,EAAA,EAAAC,EAAA,IAAAU,EAAA,EAAA,EAAAR,EAAAS,KAAA,EAAA,GAAA,EACeZ,EAAA,CAAA,EAAAa,EAAA,UAAAV,EAAAW,OAAA,uCAHnBR,EAAA,EAAA,kBAAA,CAAA,EACEG,EAAA,EAAAM,IAAA,EAAA,EAAA,aAAA,CAAA,EAIAT,EAAA,EAAA,QAAA,CAAA,mBAMEU,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAiBJ,EAAAK,eAAA,CAAuB,CAAA,CAAA,EAAC,QAAA,UAAA,CAAAH,EAAAC,CAAA,EAAA,IAAAG,EAAAC,EAAA,CAAA,EAAA,OAAAH,EAChCE,EAAAE,KAAA,CAAiB,CAAA,CAAA,EAAC,OAAA,UAAA,CAAAN,EAAAC,CAAA,EAAA,IAAAjB,EAAAuB,EAAA,EAAA,OAAAL,EACnBlB,EAAAwB,UAAA,CAAW,CAAA,CAAA,EARrBnB,EAAA,EAUAD,EAAA,EAAA,wBAAA,CAAA,EAA4E,EAAA,iBAAA,KAAA,CAAA,EAC/B,EAAA,8BAAA,EAAA,EAS/CC,EAAA,2BAxBeR,EAAA,EAAAa,EAAA,OAAAV,EAAAS,KAAA,EASXZ,EAAA,EAAA4B,GAAA,eAAAzB,EAAA0B,mBAAA,EAHAhB,EAAA,cAAAV,EAAAC,OAAA,EAAuB,gBAAAmB,CAAA,EACK,cAAArB,GAAA,EAAA,GAAA,oCAAA4B,GAAA,GAAAC,IAAA5B,EAAAS,OAAA,KAAA,KAAAT,EAAAS,MAAAoB,YAAA,CAAA,CAAA,CAAA,EAOGhC,EAAA,CAAA,EAAAa,EAAA,MAAAU,CAAA,EAI/BvB,EAAA,CAAA,EAAAa,EAAA,aAAAV,EAAA8B,UAAA,EAAyB,UAAA9B,EAAAW,OAAA,EACN,QAAAX,EAAAS,KAAA,EACJ,UAAAT,EAAAC,OAAA,EACI,aAAAD,EAAA+B,UAAA,GAvG7B,QAmBaC,GAkHAC,IArIbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAGAC,KAEAC,iEAEajB,GAAP,KAAuB,CAI3BkB,YACSpB,EACAnB,EACAwC,EACA1C,EACAP,EACAkD,EACAC,EAAW,GACXtB,EAA8B,IAAIuB,GAAiB,CAPnD,KAAAxB,WAAAA,EACA,KAAAnB,QAAAA,EACA,KAAAwC,KAAAA,EACA,KAAA1C,MAAAA,EACA,KAAAP,MAAAA,EACA,KAAAkD,YAAAA,EACA,KAAAC,SAAAA,EACA,KAAAtB,WAAAA,EAXD,KAAAwB,UAAwD,KAa9D,KAAKC,YAAc,IAAIC,GAAmBvD,CAAK,CACjD,CAEAwD,cAAc3B,EAA2B,CACvC,KAAKA,WAAaA,EAClB,KAAKyB,YAAYG,cAAc5B,EAAW6B,cAAa,CAAE,EACzD,KAAKJ,YAAYK,mBAAmB9B,EAAW+B,mBAAkB,CAAE,CACrE,CAEAC,OAAOC,EAAkC,CACvCA,EAAiBC,MAAK,EACtB,IAAMV,EAAYS,EAAiBE,gBAAuCjC,GAAqB,EAC/FsB,EAAUY,SAASrC,WAAa,KAAKA,WACrCyB,EAAUY,SAASxD,QAAU,KAAKA,QAClC4C,EAAUY,SAASlE,QAAU,KAAKuD,YAClCD,EAAUY,SAAS1D,MAAQ,KAAKA,MAChC8C,EAAUY,SAASpC,WAAa,KAAKA,WACrCwB,EAAUY,SAASd,SAAW,KAAKA,SACnC,KAAKE,UAAYA,CACnB,CAEAa,iBAAe,CACb,OAAO,KAAKZ,aAAaa,KAC3B,CAEAC,YAAU,CACR,MAAO,CACL3D,QAAS,KAAKA,QACd4D,UAAW,KAAKf,YAAYtD,MAEhC,GAsEW+B,KAAqB,IAAA,CAA5B,MAAOA,CAAqB,CAUhCiB,YAA6BsB,EAAoC,CAApC,KAAAA,kBAAAA,EAF7B,KAAA9C,oBAA8B+C,GAAkB,CAEoB,CAEpEjD,WAAS,CACP,KAAKgD,kBAAkBE,eAAe,KAAK5C,WAAY,CACrD,CACEnB,QAAS,KAAKA,QACd4D,UAAW,KAAKtE,QAAQC,MACzB,CACF,CACH,iDAnBW+B,GAAqB0C,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAArB3C,EAAqB4C,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,GAxBrB,CAET,CAAEC,QAASC,GAAiBC,SAAUC,GAAS,CAAE,EACjD,CACEH,QAASI,GACTC,SAAUC,IAEZ,CAAEN,QAASO,GAAkBL,SAAUM,EAAoB,EAC3DC,EAAmB,CACpB,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,YAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,KAAA,MAAA,EAAA,CAAA,WAAA,GAAA,EAAA,gBAAA,QAAA,OAAA,cAAA,gBAAA,cAAA,cAAA,EAAA,CAAA,YAAA,GAAA,EAAA,KAAA,EAAA,CAAA,EAAA,aAAA,UAAA,QAAA,UAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,GAlDCxF,EAAA,EAAA0F,IAAA,EAAA,EAAA,MAAA,CAAA,EAAsC,EAAAC,IAAA,EAAA,GAAA,cAAA,KAAA,EAAAC,EAAA,kBAAhCxF,EAAA,OAAAqF,EAAA1C,QAAA,EAAgB,WAAA8C,CAAA,kBAoDtBC,EAAYC,GAAAC,GACZC,GAAmBC,GAAAC,GAAAC,GACnBC,GAAmBC,GAAAC,GAAAC,GACnBC,EAAeC,EACfC,GAAqBC,GAAAC,GACrBC,GACAC,GACAC,EAAQ,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAMCxF,CAAqB,GAAA,+BCtD1ByF,EAAA,CAAA,EACEC,EAAA,CAAA,mCAAAC,EAAA,EAAAC,EAAA,IAAAC,GAAA,EAAA,EAAAC,EAAAC,QAAAC,MAAA,YAAA,EAAA,GAAA,8BARNC,EAAA,EAAA,KAAA,EAAsC,EAAA,MAAA,CAAA,EAElCP,EAAA,CAAA,mBACAQ,EAAA,EAAA,gBAAA,CAAA,EACFC,EAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EAEEG,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EAGFF,EAAA,EAAM,kBARJR,EAAA,CAAA,EAAAC,EAAA,IAAAU,EAAA,EAAA,EAAAR,EAAAS,KAAA,EAAA,GAAA,EACeZ,EAAA,CAAA,EAAAa,EAAA,UAAAV,EAAAW,OAAA,EAIAd,EAAA,CAAA,EAAAa,EAAA,OAAAV,EAAAC,QAAAC,KAAA,8BAOfC,EAAA,EAAA,YAAA,EACEP,EAAA,CAAA,mBACAQ,EAAA,EAAA,gBAAA,CAAA,EACFC,EAAA,mBAFER,EAAA,EAAAC,EAAA,IAAAU,EAAA,EAAA,EAAAR,EAAAS,KAAA,EAAA,GAAA,EACeZ,EAAA,CAAA,EAAAa,EAAA,UAAAV,EAAAW,OAAA,uCAHnBR,EAAA,EAAA,kBAAA,CAAA,EACEG,EAAA,EAAAM,IAAA,EAAA,EAAA,aAAA,CAAA,EAIAT,EAAA,EAAA,QAAA,CAAA,mBAMEU,EAAA,OAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAf,EAAAgB,EAAA,EAAA,OAAAC,EAAQjB,EAAAkB,UAAA,CAAW,CAAA,CAAA,EANrBb,EAAA,EAQAD,EAAA,EAAA,8BAAA,CAAA,EAOFC,EAAA,oBAnBeR,EAAA,EAAAa,EAAA,OAAAV,EAAAS,KAAA,EASXZ,EAAA,EAAAsB,GAAA,eAAAnB,EAAAoB,mBAAA,EAFAV,EAAA,cAAAV,EAAAC,OAAA,EAAuB,cAAAF,GAAA,EAAA,EAAA,oCAAAsB,GAAA,GAAAC,IAAAtB,EAAAS,OAAA,KAAA,KAAAT,EAAAS,MAAAc,YAAA,CAAA,CAAA,CAAA,EAMvB1B,EAAA,CAAA,EAAAa,EAAA,aAAAV,EAAAwB,UAAA,EAAyB,UAAAxB,EAAAW,OAAA,EACN,QAAAX,EAAAS,KAAA,EACJ,UAAAT,EAAAC,OAAA,EACI,aAAAD,EAAAyB,UAAA,GAtG7B,QAsBaC,GAoGAC,IA1HbC,GAAAC,EAAA,KAAAC,IACAC,IAQAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,uDAEahB,GAAP,KAA2B,CAI/BiB,YACSnB,EACAb,EACAiC,EACAnC,EACAP,EACA2C,EACAC,EAAW,GACXrB,EAA8B,IAAIsB,GAAiB,CAPnD,KAAAvB,WAAAA,EACA,KAAAb,QAAAA,EACA,KAAAiC,KAAAA,EACA,KAAAnC,MAAAA,EACA,KAAAP,MAAAA,EACA,KAAA2C,YAAAA,EACA,KAAAC,SAAAA,EACA,KAAArB,WAAAA,EAXD,KAAAuB,UAA4D,KAalE,IAAMC,EAAY/C,EAAQgD,GAAWhD,EAAO,oBAAoB,EAAI,GACpE,KAAKiD,YAAc,IAAIC,GAAmBH,CAAS,CACrD,CAEAI,cAAc5B,EAA2B,CACvC,KAAKA,WAAaA,EAClB,KAAK0B,YAAYG,cAAc7B,EAAW8B,cAAa,CAAE,EACzD,KAAKJ,YAAYK,mBAAmB/B,EAAWgC,mBAAkB,CAAE,CACrE,CAEAC,OAAOC,EAAkC,CACvCA,EAAiBC,MAAK,EACtB,IAAMZ,EAAYW,EAAiBE,gBAA2ClC,GAAyB,EACvGqB,EAAUc,SAAStC,WAAa,KAAKA,WACrCwB,EAAUc,SAASnD,QAAU,KAAKA,QAClCqC,EAAUc,SAAS7D,QAAU,KAAKkD,YAClCH,EAAUc,SAASrD,MAAQ,KAAKA,MAChCuC,EAAUc,SAASrC,WAAa,KAAKA,WACrCuB,EAAUc,SAAShB,SAAW,KAAKA,SACnC,KAAKE,UAAYA,CACnB,CAEAe,iBAAe,CACb,OAAO,KAAKZ,aAAaa,KAC3B,CAEAC,YAAU,CACR,MAAO,CACLtD,QAAS,KAAKA,QACdsC,UAAW,IAAIiB,KAAK,KAAKf,YAAYjD,KAAK,EAE9C,GAuDWyB,KAAyB,IAAA,CAAhC,MAAOA,CAAyB,CApDtCgB,aAAA,CAqDmB,KAAAwB,kBAAoBC,EAAOC,EAAiB,EAS7D,KAAAjD,oBAA8BkD,GAAkB,EAEhDpD,WAAS,CACP,KAAKiD,kBAAkBI,eAAe,KAAK/C,WAAY,CACrD,CACEb,QAAS,KAAKA,QACdsC,UAAW,IAAIiB,KAAK,KAAKjE,QAAQC,KAAK,EACvC,CACF,CACH,iDAnBWyB,EAAyB,CAAA,+BAAzBA,EAAyB6C,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,GAdzB,CAACC,EAAmB,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,YAAA,EAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,WAAA,GAAA,OAAA,iBAAA,EAAA,OAAA,cAAA,cAAA,cAAA,EAAA,CAAA,EAAA,aAAA,UAAA,QAAA,UAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,GApC9B1E,EAAA,EAAA4E,IAAA,EAAA,EAAA,MAAA,CAAA,EAAsC,EAAAC,IAAA,EAAA,GAAA,cAAA,KAAA,EAAAC,EAAA,kBAAhC1E,EAAA,OAAAuE,EAAAnC,QAAA,EAAgB,WAAAuC,CAAA,kBAsCtBC,EAAYC,GAAAC,GACZC,GAAmBC,GAAAC,GAAAC,GACnBC,EAAeC,EACfC,GAAqBC,GAAAC,GACrBC,GACAC,GACAC,EAAQ,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAMC5E,CAAyB,GAAA,ICvHtC,IAAM6E,IAEAC,IAEAC,IAOOC,GAXbC,GAAAC,EAAA,KAAML,IACJ,ufACIC,IAAa,IAAIK,OAAON,GAAI,EAE5BE,IAAoBK,GAClBA,EAAQC,OAASP,IAAWQ,KAAKF,EAAQC,KAAK,IAAM,KACjD,CAAEE,cAAe,EAAI,EAEvB,KAGIP,GAA4B,CACvCO,cAAe,CACbC,SAAU,UACVC,QAAS,wCACTC,aAAcX,IACdY,kBAAmB,oCCoDfC,EAAA,CAAA,EACEC,EAAA,CAAA,uBAAAC,EAAA,EAAAC,EAAA,IAAAC,EAAAC,QAAAC,MAAA,GAAA,8BARNC,EAAA,EAAA,MAAA,CAAA,EAAsE,EAAA,MAAA,CAAA,EAElEN,EAAA,CAAA,mBACAO,EAAA,EAAA,gBAAA,CAAA,EACFC,EAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EAEEG,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EAGFF,EAAA,EAAM,kBARJP,EAAA,CAAA,EAAAC,EAAA,IAAAS,EAAA,EAAA,EAAAR,EAAAS,KAAA,EAAA,GAAA,EACeX,EAAA,CAAA,EAAAY,EAAA,UAAAV,EAAAW,OAAA,EAIAb,EAAA,CAAA,EAAAY,EAAA,OAAAV,EAAAC,QAAAC,KAAA,8BAOfC,EAAA,EAAA,YAAA,EACEN,EAAA,CAAA,mBACAO,EAAA,EAAA,gBAAA,CAAA,EACFC,EAAA,mBAFEP,EAAA,EAAAC,EAAA,IAAAS,EAAA,EAAA,EAAAR,EAAAS,KAAA,EAAA,GAAA,EACeX,EAAA,CAAA,EAAAY,EAAA,UAAAV,EAAAW,OAAA,uCAHnBR,EAAA,EAAA,iBAAA,EACEG,EAAA,EAAAM,IAAA,EAAA,EAAA,aAAA,CAAA,EAIAT,EAAA,EAAA,QAAA,CAAA,mBAUEU,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAiBJ,EAAAK,eAAA,CAAuB,CAAA,CAAA,EAAC,OAAA,UAAA,CAAAH,EAAAC,CAAA,EAAA,IAAAjB,EAAAoB,EAAA,EAAA,OAAAF,EACjClB,EAAAqB,UAAA,CAAW,CAAA,CAAA,EAXrBhB,EAAA,EAcAD,EAAA,EAAA,8BAAA,CAAA,EAOFC,EAAA,oBAzBeP,EAAA,EAAAY,EAAA,OAAAV,EAAAS,KAAA,EAaXX,EAAA,EAAAwB,GAAA,eAAAtB,EAAAuB,mBAAA,EAPAb,EAAA,cAAAV,EAAAC,OAAA,EAAuB,cAAAuB,GAAA,EAAA,GAAA,oCAAAC,GAAA,GAAAC,IAAA1B,EAAAS,OAAA,KAAA,KAAAT,EAAAS,MAAAkB,YAAA,CAAA,CAAA,CAAA,EAC6E,iBAAA,EAAA,EAYpG7B,EAAA,CAAA,EAAAY,EAAA,aAAAV,EAAA4B,UAAA,EAAyB,UAAA5B,EAAAW,OAAA,EACN,QAAAX,EAAAS,KAAA,EACJ,UAAAT,EAAAC,OAAA,EACI,aAAAD,EAAA6B,UAAA,GApG7B,QAeaC,GA0GAC,IAzHbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAGAC,sEAEad,GAAP,KAA0B,CAI9Be,YACSjB,EACAjB,EACAmC,EACArC,EACAP,EACA6C,EACAC,EAAW,GACXnB,EAA8B,IAAIoB,GAAiB,CAPnD,KAAArB,WAAAA,EACA,KAAAjB,QAAAA,EACA,KAAAmC,KAAAA,EACA,KAAArC,MAAAA,EACA,KAAAP,MAAAA,EACA,KAAA6C,YAAAA,EACA,KAAAC,SAAAA,EACA,KAAAnB,WAAAA,EAXD,KAAAqB,UAA2D,KAajE,KAAKC,YAAc,IAAIC,GAAmBlD,CAAK,CACjD,CAEAmD,cAAcxB,EAA2B,CACvC,KAAKA,WAAaA,EAClB,KAAKsB,YAAYG,cAAczB,EAAW0B,cAAa,CAAE,EACzD,KAAKJ,YAAYK,mBAAmB3B,EAAW4B,mBAAkB,CAAE,CACrE,CAEAC,OAAOC,EAAkC,CACvCA,EAAiBC,MAAK,EACtB,IAAMV,EAAYS,EAAiBE,gBAA0C9B,GAAwB,EACrGmB,EAAUY,SAASnD,QAAU,KAAKA,QAClCuC,EAAUY,SAASlC,WAAa,KAAKA,WACrCsB,EAAUY,SAAS7D,QAAU,KAAKkD,YAClCD,EAAUY,SAASrD,MAAQ,KAAKA,MAChCyC,EAAUY,SAASjC,WAAa,KAAKA,WACrCqB,EAAUY,SAASd,SAAW,KAAKA,SACnC,KAAKE,UAAYA,CACnB,CAEAa,iBAAe,CACb,OAAO,KAAKZ,aAAaa,KAC3B,CAEAC,YAAU,CACR,MAAO,CACLtD,QAAS,KAAKA,QACduD,aAAc,KAAKf,YAAYjD,MAEnC,GA8DW6B,KAAwB,IAAA,CAA/B,MAAOA,CAAwB,CAUnCc,YAA6BsB,EAAoC,CAApC,KAAAA,kBAAAA,EAF7B,KAAA5C,oBAA8B6C,GAAkB,CAEoB,CAEpE/C,WAAS,CACP,KAAK8C,kBAAkBE,eAAe,KAAKzC,WAAY,CACrD,CACEjB,QAAS,KAAKA,QACduD,aAAc,KAAKjE,QAAQC,MAC5B,CACF,CACH,iDAnBW6B,GAAwBuC,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAxBxC,EAAwByC,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,GALxB,CAACC,EAAmB,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,YAAA,EAAA,EAAA,CAAA,QAAA,0BAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,WAAA,GAAA,OAAA,SAAA,YAAA,UAAA,UAAA,UAAA,YAAA,GAAA,EAAA,gBAAA,OAAA,cAAA,cAAA,iBAAA,cAAA,EAAA,CAAA,EAAA,aAAA,UAAA,QAAA,UAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,GApD9B1E,EAAA,EAAA4E,IAAA,EAAA,EAAA,MAAA,CAAA,EAAsE,EAAAC,IAAA,EAAA,GAAA,cAAA,KAAA,EAAAC,EAAA,kBAAhC1E,EAAA,OAAAuE,EAAAjC,QAAA,EAAgB,WAAAqC,CAAA,kBA2CtDC,EAAYC,GACZC,GAAcC,GACdC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,GAAeC,GACfC,EAAeC,EACfC,GAAqBC,GAAAC,GACrBC,GACAC,EAAiB,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAOR5E,CAAwB,GAAA,+BErHjC6E,EAAA,CAAA,EAAqCC,EAAA,CAAA,uBAAAC,EAAA,EAAAC,EAAA,IAAAC,EAAAC,QAAAC,MAAA,GAAA,8BAJzCC,EAAA,EAAA,MAAA,CAAA,EAAsE,EAAA,MAAA,CAAA,EACvCN,EAAA,CAAA,mBAAuBO,EAAA,EACpDD,EAAA,EAAA,MAAA,CAAA,EAEEE,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EACFF,EAAA,EAAM,kBAJuBN,EAAA,CAAA,EAAAS,EAAAC,EAAA,EAAA,EAAAR,EAAAS,KAAA,CAAA,EAGZX,EAAA,CAAA,EAAAY,EAAA,OAAAV,EAAAC,QAAAC,KAAA,8BAKfC,EAAA,EAAA,YAAA,EAA0BN,EAAA,CAAA,mBAAuBO,EAAA,mBAAvBN,EAAA,EAAAS,EAAAC,EAAA,EAAA,EAAAR,EAAAS,KAAA,CAAA,uCAD5BN,EAAA,EAAA,iBAAA,EACEE,EAAA,EAAAM,IAAA,EAAA,EAAA,aAAA,CAAA,EACAR,EAAA,EAAA,QAAA,CAAA,mBAUES,EAAA,OAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAd,EAAAe,EAAA,EAAA,OAAAC,EAAQhB,EAAAiB,UAAA,CAAW,CAAA,CAAA,EAAC,gBAAA,SAAAC,EAAA,CAAAC,OAAAN,EAAAC,CAAA,EAAAE,EACHE,EAAAE,eAAA,CAAuB,CAAA,CAAA,EAX1ChB,EAAA,EAaAiB,EAAA,EAAA,8BAAA,CAAA,EAOFjB,EAAA,oBArBeN,EAAA,EAAAY,EAAA,OAAAV,EAAAS,KAAA,EAUXX,EAAA,EAAAwB,GAAA,eAAAtB,EAAAuB,mBAAA,EAPAb,EAAA,cAAAV,EAAAC,OAAA,EAAuB,cAAAuB,GAAA,EAAA,GAAA,oCAAAC,GAAA,GAAAC,IAAA1B,EAAAS,OAAA,KAAA,KAAAT,EAAAS,MAAAkB,YAAA,CAAA,CAAA,CAAA,EAC6E,UAAA,EAAA,EAIpF,iBAAA,EAAA,EAOhB7B,EAAA,CAAA,EAAAY,EAAA,aAAAV,EAAA4B,UAAA,EAAyB,UAAA5B,EAAA6B,OAAA,EACN,QAAA7B,EAAAS,KAAA,EACJ,UAAAT,EAAAC,OAAA,EACI,aAAAD,EAAA8B,UAAA,GD3BzB,QA8BaC,GA9BbC,GAAAC,EAAA,KACAC,IACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,sEAqBaX,IAAsB,IAAA,CAA7B,MAAOA,CAAsB,CAUjCY,YAA6BC,EAAoC,CAApC,KAAAA,kBAAAA,EAF7B,KAAArB,oBAA8BsB,GAAkB,CAEoB,CAEpE5B,WAAS,CACP,KAAK2B,kBAAkBE,eAAe,KAAKlB,WAAY,CACrD,CACEC,QAAS,KAAKA,QACdkB,WAAY,KAAK9C,QAAQC,MAC1B,CACF,CACH,iDAnBW6B,GAAsBiB,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAtBlB,EAAsBmB,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,GALtB,CAACC,EAAmB,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,YAAA,EAAA,EAAA,CAAA,QAAA,0BAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,WAAA,GAAA,OAAA,SAAA,YAAA,UAAA,YAAA,GAAA,EAAA,OAAA,gBAAA,cAAA,cAAA,UAAA,iBAAA,cAAA,EAAA,CAAA,EAAA,aAAA,UAAA,QAAA,UAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,GCzBlCrD,EAAA,EAAAuD,IAAA,EAAA,EAAA,MAAA,CAAA,EAAsE,EAAAC,IAAA,EAAA,GAAA,cAAA,KAAA,EAAAC,EAAA,kBAAhCpD,EAAA,OAAAiD,EAAAI,QAAA,EAAgB,WAAAC,CAAA,kBDiBlDC,EAAYC,GACZC,GAAcC,GACdC,GAAmBC,GAAAC,GAAAC,GAAAC,GACnBC,GAAeC,GACfC,EAAeC,EACfC,GAAqBC,GAAAC,GACrBC,EAAgC,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAOvBrD,CAAsB,GAAA,IE7BnC,IAKasD,GALbC,GAAAC,EAAA,KAAAC,KACAC,KAEAC,KAEaL,GAAP,KAAwB,CAI5BM,YACSC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAW,GACXC,EAA8B,IAAIC,GAAiB,CAPnD,KAAAR,WAAAA,EACA,KAAAC,QAAAA,EACA,KAAAC,KAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,SAAAA,EACA,KAAAC,WAAAA,EAXD,KAAAE,UAAyD,KAa/D,KAAKC,YAAc,IAAIC,GAAY,KAAKP,KAAK,CAC/C,CAEAQ,cAAcL,EAA2B,CACvC,KAAKA,WAAaA,EAClB,KAAKG,YAAYG,cAAcN,EAAWO,cAAa,CAAE,EACzD,KAAKJ,YAAYK,mBAAmBR,EAAWS,mBAAkB,CAAE,CACrE,CAEAC,OAAOC,EAAkC,CACvCA,EAAiBC,MAAK,EACtB,IAAMV,EAAYS,EAAiBE,gBAAwCC,EAAsB,EACjGZ,EAAUa,SAASrB,QAAU,KAAKA,QAClCQ,EAAUa,SAAStB,WAAa,KAAKA,WACrCS,EAAUa,SAASC,QAAU,KAAKb,YAClCD,EAAUa,SAASnB,MAAQ,KAAKA,MAChCM,EAAUa,SAASf,WAAa,KAAKA,WACrCE,EAAUa,SAAShB,SAAW,KAAKA,SACnC,KAAKG,UAAYA,CACnB,CAEAe,iBAAe,CACb,OAAO,KAAKd,aAAae,KAC3B,CAEAC,YAAU,CACR,MAAO,CACLzB,QAAS,KAAKA,QACd0B,WAAY,KAAKjB,YAAYN,MAEjC,KClDF,IAYawB,GAZbC,GAAAC,EAAA,KAGAC,KACAC,mBAQaJ,IAAwB,IAAA,CAA/B,MAAOA,CAAwB,CAOnC,IACIK,kBAAgB,CAClB,OAAO,KAAKC,WACd,CAEAC,YACUC,EACAC,EACSC,EAAqB,CAF9B,KAAAF,mBAAAA,EACA,KAAAC,eAAAA,EACS,KAAAC,GAAAA,EAdX,KAAAC,YAAc,IAAIC,GAClB,KAAAN,YAAc,EAcnB,CAEHO,iBAAe,CACbC,EAAc,CAAC,KAAKC,eAAeC,aAAc,KAAKD,eAAeE,aAAa,CAAC,EAChFC,KACCC,GAAU,KAAKR,WAAW,EAC1BS,EAAU,CAAC,CAAA,CAAGH,CAAa,IACrBA,IAAkB,UACbI,EAAG,IAAI,EAET,KAAKZ,eAAea,gBACzB,KAAKP,eACL,KAAKQ,gBAAgBC,0BAAyB,EAC9C,KAAKD,gBAAgBE,qBAAoB,CAAE,CAE9C,EACDC,GAAKC,GAAY,CACXA,IAAa,MAAQC,OAAOC,KAAKF,CAAQ,EAAEG,OAAS,GACtD,KAAKxB,YAAc,GACnB,KAAKE,mBAAmBuB,WAAa,YAErC,KAAKzB,YAAc,GACnB,KAAKE,mBAAmBuB,WAAa,IAEvC,KAAKrB,GAAGsB,aAAY,CACtB,CAAC,CAAC,EAEHC,UAAS,CACd,CAEAC,aAAW,CACT,KAAKvB,YAAYwB,KAAK,IAAI,EAC1B,KAAKxB,YAAYyB,YAAW,CAC9B,iDAjDWpC,GAAwBqC,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,gCAAxBxC,EAAwByC,UAAA,CAAA,CAAA,GAAA,kBAAA,EAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAxBE,GAAA,oBAAAD,EAAAxC,gBAAA,8GAAAL,CAAwB,GAAA,ICZrC,IAgDa+C,GAhDbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,uBAwCaX,IAA2B,IAAA,CAAlC,MAAOA,CAA2B,CAtCxCY,aAAA,CAuCW,KAAAC,iBAAmB,GACnB,KAAAC,iBAAmB,GAGlB,KAAAC,gBAAkB,IAAIC,GACtB,KAAAC,gBAAkB,IAAID,GAEhC,KAAAE,aAAeA,mDARJlB,EAA2B,CAAA,+BAA3BA,EAA2BmB,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,OAAA,CAAAP,iBAAA,mBAAAC,iBAAA,mBAAAO,aAAA,cAAA,EAAAC,QAAA,CAAAP,gBAAA,kBAAAE,gBAAA,iBAAA,EAAAM,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,aAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,OAAA,SAAA,cAAA,gBAAA,EAAA,QAAA,UAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,qBAAA,GAAA,OAAA,SAAA,cAAA,gBAAA,EAAA,QAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IAnCpCE,EAAA,EAAA,MAAA,CAAA,EAAyB,EAAA,SAAA,CAAA,EAErBC,EAAA,QAAA,UAAA,CAAA,OAASF,EAAAb,gBAAAgB,KAAA,CAA2B,CAAA,EAOpCF,EAAA,EAAA,gCAAA,CAAA,EACEG,EAAA,CAAA,mBACFC,EAAA,EAAgC,EAElCJ,EAAA,EAAA,SAAA,CAAA,EACEC,EAAA,QAAA,UAAA,CAAA,OAASF,EAAAX,gBAAAc,KAAA,CAA2B,CAAA,EAMpCC,EAAA,CAAA,mBACFC,EAAA,EAAS,SAjBPC,EAAA,EAAAC,EAAA,WAAAP,EAAAP,eAAAO,EAAAV,aAAAkB,MAAA,EAK+BF,EAAA,EAAAC,EAAA,YAAAP,EAAAP,eAAAO,EAAAV,aAAAkB,MAAA,EAC7BF,EAAA,EAAAG,EAAA,IAAAC,EAAA,EAAA,EAAAV,EAAAf,gBAAA,EAAA,GAAA,EAMFqB,EAAA,CAAA,EAAAC,EAAA,WAAAP,EAAAP,eAAAO,EAAAV,aAAAkB,MAAA,EAIAF,EAAA,EAAAG,EAAA,IAAAC,EAAA,EAAA,EAAAV,EAAAd,gBAAA,EAAA,GAAA,kBAMJyB,EACAC,EAAeC,EACfC,GACAC,GACAC,GACAC,GAAkCC,GAClCC,GAAeC,EAAA,EAAAC,OAAA,CAAA;sHAAA,CAAA,CAAA,CAAA,SAGNjD,CAA2B,GAAA,+BEzCtCkD,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACAC,EAAA,EAAA,gBAAA,CAAA,EACFC,EAAA,kBAFEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAC,EAAAC,KAAA,EAAA,GAAA,EACeJ,EAAA,CAAA,EAAAK,EAAA,UAAAF,EAAAG,OAAA,GDTnB,YAoCaC,GApCbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,0FAwBad,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CArB3Ce,aAAA,CA2BY,KAAAC,KAAO,IAAIC,GAErB,KAAAC,cAAgB,GAChB,KAAAC,cAAgB,GAChB,KAAAC,iBAAmB,CAACC,GAAiBC,MAAOD,GAAiBE,MAAM,EAEnEC,aAAW,CACT,KAAKL,cAAgB,EACvB,CAEAM,cAAY,CACV,KAAKN,cAAgB,EACvB,CAEAO,kBAAgB,CACV,KAAKC,QAAQC,UAGjB,KAAKV,cAAgB,KAAKW,cAAgB,GAC1C,KAAKb,KAAKc,KAAI,EACd,KAAKL,aAAY,EACnB,CAEAM,UAAQ,CACN,KAAKb,cAAgB,KAAKW,cAAgB,EAC5C,iDA/BW7B,EAA8B,CAAA,+BAA9BA,EAA8BgC,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,OAAA,CAAApC,MAAA,QAAAgC,aAAA,eAAAF,QAAA,UAAAO,WAAA,aAAAnC,QAAA,SAAA,EAAAoC,QAAA,CAAAnB,KAAA,MAAA,EAAAoB,SAAA,CAAAC,GAJ9B,CAAA,CAAE,CAAA,EAAAC,mBAAAC,IAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,gBAAA,kBAAA,EAAA,CAAA,mBAAA,GAAA,EAAA,QAAA,kBAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,WAAA,GAAA,WAAA,GAAA,EAAA,QAAA,UAAA,aAAA,EAAA,CAAA,EAAA,eAAA,SAAA,SAAA,YAAA,WAAA,UAAA,uBAAA,mBAAA,UAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,kBAAA,kBAAA,mBAAA,kBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,gBChCfvD,EAAA,EAAA,kBAAA,EAAA,CAAA,EAGEyD,EAAA,QAAA,UAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAASL,EAAArB,YAAA,CAAa,CAAA,CAAA,EAItB2B,EAAA,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,EAIA/D,EAAA,EAAA,QAAA,CAAA,mBAOEyD,EAAA,QAAA,UAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAASL,EAAArB,YAAA,CAAa,CAAA,CAAA,EAPxBhC,EAAA,EAQE,EAEJH,EAAA,EAAA,eAAA,CAAA,EAEEgE,GAAA,eAAA,SAAAC,EAAA,CAAAP,OAAAC,EAAAC,CAAA,EAAAM,GAAAV,EAAA1B,cAAAmC,CAAA,IAAAT,EAAA1B,cAAAmC,GAAAJ,EAAAI,CAAA,CAAA,CAAA,EAQAjE,EAAA,EAAA,oBAAA,EAAoBC,EAAA,CAAA,mBAAgDE,EAAA,EACpEH,EAAA,EAAA,MAAA,CAAA,EAA8BmE,GAAA,EAAA,EAAyBhE,EAAA,EACvDH,EAAA,GAAA,sBAAA,EAAsB,GAAA,wBAAA,CAAA,sCAIlByD,EAAA,kBAAA,UAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAmBL,EAAAnB,iBAAA,CAAkB,CAAA,CAAA,EAAC,kBAAA,UAAA,CAAAqB,OAAAC,EAAAC,CAAA,EAAAC,EACnBL,EAAApB,aAAA,CAAc,CAAA,CAAA,EAClCjC,EAAA,EAAwB,EACJ,qBAvCvBM,EAAA,kBAAA+C,EAAAX,UAAA,EAA8B,iBAAAW,EAAAlB,OAAA,EAMjBlC,EAAA,CAAA,EAAAK,EAAA,OAAA+C,EAAAhD,KAAA,EAOXJ,EAAA,EAAAK,EAAA,UAAA+C,EAAA3B,aAAA,EAAyB,cAAA2B,EAAA3B,gBAAA,GAAAuC,GAAA,EAAA,GAAA,oCAAAC,GAAA,GAAAC,IAAAd,EAAAhD,OAAA,KAAA,KAAAgD,EAAAhD,MAAA+D,YAAA,CAAA,CAAA,EAAA,EAAA,EAQ3BnE,EAAA,CAAA,EAAAK,EAAA,SAAA+D,CAAA,EACAC,GAAA,SAAAjB,EAAA1B,aAAA,EACArB,EAAA,YAAA+C,EAAAzB,gBAAA,EAA8B,WAAA,EAAA,EACb,UAAA,OAAA,EACE,uBAAA,EAAA,EACU,mBAAA,EAAA,EACJ,WAAA,GAAA,EAGL3B,EAAA,CAAA,EAAAsE,EAAApE,EAAA,EAAA,GAAA,8BAAA,CAAA,EAIhBF,EAAA,CAAA,EAAAK,EAAA,mBAAAH,EAAA,GAAA,GAAA,cAAA,CAAA,EAA+C,mBAAAA,EAAA,GAAA,GAAA,gBAAA,CAAA,kBDhBjDqE,EAAYC,GACZC,GAAcC,GACdC,GAAmBC,GAAAC,GACnBC,EAAeC,EACfC,GAAqBC,GAAAC,GACrBC,GAAmBC,GAAAC,GAAAC,GACnBC,GACAC,GAAaC,GACbC,GAAWC,GACXC,GACAC,GACAC,EAAwB,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAMfzF,CAA8B,GAAA,IEpC3C,IAMa0F,GANbC,GAAAC,EAAA,KACAC,KACAC,SAIaJ,IAAc,IAAA,CAArB,MAAOA,CAAc,CAKzBK,aAAA,CAHQ,KAAAC,eAAiB,IAAIC,GAC7B,KAAAC,cAAgB,KAAKF,eAAeG,aAAY,EAG9C,KAAKC,aAAe,IAAIC,GAAqC,IAAIC,EAAY,CAC/E,CAEQC,WAAWC,EAAe,CAChC,KAAKR,eAAeS,KAAK,IAAIH,GAAW,CAAEE,QAASA,CAAO,CAAE,CAAC,CAC/D,CAEAE,kBAAkBF,EAAiBG,EAAeC,EAAsB,CACtE,GAAI,CAACD,GAASC,EAAc,CAC1B,KAAKL,WAAWC,CAAO,EACvB,MACF,CAEA,KAAKJ,aAAaK,KAAK,IAAIH,GAAW,CAAEE,QAASA,EAASK,YAAaF,CAAK,CAAE,CAAC,CACjF,CAEAG,oBAAoBN,EAAiBO,EAAaC,EAAaJ,EAAsB,CACnF,GAAIG,IAAQ,GAAKC,IAAQ,GAAKJ,EAAc,CAC1C,KAAKL,WAAWC,CAAO,EACvB,MACF,CAEA,KAAKJ,aAAaK,KAAK,IAAIH,GAAW,CAAEE,QAASA,EAASS,cAAe,CAAEF,IAAKA,EAAKC,IAAKA,CAAG,CAAE,CAAE,CAAC,CACpG,CAEAE,iBAAiBP,EAA0B,CACzC,KAAKP,aAAaK,KAAK,IAAIH,GAAWK,CAAK,CAAC,CAC9C,iDAjCWjB,EAAc,CAAA,kCAAdA,EAAcyB,QAAdzB,EAAc0B,UAAAC,WADD,MAAM,CAAA,CAAA,SACnB3B,CAAc,GAAA,ICN3B,IAIa4B,GAWAC,GAoBAC,GAYPC,IAwBOC,GAYAC,GAnFbC,GAAAC,EAAA,KAAAC,KAIaR,GAAoBS,GAA4C,CAC3E,IAAMC,EAAeC,GAAYF,EAAY,CAC3CG,eAAgB,KACjB,EACD,MAAO,CACLC,eAAgBH,EAAaI,MAC7BC,eAAgBL,EAAaM,QAC7BC,UAAWP,EAAaQ,IAE5B,EAEajB,GAAyBS,GAA8C,CAClF,GAAIA,EAAaG,iBAAmB,GAClC,MAAO,GAET,IAAMM,EAAS,CACbH,QAASN,EAAaK,eACtBD,MAAOJ,EAAaG,eACpBK,IAAKR,EAAaO,WAGhBG,EAAsBV,EAAaG,gBAAkB,GACzD,GAAI,CACFO,EAAsBC,GAAOF,EAAQ,eAAe,CACtD,OAASG,EAAG,CACVC,QAAQC,KAAK,iCAAkCL,EAAQG,CAAC,CAC1D,CAEA,OAAOF,CACT,EAEalB,GAAwBQ,GAA8C,CACjF,GAAI,CAACA,EAAaG,eAChB,MAAO,GAET,IAAMM,EAAS,CACbH,QAASN,EAAaK,eACtBD,MAAOJ,EAAaG,eACpBK,IAAKR,EAAaO,WAEpB,OAAOI,GAAOF,EAAQ,SAAS,CACjC,EAEMhB,IAAgBA,CAACW,EAAuBE,IAAiD,CAC7F,IAAIS,EAAY,GAChB,GAAI,CACFA,EAAY,CAACC,GAAcZ,EAAOE,CAAO,CAC3C,OAASM,EAAG,CACVC,QAAQC,KAAK,gCAAiCV,EAAO,oBAAqBE,EAASM,CAAC,CACtF,CAEA,OAAIG,EACK,CACLE,mBAAoB,IAGHC,OAAOC,KAC1B7B,GAAiBE,GAAqB,CAAEW,eAAgBC,EAAOC,eAAgBC,CAAO,CAAE,CAAC,CAAC,EAC1Fc,OAMK,KAJE,CACLH,mBAAoB,GAI1B,EAEavB,GAAuB2B,GAAqD,CACvF,IAAMC,EAAoB,CACxBhB,QAASe,EAAQE,MAAMjB,QACvBF,MAAOiB,EAAQE,MAAMC,YACrBhB,IAAKa,EAAQE,MAAMhB,WAErB,OAAKe,EAAkBlB,MAGhBX,IAAc6B,EAAkBlB,MAAOkB,EAAkBhB,OAAO,EAF9D,IAGX,EAEaX,GAAiC8B,GAA0B,KACtEA,EAAWC,uBAAsB,EAC7BD,EAAWE,QACN,CACLV,mBAAoB,IAGjB,+BEpFLW,GAAA,CAAA,6BANJC,EAAA,EAAA,MAAA,CAAA,EAAsD,EAAA,MAAA,CAAA,EAElDC,EAAA,CAAA,mBACAC,EAAA,EAAA,gBAAA,CAAA,EACFC,EAAA,EACAH,EAAA,EAAA,MAAA,CAAA,EACEI,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,EAAA,EACFF,EAAA,EAAM,yBALJG,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAC,EAAAC,KAAA,EAAA,GAAA,EACeJ,EAAA,CAAA,EAAAK,EAAA,UAAAF,EAAAG,OAAA,EAGAN,EAAA,CAAA,EAAAK,EAAA,mBAAAE,CAAA,0BAYfd,GAAA,CAAA,sCATJC,EAAA,EAAA,KAAA,EAAmC,EAAA,2BAAA,EAAA,EAO/Bc,EAAA,OAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAP,EAAAQ,EAAA,EAAA,OAAAC,EAAQT,EAAAU,UAAA,CAAW,CAAA,CAAA,EAEnBf,EAAA,EAAAgB,IAAA,EAAA,EAAA,eAAA,EAAA,EACFjB,EAAA,EAA2B,2BARzBG,EAAA,EAAAK,EAAA,QAAAF,EAAAC,KAAA,EAAe,eAAAD,EAAAY,oBAAA,CAAA,EACuB,UAAAZ,EAAAa,OAAA,EACnB,UAAAb,EAAAG,OAAA,EACA,aAAAH,EAAAc,UAAA,EAIJjB,EAAA,EAAAK,EAAA,mBAAAa,CAAA,0BAIjBzB,GAAA,CAAA,6BADF0B,EAAA,CAAA,EACErB,EAAA,EAAAsB,IAAA,EAAA,EAAA,eAAA,EAAA,2BAAepB,EAAA,EAAAK,EAAA,mBAAAa,CAAA,8BAIbxB,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACAC,EAAA,EAAA,gBAAA,CAAA,EACFC,EAAA,mBAFEG,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAC,EAAAC,KAAA,EAAA,GAAA,EACeJ,EAAA,CAAA,EAAAK,EAAA,UAAAF,EAAAG,OAAA,8BASTZ,EAAA,EAAA,GAAA,EAIEC,EAAA,CAAA,EACFE,EAAA,oDADEG,EAAA,EAAAC,EAAA,IAAAoB,EAAAC,KAAA,GAAA,0BAIgC3B,EAAA,EAAA,SAAA,6BAQpCD,EAAA,EAAA,aAAA,EAAA,EAIC,EAAA,OAAA,EAAA,EACqDC,EAAA,CAAA,EAAwBE,EAAA,EAC5EH,EAAA,EAAA,OAAA,EAAA,EAA+CC,EAAA,CAAA,EAA4CE,EAAA,EAAO,0BAHlGQ,EAAA,QAAAkB,EAAAC,WAAA,EAEoDxB,EAAA,CAAA,EAAAyB,EAAAF,EAAAG,WAAA,EACL1B,EAAA,CAAA,EAAA2B,GAAA,IAAAJ,EAAAD,KAAA,IAAAC,EAAAK,YAAA,GAAA,0BAKnDhC,EAAA,EAAA,YAAA,yBAkBAA,EAAA,EAAA,YAAA,yBAkBAA,EAAA,EAAA,YAAA,0BAGJF,EAAA,EAAA,aAAA,EAAA,EACEC,EAAA,CAAA,mBACFE,EAAA,SADEG,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,6CAAA,EAAA,GAAA,uCA/EJR,EAAA,EAAA,MAAA,EAAA,EACEI,EAAA,EAAA+B,IAAA,EAAA,EAAA,aAAA,CAAA,EAIAnC,EAAA,EAAA,eAAA,EAAe,EAAA,kBAAA,EAAA,EAIZ,EAAA,aAAA,EAAA,mBAEGA,EAAA,EAAA,oBAAA,EACEI,EAAA,EAAAgC,IAAA,EAAA,EAAA,IAAA,EAAA,EAMFjC,EAAA,EAEAC,EAAA,EAAAiC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EACAtC,EAAA,GAAA,YAAA,EACEE,EAAA,GAAA,wBAAA,EAAA,sCAKFC,EAAA,EACAC,EAAA,GAAAmC,IAAA,EAAA,EAAA,aAAA,EAAA,gBAQFpC,EAAA,EAGAC,EAAA,GAAAoC,IAAA,EAAA,EAAA,aAAA,CAAA,EACFrC,EAAA,EACAH,EAAA,GAAA,kBAAA,EAAA,EAKC,GAAA,OAAA,EAAA,EAC+CC,EAAA,EAAA,EAAkCE,EAAA,EAChFH,EAAA,GAAA,QAAA,EAAA,EAMEc,EAAA,gBAAA,SAAA2B,EAAA,CAAAC,OAAA3B,EAAA4B,CAAA,EAAAzB,EAAiBuB,EAAAG,eAAA,CAAuB,CAAA,CAAA,EAN1CzC,EAAA,EASAC,EAAA,GAAAyC,IAAA,EAAA,EAAA,aAAA,CAAA,EACF1C,EAAA,EACAH,EAAA,GAAA,kBAAA,EAAA,EAKC,GAAA,QAAA,EAAA,oBAQGc,EAAA,gBAAA,SAAA2B,EAAA,CAAAC,OAAA3B,EAAA4B,CAAA,EAAAzB,EAAiBuB,EAAAG,eAAA,CAAuB,CAAA,CAAA,EAP1CzC,EAAA,EAUAC,EAAA,GAAA0C,IAAA,EAAA,EAAA,aAAA,CAAA,EACF3C,EAAA,EAAkB,EAEpBC,EAAA,GAAA2C,IAAA,EAAA,EAAA,aAAA,EAAA,EAGA7C,EAAA,GAAA,8BAAA,EAAA,EAOFC,EAAA,2BAxF4BQ,EAAA,YAAAF,EAAAuC,KAAA,EACb1C,EAAA,EAAAK,EAAA,OAAAF,EAAAC,KAAA,EAOTJ,EAAA,CAAA,6DAEsCA,EAAA,EAAAK,EAAA,cAAAH,EAAA,EAAA,GAAA,uCAAA,CAAA,EAG/BF,EAAA,CAAA,EAAAK,EAAA,OAAAF,EAAAwC,gBAAA,CAAA,EAAwB,WAAAC,CAAA,EAUzB5C,EAAA,CAAA,EAAAK,EAAA,mBAAAH,EAAA,GAAA,GAAA,8CAAA,CAAA,EAA+E,sBAAAA,EAAA,GAAA,GAAA,mDAAA,CAAA,EACQ,cAAAC,EAAA0C,oBAAA,EAMtE7C,EAAA,CAAA,EAAAK,EAAA,UAAAH,EAAA,GAAA,GAAAC,EAAA2C,uBAAA,CAAA,EASV9C,EAAA,CAAA,EAAAK,EAAA,OAAAF,EAAAuC,MAAAK,SAAA,oBAAA,CAAA,EAGb/C,EAAA,EAAAK,EAAA,kBAAAF,EAAAc,UAAA,EAA8B,iBAAAd,EAAAa,OAAA,qDAKgBhB,EAAA,CAAA,EAAAyB,EAAAtB,EAAA6C,2BAAA,CAAA,EAI5ChD,EAAA,2CAMWA,EAAA,EAAAK,EAAA,OAAAF,EAAAuC,MAAAK,SAAA,oBAAA,CAAA,EAMb/C,EAAA,EAAAK,EAAA,gBAAA,MAAA,qGAKEL,EAAA,EAAAK,EAAA,cAAAH,EAAA,GAAA,GAAA,yCAAA,CAAA,2CAOWF,EAAA,CAAA,EAAAK,EAAA,OAAAF,EAAAuC,MAAAK,SAAA,oBAAA,CAAA,EAGyB/C,EAAA,EAAAK,EAAA,OAAAF,EAAAuC,MAAAK,SAAA,oBAAA,CAAA,EAIxC/C,EAAA,EAAAK,EAAA,aAAAF,EAAA8C,UAAA,EAAyB,UAAA9C,EAAAG,OAAA,EACN,QAAAH,EAAAC,KAAA,EACJ,UAAAD,EAAAa,OAAA,EACI,aAAAb,EAAAc,UAAA,8BAMvBE,EAAA,CAAA,EAAsDxB,EAAA,CAAA,uBAAAK,EAAA,EAAAyB,EAAAtB,EAAA+C,YAAA,8BAEpDxD,EAAA,EAAA,IAAA,EAAA,EAAsF,EAAA,MAAA,EAC9EC,EAAA,CAAA,EAAyBE,EAAA,EAAO,4BADrCQ,EAAA,OAAAF,EAAAgD,mBAAA,EAAAC,EAAA,EACKpD,EAAA,CAAA,EAAAyB,EAAA4B,CAAA,6BADRvD,EAAA,EAAAwD,IAAA,EAAA,EAAA,IAAA,EAAA,kBAAkCjD,EAAA,OAAAF,EAAAY,oBAAA,CAAA,6BAFpCjB,EAAA,EAAAyD,IAAA,EAAA,EAAA,eAAA,EAAA,EAAsD,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAxB,EAAA,wBAAvC3B,EAAA,OAAAF,EAAAa,QAAAyC,OAAA,EAAuB,WAAAC,CAAA,GDpHxC,IAwDaC,GAkCAC,GA1FbC,GAAAC,EAAA,KAAAC,KACAC,IACAC,IAWAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KAYAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAA,KACAC,KAQAC,KACAC,uFAGa1B,GAAuB,KAkCvBC,IAAsB,IAAA,CAA7B,MAAOA,CAAsB,CAgEjC0B,YACmBC,EACTC,EACAC,EACSC,EACRC,EAAsB,CAJd,KAAAJ,mBAAAA,EACT,KAAAC,aAAAA,EACA,KAAAC,eAAAA,EACS,KAAAC,kBAAAA,EACR,KAAAC,WAAAA,EApEX,KAAA9C,qBAAuB,IAAI+C,GAAY,EAAE,EACjC,KAAAC,eAAiB,IAAID,GAAYjC,EAAoB,EACrD,KAAAmC,mBAAqB,IAAIF,GAAY,EAAE,EACvC,KAAAG,iBAAmB,IAAIH,GAAY,EAAE,EAC7C,KAAAlD,MAAmB,IAAIsD,GAAU,CAC/BC,QAAS,KAAKJ,eACdK,YAAa,KAAKJ,mBAClBK,UAAW,KAAKJ,iBACjB,EAQD,KAAAK,cAAgB,KAAKV,kBAAkBU,cAE/B,KAAAC,eAAiBC,EAA6B,CACpDC,eAAgB5C,GAChB6C,eAAgB,GAChBL,UAAW,GACY,EACjB,KAAAM,kBAAoBH,EAAqB,CAC/CL,QAAStC,GACTjB,MAAO,GACQ,EACjB,KAAA3B,oBAAsB2F,EAAiB,IAAMC,GAAsB,KAAKN,eAAc,CAAE,CAAC,EACzF,KAAAlD,mBAAqBuD,EAAiB,IAAME,GAAqB,KAAKP,eAAc,CAAE,CAAC,EAC/E,KAAAQ,oBAAsBC,GAAa,KAAK3D,kBAAkB,EAC1D,KAAA4D,gBAAkBD,GAAa,KAAKT,cAAc,EAClD,KAAAW,YAAc,IAAIC,GAE1B,KAAAC,oBAA8BC,GAAkB,EAChD,KAAAC,gBAA+C,KAAK7B,mBAAmB6B,gBAAgBC,KACrFC,GAAoB,EACpBC,GAAY,CAAEC,SAAU,GAAMC,WAAY,CAAC,CAAE,CAAC,EAEhD,KAAA3E,wBAAuD,KAAKD,qBAAqB6E,aAAaL,KAC5FM,GAAU,EAAE,EACZC,GAAe,KAAKR,eAAe,EACnCS,EAAI,CAAC,CAACC,EAAaC,CAAc,IACxBA,EAAeC,OAAQC,GACxBA,GAAAA,EAAEvG,YAAYwG,SAASJ,CAAW,GAGlCG,EAAEzG,YAAY2G,YAAW,EAAGD,SAASJ,EAAYK,YAAW,CAAE,GAG9DF,EAAErG,YAAYuG,YAAW,EAAGD,SAASJ,EAAYK,YAAW,CAAE,EAInE,CACF,CAAC,EAEJ,KAAAxF,gBAAkB+D,EAAS,IAClB,KAAKnB,mBAAmB6C,iBAAiB,KAAK/B,eAAc,EAAGE,cAA6B,CACpG,EACD,KAAAvD,2BAA6B0D,EAAS,IAAM,KAAK/D,gBAAe,GAAIjB,aAAe,EAAE,EAErF,KAAA2G,cAAgB,UASd,KAAK3F,MAAM4F,cAAcC,EAAmB,EAE5C,KAAKhD,mBAAmBiD,gBAAgB,IAAI,EAC5C,KAAKjD,mBAAmBiD,gBAAgB7E,EAAoB,CAC9D,CAEA8E,UAAQ,CACN,KAAKvF,aAAe,KAAKwF,gBAAgB,KAAKxF,YAAY,EAC1D,KAAKyF,oBAAmB,EACxB,KAAKC,0BAAyB,EAE9B,KAAKnD,eAAeoD,cACjBxB,KACCyB,GAAmB,KAAKnD,UAAU,EAClCqC,GAAQe,GAA2BA,EAAEzI,UAAY,KAAKA,OAAO,CAAC,EAE/D0I,UAAWC,GAAK,CACf,KAAKpD,eAAeqD,MAAMvF,EAAoB,EAC9C,KAAKmC,mBAAmBoD,MAAK,EAC7B,KAAKnD,iBAAiBmD,MAAK,EAC3B,KAAKlI,QAAQkI,MAAK,CACpB,CAAC,EAEH,KAAKzD,eAAe0D,aACjB9B,KACC+B,GAAU,KAAKpC,WAAW,EAC1BqC,GAAKC,GAAQ,CAETA,GAAMC,kBACND,GAAMC,kBAAkB/C,gBAAkB,IAC1C8C,GAAMhJ,UAAY,KAAKA,UAEvB,KAAK+H,cAAgB,YACrBmB,WAAW,IAAK,CACd,KAAKnB,cAAgB,UACrB,KAAK7C,aAAaiE,cAAa,CACjC,EAAG,IAAI,EACP,KAAKC,oBAAoBJ,GAAMC,gBAAgB,EAC/C,KAAK/D,aAAaiE,cAAa,EAEnC,CAAC,CAAC,EAEHT,UAAS,CACd,CAEAW,aAAW,CACT,KAAK3C,YAAY4C,KAAI,EACrB,KAAK5C,YAAY6C,SAAQ,CAC3B,CAEAnB,gBAAgBoB,EAAoC,CAGlD,OAAIA,GAAS,KACJ,CACLvD,eAAgB5C,GAChB6C,eAAgB,GAChBL,UAAW,KAGX,OAAO2D,GAAS,UAAY,CAACA,GAAOvD,iBACtCuD,EAAMvD,eAAiB5C,IAElBmG,EACT,CAEQJ,oBAAoBH,EAAsC,CAChE,IAAMQ,EAAkBR,GAAkBhD,gBAAkB5C,GACtDqG,EAAsBT,GAAkB/C,gBAAkB,GAC1DyD,EAAoBV,GAAkBpD,WAAa,GAEzD,KAAKN,eAAeqE,SAASH,CAAe,EAC5C,KAAKxE,mBAAmBiD,gBAAgBuB,CAA8B,EACtE,KAAKjE,mBAAmBoE,SAASF,CAAmB,EACpD,KAAKjE,iBAAiBmE,SAASD,CAAiB,EAChD,IAAME,EAAY,CAChB5D,eAAgBwD,EAChBvD,eAAgBwD,EAChB7D,UAAW8D,GAEb,YAAK5D,eAAe+D,IAAID,CAAS,EAE1B,CAACJ,EAAiBC,EAAqBC,CAAiB,CACjE,CAEQI,cAAcC,EAAkB,CACtC,IAAIP,EAAkBpG,GAClBqG,EAAsBM,EACtBL,EAAoB,GAExB,GAAIK,EAAY,CACd,IAAM7D,EAAoB8D,GAAiBD,CAAU,EACrDP,EAAkBtD,GAAmBF,gBAAkB5C,GACvDqG,EAAsBvD,GAAmBD,gBAAkB8D,EAC3DL,EAAoBxD,GAAmBN,WAAa,GACpD,IAAMgE,EAAY,CAChB5D,eAAgBwD,EAChBvD,eAAgBwD,EAChB7D,UAAW8D,GAEb,KAAK5D,eAAe+D,IAAID,CAAS,CACnC,CACA,YAAKtE,eAAeqE,SAASH,CAAe,EAC5C,KAAKxE,mBAAmBiD,gBAAgBuB,CAA8B,EACtE,KAAKjE,mBAAmBoE,SAASF,CAAmB,EACpD,KAAKjE,iBAAiBmE,SAASD,CAAiB,EAEzC,CAACF,EAAiBC,EAAqBC,CAAiB,CACjE,CAEQtB,qBAAmB,CACzB,GAAI,CAACoB,EAAiBC,EAAqBC,CAAiB,EAAI,GAC5D,OAAO,KAAKjJ,QAAQ8I,OAAU,SAChC,CAACC,EAAiBC,EAAqBC,CAAiB,EAAI,KAAKI,cAAc,KAAKrJ,QAAQ8I,KAAK,EACxF,CAAC,KAAK9I,QAAQ8I,OAAOU,eAAmB,KAAKxJ,QAAQ8I,OAAOtD,eACrE,CAACuD,EAAiBC,EAAqBC,CAAiB,EAAI,KAAKI,cAAc,KAAKrJ,QAAQ8I,MAAMtD,cAAc,EAEhH,CAACuD,EAAiBC,EAAqBC,CAAiB,EAAI,KAAKP,oBAAoB,KAAK1I,QAAQ8I,KAAK,EAEzG,IAAMW,EAAgB,KAAK5E,eAAe6B,aAAaL,KAAKM,GAAUoC,CAAe,CAAC,EAChFW,EAAoB,KAAK5E,mBAAmB4B,aAAaL,KAAKM,GAAUqC,CAAmB,CAAC,EAC5FW,EAAkB,KAAK5E,iBAAiB2B,aAAaL,KAAKM,GAAUsC,CAAiB,CAAC,EAC5FW,EAAc,CAACH,EAAeC,EAAmBC,CAAe,CAAC,EAC9DtD,KACC+B,GAAU,KAAKpC,WAAW,EAC1Ba,EACE,CAAC,CAAC5B,EAASvD,EAAOmI,CAAG,KAClB,CACCtE,eAAgBN,EAChBO,eAAgB9D,EAChByD,UAAW0E,GACa,EAE9BxB,GAAKyB,GAAiB,KAAKzE,eAAe+D,IAAIU,CAAY,CAAC,CAAC,EAE7D9B,UAAS,CACd,CAEQJ,2BAAyB,CAC/B,KAAK5H,QAAQsH,cAAcyC,GAA8B,KAAKrI,KAAK,CAAC,EACpE,KAAKqE,gBACFM,KACCgC,GAAKhD,GAAkB,CACrB+C,GAAU,KAAKpC,WAAW,EAC1B,KAAKhG,QAAQkJ,SAAS7D,CAAc,EAChC,OAAO,KAAKnD,cAAgB,SAC1BmD,GAAgBG,gBAAkB,KAAKtD,aACzC,KAAKlC,QAAQgK,YAAW,EAExB,KAAKhK,QAAQiK,eAAc,EAGxB,KAAKC,oBAAoB7E,EAAgB,KAAKnD,YAAY,EAG7D,KAAKlC,QAAQiK,eAAc,EAF3B,KAAKjK,QAAQgK,YAAW,CAK9B,CAAC,CAAC,EAEHhC,UAAS,CACd,CAEAnI,WAAS,CACP,KAAK6E,kBAAkByF,eAAe,KAAKlI,WAAY,CACrD,CACE3C,QAAS,KAAKA,QACdiJ,iBAAkB,CAChBhD,eAAgB,KAAKV,eAAeiE,MACpCtD,eAAgB,KAAKV,mBAAmBgE,MACxC3D,UAAW,KAAKJ,iBAAiB+D,OAEpC,CACF,CACH,CAEAoB,oBAAoB7E,EAAsC+E,EAAqC,CAC7F,OACG/E,EAAeE,gBAAkB,OAAS6E,EAAgB7E,gBAAkB,MAC5EF,EAAeG,gBAAkB,OAAS4E,EAAgB5E,gBAAkB,MAC5EH,EAAeF,WAAa,OAASiF,EAAgBjF,WAAa,GAEvE,iDA7PWvC,GAAsByH,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,CAAA,CAAA,CAAA,+BAAtB9H,EAAsB+H,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,GAftB,CACTC,GACAC,GACAT,GACA,CACEU,QAASC,GACTC,SAAU,CAAEC,kBAAmB,yCAAyC,GAE1EC,EAAmB,CACpB,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,YAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,CAAA,QAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,OAAA,QAAA,eAAA,UAAA,UAAA,YAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,WAAA,WAAA,mBAAA,EAAA,CAAA,kBAAA,UAAA,EAAA,aAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,mBAAA,sBAAA,aAAA,EAAA,CAAA,QAAA,2BAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,WAAA,WAAA,YAAA,EAAA,kBAAA,gBAAA,EAAA,CAAA,YAAA,GAAA,EAAA,uBAAA,EAAA,CAAA,WAAA,GAAA,kBAAA,cAAA,YAAA,GAAA,OAAA,MAAA,EAAA,eAAA,EAAA,CAAA,EAAA,YAAA,WAAA,sBAAA,EAAA,eAAA,EAAA,CAAA,WAAA,GAAA,kBAAA,YAAA,YAAA,GAAA,OAAA,MAAA,EAAA,gBAAA,aAAA,EAAA,CAAA,QAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,UAAA,QAAA,UAAA,YAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,OAAA,EAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICpFH3M,EAAA,EAAA6M,IAAA,EAAA,EAAA,MAAA,CAAA,EAAsD,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,eAqBtD9M,EAAA,EAAA+M,IAAA,EAAA,EAAA,eAAA,CAAA,eAGA/M,EAAA,EAAAgN,IAAA,GAAA,GAAA,cAAA,KAAA,EAAA9K,EAAA,EAAwB,EAAA+K,IAAA,EAAA,EAAA,cAAA,KAAA,EAAA/K,EAAA,SAxBc3B,EAAA,OAAAqM,EAAAM,QAAA,EAShChN,EAAA,EAAAK,EAAA,OAAAH,EAAA,EAAA,EAAAwM,EAAAtG,aAAA,CAAA,EAYSpG,EAAA,CAAA,EAAAK,EAAA,OAAA,CAAAqM,EAAAM,UAAA9M,EAAA,EAAA,EAAAwM,EAAAtG,aAAA,IAAA,EAAA,kBDwCX6G,EAAYC,GAAAC,GAAAC,GAAAC,GACZC,GAAcC,GAAAC,GACdC,GAAmBC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACnBC,EAAeC,EACfC,GAAqBC,GAAAC,GAAAC,GAAAC,GACrBC,GACAC,GAAeC,GACfC,GAAeC,GAAAC,GAAAC,GACfC,GAAwBC,GACxBC,GACAC,GACAC,GACAC,EAAiB,EAAAC,OAAA,CAAA;;EAAA;;CAAA,EAAAC,cAAA,EAAA/F,KAAA,CAAAgG,UAeP,CAACC,EAAQ,CAAC,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAEX5L,CAAsB,GAAA,IE1FnC,IAOa6L,GAPbC,GAAAC,EAAA,KAAAC,KAEAC,KACAC,KAIaL,GAAP,KAAwB,CAI5BM,YACSC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAW,GACXC,EAA8B,IAAIC,GAAiB,CAPnD,KAAAR,WAAAA,EACA,KAAAC,QAAAA,EACA,KAAAC,KAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,SAAAA,EACA,KAAAC,WAAAA,EAXD,KAAAE,UAAyD,KAa/D,KAAKC,YAAc,IAAIC,GAAmB,KAAKP,KAAK,CACtD,CAEAQ,cAAcL,EAA2B,CACvC,KAAKA,WAAaA,EAClB,KAAKG,YAAYG,cAAcN,EAAWO,cAAa,CAAE,EACzD,KAAKJ,YAAYK,mBAAmBR,EAAWS,mBAAkB,CAAE,CACrE,CAEAC,iBAAe,CACb,OAAO,KAAKP,aAAaQ,KAC3B,CAEAC,YAAU,CACR,OAAI,OAAO,KAAKT,YAAYN,OAAU,SAC7B,CACLH,QAAS,KAAKA,QACdmB,YAAa,KAAKV,YAAYN,OAG3B,CACLH,QAAS,KAAKA,QACdoB,iBAAkB,CAChBC,eAAgB,KAAKZ,YAAYN,OAAOkB,eACxCC,eAAgB,KAAKb,YAAYN,OAAOmB,eACxCC,UAAW,KAAKd,YAAYN,OAAOoB,WAGzC,CAEAC,OAAOC,EAAkC,CACvCA,EAAiBC,MAAK,EACtB,IAAMlB,EAAYiB,EAAiBE,gBAAwCC,EAAsB,EACjGpB,EAAUqB,SAASC,aAAe,KAAK3B,MACvCK,EAAUqB,SAAS9B,WAAa,KAAKA,WACrCS,EAAUqB,SAASE,QAAU,KAAKtB,YAClCD,EAAUqB,SAAS3B,MAAQ,KAAKA,MAChCM,EAAUqB,SAAS7B,QAAU,KAAKA,QAClCQ,EAAUqB,SAASvB,WAAa,KAAKA,WACrCE,EAAUqB,SAASxB,SAAW,KAAKA,SACnC,KAAKG,UAAYA,CACnB,gCEvDIwB,EAAA,EAAA,UAAA,EAA4CC,EAAA,CAAA,EAASC,EAAA,0BAATC,EAAA,EAAAC,EAAAC,CAAA,8BAD9CL,EAAA,EAAA,kBAAA,EACEM,EAAA,EAAAC,IAAA,EAAA,EAAA,WAAA,EAAA,EACFL,EAAA,mBAD4BC,EAAA,EAAAK,EAAA,UAAAC,EAAAC,QAAAC,KAAA,8BAPhCX,EAAA,EAAA,MAAA,CAAA,EAAsE,EAAA,MAAA,CAAA,EAElEC,EAAA,CAAA,mBACAW,EAAA,EAAA,gBAAA,CAAA,EACFV,EAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EACEM,EAAA,EAAAO,IAAA,EAAA,EAAA,mBAAA,EAAA,EAGFX,EAAA,EAAM,kBAPJC,EAAA,CAAA,EAAAW,EAAA,IAAAC,EAAA,EAAA,EAAAN,EAAAO,KAAA,EAAA,GAAA,EACeb,EAAA,CAAA,EAAAK,EAAA,UAAAC,EAAAQ,OAAA,EAGId,EAAA,CAAA,EAAAK,EAAA,OAAAC,EAAAC,QAAAC,KAAA,8BAOnBX,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACAW,EAAA,EAAA,gBAAA,CAAA,EACFV,EAAA,mBAFEC,EAAA,EAAAW,EAAA,IAAAC,EAAA,EAAA,EAAAN,EAAAO,KAAA,EAAA,GAAA,EACeb,EAAA,CAAA,EAAAK,EAAA,UAAAC,EAAAQ,OAAA,uCAIbjB,EAAA,EAAA,eAAA,EAAA,EAAmDkB,EAAA,UAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,MAAAd,EAAAa,EAAA,CAAA,EAAWb,OAAAA,EAAAe,UAAAH,CAAA,EAAmBI,EAAEhB,EAAAiB,UAAA,CAAW,CAAA,CAAA,EAC5FzB,EAAA,CAAA,EACAD,EAAA,EAAA,WAAA,EAAA,EAAwBC,EAAA,EAAA,QAAA,EAAMC,EAAA,EAAW,8BADzCC,EAAA,EAAAW,EAAA,IAAAa,GAAA,IAAA,GAAA,8BAIA3B,EAAA,EAAA,aAAA,EAAA,EAAgCC,EAAA,CAAA,EAAgBC,EAAA,4BAApCM,EAAA,cAAAmB,CAAA,EAAoBxB,EAAA,EAAAC,EAAAuB,GAAA,GAAA,8BANpCC,EAAA,CAAA,EACEtB,EAAA,EAAAuB,IAAA,EAAA,EAAA,eAAA,EAAA,EAAiG,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,8BAAlF5B,EAAA,EAAAK,EAAA,OAAA,CAAAC,EAAAuB,QAAA,EAAiB,WAAAC,CAAA,8BAuBlCjC,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,mBADEC,EAAA,EAAAW,EAAA,IAAAoB,GAAA,EAAA,EAAA,sCAAAC,GAAA,EAAAC,KAAA3B,EAAA4B,cAAA1B,OAAA,KAAA,KAAAF,EAAA4B,cAAA1B,MAAA2B,SAAA,CAAA,CAAA,EAAA,GAAA,8BAGJtC,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,mBADEC,EAAA,EAAAW,EAAA,IAAAoB,GAAA,EAAA,EAAAzB,EAAA8B,iBAAAJ,GAAA,EAAAK,KAAA/B,EAAAC,QAAAC,OAAA,KAAA,KAAAF,EAAAC,QAAAC,MAAA2B,SAAA,CAAA,CAAA,EAAA,GAAA,uCAGAtC,EAAA,EAAA,aAAA,EAAA,EAAqEkB,EAAA,YAAA,SAAAuB,EAAA,CAAAC,OAAAvB,EAAAwB,CAAA,EAAAlB,EAAagB,EAAAG,eAAA,CAAuB,CAAA,CAAA,EACvG3C,EAAA,CAAA,EACFC,EAAA,4BAFuDM,EAAA,QAAAqC,CAAA,EACrD1C,EAAA,EAAAW,EAAA,IAAA+B,EAAA,GAAA,uCAvCN7C,EAAA,EAAA,iBAAA,EACEM,EAAA,EAAAwC,IAAA,EAAA,EAAA,aAAA,EAAA,EAIA9C,EAAA,EAAA,gBAAA,KAAA,CAAA,EACEM,EAAA,EAAAyC,IAAA,EAAA,EAAA,eAAA,EAAA,EASA/C,EAAA,EAAA,QAAA,GAAA,CAAA,mBASEkB,EAAA,uBAAA,SAAAuB,EAAA,CAAAtB,EAAA6B,CAAA,EAAA,IAAAvC,EAAAa,EAAA,EAAA,OAAAG,EAAwBhB,EAAAwC,UAAAR,CAAA,CAAiB,CAAA,CAAA,EAAC,QAAA,UAAA,CAAAtB,EAAA6B,CAAA,EAAA,IAAAvC,EAAAa,EAAA,EAAAb,OAAAA,EAAAyC,cAEjB,GAAIzB,EAAEhB,EAAA0C,gBAAA,CAAiB,CAAA,CAAA,EAAE,OAAA,UAAA,CAAAhC,EAAA6B,CAAA,EAAA,IAAAvC,EAAAa,EAAA,EAAAb,OAAAA,EAAAyC,cAC1B,GAAKzB,EAAEhB,EAAAiB,UAAA,CAAW,CAAA,CAAA,EAZ5CxB,EAAA,EAeAI,EAAA,EAAA8C,IAAA,EAAA,EAAA,aAAA,EAAA,EAGFlD,EAAA,EACAI,EAAA,EAAA+C,IAAA,EAAA,EAAA,aAAA,EAAA,EAGArD,EAAA,GAAA,mBAAA,GAAA,CAAA,EAA0CkB,EAAA,iBAAA,SAAAuB,EAAA,CAAAtB,EAAA6B,CAAA,EAAA,IAAAvC,EAAAa,EAAA,EAAA,OAAAG,EAAkBhB,EAAA6C,kBAAAb,CAAA,CAAyB,CAAA,CAAA,EACnFnC,EAAA,GAAAiD,IAAA,EAAA,EAAA,aAAA,EAAA,gBAGFrD,EAAA,EACAU,EAAA,GAAA,8BAAA,EAAA,EAOFV,EAAA,mCAhDeC,EAAA,EAAAK,EAAA,OAAAC,EAAAO,KAAA,EAKmBb,EAAA,CAAA,EAAAK,EAAA,UAAAC,EAAAC,QAAAC,KAAA,EAY5BR,EAAA,EAAAqD,GAAA,YAAA/C,EAAAgD,YAAA,EADAjD,EAAA,cAAAC,EAAAiD,UAAA,OAAAjD,EAAAC,QAAAC,OAAA,KAAA,KAAAF,EAAAC,QAAAC,MAAA2B,SAAA7B,EAAAiD,QAAA,GAAA3C,EAAA,EAAA,GAAAN,EAAAkD,YAAA,CAAA,EAAsG,cAAAlD,EAAA4B,aAAA,EAEzE,kBAAAuB,CAAA,EACL,kBAAAC,CAAA,EACI,wBAAA,EAAA,EACE,gCAAApD,EAAAqD,kBAAA,EACsB,YAAArD,EAAAsD,aAAA,EAEzB,WAAAtD,EAAAiD,UAAA,OAAAjD,EAAAC,QAAAC,OAAA,KAAA,KAAAF,EAAAC,QAAAC,MAAA2B,SAAA7B,EAAAiD,OAAA,EAKhBvD,EAAA,CAAA,EAAAK,EAAA,OAAAC,EAAAgD,eAAA,OAAAhD,EAAA4B,cAAA1B,OAAA,KAAA,KAAAF,EAAA4B,cAAA1B,MAAA2B,UAAA7B,EAAAgD,YAAA,EAIFtD,EAAA,EAAAK,EAAA,OAAAC,EAAAiD,UAAA,OAAAjD,EAAAC,QAAAC,OAAA,KAAA,KAAAF,EAAAC,QAAAC,MAAA2B,UAAA7B,EAAAiD,SAAAjD,EAAAyC,aAAA,EAIiB/C,EAAA,CAAA,EAAAK,EAAA,UAAAO,EAAA,GAAA,GAAAN,EAAAuD,cAAA,CAAA,EAK5B7D,EAAA,CAAA,EAAAK,EAAA,aAAAC,EAAAwD,UAAA,EAAyB,UAAAxD,EAAAQ,OAAA,EACN,QAAAR,EAAAO,KAAA,EACJ,UAAAP,EAAAC,OAAA,EACI,aAAAD,EAAAyD,UAAA,GD1DzB,gBA8CaC,GA+EAC,IA7HbC,GAAAC,EAAA,KACAC,IAaAC,KACAC,KAIAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KAQAC,KAEAC,KACAC,oJAEavB,GAAP,KAAuB,CAI3BwB,YACS1B,EACAhD,EACA2E,EACA5E,EACAL,EACAkF,EACA7D,EAAW,GACX0B,EAAyB,KACzBD,EAA8B,KAC9BE,EAAe,GACfpB,EAAmB,GACnB2B,EAA8B,IAAI4B,GAAiB,CAXnD,KAAA7B,WAAAA,EACA,KAAAhD,QAAAA,EACA,KAAA2E,KAAAA,EACA,KAAA5E,MAAAA,EACA,KAAAL,MAAAA,EACA,KAAAkF,YAAAA,EACA,KAAA7D,SAAAA,EACA,KAAA0B,QAAAA,EACA,KAAAD,aAAAA,EACA,KAAAE,aAAAA,EACA,KAAApB,iBAAAA,EACA,KAAA2B,WAAAA,EAfD,KAAA6B,UAAwD,KAiB9D,KAAKC,YAAc,IAAIC,GAAsB,CAAA,EAAI,CAAEC,YAAa,EAAI,CAAE,EACtE,KAAKF,YAAYG,SAASxF,CAAK,CACjC,CAEAyF,cAAclC,EAA2B,CACvC,KAAKA,WAAaA,EAClB,KAAK8B,YAAYK,cAAcnC,EAAWoC,cAAa,CAAE,EACzD,KAAKN,YAAYO,mBAAmBrC,EAAWsC,mBAAkB,CAAE,CACrE,CAEAC,iBAAe,CACb,OAAO,KAAKT,aAAaU,KAC3B,CAEAC,YAAU,CACR,MAAO,CACL1F,QAAS,KAAKA,QACd2F,aAAc,CAAEC,OAAQ,KAAKb,YAAYrF,KAAK,EAElD,CAEAmG,OAAOC,EAAkC,CACvCA,EAAiBC,MAAK,EACtB,IAAMjB,EAAYgB,EAAiBE,gBAAuC7C,GAAqB,EAC/F2B,EAAUmB,SAASjD,WAAa,KAAKA,WACrC8B,EAAUmB,SAASjG,QAAU,KAAKA,QAClC8E,EAAUmB,SAASxG,QAAU,KAAKsF,YAClCD,EAAUmB,SAASlG,MAAQ,KAAKA,MAChC+E,EAAUmB,SAAShD,WAAa,KAAKA,WACrC6B,EAAUmB,SAASlF,SAAW,KAAKA,SACnC+D,EAAUmB,SAASC,cAAc,KAAKlG,OAAO,EAC7C8E,EAAUmB,SAASxD,QAAU,KAAKA,QAClCqC,EAAUmB,SAASzD,aAAe,KAAKA,aACvCsC,EAAUmB,SAASvD,aAAe,KAAKA,aACvCoC,EAAUmB,SAAS3E,iBAAmB,KAAKA,iBAC3C,KAAKwD,UAAYA,CACnB,GAyBW3B,KAAqB,IAAA,CAA5B,MAAOA,CAAqB,CAsBhCuB,YACuDyB,EACpCC,EACAC,EACAC,EACTC,EACAC,EAA+B,CALc,KAAAL,yBAAAA,EACpC,KAAAC,MAAAA,EACA,KAAAC,WAAAA,EACA,KAAAC,kBAAAA,EACT,KAAAC,eAAAA,EACA,KAAAC,aAAAA,EApBV,KAAApF,cAAqC,IAAI4D,GAAoB,GAAI,CAAEC,YAAa,EAAI,CAAE,EACtF,KAAApC,mBAA+B,CAAC4D,GAAOC,GAAK,EAC5C,KAAAlE,aAA8B,EAE9B,KAAAC,QAAyB,EACzB,KAAAR,cAAgB,GAChB,KAAA0E,aAAe,IAAIC,GAAyB,EAAK,EACjD,KAAAlE,aAAe,GACf,KAAApB,iBAAmB,GAGnB,KAAAwB,cAAgB,UACR,KAAA+D,aAAeC,GAAS,KAAKR,kBAAkBS,aAAa,EAUlE,IAAMC,EAAwB,CAC5BC,aAAc,CAAA,EACdC,UAAW,CAAA,EACXC,cAAe,CAAA,GAEjB,KAAKf,MAAMgB,IAAIJ,CAAK,EAEpB,KAAKjE,eAAiB,KAAKqD,MAAMiB,OAAO,eAAe,EAEvD,KAAKd,eAAee,cACjBC,KACCC,GAAmB,KAAKnB,UAAU,EAClCoB,GAAQC,GAA2BA,EAAE1H,UAAY,KAAKA,OAAO,CAAC,EAE/D2H,UAAWC,GAAM,KAAK7B,MAAK,CAAE,EAEhC,KAAKQ,eAAesB,aACjBN,KACCC,GAAmB,KAAKnB,UAAU,EAClCyB,GAAKC,GAAQ,CACPA,EAAKpC,cAAcC,QAAUmC,EAAKpC,cAAcC,OAAOvE,OAAS,GAAK0G,EAAK/H,UAAY,KAAKA,UAC7F,KAAK8C,cAAgB,YACrBkF,WAAW,IAAK,CACd,KAAKlF,cAAgB,UACrB,KAAK0D,aAAayB,cAAa,CACjC,EAAG,IAAI,EACP,KAAKxI,QAAQyF,SAAS6C,EAAKpC,aAAaC,MAAM,EAC9C,KAAKnG,QAAQyI,YAAW,EACxB,KAAK1B,aAAayB,cAAa,EAEnC,CAAC,CAAC,EAEHN,UAAS,CACd,CAEA5B,OAAK,CACH,KAAKtG,QAAQ0I,MAAK,EAClB,KAAK1I,QAAQyI,YAAW,EACpB,KAAKrB,aAAY,GACnB,KAAKpG,UAAS,CAElB,CAEAyF,cAAclG,EAAe,CAC3B,IAAM2G,EAAe,KAAKA,aAAaY,KAAKa,GAAoB,CAAE,EAC5DC,EAAqB,KAAKjH,cAAckH,aAAaf,KAAKgB,GAAU,KAAKnH,cAAc1B,KAAK,CAAC,EAE7F8I,EAAgBC,EAAc,CAACJ,EAAoB1B,CAAY,CAAC,EAAEY,KACtEmB,GAAU,CAAC,CAAA,CAAGC,CAAW,IAAyB,CAACA,CAAW,EAC9DC,EAAI,CAAC,CAACC,CAAM,KAA0BA,GAAU,IAAIC,KAAI,CAAE,EAC1DC,GAAaC,GAAkB,EAC/BZ,GAAoB,EACpBa,EAAWJ,GAAW,KAAK1C,yBAAyB+C,gBAAgBlJ,EAAS6I,CAAM,CAAC,EACpFD,EAAKO,GAASA,GAAQ,CAAA,CAAE,EACxBP,EAAKO,GAAS,CAAC,GAAGA,CAAI,EAAEC,KAAI,CAAE,CAAC,EAEjC,KAAKhD,MAAMiD,QAAQ,eAAgBb,CAAa,EAEhD,IAAMc,EAAa,KAAK7J,QAAQ6I,aAAaf,KAC3CgB,GAAU,KAAK9I,QAAQC,KAAK,EAC5BkJ,EAAKO,GAASA,GAAQ,CAAA,CAAE,EACxBf,GAAqB,CAACmB,EAAGC,IAAMC,KAAKC,UAAUH,CAAC,IAAME,KAAKC,UAAUF,CAAC,CAAC,CAAC,EAEzE,KAAKpD,MAAMiD,QAAQ,YAAaC,CAAU,EAE1C,IAAMvG,EAAiB,KAAKqD,MAAMiB,OAAM,EAAGE,KACzCqB,EAAKxC,GAAU,CAACA,EAAMc,UAAWd,EAAMa,YAAY,CAAC,EACpDmB,GAAqB,CAACmB,EAAGC,IAAMC,KAAKC,UAAUH,CAAC,IAAME,KAAKC,UAAUF,CAAC,CAAC,EACtEZ,EAAI,CAAC,CAACe,EAAUC,CAAQ,IAAMA,EAASnC,OAAQoC,GAAM,CAACF,EAASG,SAASD,CAAC,CAAC,CAAC,EAC3EjB,EAAKO,GAAS,CAAC,GAAGA,CAAI,EAAEC,KAAI,CAAE,CAAC,EAGjC,KAAKhD,MAAMiD,QAAQ,gBAAiBtG,CAAc,CACpD,CAEQgH,OAAOC,EAAW,CACxB,IAAMb,EAAO,KAAK1J,QAAQC,OAAS,CAAA,EAC/ByJ,EAAKW,SAASE,CAAG,GAGrB,KAAKvK,QAAQyF,SAAS,CAAC,GAAGiE,EAAMa,CAAG,CAAC,CACtC,CAEQC,eAAa,CACnB,KAAKxK,QAAQyI,YAAW,EACxB,KAAKzI,QAAQyK,cAAa,EAC1B,KAAKzK,QAAQ0K,uBAAsB,EACnC,KAAK/I,cAAc8D,SAAS,EAAE,EAC9B,KAAK9D,cAAc+I,uBAAsB,CAC3C,CAEAnI,UAAUoI,EAAwB,CAChC,IAAM1K,GAAS0K,EAAM1K,OAAS,IAAIoJ,KAAI,EAClCpJ,GACF,KAAKqK,OAAOrK,CAAK,EAEnB0K,GAAOC,WAAWtE,MAAK,EACvB,KAAKkE,cAAa,CACpB,CAEA1J,UAAU+J,EAAgB,CACxB,GAAIA,GAAY,EAAG,CACjB,IAAMnB,EAAO,CAAC,GAAG,KAAK1J,QAAQC,KAAK,EACnCyJ,EAAKoB,OAAOD,EAAU,CAAC,EACvB,KAAK7K,QAAQyF,SAASiE,CAAI,CAC5B,CACA,KAAKc,cAAa,CACpB,CAEA5H,kBAAkB+H,EAAmC,CACnD,KAAKI,SAASC,cAAc/K,MAAQ,GACpC,KAAK0B,cAAc8D,SAAS,EAAE,EAE9B,IAAM8E,EAAMI,GAAOM,QAAQC,UACvBX,GACF,KAAKD,OAAOC,CAAG,EAEjB,KAAKC,cAAa,CACpB,CAEA/H,iBAAe,CACb,KAAKyE,aAAaiE,KAAK,EAAI,CAC7B,CAEAnK,WAAS,CACP,KAAK6F,kBAAkBuE,eAAe,KAAK7H,WAAY,CACrD,CACEhD,QAAS,KAAKA,QACd2F,aAAc,CAAEC,OAAQ,KAAKnG,QAAQC,KAAK,EAC3C,CACF,CACH,iDAjKWyD,GAAqB2H,EAuBtBC,EAA0B,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,CAAA,CAAA,CAAA,+BAvBzBjI,EAAqBkI,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,wEANrB,CAACP,GAASS,EAAmB,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,YAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,eAAA,EAAA,EAAA,CAAA,QAAA,0BAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,uBAAA,QAAA,OAAA,cAAA,YAAA,cAAA,kBAAA,kBAAA,wBAAA,gCAAA,UAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,YAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,aAAA,UAAA,QAAA,UAAA,YAAA,EAAA,CAAA,EAAA,UAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,YAAA,OAAA,CAAA,EAAAC,SAAA,SAAAN,EAAAC,EAAA,IAAAD,EAAA,GCvH3ClM,EAAA,EAAAyM,IAAA,EAAA,EAAA,MAAA,CAAA,EAAsE,EAAAC,IAAA,GAAA,GAAA,cAAA,KAAA,EAAAjL,EAAA,kBAAhCvB,EAAA,OAAAiM,EAAAzK,QAAA,EAAgB,WAAAiL,CAAA,kBD0GlDC,EAAYC,GAAAC,GAAAC,GACZC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAcC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACdC,GAAaC,GACbC,GACAC,GAAmBC,GAAAC,GAAAC,GAAAC,GACnBC,EAAeC,EACfC,GAAiBC,GACjBC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAmBC,GACnBC,GACAC,EAAiB,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,EAAAtG,KAAA,CAAAuG,UAMP,CAACC,EAAQ,CAAC,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAEXrL,CAAqB,GAAA,IEnHlC,SAASsL,GAAmBC,EAAK,CAC/B,OAAO,IAAIC,GAAc,IAAkD,EAA6D,CAC1I,CACA,SAASC,KAAoB,CAC3B,OAAO,IAAID,GAAc,KAAiD,EAA+E,CAC3J,CACA,SAASE,KAAqB,CAC5B,OAAO,IAAIF,GAAc,KAAkD,EAA4E,CACzJ,CACA,SAASG,IAAmBC,EAAS,CACnC,OAAO,IAAIJ,GAAc,KAAkD,EAAiG,CAC9K,CACA,SAASK,IAAkBD,EAAS,CAClC,OAAO,IAAIJ,GAAc,KAAiD,EAAwE,CACpJ,CACA,SAASM,IAAgBC,EAAU,CACjC,OAAO,IAAIP,GAAc,KAA+C,EAAqE,CAC/I,CACA,SAASQ,IAAoBC,EAAsBC,EAAO,CACxD,OAAO,IAAIV,GAAc,KAAoD,EAAmF,CAClK,CACA,SAASW,KAAiB,CACxB,OAAO,IAAIX,GAAc,KAA6C,EAAmG,CAC3K,CACA,SAASY,KAAoB,CAC3B,OAAO,IAAIZ,GAAc,KAAgD,EAAsF,CACjK,CACA,SAASa,IAAaC,EAAcC,EAAa,CAC/C,OAAO,IAAIf,GAAc,KAA2C,EAA4I,CAClN,CACA,SAASgB,IAAkBN,EAAO,CAChC,OAAO,IAAIV,GAAc,KAAiD,EAAuE,CACnJ,CAIA,SAASiB,IAAyBC,EAAMC,EAAYC,EAAUC,EAAaC,EAAW,CACpF,OAAO,IAAItB,GAAc,KAAwD,EAA4N,CAC/S,CACA,SAASuB,KAAmB,CAC1B,OAAO,IAAIvB,GAAc,KAA+C,EAAuE,CACjJ,CACA,SAASwB,KAAgB,CACvB,OAAO,IAAIxB,GAAc,KAA4C,EAA0E,CACjJ,CACA,SAASyB,KAA4B,CACnC,OAAO,IAAIzB,GAAc,KAA2D,EAAmE,CACzJ,CACA,SAAS0B,KAA0B,CACjC,OAAO,IAAI1B,GAAc,KAAuD,EAAoF,CACtK,CACA,SAAS2B,KAAiB,CACxB,OAAO,IAAI3B,GAAc,KAA6C,EAA2D,CACnI,CACA,SAAS4B,IAAaC,EAAU,CAC9B,OAAO,IAAI7B,GAAc,KAA2C,EAA6I,CACnN,CACA,SAAS8B,IAAkBC,EAAM,CAC/B,OAAO,IAAI/B,GAAc,KAAgD,EAA4E,CACvJ,CACA,SAASgC,IAAuBC,EAAO,CACrC,OAAO,IAAIjC,GAAc,KAAsD,EAAqE,CACtJ,CAOA,SAASkC,IAAmBC,EAAMC,EAAQ,CACxC,OAAO,IAAIpC,GAAc,KAAkD,EAAmJ,CAChO,CACA,SAASqC,IAAgBD,EAAQ,CAC/B,OAAO,IAAIpC,GAAc,KAA8C,EAA4H,CACrM,CACA,SAASsC,IAAeF,EAAQ,CAC9B,OAAO,IAAIpC,GAAc,KAAiD,EAAsH,CAClM,CACA,SAASuC,KAA8B,CACrC,OAAO,IAAIvC,GAAc,KAA4D,EAAkF,CACzK,CACA,SAASwC,IAAsBJ,EAAQ,CACrC,OAAO,IAAIpC,GAAc,KAAqD,EAAsH,CACtM,CACA,SAASyC,IAAcC,EAAI,CACzB,OAAO,IAAI1C,GAAc,KAA4C,EAAqE,CAC5I,CACA,SAAS2C,IAAeC,EAAOT,EAAM,CACnC,OAAO,IAAInC,GAAc,KAA6C,EAAiI,CACzM,CACA,SAAS6C,IAAaV,EAAM,CAC1B,OAAO,IAAInC,GAAc,KAA2C,EAA2G,CACjL,CACA,SAAS8C,IAAwBF,EAAOT,EAAM,CAC5C,OAAO,IAAInC,GAAc,KAAuD,EAAoH,CACtM,CACA,SAAS+C,IAAoBZ,EAAM,CACjC,OAAO,IAAInC,GAAc,KAAkD,EAAgF,CAC7J,CACA,SAASgD,IAAyBZ,EAAQ,CACxC,OAAO,IAAIpC,GAAc,KAAwD,EAA0I,CAC7N,CAIA,SAASiD,IAAiBd,EAAMC,EAAQ,CACtC,OAAO,IAAIpC,GAAc,KAA+C,EAA2F,CACrK,CAQA,SAASkD,GAAoBC,EAAS,CACpC,OAAQA,EAAQ,OAAQ,CACtB,IAAK,GACH,OAAO,IAAIC,GACb,IAAK,GACH,OAAOD,EAAQ,CAAC,EAClB,QACE,OAAO,IAAIE,GAAsBF,CAAO,CAC5C,CACF,CACA,SAASG,GAAqBC,EAAYC,EAAWC,EAAY,IAAI,IAAOC,EAAa,IAAI,IAAO,CAClG,IAAMtB,EAAS,CAAC,EACVuB,EAAsB,CAAC,EACzBC,EAAiB,GACjBC,EAAmB,KA8BvB,GA7BAL,EAAU,QAAQM,GAAM,CACtB,IAAMC,EAASD,EAAG,IAAI,QAAQ,EACxBE,EAAeD,GAAUH,EACzBK,EAAqBD,GAAgBH,GAAoB,IAAI,IACnEC,EAAG,QAAQ,CAACI,EAAKhD,IAAS,CACxB,IAAIiD,EAAiBjD,EACjBkD,GAAkBF,EACtB,GAAIhD,IAAS,SAEX,OADAiD,EAAiBZ,EAAW,sBAAsBY,EAAgB/B,CAAM,EAChEgC,GAAiB,CACvB,KAAKC,GACHD,GAAkBX,EAAU,IAAIvC,CAAI,EACpC,MACF,KAAKoD,GACHF,GAAkBV,EAAW,IAAIxC,CAAI,EACrC,MACF,QACEkD,GAAkBb,EAAW,oBAAoBrC,EAAMiD,EAAgBC,GAAiBhC,CAAM,EAC9F,KACJ,CAEF6B,EAAmB,IAAIE,EAAgBC,EAAe,CACxD,CAAC,EACIJ,GACHL,EAAoB,KAAKM,CAAkB,EAE7CJ,EAAmBI,EACnBL,EAAiBG,CACnB,CAAC,EACG3B,EAAO,OACT,MAAMC,IAAgBD,CAAM,EAE9B,OAAOuB,CACT,CACA,SAASY,GAAeC,EAAQC,EAAWC,EAAOC,EAAU,CAC1D,OAAQF,EAAW,CACjB,IAAK,QACHD,EAAO,QAAQ,IAAMG,EAASD,GAASE,GAAmBF,EAAO,QAASF,CAAM,CAAC,CAAC,EAClF,MACF,IAAK,OACHA,EAAO,OAAO,IAAMG,EAASD,GAASE,GAAmBF,EAAO,OAAQF,CAAM,CAAC,CAAC,EAChF,MACF,IAAK,UACHA,EAAO,UAAU,IAAMG,EAASD,GAASE,GAAmBF,EAAO,UAAWF,CAAM,CAAC,CAAC,EACtF,KACJ,CACF,CACA,SAASI,GAAmBC,EAAGC,EAAWN,EAAQ,CAChD,IAAMO,EAAYP,EAAO,UACnBQ,EAAW,EAAAR,EAAO,SAClBE,EAAQO,GAAmBJ,EAAE,QAASA,EAAE,YAAaA,EAAE,UAAWA,EAAE,QAASC,GAAaD,EAAE,UAAWE,GAAyBF,EAAE,UAAuBG,CAAQ,EACjKE,EAAOL,EAAE,MACf,OAAIK,GAAQ,OACVR,EAAM,MAAWQ,GAEZR,CACT,CACA,SAASO,GAAmBE,EAASC,EAAaC,EAAWC,EAASR,EAAY,GAAIC,EAAY,EAAGC,EAAU,CAC7G,MAAO,CACL,QAAAG,EACA,YAAAC,EACA,UAAAC,EACA,QAAAC,EACA,UAAAR,EACA,UAAAC,EACA,SAAU,CAAC,CAACC,CACd,CACF,CACA,SAASO,GAAqBC,EAAKC,EAAKC,EAAc,CACpD,IAAIhF,EAAQ8E,EAAI,IAAIC,CAAG,EACvB,OAAK/E,GACH8E,EAAI,IAAIC,EAAK/E,EAAQgF,CAAY,EAE5BhF,CACT,CACA,SAASiF,GAAqBC,EAAS,CACrC,IAAMC,EAAeD,EAAQ,QAAQ,GAAG,EAClClD,EAAKkD,EAAQ,UAAU,EAAGC,CAAY,EACtCC,EAASF,EAAQ,MAAMC,EAAe,CAAC,EAC7C,MAAO,CAACnD,EAAIoD,CAAM,CACpB,CAEA,SAASC,GAAiBZ,EAAS,CACjC,IAAMa,EAASb,EAAQ,YAAcA,EAAQ,MAAQ,KACrD,OAAIa,IAAWC,IACN,KAEFD,CACT,CACA,SAASE,IAAqBhF,EAAM,CAGlC,OAAOA,EAAK,UAAU,EAAG,CAAC,GAAK,OACjC,CAGA,SAASiF,IAAsBjF,EAAM,CAC9BkF,KACHA,GAAeC,IAAY,GAAK,CAAC,EACjCC,GAAaF,GAAa,MAAQ,qBAAsBA,GAAa,MAAQ,IAE/E,IAAIG,EAAS,GACb,OAAIH,GAAa,OAAS,CAACF,IAAqBhF,CAAI,IAClDqF,EAASrF,KAAQkF,GAAa,MAC1B,CAACG,GAAUD,KAEbC,EADkB,SAAWrF,EAAK,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAK,MAAM,CAAC,IAClDkF,GAAa,QAGhCG,CACT,CAIA,SAASF,KAAc,CACrB,OAAI,OAAO,SAAY,IACd,SAAS,KAEX,IACT,CACA,SAASG,GAAgBC,EAAMC,EAAM,CACnC,KAAOA,GAAM,CACX,GAAIA,IAASD,EACX,MAAO,GAETC,EAAOX,GAAiBW,CAAI,CAC9B,CACA,MAAO,EACT,CACA,SAASC,GAAYxB,EAAStD,EAAU+E,EAAO,CAC7C,GAAIA,EACF,OAAO,MAAM,KAAKzB,EAAQ,iBAAiBtD,CAAQ,CAAC,EAEtD,IAAMgF,EAAO1B,EAAQ,cAActD,CAAQ,EAC3C,OAAOgF,EAAO,CAACA,CAAI,EAAI,CAAC,CAC1B,CA+FA,SAASC,GAAmBpG,EAAO,CACjC,GAAI,OAAOA,GAAS,SAAU,OAAOA,EACrC,IAAMqG,EAAUrG,EAAM,MAAM,mBAAmB,EAC/C,MAAI,CAACqG,GAAWA,EAAQ,OAAS,EAAU,EACpCC,GAAsB,WAAWD,EAAQ,CAAC,CAAC,EAAGA,EAAQ,CAAC,CAAC,CACjE,CACA,SAASC,GAAsBtG,EAAOuG,EAAM,CAC1C,OAAQA,EAAM,CACZ,IAAK,IACH,OAAOvG,EAAQwG,IACjB,QAEE,OAAOxG,CACX,CACF,CACA,SAASyG,GAAcC,EAAShF,EAAQiF,EAAqB,CAC3D,OAAOD,EAAQ,eAAe,UAAU,EAAIA,EAAUE,IAAoBF,EAAShF,EAAQiF,CAAmB,CAChH,CACA,SAASC,IAAoBvH,EAAKqC,EAAQiF,EAAqB,CAC7D,IAAME,EAAQ,2EACVC,EACAC,EAAQ,EACRC,EAAS,GACb,GAAI,OAAO3H,GAAQ,SAAU,CAC3B,IAAMgH,EAAUhH,EAAI,MAAMwH,CAAK,EAC/B,GAAIR,IAAY,KACd,OAAA3E,EAAO,KAAKtC,GAAmBC,CAAG,CAAC,EAC5B,CACL,SAAU,EACV,MAAO,EACP,OAAQ,EACV,EAEFyH,EAAWR,GAAsB,WAAWD,EAAQ,CAAC,CAAC,EAAGA,EAAQ,CAAC,CAAC,EACnE,IAAMY,EAAaZ,EAAQ,CAAC,EACxBY,GAAc,OAChBF,EAAQT,GAAsB,WAAWW,CAAU,EAAGZ,EAAQ,CAAC,CAAC,GAElE,IAAMa,EAAYb,EAAQ,CAAC,EACvBa,IACFF,EAASE,EAEb,MACEJ,EAAWzH,EAEb,GAAI,CAACsH,EAAqB,CACxB,IAAIQ,EAAiB,GACjBC,EAAa1F,EAAO,OACpBoF,EAAW,IACbpF,EAAO,KAAKnC,IAAkB,CAAC,EAC/B4H,EAAiB,IAEfJ,EAAQ,IACVrF,EAAO,KAAKlC,IAAmB,CAAC,EAChC2H,EAAiB,IAEfA,GACFzF,EAAO,OAAO0F,EAAY,EAAGhI,GAAmBC,CAAG,CAAC,CAExD,CACA,MAAO,CACL,SAAAyH,EACA,MAAAC,EACA,OAAAC,CACF,CACF,CACA,SAASK,IAAmBvE,EAAW,CACrC,OAAKA,EAAU,OAGXA,EAAU,CAAC,YAAa,IACnBA,EAEFA,EAAU,IAAIM,GAAM,IAAI,IAAI,OAAO,QAAQA,CAAE,CAAC,CAAC,EAL7C,CAAC,CAMZ,CAIA,SAASkE,GAAU7C,EAAS8C,EAAQC,EAAc,CAChDD,EAAO,QAAQ,CAAC/D,EAAKhD,IAAS,CAC5B,IAAMiH,EAAYC,GAAoBlH,CAAI,EACtCgH,GAAgB,CAACA,EAAa,IAAIhH,CAAI,GACxCgH,EAAa,IAAIhH,EAAMiE,EAAQ,MAAMgD,CAAS,CAAC,EAEjDhD,EAAQ,MAAMgD,CAAS,EAAIjE,CAC7B,CAAC,CACH,CACA,SAASmE,GAAYlD,EAAS8C,EAAQ,CACpCA,EAAO,QAAQ,CAACK,EAAGpH,IAAS,CAC1B,IAAMiH,EAAYC,GAAoBlH,CAAI,EAC1CiE,EAAQ,MAAMgD,CAAS,EAAI,EAC7B,CAAC,CACH,CACA,SAASI,GAAwBC,EAAO,CACtC,OAAI,MAAM,QAAQA,CAAK,EACjBA,EAAM,QAAU,EAAUA,EAAM,CAAC,EAC9BC,GAASD,CAAK,EAEhBA,CACT,CACA,SAASE,IAAoBhI,EAAOiI,EAASvG,EAAQ,CACnD,IAAMwG,EAASD,EAAQ,QAAU,CAAC,EAC5B5B,EAAU8B,GAAmBnI,CAAK,EACpCqG,EAAQ,QACVA,EAAQ,QAAQ3G,GAAW,CACpBwI,EAAO,eAAexI,CAAO,GAChCgC,EAAO,KAAKjC,IAAmBC,CAAO,CAAC,CAE3C,CAAC,CAEL,CAEA,SAASyI,GAAmBnI,EAAO,CACjC,IAAIkI,EAAS,CAAC,EACd,GAAI,OAAOlI,GAAU,SAAU,CAC7B,IAAIoI,EACJ,KAAOA,EAAQC,GAAY,KAAKrI,CAAK,GACnCkI,EAAO,KAAKE,EAAM,CAAC,CAAC,EAEtBC,GAAY,UAAY,CAC1B,CACA,OAAOH,CACT,CACA,SAASI,GAAkBtI,EAAOkI,EAAQxG,EAAQ,CAChD,IAAM6G,EAAW,GAAGvI,CAAK,GACnBwI,EAAMD,EAAS,QAAQF,GAAa,CAACT,EAAGlI,IAAY,CACxD,IAAI+I,EAAWP,EAAOxI,CAAO,EAE7B,OAAI+I,GAAY,OACd/G,EAAO,KAAK/B,IAAkBD,CAAO,CAAC,EACtC+I,EAAW,IAENA,EAAS,SAAS,CAC3B,CAAC,EAED,OAAOD,GAAOD,EAAWvI,EAAQwI,CACnC,CAEA,SAASd,GAAoBgB,EAAO,CAClC,OAAOA,EAAM,QAAQC,IAAkB,IAAIC,IAAMA,EAAE,CAAC,EAAE,YAAY,CAAC,CACrE,CAIA,SAASC,IAA+B/B,EAAUC,EAAO,CACvD,OAAOD,IAAa,GAAKC,IAAU,CACrC,CACA,SAAS+B,IAAmCrE,EAAS3B,EAAWiG,EAAgB,CAC9E,GAAIA,EAAe,MAAQjG,EAAU,OAAQ,CAC3C,IAAIkG,EAAmBlG,EAAU,CAAC,EAC9BmG,EAAoB,CAAC,EAOzB,GANAF,EAAe,QAAQ,CAACvF,EAAKhD,IAAS,CAC/BwI,EAAiB,IAAIxI,CAAI,GAC5ByI,EAAkB,KAAKzI,CAAI,EAE7BwI,EAAiB,IAAIxI,EAAMgD,CAAG,CAChC,CAAC,EACGyF,EAAkB,OACpB,QAASC,EAAI,EAAGA,EAAIpG,EAAU,OAAQoG,IAAK,CACzC,IAAI9F,EAAKN,EAAUoG,CAAC,EACpBD,EAAkB,QAAQzI,GAAQ4C,EAAG,IAAI5C,EAAM2I,GAAa1E,EAASjE,CAAI,CAAC,CAAC,CAC7E,CAEJ,CACA,OAAOsC,CACT,CACA,SAASsG,GAAaC,EAASC,EAAMC,EAAS,CAC5C,OAAQD,EAAK,KAAM,CACjB,KAAKE,GAAsB,QACzB,OAAOH,EAAQ,aAAaC,EAAMC,CAAO,EAC3C,KAAKC,GAAsB,MACzB,OAAOH,EAAQ,WAAWC,EAAMC,CAAO,EACzC,KAAKC,GAAsB,WACzB,OAAOH,EAAQ,gBAAgBC,EAAMC,CAAO,EAC9C,KAAKC,GAAsB,SACzB,OAAOH,EAAQ,cAAcC,EAAMC,CAAO,EAC5C,KAAKC,GAAsB,MACzB,OAAOH,EAAQ,WAAWC,EAAMC,CAAO,EACzC,KAAKC,GAAsB,QACzB,OAAOH,EAAQ,aAAaC,EAAMC,CAAO,EAC3C,KAAKC,GAAsB,UACzB,OAAOH,EAAQ,eAAeC,EAAMC,CAAO,EAC7C,KAAKC,GAAsB,MACzB,OAAOH,EAAQ,WAAWC,EAAMC,CAAO,EACzC,KAAKC,GAAsB,UACzB,OAAOH,EAAQ,eAAeC,EAAMC,CAAO,EAC7C,KAAKC,GAAsB,aACzB,OAAOH,EAAQ,kBAAkBC,EAAMC,CAAO,EAChD,KAAKC,GAAsB,WACzB,OAAOH,EAAQ,gBAAgBC,EAAMC,CAAO,EAC9C,KAAKC,GAAsB,MACzB,OAAOH,EAAQ,WAAWC,EAAMC,CAAO,EACzC,KAAKC,GAAsB,QACzB,OAAOH,EAAQ,aAAaC,EAAMC,CAAO,EAC3C,QACE,MAAM3J,IAAgB0J,EAAK,IAAI,CACnC,CACF,CACA,SAASH,GAAa1E,EAASjE,EAAM,CACnC,OAAO,OAAO,iBAAiBiE,CAAO,EAAEjE,CAAI,CAC9C,CA4CA,SAASiJ,IAAoBC,EAAiBhI,EAAQ,CACpD,IAAMiI,EAAc,CAAC,EACrB,OAAI,OAAOD,GAAmB,SAC5BA,EAAgB,MAAM,SAAS,EAAE,QAAQlB,GAAOoB,IAAwBpB,EAAKmB,EAAajI,CAAM,CAAC,EAEjGiI,EAAY,KAAKD,CAAe,EAE3BC,CACT,CACA,SAASC,IAAwBC,EAAUF,EAAajI,EAAQ,CAC9D,GAAImI,EAAS,CAAC,GAAK,IAAK,CACtB,IAAMhE,EAASiE,IAAoBD,EAAUnI,CAAM,EACnD,GAAI,OAAOmE,GAAU,WAAY,CAC/B8D,EAAY,KAAK9D,CAAM,EACvB,MACF,CACAgE,EAAWhE,CACb,CACA,IAAMuC,EAAQyB,EAAS,MAAM,yCAAyC,EACtE,GAAIzB,GAAS,MAAQA,EAAM,OAAS,EAClC,OAAA1G,EAAO,KAAKN,IAAkByI,CAAQ,CAAC,EAChCF,EAET,IAAMhF,EAAYyD,EAAM,CAAC,EACnB2B,EAAY3B,EAAM,CAAC,EACnBxD,EAAUwD,EAAM,CAAC,EACvBuB,EAAY,KAAKK,GAAqBrF,EAAWC,CAAO,CAAC,EACzD,IAAMqF,EAAqBtF,GAAauF,IAAatF,GAAWsF,GAC5DH,EAAU,CAAC,GAAK,KAAO,CAACE,GAC1BN,EAAY,KAAKK,GAAqBpF,EAASD,CAAS,CAAC,CAG7D,CACA,SAASmF,IAAoBvI,EAAOG,EAAQ,CAC1C,OAAQH,EAAO,CACb,IAAK,SACH,MAAO,YACT,IAAK,SACH,MAAO,YACT,IAAK,aACH,MAAO,CAACoD,EAAWC,IAAY,WAAWA,CAAO,EAAI,WAAWD,CAAS,EAC3E,IAAK,aACH,MAAO,CAACA,EAAWC,IAAY,WAAWA,CAAO,EAAI,WAAWD,CAAS,EAC3E,QACE,OAAAjD,EAAO,KAAKJ,IAAuBC,CAAK,CAAC,EAClC,QACX,CACF,CAOA,SAASyI,GAAqBG,EAAKC,EAAK,CACtC,IAAMC,EAAoBC,GAAoB,IAAIH,CAAG,GAAKI,GAAqB,IAAIJ,CAAG,EAChFK,EAAoBF,GAAoB,IAAIF,CAAG,GAAKG,GAAqB,IAAIH,CAAG,EACtF,MAAO,CAACzF,EAAWC,IAAY,CAC7B,IAAI6F,EAAWN,GAAOD,IAAaC,GAAOxF,EACtC+F,EAAWN,GAAOF,IAAaE,GAAOxF,EAC1C,MAAI,CAAC6F,GAAYJ,GAAqB,OAAO1F,GAAc,YACzD8F,EAAW9F,EAAY2F,GAAoB,IAAIH,CAAG,EAAII,GAAqB,IAAIJ,CAAG,GAEhF,CAACO,GAAYF,GAAqB,OAAO5F,GAAY,YACvD8F,EAAW9F,EAAU0F,GAAoB,IAAIF,CAAG,EAAIG,GAAqB,IAAIH,CAAG,GAE3EK,GAAYC,CACrB,CACF,CAuCA,SAASC,GAAkBC,EAAQC,EAAUnJ,EAAQoJ,EAAU,CAC7D,OAAO,IAAIC,GAA2BH,CAAM,EAAE,MAAMC,EAAUnJ,EAAQoJ,CAAQ,CAChF,CA+WA,SAASE,IAAkB7J,EAAU,CACnC,IAAM8J,EAAe,EAAA9J,EAAS,MAAM,SAAS,EAAE,KAAK+J,GAASA,GAASC,EAAU,EAChF,OAAIF,IACF9J,EAAWA,EAAS,QAAQiK,IAAkB,EAAE,GAIlDjK,EAAWA,EAAS,QAAQ,OAAQkK,EAAmB,EAAE,QAAQ,QAASjD,GAASiD,GAAsB,IAAMjD,EAAM,MAAM,CAAC,CAAC,EAAE,QAAQ,cAAekD,EAAqB,EACpK,CAACnK,EAAU8J,CAAY,CAChC,CACA,SAASM,IAAgBC,EAAK,CAC5B,OAAOA,EAAMC,GAAA,GACRD,GACD,IACN,CAiBA,SAASE,IAAcnE,EAAQ,CAC7B,GAAI,OAAOA,GAAU,SAAU,OAAO,KACtC,IAAIlE,EAAS,KACb,GAAI,MAAM,QAAQkE,CAAM,EACtBA,EAAO,QAAQoE,GAAc,CAC3B,GAAIA,aAAsB,KAAOA,EAAW,IAAI,QAAQ,EAAG,CACzD,IAAMH,EAAMG,EACZtI,EAAS,WAAWmI,EAAI,IAAI,QAAQ,CAAC,EACrCA,EAAI,OAAO,QAAQ,CACrB,CACF,CAAC,UACQjE,aAAkB,KAAOA,EAAO,IAAI,QAAQ,EAAG,CACxD,IAAMiE,EAAMjE,EACZlE,EAAS,WAAWmI,EAAI,IAAI,QAAQ,CAAC,EACrCA,EAAI,OAAO,QAAQ,CACrB,CACA,OAAOnI,CACT,CACA,SAASuI,IAAmB5L,EAAO0B,EAAQ,CACzC,GAAI1B,EAAM,eAAe,UAAU,EACjC,OAAOA,EAET,GAAI,OAAOA,GAAS,SAAU,CAC5B,IAAM8G,EAAWL,GAAczG,EAAO0B,CAAM,EAAE,SAC9C,OAAOmK,GAAc/E,EAAU,EAAG,EAAE,CACtC,CACA,IAAMgF,EAAW9L,EAEjB,GADkB8L,EAAS,MAAM,KAAK,EAAE,KAAKC,GAAKA,EAAE,OAAO,CAAC,GAAK,KAAOA,EAAE,OAAO,CAAC,GAAK,GAAG,EAC3E,CACb,IAAMC,EAAMH,GAAc,EAAG,EAAG,EAAE,EAClC,OAAAG,EAAI,QAAU,GACdA,EAAI,SAAWF,EACRE,CACT,CACA,IAAMtF,EAAUD,GAAcqF,EAAUpK,CAAM,EAC9C,OAAOmK,GAAcnF,EAAQ,SAAUA,EAAQ,MAAOA,EAAQ,MAAM,CACtE,CACA,SAASuF,GAA0BhE,EAAS,CAC1C,OAAIA,GACFA,EAAUwD,GAAA,GACLxD,GAEDA,EAAQ,SACVA,EAAQ,OAAYsD,IAAgBtD,EAAQ,MAAS,IAGvDA,EAAU,CAAC,EAENA,CACT,CACA,SAAS4D,GAAc/E,EAAUC,EAAOC,EAAQ,CAC9C,MAAO,CACL,SAAAF,EACA,MAAAC,EACA,OAAAC,CACF,CACF,CACA,SAASkF,GAA0BzH,EAAS3B,EAAWqJ,EAAeC,EAAgBtF,EAAUC,EAAOC,EAAS,KAAMqF,EAAc,GAAO,CACzI,MAAO,CACL,KAAM,EACN,QAAA5H,EACA,UAAA3B,EACA,cAAAqJ,EACA,eAAAC,EACA,SAAAtF,EACA,MAAAC,EACA,UAAWD,EAAWC,EACtB,OAAAC,EACA,YAAAqF,CACF,CACF,CAuGA,SAASC,GAAwB1B,EAAQ2B,EAAaP,EAAKQ,EAAgBC,EAAgBC,EAAiB,IAAI,IAAOC,EAAc,IAAI,IAAO1E,EAAS2E,EAAiBlL,EAAS,CAAC,EAAG,CACrL,OAAO,IAAImL,GAAgC,EAAE,eAAejC,EAAQ2B,EAAaP,EAAKQ,EAAgBC,EAAgBC,EAAgBC,EAAa1E,EAAS2E,EAAiBlL,CAAM,CACrL,CA+pBA,SAASoL,GAAYzJ,EAAQ0J,EAAgB,EAAG,CAC9C,IAAMC,EAAO,KAAK,IAAI,GAAID,EAAgB,CAAC,EAC3C,OAAO,KAAK,MAAM1J,EAAS2J,CAAI,EAAIA,CACrC,CACA,SAASC,IAAcvE,EAAOwE,EAAW,CACvC,IAAM3F,EAAS,IAAI,IACf4F,EACJ,OAAAzE,EAAM,QAAQwC,GAAS,CACrB,GAAIA,IAAU,IAAK,CACjBiC,IAAkBD,EAAU,KAAK,EACjC,QAAS1M,KAAQ2M,EACf5F,EAAO,IAAI/G,EAAMoD,EAAU,CAE/B,KACE,QAAS,CAACpD,EAAMgD,CAAG,IAAK0H,EACtB3D,EAAO,IAAI/G,EAAMgD,CAAG,CAG1B,CAAC,EACM+D,CACT,CACA,SAAS6F,GAA4B3I,EAASC,EAAaC,EAAWC,EAASyI,EAAqBC,EAAYC,EAAUC,EAAWC,EAAiBtB,EAAeC,EAAgB/H,EAAW3C,EAAQ,CACtM,MAAO,CACL,KAAM,EACN,QAAA+C,EACA,YAAAC,EACA,oBAAA2I,EACA,UAAA1I,EACA,WAAA2I,EACA,QAAA1I,EACA,SAAA2I,EACA,UAAAC,EACA,gBAAAC,EACA,cAAAtB,EACA,eAAAC,EACA,UAAA/H,EACA,OAAA3C,CACF,CACF,CA6GA,SAASgM,IAA0BC,EAAUC,EAAcC,EAAWpJ,EAASyD,EAAQ,CACrF,OAAOyF,EAAS,KAAKG,GAAMA,EAAGF,EAAcC,EAAWpJ,EAASyD,CAAM,CAAC,CACzE,CACA,SAAS6F,GAAmBC,EAAYC,EAAU,CAChD,IAAMpI,EAAS4F,GAAA,GACVwC,GAEL,cAAO,QAAQD,CAAU,EAAE,QAAQ,CAAC,CAACjJ,EAAK/E,CAAK,IAAM,CAC/CA,GAAS,OACX6F,EAAOd,CAAG,EAAI/E,EAElB,CAAC,EACM6F,CACT,CA4BA,SAASqI,IAAazM,EAAMuK,EAAKnJ,EAAY,CAC3C,OAAO,IAAIsL,GAAiB1M,EAAMuK,EAAKnJ,CAAU,CACnD,CAkCA,SAASuL,IAAyB1J,EAAa2J,EAAQxL,EAAY,CACjE,IAAMyL,EAAW,CAAC,CAAC3J,EAAWC,IAAY,EAAI,EACxC2J,EAAY,CAChB,KAAM/E,GAAsB,SAC5B,MAAO,CAAC,EACR,QAAS,IACX,EACMgF,EAAa,CACjB,KAAMhF,GAAsB,WAC5B,UAAA+E,EACA,SAAAD,EACA,QAAS,KACT,WAAY,EACZ,SAAU,CACZ,EACA,OAAO,IAAIG,GAA2B/J,EAAa8J,EAAYH,CAAM,CACvE,CACA,SAASK,GAAkBC,EAAUC,EAAMC,EAAM,CAC3CF,EAAS,IAAIC,CAAI,EACdD,EAAS,IAAIE,CAAI,GACpBF,EAAS,IAAIE,EAAMF,EAAS,IAAIC,CAAI,CAAC,EAE9BD,EAAS,IAAIE,CAAI,GAC1BF,EAAS,IAAIC,EAAMD,EAAS,IAAIE,CAAI,CAAC,CAEzC,CAk7CA,SAASC,IAAmBhK,EAAKC,EAAK/E,EAAO,CAC3C,IAAI+O,EAAgBjK,EAAI,IAAIC,CAAG,EAC/B,GAAIgK,EAAe,CACjB,GAAIA,EAAc,OAAQ,CACxB,IAAMC,EAAQD,EAAc,QAAQ/O,CAAK,EACzC+O,EAAc,OAAOC,EAAO,CAAC,CAC/B,CACID,EAAc,QAAU,GAC1BjK,EAAI,OAAOC,CAAG,CAElB,CACA,OAAOgK,CACT,CACA,SAASE,IAAsBjP,EAAO,CAIpC,OAAOA,GAAwB,IACjC,CACA,SAASkP,GAAc5F,EAAM,CAC3B,OAAOA,GAAQA,EAAK,WAAgB,CACtC,CACA,SAAS6F,IAAoBpL,EAAW,CACtC,OAAOA,GAAa,SAAWA,GAAa,MAC9C,CACA,SAASqL,GAAa3K,EAASzE,EAAO,CACpC,IAAMqP,EAAW5K,EAAQ,MAAM,QAC/B,OAAAA,EAAQ,MAAM,QAAUzE,GAAwB,OACzCqP,CACT,CACA,SAASC,GAAsBC,EAAW3E,EAAQ4E,EAAUC,EAAiBC,EAAc,CACzF,IAAMC,EAAY,CAAC,EACnBH,EAAS,QAAQ/K,GAAWkL,EAAU,KAAKP,GAAa3K,CAAO,CAAC,CAAC,EACjE,IAAMmL,EAAiB,CAAC,EACxBH,EAAgB,QAAQ,CAACI,EAAOpL,IAAY,CAC1C,IAAM8C,EAAS,IAAI,IACnBsI,EAAM,QAAQrP,GAAQ,CACpB,IAAMR,EAAQ4K,EAAO,aAAanG,EAASjE,EAAMkP,CAAY,EAC7DnI,EAAO,IAAI/G,EAAMR,CAAK,GAGlB,CAACA,GAASA,EAAM,QAAU,KAC5ByE,EAAQqL,EAAY,EAAIC,IACxBH,EAAe,KAAKnL,CAAO,EAE/B,CAAC,EACD8K,EAAU,IAAI9K,EAAS8C,CAAM,CAC/B,CAAC,EAGD,IAAI2B,EAAI,EACR,OAAAsG,EAAS,QAAQ/K,GAAW2K,GAAa3K,EAASkL,EAAUzG,GAAG,CAAC,CAAC,EAC1D0G,CACT,CAWA,SAASI,GAAaC,EAAOC,EAAO,CAClC,IAAMC,EAAU,IAAI,IAEpB,GADAF,EAAM,QAAQG,GAAQD,EAAQ,IAAIC,EAAM,CAAC,CAAC,CAAC,EACvCF,EAAM,QAAU,EAAG,OAAOC,EAC9B,IAAME,EAAY,EACZC,EAAU,IAAI,IAAIJ,CAAK,EACvBK,EAAe,IAAI,IACzB,SAASC,EAAQlH,EAAM,CACrB,GAAI,CAACA,EAAM,OAAO+G,EAClB,IAAID,EAAOG,EAAa,IAAIjH,CAAI,EAChC,GAAI8G,EAAM,OAAOA,EACjB,IAAM9K,EAASgE,EAAK,WACpB,OAAI6G,EAAQ,IAAI7K,CAAM,EAEpB8K,EAAO9K,EACEgL,EAAQ,IAAIhL,CAAM,EAE3B8K,EAAOC,EAGPD,EAAOI,EAAQlL,CAAM,EAEvBiL,EAAa,IAAIjH,EAAM8G,CAAI,EACpBA,CACT,CACA,OAAAF,EAAM,QAAQ5G,GAAQ,CACpB,IAAM8G,EAAOI,EAAQlH,CAAI,EACrB8G,IAASC,GACXF,EAAQ,IAAIC,CAAI,EAAE,KAAK9G,CAAI,CAE/B,CAAC,EACM6G,CACT,CACA,SAASM,GAAShM,EAASiM,EAAW,CACpCjM,EAAQ,WAAW,IAAIiM,CAAS,CAClC,CACA,SAASC,GAAYlM,EAASiM,EAAW,CACvCjM,EAAQ,WAAW,OAAOiM,CAAS,CACrC,CACA,SAASE,IAA8BC,EAAQpM,EAAShC,EAAS,CAC/DD,GAAoBC,CAAO,EAAE,OAAO,IAAMoO,EAAO,iBAAiBpM,CAAO,CAAC,CAC5E,CACA,SAASqM,IAAoBrO,EAAS,CACpC,IAAMsO,EAAe,CAAC,EACtB,OAAAC,GAA0BvO,EAASsO,CAAY,EACxCA,CACT,CACA,SAASC,GAA0BvO,EAASsO,EAAc,CACxD,QAAS7H,EAAI,EAAGA,EAAIzG,EAAQ,OAAQyG,IAAK,CACvC,IAAMpF,EAASrB,EAAQyG,CAAC,EACpBpF,aAAkBnB,GACpBqO,GAA0BlN,EAAO,QAASiN,CAAY,EAEtDA,EAAa,KAAKjN,CAAM,CAE5B,CACF,CACA,SAASmN,IAAUC,EAAGC,EAAG,CACvB,IAAMC,EAAK,OAAO,KAAKF,CAAC,EAClBG,EAAK,OAAO,KAAKF,CAAC,EACxB,GAAIC,EAAG,QAAUC,EAAG,OAAQ,MAAO,GACnC,QAASnI,EAAI,EAAGA,EAAIkI,EAAG,OAAQlI,IAAK,CAClC,IAAM1I,EAAO4Q,EAAGlI,CAAC,EACjB,GAAI,CAACiI,EAAE,eAAe3Q,CAAI,GAAK0Q,EAAE1Q,CAAI,IAAM2Q,EAAE3Q,CAAI,EAAG,MAAO,EAC7D,CACA,MAAO,EACT,CACA,SAAS8Q,GAAuB7M,EAAS8M,EAAqBC,EAAsB,CAClF,IAAMC,EAAYD,EAAqB,IAAI/M,CAAO,EAClD,GAAI,CAACgN,EAAW,MAAO,GACvB,IAAIC,EAAWH,EAAoB,IAAI9M,CAAO,EAC9C,OAAIiN,EACFD,EAAU,QAAQjN,GAAQkN,EAAS,IAAIlN,CAAI,CAAC,EAE5C+M,EAAoB,IAAI9M,EAASgN,CAAS,EAE5CD,EAAqB,OAAO/M,CAAO,EAC5B,EACT,CA6FA,SAASkN,IAA2BlN,EAAS8C,EAAQ,CACnD,IAAIqK,EAAc,KACdC,EAAY,KAChB,OAAI,MAAM,QAAQtK,CAAM,GAAKA,EAAO,QAClCqK,EAAcE,GAA0BvK,EAAO,CAAC,CAAC,EAC7CA,EAAO,OAAS,IAClBsK,EAAYC,GAA0BvK,EAAOA,EAAO,OAAS,CAAC,CAAC,IAExDA,aAAkB,MAC3BqK,EAAcE,GAA0BvK,CAAM,GAEzCqK,GAAeC,EAAY,IAAIE,IAAmBtN,EAASmN,EAAaC,CAAS,EAAI,IAC9F,CAiEA,SAASC,GAA0BvK,EAAQ,CACzC,IAAI1B,EAAS,KACb,OAAA0B,EAAO,QAAQ,CAAC/D,EAAKhD,IAAS,CACxBwR,IAAqBxR,CAAI,IAC3BqF,EAASA,GAAU,IAAI,IACvBA,EAAO,IAAIrF,EAAMgD,CAAG,EAExB,CAAC,EACMqC,CACT,CACA,SAASmM,IAAqBxR,EAAM,CAClC,OAAOA,IAAS,WAAaA,IAAS,UACxC,CA8ZA,SAASyR,IAAyBC,EAAQ,CACxC,OAAQA,EAAQ,CACd,IAAK,OACH,OAAO,SAAS,KAClB,IAAK,WACH,OAAO,SACT,IAAK,SACH,OAAO,OACT,QACE,OAAOA,CACX,CACF,CACA,SAASC,IAAyBzN,EAAa,CAC7C,IAAM0N,EAAW1N,EAAY,QAAQ,GAAG,EAClC2N,EAAU3N,EAAY,UAAU,EAAG0N,CAAQ,EAC3ClQ,EAAQwC,EAAY,MAAM0N,EAAW,CAAC,EAC5C,MAAO,CAACC,EAASnQ,CAAK,CACxB,CA70IA,IA6NMqD,IAaFG,GACAE,GAuDA0M,GAwDEC,GAMAC,GASAhM,IACAiM,GACAC,IACAC,GACAC,GACAC,GACAxH,GACAyH,GACAxH,GAgHAjD,GA0BAM,IAgEAoK,IACAC,GAyCA9I,GAqDAI,GACAC,GAgBAY,GACAC,IAwCA6H,GACAlI,GA4XAmI,GAuFAC,GAmBAC,IACAC,IACAC,IACAC,IACAC,IAkFA3G,GAqRA4G,GACAC,GAgIAC,GAoMAC,GA2GAC,GACApF,GAyHAqF,GA8BA3F,GA2DA4F,IACAC,GA8HAC,GACAC,IACAC,GACAC,IACAC,IACAC,IACAC,IACAC,GAOAzE,IAOAD,GACA2E,GAsCAC,GACAC,GACAC,GAgWAC,GA2yBAC,GAwPAC,GAiHFhD,IAqEEiD,GAsLAC,GA0FAC,GACAC,GACAC,GAsGAC,GAuDAC,GA90INC,GAAAC,EAAA,KAMAC,KACAC,IACAA,IAqNMnQ,IAAwC,OAAO,SAAa,IAAc,KAAO,SAAS,gBAa5FG,GAAe,KACfE,GAAa,GAuDb0M,IAAoC,IAAM,CAC5C,MAAMA,CAAoB,CAIxB,sBAAsB9R,EAAM,CAC1B,OAAOiF,IAAsBjF,CAAI,CACnC,CAKA,gBAAgBuF,EAAMC,EAAM,CAC1B,OAAOF,GAAgBC,EAAMC,CAAI,CACnC,CAIA,iBAAiBvB,EAAS,CACxB,OAAOY,GAAiBZ,CAAO,CACjC,CAKA,MAAMA,EAAStD,EAAU+E,EAAO,CAC9B,OAAOD,GAAYxB,EAAStD,EAAU+E,CAAK,CAC7C,CAIA,aAAazB,EAASjE,EAAMwE,EAAc,CACxC,OAAOA,GAAgB,EACzB,CAIA,QAAQP,EAAS3B,EAAWgE,EAAUC,EAAOC,EAAQ2O,EAAkB,CAAC,EAAGC,EAAyB,CAClG,OAAO,IAAIlT,GAAoBoE,EAAUC,CAAK,CAChD,CACA,OAAO,UAAO,SAAqC8O,EAAmB,CACpE,OAAO,IAAKA,GAAqBvD,EACnC,EACA,OAAO,WAA0BwD,GAAmB,CAClD,MAAOxD,EACP,QAASA,EAAoB,SAC/B,CAAC,CACH,CACA,OAAOA,CACT,GAAG,EAOGC,GAAN,KAAsB,CAIpB,OAAO,KAAoB,IAAID,EACjC,EACME,GAAN,KAA+B,CAAC,EAS1BhM,IAAa,IACbiM,GAA0B,KAC1BC,IAAwB,KACxBC,GAAkB,WAClBC,GAAkB,WAClBC,GAAuB,aACvBxH,GAAsB,cACtByH,GAAyB,eACzBxH,GAAwB,gBAgHxBjD,GAA2B,IAAI,OAAO,GAAGoK,EAAuB,gBAAgBC,GAAqB,GAAI,GAAG,EA0B5G/J,IAAmB,gBAgEnBoK,IAAoC,IAAI,IAAI,CAAC,QAAS,SAAU,WAAY,YAAa,WAAY,YAAa,OAAQ,MAAO,SAAU,QAAS,WAAY,eAAgB,gBAAiB,aAAc,cAAe,gBAAiB,eAAgB,YAAa,aAAc,eAAgB,cAAe,eAAgB,cAAe,iBAAkB,kBAAmB,mBAAoB,oBAAqB,aAAc,aAAa,CAAC,EAClcC,GAAN,cAA2CR,EAAyB,CAClE,sBAAsBuD,EAAcrU,EAAQ,CAC1C,OAAOgG,GAAoBqO,CAAY,CACzC,CACA,oBAAoBhW,EAAsBiW,EAAoBhW,EAAO0B,EAAQ,CAC3E,IAAI6E,EAAO,GACL0P,EAASjW,EAAM,SAAS,EAAE,KAAK,EACrC,GAAI+S,IAAqB,IAAIiD,CAAkB,GAAKhW,IAAU,GAAKA,IAAU,IAC3E,GAAI,OAAOA,GAAU,SACnBuG,EAAO,SACF,CACL,IAAM2P,EAAoBlW,EAAM,MAAM,wBAAwB,EAC1DkW,GAAqBA,EAAkB,CAAC,EAAE,QAAU,GACtDxU,EAAO,KAAK5B,IAAoBC,EAAsBC,CAAK,CAAC,CAEhE,CAEF,OAAOiW,EAAS1P,CAClB,CACF,EAsBM2D,GAAY,IAqDZI,GAAmC,IAAI,IAAI,CAAC,OAAQ,GAAG,CAAC,EACxDC,GAAoC,IAAI,IAAI,CAAC,QAAS,GAAG,CAAC,EAgB1DY,GAAa,QACbC,IAAgC,IAAI,OAAO,KAAKD,EAAU,OAAQ,GAAG,EAwCrE8H,GAAgB,GAChBlI,GAAN,KAAiC,CAC/B,QACA,YAAYoL,EAAS,CACnB,KAAK,QAAUA,CACjB,CACA,MAAMtL,EAAUnJ,EAAQoJ,EAAU,CAChC,IAAMvB,EAAU,IAAI2J,GAA2BxR,CAAM,EACrD,YAAK,8BAA8B6H,CAAO,EAC9BH,GAAa,KAAMvB,GAAwBgD,CAAQ,EAAGtB,CAAO,CAO3E,CACA,8BAA8BA,EAAS,CACrCA,EAAQ,qBAAuB0J,GAC/B1J,EAAQ,gBAAkB,IAAI,IAC9BA,EAAQ,gBAAgB,IAAI0J,GAAe,IAAI,GAAK,EACpD1J,EAAQ,YAAc,CACxB,CACA,aAAasB,EAAUtB,EAAS,CAC9B,IAAI6M,EAAa7M,EAAQ,WAAa,EAClC8M,EAAW9M,EAAQ,SAAW,EAC5B8E,EAAS,CAAC,EACViI,EAAc,CAAC,EACrB,OAAIzL,EAAS,KAAK,OAAO,CAAC,GAAK,KAC7BtB,EAAQ,OAAO,KAAKtJ,IAAe,CAAC,EAEtC4K,EAAS,YAAY,QAAQ0L,GAAO,CAElC,GADA,KAAK,8BAA8BhN,CAAO,EACtCgN,EAAI,MAAQ/M,GAAsB,MAAO,CAC3C,IAAMgN,EAAWD,EACX9U,EAAO+U,EAAS,KACtB/U,EAAK,SAAS,EAAE,MAAM,SAAS,EAAE,QAAQgV,GAAK,CAC5CD,EAAS,KAAOC,EAChBpI,EAAO,KAAK,KAAK,WAAWmI,EAAUjN,CAAO,CAAC,CAChD,CAAC,EACDiN,EAAS,KAAO/U,CAClB,SAAW8U,EAAI,MAAQ/M,GAAsB,WAAY,CACvD,IAAMgF,EAAa,KAAK,gBAAgB+H,EAAKhN,CAAO,EACpD6M,GAAc5H,EAAW,WACzB6H,GAAY7H,EAAW,SACvB8H,EAAY,KAAK9H,CAAU,CAC7B,MACEjF,EAAQ,OAAO,KAAKrJ,IAAkB,CAAC,CAE3C,CAAC,EACM,CACL,KAAMsJ,GAAsB,QAC5B,KAAMqB,EAAS,KACf,OAAAwD,EACA,YAAAiI,EACA,WAAAF,EACA,SAAAC,EACA,QAAS,IACX,CACF,CACA,WAAWxL,EAAUtB,EAAS,CAC5B,IAAMmN,EAAW,KAAK,WAAW7L,EAAS,OAAQtB,CAAO,EACnDoN,EAAY9L,EAAS,SAAWA,EAAS,QAAQ,QAAU,KACjE,GAAI6L,EAAS,sBAAuB,CAClC,IAAMrW,EAAc,IAAI,IAClB6H,EAASyO,GAAa,CAAC,EAC7BD,EAAS,OAAO,QAAQE,GAAS,CAC3BA,aAAiB,KACnBA,EAAM,QAAQ5W,GAAS,CACrBmI,GAAmBnI,CAAK,EAAE,QAAQ6W,GAAO,CAClC3O,EAAO,eAAe2O,CAAG,GAC5BxW,EAAY,IAAIwW,CAAG,CAEvB,CAAC,CACH,CAAC,CAEL,CAAC,EACGxW,EAAY,MACdkJ,EAAQ,OAAO,KAAKpJ,IAAa0K,EAAS,KAAM,CAAC,GAAGxK,EAAY,OAAO,CAAC,CAAC,CAAC,CAE9E,CACA,MAAO,CACL,KAAMmJ,GAAsB,MAC5B,KAAMqB,EAAS,KACf,MAAO6L,EACP,QAASC,EAAY,CACnB,OAAQA,CACV,EAAI,IACN,CACF,CACA,gBAAgB9L,EAAUtB,EAAS,CACjCA,EAAQ,WAAa,EACrBA,EAAQ,SAAW,EACnB,IAAMgF,EAAYnF,GAAa,KAAMvB,GAAwBgD,EAAS,SAAS,EAAGtB,CAAO,EACnF+E,EAAW7E,IAAoBoB,EAAS,KAAMtB,EAAQ,MAAM,EAClE,MAAO,CACL,KAAMC,GAAsB,WAC5B,SAAA8E,EACA,UAAAC,EACA,WAAYhF,EAAQ,WACpB,SAAUA,EAAQ,SAClB,QAAS0C,GAA0BpB,EAAS,OAAO,CACrD,CACF,CACA,cAAcA,EAAUtB,EAAS,CAC/B,MAAO,CACL,KAAMC,GAAsB,SAC5B,MAAOqB,EAAS,MAAM,IAAIiM,GAAK1N,GAAa,KAAM0N,EAAGvN,CAAO,CAAC,EAC7D,QAAS0C,GAA0BpB,EAAS,OAAO,CACrD,CACF,CACA,WAAWA,EAAUtB,EAAS,CAC5B,IAAMwN,EAAcxN,EAAQ,YACxByN,EAAe,EACblP,EAAQ+C,EAAS,MAAM,IAAIoM,GAAQ,CACvC1N,EAAQ,YAAcwN,EACtB,IAAMG,EAAW9N,GAAa,KAAM6N,EAAM1N,CAAO,EACjD,OAAAyN,EAAe,KAAK,IAAIA,EAAczN,EAAQ,WAAW,EAClD2N,CACT,CAAC,EACD,OAAA3N,EAAQ,YAAcyN,EACf,CACL,KAAMxN,GAAsB,MAC5B,MAAA1B,EACA,QAASmE,GAA0BpB,EAAS,OAAO,CACrD,CACF,CACA,aAAaA,EAAUtB,EAAS,CAC9B,IAAM4N,EAAYvL,IAAmBf,EAAS,QAAStB,EAAQ,MAAM,EACrEA,EAAQ,sBAAwB4N,EAChC,IAAIT,EACAU,EAAgBvM,EAAS,OAASA,EAAS,OAAS+L,GAAM,CAAC,CAAC,EAChE,GAAIQ,EAAc,MAAQ5N,GAAsB,UAC9CkN,EAAW,KAAK,eAAeU,EAAe7N,CAAO,MAChD,CACL,IAAI6N,EAAgBvM,EAAS,OACzBwM,EAAU,GACd,GAAI,CAACD,EAAe,CAClBC,EAAU,GACV,IAAMC,EAAe,CAAC,EAClBH,EAAU,SACZG,EAAa,OAAYH,EAAU,QAErCC,EAAgBR,GAAMU,CAAY,CACpC,CACA/N,EAAQ,aAAe4N,EAAU,SAAWA,EAAU,MACtD,IAAMI,EAAY,KAAK,WAAWH,EAAe7N,CAAO,EACxDgO,EAAU,YAAcF,EACxBX,EAAWa,CACb,CACA,OAAAhO,EAAQ,sBAAwB,KACzB,CACL,KAAMC,GAAsB,QAC5B,QAAS2N,EACT,MAAOT,EACP,QAAS,IACX,CACF,CACA,WAAW7L,EAAUtB,EAAS,CAC5B,IAAMyC,EAAM,KAAK,cAAcnB,EAAUtB,CAAO,EAChD,YAAK,kBAAkByC,EAAKzC,CAAO,EAC5ByC,CACT,CACA,cAAcnB,EAAUtB,EAAS,CAC/B,IAAMhC,EAAS,CAAC,EACViQ,EAAiB,MAAM,QAAQ3M,EAAS,MAAM,EAAIA,EAAS,OAAS,CAACA,EAAS,MAAM,EAC1F,QAASc,KAAc6L,EACjB,OAAO7L,GAAe,SACpBA,IAAe/H,GACjB2D,EAAO,KAAKoE,CAAU,EAEtBpC,EAAQ,OAAO,KAAKjJ,IAAkBqL,CAAU,CAAC,EAGnDpE,EAAO,KAAK,IAAI,IAAI,OAAO,QAAQoE,CAAU,CAAC,CAAC,EAGnD,IAAI8L,EAAwB,GACxBC,EAAkB,KACtB,OAAAnQ,EAAO,QAAQoQ,GAAa,CAC1B,GAAIA,aAAqB,MACnBA,EAAU,IAAI,QAAQ,IACxBD,EAAkBC,EAAU,IAAI,QAAQ,EACxCA,EAAU,OAAO,QAAQ,GAEvB,CAACF,IACH,QAASzX,KAAS2X,EAAU,OAAO,EACjC,GAAI3X,EAAM,SAAS,EAAE,QAAQyS,EAAuB,GAAK,EAAG,CAC1DgF,EAAwB,GACxB,KACF,EAIR,CAAC,EACM,CACL,KAAMjO,GAAsB,MAC5B,OAAAjC,EACA,OAAQmQ,EACR,OAAQ7M,EAAS,OACjB,sBAAA4M,EACA,QAAS,IACX,CACF,CACA,kBAAkBzL,EAAKzC,EAAS,CAC9B,IAAM7C,EAAU6C,EAAQ,sBACpBqO,EAAUrO,EAAQ,YAClBsO,EAAYtO,EAAQ,YACpB7C,GAAWmR,EAAY,IACzBA,GAAanR,EAAQ,SAAWA,EAAQ,OAE1CsF,EAAI,OAAO,QAAQ8L,GAAS,CACtB,OAAOA,GAAU,UACrBA,EAAM,QAAQ,CAAC9X,EAAOQ,IAAS,CAU7B,IAAMuX,EAAkBxO,EAAQ,gBAAgB,IAAIA,EAAQ,oBAAoB,EAC1EyO,EAAiBD,EAAgB,IAAIvX,CAAI,EAC3CyX,EAAuB,GACvBD,IACEH,GAAaD,GAAWC,GAAaG,EAAe,WAAaJ,GAAWI,EAAe,UAC7FzO,EAAQ,OAAO,KAAKhJ,IAAyBC,EAAMwX,EAAe,UAAWA,EAAe,QAASH,EAAWD,CAAO,CAAC,EACxHK,EAAuB,IAKzBJ,EAAYG,EAAe,WAEzBC,GACFF,EAAgB,IAAIvX,EAAM,CACxB,UAAAqX,EACA,QAAAD,CACF,CAAC,EAECrO,EAAQ,SACVvB,IAAoBhI,EAAOuJ,EAAQ,QAASA,EAAQ,MAAM,CAE9D,CAAC,CACH,CAAC,CACH,CACA,eAAesB,EAAUtB,EAAS,CAChC,IAAMyC,EAAM,CACV,KAAMxC,GAAsB,UAC5B,OAAQ,CAAC,EACT,QAAS,IACX,EACA,GAAI,CAACD,EAAQ,sBACX,OAAAA,EAAQ,OAAO,KAAK1I,IAAiB,CAAC,EAC/BmL,EAET,IAAMkM,EAAsB,EACxBC,EAA4B,EAC1BC,EAAU,CAAC,EACbC,EAAoB,GACpBC,EAAsB,GACtBpV,EAAiB,EACfJ,EAAY+H,EAAS,MAAM,IAAItD,IAAU,CAC7C,IAAMqP,GAAQ,KAAK,cAAcrP,GAAQgC,CAAO,EAC5CgP,GAAY3B,GAAM,QAAU,KAAOA,GAAM,OAASlL,IAAckL,GAAM,MAAM,EAC5EvT,GAAS,EACb,OAAIkV,IAAa,OACfJ,IACA9U,GAASuT,GAAM,OAAS2B,IAE1BD,EAAsBA,GAAuBjV,GAAS,GAAKA,GAAS,EACpEgV,EAAoBA,GAAqBhV,GAASH,EAClDA,EAAiBG,GACjB+U,EAAQ,KAAK/U,EAAM,EACZuT,EACT,CAAC,EACG0B,GACF/O,EAAQ,OAAO,KAAKzI,IAAc,CAAC,EAEjCuX,GACF9O,EAAQ,OAAO,KAAKxI,IAA0B,CAAC,EAEjD,IAAMyX,EAAS3N,EAAS,MAAM,OAC1B4N,EAAkB,EAClBN,EAA4B,GAAKA,EAA4BK,EAC/DjP,EAAQ,OAAO,KAAKvI,IAAwB,CAAC,EACpCmX,GAA6B,IACtCM,EAAkBP,GAAuBM,EAAS,IAEpD,IAAME,EAAQF,EAAS,EACjBzB,EAAcxN,EAAQ,YACtBoP,GAAwBpP,EAAQ,sBAChCqP,GAAkBD,GAAsB,SAC9C,OAAA7V,EAAU,QAAQ,CAACM,GAAI8F,KAAM,CAC3B,IAAM7F,GAASoV,EAAkB,EAAIvP,IAAKwP,EAAQ,EAAID,EAAkBvP,GAAIkP,EAAQlP,EAAC,EAC/E2P,GAAwBxV,GAASuV,GACvCrP,EAAQ,YAAcwN,EAAc4B,GAAsB,MAAQE,GAClEF,GAAsB,SAAWE,GACjC,KAAK,kBAAkBzV,GAAImG,CAAO,EAClCnG,GAAG,OAASC,GACZ2I,EAAI,OAAO,KAAK5I,EAAE,CACpB,CAAC,EACM4I,CACT,CACA,eAAenB,EAAUtB,EAAS,CAChC,MAAO,CACL,KAAMC,GAAsB,UAC5B,UAAWJ,GAAa,KAAMvB,GAAwBgD,EAAS,SAAS,EAAGtB,CAAO,EAClF,QAAS0C,GAA0BpB,EAAS,OAAO,CACrD,CACF,CACA,kBAAkBA,EAAUtB,EAAS,CACnC,OAAAA,EAAQ,WACD,CACL,KAAMC,GAAsB,aAC5B,QAASyC,GAA0BpB,EAAS,OAAO,CACrD,CACF,CACA,gBAAgBA,EAAUtB,EAAS,CACjC,MAAO,CACL,KAAMC,GAAsB,WAC5B,UAAW,KAAK,eAAeqB,EAAS,UAAWtB,CAAO,EAC1D,QAAS0C,GAA0BpB,EAAS,OAAO,CACrD,CACF,CACA,WAAWA,EAAUtB,EAAS,CAC5B,IAAMuP,EAAiBvP,EAAQ,qBACzBtB,EAAU4C,EAAS,SAAW,CAAC,EACrCtB,EAAQ,aACRA,EAAQ,aAAesB,EACvB,GAAM,CAAC1J,EAAU4X,CAAW,EAAI/N,IAAkBH,EAAS,QAAQ,EACnEtB,EAAQ,qBAAuBuP,EAAe,OAASA,EAAiB,IAAM3X,EAAWA,EACzF0D,GAAqB0E,EAAQ,gBAAiBA,EAAQ,qBAAsB,IAAI,GAAK,EACrF,IAAMgF,EAAYnF,GAAa,KAAMvB,GAAwBgD,EAAS,SAAS,EAAGtB,CAAO,EACzF,OAAAA,EAAQ,aAAe,KACvBA,EAAQ,qBAAuBuP,EACxB,CACL,KAAMtP,GAAsB,MAC5B,SAAArI,EACA,MAAO8G,EAAQ,OAAS,EACxB,SAAU,CAAC,CAACA,EAAQ,SACpB,YAAA8Q,EACA,UAAAxK,EACA,iBAAkB1D,EAAS,SAC3B,QAASoB,GAA0BpB,EAAS,OAAO,CACrD,CACF,CACA,aAAaA,EAAUtB,EAAS,CACzBA,EAAQ,cACXA,EAAQ,OAAO,KAAKtI,IAAe,CAAC,EAEtC,IAAMyF,EAAUmE,EAAS,UAAY,OAAS,CAC5C,SAAU,EACV,MAAO,EACP,OAAQ,MACV,EAAIpE,GAAcoE,EAAS,QAAStB,EAAQ,OAAQ,EAAI,EACxD,MAAO,CACL,KAAMC,GAAsB,QAC5B,UAAWJ,GAAa,KAAMvB,GAAwBgD,EAAS,SAAS,EAAGtB,CAAO,EAClF,QAAA7C,EACA,QAAS,IACX,CACF,CACF,EAgBMwM,GAAN,KAAiC,CAC/B,OACA,WAAa,EACb,SAAW,EACX,kBAAoB,KACpB,aAAe,KACf,qBAAuB,KACvB,sBAAwB,KACxB,YAAc,EACd,gBAA+B,IAAI,IACnC,QAAU,KACV,8BAA6C,IAAI,IACjD,YAAYxR,EAAQ,CAClB,KAAK,OAASA,CAChB,CACF,EAwEMyR,GAAN,KAA4B,CAC1B,KAAoB,IAAI,IACxB,IAAI1O,EAAS,CACX,OAAO,KAAK,KAAK,IAAIA,CAAO,GAAK,CAAC,CACpC,CACA,OAAOA,EAASuU,EAAc,CAC5B,IAAIC,EAAuB,KAAK,KAAK,IAAIxU,CAAO,EAC3CwU,GACH,KAAK,KAAK,IAAIxU,EAASwU,EAAuB,CAAC,CAAC,EAElDA,EAAqB,KAAK,GAAGD,CAAY,CAC3C,CACA,IAAIvU,EAAS,CACX,OAAO,KAAK,KAAK,IAAIA,CAAO,CAC9B,CACA,OAAQ,CACN,KAAK,KAAK,MAAM,CAClB,CACF,EACM2O,IAA4B,EAC5BC,IAAc,SACdC,IAAiC,IAAI,OAAOD,IAAa,GAAG,EAC5DE,IAAc,SACdC,IAAiC,IAAI,OAAOD,IAAa,GAAG,EAkF5D1G,GAAN,KAAsC,CACpC,eAAejC,EAAQ2B,EAAaP,EAAKQ,EAAgBC,EAAgBC,EAAgBC,EAAa1E,EAAS2E,EAAiBlL,EAAS,CAAC,EAAG,CAC3IkL,EAAkBA,GAAmB,IAAIuG,GACzC,IAAM5J,EAAU,IAAImK,GAAyB9I,EAAQ2B,EAAaK,EAAiBJ,EAAgBC,EAAgB/K,EAAQ,CAAC,CAAC,EAC7H6H,EAAQ,QAAUtB,EAClB,IAAMlB,EAAQkB,EAAQ,MAAQ7B,GAAmB6B,EAAQ,KAAK,EAAI,EAClEsB,EAAQ,gBAAgB,cAAcxC,CAAK,EAC3CwC,EAAQ,gBAAgB,UAAU,CAACmD,CAAc,EAAG,KAAMnD,EAAQ,OAAQtB,CAAO,EACjFmB,GAAa,KAAM4C,EAAKzC,CAAO,EAE/B,IAAMiE,EAAYjE,EAAQ,UAAU,OAAO2P,GAAYA,EAAS,kBAAkB,CAAC,EAKnF,GAAI1L,EAAU,QAAUb,EAAY,KAAM,CACxC,IAAIwM,EACJ,QAASjQ,GAAIsE,EAAU,OAAS,EAAGtE,IAAK,EAAGA,KAAK,CAC9C,IAAMgQ,GAAW1L,EAAUtE,EAAC,EAC5B,GAAIgQ,GAAS,UAAY3M,EAAa,CACpC4M,EAAmBD,GACnB,KACF,CACF,CACIC,GAAoB,CAACA,EAAiB,wBAAwB,GAChEA,EAAiB,UAAU,CAACxM,CAAW,EAAG,KAAMpD,EAAQ,OAAQtB,CAAO,CAE3E,CACA,OAAOuF,EAAU,OAASA,EAAU,IAAI0L,GAAYA,EAAS,eAAe,CAAC,EAAI,CAAChN,GAA0BK,EAAa,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,EAAGxF,EAAO,GAAI,EAAK,CAAC,CAC3J,CACA,aAAaiF,EAAKzC,EAAS,CAE3B,CACA,WAAWyC,EAAKzC,EAAS,CAEzB,CACA,gBAAgByC,EAAKzC,EAAS,CAE9B,CACA,kBAAkByC,EAAKzC,EAAS,CAC9B,IAAM6P,EAAsB7P,EAAQ,gBAAgB,IAAIA,EAAQ,OAAO,EACvE,GAAI6P,EAAqB,CACvB,IAAMC,EAAe9P,EAAQ,iBAAiByC,EAAI,OAAO,EACnD6L,EAAYtO,EAAQ,gBAAgB,YACpCqO,EAAU,KAAK,sBAAsBwB,EAAqBC,EAAcA,EAAa,OAAO,EAC9FxB,GAAaD,GAGfrO,EAAQ,yBAAyBqO,CAAO,CAE5C,CACArO,EAAQ,aAAeyC,CACzB,CACA,gBAAgBA,EAAKzC,EAAS,CAC5B,IAAM8P,EAAe9P,EAAQ,iBAAiByC,EAAI,OAAO,EACzDqN,EAAa,yBAAyB,EACtC,KAAK,yBAAyB,CAACrN,EAAI,QAASA,EAAI,UAAU,OAAO,EAAGzC,EAAS8P,CAAY,EACzF,KAAK,eAAerN,EAAI,UAAWqN,CAAY,EAC/C9P,EAAQ,yBAAyB8P,EAAa,gBAAgB,WAAW,EACzE9P,EAAQ,aAAeyC,CACzB,CACA,yBAAyBsN,EAAuB/P,EAAS8P,EAAc,CACrE,QAAWE,KAAuBD,EAAuB,CACvD,IAAME,EAAiBD,GAAqB,MAC5C,GAAIC,EAAgB,CAClB,IAAMC,EAAsB,OAAOD,GAAmB,SAAWA,EAAiBpT,GAAmBkC,GAAkBkR,EAAgBD,GAAqB,QAAU,CAAC,EAAGhQ,EAAQ,MAAM,CAAC,EACzL8P,EAAa,cAAcI,CAAmB,CAChD,CACF,CACF,CACA,sBAAsBT,EAAczP,EAAStB,EAAS,CAEpD,IAAI+O,EADczN,EAAQ,gBAAgB,YAIpCzC,EAAWmB,EAAQ,UAAY,KAAO7B,GAAmB6B,EAAQ,QAAQ,EAAI,KAC7ElB,EAAQkB,EAAQ,OAAS,KAAO7B,GAAmB6B,EAAQ,KAAK,EAAI,KAC1E,OAAInB,IAAa,GACfkS,EAAa,QAAQU,GAAe,CAClC,IAAMC,EAAqBpQ,EAAQ,4BAA4BmQ,EAAa5S,EAAUC,CAAK,EAC3FiQ,EAAe,KAAK,IAAIA,EAAc2C,EAAmB,SAAWA,EAAmB,KAAK,CAC9F,CAAC,EAEI3C,CACT,CACA,eAAehL,EAAKzC,EAAS,CAC3BA,EAAQ,cAAcyC,EAAI,QAAS,EAAI,EACvC5C,GAAa,KAAM4C,EAAI,UAAWzC,CAAO,EACzCA,EAAQ,aAAeyC,CACzB,CACA,cAAcA,EAAKzC,EAAS,CAC1B,IAAMqQ,EAAkBrQ,EAAQ,gBAC5BsQ,EAAMtQ,EACJtB,EAAU+D,EAAI,QACpB,GAAI/D,IAAYA,EAAQ,QAAUA,EAAQ,SACxC4R,EAAMtQ,EAAQ,iBAAiBtB,CAAO,EACtC4R,EAAI,yBAAyB,EACzB5R,EAAQ,OAAS,MAAM,CACrB4R,EAAI,aAAa,MAAQrQ,GAAsB,QACjDqQ,EAAI,gBAAgB,sBAAsB,EAC1CA,EAAI,aAAepG,IAErB,IAAM1M,EAAQX,GAAmB6B,EAAQ,KAAK,EAC9C4R,EAAI,cAAc9S,CAAK,CACzB,CAEEiF,EAAI,MAAM,SACZA,EAAI,MAAM,QAAQ,GAAK5C,GAAa,KAAM,EAAGyQ,CAAG,CAAC,EAEjDA,EAAI,gBAAgB,sBAAsB,EAItCA,EAAI,gBAAkBD,GACxBC,EAAI,yBAAyB,GAGjCtQ,EAAQ,aAAeyC,CACzB,CACA,WAAWA,EAAKzC,EAAS,CACvB,IAAMuQ,EAAiB,CAAC,EACpB9C,EAAezN,EAAQ,gBAAgB,YACrCxC,EAAQiF,EAAI,SAAWA,EAAI,QAAQ,MAAQ5F,GAAmB4F,EAAI,QAAQ,KAAK,EAAI,EACzFA,EAAI,MAAM,QAAQ,GAAK,CACrB,IAAMqN,EAAe9P,EAAQ,iBAAiByC,EAAI,OAAO,EACrDjF,GACFsS,EAAa,cAActS,CAAK,EAElCqC,GAAa,KAAM,EAAGiQ,CAAY,EAClCrC,EAAe,KAAK,IAAIA,EAAcqC,EAAa,gBAAgB,WAAW,EAC9ES,EAAe,KAAKT,EAAa,eAAe,CAClD,CAAC,EAIDS,EAAe,QAAQZ,GAAY3P,EAAQ,gBAAgB,6BAA6B2P,CAAQ,CAAC,EACjG3P,EAAQ,yBAAyByN,CAAY,EAC7CzN,EAAQ,aAAeyC,CACzB,CACA,aAAaA,EAAKzC,EAAS,CACzB,GAAIyC,EAAI,QAAS,CACf,IAAMF,EAAWE,EAAI,SACf+N,EAAcxQ,EAAQ,OAASjB,GAAkBwD,EAAUvC,EAAQ,OAAQA,EAAQ,MAAM,EAAIuC,EACnG,OAAOrF,GAAcsT,EAAaxQ,EAAQ,MAAM,CAClD,KACE,OAAO,CACL,SAAUyC,EAAI,SACd,MAAOA,EAAI,MACX,OAAQA,EAAI,MACd,CAEJ,CACA,aAAaA,EAAKzC,EAAS,CACzB,IAAM7C,EAAU6C,EAAQ,sBAAwB,KAAK,aAAayC,EAAI,QAASzC,CAAO,EAChF2P,EAAW3P,EAAQ,gBACrB7C,EAAQ,QACV6C,EAAQ,cAAc7C,EAAQ,KAAK,EACnCwS,EAAS,sBAAsB,GAEjC,IAAMtC,EAAQ5K,EAAI,MACd4K,EAAM,MAAQpN,GAAsB,UACtC,KAAK,eAAeoN,EAAOrN,CAAO,GAElCA,EAAQ,cAAc7C,EAAQ,QAAQ,EACtC,KAAK,WAAWkQ,EAAOrN,CAAO,EAC9B2P,EAAS,sBAAsB,GAEjC3P,EAAQ,sBAAwB,KAChCA,EAAQ,aAAeyC,CACzB,CACA,WAAWA,EAAKzC,EAAS,CACvB,IAAM2P,EAAW3P,EAAQ,gBACnB7C,EAAU6C,EAAQ,sBAGpB,CAAC7C,GAAWwS,EAAS,0BAA0B,GACjDA,EAAS,aAAa,EAExB,IAAMlS,EAASN,GAAWA,EAAQ,QAAUsF,EAAI,OAC5CA,EAAI,YACNkN,EAAS,eAAelS,CAAM,EAE9BkS,EAAS,UAAUlN,EAAI,OAAQhF,EAAQuC,EAAQ,OAAQA,EAAQ,OAAO,EAExEA,EAAQ,aAAeyC,CACzB,CACA,eAAeA,EAAKzC,EAAS,CAC3B,IAAMoP,EAAwBpP,EAAQ,sBAChCsO,EAAYtO,EAAQ,gBAAgB,SACpCzC,EAAW6R,EAAsB,SAEjCqB,EADezQ,EAAQ,iBAAiB,EACX,gBACnCyQ,EAAc,OAASrB,EAAsB,OAC7C3M,EAAI,OAAO,QAAQiL,GAAQ,CACzB,IAAM5T,EAAS4T,EAAK,QAAU,EAC9B+C,EAAc,YAAY3W,EAASyD,CAAQ,EAC3CkT,EAAc,UAAU/C,EAAK,OAAQA,EAAK,OAAQ1N,EAAQ,OAAQA,EAAQ,OAAO,EACjFyQ,EAAc,sBAAsB,CACtC,CAAC,EAGDzQ,EAAQ,gBAAgB,6BAA6ByQ,CAAa,EAGlEzQ,EAAQ,yBAAyBsO,EAAY/Q,CAAQ,EACrDyC,EAAQ,aAAeyC,CACzB,CACA,WAAWA,EAAKzC,EAAS,CAGvB,IAAMsO,EAAYtO,EAAQ,gBAAgB,YACpCtB,EAAU+D,EAAI,SAAW,CAAC,EAC1BjF,EAAQkB,EAAQ,MAAQ7B,GAAmB6B,EAAQ,KAAK,EAAI,EAC9DlB,IAAUwC,EAAQ,aAAa,OAASC,GAAsB,OAASqO,GAAa,GAAKtO,EAAQ,gBAAgB,0BAA0B,KAC7IA,EAAQ,gBAAgB,sBAAsB,EAC9CA,EAAQ,aAAekK,IAEzB,IAAIuD,EAAea,EACboC,EAAO1Q,EAAQ,YAAYyC,EAAI,SAAUA,EAAI,iBAAkBA,EAAI,MAAOA,EAAI,YAAa,EAAA/D,EAAQ,SAAyBsB,EAAQ,MAAM,EAChJA,EAAQ,kBAAoB0Q,EAAK,OACjC,IAAIC,EAAsB,KAC1BD,EAAK,QAAQ,CAACxV,EAASyE,IAAM,CAC3BK,EAAQ,kBAAoBL,EAC5B,IAAMmQ,EAAe9P,EAAQ,iBAAiByC,EAAI,QAASvH,CAAO,EAC9DsC,GACFsS,EAAa,cAActS,CAAK,EAE9BtC,IAAY8E,EAAQ,UACtB2Q,EAAsBb,EAAa,iBAErCjQ,GAAa,KAAM4C,EAAI,UAAWqN,CAAY,EAI9CA,EAAa,gBAAgB,sBAAsB,EACnD,IAAMzB,EAAUyB,EAAa,gBAAgB,YAC7CrC,EAAe,KAAK,IAAIA,EAAcY,CAAO,CAC/C,CAAC,EACDrO,EAAQ,kBAAoB,EAC5BA,EAAQ,kBAAoB,EAC5BA,EAAQ,yBAAyByN,CAAY,EACzCkD,IACF3Q,EAAQ,gBAAgB,6BAA6B2Q,CAAmB,EACxE3Q,EAAQ,gBAAgB,sBAAsB,GAEhDA,EAAQ,aAAeyC,CACzB,CACA,aAAaA,EAAKzC,EAAS,CACzB,IAAM4Q,EAAgB5Q,EAAQ,cACxB6Q,EAAK7Q,EAAQ,gBACb7C,EAAUsF,EAAI,QACdlF,EAAW,KAAK,IAAIJ,EAAQ,QAAQ,EACpC2T,EAAUvT,GAAYyC,EAAQ,kBAAoB,GACpDxC,EAAQD,EAAWyC,EAAQ,kBAE/B,OADyB7C,EAAQ,SAAW,EAAI,UAAYA,EAAQ,OACxC,CAC1B,IAAK,UACHK,EAAQsT,EAAUtT,EAClB,MACF,IAAK,OACHA,EAAQoT,EAAc,mBACtB,KACJ,CACA,IAAMjB,EAAW3P,EAAQ,gBACrBxC,GACFmS,EAAS,cAAcnS,CAAK,EAE9B,IAAMuT,EAAepB,EAAS,YAC9B9P,GAAa,KAAM4C,EAAI,UAAWzC,CAAO,EACzCA,EAAQ,aAAeyC,EAKvBmO,EAAc,mBAAqBC,EAAG,YAAcE,GAAgBF,EAAG,UAAYD,EAAc,gBAAgB,UACnH,CACF,EACM1G,GAA6B,CAAC,EAC9BC,GAAN,MAAM6G,CAAyB,CAC7B,QACA,QACA,gBACA,gBACA,gBACA,OACA,UACA,cAAgB,KAChB,gBACA,sBAAwB,KACxB,aAAe9G,GACf,gBAAkB,EAClB,QAAU,CAAC,EACX,kBAAoB,EACpB,kBAAoB,EACpB,mBAAqB,EACrB,YAAY0C,EAAS1R,EAASmI,EAAiB4N,EAAiBC,EAAiB/Y,EAAQ8L,EAAWkN,EAAiB,CACnH,KAAK,QAAUvE,EACf,KAAK,QAAU1R,EACf,KAAK,gBAAkBmI,EACvB,KAAK,gBAAkB4N,EACvB,KAAK,gBAAkBC,EACvB,KAAK,OAAS/Y,EACd,KAAK,UAAY8L,EACjB,KAAK,gBAAkBkN,GAAmB,IAAI/G,GAAgB,KAAK,QAASlP,EAAS,CAAC,EACtF+I,EAAU,KAAK,KAAK,eAAe,CACrC,CACA,IAAI,QAAS,CACX,OAAO,KAAK,QAAQ,MACtB,CACA,cAAcvF,EAAS0S,EAAc,CACnC,GAAI,CAAC1S,EAAS,OACd,IAAM2S,EAAa3S,EACf4S,EAAkB,KAAK,QAEvBD,EAAW,UAAY,OACzBC,EAAgB,SAAWzU,GAAmBwU,EAAW,QAAQ,GAE/DA,EAAW,OAAS,OACtBC,EAAgB,MAAQzU,GAAmBwU,EAAW,KAAK,GAE7D,IAAME,EAAYF,EAAW,OAC7B,GAAIE,EAAW,CACb,IAAIC,EAAiBF,EAAgB,OAChCE,IACHA,EAAiB,KAAK,QAAQ,OAAS,CAAC,GAE1C,OAAO,KAAKD,CAAS,EAAE,QAAQrZ,GAAQ,EACjC,CAACkZ,GAAgB,CAACI,EAAe,eAAetZ,CAAI,KACtDsZ,EAAetZ,CAAI,EAAI6G,GAAkBwS,EAAUrZ,CAAI,EAAGsZ,EAAgB,KAAK,MAAM,EAEzF,CAAC,CACH,CACF,CACA,cAAe,CACb,IAAM9S,EAAU,CAAC,EACjB,GAAI,KAAK,QAAS,CAChB,IAAM+S,EAAY,KAAK,QAAQ,OAC/B,GAAIA,EAAW,CACb,IAAM9S,EAASD,EAAQ,OAAY,CAAC,EACpC,OAAO,KAAK+S,CAAS,EAAE,QAAQvZ,GAAQ,CACrCyG,EAAOzG,CAAI,EAAIuZ,EAAUvZ,CAAI,CAC/B,CAAC,CACH,CACF,CACA,OAAOwG,CACT,CACA,iBAAiBA,EAAU,KAAMxD,EAASwW,EAAS,CACjD,IAAM/I,EAASzN,GAAW,KAAK,QACzB8E,EAAU,IAAIgR,EAAyB,KAAK,QAASrI,EAAQ,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,gBAAiB,KAAK,OAAQ,KAAK,UAAW,KAAK,gBAAgB,KAAKA,EAAQ+I,GAAW,CAAC,CAAC,EACjN,OAAA1R,EAAQ,aAAe,KAAK,aAC5BA,EAAQ,sBAAwB,KAAK,sBACrCA,EAAQ,QAAU,KAAK,aAAa,EACpCA,EAAQ,cAActB,CAAO,EAC7BsB,EAAQ,kBAAoB,KAAK,kBACjCA,EAAQ,kBAAoB,KAAK,kBACjCA,EAAQ,cAAgB,KACxB,KAAK,kBACEA,CACT,CACA,yBAAyB0R,EAAS,CAChC,YAAK,aAAexH,GACpB,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,KAAK,QAASwH,CAAO,EACtE,KAAK,UAAU,KAAK,KAAK,eAAe,EACjC,KAAK,eACd,CACA,4BAA4BvB,EAAa5S,EAAUC,EAAO,CACxD,IAAMmU,EAAiB,CACrB,SAAUpU,GAA8B4S,EAAY,SACpD,MAAO,KAAK,gBAAgB,aAAe3S,GAAwB,GAAK2S,EAAY,MACpF,OAAQ,EACV,EACMyB,EAAU,IAAIvH,GAAmB,KAAK,QAAS8F,EAAY,QAASA,EAAY,UAAWA,EAAY,cAAeA,EAAY,eAAgBwB,EAAgBxB,EAAY,uBAAuB,EAC3M,YAAK,UAAU,KAAKyB,CAAO,EACpBD,CACT,CACA,cAAcE,EAAM,CAClB,KAAK,gBAAgB,YAAY,KAAK,gBAAgB,SAAWA,CAAI,CACvE,CACA,cAAcrU,EAAO,CAEfA,EAAQ,GACV,KAAK,gBAAgB,cAAcA,CAAK,CAE5C,CACA,YAAY5F,EAAUka,EAAkB3C,EAAOK,EAAauC,EAAU5Z,EAAQ,CAC5E,IAAI6Z,EAAU,CAAC,EAIf,GAHIxC,GACFwC,EAAQ,KAAK,KAAK,OAAO,EAEvBpa,EAAS,OAAS,EAAG,CAEvBA,EAAWA,EAAS,QAAQmS,IAAmB,IAAM,KAAK,eAAe,EACzEnS,EAAWA,EAAS,QAAQqS,IAAmB,IAAM,KAAK,eAAe,EACzE,IAAMtN,EAAQwS,GAAS,EACnBlJ,EAAW,KAAK,QAAQ,MAAM,KAAK,QAASrO,EAAU+E,CAAK,EAC3DwS,IAAU,IACZlJ,EAAWkJ,EAAQ,EAAIlJ,EAAS,MAAMA,EAAS,OAASkJ,EAAOlJ,EAAS,MAAM,EAAIA,EAAS,MAAM,EAAGkJ,CAAK,GAE3G6C,EAAQ,KAAK,GAAG/L,CAAQ,CAC1B,CACA,MAAI,CAAC8L,GAAYC,EAAQ,QAAU,GACjC7Z,EAAO,KAAKR,IAAama,CAAgB,CAAC,EAErCE,CACT,CACF,EACM5H,GAAN,MAAM6H,CAAgB,CACpB,QACA,QACA,UACA,6BACA,SAAW,EACX,OAAS,KACT,kBAAiC,IAAI,IACrC,iBAAgC,IAAI,IACpC,WAA0B,IAAI,IAC9B,cAA6B,IAAI,IACjC,qBAAoC,IAAI,IACxC,sBACA,eAA8B,IAAI,IAClC,UAAyB,IAAI,IAC7B,0BAA4B,KAC5B,YAAYrF,EAAS1R,EAASoT,EAAW4D,EAA8B,CACrE,KAAK,QAAUtF,EACf,KAAK,QAAU1R,EACf,KAAK,UAAYoT,EACjB,KAAK,6BAA+B4D,EAC/B,KAAK,+BACR,KAAK,6BAA+B,IAAI,KAE1C,KAAK,sBAAwB,KAAK,6BAA6B,IAAIhX,CAAO,EACrE,KAAK,wBACR,KAAK,sBAAwB,KAAK,qBAClC,KAAK,6BAA6B,IAAIA,EAAS,KAAK,oBAAoB,GAE1E,KAAK,cAAc,CACrB,CACA,mBAAoB,CAClB,OAAQ,KAAK,WAAW,KAAM,CAC5B,IAAK,GACH,MAAO,GACT,IAAK,GACH,OAAO,KAAK,0BAA0B,EACxC,QACE,MAAO,EACX,CACF,CACA,2BAA4B,CAC1B,OAAO,KAAK,iBAAiB,KAAO,CACtC,CACA,IAAI,aAAc,CAChB,OAAO,KAAK,UAAY,KAAK,QAC/B,CACA,cAAcsC,EAAO,CAKnB,IAAM2U,EAAkB,KAAK,WAAW,OAAS,GAAK,KAAK,eAAe,KACtE,KAAK,UAAYA,GACnB,KAAK,YAAY,KAAK,YAAc3U,CAAK,EACrC2U,GACF,KAAK,sBAAsB,GAG7B,KAAK,WAAa3U,CAEtB,CACA,KAAKtC,EAASsS,EAAa,CACzB,YAAK,sBAAsB,EACpB,IAAIyE,EAAgB,KAAK,QAAS/W,EAASsS,GAAe,KAAK,YAAa,KAAK,4BAA4B,CACtH,CACA,eAAgB,CACV,KAAK,mBACP,KAAK,kBAAoB,KAAK,kBAEhC,KAAK,iBAAmB,KAAK,WAAW,IAAI,KAAK,QAAQ,EACpD,KAAK,mBACR,KAAK,iBAAmB,IAAI,IAC5B,KAAK,WAAW,IAAI,KAAK,SAAU,KAAK,gBAAgB,EAE5D,CACA,cAAe,CACb,KAAK,UAAY3D,IACjB,KAAK,cAAc,CACrB,CACA,YAAYgI,EAAM,CAChB,KAAK,sBAAsB,EAC3B,KAAK,SAAWA,EAChB,KAAK,cAAc,CACrB,CACA,aAAa5a,EAAMR,EAAO,CACxB,KAAK,qBAAqB,IAAIQ,EAAMR,CAAK,EACzC,KAAK,sBAAsB,IAAIQ,EAAMR,CAAK,EAC1C,KAAK,cAAc,IAAIQ,EAAM,CAC3B,KAAM,KAAK,YACX,MAAAR,CACF,CAAC,CACH,CACA,yBAA0B,CACxB,OAAO,KAAK,4BAA8B,KAAK,gBACjD,CACA,eAAegH,EAAQ,CACjBA,GACF,KAAK,kBAAkB,IAAI,SAAUA,CAAM,EAQ7C,OAAS,CAACxG,EAAMR,CAAK,IAAK,KAAK,sBAC7B,KAAK,UAAU,IAAIQ,EAAMR,GAAS4D,EAAU,EAC5C,KAAK,iBAAiB,IAAIpD,EAAMoD,EAAU,EAE5C,KAAK,0BAA4B,KAAK,gBACxC,CACA,UAAU8E,EAAO1B,EAAQtF,EAAQuG,EAAS,CACpCjB,GACF,KAAK,kBAAkB,IAAI,SAAUA,CAAM,EAE7C,IAAMkB,EAASD,GAAWA,EAAQ,QAAU,CAAC,EACvCV,EAAS0F,IAAcvE,EAAO,KAAK,qBAAqB,EAC9D,OAAS,CAAClI,EAAMR,CAAK,IAAKuH,EAAQ,CAChC,IAAM/D,EAAM8E,GAAkBtI,EAAOkI,EAAQxG,CAAM,EACnD,KAAK,eAAe,IAAIlB,EAAMgD,CAAG,EAC5B,KAAK,qBAAqB,IAAIhD,CAAI,GACrC,KAAK,UAAU,IAAIA,EAAM,KAAK,sBAAsB,IAAIA,CAAI,GAAKoD,EAAU,EAE7E,KAAK,aAAapD,EAAMgD,CAAG,CAC7B,CACF,CACA,uBAAwB,CAClB,KAAK,eAAe,MAAQ,IAChC,KAAK,eAAe,QAAQ,CAACA,EAAKhD,IAAS,CACzC,KAAK,iBAAiB,IAAIA,EAAMgD,CAAG,CACrC,CAAC,EACD,KAAK,eAAe,MAAM,EAC1B,KAAK,qBAAqB,QAAQ,CAACA,EAAKhD,IAAS,CAC1C,KAAK,iBAAiB,IAAIA,CAAI,GACjC,KAAK,iBAAiB,IAAIA,EAAMgD,CAAG,CAEvC,CAAC,EACH,CACA,uBAAwB,CACtB,OAAS,CAAChD,EAAMgD,CAAG,IAAK,KAAK,qBAC3B,KAAK,eAAe,IAAIhD,EAAMgD,CAAG,EACjC,KAAK,aAAahD,EAAMgD,CAAG,CAE/B,CACA,kBAAmB,CACjB,OAAO,KAAK,WAAW,IAAI,KAAK,QAAQ,CAC1C,CACA,IAAI,YAAa,CACf,IAAMmY,EAAa,CAAC,EACpB,QAASnb,KAAQ,KAAK,iBACpBmb,EAAW,KAAKnb,CAAI,EAEtB,OAAOmb,CACT,CACA,6BAA6BzC,EAAU,CACrCA,EAAS,cAAc,QAAQ,CAAC0C,EAAUpb,IAAS,CACjD,IAAMqb,EAAW,KAAK,cAAc,IAAIrb,CAAI,GACxC,CAACqb,GAAYD,EAAS,KAAOC,EAAS,OACxC,KAAK,aAAarb,EAAMob,EAAS,KAAK,CAE1C,CAAC,CACH,CACA,gBAAiB,CACf,KAAK,sBAAsB,EAC3B,IAAMzP,EAAgB,IAAI,IACpBC,EAAiB,IAAI,IACrBiL,EAAU,KAAK,WAAW,OAAS,GAAK,KAAK,WAAa,EAC5DyE,EAAiB,CAAC,EACtB,KAAK,WAAW,QAAQ,CAACC,EAAUX,IAAS,CAC1C,IAAMY,EAAgB,IAAI,IAAI,CAAC,GAAG,KAAK,UAAW,GAAGD,CAAQ,CAAC,EAC9DC,EAAc,QAAQ,CAAChc,EAAOQ,IAAS,CACjCR,IAAU2D,GACZwI,EAAc,IAAI3L,CAAI,EACbR,IAAU4D,IACnBwI,EAAe,IAAI5L,CAAI,CAE3B,CAAC,EACI6W,GACH2E,EAAc,IAAI,SAAUZ,EAAO,KAAK,QAAQ,EAElDU,EAAe,KAAKE,CAAa,CACnC,CAAC,EACD,IAAMC,EAAW,CAAC,GAAG9P,EAAc,OAAO,CAAC,EACrC+P,EAAY,CAAC,GAAG9P,EAAe,OAAO,CAAC,EAE7C,GAAIiL,EAAS,CACX,IAAM8E,EAAML,EAAe,CAAC,EACtBM,EAAM,IAAI,IAAID,CAAG,EACvBA,EAAI,IAAI,SAAU,CAAC,EACnBC,EAAI,IAAI,SAAU,CAAC,EACnBN,EAAiB,CAACK,EAAKC,CAAG,CAC5B,CACA,OAAOlQ,GAA0B,KAAK,QAAS4P,EAAgBG,EAAUC,EAAW,KAAK,SAAU,KAAK,UAAW,KAAK,OAAQ,EAAK,CACvI,CACF,EACMtI,GAAN,cAAiCD,EAAgB,CAC/C,UACA,cACA,eACA,yBACA,QACA,YAAY/I,EAAQnG,EAAS3B,EAAWqJ,EAAeC,EAAgB1F,EAAS2V,EAA2B,GAAO,CAChH,MAAMzR,EAAQnG,EAASiC,EAAQ,KAAK,EACpC,KAAK,UAAY5D,EACjB,KAAK,cAAgBqJ,EACrB,KAAK,eAAiBC,EACtB,KAAK,yBAA2BiQ,EAChC,KAAK,QAAU,CACb,SAAU3V,EAAQ,SAClB,MAAOA,EAAQ,MACf,OAAQA,EAAQ,MAClB,CACF,CACA,mBAAoB,CAClB,OAAO,KAAK,UAAU,OAAS,CACjC,CACA,gBAAiB,CACf,IAAI5D,EAAY,KAAK,UACjB,CACF,MAAAiE,EACA,SAAAD,EACA,OAAAE,CACF,EAAI,KAAK,QACT,GAAI,KAAK,0BAA4BD,EAAO,CAC1C,IAAMuV,EAAe,CAAC,EAChBjY,EAAYyC,EAAWC,EACvBwV,EAAcxV,EAAQ1C,EAEtBmY,EAAmB,IAAI,IAAI1Z,EAAU,CAAC,CAAC,EAC7C0Z,EAAiB,IAAI,SAAU,CAAC,EAChCF,EAAa,KAAKE,CAAgB,EAClC,IAAMC,EAAmB,IAAI,IAAI3Z,EAAU,CAAC,CAAC,EAC7C2Z,EAAiB,IAAI,SAAU3P,GAAYyP,CAAW,CAAC,EACvDD,EAAa,KAAKG,CAAgB,EAalC,IAAM/D,EAAQ5V,EAAU,OAAS,EACjC,QAASoG,EAAI,EAAGA,GAAKwP,EAAOxP,IAAK,CAC/B,IAAI9F,EAAK,IAAI,IAAIN,EAAUoG,CAAC,CAAC,EACvBwT,EAAYtZ,EAAG,IAAI,QAAQ,EAC3BuZ,EAAiB5V,EAAQ2V,EAAY5V,EAC3C1D,EAAG,IAAI,SAAU0J,GAAY6P,EAAiBtY,CAAS,CAAC,EACxDiY,EAAa,KAAKlZ,CAAE,CACtB,CAEA0D,EAAWzC,EACX0C,EAAQ,EACRC,EAAS,GACTlE,EAAYwZ,CACd,CACA,OAAOpQ,GAA0B,KAAK,QAASpJ,EAAW,KAAK,cAAe,KAAK,eAAgBgE,EAAUC,EAAOC,EAAQ,EAAI,CAClI,CACF,EAwCM6M,GAAe,CAAC,EAChBpF,GAAN,KAAiC,CAC/B,aACA,IACA,aACA,YAAYmO,EAAc5Q,EAAK6Q,EAAc,CAC3C,KAAK,aAAeD,EACpB,KAAK,IAAM5Q,EACX,KAAK,aAAe6Q,CACtB,CACA,MAAMjP,EAAcC,EAAWpJ,EAASyD,EAAQ,CAC9C,OAAOwF,IAA0B,KAAK,IAAI,SAAUE,EAAcC,EAAWpJ,EAASyD,CAAM,CAC9F,CACA,YAAY4U,EAAW5U,EAAQxG,EAAQ,CACrC,IAAIqb,EAAS,KAAK,aAAa,IAAI,GAAG,EACtC,OAAID,IAAc,SAChBC,EAAS,KAAK,aAAa,IAAID,GAAW,SAAS,CAAC,GAAKC,GAEpDA,EAASA,EAAO,YAAY7U,EAAQxG,CAAM,EAAI,IAAI,GAC3D,CACA,MAAMkJ,EAAQnG,EAASmJ,EAAcC,EAAWrB,EAAgBC,EAAgBuQ,EAAgBC,EAAarQ,EAAiBsQ,EAAc,CAC1I,IAAMxb,EAAS,CAAC,EACVyb,EAA4B,KAAK,IAAI,SAAW,KAAK,IAAI,QAAQ,QAAUtJ,GAC3EuJ,EAAyBJ,GAAkBA,EAAe,QAAUnJ,GACpEwJ,EAAqB,KAAK,YAAYzP,EAAcwP,EAAwB1b,CAAM,EAClF4b,GAAsBL,GAAeA,EAAY,QAAUpJ,GAC3D0J,GAAkB,KAAK,YAAY1P,EAAWyP,GAAqB5b,CAAM,EACzE+L,GAAkB,IAAI,IACtB+P,GAAc,IAAI,IAClBC,GAAe,IAAI,IACnBC,GAAY7P,IAAc,OAC1B8P,GAAmB,CACvB,OAAQ5P,GAAmBuP,GAAqBH,CAAyB,EACzE,MAAO,KAAK,IAAI,SAAS,KAC3B,EACM3P,GAAY0P,EAAe,CAAC,EAAI5Q,GAAwB1B,EAAQnG,EAAS,KAAK,IAAI,UAAW+H,EAAgBC,EAAgB4Q,EAAoBE,GAAiBI,GAAkB/Q,EAAiBlL,CAAM,EAC7M2C,GAAY,EAIhB,OAHAmJ,GAAU,QAAQ4M,IAAM,CACtB/V,GAAY,KAAK,IAAI+V,GAAG,SAAWA,GAAG,MAAO/V,EAAS,CACxD,CAAC,EACG3C,EAAO,OACF0L,GAA4B3I,EAAS,KAAK,aAAcmJ,EAAcC,EAAW6P,GAAWL,EAAoBE,GAAiB,CAAC,EAAG,CAAC,EAAGC,GAAaC,GAAcpZ,GAAW3C,CAAM,GAE9L8L,GAAU,QAAQ4M,IAAM,CACtB,IAAMwD,GAAMxD,GAAG,QACT6B,GAAWpX,GAAqB2Y,GAAaI,GAAK,IAAI,GAAK,EACjExD,GAAG,cAAc,QAAQ5Z,IAAQyb,GAAS,IAAIzb,EAAI,CAAC,EACnD,IAAM0b,GAAYrX,GAAqB4Y,GAAcG,GAAK,IAAI,GAAK,EACnExD,GAAG,eAAe,QAAQ5Z,IAAQ0b,GAAU,IAAI1b,EAAI,CAAC,EACjDod,KAAQnZ,GACVgJ,GAAgB,IAAImQ,EAAG,CAE3B,CAAC,EAIMxQ,GAA4B3I,EAAS,KAAK,aAAcmJ,EAAcC,EAAW6P,GAAWL,EAAoBE,GAAiB/P,GAAW,CAAC,GAAGC,GAAgB,OAAO,CAAC,EAAG+P,GAAaC,GAAcpZ,EAAS,EACxN,CACF,EAgEMyP,GAAN,KAA2B,CACzB,OACA,cACA,WACA,YAAYvM,EAAQsW,EAAehb,EAAY,CAC7C,KAAK,OAAS0E,EACd,KAAK,cAAgBsW,EACrB,KAAK,WAAahb,CACpB,CACA,YAAYqF,EAAQxG,EAAQ,CAC1B,IAAMiL,EAAc,IAAI,IAClBmR,EAAiB/P,GAAmB7F,EAAQ,KAAK,aAAa,EACpE,YAAK,OAAO,OAAO,QAAQlI,GAAS,CAC9B,OAAOA,GAAU,UACnBA,EAAM,QAAQ,CAACwD,EAAKhD,IAAS,CACvBgD,IACFA,EAAM8E,GAAkB9E,EAAKsa,EAAgBpc,CAAM,GAErD,IAAM+B,EAAiB,KAAK,WAAW,sBAAsBjD,EAAMkB,CAAM,EACzE8B,EAAM,KAAK,WAAW,oBAAoBhD,EAAMiD,EAAgBD,EAAK9B,CAAM,EAC3EiL,EAAY,IAAInM,EAAMgD,CAAG,CAC3B,CAAC,CAEL,CAAC,EACMmJ,CACT,CACF,EAIMwB,GAAN,KAAuB,CACrB,KACA,IACA,YACA,oBAAsB,CAAC,EACvB,mBACA,OAAsB,IAAI,IAC1B,YAAY1M,EAAMuK,EAAK+R,EAAa,CAClC,KAAK,KAAOtc,EACZ,KAAK,IAAMuK,EACX,KAAK,YAAc+R,EACnB/R,EAAI,OAAO,QAAQA,GAAO,CACxB,IAAM6R,EAAgB7R,EAAI,SAAWA,EAAI,QAAQ,QAAU,CAAC,EAC5D,KAAK,OAAO,IAAIA,EAAI,KAAM,IAAI8H,GAAqB9H,EAAI,MAAO6R,EAAeE,CAAW,CAAC,CAC3F,CAAC,EACDrP,GAAkB,KAAK,OAAQ,OAAQ,GAAG,EAC1CA,GAAkB,KAAK,OAAQ,QAAS,GAAG,EAC3C1C,EAAI,YAAY,QAAQA,GAAO,CAC7B,KAAK,oBAAoB,KAAK,IAAIyC,GAA2BhN,EAAMuK,EAAK,KAAK,MAAM,CAAC,CACtF,CAAC,EACD,KAAK,mBAAqBoC,IAAyB3M,EAAM,KAAK,OAAQ,KAAK,WAAW,CACxF,CACA,IAAI,iBAAkB,CACpB,OAAO,KAAK,IAAI,WAAa,CAC/B,CACA,gBAAgBmM,EAAcC,EAAWpJ,EAASyD,EAAQ,CAExD,OADc,KAAK,oBAAoB,KAAK8V,GAAKA,EAAE,MAAMpQ,EAAcC,EAAWpJ,EAASyD,CAAM,CAAC,GAClF,IAClB,CACA,YAAY0F,EAAc1F,EAAQxG,EAAQ,CACxC,OAAO,KAAK,mBAAmB,YAAYkM,EAAc1F,EAAQxG,CAAM,CACzE,CACF,EA2BMqS,IAAqC,IAAIZ,GACzCa,GAAN,KAA8B,CAC5B,SACA,QACA,YACA,YAA2B,IAAI,IAC/B,aAA4B,IAAI,IAChC,QAAU,CAAC,EACX,YAAYiK,EAAU9H,EAAS4H,EAAa,CAC1C,KAAK,SAAWE,EAChB,KAAK,QAAU9H,EACf,KAAK,YAAc4H,CACrB,CACA,SAAS/b,EAAI6I,EAAU,CACrB,IAAMnJ,EAAS,CAAC,EACVoJ,EAAW,CAAC,EACZkB,EAAMrB,GAAkB,KAAK,QAASE,EAAUnJ,EAAQoJ,CAAQ,EACtE,GAAIpJ,EAAO,OACT,MAAME,IAAeF,CAAM,EAO3B,KAAK,YAAY,IAAIM,EAAIgK,CAAG,CAEhC,CACA,aAAa9C,EAAGnG,EAAWC,EAAY,CACrC,IAAMyB,EAAUyE,EAAE,QACZpG,EAAYF,GAAqB,KAAK,YAAasG,EAAE,UAAWnG,EAAWC,CAAU,EAC3F,OAAO,KAAK,QAAQ,QAAQyB,EAAS3B,EAAWoG,EAAE,SAAUA,EAAE,MAAOA,EAAE,OAAQ,CAAC,EAAG,EAAI,CACzF,CACA,OAAOlH,EAAIyC,EAASwD,EAAU,CAAC,EAAG,CAChC,IAAMvG,EAAS,CAAC,EACVsK,EAAM,KAAK,YAAY,IAAIhK,CAAE,EAC/BgX,EACEkF,EAAgB,IAAI,IAW1B,GAVIlS,GACFgN,EAAe1M,GAAwB,KAAK,QAAS7H,EAASuH,EAAK2G,GAAiBC,GAAiB,IAAI,IAAO,IAAI,IAAO3K,EAAS8L,IAAuBrS,CAAM,EACjKsX,EAAa,QAAQmF,GAAQ,CAC3B,IAAM5W,EAAS1C,GAAqBqZ,EAAeC,EAAK,QAAS,IAAI,GAAK,EAC1EA,EAAK,eAAe,QAAQ3d,GAAQ+G,EAAO,IAAI/G,EAAM,IAAI,CAAC,CAC5D,CAAC,IAEDkB,EAAO,KAAKG,IAA4B,CAAC,EACzCmX,EAAe,CAAC,GAEdtX,EAAO,OACT,MAAMI,IAAsBJ,CAAM,EAEpCwc,EAAc,QAAQ,CAAC3W,EAAQ9C,IAAY,CACzC8C,EAAO,QAAQ,CAACK,EAAGpH,IAAS,CAC1B+G,EAAO,IAAI/G,EAAM,KAAK,QAAQ,aAAaiE,EAASjE,EAAMoD,EAAU,CAAC,CACvE,CAAC,CACH,CAAC,EACD,IAAMnB,EAAUuW,EAAa,IAAI9P,GAAK,CACpC,IAAM3B,EAAS2W,EAAc,IAAIhV,EAAE,OAAO,EAC1C,OAAO,KAAK,aAAaA,EAAG,IAAI,IAAO3B,CAAM,CAC/C,CAAC,EACKzD,EAAStB,GAAoBC,CAAO,EAC1C,YAAK,aAAa,IAAIT,EAAI8B,CAAM,EAChCA,EAAO,UAAU,IAAM,KAAK,QAAQ9B,CAAE,CAAC,EACvC,KAAK,QAAQ,KAAK8B,CAAM,EACjBA,CACT,CACA,QAAQ9B,EAAI,CACV,IAAM8B,EAAS,KAAK,WAAW9B,CAAE,EACjC8B,EAAO,QAAQ,EACf,KAAK,aAAa,OAAO9B,CAAE,EAC3B,IAAMgN,EAAQ,KAAK,QAAQ,QAAQlL,CAAM,EACrCkL,GAAS,GACX,KAAK,QAAQ,OAAOA,EAAO,CAAC,CAEhC,CACA,WAAWhN,EAAI,CACb,IAAM8B,EAAS,KAAK,aAAa,IAAI9B,CAAE,EACvC,GAAI,CAAC8B,EACH,MAAM/B,IAAcC,CAAE,EAExB,OAAO8B,CACT,CACA,OAAO9B,EAAIyC,EAASV,EAAWE,EAAU,CAEvC,IAAMma,EAAY7Z,GAAmBE,EAAS,GAAI,GAAI,EAAE,EACxD,OAAAZ,GAAe,KAAK,WAAW7B,CAAE,EAAG+B,EAAWqa,EAAWna,CAAQ,EAC3D,IAAM,CAAC,CAChB,CACA,QAAQjC,EAAIyC,EAASS,EAASmZ,EAAM,CAClC,GAAInZ,GAAW,WAAY,CACzB,KAAK,SAASlD,EAAIqc,EAAK,CAAC,CAAC,EACzB,MACF,CACA,GAAInZ,GAAW,SAAU,CACvB,IAAM+C,EAAUoW,EAAK,CAAC,GAAK,CAAC,EAC5B,KAAK,OAAOrc,EAAIyC,EAASwD,CAAO,EAChC,MACF,CACA,IAAMnE,EAAS,KAAK,WAAW9B,CAAE,EACjC,OAAQkD,EAAS,CACf,IAAK,OACHpB,EAAO,KAAK,EACZ,MACF,IAAK,QACHA,EAAO,MAAM,EACb,MACF,IAAK,QACHA,EAAO,MAAM,EACb,MACF,IAAK,UACHA,EAAO,QAAQ,EACf,MACF,IAAK,SACHA,EAAO,OAAO,EACd,MACF,IAAK,OACHA,EAAO,KAAK,EACZ,MACF,IAAK,cACHA,EAAO,YAAY,WAAWua,EAAK,CAAC,CAAC,CAAC,EACtC,MACF,IAAK,UACH,KAAK,QAAQrc,CAAE,EACf,KACJ,CACF,CACF,EACMiS,GAAmB,oBACnBC,IAAkB,qBAClBC,GAAqB,sBACrBC,IAAoB,uBACpBC,IAAiB,mBACjBC,IAAgB,oBAChBC,IAAqB,CAAC,EACtBC,GAAqB,CACzB,YAAa,GACb,cAAe,GACf,WAAY,GACZ,aAAc,GACd,qBAAsB,EACxB,EACMzE,IAA6B,CACjC,YAAa,GACb,WAAY,GACZ,cAAe,GACf,aAAc,GACd,qBAAsB,EACxB,EACMD,GAAe,eACf2E,GAAN,KAAiB,CACf,YACA,MACA,QACA,IAAI,QAAS,CACX,OAAO,KAAK,QAAQ,MACtB,CACA,YAAY/L,EAAO4V,EAAc,GAAI,CACnC,KAAK,YAAcA,EACnB,IAAMC,EAAQ7V,GAASA,EAAM,eAAe,OAAO,EAC7C1I,EAAQue,EAAQ7V,EAAM,MAAWA,EAEvC,GADA,KAAK,MAAQuG,IAAsBjP,CAAK,EACpCue,EAAO,CAET,IAGIC,EAAA9V,EAFF,OAAA1I,CA70ER,EA+0EUwe,EADCvW,EAAAwW,GACDD,EADC,CADH,UAGF,KAAK,QAAUvW,CACjB,MACE,KAAK,QAAU,CAAC,EAEb,KAAK,QAAQ,SAChB,KAAK,QAAQ,OAAS,CAAC,EAE3B,CACA,cAAcA,EAAS,CACrB,IAAM6S,EAAY7S,EAAQ,OAC1B,GAAI6S,EAAW,CACb,IAAME,EAAY,KAAK,QAAQ,OAC/B,OAAO,KAAKF,CAAS,EAAE,QAAQta,GAAQ,CACjCwa,EAAUxa,CAAI,GAAK,OACrBwa,EAAUxa,CAAI,EAAIsa,EAAUta,CAAI,EAEpC,CAAC,CACH,CACF,CACF,EACMkU,GAAa,OACbC,GAAmC,IAAIF,GAAWC,EAAU,EAC5DE,GAAN,KAAmC,CACjC,GACA,YACA,QACA,QAAU,CAAC,EACX,UAAyB,IAAI,IAC7B,OAAS,CAAC,EACV,kBAAiC,IAAI,IACrC,eACA,YAAY5S,EAAI0c,EAAaC,EAAS,CACpC,KAAK,GAAK3c,EACV,KAAK,YAAc0c,EACnB,KAAK,QAAUC,EACf,KAAK,eAAiB,UAAY3c,EAClCyO,GAASiO,EAAa,KAAK,cAAc,CAC3C,CACA,OAAOja,EAAShD,EAAMS,EAAO+B,EAAU,CACrC,GAAI,CAAC,KAAK,UAAU,IAAIxC,CAAI,EAC1B,MAAMQ,IAAeC,EAAOT,CAAI,EAElC,GAAIS,GAAS,MAAQA,EAAM,QAAU,EACnC,MAAMC,IAAaV,CAAI,EAEzB,GAAI,CAAC0N,IAAoBjN,CAAK,EAC5B,MAAME,IAAwBF,EAAOT,CAAI,EAE3C,IAAMmd,EAAY/Z,GAAqB,KAAK,kBAAmBJ,EAAS,CAAC,CAAC,EACpED,EAAO,CACX,KAAA/C,EACA,MAAAS,EACA,SAAA+B,CACF,EACA2a,EAAU,KAAKpa,CAAI,EACnB,IAAMqa,EAAqBha,GAAqB,KAAK,QAAQ,gBAAiBJ,EAAS,IAAI,GAAK,EAChG,OAAKoa,EAAmB,IAAIpd,CAAI,IAC9BgP,GAAShM,EAASoO,EAAoB,EACtCpC,GAAShM,EAASoO,GAAuB,IAAMpR,CAAI,EACnDod,EAAmB,IAAIpd,EAAMkT,EAAmB,GAE3C,IAAM,CAIX,KAAK,QAAQ,WAAW,IAAM,CAC5B,IAAM3F,EAAQ4P,EAAU,QAAQpa,CAAI,EAChCwK,GAAS,GACX4P,EAAU,OAAO5P,EAAO,CAAC,EAEtB,KAAK,UAAU,IAAIvN,CAAI,GAC1Bod,EAAmB,OAAOpd,CAAI,CAElC,CAAC,CACH,CACF,CACA,SAASA,EAAMuK,EAAK,CAClB,OAAI,KAAK,UAAU,IAAIvK,CAAI,EAElB,IAEP,KAAK,UAAU,IAAIA,EAAMuK,CAAG,EACrB,GAEX,CACA,YAAYvK,EAAM,CAChB,IAAM4Q,EAAU,KAAK,UAAU,IAAI5Q,CAAI,EACvC,GAAI,CAAC4Q,EACH,MAAMhQ,IAAoBZ,CAAI,EAEhC,OAAO4Q,CACT,CACA,QAAQ5N,EAASC,EAAa1E,EAAO8e,EAAoB,GAAM,CAC7D,IAAMzM,EAAU,KAAK,YAAY3N,CAAW,EACtCZ,EAAS,IAAIgR,GAA0B,KAAK,GAAIpQ,EAAaD,CAAO,EACtEoa,EAAqB,KAAK,QAAQ,gBAAgB,IAAIpa,CAAO,EAC5Doa,IACHpO,GAAShM,EAASoO,EAAoB,EACtCpC,GAAShM,EAASoO,GAAuB,IAAMnO,CAAW,EAC1D,KAAK,QAAQ,gBAAgB,IAAID,EAASoa,EAAqB,IAAI,GAAK,GAE1E,IAAIla,EAAYka,EAAmB,IAAIna,CAAW,EAC5CE,EAAU,IAAI6P,GAAWzU,EAAO,KAAK,EAAE,EAgB7C,GAdI,EADUA,GAASA,EAAM,eAAe,OAAO,IACrC2E,GACZC,EAAQ,cAAcD,EAAU,OAAO,EAEzCka,EAAmB,IAAIna,EAAaE,CAAO,EACtCD,IACHA,EAAYgQ,IASV,EAPc/P,EAAQ,QAAU8P,KAOlB/P,EAAU,QAAUC,EAAQ,MAAO,CAGnD,GAAI,CAACqM,IAAUtM,EAAU,OAAQC,EAAQ,MAAM,EAAG,CAChD,IAAMlD,GAAS,CAAC,EACV4L,GAAa+E,EAAQ,YAAY1N,EAAU,MAAOA,EAAU,OAAQjD,EAAM,EAC1E6L,GAAW8E,EAAQ,YAAYzN,EAAQ,MAAOA,EAAQ,OAAQlD,EAAM,EACtEA,GAAO,OACT,KAAK,QAAQ,YAAYA,EAAM,EAE/B,KAAK,QAAQ,WAAW,IAAM,CAC5BiG,GAAYlD,EAAS6I,EAAU,EAC/BhG,GAAU7C,EAAS8I,EAAQ,CAC7B,CAAC,CAEL,CACA,MACF,CACA,IAAMwR,EAAmBla,GAAqB,KAAK,QAAQ,iBAAkBJ,EAAS,CAAC,CAAC,EACxFsa,EAAiB,QAAQjb,IAAU,CAK7BA,GAAO,aAAe,KAAK,IAAMA,GAAO,aAAeY,GAAeZ,GAAO,QAC/EA,GAAO,QAAQ,CAEnB,CAAC,EACD,IAAI0K,EAAa6D,EAAQ,gBAAgB1N,EAAU,MAAOC,EAAQ,MAAOH,EAASG,EAAQ,MAAM,EAC5Foa,EAAuB,GAC3B,GAAI,CAACxQ,EAAY,CACf,GAAI,CAACsQ,EAAmB,OACxBtQ,EAAa6D,EAAQ,mBACrB2M,EAAuB,EACzB,CACA,YAAK,QAAQ,qBACb,KAAK,OAAO,KAAK,CACf,QAAAva,EACA,YAAAC,EACA,WAAA8J,EACA,UAAA7J,EACA,QAAAC,EACA,OAAAd,EACA,qBAAAkb,CACF,CAAC,EACIA,IACHvO,GAAShM,EAASwP,EAAgB,EAClCnQ,EAAO,QAAQ,IAAM,CACnB6M,GAAYlM,EAASwP,EAAgB,CACvC,CAAC,GAEHnQ,EAAO,OAAO,IAAM,CAClB,IAAIkL,GAAQ,KAAK,QAAQ,QAAQlL,CAAM,EACnCkL,IAAS,GACX,KAAK,QAAQ,OAAOA,GAAO,CAAC,EAE9B,IAAMvM,GAAU,KAAK,QAAQ,iBAAiB,IAAIgC,CAAO,EACzD,GAAIhC,GAAS,CACX,IAAIuM,GAAQvM,GAAQ,QAAQqB,CAAM,EAC9BkL,IAAS,GACXvM,GAAQ,OAAOuM,GAAO,CAAC,CAE3B,CACF,CAAC,EACD,KAAK,QAAQ,KAAKlL,CAAM,EACxBib,EAAiB,KAAKjb,CAAM,EACrBA,CACT,CACA,WAAWrC,EAAM,CACf,KAAK,UAAU,OAAOA,CAAI,EAC1B,KAAK,QAAQ,gBAAgB,QAAQkN,GAAYA,EAAS,OAAOlN,CAAI,CAAC,EACtE,KAAK,kBAAkB,QAAQ,CAACmd,EAAWna,IAAY,CACrD,KAAK,kBAAkB,IAAIA,EAASma,EAAU,OAAOK,GAC5CA,EAAM,MAAQxd,CACtB,CAAC,CACJ,CAAC,CACH,CACA,kBAAkBgD,EAAS,CACzB,KAAK,QAAQ,gBAAgB,OAAOA,CAAO,EAC3C,KAAK,kBAAkB,OAAOA,CAAO,EACrC,IAAMya,EAAiB,KAAK,QAAQ,iBAAiB,IAAIza,CAAO,EAC5Dya,IACFA,EAAe,QAAQpb,GAAUA,EAAO,QAAQ,CAAC,EACjD,KAAK,QAAQ,iBAAiB,OAAOW,CAAO,EAEhD,CACA,+BAA+B8H,EAAahD,EAAS,CACnD,IAAMiG,EAAW,KAAK,QAAQ,OAAO,MAAMjD,EAAalB,GAAqB,EAAI,EAIjFmE,EAAS,QAAQoO,GAAO,CAGtB,GAAIA,EAAI9N,EAAY,EAAG,OACvB,IAAMqP,EAAa,KAAK,QAAQ,yBAAyBvB,CAAG,EACxDuB,EAAW,KACbA,EAAW,QAAQC,GAAMA,EAAG,sBAAsBxB,EAAKrU,EAAS,GAAO,EAAI,CAAC,EAE5E,KAAK,kBAAkBqU,CAAG,CAE9B,CAAC,EAGD,KAAK,QAAQ,yBAAyB,IAAMpO,EAAS,QAAQoO,GAAO,KAAK,kBAAkBA,CAAG,CAAC,CAAC,CAClG,CACA,sBAAsBnZ,EAAS8E,EAAS8V,EAAsBP,EAAmB,CAC/E,IAAMQ,EAAgB,KAAK,QAAQ,gBAAgB,IAAI7a,CAAO,EACxD8a,EAAyB,IAAI,IACnC,GAAID,EAAe,CACjB,IAAM7c,EAAU,CAAC,EAYjB,GAXA6c,EAAc,QAAQ,CAACE,EAAO9a,IAAgB,CAI5C,GAHA6a,EAAuB,IAAI7a,EAAa8a,EAAM,KAAK,EAG/C,KAAK,UAAU,IAAI9a,CAAW,EAAG,CACnC,IAAMZ,EAAS,KAAK,QAAQW,EAASC,EAAagQ,GAAYoK,CAAiB,EAC3Ehb,GACFrB,EAAQ,KAAKqB,CAAM,CAEvB,CACF,CAAC,EACGrB,EAAQ,OACV,YAAK,QAAQ,qBAAqB,KAAK,GAAIgC,EAAS,GAAM8E,EAASgW,CAAsB,EACrFF,GACF7c,GAAoBC,CAAO,EAAE,OAAO,IAAM,KAAK,QAAQ,iBAAiBgC,CAAO,CAAC,EAE3E,EAEX,CACA,MAAO,EACT,CACA,+BAA+BA,EAAS,CACtC,IAAMma,EAAY,KAAK,kBAAkB,IAAIna,CAAO,EAC9Cgb,EAAgB,KAAK,QAAQ,gBAAgB,IAAIhb,CAAO,EAG9D,GAAIma,GAAaa,EAAe,CAC9B,IAAMC,EAAkB,IAAI,IAC5Bd,EAAU,QAAQe,GAAY,CAC5B,IAAMjb,EAAcib,EAAS,KAC7B,GAAID,EAAgB,IAAIhb,CAAW,EAAG,OACtCgb,EAAgB,IAAIhb,CAAW,EAE/B,IAAM8J,EADU,KAAK,UAAU,IAAI9J,CAAW,EACnB,mBACrBC,EAAY8a,EAAc,IAAI/a,CAAW,GAAKiQ,GAC9C/P,EAAU,IAAI6P,GAAWC,EAAU,EACnC5Q,EAAS,IAAIgR,GAA0B,KAAK,GAAIpQ,EAAaD,CAAO,EAC1E,KAAK,QAAQ,qBACb,KAAK,OAAO,KAAK,CACf,QAAAA,EACA,YAAAC,EACA,WAAA8J,EACA,UAAA7J,EACA,QAAAC,EACA,OAAAd,EACA,qBAAsB,EACxB,CAAC,CACH,CAAC,CACH,CACF,CACA,WAAWW,EAAS8E,EAAS,CAC3B,IAAMsH,EAAS,KAAK,QAKpB,GAJIpM,EAAQ,mBACV,KAAK,+BAA+BA,EAAS8E,CAAO,EAGlD,KAAK,sBAAsB9E,EAAS8E,EAAS,EAAI,EAAG,OAGxD,IAAIqW,EAAoC,GACxC,GAAI/O,EAAO,gBAAiB,CAC1B,IAAMgP,EAAiBhP,EAAO,QAAQ,OAASA,EAAO,wBAAwB,IAAIpM,CAAO,EAAI,CAAC,EAK9F,GAAIob,GAAkBA,EAAe,OACnCD,EAAoC,OAC/B,CACL,IAAIta,EAASb,EACb,KAAOa,EAASA,EAAO,YAErB,GADiBuL,EAAO,gBAAgB,IAAIvL,CAAM,EACpC,CACZsa,EAAoC,GACpC,KACF,CAEJ,CACF,CAQA,GAHA,KAAK,+BAA+Bnb,CAAO,EAGvCmb,EACF/O,EAAO,qBAAqB,KAAK,GAAIpM,EAAS,GAAO8E,CAAO,MACvD,CACL,IAAMuW,EAAcrb,EAAQqL,EAAY,GACpC,CAACgQ,GAAeA,IAAgBtL,MAGlC3D,EAAO,WAAW,IAAM,KAAK,kBAAkBpM,CAAO,CAAC,EACvDoM,EAAO,uBAAuBpM,CAAO,EACrCoM,EAAO,mBAAmBpM,EAAS8E,CAAO,EAE9C,CACF,CACA,WAAW9E,EAASa,EAAQ,CAC1BmL,GAAShM,EAAS,KAAK,cAAc,CACvC,CACA,uBAAuBsb,EAAa,CAClC,IAAM/G,EAAe,CAAC,EACtB,YAAK,OAAO,QAAQiG,GAAS,CAC3B,IAAMnb,EAASmb,EAAM,OACrB,GAAInb,EAAO,UAAW,OACtB,IAAMW,EAAUwa,EAAM,QAChBL,EAAY,KAAK,kBAAkB,IAAIna,CAAO,EAChDma,GACFA,EAAU,QAAQe,GAAY,CAC5B,GAAIA,EAAS,MAAQV,EAAM,YAAa,CACtC,IAAMb,EAAY7Z,GAAmBE,EAASwa,EAAM,YAAaA,EAAM,UAAU,MAAOA,EAAM,QAAQ,KAAK,EAC3Gb,EAAU,MAAW2B,EACrBlc,GAAeob,EAAM,OAAQU,EAAS,MAAOvB,EAAWuB,EAAS,QAAQ,CAC3E,CACF,CAAC,EAEC7b,EAAO,iBACT,KAAK,QAAQ,WAAW,IAAM,CAG5BA,EAAO,QAAQ,CACjB,CAAC,EAEDkV,EAAa,KAAKiG,CAAK,CAE3B,CAAC,EACD,KAAK,OAAS,CAAC,EACRjG,EAAa,KAAK,CAAC9H,EAAGC,IAAM,CAGjC,IAAM6O,EAAK9O,EAAE,WAAW,IAAI,SACtB+O,EAAK9O,EAAE,WAAW,IAAI,SAC5B,OAAI6O,GAAM,GAAKC,GAAM,EACZD,EAAKC,EAEP,KAAK,QAAQ,OAAO,gBAAgB/O,EAAE,QAASC,EAAE,OAAO,EAAI,EAAI,EACzE,CAAC,CACH,CACA,QAAQ5H,EAAS,CACf,KAAK,QAAQ,QAAQ2W,GAAKA,EAAE,QAAQ,CAAC,EACrC,KAAK,+BAA+B,KAAK,YAAa3W,CAAO,CAC/D,CACF,EACMsL,GAAN,KAAgC,CAC9B,SACA,OACA,YACA,QAAU,CAAC,EACX,gBAA+B,IAAI,IACnC,iBAAgC,IAAI,IACpC,wBAAuC,IAAI,IAC3C,gBAA+B,IAAI,IACnC,cAA6B,IAAI,IACjC,gBAAkB,EAClB,mBAAqB,EACrB,iBAAmB,CAAC,EACpB,eAAiB,CAAC,EAClB,UAAY,CAAC,EACb,cAAgB,CAAC,EACjB,wBAAuC,IAAI,IAC3C,uBAAyB,CAAC,EAC1B,uBAAyB,CAAC,EAE1B,kBAAoB,CAACpQ,EAAS8E,IAAY,CAAC,EAE3C,mBAAmB9E,EAAS8E,EAAS,CACnC,KAAK,kBAAkB9E,EAAS8E,CAAO,CACzC,CACA,YAAY0U,EAAUrT,EAAQmT,EAAa,CACzC,KAAK,SAAWE,EAChB,KAAK,OAASrT,EACd,KAAK,YAAcmT,CACrB,CACA,IAAI,eAAgB,CAClB,IAAMtb,EAAU,CAAC,EACjB,YAAK,eAAe,QAAQ2c,GAAM,CAChCA,EAAG,QAAQ,QAAQtb,GAAU,CACvBA,EAAO,QACTrB,EAAQ,KAAKqB,CAAM,CAEvB,CAAC,CACH,CAAC,EACMrB,CACT,CACA,gBAAgB6b,EAAaI,EAAa,CACxC,IAAMU,EAAK,IAAIxK,GAA6B0J,EAAaI,EAAa,IAAI,EAC1E,OAAI,KAAK,UAAY,KAAK,OAAO,gBAAgB,KAAK,SAAUA,CAAW,EACzE,KAAK,sBAAsBU,EAAIV,CAAW,GAK1C,KAAK,gBAAgB,IAAIA,EAAaU,CAAE,EAMxC,KAAK,oBAAoBV,CAAW,GAE/B,KAAK,iBAAiBJ,CAAW,EAAIc,CAC9C,CACA,sBAAsBA,EAAIV,EAAa,CACrC,IAAMyB,EAAgB,KAAK,eACrBC,EAA0B,KAAK,wBAErC,GADcD,EAAc,OAAS,GACxB,EAAG,CACd,IAAIE,EAAQ,GAGRC,EAAW,KAAK,OAAO,iBAAiB5B,CAAW,EACvD,KAAO4B,GAAU,CACf,IAAMC,EAAaH,EAAwB,IAAIE,CAAQ,EACvD,GAAIC,EAAY,CAGd,IAAMvR,EAAQmR,EAAc,QAAQI,CAAU,EAC9CJ,EAAc,OAAOnR,EAAQ,EAAG,EAAGoQ,CAAE,EACrCiB,EAAQ,GACR,KACF,CACAC,EAAW,KAAK,OAAO,iBAAiBA,CAAQ,CAClD,CACKD,GAIHF,EAAc,QAAQf,CAAE,CAE5B,MACEe,EAAc,KAAKf,CAAE,EAEvB,OAAAgB,EAAwB,IAAI1B,EAAaU,CAAE,EACpCA,CACT,CACA,SAASd,EAAaI,EAAa,CACjC,IAAIU,EAAK,KAAK,iBAAiBd,CAAW,EAC1C,OAAKc,IACHA,EAAK,KAAK,gBAAgBd,EAAaI,CAAW,GAE7CU,CACT,CACA,gBAAgBd,EAAa7c,EAAM4Q,EAAS,CAC1C,IAAI+M,EAAK,KAAK,iBAAiBd,CAAW,EACtCc,GAAMA,EAAG,SAAS3d,EAAM4Q,CAAO,GACjC,KAAK,iBAET,CACA,QAAQiM,EAAa/U,EAAS,CACvB+U,IACL,KAAK,WAAW,IAAM,CAAC,CAAC,EACxB,KAAK,yBAAyB,IAAM,CAClC,IAAMc,EAAK,KAAK,gBAAgBd,CAAW,EAC3C,KAAK,wBAAwB,OAAOc,EAAG,WAAW,EAClD,IAAMpQ,EAAQ,KAAK,eAAe,QAAQoQ,CAAE,EACxCpQ,GAAS,GACX,KAAK,eAAe,OAAOA,EAAO,CAAC,EAErCoQ,EAAG,QAAQ7V,CAAO,EAClB,OAAO,KAAK,iBAAiB+U,CAAW,CAC1C,CAAC,EACH,CACA,gBAAgBtc,EAAI,CAClB,OAAO,KAAK,iBAAiBA,CAAE,CACjC,CACA,yBAAyByC,EAAS,CAMhC,IAAM0a,EAAa,IAAI,IACjBM,EAAgB,KAAK,gBAAgB,IAAIhb,CAAO,EACtD,GAAIgb,GACF,QAASe,KAAcf,EAAc,OAAO,EAC1C,GAAIe,EAAW,YAAa,CAC1B,IAAMpB,EAAK,KAAK,gBAAgBoB,EAAW,WAAW,EAClDpB,GACFD,EAAW,IAAIC,CAAE,CAErB,EAGJ,OAAOD,CACT,CACA,QAAQb,EAAa7Z,EAAShD,EAAMzB,EAAO,CACzC,GAAIkP,GAAczK,CAAO,EAAG,CAC1B,IAAM2a,EAAK,KAAK,gBAAgBd,CAAW,EAC3C,GAAIc,EACF,OAAAA,EAAG,QAAQ3a,EAAShD,EAAMzB,CAAK,EACxB,EAEX,CACA,MAAO,EACT,CACA,WAAWse,EAAa7Z,EAASa,EAAQmb,EAAc,CACrD,GAAI,CAACvR,GAAczK,CAAO,EAAG,OAG7B,IAAMic,EAAUjc,EAAQqL,EAAY,EACpC,GAAI4Q,GAAWA,EAAQ,cAAe,CACpCA,EAAQ,cAAgB,GACxBA,EAAQ,WAAa,GACrB,IAAM1R,EAAQ,KAAK,uBAAuB,QAAQvK,CAAO,EACrDuK,GAAS,GACX,KAAK,uBAAuB,OAAOA,EAAO,CAAC,CAE/C,CAIA,GAAIsP,EAAa,CACf,IAAMc,EAAK,KAAK,gBAAgBd,CAAW,EAOvCc,GACFA,EAAG,WAAW3a,EAASa,CAAM,CAEjC,CAEImb,GACF,KAAK,oBAAoBhc,CAAO,CAEpC,CACA,oBAAoBA,EAAS,CAC3B,KAAK,uBAAuB,KAAKA,CAAO,CAC1C,CACA,sBAAsBA,EAASzE,EAAO,CAChCA,EACG,KAAK,cAAc,IAAIyE,CAAO,IACjC,KAAK,cAAc,IAAIA,CAAO,EAC9BgM,GAAShM,EAAS0P,EAAkB,GAE7B,KAAK,cAAc,IAAI1P,CAAO,IACvC,KAAK,cAAc,OAAOA,CAAO,EACjCkM,GAAYlM,EAAS0P,EAAkB,EAE3C,CACA,WAAWmK,EAAa7Z,EAAS8E,EAAS,CACxC,GAAI2F,GAAczK,CAAO,EAAG,CAC1B,IAAM2a,EAAKd,EAAc,KAAK,gBAAgBA,CAAW,EAAI,KACzDc,EACFA,EAAG,WAAW3a,EAAS8E,CAAO,EAE9B,KAAK,qBAAqB+U,EAAa7Z,EAAS,GAAO8E,CAAO,EAEhE,IAAMoX,EAAS,KAAK,wBAAwB,IAAIlc,CAAO,EACnDkc,GAAUA,EAAO,KAAOrC,GAC1BqC,EAAO,WAAWlc,EAAS8E,CAAO,CAEtC,MACE,KAAK,mBAAmB9E,EAAS8E,CAAO,CAE5C,CACA,qBAAqB+U,EAAa7Z,EAASmc,EAAcrX,EAASgW,EAAwB,CACxF,KAAK,uBAAuB,KAAK9a,CAAO,EACxCA,EAAQqL,EAAY,EAAI,CACtB,YAAAwO,EACA,cAAe/U,EACf,aAAAqX,EACA,qBAAsB,GACtB,uBAAArB,CACF,CACF,CACA,OAAOjB,EAAa7Z,EAAShD,EAAMS,EAAO+B,EAAU,CAClD,OAAIiL,GAAczK,CAAO,EAChB,KAAK,gBAAgB6Z,CAAW,EAAE,OAAO7Z,EAAShD,EAAMS,EAAO+B,CAAQ,EAEzE,IAAM,CAAC,CAChB,CACA,kBAAkBgb,EAAO4B,EAAcrU,EAAgBC,EAAgBqU,EAAc,CACnF,OAAO7B,EAAM,WAAW,MAAM,KAAK,OAAQA,EAAM,QAASA,EAAM,UAAU,MAAOA,EAAM,QAAQ,MAAOzS,EAAgBC,EAAgBwS,EAAM,UAAU,QAASA,EAAM,QAAQ,QAAS4B,EAAcC,CAAY,CAClN,CACA,uBAAuBC,EAAkB,CACvC,IAAIvR,EAAW,KAAK,OAAO,MAAMuR,EAAkB1V,GAAqB,EAAI,EAC5EmE,EAAS,QAAQ/K,GAAW,KAAK,kCAAkCA,CAAO,CAAC,EACvE,KAAK,wBAAwB,MAAQ,IACzC+K,EAAW,KAAK,OAAO,MAAMuR,EAAkBzV,GAAuB,EAAI,EAC1EkE,EAAS,QAAQ/K,GAAW,KAAK,sCAAsCA,CAAO,CAAC,EACjF,CACA,kCAAkCA,EAAS,CACzC,IAAMhC,EAAU,KAAK,iBAAiB,IAAIgC,CAAO,EAC7ChC,GACFA,EAAQ,QAAQqB,GAAU,CAIpBA,EAAO,OACTA,EAAO,iBAAmB,GAE1BA,EAAO,QAAQ,CAEnB,CAAC,CAEL,CACA,sCAAsCW,EAAS,CAC7C,IAAMhC,EAAU,KAAK,wBAAwB,IAAIgC,CAAO,EACpDhC,GACFA,EAAQ,QAAQqB,GAAUA,EAAO,OAAO,CAAC,CAE7C,CACA,mBAAoB,CAClB,OAAO,IAAI,QAAQkd,GAAW,CAC5B,GAAI,KAAK,QAAQ,OACf,OAAOxe,GAAoB,KAAK,OAAO,EAAE,OAAO,IAAMwe,EAAQ,CAAC,EAE/DA,EAAQ,CAEZ,CAAC,CACH,CACA,iBAAiBvc,EAAS,CACxB,IAAMic,EAAUjc,EAAQqL,EAAY,EACpC,GAAI4Q,GAAWA,EAAQ,cAAe,CAGpC,GADAjc,EAAQqL,EAAY,EAAI0E,GACpBkM,EAAQ,YAAa,CACvB,KAAK,uBAAuBjc,CAAO,EACnC,IAAM2a,EAAK,KAAK,gBAAgBsB,EAAQ,WAAW,EAC/CtB,GACFA,EAAG,kBAAkB3a,CAAO,CAEhC,CACA,KAAK,mBAAmBA,EAASic,EAAQ,aAAa,CACxD,CACIjc,EAAQ,WAAW,SAAS0P,EAAkB,GAChD,KAAK,sBAAsB1P,EAAS,EAAK,EAE3C,KAAK,OAAO,MAAMA,EAAS2P,IAAmB,EAAI,EAAE,QAAQ9K,GAAQ,CAClE,KAAK,sBAAsBA,EAAM,EAAK,CACxC,CAAC,CACH,CACA,MAAMyW,EAAc,GAAI,CACtB,IAAItd,EAAU,CAAC,EAKf,GAJI,KAAK,gBAAgB,OACvB,KAAK,gBAAgB,QAAQ,CAAC2c,EAAI3a,IAAY,KAAK,sBAAsB2a,EAAI3a,CAAO,CAAC,EACrF,KAAK,gBAAgB,MAAM,GAEzB,KAAK,iBAAmB,KAAK,uBAAuB,OACtD,QAASyE,EAAI,EAAGA,EAAI,KAAK,uBAAuB,OAAQA,IAAK,CAC3D,IAAM0U,EAAM,KAAK,uBAAuB1U,CAAC,EACzCuH,GAASmN,EAAKvJ,GAAc,CAC9B,CAEF,GAAI,KAAK,eAAe,SAAW,KAAK,oBAAsB,KAAK,uBAAuB,QAAS,CACjG,IAAM4M,EAAa,CAAC,EACpB,GAAI,CACFxe,EAAU,KAAK,iBAAiBwe,EAAYlB,CAAW,CACzD,QAAE,CACA,QAAS7W,EAAI,EAAGA,EAAI+X,EAAW,OAAQ/X,IACrC+X,EAAW/X,CAAC,EAAE,CAElB,CACF,KACE,SAASA,EAAI,EAAGA,EAAI,KAAK,uBAAuB,OAAQA,IAAK,CAC3D,IAAMzE,EAAU,KAAK,uBAAuByE,CAAC,EAC7C,KAAK,iBAAiBzE,CAAO,CAC/B,CAOF,GALA,KAAK,mBAAqB,EAC1B,KAAK,uBAAuB,OAAS,EACrC,KAAK,uBAAuB,OAAS,EACrC,KAAK,UAAU,QAAQqJ,GAAMA,EAAG,CAAC,EACjC,KAAK,UAAY,CAAC,EACd,KAAK,cAAc,OAAQ,CAI7B,IAAMoT,EAAW,KAAK,cACtB,KAAK,cAAgB,CAAC,EAClBze,EAAQ,OACVD,GAAoBC,CAAO,EAAE,OAAO,IAAM,CACxCye,EAAS,QAAQpT,GAAMA,EAAG,CAAC,CAC7B,CAAC,EAEDoT,EAAS,QAAQpT,GAAMA,EAAG,CAAC,CAE/B,CACF,CACA,YAAYpM,EAAQ,CAClB,MAAMY,IAAyBZ,CAAM,CACvC,CACA,iBAAiBuf,EAAYlB,EAAa,CACxC,IAAMc,EAAe,IAAI1N,GACnBgO,EAAiB,CAAC,EAClBC,EAAoB,IAAI,IACxBC,EAAqB,CAAC,EACtB5T,EAAkB,IAAI,IACtB8D,EAAsB,IAAI,IAC1BC,EAAuB,IAAI,IAC3B8P,EAAsB,IAAI,IAChC,KAAK,cAAc,QAAQhY,IAAQ,CACjCgY,EAAoB,IAAIhY,EAAI,EAC5B,IAAMiY,GAAuB,KAAK,OAAO,MAAMjY,GAAM4K,IAAiB,EAAI,EAC1E,QAAShL,GAAI,EAAGA,GAAIqY,GAAqB,OAAQrY,KAC/CoY,EAAoB,IAAIC,GAAqBrY,EAAC,CAAC,CAEnD,CAAC,EACD,IAAM+U,EAAW,KAAK,SAChBuD,EAAqB,MAAM,KAAK,KAAK,gBAAgB,KAAK,CAAC,EAC3DC,EAAezR,GAAawR,EAAoB,KAAK,sBAAsB,EAI3EE,EAAkB,IAAI,IACxBxY,GAAI,EACRuY,EAAa,QAAQ,CAACvR,GAAOE,KAAS,CACpC,IAAMM,GAAYiC,GAAkBzJ,KACpCwY,EAAgB,IAAItR,GAAMM,EAAS,EACnCR,GAAM,QAAQ5G,IAAQmH,GAASnH,GAAMoH,EAAS,CAAC,CACjD,CAAC,EACD,IAAMiR,GAAgB,CAAC,EACjBC,GAAmB,IAAI,IACvBC,GAA8B,IAAI,IACxC,QAAS3Y,GAAI,EAAGA,GAAI,KAAK,uBAAuB,OAAQA,KAAK,CAC3D,IAAMzE,GAAU,KAAK,uBAAuByE,EAAC,EACvCwX,GAAUjc,GAAQqL,EAAY,EAChC4Q,IAAWA,GAAQ,gBACrBiB,GAAc,KAAKld,EAAO,EAC1Bmd,GAAiB,IAAInd,EAAO,EACxBic,GAAQ,aACV,KAAK,OAAO,MAAMjc,GAAS6P,IAAe,EAAI,EAAE,QAAQsJ,IAAOgE,GAAiB,IAAIhE,EAAG,CAAC,EAExFiE,GAA4B,IAAIpd,EAAO,EAG7C,CACA,IAAMqd,GAAkB,IAAI,IACtBC,GAAe/R,GAAawR,EAAoB,MAAM,KAAKI,EAAgB,CAAC,EAClFG,GAAa,QAAQ,CAAC7R,GAAOE,KAAS,CACpC,IAAMM,GAAYkC,GAAkB1J,KACpC4Y,GAAgB,IAAI1R,GAAMM,EAAS,EACnCR,GAAM,QAAQ5G,IAAQmH,GAASnH,GAAMoH,EAAS,CAAC,CACjD,CAAC,EACDuQ,EAAW,KAAK,IAAM,CACpBQ,EAAa,QAAQ,CAACvR,GAAOE,KAAS,CACpC,IAAMM,GAAYgR,EAAgB,IAAItR,EAAI,EAC1CF,GAAM,QAAQ5G,IAAQqH,GAAYrH,GAAMoH,EAAS,CAAC,CACpD,CAAC,EACDqR,GAAa,QAAQ,CAAC7R,GAAOE,KAAS,CACpC,IAAMM,GAAYoR,GAAgB,IAAI1R,EAAI,EAC1CF,GAAM,QAAQ5G,IAAQqH,GAAYrH,GAAMoH,EAAS,CAAC,CACpD,CAAC,EACDiR,GAAc,QAAQld,IAAW,CAC/B,KAAK,iBAAiBA,EAAO,CAC/B,CAAC,CACH,CAAC,EACD,IAAMud,GAAa,CAAC,EACdC,GAAuB,CAAC,EAC9B,QAAS/Y,GAAI,KAAK,eAAe,OAAS,EAAGA,IAAK,EAAGA,KACxC,KAAK,eAAeA,EAAC,EAC7B,uBAAuB6W,CAAW,EAAE,QAAQd,IAAS,CACtD,IAAMnb,GAASmb,GAAM,OACfxa,GAAUwa,GAAM,QAEtB,GADA+C,GAAW,KAAKle,EAAM,EAClB,KAAK,uBAAuB,OAAQ,CACtC,IAAM4c,GAAUjc,GAAQqL,EAAY,EAGpC,GAAI4Q,IAAWA,GAAQ,WAAY,CACjC,GAAIA,GAAQ,wBAA0BA,GAAQ,uBAAuB,IAAIzB,GAAM,WAAW,EAAG,CAC3F,IAAMiD,GAAgBxB,GAAQ,uBAAuB,IAAIzB,GAAM,WAAW,EAGpEJ,GAAqB,KAAK,gBAAgB,IAAII,GAAM,OAAO,EACjE,GAAIJ,IAAsBA,GAAmB,IAAII,GAAM,WAAW,EAAG,CACnE,IAAMO,GAAQX,GAAmB,IAAII,GAAM,WAAW,EACtDO,GAAM,MAAQ0C,GACdrD,GAAmB,IAAII,GAAM,YAAaO,EAAK,CACjD,CACF,CACA1b,GAAO,QAAQ,EACf,MACF,CACF,CACA,IAAMqe,GAAiB,CAAClE,GAAY,CAAC,KAAK,OAAO,gBAAgBA,EAAUxZ,EAAO,EAC5EgI,GAAiBqV,GAAgB,IAAIrd,EAAO,EAC5C+H,GAAiBkV,EAAgB,IAAIjd,EAAO,EAC5CiV,GAAc,KAAK,kBAAkBuF,GAAO4B,EAAcrU,GAAgBC,GAAgB0V,EAAc,EAC9G,GAAIzI,GAAY,QAAUA,GAAY,OAAO,OAAQ,CACnDuI,GAAqB,KAAKvI,EAAW,EACrC,MACF,CAKA,GAAIyI,GAAgB,CAClBre,GAAO,QAAQ,IAAM6D,GAAYlD,GAASiV,GAAY,UAAU,CAAC,EACjE5V,GAAO,UAAU,IAAMwD,GAAU7C,GAASiV,GAAY,QAAQ,CAAC,EAC/DyH,EAAe,KAAKrd,EAAM,EAC1B,MACF,CAIA,GAAImb,GAAM,qBAAsB,CAC9Bnb,GAAO,QAAQ,IAAM6D,GAAYlD,GAASiV,GAAY,UAAU,CAAC,EACjE5V,GAAO,UAAU,IAAMwD,GAAU7C,GAASiV,GAAY,QAAQ,CAAC,EAC/DyH,EAAe,KAAKrd,EAAM,EAC1B,MACF,CAMA,IAAM0J,GAAY,CAAC,EACnBkM,GAAY,UAAU,QAAQU,IAAM,CAClCA,GAAG,wBAA0B,GACxB,KAAK,cAAc,IAAIA,GAAG,OAAO,GACpC5M,GAAU,KAAK4M,EAAE,CAErB,CAAC,EACDV,GAAY,UAAYlM,GACxBqT,EAAa,OAAOpc,GAASiV,GAAY,SAAS,EAClD,IAAM5B,GAAQ,CACZ,YAAA4B,GACA,OAAA5V,GACA,QAAAW,EACF,EACA4c,EAAmB,KAAKvJ,EAAK,EAC7B4B,GAAY,gBAAgB,QAAQjV,IAAWI,GAAqB4I,EAAiBhJ,GAAS,CAAC,CAAC,EAAE,KAAKX,EAAM,CAAC,EAC9G4V,GAAY,cAAc,QAAQ,CAAC0I,GAAW3d,KAAY,CACxD,GAAI2d,GAAU,KAAM,CAClB,IAAIC,GAAS9Q,EAAoB,IAAI9M,EAAO,EACvC4d,IACH9Q,EAAoB,IAAI9M,GAAS4d,GAAS,IAAI,GAAK,EAErDD,GAAU,QAAQ,CAACxa,GAAGpH,KAAS6hB,GAAO,IAAI7hB,EAAI,CAAC,CACjD,CACF,CAAC,EACDkZ,GAAY,eAAe,QAAQ,CAAC0I,GAAW3d,KAAY,CACzD,IAAI4d,GAAS7Q,EAAqB,IAAI/M,EAAO,EACxC4d,IACH7Q,EAAqB,IAAI/M,GAAS4d,GAAS,IAAI,GAAK,EAEtDD,GAAU,QAAQ,CAACxa,GAAGpH,KAAS6hB,GAAO,IAAI7hB,EAAI,CAAC,CACjD,CAAC,CACH,CAAC,EAEH,GAAIyhB,GAAqB,OAAQ,CAC/B,IAAMvgB,GAAS,CAAC,EAChBugB,GAAqB,QAAQvI,IAAe,CAC1ChY,GAAO,KAAKa,IAAiBmX,GAAY,YAAaA,GAAY,MAAM,CAAC,CAC3E,CAAC,EACDsI,GAAW,QAAQle,IAAUA,GAAO,QAAQ,CAAC,EAC7C,KAAK,YAAYpC,EAAM,CACzB,CACA,IAAM4gB,GAAwB,IAAI,IAK5BC,GAAsB,IAAI,IAChClB,EAAmB,QAAQpC,IAAS,CAClC,IAAMxa,GAAUwa,GAAM,QAClB4B,EAAa,IAAIpc,EAAO,IAC1B8d,GAAoB,IAAI9d,GAASA,EAAO,EACxC,KAAK,sBAAsBwa,GAAM,OAAO,YAAaA,GAAM,YAAaqD,EAAqB,EAEjG,CAAC,EACDnB,EAAe,QAAQrd,IAAU,CAC/B,IAAMW,GAAUX,GAAO,QACC,KAAK,oBAAoBW,GAAS,GAAOX,GAAO,YAAaA,GAAO,YAAa,IAAI,EAC7F,QAAQ0e,IAAc,CACpC3d,GAAqByd,GAAuB7d,GAAS,CAAC,CAAC,EAAE,KAAK+d,EAAU,EACxEA,GAAW,QAAQ,CACrB,CAAC,CACH,CAAC,EAQD,IAAMC,GAAed,GAAc,OAAOrY,IACjCgI,GAAuBhI,GAAMiI,EAAqBC,CAAoB,CAC9E,EAEKkR,GAAgB,IAAI,IACGpT,GAAsBoT,GAAe,KAAK,OAAQb,GAA6BrQ,EAAsB5N,EAAU,EACvH,QAAQ0F,IAAQ,CAC/BgI,GAAuBhI,GAAMiI,EAAqBC,CAAoB,GACxEiR,GAAa,KAAKnZ,EAAI,CAE1B,CAAC,EAED,IAAMqZ,GAAe,IAAI,IACzBlB,EAAa,QAAQ,CAACvR,GAAOE,KAAS,CACpCd,GAAsBqT,GAAc,KAAK,OAAQ,IAAI,IAAIzS,EAAK,EAAGqB,EAAqB5N,EAAU,CAClG,CAAC,EACD8e,GAAa,QAAQnZ,IAAQ,CAC3B,IAAMsZ,GAAOF,GAAc,IAAIpZ,EAAI,EAC7BuZ,GAAMF,GAAa,IAAIrZ,EAAI,EACjCoZ,GAAc,IAAIpZ,GAAM,IAAI,IAAI,CAAC,GAAIsZ,IAAM,QAAQ,GAAK,CAAC,EAAI,GAAIC,IAAK,QAAQ,GAAK,CAAC,CAAE,CAAC,CAAC,CAC1F,CAAC,EACD,IAAMC,GAAc,CAAC,EACfC,GAAa,CAAC,EACdC,GAAuC,CAAC,EAC9C3B,EAAmB,QAAQpC,IAAS,CAClC,GAAM,CACJ,QAAAxa,GACA,OAAAX,GACA,YAAA4V,EACF,EAAIuF,GAGJ,GAAI4B,EAAa,IAAIpc,EAAO,EAAG,CAC7B,GAAI6c,EAAoB,IAAI7c,EAAO,EAAG,CACpCX,GAAO,UAAU,IAAMwD,GAAU7C,GAASiV,GAAY,QAAQ,CAAC,EAC/D5V,GAAO,SAAW,GAClBA,GAAO,kBAAkB4V,GAAY,SAAS,EAC9CyH,EAAe,KAAKrd,EAAM,EAC1B,MACF,CAOA,IAAImf,GAAsBD,GAC1B,GAAIT,GAAoB,KAAO,EAAG,CAChC,IAAI3E,GAAMnZ,GACJye,GAAe,CAAC,EACtB,KAAOtF,GAAMA,GAAI,YAAY,CAC3B,IAAMuF,GAAiBZ,GAAoB,IAAI3E,EAAG,EAClD,GAAIuF,GAAgB,CAClBF,GAAsBE,GACtB,KACF,CACAD,GAAa,KAAKtF,EAAG,CACvB,CACAsF,GAAa,QAAQ5d,IAAUid,GAAoB,IAAIjd,GAAQ2d,EAAmB,CAAC,CACrF,CACA,IAAMG,GAAc,KAAK,gBAAgBtf,GAAO,YAAa4V,GAAa4I,GAAuBlB,EAAmBuB,GAAcD,EAAa,EAE/I,GADA5e,GAAO,cAAcsf,EAAW,EAC5BH,KAAwBD,GAC1BF,GAAY,KAAKhf,EAAM,MAClB,CACL,IAAMuf,GAAgB,KAAK,iBAAiB,IAAIJ,EAAmB,EAC/DI,IAAiBA,GAAc,SACjCvf,GAAO,aAAetB,GAAoB6gB,EAAa,GAEzDlC,EAAe,KAAKrd,EAAM,CAC5B,CACF,MACE6D,GAAYlD,GAASiV,GAAY,UAAU,EAC3C5V,GAAO,UAAU,IAAMwD,GAAU7C,GAASiV,GAAY,QAAQ,CAAC,EAI/DqJ,GAAW,KAAKjf,EAAM,EAClBwd,EAAoB,IAAI7c,EAAO,GACjC0c,EAAe,KAAKrd,EAAM,CAGhC,CAAC,EAEDif,GAAW,QAAQjf,IAAU,CAG3B,IAAMwf,GAAoBlC,EAAkB,IAAItd,GAAO,OAAO,EAC9D,GAAIwf,IAAqBA,GAAkB,OAAQ,CACjD,IAAMF,GAAc5gB,GAAoB8gB,EAAiB,EACzDxf,GAAO,cAAcsf,EAAW,CAClC,CACF,CAAC,EAIDjC,EAAe,QAAQrd,IAAU,CAC3BA,GAAO,aACTA,GAAO,iBAAiBA,GAAO,YAAY,EAE3CA,GAAO,QAAQ,CAEnB,CAAC,EAID,QAASoF,GAAI,EAAGA,GAAIyY,GAAc,OAAQzY,KAAK,CAC7C,IAAMzE,GAAUkd,GAAczY,EAAC,EACzBwX,GAAUjc,GAAQqL,EAAY,EAKpC,GAJAa,GAAYlM,GAASmO,EAAe,EAIhC8N,IAAWA,GAAQ,aAAc,SACrC,IAAIje,GAAU,CAAC,EAIf,GAAIgL,EAAgB,KAAM,CACxB,IAAI8V,GAAuB9V,EAAgB,IAAIhJ,EAAO,EAClD8e,IAAwBA,GAAqB,QAC/C9gB,GAAQ,KAAK,GAAG8gB,EAAoB,EAEtC,IAAIC,GAAuB,KAAK,OAAO,MAAM/e,GAAS6G,GAAuB,EAAI,EACjF,QAASmY,GAAI,EAAGA,GAAID,GAAqB,OAAQC,KAAK,CACpD,IAAIC,GAAiBjW,EAAgB,IAAI+V,GAAqBC,EAAC,CAAC,EAC5DC,IAAkBA,GAAe,QACnCjhB,GAAQ,KAAK,GAAGihB,EAAc,CAElC,CACF,CACA,IAAMC,GAAgBlhB,GAAQ,OAAOyd,IAAK,CAACA,GAAE,SAAS,EAClDyD,GAAc,OAChB/S,IAA8B,KAAMnM,GAASkf,EAAa,EAE1D,KAAK,iBAAiBlf,EAAO,CAEjC,CAEA,OAAAkd,GAAc,OAAS,EACvBmB,GAAY,QAAQhf,IAAU,CAC5B,KAAK,QAAQ,KAAKA,EAAM,EACxBA,GAAO,OAAO,IAAM,CAClBA,GAAO,QAAQ,EACf,IAAMkL,GAAQ,KAAK,QAAQ,QAAQlL,EAAM,EACzC,KAAK,QAAQ,OAAOkL,GAAO,CAAC,CAC9B,CAAC,EACDlL,GAAO,KAAK,CACd,CAAC,EACMgf,EACT,CACA,WAAW7e,EAAU,CACnB,KAAK,UAAU,KAAKA,CAAQ,CAC9B,CACA,yBAAyBA,EAAU,CACjC,KAAK,cAAc,KAAKA,CAAQ,CAClC,CACA,oBAAoBQ,EAASmf,EAAkBtF,EAAa5Z,EAAamf,EAAc,CACrF,IAAIphB,EAAU,CAAC,EACf,GAAImhB,EAAkB,CACpB,IAAME,EAAwB,KAAK,wBAAwB,IAAIrf,CAAO,EAClEqf,IACFrhB,EAAUqhB,EAEd,KAAO,CACL,IAAM5E,EAAiB,KAAK,iBAAiB,IAAIza,CAAO,EACxD,GAAIya,EAAgB,CAClB,IAAM6E,EAAqB,CAACF,GAAgBA,GAAgBnP,GAC5DwK,EAAe,QAAQpb,GAAU,CAC3BA,EAAO,QACP,CAACigB,GAAsBjgB,EAAO,aAAeY,GACjDjC,EAAQ,KAAKqB,CAAM,CACrB,CAAC,CACH,CACF,CACA,OAAIwa,GAAe5Z,KACjBjC,EAAUA,EAAQ,OAAOqB,GACnB,EAAAwa,GAAeA,GAAexa,EAAO,aACrCY,GAAeA,GAAeZ,EAAO,YAE1C,GAEIrB,CACT,CACA,sBAAsB6b,EAAa5E,EAAa4I,EAAuB,CACrE,IAAM5d,EAAcgV,EAAY,YAC1BnN,EAAcmN,EAAY,QAG1BsK,EAAoBtK,EAAY,oBAAsB,OAAY4E,EAClE2F,EAAoBvK,EAAY,oBAAsB,OAAYhV,EACxE,QAAWwf,KAAuBxK,EAAY,UAAW,CACvD,IAAMjV,EAAUyf,EAAoB,QAC9BN,EAAmBnf,IAAY8H,EAC/B9J,EAAUoC,GAAqByd,EAAuB7d,EAAS,CAAC,CAAC,EAC/C,KAAK,oBAAoBA,EAASmf,EAAkBI,EAAmBC,EAAmBvK,EAAY,OAAO,EACrH,QAAQ5V,GAAU,CAChC,IAAMqgB,EAAargB,EAAO,cAAc,EACpCqgB,EAAW,eACbA,EAAW,cAAc,EAE3BrgB,EAAO,QAAQ,EACfrB,EAAQ,KAAKqB,CAAM,CACrB,CAAC,CACH,CAGA6D,GAAY4E,EAAamN,EAAY,UAAU,CACjD,CACA,gBAAgB4E,EAAa5E,EAAa4I,EAAuBlB,EAAmBuB,EAAcD,EAAe,CAC/G,IAAMhe,EAAcgV,EAAY,YAC1BnN,EAAcmN,EAAY,QAG1B0K,EAAoB,CAAC,EACrBC,EAAsB,IAAI,IAC1BC,EAAiB,IAAI,IACrBC,EAAgB7K,EAAY,UAAU,IAAIwK,GAAuB,CACrE,IAAMzf,GAAUyf,EAAoB,QACpCG,EAAoB,IAAI5f,EAAO,EAE/B,IAAMic,GAAUjc,GAAQqL,EAAY,EACpC,GAAI4Q,IAAWA,GAAQ,qBAAsB,OAAO,IAAIhe,GAAoBwhB,EAAoB,SAAUA,EAAoB,KAAK,EACnI,IAAMN,GAAmBnf,KAAY8H,EAC/BoJ,GAAkB7E,KAAqBwR,EAAsB,IAAI7d,EAAO,GAAK8P,KAAoB,IAAI2L,IAAKA,GAAE,cAAc,CAAC,CAAC,EAAE,OAAOA,IAAK,CAK9I,IAAMsE,GAAKtE,GACX,OAAOsE,GAAG,QAAUA,GAAG,UAAY/f,GAAU,EAC/C,CAAC,EACK1B,GAAY4f,EAAa,IAAIle,EAAO,EACpCzB,GAAa0f,EAAc,IAAIje,EAAO,EACtC3B,GAAYF,GAAqB,KAAK,YAAashB,EAAoB,UAAWnhB,GAAWC,EAAU,EACvGc,GAAS,KAAK,aAAaogB,EAAqBphB,GAAW6S,EAAe,EAMhF,GAHIuO,EAAoB,aAAe9C,GACrCkD,EAAe,IAAI7f,EAAO,EAExBmf,GAAkB,CACpB,IAAMa,GAAgB,IAAI3P,GAA0BwJ,EAAa5Z,EAAaD,EAAO,EACrFggB,GAAc,cAAc3gB,EAAM,EAClCsgB,EAAkB,KAAKK,EAAa,CACtC,CACA,OAAO3gB,EACT,CAAC,EACDsgB,EAAkB,QAAQtgB,GAAU,CAClCe,GAAqB,KAAK,wBAAyBf,EAAO,QAAS,CAAC,CAAC,EAAE,KAAKA,CAAM,EAClFA,EAAO,OAAO,IAAMgL,IAAmB,KAAK,wBAAyBhL,EAAO,QAASA,CAAM,CAAC,CAC9F,CAAC,EACDugB,EAAoB,QAAQ5f,GAAWgM,GAAShM,EAASqO,EAAsB,CAAC,EAChF,IAAMhP,EAAStB,GAAoB+hB,CAAa,EAChD,OAAAzgB,EAAO,UAAU,IAAM,CACrBugB,EAAoB,QAAQ5f,GAAWkM,GAAYlM,EAASqO,EAAsB,CAAC,EACnFxL,GAAUiF,EAAamN,EAAY,QAAQ,CAC7C,CAAC,EAGD4K,EAAe,QAAQ7f,GAAW,CAChCI,GAAqBuc,EAAmB3c,EAAS,CAAC,CAAC,EAAE,KAAKX,CAAM,CAClE,CAAC,EACMA,CACT,CACA,aAAa4V,EAAa5W,EAAW6S,EAAiB,CACpD,OAAI7S,EAAU,OAAS,EACd,KAAK,OAAO,QAAQ4W,EAAY,QAAS5W,EAAW4W,EAAY,SAAUA,EAAY,MAAOA,EAAY,OAAQ/D,CAAe,EAIlI,IAAIjT,GAAoBgX,EAAY,SAAUA,EAAY,KAAK,CACxE,CACF,EACM5E,GAAN,KAAgC,CAC9B,YACA,YACA,QACA,QAAuB,IAAIpS,GAC3B,oBAAsB,GACtB,iBAAgC,IAAI,IACpC,UAAY,GACZ,aAAe,KACf,iBAAmB,GACnB,SAAW,GACX,OAAS,GACT,UAAY,EACZ,YAAY4b,EAAa5Z,EAAaD,EAAS,CAC7C,KAAK,YAAc6Z,EACnB,KAAK,YAAc5Z,EACnB,KAAK,QAAUD,CACjB,CACA,cAAcX,EAAQ,CAChB,KAAK,sBACT,KAAK,QAAUA,EACf,KAAK,iBAAiB,QAAQ,CAAC4gB,EAAWxiB,IAAU,CAClDwiB,EAAU,QAAQzgB,GAAYJ,GAAeC,EAAQ5B,EAAO,OAAW+B,CAAQ,CAAC,CAClF,CAAC,EACD,KAAK,iBAAiB,MAAM,EAC5B,KAAK,oBAAsB,GAC3B,KAAK,kBAAkBH,EAAO,SAAS,EACvC,KAAK,OAAS,GAChB,CACA,eAAgB,CACd,OAAO,KAAK,OACd,CACA,kBAAkBO,EAAW,CAC3B,KAAK,UAAYA,CACnB,CACA,iBAAiBP,EAAQ,CACvB,IAAMoc,EAAI,KAAK,QACXA,EAAE,iBACJpc,EAAO,QAAQ,IAAMoc,EAAE,gBAAgB,OAAO,CAAC,EAEjDpc,EAAO,OAAO,IAAM,KAAK,OAAO,CAAC,EACjCA,EAAO,UAAU,IAAM,KAAK,QAAQ,CAAC,CACvC,CACA,YAAYrC,EAAMwC,EAAU,CAC1BY,GAAqB,KAAK,iBAAkBpD,EAAM,CAAC,CAAC,EAAE,KAAKwC,CAAQ,CACrE,CACA,OAAO6J,EAAI,CACL,KAAK,QACP,KAAK,YAAY,OAAQA,CAAE,EAE7B,KAAK,QAAQ,OAAOA,CAAE,CACxB,CACA,QAAQA,EAAI,CACN,KAAK,QACP,KAAK,YAAY,QAASA,CAAE,EAE9B,KAAK,QAAQ,QAAQA,CAAE,CACzB,CACA,UAAUA,EAAI,CACR,KAAK,QACP,KAAK,YAAY,UAAWA,CAAE,EAEhC,KAAK,QAAQ,UAAUA,CAAE,CAC3B,CACA,MAAO,CACL,KAAK,QAAQ,KAAK,CACpB,CACA,YAAa,CACX,OAAO,KAAK,OAAS,GAAQ,KAAK,QAAQ,WAAW,CACvD,CACA,MAAO,CACL,CAAC,KAAK,QAAU,KAAK,QAAQ,KAAK,CACpC,CACA,OAAQ,CACN,CAAC,KAAK,QAAU,KAAK,QAAQ,MAAM,CACrC,CACA,SAAU,CACR,CAAC,KAAK,QAAU,KAAK,QAAQ,QAAQ,CACvC,CACA,QAAS,CACP,KAAK,QAAQ,OAAO,CACtB,CACA,SAAU,CACR,KAAK,UAAY,GACjB,KAAK,QAAQ,QAAQ,CACvB,CACA,OAAQ,CACN,CAAC,KAAK,QAAU,KAAK,QAAQ,MAAM,CACrC,CACA,YAAYoS,EAAG,CACR,KAAK,QACR,KAAK,QAAQ,YAAYA,CAAC,CAE9B,CACA,aAAc,CACZ,OAAO,KAAK,OAAS,EAAI,KAAK,QAAQ,YAAY,CACpD,CAEA,gBAAgB9b,EAAW,CACzB,IAAM8b,EAAI,KAAK,QACXA,EAAE,iBACJA,EAAE,gBAAgB9b,CAAS,CAE/B,CACF,EAgJM2Q,GAAN,KAAsB,CACpB,QACA,YACA,kBACA,gBACA,cAAgB,CAAC,EAEjB,kBAAoB,CAACtQ,EAAS8E,IAAY,CAAC,EAC3C,YAAYob,EAAKxO,EAAS4H,EAAa,CACrC,KAAK,QAAU5H,EACf,KAAK,YAAc4H,EACnB,KAAK,kBAAoB,IAAIlJ,GAA0B8P,EAAI,KAAMxO,EAAS4H,CAAW,EACrF,KAAK,gBAAkB,IAAI/J,GAAwB2Q,EAAI,KAAMxO,EAAS4H,CAAW,EACjF,KAAK,kBAAkB,kBAAoB,CAACtZ,EAAS8E,IAAY,KAAK,kBAAkB9E,EAAS8E,CAAO,CAC1G,CACA,gBAAgBqb,EAAatG,EAAaI,EAAajd,EAAMoJ,EAAU,CACrE,IAAMga,EAAWD,EAAc,IAAMnjB,EACjC4Q,EAAU,KAAK,cAAcwS,CAAQ,EACzC,GAAI,CAACxS,EAAS,CACZ,IAAM3Q,EAAS,CAAC,EACVoJ,EAAW,CAAC,EACZkB,EAAMrB,GAAkB,KAAK,QAASE,EAAUnJ,EAAQoJ,CAAQ,EACtE,GAAIpJ,EAAO,OACT,MAAMF,IAAmBC,EAAMC,CAAM,EAOvC2Q,EAAUnE,IAAazM,EAAMuK,EAAK,KAAK,WAAW,EAClD,KAAK,cAAc6Y,CAAQ,EAAIxS,CACjC,CACA,KAAK,kBAAkB,gBAAgBiM,EAAa7c,EAAM4Q,CAAO,CACnE,CACA,SAASiM,EAAaI,EAAa,CACjC,KAAK,kBAAkB,SAASJ,EAAaI,CAAW,CAC1D,CACA,QAAQJ,EAAa/U,EAAS,CAC5B,KAAK,kBAAkB,QAAQ+U,EAAa/U,CAAO,CACrD,CACA,SAAS+U,EAAa7Z,EAASa,EAAQmb,EAAc,CACnD,KAAK,kBAAkB,WAAWnC,EAAa7Z,EAASa,EAAQmb,CAAY,CAC9E,CACA,SAASnC,EAAa7Z,EAAS8E,EAAS,CACtC,KAAK,kBAAkB,WAAW+U,EAAa7Z,EAAS8E,CAAO,CACjE,CACA,kBAAkB9E,EAASqgB,EAAS,CAClC,KAAK,kBAAkB,sBAAsBrgB,EAASqgB,CAAO,CAC/D,CACA,QAAQxG,EAAa7Z,EAASsgB,EAAU/kB,EAAO,CAC7C,GAAI+kB,EAAS,OAAO,CAAC,GAAK,IAAK,CAC7B,GAAM,CAAC/iB,EAAIoD,CAAM,EAAIH,GAAqB8f,CAAQ,EAC5C1G,EAAOre,EACb,KAAK,gBAAgB,QAAQgC,EAAIyC,EAASW,EAAQiZ,CAAI,CACxD,MACE,KAAK,kBAAkB,QAAQC,EAAa7Z,EAASsgB,EAAU/kB,CAAK,CAExE,CACA,OAAOse,EAAa7Z,EAASV,EAAWihB,EAAY/gB,EAAU,CAE5D,GAAIF,EAAU,OAAO,CAAC,GAAK,IAAK,CAC9B,GAAM,CAAC/B,EAAIoD,CAAM,EAAIH,GAAqBlB,CAAS,EACnD,OAAO,KAAK,gBAAgB,OAAO/B,EAAIyC,EAASW,EAAQnB,CAAQ,CAClE,CACA,OAAO,KAAK,kBAAkB,OAAOqa,EAAa7Z,EAASV,EAAWihB,EAAY/gB,CAAQ,CAC5F,CACA,MAAM8b,EAAc,GAAI,CACtB,KAAK,kBAAkB,MAAMA,CAAW,CAC1C,CACA,IAAI,SAAU,CACZ,MAAO,CAAC,GAAG,KAAK,kBAAkB,QAAS,GAAG,KAAK,gBAAgB,OAAO,CAC5E,CACA,mBAAoB,CAClB,OAAO,KAAK,kBAAkB,kBAAkB,CAClD,CACA,yBAAyBkF,EAAI,CAC3B,KAAK,kBAAkB,yBAAyBA,CAAE,CACpD,CACF,EAkCIlT,KAAmC,IAAM,CAC3C,MAAMA,CAAmB,CACvB,SACA,aACA,WACA,OAAO,uBAAwC,IAAI,QACnD,OAAS,EACT,eACA,YAAYmT,EAAUC,EAAcC,EAAY,CAC9C,KAAK,SAAWF,EAChB,KAAK,aAAeC,EACpB,KAAK,WAAaC,EAClB,IAAIC,EAAgBtT,EAAmB,uBAAuB,IAAImT,CAAQ,EACrEG,GACHtT,EAAmB,uBAAuB,IAAImT,EAAUG,EAAgB,IAAI,GAAK,EAEnF,KAAK,eAAiBA,CACxB,CACA,OAAQ,CACF,KAAK,OAAS,IACZ,KAAK,cACP/d,GAAU,KAAK,SAAU,KAAK,aAAc,KAAK,cAAc,EAEjE,KAAK,OAAS,EAElB,CACA,QAAS,CACP,KAAK,MAAM,EACP,KAAK,OAAS,IAChBA,GAAU,KAAK,SAAU,KAAK,cAAc,EACxC,KAAK,aACPA,GAAU,KAAK,SAAU,KAAK,UAAU,EACxC,KAAK,WAAa,MAEpB,KAAK,OAAS,EAElB,CACA,SAAU,CACR,KAAK,OAAO,EACR,KAAK,OAAS,IAChByK,EAAmB,uBAAuB,OAAO,KAAK,QAAQ,EAC1D,KAAK,eACPpK,GAAY,KAAK,SAAU,KAAK,YAAY,EAC5C,KAAK,WAAa,MAEhB,KAAK,aACPA,GAAY,KAAK,SAAU,KAAK,UAAU,EAC1C,KAAK,WAAa,MAEpBL,GAAU,KAAK,SAAU,KAAK,cAAc,EAC5C,KAAK,OAAS,EAElB,CACF,CACA,OAAOyK,CACT,GAAG,EAcGiD,GAAN,KAA0B,CACxB,QACA,UACA,QACA,eACA,WAAa,CAAC,EACd,YAAc,CAAC,EACf,cAAgB,CAAC,EACjB,UACA,OACA,aAAe,GACf,UAAY,GACZ,SAAW,GACX,WAAa,GACb,eAIA,mBAAqB,CAAC,EACtB,oBAAsB,CAAC,EAEvB,UACA,KAAO,EACP,aAAe,KACf,gBAA+B,IAAI,IACnC,YAAYvQ,EAAS3B,EAAWmF,EAASqd,EAAgB,CACvD,KAAK,QAAU7gB,EACf,KAAK,UAAY3B,EACjB,KAAK,QAAUmF,EACf,KAAK,eAAiBqd,EACtB,KAAK,UAAYrd,EAAQ,SACzB,KAAK,OAASA,EAAQ,OAAY,EAClC,KAAK,KAAO,KAAK,UAAY,KAAK,MACpC,CACA,WAAY,CACL,KAAK,YACR,KAAK,UAAY,GACjB,KAAK,WAAW,QAAQ6F,GAAMA,EAAG,CAAC,EAClC,KAAK,WAAa,CAAC,EAEvB,CACA,MAAO,CACL,KAAK,aAAa,EAClB,KAAK,0BAA0B,CACjC,CACA,cAAe,CACb,GAAI,KAAK,aAAc,OACvB,KAAK,aAAe,GACpB,IAAMhL,EAAY,KAAK,UAEvB,KAAK,UAAY,KAAK,qBAAqB,KAAK,QAASA,EAAW,KAAK,OAAO,EAChF,KAAK,eAAiBA,EAAU,OAASA,EAAUA,EAAU,OAAS,CAAC,EAAI,IAAI,IAC/E,IAAMyiB,EAAW,IAAM,KAAK,UAAU,EACtC,KAAK,UAAU,iBAAiB,SAAUA,CAAQ,EAClD,KAAK,UAAU,IAAM,CAInB,KAAK,UAAU,oBAAoB,SAAUA,CAAQ,CACvD,CAAC,CACH,CACA,2BAA4B,CAEtB,KAAK,OACP,KAAK,qBAAqB,EAE1B,KAAK,UAAU,MAAM,CAEzB,CACA,0BAA0BziB,EAAW,CACnC,IAAM0iB,EAAM,CAAC,EACb,OAAA1iB,EAAU,QAAQ2iB,GAAS,CACzBD,EAAI,KAAK,OAAO,YAAYC,CAAK,CAAC,CACpC,CAAC,EACMD,CACT,CAEA,qBAAqB/gB,EAAS3B,EAAWmF,EAAS,CAChD,OAAOxD,EAAQ,QAAQ,KAAK,0BAA0B3B,CAAS,EAAGmF,CAAO,CAC3E,CACA,QAAQ6F,EAAI,CACV,KAAK,oBAAoB,KAAKA,CAAE,EAChC,KAAK,YAAY,KAAKA,CAAE,CAC1B,CACA,OAAOA,EAAI,CACT,KAAK,mBAAmB,KAAKA,CAAE,EAC/B,KAAK,WAAW,KAAKA,CAAE,CACzB,CACA,UAAUA,EAAI,CACZ,KAAK,cAAc,KAAKA,CAAE,CAC5B,CACA,MAAO,CACL,KAAK,aAAa,EACb,KAAK,WAAW,IACnB,KAAK,YAAY,QAAQA,GAAMA,EAAG,CAAC,EACnC,KAAK,YAAc,CAAC,EACpB,KAAK,SAAW,GACZ,KAAK,gBACP,KAAK,eAAe,MAAM,GAG9B,KAAK,UAAU,KAAK,CACtB,CACA,OAAQ,CACN,KAAK,KAAK,EACV,KAAK,UAAU,MAAM,CACvB,CACA,QAAS,CACP,KAAK,KAAK,EACN,KAAK,gBACP,KAAK,eAAe,OAAO,EAE7B,KAAK,UAAU,EACf,KAAK,UAAU,OAAO,CACxB,CACA,OAAQ,CACN,KAAK,qBAAqB,EAC1B,KAAK,WAAa,GAClB,KAAK,UAAY,GACjB,KAAK,SAAW,GAChB,KAAK,YAAc,KAAK,oBACxB,KAAK,WAAa,KAAK,kBACzB,CACA,sBAAuB,CACjB,KAAK,WACP,KAAK,UAAU,OAAO,CAE1B,CACA,SAAU,CACR,KAAK,MAAM,EACX,KAAK,KAAK,CACZ,CACA,YAAa,CACX,OAAO,KAAK,QACd,CACA,SAAU,CACH,KAAK,aACR,KAAK,WAAa,GAClB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACX,KAAK,gBACP,KAAK,eAAe,QAAQ,EAE9B,KAAK,cAAc,QAAQA,GAAMA,EAAG,CAAC,EACrC,KAAK,cAAgB,CAAC,EAE1B,CACA,YAAYoS,EAAG,CACT,KAAK,YAAc,QACrB,KAAK,KAAK,EAEZ,KAAK,UAAU,YAAcA,EAAI,KAAK,IACxC,CACA,aAAc,CAEZ,MAAO,EAAE,KAAK,UAAU,aAAe,GAAK,KAAK,IACnD,CACA,IAAI,WAAY,CACd,OAAO,KAAK,OAAS,KAAK,SAC5B,CACA,eAAgB,CACd,IAAM3Y,EAAS,IAAI,IACf,KAAK,WAAW,GAII,KAAK,eACb,QAAQ,CAAC/D,EAAKhD,IAAS,CAC/BA,IAAS,UACX+G,EAAO,IAAI/G,EAAM,KAAK,UAAYgD,EAAM2F,GAAa,KAAK,QAAS3I,CAAI,CAAC,CAE5E,CAAC,EAEH,KAAK,gBAAkB+G,CACzB,CAEA,gBAAgBnD,EAAW,CACzB,IAAMshB,EAAUthB,IAAc,QAAU,KAAK,YAAc,KAAK,WAChEshB,EAAQ,QAAQ5X,GAAMA,EAAG,CAAC,EAC1B4X,EAAQ,OAAS,CACnB,CACF,EACMzQ,GAAN,KAA0B,CACxB,sBAAsBzU,EAAM,CAK1B,MAAO,EACT,CACA,gCAAgCA,EAAM,CAMpC,MAAO,EACT,CACA,gBAAgBuF,EAAMC,EAAM,CAC1B,OAAOF,GAAgBC,EAAMC,CAAI,CACnC,CACA,iBAAiBvB,EAAS,CACxB,OAAOY,GAAiBZ,CAAO,CACjC,CACA,MAAMA,EAAStD,EAAU+E,EAAO,CAC9B,OAAOD,GAAYxB,EAAStD,EAAU+E,CAAK,CAC7C,CACA,aAAazB,EAASjE,EAAMwE,EAAc,CACxC,OAAOmE,GAAa1E,EAASjE,CAAI,CACnC,CACA,QAAQiE,EAAS3B,EAAWgE,EAAUC,EAAOC,EAAQ2O,EAAkB,CAAC,EAAG,CACzE,IAAMgQ,EAAO5e,GAAS,EAAI,OAAS,WAC7B6e,EAAgB,CACpB,SAAA9e,EACA,MAAAC,EACA,KAAA4e,CACF,EAGI3e,IACF4e,EAAc,OAAY5e,GAE5B,IAAM+B,EAAiB,IAAI,IACrB8c,EAA8BlQ,EAAgB,OAAO7R,GAAUA,aAAkBkR,EAAmB,EACtGnM,IAA+B/B,EAAUC,CAAK,GAChD8e,EAA4B,QAAQ/hB,GAAU,CAC5CA,EAAO,gBAAgB,QAAQ,CAACN,EAAKhD,KAASuI,EAAe,IAAIvI,GAAMgD,CAAG,CAAC,CAC7E,CAAC,EAEH,IAAIsiB,EAAaze,IAAmBvE,CAAS,EAAE,IAAIyE,GAAU,IAAI,IAAIA,CAAM,CAAC,EAC5Eue,EAAahd,IAAmCrE,EAASqhB,EAAY/c,CAAc,EACnF,IAAMgd,EAAgBpU,IAA2BlN,EAASqhB,CAAU,EACpE,OAAO,IAAI9Q,GAAoBvQ,EAASqhB,EAAYF,EAAeG,CAAa,CAClF,CACF,EAsCM7Q,GAAmB,IACnBC,GAA0B,aAC1BC,GAAN,KAA4B,CAC1B,YACA,SACA,OACA,WAGA,WAAQ,EACR,YAAYkJ,EAAa0H,EAAUnV,EAAQoV,EAAY,CACrD,KAAK,YAAc3H,EACnB,KAAK,SAAW0H,EAChB,KAAK,OAASnV,EACd,KAAK,WAAaoV,CACpB,CACA,IAAI,MAAO,CACT,OAAO,KAAK,SAAS,IACvB,CACA,YAAY3c,EAAM,CAChB,KAAK,SAAS,cAAcA,CAAI,CAClC,CACA,SAAU,CACR,KAAK,OAAO,QAAQ,KAAK,YAAa,KAAK,QAAQ,EACnD,KAAK,OAAO,yBAAyB,IAAM,CAGzC,eAAe,IAAM,CACnB,KAAK,SAAS,QAAQ,CACxB,CAAC,CACH,CAAC,EACD,KAAK,aAAa,CACpB,CACA,cAAc7H,EAAMykB,EAAW,CAC7B,OAAO,KAAK,SAAS,cAAczkB,EAAMykB,CAAS,CACpD,CACA,cAAclmB,EAAO,CACnB,OAAO,KAAK,SAAS,cAAcA,CAAK,CAC1C,CACA,WAAWA,EAAO,CAChB,OAAO,KAAK,SAAS,WAAWA,CAAK,CACvC,CACA,YAAYsF,EAAQ6gB,EAAU,CAC5B,KAAK,SAAS,YAAY7gB,EAAQ6gB,CAAQ,EAC1C,KAAK,OAAO,SAAS,KAAK,YAAaA,EAAU7gB,EAAQ,EAAK,CAChE,CACA,aAAaA,EAAQ6gB,EAAUC,EAAUC,EAAS,GAAM,CACtD,KAAK,SAAS,aAAa/gB,EAAQ6gB,EAAUC,CAAQ,EAErD,KAAK,OAAO,SAAS,KAAK,YAAaD,EAAU7gB,EAAQ+gB,CAAM,CACjE,CACA,YAAY/gB,EAAQghB,EAAUC,EAAe,CAKvC,KAAK,WAAWD,CAAQ,GAC1B,KAAK,OAAO,SAAS,KAAK,YAAaA,EAAU,KAAK,QAAQ,CAElE,CACA,kBAAkBE,EAAgBC,EAAiB,CACjD,OAAO,KAAK,SAAS,kBAAkBD,EAAgBC,CAAe,CACxE,CACA,WAAWnd,EAAM,CACf,OAAO,KAAK,SAAS,WAAWA,CAAI,CACtC,CACA,YAAYA,EAAM,CAChB,OAAO,KAAK,SAAS,YAAYA,CAAI,CACvC,CACA,aAAaod,EAAIjlB,EAAMzB,EAAOkmB,EAAW,CACvC,KAAK,SAAS,aAAaQ,EAAIjlB,EAAMzB,EAAOkmB,CAAS,CACvD,CACA,gBAAgBQ,EAAIjlB,EAAMykB,EAAW,CACnC,KAAK,SAAS,gBAAgBQ,EAAIjlB,EAAMykB,CAAS,CACnD,CACA,SAASQ,EAAIjlB,EAAM,CACjB,KAAK,SAAS,SAASilB,EAAIjlB,CAAI,CACjC,CACA,YAAYilB,EAAIjlB,EAAM,CACpB,KAAK,SAAS,YAAYilB,EAAIjlB,CAAI,CACpC,CACA,SAASilB,EAAI9P,EAAO5W,EAAO2mB,EAAO,CAChC,KAAK,SAAS,SAASD,EAAI9P,EAAO5W,EAAO2mB,CAAK,CAChD,CACA,YAAYD,EAAI9P,EAAO+P,EAAO,CAC5B,KAAK,SAAS,YAAYD,EAAI9P,EAAO+P,CAAK,CAC5C,CACA,YAAYD,EAAIjlB,EAAMzB,EAAO,CACvByB,EAAK,OAAO,CAAC,GAAKyT,IAAoBzT,GAAQ0T,GAChD,KAAK,kBAAkBuR,EAAI,CAAC,CAAC1mB,CAAK,EAElC,KAAK,SAAS,YAAY0mB,EAAIjlB,EAAMzB,CAAK,CAE7C,CACA,SAASsJ,EAAMtJ,EAAO,CACpB,KAAK,SAAS,SAASsJ,EAAMtJ,CAAK,CACpC,CACA,OAAOkS,EAAQnO,EAAWE,EAAUgE,EAAS,CAC3C,OAAO,KAAK,SAAS,OAAOiK,EAAQnO,EAAWE,EAAUgE,CAAO,CAClE,CACA,kBAAkBxD,EAASzE,EAAO,CAChC,KAAK,OAAO,kBAAkByE,EAASzE,CAAK,CAC9C,CACF,EACMqV,GAAN,cAAgCD,EAAsB,CACpD,QACA,YAAYwR,EAAStI,EAAa0H,EAAUnV,EAAQgW,EAAW,CAC7D,MAAMvI,EAAa0H,EAAUnV,EAAQgW,CAAS,EAC9C,KAAK,QAAUD,EACf,KAAK,YAActI,CACrB,CACA,YAAYoI,EAAIjlB,EAAMzB,EAAO,CACvByB,EAAK,OAAO,CAAC,GAAKyT,GAChBzT,EAAK,OAAO,CAAC,GAAK,KAAOA,GAAQ0T,IACnCnV,EAAQA,IAAU,OAAY,GAAO,CAAC,CAACA,EACvC,KAAK,kBAAkB0mB,EAAI1mB,CAAK,GAEhC,KAAK,OAAO,QAAQ,KAAK,YAAa0mB,EAAIjlB,EAAK,MAAM,CAAC,EAAGzB,CAAK,EAGhE,KAAK,SAAS,YAAY0mB,EAAIjlB,EAAMzB,CAAK,CAE7C,CACA,OAAOkS,EAAQnO,EAAWE,EAAUgE,EAAS,CAC3C,GAAIlE,EAAU,OAAO,CAAC,GAAKmR,GAAkB,CAC3C,IAAMzQ,EAAUwN,IAAyBC,CAAM,EAC3CzQ,EAAOsC,EAAU,MAAM,CAAC,EACxB7B,EAAQ,GAGZ,OAAIT,EAAK,OAAO,CAAC,GAAKyT,KACpB,CAACzT,EAAMS,CAAK,EAAIiQ,IAAyB1Q,CAAI,GAExC,KAAK,OAAO,OAAO,KAAK,YAAagD,EAAShD,EAAMS,EAAO8B,GAAS,CACzE,IAAM8iB,EAAU9iB,EAAM,OAAY,GAClC,KAAK,QAAQ,yBAAyB8iB,EAAS7iB,EAAUD,CAAK,CAChE,CAAC,CACH,CACA,OAAO,KAAK,SAAS,OAAOkO,EAAQnO,EAAWE,EAAUgE,CAAO,CAClE,CACF,EAmBMqN,GAAN,KAA+B,CAC7B,SACA,OACA,MACA,WAAa,EACb,aAAe,EACf,0BAA4B,CAAC,EAC7B,eAA8B,IAAI,IAClC,cAAgB,EAChB,YAAY0Q,EAAUnV,EAAQkW,EAAO,CACnC,KAAK,SAAWf,EAChB,KAAK,OAASnV,EACd,KAAK,MAAQkW,EACblW,EAAO,kBAAoB,CAACpM,EAASuhB,IAAa,CAChDA,GAAU,YAAY,KAAMvhB,CAAO,CACrC,CACF,CACA,eAAeia,EAAasI,EAAM,CAChC,IAAMC,EAAqB,GAGrBjB,EAAW,KAAK,SAAS,eAAetH,EAAasI,CAAI,EAC/D,GAAI,CAACtI,GAAe,CAACsI,GAAM,MAAO,UAAc,CAC9C,IAAME,EAAQ,KAAK,eACfC,EAAWD,EAAM,IAAIlB,CAAQ,EACjC,GAAI,CAACmB,EAAU,CAGb,IAAMC,EAAoB,IAAMF,EAAM,OAAOlB,CAAQ,EACrDmB,EAAW,IAAI/R,GAAsB6R,EAAoBjB,EAAU,KAAK,OAAQoB,CAAiB,EAEjGF,EAAM,IAAIlB,EAAUmB,CAAQ,CAC9B,CACA,OAAOA,CACT,CACA,IAAMvC,EAAcoC,EAAK,GACnB1I,EAAc0I,EAAK,GAAK,IAAM,KAAK,WACzC,KAAK,aACL,KAAK,OAAO,SAAS1I,EAAaI,CAAW,EAC7C,IAAM2I,EAAkBhV,GAAW,CAC7B,MAAM,QAAQA,CAAO,EACvBA,EAAQ,QAAQgV,CAAe,EAE/B,KAAK,OAAO,gBAAgBzC,EAAatG,EAAaI,EAAarM,EAAQ,KAAMA,CAAO,CAE5F,EAEA,OAD0B2U,EAAK,KAAK,UAClB,QAAQK,CAAe,EAClC,IAAIhS,GAAkB,KAAMiJ,EAAa0H,EAAU,KAAK,MAAM,CACvE,CACA,OAAQ,CACN,KAAK,gBACD,KAAK,SAAS,OAChB,KAAK,SAAS,MAAM,CAExB,CACA,oBAAqB,CACnB,eAAe,IAAM,CACnB,KAAK,cACP,CAAC,CACH,CAEA,yBAAyBsB,EAAOxZ,EAAItJ,EAAM,CACxC,GAAI8iB,GAAS,GAAKA,EAAQ,KAAK,aAAc,CAC3C,KAAK,MAAM,IAAI,IAAMxZ,EAAGtJ,CAAI,CAAC,EAC7B,MACF,CACA,IAAM+iB,EAA2B,KAAK,0BAClCA,EAAyB,QAAU,GACrC,eAAe,IAAM,CACnB,KAAK,MAAM,IAAI,IAAM,CACnBA,EAAyB,QAAQzP,GAAS,CACxC,GAAM,CAAChK,EAAItJ,CAAI,EAAIsT,EACnBhK,EAAGtJ,CAAI,CACT,CAAC,EACD,KAAK,0BAA4B,CAAC,CACpC,CAAC,CACH,CAAC,EAEH+iB,EAAyB,KAAK,CAACzZ,EAAItJ,CAAI,CAAC,CAC1C,CACA,KAAM,CACJ,KAAK,gBAGD,KAAK,eAAiB,GACxB,KAAK,MAAM,kBAAkB,IAAM,CACjC,KAAK,mBAAmB,EACxB,KAAK,OAAO,MAAM,KAAK,YAAY,CACrC,CAAC,EAEC,KAAK,SAAS,KAChB,KAAK,SAAS,IAAI,CAEtB,CACA,mBAAoB,CAClB,OAAO,KAAK,OAAO,kBAAkB,CACvC,CAKA,kBAAkBogB,EAAa,CAE7B,KAAK,OAAO,MAAM,EAClB,KAAK,SAAS,oBAAoBA,CAAW,CAC/C,CACF,ICp5IA,SAAS4C,KAAoC,CAC3C,OAAO,IAAIC,EACb,CACA,SAASC,IAA2BC,EAAUC,EAAQC,EAAM,CAC1D,OAAO,IAAIC,GAA0BH,EAAUC,EAAQC,CAAI,CAC7D,CAsGA,SAASE,IAAoB,CAC3B,OAAAC,GAAwB,mBAAmB,EAGpC,CAAC,GAAGC,EAA4B,CACzC,CArJA,IAaIC,IA8BEC,GAeAF,GAWAG,IAaFC,IAlFJC,GAAAC,EAAA,KAMAC,IACAA,IAEAC,KACAC,KACAA,KACAC,IACIT,KAA0C,IAAM,CAClD,MAAMA,UAAkCU,EAAiB,CAIvD,YAAYC,EAAKC,EAAQC,EAAY,CACnC,MAAMF,EAAKC,EAAQC,CAAU,CAC/B,CACA,aAAc,CACZ,KAAK,MAAM,CACb,CACA,OAAO,UAAO,SAA2CC,EAAmB,CAC1E,OAAO,IAAKA,GAAqBd,GAA8Be,EAASC,EAAQ,EAAMD,EAAYE,EAAe,EAAMF,EAAYG,EAAyB,CAAC,CAC/J,EACA,OAAO,WAA0BC,GAAmB,CAClD,MAAOnB,EACP,QAASA,EAA0B,SACrC,CAAC,CACH,CACA,OAAOA,CACT,GAAG,EAUGC,GAA6B,CAAC,CAClC,QAASiB,GACT,WAAY5B,GACd,EAAG,CACD,QAASoB,GACT,SAAUV,GACZ,EAAG,CACD,QAASoB,GACT,WAAY5B,IACZ,KAAM,CAAC6B,GAAsBX,GAAkBY,EAAM,CACvD,CAAC,EAKKvB,GAA+B,CAAC,CACpC,QAASkB,GACT,WAAY,IAAM,IAAIM,EACxB,EAAG,CACD,QAASC,GACT,SAAU,mBACZ,EAAG,GAAGvB,EAA0B,EAK1BC,IAAoC,CAAC,CACzC,QAASe,GACT,SAAUQ,EACZ,EAAG,CACD,QAASD,GACT,SAAU,gBACZ,EAAG,GAAGvB,EAA0B,EAO5BE,KAAwC,IAAM,CAChD,MAAMA,CAAwB,CAiB5B,OAAO,WAAWuB,EAAQ,CACxB,MAAO,CACL,SAAUvB,EACV,UAAWuB,EAAO,kBAAoBxB,IAAoCH,EAC5E,CACF,CACA,OAAO,UAAO,SAAyCe,EAAmB,CACxE,OAAO,IAAKA,GAAqBX,EACnC,EACA,OAAO,UAAyBwB,GAAiB,CAC/C,KAAMxB,CACR,CAAC,EACD,OAAO,UAAyByB,GAAiB,CAC/C,UAAW7B,GACX,QAAS,CAAC8B,EAAa,CACzB,CAAC,CACH,CACA,OAAO1B,CACT,GAAG,+BCAK2B,EAAA,CAAA,EACEC,EAAA,CAAA,uBAAAC,EAAA,EAAAC,EAAA,IAAAC,EAAAC,QAAAC,MAAA,GAAA,8BARNC,EAAA,EAAA,MAAA,CAAA,EAAsE,EAAA,MAAA,CAAA,EAElEN,EAAA,CAAA,mBACAO,EAAA,EAAA,gBAAA,CAAA,EACFC,EAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EAEEG,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EAGFF,EAAA,EAAM,kBARJP,EAAA,CAAA,EAAAC,EAAA,IAAAS,EAAA,EAAA,EAAAR,EAAAS,KAAA,EAAA,GAAA,EACeX,EAAA,CAAA,EAAAY,EAAA,UAAAV,EAAAW,OAAA,EAIAb,EAAA,CAAA,EAAAY,EAAA,OAAAV,EAAAC,QAAAC,KAAA,8BAWfC,EAAA,EAAA,YAAA,EACEN,EAAA,CAAA,mBACAO,EAAA,EAAA,gBAAA,CAAA,EACFC,EAAA,mBAFEP,EAAA,EAAAC,EAAA,IAAAS,EAAA,EAAA,EAAAR,EAAAS,KAAA,EAAA,GAAA,EACeX,EAAA,CAAA,EAAAY,EAAA,UAAAV,EAAAW,OAAA,uCAkBfR,EAAA,EAAA,SAAA,EAAA,EAAoFS,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAd,EAAAe,EAAA,CAAA,EAAA,OAAAC,EAAShB,EAAAiB,MAAA,CAAO,CAAA,CAAA,EAClGd,EAAA,EAAA,UAAA,EAAUN,EAAA,EAAA,OAAA,EAAKQ,EAAA,EAAW,uCAI5BF,EAAA,EAAA,aAAA,EAAA,EAGES,EAAA,YAAA,SAAAM,EAAA,CAAAC,OAAAN,EAAAO,CAAA,EAAAJ,EAAaE,EAAAG,eAAA,CAAuB,CAAA,CAAA,EAEpCxB,EAAA,CAAA,EACFQ,EAAA,4BAJEK,EAAA,QAAAY,CAAA,EAGAxB,EAAA,EAAAC,EAAA,IAAAuB,EAAA,GAAA,8BAGJnB,EAAA,EAAA,YAAA,EACEN,EAAA,CAAA,mBACFQ,EAAA,mBADEP,EAAA,EAAAC,EAAA,IAAAwB,GAAA,EAAA,EAAA,sCAAAC,GAAA,EAAAC,KAAAzB,EAAAC,QAAAC,OAAA,KAAA,KAAAF,EAAAC,QAAAC,MAAAwB,SAAA,CAAA,CAAA,EAAA,GAAA,uCAvCJvB,EAAA,EAAA,kBAAA,CAAA,EAKEG,EAAA,EAAAqB,IAAA,EAAA,EAAA,aAAA,CAAA,EAIAxB,EAAA,EAAA,QAAA,GAAA,CAAA,mBAWES,EAAA,gBAAA,SAAAM,EAAA,CAAAC,OAAAN,EAAAe,CAAA,EAAAZ,EAAiBE,EAAAG,eAAA,CAAuB,CAAA,CAAA,EAAC,QAAA,UAAA,CAAAR,EAAAe,CAAA,EAAA,IAAA5B,EAAAe,EAAA,EAAA,OAAAC,EAChChB,EAAA6B,gBAAA,CAAiB,CAAA,CAAA,EAAC,OAAA,UAAA,CAAAhB,EAAAe,CAAA,EAAA,IAAA5B,EAAAe,EAAA,EAAA,OAAAC,EACnBhB,EAAA8B,UAAA,CAAW,CAAA,CAAA,EAbrBzB,EAAA,EAeAC,EAAA,EAAAyB,IAAA,EAAA,EAAA,SAAA,EAAA,EAKA5B,EAAA,EAAA,mBAAA,KAAA,CAAA,EACEG,EAAA,EAAA0B,IAAA,EAAA,EAAA,aAAA,EAAA,eAOF3B,EAAA,EACAC,EAAA,GAAA2B,IAAA,EAAA,EAAA,aAAA,CAAA,EAGA7B,EAAA,GAAA,8BAAA,EAAA,EAOFC,EAAA,2BA/CEK,EAAA,kBAAAV,EAAAkC,UAAA,EAA8B,iBAAAlC,EAAAC,OAAA,+CAIjBH,EAAA,EAAAY,EAAA,OAAAV,EAAAS,KAAA,EAWXX,EAAA,EAAAqC,GAAA,KAAAnC,EAAAoC,mBAAA,EACAD,GAAA,OAAAnC,EAAAoC,mBAAA,EACAD,GAAA,eAAAnC,EAAAoC,mBAAA,EAPA1B,EAAA,cAAAV,EAAAC,OAAA,EAAuB,kBAAAoC,CAAA,EACC,cAAAd,GAAA,EAAA,GAAA,oCAAAC,GAAA,GAAAc,IAAAtC,EAAAS,OAAA,KAAA,KAAAT,EAAAS,MAAA8B,YAAA,CAAA,CAAA,CAAA,EAC4E,YAAAvC,EAAAwC,aAAA,EAWtG1C,EAAA,CAAA,EAAA2C,EAAAzC,EAAAC,QAAAC,MAAA,EAAA,EAAA,EAOuBJ,EAAA,CAAA,EAAAY,EAAA,UAAAF,EAAA,EAAA,GAAAR,EAAA0C,gBAAA,CAAA,EAOV5C,EAAA,CAAA,EAAAY,EAAA,QAAAV,EAAAC,QAAAC,OAAA,KAAA,KAAAF,EAAAC,QAAAC,MAAAwB,UAAA,GAAA,EAIX5B,EAAA,EAAAY,EAAA,aAAAV,EAAA2C,UAAA,EAAyB,UAAA3C,EAAAW,OAAA,EACN,QAAAX,EAAAS,KAAA,EACJ,UAAAT,EAAAC,OAAA,EACI,aAAAD,EAAAkC,UAAA,GAzK7B,YAuDaU,GA+CPC,IA4FOC,IAlMbC,GAAAC,EAAA,KAAAC,IAWAC,KACAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KAWAC,KAOAC,KAEAC,KACAC,KACAC,KACAC,KAEAC,KAKAC,KACAC,KACAC,KACAb,KAEAc,uHAEaxB,GAAP,KAAuB,CAI3ByB,YACS1B,EACAhC,EACA2D,EACA7D,EACAP,EACAqE,EACAC,EAAW,GACXtC,EAA8B,IAAIuC,GAAiB,CAPnD,KAAA9B,WAAAA,EACA,KAAAhC,QAAAA,EACA,KAAA2D,KAAAA,EACA,KAAA7D,MAAAA,EACA,KAAAP,MAAAA,EACA,KAAAqE,YAAAA,EACA,KAAAC,SAAAA,EACA,KAAAtC,WAAAA,EAXD,KAAAwC,UAAwD,KAa9D,KAAKC,YAAc,IAAIC,GAAmB,KAAK1E,KAAK,CACtD,CAEA2E,cAAc3C,EAA2B,CACvC,KAAKA,WAAaA,EAClB,KAAKyC,YAAYG,cAAc5C,EAAW6C,cAAa,CAAE,EACzD,KAAKJ,YAAYK,mBAAmB9C,EAAW+C,mBAAkB,CAAE,CACrE,CAEAC,iBAAe,CACb,OAAO,KAAKP,aAAaQ,KAC3B,CAEAC,YAAU,CACR,MAAO,CACLzE,QAAS,KAAKA,QACd0E,YAAa,KAAKV,YAAYzE,MAElC,CAEAoF,OAAOC,EAAkC,CACvCA,EAAiBtE,MAAK,EACtB,IAAMyD,EAAYa,EAAiBC,gBAAuC1C,GAAqB,EAC/F4B,EAAUe,SAAS9C,WAAa,KAAKA,WACrC+B,EAAUe,SAAS9E,QAAU,KAAKA,QAClC+D,EAAUe,SAASxF,QAAU,KAAK0E,YAClCD,EAAUe,SAAShF,MAAQ,KAAKA,MAChCiE,EAAUe,SAASvD,WAAa,KAAKA,WACrCwC,EAAUe,SAASjB,SAAW,KAAKA,SACnC,KAAKE,UAAYA,CACnB,GAGI7B,IAA6B,CACjC6C,GAAoBC,UACpBD,GAAoBE,SACpBC,GAAeC,kBACfD,GAAeE,iBAAiB,EAwFrBjD,KAAqB,IAAA,CAA5B,MAAOA,CAAqB,CAShCkD,GACA,IAAI/F,QAAQ0E,EAA+B,CACzC,KAAKqB,GAAWrB,EAChB,IAAMsB,EAAkB,KAAKD,GAASE,aAAaC,KACjDC,GAAU,KAAKJ,GAAS9F,KAAK,EAC7BmG,GAAaC,GAAkB,CAAC,EAE5BC,EAAe,KAAKA,aAAaJ,KAAKK,GAAoB,CAAE,EAClE,KAAK9D,iBAAmB+D,EAAc,CAACR,EAAiBM,CAAY,CAAC,EAAEJ,KACrEO,GAAmB,KAAKC,UAAU,EAClCC,GAAU,CAAC,CAAA,CAAGC,CAAW,IAAyB,CAACA,CAAW,EAC9DC,EAAU,CAAC,CAAC5G,CAAK,IAAwB,CAEvC,QAAW6G,KAAMlE,IACf,GAAI,KAAKlC,UAAY,KAAKqG,aAAaC,WAAWF,CAAE,EAClD,OAAOG,EAAG,CAAA,CAAE,EAGhB,OAAO,KAAKC,yBAAyBC,gBAAgB,KAAKzG,QAAST,CAAK,CAC1E,CAAC,CAAC,CAEN,CAEA,IAAID,SAAO,CACT,OAAO,KAAK+F,EACd,CAMA3B,YACuD8C,EAC5CR,EACQU,EACAL,EACTM,EACAC,EAA8B,CALe,KAAAJ,yBAAAA,EAC5C,KAAAR,WAAAA,EACQ,KAAAU,kBAAAA,EACA,KAAAL,aAAAA,EACT,KAAAM,aAAAA,EACA,KAAAC,eAAAA,EAvCV,KAAA7E,iBAAyCwE,EAAG,CAAA,CAAE,EAC9C,KAAAX,aAAe,IAAIiB,GAAyB,EAAK,EA4BjD,KAAApF,oBAA8BqF,GAAkB,EAChD,KAAAjF,cAAgB,UACR,KAAAkF,aAAeC,GAAS,KAAKN,kBAAkBO,aAAa,EAUlE,KAAKL,eAAeM,cACjB1B,KACCO,GAAkB,EAClBoB,GAAQC,GAA2BA,EAAEpH,UAAY,KAAKA,OAAO,CAAC,EAE/DqH,UAAWC,GAAM,KAAKhH,MAAK,CAAE,EAEhC,KAAKsG,eAAeW,aACjB/B,KACCO,GAAkB,EAClByB,GAAKC,GAAQ,CACPA,EAAK/C,aAAe+C,EAAKzH,SAAWyH,EAAKzH,UAAY,KAAKA,UAC5D,KAAK6B,cAAgB,YACrB6F,WAAW,IAAK,CACd,KAAK7F,cAAgB,UACrB,KAAK8E,aAAagB,cAAa,CACjC,EAAG,IAAI,EACP,KAAKrI,QAAQsI,SAASH,EAAK/C,WAAW,EACtC,KAAKpF,QAAQuI,YAAW,EACxB,KAAKlB,aAAagB,cAAa,EAEnC,CAAC,CAAC,EAEHN,UAAS,CACd,CAEA/G,OAAK,CACH,KAAKhB,QAAQwI,MAAK,EAClB,KAAKxI,QAAQuI,YAAW,EACpB,KAAKd,aAAY,GACnB,KAAK5F,UAAS,CAElB,CAEAD,iBAAe,CACb,KAAK0E,aAAamC,KAAK,EAAI,CAC7B,CAEA5G,WAAS,CACP,KAAKuF,kBAAkBsB,eAAe,KAAKhG,WAAY,CACrD,CACEhC,QAAS,KAAKA,QACd0E,YAAa,KAAKpF,QAAQC,MAC3B,CACF,CACH,iDA7FW4C,GAAqB8F,EAyCtBC,EAA0B,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,CAAA,CAAA,CAAA,+BAzCzBpG,EAAqBqG,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,GANrB,CAACC,GAAqBC,GAAiB,CAAE,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,YAAA,EAAA,EAAA,CAAA,YAAA,UAAA,EAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,QAAA,0BAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,kBAAA,gBAAA,EAAA,CAAA,WAAA,GAAA,YAAA,OAAA,EAAA,gBAAA,QAAA,OAAA,cAAA,kBAAA,cAAA,KAAA,OAAA,cAAA,EAAA,CAAA,YAAA,GAAA,kBAAA,GAAA,aAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,QAAA,YAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,aAAA,UAAA,QAAA,UAAA,YAAA,EAAA,CAAA,YAAA,GAAA,kBAAA,GAAA,aAAA,QAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,GA7EnDtJ,EAAA,EAAAwJ,IAAA,EAAA,EAAA,MAAA,CAAA,EAAsE,EAAAC,IAAA,GAAA,GAAA,cAAA,KAAA,EAAAC,EAAA,kBAAhCtJ,EAAA,OAAAmJ,EAAArF,QAAA,EAAgB,WAAAyF,CAAA,kBAiEtDC,EAAYC,GAAAC,GAAAC,GACZC,GAAcC,GAAAC,GACdC,GAAmBC,GAAAC,GAAAC,GAAAC,GACnBC,EAAeC,EACfC,GAAqBC,GAAAC,GAAAC,GACrBC,GACAC,GACAC,GAAqBC,GAAAC,GAAAC,GACrBC,GACAC,GACAC,EAAa,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,EAAA1D,KAAA,CAAA2D,UAMH,CAACC,EAAQ,CAAC,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAEXnJ,CAAqB,GAAA,+BE9L9BoJ,EAAA,CAAA,EAAqCC,EAAA,CAAA,2CAAAC,EAAA,EAAAC,EAAA,IAAAC,GAAA,EAAA,EAAAC,EAAAC,QAAAC,MAAAF,EAAAG,sBAAA,CAAA,EAAA,EAAA,8BAJzCC,EAAA,EAAA,MAAA,CAAA,EAAsE,EAAA,MAAA,CAAA,EACvCR,EAAA,CAAA,mBAAuBS,EAAA,EACpDD,EAAA,EAAA,MAAA,CAAA,EAEEE,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EACFF,EAAA,EAAM,kBAJuBR,EAAA,CAAA,EAAAW,EAAAC,EAAA,EAAA,EAAAT,EAAAU,KAAA,CAAA,EAGZb,EAAA,CAAA,EAAAc,EAAA,OAAAX,EAAAC,QAAAC,KAAA,uCAIjBE,EAAA,EAAA,sBAAA,CAAA,oCAOEQ,EAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAiBJ,EAAAK,eAAA,CAAuB,CAAA,CAAA,EAExCC,EAAA,EAAA,8BAAA,CAAA,EAQFd,EAAA,oBAhBEM,EAAA,cAAAX,EAAAC,OAAA,EAAuB,eAAAD,EAAAG,sBAAA,CAAA,EACiB,cAAAJ,GAAA,EAAA,GAAA,oCAAAqB,GAAA,GAAAC,IAAArB,EAAAU,MAAAY,YAAA,CAAA,CAAA,CAAA,EAC2D,QAAAb,EAAA,EAAA,GAAAT,EAAAU,KAAA,CAAA,EACxE,eAAA,WAAA,EACC,eAAA,YAAA,EAM1Bb,EAAA,CAAA,EAAAc,EAAA,aAAAX,EAAAuB,UAAA,EAAyB,UAAAvB,EAAAwB,OAAA,EACN,QAAAxB,EAAAU,KAAA,EACJ,UAAAV,EAAAC,OAAA,EACI,aAAAD,EAAAyB,UAAA,GDtBzB,QA8CaC,GA9CbC,GAAAC,EAAA,KAAAC,KACAC,IAYAC,KACAC,IACAC,IACAC,KACAC,KACAC,KACAF,KACAG,KACAC,KAEAC,KACAC,KACAC,iEAqBaf,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CAYpCgB,YACmBC,EACAC,EAIAC,EAAgC,CALhC,KAAAF,kBAAAA,EACA,KAAAC,WAAAA,EAIA,KAAAC,gBAAAA,EATX,KAAAC,oBAAsBC,EAAe,EAAE,EACrC,KAAA5C,sBAAwB6C,EAAS,IAAM,KAAKC,cAAgB,KAAKH,oBAAmB,GAAM,KAAK,CAStG,CAEHI,UAAQ,CACN,IAAM3B,EAAa4B,OAAO,KAAK5B,UAAU,EAAED,YAAW,EAChD8B,EAAoB,KAAKP,kBAAkBtB,CAAU,GAAG8B,gCAC1DD,GACFE,GAAeF,CAAiB,EAAEG,KAAMC,GAAqB,CAC3D,GAAI,CAACA,GAAmBC,OACtB,OAEF,IAAMX,EAAsBU,EAAkBE,KAAMC,GAAMA,EAAEnC,UAAY,KAAKA,OAAO,GAAGtB,OAAO+C,aAC1FH,EACF,KAAKA,oBAAoBc,IAAId,CAAmB,EAEhDe,QAAQC,KAAK,4CAA4C,KAAKtC,OAAO,EAAE,CAE3E,CAAC,EAGH,KAAKvB,QAAQ8D,aAAaC,KAAKC,GAAmB,KAAKrB,UAAU,EAAGsB,GAAa,GAAI,CAAC,EAAEC,UAAU,IAAK,CACrG,KAAKC,UAAS,CAChB,CAAC,CACH,CAEAA,WAAS,CACP,KAAKzB,kBAAkB0B,eAAe,KAAK9C,WAAY,CACrD,CACEC,QAAS,KAAKA,QACd8C,cAAe,CACbpE,MAAO,KAAKD,QAAQC,MACpB+C,aAAc,KAAK9C,sBAAqB,GAE3C,CACF,CACH,iDArDWuB,GAAyB6C,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAiB1BG,GAAiB,CAAA,CAAA,CAAA,CAAA,+BAjBhBhD,EAAyBiD,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,SAAA,CAAAC,GAFzB,CAACC,EAAmB,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,YAAA,EAAA,EAAA,CAAA,QAAA,0BAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,gBAAA,cAAA,eAAA,cAAA,QAAA,eAAA,cAAA,EAAA,CAAA,YAAA,GAAA,EAAA,aAAA,UAAA,QAAA,UAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,GC5ClC7E,EAAA,EAAA+E,IAAA,EAAA,EAAA,MAAA,CAAA,EAAsE,EAAAC,IAAA,EAAA,GAAA,cAAA,KAAA,EAAAC,EAAA,kBAAhC5E,EAAA,OAAAyE,EAAAI,QAAA,EAAgB,WAAAC,CAAA,kBDkClDC,EAAYC,GACZC,EAAeC,EACfC,GAAqBC,GACrBC,GAAiBC,GACjBC,GAAiBC,GACjBC,GACAC,GAAmBC,GAAAC,GACnBC,GACAC,EAAgC,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAIvBlF,CAAyB,GAAA,IE9CtC,IAOamF,GAPbC,GAAAC,EAAA,KAAAC,KAEAC,KAEAC,KAGaL,GAAP,KAA2B,CAK/BM,YACSC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAW,GACXC,EAA8B,IAAIC,GAAiB,CAPnD,KAAAR,WAAAA,EACA,KAAAC,QAAAA,EACA,KAAAC,KAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,SAAAA,EACA,KAAAC,WAAAA,EAXT,KAAAE,UAA4D,KAa1D,KAAKC,YAAc,IAAIC,GAAoBP,GAAOA,OAAS,CAAC,EAC5D,KAAKQ,aAAeR,GAAOQ,cAAgB,EAC7C,CAEAC,YAAU,CACR,MAAO,CACLZ,QAAS,KAAKA,QACda,cAAe,CACbF,aAAc,KAAKA,aACnBR,MAAO,KAAKM,YAAYN,OAG9B,CAEAW,iBAAe,CACb,OAAO,KAAKL,aAAaM,KAC3B,CAEAC,cAAcV,EAA2B,CACvC,KAAKA,WAAaA,EAClB,KAAKG,YAAYQ,cAAcX,EAAWY,cAAa,CAAE,EACzD,KAAKT,YAAYU,mBAAmBb,EAAWc,mBAAkB,CAAE,CACrE,CAEAC,OAAOC,EAAkC,CACvCA,EAAiBC,MAAK,EACtB,IAAMf,EAAYc,EAAiBE,gBAA2CC,EAAyB,EACvGjB,EAAUkB,SAAS1B,QAAU,KAAKA,QAClCQ,EAAUkB,SAAS3B,WAAa,KAAKA,WACrCS,EAAUkB,SAASC,QAAU,KAAKlB,YAClCD,EAAUkB,SAASf,aAAe,KAAKA,aACvCH,EAAUkB,SAASxB,MAAQ,KAAKA,MAChCM,EAAUkB,SAASpB,WAAa,KAAKA,WACrCE,EAAUkB,SAASrB,SAAW,KAAKA,SACnC,KAAKG,UAAYA,CACnB,KCzDF,IAWaoB,GAXbC,GAAAC,EAAA,KAAAC,KAWaH,GAAP,KAAyB,CAI7BI,YACSC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAW,GACXC,EACAC,EAAY,GACZC,EAAiB,CARjB,KAAAR,gBAAAA,EACA,KAAAC,WAAAA,EACA,KAAAC,QAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,SAAAA,EACA,KAAAC,UAAAA,EACA,KAAAC,UAAAA,EACA,KAAAC,SAAAA,EAZD,KAAAC,UAAqD,KAc3D,KAAKC,YAAc,IAAIC,GAAmBP,CAAK,CACjD,CAGAQ,cAAcC,EAA2B,CAEzC,CAEAC,YAAU,CACR,OAAK,KAAKL,WAAWM,SAKd,KAAKN,UAAUM,SAASX,MAJtB,CACLF,QAAS,KAAKA,QAIpB,CAEAc,iBAAe,CACb,OAAK,KAAKP,WAAWM,SAGd,KAAKN,UAAUM,SAASC,gBAFtB,EAGX,CAEAC,OAAOC,EAAkC,CACnC,CAAC,KAAKlB,iBAAmB,CAAC,KAAKA,gBAAgBS,YAInDS,EAAiBC,MAAK,EACtB,KAAKV,UAAYS,EAAiBE,gBAAoC,KAAKpB,gBAAgBS,SAAS,EACpG,KAAKA,UAAUY,SAAS,WAAY,KAAKb,QAAQ,EACjD,KAAKC,UAAUM,SAASb,QAAU,KAAKA,QACvC,KAAKO,UAAUM,SAASO,QAAU,KAAKZ,YACvC,KAAKD,UAAUM,SAASZ,MAAQ,KAAKA,MACrC,KAAKM,UAAUM,SAASV,SAAW,KAAKA,SACxC,KAAKI,UAAUM,SAASd,WAAa,KAAKA,WAC1C,KAAKQ,UAAUM,SAAST,UAAY,KAAKA,UACzC,KAAKG,UAAUM,SAASR,UAAY,KAAKA,UAC3C,KC5DF,IAAagB,GAAbC,GAAAC,EAAA,KAAaF,GAAoC,CAC/C,CAAEG,GAAI,UAAWC,eAAgB,yBAAyB,EAC1D,CAAED,GAAI,OAAQC,eAAgB,sBAAsB,EACpD,CAAED,GAAI,2BAA4BC,eAAgB,0CAA0C,EAC5F,CAAED,GAAI,sBAAuBC,eAAgB,qCAAqC,EAClF,CAAED,GAAI,uBAAwBC,eAAgB,sCAAsC,EACpF,CAAED,GAAI,WAAYC,eAAgB,0BAA0B,EAC5D,CAAED,GAAI,WAAYC,eAAgB,0BAA0B,EAC5D,CAAED,GAAI,kBAAmBC,eAAgB,iCAAiC,CAAE,ICb9E,IAMaC,GANbC,GAAAC,EAAA,KACAC,aAKaH,IAAsB,IAAA,CAA7B,MAAOA,CAAsB,CACjCI,YAA6BC,EAA2B,CAA3B,KAAAA,UAAAA,CAA8B,CAC3DC,UAAUC,EAAU,CAClB,IAAMC,EAAMC,GAAgBC,KAAMC,GAAQA,EAAIJ,KAAOA,CAAE,GAAGK,gBAAkBH,GAAgB,CAAC,EAAEG,eAC/F,OAAO,KAAKP,UAAUQ,OAAOL,CAAG,CAClC,iDALWR,GAAsBc,EAAAC,GAAA,EAAA,CAAA,CAAA,CAAA,kDAAtBf,EAAsBgB,KAAA,EAAA,CAAA,CAAA,SAAtBhB,CAAsB,GAAA,+BCU/BiB,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EACEC,EAAA,CAAA,gCACFC,EAAA,sBAJEC,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAAC,MAAA,GAAA,EAGAH,EAAA,CAAA,EAAAC,EAAA,IAAAG,EAAA,EAAA,EAAAA,EAAA,EAAA,EAAAF,EAAAG,QAAAC,KAAA,CAAA,EAAA,GAAA,uCAQET,EAAA,EAAA,aAAA,CAAA,EAAqEU,EAAA,YAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAaJ,EAAAK,eAAA,CAAuB,CAAA,CAAA,EACvGf,EAAA,CAAA,EACFC,EAAA,mCAFkDe,EAAA,QAAAC,EAAAC,EAAA,EAChDhB,EAAA,EAAAC,EAAA,IAAAC,EAAAe,aAAAF,EAAAG,cAAA,EAAA,GAAA,uCAJNrB,EAAA,EAAA,iBAAA,EAAiB,EAAA,YAAA,EACHC,EAAA,CAAA,EAAWC,EAAA,EACvBF,EAAA,EAAA,aAAA,CAAA,EAAoCU,EAAA,OAAA,UAAA,CAAAG,EAAAS,CAAA,EAAA,IAAAjB,EAAAkB,EAAA,EAAA,OAAAR,EAAQV,EAAAmB,UAAA,CAAW,CAAA,CAAA,EACrDC,EAAA,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,EAGFxB,EAAA,EAAa,oBALDC,EAAA,CAAA,EAAAwB,EAAAtB,EAAAC,KAAA,EACAH,EAAA,EAAAc,EAAA,cAAAZ,EAAAG,OAAA,EACoBL,EAAA,EAAAc,EAAA,UAAAZ,EAAAuB,eAAA,GA7BxC,IA6CaC,GA7CbC,GAAAC,EAAA,KACAC,IACAC,KACAC,KACAC,KACAC,IAEAC,KAIAC,+CAkCaT,IAA+B,IAAA,CAAtC,MAAOA,CAA+B,CAU1CU,YACmBC,EACAC,EAAoC,CADpC,KAAAD,UAAAA,EACA,KAAAC,kBAAAA,EAJnB,KAAAb,gBAAkBA,EAKf,CAEHR,aAAasB,EAAW,CACtB,OAAO,KAAKF,UAAUG,QAAQD,CAAG,CACnC,CAEAlB,WAAS,CACP,KAAKiB,kBAAkBG,eAAe,KAAKC,WAAY,CACrD,CACEC,QAAS,KAAKA,QACdC,YAAa,KAAKvC,QAAQC,MAC3B,CACF,CACH,iDA1BWoB,GAA+BmB,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAA/BrB,EAA+BsB,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,aAAA,EAAA,CAAA,EAAA,QAAA,YAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,YAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,GA7BxC/B,EAAA,EAAAiC,IAAA,EAAA,EAAA,eAAA,CAAA,EAAiD,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,kBAAlC3C,EAAA,OAAAwC,EAAAI,QAAA,EAAgB,WAAAC,CAAA,kBAqB/BC,EAAYC,GAAAC,GAAAC,GACZC,GAAmBC,GAAAC,GACnBC,GAAeC,GAAAC,GACfC,GAAqBC,GAAAC,GACrBC,EACAC,EAAsB,EAAAC,cAAA,CAAA,CAAA,CAAA,SAGbjD,CAA+B,GAAA,IC7C5C,IAMakD,GANbC,GAAAC,EAAA,KAAAC,KAEAC,KACAC,KAGaL,GAAP,KAAoC,CAIxCM,YACSC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAW,GACXC,EAA8B,IAAIC,GAAiB,CAPnD,KAAAR,WAAAA,EACA,KAAAC,QAAAA,EACA,KAAAC,KAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,SAAAA,EACA,KAAAC,WAAAA,EAXD,KAAAE,UAAkE,KAaxE,KAAKC,YAAc,IAAIC,GAAoB,KAAKP,MAAO,CAAEQ,YAAa,EAAI,CAAE,CAC9E,CAEAC,OAAOC,EAAkC,CACvCA,EAAiBC,MAAK,EACtB,IAAMN,EAAYK,EAAiBE,gBACjCC,EAA+B,EAEjCR,EAAUS,SAASlB,WAAa,KAAKA,WACrCS,EAAUS,SAASC,QAAU,KAAKT,YAClCD,EAAUS,SAASf,MAAQ,KAAKA,MAChCM,EAAUS,SAASjB,QAAU,KAAKA,QAClCQ,EAAUS,SAASX,WAAa,KAAKA,WACrCE,EAAUS,SAASZ,SAAW,KAAKA,SACnC,KAAKG,UAAYA,CACnB,CAEAW,cAAcb,EAA2B,CACvC,KAAKA,WAAaA,EAClB,KAAKG,YAAYW,cAAcd,EAAWe,cAAa,CAAE,EACzD,KAAKZ,YAAYa,mBAAmBhB,EAAWiB,mBAAkB,CAAE,CACrE,CAEAC,YAAU,CACR,MAAO,CACLxB,QAAS,KAAKA,QACdyB,YAAa,KAAKhB,YAAYN,MAElC,CACAuB,iBAAe,CACb,OAAO,KAAKjB,aAAakB,KAC3B,gCCuBMC,EAAA,CAAA,EACEC,EAAA,CAAA,uBAAAC,EAAA,EAAAC,EAAA,IAAAC,EAAAC,QAAAC,MAAA,GAAA,8BAPNC,EAAA,EAAA,MAAA,CAAA,EAAsD,EAAA,MAAA,CAAA,EAElDN,EAAA,CAAA,mBACFO,EAAA,EACAD,EAAA,EAAA,MAAA,CAAA,EAEEE,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EAGFF,EAAA,EAAM,kBAPJN,EAAA,CAAA,EAAAC,EAAA,IAAAQ,EAAA,EAAA,EAAAP,EAAAQ,KAAA,EAAA,GAAA,EAIeV,EAAA,CAAA,EAAAW,EAAA,OAAAT,EAAAC,QAAAC,KAAA,0BAafQ,GAAA,CAAA,sCARJP,EAAA,EAAA,KAAA,EAAmC,EAAA,2BAAA,CAAA,EAM/BQ,EAAA,OAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAb,EAAAc,EAAA,EAAA,OAAAC,EAAQf,EAAAgB,UAAA,CAAW,CAAA,CAAA,EAEnBX,EAAA,EAAAY,IAAA,EAAA,EAAA,eAAA,CAAA,EACFb,EAAA,EAA2B,2BAPzBN,EAAA,EAAAW,EAAA,QAAAT,EAAAQ,KAAA,EAAe,eAAAR,EAAAC,QAAAC,KAAA,EACe,UAAAF,EAAAC,OAAA,EACX,aAAAD,EAAAkB,UAAA,EAIJpB,EAAA,EAAAW,EAAA,mBAAAU,CAAA,0BAIjBT,GAAA,CAAA,6BADFd,EAAA,CAAA,EACES,EAAA,EAAAe,IAAA,EAAA,EAAA,eAAA,CAAA,2BAAetB,EAAA,EAAAW,EAAA,mBAAAU,CAAA,8BAQbhB,EAAA,EAAA,YAAA,EAA0BN,EAAA,CAAA,mBAAuBO,EAAA,mBAAvBN,EAAA,EAAAuB,EAAAd,EAAA,EAAA,EAAAP,EAAAQ,KAAA,CAAA,uCAaxBL,EAAA,EAAA,SAAA,EAAA,EAAoFQ,EAAA,QAAA,UAAA,CAAAC,EAAAU,CAAA,EAAA,IAAAtB,EAAAc,EAAA,CAAA,EAAA,OAAAC,EAASf,EAAAuB,MAAA,CAAO,CAAA,CAAA,EAClGpB,EAAA,EAAA,UAAA,EAAUN,EAAA,EAAA,OAAA,EAAKO,EAAA,EAAW,8BAG9BD,EAAA,EAAA,YAAA,EACEN,EAAA,CAAA,mBACFO,EAAA,mBADEN,EAAA,EAAAC,EAAA,IAAAyB,GAAA,EAAA,EAAA,sCAAAC,GAAA,EAAAC,KAAA1B,EAAAC,QAAAC,OAAA,KAAA,KAAAF,EAAAC,QAAAC,MAAAyB,SAAA,CAAA,CAAA,EAAA,GAAA,uCAvBJxB,EAAA,EAAA,kBAAA,CAAA,EAKEE,EAAA,EAAAuB,IAAA,EAAA,EAAA,aAAA,CAAA,EACAzB,EAAA,EAAA,QAAA,GAAA,CAAA,mBASEQ,EAAA,gBAAA,SAAAkB,EAAA,CAAAC,OAAAlB,EAAAmB,CAAA,EAAAhB,EAAiBc,EAAAG,eAAA,CAAuB,CAAA,CAAA,EAT1C5B,EAAA,EAWAC,EAAA,EAAA4B,IAAA,EAAA,EAAA,SAAA,EAAA,EAAqB,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,EAQrBC,EAAA,EAAA,8BAAA,EAAA,EAOF/B,EAAA,oBA/BEK,EAAA,kBAAAT,EAAAkB,UAAA,EAA8B,iBAAAlB,EAAAC,OAAA,+CAIjBH,EAAA,EAAAW,EAAA,OAAAT,EAAAQ,KAAA,EAOXV,EAAA,EAAAsC,GAAA,KAAApC,EAAAqC,mBAAA,EACAD,GAAA,OAAApC,EAAAqC,mBAAA,EACAD,GAAA,eAAApC,EAAAqC,mBAAA,EANA5B,EAAA,cAAAT,EAAAC,OAAA,EAAuB,cAAAuB,GAAA,EAAA,GAAA,oCAAAC,GAAA,GAAAa,IAAAtC,EAAAQ,OAAA,KAAA,KAAAR,EAAAQ,MAAA+B,YAAA,CAAA,CAAA,CAAA,EASzBzC,EAAA,CAAA,EAAA0C,EAAAxC,EAAAC,QAAAC,MAAA,EAAA,EAAA,EAKaJ,EAAA,EAAAW,EAAA,QAAAT,EAAAC,QAAAC,OAAA,KAAA,KAAAF,EAAAC,QAAAC,MAAAyB,UAAA,GAAA,EAIX7B,EAAA,EAAAW,EAAA,aAAAT,EAAAyC,UAAA,EAAyB,UAAAzC,EAAA0C,OAAA,EACN,QAAA1C,EAAAQ,KAAA,EACJ,UAAAR,EAAAC,OAAA,EACI,aAAAD,EAAAkB,UAAA,GA3H7B,YAmBayB,GA+HAC,IAlJbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,KACAC,IACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KAEAC,mGAEajB,GAAP,KAAwB,CAI5BkB,YACSpB,EACAC,EACAoB,EACAtD,EACAN,EACA6D,EACAC,EAAW,GACX9C,EAA8B,IAAI+C,GAAiB,CAPnD,KAAAxB,WAAAA,EACA,KAAAC,QAAAA,EACA,KAAAoB,KAAAA,EACA,KAAAtD,MAAAA,EACA,KAAAN,MAAAA,EACA,KAAA6D,YAAAA,EACA,KAAAC,SAAAA,EACA,KAAA9C,WAAAA,EAXD,KAAAgD,UAAyD,KAa/D,KAAKC,YAAc,IAAIC,GAAmB,KAAKlE,KAAK,CACtD,CAEAmE,cAAcnD,EAA2B,CACvC,KAAKA,WAAaA,EAClB,KAAKiD,YAAYG,cAAcpD,EAAWqD,cAAa,CAAE,EACzD,KAAKJ,YAAYK,mBAAmBtD,EAAWuD,mBAAkB,CAAE,CACrE,CAEAC,iBAAe,CACb,OAAO,KAAKP,aAAaQ,KAC3B,CAEAC,YAAU,CACR,MAAO,CACLlC,QAAS,KAAKA,QACdmC,YAAa,KAAKV,YAAYjE,MAElC,CAEA4E,OAAOC,EAAkC,CACvCA,EAAiBxD,MAAK,EACtB,IAAM2C,EAAYa,EAAiBC,gBAAwCpC,GAAsB,EACjGsB,EAAUe,SAASxC,WAAa,KAAKA,WACrCyB,EAAUe,SAASvC,QAAU,KAAKA,QAClCwB,EAAUe,SAAShF,QAAU,KAAKkE,YAClCD,EAAUe,SAASzE,MAAQ,KAAKA,MAChC0D,EAAUe,SAAS/D,WAAa,KAAKA,WACrCgD,EAAUe,SAASjB,SAAW,KAAKA,SACnC,KAAKE,UAAYA,CACnB,GAmFWtB,KAAsB,IAAA,CAA7B,MAAOA,CAAsB,CAYjCiB,YAA6BqB,EAAoC,CAApC,KAAAA,kBAAAA,EAL7B,KAAAC,cAAgB,KAAKD,kBAAkBC,cACvC,KAAAC,aAAeC,GAAS,KAAKF,aAAa,EAE1C,KAAA9C,oBAA8BiD,GAAkB,CAEoB,CAEpE/D,OAAK,CACH,KAAKtB,QAAQsF,MAAK,EAClB,KAAKtF,QAAQuF,YAAW,EACpB,KAAKJ,aAAY,GACnB,KAAKpE,UAAS,CAElB,CAEAA,WAAS,CACP,KAAKkE,kBAAkBO,eAAe,KAAKhD,WAAY,CACrD,CACEC,QAAS,KAAKA,QACdmC,YAAa,KAAK5E,QAAQC,MAC3B,CACF,CACH,iDA7BW0C,GAAsB8C,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAtB/C,EAAsBgD,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,GALtB,CAACC,EAAmB,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,YAAA,EAAA,EAAA,CAAA,YAAA,UAAA,EAAA,CAAA,QAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,QAAA,eAAA,UAAA,YAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,kBAAA,gBAAA,EAAA,CAAA,WAAA,GAAA,YAAA,OAAA,EAAA,gBAAA,cAAA,cAAA,KAAA,OAAA,cAAA,EAAA,CAAA,YAAA,GAAA,kBAAA,GAAA,aAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,aAAA,UAAA,QAAA,UAAA,YAAA,EAAA,CAAA,YAAA,GAAA,kBAAA,GAAA,aAAA,QAAA,EAAA,yBAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IAzE9B/F,EAAA,EAAAiG,IAAA,EAAA,EAAA,MAAA,CAAA,EAAsD,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,eAsBtDlG,EAAA,EAAAmG,IAAA,EAAA,EAAA,eAAA,CAAA,eAGAnG,EAAA,EAAAoG,IAAA,EAAA,GAAA,cAAA,KAAA,EAAAC,EAAA,SAzBsCjG,EAAA,OAAA4F,EAAArC,QAAA,EAWhClE,EAAA,EAAAW,EAAA,OAAAF,EAAA,EAAA,EAAA8F,EAAAlB,aAAA,CAAA,EAWSrF,EAAA,CAAA,EAAAW,EAAA,OAAA,CAAA4F,EAAArC,UAAAzD,EAAA,EAAA,EAAA8F,EAAAlB,aAAA,IAAA,EAAA,kBAwCfwB,EAAYC,GAAAC,GAAAC,GACZC,GAAcC,GAAAC,GACdC,GAAmBC,GAAAC,GAAAC,GAAAC,GACnBC,EAAeC,EACfC,GAAqBC,GAAAC,GAAAC,GACrBC,GACAC,GACAC,GACAC,GACAC,EAAa,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAOJxF,CAAsB,GAAA,IClJnC,IAkBayF,GAoDPC,IAtENC,GAAAC,EAAA,KAAAC,KAUAC,KAEAC,KACAC,KAGAC,cAEaR,GAAP,KAA2B,CAI/BS,YACSC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAW,GACXC,EAA8B,IAAIC,GAAiB,CAPnD,KAAAR,WAAAA,EACA,KAAAC,QAAAA,EACA,KAAAC,KAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,SAAAA,EACA,KAAAC,WAAAA,EAXD,KAAAE,UAA4D,KAalE,KAAKC,YAAc,IAAIC,GAA+BP,CAAK,CAC7D,CAEAQ,YAAU,CACR,MAAO,CACLX,QAAS,KAAKA,QACdY,cAAe,KAAKH,YAAYN,MAEpC,CAEAU,iBAAe,CACb,OAAO,KAAKJ,aAAaK,KAC3B,CAEAC,cAAcT,EAA2B,CACvC,KAAKA,WAAaA,EAClB,KAAKG,YAAYO,cAAcV,EAAWW,cAAa,CAAE,EACzD,KAAKR,YAAYS,mBAAmBZ,EAAWa,mBAAkB,CAAE,CACrE,CAEAC,OAAOC,EAAkC,CACvCA,EAAiBC,MAAK,EACtB,IAAMd,EAAYa,EAAiBE,gBAA2CjC,GAAyB,EACvGkB,EAAUgB,SAASxB,QAAU,KAAKA,QAClCQ,EAAUgB,SAASzB,WAAa,KAAKA,WACrCS,EAAUgB,SAASC,QAAU,KAAKhB,YAClC,KAAKD,UAAYA,CACnB,GAWIlB,KAAyB,IAAA,CAR/B,MAQMA,CAAyB,CAK7BQ,YACU4B,EACAC,EACAC,EAAsB,CAFtB,KAAAF,eAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,WAAAA,EAER,KAAKF,eAAeG,cACjBC,KACCC,GAAmB,KAAKH,UAAU,EAClCI,GAAQC,GAA2BA,EAAEjC,UAAY,KAAKA,OAAO,CAAC,EAE/DkC,UAAWC,GAAM,KAAKV,QAAQW,MAAK,CAAE,EAExC,KAAKV,eAAeW,aACjBP,KACCC,GAAmB,KAAKH,UAAU,EAClCU,GAAKC,GAAQ,CAETA,EAAK3B,eACL2B,EAAK3B,cAAc4B,MAAQC,QAC3BF,EAAK3B,cAAc8B,MAAQD,QAC3BF,EAAKvC,SACLuC,EAAKvC,UAAY,KAAKA,UAEtB,KAAKyB,QAAQkB,SAASJ,EAAK3B,aAAa,EACxC,KAAKa,QAAQmB,YAAW,EACxB,KAAKjB,aAAakB,cAAa,EAEnC,CAAC,CAAC,EAEHX,UAAS,CACd,iDAnCI5C,GAAyBwD,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,+BAAzB3D,EAAyB4D,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAAzBpE,CAAyB,GAAA,ICtE/B,IA2BaqE,GA3BbC,GAAAC,EAAA,KAGAC,cAwBaH,IAAmB,IAAA,CAA1B,MAAOA,CAAmB,QACf,KAAAI,kBAAoB,0BAA2B,CAM9DC,YAAmBC,EAAgB,CAAhB,KAAAA,KAAAA,CAAmB,CAE9B,OAAOC,0BAA0BC,EAAsD,CAC7F,IAAMC,EAAU,CAAA,EAChB,GAAID,GACF,QAASE,EAAI,EAAGA,GAAKF,EAAUG,OAAQD,IACrC,GAAIF,EAAUE,CAAC,EAAG,CAChB,IAAME,EAA0BZ,EAAoBa,kBAAkBL,EAAUE,CAAC,CAAC,EAClFD,EAAQK,KAAKF,CAAS,CACxB,EAIJ,OAAOH,CACT,CAEQ,OAAOI,kBAAkBE,EAAmD,CAClF,MAAO,CACLC,SAAUD,EAASE,sBAAsBC,UACzCC,YAAaJ,EAASI,YACtBC,cAAeL,EAASE,sBAAsBI,eAC9CC,QAASP,EAASQ,SAEtB,CAEOC,KAAKC,EAA4BC,EAA8B,CACpE,KAAKC,IAAMF,EACX,KAAKC,SAAWA,EAEhB,KAAKpB,KACFsB,KAAK,kGAAmG,CAAA,CAAE,EAC1GC,KACCC,GAAKf,GAAoC,CACnCA,GAAUgB,WACZ,KAAKC,gBAAkBjB,EAASgB,SAEpC,CAAC,EACDE,GAAK,CAAC,CAAC,EAERC,UAAS,EAEZ,KAAKC,yBAA2B,IAAIC,OAAOC,KAAKC,OAAOC,wBACzD,CAEAC,SAASlB,EAAe,CACtB,GAAIA,GAAWA,IAAYtB,EAAoBI,kBAAmB,CAChE,IAAMqC,EAAe,IAAIL,OAAOC,KAAKC,OAAOI,cAAc,KAAKf,GAAG,EAC5DgB,EAAYC,GAA+C,CAC/D,KAAKC,YAAYD,CAAK,EAAEV,UAAWY,GAAY,CAC7C,KAAKpB,SAASqB,mCAAmCzB,EAASsB,EAAOE,CAAQ,CAC3E,CAAC,CACH,EACAL,EAAaO,WACX,CACE1B,QAASA,EACT2B,OAAQ,CAAC,yBAA0B,OAAQ,oBAAqB,UAAW,QAAS,UAAU,EAC9FC,aAAc,KAAKf,0BAErBQ,CAAQ,CAEZ,CACF,CAEAQ,WAAWC,EAAoCC,EAAoC,CACjF,GAAI,CAACD,EACH,OAAOC,EAAQ,CAAA,CAAE,EAGnB,IAAMC,EAAU,IAAIlB,OAAOC,KAAKC,OAAOtC,oBACjC2C,EAAYY,GAA6D,CAC7EF,EAAQrD,EAAoBO,0BAA0BgD,CAAM,CAAC,CAC/D,EACA,GAAI,CACF,IAAIC,EAAuB,GAEvB,OAAOJ,GAAe,SACxBI,EAAwBJ,GAAsCpC,UAAY,GAE1EwC,EAAuBJ,EAGzBI,EAAuBA,EAAqBC,YAAW,EAEvD,IAAMC,EAAU,CACdC,MAAOH,EACPI,MAAO,CAAC,eAAe,EACvBV,aAAc,KAAKf,0BAEjB,KAAKH,kBACP0B,EAAQG,aAAe,CACrBC,MAAO,KAAK9B,gBAAgB+B,IAAM,GAClCC,KAAM,KAAKhC,gBAAgBiC,IAAM,GACjCC,MAAO,KAAKlC,gBAAgB+B,IAAM,GAClCI,KAAM,KAAKnC,gBAAgBiC,IAAM,KAGrCX,EAAQc,oBAAoBV,EAASf,CAAQ,CAC/C,OAAS0B,EAAG,CACVC,QAAQC,MAAMF,CAAC,CACjB,CACF,CAEAxB,YAAYD,EAAqC,CAC/C,IAAM4B,EAAiB,qDACjBC,EAAW,0CACXC,EAAW9B,GAAO+B,UAAU5C,UAAUgC,IAAG,EACzCa,EAAWhC,GAAO+B,UAAU5C,UAAUkC,IAAG,EAEzCY,EAAS,CACb9C,SAAU,GAAG2C,CAAQ,IAAIE,CAAQ,GACjCE,UAAWC,KAAKC,MAAMC,KAAKC,IAAG,EAAK,GAAI,EAAEC,SAAQ,EACjDC,IAAKX,GAGP,OAAO,KAAKnE,KAAK+E,IAAIb,EAAgB,CAAEK,OAAAA,CAAM,CAAE,EAAEhD,KAAKF,EAAKZ,GAAaA,CAAoB,CAAC,CAC/F,iDA1HWf,GAAmBsF,EAAAC,EAAA,CAAA,CAAA,CAAA,kCAAnBvF,EAAmBwF,QAAnBxF,EAAmByF,UAAAC,WADN,MAAM,CAAA,CAAA,SACnB1F,CAAmB,GAAA,+BEtB1B2F,EAAA,CAAA,EACEC,EAAA,CAAA,2BAAAC,EAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,8BAFJJ,EAAA,CAAA,EACEK,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,gCAAeJ,EAAA,EAAAK,EAAA,OAAAH,IAAAI,EAAAC,iBAAA,0BAKfC,EAAA,EAAA,MAAA,CAAA,6BAVNC,EAAA,EAAA,MAAA,CAAA,EAA8E,EAAA,MAAA,CAAA,EAC/CV,EAAA,CAAA,EAAWW,EAAA,EACxCD,EAAA,EAAA,MAAA,CAAA,EAEEN,EAAA,EAAAQ,IAAA,EAAA,EAAA,eAAA,CAAA,EAAkD,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAQpDH,EAAA,EAAM,yBAXuBV,EAAA,CAAA,EAAAc,EAAAR,EAAAS,KAAA,EAGZf,EAAA,CAAA,EAAAK,EAAA,OAAAC,EAAAU,KAAA,EAAY,WAAAC,CAAA,2BA6B3BR,EAAA,EAAA,WAAA,EACEV,EAAA,CAAA,mBACFW,EAAA,SADEV,EAAA,EAAAC,EAAA,IAAAiB,EAAA,EAAA,EAAA,oDAAA,EAAA,GAAA,8BASET,EAAA,EAAA,aAAA,EAAA,EAKC,EAAA,OAAA,EAAA,EACyBV,EAAA,CAAA,EAAuBW,EAAA,EAC/CF,EAAA,EAAA,IAAA,EACAC,EAAA,EAAA,OAAA,EAAA,EAA6BV,EAAA,CAAA,EAA4BW,EAAA,EAAO,0BAPhEL,EAAA,UAAAc,GAAA,EAAAC,GAAA,CAAA,EAEE,QAAAC,CAAA,EAGsBrB,EAAA,CAAA,EAAAc,EAAAO,EAAAC,QAAA,EAEKtB,EAAA,CAAA,EAAAc,EAAAO,EAAAE,aAAA,uCApCrCd,EAAA,EAAA,aAAA,EAAA,EAGEe,EAAA,iBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAArB,EAAAsB,EAAA,EAAA,OAAAC,EAAkBvB,EAAAwB,WAAAL,CAAA,CAAkB,CAAA,CAAA,EACrCf,EAAA,EACDD,EAAA,EAAA,iBAAA,EAAiB,EAAA,YAAA,EACHV,EAAA,CAAA,EAAWW,EAAA,EACvBD,EAAA,EAAA,QAAA,EAAA,EASEe,EAAA,gBAAA,SAAAC,EAAA,CAAAM,OAAAL,EAAAC,CAAA,EAAAE,EAAiBJ,EAAAO,eAAA,CAAuB,CAAA,CAAA,EAT1CtB,EAAA,EAWAP,EAAA,EAAA8B,IAAA,EAAA,EAAA,YAAA,CAAA,EAGAxB,EAAA,EAAA,mBAAA,GAAA,CAAA,EAGEe,EAAA,iBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAArB,EAAAsB,EAAA,EAAA,OAAAC,EAAkBvB,EAAA4B,kBAAAT,EAAAU,OAAAnB,KAAA,CAAsC,CAAA,CAAA,EAGxDoB,GAAA,EAAAC,IAAA,EAAA,EAAA,aAAA,GAAAC,GAAA,gBAYF5B,EAAA,EAAmB,2BArCnBL,EAAA,UAAAc,GAAA,GAAAoB,GAAA,CAAA,EAIYvC,EAAA,CAAA,EAAAc,EAAAR,EAAAS,KAAA,EAEVf,EAAA,EAAAwC,GAAA,KAAAlC,EAAAmC,mBAAA,EACAD,GAAA,OAAAlC,EAAAmC,mBAAA,EAMAD,GAAA,eAAAlC,EAAAmC,mBAAA,EAHApC,EAAA,cAAAC,EAAAoC,OAAA,EAAuB,kBAAAC,CAAA,EAMb3C,EAAA,EAAAK,EAAA,QAAAC,EAAAoC,SAAA,KAAA,KAAApC,EAAAoC,QAAAE,SAAAtC,EAAAoC,SAAA,KAAA,KAAApC,EAAAoC,QAAAG,SAAA,UAAA,EAAA,EAKV7C,EAAA,EAAAK,EAAA,cAAAC,EAAAwC,mBAAA,EAIA9C,EAAA,CAAA,EAAA+C,GAAA7B,EAAA,GAAA,EAAAZ,EAAA0C,UAAA,CAAA,GD1CN,gBAmBMzC,IA8BO0C,GAjDbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KAEAC,oLAEM5D,IAAoB,sBA8Bb0C,IAA6B,IAAA,CAApC,MAAOA,UAAqCmB,EAAkB,CAclE,IAAI1B,QAAQA,EAA4B,CACtC,KAAK2B,SAAW3B,EAChB,KAAK2B,SAASC,eAAc,CAC9B,CACA,IAAI5B,SAAO,CACT,OAAO,KAAK2B,QACd,CAEA,IAAIE,UAAUC,EAAuB,CACnC,CAIF,IAAIC,QAAQA,EAAe,CACzB,KAAKC,SAASC,IAAIF,CAAO,CAC3B,CAEA,IAAIG,iBAAe,CACjB,OAAO,KAAKP,SAASzB,KACvB,CAEA,IAAI5B,OAAK,CACP,IAAM6D,EAAe,KAAKR,SAASrD,MAC/B8D,EAAc,GAClB,OAAID,IACE,OAAOA,GAAgB,SACzBC,EAAeD,GAAuCvD,UAAUyD,SAAQ,GAAM,GAE9ED,EAAcD,GAIX,CACLJ,QAAS,KAAKC,SAAQ,EACtBM,YAAaF,EAEjB,CAIAG,YACUC,EACAC,EACCC,EAAsB,CAE/B,MAAK,EAJG,KAAAF,oBAAAA,EACA,KAAAC,eAAAA,EACC,KAAAC,WAAAA,EAxDX,KAAA7E,kBAAoBA,IAEX,KAAA8E,SAAW,GACZ,KAAAhB,SAA+C,IAAIiB,GAC1C,KAAAC,YAAc,IAAIC,GAA8B,CAAC,EACxD,KAAAxC,WAAa,KAAKuC,YAAYE,aAAY,EACnC,KAAAC,gBAAkB,IAAIC,GAGvC,KAAA5E,MAAQ,GAgBR,KAAA2D,SAAWkB,EAAO,EAAE,EA0BpB,KAAAnD,oBAA8BoD,GAAkB,CAQhD,CAEAC,UAAQ,CACN,KAAKJ,gBACFK,KAAKC,GAAmB,KAAKZ,UAAU,EAAGa,GAAa,GAAG,EAAGC,GAAoB,CAAE,EACnFC,UAAWC,GAAS,CACnB,KAAKlB,oBAAoBmB,WAAWD,EAAQE,GAAiC,CAC3E,KAAKf,YAAYgB,KAAKD,CAAO,CAC/B,CAAC,CACH,CAAC,EAEH,KAAKjC,SAASmC,aAAaT,KAAKC,GAAmB,KAAKZ,UAAU,CAAC,EAAEe,UAAWM,GAAc,CACxF,OAAOA,GAAc,SACvB,KAAKf,gBAAgBa,KAAKE,EAAWnF,QAAQ,EAE7C,KAAKoE,gBAAgBa,KAAKE,CAAU,CAExC,CAAC,CACH,CAGA3E,WAAW4E,EAA0B,CACnC,KAAKA,UAAYA,EACjB,KAAKxB,oBAAoByB,KAAKD,EAAW,IAAI,CAC/C,CAGAE,mCACEC,EACAC,EACAC,EAAkB,CAElB,IAAMC,EAA4C,CAAA,EAClDA,EAAsBH,SAAWA,EACjCG,EAAsBC,KAAOH,GAAOG,MAAQ,GAE5C,IAAMC,EAAgB,KAAKC,mBAAmBL,GAAOM,oBAAsB,CAAA,EAAI,eAAe,EACxFC,EAAU,KAAKF,mBAAmBL,GAAOM,oBAAsB,CAAA,EAAI,OAAO,EAG1EE,IACHJ,GAAwC,IACzC,KACCG,GAA4B,KAC7BE,KAAI,EACNP,EAAsBK,QAAUC,GAAoB,GAEpDN,EAAsBQ,KAAO,KAAKL,mBAAmBL,GAAOM,oBAAsB,CAAA,EAAI,UAAU,EAChGJ,EAAsBS,IAAM,KAAKN,mBAAmBL,GAAOM,oBAAsB,CAAA,EAAI,aAAa,EAClGJ,EAAsBU,QAAU,KAAKP,mBAAmBL,GAAOM,oBAAsB,CAAA,EAAI,SAAS,EAClGJ,EAAsBW,cAAgB,KAAKR,mBACzCL,GAAOM,oBAAsB,CAAA,EAC7B,UACA,YAAY,EAGdJ,EAAsBY,OAAS,KAAKT,mBAClCL,GAAOM,oBAAsB,CAAA,EAC7B,6BAA6B,EAE/BJ,EAAsBa,aAAe,KAAKV,mBACxCL,GAAOM,oBAAsB,CAAA,EAC7B,8BACA,YAAY,EAGd,IAAMU,EAAe,GAErB,GAAI,CAAC,KAAKC,UAAW,CACnB,KAAK5C,eAAe6C,kBAClBC,EAAYC,2BACZlB,EAAsBK,QACtBS,CAAY,EAEd,KAAK3C,eAAe6C,kBAClBC,EAAYE,2BACZ,KAAKhB,mBAAmBL,GAAOM,oBAAsB,CAAA,EAAI,OAAO,EAChEU,CAAY,EAEd,KAAK3C,eAAe6C,kBAClBC,EAAYG,0BACZpB,EAAsBQ,KACtBM,CAAY,EAEd,KAAK3C,eAAe6C,kBAClBC,EAAYI,2BACZrB,EAAsBY,OACtBE,CAAY,EAEd,KAAK3C,eAAe6C,kBAClBC,EAAYK,gCACZtB,EAAsBS,IACtBK,CAAY,EAEd,KAAK3C,eAAe6C,kBAClBC,EAAYM,6BACZvB,EAAsBU,QACtBI,CAAY,EAEd,KAAK3C,eAAe6C,kBAClBC,EAAYO,mCACZxB,EAAsBH,SACtBiB,CAAY,EAEd,KAAK3C,eAAe6C,kBAAkBC,EAAYQ,eAAgB3B,GAAO4B,SAAW,GAAIZ,CAAY,EACpG,KAAK3C,eAAewD,iBAAiB,CACnClE,QAASwD,EAAYW,mBACrBC,iBAAkB,CAChBC,eAAgB9B,GAAuBW,eAAiB,KACxDoB,eAAgBjC,GAAOkC,wBAA0B,IAEpD,EACD,KAAK7D,eAAe6C,kBAAkBC,EAAYgB,gBAAiBlC,GAAUmC,YAAc,GAAIpB,CAAY,EAE3G,IAAMqB,EAAMrC,GAAOsC,UAAUC,UAAUF,IAAG,GAAM,EAC1CG,EAAMxC,GAAOsC,UAAUC,UAAUC,IAAG,GAAM,EAEhD,KAAKnE,eAAeoE,oBAClBtB,EAAYuB,uCACZL,EACAG,EACAxB,CAAY,CAEhB,CACF,CAEAX,mBACEsC,EACAC,EACAC,EAAY,YAAW,CAEvB,OACEF,EACGG,OAAQC,GAAcA,EAAUC,MAAMC,QAAQL,CAAI,IAAM,CAAC,EACzDM,IAAKC,GAASA,EAAKN,CAAS,CAAC,EAC7BO,IAAG,GAAM,IAEhB,CAEAhI,kBAAkBmH,EAA+B,CAC3CA,IACE,OAAOA,GAAY,SACrB,KAAKnE,oBAAoBiF,SAASd,EAASe,OAAO,EAElD,KAAKlF,oBAAoBiF,SAASd,CAAQ,EAGhD,CAEAvG,oBAAoBuG,EAA+B,CACjD,OAAIA,EACE,OAAOA,GAAY,SACdA,EAAS/H,SAEX+H,EAEF,EACT,iDAzNWpG,GAA4BoH,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,+BAA5BvH,EAA4BwH,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,GAd5B,CAACL,EAAmB,CAAC,EAAAM,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,YAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,KAAA,qCAAA,EAAA,OAAA,UAAA,EAAA,CAAA,KAAA,oCAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,UAAA,OAAA,EAAA,iBAAA,SAAA,EAAA,CAAA,WAAA,GAAA,WAAA,GAAA,cAAA,oBAAA,EAAA,gBAAA,KAAA,OAAA,cAAA,kBAAA,cAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,iBAAA,aAAA,EAAA,CAAA,EAAA,UAAA,OAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,gBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,GCnClC9K,EAAA,EAAAgL,IAAA,EAAA,EAAA,MAAA,CAAA,EAA8E,EAAAC,IAAA,GAAA,GAAA,cAAA,KAAA,EAAAvK,EAAA,kBAAhCR,EAAA,OAAA6K,EAAA7F,QAAA,EAAgB,WAAAgG,CAAA,kBDqC1DC,EAAYC,GAAAC,GAAAC,GACZC,GAAmBC,GAAAC,GAAAC,GAAAC,GACnBC,EAAeC,EACfC,GAAqBC,GAAAC,GACrBC,GAAcC,GAAAC,GACdC,GAAqBC,GAAAC,GAAAC,GACrBC,GACAC,GAAgBC,EAAA,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAKP9J,CAA6B,GAAA,IE/B1C,SAAS+J,IAAiBC,EAAQC,EAAM,CACtC,OACED,GAAQE,iBAAmBD,GAAQC,gBACnCF,GAAQG,iBAAmBF,GAAQE,gBACnCH,GAAQI,YAAcH,GAAQG,SAElC,CAEM,SAAUC,GAAyBC,EAA4B,CACnE,IAAMC,EAAqB,CAACD,EAAOE,OAAOC,eAAiB,CAAC,CAACH,EAAOE,OAAOL,eAErEO,EAAoBC,GAAiBL,EAAOE,OAAOL,gBAAkB,EAAE,EACvES,EAAkB,CACtBV,eAAgBQ,GAAmBR,gBAAkBW,GACrDV,eAAgBO,GAAmBP,gBAAkBG,EAAOE,OAAOL,eACnEC,UAAWM,GAAmBN,WAAa,IAG7C,MAAO,CACLU,oBAAqB,CACnBC,SAAU,UACVC,QAAS,2CACTC,aAAcC,IAA6BX,EAAoBK,CAAe,EAC9EO,kBAAmB,MAGzB,CA1CA,IAIMD,IAJNE,GAAAC,EAAA,KAAAC,KAEAC,KAEML,IACJA,CAACX,EAA6BiB,IAA8CC,GAAW,CACrF,IAAMC,EAAgBD,EAAQjB,MAE9B,OAAID,GAAsBR,IAAiB2B,EAAeF,CAAkB,EACnE,CACLV,oBAAqB,IAGlB,IACT,+BEPIa,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,0BAF4DC,EAAA,QAAAC,EAAAC,EAAA,EAC1DC,EAAA,EAAAC,EAAA,IAAAH,EAAAI,KAAA,GAAA,2BAGJR,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEI,EAAA,EAAAC,EAAA,IAAAE,EAAA,EAAA,EAAA,oDAAA,EAAA,GAAA,uCAbJT,EAAA,EAAA,kBAAA,CAAA,EAA4C,EAAA,YAAA,EAC9BC,EAAA,CAAA,EAAWC,EAAA,EACvBF,EAAA,EAAA,aAAA,CAAA,mBAEEU,EAAA,OAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAQF,EAAAG,UAAA,CAAW,CAAA,CAAA,EAAC,kBAAA,UAAA,CAAAL,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EACDF,EAAAI,uBAAA,CAAwB,CAAA,CAAA,EAG3CC,EAAA,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,EAGFjB,EAAA,EACAgB,EAAA,EAAAE,IAAA,EAAA,EAAA,aAAA,CAAA,EAGFlB,EAAA,oBAfiBC,EAAA,oBAAA,EAAA,EACHG,EAAA,CAAA,EAAAe,EAAAR,EAAAS,KAAA,EAEVhB,EAAA,EAAAH,EAAA,cAAAU,EAAAU,OAAA,EAAuB,cAAAd,EAAA,EAAA,EAAA,qCAAA,CAAA,EAKgBH,EAAA,CAAA,EAAAH,EAAA,UAAAqB,CAAA,EAI5BlB,EAAA,EAAAH,EAAA,OAAA,CAAAU,EAAAU,QAAAE,YAAAZ,EAAAU,SAAA,KAAA,KAAAV,EAAAU,QAAAG,SAAA,UAAA,EAAA,0BAKfC,EAAA,EAAA,MAAA,CAAA,EDlBF,IAoBaC,GApBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,IACAC,KAGAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,+CAOad,IAA0B,IAAA,CAAjC,MAAOA,UAAkCe,EAAkB,CAO/D,IAAIC,QAAQA,EAAe,CACzB,KAAKC,SAAWD,CAClB,CACA,IAAIA,SAAO,CACT,OAAO,KAAKC,QACd,CAKA,IAAItB,QAAQA,EAA4B,CACtC,KAAKuB,SAAWvB,EAChB,KAAKA,QAAQwB,cAAcC,GAAWC,QAAQ,CAChD,CACA,IAAI1B,SAAO,CACT,OAAO,KAAKuB,QACd,CAGA,IAAIxB,MAAMA,EAAa,CACrB,KAAK4B,OAAS5B,CAChB,CACA,IAAIA,OAAK,CACP,OAAO,KAAK4B,MACd,CAUAC,aAAA,CACE,MAAK,EAzCU,KAAAC,kBAAoBC,EAAOC,EAAiB,EAC5C,KAAAC,gBAAkBF,EAAOG,EAAkB,EAC3C,KAAAC,eAAiBJ,EAAOK,EAAc,EAE9C,KAAAC,WAAyB,cAClC,KAAAd,SAAW,GAOX,KAAAC,SAAgC,IAAIc,GAAoB,GAAI,CAC1DC,YAAa,GACbC,WAAY,CAACd,GAAWC,QAAQ,EACjC,EASD,KAAAC,OAAS,GAQU,KAAAa,kBAAoB,KAAKR,gBAAgBS,eAAe,KAAKL,UAAU,EAAEM,KAC1FC,EAAKC,GACHA,EAAUD,IAAKE,IACN,CAAE/D,GAAI+D,EAAS/D,GAAIG,KAAM4D,EAAS5D,IAAI,EAC9C,CAAC,CACH,EAKD,KAAKuD,kBAAkBE,KAAKI,GAAkB,CAAE,EAAEC,UAAWH,GAAa,CACxE,IAAMI,EAAoB,KAAKhD,QAAQiD,MACjCC,EAAgBN,EAAUO,KAAMC,GAAMA,EAAEtE,KAAOkE,CAAiB,EAClEA,GAAqB,CAACE,IACxB,KAAKlD,QAAQqD,SAAS,EAAE,EACxB,KAAKrD,QAAQsD,cAAa,GAEMV,EAAUW,SAAW,IAErD,KAAKvD,QAAQqD,SAAST,EAAU,CAAC,EAAE9D,EAAE,EACrC,KAAKkB,QAAQwD,YAAW,EACxB,KAAKtB,eAAeuB,kBAAkB,KAAKpC,QAAS,KAAKrB,QAAQiD,KAAK,EAE1E,CAAC,CACH,CAEA,IAAIS,UAAUC,EAAuB,CACnC,CAGF,IAAIC,iBAAe,CACjB,OAAO,KAAK5D,QAAQ6D,KACtB,CAEA,IAAIZ,OAAK,CACP,MAAO,CACL5B,QAAS,KAAKA,QACdyC,YAAa,KAAK9D,QAAQiD,MAE9B,CAEAvD,wBAAsB,CACpB,KAAKwC,eAAeuB,kBAAkB,KAAKpC,QAAS,KAAKrB,QAAQiD,KAAK,CACxE,CAEAxD,WAAS,CACP,KAAKoC,kBAAkBkC,eAAe,KAAK3B,WAAY,CACrD,CACEf,QAAS,KAAKA,QACdyC,YAAa,KAAK9D,QAAQiD,MAC3B,CACF,CACH,iDArFW5C,EAAyB,CAAA,+BAAzBA,EAAyB2D,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,kBAAA,cAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAtE,EAAA,IAAAsE,EAAA,ICpBtC5E,EAAA,EAAA6E,IAAA,EAAA,EAAA,kBAAA,CAAA,eAiBE7E,EAAA,EAAA8E,IAAA,EAAA,EAAA,MAAA,CAAA,cAjBFC,GAAAC,EAAAzF,EAAA,EAAA,EAAAe,EAAAuC,iBAAA,GAAA,EAAA,EAAAmC,CAAA,kBDkBYC,EAAYC,GAAAC,GAAAC,GAAEC,GAAeC,GAAAC,GAAEC,GAAqBC,GAAAC,GAAAC,GAAEC,EAAeC,EAAaC,GAAmBC,GAAAC,EAAA,EAAAC,OAAA,CAAA;oGAAA,CAAA,CAAA,CAAA,SAEpGvF,CAA0B,GAAA,4BGZrCwF,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,4DAAA,EAAA,GAAA,GDTJ,IAiBaC,GAjBbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,IACAC,KACAC,KAEAC,KACAC,KAEAC,0CAOaV,IAAyB,IAAA,CAAhC,MAAOA,UAAiCW,EAAkB,CAI9D,IAAIC,QAAQA,EAAe,CACzB,KAAKC,SAAWD,CAClB,CACA,IAAIA,SAAO,CACT,OAAO,KAAKC,QACd,CAKA,IAAIC,QAAQA,EAA4B,CACtC,KAAKC,SAAWD,EAChB,KAAKA,QAAQE,SAASF,EAAQG,OAAS,EAAE,EACzC,KAAKH,QAAQI,cAAcC,GAAWC,QAAQ,CAChD,CACA,IAAIN,SAAO,CACT,OAAO,KAAKC,QACd,CAGA,IAAIM,MAAMA,EAAa,CACrB,KAAKC,OAASD,CAChB,CACA,IAAIA,OAAK,CACP,OAAO,KAAKC,MACd,CAEAC,YAA6BC,EAAoC,CAC/D,MAAK,EADsB,KAAAA,kBAAAA,EA9B7B,KAAAC,oBAA8BC,GAAkB,EAEhD,KAAAb,SAAW,GAOX,KAAAE,SAAgC,IAAIY,GAAoB,GAAI,CAC1DC,YAAa,GACbC,WAAY,CAACV,GAAWC,QAAQ,EACjC,EAUD,KAAAE,OAAS,EAUT,CAEA,IAAIQ,UAAUC,EAAuB,CACnC,CAGF,IAAIC,iBAAe,CACjB,OAAO,KAAKjB,SAASkB,KACvB,CAEA,IAAIhB,OAAK,CACP,MAAO,CACLL,QAAS,KAAKA,QACdsB,YAAa,KAAKpB,QAAQG,MAE9B,CAEAkB,WAAS,CACP,KAAKX,kBAAkBY,eAAe,KAAKC,WAAY,CACrD,CACEzB,QAAS,KAAKA,QACdsB,YAAa,KAAKpB,QAAQG,MAC3B,CACF,CACH,iDAzDWjB,GAAwBsC,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAxBvC,EAAwBwC,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,WAAA,GAAA,EAAA,cAAA,eAAA,aAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICjBrCrD,EAAA,EAAA,kBAAA,CAAA,EAA4C,EAAA,YAAA,EAC9BC,EAAA,CAAA,EAAWC,EAAA,EACvBqD,EAAA,EAAA,QAAA,CAAA,mBAMAC,EAAA,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,EAGFvD,EAAA,SAXiBwD,EAAA,oBAAA,EAAA,EACHvD,EAAA,CAAA,EAAAwD,EAAAL,EAAA3B,KAAA,EAIVxB,EAAA,EAAAyD,GAAA,eAAAN,EAAAvB,mBAAA,EADA2B,EAAA,cAAAJ,EAAAlC,OAAA,EAAuB,cAAAf,EAAA,EAAA,EAAA,0CAAA,CAAA,EAIZF,EAAA,CAAA,EAAAuD,EAAA,OAAA,CAAAJ,EAAAlC,QAAAyC,YAAAP,EAAAlC,SAAA,KAAA,KAAAkC,EAAAlC,QAAA0C,SAAA,UAAA,EAAA,kBDOHC,EAAYC,GAAEC,GAAiBC,GAAqBC,GAAAC,GAAAC,GAAEC,EAAeC,EAAEC,GAAUC,GAAmBC,GAAAC,GAAAC,EAAA,EAAAC,OAAA,CAAA;oGAAA,CAAA,CAAA,CAAA,SAEnGvE,CAAyB,GAAA,IEjBtC,IAmBawE,GAnBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,SASab,IAA6B,IAAA,CAApC,MAAOA,UAAqCc,EAAkB,CASlEC,aAAA,CACE,MAAK,EATU,KAAAC,WAAaC,EAAOC,EAAU,EAC9B,KAAAC,eAAiBF,EAAOG,EAAc,EACtC,KAAAC,kBAAoBJ,EAAOK,EAAiB,EACrD,KAAAC,aAAeC,GAAS,KAAKH,kBAAkBI,aAAa,EAEpE,KAAAC,SAAuC,IAAIC,GAAoB,EAAE,EACjE,KAAAC,OAAS,GAmCT,KAAAC,SAAWC,EAAO,EAAE,EA9BlB,KAAKX,eAAeY,cACjBC,KACCC,GAAmB,KAAKjB,UAAU,EAClCkB,GAAQC,GAA2BA,EAAEC,UAAY,KAAKP,SAAQ,CAAE,CAAC,EAElEQ,UAAWC,GAAM,KAAKC,MAAK,CAAE,EAChC,KAAKpB,eAAeqB,aACjBR,KACCC,GAAmB,KAAKjB,UAAU,EAClCyB,GAAKC,GAAQ,CACPA,EAAKC,aAAeD,EAAKC,aAAe,IAAMD,EAAKN,SAAWM,EAAKN,UAAY,KAAKP,SAAQ,IAC9F,KAAKe,QAAQC,SAASH,EAAKC,WAAW,EACtC,KAAKC,QAAQE,YAAW,EAE5B,CAAC,CAAC,EAEHT,UAAS,CACd,CAEA,IAAaO,QAAQA,EAA2B,CAC9C,KAAKlB,SAAWkB,CAClB,CACA,IAAaA,SAAO,CAClB,OAAO,KAAKlB,QACd,CAEA,IAAIqB,UAAUC,EAAuB,CACnC,CAIF,IAAaZ,QAAQA,EAAe,CAClC,KAAKP,SAASoB,IAAIb,CAAO,CAC3B,CAEA,IAAac,MAAMA,EAAa,CAC9B,KAAKtB,OAASsB,CAChB,CACA,IAAaC,iBAAe,CAC1B,OAAO,KAAKP,SAASQ,KACvB,CACA,IAAaC,OAAK,CAChB,MAAO,CACLjB,QAAS,KAAKP,SAAQ,EACtBc,YAAa,KAAKjB,SAAS2B,OAAS,GAExC,CAEAC,WAAS,CACP,KAAKjC,kBAAkBkC,eAAe,KAAKC,WAAY,CACrD,CACEpB,QAAS,KAAKA,QACdO,YAAa,KAAKC,QAAQS,MAC3B,CACF,CACH,CAEAd,OAAK,CACH,KAAKK,QAAQa,MAAK,EAClB,KAAKb,QAAQE,YAAW,EACpB,KAAKvB,aAAY,GACnB,KAAK+B,UAAS,CAElB,iDA3EWtD,EAA4B,CAAA,+BAA5BA,EAA4B0D,UAAA,CAAA,CAAA,iBAAA,CAAA,EAAAC,SAAA,CAAAC,GAJ5B,CAAA,CAAE,EAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,EAAAC,aAAA,CACHC,EAAcC,GAAqBC,EAAiBC,EAAqB,EAAAC,cAAA,CAAA,CAAA,CAAA,SAGxExE,CAA6B,GAAA,ICnB1C,IAmBayE,GAnBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,SASab,IAAiC,IAAA,CAAxC,MAAOA,UAAyCc,EAAkB,CAStEC,aAAA,CACE,MAAK,EATU,KAAAC,WAAaC,EAAOC,EAAU,EAC9B,KAAAC,eAAiBF,EAAOG,EAAc,EACtC,KAAAC,kBAAoBJ,EAAOK,EAAiB,EACrD,KAAAC,aAAeC,GAAS,KAAKH,kBAAkBI,aAAa,EAEpE,KAAAC,SAAqC,IAAIC,GAAyB,IAAI,EACtE,KAAAC,OAAS,GAmCT,KAAAC,SAAWC,EAAO,EAAE,EA9BlB,KAAKX,eAAeY,cACjBC,KACCC,GAAmB,KAAKjB,UAAU,EAClCkB,GAAQC,GAA2BA,EAAEC,UAAY,KAAKP,SAAQ,CAAE,CAAC,EAElEQ,UAAWC,GAAM,KAAKC,MAAK,CAAE,EAChC,KAAKpB,eAAeqB,aACjBR,KACCC,GAAmB,KAAKjB,UAAU,EAClCyB,GAAKC,GAAQ,CACPA,EAAKC,WAAaD,EAAKN,SAAWM,EAAKN,UAAY,KAAKP,SAAQ,IAClE,KAAKe,QAAQC,SAASH,EAAKC,SAAS,EACpC,KAAKC,QAAQE,YAAW,EAE5B,CAAC,CAAC,EAEHT,UAAS,CACd,CAEA,IAAaO,QAAQA,EAA2B,CAC9C,KAAKlB,SAAWkB,CAClB,CACA,IAAaA,SAAO,CAClB,OAAO,KAAKlB,QACd,CAEA,IAAIqB,UAAUC,EAAuB,CACnC,CAIF,IAAaZ,QAAQA,EAAe,CAClC,KAAKP,SAASoB,IAAIb,CAAO,CAC3B,CAEA,IAAac,MAAMA,EAAa,CAC9B,KAAKtB,OAASsB,CAChB,CACA,IAAaC,iBAAe,CAC1B,OAAO,KAAKP,SAASQ,KACvB,CACA,IAAaC,OAAK,CAChB,MAAO,CACLjB,QAAS,KAAKP,SAAQ,EACtBc,UAAW,KAAKjB,UAAU2B,OAAS,IAAIC,KAE3C,CAEAC,WAAS,CACP,KAAKlC,kBAAkBmC,eAAe,KAAKC,WAAY,CACrD,CACErB,QAAS,KAAKA,QACdO,UAAW,KAAKC,SAASS,OAAS,IAAIC,KACvC,CACF,CACH,CAEAf,OAAK,CACH,KAAKK,QAAQc,MAAK,EAClB,KAAKd,QAAQE,YAAW,EACpB,KAAKvB,aAAY,GACnB,KAAKgC,UAAS,CAElB,iDA3EWvD,EAAgC,CAAA,+BAAhCA,EAAgC2D,UAAA,CAAA,CAAA,qBAAA,CAAA,EAAAC,SAAA,CAAAC,GAJhC,CAAA,CAAE,EAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,EAAAC,aAAA,CACHC,EAAcC,GAAqBC,EAAiBC,EAAqB,EAAAC,cAAA,CAAA,CAAA,CAAA,SAGxEzE,CAAiC,GAAA,+BEf1C0E,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,0BAF2DC,EAAA,QAAAC,CAAA,EACzDC,EAAA,EAAAC,EAAA,IAAAF,EAAA,GAAA,GDLN,IAmBaG,GAnBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,IACAC,KAGAC,KACAC,KACAC,KACAC,KACAC,KACAC,sCAOab,IAAkC,IAAA,CAAzC,MAAOA,UAA0Cc,EAAkB,CAMvE,IAAIC,QAAQA,EAAe,CACzB,KAAKC,SAAWD,CAClB,CACA,IAAIA,SAAO,CACT,OAAO,KAAKC,QACd,CAIA,IAAIC,QAAQA,EAA4B,CACtC,KAAKC,SAAWD,EACZ,KAAKC,SAASC,QAAU,MAC1B,KAAKF,QAAQG,SAAS,EAAE,CAE5B,CACA,IAAIH,SAAO,CACT,OAAO,KAAKC,QACd,CAGA,IAAIG,MAAMA,EAAa,CACrB,KAAKC,OAASD,CAChB,CACA,IAAIA,OAAK,CACP,OAAO,KAAKC,MACd,CAKAC,aAAA,CACE,MAAK,EApCU,KAAAC,kBAAoBC,EAAOC,EAAiB,EAC5C,KAAAC,eAAiBF,EAAOG,EAAc,EAE9C,KAAAC,WAAyB,UAClC,KAAAb,SAAW,GAOX,KAAAE,SAAgC,IAAIY,GAAoB,GAAI,CAC1DC,YAAa,GACd,EAWD,KAAAT,OAAS,GAQU,KAAAU,iBAAmB,CAAC,aAAc,cAAc,EAC3D,KAAAC,SAAWC,GAAS,KAAKV,kBAAkBW,aAAa,EAI9D,IAAMC,EAAsB,KAAKnB,QAAQE,MACnCkB,EAAsB,KAAKL,iBAAiBM,KAAMC,GAAMA,IAAMH,CAAmB,EACnFA,GAAuB,CAACC,IAC1B,KAAKpB,QAAQG,SAAS,EAAE,EACxB,KAAKH,QAAQuB,cAAa,EAE9B,CAEA,IAAIC,UAAUC,EAAuB,CACnC,CAGF,IAAIC,iBAAe,CACjB,OAAO,KAAK1B,QAAQ2B,KACtB,CAEA,IAAIzB,OAAK,CACP,MAAO,CACLJ,QAAS,KAAKA,QACd8B,YAAa,KAAK5B,QAAQE,MAE9B,CAEA2B,2BAAyB,CACvB,OAAI,KAAK/B,UAAYgC,EAAYC,mCACxB,CACL,CACEjC,QAASgC,EAAYE,mCACrBJ,YAAa,UAEf,CACE9B,QAASgC,EAAYG,sCACrBC,UAAW,IAAIC,KAChB,EAGD,KAAKrC,UAAYgC,EAAYM,wBACxB,CACL,CACEtC,QAASgC,EAAYO,wBACrBT,YAAa,UAEf,CACE9B,QAASgC,EAAYQ,2BACrBJ,UAAW,IAAIC,KAChB,EAGE,CAAA,CACT,CAEAI,sBAAsBC,EAAkC,CACtD,QAAWC,KAAYD,EACrB,KAAK9B,eAAegC,iBAAiBD,CAAQ,CAEjD,CAEAE,WAAS,CACP,IAAMC,EAAmB,KAAKf,0BAAyB,EACvD,GAAI,CAAC,KAAKb,SAAQ,EAAI,CACpB,KAAKuB,sBAAsBK,CAAgB,EAC3C,MACF,CACA,KAAKrC,kBAAkBsC,eAAe,KAAKjC,WAAY,CACrD,CACEd,QAAS,KAAKA,QACd8B,YAAa,KAAK5B,QAAQE,OAE5B,GAAG0C,CAAgB,CACpB,CACH,iDA5GW7D,EAAiC,CAAA,+BAAjCA,EAAiC+D,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,OAAA,cAAA,aAAA,EAAA,CAAA,QAAA,EAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICnB9C7E,EAAA,EAAA,iBAAA,EAAiB,EAAA,YAAA,EACHC,EAAA,CAAA,EAAWC,EAAA,EACvBF,EAAA,EAAA,aAAA,CAAA,EAAoC+E,EAAA,OAAA,UAAA,CAAA,OAAQD,EAAAX,UAAA,CAAW,CAAA,EACrDnE,EAAA,EAAA,aAAA,CAAA,EAAqBC,EAAA,EAAA,OAAA,EAAKC,EAAA,EAC1B8E,EAAA,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,EAGF/E,EAAA,EAAa,SANDG,EAAA,CAAA,EAAA6E,EAAAJ,EAAAlD,KAAA,EACAvB,EAAA,EAAAF,EAAA,cAAA2E,EAAAtD,OAAA,EAAuB,cAAAsD,EAAAlD,KAAA,EAEKvB,EAAA,CAAA,EAAAF,EAAA,UAAA2E,EAAAvC,gBAAA,kBDa9B4C,EAAYC,GAAEC,GAAeC,GAAAC,GAAEC,GAAqBC,GAAAC,GAAEC,EAA4BC,GAAmBC,GAAAC,EAAA,EAAAC,OAAA,CAAA;oGAAA,CAAA,CAAA,CAAA,SAEpGxF,CAAkC,GAAA,IEuE/C,SAASyF,GAAaC,EAAW,CAC/B,MAAI,CAACA,EAAIC,WAAW,SAAS,GAAK,CAACD,EAAIC,WAAW,UAAU,EACnD,UAAYD,EAEdA,CACT,CAEA,SAASE,GAASF,EAAW,CAC3B,GAAI,CACF,IAAMG,EAAY,IAAIC,IAAIJ,CAAG,EACvBK,EAASF,EAAUG,SACnBC,EAAOJ,EAAUI,KACjBC,EAAOC,IAAiBN,EAAUO,QAAQ,EAChD,MAAO,GAAGL,CAAM,KAAKE,CAAI,GAAGC,CAAI,EAClC,MAAY,CACV,OAAOR,CACT,CACF,CAEA,SAASS,IAAiBD,EAAY,CACpC,IAAMG,EAAK,UACX,OAAOH,EAAKI,QAAQD,EAAI,GAAG,CAC7B,CAEA,SAASE,GAAWb,EAAW,CAC7B,GAAI,CAEF,OADe,IAAII,IAAIJ,CAAG,CAE5B,MAAY,CACV,OAAO,IACT,CACF,CAEA,SAASc,GAAcd,EAAUe,EAAiB,CAChD,OAAOf,EAAIO,KAAKS,YAAW,EAAGJ,QAAQ,SAAU,EAAE,IAAMG,EAAUC,YAAW,CAC/E,CAEA,SAASC,IAAmBjB,EAAUkB,EAAoB,CACxD,IAAMX,EAAOP,EAAIO,KAAKS,YAAW,EAAGJ,QAAQ,SAAU,EAAE,EACxD,OAAOM,EAAWC,KAAMC,GAAMA,IAAMb,CAAI,CAC1C,CAEA,SAASc,IAAgBrB,EAAUe,EAAiB,CAClD,OAAOf,EAAIO,KAAKS,YAAW,EAAGM,SAASP,CAAS,CAClD,CAEA,SAASQ,IAAqBvB,EAAUkB,EAAoB,CAC1D,IAAMX,EAAOP,EAAIO,KAAKS,YAAW,EACjC,OAAOE,EAAWC,KAAMC,GAAMb,EAAKe,SAASF,EAAEJ,YAAW,CAAE,CAAC,CAC9D,CAEA,SAASQ,GAAgBxB,EAAQ,CAC/B,MAAO,EAAEA,EAAIU,WAAa,IAAOV,EAAIU,WAAa,KAAOV,EAAIyB,OAAS,GACxE,CA/IA,IAAaC,GAeAC,GAkBAC,GAmBAC,GAKAC,GAkBAC,GA3EbC,GAAAC,EAAA,KAAaP,GAAwB1B,GAA+B,CAClE,GAAI,CAACA,EACH,OAAOA,EAET,IAAMkC,EAAgBnC,GAAaC,CAAG,EAChCmC,EAAajC,GAASgC,CAAa,EAEnC/B,EAAYU,GAAWsB,CAAU,EACvC,MAAI,CAAChC,GAAa,CAACkB,IAAgBlB,EAAW,cAAc,GAAK,CAACqB,GAAgBrB,CAAS,EAClF,GAGFgC,CACT,EAEaR,GAAwB3B,GAA+B,CAClE,GAAI,CAACA,EACH,OAAOA,EAET,IAAMkC,EAAgBnC,GAAaC,CAAG,EAClCmC,EAAaD,EACb,CAAClC,EAAIoC,SAAS,MAAM,GAAK,CAACpC,EAAIoC,SAAS,MAAM,IAC/CD,EAAajC,GAASgC,CAAa,GAGrC,IAAM/B,EAAYU,GAAWsB,CAAU,EACvC,MAAI,CAAChC,GAAa,CAACW,GAAcX,EAAW,cAAc,GAAK,CAACqB,GAAgBrB,CAAS,EAChF,GAGFgC,CACT,EAEaP,GAAyB5B,GAA+B,CACnE,GAAI,CAACA,EACH,OAAOA,EAET,IAAMkC,EAAgBnC,GAAaC,CAAG,EAChCmC,EAAajC,GAASgC,CAAa,EAEnC/B,EAAYU,GAAWsB,CAAU,EACvC,MACE,CAAChC,GACD,CAACoB,IAAqBpB,EAAW,CAAC,gBAAiB,kBAAmB,eAAgB,kBAAkB,CAAC,GACzG,CAACqB,GAAgBrB,CAAS,EAEnB,GAGFgC,CACT,EAEaN,GAAsB7B,GAE1BA,EAGI8B,GAAiB9B,GAA+B,CAC3D,GAAI,CAACA,EACH,OAAOA,EAELA,EAAIoC,SAAS,MAAM,IACrBpC,EAAMA,EAAIY,QAAQ,OAAQ,GAAG,GAE/B,IAAMsB,EAAgBnC,GAAaC,CAAG,EAChCmC,EAAajC,GAASgC,CAAa,EAEnC/B,EAAYU,GAAWsB,CAAU,EACvC,MAAI,CAAChC,GAAa,CAACc,IAAmBd,EAAW,CAAC,cAAe,OAAO,CAAC,GAAK,CAACqB,GAAgBrB,CAAS,EAC/F,GAGFgC,CACT,EAEaJ,GAAyB/B,GAA+B,CACnE,GAAI,CAACA,EACH,OAAOA,EAET,IAAMkC,EAAgBnC,GAAaC,CAAG,EAChCmC,EAAajC,GAASgC,CAAa,EAEnC/B,EAAYU,GAAWsB,CAAU,EACvC,MAAI,CAAChC,GAAa,CAACW,GAAcX,EAAW,eAAe,GAAK,CAACqB,GAAgBrB,CAAS,EACjF,GAGFgC,CACT,wCEnEEE,EAAA,EAAA,SAAA,CAAA,EAAoFC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,MAAA,CAAO,CAAA,CAAA,EAClGP,EAAA,EAAA,UAAA,EAAUQ,EAAA,EAAA,OAAA,EAAKC,EAAA,EAAW,uCAK1BT,EAAA,EAAA,aAAA,CAAA,EAA6BC,EAAA,YAAA,SAAAS,EAAA,CAAAC,OAAAT,EAAAU,CAAA,EAAAN,EAAaI,EAAAG,eAAA,CAAuB,CAAA,CAAA,EAAGL,EAAA,CAAA,EAAaC,EAAA,4BAArEK,EAAA,QAAAC,CAAA,EAAwDC,EAAA,EAAAC,EAAA,IAAAF,EAAA,GAAA,8BAItEf,EAAA,EAAA,YAAA,EACEQ,EAAA,CAAA,mBACFC,EAAA,kBADEO,EAAA,EAAAC,EAAA,IAAAC,GAAA,EAAA,EAAA,sCAAAC,GAAA,EAAAC,KAAAhB,EAAAiB,QAAAC,OAAA,KAAA,KAAAlB,EAAAiB,QAAAC,MAAAC,SAAA,CAAA,CAAA,EAAA,GAAA,2BAGFvB,EAAA,EAAA,YAAA,EAAaQ,EAAA,CAAA,mBAAwDC,EAAA,SAAxDO,EAAA,EAAAC,EAAA,IAAAO,EAAA,EAAA,EAAA,qCAAA,EAAA,GAAA,GDnCf,YAiFaC,GAjFbC,GAAAC,EAAA,KAQAC,IACAC,KACAC,KACAC,KACAC,IACAC,KAOAC,KAOAC,KACAC,KAEAC,KASAC,KAcAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAF,kHAsBajB,IAAwB,IAAA,CAA/B,MAAOA,UAAgCoB,EAAkB,CAO7D,IAAIC,QAAQA,EAAe,CACzB,KAAKC,SAAWD,CAClB,CACA,IAAIA,SAAO,CACT,OAAO,KAAKC,QACd,CAEA,IAAIC,MAAMA,EAAa,CACrB,KAAKC,OAASD,CAChB,CACA,IAAIA,OAAK,CACP,OAAO,KAAKC,MACd,CAGA,IAAI5B,QAAQ6B,EAA+B,CACzC,KAAKC,SAAWD,EAChB,KAAKC,SAASC,gBAAe,EAC7B,KAAKC,gBAAe,EACpB,IAAMC,EAAkB,KAAKH,SAASI,aAAaC,KACjDC,GAAU,KAAKN,SAAS7B,KAAK,EAC7BoC,GAAaC,GAAkB,CAAC,EAE5BC,EAAe,KAAKA,aAAaJ,KAAKK,GAAoB,CAAE,EAClE,KAAKC,iBAAmBC,EAAc,CAACT,EAAiBM,CAAY,CAAC,EAAEJ,KACrEQ,GAAmB,KAAKC,UAAU,EAClCC,GAAU,CAAC,CAAA,CAAGC,CAAW,IAAyB,CAACA,CAAW,EAC9DC,EAAU,CAAC,CAAC9C,CAAK,IACR,KAAK+C,yBAAyBC,gBAAgB,KAAKxB,QAASxB,CAAK,CACzE,CAAC,CAEN,CACA,IAAID,SAAO,CACT,OAAO,KAAK8B,QACd,CAMAoB,YACuDF,EAC5CJ,EACDO,EACAC,EACSC,EAAoC,CAErD,MAAK,EANgD,KAAAL,yBAAAA,EAC5C,KAAAJ,WAAAA,EACD,KAAAO,aAAAA,EACA,KAAAC,eAAAA,EACS,KAAAC,kBAAAA,EAnDX,KAAAC,SAAW,GAEnB,KAAAb,iBAAyCc,EAAG,CAAA,CAAE,EAC9C,KAAAhB,aAAe,IAAIiB,GAAyB,EAAK,EAEjD,KAAA9B,SAAW,GAOX,KAAAE,OAAS,GA8BT,KAAA6B,oBAA8BC,GAAkB,EAChD,KAAAC,cAAgB,UACR,KAAAC,aAAeC,GAAS,KAAKR,kBAAkBS,aAAa,EAUlE,KAAKV,eAAeW,cACjB5B,KACCQ,GAAkB,EAClBqB,GAAQC,GAA2BA,EAAExC,UAAY,KAAKA,OAAO,CAAC,EAE/DyC,UAAWC,GAAM,KAAKjF,MAAK,CAAE,EAEhC,KAAKkE,eAAegB,aACjBjC,KACCQ,GAAkB,EAClB0B,GAAKC,GAAQ,CACPA,EAAKC,aAAaC,KAAI,EAAGtE,QAAUoE,EAAK7C,UAAY,KAAKA,UAC3D,KAAKkC,cAAgB,YACrBc,WAAW,IAAK,CACd,KAAKd,cAAgB,UACrB,KAAKR,aAAauB,cAAa,CACjC,EAAG,IAAI,EACP,KAAK1E,QAAQ2E,SAASL,EAAKC,WAAW,EACtC,KAAKvE,QAAQ4E,YAAW,EACxB,KAAKzB,aAAauB,cAAa,EAEnC,CAAC,CAAC,EAEHR,UAAS,CACd,CAEAhF,OAAK,CACH,KAAKc,QAAQ6E,MAAK,EAClB,KAAK7E,QAAQ4E,YAAW,EACpB,KAAKhB,aAAY,GACnB,KAAKkB,UAAS,CAElB,CAEAC,iBAAe,CACb,KAAKxC,aAAayC,KAAK,EAAI,CAC7B,CAEA,IAAIC,UAAUC,EAAuB,CACnC,CAGF,IAAIC,iBAAe,CACjB,OAAO,KAAKnF,QAAQoF,KACtB,CAEA,IAAInF,OAAK,CACP,MAAO,CACLwB,QAAS,KAAKA,QACd8C,YAAa,KAAKvE,QAAQC,MAE9B,CAEA6E,WAAS,CACH,KAAK9E,QAAQqF,OACf,KAAKhC,kBAAkBiC,eAAe,KAAKC,WAAY,CACrD,CACE9D,QAAS,KAAKA,QACd8C,YAAa,KAAKjB,SACnB,CACF,CAEL,CAEQtB,iBAAe,CACrB,OAAQ,KAAKP,QAAO,CAClB,KAAK+D,EAAYC,mBACf,KAAK3D,SAAS4D,cAAc,KAAKC,mBAAmBC,KAAK,IAAI,CAAC,EAC9D,MACF,KAAKJ,EAAYK,mBACf,KAAK/D,SAAS4D,cAAc,KAAKI,mBAAmBF,KAAK,IAAI,CAAC,EAC9D,MACF,KAAKJ,EAAYO,oBACf,KAAKjE,SAAS4D,cAAc,KAAKM,sBAAsBJ,KAAK,IAAI,CAAC,EACjE,MACF,KAAKJ,EAAYS,iBACf,KAAKnE,SAAS4D,cAAc,KAAKQ,iBAAiBN,KAAK,IAAI,CAAC,EAC5D,MACF,KAAKJ,EAAYW,YACf,KAAKrE,SAAS4D,cAAc,KAAKU,YAAYR,KAAK,IAAI,CAAC,EACvD,MACF,KAAKJ,EAAYa,oBACf,KAAKvE,SAAS4D,cAAc,KAAKY,oBAAoBV,KAAK,IAAI,CAAC,EAC/D,KACJ,CACF,CAEQD,mBAAmB3F,EAAwB,CACjD,IAAMuG,EAAcvG,EAAQC,MACtBuG,EAAmBC,GAAqBF,CAAW,EACzD,OAAIC,IAAqB,GAChB,CACLE,sBAAuB,KAG3B,KAAKpD,SAAWkD,EACT,KACT,CAEQV,mBAAmB9F,EAAwB,CACjD,IAAM2G,EAAc3G,EAAQC,MACtB2G,EAAmBC,GAAqBF,CAAW,EACzD,OAAIC,IAAqB,GAChB,CACLF,sBAAuB,KAG3B,KAAKpD,SAAWsD,EACT,KACT,CAEQZ,sBAAsBhG,EAAwB,CACpD,IAAM8G,EAAe9G,EAAQC,MACvB8G,EAAoBC,GAAsBF,CAAY,EAC5D,OAAIC,IAAsB,GACjB,CACLL,sBAAuB,KAG3B,KAAKpD,SAAWyD,EACT,KACT,CAEQb,iBAAiBlG,EAAwB,CAC/C,IAAMiH,EAAYjH,EAAQC,MACpBiH,EAAiBC,GAAmBF,CAAS,EACnD,OAAIC,IAAmB,GACd,CACLR,sBAAuB,KAG3B,KAAKpD,SAAW4D,EACT,KACT,CAEQd,YAAYpG,EAAwB,CAC1C,IAAMoH,EAAOpH,EAAQC,MACfoH,EAAYC,GAAcF,CAAI,EACpC,OAAIC,IAAc,GACT,CACLX,sBAAuB,KAG3B,KAAKpD,SAAW+D,EACT,KACT,CAEQf,oBAAoBtG,EAAwB,CAClD,IAAMuH,EAAevH,EAAQC,MACvBuH,EAAoBC,GAAsBF,CAAY,EAC5D,OAAIC,IAAsB,GACjB,CACLd,sBAAuB,KAG3B,KAAKpD,SAAWkE,EACT,KACT,iDApNWpH,GAAuBsH,EAgDxBC,EAA0B,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,CAAA,CAAA,CAAA,+BAhDzB3H,EAAuB4H,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,GALvB,CAACC,GAAqBC,GAAiB,CAAE,CAAC,EAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,YAAA,UAAA,EAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,WAAA,GAAA,YAAA,OAAA,EAAA,gBAAA,QAAA,OAAA,cAAA,kBAAA,cAAA,KAAA,OAAA,cAAA,EAAA,CAAA,YAAA,GAAA,kBAAA,GAAA,aAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,GAAA,kBAAA,GAAA,aAAA,QAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WC5EvD/J,EAAA,EAAA,iBAAA,EAAiE,EAAA,YAAA,EAE7DQ,EAAA,CAAA,mBACAyJ,EAAA,EAAA,gBAAA,CAAA,EACFxJ,EAAA,EACAT,EAAA,EAAA,QAAA,EAAA,CAAA,mBAWEC,EAAA,gBAAA,SAAAS,EAAA,CAAAC,OAAAT,EAAAgK,CAAA,EAAA5J,EAAiBI,EAAAG,eAAA,CAAuB,CAAA,CAAA,EAAC,QAAA,UAAA,CAAAF,OAAAT,EAAAgK,CAAA,EAAA5J,EAChC0J,EAAA5D,gBAAA,CAAiB,CAAA,CAAA,EAAC,OAAA,UAAA,CAAAzF,OAAAT,EAAAgK,CAAA,EAAA5J,EACnB0J,EAAA7D,UAAA,CAAW,CAAA,CAAA,EAbrB1F,EAAA,EAeA0J,EAAA,EAAAC,IAAA,EAAA,EAAA,SAAA,CAAA,EAKApK,EAAA,EAAA,mBAAA,KAAA,CAAA,EACEqK,GAAA,GAAAC,IAAA,EAAA,EAAA,aAAA,EAAAC,EAAA,gBAGF9J,EAAA,EACA0J,EAAA,GAAAK,IAAA,EAAA,EAAA,YAAA,EAAqC,GAAAC,IAAA,EAAA,EAAA,YAAA,EAOvChK,EAAA,mEAnCIO,EAAA,CAAA,EAAAC,EAAA,IAAAO,EAAA,EAAA,GAAAwI,EAAAhH,KAAA,EAAA,GAAA,EACehC,EAAA,CAAA,EAAAF,EAAA,UAAAkJ,EAAAlH,OAAA,EASf9B,EAAA,EAAA0J,GAAA,KAAAV,EAAAlF,mBAAA,EACA4F,GAAA,OAAAV,EAAAlF,mBAAA,EACA4F,GAAA,eAAAV,EAAAlF,mBAAA,EAPAhE,EAAA,cAAAkJ,EAAA3I,OAAA,EAAuB,kBAAAsJ,CAAA,EACC,cAAAzJ,GAAA,EAAA,GAAA,oCAAAC,GAAA,GAAAyJ,IAAAZ,EAAAhH,OAAA,KAAA,KAAAgH,EAAAhH,MAAA6H,YAAA,CAAA,CAAA,CAAA,EAC4E,YAAAb,EAAAhF,aAAA,EAWtGhE,EAAA,CAAA,EAAA8J,EAAAd,EAAA3I,QAAAC,MAAA,EAAA,EAAA,EAMEN,EAAA,CAAA,EAAA+J,GAAAvJ,EAAA,GAAA,GAAAwI,EAAAlG,gBAAA,CAAA,EAIF9C,EAAA,CAAA,EAAA8J,GAAAd,EAAA3I,QAAAC,OAAA,KAAA,KAAA0I,EAAA3I,QAAAC,MAAAC,UAAA,IAAA,GAAA,EAAA,EAIEP,EAAA,EAAA8J,EAAAd,EAAA7G,SAAA6H,SAAA,uBAAA,EAAA,GAAA,EAAA,kBDgCAC,EAAYC,GACZC,GAAcC,GAAAC,GACdC,GAAmBC,GAAAC,GAAAC,GAAAC,GACnBC,EAAeC,EACfC,GAAqBC,GAAAC,GAAAC,GACrBC,GAAqBC,GAAAC,GAAAC,GACrBC,GACAC,GACAC,EAAa,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,EAAA9G,KAAA,CAAA+G,UAKH,CAACC,EAAQ,CAAC,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAEXnL,CAAwB,GAAA,+BGxE/BoL,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,0BAFmEC,EAAA,QAAAC,EAAAC,EAAA,EACjEC,EAAA,EAAAC,EAAA,IAAAH,EAAAI,KAAA,GAAA,2BAGJR,EAAA,EAAA,YAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEI,EAAA,EAAAC,EAAA,IAAAE,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,uCAbJT,EAAA,EAAA,kBAAA,CAAA,EAA4C,EAAA,YAAA,EAC9BC,EAAA,CAAA,mBAAoDC,EAAA,EAChEF,EAAA,EAAA,aAAA,CAAA,mBAEEU,EAAA,OAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAQF,EAAAG,UAAA,CAAW,CAAA,CAAA,EAInBC,EAAA,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,EAGFhB,EAAA,EACAe,EAAA,EAAAE,IAAA,EAAA,EAAA,aAAA,CAAA,EAGFjB,EAAA,oBAfiBC,EAAA,oBAAA,EAAA,EACHG,EAAA,CAAA,EAAAc,EAAAX,EAAA,EAAA,EAAA,kCAAA,CAAA,EAEVH,EAAA,CAAA,EAAAH,EAAA,cAAAU,EAAAQ,OAAA,EAAuB,cAAAZ,EAAA,EAAA,EAAA,kCAAA,CAAA,EAEuC,YAAAI,EAAAS,cAAA,CAAA,EAGvBhB,EAAA,CAAA,EAAAH,EAAA,UAAAU,EAAAU,sBAAA,CAAA,EAI5BjB,EAAA,EAAAH,EAAA,OAAA,CAAAU,EAAAQ,QAAAG,YAAAX,EAAAQ,SAAA,KAAA,KAAAR,EAAAQ,QAAAI,SAAA,UAAA,EAAA,0BAKfC,EAAA,EAAA,MAAA,CAAA,EDlBF,IAoBaC,GApBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,IAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,+CAQad,IAAuB,IAAA,CAA9B,MAAOA,UAA+Be,EAAkB,CAW5D,IAAIC,QAAQA,EAAe,CACzB,KAAKC,SAAWD,CAClB,CACA,IAAIA,SAAO,CACT,OAAO,KAAKC,QACd,CAUA,IAAIvB,QAAQA,EAA4B,CACtC,KAAKwB,SAAWxB,EAEhB,KAAKwB,SAASC,aAAaC,KAAKC,GAAmB,KAAKC,UAAU,CAAC,EAAEC,UAAWC,GAAO,CACrF,KAAKC,cAAcC,IAAIF,CAAG,CAC5B,CAAC,CACH,CACA,IAAI9B,SAAO,CACT,OAAO,KAAKwB,QACd,CAGA,IAAIS,MAAMA,EAAa,CACrB,KAAKC,OAASD,CAChB,CACA,IAAIA,OAAK,CACP,OAAO,KAAKC,MACd,CAuCAC,aAAA,CACE,MAAK,EAlFU,KAAAC,gBAAkBC,EAAOC,EAAkB,EAC3C,KAAAC,eAAiBF,EAAOG,EAAc,EACtC,KAAAC,aAAeJ,EAAOK,EAAe,EACrC,KAAAC,iBAAmBN,EAAOO,EAAgB,EAC1C,KAAAC,aAAeR,EAAOS,EAAiB,EACvC,KAAAlB,WAAaS,EAAOU,EAAU,EAC9B,KAAAC,kBAAoBX,EAAOY,EAAiB,EACpD,KAAAC,WAAyB,cAElC,KAAA3B,SAAW,GAOQ,KAAAQ,cAAgBoB,EAAO,EAAE,EAC3B,KAAAC,kBAAoBC,EAAS,IAAK,CACjD,IAAMC,EAAa,KAAKvB,cAAa,EAErC,OADoB,KAAK7B,sBAAqB,EAAGqD,KAAMC,GAAUA,EAAMxE,KAAOsE,CAAU,GACpEG,WAAa,CAAA,CACnC,CAAC,EACD,KAAAjC,SAAgC,IAAIkC,GAAY,GAAI,CAClDC,YAAa,GACd,EAYD,KAAAzB,OAAS,GAQT,KAAAjC,cAAgBkD,EAAe,SAAS,EACvB,KAAAS,UAAYC,GAAa,KAAKC,QAAQ,EACtC,KAAAC,kBAAoBZ,EAAO,EAAE,EAC7B,KAAAa,wBAA0BC,GACzC,KAAK7B,gBAAgB8B,eAAe,KAAKhB,UAAU,EAAExB,KACnDyC,EAAKC,GAAa,CAChB,IAAMC,EAAc,IAAIC,IACxBF,OAAAA,EAAUG,QAASC,GAAY,CAC7BH,EAAYrC,IAAIwC,EAASxF,GAAIwF,EAASC,MAAM,CAC9C,CAAC,EACMJ,CACT,CAAC,CAAC,CACH,EAEgB,KAAAnE,sBAAwBmD,EAAS,IAAK,CACvD,IAAMqB,EAAa,KAAKV,wBAAuB,EACzCW,EAAmB,KAAKZ,kBAAiB,EAC/C,OAAOW,GAAYE,IAAID,CAAgB,GAAK,CAAA,CAC9C,CAAC,EACgB,KAAAE,eAAiBZ,GAChC,KAAKL,UAAUlC,KACboD,EAAWhB,GAAa,KAAKnB,iBAAiBoC,eAAe,KAAK7B,WAAY,CAACY,CAAQ,CAAC,CAAC,EACzFK,EAAKa,GAAUA,EAAKC,YAAcD,EAAKC,WAAWC,OAAS,EAAIF,EAAKC,WAAW,CAAC,EAAI,CAAA,CAAG,CAAC,CACzF,EAEgB,KAAAE,cAAgB9B,EAAS,IAAK,CAC/C,IAAMwB,EAAiB,KAAKA,eAAc,EAC1C,OAAIA,GACiB,KAAKpC,aAAa2C,2BACnCP,EACAQ,EAAYC,4BAA4B,GAEvBC,aAAe,EAGtC,CAAC,EAICC,GAAO,IAAK,CACV,IAAML,EAAgB,KAAKA,cAAa,EACpCA,GACF,KAAK3D,SAASiE,SAASN,EAAe,CAAEO,UAAW,EAAK,CAAE,CAE9D,CAAC,EAED,KAAKnD,eAAeoD,aAAajE,KAAKC,GAAkB,CAAE,EAAEE,UAAW+D,GAAgB,CAErF,GACEA,GAActE,UAAY+D,EAAYQ,uBACtCD,GAAcL,cAAgB,KAAKxB,kBAAiB,EACpD,CACA,KAAKA,kBAAkB/B,IAAI4D,GAAcL,aAAe,EAAE,EAE1D,IAAMO,EADY,KAAK9B,wBAAuB,GACfY,IAAIgB,GAAcL,aAAe,EAAE,GAAK,CAAA,EACvE,KAAKvF,QAAQyF,SAASK,EAAYZ,OAAS,EAAIY,EAAY,CAAC,EAAE9G,GAAK,EAAE,EACrE,KAAKgB,QAAQ+F,YAAW,EACxB,KAAKC,eAAc,CACrB,CACF,CAAC,CACH,CAEA,IAAIC,UAAUC,EAAuB,CACnC,KAAKnC,kBAAkB/B,IAAIkE,GAAOC,MAAMd,EAAYQ,qBAAqB,GAAK,EAAE,CAClF,CAEA,IAAIO,iBAAe,CACjB,OAAO,KAAKpG,QAAQqG,KACtB,CAEA,IAAIF,OAAK,CAEP,IAAMG,EADiB,KAAKlD,kBAAiB,EACVG,KAAMC,GAAUA,EAAMlC,UAAY+D,EAAYkB,sBAAsB,EACvG,MAAO,CACLjF,QAAS,KAAKA,QACdkF,WAAYF,GAAaE,WAE7B,CAEA7G,WAAS,CACP,IAAM8G,EAAU,KAAK1E,cAAa,EAC5B2E,EAAiB,KAAKtD,kBAAiB,EAC7C,GAAIsD,GAAgBxB,OAAS,EAAG,CAC9B,QAAWyB,KAAYD,EACrB,KAAKnE,eAAeqE,iBAAiBD,CAAQ,EAE/C,KAAKpE,eAAesE,kBAAkB,KAAKvF,QAASmF,CAAO,EAC3D,KAAKzD,kBAAkB8D,eAAe,KAAK5D,WAAYwD,CAAc,CACvE,CACF,CAEQV,gBAAc,CACpB,KAAK/F,cAAc+B,IAAI,WAAW,EAClC+E,WAAW,IAAK,CACd,KAAK9G,cAAc+B,IAAI,SAAS,EAChC,KAAKa,aAAamE,cAAa,CACjC,EAAG,IAAI,CACT,iDA9IW1G,EAAsB,CAAA,+BAAtBA,EAAsB2G,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,cAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GCpBnC5H,EAAA,EAAA8H,IAAA,EAAA,GAAA,kBAAA,CAAA,EAA+B,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,OAA/BC,EAAAH,EAAAvH,sBAAA,EAAA,EAAA,CAAA,iBDiBY2H,EAAYC,GAAAC,GAAEC,GAAeC,GAAAC,GAAEC,GAAqBC,GAAAC,GAAAC,GAAEC,EAAeC,EAAaC,GAAmBC,GAAAC,EAAA,EAAAC,OAAA,CAAA;oGAAA,EAAAC,KAAA,CAAAC,UACnG,CAACC,EAAQ,CAAC,CAAA,CAAA,CAAA,SAEXzI,CAAuB,GAAA,IEpBpC,IAuCa0I,GAvCbC,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAGAC,KACAC,KACAC,KACAC,KACAC,KACAC,KASAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,cAGa5B,IAAuB,IAAA,CAA9B,MAAOA,CAAuB,CAClC6B,YAC8CC,EAC3BC,EAAyC,CADd,KAAAD,OAAAA,EAC3B,KAAAC,iBAAAA,EAGnB,KAAAC,oBAAyC,CACvC,CACEC,QAASC,EAAYC,YACrBC,UAAWC,IAEb,CACEJ,QAASC,EAAYI,sBACrBF,UAAWG,IAEb,CACEN,QAASC,EAAYM,gBACrBJ,UAAWK,IAEb,CACER,QAASC,EAAYQ,uBACrBN,UAAWO,IAEb,CACEV,QAASC,EAAYU,mCACrBR,UAAWS,IAEb,CACEZ,QAASC,EAAYY,mCACrBV,UAAWW,IAEb,CACEd,QAASC,EAAYc,sCACrBZ,UAAWa,IAEb,CACEhB,QAASC,EAAYgB,mCACrBd,UAAWS,IAEb,CACEZ,QAASC,EAAYiB,wBACrBf,UAAWW,IAEb,CACEd,QAASC,EAAYkB,2BACrBhB,UAAWa,IAEb,CACEhB,QAASC,EAAYmB,wBACrBjB,UAAWS,IAEb,CACEZ,QAASC,EAAYoB,mBACrBlB,UAAWmB,IAEb,CACEtB,QAASC,EAAYsB,mBACrBpB,UAAWmB,IAEb,CACEtB,QAASC,EAAYuB,oBACrBrB,UAAWmB,IAEb,CACEtB,QAASC,EAAYwB,iBACrBtB,UAAWmB,IAEb,CACEtB,QAASC,EAAYyB,YACrBvB,UAAWmB,IAEb,CACEtB,QAASC,EAAY0B,oBACrBxB,UAAWmB,IAEb,CACEtB,QAASC,EAAY2B,kBACrBzB,UAAWS,GACZ,CA1EA,CA6EHiB,cACEC,EACA9B,EACA+B,EACAC,EACAC,EACAC,EAAW,GACXC,EACAC,EAAY,GACZC,EAAiB,CAEjB,IAAMC,EAAQL,EAAYF,EAAYQ,UAAY,GAC5CC,EAAiC,CAAA,EACjCC,EAAqB,KAAK5C,OAAOiC,EAAWY,YAAW,CAAE,EAC3DD,GAAoBE,kBACtBH,EAAYI,KAAK,GAAGH,EAAmBE,gBAAgB,EAEzDH,EAAYI,KAAK,GAAG,KAAK7C,mBAAmB,EAE5C,IAAM8C,EAAaL,GAAaM,KAAMC,IAAMA,GAAE/C,UAAYA,CAAO,EACjE,GAAI6C,EACF,OAAO,IAAIG,GACTH,EACAf,EACA9B,EACAsC,EACAN,EACAE,EACAC,EACAC,EACAC,CAAQ,EAIZ,GAAIrC,IAAYC,EAAYgD,uBAAyBjD,IAAYC,EAAYiD,sBAC3E,OAAO,IAAIC,GACTrB,EACA9B,EACA+B,EAAYQ,UACZD,EACAN,EACAD,EAAYqB,iBACZlB,CAAQ,EAIZ,GAAIlC,IAAYC,EAAYoD,uCAC1B,OAAO,IAAIC,GACTxB,EACA9B,EACA+B,EAAYQ,UACZD,EACAN,EACAD,EAAYqB,iBACZ,EAAI,EAIR,OAAQrB,EAAYwB,UAAS,CAC3B,KAAKC,GAAUC,iBACb,OAAO,IAAIC,GACT5B,EACA9B,EACA+B,EAAYQ,UACZD,EACAN,EACAD,EAAYqB,iBACZlB,CAAQ,EAEZ,KAAKsB,GAAUG,kBACb,OAAO,IAAIC,GACT9B,EACA9B,EACA+B,EAAYQ,UACZD,EACAN,EACAD,EAAYqB,iBACZlB,CAAQ,EAEZ,KAAKsB,GAAUK,mBACb,OAAO,IAAIC,GACThC,EACA9B,EACA+B,EAAYQ,UACZD,EACAN,EACAD,EAAYqB,iBACZlB,CAAQ,EAEZ,KAAKsB,GAAUO,iBACb,OAAO,IAAIC,GACTlC,EACA9B,EACA+B,EAAYQ,UACZD,EACAN,EACAD,EAAYqB,iBACZlB,CAAQ,EAEZ,KAAKsB,GAAUS,gBACb,OAAO,IAAIC,GACTpC,EACA9B,EACA+B,EAAYQ,UACZD,EACAN,EACAD,EAAYqB,iBACZlB,CAAQ,EAEZ,KAAKsB,GAAUW,oBACb,OAAO,IAAIC,GACTtC,EACA9B,EACA+B,EAAYQ,UACZD,EACAN,EACAD,EAAYqB,iBACZlB,CAAQ,EAEZ,KAAKsB,GAAUa,mBACb,OAAO,IAAIC,GACTxC,EACA9B,EACA+B,EAAYQ,UACZD,EACAN,EACAD,EAAYqB,iBACZlB,CAAQ,EAEZ,KAAKsB,GAAUe,iBACb,OAAO,IAAIC,GACT1C,EACA9B,EACA+B,EAAYQ,UACZD,EACAN,EACAD,EAAYqB,iBACZlB,CAAQ,EAEZ,KAAKsB,GAAUiB,eACb,OAAO,IAAIC,GACT5C,EACA9B,EACA+B,EAAYQ,UACZD,EACAN,EACAD,EAAYqB,iBACZlB,EACA,GACA,IACA,mCACA,mCAAmC,EAEvC,KAAKsB,GAAUmB,uBACb,OAAO,IAAID,GACT5C,EACA9B,EACA+B,EAAYQ,UACZD,EACAN,EACAD,EAAYqB,iBACZlB,EACA,GACA,IACA,+CACA,EAAE,EAEN,KAAKsB,GAAUoB,oBACb,OAAO,IAAIC,GACT/C,EACA9B,EACA+B,EAAYQ,UACZD,EACAN,EACAD,EAAYqB,iBACZlB,CAAQ,EAEZ,QACE4C,eAAQC,KACN,+CAA+ChD,EAAY/B,OAAO,cAAc+B,EAAYwB,SAAS,EAAE,EAElG,IACX,CACF,CAEAyB,qBAAqBC,EAAiCC,EAAiD,CACrG,IAAMC,EAASD,EAAeE,IAAIH,EAAMjF,OAAO,EACzCqF,EAAa,IAAIC,GACjBC,EAAoB,CAACC,GAAeC,kBAAmBD,GAAeE,iBAAiB,EAC7F,OAAQP,GAAQ5B,UAAS,CACvB,KAAKC,GAAUG,kBACT4B,EAAkBI,SAASV,EAAMjF,OAAO,IAC1CqF,EAAWO,mBAAmB,KAAK9F,iBAAiB+F,qCAAqCZ,EAAMjF,OAAO,CAAC,EACvGiF,EAAMa,cAAcT,CAAU,GAEhC,OACF,KAAK7B,GAAUe,iBACbc,EAAWO,mBAAmBG,EAAyB,EACvDV,EAAWO,mBAAmB,KAAK9F,iBAAiB+F,qCAAqCZ,EAAMjF,OAAO,CAAC,EACvGiF,EAAMa,cAAcT,CAAU,EAC9B,OACF,KAAK7B,GAAUC,iBACb4B,EAAWO,mBAAmB,KAAK9F,iBAAiB+F,qCAAqCZ,EAAMjF,OAAO,CAAC,EACvGqF,EAAWO,mBAAmBI,GAAyBb,GAAW,CAAA,CAA2B,CAAC,EAC9FF,EAAMa,cAAcT,CAAU,EAC9B,OACF,QACE,MACJ,CACF,iDAlSWtH,GAAuBkI,EAExBC,EAAiB,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,kCAFhBpI,EAAuBqI,QAAvBrI,EAAuBsI,SAAA,CAAA,CAAA,SAAvBtI,CAAuB,GAAA,ICvCpC,IAuBMuI,GASOC,GAhCbC,GAAAC,EAAA,KAAAC,IACAC,KAOAC,4CAeMN,GAAoB,IASbC,IAA+B,IAAA,CAAtC,MAAOA,CAA+B,CAyB1CM,YACgDC,EACpCC,EACAC,EACSC,EACAC,EACAC,EACAC,EACAC,EAA0D,CAP/B,KAAAP,OAAAA,EACpC,KAAAC,aAAAA,EACA,KAAAC,iBAAAA,EACS,KAAAC,iBAAAA,EACA,KAAAC,kBAAAA,EACA,KAAAC,gBAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,6BAAAA,EA/BZ,KAAAC,iBAAmB,GAEnB,KAAAC,YAAoC,CAAA,EAEpC,KAAAC,iBAAmB,GACnB,KAAAC,iBAAmB,GAInB,KAAAC,SAAW,GACX,KAAAC,WAAa,GACb,KAAAC,UAAY,GAEX,KAAAC,WAAa,IAAIC,GACjB,KAAAC,WAAa,IAAID,GAE3B,KAAAE,UAAY,IAAIC,GAAiB,CAAA,CAAE,EAEnC,KAAAC,eAA6C,CAAA,EAC7C,KAAAC,iBAA+C,CAAA,EAC/C,KAAAC,sBAAyD,CAAA,EACzD,KAAAC,8BAAiE,CAAA,CAW9D,CAEHC,YAAYC,EAAsB,EAC5BA,EAAQ,aAAkBA,EAAQ,WACpC,KAAKC,WAAW,KAAKjB,aAAakB,cAAgB,CAAA,EAAI,KAAKlB,aAAamB,aAAe,CAAA,CAAE,EAEvFH,EAAQ,mBACV,KAAKrB,kBAAkByB,YAAY,KAAKrB,gBAAgB,EACxD,KAAKF,aAAauB,YAAY,KAAKrB,gBAAgB,GAEjDiB,EAAQ,YACV,KAAKrB,kBAAkB0B,cAAc,KAAKjB,UAAU,CAExD,CAEAkB,aAAW,CAET,KAAKX,eAAiB,CAAA,EACtB,KAAKC,iBAAmB,CAAA,EACxB,KAAKC,sBAAwB,CAAA,EAC7B,KAAKC,8BAAgC,CAAA,CACvC,CAEQS,gBAAgBL,EAAoC,CAC1D,KAAKxB,iBAAiBuB,WACpB,KAAKO,WACL,KAAKzB,iBACL,KAAKa,iBACL,KAAKH,UAAUgB,YAAY,EAE7B,IAAMC,EAAiB,IAAIC,IAC3B,QAAWC,KAAUV,EACnBQ,EAAeG,IAAID,EAAOE,QAASF,CAAM,EAE3C,QAAWG,KAAS,KAAKnB,iBACvB,KAAKnB,iBAAiBuC,qBAAqBD,EAAOL,CAAc,CAEpE,CAEUT,WAAWC,EAAsCC,EAAkC,CACvFD,EAAae,SAAW,GAAKd,EAAYc,SAAW,IAKxD,KAAKpB,sBAAwB,CAAA,EAC7B,KAAKD,iBAAmB,CAAA,EACxB,KAAKD,eAAiB,CAAA,EACtBQ,EAAYe,QAASC,GAAS,CAC5B,IAAMC,EAAsD,CAC1DC,YAAaF,EAAME,YACnBC,OAAQ,CAAA,EACRC,mBAAoB,GAGhBC,EAA8D,CAClEH,YAAaF,EAAME,YACnBC,OAAQ,CAAA,EACRC,mBAAoB,GAuCtB,GArCAJ,EAAMM,SAASP,QAASJ,GAAW,CACjC,IAAMY,EAAcxB,EAAayB,KAAMD,GAAgBA,EAAYZ,UAAYA,CAAO,EACtF,GAAIY,IAAgBE,OAAW,CAC7BC,QAAQC,KAAK,oCAAoChB,CAAO,8BAA8BK,EAAME,WAAW,EAAE,EACzG,MACF,CACA,IAAMU,EAAkB,KAAKtD,iBAAiBuD,cAC5C,KAAKxB,WACLkB,EAAYZ,QACZY,EACAA,EAAYO,MACZ,GACA,KAAK9C,UAAYuC,EAAYvC,SAC7B,KAAKM,UACL,KAAKJ,UACL,KAAKN,gBAAgB,EAEnBgD,IAAoB,OACtB,KAAKtC,UAAUyC,WAAWH,EAAgBjB,QAASiB,EAAgBI,WAAW,EAC1ET,EAAYU,iBACdL,EAAgBI,YAAYE,YAAW,EAErCX,EAAYvC,UACd,KAAKQ,eAAe2C,KAAKP,CAAe,EAEtC,KAAKnD,gBAAgB2D,0BAA0BR,EAAgBjB,OAAO,GACtEiB,EAAgBE,QAAU,MAE1BT,EAA6BF,OAAOgB,KAAKP,CAAe,IAG1D,KAAKnC,iBAAiB0C,KAAKP,CAAe,EAC1CX,EAAqBE,OAAOgB,KAAKP,CAAe,GAGtD,CAAC,EAEGX,EAAqBE,OAAOL,SAAW,EAAG,CAC5CY,QAAQC,KAAK,uDAAuDX,EAAME,WAAW,EAAE,EACvF,MACF,CACIG,EAA6BF,OAAOL,OAAS,GAC/C,KAAKnB,8BAA8BwC,KAAKd,CAA4B,EAEtEJ,EAAqBG,mBAAqBH,EAAqBE,OAAOkB,OACpE,CAACC,EAAK1B,IAAU0B,GAAO1B,EAAM5B,SAAW,EAAI,GAC5C,CAAC,EAEH,KAAKU,sBAAsByC,KAAKlB,CAAoB,CACtD,CAAC,EACD,KAAKb,gBAAgBL,CAAY,EACnC,CAEUwC,UAAQ,CAChB,GAAI,KAAKjD,UAAUkD,SAAU,CAC3B,KAAKnE,aAAaoE,eAAe,uCAAwC,CACvEC,SAAU9E,GACX,EACD,MACF,CACA,GAAI,KAAK0B,UAAUqD,QAAS,CAC1B,KAAKrD,UAAUsD,iBAAgB,EAC/B,IAAMC,EAAe,KAAKjE,iBAAmB,iCAAmC,iCAC1EkE,EAAuB,KAAKnE,6BAA6BoE,wBAAwB,KAAK1C,UAAU,EACtG,KAAKhC,aAAaoE,eAAeI,EAAc,CAC7CH,SAAU9E,GACVoF,2BAA4B,CAAE3C,WAAYyC,EAAqBG,YAAW,CAAE,EAC7E,EACD,MACF,CACA,KAAK9D,WAAW+D,KAAK,CAAC,GAAG,KAAKzD,iBAAkB,GAAG,KAAKD,cAAc,CAAC,CACzE,CAEA2D,UAAQ,CACN,KAAK9D,WAAW6D,KAAI,CACtB,iDAzKWrF,GAA+BuF,EA0BhCC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,CAAA,CAAA,CAAA,+BA1BhB/F,EAA+BgG,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,OAAA,CAAAzD,WAAA,aAAAzB,iBAAA,mBAAAC,YAAA,cAAAC,iBAAA,mBAAAC,iBAAA,mBAAAgF,cAAA,gBAAAC,aAAA,eAAAhF,SAAA,WAAAC,WAAA,aAAAC,UAAA,WAAA,EAAA+E,QAAA,CAAA9E,WAAA,aAAAE,WAAA,YAAA,EAAA6E,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAJxCE,GAAA,CAAA,6BAIS5G,CAA+B,GAAA,4BCrBxC6G,EAAA,CAAA,EACEC,GAAA,CAAA,+BAGAD,EAAA,CAAA,EACEE,EAAA,EAAA,sBAAA,+BAGFC,EAAA,EAAA,kBAAA,EAAgE,EAAA,uBAAA,EACvC,EAAA,UAAA,EACXC,EAAA,EAAA,gBAAA,EAAcC,EAAA,EAAW,EAErCF,EAAA,EAAA,wBAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,EACAF,EAAA,EAAA,GAAA,EAAGC,EAAA,CAAA,mBAA+DC,EAAA,EAClEH,EAAA,GAAA,0BAAA,EACFG,EAAA,SAJIC,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,8CAAA,EAAA,GAAA,EAECF,EAAA,CAAA,EAAAG,EAAAD,EAAA,EAAA,EAAA,6CAAA,CAAA,6BAXLE,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EAA8D,EAAAC,IAAA,GAAA,EAAA,mBAAA,CAAA,iBAA/CC,EAAA,OAAAC,EAAAC,gBAAAD,EAAAE,cAAAC,OAAA,EAIIX,EAAA,EAAAO,EAAA,OAAAC,EAAAC,gBAAAD,EAAAE,cAAAE,KAAA,GAnBzB,YAkCaC,GAlCbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,IACAC,KACAC,KACAC,qGA4BaR,IAAgC,IAAA,CAAvC,MAAOA,CAAgC,CA1B7CS,aAAA,CA4BE,KAAAZ,cAAgBA,mDAFLG,EAAgC,CAAA,+BAAhCA,EAAgCU,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,OAAA,CAAAf,cAAA,eAAA,EAAAgB,mBAAAC,IAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,eAAA,EAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,YAvBzC3B,EAAA,EAAA6B,IAAA,EAAA,EAAA,eAAA,CAAA,EAA4E,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,mBAA7D5B,EAAA,OAAAyB,EAAAvB,gBAAAuB,EAAAtB,cAAA0B,EAAA,EAA0C,WAAAC,CAAA,kBAqBjDC,EAAYC,GAAEC,EAAeC,EAAEC,GAAsBC,GAAAC,GAAAC,GAAAC,GAAEC,GAAaC,GAAEC,GAA0BC,EAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAE/FtC,CAAgC,GAAA,IClC7C,IAAAuC,GAAAC,GAAAC,IAAA,cASA,OAAO,eAAeA,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,WAAaC,GACrBD,GAAQ,UAAYE,IACpBF,GAAQ,SAAWG,GACnBH,GAAQ,SAAWI,IACnBJ,GAAQ,WAAaK,IACrBL,GAAQ,WAAaM,GACrBN,GAAQ,YAAcO,IACtB,IAAMC,IAA0B,QAC1BC,IAA2B,oBAC3BC,IAAyB,oBACzBC,IAA6B,qBAC7BC,IAA6B,SAenC,SAASX,GAAWY,EAAK,CACvB,OAAOA,EAAI,QAAQJ,IAA0B,OAAO,EAAE,YAAY,CACpE,CAeA,SAASP,IAAUW,EAAK,CACtB,OAAOZ,GAAWY,CAAG,EAAE,QAAQL,IAAyB,GAAG,CAC7D,CAgBA,SAASL,GAASU,EAAK,CACrB,OAAOA,EAAI,QAAQH,IAAwB,CAACI,EAAQC,EAAYC,IACvDA,EAAMA,EAAI,YAAY,EAAI,EAClC,EAAE,QAAQ,WAAYC,GAASA,EAAM,YAAY,CAAC,CACrD,CAgBA,SAASb,IAASS,EAAK,CACrB,OAAOA,EAAI,MAAM,GAAG,EAAE,IAAIK,GAAQZ,GAAWH,GAASe,CAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CACvE,CAgBA,SAASb,IAAWQ,EAAK,CACvB,OAAOA,EAAI,QAAQF,IAA4B,OAAO,EAAE,QAAQC,IAA4B,GAAG,EAAE,YAAY,CAC/G,CAeA,SAASN,GAAWO,EAAK,CACvB,OAAOA,EAAI,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAI,MAAM,CAAC,CAClD,CAYA,SAASN,IAAYY,EAAGC,EAAG,CACzB,GAAID,EAAE,QAAU,EACd,OAAOC,EAAE,OAEX,GAAIA,EAAE,QAAU,EACd,OAAOD,EAAE,OAEX,IAAME,EAAS,CAAC,EAEhB,QAASC,EAAI,EAAGA,GAAKF,EAAE,OAAQE,IAC7BD,EAAOC,CAAC,EAAI,CAACA,CAAC,EAGhB,QAASC,EAAI,EAAGA,GAAKJ,EAAE,OAAQI,IAC7BF,EAAO,CAAC,EAAEE,CAAC,EAAIA,EAGjB,QAASD,EAAI,EAAGA,GAAKF,EAAE,OAAQE,IAC7B,QAASC,EAAI,EAAGA,GAAKJ,EAAE,OAAQI,IACzBH,EAAE,OAAOE,EAAI,CAAC,GAAKH,EAAE,OAAOI,EAAI,CAAC,EACnCF,EAAOC,CAAC,EAAEC,CAAC,EAAIF,EAAOC,EAAI,CAAC,EAAEC,EAAI,CAAC,EAElCF,EAAOC,CAAC,EAAEC,CAAC,EAAI,KAAK,IAAIF,EAAOC,EAAI,CAAC,EAAEC,EAAI,CAAC,EAAI,EAE/CF,EAAOC,CAAC,EAAEC,EAAI,CAAC,EAAI,EAEnBF,EAAOC,EAAI,CAAC,EAAEC,CAAC,EAAI,CAAC,EAI1B,OAAOF,EAAOD,EAAE,MAAM,EAAED,EAAE,MAAM,CAClC,4BCtKIK,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,CAAA,EACEC,GAAA,CAAA,EACFC,EAAA,OAVN,IAAAC,OAeaC,GAfbC,GAAAC,EAAA,KAAAH,GAA0B,SAE1BI,sBAaaH,IAAwB,IAAA,CAA/B,MAAOA,CAAwB,CAXrCI,aAAA,CAYW,KAAAC,MAAQ,GACR,KAAAC,OAAS,GACI,KAAAC,MAAQ,oBAEvB,KAAAC,GAAK,GAEZC,UAAQ,CACN,KAAKD,MAAKE,cAAU,KAAKL,KAAK,CAChC,iDATWL,EAAwB,CAAA,+BAAxBA,EAAwBW,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAxBE,GAAAD,EAAAR,KAAA,sKARTU,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,QAAeC,EAAA,OAAAJ,EAAAT,MAAA,iBAMPc,EAAYC,EAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAEXtB,CAAwB,GAAA,wCEZnCuB,EAAA,CAAA,EACEC,EAAA,EAAA,KAAA,EAAA,CAAA,EAGEC,EAAA,QAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,EAAAC,EAAA,CAAA,EAAAC,EAAAC,EAAA,CAAA,EAASH,OAAAA,EAAAI,UAAAR,EAAAM,CAAA,EAA4BG,EAAEL,EAAAM,eAAAV,EAAAW,EAAA,CAAsB,CAAA,CAAA,EAAC,gBAAA,SAAAC,EAAA,CAAAC,OAAAZ,EAAAC,CAAA,EAAAK,EAAA,CAAA,EAE7CO,MAAA,EAAkBL,EAAEG,EAAAG,eAAA,CAAuB,CAAA,CAAA,EAAC,gBAAA,SAAAH,EAAA,CAAAC,OAAAZ,EAAAC,CAAA,EAAAK,EAAA,CAAA,EAC5CO,MAAA,EAAkBL,EAAEG,EAAAG,eAAA,CAAuB,CAAA,CAAA,EAG5DjB,EAAA,EAAA,MAAA,EAAMkB,EAAA,CAAA,EAAeC,EAAA,EAAO,gCAL5BC,EAAA,EAAAC,GAAA,SAAAnB,EAAAoB,MAAA,EAKMF,EAAA,CAAA,EAAAG,EAAArB,EAAAsB,KAAA,8BAXZxB,EAAA,EAAA,KAAA,CAAA,EACEyB,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EAaFP,EAAA,kBAbgCC,EAAA,EAAAO,EAAA,UAAArB,EAAAsB,IAAA,uCAiB1B5B,EAAA,EAAA,aAAA,EAAA,EAA6BC,EAAA,QAAA,UAAA,CAAA,IAAA4B,EAAA1B,EAAA2B,CAAA,EAAAzB,UAAAC,EAAAC,EAAA,CAAA,EAAAC,EAAAC,EAAA,CAAA,EAASH,OAAAA,EAAAI,UAAAmB,EAAArB,CAAA,EAA4BG,EAAEL,EAAAM,eAAAiB,EAAAhB,EAAA,CAAsB,CAAA,CAAA,EACxFK,EAAA,CAAA,EACFC,EAAA,4BAFYQ,EAAA,QAAAE,EAAAhB,EAAA,EACVO,EAAA,EAAAW,EAAA,IAAAF,EAAAL,MAAA,GAAA,8BAHNxB,EAAA,EAAA,aAAA,EAAA,EACEgC,GAAA,EAAAC,IAAA,EAAA,EAAA,aAAA,GAAAC,EAAA,EAKFf,EAAA,kBAN6BQ,EAAA,QAAArB,EAAA6B,iBAAA,EAC3Bf,EAAA,EAAAgB,GAAA9B,EAAAsB,IAAA,GDnBJ,QA4BaS,GA5BbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,IAYAC,KACAC,KACAC,KACAC,KAEAC,KACAC,gDAQaX,IAAuB,IAAA,CAA9B,MAAOA,CAAuB,CAgBlCY,YAAoBC,EAA8B,CAA9B,KAAAA,WAAAA,EAfE,KAAAC,MAAQ,mBAErB,KAAAC,eAAiB,GAIhB,KAAAC,WAAmC,IAAIC,GAExC,KAAAC,aAAe,GAEP,KAAAC,SAAWC,EAAOC,EAAQ,EACnC,KAAAC,eAAiBF,EAAOG,EAAc,EAC9C,KAAAC,SAAW,GACX,KAAA1B,kBAAoB,EAEiC,CAErD2B,UAAQ,CACN,KAAKZ,WAAWa,QAAQ,CAACC,GAAYC,OAAO,CAAC,EAAEC,UAAWC,GAAU,CAClE,KAAKN,SAAWM,EAAOC,OACzB,CAAC,CACH,CAEAC,oBAAkB,CAChB,KAAKC,aAAY,CACnB,CAEAA,cAAY,CACV,GAAI,CAAC,KAAKf,aAAc,CACtB,IAAIgB,EAA4B,GAC1BC,EAAiB,KAAKb,eAAec,SAASC,YAAY,IAChE,GAAI,CAAC,KAAK9C,KAAM,OAChB,IAAI+C,EAAa,KAAK/C,KAAKgD,OAAQC,GAAQA,EAAIvD,MAAM,EAEjDkD,GAAkB,KAAKpB,gBAEzB,KAAKxB,MAAMkD,KAAMD,GACXA,EAAIhE,KAAO2D,GACbG,EAAa,CAAA,EACbA,EAAWI,KAAKF,CAAG,EACnBN,EAA4B,GACrB,IAEF,EACR,GAGEI,GAAcA,EAAWK,SAAW,GAAM,CAACL,EAAW,CAAC,KAG1DA,EAAa,CAAA,EACbA,EAAWI,KAAK,KAAKnD,KAAKqD,KAAK,GAG5BV,GAGCI,GAAcA,EAAW,CAAC,GAAKA,EAAW,CAAC,EAAE9D,IAC/C,KAAKD,eAAe+D,EAAW,CAAC,EAAE9D,EAAE,EAKpC8D,GAAcA,EAAW,CAAC,IAC5B,KAAKjE,UAAUiE,EAAW,CAAC,CAAC,EAC5B,KAAKpB,aAAe,GACpB,KAAKpB,kBAAoBwC,EAAW,CAAC,GAAG9D,IAAM,GAElD,CACF,CAEAD,eAAesE,EAAgB,CAC7B,GAAI,KAAK9B,eAAgB,CACvB,IAAM+B,EAAS,IAAIC,GAAU,EAAGC,IAAI,MAAOH,CAAQ,EACnD,KAAK1B,SAAS8B,aAAa,KAAK9B,SAAS+B,KAAI,EAAGC,MAAM,GAAG,EAAE,CAAC,EAAGL,EAAOM,SAAQ,EAAI,EAAK,CACzF,CACF,CAEA/E,UAAUmE,EAA+Ba,EAA0B,CAEjE,KAAK9D,MAAM+D,QAASC,GAAW,CAC7BA,EAAQtE,OAAS,EACnB,CAAC,EAGGoE,GAAgBA,GAAcG,eAAc,EAAG,CAAC,GAAGC,IAAM,GAC3DC,OAAOC,WAAW,IAAK,CACrBN,EAAaO,eAAe,CAAEC,SAAU,SAAS,CAAE,CACrD,EAAG,CAAC,EAINrB,EAAIvD,OAAS,GACb,KAAKa,kBAAoB0C,GAAKhE,IAAM,GAEpC,KAAKwC,WAAW8C,KAAKtB,EAAIhE,EAAE,CAC7B,iDAjGWwB,GAAuB+D,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAvBhE,EAAuBiE,UAAA,CAAA,CAAA,sBAAA,CAAA,EAAAC,eAAA,SAAAC,EAAAC,EAAAC,EAAA,IAAAF,EAAA,QAKjBG,GAAwB,CAAA,iFAL9BC,GAAAH,EAAAtD,KAAA,ggBC5Bb0D,EAAA,EAAA,MAAA,EAAA,CAAA,EAEApF,EAAA,EAAAqF,IAAA,EAAA,EAAA,KAAA,CAAA,EAeA9G,EAAA,EAAA,kBAAA,CAAA,EACEyB,EAAA,EAAAsF,IAAA,EAAA,EAAA,aAAA,CAAA,EAOF5F,EAAA,EACAnB,EAAA,EAAA,MAAA,CAAA,EAAuBC,EAAA,oBAAA,UAAA,CAAAc,OAAAZ,EAAA6G,CAAA,EAAArG,EAAqB8F,EAAAnC,aAAA,CAAc,CAAA,CAAA,EACxD2C,GAAA,CAAA,EACF9F,EAAA,QA1BKC,EAAA,CAAA,EAAAO,EAAA,OAAA,CAAA8E,EAAA5C,QAAA,EAgBUzC,EAAA,CAAA,EAAAO,EAAA,OAAA8E,EAAA5C,QAAA,kBDQHqD,EAAYC,GAAAC,GAAEC,GAAeC,GAAEC,GAAeC,GAAAC,GAAEC,GAAqBC,EAAA,EAAAC,OAAA,CAAA;qHAAA,CAAA,CAAA,CAAA,SAEpEvF,CAAuB,GAAA,IE5BpC,IAAAwF,GAAAC,EAAA,KAAAC,KACAC,iCEekBC,EAAA,EAAA,wBAAA,CAAA,yBAAuBC,EAAA,UAAAC,CAAA,8BAajBC,EAAA,EAAA,YAAA,EAAYC,EAAA,CAAA,+BAEVC,EAAA,mBAFUC,EAAA,EAAAC,EAAAC,GAAA,EAAA,EAAA,yCAAAC,EAAAC,UAAA,CAAA,uCAThBP,EAAA,EAAA,iBAAA,EAAiB,EAAA,YAAA,EACHC,EAAA,CAAA,+BAAkEC,EAAA,EAC9EF,EAAA,EAAA,oCAAA,CAAA,EAGEQ,GAAA,yBAAA,SAAAC,EAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,OAAAC,GAAAL,EAAAM,aAAAP,CAAA,IAAAC,EAAAM,aAAAP,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EACAS,EAAA,yBAAA,UAAA,CAAAP,EAAAC,CAAA,EAAA,IAAAN,EAAAa,EAAA,CAAA,EAAA,OAAAF,EAA0BX,EAAAc,oBAAA,CAAqB,CAAA,CAAA,EAChDlB,EAAA,EACDmB,EAAA,EAAAC,IAAA,EAAA,EAAA,YAAA,EAKFpB,EAAA,mCAZcC,EAAA,CAAA,EAAAC,EAAAC,GAAA,EAAA,EAAA,yBAAAK,EAAAa,IAAA,CAAA,EAGVpB,EAAA,CAAA,EAAAL,EAAA,aAAAY,EAAAa,IAAA,EACAC,GAAA,mBAAAd,EAAAM,YAAA,EAGFb,EAAA,EAAAsB,EAAAnB,EAAAoB,yBAAA,EAAA,EAAA,EAAA,6BATJC,GAAA,EAAAC,IAAA,EAAA,EAAA,kBAAA,KAAAC,EAAA,kBAAAC,GAAAxB,EAAAyB,sBAAA,CAAuB,8BAd/B/B,EAAA,EAAA,wBAAA,CAAA,oCAQEA,EAAA,EAAA,WAAA,CAAA,EAAgC,EAAA,mBAAA,CAAA,EAE5B2B,GAAA,EAAAK,IAAA,EAAA,EAAA,wBAAA,EAAAH,EAAA,EAGAR,EAAA,EAAAY,IAAA,EAAA,CAAA,EAkBF/B,EAAA,EAAmB,EACV,iDA/BXJ,EAAA,QAAAoC,EAAAC,YAAAC,EAAA,EAAA,EAAAF,EAAAC,WAAA,EAAAC,EAAA,EAAA,EAAA,qCAAA,CAAA,EAIC,SAAAC,IAAA,CAAA,EAKGlC,EAAA,CAAA,EAAA2B,GAAAI,EAAAI,MAAA,EAGAnC,EAAA,CAAA,EAAAsB,EAAAY,IAAA,GAAA,CAAA/B,EAAAiC,UAAA,EAAA,EAAA,6BAdRlB,EAAA,EAAAmB,IAAA,EAAA,EAAA,wBAAA,CAAA,yBAAAf,EAAAS,EAAAO,mBAAA,EAAA,EAAA,EAAA,6BAuCE5C,EAAA,EAAA,wBAAA,CAAA,yBAAuBC,EAAA,UAAA4C,CAAA,6BADzBf,GAAA,EAAAgB,IAAA,EAAA,EAAA,wBAAA,EAAAd,EAAA,yBAAAC,GAAAc,EAAAN,MAAA,iDAMFtC,EAAA,EAAA,oBAAA,EACEqB,EAAA,EAAAwB,IAAA,EAAA,EAAA,cAAA,CAAA,EACF3C,EAAA,uBADeC,EAAA,EAAAL,EAAA,mBAAAgD,CAAA,uCAMnB9C,EAAA,EAAA,wBAAA,CAAA,oCAIEkB,EAAA,kBAAA,UAAA,CAAAP,EAAAoC,CAAA,EAAA,IAAAzC,EAAAa,EAAA,EAAA,OAAAF,EAAmBX,EAAA0C,SAAA,CAAU,CAAA,CAAA,EAAC,kBAAA,UAAA,CAAArC,EAAAoC,CAAA,EAAA,IAAAzC,EAAAa,EAAA,EAAA,OAAAF,EACXX,EAAA2C,SAAA,CAAU,CAAA,CAAA,EAC9B/C,EAAA,oBALCJ,EAAA,mBAAAsC,EAAA,EAAA,EAAA9B,EAAA4C,gBAAA,CAAA,EAAiD,mBAAAd,EAAA,EAAA,EAAA9B,EAAA6C,gBAAA,CAAA,EACA,eAAA7C,EAAA8C,YAAA,GDzDrD,IAmDaC,GAnDbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAMAC,KACAC,KACAC,KAGAC,+CA2BapB,IAAgC,IAAA,CAAvC,MAAOA,UAAwCqB,EAA+B,CAzBpFC,aAAA,qBA0BqB,KAAA5C,sBAAwB6C,GAA8B,CAAA,CAAE,EACxD,KAAAC,sBAAwBC,EAAO,EAAK,EACpC,KAAApD,yBAA2BoD,EAAO,EAAK,EAEzC,KAAAC,sBAAwBC,EAAOC,GAAyB,CAAEC,SAAU,EAAI,CAAE,EAEjF9D,qBAAmB,CAC3B,KAAKM,yBAAyByD,IAAI,KAAKC,yBAAwB,CAAE,CACnE,CAEmBC,WAAWC,EAAsCC,EAAkC,CACpG,MAAMF,WAAWC,EAAcC,CAAW,EAC1C,IAAMC,EAA0B,KAAKT,sBACjC,KAAKA,sBAAsBS,wBAC3BC,GAAsB,KAAKlF,WAAY,KAAKmF,MAAM,GAAGF,wBACzD,GAAIA,GAA2B,CAAC,KAAKjD,UAAW,CAC9C,KAAKsC,sBAAsBM,IAAIK,EAAwBG,UAAY,EAAK,EACxE,IAAMC,EAAqCJ,EAAwBK,YAAYC,IAAKC,IAC3E,CACLxE,KAAMwE,EACN/E,aAAc,CAAA,GAEjB,EACD,KAAKe,sBAAsBoD,IAAIS,CAAU,CAC3C,CACF,CAEQR,0BAAwB,CAC9B,OAAK,KAAKP,sBAAqB,EAGV,KAAK9C,sBAAqB,EAAGiE,QAAS1D,GAAWA,EAAOtB,YAAY,EACrEiF,SAAW,EAHtB,EAIX,CAEmBjD,UAAQ,CACzB,GAAI,KAAKoC,yBAAwB,EAAI,CACnC,IAAMc,EAAe,KAAKC,6BAA6BC,2BACrD,KAAK7F,WACL,wCAAwC,EAE1C,KAAK8F,aAAaC,eAAeJ,EAAc,CAC7CK,SAAUC,IACX,EACD,KAAK9E,yBAAyByD,IAAI,EAAI,EACtC,MACF,CACA,MAAMnC,SAAQ,CAChB,sEAjDWK,CAA+B,IAAAoD,GAA/BpD,CAA+B,CAAA,CAAA,GAAA,CAAA,+BAA/BA,EAA+BqD,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,OAAA,CAAA5E,sBAAA,CAAA,EAAA,uBAAA,CAAA,EAAA6E,QAAA,CAAA7E,sBAAA,6BAAA,EAAA8E,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,eAAA,GAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,QAAA,QAAA,EAAA,CAAA,aAAA,UAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,yBAAA,aAAA,kBAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,kBAAA,kBAAA,mBAAA,mBAAA,cAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICnD5CnH,EAAA,EAAA,6BAAA,CAAA,EAA4D,EAAA,OAAA,CAAA,EACe,EAAA,sBAAA,EAErE2B,GAAA,EAAA0F,IAAA,EAAA,EAAA,KAAA,KAAAxF,EAAA,EAsCAF,GAAA,EAAA2F,IAAA,EAAA,EAAA,KAAA,KAAAzF,EAAA,EAKF3B,EAAA,EACAmB,EAAA,EAAAkG,IAAA,EAAA,EAAA,oBAAA,EAKFrH,EAAA,EAAO,EAETmB,EAAA,EAAAmG,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,SAtD4B3H,EAAA,gBAAAsH,EAAAM,aAAA,EACuBvH,EAAA,EAAAL,EAAA,YAAAsH,EAAAO,SAAA,EAE7CxH,EAAA,CAAA,EAAA2B,GAAAsF,EAAAQ,qBAAA,EAsCAzH,EAAA,CAAA,EAAA2B,GAAAsF,EAAAS,6BAAA,EAMF1H,EAAA,CAAA,EAAAsB,EAAA2F,EAAAU,SAAA,GAAA,CAAA,kBDhBAC,EAAYC,GACZC,GAAWC,GAAAC,GACXC,GAAaC,GAAAC,GACbC,GACAC,GAAmBC,GACnBC,EAAeC,EACfC,GACAC,GAAwBC,GACxBC,GACAC,GACAC,GACAC,GACAC,GACAC,GAAqBC,GAAAC,GAAAC,GACrBC,GACAC,EAAyB,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAKhBvG,CAAgC,GAAA,8BG9CrCwG,EAAA,EAAA,wBAAA,CAAA,yBAAuBC,EAAA,UAAAC,CAAA,6BADzBC,GAAA,EAAAC,IAAA,EAAA,EAAA,wBAAA,EAAAC,EAAA,yBAAAC,GAAAC,EAAAC,MAAA,6BAMER,EAAA,EAAA,wBAAA,CAAA,yBAAuBC,EAAA,UAAAQ,CAAA,6BADzBN,GAAA,EAAAO,IAAA,EAAA,EAAA,wBAAA,EAAAL,EAAA,yBAAAC,GAAAK,EAAAH,MAAA,uCAKAI,EAAA,EAAA,MAAA,CAAA,EAAwC,EAAA,wBAAA,CAAA,oCAKpCC,EAAA,kBAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAmBF,EAAAG,SAAA,CAAU,CAAA,CAAA,EAAC,kBAAA,UAAA,CAAAL,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EACXF,EAAAI,SAAA,CAAU,CAAA,CAAA,EAC9BC,EAAA,EAAwB,oBALvBC,EAAA,EAAArB,EAAA,mBAAAsB,EAAA,EAAA,EAAAP,EAAAQ,gBAAA,CAAA,EAAiD,mBAAAD,EAAA,EAAA,EAAAP,EAAAS,gBAAA,CAAA,EACA,eAAAT,EAAAU,YAAA,GDjB3D,IA2BaC,GA3BbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,kBAmBaV,IAA4B,IAAA,CAAnC,MAAOA,UAAoCW,EAA+B,sEAAnEX,CAA2B,IAAAY,GAA3BZ,CAA2B,CAAA,CAAA,GAAA,CAAA,+BAA3BA,EAA2Ba,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,eAAA,GAAA,EAAA,wBAAA,iBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,kBAAA,kBAAA,mBAAA,mBAAA,cAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IC3BxCnC,EAAA,EAAA,6BAAA,CAAA,EAA4D,EAAA,OAAA,CAAA,EAGxDT,GAAA,EAAA8C,IAAA,EAAA,EAAA,KAAA,KAAA5C,EAAA,EAKAF,GAAA,EAAA+C,IAAA,EAAA,EAAA,KAAA,KAAA7C,EAAA,EAKA8C,EAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAWF/B,EAAA,EAAO,SAxBmBpB,EAAA,gBAAA+C,EAAAK,aAAA,EACsC/B,EAAA,EAAArB,EAAA,YAAA+C,EAAAM,SAAA,EAE9DhC,EAAA,EAAAhB,GAAA0C,EAAAO,qBAAA,EAKAjC,EAAA,CAAA,EAAAhB,GAAA0C,EAAAQ,6BAAA,EAKAlC,EAAA,CAAA,EAAAmC,EAAA,CAAAT,EAAAU,UAAA,CAAAV,EAAAW,WAAA,EAAA,EAAA,kBDEAC,EACAC,GAAWC,GAAAC,GACXC,GAAmBC,GACnBC,EAAeC,EACfC,GACAC,GACAC,GACAC,EAAgB,EAAAC,OAAA,CAAA;;EAAA;;CAAA,EAAAC,cAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAKP/C,CAA4B,GAAA,8BGlBzBgD,EAAA,EAAA,wBAAA,CAAA,4BAEEC,EAAA,UAAAC,CAAA,6BAFFC,EAAA,EAAAC,IAAA,EAAA,EAAA,wBAAA,CAAA,kCACGH,EAAA,OAAAI,EAAAC,IAAAC,EAAAC,UAAA,EAAAC,SAAAP,EAAAQ,OAAA,CAAA,8BAFLP,EAAA,EAAAQ,IAAA,EAAA,EAAA,wBAAA,CAAA,kCAAAC,GAAAC,EAAAC,EAAA,EAAA,EAAAP,EAAAQ,oBAAA,GAAA,EAAA,GAAAF,CAAA,6BADFG,GAAA,EAAAC,IAAA,EAAA,EAAA,KAAA,KAAAC,EAAA,yBAAAC,GAAAC,EAAAC,MAAA,6BAaFrB,EAAA,EAAA,wBAAA,CAAA,yBAAuBC,EAAA,UAAAqB,CAAA,6BADzBN,GAAA,EAAAO,IAAA,EAAA,EAAA,wBAAA,EAAAL,EAAA,yBAAAC,GAAAK,EAAAH,MAAA,0DASNI,EAAA,EAAA,oBAAA,EAAoB,EAAA,SAAA,CAAA,EACSC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAArB,EAAAsB,EAAA,EAAA,OAAAC,EAASvB,EAAAwB,SAAA,CAAU,CAAA,CAAA,EAC5CC,EAAA,CAAA,mBACFC,EAAA,EACAR,EAAA,EAAA,SAAA,CAAA,EAAwCC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAArB,EAAAsB,EAAA,EAAA,OAAAC,EAASvB,EAAA2B,SAAA,CAAU,CAAA,CAAA,EAAEF,EAAA,EAAA,QAAA,EAAMC,EAAA,EAAS,QAF1EE,EAAA,CAAA,EAAAC,EAAA,IAAAtB,EAAA,EAAA,EAAA,gBAAA,EAAA,GAAA,GD9BN,IAiDauB,GAjDbC,GAAAC,EAAA,KAAAC,IAEAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KAKAC,KACAC,KACAC,KAMAC,wEAuBalB,IAAgC,IAAA,CAAvC,MAAOA,UAAwCmB,EAA+B,CAGlFC,YACyDC,EACpCC,EACAC,EACSC,EACAC,EACTC,EACSC,EACAC,EAA0D,CAEtF,MACEP,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,CAA4B,EAjByB,KAAAP,OAAAA,EACpC,KAAAC,aAAAA,EACA,KAAAC,iBAAAA,EACS,KAAAC,iBAAAA,EACA,KAAAC,kBAAAA,EACT,KAAAC,aAAAA,EACS,KAAAC,aAAAA,EACA,KAAAC,6BAAAA,EAa5B,KAAKlD,qBAAuBmD,EAAc,CACxC,KAAKR,OAAOS,SAASC,6BAA+BC,EAAG,CAAA,CAAE,EACzD,KAAKX,OAAOY,SAASF,6BAA+BC,EAAG,CAAA,CAAE,EACzD,KAAKX,OAAOa,aAAaH,6BAA+BC,EAAG,CAAA,CAAE,CAAC,CAC/D,EAAEG,KACDC,EAAI,CAAC,CAACC,EAAeC,EAAeC,CAAiB,IAAK,CACxD,IAAMC,EAAsB,IAAIC,IAChCD,OAAAA,EAAoBE,IAAI,UAAW,CACjChB,EAAaiB,WAAWC,GAAoBC,SAAS,EACrDnB,EAAaiB,WAAWC,GAAoBE,QAAQ,EACpDpB,EAAaiB,WAAWC,GAAoBG,WAAW,EACvDrB,EAAaiB,WAAWC,GAAoBI,KAAK,EACjDtB,EAAaiB,WAAWC,GAAoBK,IAAI,EAChDC,EAAYC,mBACZD,EAAYE,gBACZ,GAAGf,CAAa,CACjB,EACDG,EAAoBE,IAAI,UAAW,CACjCQ,EAAYG,YACZH,EAAYI,eACZJ,EAAYK,2BACZL,EAAYM,2BACZN,EAAYO,0BACZP,EAAYQ,2BACZR,EAAYS,gCACZT,EAAYU,6BACZV,EAAYW,mBACZX,EAAYY,YACZZ,EAAYa,mCACZ,GAAGzB,CAAa,CACjB,EACDE,EAAoBE,IAAI,cAAe,CACrCQ,EAAYc,gBACZC,GAAeC,mBACfhB,EAAYiB,sBACZjB,EAAYkB,uBACZlB,EAAYmB,kBACZnB,EAAYoB,6BACZ,GAAG/B,CAAiB,CACrB,EACMC,CACT,CAAC,CAAC,CAEN,iDAnEWxC,GAA+BuE,EAIhCC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,CAAA,CAAA,CAAA,+BAJhB/E,EAA+BgF,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,eAAA,GAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,eAAA,aAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAvH,EAAA,IAAAuH,EAAA,ICjD5CnG,EAAA,EAAA,6BAAA,CAAA,EAA4D,EAAA,OAAA,CAAA,EACe,EAAA,KAAA,CAAA,EAClDO,EAAA,CAAA,+BAA6DC,EAAA,EAClFR,EAAA,EAAA,oBAAA,EAAoB,EAAA,WAAA,CAAA,EAC0B,EAAA,kBAAA,EAExCT,GAAA,EAAA6G,IAAA,EAAA,EAAA,KAAA,KAAA3G,EAAA,EAUFe,EAAA,EAAmB,EAErBjB,GAAA,GAAA8G,IAAA,EAAA,EAAA,KAAA,KAAA5G,EAAA,EAKFe,EAAA,EACA9B,EAAA,GAAA4H,IAAA,EAAA,EAAA,cAAA,CAAA,EACF9F,EAAA,EAAO,EAET9B,EAAA,GAAA6H,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,oBA3B4BhI,EAAA,gBAAAI,EAAA6H,aAAA,EACuB/F,EAAA,EAAAlC,EAAA,YAAAI,EAAA8H,SAAA,EAC1BhG,EAAA,CAAA,EAAAiG,EAAAC,GAAA,EAAA,EAAA,oBAAAhI,EAAAG,UAAA,CAAA,EAIf2B,EAAA,CAAA,EAAAhB,GAAAd,EAAAiI,qBAAA,EAYJnG,EAAA,CAAA,EAAAhB,GAAAd,EAAAkI,6BAAA,EAMWpG,EAAA,CAAA,EAAAlC,EAAA,mBAAAuI,CAAA,kBDSbC,EAAYC,GAAAC,GAAAC,GACZC,GAAWC,GAAAC,GACXC,GAAmBC,GACnBC,EAAeC,EACfC,GACAC,GACAC,GACAC,GACAC,GAAaC,GAAAC,GACbC,GACAC,GAAeC,GACfC,GAAeC,GAAAC,GAAAC,EAAA,EAAAC,OAAA,CAAA;;CAAA,EAAAC,cAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAKN/H,CAAgC,GAAA,wCGhD3CgI,EAAA,CAAA,EACEC,EAAA,EAAA,wBAAA,CAAA,oCAWEC,EAAA,aAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAcF,EAAAG,SAAAN,CAAA,CAAgB,CAAA,CAAA,EAAC,aAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EACjBF,EAAAI,SAAA,CAAU,CAAA,CAAA,EACzBC,EAAA,wBAZCC,EAAA,EAAAC,EAAA,aAAAP,EAAAQ,UAAA,EAAyB,mBAAAR,EAAAS,gBAAA,EACY,mBAAAC,EAAA,EAAA,GAAAV,EAAAW,gBAAA,CAAA,EACY,mBAAAD,EAAA,EAAA,GAAAV,EAAAY,gBAAA,CAAA,EACA,gBAAAZ,EAAAa,aAAA,EAClB,eAAAb,EAAAc,YAAA,EACF,cAAAd,EAAAe,WAAA,EACF,WAAAf,EAAAgB,QAAA,EACN,aAAA,EAAA,EACF,YAAAhB,EAAAiB,SAAA,uCAMvBvB,EAAA,CAAA,EACEC,EAAA,EAAA,6BAAA,CAAA,oCAUEC,EAAA,aAAA,SAAAC,EAAA,CAAAC,EAAAoB,CAAA,EAAA,IAAAlB,EAAAC,EAAA,EAAA,OAAAC,EAAcF,EAAAG,SAAAN,CAAA,CAAgB,CAAA,CAAA,EAAC,aAAA,UAAA,CAAAC,EAAAoB,CAAA,EAAA,IAAAlB,EAAAC,EAAA,EAAA,OAAAC,EACjBF,EAAAI,SAAA,CAAU,CAAA,CAAA,EACxBe,GAAA,8BAAA,SAAAtB,EAAA,CAAAC,EAAAoB,CAAA,EAAA,IAAAlB,EAAAC,EAAA,EAAAmB,OAAAC,GAAArB,EAAAsB,sBAAAzB,CAAA,IAAAG,EAAAsB,sBAAAzB,GAAAK,EAAAL,CAAA,CAAA,CAAA,EACDQ,EAAA,wBAZCC,EAAA,EAAAC,EAAA,aAAAP,EAAAQ,UAAA,EAAyB,mBAAAR,EAAAS,gBAAA,EACY,mBAAAC,EAAA,EAAA,GAAAV,EAAAW,gBAAA,CAAA,EACY,mBAAAD,EAAA,EAAA,GAAAV,EAAAY,gBAAA,CAAA,EACA,gBAAAZ,EAAAa,aAAA,EAClB,eAAAb,EAAAc,YAAA,EACF,cAAAd,EAAAe,WAAA,EACF,WAAAf,EAAAgB,QAAA,EACN,YAAAhB,EAAAiB,SAAA,EAIrBM,GAAA,wBAAAvB,EAAAsB,qBAAA,uCAGJ5B,EAAA,CAAA,EACEC,EAAA,EAAA,6BAAA,CAAA,oCAUEC,EAAA,aAAA,SAAAC,EAAA,CAAAC,EAAA0B,CAAA,EAAA,IAAAxB,EAAAC,EAAA,EAAA,OAAAC,EAAcF,EAAAG,SAAAN,CAAA,CAAgB,CAAA,CAAA,EAAC,aAAA,UAAA,CAAAC,EAAA0B,CAAA,EAAA,IAAAxB,EAAAC,EAAA,EAAA,OAAAC,EACjBF,EAAAI,SAAA,CAAU,CAAA,CAAA,EACzBC,EAAA,wBAXCC,EAAA,EAAAC,EAAA,aAAAP,EAAAQ,UAAA,EAAyB,mBAAAR,EAAAS,gBAAA,EACY,mBAAAC,EAAA,EAAA,EAAAV,EAAAW,gBAAA,CAAA,EACY,mBAAAD,EAAA,EAAA,GAAAV,EAAAY,gBAAA,CAAA,EACA,gBAAAZ,EAAAa,aAAA,EAClB,eAAAb,EAAAc,YAAA,EACF,cAAAd,EAAAe,WAAA,EACF,YAAAf,EAAAiB,SAAA,EACJ,WAAAjB,EAAAgB,QAAA,GD1C7B,IAkCaS,GAlCbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,IACAC,IACAC,KACAC,KACAC,KASAC,iBAkBaX,IAA2B,IAAA,CAAlC,MAAOA,CAA2B,CAdxCY,aAAA,CAgBW,KAAA5B,iBAAmB,GACnB,KAAAM,YAAoC,CAAA,EACpC,KAAAE,UAAY,GAGZ,KAAAN,iBAAmB,eACnB,KAAAC,iBAAmB,iBAInB,KAAAI,SAAW,GACX,KAAAsB,KAAiB,aAEhB,KAAAC,WAAa,IAAIC,GACjB,KAAAC,WAAa,IAAID,GAER,KAAAlB,sBAAwBoB,GAA8B,CAAA,CAAE,EAE3EvC,SAASwC,EAAwB,CAC/B,KAAKJ,WAAWK,KAAKD,CAAM,CAC7B,CAEAvC,UAAQ,CACN,KAAKqC,WAAWG,KAAI,CACtB,iDA1BWnB,EAA2B,CAAA,+BAA3BA,EAA2BoB,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,OAAA,CAAAtC,WAAA,aAAAC,iBAAA,mBAAAM,YAAA,cAAAE,UAAA,YAAAN,iBAAA,mBAAAC,iBAAA,mBAAAC,cAAA,gBAAAC,aAAA,eAAAE,SAAA,WAAAsB,KAAA,OAAAhB,sBAAA,CAAA,EAAA,uBAAA,CAAA,EAAAyB,QAAA,CAAAR,WAAA,aAAAE,WAAA,aAAAnB,sBAAA,6BAAA,EAAA0B,SAAA,CAAAC,GAH3B,CAACC,GAAmBC,GAAcC,EAAyB,CAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,aAAA,aAAA,aAAA,mBAAA,mBAAA,mBAAA,gBAAA,eAAA,cAAA,WAAA,aAAA,WAAA,EAAA,CAAA,EAAA,aAAA,aAAA,8BAAA,aAAA,mBAAA,mBAAA,mBAAA,gBAAA,eAAA,cAAA,WAAA,YAAA,uBAAA,EAAA,CAAA,EAAA,aAAA,aAAA,aAAA,mBAAA,mBAAA,mBAAA,gBAAA,eAAA,cAAA,YAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IC/BzE/D,EAAA,EAAA,CAAA,EACEiE,EAAA,EAAAC,IAAA,EAAA,GAAA,eAAA,CAAA,EAAsC,EAAAC,IAAA,EAAA,GAAA,eAAA,CAAA,EAgBP,EAAAC,IAAA,EAAA,GAAA,eAAA,CAAA,aAjBnBvD,EAAA,WAAAmD,EAAApB,IAAA,EACGhC,EAAA,EAAAC,EAAA,eAAA,OAAA,EAgCAD,EAAA,CAAA,EAAAC,EAAA,eAAA,mBAAA,kBDRbwD,EAAYC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GACAC,GACAC,EAA+B,EAAAC,OAAA,CAAA;2HAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAKtBhD,CAA2B,GAAA,IElCxC,IAAAiD,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OC0BM,SAAUC,GAA8BC,EAAwBC,EAAwB,CAC5F,OAAOC,GAASC,OAAO,CACrBC,UAAW,CACT,CACEC,QAASC,GACTC,WAAYC,GAAmDR,CAAU,GAE3E,CACEK,QAASI,GACTF,WAAYG,GAAqCV,CAAU,EAC5D,EAEHW,OAAQV,EACT,CACH,CAlDA,QA0DaW,GA1DbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KAEAC,KACAC,KACAC,KAkBAC,KAEAC,kDAgCaV,IAAgC,IAAA,CAAvC,MAAOA,CAAgC,CAQ3CW,YACSC,EACyBC,EACYC,EAC3BC,EACAC,EACAC,EACAC,EACAC,EAGAC,EAA4C,CAVtD,KAAAR,UAAAA,EACyB,KAAAC,KAAAA,EACY,KAAAC,OAAAA,EAC3B,KAAAC,eAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,gBAAAA,EACA,KAAAC,6BAAAA,EACA,KAAAC,uCAAAA,EAGA,KAAAC,sBAAAA,EAlBA,KAAAhC,WAAyB,KAAKyB,KAAKzB,WACnC,KAAAiC,eAAqC,KAAKD,uBAAuBC,gBAAkBC,EAAG,EAAE,EACxF,KAAAC,cAAgBC,EAAOC,GAAcC,OAAO,EAC5C,KAAAC,aAAeH,EAAOI,GAAaC,UAAU,EAiB9D,IAAMC,EAAgBC,EAAc,CAClC,KAAKhB,eAAeiB,mBAAmB,KAAK5C,UAAU,EACtD,KAAK6C,oBAAmB,CAAE,CAC3B,EAAEC,KACDC,EAAI,CAAC,CAACC,EAAcC,CAAkB,IAC7BD,EAAaD,IAAKG,IAAe,CACtC,IAAMC,GAAoBF,EAAmBG,KAC1CC,IAAeA,GAAWC,UAAYJ,GAAYI,SAAW,CAAC,CAACD,GAAWE,KAAK,EAElF,OAAIJ,KACFD,GAAYK,MAAQJ,GAAkBI,MACtCL,GAAYM,gBAAkB,IAEzBN,EACT,CAAC,CACF,EACDO,GAAK,CAAC,CAAC,EAEHC,EAAe,KAAK/B,eAAegC,8BAA8B,KAAK3D,UAAU,EAEtF,KAAK4D,aAAejB,EAAc,CAACD,EAAegB,CAAY,CAAC,EAAEZ,KAC/De,GAAI,CAAC,CAACb,EAAcc,CAAW,IAAK,CAClC,IAAMC,GAAQf,EAAagB,SAAW,GAAKF,EAAYE,SAAW,EAClE,KAAK7B,cAAc8B,IAAIF,GAAQ1B,GAAc6B,MAAQ7B,GAAc8B,EAAE,CACvE,CAAC,EACDpB,EAAI,CAAC,CAACC,EAAcc,CAAW,KACtB,CACLd,aAAcA,EACdc,YAAaA,GAEhB,EACDM,GAAYC,IACV,KAAKlC,cAAc8B,IAAI5B,GAAciC,KAAK,EAC1C,KAAKC,cAAcF,EAAO,wBAAwB,EAC3CnC,EAAG,CAAA,CAA0B,EACrC,EACDsC,GAAY,CAAC,CAAC,CAElB,CAEMC,OAAOC,EAAwB,QAAAC,GAAA,sBACnC,KAAKpC,aAAa0B,IAAIzB,GAAaoC,MAAM,EACzC,IAAMC,EAAgB,MAAMC,GAC1B,KAAKnD,eAAeoD,4BAA4B,KAAK/E,WAAY0E,CAAM,EAAE5B,KACvEsB,GAAYC,IACV,KAAKE,cAAcF,EAAO,wBAAwB,EAC3CnC,EAAG,IAAI,EACf,CAAC,CACH,EAGH,GAAI,CAAC2C,EACH,KAAKtC,aAAa0B,IAAIzB,GAAa8B,KAAK,EACxC,KAAKzC,gBAAgBmD,WAAW,KAAKhF,WAAY,uBAAuB,MACnE,CACL,IAAMiF,EAAgB,MAAMH,GAAe,KAAK7C,cAAc,EAC9D,KAAKF,uCAAuCmD,oBAAoB,KAAKlF,WAAY6E,EAAeI,CAAa,EAC7G,KAAK1C,aAAa0B,IAAIzB,GAAa2B,EAAE,EACrC,KAAKtC,gBAAgBmD,WAAW,KAAKhF,WAAY,kBAAkB,EACnE,KAAKwB,UAAU2D,MAAM,CAAEC,UAAWP,CAAa,CAAE,CACnD,CACF,GAEQhC,qBAAmB,CACzB,OAAI,KAAKb,sBACA,KAAKA,sBAAsBqD,iCAAmCnD,EAAG,CAAA,CAAE,EAErEoD,GAAsB,KAAKtF,WAAY,KAAK0B,MAAM,GAAG2D,iCAAmCnD,EAAG,CAAA,CAAE,CACtG,CAEQqC,cAAcF,EAAckB,EAAsB,CACxD,IAAIC,EAAyB,KACzBnB,GAASA,EAAMmB,UACjBA,EAAUnB,EAAMmB,SAElB,IAAMC,EAA2B,KAAK3D,6BAA6B4D,2BACjE,KAAK1F,WACLuF,CAAc,EAEhB,KAAK3D,aAAa+D,eAAeH,GAAWC,EAA0B,CACpEG,SAAUC,IACX,CACH,CAEAC,UAAQ,CACN,KAAKjE,gBAAgBmD,WAAW,KAAKhF,WAAY,mBAAmB,EACpE,KAAKwB,UAAU2D,MAAK,CACtB,iDA5GWvE,GAAgCmF,EAAAC,EAAA,EAAAD,EAUjCE,EAAe,EAAAF,EACfG,EAAiB,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,EAAAR,EAOjBS,GAAuB,CAAA,CAAA,CAAA,CAAA,+BAlBtB5F,EAAgC6F,UAAA,CAAA,CAAA,6BAAA,CAAA,EAAAC,MAAA,EAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,EAAA,aAAA,aAAA,aAAA,mBAAA,mBAAA,gBAAA,eAAA,cAAA,MAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IC1D7CE,EAAA,EAAA,wBAAA,CAAA,iDAEEC,EAAA,aAAA,SAAAC,EAAA,CAAA,OAAcH,EAAAtC,OAAAyC,CAAA,CAAc,CAAA,EAAC,aAAA,UAAA,CAAA,OACfH,EAAAjB,SAAA,CAAU,CAAA,EAOzBqB,EAAA,QATCC,EAAA,aAAAL,EAAA/G,UAAA,EAAyB,mBAAAqH,EAAA,EAAA,EAAA,cAAA,CAAA,EAGsB,mBAAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EACE,gBAAAN,EAAA5E,cAAA,CAAA,EAChB,eAAA4E,EAAAxE,aAAA,CAAA,EACF,cAAA8E,EAAA,EAAA,GAAAN,EAAAnD,YAAA,GAAA0D,GAAA,GAAAC,GAAA,CAAA,EACa,OAAA,mBAAA,iBDgDlCC,EAAYC,GAAEC,GAAiBC,EAAEC,GAA6BC,EAAe,EAAAC,cAAA,CAAA,CAAA,CAAA,SAE5ElH,CAAgC,GAAA,IE1D7C,IAAAmH,GAAAC,EAAA,KAAAC,kCEcUC,EAAA,EAAA,IAAA,EAAIC,EAAA,CAAA,EAA0DC,EAAA,kCAA1DC,EAAA,EAAAC,EAAAC,EAAAC,uBAAAC,IAAAC,GAAA,KAAA,KAAAA,EAAAC,WAAA,CAAA,6BADNC,EAAA,EAAAC,IAAA,EAAA,EAAA,IAAA,+BAAAC,EAAAJ,GAAA,MAAAA,EAAAC,aAAAJ,EAAAQ,KAAAC,yBAAAC,SAAAP,GAAA,KAAA,KAAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,GDbR,QAqCaO,GArCbC,GAAAC,EAAA,KAAAC,IACAC,KAEAC,KAEAC,KAGAC,IACAC,KACAC,oEA2BaT,IAA+C,IAAA,CAAtD,MAAOA,CAA+C,CAM1DU,YACSC,EAIyBd,EACfe,EAA6C,CALvD,KAAAD,UAAAA,EAIyB,KAAAd,KAAAA,EACf,KAAAe,qBAAAA,EAXA,KAAAC,OAASC,EAAO,IAAIC,GAAuB,EAC3C,KAAAC,aAAe,KAAKnB,KAAKoB,gBACzB,KAAAC,WAAa,KAAKrB,KAAKqB,WACvB,KAAA5B,uBAAyB,IAAIyB,IAU9C,KAAKlB,KAAKoB,gBAAgBE,QAASC,GAAU,CAC3C,KAAK9B,uBAAuB+B,IAC1BD,EAAO3B,aAAe,GACtB,KAAKmB,qBAAqBU,qBAAqB,KAAKJ,WAAYE,CAAM,CAAC,CAE3E,CAAC,CACH,CAEAG,QAAM,CACJ,KAAKZ,UAAUa,MAAM,CAAEC,SAAU,GAAOZ,OAAQ,KAAKA,OAAM,CAAE,CAAmD,CAClH,CAEAa,MAAI,CACF,IAAMb,EAAS,KAAKA,OAAM,EAC1B,QAAWO,KAAU,KAAKvB,KAAKoB,gBAC7B,GAAKG,GAAQ3B,YAGb,IAAI,KAAKI,KAAKC,yBAAyBC,SAASqB,GAAQ3B,WAAW,EAAG,CACpEoB,EAAOQ,IAAID,GAAQ3B,YAAa,CAAA,CAAE,EAClC,QACF,CACAoB,EAAOQ,IAAID,GAAQ3B,YAAa,CAAC,SAAS,CAAC,EAG7C,KAAKkB,UAAUa,MAAM,CAAEC,SAAU,GAAMZ,OAAQA,CAAM,CAAmD,CAC1G,iDAxCWb,GAA+C2B,EAAAC,EAAA,EAAAD,EAWhDE,EAAe,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,+BAXd9B,EAA+C+B,UAAA,CAAA,CAAA,sCAAA,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,uBAAA,GAAA,SAAA,OAAA,QAAA,UAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICrC5DpD,EAAA,EAAA,wBAAA,EAAwB,EAAA,WAAA,CAAA,EACoDC,EAAA,EAAA,MAAA,EAAIC,EAAA,EAE9EF,EAAA,EAAA,yBAAA,EACEC,EAAA,CAAA,+BACFC,EAAA,EAEAF,EAAA,EAAA,2BAAA,EAA2B,EAAA,GAAA,EAEvBC,EAAA,CAAA,+BACFC,EAAA,EACAF,EAAA,GAAA,IAAA,EACEsD,GAAA,GAAAC,IAAA,EAAA,EAAA,KAAA,KAAAC,GAAA,EAKFtD,EAAA,EAAK,EACqB,EAG9BF,EAAA,GAAA,2BAAA,EAA2B,GAAA,mCAAA,EACU,GAAA,SAAA,CAAA,EACNyD,EAAA,QAAA,UAAA,CAAA,OAASJ,EAAAd,OAAA,CAAQ,CAAA,EAC1CtC,EAAA,EAAA,oBACFC,EAAA,EAEAF,EAAA,GAAA,SAAA,CAAA,EAAwCyD,EAAA,QAAA,UAAA,CAAA,OAASJ,EAAAX,KAAA,CAAM,CAAA,EACrDzC,EAAA,EAAA,oBACFC,EAAA,EAAS,EACyB,SA1BlCC,EAAA,CAAA,EAAAuD,EAAA,IAAAC,GAAA,EAAA,EAAA,yDAAAN,EAAAnB,UAAA,EAAA,GAAA,EAKE/B,EAAA,CAAA,EAAAuD,EAAA,IAAAC,GAAA,EAAA,EAAA,wEAAAN,EAAAnB,UAAA,EAAA,GAAA,EAGA/B,EAAA,CAAA,EAAAyD,GAAAP,EAAArB,YAAA,EAYA7B,EAAA,CAAA,EAAAuD,EAAA,IAAAG,EAAA,GAAA,GAAA,gBAAA,EAAA,GAAA,EAIA1D,EAAA,CAAA,EAAAuD,EAAA,IAAAG,EAAA,GAAA,GAAA,aAAA,EAAA,GAAA,kBDCFC,EACAC,GAA6BC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAC7BC,GAAeC,GACfC,GAAaC,GACbC,GAAiBC,EACjBC,EAAyB,EAAAC,OAAA,CAAA;+IAAA,CAAA,CAAA,CAAA,SAGhB7D,CAA+C,GAAA,8BGhB5C8D,EAAA,EAAA,cAAA,CAAA,4BAAwCC,EAAA,MAAAC,EAAAC,MAAA,EAAmB,OAAAD,EAAAE,IAAA,8BAKvDC,EAAA,EAAA,IAAA,EAAA,EACEC,EAAA,CAAA,EACFC,EAAA,6BAFGN,EAAA,aAAAC,EAAAM,UAAA,EACDC,EAAA,EAAAC,EAAA,IAAAR,EAAAS,KAAA,GAAA,8BAGFN,EAAA,EAAA,MAAA,EACEC,EAAA,CAAA,EACFC,EAAA,6BADEE,EAAA,EAAAC,EAAA,IAAAR,EAAAS,KAAA,GAAA,8BAPNN,EAAA,EAAA,iBAAA,CAAA,EACEO,EAAA,EAAAC,IAAA,EAAA,EAAA,IAAA,EAAA,EAAgD,EAAAC,IAAA,EAAA,EAAA,MAAA,EASlDP,EAAA,oCATEE,EAAA,EAAAM,EAAAb,EAAAM,YAAAQ,EAAAC,oBAAA,EAAA,EAAA,CAAA,6BAaAC,GAAA,EAAA,CAAA,qCACEjB,EAAA,oBAAAkB,EAAAH,EAAAI,oBAAA,KAAA,MAAAD,IAAAE,OAAAF,EAAA,IAAA,EAAkD,0BAAAG,GAAA,EAAAC,GAAArB,CAAA,CAAA,uCAUpDG,EAAA,EAAA,SAAA,EAAA,EAAsBmB,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAxB,EAAAyB,EAAA,CAAA,EAAAC,UAAAZ,EAAAW,EAAA,CAAA,EAAA,OAAAE,EAASb,EAAAc,aAAA5B,CAAA,CAAkB,CAAA,CAAA,EAC/CI,EAAA,CAAA,+BAIFC,EAAA,qBAJEE,EAAA,EAAAC,EAAA,IAAAqB,GAAA,EAAA,EAAA,wDAAAf,EAAAgB,iBAAA,CAAA,EAAA,GAAA,uCAUF3B,EAAA,EAAA,SAAA,EAAA,EAAsBmB,EAAA,QAAA,UAAA,CAAAC,EAAAQ,CAAA,EAAA,IAAA/B,EAAAyB,EAAA,CAAA,EAAAC,UAAAZ,EAAAW,EAAA,CAAA,EAAA,OAAAE,EAASb,EAAAkB,kBAAAhC,CAAA,CAAuB,CAAA,CAAA,EACpDI,EAAA,CAAA,mBACFC,EAAA,QADEE,EAAA,EAAAC,EAAA,IAAAyB,EAAA,EAAA,EAAA,6BAAA,EAAA,GAAA,8BAQI9B,EAAA,EAAA,UAAA,EAAUC,EAAA,CAAA,EAAiBC,EAAA,4BAAjBE,EAAA,EAAA2B,EAAAC,EAAAjC,IAAA,uCAJhBC,EAAA,EAAA,SAAA,EAAA,EAAsBmB,EAAA,QAAA,UAAA,CAAA,IAAAa,EAAAZ,EAAAa,CAAA,EAAAV,UAAA1B,EAAAyB,EAAA,CAAA,EAAAC,UAAA,OAAAC,EAASQ,EAAAE,SAAArC,CAAA,CAAqB,CAAA,CAAA,EAClDG,EAAA,EAAA,OAAA,EAAA,EACGC,EAAA,CAAA,mBACDM,EAAA,EAAA4B,IAAA,EAAA,EAAA,UAAA,EAGFjC,EAAA,EAAO,4BAJJE,EAAA,CAAA,EAAAC,EAAA,GAAAyB,EAAA,EAAA,EAAAE,EAAAI,KAAA,EAAA,GAAA,EACDhC,EAAA,CAAA,EAAAM,EAAAsB,EAAAjC,KAAA,EAAA,EAAA,6BAUNc,GAAA,EAAA,CAAA,qCACEjB,EAAA,oBAAAkB,EAAAH,EAAA0B,kBAAA,KAAA,MAAAvB,IAAAE,OAAAF,EAAA,IAAA,EAAgD,0BAAAG,GAAA,EAAAC,GAAArB,CAAA,CAAA,8BAKlDG,EAAA,EAAA,sCAAA,EAAA,EACEL,EAAA,EAAA,WAAA,EAAA,EACFO,EAAA,6BAFqCN,EAAA,WAAA,aAAA,EACzBQ,EAAA,EAAAR,EAAA,OAAAC,EAAAyC,MAAAC,GAAA,EAAAC,GAAA,CAAA,uCAnElBxC,EAAA,EAAA,WAAA,CAAA,EAAuB,EAAA,kBAAA,CAAA,EAEnBO,EAAA,EAAAkC,IAAA,EAAA,EAAA,cAAA,CAAA,EAAmB,EAAAC,IAAA,EAAA,EAAA,iBAAA,CAAA,EAgBnB1C,EAAA,EAAA,oBAAA,CAAA,EACEO,EAAA,EAAAoC,IAAA,EAAA,EAAA,eAAA,CAAA,EAMFzC,EAAA,EACAF,EAAA,EAAA,SAAA,EAAA,EAAwE,EAAA,UAAA,EAC5DC,EAAA,EAAA,WAAA,EAASC,EAAA,EAAW,EAEhCF,EAAA,EAAA,WAAA,GAAA,CAAA,EACEO,EAAA,GAAAqC,IAAA,EAAA,EAAA,SAAA,EAAA,gBAQA5C,EAAA,GAAA,SAAA,EAAA,EAAsBmB,EAAA,QAAA,UAAA,CAAAC,EAAAyB,CAAA,EAAA,IAAAhD,EAAAyB,EAAA,EAAAC,UAAAZ,EAAAW,EAAA,CAAA,EAAA,OAAAE,EAASb,EAAAmC,SAAAjD,CAAA,CAAc,CAAA,CAAA,EAC3CI,EAAA,EAAA,oBACFC,EAAA,EACAK,EAAA,GAAAwC,IAAA,EAAA,EAAA,SAAA,EAAA,EAKAC,GAAA,GAAAC,IAAA,EAAA,EAAA,SAAA,GAAAC,EAAA,EAUFhD,EAAA,EAAW,EAEbF,EAAA,GAAA,mBAAA,EAAA,EACEO,EAAA,GAAA4C,IAAA,EAAA,EAAA,eAAA,CAAA,EAA2B,GAAAC,IAAA,EAAA,EAAA,sCAAA,EAAA,EAW7BlD,EAAA,EAAmB,6CApEjBE,EAAA,CAAA,EAAAM,EAAAb,EAAAC,OAAA,EAAA,EAAA,EAGAM,EAAA,EAAAM,EAAAb,EAAAS,KAAA,EAAA,EAAA,EAcEF,EAAA,CAAA,EAAAM,EAAAC,EAAAI,oBAAA,EAAA,EAAA,EAAA,EAO2CX,EAAA,EAAAR,EAAA,oBAAAyD,CAAA,EAGnCjD,EAAA,CAAA,EAAAR,EAAA,YAAA,QAAA,EACRQ,EAAA,CAAA,EAAAM,EAAAoB,EAAA,GAAA,GAAAnB,EAAA2C,qBAAA,IAAAzD,EAAA0D,eAAA5C,EAAA6C,2BAAA,EAAA,GAAA,EAAA,EASEpD,EAAA,CAAA,EAAAC,EAAA,IAAAyB,EAAA,GAAA,GAAA,gCAAA,EAAA,GAAA,EAEF1B,EAAA,CAAA,EAAAM,EAAAC,EAAA8C,gBAAA,EAAA,GAAA,EAAA,EAKArD,EAAA,EAAAsD,GAAA/C,EAAAgD,cAAA,CAAe,EAajBvD,EAAA,CAAA,EAAAM,EAAAC,EAAA0B,kBAAA,EAAA,GAAA,EAAA,EAMAjC,EAAA,EAAAM,GAAAb,EAAAyC,MAAA,KAAA,KAAAzC,EAAAyC,KAAAsB,QAAA,EAAA,GAAA,EAAA,6BAlENrD,EAAA,EAAAsD,IAAA,GAAA,GAAA,WAAA,CAAA,yBAAAnD,EAAAb,GAAA,MAAAA,EAAA0D,cAAA,EAAA,EAAA,0BADFP,GAAA,EAAAc,IAAA,EAAA,EAAA,KAAA,KAAAZ,EAAA,OAAAQ,GAAAK,CAAA,0BA6EA/D,EAAA,EAAA,MAAA,CAAA,EACEL,EAAA,EAAA,uBAAA,EAAA,EACFO,EAAA,SADwBE,EAAA,EAAAR,EAAA,SAAA,EAAA,uCAzF1BI,EAAA,EAAA,SAAA,CAAA,EAIEmB,EAAA,QAAA,UAAA,CAAAC,EAAA4C,CAAA,EAAA,IAAArD,EAAAW,EAAA,EAAA,OAAAE,EAASb,EAAAsD,eAAA,CAAgB,CAAA,CAAA,EAGzBjE,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,KAAA,EAAGC,EAAA,EACbD,EAAA,CAAA,+BACFC,EAAA,EACAK,EAAA,EAAA2D,IAAA,EAAA,CAAA,eA6EE3D,EAAA,EAAA4D,IAAA,EAAA,EAAA,MAAA,CAAA,sBAlFAvE,EAAA,WAAAe,EAAA8C,gBAAA,CAAA,EAGArD,EAAA,CAAA,EAAAC,EAAA,IAAAqB,GAAA,EAAA,EAAA,oCAAAf,EAAAgB,iBAAA,CAAA,EAAA,GAAA,EAEFvB,EAAA,CAAA,EAAAM,GAAA0D,EAAAtC,EAAA,EAAA,EAAAnB,EAAA0D,MAAA,GAAA,EAAA,EAAAD,CAAA,2BAmFApE,EAAA,EAAA,MAAA,CAAA,EACEL,EAAA,EAAA,uBAAA,EAAA,EACFO,EAAA,SADwBE,EAAA,EAAAR,EAAA,SAAA,EAAA,GDnG5B,eAqEK0E,GAkCQC,GAvGbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KAEAC,KAWAC,KAUAC,KAEAC,KAMAC,KAKAC,KACAC,KAKAC,KACAC,KACAC,KAKAC,KAKAC,kUAmCIC,GAAyBC,EAAA,8BA9BxB3B,GAAL,SAAKA,EAAW,CACdA,OAAAA,EAAA,QAAA,UACAA,EAAA,MAAA,QAFGA,CAGL,EAHKA,IAAW,CAAA,CAAA,EAkCHC,IAAkC,IAAA,CAAzC,MAAOA,CAAkC,CAsD7C2B,YAC8CC,EACaC,EACxCC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAiB,CARU,KAAAR,OAAAA,EACa,KAAAC,oBAAAA,EACxC,KAAAC,mBAAAA,EACA,KAAAC,yBAAAA,EACA,KAAAC,cAAAA,EACA,KAAAC,iBAAAA,EACA,KAAAC,6BAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,OAAAA,EA9DnB,KAAAhF,iBAAmBiF,GAAMC,SAAQ,EAChB,KAAAC,kBAAoBC,GAAa,KAAKpF,gBAAgB,EACvE,KAAAqF,GAAKJ,GAAMC,SAAQ,EACF,KAAAI,IAAMF,GAAa,KAAKC,EAAE,EAC3C,KAAA1G,KAAOsG,GAAM,EAAE,EACE,KAAAM,MAAQH,GAAa,KAAKzG,IAAI,EAC/C,KAAA6G,WAAaP,GAAMC,SAAQ,EACV,KAAAO,YAAcL,GAAa,KAAKI,UAAU,EAC3D,KAAApG,oBAAsB6F,GAAK,EAC3B,KAAAvE,kBAAoBuE,GAAK,EACzB,KAAAS,eAAiBT,GAAMC,SAAQ,EAC/B,KAAAlD,cAAgBiD,GAAoB,CAAA,CAAE,EACtC,KAAApD,2BAA6BoD,GAAM,EAAK,EACxC,KAAAU,mCAAqCV,GAAM,EAAK,EAChD,KAAAnD,gBAAkB8D,GAAS,KAAKnB,oBAAoBoB,kBAAoBC,EAAG,EAAK,CAAC,EACjF,KAAA7G,oBAAsB8G,EAAS,IAAM,CAAC,KAAKjE,gBAAe,CAAE,EAE3C,KAAAkE,gBAAkBD,EAAS,IAAK,CAC/C,IAAME,EAAa,KAAKT,WAAU,EAC5BU,GAAW,KAAKlG,iBAAgB,EACtC,OAAOmG,GAAmBF,EAAYC,EAAQ,CAChD,CAAC,EAEgB,KAAAE,SAAWC,EAAOC,EAAQ,EAE1B,KAAAC,cAAgBR,EAAS,IAAK,CAC7C,IAAM/F,EAAmB,KAAKA,iBAAgB,EAC9C,OAAOsG,GAASE,OAAO,CACrBC,UAAW,CACT,CACEC,QAASC,GACTC,WAAYC,GAAqC7G,CAAgB,GAEnE,CACE0G,QAASI,GACTF,WAAYG,GAAoC/G,CAAgB,EACjE,EAEHgH,OAAQ,KAAKZ,SACd,CACH,CAAC,EAEgB,KAAAa,4BAA8BC,EAA8B,IAAIC,GAAuB,EACvF,KAAAC,6BAA+BhC,GAAa,KAAK6B,2BAA2B,EAE5E,KAAAI,oBAAsBH,EAAiC,IAAIC,GAA0B,EACrF,KAAAG,qBAAuBlC,GAAa,KAAKiC,mBAAmB,EAkB3E,IAAME,EAAe,KAAK/C,OAAO+C,aAGjC,KAAKjC,IAAIkC,KAAKC,GAAoB,EAAIC,GAAkB,CAAE,EAAEC,UAAU,IAAK,CACzE,KAAKN,oBAAoBO,IAAI,IAAIT,GAA0B,CAC7D,CAAC,EACD,IAAMU,EAAuBC,EAAc,CAAC,KAAKxC,IAAK,KAAKG,YAAa,KAAKN,iBAAiB,CAAC,EAAEqC,KAC/FO,EAAU,CAAC,CAAC1C,EAAIG,GAAYxF,EAAgB,IACnC,KAAK0E,mBAAmBsD,0BAA0B3C,EAAIG,GAAYxF,GAAkB,GAAI,CAChG,EACDiI,EAAKC,GACIA,EACJD,IAAKE,IAAgBA,GAAYvG,eAAiB,EAAE,EACpDwG,OAAQD,IAAgB,CAAC,CAACA,EAAW,CACzC,EACDE,GAAe,KAAK5C,YAAa,KAAKN,iBAAiB,EACvD4C,EAAU,CAAC,CAACO,EAAK9C,GAAYxF,EAAgB,IAC3C,KAAK0E,mBAAmB6D,mCAAmCD,EAAK9C,GAAYxF,EAAgB,CAAC,EAE/FiI,EAAKC,GACIA,EAAaE,OAAQD,IAAgBA,IAAanI,gBAAgB,CAC1E,EACDwI,GAAY,CAAC,CAAC,EAEVC,EAAqB,KAAKnB,qBAAqBE,KACnDS,EAAKS,GAAc,CACjB,IAAMC,GAAqB,CAAA,EAC3BD,OAAAA,EAAWE,QAAQ,CAACC,GAAOC,KAAO,CAC5BD,KAAUlG,GAAYoG,OACxBJ,GAASK,KAAKF,EAAG,CAErB,CAAC,EACMH,EACT,CAAC,EACDN,GAAe,KAAK5C,YAAa,KAAKN,iBAAiB,EACvD4C,EAAU,CAAC,CAACY,EAAUnD,GAAYxF,EAAgB,IAChD,KAAK0E,mBAAmB6D,mCAAmCI,EAAUnD,GAAYxF,EAAgB,CAAC,EAEpGiJ,GAAU,CAAA,CAAmB,EAC7BT,GAAY,CAAC,CAAC,EAGhB,KAAKU,cAAgBpB,EAAc,CACjCD,EACA,KAAKP,qBACL,KAAKF,6BACLqB,CAAkB,CACnB,EAAEjB,KACDS,EAAI,CAAC,CAACkB,EAAqB9B,GAAqB+B,GAAaC,EAAiB,IAAK,CACjF,IAAMC,GAAcH,EAAoBf,OACrCD,IACCA,IAAanI,kBAAkBuJ,aAC/BlC,GAAoBmC,IAAIrB,GAAYvG,aAAa,IAAMe,GAAY8G,OAAO,EAExEC,GAAsB,CAAC,GAAGL,GAAmB,GAAGC,EAAW,EACjE,OAAO,KAAKK,4BAA4BD,GAAqBN,EAAW,CAC1E,CAAC,EACDZ,GAAY,CAAC,CAAC,EAGhB,KAAK7G,sBAAwB,KAAKuH,cAAc1B,KAC9CS,EAAKC,GACyBA,EAAaD,IAAKE,IAC5CA,IAAaxH,MAAMiJ,SAAS,SAAS,EAAIzB,IAAavG,cAAgB,EAAE,EAE/CiI,KAAMC,IAAM,CAAC,CAACA,EAAC,GAAK,EAChD,CAAC,EAEJ,KAAKC,uBAAyB,KAAKpI,sBAAsB6F,KACvDS,EAAK+B,GAAyB,CAAC,CAACA,CAAoB,CAAC,EAGvD,KAAKtH,OAASoF,EAAc,CAAC,KAAKoB,cAAe3B,EAAaC,KAAKyB,GAAU,EAAE,CAAC,CAAC,CAAC,EAAEzB,KAClFS,EAAI,CAAC,CAACC,EAAc+B,EAAW,IACf,KAAKvE,eAAc,EAAGwC,EAAc+B,EAAW,EAChDC,KAAK,SAAUJ,GAAGK,GAAC,CAC9B,IAAMC,GAAQN,GAAEnL,MAAM0L,YAAW,GAAM,GACjCC,GAAQH,GAAExL,MAAM0L,YAAW,GAAM,GACjCE,GAAQT,GAAEnJ,MAAMsB,QAAU,EAC1BuI,GAAQL,GAAExJ,MAAMsB,QAAU,EAChC,OAAIsI,KAAUC,GACLJ,GAAQE,GAAQ,GAAKF,GAAQE,GAAQ,EAAI,EAE3CC,GAAQC,GAAQ,GAAKD,GAAQC,GAAQ,EAAI,CAClD,CAAC,CACF,EAEDhC,GAAY,CAAC,CAAC,CAElB,CAEgBlG,gBAAc,QAAAmI,GAAA,sBAC5B,IAAMC,EAA+B,MAAMC,GAAe,KAAKC,4BAA4B,EAAK,CAAC,EAC7FC,EAAiBH,GAA8BI,cAAc7C,IAAK8C,GAAcA,EAAU1F,EAAE,GAAK,CAAA,EACjG2F,EAAgBN,GAA8BM,eAAiB,GAEnE,KAAOA,GAAe,CACpB,IAAMC,EAAoB,MAAMN,GAAe,KAAKO,yBAAwB,CAAE,EAC9E,GAAID,GAAmBF,WAAWxB,YAChCsB,EAAiB,CAACI,EAAkBF,UAAUxB,WAAW,EACzDyB,EAAgB,OACX,CACL,IAAMG,EAAoB,MAAMR,GAAe,KAAKC,4BAA4B,GAAOC,CAAc,CAAC,EACtGA,EAAiBM,GAAmBL,cAAc7C,IAAK8C,GAAcA,EAAU1F,EAAE,GAAK,CAAA,EACtF2F,EAAgBG,GAAmBH,eAAiB,EACtD,CACF,CAEA,GAAIH,GAAgB5I,SAAW,EAAG,CAChC,IAAMmJ,EAAa,MAAMT,GAAe,KAAKZ,sBAAsB,EACnE,GAAI,KAAKlI,2BAA0B,GAAM,CAACuJ,EAAY,CACpD,IAAMC,EAAe,MAAMV,GAAe,KAAKW,kCAAkCT,CAAc,CAAC,EAChG,GAAIQ,EAAaE,SAAU,CACzB,IAAMC,EAASH,EAAaG,OAC5B,MAAM,KAAKC,wBAAwBZ,EAAgBW,CAAM,CAC3D,CACF,KAAO,CACL,GAAI,KAAK7F,mCAAkC,EAAI,CAC7C,IAAM+F,EACJ,MAAM,KAAKC,4CAA4Cd,CAAc,EACvE,GAAIa,GAAiCzJ,OAAS,EAAG,CAC/C,IAAMoJ,EAAe,MAAMV,GACzB,KAAKiB,2CAA2CF,EAAiCb,CAAc,CAAC,EAElG,GAAIQ,EAAaE,SAAU,CACzB,IAAMC,EAASH,EAAaG,OAC5B,MAAM,KAAKC,wBAAwBZ,EAAgBW,CAAM,CAC3D,CACF,KAAO,CACL,IAAMA,EAAS,IAAIrE,IAAsB0D,EAAe5C,IAAK4D,GAAM,CAACA,EAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EACpF,MAAM,KAAKJ,wBAAwBZ,EAAgBW,CAAM,CAC3D,CACA,MACF,CACA,MAAM,KAAKC,wBAAwBZ,CAAc,CACnD,CACF,CACF,GAEcc,4CAA4Cd,EAAwB,QAAAJ,GAAA,sBAChF,IAAMqB,EAAsBjB,EACzB5C,IAAKsB,GAAe,CACnB,GAAKA,EAGL,OAAO,KAAK7E,mBACTqH,8CAA8CxC,EAAa,KAAKvJ,iBAAgB,EAAI,KAAKwF,WAAU,EAAI,EAAG,CACzG,SAAS,CACV,EACAgC,KACCS,EAAK+D,GACCA,GAAS/J,OAAS,EACbsH,GAAe,GAEjB,EACR,CAAC,CAER,CAAC,EACAnB,OAAQ6D,GAAM,CAAC,CAACA,CAAC,EACdC,EAAiCC,GAAI,GAAGL,CAAmB,EAAEtE,KACjES,EAAK+D,GAAYA,EAAQI,KAAI,EAAGhE,OAAQ6D,GAAM,CAAC,CAACA,CAAC,CAAC,CAAC,EAErD,OAAO,MAAMtB,GAAeuB,CAA8B,CAC5D,GAEcT,wBAAwBZ,EAA0BW,EAA8B,QAAAf,GAAA,sBAC5F,IAAM4B,EAAO,MAAM,KAAKC,yBAAyBzB,EAAgBW,CAAM,EACnEa,EAAKE,WAAWtK,OAAS,IAC3B,KAAKoF,oBAAoBmF,OAAQC,GAAO,CACtC,IAAM/D,EAAa,IAAIvB,IAAIsF,CAAG,EAC9BJ,OAAAA,EAAKE,WAAW3D,QAAS8D,GAAUhE,EAAWd,IAAI8E,EAAO/J,GAAYoG,KAAK,CAAC,EACpEL,CACT,CAAC,EACG8C,GACF,KAAKvE,4BAA4BuF,OAAQG,GAAQ,CAC/C,IAAMjE,EAAa,IAAIvB,IAAIwF,CAAI,EAC/BN,OAAAA,EAAKE,WAAW3D,QAAS8D,GAAS,CAChC,IAAME,EAAWP,EAAKQ,uBAAuBrD,IAAIkD,CAAK,EAChD/L,EAAO6K,EAAOhC,IAAIoD,GAAY,EAAE,GAAK,CAAA,EAC3ClE,EAAWd,IAAI8E,EAAO/L,CAAI,CAC5B,CAAC,EACM+H,CACT,CAAC,GAGL,KAAKoE,8BAA8BT,EAAKU,MAAOV,EAAKE,WAAWtK,OAAQ4I,EAAe5I,MAAM,CAC9F,GAEQ6K,8BAA8BE,EAAqBC,EAAuBC,EAAgB,CAC5FA,IAAa,EACXD,IAAkB,GAAKD,EACzB,KAAKjI,aAAaoI,eAAe,qCAAqC,EAEtE,KAAKpI,aAAaqI,iBAAiB,8BAA8B,EAE1DJ,EACT,KAAKjI,aAAaoI,eAAe,uCAAwC,CACvEE,2BAA4B,CAC1BC,aAAcC,OAAON,CAAa,EAClCO,WAAYD,OAAOL,CAAQ,GAE9B,EAED,KAAKnI,aAAaqI,iBAAiB,uCAAwC,CACzEC,2BAA4B,CAC1BC,aAAcC,OAAON,CAAa,EAClCO,WAAYD,OAAOL,CAAQ,GAE9B,CAEL,CAEQtB,2CACNtD,EACAmF,EAAgB,CAEhB,OAAO,KAAK7I,cAAc8I,eAAe,KAAK1N,iBAAgB,EAAIyN,CAAM,EAAEjG,KACxES,EAAKoE,GAASA,EAAKsB,YAAc,CAAA,CAAE,EACnC5F,EAAW6F,GACF,KAAK5I,OACT6I,KAAKC,GAAiD,CACrDC,KAAM,CACJC,yBAA0B1F,EAC1B2F,gBAAiBL,EACjB5H,gBAAiB,KAAKA,gBAAe,EACrCR,WAAY,KAAKxF,iBAAgB,GAEnCoG,SAAU,KAAKG,cAAa,EAC7B,EACA2H,YAAW,CACf,CAAC,CAEN,CAEQ5C,kCAAkChD,EAAa,CACrD,OAAO,KAAK1D,cAAc8I,eAAe,KAAK1N,iBAAgB,EAAIsI,CAAG,EAAEd,KACrES,EAAKoE,GAASA,EAAKsB,YAAc,CAAA,CAAE,EACnC5F,EAAW6F,GACF,KAAK5I,OACT6I,KAAKM,GAAwC,CAC5CJ,KAAM,CACJE,gBAAiBL,EACjB5H,gBAAiB,KAAKA,gBAAe,EACrCR,WAAY,KAAKxF,iBAAgB,GAEnCoG,SAAU,KAAKG,cAAa,EAC7B,EACA2H,YAAW,CACf,CAAC,CAEN,CAEQhD,0BAAwB,CAC9B,OAAO,KAAKlG,OACT6I,KAAKO,GAAkC,CACtCL,KAAM,CACJvI,WAAY,KAAKxF,iBAAgB,GAEnCoG,SAAUiI,GAA8B,KAAKrO,iBAAgB,EAAI,KAAKoG,QAAQ,EAC9EkI,MAAO,QACR,EACAJ,YAAW,CAChB,CAEQtD,4BACN2D,EACAC,EAA+B,CAE/B,OAAO,KAAKtF,cAAc1B,KACxBiH,GAAK,CAAC,EACN1G,EAAW2G,GACF,KAAK1J,OACT6I,KAAKc,GAAgC,CACpCZ,KAAM,CACJa,cAAe,CAAA,EACfpJ,WAAY,KAAKxF,iBAAgB,EACjC6O,WAAY,KAAK/J,6BAA6BgK,2BAC5C,KAAK9O,iBAAgB,EACrB,oCACA,CACE+O,WAAY,KAAKpQ,KAAI,EACtB,EAEHuJ,aAAcwG,EACd1I,gBAAiB,KAAKA,gBAAe,EACrCgJ,aAAc,GACdT,iBAAkBA,EAClBU,YAAa,GACbC,iBAAkB,GAClBC,eAAgBX,GAAwB,CAAA,EACxCY,iBAAkB,KAAKtK,6BAA6BgK,2BAClD,KAAK9O,iBAAgB,EACrB,iCAAiC,GAGrCoG,SAAU,KAAKG,cAAa,EAC7B,EACA2H,YAAW,CACf,CAAC,CAEN,CAEc5B,yBACZ+C,EACA7D,EAA8B,QAAAf,GAAA,sBAE9B,IAAM6E,EAAcD,EAASpH,IAAK5C,GACzBsF,GACL,KAAKjG,mBAAmB6K,yBACtB,KAAK/J,WAAU,EACf,KAAKH,GAAE,EACPA,EACA,KAAKW,gBAAe,EACpBwF,GAAQhC,IAAInE,CAAE,CAAC,CAChB,CAEJ,EACKmK,EAAY,MAAMC,QAAQC,IAAIJ,CAAW,EACzCzC,EAAyB,IAAI1F,IACnCqI,EAAU5G,QAAQ,CAACyD,EAAMsD,IAAS,CAC5BtD,GACFQ,EAAuBjF,IAAIyE,EAAKzK,cAAeyN,EAASM,CAAK,CAAC,CAElE,CAAC,EACD,IAAMC,EAAaJ,EAAUpH,OAAQiE,GAASA,IAAS,IAAI,EAAEpE,IAAKoE,GAASA,EAAKzK,aAAa,EAE7F,MAAO,CACLmL,MAAO6C,EAAW3N,SAAWuN,EAAUvN,OACvCsK,WAAYqD,EACZ/C,uBAAwBA,EAE5B,GAEgB3M,kBAAkB2P,EAA6B,QAAApF,GAAA,sBAC7D,IAAM7I,EAAgBiO,EAASjO,cAC3BA,IACmB,MAAM+I,GACzB,KAAKhG,yBAAyBmL,UAAU,CACtCC,KAAM,OACNC,MAAO,mCACPC,QAAS,KAAKpL,iBAAiBqL,QAAQ,qCAAsC,CAC3EC,SAAU,KAAKxR,KAAI,EACnByR,WAAYP,EAASlR,KACtB,EACD0R,kBAAmB,qCACnBC,iBAAkB,iBACnB,CAAC,IAGF,KAAK5L,mBACFxE,kBAAkB0B,CAAa,EAC/B4F,KAAKiH,GAAK,CAAC,CAAC,EACZ9G,UAAW4I,GAAW,CACjBA,GACF,KAAKxL,aAAaqI,iBAAiB,6BAA6B,EAChE,KAAK/F,oBAAoBmF,OAAQC,GAAO,CACtC,IAAM/D,EAAa,IAAIvB,IAAIsF,CAAG,EAC9B/D,OAAAA,EAAWd,IAAIhG,EAAee,GAAY8G,OAAO,EAC1Cf,CACT,CAAC,GAED,KAAK3D,aAAaoI,eAAe,2BAA2B,CAEhE,CAAC,CAGT,GAEQxD,4BAA4BzB,EAA6BsI,EAA8B,CAC7FtI,OAAAA,EAAaU,QAAS6H,GAAQ,CAC5B,IAAMC,EAAaF,EAAQhH,IAAIiH,EAAK7O,aAAa,EAC7C8O,IACFD,EAAK9P,KAAO+P,EAEhB,CAAC,EACMxI,CACT,CAEgBpI,aAAa+P,EAA6B,QAAApF,GAAA,sBACxD,IAAM7I,EAAgBiO,EAASjO,cACzB+O,EAAkBd,GAAUlR,MAAQ,GAC1C,GAAIiD,IAAkB,GACpB,OAEF,IAAMoI,EAAuB,MAAMW,GAAe,KAAKhJ,qBAAqB,EAEtEiP,GADW,MAAMjG,GAAe,KAAKjI,MAAM,GAEtCmH,KAAMC,IAAMA,GAAElI,gBAAkBoI,CAAoB,GAAGrL,MAAQqL,EAC1E,GAAIpI,IAAkBoI,EACpB,OAEF,IAAM6G,EAAe,KAAKnM,mBAAmBoM,eAAelP,CAAa,EAAE4F,KAAKiH,GAAK,CAAC,EAAGjG,GAAY,CAAC,CAAC,EACjG,CAAE7H,KAAMoQ,CAAe,EAAK,MAAMpG,GAAekG,CAAY,EAE7DG,EAAqB,CAAC,UAAW,IADjBD,GAAmB,CAAA,GAAI9I,IAAK6B,IAAMA,IAAGmH,UAAY,EAAE,EAAE7I,OAAQ6D,IAAMA,KAAM,EAAE,CAC3C,EAChDiF,EAA4B,KAAKxM,mBACpCyM,sBAAsBvP,EAAeoP,CAAkB,EACvDxJ,KACCiH,GAAK,CAAC,EACN2C,GAAYC,IACHvL,EAAG,EAAK,CAChB,CAAC,EAEN,GAAIkE,IAAyB,GAAI,CAE/B,GADe,MAAMW,GAAeuG,CAAyB,EACjD,CACV,KAAKnM,aAAaqI,iBAAiB,8CAA8C,EACjF,KAAKnG,4BAA4BuF,OAAQG,IAAQ,CAC/C,IAAMjE,GAAa,IAAIvB,IAAIwF,EAAI,EAC/BjE,OAAAA,GAAWd,IAAIhG,EAAeoP,CAAkB,EACzCtI,EACT,CAAC,EACD,MACF,CACA,KAAK3D,aAAaoI,eAAe,4CAA4C,EAC7E,MACF,CAEA,IAAMmE,EAAsB,KAAK5M,mBAC9BoM,eAAe9G,CAAoB,EACnCxC,KAAKiH,GAAK,CAAC,EAAGjG,GAAY,CAAC,CAAC,EACzB,CAAE7H,KAAM4Q,CAAW,EAAK,MAAM5G,GAAe2G,CAAmB,EAEhEE,IADuBD,GAAe,CAAA,GAAItJ,IAAKgE,IAAMA,GAAEgF,UAAY,EAAE,EAAE7I,OAAQ6D,IAAMA,KAAM,EAAE,EACxD7D,OAAQqJ,IAAMA,KAAM,SAAS,EAClEC,GAA6B,KAAKhN,mBACrCyM,sBAAsBnH,EAAsBwH,EAAc,EAC1DhK,KACCiH,GAAK,CAAC,EACN2C,GAAYC,IACHvL,EAAG,EAAK,CAChB,CAAC,EAEA6L,GAAqB,KAAKhN,yBAAyBmL,UAAU,CACjEC,KAAM,UACNC,MAAO,KAAKlL,6BAA6BgK,2BACvC,KAAK9O,iBAAgB,EACrB,+CAA+C,EAEjDiQ,QAAS,KAAKnL,6BAA6BgK,2BACzC,KAAK9O,iBAAgB,EACrB,kDACA,CAAE4R,mBAAoBjB,EAAiBkB,wBAAyBjB,CAAsB,CAAE,EAE1FkB,WAAY,GACZzB,kBAAmB,kBACnBC,iBAAkB,iBACnB,EAED,GAAI,EADmB,MAAM3F,GAAegH,EAAkB,GAE5D,OAEF,IAAMI,GAA0BL,GAA2BlK,KACzDO,EAAWiK,IACLA,GACKd,EAEFpL,EAAG,EAAK,CAChB,CAAC,GAEY,MAAM6E,GAAeoH,EAAuB,IAE1D,KAAKhN,aAAaqI,iBAAiB,8CAA8C,EACjF,KAAKnG,4BAA4BuF,OAAQG,IAAQ,CAC/C,IAAMjE,GAAa,IAAIvB,IAAIwF,EAAI,EAC/BjE,OAAAA,GAAWd,IAAIhG,EAAeoP,CAAkB,EAChDtI,GAAWd,IAAIoC,EAAsBwH,EAAc,EAC5C9I,EACT,CAAC,GAED,KAAK3D,aAAaoI,eAAe,4CAA4C,CAEjF,GAEgBhM,SAAS0O,EAA6B,QAAApF,GAAA,sBACpD,IAAM7I,EAAgBiO,EAASjO,cAC/B,GAAIA,IAAkB,GACpB,OAEF,IAAMqQ,EAA8C,MAAMtH,GACxD,KAAKjG,mBAAmBoM,eAAelP,CAAa,EAAE4F,KACpDO,EAAWI,GACT,KAAKnD,OACF6I,KAAKqE,GAAoC,CACxCnE,KAAM,CACJ5F,YAAaA,EACbwI,gBAAiBd,EAASlR,MAE5B2P,MAAO,QACR,EACAJ,YAAW,CAAE,CACjB,CACF,EAEC+D,EAAeD,SACjB,KAAKtN,mBACFyM,sBAAsBvP,EAAeqQ,EAAe7I,WAAW,EAC/D5B,KACCiH,GAAK,CAAC,EACN2C,GAAYC,GACHvL,EAAG,EAAK,CAChB,CAAC,EAEH6B,UAAW4I,GAAW,CACjBA,GACF,KAAKxL,aAAaqI,iBAAiB,8CAA8C,EACjF,KAAKnG,4BAA4BuF,OAAQG,GAAQ,CAC/C,IAAMjE,EAAa,IAAIvB,IAAIwF,CAAI,EAC/BjE,OAAAA,EAAWd,IAAIhG,EAAeqQ,EAAe7I,WAAW,EACjDV,CACT,CAAC,GAED,KAAK3D,aAAaoI,eAAe,4CAA4C,CAEjF,CAAC,CAEP,mDApkBWvK,GAAkCuP,EAuDnCC,EAAiB,EAAAD,EACjBE,EAA8B,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,EAAAR,EAAAS,EAAA,CAAA,CAAA,CAAA,+BAxD7BhQ,EAAkCiQ,UAAA,CAAA,CAAA,8BAAA,CAAA,EAAAC,OAAA,CAAA9S,iBAAA,CAAA,EAAA,kBAAA,EAAAqF,GAAA,CAAA,EAAA,IAAA,EAAA1G,KAAA,CAAA,EAAA,MAAA,EAAA6G,WAAA,CAAA,EAAA,YAAA,EAAApG,oBAAA,CAAA,EAAA,qBAAA,EAAAsB,kBAAA,CAAA,EAAA,mBAAA,EAAAgF,eAAA,CAAA,EAAA,gBAAA,EAAA1D,cAAA,CAAA,EAAA,eAAA,EAAAH,2BAAA,CAAA,EAAA,4BAAA,EAAA8D,mCAAA,CAAA,EAAA,oCAAA,CAAA,EAAAoN,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,OAAA,SAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,qBAAA,GAAA,QAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,UAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,KAAA,EAAA,MAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,mBAAA,yBAAA,EAAA,CAAA,kBAAA,GAAA,aAAA,UAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,QAAA,CAAA,EAAAC,SAAA,SAAAC,EAAA/Q,EAAA,CAAA+Q,EAAA,ICvG/C9U,EAAA,EAAA,sBAAA,CAAA,EAA6C,EAAA,4BAAA,EACf,EAAA,iBAAA,EACTC,EAAA,CAAA,+BAA2EC,EAAA,EAAkB,EAEhHK,EAAA,EAAAwU,IAAA,EAAA,CAAA,EAiGC,EAAAC,IAAA,EAAA,CAAA,EAjGDC,GAAA,EAAA,EAAAC,IAAA,CAAA,OAkGFhV,EAAA,SApGqBE,EAAA,CAAA,EAAA2B,EAAAL,GAAA,EAAA,EAAA,0BAAAqC,EAAApC,iBAAA,CAAA,CAAA,kBDmFjBwT,EACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAEAC,GACAC,GACAC,GAGA7P,GACA8P,GAA0B7P,EAAA,EAAA8P,OAAA,CAAA;oHAAA;iIAAA,CAAA,CAAA,CAAA,SAGjBxR,CAAkC,GAAA,wCGzF3CyR,EAAA,EAAA,MAAA,CAAA,EAAiC,EAAA,IAAA,CAAA,EACkCC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,KAAAC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAE,eAAAL,EAAAM,KAAA,CAA0B,CAAA,CAAA,EAClGC,EAAA,CAAA,EACFC,EAAA,EACAZ,EAAA,EAAA,SAAA,CAAA,EAAwBC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,KAAAC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAM,gBAAAT,EAAAM,KAAA,CAA2B,CAAA,CAAA,EAC1DV,EAAA,EAAA,WAAA,CAAA,EAAmCW,EAAA,EAAA,cAAA,EAAYC,EAAA,EAAW,EACnD,yBALNE,EAAA,EAAAC,GAAA,OAAA,UAAAX,EAAAM,MAAA,GAAAM,EAAA,EACDF,EAAA,EAAAG,EAAA,IAAAb,EAAAM,MAAA,GAAA,6BAHNQ,EAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,oBAAAC,EAAAhB,EAAAM,MAAA,EAAA,EAAA,8BAcEV,EAAA,EAAA,sCAAA,CAAA,EAA2D,EAAA,oBAAA,CAAA,EAEvDW,EAAA,CAAA,EACFC,EAAA,EAAoB,uBAHeS,EAAA,WAAA,QAAA,EAEjCP,EAAA,CAAA,EAAAG,EAAA,IAAAK,EAAAC,SAAA,GAAA,8BAKJvB,EAAA,EAAA,sCAAA,CAAA,EAAgF,EAAA,mBAAA,EAC3D,EAAA,IAAA,EAAA,EAEfW,EAAA,CAAA,EACFC,EAAA,EAAI,EACc,uBALeS,EAAA,WAAA,UAAA,EAAuB,YAAA,EAAA,EAE3BP,EAAA,CAAA,EAAAU,GAAA,OAAAF,EAAAG,YAAAT,EAAA,EAC3BF,EAAA,EAAAG,EAAA,IAAAK,EAAAG,YAAA,GAAA,8BAMNzB,EAAA,EAAA,sCAAA,CAAA,EAA0D,EAAA,mBAAA,EACrC,EAAA,IAAA,EAAA,EAEfW,EAAA,CAAA,EACFC,EAAA,EAAI,EACc,uBALeS,EAAA,WAAA,OAAA,EAE9BP,EAAA,CAAA,EAAAC,GAAA,OAAA,OAAAO,EAAAI,MAAA,GAAAV,EAAA,EACDF,EAAA,EAAAG,EAAA,IAAAK,EAAAI,MAAA,GAAA,6BApBRR,EAAA,EAAAS,IAAA,EAAA,EAAA,sCAAA,CAAA,EAAqB,EAAAC,IAAA,EAAA,EAAA,sCAAA,CAAA,EAOG,EAAAC,IAAA,EAAA,EAAA,sCAAA,CAAA,oBAPxBT,EAAAE,EAAAC,SAAA,EAAA,EAAA,EAOAT,EAAA,EAAAM,EAAAE,EAAAG,YAAA,EAAA,EAAA,EASAX,EAAA,EAAAM,EAAAE,EAAAI,MAAA,EAAA,EAAA,GD1CF,IA+CaI,GA/CbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,KACAC,KAOAC,KACAC,KACAC,KAEAC,KACAC,KAGAC,KACAC,KAGAC,KACAC,gCAuBahB,IAAgC,IAAA,CAAvC,MAAOA,CAAgC,CAkB3CiB,mBAAmBC,EAAU,CAC3B,KAAKC,OAAOC,KAAKC,GAA4B,CAC3CC,MAAO,QACPC,KAAM,CACJL,GAAIA,GAEP,CACH,CAUMM,oBAAoBN,EAAU,QAAAO,GAAA,sBAElC,IAAIC,EAAU,GADM,MAAMC,GAAe,KAAKC,OAAOC,YAAY,CACrC,IAAIC,GAAYC,QAAQC,IAAI,IAAIF,GAAYC,QAAQE,UAAUC,IAAI,GAAGC,QAC/F,eACAjB,CAAE,EAEJQ,EAAUA,EAAU,cAAc,KAAKU,QAAQC,SAASC,QAAQ,GAChE,KAAKF,QAAQhB,KAAKM,EAAS,QAAQ,GAAGa,MAAK,CAC7C,GAuCAC,YAC8CZ,EAC3BT,EACTsB,EACSC,EACAC,EACTP,EACAQ,EACAC,EAAgC,CAPI,KAAAjB,OAAAA,EAC3B,KAAAT,OAAAA,EACT,KAAAsB,iBAAAA,EACS,KAAAC,aAAAA,EACA,KAAAC,qBAAAA,EACT,KAAAP,OAAAA,EACA,KAAAQ,UAAAA,EACA,KAAAC,gBAAAA,EAzFV,KAAA3B,GAAK4B,GAAM,EAAE,EACb,KAAAC,KAAOD,GAAM,EAAE,EACf,KAAAE,WAAaF,GAAkB,SAAS,EAErB,KAAAG,oBAAsB,KAAKrB,OAAOsB,SAASC,gBAAkBC,EAAG,EAAI,EACpE,KAAAC,eAAiB,KAAKJ,oBAAoBK,KAC3DC,EAAKC,GACHA,EAAgB,CAAC,KAAKC,eAAgB,KAAKC,qBAAqB,EAAI,CAAC,KAAKA,qBAAqB,CAAC,CACjG,EAEc,KAAAD,eAA6B,CAC5CE,MAAO,KAAKlB,iBAAiBmB,QAAQ,wCAAwC,EAC7EC,SAAWtC,GAA6B,CACtC,KAAKN,mBAAmBM,EAAKuC,UAAY,EAAE,CAC7C,GAYe,KAAAJ,sBAAoC,CACnDC,MAAO,KAAKlB,iBAAiBmB,QAAQ,mCAAmC,EACxEC,SAAWtC,GAA6B,CACtC,KAAKC,oBAAoBD,EAAKuC,UAAY,EAAE,CAC9C,EACAC,KAAM,eAaW,KAAAC,aAAe,CAChCC,EACAC,IAEOD,EAAaV,IAAKY,GAAe,CACtC,IAAMC,EAAW,KAAKzB,qBAAqB0B,qBAAqB,UAAWF,EAAYG,kBAAoB,CAAA,CAAE,EAEvGC,EAAcC,GAClB,KAAK9B,aAAa+B,2BAA2BN,EAAYG,iBAAkBI,GAAoBC,WAAW,GACtGC,aAAe,EAAE,EAGvB,MAAO,CACLC,cAAeV,EAAYU,cAC3Bf,SAAUK,EAAYG,iBAAiBQ,YACvC/B,KAAMqB,EACNW,WAAY,GAAGb,CAAW,IAAIpC,GAAYC,QAAQC,IAAI,IAAIF,GAAYC,QAAQE,UAAU+C,OAAO,GAAG7C,QAChG,eACAgC,EAAYG,iBAAiBQ,aAAe,EAAE,EAEhDf,KAAM,OACNkB,MAAOd,EAAYc,MAAQ,CAAA,GAAIC,OAAQC,IAAQA,KAAQ,SAAS,EAChEvF,MAAOwF,GAAsBb,CAAW,EACxC3F,MAAO,KAAK8D,aAAa+B,2BAA2BN,EAAYG,iBAAkBI,GAAoBW,KAAK,GACvGT,YACJjF,YAAa,KAAK+C,aAAa+B,2BAC7BN,EAAYG,iBACZgB,EAAYC,kBAAkB,GAC7BX,YACHnF,SAAU,KAAKiD,aAAa+B,2BAC1BN,EAAYG,iBACZgB,EAAYE,eAAe,GAC1BZ,YAEP,CAAC,CAYA,CAEHjG,eAAeC,EAAa,CAC1B,KAAKwD,OAAOhB,KACV,UAAUxC,CAAK,GACf,eACA,+FAA+F,CAEnG,CACAG,gBAAgBH,EAAa,CAC3B,KAAKgE,UAAU6C,KAAK7G,CAAK,EACzB,KAAKiE,gBAAgB6C,iBAAiB,uCAAwC,CAAEC,OAAQ,OAAO,CAAE,CACnG,iDAvGW3F,GAAgC4F,EAmFjCC,EAAiB,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,MAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,CAAA,CAAA,CAAA,+BAnFhBpG,EAAgCqG,UAAA,CAAA,CAAA,+BAAA,CAAA,EAAAC,OAAA,CAAApF,GAAA,CAAA,EAAA,IAAA,EAAA6B,KAAA,CAAA,EAAA,MAAA,EAAAC,WAAA,CAAA,EAAA,YAAA,CAAA,EAAAuD,SAAA,CAAAC,GAFhC,CAAC,CAAEC,QAASP,OAAQQ,SAAUtE,MAAM,CAAE,CAAC,CAAA,EAAAuE,MAAA,EAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,KAAA,OAAA,aAAA,mBAAA,oBAAA,sBAAA,iBAAA,gBAAA,oCAAA,EAAA,CAAA,EAAA,gBAAA,OAAA,EAAA,CAAA,SAAA,SAAA,MAAA,WAAA,EAAA,QAAA,MAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,CAAA,SAAA,GAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,WAAA,WAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,SAAA,SAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IC7CpDE,EAAA,EAAA,+BAAA,CAAA,eAYA7H,EAAA,EAAA8H,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAA4C,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAD,EAAA,0BAX1C5H,EAAA,KAAAyH,EAAA9F,GAAA,CAAA,EAAW,OAAA8F,EAAAjE,KAAA,CAAA,EACI,aAAAiE,EAAAhE,WAAA,CAAA,EACY,mBAAA,SAAA,EACG,oBAAAqE,CAAA,EACG,sBAAAC,CAAA,EACI,iBAAAN,EAAAhD,YAAA,EACN,gBAAAuD,EAAA,EAAA,EAAAP,EAAA3D,cAAA,CAAA,EACS,qCAAA,EAAA,kBD8BtCmE,GACAC,GACAC,GACAC,GACAC,GACAC,EAAS,EAAAC,OAAA,CAAA;+HAAA;mHAAA,CAAA,CAAA,CAAA,SAIA9H,CAAgC,GAAA,IE/C7C,IAUa+H,IAVbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,SAQaL,KAAyC,IAAA,CAAhD,MAAOA,CAAyC,CANtDM,aAAA,CAOE,KAAAC,KAAOC,EAAOC,EAA+B,EAC1B,KAAAC,GAAK,KAAKH,KAAKI,WACf,KAAAC,KAAO,KAAKL,KAAKK,qDAHzBZ,EAAyC,CAAA,+BAAzCA,EAAyCa,UAAA,CAAA,CAAA,0CAAA,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,KAAA,OAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GCVtDE,EAAA,EAAA,gCAAA,CAAA,OAA+BC,EAAA,KAAAF,EAAAT,EAAA,EAAS,OAAAS,EAAAP,IAAA,EAAc,aAAA,SAAA,iBDM1CU,EAAgC,EAAAC,OAAA,CAAA;mHAAA,CAAA,CAAA,CAAA,SAI/BvB,CAAyC,GAAA,+BGElDwB,EAAA,EAAA,IAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,uBAFwBC,EAAA,OAAAC,EAAAC,QAAAC,EAAA,EACtBC,EAAA,EAAAC,EAAA,IAAAJ,EAAAC,QAAA,GAAA,6BAFJI,EAAA,EAAAC,IAAA,EAAA,EAAA,IAAA,CAAA,oBAAAC,EAAAP,EAAAC,QAAA,EAAA,EAAA,8BASEL,EAAA,EAAA,sCAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,uBAFqCC,EAAA,WAAA,aAAA,EACnCI,EAAA,EAAAC,EAAA,IAAAI,EAAAC,QAAA,GAAA,8BAIFb,EAAA,EAAA,sCAAA,CAAA,EAA0D,EAAA,mBAAA,EACrC,EAAA,IAAA,CAAA,EAEfC,EAAA,CAAA,EACFC,EAAA,EAAI,EACc,uBALeC,EAAA,WAAA,OAAA,EAE9BI,EAAA,CAAA,EAAAO,GAAA,OAAA,OAAAF,EAAAG,MAAA,GAAAT,EAAA,EACDC,EAAA,EAAAC,EAAA,IAAAI,EAAAG,MAAA,GAAA,6BATRN,EAAA,EAAAO,IAAA,EAAA,EAAA,sCAAA,CAAA,EAAoB,EAAAC,IAAA,EAAA,EAAA,sCAAA,CAAA,oBAApBN,EAAAC,EAAAC,QAAA,EAAA,EAAA,EAKAN,EAAA,EAAAI,EAAAC,EAAAG,MAAA,EAAA,EAAA,GDxBF,IAqBaG,IArBbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,cAcaT,KAAgC,IAAA,CAAvC,MAAOA,CAAgC,CAyC3CU,YAA6BC,EAA6B,CAA7B,KAAAA,aAAAA,EAxC7B,KAAAC,GAAKC,GAAM,EAAE,EACb,KAAAC,KAAOD,GAAM,EAAE,EACf,KAAAE,WAAaF,GAAkB,SAAS,EACxC,KAAAG,2BAA6BC,EAAS,IACjB,KAAKF,WAAU,IACZ,SACvB,EAEkB,KAAAG,aAAe,CAChCC,EACAC,IAEOD,EAAaE,IAAKC,GAAe,CACtC,IAAMC,EAAcC,GAClB,KAAKb,aAAac,2BAA2BH,EAAYI,iBAAkBC,EAAYC,kBAAkB,GACrGC,aAAe,EAAE,EAEvB,MAAO,CACLC,cAAeR,EAAYQ,cAC3BC,SACE,KAAKpB,aAAac,2BAA2BH,EAAYI,iBAAkBM,GAAeC,SAAS,GAC/FJ,aAAe,GACrBf,KACE,KAAKH,aAAac,2BAA2BH,EAAYI,iBAAkBC,EAAYO,WAAW,GAC9FL,aAAe,GACrBM,WAAY,GAAGf,CAAW,IAAIgB,GAAYC,QAAQC,IAAI,IAAIF,GAAYC,QAAQE,UAAUC,OAAO,GAAGC,QAChG,eACAnB,EAAYI,iBAAiBgB,aAAe,EAAE,EAEhDC,KAAMrB,EAAYqB,MAAQ,CAAA,EAC1BC,KAAM,WAENjD,QAAS,KAAKkD,sBAAsBvB,CAAW,EAC/CnC,QAAS,KAAKwB,aAAac,2BAA2BH,EAAYI,iBAAkBC,EAAYmB,cAAc,GAC1GjB,YACJhC,MAAOkD,GAAsBxB,CAAW,EAE5C,CAAC,CAG0D,CAE7DsB,sBAAsBvB,EAAwB,CAC5C,IAAM0B,EAAW,KAAKrC,aAAac,2BACjCH,EAAYI,iBACZC,EAAYsB,0BAA0B,GACrCpB,YAEGqB,EAAW,KAAKvC,aAAac,2BACjCH,EAAYI,iBACZC,EAAYwB,0BAA0B,GACrCtB,YAEGuB,EAAO,KAAKzC,aAAac,2BAC7BH,EAAYI,iBACZC,EAAY0B,yBAAyB,GACpCxB,YAEGyB,EAAQ,KAAK3C,aAAac,2BAC9BH,EAAYI,iBACZC,EAAY4B,0BAA0B,GACrC1B,YAEG2B,EAAU,KAAK7C,aAAac,2BAChCH,EAAYI,iBACZC,EAAY8B,4BAA4B,GACvC5B,YAEG6B,EAAM,KAAK/C,aAAac,2BAC5BH,EAAYI,iBACZC,EAAYgC,+BAA+B,GAC1C9B,YAEH,MAAO,CAACmB,EAAUE,EAAUE,EAAME,EAAOE,EAASE,CAAG,EAAEE,OAAOC,OAAO,EAAEC,KAAK,IAAI,CAClF,iDA3EW9D,GAAgC+D,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAhChE,EAAgCiE,UAAA,CAAA,CAAA,+BAAA,CAAA,EAAAC,OAAA,CAAAtD,GAAA,CAAA,EAAA,IAAA,EAAAE,KAAA,CAAA,EAAA,MAAA,EAAAC,WAAA,CAAA,EAAA,YAAA,CAAA,EAAAoD,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,KAAA,OAAA,aAAA,mBAAA,oBAAA,sBAAA,iBAAA,4BAAA,EAAA,CAAA,SAAA,SAAA,MAAA,WAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,ICrB7CE,EAAA,EAAA,+BAAA,CAAA,EAUAlF,EAAA,EAAAmF,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAA4C,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAD,EAAA,0BAT1C1F,EAAA,KAAAuF,EAAA5D,GAAA,CAAA,EAAW,OAAA4D,EAAA1D,KAAA,CAAA,EACI,aAAA0D,EAAAzD,WAAA,CAAA,EACY,mBAAA,SAAA,EACG,oBAAA8D,CAAA,EACG,sBAAAC,CAAA,EACI,iBAAAN,EAAAtD,YAAA,EACN,6BAAAsD,EAAAxD,2BAAA,CAAA,kBDYrB+D,GAAuCC,GAAoCC,EAAe,EAAAC,OAAA,CAAA;8HAAA,CAAA,CAAA,CAAA,SAEzFlF,CAAgC,GAAA,4BGRvCmF,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,iDAAA,EAAA,GAAA,2BAIFL,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,kDAAA,EAAA,GAAA,2BAIFL,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,SADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,2CAAA,EAAA,GAAA,6BAZJC,EAAA,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,EAAmB,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,EAKC,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,4BANtBC,GAAAC,EAAAC,EAAAC,UAAAC,EAAAC,UAAA,EAAAJ,IAAAG,EAAAE,WAAA,EAAAL,IAAAG,EAAAG,KAAA,EAAA,EAAA,8BA0BIjB,EAAA,EAAA,MAAA,EACEC,EAAA,CAAA,+BAEFC,EAAA,uBAFEC,EAAA,EAAAe,GAAA,IAAAb,EAAA,EAAA,EAAA,wCAAA,EAAA,KAAAc,GAAA,EAAA,EAAAC,EAAAC,aAAA,YAAA,EAAA,GAAA,8BAKFrB,EAAA,EAAA,MAAA,EACEC,EAAA,CAAA,+BAEFC,EAAA,uBAFEC,EAAA,EAAAe,GAAA,IAAAb,EAAA,EAAA,EAAA,0CAAA,EAAA,KAAAc,GAAA,EAAA,EAAAC,EAAAE,cAAA,YAAA,EAAA,GAAA,2BAKFtB,EAAA,EAAA,MAAA,EAAMC,EAAA,CAAA,mBAAwEC,EAAA,SAAxEC,EAAA,EAAAe,GAAA,GAAAb,EAAA,EAAA,EAAA,qCAAA,EAAA,KAAAkB,EAAA,EAAA,8BAlBVvB,EAAA,EAAA,MAAA,CAAA,EAAiC,EAAA,MAAA,EAE7BC,EAAA,CAAA,uCAEFC,EAAA,EACAI,EAAA,EAAAkB,IAAA,EAAA,EAAA,MAAA,EAAyB,EAAAC,IAAA,EAAA,EAAA,MAAA,EAMC,EAAAC,IAAA,EAAA,EAAA,MAAA,eAS5BxB,EAAA,uBAlBIC,EAAA,CAAA,EAAAe,GAAA,IAAAb,EAAA,EAAA,EAAA,qCAAA,EAAA,KAAAc,GAAA,EAAA,EAAAC,EAAAO,OAAA,EAAAP,EAAAQ,QAAA,EAAA,GAAA,EAGFzB,EAAA,CAAA,EAAAO,EAAAU,EAAAC,aAAA,EAAA,EAAA,EAMAlB,EAAA,EAAAO,EAAAU,EAAAE,cAAA,EAAA,EAAA,EAMAnB,EAAA,EAAAO,GAAAmB,EAAAxB,EAAA,EAAA,GAAAe,EAAAU,UAAA,GAAA,EAAA,GAAAD,CAAA,GDhDJ,IAwCaE,GAxCbC,GAAAC,EAAA,KAAAC,IAEAC,KAQAC,KACAC,KAEAC,KACAC,IACAC,IACAC,KACAC,4BAuBaX,IAAoC,IAAA,CAA3C,MAAOA,CAAoC,CAuE/CY,YACmBC,EACAC,EACAC,EAAsC,CAFtC,KAAAF,gCAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,mBAAAA,EAzEnB,KAAAC,GAAKC,GAAM,EAAE,EACb,KAAAC,KAAOD,GAAM,EAAE,EACf,KAAAE,WAAaF,GAAkB,aAAa,EAEzB,KAAAjC,UAAS,aACT,KAAAC,WAAU,cACV,KAAAC,KAAI,OAEJ,KAAAkC,aAAe,CAACC,EAA6BC,IACvDD,EAAaE,IAAKC,GAAe,CACtC,IAAMC,EAAW,KAAKZ,gCAAgCa,qBACpD,cACAF,EAAYG,kBAAoB,CAAA,CAAE,EAG9BC,EAAgB,KAAKd,aAAae,2BACtCL,EAAYG,iBACZG,EAAYC,iBAAiB,EAEzBzC,EAAe,KAAKwB,aAAae,2BACrCL,EAAYG,iBACZK,GAAeC,2BAA2B,EAEtCC,EAAY,KAAKpB,aAAae,2BAClCL,EAAYG,iBACZG,EAAYK,4BAA4B,EAEpCrD,EAAS,KAAKgC,aAAae,2BAC/BL,EAAYG,iBACZG,EAAYM,iBAAiB,EAEzBC,EAAa,KAAKvB,aAAae,2BACnCL,EAAYG,iBACZG,EAAYQ,4BAA4B,EAOpCC,GALgB,KAAKzB,aAAae,2BACtCL,EAAYG,iBACZG,EAAYU,qBAAqB,GAGDC,aAAe,GAC3CC,GAAUL,GAAYI,aAAe,GAGrC1C,IADYwC,IAAcG,GAAU,KAAK3B,mBAAmB4B,aAAaJ,EAAU,EAAIK,IAChEC,KAC3BtB,EAAKuB,IAAaA,IAAUC,QAAU,CAAA,CAAE,EACxCxB,EAAKwB,IAAWA,GAAOC,KAAMC,IAAUA,GAAMjC,KAAO0B,EAAO,CAAC,EAC5DnB,EAAK0B,IAAUA,IAAO/B,MAAQ,EAAE,CAAC,EAGnC,MAAO,CACLgC,cAAe1B,EAAY0B,cAC3BC,SAAU3B,EAAYG,iBAAiByB,YACvClC,KAAMO,EACN4B,WACE,GAAG/B,CAAW,IAAIgC,GAAYC,YAAYC,IAAI,IAAIF,GAAYC,YAAYE,UAAUC,OAAO,GAAGC,QAC5F,eACAnC,EAAYG,iBAAiByB,aAAe,EAAE,EAElDQ,KAAMpC,EAAYoC,MAAQ,CAAA,EAC1BhE,MAAOgC,GAAeA,eAAehC,OAAS,EAC9CC,SAAU+B,GAAeA,eAAeiC,cAAgB,MACxDvE,aAAcA,GAAcwE,UAC5BvE,cAAe2C,GAAW4B,UAC1BhF,OAAQA,GAAQ2D,aAAe,OAC/B1C,WAAYA,GAEhB,CAAC,CAOA,iDA3EQC,GAAoC+D,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,+BAApClE,EAAoCmE,UAAA,CAAA,CAAA,mCAAA,CAAA,EAAAC,OAAA,CAAApD,GAAA,CAAA,EAAA,IAAA,EAAAE,KAAA,CAAA,EAAA,MAAA,EAAAC,WAAA,CAAA,EAAA,YAAA,CAAA,EAAAkD,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,KAAA,OAAA,aAAA,mBAAA,iBAAA,sBAAA,mBAAA,EAAA,CAAA,QAAA,QAAA,EAAA,oBAAA,EAAA,CAAA,QAAA,MAAA,EAAA,oBAAA,EAAA,CAAA,QAAA,OAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAjF,EAAA,IAAAiF,EAAA,ICxCjDC,EAAA,EAAA,+BAAA,CAAA,EAUAnG,EAAA,EAAAoG,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAA0C,EAAAC,IAAA,EAAA,GAAA,cAAA,KAAA,EAAAD,EAAA,0BATxCE,EAAA,KAAAtF,EAAAwB,GAAA,CAAA,EAAW,OAAAxB,EAAA0B,KAAA,CAAA,EACI,aAAA1B,EAAA2B,WAAA,CAAA,EACY,mBAAA,aAAA,EACO,iBAAA3B,EAAA4B,YAAA,EACH,sBAAA2D,CAAA,EACM,oBAAAC,CAAA,kBD0BnCC,GACAC,GAAiBC,GACjBC,GACAC,EAAeC,EACfC,GAAiBC,GACjBC,EAAS,EAAAC,OAAA,CAAA;oHAAA;kIAAA,CAAA,CAAA,CAAA,SAGA1F,CAAoC,GAAA,IExCjD,IAUa2F,IAVbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,SAQaL,KAA8C,IAAA,CAArD,MAAOA,CAA8C,CAN3DM,aAAA,CAOE,KAAAC,KAAOC,EAAOC,EAA+B,EAC1B,KAAAC,GAAK,KAAKH,KAAKI,WACf,KAAAC,KAAO,KAAKL,KAAKK,qDAHzBZ,EAA8C,CAAA,+BAA9CA,EAA8Ca,UAAA,CAAA,CAAA,8CAAA,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,KAAA,OAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GCV3DE,EAAA,EAAA,oCAAA,CAAA,OAAmCC,EAAA,KAAAF,EAAAT,EAAA,EAAS,OAAAS,EAAAP,IAAA,EAAc,aAAA,SAAA,iBDM9CU,EAAoC,EAAAC,OAAA,CAAA;mHAAA,CAAA,CAAA,CAAA,SAInCvB,CAA8C,GAAA,IEV3D,IAAAwB,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,KAAAC,KAEAC,KAIAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCbA,IAAAC,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCLA,IAAAC,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,OCHA,IAAAC,GAAAC,EAAA,KAAAC,KACAC,KAEAC,kCCQIC,EAAA,CAAA,EACEC,EAAA,CAAA,sBAAAC,EAAA,EAAAC,EAAA,IAAAC,EAAAC,oBAAA,EAAA,GAAA,0BAGAC,EAAA,EAAA,MAAA,CAAA,EAfN,IAsBaC,IAtBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,IAEAC,KACAC,kBAiBaP,KAAgC,IAAA,CAAvC,MAAOA,CAAgC,CAG3C,IAAaQ,aAAaC,EAAmC,CACvDA,GAAOC,OAAS,GAAKD,EAAM,CAAC,EAAEE,QAChC,KAAKC,kBAAkBC,IAAIJ,EAAM,CAAC,EAAEE,MAAM,CAE9C,CASAG,YAA6BC,EAA4C,CAA5C,KAAAA,sBAAAA,EAf7B,KAAAH,kBAAoBI,EAAe,EAAE,EACrC,KAAAC,gBAAkBD,EAA6B,CAAA,CAAE,EAOjD,KAAAlB,oBAAsBoB,EAAS,IACzB,KAAKD,gBAAe,EAAGP,SAAW,EAC7B,GAEF,KAAKO,gBAAe,EAAG,CAAC,GAAGE,aAAe,KAAKP,kBAAiB,CACxE,EAGCQ,GAAa,KAAKR,iBAAiB,EAChCS,KACCC,EAAWC,GACF,KAAKR,sBAAsBS,gBAAgB,CAACD,CAAU,CAAC,CAC/D,EACDE,GAAkB,CAAE,EAErBC,UAAWC,GAAU,CACpB,KAAKV,gBAAgBJ,IAAIc,CAAM,CACjC,CAAC,CACL,iDA3BW3B,GAAgC4B,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAhC7B,EAAgC8B,UAAA,CAAA,CAAA,gCAAA,CAAA,EAAAC,OAAA,CAAAvB,aAAA,cAAA,EAAAwB,SAAA,CAAAC,GAJhC,CAAA,CAAE,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,GAPXE,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EAA0D,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,kBAA3CC,EAAA,OAAAL,EAAAzC,oBAAA,CAAA,EAA6B,WAAA+C,CAAA,kBASpCC,EAAYC,GAAEC,CAAe,EAAAC,OAAA,CAAA;+HAAA,CAAA,CAAA,CAAA,SAE5BjD,CAAgC,GAAA,+BCGrCkD,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,0BAFsDC,EAAA,QAAAC,CAAA,EACpDC,EAAA,EAAAC,EAAA,IAAAF,GAAA,KAAA,KAAAA,EAAAG,YAAA,GAAA,8BAXNP,EAAA,EAAA,kBAAA,CAAA,EACEQ,EAAA,EAAA,QAAA,CAAA,mBAQAR,EAAA,EAAA,mBAAA,EAAA,CAAA,EACES,EAAA,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,EAGFR,EAAA,EAAmB,kCAXjBG,EAAA,EAAAF,EAAA,cAAAQ,EAAA,EAAA,EAAA,6CAAA,CAAA,EAAyE,cAAAC,EAAAC,WAAA,EAG9C,kBAAAC,CAAA,EAIaT,EAAA,CAAA,EAAAF,EAAA,cAAAS,EAAAG,UAAAC,CAAA,CAAA,EACTX,EAAA,CAAA,EAAAF,EAAA,UAAAS,EAAAK,iBAAA,CAAA,2BAMjCjB,EAAA,EAAA,KAAA,EAAK,EAAA,kBAAA,CAAA,EAEDQ,EAAA,EAAA,QAAA,CAAA,EACFN,EAAA,EAAkB,SADYG,EAAA,CAAA,EAAAF,EAAA,WAAA,EAAA,GAjCtC,IAqDae,IArDbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,+CA2Cab,KAAiC,IAAA,CAAxC,MAAOA,CAAiC,CAC5C,IAAac,QAAQC,EAAa,CAChC,KAAKC,SAASC,IAAIF,CAAK,CACzB,CAoBA,IAAaG,aAAaH,EAAmC,CACvDA,GAAOI,OAAS,GAAKJ,EAAM,CAAC,EAAEK,QAChC,KAAKzB,YAAY0B,SAASN,EAAM,CAAC,EAAEK,MAAM,CAE7C,CAEAE,YAAU,CACR,KAAK3B,YAAY0B,SAAS,EAAE,CAC9B,CAiBAE,YAAoBC,EAA4C,CAA5C,KAAAA,sBAAAA,EA5CV,KAAAC,aAAe,IAAIC,GAC7B,KAAA/B,YAAwD,IAAIgC,GAAyC,GAAI,CACvGC,YAAa,GACd,EAED,KAAAC,WAAaC,GAAS,KAAKnC,YAAY8B,aAAc,CAAEP,aAAc,EAAE,CAAE,EAEzE,KAAAF,SAAWe,EAAO,EAAE,EACpB,KAAAC,kBAAoBC,GAAa,KAAKJ,UAAU,EAAEK,KAChDC,GAAkB,EAClBC,EAAWP,GAAc,CACvB,IAAMQ,EAAa,OAAOR,GAAe,SAAWA,EAAaA,GAAYS,YAE7E,OAAO,KAAKd,sBAAsBe,sBAAsBF,GAAc,EAAE,CAC1E,CAAC,CAAC,EAGJ,KAAAtC,iBAAmB+B,GAAS,KAAKE,iBAAiB,EAYlD,KAAAQ,gBAAkBP,GAAa,KAAKJ,UAAU,EAAEK,KAC9CE,EAAWrB,GAAS,CAClB,IAAIuB,EAAc,GAMlB,OALI,OAAOvB,GAAU,SACnBuB,EAAcvB,EAEduB,EAAcvB,EAAMuB,aAAe,GAEhCA,EAGE,KAAKd,sBAAsBiB,gBAAgB,CAACH,CAAW,CAAC,EAFtDI,EAAG,CAAA,CAA0B,CAGxC,CAAC,CAAC,EAIFC,GAAO,IAAK,CACV,IAAM5B,EAAQ,KAAKc,WAAU,EAE7B,GAAId,IAAU,GAAI,CAChB,KAAKU,aAAamB,KAAK,CAAA,CAAE,EACzB,MACF,CACA,GAAI,OAAO7B,GAAU,SAAU,CAC7B,KAAKU,aAAamB,KAAK,CAAC,CAAExB,OAAQL,CAAK,CAAE,CAAC,EAC1C,MACF,CACA,KAAKU,aAAamB,KAAK,CAAC,CAAExB,OAAQL,GAAOuB,WAAW,CAAE,CAAC,CACzD,CAAC,CACH,CAEAzC,UAAUE,EAAsC,CAC9C,OAAQ8C,GACF,CAACA,GAAW,CAAC9C,EACR,GAEL,OAAO8C,GAAY,SACA9C,EAAiB+C,KAAMzD,GAAgBA,EAAYiD,cAAgBO,CAAO,GAC1ExD,aAAewD,EAE/BA,GAASxD,WAEpB,iDA3EWW,GAAiC+C,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAjChD,EAAiCiD,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,OAAA,CAAApC,QAAA,UAAAI,aAAA,cAAA,EAAAiC,QAAA,CAAA1B,aAAA,cAAA,EAAA2B,SAAA,CAAAC,GAfjC,CACT,CACEC,QAASC,GACTC,YAAaC,GAAW,IAAMzD,CAAiC,EAChE,CACF,CAAA,EAAA0D,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,gBAAA,SAAA,EAAA,OAAA,UAAA,EAAA,CAAA,gBAAA,QAAA,EAAA,CAAA,OAAA,OAAA,WAAA,GAAA,cAAA,8BAAA,EAAA,cAAA,cAAA,iBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,OAAA,WAAA,GAAA,EAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IA5BCvE,EAAA,EAAAyE,IAAA,EAAA,EAAA,kBAAA,CAAA,eAeAzE,EAAA,EAAA0E,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,mBAfyCjF,EAAA,OAAAQ,EAAA,EAAA,EAAAsE,EAAAvB,eAAA,CAAA,EAA8B,WAAA2B,CAAA,kBA8BvEC,EAAYC,GAAAC,GAAAC,GACZC,EAAeC,EACfC,GAAmBC,GAAAC,GAAAC,GACnBC,GAAcC,GACdC,GAAqBC,GACrBC,GAAqBC,GAAAC,GAAAC,EAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAGZtF,CAAiC,GAAA,ICrD9C,IASsBuF,GATtBC,GAAAC,EAAA,KAAAC,IACAC,IACAC,QAOsBL,IAAmC,IAAA,CAAnD,MAAgBA,CAAmC,CAJzDM,aAAA,CAKE,KAAAC,oBAAsBC,EAAiB,CAAA,CAAE,EACzC,KAAAC,kBAAoBD,EAAY,CAAA,CAAE,EAKlC,KAAAE,sBAAwBC,EAAS,IAAK,CACpC,GAAI,KAAKF,kBAAiB,EAAGG,SAAW,EACtC,MAAO,GAET,IAAMC,EAAoB,KAAKC,eAAe,KAAKL,kBAAiB,EAAG,CAAC,CAAC,GAAK,KAAKF,oBAAmB,EAAG,CAAC,EAC1G,OAAI,KAAKE,kBAAiB,EAAGG,SAAW,EAC/BC,EAEF,GAAGA,CAAiB,KAAK,KAAKJ,kBAAiB,EAAGG,OAAS,CAAC,EACrE,CAAC,EAbD,IAAaG,aAAaC,EAAmC,CAC3D,KAAKT,oBAAoBU,IAAID,GAAOE,IAAKC,GAAMA,EAAEC,QAAU,EAAE,EAAEC,OAAOC,OAAO,GAAK,CAAA,CAAE,CACtF,iDALoBtB,EAAmC,CAAA,+BAAnCA,EAAmCuB,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,OAAA,CAAAT,aAAA,cAAA,EAAAU,MAAA,EAAAC,KAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,EAAAC,aAAA,CAF7CC,EAAcC,CAAe,EAAAC,cAAA,CAAA,CAAA,CAAA,SAEnBjC,CAAmC,GAAA,+BCErDkC,EAAA,CAAA,EACEC,EAAA,EAAA,OAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,sBADEC,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAAC,sBAAA,EAAA,GAAA,0BAIFC,EAAA,EAAA,MAAA,CAAA,EAjBN,IAwBaC,IAxBbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,IACAC,IACAC,KACAC,aAkBaT,KAAwB,IAAA,CAA/B,MAAOA,UAAgCU,EAAwD,CAEnGC,eAAeC,EAAyB,CACtC,OAAOA,EAAKC,WACd,CAEAC,aAAA,CACE,MAAK,EANU,KAAAC,YAAcC,EAAOC,EAAuB,EAO3DC,GAAa,KAAKC,mBAAmB,EAClCC,KACCC,EAAWC,GACF,KAAKP,YAAYQ,cAAcD,CAAO,CAC9C,EACDE,GAAkB,CAAE,EAErBC,UAAWC,GAAU,CACpB,KAAKC,kBAAkBC,IAAIF,CAAM,CACnC,CAAC,CACL,iDAlBW1B,EAAuB,CAAA,+BAAvBA,EAAuB6B,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,GAJvB,CAAA,CAAE,EAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,GATXE,EAAA,EAAAC,IAAA,EAAA,EAAA,eAAA,CAAA,EAA4D,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,kBAA7CC,EAAA,OAAAL,EAAAxC,sBAAA,CAAA,EAA+B,WAAA8C,CAAA,kBAWtCC,EAAYC,GAAEC,CAAe,EAAAC,OAAA,CAAA;uHAAA,CAAA,CAAA,CAAA,SAE5BhD,CAAwB,GAAA,ICxBrC,IA2BsBiD,GA3BtBC,GAAAC,EAAA,KAAAC,IACAC,KACAC,IACAC,IACAC,KACAC,KACAC,KACAC,KACAC,SAmBsBX,IAAoC,IAAA,CAApD,MAAgBA,CAAoC,CACxD,IAAaY,QAAQC,EAAa,CAChC,KAAKC,SAASC,IAAIF,CAAK,CACzB,CAWA,IAAaG,aAAaH,EAAmC,CACvDA,GAAOI,OAAS,GAAKJ,EAAM,CAAC,EAAEK,QAChC,KAAKC,YAAYC,SAASP,EAAM,CAAC,EAAEK,MAAM,CAE7C,CAUAG,aAAA,CAvBU,KAAAC,aAAe,IAAIC,GAC7B,KAAAJ,YAAuC,IAAIK,GAAwB,GAAI,CACrEC,YAAa,GACd,EAED,KAAAC,WAAaC,GAAS,KAAKR,YAAYG,aAAc,CAAEN,aAAc,EAAE,CAAE,EACzE,KAAAF,SAAWc,EAAO,EAAE,EACpB,KAAAC,iBAAmBD,EAAY,CAAA,CAAE,EAQjC,KAAAE,gBAA+BC,EAAS,IAAK,CAC3C,IAAML,EAAa,KAAKA,WAAU,EAC5BG,EAAmB,KAAKA,iBAAgB,EACxCG,EAAa,KAAKC,kBAAkBP,CAAU,EACpD,OAAOG,EAAiBK,OAAQC,GAAa,KAAKC,SAASD,EAAUH,CAAU,CAAC,CAClF,CAAC,EACS,KAAAK,oBAAsB,GAG9BC,GAAO,IAAK,CACV,IAAMzB,EAAQ,KAAKa,WAAU,EAC7B,OAAIb,IAAU,GACL,KAAK0B,aAAa,CAAA,CAAE,EAEzB,OAAO1B,GAAU,SACZ,KAAK0B,aAAa,CAAC,CAAErB,OAAQL,CAAK,CAAE,CAAC,EAEvC,KAAK0B,aAAa,CAAC,CAAErB,OAAQ,KAAKsB,MAAM3B,CAAK,CAAC,CAAE,CAAC,CAC1D,CAAC,CACH,CAEA4B,YAAU,CACR,KAAKtB,YAAYC,SAAS,EAAE,CAC9B,CAEAsB,UAAUb,EAAqB,CAC7B,OAAQM,GAAgC,CACtC,GAAI,CAACA,EACH,MAAO,GAET,GAAI,OAAOA,GAAa,SAAU,CAChC,IAAMQ,EAAcd,EAAiBe,KAAMC,GAAM,KAAKL,MAAMK,CAAC,IAAMV,CAAQ,EAC3E,OAAOQ,EAAc,KAAKG,eAAeH,CAAW,EAAIR,CAC1D,CACA,OAAO,KAAKW,eAAeX,CAAQ,CACrC,CACF,CAEQI,aAAa1B,EAAmC,CAClD,KAAKwB,qBACP,KAAKf,aAAayB,KAAKlC,CAAK,CAEhC,iDA9DoBb,EAAoC,CAAA,+BAApCA,EAAoCgD,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,OAAA,CAAArC,QAAA,UAAAI,aAAA,cAAA,EAAAkC,QAAA,CAAA5B,aAAA,cAAA,EAAA6B,SAAA,CAAAC,GAf7C,CACT,CACEC,QAASC,GACTC,YAAaC,GAAW,IAAMxD,CAAoC,EACnE,CACF,CAAA,EAAAyD,MAAA,EAAAC,KAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,EAAAC,aAAA,CAECC,EACAC,EACAC,GACAC,GACAC,GACAC,EAAqB,EAAAC,cAAA,CAAA,CAAA,CAAA,SAGHrE,CAAoC,GAAA,+BCFlDsE,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,0BAFqDC,EAAA,QAAAC,CAAA,EACnDC,EAAA,EAAAC,EAAA,IAAAF,GAAA,KAAA,KAAAA,EAAAG,YAAA,GAAA,GA1BV,IAwCaC,IAxCbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KAEAC,KAEAC,+CA6BaZ,KAAyB,IAAA,CAAhC,MAAOA,UAAiCa,EAAyD,CAGrGC,SAASC,EAA2BC,EAAkB,CACpD,OAAOC,GAAaF,EAAMC,CAAU,CACtC,CACAE,kBAAkBH,EAAkC,CAClD,OAAO,OAAOA,GAAS,SAAWA,EAAOA,GAAMI,MACjD,CACAC,MAAML,EAAyB,CAC7B,OAAOA,EAAKI,MACd,CACAE,eAAeN,EAAyB,CACtC,OAAOA,EAAKhB,WACd,CACAuB,qBAAmB,CACjB,KAAKC,YAAYC,UAAUC,KAAKC,GAAkB,CAAE,EAAEC,UAAWC,GAAa,KAAKC,iBAAiBC,IAAIF,CAAQ,CAAC,CACnH,CAEAG,YAA6BR,EAAoC,CAC/D,MAAK,EADsB,KAAAA,YAAAA,EAlBV,KAAAS,oBAAsB,GAoBvC,KAAKV,oBAAmB,EAExBW,GAAO,IAAK,CACV,IAAMC,EAAQ,KAAKlB,WAAU,EAI7B,GAHKkB,GACH,KAAKC,aAAaC,KAAK,CAAA,CAAE,EAEvB,OAAOF,GAAU,SAAU,CAE7B,KAAKX,YAAYc,aAAaC,KAAKJ,CAAK,EAExC,IAAMnB,EADmB,KAAKc,iBAAgB,EAChBU,KAAMC,GAAMA,EAAErB,SAAWe,CAAK,EACxDnB,EACF,KAAK0B,YAAYC,SAAS3B,CAAI,EAE9B,KAAKoB,aAAaC,KAAK,CAAA,CAAE,EAE3B,MACF,CACA,IAAMjB,EAAS,KAAKC,MAAMc,CAAK,EAC/B,GAAIf,EACF,OAAO,KAAKgB,aAAaC,KAAK,CAAC,CAAEO,OAAQxB,CAAM,CAAE,CAAC,CAEtD,CAAC,CACH,iDA7CWnB,GAAwB4C,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAxB7C,EAAwB8C,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,gBAAA,MAAA,EAAA,CAAA,OAAA,OAAA,WAAA,GAAA,cAAA,oBAAA,EAAA,cAAA,cAAA,iBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IAzBjC7D,EAAA,EAAA,kBAAA,CAAA,EACE+D,EAAA,EAAA,QAAA,CAAA,mBAQA/D,EAAA,EAAA,mBAAA,EAAA,CAAA,EACEgE,EAAA,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,EAGF/D,EAAA,EAAmB,mBAXjBG,EAAA,EAAAF,EAAA,cAAA+D,EAAA,EAAA,EAAA,6CAAA,CAAA,EAAyE,cAAAJ,EAAAb,WAAA,EAG9C,kBAAAkB,CAAA,EAIa9D,EAAA,CAAA,EAAAF,EAAA,cAAA2D,EAAAM,UAAAN,EAAAzB,iBAAA,CAAA,CAAA,EACThC,EAAA,CAAA,EAAAF,EAAA,UAAA2D,EAAAO,gBAAA,CAAA,kBAOnCC,EAAYC,GACZC,EAAeC,EACfC,GAAmBC,GAAAC,GAAAC,GACnBC,GAAcC,GACdC,GAAqBC,GACrBC,GAAqBC,GAAAC,GAAAC,EAAA,EAAAC,cAAA,CAAA,CAAA,CAAA,SAGZ9E,CAAyB,GAAA,2BC3BhC+E,EAAA,EAAA,MAAA,CAAA,4BAEAC,EAAA,CAAA,iBAAAC,EAAA,IAAAC,EAAAC,uBAAA,EAAA,GAAA,GAfN,IAsBaC,IAtBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,IAEAC,KACAC,KACAC,SAeaT,KAA6B,IAAA,CAApC,MAAOA,CAA6B,CAKxC,IAAaU,aAAaC,EAAmC,CAC3D,KAAKC,sBAAsBC,IAAIF,GAAOG,IAAKC,GAAMA,EAAEC,MAAM,GAAK,CAAA,CAAE,CAClE,CAgBAC,aAAA,CACE,GAvBF,KAAAL,sBAAwBM,EAAiB,CAAA,CAAE,EAC3C,KAAAC,mBAAqBD,EAAyB,CAAA,CAAE,EAChD,KAAAE,UAAYF,EAAO,EAAI,EAMvB,KAAAnB,uBAAyBsB,EAAS,IAAK,CACrC,GAAI,KAAKF,mBAAkB,EAAGG,SAAW,EACvC,MAAO,GAET,IAAMC,EAAuB,KAAKJ,mBAAkB,EAAG,CAAC,EAAEK,aAAe,KAAKZ,sBAAqB,EAAG,CAAC,EACvG,OAAI,KAAKO,mBAAkB,EAAGG,SAAW,EAChCC,EAEF,GAAGA,CAAoB,KAAK,KAAKJ,mBAAkB,EAAGG,OAAS,CAAC,EACzE,CAAC,EAEgB,KAAAG,OAASC,EAAOC,EAAiB,EAI5C,KAAKF,OAAOG,UAAUC,cAAgBC,OACxC,MAAM,IAAIC,MAAM,6BAA6B,EAE/C,KAAKF,YAAc,KAAKJ,OAAOG,UAAUC,YAEzCG,GAAa,KAAKpB,qBAAqB,EACpCqB,KACCC,GAAI,IAAK,CACP,KAAKd,UAAUP,IAAI,EAAI,CACzB,CAAC,EACDsB,EAAWC,GACF,KAAKP,YAAYQ,cAAcD,CAAO,CAC9C,EACDF,GAAI,IAAK,CACP,KAAKd,UAAUP,IAAI,EAAK,CAC1B,CAAC,EACDyB,GAAkB,CAAE,EAErBC,UAAWC,GAAU,CACpB,KAAKrB,mBAAmBN,IAAI2B,CAAM,CACpC,CAAC,CACL,iDA7CWxC,EAA6B,CAAA,+BAA7BA,EAA6ByC,UAAA,CAAA,CAAA,6BAAA,CAAA,EAAAC,OAAA,CAAAhC,aAAA,cAAA,EAAAiC,SAAA,CAAAC,GAJ7B,CAAA,CAAE,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GANXE,EAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAAyD,EAAAC,IAAA,EAAA,CAAA,OAAzDC,EAAAJ,EAAA9B,UAAA,GAAA8B,EAAAtC,sBAAA,EAAAU,OAAA,EAAA,EAAA,CAAA,iBAQQiC,EAAcC,CAAe,EAAAC,OAAA,CAAA;4HAAA,CAAA,CAAA,CAAA,SAE5BzD,CAA6B,GAAA,+BC6B9B0D,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,0BAFsDC,EAAA,QAAAC,GAAA,KAAA,KAAAA,EAAAC,MAAA,EACpDC,EAAA,EAAAC,EAAA,IAAAH,GAAA,KAAA,KAAAA,EAAAI,YAAA,GAAA,uCAfNR,EAAA,EAAA,kBAAA,CAAA,EACES,EAAA,EAAA,QAAA,CAAA,mBAQAT,EAAA,EAAA,mBAAA,EAAA,CAAA,EAEEU,EAAA,iBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAkBF,EAAAG,SAAAN,CAAA,CAAgB,CAAA,CAAA,EAGlCO,EAAA,EAAAC,IAAA,EAAA,EAAA,aAAA,CAAA,EAGFjB,EAAA,EAAmB,4BAdjBI,EAAA,EAAAH,EAAA,cAAAiB,EAAA,EAAA,EAAA,6CAAA,CAAA,EAAyE,cAAAN,EAAAO,WAAA,EAE9C,kBAAAC,CAAA,EAO3BhB,EAAA,CAAA,EAAAH,EAAA,cAAAW,EAAAS,UAAAT,EAAAU,iBAAA,CAAA,CAAA,EAE+BlB,EAAA,CAAA,EAAAH,EAAA,UAAAW,EAAAU,iBAAA,CAAA,2BAQ/BC,EAAA,CAAA,EACEhB,EAAA,EAAA,cAAA,EAAA,aAAaH,EAAA,EAAAH,EAAA,WAAA,EAAA,uCAGbH,EAAA,EAAA,eAAA,EAAA,EAA0DU,EAAA,UAAA,UAAA,CAAA,IAAAgB,EAAAd,EAAAe,CAAA,EAAAC,UAAAd,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAWF,EAAAe,OAAAH,EAAArB,MAAA,CAAoB,CAAA,CAAA,EACvFJ,EAAA,CAAA,EACAD,EAAA,EAAA,SAAA,EAAA,EAAwE,EAAA,UAAA,EAC5DC,EAAA,EAAA,QAAA,EAAMC,EAAA,EAAW,EACpB,4BAHTI,EAAA,EAAAC,EAAA,IAAAmB,EAAAlB,YAAA,GAAA,EACsBF,EAAA,sEAFxBY,EAAA,EAAAY,IAAA,EAAA,EAAA,eAAA,EAAA,kBAAgC3B,EAAA,UAAAW,EAAAiB,oBAAA,CAAA,8BAqBlC/B,EAAA,EAAA,aAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,0BAFsDC,EAAA,QAAA6B,GAAA,KAAA,KAAAA,EAAA3B,MAAA,EACpDC,EAAA,EAAAC,EAAA,IAAAyB,GAAA,KAAA,KAAAA,EAAAxB,YAAA,GAAA,uCA5BNR,EAAA,EAAA,kBAAA,CAAA,EAAwC,EAAA,gBAAA,GAAA,CAAA,EAEpCkB,EAAA,EAAAe,IAAA,EAAA,EAAA,eAAA,EAAA,EAAwD,EAAAC,IAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,EAAA,EAWxDnC,EAAA,EAAA,QAAA,GAAA,CAAA,mBASEU,EAAA,uBAAA,SAAAC,EAAA,CAAAC,EAAAwB,CAAA,EAAA,IAAAtB,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAwBF,EAAAuB,IAAA1B,CAAA,CAAW,CAAA,CAAA,EATrCT,EAAA,EAWE,EAEJF,EAAA,EAAA,mBAAA,GAAA,CAAA,EAA0CU,EAAA,iBAAA,SAAAC,EAAA,CAAAC,EAAAwB,CAAA,EAAA,IAAAtB,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAkBF,EAAAG,SAAAN,CAAA,CAAgB,CAAA,CAAA,EAC1EO,EAAA,GAAAoB,IAAA,EAAA,EAAA,aAAA,CAAA,EAGFpC,EAAA,EAAmB,2CA5BFI,EAAA,CAAA,EAAAH,EAAA,OAAAW,EAAAyB,cAAA,CAAA,EAAuB,WAAAC,CAAA,EAcpClC,EAAA,CAAA,EAAAH,EAAA,cAAAiB,EAAA,EAAA,EAAA,6CAAA,CAAA,EAAyE,cAAAN,EAAAO,WAAA,EAC9C,kBAAAoB,CAAA,EACO,kBAAAC,CAAA,EACV,gCAAA5B,EAAA6B,kBAAA,EAC4B,wBAAA,EAAA,EAOvBrC,EAAA,CAAA,EAAAH,EAAA,UAAAW,EAAAU,iBAAA,CAAA,6BAhDrCN,EAAA,EAAA0B,IAAA,EAAA,EAAA,kBAAA,CAAA,EAAqB,EAAAC,IAAA,GAAA,GAAA,kBAAA,CAAA,iBAArBC,EAAAhC,EAAAiC,YAAA,EAAA,EAAA,CAAA,0BAuDAtC,EAAA,EAAA,MAAA,EAAA,EA3FN,YAoHauC,IApHbC,GAAAC,EAAA,KAAAC,IACAC,IAaAC,KACAC,KACAC,KACAC,KACAC,IACAC,KAKAC,KACAD,KAIAE,KACAC,KACAC,sGA6EIC,GACAC,GACAC,GACAC,GAAU,OAAA,qBAAA,EAAAC,KAAAC,GAAAA,EAAAC,OAAA,EAAA,OAAA,qBAAA,EAAAF,KAAAC,GAAAA,EAAAE,kBAAA,CAAA,EAKDtB,KAA8B,IAAA,CAArC,MAAOA,CAA8B,CAIzC,IAAauB,QAAQC,EAAa,CAChC,KAAKC,SAASC,IAAIF,CAAK,CACzB,CAYA,IAAaG,aAAaH,EAAmC,CAC3D,KAAKjC,cAAcmC,IAAI,EAAI,EAC3B,IAAME,GAAYJ,GAAS,CAAA,GAAIK,IAAKC,GAAMA,EAAEC,MAAM,EAClD,KAAKC,sBAAsBN,IAAIE,CAAQ,EACvC,IAAM7B,EAAc,KAAKA,YAAW,EAChC6B,EAASK,OAAS,GAAKlC,GACzB,KAAK1B,YAAY6D,SAASN,EAAS,CAAC,CAAC,CAEzC,CAGA,IAAaO,SAASX,EAA2B,CAC/C,KAAKY,UAAYZ,EACjB,IAAMa,EACJ,KAAKD,WAAaE,GAAqBC,wBACvC,KAAKH,WAAaE,GAAqBE,2BACzC,GAAIH,EACF,KAAKhE,YAAY6D,SAAS,EAAE,MACvB,CACL,IAAMO,EAAqB,KAAKT,sBAAqB,EACjDS,EAAmBR,OAAS,IAC9B,KAAK5D,YAAY6D,SAASO,EAAmB,CAAC,CAAC,EAC3CA,EAAmBR,OAAS,GAC9B,KAAKD,sBAAsBN,IAAI,CAACe,EAAmB,CAAC,CAAC,CAAC,EAExD,KAAKC,YACFC,cAAcF,CAAkB,EAChCG,KACCC,GAAK,CAAC,EACNC,GAAW,IACFC,EAAG,CAAA,CAAE,CACb,EACDC,GAAKC,GAAQ,CACX,KAAKlE,oBAAoB2C,IAAIuB,CAAI,CACnC,CAAC,CAAC,EAEHC,UAAS,EAEhB,CACA,KAAKnD,YAAY2B,IAAI,CAACW,CAAY,CACpC,CAQAc,aAAA,CACE,GAjEF,KAAAxD,mBAA+B,CAACyD,GAAOC,GAAK,EAMlC,KAAAC,aAAe,IAAIC,GAC7B,KAAAlF,YAAoD,IAAImF,GAAqC,GAAI,CAC/FC,YAAa,GACd,EAED,KAAAC,WAAaC,GAAS,KAAKtF,YAAYiF,aAAc,CAAE3B,aAAc,EAAE,CAAE,EACzE,KAAAF,SAAWmC,EAAO,EAAE,EACpB,KAAArE,cAAgBqE,EAAO,EAAI,EAC3B,KAAApF,iBAAmBoF,EAAyB,CAAA,CAAE,EAW9C,KAAA7D,YAAuC6D,EAAO,EAAI,EAiClD,KAAA5B,sBAAwB4B,EAAiB,CAAA,CAAE,EAC3C,KAAA7E,oBAAsB6E,EAAyB,CAAA,CAAE,EAEhC,KAAAC,OAASC,EAAOC,EAAiB,EAI5C,KAAKF,OAAOG,UAAUtB,cAAgBuB,OACxC,MAAM,IAAIC,MAAM,6BAA6B,EAE/C,KAAKxB,YAAc,KAAKmB,OAAOG,UAAUtB,YACzCyB,GAAO,IAAK,CACV,IAAMnC,EAAwB,KAAKA,sBAAqB,EACxD,KAAKsB,aAAac,KAAKpC,EAAsBH,IAAKwC,IAAO,CAAEtC,OAAQsC,CAAC,EAAG,CAAC,CAC1E,CAAC,EAED,KAAKhG,YAAYiF,aACdV,KACC0B,GAAU,EAAE,EACZC,GAAkB,EAClBC,GAAa,GAAG,EAChBC,EAAWC,GACF,KAAKC,YAAYD,CAAW,CACpC,EACD1B,GAAK4B,GAAW,CAKd,GAJA,KAAKpG,iBAAiBkD,IAAIkD,CAAO,EAE/B,KAAKxC,WAAaE,GAAqBC,wBACvC,KAAKH,WAAaE,GAAqBE,2BACvB,CAChB,IAAMC,EAAqB,KAAKT,sBAAqB,EACrD,KAAKU,YACFC,cAAcF,CAAkB,EAChCG,KACCC,GAAK,CAAC,EACNC,GAAW,IACFC,EAAG,CAAA,CAAE,CACb,CAAC,EAEHG,UAAWD,GAAQ,CAClB,KAAKlE,oBAAoB2C,IAAIuB,CAAI,CACnC,CAAC,CACL,CACF,CAAC,EACDD,GAAI,IAAK,CACP,KAAKzD,cAAcmC,IAAI,EAAK,CAC9B,CAAC,CAAC,EAEHwB,UAAS,CACd,CAEAyB,YAAYjB,EAAU,CACpB,IAAMmB,EAAa,OAAOnB,GAAe,SAAWA,EAAaA,GAAYrG,OAC7E,OAAIqG,EAAWoB,WAAW,IAAI,GAAKpB,EAAWzB,SAAW,GAChD,KAAKS,YAAYC,cAAc,CAACe,CAAU,CAAC,EAE7C,KAAKhB,YAAYiC,YAAYE,CAAU,CAChD,CAEAE,YAAU,CACR,KAAK1G,YAAY6D,SAAS,EAAE,CAC9B,CAEA3D,UAAUC,EAAkC,CAC1C,OAAQwG,GACDA,EAGSxG,EAAiByG,KAAMC,GAAOA,EAAG7H,SAAW2H,CAAU,GACtDxH,aAAewH,EAHpB,EAKb,CAEA3F,IAAI8F,EAAwB,CAC1B,IAAMC,EAAU,KAAKpD,sBAAqB,EACpCqD,EAAgBD,EAAQE,KAAMJ,GAAOA,IAAOC,GAAO3D,KAAK,EAC1D2D,GAAO3D,OAAS,CAAC6D,GACnB,KAAKrD,sBAAsBN,IAAI,CAAC,GAAG0D,EAASD,EAAM3D,KAAK,CAAC,EAG1D2D,EAAMI,WAAWC,MAAK,EACtB,KAAKnH,YAAY6D,SAAS,EAAE,CAC9B,CAEAjE,SAASkH,EAAmC,CAC1C,IAAMpF,EAAc,KAAKA,YAAW,EAC9BqF,EAAU,KAAKpD,sBAAqB,EACpCqD,EAAgBD,EAAQE,KAAMJ,GAAOA,IAAOC,EAAMM,OAAOjE,KAAK,EAChE2D,EAAMM,OAAOjE,OAAS,CAAC6D,IACrBtF,EACF,KAAKiC,sBAAsBN,IAAI,CAACyD,EAAMM,OAAOjE,KAAK,CAAC,EAEnD,KAAKQ,sBAAsBN,IAAI,CAAC,GAAG0D,EAASD,EAAMM,OAAOjE,KAAK,CAAC,GAG9DzB,IACH,KAAK2F,WAAWC,cAAcnE,MAAQ,GACtC,KAAKnD,YAAY6D,SAAS,EAAE,EAEhC,CAEArD,OAAOxB,EAAc,CAEnB,IAAMuI,EADqB,KAAK5D,sBAAqB,EACN6D,OAAQX,GAAOA,IAAO7H,CAAM,EAC3E,KAAK2E,sBAAsBN,IAAI,CAAC,GAAGkE,CAAmB,CAAC,CACzD,iDArKW5F,EAA8B,CAAA,+BAA9BA,EAA8B8F,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,2LArB9B,CACT,CACEE,QAASC,GACTC,YAAaC,GAAW,IAAMrG,CAA8B,EAC7D,CACF,CAAA,EAAAsG,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,CAAA,GAAA,EAAA,CAAA,gBAAA,QAAA,EAAA,CAAA,OAAA,OAAA,WAAA,GAAA,cAAA,qBAAA,EAAA,cAAA,cAAA,iBAAA,EAAA,CAAA,EAAA,iBAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,WAAA,GAAA,cAAA,qBAAA,EAAA,uBAAA,cAAA,cAAA,kBAAA,kBAAA,gCAAA,uBAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,UAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAT,EAAAC,EAAA,CAAAD,EAAA,IAjEC9H,EAAA,EAAAwI,IAAA,EAAA,CAAA,EAyDC,EAAAC,IAAA,EAAA,CAAA,EAzDDC,GAAA,EAAA,EAAAC,IAAA,KAAA,EAAA,KAAA,KAAA,EAAAC,EAAA,SAAQxJ,EAAA,CAAA,EAAAyJ,GAAAd,EAAA1G,cAAA,IAAoB,EAAK,kBAmEjCyH,EACAC,EACAC,GACAC,GACAC,GACAC,EAAqB,EAAAC,OAAA,CAAA;6HAAA,CAAA,CAAA,CAAA,SASZtH,CAA8B,GAAA,ICpH3C,IAAAuH,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCLA,IAAAC,GAAAC,EAAA,+BEKIC,GAAA,CAAA,yBAEAA,GAAA,EAAA,CAAA,6BAGAC,EAAA,EAAA,SAAA,CAAA,EAA0E,EAAA,UAAA,EAC9DC,EAAA,EAAA,WAAA,EAASC,EAAA,EAAW,wBADRC,EAAA,oBAAAC,CAAA,2BAO1BJ,EAAA,EAAA,MAAA,CAAA,EACED,GAAA,EAAA,CAAA,EACFG,EAAA,uCAEAF,EAAA,EAAA,MAAA,CAAA,EAA+BK,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,KAAA,CAAM,CAAA,CAAA,EAC5CZ,GAAA,EAAA,CAAA,EACFG,EAAA,uCAKEF,EAAA,EAAA,SAAA,CAAA,EAAsBK,EAAA,QAAA,UAAA,CAAA,IAAAO,EAAAN,EAAAO,CAAA,EAAAC,UAAA,OAAAJ,EAASE,EAAAG,SAAA,CAAiB,CAAA,CAAA,EAC9Cf,EAAA,EAAA,MAAA,EAAMC,EAAA,CAAA,mBAA8BC,EAAA,EAAO,4BAArCc,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAAN,EAAAO,KAAA,CAAA,GD7BZ,YAgBaC,IAhBbC,GAAAC,EAAA,KAAAC,IACAC,IACAC,KACAC,KACAC,KAGAC,oZASaR,KAAiB,IAAA,CAAxB,MAAOA,CAAiB,CAP9BS,aAAA,CAQY,KAAAC,WAAaC,EAAgB,EAAK,EAI5CC,QAAM,CACJ,KAAKF,WAAWG,IAAI,CAAC,KAAKH,WAAU,CAAE,CACxC,CAEAnB,MAAI,CACF,KAAKmB,WAAWG,IAAI,EAAI,CAC1B,iDAXWb,EAAiB,CAAA,+BAAjBA,EAAiBc,UAAA,CAAA,CAAA,oBAAA,CAAA,EAAAC,OAAA,CAAAC,QAAA,SAAA,EAAAC,mBAAAC,IAAAC,MAAA,GAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,OAAA,SAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,mBChB9B3C,EAAA,EAAA,MAAA,CAAA,EAAoB,EAAA,SAAA,CAAA,EACMK,EAAA,QAAA,UAAA,CAAAwC,OAAAvC,EAAAwC,CAAA,EAAApC,EAASkC,EAAAZ,OAAA,CAAQ,CAAA,CAAA,EACvChC,EAAA,EAAA,UAAA,EAAUC,EAAA,CAAA,EAAmEC,EAAA,EAAW,EAE1F6C,EAAA,EAAAC,IAAA,EAAA,CAAA,EAAoB,EAAAC,IAAA,EAAA,CAAA,EAEX,EAAAC,IAAA,EAAA,EAAA,SAAA,CAAA,EAQXhD,EAAA,EAEA6C,EAAA,EAAAI,IAAA,EAAA,EAAA,MAAA,CAAA,EAAoB,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAUpBpD,EAAA,EAAA,WAAA,KAAA,CAAA,EACEqD,GAAA,GAAAC,IAAA,EAAA,EAAA,SAAA,EAAAC,EAAA,EAKFrD,EAAA,QA9Bcc,EAAA,CAAA,EAAAC,EAAA2B,EAAAd,WAAA,EAAA,sBAAA,sBAAA,EAEZd,EAAA,EAAAwC,EAAAZ,EAAAd,WAAA,EAAA,EAAA,CAAA,EAKAd,EAAA,CAAA,EAAAwC,EAAAZ,EAAAR,SAAA,MAAAQ,EAAAR,QAAAqB,OAAA,EAAA,EAAA,EAOFzC,EAAA,EAAAwC,EAAAZ,EAAAd,WAAA,EAAA,EAAA,CAAA,EAWEd,EAAA,CAAA,EAAA0C,GAAAd,EAAAR,OAAA,kBDfUuB,EAAcC,GAAaC,GAAEC,GAAeC,GAAEC,GAAaC,GAAAC,GAAAC,GAAEC,GAAiBC,CAAA,EAAAC,OAAA,CAAA;6GAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAI7EnD,CAAiB,GAAA,IEhB9B,IAOaoD,IAPbC,GAAAC,EAAA,SAOaF,KAAwB,IAAA,CAA/B,MAAOA,CAAwB,CAGnC,IAA+BG,QAAQC,EAAe,CACpD,KAAKC,SAAWD,CAClB,iDALWJ,EAAwB,CAAA,gCAAxBA,EAAwBM,UAAA,CAAA,CAAA,sBAAA,EAAA,CAAA,GAAA,qBAAA,EAAA,CAAA,EAAAC,OAAA,CAAAJ,QAAA,SAAA,CAAA,CAAA,CAAA,SAAxBH,CAAwB,GAAA,ICPrC,IAOaQ,IAPbC,GAAAC,EAAA,SAOaF,KAAuB,IAAA,CAA9B,MAAOA,CAAuB,CAGlC,IAA+BG,QAAQC,EAAe,CACpD,KAAKC,SAAWD,CAClB,iDALWJ,EAAuB,CAAA,gCAAvBA,EAAuBM,UAAA,CAAA,CAAA,GAAA,oBAAA,EAAA,EAAA,CAAA,qBAAA,CAAA,EAAAC,OAAA,CAAAJ,QAAA,SAAA,CAAA,CAAA,CAAA,SAAvBH,CAAuB,GAAA,ICPpC,IAAAQ,GAAAC,EAAA,KAAAC,KACAC,KACAC,8BEDEC,EAAA,EAAA,cAAA,CAAA,sCAKMC,EAAA,EAAA,SAAA,CAAA,EAAuEC,EAAA,QAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,YAAAN,CAAA,CAAsB,CAAA,CAAA,EACpGO,EAAA,CAAA,mBACFC,EAAA,QADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,gCAAA,EAAA,GAAA,uCAIFb,EAAA,EAAA,SAAA,CAAA,EAAyEC,EAAA,QAAA,UAAA,CAAA,IAAAa,EAAAX,EAAAY,CAAA,EAAAV,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,YAAAM,CAAA,CAAqB,CAAA,CAAA,EACrGL,EAAA,CAAA,mBACFC,EAAA,QADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,+BAAA,EAAA,GAAA,6BAPJG,EAAA,EAAAC,IAAA,EAAA,EAAA,SAAA,CAAA,EAAiC,EAAAC,IAAA,EAAA,EAAA,SAAA,CAAA,sBAAjCC,GAAAC,EAAAf,EAAAgB,UAAA,GAAA,EAAA,GAAAD,CAAA,EAKAT,EAAA,EAAAQ,GAAAG,EAAAjB,EAAAkB,SAAA,GAAA,EAAA,GAAAD,CAAA,uCAOEtB,EAAA,EAAA,SAAA,CAAA,EAAyCC,EAAA,QAAA,UAAA,CAAA,IAAAuB,EAAArB,EAAAsB,CAAA,EAAApB,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,YAAAgB,CAAA,CAA2B,CAAA,CAAA,EAC3Ef,EAAA,CAAA,mBACFC,EAAA,QADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,4BAAA,EAAA,GAAA,6BAFJG,EAAA,EAAAU,IAAA,EAAA,EAAA,SAAA,CAAA,oBAAAP,GAAAC,EAAAf,EAAAsB,eAAA,GAAA,EAAA,GAAAP,CAAA,8BAbJpB,EAAA,EAAA,MAAA,CAAA,EACEgB,EAAA,EAAAY,IAAA,EAAA,CAAA,EAA2B,EAAAC,IAAA,EAAA,CAAA,EAkB7BnB,EAAA,kBAlBEC,EAAA,EAAAQ,EAAAd,EAAAyB,OAAA,IAAA,OAAA,EAAA,CAAA,GDJJ,IAqBaC,IArBbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,IACAC,KACAC,IACAC,KACAC,uBAUad,KAAkC,IAAA,CAAzC,MAAOA,CAAkC,CAiB7Ce,aAAA,CAhBiB,KAAAC,OAASC,EAAOC,EAAiB,EACjC,KAAAC,KAAOF,EAAOG,EAAuB,EACrC,KAAAC,aAAeJ,EAAOK,EAAe,EACrC,KAAAC,mBAAqBN,EAAOO,EAAkB,EAC9C,KAAAC,gBAAkBR,EAAOS,EAAe,EACxC,KAAAC,gBAAkBV,EAAOW,EAAmB,EAC5C,KAAAC,eAAiBZ,EAAOa,EAAc,EAEpC,KAAA/B,OAASgC,EAAe,KAAKC,UAAU,KAAKb,KAAKc,SAAS,CAAC,EAC3D,KAAAC,QAAUH,EAAgB,EAAK,EAC/B,KAAAI,WAAaJ,EAAe,KAAKK,cAAc,KAAKjB,KAAKc,SAAS,CAAC,EACrE,KAAAI,OAASN,EAAgB,CAAA,CAAE,EACzB,KAAAvC,SAAW8C,EAAS,IAAM,KAAKC,SAAS,KAAKF,OAAM,EAAI,YAAY,CAAC,EACpE,KAAA/C,UAAYgD,EAAS,IAAM,KAAKC,SAAS,KAAKF,OAAM,EAAI,aAAa,CAAC,EACtE,KAAAzC,eAAiB0C,EAAS,IAAM,KAAKC,SAAS,KAAKF,OAAM,EAAI,MAAM,CAAC,EAGrF,KAAKR,eAAeW,aACjBC,KACCC,GAAkB,EAClBC,GAAQC,GAAUA,EAAMC,UAAYC,EAAYC,iBAAiB,EACjEC,GAAa,GAAG,CAAC,EAElBC,UAAWL,GAAU,KAAK7C,OAAOmD,IAAIN,EAAMO,aAAe,MAAM,CAAC,EACpEC,GAAO,IAAWC,GAAA,sBAChB,IAAMlB,EAAa,KAAKA,WAAU,EAC5BmB,EAAY,MAAMC,GAAe,KAAKvC,OAAOwC,UAAU,EAIvDC,GAHY,MAAMF,GACtB,KAAK5B,gBAAgB+B,iBAAiB,CAAEJ,UAAAA,EAAWK,YAAa,CAACxB,CAAU,CAAC,CAAE,CAAC,GAEtDyB,YAAY,CAAC,EACxC,KAAKvB,OAAOa,IAAIO,GAAUpB,QAAU,CAAA,CAAE,CACxC,EAAC,CACH,CAEQE,SAASF,EAAiBtC,EAAyB,CACzD,OAAOsC,EAAOwB,KAAMC,GAClBA,EAAMC,UAAUF,KAAMG,GAAMA,EAAEnB,UAAYC,EAAYC,mBAAqBiB,EAAEb,cAAgBpD,CAAM,CAAC,CAExG,CAEQiC,UAAUC,EAA8B,CAC9C,OAAIA,GACK,KAAKZ,aAAa4C,2BAA2BhC,EAAWa,EAAYC,iBAAiB,GAAGI,aAAe,EAGlH,CAEQf,cAAcH,EAA8B,CAClD,OAAIA,GAEA,KAAKZ,aAAa4C,2BAA2BhC,EAAWa,EAAYoB,qBAAqB,GAAGf,aAAe,EAIjH,CAEM1E,YAAYqF,EAAa,QAAAT,GAAA,sBAC7B,GAAI,KAAKlC,KAAKc,WAAa6B,EAAO,CAChC,KAAK5B,QAAQgB,IAAI,EAAI,EACrB,GAAI,CACF,IAAMI,EAAY,MAAMC,GAAe,KAAKvC,OAAOwC,UAAU,EAC7D,MAAMD,GACJ,KAAKhC,mBAAmB4C,gBAAgB,CACtCb,UAAAA,EACArB,UAAW,CACTmC,YAAa,KAAKjD,KAAKc,UAAUmC,YACjCC,OAAQP,EAAMC,WAEhBO,UAAW,CAAEC,MAAOT,EAAMC,UAAUS,IAAKR,GAAMA,EAAEnB,OAAO,CAAC,EAC1D,CAAC,EAEJ,KAAKpB,gBAAgBgD,iBAAiB,oCAAoC,EAC1E,KAAKC,YAAYZ,CAAK,CACxB,MAAQ,CACN,KAAKrC,gBAAgBkD,eAAe,iCAAiC,CACvE,QAAC,CACC,KAAKzC,QAAQgB,IAAI,EAAK,CACxB,CACF,CACF,GAEQwB,YAAYZ,EAAY,CAC9B,GAAI,CAAC,KAAK3C,MAAMc,WAAWoC,OACzB,OAGF,IAAMO,EAAc,KAAKzD,KAAKc,UAAUoC,OAAO1B,OAAQkC,GAAM,CAACf,EAAMC,UAAUF,KAAMG,GAAMA,EAAEnB,UAAYgC,EAAEhC,OAAO,CAAC,EAClH,KAAK1B,KAAKc,UAAY6C,GAAAC,GAAA,GACjB,KAAK5D,KAAKc,WADO,CAEpBoC,OAAQ,CAAC,GAAGO,EAAa,GAAGd,EAAMC,SAAS,IAG7CD,EAAMC,UAAUiB,QAASC,GAAa,KAAKpD,eAAeqD,iBAAiBD,CAAQ,CAAC,EACpF,KAAKpD,eAAeqD,iBAAiB,CACnCrC,QAASC,EAAYqC,6BACrBhC,YAAaW,EAAMsB,QACpB,EACD,KAAKjE,KAAKkE,mBAAmB,KAAKlE,KAAKc,SAAS,CAClD,iDApGWjC,EAAkC,CAAA,+BAAlCA,EAAkCsF,UAAA,CAAA,CAAA,8BAAA,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,WAAA,KAAA,OAAA,eAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,kBAAA,GAAA,OAAA,SAAA,QAAA,OAAA,EAAA,aAAA,EAAA,CAAA,kBAAA,GAAA,OAAA,SAAA,QAAA,UAAA,EAAA,YAAA,EAAA,CAAA,kBAAA,GAAA,OAAA,SAAA,QAAA,OAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,OAAA,SAAA,QAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,GAAA,OAAA,QAAA,EAAA,CAAA,qBAAA,GAAA,OAAA,SAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GCrB/C1G,EAAA,EAAA4G,IAAA,EAAA,EAAA,cAAA,CAAA,EAA0B,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,OAA1B1G,EAAAwG,EAAA1D,QAAA,IAAA,GAAA,EAAA,CAAA,iBDmBY6D,EAAcC,GAAeC,GAAEC,GAAwBC,GAAEC,EAAeC,CAAA,EAAAC,OAAA,CAAA;6HAAA,CAAA,CAAA,CAAA,SAEvEtG,CAAkC,GAAA,+BGlB3CuG,EAAA,EAAA,MAAA,CAAA,EAA6B,EAAA,aAAA,CAAA,EACSC,EAAA,CAAA,mBAAwBC,EAAA,EAAa,kBAA7DC,EAAA,EAAAC,EAAA,QAAAC,EAAAC,YAAA,CAAA,EAAwBH,EAAA,EAAAI,EAAAC,EAAA,EAAA,EAAAC,CAAA,CAAA,GDJ1C,IAgBaC,IAhBbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,KAEAC,KACAC,IACAC,KACAC,KACAC,kBAQaV,KAAkC,IAAA,CAAzC,MAAOA,CAAkC,CAW7CW,aAAA,CAViB,KAAAC,KAAOC,EAAOC,EAAuB,EACrC,KAAAC,aAAeF,EAAOG,EAAe,EACrC,KAAAC,qBAAuBJ,EAAOK,EAAuB,EACrD,KAAAC,eAAiBN,EAAOO,EAAc,EAEtC,KAAAC,YAAcC,EAAe,KAAKC,oBAAoB,KAAKX,KAAKY,SAAS,CAAC,EACxE,KAAAC,MAAQH,EAAe,KAAKI,SAAS,KAAKd,KAAKY,SAAS,CAAC,EACzD,KAAAG,OAASC,EAAiB,IAAM,KAAKC,UAAU,KAAKR,YAAW,CAAE,CAAC,EAClE,KAAAzB,YAAcgC,EAAqB,IAAM,KAAKE,eAAe,KAAKH,OAAM,CAAE,CAAC,EAG5F,KAAKR,eAAeY,aACjBC,KACCC,GAAkB,EAClBC,GAAQC,GAAUA,EAAMC,UAAYC,EAAYC,iBAAiB,EACjEC,GAAa,GAAG,CAAC,EAElBC,UAAWL,GAAU,KAAKd,YAAYoB,IAAIN,EAAMO,aAAe,MAAM,CAAC,CAC3E,CAEQhB,SAASF,EAA8B,CAC7C,OAAIA,EACK,KAAKP,qBAAqB0B,qBAAqB,cAAenB,CAAS,EAEzE,EACT,CAEQD,oBAAoBC,EAA8B,CACxD,OAAOA,GACH,KAAKT,aAAa6B,2BAA2BpB,EAAWa,EAAYC,iBAAiB,GAAGI,aAAe,EAE7G,CAEQb,UAAUF,EAAe,CAC/B,OAAQA,EAAM,CACZ,IAAK,aACH,MAAO,yBACT,IAAK,cACH,MAAO,yBACX,CACA,MAAO,EACT,CAEQG,eAAee,EAAqB,CAC1C,OAAQA,EAAa,CACnB,IAAK,yBACH,MAAO,cACT,IAAK,0BACH,MAAO,WACX,CACA,MAAO,MACT,iDApDW7C,EAAkC,CAAA,+BAAlCA,EAAkC8C,UAAA,CAAA,CAAA,8BAAA,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAApD,EAAA,IAAAoD,EAAA,IChB/C7D,EAAA,EAAA,MAAA,CAAA,EAA6B,EAAA,MAAA,EACrBC,EAAA,CAAA,EAAaC,EAAA,EACnB4D,EAAA,EAAAC,IAAA,EAAA,EAAA,MAAA,CAAA,EAKF7D,EAAA,cANQC,EAAA,CAAA,EAAAI,EAAAE,EAAA0B,MAAA,CAAA,EACNhC,EAAA,EAAA6D,GAAAC,EAAAxD,EAAA4B,OAAA,GAAA,EAAA,GAAA4B,CAAA,kBDYUC,GAAiBC,GAAEC,EAAeC,CAAA,EAAAC,OAAA,CAAA;6HAAA,CAAA,CAAA,CAAA,SAEjC5D,CAAkC,GAAA,IEhB/C,IAAA6D,GAAAC,EAAA,KAAAC,KACAC,OCDA,IAAAC,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,KAAAC,KACAC,KACAC,OCFA,IAAAC,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCfA,IAAAC,IAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC","names":["GalaxyDateDefault","GalaxyFilterOperator","GalaxyFilterType","init_enums","__esmMin","GalaxyAbstractFilterInput","GalaxyFilterChipInjectionToken","InnerGalaxyFilterChipInjectionToken","GalaxySymbolsFilterOperators","GalaxyStringFilterValue","init_interface","__esmMin","init_enums","init_core","inputs","initialValue","operator","outputs","valueChanges","InjectionToken","GalaxyFilterOperator","FILTER_OPERATOR_INVALID","FILTER_OPERATOR_IS_EMPTY","FILTER_OPERATOR_IS_NOT_EMPTY","FILTER_OPERATOR_IS","FILTER_OPERATOR_IS_NOT","FILTER_OPERATOR_IS_ANY","FILTER_OPERATOR_IS_NOT_ANY","FILTER_OPERATOR_IS_ALL","FILTER_OPERATOR_IS_NOT_ALL","FILTER_OPERATOR_CONTAINS","FILTER_OPERATOR_DOES_NOT_CONTAIN","FILTER_OPERATOR_IS_EQUAL_TO","FILTER_OPERATOR_IS_NOT_EQUAL_TO","FILTER_OPERATOR_IS_GREATER_THAN","FILTER_OPERATOR_IS_GREATER_THAN_OR_EQUAL_TO","FILTER_OPERATOR_IS_LESS_THAN","FILTER_OPERATOR_IS_LESS_THAN_OR_EQUAL_TO","FILTER_OPERATOR_IS_BEFORE","FILTER_OPERATOR_IS_BEFORE_OR_ON","FILTER_OPERATOR_IS_AFTER","FILTER_OPERATOR_IS_AFTER_OR_ON","FILTER_OPERATOR_IS_BETWEEN","FILTER_OPERATOR_IS_NOT_BETWEEN","FILTER_OPERATOR_IS_VALID","FILTER_OPERATOR_IS_NOT_VALID","GalaxyDateDefault","DATE_DEFAULT_INVALID","DATE_DEFAULT_TODAY","DATE_DEFAULT_YESTERDAY","DATE_DEFAULT_TOMORROW","DATE_DEFAULT_THIS_WEEK","DATE_DEFAULT_LAST_WEEK","DATE_DEFAULT_NEXT_WEEK","DATE_DEFAULT_THIS_MONTH","DATE_DEFAULT_LAST_MONTH","DATE_DEFAULT_NEXT_MONTH","DATE_DEFAULT_THIS_QUARTER","DATE_DEFAULT_LAST_QUARTER","DATE_DEFAULT_NEXT_QUARTER","DATE_DEFAULT_THIS_YEAR","DATE_DEFAULT_LAST_YEAR","DATE_DEFAULT_NEXT_YEAR","ɵɵelementStart","ɵɵlistener","filterDefinition_r2","ɵɵrestoreView","_r1","$implicit","ctx_r2","ɵɵnextContext","ɵɵresetView","emitNewFilter","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","fieldName","GalaxyAddFilterModalComponent","init_galaxy_add_filter_modal_component","__esmMin","init_common","init_core","init_forms","init_divider","init_icon","init_input","init_select","init_ngx_translate_core","init_form_field","init_esm","init_interface","init_list","constructor","filtersHeader","addFilter","EventEmitter","searchControl","UntypedFormControl","filtersDependencies","inject","InnerGalaxyFilterChipInjectionToken","filterDefinitions$","valueChanges","pipe","startWith","switchMap","searchTerm","listObjectFilters","filter","emit","__spreadValues","selectors","viewQuery","rf","ctx","ɵɵelement","ɵɵrepeaterCreate","GalaxyAddFilterModalComponent_For_11_Template","ɵɵrepeaterTrackByIdentity","ɵɵproperty","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵtextInterpolate","ɵɵrepeater","CommonModule","AsyncPipe","MatSelectModule","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","TranslateModule","TranslatePipe","GalaxyFormFieldModule","FormFieldComponent","MatIconModule","MatDividerModule","MatInputModule","MatInput","MatActionList","MatListItem","styles","GalaxyCustomFilterChipComponent","init_custom_filter_chip_component","__esmMin","init_common","init_core","initialValue","values","_initialValues","constructor","ref","componentRef","ngAfterViewInit","filterChip","console","error","viewContainerRef","overrideRef","clear","createComponent","instance","detectChanges","ngOnDestroy","destroy","ɵɵdirectiveInject","ChangeDetectorRef","selectors","viewQuery","rf","ctx","ViewContainerRef","ɵɵtemplate","GalaxyCustomFilterChipComponent_ng_template_0_Template","ɵɵtemplateRefExtractor","CommonModule","encapsulation","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","control_r1","option","ɵɵadvance","ɵɵtextInterpolate1","GalaxyCheckboxFilterInputComponent","init_checkbox_filter_input_component","__esmMin","init_common","init_core","init_forms","init_input","init_ngx_translate_core","init_interface","init_form_field","init_esm","init_autocomplete","init_operators","init_rxjs_interop","init_checkbox","fieldId","value","_fieldId","set","disabled","formGroup","disable","initialValue","_initialValue","constructor","formBuilder","valueChanges","EventEmitter","FormGroup","signal","availableOptions","formValueChanges","toSignal","controls","computed","Object","keys","forEach","formControl","get","subscriptions","filtersDependencies","inject","InnerGalaxyFilterChipInjectionToken","effect","currentValues","map","string","options","includes","removeControl","control","addControl","pristine","setValue","fieldId$","toObservable","push","pipe","distinctUntilChanged","a","b","sort","join","subscribe","values","entries","checked","emit","filter","length","switchMap","getFieldOptions","shareReplay","ngOnDestroy","subscription","unsubscribe","clearValue","reset","ɵɵdirectiveInject","FormBuilder","selectors","inputs","booleanAttribute","outputs","features","ɵɵProvidersFeature","provide","GalaxyAbstractFilterInput","useExisting","forwardRef","ɵɵInputTransformsFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","GalaxyCheckboxFilterInputComponent_mat_checkbox_1_Template","CommonModule","NgForOf","TranslateModule","ReactiveFormsModule","NgControlStatus","NgControlStatusGroup","FormGroupDirective","FormControlName","MatInputModule","GalaxyFormFieldModule","FormFieldComponent","MatAutocompleteModule","MatCheckboxModule","MatCheckbox","encapsulation","GalaxyCustomFilterInputComponent","init_custom_filter_input_component","__esmMin","init_common","init_core","init_rxjs_interop","init_interface","initialValue","values","_initialValues","operator","value","_operator","componentRef","instance","constructor","ref","valueChanges","EventEmitter","destroyRef","inject","DestroyRef","ngAfterViewInit","filterOverride","console","error","viewContainerRef","overrideRef","clear","createComponent","filterInput","pipe","takeUntilDestroyed","subscribe","emit","detectChanges","clearValue","ngOnDestroy","destroy","ɵɵdirectiveInject","ChangeDetectorRef","selectors","viewQuery","rf","ctx","ViewContainerRef","provide","GalaxyAbstractFilterInput","useExisting","forwardRef","decls","vars","consts","template","ɵɵtemplate","GalaxyCustomFilterInputComponent_ng_template_0_Template","ɵɵtemplateRefExtractor","CommonModule","encapsulation","dateDefaultToLabel","init_date_default_labels","__esmMin","init_enums","dateOption","GalaxyDateDefault","DATE_DEFAULT_INVALID","label","DATE_DEFAULT_TODAY","DATE_DEFAULT_TOMORROW","DATE_DEFAULT_YESTERDAY","DATE_DEFAULT_THIS_WEEK","DATE_DEFAULT_NEXT_WEEK","DATE_DEFAULT_LAST_WEEK","DATE_DEFAULT_THIS_MONTH","DATE_DEFAULT_NEXT_MONTH","DATE_DEFAULT_LAST_MONTH","DATE_DEFAULT_THIS_QUARTER","DATE_DEFAULT_NEXT_QUARTER","DATE_DEFAULT_LAST_QUARTER","DATE_DEFAULT_THIS_YEAR","DATE_DEFAULT_NEXT_YEAR","DATE_DEFAULT_LAST_YEAR","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","option_r1","dateOption","ɵɵtextInterpolate","ɵɵpipeBind1","label","ɵɵtemplate","GalaxyDateFilterInputComponent_glxy_form_field_1_ng_container_3_Template","ctx_r1","dateDefaultControl","dateDefaultOptions","ɵɵelement","dateRangePicker_r3","ɵɵpropertyInterpolate","startDateControl","endDateControl","GalaxyDateFilterInputComponent_ng_container_2_ng_container_1_Template","showDateRangePicker","datePicker_r4","dateControl","GalaxyDateFilterInputComponent","init_date_filter_input","__esmMin","init_core","init_common","init_interface","init_enums","init_form_field","init_esm","init_date_default_labels","init_forms","init_ngx_translate_core","init_select","init_button","init_input","init_datepicker","operator","value","state","update","__spreadProps","__spreadValues","dateSelectionType","GalaxyFilterOperator","FILTER_OPERATOR_IS_BETWEEN","FILTER_OPERATOR_IS_NOT_BETWEEN","DatePickerSelection","range","single","initialValue","length","date","setValue","GalaxyDateDefault","DATE_DEFAULT_INVALID","window","setTimeout","toUTC","Date","day","getUTCDate","toString","padStart","month","getUTCMonth","year","getUTCFullYear","valueChanges","emit","dateDefault","emitEvent","disabled","disable","constructor","signal","FILTER_OPERATOR_IS","EventEmitter","computed","dateDefaultToLabel","filter","option","FormControl","nonNullable","undefined","showDate$","pipe","startWith","map","subscriptions","push","tap","subscribe","combineLatest","startDate","endDate","ngOnDestroy","forEach","subscription","unsubscribe","clearValue","selectors","inputs","booleanAttribute","outputs","features","ɵɵProvidersFeature","provide","GalaxyAbstractFilterInput","useExisting","forwardRef","ɵɵInputTransformsFeature","decls","vars","consts","template","rf","ctx","GalaxyDateFilterInputComponent_glxy_form_field_1_Template","GalaxyDateFilterInputComponent_ng_container_2_Template","GalaxyDateFilterInputComponent_ng_template_4_Template","ɵɵtemplateRefExtractor","CommonModule","NgForOf","NgIf","AsyncPipe","TranslateModule","TranslatePipe","MatSelectModule","MatPrefix","MatSelect","MatOption","MatButtonModule","MatInputModule","MatInput","GalaxyFormFieldModule","FormFieldComponent","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","GalaxyDatepickerModule","MatDatepickerModule","MatDatepickerToggle","MatDateRangeInput","MatStartDate","MatEndDate","MatDateRangePicker","styles","GalaxyNoInputFilterInputComponent","init_no_input_component","__esmMin","init_core","init_common","constructor","valueChanges","EventEmitter","initialValue","_","emit","selectors","inputs","outputs","features","ɵɵProvidersFeature","decls","vars","template","rf","ctx","dependencies","CommonModule","encapsulation","GalaxyNoneSelectedFilterInputComponent","init_none_selected_input_component","__esmMin","init_common","init_ngx_translate_core","selectors","features","ɵɵProvidersFeature","decls","vars","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","CommonModule","TranslateModule","TranslatePipe","encapsulation","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","option_r1","ɵɵadvance","ɵɵtextInterpolate","GalaxyRadioFilterInputComponent","init_radio_filter_input_component","__esmMin","init_common","init_core","init_rxjs_interop","init_forms","init_autocomplete","init_input","init_radio","init_ngx_translate_core","init_form_field","init_esm","init_operators","init_interface","fieldId","value","_fieldId","set","disabled","formControl","disable","initialValue","_initialValue","constructor","valueChanges","EventEmitter","FormControl","signal","availableOptions","subscriptions","filtersDependencies","inject","InnerGalaxyFilterChipInjectionToken","effect","length","setValue","string","fieldId$","toObservable","push","pipe","distinctUntilChanged","subscribe","emit","filter","switchMap","getFieldOptions","shareReplay","options","ngOnDestroy","forEach","subscription","unsubscribe","clearValue","reset","selectors","inputs","booleanAttribute","outputs","features","ɵɵProvidersFeature","provide","GalaxyAbstractFilterInput","useExisting","forwardRef","ɵɵInputTransformsFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","GalaxyRadioFilterInputComponent_mat_radio_button_2_Template","CommonModule","NgForOf","TranslateModule","ReactiveFormsModule","NgControlStatus","FormControlDirective","MatInputModule","GalaxyFormFieldModule","FormFieldComponent","MatAutocompleteModule","MatRadioModule","MatRadioGroup","MatRadioButton","encapsulation","SEARCH_DEBOUNCE_MS","FILTER_RANGE_OPERATORS","init_constants","__esmMin","init_enums","GalaxyFilterOperator","FILTER_OPERATOR_IS_BETWEEN","FILTER_OPERATOR_IS_NOT_BETWEEN","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","option_r1","ɵɵadvance","ɵɵtextInterpolate1","GalaxyStringFilterInputComponent","init_string_filter_input_component","__esmMin","init_common","init_core","init_rxjs_interop","init_forms","init_autocomplete","init_input","init_ngx_translate_core","init_form_field","init_esm","init_operators","init_constants","init_interface","fieldId","value","_fieldId","set","initialValue","length","string","formControl","setValue","disabled","disable","constructor","valueChanges","EventEmitter","FormControl","nonNullable","searchTerm","toSignal","signal","availableOptions","subscriptions","filteredOptions","computed","filtersDependencies","inject","InnerGalaxyFilterChipInjectionToken","effect","emit","searchTerm$","toObservable","fieldId$","push","combineLatest","pipe","filter","debounceTime","SEARCH_DEBOUNCE_MS","switchMap","getFieldOptions","shareReplay","subscribe","options","ngOnDestroy","forEach","subscription","unsubscribe","clearValue","selectors","inputs","booleanAttribute","outputs","features","ɵɵProvidersFeature","provide","GalaxyAbstractFilterInput","useExisting","forwardRef","ɵɵInputTransformsFeature","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵtemplate","GalaxyStringFilterInputComponent_mat_option_5_Template","ɵɵpipeBind1","auto_r2","CommonModule","NgForOf","TranslateModule","TranslatePipe","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","MatInputModule","MatInput","GalaxyFormFieldModule","FormFieldComponent","MatAutocompleteModule","MatAutocomplete","MatOption","MatAutocompleteTrigger","encapsulation","MAX_TAG_LENGTH","GalaxyTagsFilterInputComponent","init_tags_filter_input_component","__esmMin","init_common","init_core","init_rxjs_interop","init_forms","init_ngx_translate_core","init_form_field","init_tags","init_esm","init_constants","init_interface","tagsFieldId","value","_tagsFieldId","set","initialValue","tags","map","val","string","filter","tag","length","formControl","setValue","disabled","disable","constructor","signal","searchTerm","availableTags","maxTags","valueChanges","EventEmitter","FormControl","nonNullable","subscriptions","filtersDependencies","inject","InnerGalaxyFilterChipInjectionToken","tagsUsed","toSignal","effect","filterValues","emit","availableTags$","toObservable","computed","pipe","options","distinctUntilChanged","debounceTime","SEARCH_DEBOUNCE_MS","switchMap","o","getFieldOptions","push","subscribe","ngOnDestroy","forEach","subscription","unsubscribe","searchTextChanged","clearValue","selectors","inputs","booleanAttribute","outputs","features","ɵɵProvidersFeature","provide","GalaxyAbstractFilterInput","useExisting","forwardRef","ɵɵInputTransformsFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","$event","ɵɵelementEnd","ɵɵelement","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","tmp_3_0","undefined","ɵɵpureFunction0","_c0","CommonModule","TranslateModule","TranslatePipe","ReactiveFormsModule","NgControlStatus","MaxLengthValidator","FormControlDirective","GalaxyTagsModule","TagsComponent","GalaxyFormFieldModule","FormFieldComponent","encapsulation","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","option_r1","ɵɵadvance","ɵɵtextInterpolate","GalaxyBooleanFilterInputComponent","init_boolean_filter_input_component","__esmMin","init_common","init_core","init_rxjs_interop","init_forms","init_autocomplete","init_input","init_radio","init_ngx_translate_core","init_form_field","init_esm","init_operators","init_interface","fieldId","value","_fieldId","set","initialValue","_initialValue","disabled","formControl","disable","constructor","valueChanges","EventEmitter","FormControl","signal","availableOptions","subscriptions","filtersDependencies","inject","InnerGalaxyFilterChipInjectionToken","effect","length","setValue","boolean","fieldId$","toObservable","push","pipe","distinctUntilChanged","subscribe","emit","filter","switchMap","getFieldOptions","shareReplay","options","ngOnDestroy","forEach","subscription","unsubscribe","clearValue","reset","selectors","inputs","booleanAttribute","outputs","features","ɵɵProvidersFeature","provide","GalaxyAbstractFilterInput","useExisting","forwardRef","ɵɵInputTransformsFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","GalaxyBooleanFilterInputComponent_mat_radio_button_2_Template","CommonModule","NgForOf","TranslateModule","ReactiveFormsModule","NgControlStatus","FormControlDirective","MatInputModule","GalaxyFormFieldModule","FormFieldComponent","MatAutocompleteModule","MatRadioModule","MatRadioGroup","MatRadioButton","styles","stopChromeAutofill","Math","random","toString","substring","init_stop_chrome_autofill","__esmMin","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","selectedCountry_r2","flag","ɵɵproperty","option_r3","countryCode","ɵɵtextInterpolate","callingCode","ɵɵtextInterpolate2","countryName","ɵɵelement","option_r4","DEFAULT_COUNTRY_CODE","GalaxyPhoneFilterInputComponent","init_phone_filter_input_component","__esmMin","init_core","init_interface","init_common","init_ngx_translate_core","init_forms","init_input","init_form_field","init_autocomplete","init_rxjs_interop","init_esm","init_operators","init_constants","init_select","init_ngx_mat_select_search","init_country_codes","init_uiowa_digit_only","init_stop_chrome_autofill","fieldId","value","_fieldId","set","initialValue","length","phone","startingPhoneNumber","nationalNumber","startingCountry","isoCountryCode","startingExtension","extension","phoneNumberControl","setValue","countryControl","countryCodeService","countryCodeUsed","extensionControl","phoneVals","phoneFieldVals","disabled","phoneFormGroup","disable","constructor","destroyRef","valueChanges","EventEmitter","searchCountryControl","FormControl","nonNullable","FormGroup","country","phoneNumber","disableAutoComplete","stopChromeAutofill","selectedCountry","computed","getCountryOption","selectedCountryCallingCode","countryOptions$","pipe","distinctUntilChanged","shareReplay","refCount","bufferSize","filteredCountryOptions$","startWith","withLatestFrom","map","filterValue","countryOptions","fVal","filter","c","includes","toLowerCase","signal","searchTerm","toSignal","availableOptions","subscriptions","filteredOptions","filtersDependencies","inject","InnerGalaxyFilterChipInjectionToken","effect","emit","searchTerm$","toObservable","fieldId$","push","combineLatest","debounceTime","SEARCH_DEBOUNCE_MS","switchMap","stringSearch","bundlePhoneNumber","getFieldOptions","subscribe","options","ngOnInit","takeUntilDestroyed","tap","newVal","phoneValues","bundle","ngOnDestroy","forEach","subscription","unsubscribe","clearValue","ɵɵdirectiveInject","CountryCodeService","DestroyRef","selectors","inputs","booleanAttribute","outputs","features","ɵɵProvidersFeature","countryOptionsFactoryProvider","provide","GalaxyAbstractFilterInput","useExisting","forwardRef","MAT_SELECT_CONFIG","useValue","overlayPanelClass","ɵɵInputTransformsFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","GalaxyPhoneFilterInputComponent_p_6_Template","GalaxyPhoneFilterInputComponent_ng_template_7_Template","ɵɵtemplateRefExtractor","GalaxyPhoneFilterInputComponent_mat_option_13_Template","GalaxyPhoneFilterInputComponent_glxy_error_15_Template","ɵɵlistener","$event","i0","ɵɵrestoreView","_r1","ɵɵresetView","preventDefault","GalaxyPhoneFilterInputComponent_glxy_error_21_Template","GalaxyPhoneFilterInputComponent_glxy_error_25_Template","GalaxyPhoneFilterInputComponent_mat_option_28_Template","ɵɵpipeBind1","invalidCountryTrigger_r5","hasError","auto_r6","CommonModule","NgForOf","NgIf","AsyncPipe","TranslateModule","TranslatePipe","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormControlDirective","FormGroupDirective","FormControlName","MatInputModule","MatInput","MatPrefix","GalaxyFormFieldModule","FormFieldComponent","FormRowComponent","ErrorDirective","MatAutocompleteModule","MatAutocomplete","MatOption","MatAutocompleteTrigger","NgxMatSelectSearchModule","MatSelectSearchComponent","MatSelectModule","MatSelect","MatSelectTrigger","DigitOnlyModule","DigitOnlyDirective","styles","filterOperatorToLabel","init_filter_operator_labels","__esmMin","init_enums","GalaxyFilterOperator","FILTER_OPERATOR_INVALID","FILTER_OPERATOR_IS_EMPTY","FILTER_OPERATOR_IS_NOT_EMPTY","FILTER_OPERATOR_IS","FILTER_OPERATOR_IS_NOT","FILTER_OPERATOR_IS_ANY","FILTER_OPERATOR_IS_NOT_ANY","FILTER_OPERATOR_IS_ALL","FILTER_OPERATOR_IS_NOT_ALL","FILTER_OPERATOR_CONTAINS","FILTER_OPERATOR_DOES_NOT_CONTAIN","FILTER_OPERATOR_IS_EQUAL_TO","FILTER_OPERATOR_IS_NOT_EQUAL_TO","FILTER_OPERATOR_IS_GREATER_THAN","FILTER_OPERATOR_IS_GREATER_THAN_OR_EQUAL_TO","FILTER_OPERATOR_IS_LESS_THAN","FILTER_OPERATOR_IS_LESS_THAN_OR_EQUAL_TO","FILTER_OPERATOR_IS_BEFORE","FILTER_OPERATOR_IS_BEFORE_OR_ON","FILTER_OPERATOR_IS_AFTER","FILTER_OPERATOR_IS_AFTER_OR_ON","FILTER_OPERATOR_IS_BETWEEN","FILTER_OPERATOR_IS_NOT_BETWEEN","FILTER_OPERATOR_IS_VALID","FILTER_OPERATOR_IS_NOT_VALID","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵproperty","ctx_r0","valueControl","ɵɵtext","endValueControl","GalaxyFloatFilterInputComponent","init_float_filter_input","__esmMin","init_core","init_common","init_interface","init_enums","init_form_field","init_esm","init_forms","init_ngx_translate_core","init_input","init_rxjs_interop","operator","value","setSelectionType","initialValue","length","setValue","setRangeValue","disabled","disable","constructor","valueChanges","EventEmitter","selectionType$$","BehaviorSubject","FormControl","undefined","nonNullable","combineLatest","pipe","startWith","takeUntilDestroyed","debounceTime","subscribe","selectionType","endValue","emit","float","clearValue","reset","rangeOperators","GalaxyFilterOperator","FILTER_OPERATOR_IS_BETWEEN","FILTER_OPERATOR_IS_NOT_BETWEEN","next","includes","startValue","selectors","inputs","booleanAttribute","outputs","features","ɵɵProvidersFeature","provide","GalaxyAbstractFilterInput","useExisting","forwardRef","ɵɵInputTransformsFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","GalaxyFloatFilterInputComponent_Conditional_1_Template","GalaxyFloatFilterInputComponent_Conditional_3_Template","ɵɵconditional","CommonModule","AsyncPipe","TranslateModule","TranslatePipe","MatInputModule","MatInput","GalaxyFormFieldModule","FormFieldComponent","ReactiveFormsModule","DefaultValueAccessor","NumberValueAccessor","NgControlStatus","FormControlDirective","styles","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵproperty","ctx_r0","valueControl","ɵɵtext","endValueControl","GalaxyIntegerFilterInputComponent","init_integer_filter_input_component","__esmMin","init_interface","init_core","init_common","init_ngx_translate_core","init_input","init_form_field","init_forms","init_enums","init_esm","init_rxjs_interop","operator","value","setSelectionType","initialValue","length","setValue","setRangeValue","disabled","disable","constructor","valueChanges","EventEmitter","selectionType$$","BehaviorSubject","FormControl","undefined","nonNullable","combineLatest","pipe","startWith","takeUntilDestroyed","debounceTime","subscribe","selectionType","endValue","emit","integer","clearValue","reset","rangeOperators","GalaxyFilterOperator","FILTER_OPERATOR_IS_BETWEEN","FILTER_OPERATOR_IS_NOT_BETWEEN","next","includes","startValue","selectors","inputs","booleanAttribute","outputs","features","ɵɵProvidersFeature","provide","GalaxyAbstractFilterInput","useExisting","forwardRef","ɵɵInputTransformsFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","GalaxyIntegerFilterInputComponent_Conditional_1_Template","GalaxyIntegerFilterInputComponent_Conditional_3_Template","ɵɵconditional","CommonModule","AsyncPipe","TranslateModule","TranslatePipe","MatInputModule","MatInput","GalaxyFormFieldModule","FormFieldComponent","ReactiveFormsModule","DefaultValueAccessor","NumberValueAccessor","NgControlStatus","PatternValidator","FormControlDirective","styles","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","operatorOption_r1","operator","ɵɵtextInterpolate","ɵɵpipeBind1","label","ɵɵtemplate","GalaxyEditFilterModalComponent_ng_container_0_div_5_ng_container_5_Template","ctx_r1","selectedOperatorControl","operatorOptions","ɵɵtextInterpolate1","GalaxyEditFilterModalComponent_ng_container_0_ng_template_6_div_0_Template","GalaxyEditFilterModalComponent_ng_container_0_ng_template_6_ng_template_1_Template","ɵɵtemplateRefExtractor","tmp_6_0","length","defaultOperator_r3","ɵɵlistener","$event","ɵɵrestoreView","_r4","ɵɵnextContext","ɵɵresetView","filterValuesChanged","_initialFilter_r5","values","ɵɵpureFunction0","_c1","filterDefinition","fieldId","lockedValue","_r6","undefined","_r7","_r8","_r9","tmp_5_0","_r10","_r11","_r12","value","_r13","_r14","_r15","_r16","filterOverride","selectedOperator","_r17","ɵɵelement","ɵɵelementContainer","GalaxyEditFilterModalComponent_ng_container_0_ng_container_23_ng_container_1_Template","applyButton_r18","GalaxyEditFilterModalComponent_ng_container_0_ng_container_24_ng_container_1_Template","GalaxyEditFilterModalComponent_ng_container_0_div_5_Template","GalaxyEditFilterModalComponent_ng_container_0_ng_template_6_Template","GalaxyEditFilterModalComponent_ng_container_0_glxy_string_filter_input_9_Template","GalaxyEditFilterModalComponent_ng_container_0_glxy_tags_filter_input_10_Template","GalaxyEditFilterModalComponent_ng_container_0_glxy_tags_filter_input_11_Template","GalaxyEditFilterModalComponent_ng_container_0_glxy_tags_filter_input_12_Template","GalaxyEditFilterModalComponent_ng_container_0_glxy_radio_filter_input_13_Template","GalaxyEditFilterModalComponent_ng_container_0_glxy_checkbox_filter_input_14_Template","GalaxyEditFilterModalComponent_ng_container_0_glxy_no_input_filter_input_15_Template","GalaxyEditFilterModalComponent_ng_container_0_glxy_date_filter_input_16_Template","GalaxyEditFilterModalComponent_ng_container_0_glxy_float_filter_input_17_Template","GalaxyEditFilterModalComponent_ng_container_0_glxy_integer_filter_input_18_Template","GalaxyEditFilterModalComponent_ng_container_0_glxy_boolean_filter_input_19_Template","GalaxyEditFilterModalComponent_ng_container_0_glxy_custom_filter_input_20_Template","GalaxyEditFilterModalComponent_ng_container_0_glxy_phone_filter_input_21_Template","GalaxyEditFilterModalComponent_ng_container_0_glxy_none_selected_input_filter_input_22_Template","GalaxyEditFilterModalComponent_ng_container_0_ng_container_23_Template","GalaxyEditFilterModalComponent_ng_container_0_ng_container_24_Template","fieldName","supportedOperators","operatorLabel_r19","inputType","FilterInputType","FILTER_INPUT_TYPE_SINGLE_SELECT_STRING","FILTER_INPUT_TYPE_MULTI_SELECT_STRING","FILTER_INPUT_TYPE_SINGLE_SELECT_TAG","FILTER_INPUT_TYPE_MULTI_SELECT_TAG","FILTER_INPUT_TYPE_SINGLE_SELECT_RADIO","FILTER_INPUT_TYPE_MULTI_SELECT_CHECKBOX","FILTER_INPUT_TYPE_NO_INPUT","FILTER_INPUT_TYPE_DATE_SELECT","FILTER_INPUT_TYPE_FLOAT","FILTER_INPUT_TYPE_INTEGER","FILTER_INPUT_TYPE_BOOLEAN","FILTER_INPUT_TYPE_CUSTOM_INPUT","FILTER_INPUT_TYPE_PHONE","FILTER_INPUT_TYPE_NO_OPERATOR_SELECTED","_r20","applyFilter","GalaxyEditFilterModalComponent","init_galaxy_edit_filter_modal_component","__esmMin","init_common","init_core","init_rxjs_interop","init_forms","init_button","init_input","init_select","init_ngx_translate_core","init_form_field","init_enums","init_checkbox_filter_input_component","init_custom_filter_input_component","init_date_filter_input","init_no_input_component","init_none_selected_input_component","init_radio_filter_input_component","init_string_filter_input_component","init_tags_filter_input_component","init_boolean_filter_input_component","init_phone_filter_input_component","init_filter_operator_labels","init_interface","init_float_filter_input","init_integer_filter_input_component","constructor","applyFilterChanges","EventEmitter","FormControl","GalaxyFilterOperator","FILTER_OPERATOR_IS","nonNullable","filterValues","signal","_initialFilter","computed","getOperatorOptions","foundOverride","filterInputOverrides","find","override","getInputType","operatorControl","toSignal","valueChanges","initialValue","filterValuesSet","filterFloatTolerance","findIndex","float","filtersDependencies","inject","InnerGalaxyFilterChipInjectionToken","getFilterInputOverrides","initialFilter","setValue","disable","set","_filterValuesSet","filter","floatTolerance","operatorHasNoInput","FILTER_OPERATOR_IS_NOT_EMPTY","FILTER_OPERATOR_IS_EMPTY","FILTER_OPERATOR_IS_NOT_VALID","FILTER_OPERATOR_IS_VALID","includes","FILTER_OPERATOR_INVALID","preset","emit","map","filterOperatorToLabel","type","GalaxyFilterType","FILTER_TYPE_CHECKBOX","FILTER_OPERATOR_IS_NOT","FILTER_OPERATOR_IS_EQUAL_TO","FILTER_OPERATOR_IS_NOT_EQUAL_TO","FILTER_TYPE_DATE","FILTER_TYPE_FLOAT","FILTER_TYPE_INTEGER","FILTER_OPERATOR_CONTAINS","FILTER_OPERATOR_DOES_NOT_CONTAIN","FILTER_TYPE_STRING","FILTER_TYPE_TAG","FILTER_TYPE_BOOLEAN","FILTER_TYPE_PHONE","FILTER_OPERATOR_IS_ANY","FILTER_OPERATOR_IS_NOT_ANY","FILTER_OPERATOR_IS_ALL","FILTER_OPERATOR_IS_NOT_ALL","selectors","viewQuery","rf","ctx","GalaxyAbstractFilterInput","GalaxyEditFilterModalComponent_ng_container_0_Template","GalaxyEditFilterModalComponent_ng_template_1_Template","CommonModule","NgForOf","NgIf","NgTemplateOutlet","NgSwitch","NgSwitchCase","TranslateModule","TranslatePipe","MatSelectModule","MatSelect","MatOption","MatButtonModule","MatButton","MatInputModule","GalaxyFormFieldModule","FormFieldComponent","ReactiveFormsModule","NgControlStatus","FormControlDirective","GalaxyStringFilterInputComponent","GalaxyNoInputFilterInputComponent","GalaxyNoneSelectedFilterInputComponent","GalaxyTagsFilterInputComponent","GalaxyDateFilterInputComponent","GalaxyCheckboxFilterInputComponent","GalaxyRadioFilterInputComponent","GalaxyCustomFilterInputComponent","GalaxyFloatFilterInputComponent","GalaxyBooleanFilterInputComponent","GalaxyIntegerFilterInputComponent","GalaxyPhoneFilterInputComponent","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","filter_r2","operatorSymbol","ɵɵelement","ɵɵproperty","customChip","values","selectedValue","ɵɵtemplate","GalaxyFilterChipsComponent_For_6_ng_template_5_span_0_Template","ɵɵlistener","ɵɵrestoreView","_r7","ɵɵnextContext","$implicit","ctx_r2","ɵɵresetView","clearFilterValue","$event","_r8","updateSelectedFilter","selected_r9","definition","filter","_r1","removeFilter","ctx_r3","ɵ$index_9_r5","$index","editFilterPopover_r6","ɵɵreference","openEditFilter","open","GalaxyFilterChipsComponent_For_6_span_3_Template","GalaxyFilterChipsComponent_For_6_span_4_Template","GalaxyFilterChipsComponent_For_6_ng_template_5_Template","ɵɵtemplateRefExtractor","GalaxyFilterChipsComponent_For_6_button_7_Template","closePopovers","ɵɵdeclareLet","GalaxyFilterChipsComponent_For_6_Conditional_11_Template","preset","fieldName","canHaveEmptyValue","withSelectedValue_r10","lockedValue","popoverPositions","ɵɵstoreLet","selectedFilterToEdit","ɵɵconditional","selected_r11","filterId","_r13","addSelectedFilter","selected_r14","_r15","selectNewFilterFromDefinition","addFiltersHeader","_r16","clearFilters","ɵɵpipeBind1","_r12","openAddFilter","GalaxyFilterChipsComponent_div_7_Conditional_8_Template","GalaxyFilterChipsComponent_div_7_Conditional_9_Template","GalaxyFilterChipsComponent_div_7_button_10_Template","addFilterPopover_r17","tmp_12_0","selectedFilterToAdd","canClear","GalaxyFilterChipsComponent","init_galaxy_filter_chips_component","__esmMin","init_common","init_core","init_rxjs_interop","init_forms","init_chips","init_icon","init_select","init_ngx_translate_core","init_form_field","init_popover","init_esm","init_esm_browser","init_galaxy_add_filter_modal_component","init_custom_filter_chip_component","init_galaxy_edit_filter_modal_component","init_enums","init_interface","init_constants","init_phone_filter_input_component","init_country_codes","getDefinition","f","filterDefinitions","find","d","fieldId","constructor","translate","countryCodeService","datePipe","showAddFilter","filtersChanged","EventEmitter","filtersDependencies","inject","InnerGalaxyFilterChipInjectionToken","toSignal","listObjectFilters","filters","signal","filterInputOverrides","getFilterInputOverrides","filterOverrideMap","computed","overrideMap","Map","override","set","pops","BottomLeft","Bottom","BottomRight","TopLeft","TopRight","filtersChips","filtersToFilterChips","def","length","effect","emit","ngOnInit","getInitialAppliedFilters","then","catch","err","console","error","newFilterId","uuidv4","update","presetFilters","Set","presetResettedFilterValues","map","operator","supportedOperators","GalaxyFilterOperator","FILTER_OPERATOR_INVALID","__spreadProps","__spreadValues","lockedFilterValues","filterDefinition","defaultOperator","FILTER_OPERATOR_IS","type","GalaxyFilterType","FILTER_TYPE_TAG","FILTER_OPERATOR_IS_ALL","FILTER_TYPE_FLOAT","FILTER_OPERATOR_IS_EQUAL_TO","selectFilterToAdd","transformToSelectedFilter","floatTolerance","selectFilterToEdit","index","selected","setTimeout","element","editFilterModal","get","operatorSelect","focus","addEditFilterModal","addFilterPopover","addFilterModal","searchInput","nativeElement","editFilterPopover","close","getFilterChipOverride","filterOverride","filterChip","definitionForFilter","filterValues","GalaxySymbolsFilterOperators","symbol","instant","FILTER_OPERATOR_IS_NOT_EMPTY","FILTER_OPERATOR_IS_EMPTY","FILTER_OPERATOR_IS_NOT_VALID","FILTER_OPERATOR_IS_VALID","hasStringProperty","Object","prototype","hasOwnProperty","call","string","float","undefined","from","toString","FILTER_RANGE_OPERATORS","includes","to","integer","phone","countryCode","countryOption","getCountryOption","isoCountryCode","DEFAULT_COUNTRY_CODE","callingCode","phoneNumber","nationalNumber","ext","extension","boolean","dateDefaultStringFilter","FILTER_OPERATOR_IS_NOT","FILTER_OPERATOR_IS_BEFORE","FILTER_OPERATOR_IS_BEFORE_OR_ON","FILTER_OPERATOR_IS_AFTER","FILTER_OPERATOR_IS_AFTER_OR_ON","dateDefault","GalaxyDateDefault","DATE_DEFAULT_INVALID","translateFilter","GalaxyStringFilterValue","date","transform","FILTER_OPERATOR_IS_NOT_BETWEEN","FILTER_OPERATOR_IS_BETWEEN","fromDate","toDate","overrideChip","ɵɵdirectiveInject","TranslateService","CountryCodeService","DatePipe","selectors","viewQuery","rf","ctx","booleanAttribute","outputs","features","ɵɵProvidersFeature","countryOptionsFactoryProvider","provide","useFactory","deps","GalaxyFilterChipInjectionToken","bind","getFieldOptions","of","__async","setInitialAppliedFilters","ɵɵInputTransformsFeature","decls","vars","consts","template","ɵɵrepeaterCreate","GalaxyFilterChipsComponent_For_6_Template","ɵɵrepeaterTrackByIdentity","GalaxyFilterChipsComponent_div_7_Template","ɵɵrepeater","CommonModule","NgIf","MatSelectModule","ReactiveFormsModule","TranslateModule","TranslatePipe","GalaxyFormFieldModule","MatIconModule","MatIcon","GalaxyPopoverModule","PopoverComponent","GalaxyPopoverDirective","GalaxyEditFilterModalComponent","MatChipsModule","MatChip","MatChipRemove","MatChipSet","GalaxyAddFilterModalComponent","GalaxyCustomFilterChipComponent","styles","MODULE_IMPORTS","GalaxyFilterChipsModule","init_filter_chips_module","__esmMin","init_galaxy_filter_chips_component","GalaxyFilterChipsComponent","init_public_api","__esmMin","init_filter_chips_module","init_enums","init_interface","init_filter_inputs","__esmMin","init_boolean_filter_input_component","init_date_filter_input","init_float_filter_input","init_integer_filter_input_component","init_string_filter_input_component","init_tags_filter_input_component","init_checkbox_filter_input_component","init_radio_filter_input_component","init_custom_filter_input_component","init_no_input_component","init_none_selected_input_component","init_chips","__esmMin","init_public_api","init_filter_inputs","userFilterFn","user","searchTerm","toLowerCase","includesFullName","displayName","includes","includesFirstName","firstName","includesLastName","lastName","includesUserId","userId","includesEmail","email","convertToReadableUsers","users","map","__spreadProps","__spreadValues","trim","convertGalaxyFilters","filters","filterGroup","operator","FilterGroupOperator","FILTER_GROUP_OPERATOR_AND","forEach","inputFilter","fieldId","filterOperator","FilterOperator","GalaxyFilterOperator","undefined","filterGroupFilter","values","floatTolerance","convertFromGalaxyFilterValues","push","convertToGalaxyFilter","filter","convertToGalaxyFilterOperator","FILTER_OPERATOR_INVALID","convertToGalaxyFilterValues","convertToGalaxyFilterType","type","GalaxyFilterType","FilterType","convertToGalaxyFilterOperators","operators","o","v","convertToGalaxyFilterValue","value","dateDefault","GalaxyDateDefault","DateDefault","boolean","integer","string","date","float","phone","convertFromGalaxyFilterValue","getObjectDependencies","objectType","parentConfig","emptyConfig","company","contact","activity","opportunity","getMultiUsers","uniqueUserIds","config","iamService","services","userService","pipe","catchError","error","console","of","uniqueUserIdentifiers","UserIdentifier","Error","init_utils","__esmMin","init_vendasta_iamv2","init_chips","init_vendasta_crm","init_esm","init_operators","StandardExternalIds","NonStandardExternalIDs","SystemFieldIds","ContactCustomColumns","CompanyCustomColumns","TaskCustomColumns","OpportunityCustomColumns","StandardIds","PlatformExtensionFieldIds","fieldIds","renderableReadonlyFields","demoFieldIds","prodFieldIds","CrmFieldService","init_field_service","__esmMin","init_src","FirstName","LastName","PhoneNumber","Email","Tags","ActivityRecordChangeType","ContactCompanyName","ChangeRecordChangeType","NetPromoterScore","LastEmailRequest","LastSmsRequest","ActivityCreated","ActivityUpdated","ActivityEffectiveDate","ActivityID","ActivityType","ActivityOwnerID","ContactCreated","ContactUpdated","ContactID","ContactExternalID","ContactOwnerID","ContactGroupID","ContactLastActivityDate","CompanyCreated","CompanyUpdated","CompanyID","CompanyExternalID","CompanyOwnerID","CompanyGroupID","CompanyLastActivityDate","OpportunityCreated","OpportunityUpdated","OpportunityID","OpportunityExternalID","OpportunityOwnerID","OpportunityLastActivityDate","CustomObjectCreated","CustomObjectUpdated","CustomObjectID","CustomObjectExternalID","CustomObjectOwnerID","CustomObjectTypeID","FullName","FullAddress","PrimaryCompanyName","Location","ParentCompanyName","AssignedTo","AssociatedCompany","AssociatedContact","PrimaryAssociation","ActivityManuallyLogged","ActivityNoteBody","ActivityNoteTitle","ActivityEmailID","ActivityEmailType","ActivityEmailDirection","ActivityEmailStatus","ActivityEmailBody","ActivityEmailSubject","ActivityEmailHeaders","ActivityEmailDate","ActivityEmailCampaignName","ActivityCampaignID","ActivityCallDirection","ActivityCallOutcome","ActivityCallDuration","ActivityCallFromNumber","ActivityCallToNumber","ActivityCallRecordingURL","ActivityCallBody","ActivityCallStatus","ActivityCallDate","ActivityCallRecordingUrl","ActivityCallRecordId","ActivityCallTranscript","ActivityMeetingBody","ActivityMeetingInternalNotes","ActivityMeetingURL","ActivityMeetingLocation","ActivityMeetingStartTime","ActivityMeetingEndTime","ActivityMeetingOutcome","ActivityMeetingStatus","ActivityMeetingDuration","ActivityMeetingSentiment","ActivityMeetingSalesScore","ActivityMeetingSummaryTitle","ActivityMeetingSummaryBody","ActivityMeetingKeyTakeaways","ActivityMeetingActionItems","ActivityMeetingAnalysisProcessedTranscriptID","ActivityMeetingLastAnalyzedDate","ActivityMeetingTranscriptUrl","ActivityMeetingRecordingUrl","ActivityName","ActivitySourceName","ActivityRecordSourceDrillDown1","ActivityRecordSourceDrillDown2","ActivityTaskBody","ActivityTaskDueDate","ActivityTaskPriority","ActivityTaskStatus","ActivityTaskType","ActivityTags","ActivityCommunicationChannel","ActivityCommunicationOutcome","ActivityCommunicationDirection","ActivityCommunicationFromId","ActivityCommunicationToId","ActivityCommunicationBody","ActivityCommunicationDate","ActivityCommunicationType","ActivityCommunicationStatus","ActivityUrl","ActivityUrlName","ActivityOpportunityChangeID","ActivityOpportunityChangePipelineStage","ActivityOpportunityChangeLostReason","ActivityOpportunityChangeNotes","ActivityOpportunityChangeUpdatedDate","ActivityOpportunityChangeSalespersonID","CompanyName","CompanyPrimaryAddressLine1","CompanyPrimaryAddressLine2","CompanyPrimaryAddressCity","CompanyPrimaryAddressState","CompanyPrimaryAddressPostalCode","CompanyPrimaryAddressCountry","CompanyPrimaryAddressGooglePlaceID","CompanyPrimaryAddressLatitudeLongitude","CompanyWebsite","CompanyPhoneNumber","CompanyTags","CompanyLifecycleStage","CompanyTimezone","CompanyCategoryIDs","CompanyParentCompanyID","CompanyGoogleReviewScore","CompanyLeadScore","CompanyLeadQuality","CompanyGBPClaimed","CompanyLastEngagementDate","CompanyReviewGrade","CompanySocialGrade","CompanyWebsiteGrade","CompanyListingGrade","CompanySEOGrade","ContactPrimaryCompanyID","ContactPrimaryAddressLine1","ContactPrimaryAddressLine2","ContactPrimaryAddressCity","ContactPrimaryAddressState","ContactPrimaryAddressPostalCode","ContactPrimaryAddressCountry","CompanyPrimarySalespersonID","CompanySourceName","ContactPrimarySalespersonID","CompanyAdditionalSalespersonIDs","ContactAdditionalSalespersonIDs","CompanyAdditionalTeamMemberIDs","ContactAdditionalTeamMemberIDs","CompanyRecordSourceDrill1","CompanyOriginalSource","CompanyOriginalSourceDrill1","ContactLifecycleStage","ContactJobTitle","CompanyLinkedInURL","CompanyFacebookURL","CompanyPinterestURL","CompanyTikTokURL","CompanyXURL","CompanyInstagramURL","ContactLinkedInURL","ContactSourceName","RecordChangedByUserID","RecordChangeFieldIDsList","RecordChangeReferenceFieldID","CompanyNextTaskDueDate","ContactNextTaskDueDate","ContactRecordSourceDrill1","ContactOriginalSource","ContactOriginalSourceDrill1","ContactLastEngagementDate","ContactLeadScore","ContactLeadQuality","CompanyLastCampaignEmailOpenDate","CompanyLastCampaignEmailClickedDate","ContactLastCampaignEmailOpenDate","ContactLastCampaignEmailClickedDate","ContactMarketingEmailConsentStatus","ContactMarketingEmailConsentSource","ContactMarketingEmailConsentTimestamp","ContactSMSConsentStatus","ContactSMSConsentSource","ContactSMSConsentTimestamp","CustomObjectName","OpportunityName","OpportunityAmount","OpportunityCurrency","OpportunityExpectedCloseDate","OpportunityActualCloseDate","OpportunityTags","OpportunityPipelineID","OpportunityProbability","OpportunityStatus","OpportunityCalculatedStageID","OpportunitySourceName","AccountGroupID","LatestSnapshotID","UserID","GoogleBusinessProfileClaimed","constructor","environmentService","getFieldId","identifier","Object","values","includes","getEnvironment","Environment","DEMO","key","value","entries","Error","getEnvironmentString","PROD","getFieldValueFromCrmObject","crmObject","fields","fieldId","fieldValue","find","field","setFieldValueOnCrmObject","stringValue","push","getFieldIdFromFormField","getFieldMaskFromFormFields","forEach","id","getFieldMaskFromFormGroup","formGroup","dirtyFields","controls","get","dirty","shouldRenderReadonlyField","ɵɵinject","EnvironmentService","factory","ɵfac","providedIn","ContactService","init_contact_service","__esmMin","constructor","service","createCrmObject","request","createContact","deleteCrmObject","deleteContact","validateCrmObject","validateContact","updateCrmObject","updateContact","listObjects","listContacts","listObjectsFilters","listContactsFilters","getMultiObject","getMultiContact","listFieldOptions","listContactFieldOptions","ɵɵinject","CRMApiService","factory","ɵfac","providedIn","CompanyService","init_company_service","__esmMin","constructor","service","createCrmObject","request","createCompany","deleteCrmObject","deleteCompany","validateCrmObject","validateCompany","updateCrmObject","updateCompany","listObjects","listCompanies","listObjectsFilters","listCompaniesFilters","getMultiObject","getMultiCompany","listFieldOptions","listCompanyFieldOptions","startBulkCreate","startBulkCompanyCreate","ɵɵinject","CRMCompanyApiService","factory","ɵfac","providedIn","ActivityObjectService","init_activity_object_service","__esmMin","init_operators","constructor","activityApiService","createCrmObject","request","createActivity","deleteCrmObject","deleteActivity","getMultiObject","getMultiActivity","pipe","map","response","crmObjects","activities","listFieldOptions","listActivityFieldOptions","listObjects","listActivities","pagingMetadata","listObjectsFilters","listActivityFilters","updateCrmObject","updateActivity","namespace","activity","crmObject","fieldMask","validateCrmObject","validateActivity","ɵɵinject","CRMActivityApiService","factory","ɵfac","providedIn","CrmFieldOptionsService","init_crm_field_options_service","__esmMin","init_esm","init_operators","constructor","objectService","getFieldOptions","fieldId","search","objectType","objectSubtype$","of","pipe","switchMap","objectSubtype","listFieldOptions","pageSize","searchTerm","crmObjectSubtype","map","response","options","ɵɵinject","CrmObjectService","factory","ɵfac","TableCustomizationService","ActivityTableCustomizationService","init_abstract_table_customization_service","__esmMin","init_field_service","constructor","crmFieldService","addCustomCell","tableCustomCell","crmObject","columnData","cellValues","fieldIds","map","fieldId","getFieldValueFromCrmObject","namespaceValue","namespace","push","stringValue","columnDefinition","id","cellType","value","component","customCellComponent","addCustomCells","tableCustomCells","addCustomColumns","customColumns","columns","customColumn","__spreadProps","__spreadValues","hidden","filter","column","index","self","findIndex","c","overrideCustomFilters","filters","overrides","override","findFieldIDIndex","f","fieldName","title","ɵɵinject","CrmFieldService","factory","ɵfac","getRowFullName","name","getFieldId","StandardIds","ActivityName","fields","find","getAssociationInfo","__ngFactoryType__","LIST_OBJECTS_PAGE_SIZE_OPTIONS","ACTIVITIES_TIMELINE_PAGE_SIZE","VALID_RECORD_CHANGE_TYPES","AVATAR_WIDTH","RESERVED_TAGS","PRIMARY_TAG","DEFAULT_TAG_SEARCH_SIZE","PAGE_ROUTES","ASSOCIATION_MAP","init_constants","__esmMin","LIST_OBJECTS_DEFAULT_PAGE_SIZE","CONTACT","ROOT","SUBROUTES","LIST","BOARD","CREATE","EDIT","PROFILE","USER","COMPANY","REDIRECT","ACCOUNT","OPPORTUNITY","TASK","ACTIVITIES","FEED","PROSPECT","BUSINESSES","CUSTOM_FIELDS","PIPELINE_SETTINGS","CUSTOM_OBJECT","PERMISSION_REQUIRED","BULK_IMPORT","CALLS","MULTI_LOCATION","CONTACTS","Map","ActivityService","init_activity_service","__esmMin","init_operators","init_tokens_and_interfaces","constructor","config","activityService","listActivities","request","namespace$","pipe","switchMap","namespace","__spreadProps","__spreadValues","take","createActivity","activity","map","response","crmObjectId","getMultiActivities","crmObjectIds","getMultiActivity","activities","updateActivity","fieldMask","paths","length","Error","updateActivityMultilocation","ɵɵinject","CrmInjectionToken","CRMActivityApiService","factory","ɵfac","objectSpecificTranslationKeys","TranslateByObjectTypeService","init_translate_by_object_type_service","__esmMin","constructor","translateService","getTranslationKeyByObjectType","objectType","partialTranslationKey","formattedObjectType","toUpperCase","includes","console","warn","getTranslationByObjectType","interpolateParams","translationKey","translation","instant","getTranslatedObjectType","ɵɵinject","TranslateService","factory","ɵfac","compareStringList","currencyIsModified","isModifiedFieldValue","init_crm_form_utils","__esmMin","init_vendasta_crm","currentValue","modifiedValue","currentValues","stringValues","values","modifiedValues","sortedCurrentValues","sort","sortedModifiedValues","length","index","value","entries","current","modified","valueModified","currencyValue","codeModified","currencyCode","fieldType","FieldType","FIELD_TYPE_INTEGER","integerValue","FIELD_TYPE_FLOAT","floatValue","FIELD_TYPE_STRING","FIELD_TYPE_DROPDOWN","FIELD_TYPE_EMAIL","stringValue","FIELD_TYPE_PHONE","phoneFieldValues","FIELD_TYPE_BOOLEAN","booleanValue","FIELD_TYPE_TAG","FIELD_TYPE_STRING_LIST","FIELD_TYPE_DATETIME","FIELD_TYPE_DATE","dateValue","getTime","FIELD_TYPE_CURRENCY","MAX_SERVER_PAGE_SIZE","CrmFormService","init_crm_form_service","__esmMin","init_vendasta_crm","init_esm","init_tokens_and_interfaces","init_crm_form_utils","constructor","config","multiLocationConfig","crmObjectService","crmFieldSchemaApiService","crmMultiLocationFieldSchemaService","crmFieldLayoutApiService","crmMultiLocationFieldLayoutService","translationService","translateByObjectTypeService","handleValidationErrors","objectType","validationResponse","invalidSeverityErrors","errors","filter","e","severity","ErrorSeverity","VALIDATION_ERROR_SEVERITY_INVALID","length","firstError","fieldId","details","uniquenessCheck","firstErrorSchema","fieldSchemaMap","get","message","Error","getTranslationByObjectType","label","fieldName","toLowerCase","listAllObjectFields$","objectSubtype","of","fieldSchemas","pagingMetadata","nextCursor","hasMore","pipe","expand","resp","listObjectFieldsNextPage$","cursor","pageSize","EMPTY","reduce","acc","val","paging","multiLocationContext$","combineLatest","namespace$","take","switchMap","namespace","context","request","crmObjectType","pagingOptions","crmObjectSubtype","groupId","accountGroupsIds","listMultiLocationFieldSchema","__spreadValues","multiLocationPath","namespaces","listFieldSchema","listAllObjectFieldGroups$","listObjectFieldGroupsNextPage$","fieldGroups","listMultiLocationFieldGroups","listFieldGroups","crmFieldGroupToFormFieldGroup","crmFieldGroup","description","fieldIds","listAllObjectFormFieldGroups$","subtype","map","crmFieldGroups","crmFieldSchemasToFormFieldSchemas","crmFieldSchemas","crmFieldSchema","fieldType","FieldType","FIELD_TYPE_INVALID","fieldDescription","dropdownOptions","currencyCode","value","readOnly","readonly","listAllFormFields$","shareReplay","bufferSize","refCount","getCrmFieldValueToFormValue","crmFieldValue","FIELD_TYPE_INTEGER","integerValue","FIELD_TYPE_CURRENCY","currencyValue","FIELD_TYPE_STRING","FIELD_TYPE_DROPDOWN","FIELD_TYPE_EMAIL","stringValue","FIELD_TYPE_PHONE","phoneFieldValues","FIELD_TYPE_BOOLEAN","booleanValue","FIELD_TYPE_TAG","FIELD_TYPE_STRING_LIST","stringValues","values","FIELD_TYPE_DATETIME","FIELD_TYPE_DATE","dateValue","FIELD_TYPE_FLOAT","floatValue","isModifiedFieldValue","currentValue","modifiedValue","initializeFormFieldSchemaWithCrmObject","fieldSchema","crmObject","fields","crmObjectFieldValue","find","crmObjectField","listAllFormFieldsInitializedWithCrmObject$","crmObjectId","forkJoin","getMultiObject","filterType","fromFieldType","toFieldType","getMultiResponse","crmObjects","instant","forEach","field","validateCrmObject$","validationErrors$","validateCrmObject","response","fieldSchemaMap$","schemas","schemaMap","Map","schema","set","validationErrors","validateAndCreateCrmObject$","hasModification","fieldValue","fieldValues","validationResponse$","createCrmObject","validateAndUpdateCrmObject$","modifiedFieldValues","updateCrmObject","validateAndUpdateCrmObjectFields$","modifiedValues","getMultiFieldSchema","f","s","currentCrmObject$","values$","currentObject","currentObjectFields","fieldsToModify","currentValueIndex","findIndex","push","indexToModify","fieldToModify","combinedFieldForValidation","ɵɵinject","CrmInjectionToken","CrmMultilocationInjectionToken","CrmObjectService","CRMFieldSchemaApiService","CRMMultiLocationFieldSchemaApiService","CRMFieldLayoutApiService","CRMMultiLocationFieldLayoutApiService","TranslateService","TranslateByObjectTypeService","factory","ɵfac","init_abstract_service","__esmMin","OpportunityService","init_opportunity_service","__esmMin","constructor","service","createCrmObject","request","createOpportunity","deleteCrmObject","deleteOpportunity","validateCrmObject","validateOpportunity","updateCrmObject","updateOpportunity","listObjects","listOpportunities","listObjectsFilters","listOpportunitiesFilters","getMultiObject","getMultiOpportunity","listFieldOptions","listOpportunityFieldOptions","getValueSummary","getOpportunityValueSummary","ɵɵinject","CRMOpportunityApiService","factory","ɵfac","providedIn","CompanyContactCacheService","init_company_contact_cache_service","__esmMin","constructor","cache","Map","ttlCache","set","key","data","ttl","Date","now","get","clear","delete","factory","ɵfac","providedIn","getAssociationType","fromObject","toObject","ASSOCIATION_MAP","get","getAssociationDirection","objectType","associationType","objects","split","init_association_utils","__esmMin","init_constants","CrmAssociationService","init_crm_association_service","__esmMin","init_esm","init_operators","init_vendasta_crm","init_tokens_and_interfaces","init_association_utils","constructor","config","objectService","crmAssociationApiService","modal","companyContactCacheService","crmObjectIdToAssociate","copyCrmObjects","crmObjects","objects","setCopyCrmObjects","setCrmObjectIdToAssociate","getRemainingContactAssociationsForCompanies$","companyId","associations$","namespace$","pipe","switchMap","namespace","of","associations","pagingMetadata","hasMore","nextCursor","expand","resp","listAssociation","pagingOptions","pageSize","cursor","filtersV2","operator","FilterGroupOperator","FILTER_GROUP_OPERATOR_AND","filters","fieldId","FilterOperator","FILTER_OPERATOR_IS","values","string","EMPTY","take","reduce","acc","val","contacts$","response","length","contactIds","map","associationResponse","fromId","getMultiObject","combineLatest","contacts","association","contact","find","crmObjectId","tags","tag","tagValue","associationId","associationType","associatedObject","shareReplay","bufferSize","refCount","getChildCompanyAssociationsForCompany$","companyID","FILTER_OPERATOR_IS_ANY","companies$","getObjectsForAssociations$","joinAssociationsWithObjects$","getParentCompanyAssociationsForCompany$","objects$","direction","object","toId","getCachedContactAssociationsForCompany$","cachedContacts","get","associatedContacts","set","removeAssociation","id","deleteAssociation","createContactCompanyAssociation$","primarySelection","tagMap","primaryAssociation","Map","associationTagValues","savedData$","row","push","forEach","createAssociation","catchError","error","console","zip","data","errorOccurred","checkError","item","filteredData","filter","filteredCopy","_","index","respCount","createdCount","String","totalCount","copyCrmObjectsUpdated","obj","__spreadProps","__spreadValues","createAssociation$","fallbackToNoTags","associationTags","createObjectAssociation$","objectType","objectId","associatedId","objectSubtype","associationSubtype","getAssociationDirection","fromSubtype","toSubtype","requestTags","fromCrmObjectSubtype","toCrmObjectSubtype","listAssociationFieldOptions","searchTerm","options","updateAssociationTags","updateAssociation","t","getAssociation","getMultiAssociation","associationIds","getAssociationsForObject$","associatedType","withTags","getAssociationType","FILTER_OPERATOR_IS_ALL","getAssociationsWithAssociatedObjectForObject$","oppDirection","ids","getAssociationsFromAssociationIds$","ɵɵinject","CrmInjectionToken","CrmObjectService","CRMAssociationApiService","MatDialog","CompanyContactCacheService","factory","ɵfac","CrmTableStateService","init_crm_table_state_service","__esmMin","init_core","init_esm","init_operators","init_tokens_and_interfaces","constructor","config","breakpointObserver","MOBILE_BREAKPOINT","isMobile$","observe","pipe","map","result","matches","distinctUntilChanged","tableState","signal","localStorageKey","filterBarOpenStorageKey","initializeLocalStorageColumns","columns","of","isMobile","lcColumns","i","ls","localStorage","getItem","JSON","parse","forEach","column","localStorageColumnIndex","findIndex","c","id","push","localStorageColumn","__spreadProps","__spreadValues","_position","hidden","lcColumnsCleaned","filter","find","sortedColumns","sortColumns","setItem","stringify","topColumns","sortColumnsByPosition","pinned","stickyEnd","bottomColumns","nonPinnedColumns","updateColumnsPosition","index","sort","a","b","Number","MAX_SAFE_INTEGER","setLocalStorageColumns","take","subscribe","length","setLocalStorageKey","objectType","appName","appID","removeItem","set","ɵɵinject","CrmInjectionToken","BreakpointObserver","factory","ɵfac","compareByProbability","a","b","aProb","mutations","find","mutation","fieldId","StandardIds","OpportunityProbability","bProb","floatValue","CrmPipelineService","init_crm_pipeline_service","__esmMin","init_tokens_and_interfaces","init_vendasta_crm","init_operators","init_utils","init_field_service","constructor","pipelineService","injector","namespace$","get","CrmInjectionToken","listPipelines$","objectType","pipe","take","switchMap","namespace","listPipelines","listOptions","map","response","pipelines","convertPipelines","getPipeline$","pipelineId","getMultiPipeline$","pipelineIds","getMultiPipeline","shareReplay","updatePipeline$","pipeline","updatePipeline","id","name","stages","stage","stageId","filterGroup","convertGalaxyFilters","filters","fieldMask","buildFieldMask","deletePipeline$","deletePipeline","createPipeline$","createPipeline","filter","convertToGalaxyFilter","sort","paths","push","FieldMask","ɵɵinject","PipelinesApiService","Injector","factory","ɵfac","providedIn","init_crm_object_service","__esmMin","init_abstract_service","init_activity_object_service","init_company_service","init_contact_service","init_opportunity_service","init_crm_association_service","init_crm_table_state_service","init_crm_pipeline_service","init_crm_services","__esmMin","init_activity_service","init_crm_field_options_service","init_crm_filters_service","init_crm_form_service","init_field_service","init_crm_object_service","CompanyBatchGetterService","init_company_batch_getter_service","__esmMin","init_core","init_esm","init_rxjs_interop","constructor","destroyRef","crmObjectService","newCompanyId$$","BehaviorSubject","batchCompanyIds$$","lastBatch$","pipe","filter","batchCompanyIds","length","debounceTime","map","Set","switchMap","getMultiObject","response","crmObjects","tap","next","shareReplay","takeUntilDestroyed","subscribe","companyId","batchedCompanyIds","value","includes","push","getCompany","companies","find","company","crmObjectId","ɵɵinject","DestroyRef","CrmObjectService","factory","ɵfac","ɵɵelementStart","ɵɵelementContainer","ɵɵelementEnd","ɵɵproperty","link_r1","ɵɵadvance","displayNameTemplate_r3","ɵɵpureFunction1","_c0","data_r2","displayValue","ɵɵelement","ɵɵelementContainerStart","ɵɵtemplate","ParentCompanyNameComponent_ng_container_0_a_1_Template","ParentCompanyNameComponent_ng_container_0_ng_template_2_Template","ɵɵtemplateRefExtractor","link","div_r4","ɵɵtext","ɵɵtextInterpolate","displayName_r5","ParentCompanyNameComponent_ng_template_4_ng_container_0_Template","ctx_r5","NO_VALUE_FOR_COMPANY_NAME","blank_r7","ParentCompanyNameComponent","init_parent_company_name_component","__esmMin","init_router","init_common","init_table","init_esm","init_operators","init_shared_services","init_tokens_and_interfaces","init_constants","CustomCellComponent","value","newValue","companyId$$","next","constructor","config","crmFieldService","companyBatchGetterService","BehaviorSubject","displayValue$","pipe","switchMap","parentCompanyID","getCompany","of","map","parentCompany","getFieldValueFromCrmObject","StandardIds","CompanyName","companyNameFieldValue","stringValue","link$","viewProfileFlag$","take","featureFlag","routePrefix$","routePrefix","getValue","parentCompanyProfileViewRoute","PAGE_ROUTES","COMPANY","ROOT","SUBROUTES","PROFILE","replace","componentData$","combineLatest","ɵɵdirectiveInject","CrmInjectionToken","CrmFieldService","CompanyBatchGetterService","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ParentCompanyNameComponent_ng_container_0_Template","ParentCompanyNameComponent_ng_template_2_Template","ParentCompanyNameComponent_ng_template_4_Template","ParentCompanyNameComponent_ng_template_6_Template","ɵɵpipeBind1","loading_r8","RouterLink","CommonModule","NgIf","NgTemplateOutlet","AsyncPipe","BlankValueComponent","styles","PartnerCenterClientAppID","ShellClientAppID","AppsRestrictedByMarkets","RestrictedGroupService","init_restricted_group_service","__esmMin","init_core","init_vendasta_platform_users","init_tokens_and_interfaces","init_esm","init_vendasta_partner","init_vendasta_iamv2","init_operators","constructor","config","inject","CrmInjectionToken","permissionsApiService","PermissionsApiService","featureFlagService","FeatureFlagsApiService","iamService","IAMService","featureEnabled$","namespace$","pipe","switchMap","namespace","includes","appID","batchGetStatus","featureIds","partnerId","of","hasAccess","map","response","length","currentUser$","currentUserId$","userId","uniqueUserIdentifiers","UserIdentifier","getMultiUsers","catchError","currentGroupId$","combineLatest","user","featureEnabled","roles","hasDeveloperRole","isSuperAdmin","attributes","boolAttribute","isNotSupported","getPermissions","permissions","restrictedToMarketId","shareReplay","getCurrentGroupId","factory","ɵfac","CrmObjectDisplayService","init_crm_object_display_service","__esmMin","init_shared_services","init_libphonenumber_js","init_esm","init_operators","constructor","crmFieldService","customObjectTypeService","getObjectDisplayName","objectType","crmObject","contactDisplayName","companyDisplayName","opportunityDisplayName","customObjectDisplayName","crmObjectId","getObjectNames","namespace$","subtype","pipe","switchMap","namespace","getMultiCustomObjectType","customObjectTypeIds","map","resp","customObjectType","customObjectTypes","singularObjectName","pluralObjectName","console","error","of","getAssociationInfo","contactAssociationInfo","email","getFieldId","StandardExternalIds","Email","fields","find","f","fieldId","stringValue","name","StandardIds","CompanyName","nameField","OpportunityName","firstName","FirstName","lastName","LastName","phone","PhoneNumber","firstNameData","lastNameData","emailData","phoneData","trim","phoneFieldValues","formatPhoneNumberFields","formatPhoneNumber","CustomObjectName","phoneNumber","parsedNumber","parseNumber","defaultCountry","Object","keys","length","format","nationalNumber","parsed","country","isoCountryCode","ext","extension","ɵɵinject","CrmFieldService","CRMCustomObjectTypeApiService","factory","ɵfac","providedIn","CompanyTableCustomizationService","init_company_table_customization_service","__esmMin","init_abstract_table_customization_service","init_esm","init_field_service","init_tokens_and_interfaces","init_operators","init_constants","init_chips","init_parent_company_name_component","TableCustomizationService","getRowFullAddress","crmObject","crmFieldService","addressLineOne","getFieldId","StandardIds","CompanyPrimaryAddressLine1","addressLineTwo","CompanyPrimaryAddressLine2","city","CompanyPrimaryAddressCity","state","CompanyPrimaryAddressState","postalCode","CompanyPrimaryAddressPostalCode","country","CompanyPrimaryAddressCountry","addressLineOneData","fields","find","f","fieldId","addressLineTwoData","cityData","stateData","postalCodeData","countryData","stringValue","filter","value","undefined","join","constructor","translate","config","restrictedGroupService","objectDisplayService","profileLink$","routePrefix$","pipe","map","prefix","viewRoute","PAGE_ROUTES","COMPANY","ROOT","SUBROUTES","PROFILE","hideIDColumns","columns","columnIdentifiersToHide","SystemFieldIds","CompanyExternalID","CompanyID","CompanyParentCompanyID","CompanyWebsite","identifier","index","findIndex","c","id","hidden","nameCol","CompanyName","sticky","customizeColumnsMobile","columnIdentifiersToShow","Map","forEach","column","get","addCompanyProfileLink","columnData","companyNameField","take","subscribe","profileLink","replace","crmObjectId","cellType","getRowFullName","link","customizeRowData","schemaMap","customizeNextTaskDueDateCellData","addPrimaryCompanyNameRowData","addFullAddressColumnData","addCustomCells","company","tableCustomCells","cell","CompanyNextTaskDueDate","CompanyCustomColumns","FullAddress","customizeColumns","isMobile","customizedColumns","addFullAddressColumn","addParentCompanyNameColumn","customCells","addCustomColumns","columnDefinition","getObjectDisplayName","getAssociationInfo","title","instant","sortable","ParentCompanyName","__async","parentCompanyID","parentCompanyIDFieldValue","getFieldValueFromCrmObject","component","ParentCompanyNameComponent","makeGroupFilterRestricted","restrictedToGroupId","filters","groupIDIndex","CompanyGroupID","preset","lockedValue","customizeFilters","appliedOverrides$","filterInputOverrides$","of","overrides","overrideCustomFilters","combineLatest","getCurrentGroupId","restrictedMarketId","buildInitialFilter","filterDefinitions","filterId","defn","operator","GalaxyFilterOperator","FILTER_OPERATOR_IS","values","definition","getInitialFilters","filterDefinitions$","firstValueFrom","initialFilters$","then","selectedGroupId","initialFilters","groupIdDefn","push","string","ɵɵinject","CrmFieldService","TranslateService","CrmInjectionToken","RestrictedGroupService","CrmObjectDisplayService","factory","ɵfac","ActivityCustomizationService","init_activity_customization_service","__esmMin","init_chips","init_core","init_esm","init_crm_services","init_tokens_and_interfaces","constructor","config","inject","CrmInjectionToken","crmFieldService","CrmFieldService","buildInitialFilter","filterDefinitions","identifier","filterId","fieldId","getFieldId","defn","find","f","preset","operator","GalaxyFilterOperator","FILTER_OPERATOR_IS","values","definition","getInitialFilters","filterDefinitions$","firstValueFrom","combineLatest","activity","initialFilters$","of","then","initialFilters","map","filter","factory","ɵfac","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ctx","ɵɵadvance","ɵɵtextInterpolate1","displayName_r1","ɵɵtextInterpolate","ɵɵtemplate","PrimaryAssociationCellComponent_Conditional_0_Conditional_0_Template","PrimaryAssociationCellComponent_Conditional_0_Conditional_2_Template","ɵɵconditional","tmp_2_0","ɵɵpipeBind1","ctx_r1","redirectUrl$","PrimaryAssociationCellComponent","init_primary_association_cell_component","__esmMin","init_common","init_router","init_table","init_tokens_and_interfaces","init_esm","init_operators","init_src","init_constants","CustomCellComponent","value","cellData","objectType$$","next","objectType","objectId$$","objectId","showUrl$$","showUrl","constructor","crmAssociationService","objectDisplayService","config","ReplaySubject","BehaviorSubject","primaryAssociation$","combineLatest","pipe","switchMap","getPrimaryAssociation","displayName$","map","primaryAssociation","crmObject","getObjectDisplayName","routePrefix$","pathRoot","pathTemplate","PAGE_ROUTES","COMPANY","ROOT","SUBROUTES","PROFILE","CONTACT","crmObjectId","replace","of","undefined","contact$","getAssociationsWithAssociatedObjectForObject$","result","find","r","Boolean","associatedObject","company$","switchWhen","ɵɵdirectiveInject","CrmAssociationService","CrmObjectDisplayService","CrmInjectionToken","selectors","inputs","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","PrimaryAssociationCellComponent_Conditional_0_Template","tmp_0_0","RouterLink","CommonModule","AsyncPipe","styles","OpportunityTableCustomizationService","init_opportunity_table_customization_service","__esmMin","init_abstract_table_customization_service","init_esm","init_crm_services","init_tokens_and_interfaces","init_operators","init_constants","init_chips","init_primary_association_cell_component","TableCustomizationService","constructor","crmFieldService","config","objectDisplayService","translate","profileLink$","routePrefix$","pipe","map","prefix","viewRoute","PAGE_ROUTES","OPPORTUNITY","ROOT","SUBROUTES","PROFILE","hideIDColumns","columns","columnIdentifiersToHide","SystemFieldIds","OpportunityID","OpportunityExternalID","identifier","index","findIndex","c","id","hidden","nameCol","filter","StandardIds","OpportunityName","sticky","customizeColumnsMobile","columnIdentifiersToShow","Map","forEach","column","get","addProfileLink","crmObject","columnData","nameField","take","subscribe","profileLink","replace","crmObjectId","cellType","value","getRowFullName","link","customizeRowData","schemaMap","addPrimaryAssociationCustomCell","addCustomCells","opportunity","tableCustomCells","customizeColumns","isMobile","customizedColumns","addPrimaryAssociationColumn","customCells","addCustomColumns","columnDefinition","OpportunityCustomColumns","PrimaryAssociation","title","instant","objectId","objectType","showUrl","component","PrimaryAssociationCellComponent","getObjectDisplayName","getAssociationInfo","customizeFilters","filters","filterInputOverrides$","of","overrides","overrideCustomFilters","buildInitialFilter","filterDefinitions","filterId","fieldId","getFieldId","defn","find","f","preset","operator","GalaxyFilterOperator","FILTER_OPERATOR_IS","values","definition","getInitialFilters","filterDefinitions$","__async","firstValueFrom","combineLatest","initialFilters$","then","initialFilters","ɵɵinject","CrmFieldService","CrmInjectionToken","CrmObjectDisplayService","TranslateService","factory","ɵfac","CustomObjectTableCustomizationService","init_custom_object_table_customization_service","__esmMin","init_field_service","init_abstract_table_customization_service","init_esm","init_operators","init_constants","init_tokens_and_interfaces","TableCustomizationService","constructor","config","crmFieldService","objectDisplayService","profileLink$","routePrefix$","pipe","map","prefix","viewRoute","PAGE_ROUTES","CUSTOM_OBJECT","ROOT","SUBROUTES","PROFILE","getRowFullName","crmObject","customObjectDisplayName","getAssociationInfo","customizeRowData","schemaMap","columnData","addCustomObjectProfileLink","customObjectNameField","getFieldId","StandardIds","CustomObjectName","take","subscribe","profileLink","replace","crmObjectSubtype","crmObjectId","cellType","value","link","customizeColumns","columns","_isMobile","hideIDColumns","columnIdentifiersToHide","SystemFieldIds","CustomObjectID","CustomObjectExternalID","CustomObjectTypeID","CustomObjectOwnerID","identifier","index","findIndex","c","id","hidden","nameCol","filter","sticky","customizeFilters","filters","of","getInitialFilters","_filterDefinitions$","Promise","resolve","ɵɵinject","CrmInjectionToken","CrmFieldService","CrmObjectDisplayService","factory","ɵfac","providedIn","init_table_customization","__esmMin","init_abstract_table_customization_service","init_company_table_customization_service","init_contact_table_customization_service","init_activity_customization_service","init_opportunity_table_customization_service","init_custom_object_table_customization_service","enumStringToValue$7","enumRef","value","enumStringToValue$3","DateDefault","FilterGroupOperator","FilterOperator","AddContactAsIamUserForCompanyStatus","CreateAccountGroupForCompanyStatus","Filter","FilterGroup","Phone","FilterValue","AddContactAsIamUserForCompanyRequest","AddContactAsIamUserForCompanyStatusResponse","CreateAccountGroupForCompanyRequest","GetAccountGroupForCompanyRequest","GetAccountGroupForCompanyResponse","GetCreateAccountGroupForCompanyStatusRequest","GetCreateAccountGroupForCompanyStatusResponse","GetWebsiteActivityForVisitorRequest","GetWebsiteActivityForVisitorResponse","InferCompanyCategoriesRequest","IsContactIamUserForCompanyRequest","IsContactIamUserForCompanyResponse","PageView","RemoveContactAsIamUserForCompanyRequest","UTMAttributes","GetAISummaryForCRMObjectRequest","GetAISummaryForCRMObjectResponse","StartManualAutomationsRequestStartAutomationCriteria","StartManualAutomationsRequestStartAutomationPayload","StartManualAutomationsRequest","environment","hostMap","HostService","CrmAIApiService","CrmAutomationApiService","PlatformApiService","init_vendasta_crm_integrations","__esmMin","init_core","init_http","init_operators","_Filter","proto","m","kwargs","toReturn","_FilterGroup","_Phone","_FilterValue","_AddContactAsIamUserForCompanyRequest","_AddContactAsIamUserForCompanyStatusResponse","_CreateAccountGroupForCompanyRequest","_GetAccountGroupForCompanyRequest","_GetAccountGroupForCompanyResponse","_GetCreateAccountGroupForCompanyStatusRequest","_GetCreateAccountGroupForCompanyStatusResponse","_GetWebsiteActivityForVisitorRequest","_GetWebsiteActivityForVisitorResponse","_InferCompanyCategoriesRequest","_IsContactIamUserForCompanyRequest","_IsContactIamUserForCompanyResponse","_PageView","_RemoveContactAsIamUserForCompanyRequest","_UTMAttributes","_GetAISummaryForCRMObjectRequest","_GetAISummaryForCRMObjectResponse","_StartManualAutomationsRequestStartAutomationCriteria","_StartManualAutomationsRequestStartAutomationPayload","_StartManualAutomationsRequest","__ngFactoryType__","ɵɵdefineInjectable","inject","HttpClient","HttpHeaders","r","request","map","resp","__spreadProps","__spreadValues","CrmPlatformApiService","init_platform_api_service","__esmMin","init_vendasta_crm_integrations","init_tokens_and_interfaces","init_esm","init_operators","constructor","config","platformAPIService","createAccountGroupForCompany","companyId","namespace$","pipe","switchMap","namespace","request","map","response","ok","take","getCreateAccountGroupForCompanyStatus","status","accountGroupId","getAccountGroupForCompany","addContactAsIamUserForCompany","contactId","sendWelcomeEmail","catchError","of","AddContactAsIamUserForCompanyStatus","ADD_CONTACT_AS_IAM_USER_FOR_COMPANY_STATUS_FAILED","removeContactAsIamUserForCompany","isContactIamUserForCompany","isIamUser","ɵɵinject","CrmInjectionToken","PlatformApiService","factory","ɵfac","CompanyProfileCardsPanelService","init_company_profile_cards_panel_service","__esmMin","init_core","init_esm","init_tokens_and_interfaces","init_operators","init_vendasta_crm_integrations","constructor","config","platformAPIService","snackbarService","loadingAccountGroup","signal","companyProfileCards$","company","profileCards$","EMPTY","justInTimeAccountGroupCreation","companyId","afterCreatedCallback","set","createAccountGroupForCompany","pipe","take","subscribe","next","accountGroupId","length","error","openErrorSnack","duration","SNACKBAR_DURATION","switchMap","waitForAccountGroupUpdate","map","accountStatus","status","CreateAccountGroupForCompanyStatus","CREATE_ACCOUNT_GROUP_FOR_COMPANY_STATUS_SUCCEEDED","Error","getCreateAccountGroupForCompanyStatus","CREATE_ACCOUNT_GROUP_FOR_COMPANY_STATUS_FAILED","retry","delay","ɵɵinject","CrmInjectionToken","CrmPlatformApiService","SnackbarService","factory","ɵfac","EditAssociationTagsComponent","init_edit_association_tags_component","__esmMin","init_core","init_common","init_ngx_translate_core","init_dialog","init_button","init_forms","init_tags","init_esm","init_rxjs_interop","init_form_field","init_constants","tags","tagsControl","setValue","constructor","destroyRef","crmAssociationService","tagsChanged","EventEmitter","FormControl","searchTextChanged","signal","filteredTags$","toObservable","pipe","takeUntilDestroyed","debounceTime","SEARCH_DEBOUNCE_MS","switchMap","searchText","listTags","catchError","of","map","filter","tag","RESERVED_TAGS","includes","toLowerCase","valueChanges","tap","emit","subscribe","value","listAssociationFieldOptions","associationType","DEFAULT_TAG_SEARCH_SIZE","ɵɵdirectiveInject","DestroyRef","CrmAssociationService","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","$event","set","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵproperty","tmp_2_0","undefined","ɵɵpureFunction0","_c0","CommonModule","AsyncPipe","TranslateModule","TranslatePipe","MatDialogModule","MatButtonModule","GalaxyTagsModule","TagsComponent","ReactiveFormsModule","NgControlStatus","FormControlDirective","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","ExtendedDirective","encapsulation","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","tagsChanged","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","initialTags$","associationType_r3","EditAssociationDialogComponent","init_edit_association_dialog_component","__esmMin","init_common","init_dialog","init_button","init_ngx_translate_core","init_edit_association_tags_component","init_esm","init_constants","constructor","dialogRef","data","crmAssociationService","snackService","initialAssociation$","getAssociation","associationId","isPrimary$","pipe","map","association","tags","tag","tagValue","filter","includes","PRIMARY_TAG","t","RESERVED_TAGS","toLowerCase","associationType$","associationType","tagsToSave","save","switchMap","isPrimary","updateAssociationTags","subscribe","next","openSuccessSnack","duration","SNACKBAR_DURATION","close","error","openErrorSnack","cancel","slice","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","CrmAssociationService","SnackbarService","selectors","decls","vars","consts","template","rf","ctx","ɵɵtext","ɵɵtemplate","EditAssociationDialogComponent_ng_container_6_Template","ɵɵtextInterpolate1","ɵɵtextInterpolate","associationName","CommonModule","NgIf","AsyncPipe","TranslateModule","TranslatePipe","MatDialogModule","MatDialogTitle","MatDialogActions","MatDialogContent","MatButtonModule","MatButton","EditAssociationTagsComponent","styles","combineAssociationsWithChanges","associations","changes","combinedData","updatedAssociation","updatedAssociationIndex","findIndex","a","associationId","DefaultAssociationActionsService","init_default_association_actions_service","__esmMin","init_edit_association_dialog_component","init_esm","constructor","dialog","associationService","objectService","reloadAssociations","cardData","association$","getAssociation","pipe","shareReplay","crmObject$","switchMap","association","type","getMultiObject","toId","fromId","of","crmObjects","map","response","length","combineLatest","crmObject","associationType","tags","tag","tagValue","associatedObject","editTagsAction","associationName","businessName","userName","open","EditAssociationDialogComponent","data","width","afterClosed","success","ɵɵinject","MatDialog","CrmAssociationService","CrmObjectService","factory","ɵfac","CRMTrackingService","init_page_analytics_service","__esmMin","init_chips","constructor","trackingService","eventName","trackEvent","objectType","action","properties","toLowerCase","trackFilterUsage","filters","filter","values","length","GalaxyFilterOperator","FILTER_OPERATOR_IS_EMPTY","FILTER_OPERATOR_IS_NOT_EMPTY","includes","operator","fieldId","filterType","definition","type","GalaxyFilterType","filterOperator","FILTER_OPERATOR_INVALID","filterId","isPreset","preset","fieldName","ɵɵinject","ProductAnalyticsService","factory","ɵfac","SidePanelContentService","init_side_panel_content_service","__esmMin","init_esm","constructor","activePortal$$","ReplaySubject","setContent","content","next","getContent","asObservable","clearContent","factory","ɵfac","providedIn","CompanyFiltersService","init_company_filters_service","__esmMin","init_esm","init_operators","init_tokens_and_interfaces","init_field_service","constructor","crmObjectService","crmFieldService","crmConfig","searchTerm$$","BehaviorSubject","getReadableParentCompanies","parentCompanies","map","company","__spreadProps","__spreadValues","displayName","getFieldValueFromCrmObject","StandardIds","CompanyName","stringValue","listObjects","namespace","cursor","pageSize","search","request","pagingOptions","searchTerm","listReadableCompanies","namespace$","pipe","switchMap","response","crmObjects","catchError","error","console","of","getMultiCompany","companyIds","getMultiObject","length","crmObjectId","crmObj","crmObject","ɵɵinject","CrmObjectService","CrmFieldService","CrmInjectionToken","factory","ɵfac","providedIn","ActivityAssigneeService","init_activity_assignee_service","__esmMin","init_vendasta_iamv2","init_esm","init_tokens_and_interfaces","init_utils","init_operators","init_rxjs_interop","constructor","config","iamService","allUsers$$","ReplaySubject","searchTerm$$","searchTerm$","asObservable","allUsers$","pipe","startWith","takeUntilDestroyed","debounceTime","distinctUntilChanged","switchMap","searchTerm","services","userService","searchUsers","of","map","users","convertToReadableUsers","catchError","error","console","subscribe","next","getMultiUsers","userIds","cachedUser$","userHashMap","Map","forEach","userId","set","find","u","shareReplay","fetchedMissingUsers$","cachedUsers","filter","get","undefined","idsToGet","length","combineLatest","fetchedUsers","user","values","Boolean","ɵɵinject","CrmInjectionToken","IAMService","factory","ɵfac","ScoreService","init_score_service","__esmMin","init_tokens_and_interfaces","init_esm","init_operators","constructor","config","scoringApiService","crmObjectId","setObjectId","objectId","getScoreForProfile$","fieldId","getScore$","getScoreForTableRow$","companyId","namespace$","pipe","switchMap","namespace","getScore","scoringIdentifier","crmObjectType","label","map","response","score","shareReplay","ɵɵinject","CrmInjectionToken","ScoringApiService","factory","ɵfac","CrmObjectManagementTableChangesService","init_crm_object_management_table_changes_service","__esmMin","init_core","init_crm_services","constructor","createdCrmObjects","signal","Map","updatedCrmObjects","deletedCrmObjectIds","changedCrmObjects","computed","created","updated","deleted","getCrmObjectChanges","clearAllChanges","objectType","objectSubtype","type","clearCreatedCrmObjects","clearUpdatedCrmObjects","clearDeletedCrmObjectIds","addCreatedCrmObject","crmObject","createDatesForPreview","update","createdCrmObjectsMap","get","push","set","delete","addUpdatedCrmObject","changedCrmObjectsMap","existingIndex","findIndex","obj","crmObjectId","updatedCrmObjectsMap","addDeletedCrmObjectId","deletedCrmObjectIdsMap","includes","objectCreatedFieldId","objectUpdatedFieldId","SystemFieldIds","ContactCreated","ContactUpdated","CompanyCreated","CompanyUpdated","ActivityCreated","ActivityUpdated","OpportunityCreated","OpportunityUpdated","CustomObjectCreated","CustomObjectUpdated","changeTimestamp","Date","createdDateIndex","fields","f","fieldId","updatedDateIndex","dateValue","externalId","factory","ɵfac","providedIn","init_shared_services","__esmMin","init_crm_services","init_table_customization","init_company_profile_cards_panel_service","init_default_association_actions_service","init_platform_api_service","init_page_analytics_service","init_side_panel_content_service","init_company_filters_service","init_activity_assignee_service","init_score_service","init_restricted_group_service","init_association_utils","init_crm_object_display_service","init_crm_object_management_table_changes_service","ɵɵelementStart","ɵɵelementContainer","ɵɵelementEnd","ɵɵproperty","link_r1","ɵɵadvance","displayNameTemplate_r3","ɵɵpureFunction1","_c0","data_r2","displayValue","ɵɵelement","ɵɵelementContainerStart","ɵɵtemplate","PrimaryCompanyNameComponent_ng_container_0_a_1_Template","PrimaryCompanyNameComponent_ng_container_0_ng_template_2_Template","ɵɵtemplateRefExtractor","link","div_r4","ɵɵtext","ɵɵtextInterpolate","displayName_r5","PrimaryCompanyNameComponent_ng_template_4_ng_container_0_Template","ctx_r5","NO_VALUE_FOR_COMPANY_NAME","blank_r7","PrimaryCompanyNameComponent","init_primary_company_name_component","__esmMin","init_common","init_table","init_esm","init_operators","init_shared_services","init_constants","init_tokens_and_interfaces","init_router","CustomCellComponent","value","cellData","namespace$$","next","namespace","companyId$$","objectId","constructor","config","multiLocationConfig","crmFieldService","crmObjectService","BehaviorSubject","displayValue$","combineLatest","pipe","switchMap","contactPrimaryCompanyID","contactNamespace","of","getMultiObject","map","response","crmObjects","companies","length","getFieldValueFromCrmObject","StandardIds","CompanyName","companyNameFieldValue","stringValue","isMultiLocation$","link$","viewProfileFlag$","take","featureFlag","isMultiLocation","routePrefix$","routePrefix","getValue","primaryCompanyProfileViewRoute","PAGE_ROUTES","COMPANY","ROOT","SUBROUTES","PROFILE","replace","componentData$","ɵɵdirectiveInject","CrmInjectionToken","CrmMultilocationInjectionToken","CrmFieldService","CrmObjectService","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","PrimaryCompanyNameComponent_ng_container_0_Template","PrimaryCompanyNameComponent_ng_template_2_Template","PrimaryCompanyNameComponent_ng_template_4_Template","PrimaryCompanyNameComponent_ng_template_6_Template","ɵɵpipeBind1","loading_r8","CommonModule","NgIf","NgTemplateOutlet","AsyncPipe","BlankValueComponent","RouterLink","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ctx_r0","accountGroupInfo","napData","companyName","address","ɵɵelement","LocationCellComponent","init_location_component","__esmMin","init_common","init_table","init_pipes","init_ngx_translate_core","init_icon","init_button","init_tokens_and_interfaces","init_operators","init_src","CustomCellComponent","constructor","multiLocationConfig","accountGroupService","isMultiLocation","namespace","value","cellData","loadAccountGroupInfo","ngOnInit","multiLocationContext$","pipe","take","subscribe","context","groupId","get","ProjectionFilter","accountGroupExternalIdentifiers","associations","accountGroup","accountGroupId","ɵɵdirectiveInject","CrmMultilocationInjectionToken","AccountGroupService","selectors","inputs","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","LocationCellComponent_Conditional_0_Template","LocationCellComponent_Conditional_1_Template","ɵɵconditional","CommonModule","BlankValueComponent","GalaxyPipesModule","TranslateModule","MatIconModule","MatButtonModule","GalaxyInputModule","GalaxyCheckboxModule","MatMenuModule","FormsModule","ReactiveFormsModule","GalaxyPopoverModule","DragDropModule","MatCheckboxModule","MatPaginatorModule","MatTableModule","RouterModule","GalaxyTooltipModule","GalaxyFormFieldModule","GalaxyLoadingSpinnerModule","MatSortModule","MatTabsModule","styles","ContactTableCustomizationService","init_contact_table_customization_service","__esmMin","init_core","init_abstract_table_customization_service","init_esm","init_tokens_and_interfaces","init_field_service","init_operators","init_constants","init_primary_company_name_component","init_libphonenumber_js","init_chips","init_location_component","TableCustomizationService","constructor","config","multiLocationConfig","crmFieldService","translate","restrictedGroupService","objectDisplayService","destroy$","Subject","contactLinkBuild$$","BehaviorSubject","shouldShowLocationColumn$$","isMultiLocation","signal","isMultiLocation$","of","combineLatest","viewProfileFlag$","pipe","take","tap","_","next","set","mergeMap","featureFlag","routePrefix$","subscribe","routePrefix","contactProfileViewRoute","PAGE_ROUTES","MULTI_LOCATION","CONTACTS","ROOT","SUBROUTES","PROFILE","CONTACT","ngOnDestroy","complete","hideIDColumns","columns","columnIdentifiersToHide","getFieldId","StandardExternalIds","FirstName","LastName","SystemFieldIds","ContactExternalID","ContactID","StandardIds","ContactPrimaryCompanyID","ContactCustomColumns","FullAddress","ContactGroupID","ContactOwnerID","ContactAdditionalTeamMemberIDs","identifier","index","findIndex","c","id","hidden","addPrimaryCompanyNameColumn","PrimaryCompanyName","title","instant","addPrimaryCompanyNameRowData","crmObject","schemaMap","columnData","__async","contactPrimaryCompanyID","contactPrimaryCompanyIDFieldValue","getFieldValueFromCrmObject","stringValue","cellType","value","namespace","objectId","component","PrimaryCompanyNameComponent","addFullNameColumn","FullName","sticky","sortable","formatPhoneNumber","phoneNumber","parsedNumber","parseNumber","defaultCountry","Object","keys","length","format","formatPhoneNumberFields","nationalNumber","parsed","country","isoCountryCode","phone","ext","extension","addFullNameRowData","crmObjectId","link","replace","getRowFullName","getObjectDisplayName","getAssociationInfo","addFullAddressColumnData","getRowFullAddress","customizeRowData","customizeNextTaskDueDateCellData","getValue","addLocationCustomCell","addCustomCells","contact","tableCustomCells","cell","ContactNextTaskDueDate","customizeColumns","isMobile","customizedColumns","addFullAddressColumn","addLocationColumn","customCells","addCustomColumns","map","columnDefinition","customizeColumnsMobile","columnIdentifiersToShow","Map","Email","forEach","column","get","addressLineOne","ContactPrimaryAddressLine1","addressLineTwo","ContactPrimaryAddressLine2","city","ContactPrimaryAddressCity","state","ContactPrimaryAddressState","postalCode","ContactPrimaryAddressPostalCode","ContactPrimaryAddressCountry","addressLineOneData","fields","find","f","fieldId","addressLineTwoData","cityData","stateData","postalCodeData","countryData","filter","undefined","join","Location","objectType","LocationCellComponent","makeGroupFilterRestricted","restrictedToGroupId","filters","groupIDIndex","preset","lockedValue","customizeFilters","appliedOverrides$","filterInputOverrides$","overrides","overrideCustomFilters","getCurrentGroupId","restrictedMarketId","buildInitialFilter","filterDefinitions","filterId","defn","operator","GalaxyFilterOperator","FILTER_OPERATOR_IS","values","definition","getInitialFilters","filterDefinitions$","firstValueFrom","initialFilters$","then","selectedGroupId","initialFilters","groupIdDefn","push","string","ɵɵinject","CrmInjectionToken","CrmMultilocationInjectionToken","CrmFieldService","TranslateService","RestrictedGroupService","CrmObjectDisplayService","factory","ɵfac","FILTER_PAGE_SIZE","CrmFiltersService","init_crm_filters_service","__esmMin","init_esm","init_operators","init_tokens_and_interfaces","init_vendasta_crm","init_utils","constructor","config","crmObjectService","contactTableCustomization","companyTableCustomization","activityCustomizationService","opportunityTableCustomization","taskTableCustomization","initialFilters$$","BehaviorSubject","initialFilters$","asObservable","customizeFilters","filters","objectType","activityType","of","listObjectFilters$","searchTerm","objectSubtype$","withNamespace","combineLatest","namespace$","pipe","switchMap","namespace","objectSubtype","listObjectsFilters","paging","pageSize","crmObjectSubtype","map","resp","filterDef","fieldId","type","convertToGalaxyFilterType","typeV2","FilterType","FILTER_TYPE_INVALID","hasFilterOptions","supportedOperators","convertToGalaxyFilterOperators","supportedOperatorsV2","fieldName","getInitialAppliedFilters$","crmObjectDependencies","useUrlFilters","__async","firstValueFrom","then","length","getInitialFilters","console","error","urlFilters","initialObjectFilters","services","tableCustomizationService","undefined","joinedFilters","filter","index","findIndex","f","filterId","initialActivityFilters","initialContactFilters","initialCompanyFilters","initialOpportunityFilters","setInitialFilters","next","ɵɵinject","CrmInjectionToken","CrmObjectService","ContactTableCustomizationService","CompanyTableCustomizationService","ActivityCustomizationService","OpportunityTableCustomizationService","TaskTableCustomizationServiceToken","factory","ɵfac","crmObjectDependenciesTokenGenerator","crm","objectTableCustomizationService","route","objectUrlRoot","crmObjectDependencies","crmObjectDisplayService","inject","CrmObjectDisplayService","childRoute","firstChild","objectSubtype$","params","pipe","map","shareReplay","names$","switchMap","objectSubtype","getObjectNames","namespace$","singularObjectName$","names","singularObjectName","pluralObjectName$","pluralObjectName","defaultPageUrl$","combineLatest","routePrefix$","routePrefix","services","tableCustomizationService","tableFiltersInjectionTokenGenerator","objectType","activityType","crmFieldOptionsService","CrmFieldOptionsService","crmFiltersService","CrmFiltersService","crmConfigDependencies","CrmInjectionToken","CrmObjectInjectionToken","optional","listObjectFilters","searchTerm","listObjectFilters$","getFieldOptions","fieldId","search","getFilterInputOverrides","filterInputOverrides$","of","contact","company","task","activity","opportunity","getInitialAppliedFilters","getInitialAppliedFilters$","undefined","setInitialAppliedFilters","filters","setInitialFilters","console","error","pageAnalyticsInjectionTokenGenerator","crmTrackingService","CRMTrackingService","trackEvent","action","properties","modelDrivenFormFieldOptionsInjectionTokenGenerator","ObjectTypes","FormInputComponent","CRM_ACCESS_SERVICE_TOKEN","CrmMultilocationInjectionToken","COMPANY_PROFILE_CARD_DATA_TOKEN","PageAnalyticsInjectionToken","ActivityTaskStatus","FieldOptionsInjectionToken","LoadingStatus","SavingStatus","PROFILE_PAGE_DATA_TOKEN","PrimaryAccountGroupIDForCrmObject","TaskTableCustomizationServiceToken","init_tokens_and_interfaces","__esmMin","init_esm","init_core","init_crm_field_options_service","init_crm_filters_service","init_page_analytics_service","init_shared_services","init_operators","init_vendasta_crm","constructor","readOnly","inlineEdit$","isEditing","objectId","input","inputs","InjectionToken","Open","Completed","MultiLocationActivityService","init_multi_location_activity_service","__esmMin","init_core","init_vendasta_crm","init_esm","init_operators","init_tokens_and_interfaces","init_activity_object_service","ActivityObjectService","constructor","multiLocationActivityService","inject","CRMMultiLocationActivityApiService","multiLocationConfig","CrmMultilocationInjectionToken","listObjects","request","multiLocationContext$","of","pipe","switchMap","multiLocationContext","req","multiLocationPath","groupId","namespaces","accountGroupsIds","sortBy","filtersV2","pagingOptions","listMultiLocationActivities","map","response","crmObjects","activities","pagingMetadata","listObjectsFilters","searchTerm","paging","listMultiLocationActivityFilters","filters","listFieldOptions","fieldId","pageSize","listMultiLocationActivityFieldOptions","options","__ngFactoryType__","factory","ɵfac","providedIn","CustomObjectService","init_custom_object_service","__esmMin","constructor","service","createCrmObject","request","createCustomObject","deleteCrmObject","deleteCustomObject","validateCrmObject","validateCustomObject","updateCrmObject","updateCustomObject","listObjects","listCustomObjects","listObjectsFilters","listCustomObjectFilters","getMultiObject","getMultiCustomObject","listFieldOptions","listCustomObjectFieldOptions","ɵɵinject","CRMCustomObjectApiService","factory","ɵfac","providedIn","MultiLocationContactService","init_multi_location_contact_service","__esmMin","init_core","init_vendasta_crm","init_esm","init_operators","init_tokens_and_interfaces","init_contact_service","ContactService","constructor","multiLocationContactService","inject","CRMMultiLocationContactApiService","multiLocationConfig","CrmMultilocationInjectionToken","listObjects","request","multiLocationContext$","of","pipe","switchMap","multiLocationContext","req","multiLocationPath","groupId","namespaces","accountGroupsIds","sortBy","filtersV2","pagingOptions","listMultiLocationContacts","map","response","crmObjects","pagingMetadata","listObjectsFilters","searchTerm","paging","listMultiLocationContactFilters","filters","listFieldOptions","fieldId","pageSize","listMultiLocationContactFieldOptions","options","__ngFactoryType__","factory","ɵfac","providedIn","CrmObjectService","init_crm_object_service","__esmMin","init_vendasta_crm","init_esm","init_tokens_and_interfaces","init_utils","init_field_service","constructor","config","multiLocationConfig","contactService","companyService","activityService","opportunityService","multiLocationActivityService","multiLocationContactService","customObjectService","handledObjectTypes","isMultiLocationPage$","isMultiLocation$","combineLatest","namespace$","pipe","map","isMultiLocation","namespace","of","createCrmObject","objectType","crmObject","fields","undefined","setSystemFields","take","switchMap","request","selectService","deleteCrmObject","objectId","crmObjectId","validateCrmObject","crmObjectCopy","__spreadValues","fieldValues","contactOwnerID","find","field","fieldId","SystemFieldIds","ContactOwnerID","ownerId","stringValue","filter","contactGroupID","ContactGroupID","groupId","contactExternalID","ContactExternalID","externalId","companyOwnerID","CompanyOwnerID","companyGroupID","CompanyGroupID","companyExternalID","CompanyExternalID","opportunityOwnerID","OpportunityOwnerID","customObjectOwnerID","CustomObjectOwnerID","customObjectExternalID","CustomObjectExternalID","updateCrmObject","paths","forEach","push","fieldMask","convertSortBy","sorting","sortBy","sort","direction","active","sortDirection","SortDirection","SORT_DIRECTION_ASCENDING","SORT_DIRECTION_DESCENDING","convertFilters","filters","convertGalaxyFilters","listObjects","withNamespace","__spreadProps","listObjectsFilters","getMultiObject","crmObjectIds","projectionFilter","withNamespaceOverride","configNamespace","projectionFilters","listFieldOptions","includes","console","error","startBulkCreate","searchTerm","crmObjects","Error","response","filterTag","ɵɵinject","CrmInjectionToken","CrmMultilocationInjectionToken","ContactService","CompanyService","ActivityObjectService","OpportunityService","MultiLocationActivityService","MultiLocationContactService","CustomObjectService","factory","ɵfac","TranslateForCrmObjectService","init_translate_for_crm_object_service","__esmMin","init_tokens_and_interfaces","init_esm","init_operators","init_pipes","init_common","constructor","translateService","translateByObjectTypeService","crmObjectDependencies","sentenceCasePipe","SentenceCasePipe","TitleCasePipe","objectNames$","combineLatest","singularObjectName$","of","pluralObjectName$","pipe","map","singularObjectName","pluralObjectName","distinctUntilChanged","shareReplay","getTranslationForCrmObject","objectType","key","interpolationParams","addNamesToInterpolateParams","interpolationParamsWithNames","objectKey","translation","instant","transform","take","getTranslationByObjectType","ɵɵinject","TranslateService","TranslateByObjectTypeService","CrmObjectInjectionToken","factory","ɵfac","TranslateByObjectTypePipe","init_translate_by_object_type_pipe","__esmMin","constructor","translateByObjectType","transform","value","objectType","interpolationParams","getTranslationByObjectType","ɵɵdirectiveInject","TranslateByObjectTypeService","pure","TranslateForCrmObjectPipe","init_translate_for_crm_object_pipe","__esmMin","constructor","translateForCrmObjectService","transform","value","objectType","interpolationParams","getTranslationForCrmObject","ɵɵdirectiveInject","TranslateForCrmObjectService","pure","init_i18n","__esmMin","init_translation_module","init_translate_by_object_type_pipe","init_translate_by_object_type_service","init_translate_for_crm_object_pipe","init_translate_for_crm_object_service","LoadingBehavior","FadeIn","AutoFill","init_src","__esmMin","init_animations","trigger","state","style","visibility","opacity","transition","animate","backgroundColor","init_public_api","__esmMin","init_src","init_animations","__esmMin","init_public_api","StickyFooterComponent","init_sticky_footer_component","__esmMin","init_core","constructor","class","rightAligned","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","ɵɵclassProp","booleanAttribute","standalone","features","ɵɵInputTransformsFeature","ngContentSelectors","_c1","decls","vars","consts","template","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","StickyFooterSecondaryDirective","init_sticky_footer_secondary_directive","__esmMin","constructor","class","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","MODULE_IMPORTS","GalaxyStickyFooterModule","init_sticky_footer_module","__esmMin","init_common","CommonModule","init_public_api","__esmMin","init_sticky_footer_module","init_sticky_footer","__esmMin","init_public_api","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","togglePageNav","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","toggleLabel","_r3","PageNavComponent","init_page_nav_component","__esmMin","constructor","changeDetectorRef","media","class","mobileQuery","matchMedia","_mobileQueryListener","detectChanges","window","addEventListener","ngOnDestroy","removeEventListener","pageNav","toggle","ɵɵdirectiveInject","ChangeDetectorRef","MediaMatcher","selectors","viewQuery","rf","ctx","ɵɵclassMap","ɵɵprojection","ɵɵtemplate","PageNavComponent_Conditional_5_Template","PageNavComponent_Conditional_7_Template","ɵɵproperty","matches","ɵɵpureFunction1","_c3","ɵɵconditional","MODULE_IMPORTS","GalaxyPageNavModule","init_page_nav_module","__esmMin","init_common","init_ngx_translate_core","init_sidenav","init_icon","init_button","CommonModule","MatSidenavModule","MatIconModule","MatButtonModule","TranslateModule","init_public_api","__esmMin","init_page_nav_module","init_page_nav","__esmMin","init_public_api","GalaxyNavLayoutComponent","init_nav_layout_component","__esmMin","constructor","class","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","ɵɵprojection","ɵɵelementStart","ɵɵelementEnd","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ctx_r0","icon","ɵɵelement","ɵɵproperty","GalaxyNavItemListComponent","init_nav_item_list_component","__esmMin","init_animations","init_core","constructor","class","isSvg","startExpanded","_isOpen","isOpen","open","ngOnInit","toggleOpen","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","booleanAttribute","standalone","features","ɵɵInputTransformsFeature","ngContentSelectors","_c1","decls","vars","consts","template","ɵɵlistener","ɵɵtemplate","GalaxyNavItemListComponent_Conditional_3_Template","GalaxyNavItemListComponent_Conditional_4_Template","ɵɵprojection","ɵɵpureFunction1","_c2","ɵɵconditional","trigger","state","style","height","opacity","transition","animate","GalaxyNavItemListItemsDirective","init_nav_item_list_items_directive","__esmMin","constructor","class","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","GalaxyNavItemAccessoryDirective","init_nav_item_accessory_directive","__esmMin","constructor","class","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","MODULE_IMPORTS","GalaxyNavLayoutModule","init_nav_layout_module","__esmMin","init_common","init_core","init_icon","init_router","init_ngx_translate_core","CommonModule","RouterModule","MatIconModule","MatRippleModule","TranslateModule","init_public_api","__esmMin","init_nav_layout_module","init_nav_layout","__esmMin","init_public_api","CrmAssociationFormField","CrmObjectAssociationFormField","init_interface","__esmMin","init_core","init_esm","init_tokens_and_interfaces","init_shared_services","constructor","customizationService","inject","CrmObjectDisplayService","config","CrmInjectionToken","crmObjectService","CrmObjectService","crmFiltersService","CrmFiltersService","associationsList","signal","searchTerm$$","BehaviorSubject","options$","setupSearchTerm","namespaceForAssociations","setNamespace","n","set","setAssociations","associations","__async","existingAssociations","filter","association","name","forEach","existing","find","item","crmObjectId","objectsToFetch","map","length","fetchObjects","object","updateSearchTerm","searchTerm","next","trim","objectIds","withNamespace","firstValueFrom","getMultiObject","crmObjectType","crmObjects","obj","getObjectDisplayName","buildListCrmObjectsRequest","namespace","initialFilters","getInitialAppliedFilters$","undefined","search","pagingOptions","cursor","pageSize","filtersV2","convertFilters","asObservable","pipe","debounceTime","distinctUntilChanged","withLatestFrom","namespace$","switchMap","from","r","listObjects","filteredOptions","option","associationInfo","getAssociationInfo","DefaultMaxChars","CrmTruncatePipe","init_truncate_pipe","__esmMin","transform","text","maxChars","hideEllipsis","max","length","slice","pure","ɵɵdeclareLet","ɵɵelementStart","ɵɵlistener","tab_r4","ɵɵrestoreView","_r3","$implicit","ctx_r1","ɵɵnextContext","ɵɵresetView","handleTabChange","objectType","objectSubtype","ɵɵtext","ɵɵelementEnd","isSelectedTab","ɵɵadvance","ɵɵclassProp","isSelected_r5","ɵɵtextInterpolate","name","ɵɵproperty","ɵɵtextInterpolate1","getGroupTotalAssociations","_r1","ɵɵrepeaterCreate","CrmAssociationFormModalComponent_Conditional_1_For_9_Template","ɵɵrepeaterTrackByIdentity","viewAllSelected","ɵɵpipeBind1","totalAssociations","ɵɵrepeater","associationTabs$","tab_r8","_r7","_r6","CrmAssociationFormModalComponent_Conditional_4_For_15_Template","ɵɵelement","tabMenu_r9","getCurrentTabName","_r10","lastAssociationPopover_r11","ɵɵreference","isLast_r12","ɵɵreadContextLet","open","close","$event","association_r13","group_r14","onCheckboxChange","ɵɵstoreLet","isLastAssociation","isSelectedAssociation","isLast_r15","CrmAssociationFormModalComponent_Conditional_8_Conditional_0_For_1_Conditional_0_For_5_Template","_forTrack0","associations","ɵɵtemplate","CrmAssociationFormModalComponent_Conditional_8_Conditional_0_For_1_Conditional_0_Template","ɵɵconditional","length","CrmAssociationFormModalComponent_Conditional_8_Conditional_0_For_1_Template","displayedAssociationGroups$","CrmAssociationFormModalComponent_Conditional_8_Conditional_0_Template","CrmAssociationFormModalComponent_Conditional_8_Conditional_2_Template","isLoadingSelectedView$","_r16","lastAssociationPopover_r17","isLast_r18","option_r19","isLast_r20","CrmAssociationFormModalComponent_Conditional_9_Conditional_0_For_2_Template","options","CrmAssociationFormModalComponent_Conditional_9_Conditional_0_Template","CrmAssociationFormModalComponent_Conditional_9_Conditional_1_Template","isLoadingOptions","CrmAssociationFormModalComponent","init_association_form_modal_component","__esmMin","init_core","init_page","init_page_nav","init_nav","init_dialog","init_tokens_and_interfaces","init_nav_layout","init_badge","init_forms","init_form_field","init_rxjs_interop","init_checkbox","init_button","init_ngx_translate_core","init_loading_spinner","init_operators","init_esm","init_common","init_popover","init_menu","init_divider","init_icon","constructor","data","config","dialogRef","customObjectTypeService","translateByObjectTypeService","translateService","signal","searchCtrl","FormControl","searchTerm$$","BehaviorSubject","isLoadingSelectedView","computed","associationFormFields","reduce","count","field","of","displayedAssociationFormFields$$","isMobile","initialObjectType","initialObjectSubtype","updateAssociation","updateAssociationEventEmitter","searchTermChangeEventEmitter","objectTypeEmitter","updateSearchTerm","valueChanges","pipe","takeUntilDestroyed","subscribe","searchTerm","getAssociationTabs","combineLatest","tap","map","displayedAssociationFormFields","associationTabs","filteredAssociationFormFields","filterAssociationFormFields","associationTab","find","type","filter","association","crmObjectSubtype","__spreadProps","__spreadValues","shareReplay","effect","toLowerCase","includes","trim","event","option","checked","handleAddAssociation","handleRemoveAssociation","crmObjectType","crmObjectId","update","a","updatedAssociations","setViewAllSelected","set","next","JSON","parse","stringify","emit","customObjectTabs$","getCustomObjectTypes","response","customObjectTypes","customObjectType","instant","singularObjectName","customObjectTypeId","push","getTranslatedObjectType","take","customObjectTabs","distinctUntilChanged","tab","namespace$","switchMap","namespace","listCustomObjectTypes","some","handleSave","actionEventEmitter","handleCancel","ɵɵdirectiveInject","MAT_DIALOG_DATA","CrmInjectionToken","MatDialogRef","CRMCustomObjectTypeApiService","TranslateByObjectTypeService","TranslateService","selectors","decls","vars","consts","template","rf","ctx","CrmAssociationFormModalComponent_Conditional_1_Template","CrmAssociationFormModalComponent_Conditional_4_Template","CrmAssociationFormModalComponent_Conditional_8_Template","CrmAssociationFormModalComponent_Conditional_9_Template","GalaxyPageModule","PageWrapperDirective","GalaxyPageNavModule","GalaxyNavItemComponent","GalaxyNavLayoutModule","GalaxyNavLayoutComponent","GalaxyNavItemAccessoryDirective","GalaxyBadgeModule","BadgeComponent","FormsModule","DefaultValueAccessor","NgControlStatus","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","ReactiveFormsModule","FormControlDirective","MatCheckbox","MatButton","MatDialogActions","TranslateModule","TranslatePipe","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","AsyncPipe","GalaxyPopoverModule","PopoverComponent","GalaxyPopoverDirective","MatMenuModule","MatMenu","MatMenuItem","MatMenuTrigger","MatDivider","MatIconModule","MatIcon","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","ɵɵrestoreView","_r2","association_r3","ɵɵnextContext","$implicit","ctx_r3","ɵɵresetView","handleRemoveOption","$event","i0","preventDefault","ɵɵtemplate","CrmAssociationFormFieldComponent_For_3_Conditional_0_Conditional_3_Template","ɵɵpropertyInterpolate","name","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵconditional","crmObjectId","fixedId","CrmAssociationFormFieldComponent_For_3_Conditional_0_Template","ɵ$index_3_r5","showAdditionalChips","editableAssociations","length","_r6","openAssociationFormModal","ɵɵproperty","placeholder","associationGrid_r7","_r8","auto_r9","separatorKeyCodes","searchCtrl","option_r10","ɵɵtextInterpolate","associationInfo","CrmAssociationFormFieldComponent","init_association_form_field_component","__esmMin","init_text_field","init_common","init_core","init_forms","init_autocomplete","init_chips","init_icon","init_input","init_tooltip","init_truncate_pipe","init_coercion","init_rxjs_interop","init_association_form_modal_component","init_operators","associations","associationList","_associations","set","associationFormFields","associationFormFieldList","_associationFormFields","update","constructor","dialog","useAssociationFormFields","input","signal","computed","formFields","editableFormFieldAssociations","associationFormField","curEditableFormFieldAssociations","filter","association","push","mobile","currentSearchTermObjectType","options","isMobile","add","EventEmitter","remove","searchTermChange","objectType","ENTER","COMMA","FormControl","valueChanges","pipe","takeUntilDestroyed","subscribe","searchTerm","emit","option","removeAssociationFromAssociationFormFields","removeAssociation","handleSelectOption","event","value","addAssociation","setValue","crmObjectType","find","a","updateAssociationFormFields","associationParams","actionEventEmitter","open","CrmAssociationFormModalComponent","width","height","autoFocus","data","initialObjectType","initialObjectSubtype","currentSearchTermObjectSubtype","updateAssociation","updateAssociationEventEmitter","searchTermChangeEventEmitter","objectTypeEmitter","afterClosed","take","ɵɵdirectiveInject","MatDialog","selectors","inputs","coerceBooleanProperty","outputs","features","ɵɵInputTransformsFeature","decls","vars","consts","template","rf","ctx","ɵɵrepeaterCreate","CrmAssociationFormFieldComponent_For_3_Template","ɵɵrepeaterTrackByIdentity","CrmAssociationFormFieldComponent_Conditional_4_Template","CrmAssociationFormFieldComponent_Conditional_5_Template","CrmAssociationFormFieldComponent_Conditional_6_Template","_r1","CrmAssociationFormFieldComponent_For_10_Template","_forTrack0","ɵɵrepeater","CommonModule","MatIconModule","MatIcon","MatChipsModule","MatChip","MatChipGrid","MatChipInput","MatChipRemove","MatChipRow","MatInputModule","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","TextFieldModule","MatAutocompleteModule","MatAutocomplete","MatOption","MatAutocompleteTrigger","MatTooltipModule","MatTooltip","CrmTruncatePipe","styles","contactContains","contact","search","name","toLowerCase","includes","associationInfo","contactIncludes","array","searchElement","fromIndex","len","length","startIndex","Math","max","i","currentElement","crmObjectId","CrmContactToCompanyAssociationFormFieldComponent","init_contact_to_company_association_component","__esmMin","init_common","init_core","init_esm","init_shared_services","init_interface","init_association_form_field_component","init_coercion","CrmObjectAssociationFormField","constructor","fixedId","mobile","placeholder","associationsChange","EventEmitter","crmObjectType","crmAssociationService","inject","CrmAssociationService","namespace","n","setNamespace","associations","value","setAssociations","handleAdd","association","associationsList","find","a","newAssociations","set","emit","handleRemove","filter","handleSearchTermChange","searchTerm","updateSearchTerm","setupSearchTerm","pipe","withLatestFrom","searchTerm$$","asObservable","switchMap","values","allAssociations","getCachedContactAssociationsForCompany$","map","contacts","associatedContacts","c","associatedObject","customizationService","getObjectDisplayName","getAssociationInfo","slice","concat","__ngFactoryType__","selectors","inputs","coerceBooleanProperty","outputs","features","ɵɵInputTransformsFeature","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","$event","ɵɵelementEnd","ɵɵproperty","tmp_3_0","ɵɵpipeBind1","options$","undefined","ɵɵpureFunction0","_c0","CommonModule","AsyncPipe","CrmAssociationFormFieldComponent","encapsulation","CrmCompanyAssociationFormFieldComponent","init_company_association_component","__esmMin","init_common","init_core","init_coercion","init_interface","init_association_form_field_component","CrmObjectAssociationFormField","constructor","fixedId","mobile","placeholder","associationsChange","EventEmitter","crmObjectType","associations","value","setAssociations","handleAdd","association","associationsList","find","a","crmObjectId","newAssociations","set","emit","handleRemove","filter","handleSearchTermChange","searchTerm","updateSearchTerm","__ngFactoryType__","selectors","inputs","coerceBooleanProperty","outputs","features","ɵɵInputTransformsFeature","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","$event","ɵɵelementEnd","ɵɵproperty","tmp_3_0","ɵɵpipeBind1","options$","undefined","ɵɵpureFunction0","_c0","CommonModule","AsyncPipe","CrmAssociationFormFieldComponent","encapsulation","ValueSummaryService","init_value_summary_service","__esmMin","init_core","init_vendasta_crm","init_esm","init_tokens_and_interfaces","init_operators","init_shared_services","constructor","opportunityService","inject","OpportunityService","config","CrmInjectionToken","objectType$$","ReplaySubject","pipelineID$$","valueSummary$","combineLatest","namespace$","pipe","filter","namespace","objectType","pipelineId","switchMap","getValueSummary","filters","operator","FilterGroupOperator","FILTER_GROUP_OPERATOR_AND","fieldId","StandardIds","OpportunityPipelineID","FilterOperator","FILTER_OPERATOR_IS","values","string","of","map","response","mapValueSummary","shareReplay","setPipelineId","next","setObjectType","pipeline","total","estimated","stages","stage","stageId","amounts","factory","ɵfac","CrmBoardItemCompareToken","CrmBoardItemClickedToken","init_interfaces","__esmMin","init_core","InjectionToken","ɵɵtext","ɵɵtextInterpolate1","ɵɵpipeBind1","item_r2","CrmBoardCardComponent","init_card_component","__esmMin","init_core","init_card","init_common","constructor","clicked","EventEmitter","handleClick","emit","selectors","inputs","item","cardTemplate","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵelementContainer","ɵɵelementEnd","ɵɵtemplate","CrmBoardCardComponent_ng_template_3_Template","ɵɵtemplateRefExtractor","ɵɵadvance","ɵɵproperty","tmp_1_0","undefined","defaultCardTemplate_r3","ɵɵpureFunction1","_c0","MatCardModule","MatCard","MatCardContent","JsonPipe","CommonModule","NgTemplateOutlet","styles","ɵɵelement","ɵɵelementStart","ɵɵlistener","item_r3","ɵɵrestoreView","_r2","$implicit","ctx_r3","ɵɵnextContext","ɵɵresetView","handleCardClickEvent","ɵɵtemplate","CrmBoardColumnComponent_For_7_div_1_Template","ɵɵelementEnd","ɵɵproperty","cardTemplate","_r5","scrollAreaVisible","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate","column_r6","name","CrmBoardColumnComponent","init_column_component","__esmMin","init_common","init_core","init_rxjs_interop","init_progress_bar","init_infinite_scroll_trigger","init_esm","init_interfaces","init_card_component","init_drag_drop","constructor","pageSize","itemDropped","EventEmitter","itemEntered","itemClicked","columnVisible","columnHidden","destroyRef","inject","DestroyRef","compareFn","CrmBoardItemCompareToken","optional","clickedFn","CrmBoardItemClickedToken","cachedMutations$$","BehaviorSubject","items$$","items$","combineLatest","pipe","map","items","mutations","applyMutations","metadata$$","hasMore","metadata$","metadata","applyMetadataMutations","hasMore$","m","distinctUntilChanged","nextCursor$$","loading$$","loadMore$$","isDroppingTarget","column","value","_column","reset","ngOnInit","datasource","requireInputs","takeUntilDestroyed","filter","debounceTime","subscribe","next","loadMore","searchTerm$","filters$","sorting$","fetchSubscription","closed","unsubscribe","cacheMutation","operation","item","mutation","currentMutations","existingMutationIndex","findIndex","compareItems","splice","push","canDropItem","undefined","dropItemDropped","e","event","data","from","previousContainer","id","to","container","emit","dropItemEntered","dropItemExited","req","take","searchTerm","viewFilters","sorting","cursor","columnFilters","filters","compoundFilters","searchOptions","text","pagingOptions","switchMap","request","get","res","pagingMetadata","totalResults","nextCursor","error","err","console","Error","a","b","JSON","stringify","list","addItems","rmvItems","some","ri","length","Math","max","__spreadProps","__spreadValues","selectors","inputs","numberAttribute","headerTemplate","outputs","features","ɵɵInputTransformsFeature","decls","vars","consts","template","rf","ctx","i0","_r1","ɵɵelementContainer","$event","ɵɵrepeaterCreate","CrmBoardColumnComponent_For_7_Template","ɵɵrepeaterTrackByIndex","CrmBoardColumnComponent_Conditional_9_Template","CrmBoardColumnComponent_Conditional_11_Template","CrmBoardColumnComponent_ng_template_12_Template","ɵɵtemplateRefExtractor","tmp_2_0","defaultHeaderTemplate_r7","ɵɵpureFunction2","_c0","ɵɵpipeBind1","ɵɵclassProp","bind","ɵɵrepeater","ɵɵconditional","CommonModule","NgTemplateOutlet","AsyncPipe","GalaxyInfiniteScrollTriggerModule","InfiniteScrollTriggerComponent","MatProgressBarModule","MatProgressBar","CrmBoardCardComponent","DragDropModule","CdkDropList","CdkDrag","CdkDragPlaceholder","styles","changeDetection","CrmBoardColumnHeaderDirective","init_column_header_directive","__esmMin","constructor","templateRef","ɵɵdirectiveInject","TemplateRef","selectors","CrmBoardCardContentDirective","init_card_content_directive","__esmMin","constructor","templateRef","ɵɵdirectiveInject","TemplateRef","selectors","ɵɵelement","ɵɵelementStart","ɵɵlistener","navItem_r4","ɵɵrestoreView","_r3","$implicit","ctx_r1","ɵɵnextContext","ɵɵresetView","scrollColumnIntoView","id","ɵɵelementEnd","ɵɵclassProp","active","_r1","previousColumn","ɵɵtext","ɵɵrepeaterCreate","CrmBoardComponent_Conditional_2_For_5_Template","ɵɵrepeaterTrackByIndex","nextColumn","ɵɵadvance","ɵɵrepeater","columnNavItems","$event","_r5","onItemDropped","column_r6","onItemClicked","onColumnVisible","onColumnHidden","mobileBreakpoint","ɵɵproperty","datasource","columnHeader","templateRef","cardContent","CrmBoardComponent","init_board_component","__esmMin","init_core","init_layout","init_esm","init_common","init_icon","init_column_component","init_column_header_directive","init_card_content_directive","init_drag_drop","init_progress_bar","init_rxjs_interop","constructor","breakpointObserver","elementRef","document","columns","input","required","itemUpdateStrategy","minColumnWidth","transform","numberAttribute","carousel","itemUpdateFailed","EventEmitter","itemClicked","updateInProgress","signal","showCarousel","computed","computeShowCarousel","mobileBreakpoint$","observe","Breakpoints","TabletPortrait","HandsetPortrait","pipe","map","breakpoints","matches","toSignal","elementWidth","resizeObserver","ResizeObserver","entries","set","contentRect","width","nativeElement","effect","documentElement","style","setProperty","breadcrumbs","column","ngOnDestroy","unobserve","reverse","lastVisibleIndex","findIndex","breadcrumb","previousColumnId","firstVisibleIndex","columnId","querySelector","scrollIntoView","behavior","update","item","find","event","fromColumn","c","from","toColumn","to","Error","mutation","undefined","updateEvent","applyPreUpdateStrategy","then","applyPostUpdateStrategy","catch","rollbackPreUpdateStrategy","emit","finally","columnComponents","cacheMutation","reset","boardWidth","columnCount","length","itemClickEvent","ɵɵdirectiveInject","BreakpointObserver","ElementRef","DOCUMENT","selectors","contentQueries","rf","ctx","dirIndex","CrmBoardColumnHeaderDirective","CrmBoardCardContentDirective","CrmBoardColumnComponent","ɵɵtemplate","CrmBoardComponent_Conditional_0_Template","CrmBoardComponent_Conditional_2_Template","CrmBoardComponent_For_5_Template","ɵɵrepeaterTrackByIdentity","ɵɵconditional","MatIcon","DragDropModule","CdkDropListGroup","MatProgressBarModule","MatProgressBar","styles","CrmBoardDatasource","init_datasource","__esmMin","init_esm","constructor","api","searchTerm$$","BehaviorSubject","searchTerm$","asObservable","pipe","distinctUntilChanged","filters$$","filters$","sorting$$","sorting$","setSearchTerm","searchTerm","next","setFilters","filters","setSorting","sorting","get","request","init_src","__esmMin","init_board_component","init_card_component","init_card_content_directive","init_column_component","init_column_header_directive","init_interfaces","init_datasource","init_public_api","__esmMin","init_src","init_board","__esmMin","init_public_api","ListObjectsTableService","init_list_objects_table_service","__esmMin","init_vendasta_crm","init_chips","init_table","init_esm","init_tokens_and_interfaces","init_shared_services","init_rxjs_interop","init_libphonenumber_js","init_board","constructor","config","objectsService","fieldsService","translate","trackingService","contactCustomization","companyCustomization","opportunityCustomization","tableStateService","snackService","crmFormService","crmObjectManagementTableChangesService","taskCustomization","crmObjectDependencies","objectType$$","ReplaySubject","objectSubtype$","of","fieldSchemas$$","columns$$","groupConfigs$$","activityType$$","BehaviorSubject","objectChanges$","toObservable","getCrmObjectChanges","refreshedRows$$","Map","initialLoadingCompleted$$","receivedObject$$","baseColumnIds$$","showActions$$","data$$","initialLoadingCompleted$","asObservable","columns$","groupConfigs$","showEmptyState$","combineLatest","pipe","map","loading","hasObjects","showObjects$","showEmptyState","latestRequestPayload$$","latestResponse$","observeOn","animationFrameScheduler","withLatestFrom","tap","objectType","activityType","objectSubtype","next","clearAllChanges","switchMap","req","fetchObjects","resp","value","crmObjects","length","_0","__async","searchOptions","text","firstValueFrom","trackEvent","searchFields","fields","schemas$","namespace$","distinctUntilChanged","a","b","JSON","stringify","listAllObjectFields$","shareReplay","takeUntilDestroyed","subscribe","schemas","schema","fieldSchemaToTableColumn","columns","applyColumnLayout$","startWith","customizedColumns","addStaticColumns","showBaseColumns","initializeLocalStorageColumns","addColumnGroups","groupConfigs","paginatedAPI","get","results","listObjects","catchError","openErrorSnack","pagingMetadata","nextCursor","hasMore","changes","refreshedRows","deleted","updated","created","type","objects","push","filteredObjects","filter","object","includes","crmObjectId","forEach","updatedObject","index","findIndex","rows","transformToPagedResponse","data","r","id","dataSource","GalaxyDataSource","boardAPI","objectListResp","boardSource","CrmBoardDatasource","listAllObjectFieldGroups$","fieldGroups","fieldIds","reduce","fieldGroup","concat","sortedColumns","parse","sort","indexA","indexOf","external_id","indexB","firstFieldGroupFieldIds","column","hidden","actionsColumn","title","instant","pinned","stickyEnd","sortable","subtype$","groups","group","fieldGroupId","description","fieldId","find","g","undefined","moveItemsToBeginning","identifiersToMove","movedToFront","col","c","movedToBack","m","baseColumnIds","deleteObject","namespace","objectId","deleteCrmObject","addDeletedCrmObjectId","take","refreshRows","getMultiObject","newRefreshedRows","crmObjectsToTableRows","currentRefreshedRows","row","set","e","console","error","setObjectType","setActivityType","setBaseColumns","setShowActions","showActions","getTableCustomizationService","services","tableCustomizationService","getActivityTypeFilter","SystemFieldIds","ActivityType","operator","FilterOperator","FILTER_OPERATOR_IS","values","string","externalId","fieldName","schemaMap","objType","obj","columnData","field","getValueByType","customizeRowData","fieldType","FieldType","FIELD_TYPE_CURRENCY","cellType","currencyValue","code","currencyCode","FIELD_TYPE_INTEGER","integerValue","FIELD_TYPE_FLOAT","floatValue","FIELD_TYPE_DATETIME","FIELD_TYPE_DATE","dateData","dateValue","FIELD_TYPE_PHONE","phoneFieldValues","phoneData","stringValue","FIELD_TYPE_STRING","FIELD_TYPE_EMAIL","textData","FIELD_TYPE_DROPDOWN","dropDownOptionData","FIELD_TYPE_BOOLEAN","booleanValue","FIELD_TYPE_TAG","FIELD_TYPE_STRING_LIST","stringValues","label","dropdownOptions","o","link","nationalNumber","e164Compliant","parsed","country","isoCountryCode","phone","ext","extension","internationalNumber","format","warn","isMobile","customizeColumns","addNamespaceMetadata","crmObject","namespaceFromConfig","lookupRowDisplayName","firstName","f","lastName","trim","email","ngOnDestroy","buildRequest","filterGroup","convertFilters","filters","sortBy","convertSortBy","sorting","defaultSortingOptions","search","searchTerm","filtersV2","pagingOptions","cursor","pageSize","projectionFilters","filterType","fromFieldType","toFieldType","crmObjectSubtype","crmRequest","request","metadata","totalResults","defaultBoardColumns","pipeline","lifecycleStages","taskStages","stage","toString","name","StandardIds","ContactLifecycleStage","GalaxyFilterOperator","mutation","updateCrmObject","CompanyLifecycleStage","stages","probability","mutations","OpportunityProbability","ActivityTaskStatus","ɵɵinject","CrmInjectionToken","CrmObjectService","CrmFormService","TranslateService","CRMTrackingService","ContactTableCustomizationService","CompanyTableCustomizationService","OpportunityTableCustomizationService","CrmTableStateService","SnackbarService","CrmObjectManagementTableChangesService","TaskTableCustomizationServiceToken","CrmObjectInjectionToken","factory","ɵfac","SidepanelService","init_side_panel_service","__esmMin","init_esm","init_operators","constructor","isOpenSource$$","ReplaySubject","isOpen$","pipe","startWith","headerTitle$$","headerTitle$","openSidepanel","content","next","createView","closeSidepanel","viewContainerRef","clear","setViewContainer","createComponent","setHeaderTitle","headerTitle","factory","ɵfac","providedIn","SidepanelComponent","init_side_panel_component","__esmMin","init_common","init_core","init_button","init_icon","init_sidenav","init_toolbar","init_empty_state","constructor","sidepanelService","isOpen$","headerTitle$","ngAfterContentInit","setViewContainer","contentContainerRef","closeSidepanel","ɵɵdirectiveInject","SidepanelService","selectors","viewQuery","rf","ctx","ViewContainerRef","ɵɵelementStart","ɵɵtext","ɵɵelement","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵelementEnd","ɵɵelementContainer","ɵɵproperty","ɵɵpipeBind1","ɵɵadvance","ɵɵtextInterpolate1","MatSidenavModule","MatDrawer","MatIconModule","MatIcon","CommonModule","AsyncPipe","GalaxyEmptyStateModule","MatToolbarModule","MatToolbar","MatToolbarRow","MatButtonModule","MatIconButton","styles","FilterVisibleActionsPipe","init_filter_visible_actions_pipe","__esmMin","transform","actions","params","filter","action","visible","row","objectType","pure","CrmActivityEffectiveDatePipe","init_activity_effective_date_pipe","__esmMin","init_core","init_field_service","constructor","fieldService","inject","CrmFieldService","transform","activity","getFieldValueFromCrmObject","SystemFieldIds","ActivityEffectiveDate","dateValue","pure","CrmIsTaskOverduePipe","init_is_task_overdue_pipe","__esmMin","init_core","init_field_service","constructor","fieldService","inject","CrmFieldService","transform","activity","getFieldValueFromCrmObject","StandardIds","ActivityTaskStatus","stringValue","effectiveDate","SystemFieldIds","ActivityEffectiveDate","dateValue","getTime","Date","now","pure","init_shared_pipes","__esmMin","init_filter_visible_actions_pipe","init_activity_effective_date_pipe","init_is_task_overdue_pipe","init_truncate_pipe","encodeFilters","filters","encodeURIComponent","JSON","stringify","decodeFilters","parse","decodeURIComponent","validateFilters","filter","fieldId","filterId","operator","init_utils","__esmMin","ɵɵelementContainer","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r5","filter_r3","ɵɵnextContext","$implicit","ctx_r3","ɵɵresetView","handleDeleteFilterClick","ɵɵtext","ɵɵelementEnd","_r2","handleSelectFilterClick","ɵɵtemplate","FilterViewComponent_ng_template_12_div_0_div_1_button_3_Template","ɵɵadvance","ɵɵtextInterpolate1","name","ɵɵproperty","preset","FilterViewComponent_ng_template_12_div_0_div_1_Template","allFilters","FilterViewComponent_ng_template_12_div_0_Template","hasFilters","noViews_r6","_r7","handleCreateViewClick","ɵɵpipeBind1","ɵɵtextInterpolate","ɵɵelementContainerStart","FilterViewComponent_ng_template_18_ng_container_5_glxy_error_1_Template","FilterViewComponent_ng_template_18_ng_container_5_glxy_error_2_Template","FilterViewComponent_ng_template_18_ng_container_5_glxy_error_3_Template","newViewNameCtrl","errors","ɵɵelement","FilterViewComponent_ng_template_18_ng_container_5_Template","touched","_r8","handleSaveClick","handleCancelClick","FilterViewComponent","init_filter_view_component","__esmMin","init_common","init_core","init_forms","init_button","init_icon","init_menu","init_ngx_translate_core","init_form_field","init_popover","init_empty_state","init_snackbar_service","init_button_group","init_confirmation_modal","init_esm","init_rxjs_interop","filters","value","currentFilters","_filters","set","filterAreEqual","selectedFilter","undefined","keys","_keys","presetFilters","map","f","__spreadProps","__spreadValues","_presetFilters","constructor","signal","filtersChange","EventEmitter","snackbarService","inject","SnackbarService","confirmationModalService","OpenConfirmationModalService","translateService","TranslateService","i18n","views","toSignal","stream","mode","savedFilters","computed","sortFilters","Object","length","FormControl","validators","Validators","required","nameExistsValidator","nameLengthValidator","mobileWidth","popoverPosition","PopoverPositions","selectedFilterName","effect","loadSavedFilters","setValue","markAsUntouched","openErrorSnack","filter","__async","firstValueFrom","openModal","title","cancelOnEscapeKeyOrBackgroundClick","message","instant","viewName","type","confirmButtonText","localStorage","setItem","JSON","stringify","markAsTouched","valid","savedFilter","concat","viewsMenu","close","emit","handleViewsClick","open","a","b","filterOutPresetsFn","definition","mapRelevantFieldsFn","fieldId","operator","values","filterA","filterB","sort","x","y","localeCompare","key","getItem","parse","removeItem","control","Boolean","find","presetName","nameLength","toLocaleLowerCase","selectors","viewQuery","rf","ctx","i0","_r1","FilterViewComponent_ng_container_9_Template","FilterViewComponent_ng_container_11_Template","FilterViewComponent_ng_template_12_Template","ɵɵtemplateRefExtractor","FilterViewComponent_ng_template_14_Template","FilterViewComponent_ng_template_16_Template","FilterViewComponent_ng_template_18_Template","FilterViewComponent_ng_template_20_Template","viewsMenu_r9","listTemplate_r10","saveTemplate_r12","listActions_r11","saveActions_r13","CommonModule","NgForOf","NgIf","GalaxyButtonGroupModule","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","ErrorDirective","GalaxyPopoverModule","PopoverComponent","PopoverTitleDirective","PopoverActionsDirective","GalaxyPopoverDirective","GalaxyEmptyStateModule","EmptyStateComponent","EmptyStateHeroDirective","MatButtonModule","MatButton","MatIconModule","MatIcon","MatMenuModule","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","TranslateModule","TranslatePipe","styles","changeDetection","init_interfaces","__esmMin","init_filter_view","__esmMin","init_filter_view_component","init_interfaces","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ctx_r0","probability","ɵɵpipeBind1","ɵɵpipeBind2","total","value","currencyCode","ɵɵadvance","ɵɵtextInterpolate1","estimated","ɵɵtemplate","ListObjectsBoardColumnHeaderComponent_Conditional_6_Conditional_3_Template","ɵɵconditional","tmp_2_0","ListObjectsBoardColumnHeaderComponent","init_column_header_component","__esmMin","init_core","init_common","init_pipes","init_icon","init_ngx_translate_core","init_tooltip","constructor","column","input","metadata","summary","computed","Math","trunc","columnAmounts","stages","find","stage","stageId","id","amounts","selectors","inputs","decls","vars","consts","template","rf","ctx","ListObjectsBoardColumnHeaderComponent_Conditional_6_Template","ɵɵtextInterpolate","name","tmp_1_0","totalResults","undefined","CommonModule","GalaxyPipesModule","GalaxyCurrencyPipe","MatIcon","TranslateModule","TranslatePipe","MatTooltip","styles","changeDetection","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","TaskStatusCellComponent","init_task_status_component","__esmMin","init_core","init_rxjs_interop","init_common","init_table","init_pipes","init_ngx_translate_core","init_icon","init_esm","init_operators","init_tokens_and_interfaces","init_button","init_src","init_shared_services","CustomCellComponent","values","cellData","multilocationNamespace","namespace","activityId","objectId","value","newValues","firstValue","statusField","filter","Boolean","find","field","fieldId","StandardIds","ActivityTaskStatus","taskOpen","stringValue","Open","idField","SystemFieldIds","ActivityID","namespaceValue","length","updateTaskCompletionStatus","newStatus","Completed","activity","crmObjectId","crmObjectSubtype","activitySubtype","fields","mask","paths","firstValueFrom","activityService","updateActivity","then","snack","openSuccessSnack","openErrorSnack","analyticsService","trackEvent","status","updateTaskCompletionStatusMultilocation","updateActivityMultilocation","of","ngOnInit","isMultiLocation","multiLocationSignal","constructor","multiLocationConfig","inject","ProductAnalyticsService","toSignal","multiLocationContext$","pipe","take","map","context","groupId","initialValue","ɵɵdirectiveInject","ActivityService","SnackbarService","CrmMultilocationInjectionToken","selectors","inputs","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵtemplate","TaskStatusCellComponent_mat_icon_1_Template","TaskStatusCellComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","ɵɵadvance","ɵɵproperty","taskComplete_r2","CommonModule","NgIf","GalaxyPipesModule","TranslateModule","MatIconModule","MatIcon","MatButtonModule","MatIconButton","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ctx_r0","userName","ɵɵelementContainerStart","ɵɵtemplate","UserCellComponent_ng_container_0_div_1_Template","ɵɵproperty","user_r2","NO_VALUE_FOR_USER","blank_r3","ɵɵelement","UserCellComponent","init_user_component","__esmMin","init_core","init_operators","init_esm","init_common","init_table","init_rxjs_interop","init_shared_services","CustomCellComponent","value","newValues","fieldValues","set","constructor","userService","signal","user","computed","displayName","toObservable","pipe","switchMap","userId","find","fieldValue","fieldId","SystemFieldIds","ActivityOwnerID","stringValue","of","getMultiUsers","takeUntilDestroyed","subscribe","result","length","ɵɵdirectiveInject","ActivityAssigneeService","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","UserCellComponent_ng_container_0_Template","UserCellComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","UserCellComponent_ng_template_3_Template","loading_r4","CommonModule","NgIf","BlankValueComponent","encapsulation","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵpureFunction1","_c0","ctx_r0","daysOverdue","hoursOverdue","ɵɵtemplate","DueDateCellComponent_ng_container_0_div_1_span_4_Template","DueDateCellComponent_ng_container_0_div_1_ng_template_5_Template","ɵɵtemplateRefExtractor","ɵɵtextInterpolate","date","dateFormat","ɵɵproperty","showInHours_r2","ɵɵelementContainerStart","DueDateCellComponent_ng_container_0_div_1_Template","DueDateCellComponent_ng_container_0_ng_template_2_Template","isOverdue","notOverdue_r3","ɵɵelement","DueDateCellComponent","init_due_date_component","__esmMin","init_common","init_ngx_translate_core","init_pipes","init_table","init_date_utils","init_shared_services","init_tokens_and_interfaces","CustomCellComponent","value","newValues","dueDateField","filter","Boolean","find","field","fieldId","StandardIds","ActivityTaskDueDate","dateValue","undefined","statusField","ActivityTaskStatus","timeOverdue","getTimeOverdue","stringValue","Open","days","hours","dueDate","todayHours","Date","now","milisecToHours","dueDateHours","getTime","Math","floor","constructor","DateFormat","medium","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","DueDateCellComponent_ng_container_0_Template","DueDateCellComponent_ng_template_1_Template","blank_r4","CommonModule","NgIf","BlankValueComponent","GalaxyPipesModule","GalaxyDatePipe","TranslateModule","TranslatePipe","styles","AssociatedCrmObjectService","init_associated_crm_object_service","__esmMin","init_core","init_shared_services","init_tokens_and_interfaces","init_esm","init_constants","constructor","config","inject","CrmInjectionToken","multiLocation","CrmMultilocationInjectionToken","crmObjectService","CrmObjectService","objectDisplayService","CrmObjectDisplayService","getCrmObjectName","namespace","objectType","objectId","of","getCrmObject","pipe","map","crmObject","getObjectDisplayName","getMultiObject","response","crmObjects","catchError","undefined","getCrmObjectUrl","isMultiLocation$","routePrefix$","switchMap","isMultiLocation","combineLatest","pathRoot","pathTemplate","PAGE_ROUTES","COMPANY","ROOT","SUBROUTES","PROFILE","MULTI_LOCATION","CONTACTS","CONTACT","replace","factory","ɵfac","ɵɵtext","ɵɵtextInterpolate1","ctx_r0","displayName","ɵɵelement","ɵɵelementStart","ɵɵtemplate","AssociatedCrmObjectComponent_Defer_0_Conditional_0_Conditional_1_Template","AssociatedCrmObjectComponent_Defer_0_Conditional_0_Conditional_2_Template","ɵɵelementEnd","ɵɵproperty","redirectUrl","ɵɵadvance","ɵɵconditional","AssociatedCrmObjectComponent_Defer_0_Conditional_1_Conditional_1_Template","AssociatedCrmObjectComponent_Defer_0_Conditional_1_Conditional_2_Template","AssociatedCrmObjectComponent_Defer_0_Conditional_0_Template","AssociatedCrmObjectComponent_Defer_0_Conditional_1_Template","AssociatedCrmObjectComponent","init_associated_crm_object_component","__esmMin","init_common","init_core","init_table","init_esm","init_associated_crm_object_service","init_rxjs_interop","BlankValueComponent","CustomCellComponent","value","identifiers","associationIdentifier","set","constructor","service","signal","undefined","isLoaded","computed","key","toObservable","toSignal","pipe","switchMap","getCrmObjectName","namespace","objectType","objectId","getCrmObjectUrl","ɵɵdirectiveInject","AssociatedCrmObjectService","selectors","features","ɵɵProvidersFeature","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","AssociatedCrmObjectComponent_Defer_0_Template","AssociatedCrmObjectComponent_DeferPlaceholder_1_Template","ɵɵdefer","AssociatedCrmObjectComponent_Defer_2_DepsFn","ɵɵdeferWhen","CommonModule","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ctx_r0","body","isMobile","TaskBodyCellComponent","init_task_body_component","__esmMin","init_common","init_table","init_pipes","init_shared_services","init_shared_pipes","init_tooltip","init_layout","init_esm","init_rxjs_interop","CustomCellComponent","constructor","breakpointObserver","taskBodyLimit","showTooltip","toSignal","observe","Breakpoints","XSmall","pipe","map","result","matches","value","newValues","bodyField","filter","Boolean","find","field","fieldId","StandardIds","ActivityTaskBody","stringValue","escapeHtml","length","html","tempElement","document","createElement","innerHTML","textContent","ɵɵdirectiveInject","BreakpointObserver","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","TaskBodyCellComponent_Conditional_4_Template","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind3","ɵɵconditional","CommonModule","GalaxyPipesModule","CrmTruncatePipe","GalaxyTooltipModule","GalaxyTooltipDirective","encapsulation","init_custom_table_cells","__esmMin","init_task_status_component","init_user_component","init_due_date_component","init_company_batch_getter_service","init_associated_crm_object_component","init_primary_association_cell_component","init_location_component","init_task_body_component","ɵɵelementContainer","ɵɵtemplate","ListObjectsBoardCardContentComponent_Conditional_3_ng_container_0_Template","ɵɵproperty","ctx_r0","subtitle","component","inputs","ɵɵelement","ListObjectsBoardCardContentComponent_For_5_Conditional_0_Template","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵconditional","ɵ$index_11_r3","ɵɵadvance","ɵɵtextInterpolate","detail_r2","ɵɵtextInterpolate1","bottomRight","ListObjectsBoardCardContentComponent_Conditional_6_Conditional_5_Conditional_0_Template","ListObjectsBoardCardContentComponent_Conditional_6_Conditional_5_Conditional_1_Template","isLoadingBottomRight","ListObjectsBoardCardContentComponent_Conditional_6_Conditional_5_Template","bottomLeft","asString","isFieldValueInterface","ListObjectsBoardCardContentComponent","FieldTranslationKeys","init_card_content_component","__esmMin","init_core","init_common","init_shared_services","init_tokens_and_interfaces","init_libphonenumber_js","init_pipes","init_esm","init_loading_spinner","init_custom_table_cells","value","stringValue","String","Array","isArray","constructor","translate","userService","inject","CrmInjectionToken","services","objectType","input","required","row","crmFieldService","CrmFieldService","fieldIDs","FirstName","getFieldId","StandardExternalIds","LastName","PhoneNumber","Email","title","computed","computeTitle","computeSubtitle","details","computeDetails","computeBottomLeft","signal","ownerId","computeOwnerId","showFooter","length","effect","__async","set","ownerName","firstValueFrom","getMultiUsers","displayName","data","getContactName","getCompanyName","getOpportunityName","StandardIds","ActivityName","name","objectId","id","PrimaryAssociationCellComponent","showUrl","getContactDetails","getCompanyDetails","getOpportunityDetails","getOpportunityValue","SystemFieldIds","OpportunityOwnerID","firstNameData","lastNameData","trim","phoneValue","phoneNumber","format","parseNumber","defaultCountry","ContactJobTitle","ContactLinkedInURL","filter","d","CompanyName","CompanyPhoneNumber","address","CompanyPrimaryAddressLine1","CompanyPrimaryAddressLine2","CompanyPrimaryAddressCity","CompanyPrimaryAddressState","CompanyPrimaryAddressPostalCode","Boolean","join","CompanyWebsite","OpportunityName","currencyValue","OpportunityAmount","amount","cellType","code","GalaxyCurrencyPipe","transform","push","getObjectRowDetails","OpportunityLastActivityDate","OpportunityActualCloseDate","OpportunityExpectedCloseDate","fieldId","cellValue","formattedValue","GalaxyDatePipe","translationKey","instant","ɵɵdirectiveInject","TranslateService","selectors","decls","vars","consts","template","rf","ctx","ListObjectsBoardCardContentComponent_Conditional_3_Template","ɵɵrepeaterCreate","ListObjectsBoardCardContentComponent_For_5_Template","ɵɵrepeaterTrackByIndex","ListObjectsBoardCardContentComponent_Conditional_6_Template","ɵɵrepeater","CommonModule","NgComponentOutlet","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","styles","changeDetection","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","pipeline_r2","ɵɵadvance","ɵɵtextInterpolate","name","ɵɵrepeaterCreate","PipelineSelectorComponent_Conditional_0_Conditional_8_For_1_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","pipelines_r3","ctx_r3","noPipelinesOption","ɵɵpipeBind1","ɵɵdeclareLet","ɵɵtemplate","PipelineSelectorComponent_Conditional_0_Conditional_8_Template","PipelineSelectorComponent_Conditional_0_Conditional_9_Template","ɵɵelement","ɵɵlistener","ɵɵrestoreView","_r1","ɵɵnextContext","ɵɵresetView","openPipelineSettings","selectedPipelineControl","comparePipelines","ɵɵstoreLet","allPipelines$","ɵɵconditional","pipelines_r5","length","SUPPORTED_OBJECT_TYPES","PipelineSelectorComponent","init_pipeline_selector_component","__esmMin","init_core","init_form_field","init_select","init_ngx_translate_core","init_forms","init_common","init_rxjs_interop","init_esm","init_tokens_and_interfaces","init_operators","init_divider","init_constants","selectedPipelineId","id","selectedPipelineId$$","next","constructor","pipelineService","destroyRef","router","config","inject","CrmInjectionToken","BehaviorSubject","objectType","selectionChanged","EventEmitter","lastEmittedPipelineId$$","FormControl","Observable","ngOnInit","includes","listPipelines$","valueChanges","pipe","takeUntilDestroyed","subscribe","pipeline","emitPipeline","combineLatest","distinctUntilChanged","pipelines","selectedPipeline","find","setValue","p1","p2","routePrefix$","take","routePrefix","lastEmittedPipelineId","navigateByUrl","PAGE_ROUTES","PIPELINE_SETTINGS","ROOT","emit","ɵɵdirectiveInject","CrmPipelineService","DestroyRef","Router","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","PipelineSelectorComponent_Conditional_0_Template","CommonModule","AsyncPipe","ReactiveFormsModule","NgControlStatus","FormControlDirective","MatSelectModule","MatSelect","MatOption","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","TranslateModule","TranslatePipe","MatDivider","styles","init_pipeline_selector","__esmMin","init_pipeline_selector_component","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r3","ctx_r1","ɵɵnextContext","ɵɵresetView","updateFilters","ɵɵelementEnd","ɵɵproperty","tmp_3_0","ɵɵpipeBind1","ɵɵpipeBind2","objectTypeForTranslation","undefined","ɵɵtext","_r4","handleSelectAll","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind3","objectType","ɵɵpureFunction1","_c1","dataSource","state","totalDataMembers","_r5","_c2","ɵɵtemplate","ListObjectsTableComponent_Conditional_1_Conditional_10_Conditional_2_Template","ListObjectsTableComponent_Conditional_1_Conditional_10_Conditional_4_Template","ɵɵconditional","useSelectAll$","action_r7","_r6","$implicit","callback","selectedRows","filters","search","searchTerm","useSelectAll","selectAll","totalObjects","ɵɵtextInterpolate","label","ListObjectsTableComponent_Conditional_1_Conditional_12_button_0_Template","selectAllActions$","action_r9","_r8","ListObjectsTableComponent_Conditional_1_Conditional_14_button_0_Template","multiRowActions$","_r11","pipelineChanged","initialPipeline","ListObjectsTableComponent_Conditional_1_Conditional_15_Conditional_1_Template","_r10","selectViewFilters","isBoardView","viewKeys","presetFilters","ɵɵelement","_r12","openAndSetupPipelineSettings","column_r14","metadata_r15","boardValueSummary$","row_r16","_r13","boardItemUpdateFailed","boardItemClicked","ListObjectsTableComponent_Conditional_1_Case_16_Conditional_1_ng_template_1_Template","ListObjectsTableComponent_Conditional_1_Case_16_Conditional_1_ng_template_2_Template","boardColumnLayout","boardSource","ListObjectsTableComponent_Conditional_1_Case_16_Conditional_0_Template","ListObjectsTableComponent_Conditional_1_Case_16_Conditional_1_Template","showBoardEmptyState","row_r17","ɵɵelementContainerStart","action_r20","_r19","row_r21","ListObjectsTableComponent_Conditional_1_Case_17_td_9_ng_container_7_Template","_r18","editObject","deleteObject","isReadOnlyMode","menu_r22","singleRowActions$","ɵɵpureFunction2","_c4","rowStyle","row_r23","ɵɵpureFunction0","_c5","ListObjectsTableComponent_Conditional_1_Case_17_tr_3_Template","ListObjectsTableComponent_Conditional_1_Case_17_th_5_Template","ListObjectsTableComponent_Conditional_1_Case_17_td_6_Template","ListObjectsTableComponent_Conditional_1_Case_17_th_8_Template","ListObjectsTableComponent_Conditional_1_Case_17_td_9_Template","ListObjectsTableComponent_Conditional_1_Case_17_tr_10_Template","loading$","initialLoadingCompleted$","_c3","_r1","selectionChanged","columnsChanged","searchTermChanged","handleFilterOpenChange","changeDisplay","ListObjectsTableComponent_Conditional_1_Conditional_9_Template","ListObjectsTableComponent_Conditional_1_Conditional_10_Template","ListObjectsTableComponent_Conditional_1_Conditional_12_Template","ListObjectsTableComponent_Conditional_1_Conditional_14_Template","ListObjectsTableComponent_Conditional_1_Conditional_15_Template","ListObjectsTableComponent_Conditional_1_Case_16_Template","ListObjectsTableComponent_Conditional_1_Case_17_Template","ListObjectsTableComponent_Conditional_1_Conditional_18_Template","columns$","groupConfigs$","tableId","pageSizeOptions","pageSize","showMultiRowActions$","showFiltersOpen","tmp_16_0","showFiltersApplied$","isOnBoardFeatureFlag$","view","hasSelectAllActions$","tmp_26_0","showEmptyState$","ListObjectsTableComponent","init_list_objects_table_component","__esmMin","init_common","init_core","init_icon","init_button","init_dialog","init_menu","init_table","init_state","init_badge","init_empty_state","init_loading_spinner","init_page","init_snackbar_service","init_esm","init_tokens_and_interfaces","init_constants","init_translation_module","init_list_objects_table_service","init_operators","init_side_panel_component","init_shared_pipes","init_crm_table_state_service","init_chips","init_sort","init_rxjs_interop","init_utils","init_confirmation_modal","init_filter_view","init_vendasta_partner","init_shared_services","init_animations","init_board","init_column_header_component","init_card_content_component","init_pipeline_selector","init_i18n","multiActions","actions","multiActions$$","next","singleActions","singleActions$$","o","_objectType","set","tableStateService","setLocalStorageKey","service","setObjectType","summaryService","loadFilterBarState","activityType","readOnlyMode","value","readOnlyMode$$","forceFilters","length","filtersAreForced","_activityType","setActivityType","constructor","config","multiLocationConfig","featureFlagService","router","snackService","dialog","activatedRoute","crmFiltersService","trackingService","translateForCrmObjectService","crmObjectDependencies","signal","selectedPipeline","computed","isBoardView$","toObservable","defaultBoardColumns","BehaviorSubject","objectType$","toSignal","filterBarOpen","pipe","switchMap","createMultiRowActions","createSelectAllActions","createSingleRowActions","combineLatest","map","editClick","EventEmitter","selected","pipelineSelected","currentView","columns","filter","c","id","showEmptyState","filtersApplied$","filtersApplied","f","values","operator","GalaxyFilterOperator","FILTER_OPERATOR_IS_NOT_EMPTY","FILTER_OPERATOR_IS_EMPTY","LIST_OBJECTS_PAGE_SIZE_OPTIONS","LIST_OBJECTS_DEFAULT_PAGE_SIZE","confirmationModalService","inject","OpenConfirmationModalService","subscriptions","selectAll$","valueSummary$","isMultiLocation$","of","data","take","subscribe","routeView","namespace$","parentNamespace$","namespace","parentNamespace","batchGetStatus","featureIds","partnerId","response","hasAccess","startWith","clearSelectionOnChange","filterParam","snapshot","queryParamMap","get","decodeFilters","validateFilters","pipelineId","decodedPipelineId","decodeURIComponent","pipelineFieldIds","StandardIds","ActivityTaskStatus","OpportunityPipelineID","pipelineFilterIndex","findIndex","includes","fieldId","splice","navigate","relativeTo","queryParams","queryParamsHandling","setInitialFilters","setFilters","sub","state$","tap","newQueryParams","__spreadValues","readyFilters","FILTER_OPERATOR_IS","encodeFilters","push","emit","effect","sortingChanged","forEach","sort","trackEvent","columnId","active","direction","ngOnDestroy","unsubscribe","ngOnInit","baseColumnIds","setBaseColumns","contact","company","task","opportunity","appID","refreshRow$","bufferTime","rows","row","Boolean","rowsToRefresh","refreshRows","objectId","routePrefix$","isMultiLocation","defaultPageUrl$","routePrefix","defaultPageUrl","editRouteTemplate","PAGE_ROUTES","CUSTOM_OBJECT","SUBROUTES","EDIT","MULTI_LOCATION","CONTACTS","ROOT","CONTACT","COMPANY","OPPORTUNITY","editRoute","replace","navigateByUrl","name","CompanyName","ContactCustomColumns","FullName","ActivityName","getTranslationForCrmObject","title","message","confirmationButtonText","cancelButtonText","openModal","type","confirmButtonText","withLatestFrom","confirmed","success","error","openSuccessSnack","err","console","openErrorSnack","viewObject","viewRoute","PROFILE","__async","existingPresetFilters","getInitialAppliedFilters$","definition","preset","pipeline","setPipelineId","updatePipelineQueryParam","setStateForNoPipelineSelected","encodedPipelineId","encodeURIComponent","updateChipList","filterChipRef","trackFilterUsage","setLocalStorageColumns","setSearchTerm","typeSingleActions$","singleRowTableActions$","typeActions","deleteRows","objectKeys","forkJoin","key","catchError","resp","failedIDs","address","clearSelection","typeMultiActions$","multiRowTableActions$","deleteRowsAction$","selectAllVisible","deleteRowsAction","selectAllTableActions$","toggleSelectAll","display","routeDisplay","routeObject","TASK","Error","firstValueFrom","event","open","tableState","filterBarOpenStorageKey","localStorage","setItem","getItem","settingPage","PIPELINE_SETTINGS","createUrlTree","create","ɵɵdirectiveInject","CrmInjectionToken","CrmMultilocationInjectionToken","FeatureFlagsApiService","ListObjectsTableService","Router","SnackbarService","MatDialog","CrmTableStateService","ActivatedRoute","CrmFiltersService","CRMTrackingService","ValueSummaryService","TranslateForCrmObjectService","CrmObjectInjectionToken","selectors","viewQuery","rf","ctx","RxState","provide","CrmBoardItemCompareToken","useValue","a","b","CrmBoardItemClickedToken","r","GalaxyTableSelectionCustomizationToken","rowsSelectionLimit","decls","vars","consts","template","ListObjectsTableComponent_Conditional_1_Template","CommonModule","NgForOf","NgStyle","AsyncPipe","GalaxyEmptyStateModule","EmptyStateComponent","EmptyStateHeroDirective","EmptyStateTitleDirective","EmptyStateActionsDirective","GalaxyLoadingSpinnerModule","GalaxyTableModule","TableContainerComponent","TableContentHeaderComponent","GalaxySelectionComponent","MatTableModule","MatTable","MatHeaderCellDef","MatHeaderRowDef","MatColumnDef","MatCellDef","MatRowDef","MatHeaderCell","MatCell","MatHeaderRow","MatRow","MatIconModule","MatIcon","MatMenuModule","MatMenu","MatMenuItem","MatMenuTrigger","MatButtonModule","MatButton","MatIconButton","TranslationModule","TranslatePipe","MatDialogModule","GalaxySnackbarModule","GalaxyBadgeModule","GalaxyPageModule","SidepanelComponent","FilterVisibleActionsPipe","GalaxyFilterChipsModule","GalaxyFilterChipsComponent","MatSortModule","FilterViewComponent","CrmBoardComponent","CrmBoardColumnHeaderDirective","CrmBoardCardContentDirective","ListObjectsBoardColumnHeaderComponent","ListObjectsBoardCardContentComponent","PipelineSelectorComponent","TranslateForCrmObjectPipe","styles","animation","LoadingBehavior","FadeIn","ɵɵelementContainer","ɵɵelementStart","ɵɵtemplate","ListObjectsPageComponent_Conditional_0_ng_container_1_Template","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","listObjects_r1","ɵɵpureFunction1","_c2","ctx","ListObjectsPageComponent_Conditional_2_ng_container_0_Template","ɵɵelementContainerStart","ɵɵlistener","route_r4","ɵɵrestoreView","_r3","ngIf","ctx_r4","ɵɵnextContext","ɵɵresetView","navigateToCsvImportRoute","ɵɵtext","ɵɵtextInterpolate1","ɵɵpipeBind1","create_r6","canCreateObject","ɵɵpipeBind2","typeForTitle","ListObjectsPageComponent_ng_template_3_ng_container_10_Conditional_1_Template","ListObjectsPageComponent_ng_template_3_ng_container_10_Conditional_2_Template","ɵɵconditional","mobileView_r7","ɵɵprojection","ListObjectsPageComponent_ng_template_3_ng_container_8_Template","ListObjectsPageComponent_ng_template_3_ng_container_10_Template","$event","_r2","editClick","emit","selectionChange","setPipelineSelected","storeCurrentView","ɵɵtextInterpolate","importCSVRouteWithPrefix$","createObjectRoute$","objectType","activityType","customRowStyle","presetFilters","multiActions","singleActions","refreshRow$","ListObjectsPageComponent","init_list_objects_page_component","__esmMin","init_common","init_core","init_icon","init_button","init_menu","init_router","init_page","init_tooltip","init_esm","init_operators","init_tokens_and_interfaces","init_translation_module","init_list_objects_table_component","init_rxjs_interop","init_i18n","constructor","config","router","breakpointObserver","crmObjectDependencies","createObjectRoute","accountPageRoute","importCSVRoute","input","importCSVRoute$","toObservable","computed","currentView","isPipelineSelected","signal","EventEmitter","mobileView$","observe","pipe","map","breakpoints","matches","routePrefix$","filter","crm","combineLatest","_","route","navigate","state","previousPageObjectType","set","view","ɵɵdirectiveInject","CrmInjectionToken","Router","BreakpointObserver","CrmObjectInjectionToken","selectors","inputs","outputs","ngContentSelectors","_c1","decls","vars","consts","template","rf","ListObjectsPageComponent_Conditional_0_Template","ListObjectsPageComponent_Conditional_2_Template","ListObjectsPageComponent_ng_template_3_Template","ɵɵtemplateRefExtractor","tmp_1_0","CommonModule","NgIf","NgTemplateOutlet","AsyncPipe","MatMenuModule","GalaxyPageModule","PageComponent","PageToolbarComponent","PageTitleDirective","PageActionsDirective","GalaxyTooltipModule","ListObjectsTableComponent","MatButtonModule","MatAnchor","MatIconModule","MatIcon","RouterModule","RouterLink","TranslationModule","TranslatePipe","TranslateForCrmObjectPipe","styles","ListObjectsTableContentDirective","init_content_directive","__esmMin","crmTableContent","value","placement","selectors","inputs","PageActionsDirective","init_page_actions_directive","__esmMin","selectors","CrmDrawerComponent","init_drawer_component","__esmMin","init_core","init_common","init_sidenav","init_toolbar","init_icon","init_button","constructor","title","drawerContentRef","value","_drawerContentRef","close","clear","drawer","open","content","createEmbeddedView","selectors","viewQuery","rf","ctx","ViewContainerRef","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵelementContainer","ɵɵprojection","ɵɵproperty","ɵɵadvance","ɵɵtextInterpolate","CommonModule","MatButtonModule","MatIconButton","MatIconModule","MatIcon","MatSidenavModule","MatDrawer","MatDrawerContainer","MatDrawerContent","MatToolbarModule","MatToolbar","MatToolbarRow","styles","init_side_panel","__esmMin","init_drawer_component","STANDARD_DATE_FORMAT","DEFAULT_TASK_STATUS","DEFAULT_RICH_TEXT_PLUGINS","DEFAULT_RICH_TEXT_TOOLBAR","init_constants","__esmMin","init_tokens_and_interfaces","ActivityTaskStatus","Open","require_interopRequireDefault","__commonJSMin","exports","module","_interopRequireDefault","e","require_typeof","__commonJSMin","exports","module","_typeof","o","require_requiredArgs","__commonJSMin","exports","module","requiredArgs","required","args","require_isDate","__commonJSMin","exports","module","_interopRequireDefault","isDate","_typeof2","_index","value","require_toDate","__commonJSMin","exports","module","_interopRequireDefault","toDate","_typeof2","_index","argument","argStr","require_isValid","__commonJSMin","exports","module","_interopRequireDefault","isValid","_index","_index2","_index3","dirtyDate","date","require_toInteger","__commonJSMin","exports","module","toInteger","dirtyNumber","number","require_addMilliseconds","__commonJSMin","exports","module","_interopRequireDefault","addMilliseconds","_index","_index2","_index3","dirtyDate","dirtyAmount","timestamp","amount","require_subMilliseconds","__commonJSMin","exports","module","_interopRequireDefault","subMilliseconds","_index","_index2","_index3","dirtyDate","dirtyAmount","amount","require_getUTCDayOfYear","__commonJSMin","exports","module","_interopRequireDefault","getUTCDayOfYear","_index","_index2","MILLISECONDS_IN_DAY","dirtyDate","date","timestamp","startOfYearTimestamp","difference","require_startOfUTCISOWeek","__commonJSMin","exports","module","_interopRequireDefault","startOfUTCISOWeek","_index","_index2","dirtyDate","weekStartsOn","date","day","diff","require_getUTCISOWeekYear","__commonJSMin","exports","module","_interopRequireDefault","getUTCISOWeekYear","_index","_index2","_index3","dirtyDate","date","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","require_startOfUTCISOWeekYear","__commonJSMin","exports","module","_interopRequireDefault","startOfUTCISOWeekYear","_index","_index2","_index3","dirtyDate","year","fourthOfJanuary","date","require_getUTCISOWeek","__commonJSMin","exports","module","_interopRequireDefault","getUTCISOWeek","_index","_index2","_index3","_index4","MILLISECONDS_IN_WEEK","dirtyDate","date","diff","require_defaultOptions","__commonJSMin","exports","getDefaultOptions","setDefaultOptions","defaultOptions","newOptions","require_startOfUTCWeek","__commonJSMin","exports","module","_interopRequireDefault","startOfUTCWeek","_index","_index2","_index3","_index4","dirtyDate","options","_ref","_ref2","_ref3","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","defaultOptions","weekStartsOn","date","day","diff","require_getUTCWeekYear","__commonJSMin","exports","module","_interopRequireDefault","getUTCWeekYear","_index","_index2","_index3","_index4","_index5","dirtyDate","options","_ref","_ref2","_ref3","_options$firstWeekCon","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","date","year","defaultOptions","firstWeekContainsDate","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","require_startOfUTCWeekYear","__commonJSMin","exports","module","_interopRequireDefault","startOfUTCWeekYear","_index","_index2","_index3","_index4","_index5","dirtyDate","options","_ref","_ref2","_ref3","_options$firstWeekCon","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","defaultOptions","firstWeekContainsDate","year","firstWeek","date","require_getUTCWeek","__commonJSMin","exports","module","_interopRequireDefault","getUTCWeek","_index","_index2","_index3","_index4","MILLISECONDS_IN_WEEK","dirtyDate","options","date","diff","require_addLeadingZeros","__commonJSMin","exports","module","addLeadingZeros","number","targetLength","sign","output","require_lightFormatters","__commonJSMin","exports","module","_interopRequireDefault","_index","formatters","date","token","signedYear","year","month","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","_default","require_formatters","__commonJSMin","exports","module","_interopRequireDefault","_index","_index2","_index3","_index4","_index5","_index6","_index7","dayPeriodEnum","formatters","date","token","localize","era","signedYear","year","options","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","quarter","month","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","dayPeriodEnumValue","_localize","originalDate","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","timestamp","offset","dirtyDelimiter","sign","absOffset","minutes","delimiter","_default","require_longFormatters","__commonJSMin","exports","module","dateLongFormatter","pattern","formatLong","timeLongFormatter","dateTimeLongFormatter","matchResult","datePattern","timePattern","dateTimeFormat","longFormatters","_default","require_getTimezoneOffsetInMilliseconds","__commonJSMin","exports","module","getTimezoneOffsetInMilliseconds","date","utcDate","require_protectedTokens","__commonJSMin","exports","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","protectedDayOfYearTokens","protectedWeekYearTokens","token","format","input","require_formatDistance","__commonJSMin","exports","module","formatDistanceLocale","formatDistance","token","count","options","result","tokenValue","_default","require_buildFormatLongFn","__commonJSMin","exports","module","buildFormatLongFn","args","options","width","format","require_formatLong","__commonJSMin","exports","module","_interopRequireDefault","_index","dateFormats","timeFormats","dateTimeFormats","formatLong","_default","require_formatRelative","__commonJSMin","exports","module","formatRelativeLocale","formatRelative","token","_date","_baseDate","_options","_default","require_buildLocalizeFn","__commonJSMin","exports","module","buildLocalizeFn","args","dirtyIndex","options","context","valuesArray","defaultWidth","width","_defaultWidth","_width","index","require_localize","__commonJSMin","exports","module","_interopRequireDefault","_index","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","number","rem100","localize","quarter","_default","require_buildMatchFn","__commonJSMin","exports","module","buildMatchFn","args","string","options","width","matchPattern","matchResult","matchedString","parsePatterns","key","findIndex","pattern","findKey","value","rest","object","predicate","array","require_buildMatchPatternFn","__commonJSMin","exports","module","buildMatchPatternFn","args","string","options","matchResult","matchedString","parseResult","value","rest","require_match","__commonJSMin","exports","module","_interopRequireDefault","_index","_index2","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","value","index","_default","require_en_US","__commonJSMin","exports","module","_interopRequireDefault","_index","_index2","_index3","_index4","_index5","locale","_default","require_defaultLocale","__commonJSMin","exports","module","_interopRequireDefault","_index","_default","require_format","__commonJSMin","exports","module","_interopRequireDefault","format","_index","_index2","_index3","_index4","_index5","_index6","_index7","_index8","_index9","_index10","_index11","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyDate","dirtyFormatStr","options","_ref","_options$locale","_ref2","_ref3","_ref4","_options$firstWeekCon","_options$locale2","_options$locale2$opti","_defaultOptions$local","_defaultOptions$local2","_ref5","_ref6","_ref7","_options$weekStartsOn","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultOptions","locale","firstWeekContainsDate","weekStartsOn","originalDate","timezoneOffset","utcDate","formatterOptions","result","substring","firstCharacter","longFormatter","cleanEscapedString","formatter","input","matched","tzIntlTimeZoneName","length","date","options","dtf","getDTF","partsTimeZone","hackyTimeZone","formatted","i","tzNameMatch","timeZone","locale","init_tzIntlTimeZoneName","__esmMin","tzTokenizeDate","date","timeZone","dtf","getDateTimeFormat","partsOffset","hackyOffset","formatted","filled","i","pos","typeToPos","error","parsed","dtfCache","testDateFormatted","hourCycleSupported","init_tzTokenizeDate","__esmMin","newDateUTC","fullYear","month","day","hour","minute","second","millisecond","utcDate","init_newDateUTC","__esmMin","tzParseTimezone","timezoneString","date","isUtcDate","token","absoluteOffset","patterns","hours","validateTimezone","MILLISECONDS_IN_HOUR","minutes","MILLISECONDS_IN_MINUTE","isValidTimezoneIANAString","utcDate","toUtcDate","offset","calcOffset","fixedOffset","fixOffset","newDateUTC","tokens","tzTokenizeDate","asUTC","asTS","over","localTS","utcGuess","o2","o3","timeZoneString","validIANATimezoneCache","init_tzParseTimezone","__esmMin","init_tzTokenizeDate","init_newDateUTC","getTimeZoneOffset","timeZone","originalDate","timeZoneOffset","tzParseTimezone","MILLISECONDS_IN_MINUTE","addLeadingZeros","number","targetLength","sign","output","formatTimezone","offset","dirtyDelimeter","delimeter","absOffset","hours","minutes","formatTimezoneWithOptionalMinutes","formatTimezoneShort","dirtyDelimiter","delimiter","formatters","formatters_default","init_formatters","__esmMin","init_tzIntlTimeZoneName","init_tzParseTimezone","date","token","localize","options","timezoneOffset","tzIntlTimeZoneName","tzPattern","tzPattern_default","init_tzPattern","__esmMin","toDate","argument","dirtyOptions","options","additionalDigits","DEFAULT_ADDITIONAL_DIGITS","toInteger","dateStrings","splitDateString","parseYearResult","parseYear","year","restDateString","date","parseDate","timestamp","time","offset","parseTime","tzParseTimezone","getTimezoneOffsetInMilliseconds","dateString","parts","patterns","timeString","token","patternYYY","patternYYYYY","yearString","centuryString","month","week","validateDate","dayOfYear","validateDayOfYearDate","day","validateWeekDate","dayOfISOWeekYear","dayOfWeek","hours","minutes","validateTime","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","seconds","isoWeekYear","fourthOfJanuaryDay","diff","isLeapYearIndex","isLeapYear","DAYS_IN_MONTH_LEAP_YEAR","DAYS_IN_MONTH","import_toInteger","import_getTimezoneOffsetInMilliseconds","init_toDate","__esmMin","init_tzParseTimezone","init_tzPattern","tzPattern_default","format","dirtyDate","dirtyFormatStr","dirtyOptions","formatStr","options","matches","tzFormattingTokensRegExp","date","toDate","result","token","pos","precededByQuotedSection","replaced","formatters_default","dateFnsFormat","import_format","init_format","__esmMin","init_formatters","init_toDate","init_esm","__esmMin","init_format","ActivityTaskType","ActivityTaskTypeTranslationKeys","ActivityDirection","CallStatus","ActivityOutcome","MeetingDuration","MeetingStatus","ActivityTypes","ActivityIcons","init_activity_interface","__esmMin","ToDo","Email","Call","Message","Meeting","LinkedIn","nameKey","value","Outbound","Inbound","Forwarded","Connected","Busy","Rejected","Voicemail","NoAnswer","NotInService","WrongNumber","BusinessReview","Demo","DemoCompleted","Discovery","Interested","NoInterest","Presentation","QualityConnect","Rescheduling","Referred","Timeline","FiveMin","FifteenMin","ThirtyMin","OneHour","OneHourThirtyMin","TwoHoursPlus","Scheduled","Rescheduled","Completed","Cancelled","NoShow","Note","RecordChange","Task","Communication","OpportunityChange","requiredFormGroupFieldsIf","predicate","fieldNames","formGroup","when","controls","map","name","get","filter","c","Boolean","forEach","validateRequired","clearRequired","control","value","hasError","errors","setErrors","required","init_validators","__esmMin","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","option_r2","ɵɵadvance","ɵɵtextInterpolate1","displayName","CrmFormFieldActivityOwnerComponent","init_activity_owner_component","__esmMin","init_core","init_common","init_autocomplete","init_form_field","init_input","init_forms","init_rxjs_interop","init_esm","init_tokens_and_interfaces","constructor","placeholder","touched","disabled","config","inject","CrmInjectionToken","searchTerm$$","BehaviorSubject","searchCtrl","FormControl","options$","pipe","takeUntilDestroyed","debounceTime","distinctUntilChanged","switchMap","searchTerm","services","userService","searchUsers","map","users","mapSimplifiedUserToOwner","valueChanges","subscribe","value","handleOptionSelected","validateSearchPermission","writeValue","ownerId","setCurrentValue","registerOnChange","onChange","registerOnTouched","onTouched","markAsTouched","setDisabledState","disable","enable","displayFn","option","enabled","id","handleSearchTermInput","searchInput","nativeElement","next","u","userId","fetch$","getMultiUsers","user","catchError","of","firstValueFrom","then","setTimeout","__async","validResult","Promise","reject","catch","selectors","viewQuery","rf","ctx","provide","NG_VALUE_ACCESSOR","multi","useExisting","decls","vars","consts","template","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵtemplate","CrmFormFieldActivityOwnerComponent_mat_option_4_Template","auto_r3","ɵɵpipeBind1","CommonModule","NgForOf","AsyncPipe","GalaxyFormFieldModule","MatInputModule","MatInput","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","MatAutocompleteModule","MatAutocomplete","MatOption","MatAutocompleteTrigger","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelementContainerStart","ɵɵtemplate","CrmActivityLoggerTaskComponent_ng_container_8_glxy_error_1_Template","ɵɵproperty","ctx_r0","formGroup","controls","taskName","hasError","CrmActivityLoggerTaskComponent_ng_container_19_glxy_error_1_Template","taskDueDate","CrmActivityLoggerTaskComponent_ng_container_23_glxy_error_1_Template","taskOwner","type_r2","value","nameKey","CrmActivityLoggerTaskComponent_ng_container_29_glxy_error_1_Template","taskType","CrmActivityLoggerTaskComponent","init_task_component","__esmMin","init_text_field","init_common","init_core","init_forms","init_input","init_ngx_translate_core","init_form_field","init_constants","init_translation_module","init_esm","init_datepicker","init_select","init_activity_interface","init_validators","init_coercion","init_rxjs_interop","init_shared_services","init_activity_owner_component","init_rich_text_editor","activity","setValues","description","getRawValue","patchValue","taskInstructions","emitEvent","constructor","fieldsService","mobile","user","input","activityOwner","descriptionChange","EventEmitter","associationsChange","DEFAULT_RICH_TEXT_PLUGINS","DEFAULT_RICH_TEXT_TOOLBAR","showErrors","ActivityOutcome","MeetingDuration","MeetingStatus","textRows","today","Date","FormBuilder","nonNullable","group","formatDate","setDate","getDate","STANDARD_DATE_FORMAT","ActivityTaskType","ToDo","taskPriority","validators","requiredFormGroupFieldsIf","taskTypes","ActivityTaskTypeTranslationKeys","valueChanges","pipe","takeUntilDestroyed","distinctUntilChanged","subscribe","emit","effect","owner","setDefaultUser","undefined","ownerId","replaceUserAssociation","ngAfterViewInit","defaultInput","nativeElement","focus","resetForm","reset","userId","updateValueAndValidity","getValues","formValues","fieldId","getFieldId","StandardIds","ActivityName","stringValue","ActivityTaskBody","ActivityTaskDueDate","dateValue","SystemFieldIds","ActivityOwnerID","ActivityTaskPriority","ActivityTaskStatus","DEFAULT_TASK_STATUS","getFieldValueFromCrmObject","taskBody","setValue","dirty","ownerAssociation","associations","find","a","crmObjectType","crmObjectId","validate","markAllAsTouched","ɵɵdirectiveInject","CrmFieldService","selectors","viewQuery","rf","ctx","coerceBooleanProperty","outputs","features","ɵɵInputTransformsFeature","ngContentSelectors","_c3","decls","vars","consts","template","ɵɵelement","CrmActivityLoggerTaskComponent_ng_container_8_Template","ɵɵprojection","CrmActivityLoggerTaskComponent_ng_container_19_Template","CrmActivityLoggerTaskComponent_ng_container_23_Template","CrmActivityLoggerTaskComponent_mat_option_28_Template","CrmActivityLoggerTaskComponent_ng_container_29_Template","ɵɵpropertyInterpolate","ɵɵclassProp","ɵɵtextInterpolate","CommonModule","NgForOf","NgIf","TranslateModule","TranslatePipe","TranslationModule","GalaxyFormFieldModule","FormFieldComponent","FormRowComponent","ErrorDirective","MatInputModule","MatInput","CdkTextareaAutosize","ReactiveFormsModule","ɵNgNoValidate","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormControlDirective","FormGroupDirective","FormControlName","TextFieldModule","MatDatepickerModule","MatDatepicker","MatSelectModule","MatSelect","MatOption","CrmFormFieldActivityOwnerComponent","GalaxyRichTextEditorModule","RichTextEditorComponent","styles","SMSConnectionID","VoiceConnectionID","knowledgeAppType","DEFAULT_CHAT_RECEPTIONIST_AVATAR_SVG_ICON","DEFAULT_AVATAR_SVG_ICON","AI_ASSISTANTS","VOICE_AI","ASSISTANT_GOALS","AI_MEETING_BOOKING","NEW_CUSTOM_AI_GOALS","WEBCHAT_WIDGET_CONNECTION_TYPE","ASSISTANT_ID_CHAT_RECEPTIONIST","ASSISTANT_ID_VOICE_RECEPTIONIST","ASSISTANT_ID_CONTENT_CREATOR","ASSISTANT_ID_REVIEW_MANAGER","ASSISTANT_ID_SEO_ANALYST","ASSISTANT_ID_SALES_COACH","disabled_card_colour","DEFAULT_CONNECTION_PREFIX","WEBCHAT_ICON","VOICE_ICON","init_ai_assistant_constants","__esmMin","MY_LISTING_CONNECTION_NAME","WEBCHAT_CONNECTION_NAME","ConnectionType","init_ai_assistant_interface","__esmMin","AI_ASSISTANT_CONFIG_TOKEN","ACCOUNT_GROUP_ID_TOKEN","MARKET_ID_TOKEN","PARTNER_ID_TOKEN","AI_DEFAULT_WORKFORCE_TOKEN","AI_DEFAULT_CONNECTIONS_TOKEN","CURRENT_USER_ID_TOKEN","init_tokens","__esmMin","init_core","InjectionToken","enumStringToValue$9","enumRef","value","enumStringToValue$7","enumStringToValue$5","enumStringToValue$4","enumStringToValue$3","enumStringToValue","environment","hostMap","HostService","FunctionParameterParameterLocation","GoalChannel","GoalType","AssistantType","VendorModel","ChatAnswerFunctionExecutionJobStatus","ChatChannel","ChatMessageRole","NamespaceAccountGroupNamespace","NamespaceAccountGroupsForGroupNamespace","NamespaceAccountGroupsForPartnerNamespace","NamespaceGlobalNamespace","Namespace","NamespacePartnerNamespace","NamespaceSystemNamespace","Function","FunctionHeader","FunctionKey","FunctionParameter","PromptModule","PromptModuleKey","PromptModuleVersion","Goal","GoalKey","KeyValuePair","Assistant","AssistantKey","Config","ConfigurableGoal","DeepgramConfig","ConfigInboxConfig","ModelConfig","OpenAIRealtimeConfig","OpenAIRealtimeConfigTurnDetection","ConfigVoiceConfig","Connection","ConnectionKey","ChatAnswerFunctionExecutionJob","ChatAnswerFunctionExecutionJobResult","ChatMessage","ChatUserInfo","PagedRequestOptions","PagedResponseMetadata","BuildDefaultAssistantRequest","BuildDefaultAssistantResponse","SetAssistantConnectionsRequestConnectionState","CreateGoalRequest","CreateGoalResponse","CreatePromptModuleRequest","CreatePromptModuleResponse","CreatePromptModuleVersionRequest","DeleteAssistantRequest","DeleteConnectionRequest","DeleteFunctionRequest","DeleteGoalRequest","DeletePromptModuleRequest","DeployPromptModuleRequest","ListConnectionsRequestFilters","ListPromptModuleRequestFilters","ListAllAssistantsAssociatedToConnectionRequestFilters","ListAssistantRequestFilters","ListFunctionRequestFilters","ListGoalsRequestFilters","GenerateChatAnswerRequest","GenerateChatAnswerResponse","GetAssistantRequest","GetAssistantResponse","GetChatAnswerFunctionExecutionJobRequest","GetChatAnswerFunctionExecutionJobResponse","GetConnectionRequest","GetConnectionResponse","GetDeployedPromptModuleVersionRequest","GetDeployedPromptModuleVersionResponse","GetFunctionRequest","GetFunctionResponse","GetGoalRequest","GetGoalResponse","GetHydratedDeployedPromptModuleVersionRequest","GetHydratedDeployedPromptModuleVersionResponse","GetMultiFunctionRequest","GetMultiFunctionResponse","GetMultiGoalRequest","GetMultiGoalResponse","GetMultiHydratedDeployedPromptModuleVersionRequest","GetMultiHydratedDeployedPromptModuleVersionResponse","GetPromptModuleRequest","GetPromptModuleResponse","GetPromptModuleVersionRequest","GetPromptModuleVersionResponse","GoalsDisabledForAccountGroupRequest","GoalsDisabledForAccountGroupResponse","ListAllAssistantsAssociatedToConnectionRequest","ListAllAssistantsAssociatedToConnectionResponse","ListAssistantRequest","ListAssistantResponse","ListConnectionsRequest","ListConnectionsResponse","ListFunctionRequest","ListFunctionResponse","ListGoalsRequest","ListGoalsResponse","ListPromptModuleRequest","ListPromptModuleResponse","ListPromptModuleVersionsRequest","ListPromptModuleVersionsResponse","CreatePromptModuleVersionRequestOptions","UpsertAssistantRequestOptions","GenerateChatAnswerRequestOptions","SetAssistantConnectionsRequest","UpdateGoalRequest","UpdatePromptModuleRequest","UpsertAssistantRequest","UpsertAssistantResponse","UpsertConnectionRequest","UpsertFunctionRequest","UpsertGoalRequest","AssistantApiService","ConnectionApiService","FunctionApiService","GoalApiService","PromptModuleApiService","init_vendasta_ai_assistants","__esmMin","init_core","init_http","init_operators","__ngFactoryType__","ɵɵdefineInjectable","_NamespaceAccountGroupNamespace","proto","m","kwargs","toReturn","_NamespaceAccountGroupsForGroupNamespace","_NamespaceAccountGroupsForPartnerNamespace","_NamespaceGlobalNamespace","_Namespace","_NamespacePartnerNamespace","_NamespaceSystemNamespace","_Function","_FunctionHeader","_FunctionKey","_FunctionParameter","_PromptModule","_PromptModuleKey","_PromptModuleVersion","_Goal","v","_GoalKey","_KeyValuePair","_Assistant","_AssistantKey","_Config","_ConfigurableGoal","_DeepgramConfig","_ConfigInboxConfig","_ModelConfig","_OpenAIRealtimeConfig","_OpenAIRealtimeConfigTurnDetection","_ConfigVoiceConfig","_Connection","_ConnectionKey","_ChatAnswerFunctionExecutionJob","_ChatAnswerFunctionExecutionJobResult","_ChatMessage","_ChatUserInfo","_PagedRequestOptions","_PagedResponseMetadata","_BuildDefaultAssistantRequest","_BuildDefaultAssistantResponse","_SetAssistantConnectionsRequestConnectionState","_CreateGoalRequest","_CreateGoalResponse","_CreatePromptModuleRequest","_CreatePromptModuleResponse","_CreatePromptModuleVersionRequest","_DeleteAssistantRequest","_DeleteConnectionRequest","_DeleteFunctionRequest","_DeleteGoalRequest","_DeletePromptModuleRequest","_DeployPromptModuleRequest","_ListConnectionsRequestFilters","_ListPromptModuleRequestFilters","_ListAllAssistantsAssociatedToConnectionRequestFilters","_ListAssistantRequestFilters","_ListFunctionRequestFilters","_ListGoalsRequestFilters","_GenerateChatAnswerRequest","_GenerateChatAnswerResponse","_GetAssistantRequest","_GetAssistantResponse","_GetChatAnswerFunctionExecutionJobRequest","_GetChatAnswerFunctionExecutionJobResponse","_GetConnectionRequest","_GetConnectionResponse","_GetDeployedPromptModuleVersionRequest","_GetDeployedPromptModuleVersionResponse","_GetFunctionRequest","_GetFunctionResponse","_GetGoalRequest","_GetGoalResponse","_GetHydratedDeployedPromptModuleVersionRequest","_GetHydratedDeployedPromptModuleVersionResponse","_GetMultiFunctionRequest","_GetMultiFunctionResponse","_GetMultiGoalRequest","_GetMultiGoalResponse","_GetMultiHydratedDeployedPromptModuleVersionRequest","_GetMultiHydratedDeployedPromptModuleVersionResponse","_GetPromptModuleRequest","_GetPromptModuleResponse","_GetPromptModuleVersionRequest","_GetPromptModuleVersionResponse","_GoalsDisabledForAccountGroupRequest","_GoalsDisabledForAccountGroupResponse","_ListAllAssistantsAssociatedToConnectionRequest","_ListAllAssistantsAssociatedToConnectionResponse","_ListAssistantRequest","_ListAssistantResponse","_ListConnectionsRequest","_ListConnectionsResponse","_ListFunctionRequest","_ListFunctionResponse","_ListGoalsRequest","_ListGoalsResponse","_ListPromptModuleRequest","_ListPromptModuleResponse","_ListPromptModuleVersionsRequest","_ListPromptModuleVersionsResponse","_CreatePromptModuleVersionRequestOptions","_UpsertAssistantRequestOptions","_GenerateChatAnswerRequestOptions","_SetAssistantConnectionsRequest","_UpdateGoalRequest","_UpdatePromptModuleRequest","_UpsertAssistantRequest","_UpsertAssistantResponse","_UpsertConnectionRequest","_UpsertFunctionRequest","_UpsertGoalRequest","inject","HttpClient","HttpHeaders","r","request","map","resp","__spreadProps","__spreadValues","convertAssistantTypeToDefaultID","type","AssistantType","ASSISTANT_TYPE_INBOX","ASSISTANT_ID_CHAT_RECEPTIONIST","ASSISTANT_TYPE_SOCIAL_MARKETING","ASSISTANT_ID_CONTENT_CREATOR","ASSISTANT_TYPE_VOICE_RECEPTIONIST","ASSISTANT_ID_VOICE_RECEPTIONIST","AssistantIdToAssistantType","id","ASSISTANT_TYPE_UNSPECIFIED","getVoiceFamilies","deepgramEnabled","results","family","voiceFamilies","provider","VendorModel","VENDOR_MODEL_OPEN_AI_REALTIME","push","VENDOR_MODEL_DEEPGRAM","familyFromVoice","voice","find","voices","v","value","voicesForFamily","f","name","previewUrlFromVoice","foundVoice","previewAudioUrl","getNamespace","accountGroupId","partnerId","Namespace","accountGroupNamespace","partnerNamespace","init_ai_assistant_utils","__esmMin","init_vendasta_ai_assistants","init_ai_assistant_constants","description_key","gender","region","ADDITIONAL_INSTRUCTIONS_GOAL_ID","ADDITIONAL_INSTRUCTIONS_PROMPT_MODULE_ID","AiAssistantService","init_ai_assistant_service","__esmMin","init_core","init_ai_assistant_constants","init_ai_assistant_interface","init_tokens","init_vendasta_ai_assistants","init_rxjs_interop","init_esm","init_ngx_translate_core","init_src","init_ai_assistant_utils","init_router","constructor","partnerId$","inject","PARTNER_ID_TOKEN","accountGroupId$","ACCOUNT_GROUP_ID_TOKEN","accountGroupId","toSignal","requireSync","marketId$","MARKET_ID_TOKEN","defaultWorkforce$","AI_DEFAULT_WORKFORCE_TOKEN","defaultConnections$","AI_DEFAULT_CONNECTIONS_TOKEN","aiConnectionApiService","ConnectionApiService","aiAssistantApiService","AssistantApiService","translateService","TranslateService","featureFlagService","FeatureFlagService","goalApiService","GoalApiService","promptModuleApiService","PromptModuleApiService","functionApiService","FunctionApiService","router","Router","$featureFlags","combineLatest","pipe","switchMap","partnerId","marketId","batchGetStatus","AI_ASSISTANTS","VOICE_AI","ASSISTANT_GOALS","AI_MEETING_BOOKING","NEW_CUSTOM_AI_GOALS","shareReplay","initialValue","$goalsDisabled","goalsDisabledForAccountGroup","map","resp","goalsDisabled","catchError","of","$isAiAssistantEnabled","computed","$isVoiceAiEnabled","$isAssistantGoalsEnabled","$isAIMeetingBookingEnabled","$isNewCustomAIGoalsEnabled","activeConnectionsForAssistant","assistantId","listConnectionsForAssistant","refCount","bufferSize","getAssistant","req","GetAssistantRequest","id","namespace","getNamespace","assistant","err","console","error","listAssistants","type","ListAssistantRequest","filters","ListAssistantRequestFilters","AssistantType","ASSISTANT_TYPE_UNSPECIFIED","Error","listAssistant","assistants","e","getDefaultAssistant","AssistantIdToAssistantType","buildDefaultAssistant","cause","listConnections","includeAssistantKeys","defaultAiConnections","connections","connection","isDefault","cta","buildConnectionCTAFromUrl","aiConnections","forEach","defaultAiConnection","find","c","name","MY_LISTING_CONNECTION_NAME","connectionType","push","assistantType","filter","aiConnection","supportedAssistantTypes","includes","isNotNullOrUndefined","listAllAssistantsAssociatedToConnection","connectionID","connectionKey","buildAiKnowledgeAppConfigurationUrl","buildAppId","buildAssistantConfigurationUrl","hydrateAssistantWithDefaultInfo","defaultAssistants","defaultInfo","defaultAssistant","aiAssistant","structuredClone","defaultName","translatedName","instant","toLowerCase","subtitleKey","configurationUrl","label","action","url","relativeRoute","showButton","accountGroupNamespace","upsertAdditionalInstructions","additionalInstructions","__async","firstValueFrom","get","buildSpecificID","promptModule","status","createVersion","content","options","shouldDeploy","create","description","goal","upsert","GoalType","GOAL_TYPE_CUSTOM","promptModules","PromptModuleKey","GoalKey","defaultID","getPromptModuleVersion","version","getVersion","promptModuleVersion","factory","ɵfac","ChatReceptionistAvatar","VoiceReceptionistAvatar","ContentWriterAvatar","ReviewManagerAvatar","SalesCoachAvatar","SEOAnalystAvatar","webchatIcon","smsIcon","voiceIcon","whatsappIcon","init_avatar_svg_string","__esmMin","SmsDetailsService","init_sms_details_service","__esmMin","init_vendasta_smsv2","init_esm","init_core","init_tokens","constructor","accountGroupId$","inject","ACCOUNT_GROUP_ID_TOKEN","partnerId$","PARTNER_ID_TOKEN","smsService","SmsService","configApiService","ConfigApiService","phoneNumber$","combineLatest","pipe","switchMap","accountGroupId","partnerId","ownerId","participantType","ParticipantType","PARTICIPANT_TYPE_UNKNOWN","PARTICIPANT_TYPE_ACCOUNT_GROUP","PARTICIPANT_TYPE_PARTNER","getAccountInfo","internalId","type","map","accountInfo","phoneNumber","shareReplay","refCount","bufferSize","isRoutingToVoiceAi$","getPhoneNumberConfig","ownerType","OwnerType","OWNER_TYPE_ACCOUNT_GROUP","OWNER_TYPE_PARTNER","response","phoneNumberConfig","voiceAi","enabled","factory","ɵfac","enumStringToValue$2","enumRef","value","CriteriaMatchType","TagMatchType","Salesperson","SalesTeam","AutoAssignCriteriaAccountOriginCriteria","AddContactToCampaignRequest","AutoAssignRuleAppKey","AutoAssignCriteria","AutoAssignRule","AutoAssignCriteriaCategoryCriteria","AutoAssignCriteriaConversionPointCriteria","CreateOrUpdateAutoAssignConfigRequest","GetAssignedSalespersonForPartnerRequest","GetAssignedSalespersonForPartnerResponse","GetAutoAssignConfigRequest","GetAutoAssignConfigResponse","GetMembersRequest","GetMembersResponse","GetMultiCampaignsRequest","GetMultiCampaignsResponse","GetMultiSalesTeamRequest","GetMultiSalesTeamResponse","GetMultiSalespersonRequest","GetMultiSalespersonResponse","GetSalespersonRequest","GetTeamsBySalespersonsRequest","GetTeamsBySalespersonsResponse","ListSalesTeamsRequestListSalesTeamsFilters","ListSalesTeamsRequest","ListSalesTeamsResponse","ListSalespersonsRequestListSalespersonsFilters","ListSalespersonsRequest","ListSalespersonsResponse","AutoAssignCriteriaLocationCriteria","LookupCampaignsRequest","LookupCampaignsResponse","LookupSalespersonsRequest","LookupSalespersonsResponse","PagedRequestOptions","PagedResponseMetadata","AddContactToCampaignRequestRecipient","SalesCampaign","ScheduleStep","SendResetPasswordEmailRequest","AddContactToCampaignRequestSender","AutoAssignCriteriaTagCriteria","GetTeamsBySalespersonsResponseTeamsForSalesperson","UpdateTeamNameRequest","environment","hostMap","HostService","CampaignApiService","SalesApiService","SalesTeamApiService","SalespersonService","SalesTeamService","CampaignSDKService","init_vendasta_sales","__esmMin","init_core","init_http","init_operators","_Salesperson","proto","m","kwargs","toReturn","_SalesTeam","_AutoAssignCriteriaAccountOriginCriteria","_AddContactToCampaignRequest","_AutoAssignRuleAppKey","_AutoAssignCriteria","_AutoAssignRule","_AutoAssignCriteriaCategoryCriteria","_AutoAssignCriteriaConversionPointCriteria","_CreateOrUpdateAutoAssignConfigRequest","_GetAssignedSalespersonForPartnerRequest","_GetAssignedSalespersonForPartnerResponse","_GetAutoAssignConfigRequest","_GetAutoAssignConfigResponse","_GetMembersRequest","_GetMembersResponse","_GetMultiCampaignsRequest","_GetMultiCampaignsResponse","_GetMultiSalesTeamRequest","_GetMultiSalesTeamResponse","_GetMultiSalespersonRequest","_GetMultiSalespersonResponse","_GetSalespersonRequest","_GetTeamsBySalespersonsRequest","_GetTeamsBySalespersonsResponse","_ListSalesTeamsRequestListSalesTeamsFilters","_ListSalesTeamsRequest","_ListSalesTeamsResponse","_ListSalespersonsRequestListSalespersonsFilters","_ListSalespersonsRequest","_ListSalespersonsResponse","_AutoAssignCriteriaLocationCriteria","_LookupCampaignsRequest","_LookupCampaignsResponse","_LookupSalespersonsRequest","_LookupSalespersonsResponse","_PagedRequestOptions","_PagedResponseMetadata","_AddContactToCampaignRequestRecipient","_SalesCampaign","_ScheduleStep","_SendResetPasswordEmailRequest","_AddContactToCampaignRequestSender","_AutoAssignCriteriaTagCriteria","_GetTeamsBySalespersonsResponseTeamsForSalesperson","_UpdateTeamNameRequest","__ngFactoryType__","ɵɵdefineInjectable","http","hostService","HttpHeaders","r","request","map","resp","__spreadProps","__spreadValues","ɵɵinject","HttpClient","_api","partnerId","salespersonId","userId","markets","options","params","filters","cursor","pageSize","marketId","salespersonIds","groupId","newTeamName","mapTo","salesTeams","mapping","groupIds","campaignApiService","accountGroupId","campaignIds","searchTerm","BookingConfigService","init_booking_config_service","__esmMin","init_core","init_esm","init_vendasta_meetings","init_vendasta_sales","init_tokens","constructor","currentUserId$","inject","CURRENT_USER_ID_TOKEN","partnerId$","PARTNER_ID_TOKEN","accountGroupId$","ACCOUNT_GROUP_ID_TOKEN","meetingService","HostService","salespersonService","SalespersonService","salesTeamService","SalesTeamService","partnerIdAndAccountGroupId$","combineLatest","pipe","distinctUntilChanged","a","b","salesPersonId$","switchMap","partnerId","userId","getSalespersonByUserId","catchError","of","undefined","map","salesperson","salespersonId","shareReplay","salesTeamIDs$","id","getSalesTeamsBySalesperson","teams","team","groupId","filter","personalCalendar$","accountGroupId","ensurePersonalCalendarExists","applicationContextProperties","newBusinessCenterApplicationContextProperties","business_id","newPartnerCenterApplicationContextProperties","partner_id","calendarId","getCalendar","groupCalendars$","_","ensureGroupCalendarsExist","externalIds","salesTeamIds","length","mergeMap","calendarIds","forkJoin","allCalendars$","personalCalendar","groupCalendars","calendarEvents$","calendars","calendar","getMeetingTypesForCalendars","metadata","getCalendarsWithTypes","events","calendarType","CalendarType","CALENDAR_TYPE_INVALID","calendarName","displayName","meetingTypes","mt","name","meetingTypeId","isPersonal","CALENDAR_TYPE_PERSONAL","sort","factory","ɵfac","accountGroupIdFactory","config","isObservable","accountGroupId$","of","marketIdFactory","marketId$","partnerIdFactory","partnerId$","aiDefaultWorkforceFactory","defaultAIWorkforce$","aiDefaultConnectionsFactory","defaultConnections$","currentUserIdFactory","currentUserId$","AiAssistantModule","init_ai_assistant_module","__esmMin","init_ai_assistant_service","init_tokens","init_esm","init_avatar_svg_string","init_sms_details_service","init_booking_config_service","init_ai_assistant_constants","forRoot","c","ngModule","providers","AiAssistantService","BookingConfigService","SmsDetailsService","provide","AI_ASSISTANT_CONFIG_TOKEN","useExisting","ACCOUNT_GROUP_ID_TOKEN","deps","useFactory","MARKET_ID_TOKEN","PARTNER_ID_TOKEN","AI_DEFAULT_WORKFORCE_TOKEN","AI_DEFAULT_CONNECTIONS_TOKEN","CURRENT_USER_ID_TOKEN","constructor","iconRegistry","sanitizer","addSvgIconLiteral","DEFAULT_CHAT_RECEPTIONIST_AVATAR_SVG_ICON","bypassSecurityTrustHtml","ChatReceptionistAvatar","VoiceReceptionistAvatar","ContentWriterAvatar","ReviewManagerAvatar","SalesCoachAvatar","SEOAnalystAvatar","webchatIcon","smsIcon","voiceIcon","whatsappIcon","ɵɵinject","MatIconRegistry","DomSanitizer","enumStringToValue$4","enumRef","value","enumStringToValue","EmbeddingVendorModel","KnowledgeSourceConfigType","TrainingProgress","WebsiteScrapeConfigCrawlMode","WebsiteScrapeConfigProgress","NamespaceAccountGroupNamespace","NamespaceAdminNamespace","App","AppKey","KnowledgeSourceConfigBusinessProfileConfig","KnowledgeSourceConfigCustomDataConfig","KnowledgeBase","KnowledgeBaseKey","KnowledgeSource","KnowledgeSourceConfig","KnowledgeSourceKey","KnowledgeSourceTraining","Namespace","NamespacePartnerNamespace","KnowledgeSourceConfigWebsiteScrapeConfigScrapedPage","KnowledgeSourceConfigWebsiteScrapeConfig","KnowledgeSourceConfigWebsiteScrapeConfigWebsiteScrapeConfigError","KnowledgeSourceConfigWebsiteScrapeConfigWebsiteScrapeOptions","FieldMask","PagedRequestOptions","PagedResponseMetadata","CreateKnowledgeBaseRequest","CreateKnowledgeBaseResponse","CreateKnowledgeSourceRequest","CreateKnowledgeSourceResponse","DeleteAppRequest","DeleteKnowledgeBaseRequest","DeleteKnowledgeSourceRequest","ListAllKnowledgeSourcesForAppRequestFilters","ListAppsRequestFilters","ListKnowledgeBasesRequestFilters","ListKnowledgeSourcesRequestFilters","GetAppRequest","GetAppResponse","GetKnowledgeBaseRequest","GetKnowledgeBaseResponse","GetKnowledgeSourceRequest","GetKnowledgeSourceResponse","ListAllAppsForKnowledgeSourceRequest","ListAllAppsForKnowledgeSourceResponse","ListAllKnowledgeSourcesForAppRequest","ListAllKnowledgeSourcesForAppResponse","ListAppsRequest","ListAppsResponse","ListKnowledgeBasesRequest","ListKnowledgeBasesResponse","ListKnowledgeSourcesRequest","ListKnowledgeSourcesResponse","RefreshBusinessProfileEmbeddingsRequest","ScrapeWebsiteRequest","ScrapeWebsiteResponse","SetAppsForKnowledgeSourceRequest","TuneAIModelRequest","UpdateKnowledgeBaseRequest","UpdateKnowledgeSourceRequest","UpsertAppRequest","UpsertKnowledgeForAppRequest","environment","hostMap","HostService","AutomatedEmbeddingsApiService","KnowledgeBaseApiService","KnowledgeBaseService","init_vendasta_embeddings","__esmMin","init_core","init_operators","init_http","_NamespaceAccountGroupNamespace","proto","m","kwargs","toReturn","_NamespaceAdminNamespace","_App","_AppKey","_KnowledgeSourceConfigBusinessProfileConfig","_KnowledgeSourceConfigCustomDataConfig","_KnowledgeBase","_KnowledgeBaseKey","_KnowledgeSource","_KnowledgeSourceConfig","_KnowledgeSourceKey","_KnowledgeSourceTraining","_Namespace","_NamespacePartnerNamespace","_KnowledgeSourceConfigWebsiteScrapeConfigScrapedPage","_KnowledgeSourceConfigWebsiteScrapeConfig","_KnowledgeSourceConfigWebsiteScrapeConfigWebsiteScrapeConfigError","_KnowledgeSourceConfigWebsiteScrapeConfigWebsiteScrapeOptions","_FieldMask","_PagedRequestOptions","_PagedResponseMetadata","_CreateKnowledgeBaseRequest","_CreateKnowledgeBaseResponse","_CreateKnowledgeSourceRequest","_CreateKnowledgeSourceResponse","_DeleteAppRequest","_DeleteKnowledgeBaseRequest","_DeleteKnowledgeSourceRequest","_ListAllKnowledgeSourcesForAppRequestFilters","v","_ListAppsRequestFilters","_ListKnowledgeBasesRequestFilters","_ListKnowledgeSourcesRequestFilters","_GetAppRequest","_GetAppResponse","_GetKnowledgeBaseRequest","_GetKnowledgeBaseResponse","_GetKnowledgeSourceRequest","_GetKnowledgeSourceResponse","_ListAllAppsForKnowledgeSourceRequest","_ListAllAppsForKnowledgeSourceResponse","_ListAllKnowledgeSourcesForAppRequest","_ListAllKnowledgeSourcesForAppResponse","_ListAppsRequest","_ListAppsResponse","_ListKnowledgeBasesRequest","_ListKnowledgeBasesResponse","_ListKnowledgeSourcesRequest","_ListKnowledgeSourcesResponse","_RefreshBusinessProfileEmbeddingsRequest","_ScrapeWebsiteRequest","_ScrapeWebsiteResponse","_SetAppsForKnowledgeSourceRequest","_TuneAIModelRequest","_UpdateKnowledgeBaseRequest","_UpdateKnowledgeSourceRequest","_UpsertAppRequest","_UpsertKnowledgeForAppRequest","__ngFactoryType__","ɵɵdefineInjectable","inject","HttpClient","HttpHeaders","r","request","map","resp","__spreadProps","__spreadValues","api","automatedServiceApi","req","ɵɵinject","AI_KNOWLEDGE_CONFIG_TOKEN","ACCOUNT_GROUP_ID_TOKEN","MARKET_ID_TOKEN","PARTNER_ID_TOKEN","MANAGE_KNOWLEDGE_URL_TOKEN","BUSINESS_PROFILE_URL_TOKEN","SHOW_BUSINESS_PROFILE_SOURCE_TOKEN","WEB_CHAT_WIDGET_EDIT_ROUTE_TOKEN","init_tokens","__esmMin","init_core","InjectionToken","WebChatWidgetAppType","AIAssistantAppType","init_ai_knowledge_util","__esmMin","import_dayjs","import_utc","AI_ASSISTANTS_FEATURE_FLAG","VENDASTA_PARTNER_ID","AiKnowledgeService","init_ai_knowledge_service","__esmMin","init_core","init_vendasta_embeddings","init_esm","init_rxjs_interop","init_tokens","init_ngx_translate_core","init_ai_knowledge_util","init_src","init_vendasta_ai_assistants","dayjs","extend","UTC","constructor","knowledgeBaseService","inject","KnowledgeBaseService","translateService","TranslateService","featureFlagService","FeatureFlagService","goalApiService","GoalApiService","partnerId","toSignal","PARTNER_ID_TOKEN","marketId","MARKET_ID_TOKEN","accountGroupId","ACCOUNT_GROUP_ID_TOKEN","manageKnowledgeUrl","MANAGE_KNOWLEDGE_URL_TOKEN","businessProfileUrl","BUSINESS_PROFILE_URL_TOKEN","webChatWidgetEditRoute","WEB_CHAT_WIDGET_EDIT_ROUTE_TOKEN","getApp","id","includeKnowledgeBaseKeys","__async","firstValueFrom","namespace","buildNamespaceInterface","listAllApps","cursor","hasMore","apps","response","listApps","filters","pagingOptions","pageSize","metadata","nextCursor","push","filterAIAssistantsInApps","aiAssistantsEnabled","batchGetStatus","goalsDisabled","goalsDisabledForAccountGroup","pipe","map","resp","catchError","of","shareReplay","filter","app","appType","WebChatWidgetAppType","AIAssistantAppType","getKnowledgeSource","listKnowledgeSources","configTypes","request","updateKnowledgeSourceNameAndConfig","source","knowledgeSource","fieldMask","paths","updateKnowledgeSource","createKnowledgeSource","name","config","createOrUpdateKnowledgeSource","deleteKnowledgeSource","listAllAppsForKnowledgeSource","knowledgeSourceId","results","listAllKnowledgeSourcesForApp","appId","knowledgeSources","upsertKnowledgeForApp","configurationUrl","knowledgeSourceKeys","err","throwError","setAppsForKnowledgeSource","appKeys","knowledgeSourceKey","accountGroupNamespace","partnerNamespace","adminNamespace","buildManageKnowledgeUrl","buildBusinessProfileUrl","isWebChatCreateRouteSet","length","buildWebChatWidgetEditRoute","widgetId","segment","key","value","Object","entries","valueArray","item","buildBusinessProfileKnowledgeSourceId","buildBusinessProfileKnowledgeSource","shouldSuggest","businessProfileConfig","isSuggested","buildBusinessWebsiteKnowledgeSourceId","buildBusinessWebsiteKnowledgeSource","url","websiteScrapeConfig","crawlMode","WebsiteScrapeConfigCrawlMode","WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SINGLE","scrapeProgress","WebsiteScrapeConfigProgress","WEBSITE_SCRAPE_CONFIG_PROGRESS_QUEUED","getKnowledgePreview","instant","customDataConfig","text","getLastScraped","lastScraped","utc","format","rescrapeWebsite","scrapeWebsite","getAppDisplayName","appTypeName","getOtherAIDisclaimerText","currentAppId","filteredApps","count","factory","ɵfac","accountGroupIdFactory","config","isObservable","accountGroupId$","of","marketIdFactory","marketId$","partnerIdFactory","partnerId$","manageKnowledgeUrlFactory","manageKnowledgeUrl$","businessProfileUrlFactory","businessProfileUrl$","showBusinessProfileSourceFactory","showBusinessProfileSource$","webChatWidgetEditRouteFactory","webChatWidgetEditRoute$","AiKnowledgeModule","init_ai_knowledge_module","__esmMin","init_ai_knowledge_service","init_tokens","init_esm","forRoot","c","ngModule","providers","AiKnowledgeService","provide","AI_KNOWLEDGE_CONFIG_TOKEN","useExisting","ACCOUNT_GROUP_ID_TOKEN","deps","useFactory","MARKET_ID_TOKEN","PARTNER_ID_TOKEN","MANAGE_KNOWLEDGE_URL_TOKEN","BUSINESS_PROFILE_URL_TOKEN","SHOW_BUSINESS_PROFILE_SOURCE_TOKEN","WEB_CHAT_WIDGET_EDIT_ROUTE_TOKEN","CdkStep_ng_template_0_Template","rf","ctx","ɵɵprojection","_c0","CdkStepHeader","CdkStepLabel","STEP_STATE","STEPPER_GLOBAL_OPTIONS","CdkStep","CdkStepper","CdkStepperNext","CdkStepperPrevious","CdkStepperModule","init_stepper","__esmMin","init_a11y","init_bidi","init_keycodes","init_core","init_forms","init_platform","init_esm","init_operators","inject","ElementRef","__ngFactoryType__","ɵɵdefineDirective","TemplateRef","InjectionToken","EventEmitter","value","stepperOptions","form","ɵɵdefineComponent","dirIndex","ɵɵcontentQuery","ControlContainer","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","booleanAttribute","ɵɵInputTransformsFeature","ɵɵNgOnChangesFeature","ɵɵprojectionDef","ɵɵtemplate","Directionality","ChangeDetectorRef","Subject","QueryList","index","step","_IdGenerator","startWith","takeUntil","steps","headers","a","b","FocusKeyManager","of","direction","i","position","state","isCurrentStep","newIndex","stepsArray","event","hasModifier","hasModifierKey","keyCode","manager","control","stepperElement","focusedElement","_getFocusedElementPierceShadowDom","numberAttribute","ɵɵlistener","ɵɵhostProperty","ɵɵdefineNgModule","ɵɵdefineInjector","BidiModule","MatStepHeader_Conditional_3_Template","rf","ctx","ɵɵelementContainer","ctx_r0","ɵɵnextContext","ɵɵproperty","MatStepHeader_Conditional_4_Case_0_Template","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","MatStepHeader_Conditional_4_Case_1_Conditional_0_Template","MatStepHeader_Conditional_4_Case_1_Conditional_1_Template","MatStepHeader_Conditional_4_Case_1_Template","ɵɵtemplate","ɵɵconditional","MatStepHeader_Conditional_4_Template","tmp_1_0","MatStepHeader_Conditional_6_Template","MatStepHeader_Conditional_7_Template","MatStepHeader_Conditional_8_Template","MatStepHeader_Conditional_9_Template","MatStep_ng_template_0_ng_template_1_Template","MatStep_ng_template_0_Template","ɵɵprojection","MatStepper_Conditional_0_Template","MatStepper_Case_1_For_3_Conditional_1_Template","ɵɵelement","MatStepper_Case_1_For_3_Template","step_r1","ɵ$index_8_r2","ɵ$count_8_r3","stepTemplate_r4","ɵɵreference","ɵɵpureFunction2","_c1","MatStepper_Case_1_For_6_Template","_r5","ɵɵgetCurrentView","ɵɵlistener","$event","ɵɵrestoreView","ctx_r5","ɵɵresetView","step_r7","ɵ$index_16_r8","ɵɵclassProp","_c3","ɵɵpureFunction1","_c2","ɵɵattribute","MatStepper_Case_1_Template","ɵɵrepeaterCreate","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","MatStepper_Case_2_For_1_Template","_r9","step_r10","ɵ$index_22_r11","ɵ$count_22_r12","MatStepper_Case_2_Template","MatStepper_ng_template_3_Template","_r13","step_r14","i_r15","MAT_STEPPER_INTL_PROVIDER_FACTORY","parentIntl","MatStepperIntl","_c0","MatStepLabel","MAT_STEPPER_INTL_PROVIDER","MatStepHeader","DEFAULT_HORIZONTAL_ANIMATION_DURATION","DEFAULT_VERTICAL_ANIMATION_DURATION","matStepperAnimations","MatStepperIcon","MatStepContent","MatStep","MatStepper","MatStepperNext","MatStepperPrevious","MatStepperModule","init_stepper","__esmMin","init_portal","init_core","init_icon","init_a11y","init_esm","init_common","init_private","init_operators","init_animations","init_platform","a0","a1","CdkStepLabel","ɵMatStepLabel_BaseFactory","__ngFactoryType__","ɵɵgetInheritedFactory","ɵɵdefineDirective","ɵɵInheritDefinitionFeature","Subject","ɵɵdefineInjectable","Optional","SkipSelf","CdkStepHeader","inject","FocusMonitor","_CdkPrivateStyleLoader","_StructuralStylesLoader","_VisuallyHiddenLoader","changeDetectorRef","ChangeDetectorRef","origin","options","state","ɵɵdefineComponent","ɵɵclassMap","tmp_8_0","ɵɵclassMapInterpolate1","MatRipple","NgTemplateOutlet","MatIcon","trigger","style","transition","group","animate","query","animateChild","TemplateRef","CdkStep","ErrorStateMatcher","ViewContainerRef","Subscription","switchMap","map","event","startWith","isSelected","TemplatePortal","control","form","originalErrorState","customErrorState","ɵMatStep_BaseFactory","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵProvidersFeature","ɵɵprojectionDef","CdkPortalOutlet","CdkStepper","QueryList","EventEmitter","value","Platform","nodeName","ElementRef","name","templateRef","takeUntil","index","step","ɵɵviewQuery","ɵɵtemplateRefExtractor","tmp_2_0","CdkStepperNext","ɵMatStepperNext_BaseFactory","ɵɵhostProperty","CdkStepperPrevious","ɵMatStepperPrevious_BaseFactory","ɵɵdefineNgModule","ɵɵdefineInjector","MatCommonModule","PortalModule","CdkStepperModule","MatIconModule","MatRippleModule","init_config_interface","__esmMin","en_devel_default","init_en_devel","__esmMin","AiKnowledgeI18nModule","init_ai_knowledge_i18n_module","__esmMin","init_ngx_translate_core","init_src","init_en_devel","TranslateModule","LexiconModule","forChild","componentName","baseTranslation","En","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","rescrape","ɵɵtemplate","LastScrapedComponent_Conditional_0_Conditional_2_span_6_Template","ɵɵpipeBind2","ɵɵpureFunction1","_c0","getLastScraped","ɵɵtextInterpolate1","ɵɵpureFunction2","_c1","getTrainedPagesCount","getScrapedPagesCount","ɵɵproperty","allowRescrapeWebsite","LastScrapedComponent_Conditional_0_Conditional_0_Template","LastScrapedComponent_Conditional_0_Conditional_1_Template","LastScrapedComponent_Conditional_0_Conditional_2_Template","ɵɵconditional","knowledgeSource","config","websiteScrapeConfig","scrapeProgress","WebsiteScrapeConfigProgress","WEBSITE_SCRAPE_CONFIG_PROGRESS_DONE","training","progress","TrainingProgress","TRAINING_DONE","lastScraped","LastScrapedComponent","init_last_scraped_component","__esmMin","init_common","init_core","init_ngx_translate_core","init_ai_knowledge_service","init_ai_knowledge_i18n_module","init_confirmation_modal","init_vendasta_embeddings","init_esm","init_rxjs_interop","constructor","rescrapeInitiated","EventEmitter","knowledgeService","inject","AiKnowledgeService","confirmationModal","OpenConfirmationModalService","translateService","TranslateService","destroyRef","DestroyRef","stopPolling$$","Subject","ngOnChanges","changes","knowledgeSourceInProgress","isSuggested","pollUntilWebsiteProgressIsDone","scrapedPages","filter","p","trainingEnabled","length","__async","openModal","title","instant","message","hasUnsavedChanges","confirmButtonText","cancelButtonText","subscribe","confirmed","rescrapeWebsite","emit","next","defer","from","getKnowledgeSource","id","namespace","pipe","map","ks","retry","delay","take","takeUntilDestroyed","takeUntil","selectors","inputs","outputs","features","ɵɵProvidersFeature","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","LastScrapedComponent_Conditional_0_Template","CommonModule","NgIf","TranslateModule","TranslatePipe","AiKnowledgeI18nModule","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵadvance","ɵɵtextInterpolate","ctx_r2","getKnowledgePreview","source_r2","ɵɵlistener","ɵɵrestoreView","_r4","ɵɵnextContext","$implicit","ɵɵresetView","clickRemove","ɵɵelementContainerStart","_r1","clickTitle","ɵɵtemplate","KnowledgeListComponent_ng_container_1_Conditional_5_Template","KnowledgeListComponent_ng_container_1_div_6_Template","$event","rescrapeInitiated","KnowledgeListComponent_ng_container_1_span_8_Template","KnowledgeListComponent_ng_container_1_div_9_Template","ɵɵelement","name","ɵɵconditional","isSuggested","config","websiteScrapeConfig","allowRescrapeWebsite","canRemoveSource","KnowledgeListComponent","init_knowledge_list_component","__esmMin","init_common","init_core","init_ngx_translate_core","init_icon","init_list","init_ai_knowledge_service","init_ai_knowledge_i18n_module","init_last_scraped_component","init_badge","constructor","titleClicked","EventEmitter","removeClicked","websiteRescrapeInitiated","knowledgeService","inject","AiKnowledgeService","knowledgeSources","_knowledgeSources","sources","sort","a","b","businessProfileConfig","accountGroupId","localeCompare","source","emit","allowRemoveBusinessProfile","__async","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","KnowledgeListComponent_ng_container_1_Template","CommonModule","NgForOf","NgIf","TranslateModule","AiKnowledgeI18nModule","MatIconModule","MatIcon","MatListModule","MatList","MatListItem","MatDivider","MatListItemLine","MatListItemTitle","MatListItemMeta","LastScrapedComponent","GalaxyBadgeModule","BadgeComponent","styles","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","app_r2","ɵɵnextContext","$implicit","ctx_r2","ɵɵresetView","clickRemove","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵtemplate","ApplicationListComponent_For_2_Conditional_7_Template","ApplicationListComponent_For_2_Conditional_8_Template","ɵɵadvance","ɵɵproperty","iconUrl","ɵɵtextInterpolate","getAppDisplayName","configurationUrl","ɵɵpipeBind1","ɵɵconditional","hideRemove","ɵ$index_3_r4","ɵ$count_3_r5","ApplicationListComponent","init_application_list_component","__esmMin","init_common","init_core","init_ngx_translate_core","init_icon","init_list","init_ai_knowledge_i18n_module","init_ai_knowledge_service","init_avatar","init_router","constructor","removeClicked","EventEmitter","knowledgeService","inject","AiKnowledgeService","apps","_apps","sort","a","b","name","localeCompare","app","emit","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ɵɵrepeaterCreate","ApplicationListComponent_For_2_Template","_forTrack0","ɵɵrepeater","CommonModule","TranslateModule","TranslatePipe","AiKnowledgeI18nModule","MatIconModule","MatIcon","MatListModule","MatList","MatListItem","MatListItemIcon","MatDivider","MatListItemTitle","MatListItemMeta","GalaxyAvatarModule","AvatarComponent","RouterModule","RouterLink","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵelement","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","createWidgetClick","ɵɵproperty","ɵɵtextInterpolate1","app_r4","name","appTypeName","$event","_r3","removeApp","chooseMatch","addApp","option","value","ɵɵtemplate","ApplicationSelectorComponent_Conditional_2_Conditional_1_Conditional_11_Template","ɵɵrepeaterCreate","ApplicationSelectorComponent_Conditional_2_Conditional_1_For_13_Template","ɵɵrepeaterTrackByIdentity","selectedApps","ɵɵpropertyInterpolate","selectedAppControl","auto_r5","ɵɵconditional","filteredApps","length","ɵɵrepeater","ApplicationSelectorComponent_Conditional_2_Conditional_0_Template","ApplicationSelectorComponent_Conditional_2_Conditional_1_Template","tmp_1_0","apps","isCreateWidgetRouteSet","ApplicationSelectorComponent","init_application_selector_component","__esmMin","init_core","init_forms","init_autocomplete","init_ai_knowledge_service","init_common","init_button","init_input","init_form_field","init_progress_spinner","init_chips","init_loading_spinner","init_ngx_translate_core","init_ai_knowledge_i18n_module","init_divider","init_list","init_application_list_component","init_rxjs_interop","init_empty_state","init_confirmation_modal","init_esm","constructor","createWidgetClicked","EventEmitter","hasUnsavedChanges","forceSubmit","knowledgeService","inject","AiKnowledgeService","confirmationModal","OpenConfirmationModalService","translateService","TranslateService","destroyRef","DestroyRef","signal","searchValue","computed","filter","app","toLowerCase","indexOf","some","selected","id","isLoading","isCreatingWidget","FormControl","ngOnInit","__async","loadApps","valueChanges","pipe","takeUntilDestroyed","subscribe","set","listAllApps","knowledgeSourceId","listAllAppsForKnowledgeSource","isWebChatCreateRouteSet","emit","update","index","splice","map","a","includes","push","clearInputFields","matAutocompleteTrigger","closePanel","event","preventDefault","sourceToAdd","appInput","nativeElement","setValue","setAppsForKnowledgeSource","confirmed","firstValueFrom","openModal","title","instant","message","confirmButtonText","cancelButtonText","selectors","viewQuery","rf","ctx","decls","vars","consts","template","ApplicationSelectorComponent_Conditional_0_Template","ApplicationSelectorComponent_Conditional_1_Template","ApplicationSelectorComponent_Conditional_2_Template","CommonModule","TranslateModule","TranslatePipe","AiKnowledgeI18nModule","MatButtonModule","MatButton","MatInputModule","MatInput","MatFormFieldModule","MatAutocompleteModule","MatAutocomplete","MatOption","MatAutocompleteTrigger","FormsModule","DefaultValueAccessor","NgControlStatus","ReactiveFormsModule","FormControlDirective","MatProgressSpinnerModule","MatChipsModule","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","GalaxyFormFieldModule","FormFieldComponent","MatDividerModule","MatListModule","ApplicationListComponent","GalaxyEmptyStateModule","EmptyStateComponent","EmptyStateTitleDirective","EmptyStateActionsDirective","styles","ɵɵtext","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵelementContainer","ɵɵtemplate","CustomDataComponent_Conditional_6_ng_template_4_ng_container_0_Template","ɵɵproperty","customForm_r4","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r5","ctx_r2","ɵɵnextContext","ɵɵresetView","createWebChatWidget","ɵɵelementEnd","knowledgeSource","id","CustomDataComponent_Conditional_6_Conditional_5_ng_template_1_Template","CustomDataComponent_Conditional_6_Conditional_5_ng_template_2_Template","$event","_r2","stepChanged","CustomDataComponent_Conditional_6_ng_template_3_Template","CustomDataComponent_Conditional_6_ng_template_4_Template","CustomDataComponent_Conditional_6_Conditional_5_Template","ɵɵadvance","ɵɵconditional","excludeAddToAIStep","CustomDataComponent_Conditional_7_ng_container_0_Template","ɵɵtextInterpolate1","ɵɵelementContainerStart","ɵɵelement","CustomDataComponent_ng_template_8_Conditional_6_Template","CustomDataComponent_ng_template_8_Conditional_15_Template","form","tmp_5_0","get","hasError","dirty","tmp_9_0","otherAIDisclaimer","_r6","back","WebChatWidgetAppType","CustomDataComponent","init_custom_data_component","__esmMin","init_common","init_core","init_forms","init_ngx_translate_core","init_form_field","init_loading_spinner","init_ai_knowledge_service","init_router","init_ai_knowledge_i18n_module","init_snackbar_service","init_input","init_stepper","init_icon","init_application_selector_component","init_esm","init_vendasta_conversation","init_confirmation_modal","init_dialog","init_button","constructor","destroyRef","dialogRef","data","snackbarService","inject","SnackbarService","knowledgeService","AiKnowledgeService","conversationApi","ConversationApiService","confirmationModal","OpenConfirmationModalService","translateService","TranslateService","router","Router","signal","isLoading","stepChange","EventEmitter","steps","selectedStep","knowledgeCreated","FormGroup","name","FormControl","Validators","required","content","ngOnInit","__async","disableClose","knowledgeSourceKey","getKnowledgeSource","knowledgeSourceId","namespace","then","_","set","getOtherAIDisclaimerText","currentAppId","push","config","customDataConfig","text","submit","isFormValid","openErrorSnack","value","ksId","createOrUpdateKnowledgeSource","emit","markAsPristine","onLastStep","close","buildNamespaceInterface","stepper","next","applicationSelector","setAppsForKnowledgeSource","controls","valid","forEach","c","markAsDirty","hasUnsavedChanges","event","selectedIndex","showBack","warnUnsavedChanged","previous","length","isCreatingWidget","resp","firstValueFrom","createWidget","accountGroupId","partnerId","pipe","catchError","err","openModal","title","instant","message","confirmButtonText","cancelButtonText","subscribe","confirmed","throwError","widgetId","widget","configurationUrl","buildAiKnowledgeAppConfigurationUrl","upsertKnowledgeForApp","buildAppId","catch","console","warn","navigate","buildWebChatWidgetEditRoute","loadApps","getTitle","func","type","getSubmitAction","ɵɵdirectiveInject","DestroyRef","MatDialogRef","MAT_DIALOG_DATA","selectors","viewQuery","rf","ctx","provide","STEPPER_GLOBAL_OPTIONS","useValue","displayDefaultIndicatorType","decls","vars","consts","template","CustomDataComponent_Conditional_6_Template","CustomDataComponent_Conditional_7_Template","CustomDataComponent_ng_template_8_Template","ɵɵtemplateRefExtractor","CustomDataComponent_Conditional_12_Template","CustomDataComponent_Conditional_14_Template","i0","_r1","CustomDataComponent_glxy_loading_spinner_22_Template","CommonModule","NgIf","NgTemplateOutlet","TranslateModule","TranslatePipe","AiKnowledgeI18nModule","MatInputModule","MatInput","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormGroupDirective","FormControlName","FormsModule","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","LabelHintDirective","ErrorDirective","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","RouterModule","GalaxySnackbarModule","MatStepperModule","MatStep","MatStepLabel","MatStepper","MatStepContent","MatIconModule","ApplicationSelectorComponent","MatButton","MatDialogActions","MatDialogContent","styles","AiLoadingSpinnerComponent","init_ai_loading_spinner_component","__esmMin","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtext","ɵɵtextInterpolate1","ctx_r0","getTrainingProgressCount","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtemplate","ScrapedPagesComponent_Conditional_0_Conditional_6_Template","ɵɵadvance","ɵɵpipeBind1","getTrainingProgressTitle","ɵɵconditional","trainingInfo","progress","TrainingProgress","TRAINING_IN_PROGRESS","TRAINING_DONE","delayProgressScreenClosure","ɵɵtextInterpolate","ɵɵpipeBind2","ɵɵpureFunction1","_c0","getSuccessfullyScrapedPagesCount","ɵɵlistener","ɵɵrestoreView","_r2","ɵɵnextContext","ɵɵresetView","setAllScrapedPages","ScrapedPagesComponent_Conditional_1_Conditional_0_Conditional_6_Conditional_11_Template","ScrapedPagesComponent_Conditional_1_Conditional_0_Conditional_6_Conditional_12_Template","ɵɵproperty","page_r3","url","ɵɵsanitizeUrl","ɵɵrepeaterCreate","ScrapedPagesComponent_Conditional_1_Conditional_0_Conditional_7_For_11_Template","ɵɵrepeaterTrackByIdentity","getErroredScrapedPagesCount","ɵɵrepeater","getErroredScrapedPages","pageControl_r5","websiteScrapeConfig","scrapedPages","ɵ$index_77_r6","title","ScrapedPagesComponent_Conditional_1_Conditional_0_For_10_Conditional_0_Template","errorMessage","ɵɵelementContainerStart","ScrapedPagesComponent_Conditional_1_Conditional_0_Conditional_6_Template","ScrapedPagesComponent_Conditional_1_Conditional_0_Conditional_7_Template","ScrapedPagesComponent_Conditional_1_Conditional_0_For_10_Template","form","scrapedPagesArray","controls","ScrapedPagesComponent_Conditional_1_Conditional_0_Template","ScrapedPagesComponent_Conditional_1_Conditional_1_Template","isLoading","STEP_OPTION","ScrapedPagesComponent","init_scraped_pages_component","__esmMin","init_core","init_common","init_ngx_translate_core","init_checkbox","init_forms","init_form_field","init_ai_knowledge_service","init_vendasta_embeddings","init_empty_state","init_loading_spinner","init_esm","init_ai_knowledge_i18n_module","init_rxjs_interop","init_expansion","init_icon","init_ai_loading_spinner_component","constructor","knowledgeService","inject","AiKnowledgeService","destroyRef","DestroyRef","signal","Math","ngOnChanges","changes","knowledgeSource","config","training","sort","a","b","trainingEnabled","localeCompare","FormGroup","FormArray","map","page","FormControl","valueChanges","pipe","takeUntilDestroyed","markAsDirty","subscribe","set","value","p","filter","length","hasUnsavedChanges","dirty","submit","__async","forEach","pageControl","index","source","updateKnowledgeSourceNameAndConfig","markAsPristine","id","Error","TRAINING_QUEUED","trainingEnabledPageCount","totalUnits","completedUnits","round","selectors","inputs","features","ɵɵProvidersFeature","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","ScrapedPagesComponent_Conditional_0_Template","ScrapedPagesComponent_Conditional_1_Template","CommonModule","TranslateModule","TranslatePipe","AiKnowledgeI18nModule","MatCheckboxModule","MatCheckbox","ReactiveFormsModule","NgControlStatus","NgControlStatusGroup","FormControlDirective","FormGroupDirective","FormArrayName","FormsModule","GalaxyFormFieldModule","FormFieldComponent","ExtendedDirective","GalaxyEmptyStateModule","EmptyStateComponent","EmptyStateHeroDirective","EmptyStateTitleDirective","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","MatExpansionModule","MatExpansionPanel","MatExpansionPanelHeader","MatExpansionPanelTitle","MatExpansionPanelDescription","MatIcon","AiLoadingSpinnerComponent","styles","ɵɵelementContainer","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtemplate","WebsiteScrapeComponent_Conditional_8_ng_container_9_Template","ɵɵadvance","ɵɵproperty","ctx_r1","websiteScrapeConfig","url","ɵɵsanitizeUrl","ɵɵtextInterpolate1","ɵɵpipeBind1","getCrawlModeTranslationKey","crawlMode","scrapedPagesSummary_r3","ɵɵtextInterpolate","scrapeProgressPagesFound","ɵɵelement","WebsiteScrapeComponent_Conditional_9_ng_template_4_Conditional_0_Conditional_6_Template","getScrapeProgressTitle","ɵɵconditional","scrapeProgress","scrapeProgressStates","WEBSITE_SCRAPE_CONFIG_PROGRESS_IN_PROGRESS","delayProgressScreenClosure","WEBSITE_SCRAPE_CONFIG_PROGRESS_DONE","ɵɵlistener","ɵɵrestoreView","_r5","ɵɵnextContext","ɵɵresetView","rescrape","editError","ɵɵpipeBind2","ɵɵpureFunction1","_c3","knowledgeSource","config","error","errorMessage","crawlModeOption_r6","_c4","getPageLimit","ɵɵelementContainerStart","WebsiteScrapeComponent_Conditional_9_ng_template_4_Conditional_1_Conditional_1_Conditional_6_Template","ɵɵrepeaterCreate","WebsiteScrapeComponent_Conditional_9_ng_template_4_Conditional_1_Conditional_1_For_22_Template","ɵɵrepeaterTrackByIdentity","WebsiteScrapeComponent_Conditional_9_ng_template_4_Conditional_1_Conditional_1_Conditional_23_Template","WebsiteScrapeComponent_Conditional_9_ng_template_4_Conditional_1_Conditional_1_Conditional_24_Template","WebsiteScrapeComponent_Conditional_9_ng_template_4_Conditional_1_Conditional_1_ng_container_25_Template","form","tmp_10_0","get","errors","dirty","ɵɵrepeater","getCrawlModeOptions","tmp_17_0","value","crawlModes","WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_RECURSIVE","WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SITEMAP","WebsiteScrapeComponent_Conditional_9_ng_template_4_Conditional_1_Conditional_0_Template","WebsiteScrapeComponent_Conditional_9_ng_template_4_Conditional_1_Conditional_1_Template","shouldShowError","WebsiteScrapeComponent_Conditional_9_ng_template_4_Conditional_0_Template","WebsiteScrapeComponent_Conditional_9_ng_template_4_Conditional_1_Template","_r7","createWebChatWidget","id","WebsiteScrapeComponent_Conditional_9_Conditional_8_ng_template_1_Template","WebsiteScrapeComponent_Conditional_9_Conditional_8_ng_template_2_Template","$event","_r4","stepChanged","WebsiteScrapeComponent_Conditional_9_ng_template_3_Template","WebsiteScrapeComponent_Conditional_9_ng_template_4_Template","WebsiteScrapeComponent_Conditional_9_ng_template_6_Template","WebsiteScrapeComponent_Conditional_9_ng_template_7_Template","WebsiteScrapeComponent_Conditional_9_Conditional_8_Template","excludeAddToAIStep","WebsiteScrapeComponent_ng_template_10_Conditional_0_Conditional_1_Template","WebsiteScrapeComponent_ng_template_10_Conditional_0_Conditional_2_Template","isSuggested","WebsiteScrapeComponent_ng_template_10_Conditional_0_Template","otherAIDisclaimer","_r8","back","_r9","submit","getSubmitAction","WebChatWidgetAppType","WebsiteScrapeComponent","init_website_scrape_component","__esmMin","init_common","init_core","init_forms","init_src","init_ngx_translate_core","init_form_field","init_vendasta_embeddings","init_ai_knowledge_service","init_icon","init_ai_knowledge_i18n_module","init_select","init_snackbar_service","init_input","init_esm","init_rxjs_interop","init_loading_spinner","init_stepper","init_application_selector_component","init_scraped_pages_component","init_empty_state","init_button","init_confirmation_modal","init_vendasta_conversation","init_router","init_dialog","init_last_scraped_component","init_ai_loading_spinner_component","constructor","destroyRef","dialogRef","data","snackbarService","inject","SnackbarService","environmentService","EnvironmentService","knowledgeService","AiKnowledgeService","translateService","TranslateService","confirmationModal","OpenConfirmationModalService","conversationApi","ConversationApiService","router","Router","cdr","ChangeDetectorRef","isLoading","signal","WebsiteScrapeConfigCrawlMode","WebsiteScrapeConfigProgress","enableEditingWithError","steps","STEP_OPTION","selectedStep","stepChange","EventEmitter","disableSubmit","knowledgeCreated","FormGroup","name","FormControl","urlValidator","Validators","required","WEBSITE_SCRAPE_CONFIG_CRAWL_MODE_SINGLE","ngOnInit","__async","disableClose","knowledgeSourceKey","getKnowledgeSource","knowledgeSourceId","namespace","then","_","set","getOtherAIDisclaimerText","currentAppId","buildBusinessWebsiteKnowledgeSourceId","buildBusinessWebsiteKnowledgeSource","detectChanges","configureStepper","push","checkProgress","pollUntilScrapingFinishes","training","progress","TrainingProgress","TRAINING_DONE","pollUntilTrainingFinishes","defer","from","pipe","takeUntilDestroyed","map","ks","setTotalPagesFound","inProgressScrapedPages","setTimeout","stepper","next","retry","delay","take","subscribe","length","count","page","doneScraping","scrapedPages","scrapedPagesComponent","onLastStep","event","selectedIndex","emit","previouslySelectedIndex","previouslySelectedStep","completed","WEBSITE_SCRAPE_CONFIG_PROGRESS_QUEUED","getEnvironment","Environment","LOCAL","DEMO","PROD","hasUnsavedChanges","close","isFormValid","openErrorSnack","instant","createOrUpdateKnowledgeSource","markAsPristine","refreshKnowledgeSource","applicationSelector","setAppsForKnowledgeSource","buildNamespaceInterface","controls","valid","forEach","c","markAsDirty","rescrapeWebsite","goToStep","ngAfterViewInit","stepOption","stepIndex","indexOf","step","idx","select","linear","openModal","type","title","message","confirmButtonText","cancelButtonText","confirmed","isCreatingWidget","resp","firstValueFrom","createWidget","accountGroupId","partnerId","catchError","err","throwError","widgetId","widget","configurationUrl","buildAiKnowledgeAppConfigurationUrl","upsertKnowledgeForApp","buildAppId","catch","console","warn","navigate","buildWebChatWidgetEditRoute","loadApps","getTitle","showBack","warnUnsavedChanged","previous","func","rescrapeInitiated","ɵɵdirectiveInject","DestroyRef","MatDialogRef","MAT_DIALOG_DATA","selectors","viewQuery","rf","ctx","provide","STEPPER_GLOBAL_OPTIONS","useValue","displayDefaultIndicatorType","decls","vars","consts","template","i0","_r1","WebsiteScrapeComponent_Conditional_8_Template","WebsiteScrapeComponent_Conditional_9_Template","WebsiteScrapeComponent_ng_template_10_Template","ɵɵtemplateRefExtractor","WebsiteScrapeComponent_Conditional_14_Template","WebsiteScrapeComponent_Conditional_16_Template","WebsiteScrapeComponent_Conditional_21_Template","WebsiteScrapeComponent_glxy_loading_spinner_22_Template","CommonModule","NgIf","NgTemplateOutlet","TranslateModule","TranslatePipe","AiKnowledgeI18nModule","MatIconModule","MatIcon","MatSelectModule","MatSelect","MatOption","MatOptionModule","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","RequiredValidator","FormGroupDirective","FormControlName","FormsModule","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","HintDirective","ErrorDirective","GalaxySnackbarModule","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","MatInputModule","MatInput","MatStepperModule","MatStep","MatStepLabel","MatStepper","MatStepContent","ScrapedPagesComponent","ApplicationSelectorComponent","GalaxyEmptyStateModule","EmptyStateComponent","EmptyStateHeroDirective","EmptyStateTitleDirective","EmptyStateActionsDirective","MatButtonModule","MatButton","LastScrapedComponent","MatDialogActions","MatDialogContent","AiLoadingSpinnerComponent","styles","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","choice_r2","ɵɵrestoreView","_r1","$implicit","ctx_r2","ɵɵnextContext","ɵɵresetView","selectComponent","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","title","ɵɵtextInterpolate1","description","AddKnowledgeComponent","init_add_knowledge_component","__esmMin","init_common","init_core","init_ngx_translate_core","init_ai_knowledge_service","init_ai_knowledge_i18n_module","init_card","init_custom_data_component","init_website_scrape_component","init_loading_spinner","init_button","init_dialog","init_layout","constructor","dialogRef","destroyRef","data","DIALOG_WIDTH","bpObserver","inject","BreakpointObserver","dialog","MatDialog","choices","component","CustomDataComponent","WebsiteScrapeComponent","componentSelected","EventEmitter","ngOnInit","disableClose","choice","openDialog","emit","knowledgeCreated","close","type","conf","width","excludeAddToAIStep","isMatched","Breakpoints","XSmall","maxWidth","maxHeight","open","componentInstance","ɵɵdirectiveInject","MatDialogRef","DestroyRef","MAT_DIALOG_DATA","selectors","features","ɵɵProvidersFeature","AiKnowledgeService","decls","vars","consts","template","rf","ctx","ɵɵtemplate","AddKnowledgeComponent_ng_container_7_Template","ɵɵproperty","CommonModule","NgForOf","TranslateModule","TranslatePipe","AiKnowledgeI18nModule","MatCardModule","MatCard","MatCardContent","GalaxyLoadingSpinnerModule","MatButton","MatDialogActions","MatDialogContent","styles","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","createWebChatWidget","ɵɵelementEnd","ɵɵproperty","knowledgeSource","id","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate","otherAIDisclaimer","customButton","link","ɵɵsanitizeUrl","ɵɵtextInterpolate1","ɵɵpipeBind1","text","_r3","close","_r4","submit","ɵɵelement","BusinessProfileComponent","init_business_profile_component","__esmMin","init_common","init_core","init_forms","init_button","init_ngx_translate_core","init_dialog","init_form_field","init_loading_spinner","init_ai_knowledge_service","init_router","init_icon","init_ai_knowledge_i18n_module","init_tabs","init_select","init_expansion","init_checkbox","init_snackbar_service","init_input","init_stepper","init_application_selector_component","init_tooltip","init_rxjs_interop","init_tokens","init_ai_knowledge_util","init_esm","init_vendasta_conversation","init_confirmation_modal","constructor","destroyRef","dialogRef","data","accountGroupId","toSignal","inject","ACCOUNT_GROUP_ID_TOKEN","knowledgeService","AiKnowledgeService","conversationApi","ConversationApiService","confirmationModal","OpenConfirmationModalService","translateService","TranslateService","router","Router","cdr","ChangeDetectorRef","isLoading","signal","knowledgeCreated","EventEmitter","stepChange","buildBusinessProfileUrl","ngOnInit","__async","disableClose","knowledgeSourceKey","getKnowledgeSource","knowledgeSourceId","namespace","then","_","set","getOtherAIDisclaimerText","currentAppId","buildBusinessProfileKnowledgeSource","isSuggested","detectChanges","createKnowledgeSource","businessProfileConfig","applicationSelector","setAppsForKnowledgeSource","hasUnsavedChanges","shouldSubmit","forceSubmit","isCreatingWidget","resp","firstValueFrom","createWidget","name","partnerId","pipe","catchError","err","openModal","title","instant","message","confirmButtonText","cancelButtonText","subscribe","confirmed","throwError","widgetId","widget","configurationUrl","buildAiKnowledgeAppConfigurationUrl","upsertKnowledgeForApp","buildAppId","WebChatWidgetAppType","catch","console","warn","navigate","buildWebChatWidgetEditRoute","loadApps","getTitle","warnUnsavedChanged","func","type","ɵɵdirectiveInject","DestroyRef","MatDialogRef","MAT_DIALOG_DATA","selectors","viewQuery","rf","ctx","decls","vars","consts","template","ɵɵtemplate","BusinessProfileComponent_Conditional_12_Template","BusinessProfileComponent_Conditional_15_Template","BusinessProfileComponent_Conditional_17_Template","BusinessProfileComponent_Conditional_19_Template","BusinessProfileComponent_Conditional_20_Template","BusinessProfileComponent_glxy_loading_spinner_21_Template","ɵɵconditional","excludeAddToAIStep","CommonModule","NgIf","TranslateModule","TranslatePipe","AiKnowledgeI18nModule","MatButtonModule","MatAnchor","MatButton","MatDialogModule","MatDialogActions","MatDialogContent","MatIconModule","MatIcon","MatTabsModule","MatSelectModule","MatOptionModule","MatExpansionModule","MatCheckboxModule","ReactiveFormsModule","FormsModule","GalaxyFormFieldModule","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","RouterModule","GalaxySnackbarModule","MatInputModule","MatStepperModule","GalaxyTooltipModule","GalaxyTooltipDirective","ApplicationSelectorComponent","styles","ɵɵelement","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵtemplate","ApplicationKnowledgeComponent_ng_container_0_mat_option_14_glxy_badge_3_Template","source_r3","ɵɵtextInterpolate1","name","isSuggested","ctx_r1","getKnowledgePreview","ɵɵelementContainerStart","ɵɵlistener","$event","ɵɵrestoreView","_r1","ɵɵnextContext","ɵɵresetView","viewSource","removeSource","chooseMatch","addSource","option","value","ApplicationKnowledgeComponent_ng_container_0_mat_divider_13_Template","ApplicationKnowledgeComponent_ng_container_0_mat_option_14_Template","selectedSources","ɵɵpropertyInterpolate","selectedSourceControl","auto_r4","filteredSources","length","WEBSITE_KNOWLEDGE","ApplicationKnowledgeComponent","init_application_knowledge_component","__esmMin","init_core","init_forms","init_autocomplete","init_vendasta_embeddings","init_ai_knowledge_service","init_common","init_icon","init_button","init_input","init_form_field","init_progress_spinner","init_chips","init_loading_spinner","init_rxjs_interop","init_ngx_translate_core","init_router","init_knowledge_list_component","init_dialog","init_tokens","init_ai_knowledge_i18n_module","init_divider","init_layout","init_esm","init_badge","init_src","init_checkbox","init_add_knowledge_component","init_website_scrape_component","init_custom_data_component","init_business_profile_component","constructor","destroyRef","selectedSourcesChange","EventEmitter","DIALOG_WIDTH","dialog","inject","MatDialog","bpObserver","BreakpointObserver","accountGroupID","toSignal","ACCOUNT_GROUP_ID_TOKEN","partnerId","PARTNER_ID_TOKEN","featureFlagService","FeatureFlagService","isWebsiteKnowledgeFeatureFlagEnabled","knowledgeService","AiKnowledgeService","showBusinessProfileSource","SHOW_BUSINESS_PROFILE_SOURCE_TOKEN","suggestedWebsiteURL","hasWebsiteKS","sources","signal","searchValue","computed","filter","source","toLowerCase","indexOf","some","selected","id","isLoading","FormControl","accountGroupService","AccountGroupService","effect","emit","ngOnInit","__async","checkWebsiteKnowledgeFeatureFlag","checkWebsiteKnowledgeSource","refreshSources","initialSources","appId","listAllKnowledgeSourcesForApp","businessProfileSource","buildBusinessProfileKnowledgeSource","push","businessWebsiteSource","buildBusinessWebsiteKnowledgeSource","set","valueChanges","pipe","takeUntilDestroyed","subscribe","firstValueFrom","batchGetStatus","accountGroup","get","ProjectionFilter","napData","website","existingWebsiteKnowledgeSources","listKnowledgeSources","KnowledgeSourceConfigType","KNOWLEDGE_SOURCE_CONFIG_TYPE_WEBSITE_SCRAPE","pageSize","knowledgeSources","KNOWLEDGE_SOURCE_CONFIG_TYPE_CUSTOM_DATA","unshift","clearInputFields","forceRefreshSources","conf","width","data","knowledgeSourceKey","knowledgeSourceId","namespace","excludeAddToAIStep","config","currentAppId","isMatched","Breakpoints","XSmall","maxWidth","maxHeight","editor","websiteScrapeConfig","open","WebsiteScrapeComponent","customDataConfig","CustomDataComponent","BusinessProfileComponent","afterClosed","updatedKnowledge","getKnowledgeSource","update","current","index","findIndex","item","splice","addKnowledge","map","g","includes","matAutocompleteTrigger","closePanel","event","preventDefault","sourceToAdd","knowledgeSourceInput","nativeElement","setValue","AddKnowledgeComponent","componentInstance","componentSelected","subscribeToKnowledgeCreated","knowledgeCreated","take","switchMap","sourceId","buildNamespaceInterface","ks","ɵɵdirectiveInject","DestroyRef","selectors","viewQuery","rf","ctx","decls","vars","consts","template","ApplicationKnowledgeComponent_ng_container_0_Template","ApplicationKnowledgeComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","loading_r5","CommonModule","NgForOf","NgIf","RouterModule","TranslateModule","TranslatePipe","AiKnowledgeI18nModule","MatIconModule","MatButtonModule","MatInputModule","MatInput","MatFormFieldModule","MatAutocompleteModule","MatAutocomplete","MatOption","MatAutocompleteTrigger","FormsModule","DefaultValueAccessor","NgControlStatus","ReactiveFormsModule","FormControlDirective","MatProgressSpinnerModule","MatChipsModule","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","GalaxyFormFieldModule","FormFieldComponent","KnowledgeListComponent","MatDialogModule","MatDividerModule","MatDivider","GalaxyBadgeModule","BadgeComponent","MatCheckboxModule","styles","ɵɵelement","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵproperty","ctx_r0","associatedApps","ɵɵtextInterpolate1","ɵɵtemplate","DeleteCustomKnowledgeComponent_Conditional_5_Conditional_0_Template","DeleteCustomKnowledgeComponent_Conditional_5_Conditional_1_Template","ɵɵconditional","length","DeleteCustomKnowledgeComponent","init_delete_custom_knowledge_component","__esmMin","init_common","init_core","init_button","init_ngx_translate_core","init_dialog","init_ai_knowledge_service","init_ai_knowledge_i18n_module","init_application_list_component","init_loading_spinner","init_snackbar_service","constructor","dialogRef","data","knowledgeService","inject","AiKnowledgeService","snackbarService","SnackbarService","isLoading","signal","ngOnInit","__async","set","listAllAppsForKnowledgeSource","knowledgeSourceId","cancel","close","delete","deleteKnowledgeSource","openSuccessSnack","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","selectors","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","DeleteCustomKnowledgeComponent_Conditional_4_Template","DeleteCustomKnowledgeComponent_Conditional_5_Template","ɵɵlistener","CommonModule","TranslateModule","TranslatePipe","AiKnowledgeI18nModule","MatButtonModule","MatButton","MatDialogModule","MatDialogTitle","MatDialogActions","MatDialogContent","ApplicationListComponent","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","GalaxySnackbarModule","encapsulation","ɵɵelement","ɵɵproperty","ɵɵpipeBind1","ctx_r0","previousPageTitle","previousPageUrl","KnowledgeSourceManagementComponent","init_knowledge_source_management_component","__esmMin","init_common","init_core","init_button","init_ngx_translate_core","init_vendasta_embeddings","init_ai_knowledge_service","init_icon","init_router","init_list","init_dialog","init_esm","init_delete_custom_knowledge_component","init_card","init_page","init_knowledge_list_component","init_rxjs_interop","init_tokens","init_ai_knowledge_i18n_module","init_layout","init_confirmation_modal","init_scraped_pages_component","init_add_knowledge_component","init_website_scrape_component","init_custom_data_component","init_business_profile_component","constructor","DIALOG_WIDTH","SCRAPED_PAGES_STEP_OPTION","STEP_OPTION","dialog","inject","MatDialog","bpObserver","BreakpointObserver","activeRoute","ActivatedRoute","knowledgeSources","signal","showBusinessProfileSource","toSignal","SHOW_BUSINESS_PROFILE_SOURCE_TOKEN","knowledgeService","AiKnowledgeService","confirmationModal","OpenConfirmationModalService","router","Router","isLoading","ngOnInit","__async","refreshSources","editSourceParam","snapshot","queryParamMap","get","sourceId","option","sourceIdAndOptionFromEditSourceParam","source","find","s","id","editKnowledgeSource","addNewKnowledgeSource","colonIndex","indexOf","substring","set","listKnowledgeSources","KnowledgeSourceConfigType","KNOWLEDGE_SOURCE_CONFIG_TYPE_CUSTOM_DATA","KNOWLEDGE_SOURCE_CONFIG_TYPE_WEBSITE_SCRAPE","pageSize","businessProfileSource","buildBusinessProfileKnowledgeSource","unshift","conf","width","isMatched","Breakpoints","XSmall","maxWidth","maxHeight","editor","open","AddKnowledgeComponent","componentInstance","componentSelected","pipe","takeUntilDestroyed","destroyRef","take","subscribe","event","subscribeToKnowledgeCreated","knowledgeCreated","firstValueFrom","afterClosed","switchMap","data","knowledgeSourceKey","knowledgeSourceId","namespace","config","stepOption","websiteScrapeConfig","WebsiteScrapeComponent","customDataConfig","CustomDataComponent","BusinessProfileComponent","setEditSourceQueryParam","stepChange","map","deleteKnowledgeSource","DeleteCustomKnowledgeComponent","editSource","queryParams","navigate","relativeTo","queryParamsHandling","selectors","inputs","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtemplate","KnowledgeSourceManagementComponent_glxy_page_nav_button_3_Template","ɵɵelementEnd","ɵɵtext","ɵɵlistener","$event","ɵɵadvance","ɵɵtextInterpolate","ɵɵtextInterpolate1","CommonModule","NgIf","TranslateModule","TranslatePipe","AiKnowledgeI18nModule","GalaxyPageModule","PageComponent","PageToolbarComponent","PageTitleDirective","PageNavDirective","PageNavButtonComponent","PageWrapperDirective","MatButtonModule","MatButton","MatIconModule","RouterModule","MatListModule","MatCardModule","MatCard","MatCardContent","MatCardHeader","MatCardTitle","MatDialogModule","KnowledgeListComponent","styles","init_lib","__esmMin","init_ai_knowledge_module","init_ai_knowledge_service","init_config_interface","init_application_knowledge_component","init_knowledge_source_management_component","init_tokens","init_src","__esmMin","init_lib","ProgressBarComponent","init_progress_bar_component","__esmMin","init_component_with_sizes","ComponentWithSizesComponent","constructor","progress","color","isLoading","padding","size","__ngFactoryType__","selectors","hostVars","hostBindings","rf","ctx","ɵɵstyleProp","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵproperty","ɵɵpureFunction5","_c0","ɵɵadvance","MODULE_IMPORTS","GalaxyProgressBarModule","init_progress_bar_module","__esmMin","init_common","CommonModule","init_public_api","__esmMin","init_progress_bar_module","init_progress_bar","__esmMin","init_public_api","init_core","__esmMin","init_ai_assistant_interface","init_ai_assistant_service","init_ai_assistant_constants","init_ai_assistant_module","en_devel_default","init_en_devel","__esmMin","AiAssistantI18nModule","init_ai_assistant_i18n_module","__esmMin","init_ngx_translate_core","init_src","init_en_devel","TranslateModule","LexiconModule","forChild","componentName","baseTranslation","En","enumStringToValue$1","enumRef","value","CallType","Participant","VendorModel","NamespaceAccountGroupNamespace","Namespace","NamespacePartnerNamespace","NamespaceSystemNamespace","CallRecord","Metadata","OpenAIRealtimeConfig","TranscriptMessage","OpenAIRealtimeConfigTurnDetection","VoiceConfig","GetCallRecordRequest","GetCallRecordResponse","GetCallUsageRequest","GetCallUsageResponse","environment","hostMap","HostService","VoiceApiService","init_vendasta_voice","__esmMin","init_core","init_http","init_operators","_NamespaceAccountGroupNamespace","proto","m","kwargs","toReturn","_Namespace","_NamespacePartnerNamespace","_NamespaceSystemNamespace","_CallRecord","_Metadata","_OpenAIRealtimeConfig","_TranscriptMessage","_OpenAIRealtimeConfigTurnDetection","_VoiceConfig","_GetCallRecordRequest","_GetCallRecordResponse","_GetCallUsageRequest","_GetCallUsageResponse","__ngFactoryType__","ɵɵdefineInjectable","inject","HttpClient","HttpHeaders","r","request","map","resp","ɵɵelement","ɵɵproperty","ctx_r1","aiAssistant","assistant","avatarUrl","tmp_3_0","decoration","defaultAvatarIcon","undefined","tmp_4_0","avatarIconUrl","isDisabled","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","subtitleKey","aiConnection_r3","connection","iconUrl","ɵɵsanitizeUrl","connectionTypeName","tooltip","ɵɵclassProp","isGreyscale","connectionType","ɵɵtemplate","AiAssistantCardComponent_Conditional_16_For_2_Conditional_0_Conditional_0_Template","AiAssistantCardComponent_Conditional_16_For_2_Conditional_0_Conditional_1_Template","ɵɵconditional","AiAssistantCardComponent_Conditional_16_For_2_Conditional_0_Template","ɵɵrepeaterCreate","AiAssistantCardComponent_Conditional_16_For_2_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","aiConnections_r4","ɵɵlistener","ɵɵrestoreView","_r5","ɵɵnextContext","ɵɵresetView","ctaClicked","emit","ɵɵtextInterpolate1","cta","label","ɵɵpureFunction1","_c1","aiAssistantConfigUrl","_c2","currentUrl","AiAssistantCardComponent","init_ai_assistant_card_component","__esmMin","init_common","init_core","init_rxjs_interop","init_ngx_translate_core","init_ai_icon","init_avatar","init_esm","init_ai_assistant_i18n_module","init_button","init_router","init_ai_assistant_service","init_ai_assistant_constants","init_badge","init_sms_details_service","init_tokens","init_vendasta_voice","init_tooltip","init_icon","constructor","class","translationService","inject","TranslateService","aiIconService","GalaxyAiIconService","destroyRef","DestroyRef","aiAssistantService","AiAssistantService","voiceApiService","VoiceApiService","accountGroupId","toSignal","ACCOUNT_GROUP_ID_TOKEN","router","Router","input","required","showCTAButton","isComingSoon","output","url","DEFAULT_AVATAR_SVG_ICON","computed","buildAssistantConfigurationUrl","id","gradientBorderMask","viewChild","gradientColor","signal","gradient","isVoiceReceptionistCard","ASSISTANT_ID_VOICE_RECEPTIONIST","uniqueConnections","connections","length","filter","index","self","findIndex","c","map","aiConnection","__spreadProps","__spreadValues","assistantKeys","sort","a","b","Number","showConfigButton","isDefault","showConfigButtonOnDefault","$isAiAssistantEnabled","$goalsDisabled","phoneNumber$","SmsDetailsService","stopReset","animationSubscription","unsubscribe","getMousePosition","event","rect","nativeElement","getBoundingClientRect","x","clientX","left","y","clientY","top","ngOnInit","initializeGradient","move","applyGradient","leave","startX","startY","duration","intervalMs","startTime","performance","now","interval","pipe","elapsed","progress","Math","min","easedProgress","easeOutCubic","takeWhile","floor","takeUntilDestroyed","subscribe","coords","t","set","selectors","viewQuery","rf","ctx","ɵɵclassMap","i0","_r1","$event","AiAssistantCardComponent_Conditional_5_Template","AiAssistantCardComponent_Conditional_6_Template","AiAssistantCardComponent_Conditional_10_Template","AiAssistantCardComponent_Conditional_11_Template","ɵɵdeclareLet","AiAssistantCardComponent_Conditional_16_Template","AiAssistantCardComponent_Conditional_18_Template","AiAssistantCardComponent_Conditional_19_Template","AiAssistantCardComponent_Conditional_20_Template","AiAssistantCardComponent_Conditional_21_Template","ɵɵstyleProp","name","descriptionKey","ɵɵstoreLet","aiConnections_r6","CommonModule","GalaxyAvatarModule","AvatarComponent","AiAssistantI18nModule","TranslatePipe","MatAnchor","RouterLink","MatButtonModule","MatButton","GalaxyBadgeModule","BadgeComponent","GalaxyTooltipModule","GalaxyTooltipDirective","MatIcon","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ctx_r0","alertType","alertTitle","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","alertMessage","ɵɵelement","ɵɵpipeBind2","ɵɵpureFunction1","_c0","phoneNumber","ɵɵsanitizeHtml","ɵɵdeclareLet","ɵɵtemplate","AiVoiceTryItModalComponent_Conditional_0_Conditional_5_Template","AiVoiceTryItModalComponent_Conditional_0_Conditional_6_Template","ɵɵnextContext","assistantStatus","ɵɵconditional","status_r2","AiVoiceTryItModalComponent","init_ai_voice_try_it_modal_component","__esmMin","init_core","init_dialog","init_common","init_ai_assistant_i18n_module","init_ai_assistant_service","init_esm","init_rxjs_interop","init_sms_details_service","init_loading_spinner","init_alert","init_snackbar_service","constructor","assistantService","inject","AiAssistantService","smsDetailsService","SmsDetailsService","snackbarService","SnackbarService","toSignal","phoneNumber$","pipe","catchError","err","status","openErrorSnack","of","isVoiceAiFeatureEnabled","$isVoiceAiEnabled","isRoutingCallsToVoiceAi","isRoutingToVoiceAi$","isVoiceAssistantActive","activeConnectionsForAssistant","ASSISTANT_ID_VOICE_RECEPTIONIST","map","aiConnections","some","aiConnection","connection","connectionType","ConnectionType","Voice","computed","isLoading","includes","undefined","toUpperCase","selectors","decls","vars","consts","template","rf","ctx","AiVoiceTryItModalComponent_Conditional_0_Template","AiVoiceTryItModalComponent_Conditional_1_Template","MatDialogTitle","MatDialogContent","AiAssistantI18nModule","TranslatePipe","CommonModule","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","GalaxyAlertModule","AlertComponent","styles","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵlistener","aiAssistant_r2","ɵɵrestoreView","_r1","$implicit","ctx_r2","ɵɵnextContext","ɵɵresetView","triggerAction","cta","action","showButton","isDisabled","isComingSoon","ɵɵrepeaterCreate","AiAssistantPageComponent_Conditional_7_For_2_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","aiWorkforce","AiAssistantPageComponent","init_ai_assistant_page_component","__esmMin","init_core","init_common","init_page","init_ngx_translate_core","init_ai_assistant_card_component","init_esm","init_ai_assistant_utils","init_rxjs_interop","init_vendasta_ai_assistants","init_sms_details_service","init_dialog","init_tokens","init_ai_assistant_i18n_module","init_src","init_loading_spinner","init_ai_voice_try_it_modal_component","init_router","constructor","aiAssistantService","inject","AiAssistantService","translateService","TranslateService","partnerId$","PARTNER_ID_TOKEN","accountGroupId$","ACCOUNT_GROUP_ID_TOKEN","defaultWorkforce$","AI_DEFAULT_WORKFORCE_TOKEN","matDialog","MatDialog","router","Router","smsDetailsService","SmsDetailsService","phoneNumber$","isVoiceAiEnabled$","toObservable","$isVoiceAiEnabled","aiWorkforce$","getAiWorkforce","fetching$","merge","combineLatest","pipe","map","$fetching","toSignal","requireSync","switchMap","partnerId","accountGroupId","isVoiceAiEnabled","defaultWorkforce","listAssistants","assistantRes","assistants","assistant","hydrateAssistantWithDefaultInfo","filter","isNotNullOrUndefined","forEach","defaultAssistant","find","convertAssistantTypeToDefaultID","type","AssistantType","ASSISTANT_TYPE_UNSPECIFIED","id","defaultAssistantCopy","structuredClone","name","instant","push","ASSISTANT_ID_VOICE_RECEPTIONIST","voiceAssistant","callback","openVoiceReceptionistTryItModal","bind","listConnections","aiConnections","connections","aiConnection","undefined","connection","supportedAssistantTypes","includes","catchError","e","console","error","of","__async","open","AiVoiceTryItModalComponent","aiAssistant","buildAssistantActionCallback","url","window","pathCommands","navigate","selectors","decls","vars","consts","template","rf","ctx","ɵɵtext","ɵɵtemplate","AiAssistantPageComponent_Conditional_6_Template","AiAssistantPageComponent_Conditional_7_Template","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵconditional","CommonModule","GalaxyPageModule","PageComponent","PageToolbarComponent","PageTitleDirective","PageWrapperDirective","AiAssistantCardComponent","AiAssistantI18nModule","TranslatePipe","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","styles","ɵɵelement","ɵɵproperty","tmp_1_0","ctx_r0","aiAssistant","assistant","avatarUrl","decoration","defaultAvatarIcon","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","subtitleKey","undefined","AiAssistantReferenceCardComponent","init_ai_assistant_reference_card_component","__esmMin","init_common","init_core","init_button","init_avatar","init_router","init_ai_assistant_service","init_ai_assistant_i18n_module","init_rxjs_interop","init_tokens","constructor","elementRef","input","required","accountGroupId","toSignal","inject","ACCOUNT_GROUP_ID_TOKEN","aiAssistantService","AiAssistantService","router","Router","currentUrl","url","defaultWorkforce","defaultWorkforce$","initialValue","computed","hydrateAssistantWithDefaultInfo","gradientColor","aiAssistantConfigUrl","buildAssistantConfigurationUrl","id","element","nativeElement","effect","style","setProperty","ɵɵdirectiveInject","ElementRef","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵtemplate","AiAssistantReferenceCardComponent_Conditional_4_Template","AiAssistantReferenceCardComponent_Conditional_5_Template","AiAssistantReferenceCardComponent_Conditional_9_Template","ɵɵconditional","tmp_0_0","name","tmp_2_0","ɵɵpureFunction1","_c0","_c1","ɵɵtextInterpolate1","CommonModule","GalaxyAvatarModule","AvatarComponent","RouterLink","MatButtonModule","MatAnchor","AiAssistantI18nModule","TranslatePipe","styles","init_components","__esmMin","init_ai_assistant_card_component","init_ai_assistant_page_component","init_ai_assistant_reference_card_component","init_config_interface","__esmMin","EnableLeadCaptureDialogComponent","init_enable_lead_capture_dialog_component","__esmMin","init_common","init_button","init_dialog","init_ngx_translate_core","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","CommonModule","MatDialogModule","MatDialogClose","MatDialogTitle","MatDialogActions","MatDialogContent","MatButtonModule","MatButton","TranslateModule","TranslatePipe","encapsulation","AdditionalInstructionsDialogComponent","init_additional_instructions_dialog_component","__esmMin","init_common","init_button","init_dialog","init_badge","init_ai_assistant_i18n_module","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtextInterpolate","CommonModule","MatDialogModule","MatDialogClose","MatDialogTitle","MatDialogActions","MatDialogContent","MatButtonModule","MatButton","AiAssistantI18nModule","TranslatePipe","GalaxyBadgeModule","BadgeComponent","encapsulation","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵpureFunction1","_c0","ctx_r0","cancelLink","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","cancelOverride","ɵɵtemplate","StickyFooterComponent_Conditional_4_a_0_Template","ɵɵlistener","ɵɵrestoreView","_r2","ɵɵnextContext","ɵɵresetView","cancelClick","emit","StickyFooterComponent","init_sticky_footer_component","__esmMin","init_common","init_core","init_button","init_card","init_router","init_sticky_footer","init_ai_assistant_i18n_module","constructor","submitClick","EventEmitter","disabled","selectors","inputs","submitOverride","outputs","decls","vars","consts","template","rf","ctx","StickyFooterComponent_Conditional_4_Template","StickyFooterComponent_Conditional_5_Template","ɵɵconditional","CommonModule","NgIf","RouterModule","RouterLink","MatCardModule","MatButtonModule","MatAnchor","MatButton","AiAssistantI18nModule","TranslatePipe","GalaxyStickyFooterModule","encapsulation","ImageUploadService","init_image_upload_service","__esmMin","init_src","init_uploader","GalaxyImageUploaderService","constructor","httpClient","environmentService","getURL","getEnvironment","Environment","DEMO","PROD","buildRequest","fileInfo","imageToUpload","data","croppedImage","file","formData","FormData","append","post","withCredentials","ɵɵinject","HttpClient","EnvironmentService","factory","ɵfac","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r3","ctx_r1","ɵɵnextContext","ɵɵresetView","onRemove","ɵɵtext","ɵɵelementEnd","ɵɵelement","_r1","state","set","ɵɵtemplate","ImageUploadModalComponent_Case_4_Conditional_5_Template","ɵɵadvance","ɵɵproperty","data","imageURL","defaultSvg","ɵɵconditional","$event","_r4","onError","onUpload","onFilesChanged","ɵɵpipeBind1","_r5","endEdit","file","ɵɵpureFunction0","_c0","ɵɵpureFunction1","_c2","_c1","ImageUploadModalComponent_Case_5_Conditional_0_Template","ImageUploadModalComponent_Case_5_Conditional_1_Template","ImageUploadModalComponent","init_image_upload_modal_component","__esmMin","init_core","init_dialog","init_uploader","init_image_upload_service","init_ngx_translate_core","init_avatar","init_button","init_icon","init_snackbar_service","init_esm","constructor","signal","uploadService","inject","GALAXY_UPLOADER_SERVICE_TOKEN","dialogRef","MatDialogRef","snack","SnackbarService","close","removed","event","openErrorSnack","error","message","fileInfo","clear","newImageUrl","url","files","blob","__async","currentFile","setCroppedImage","uploadQueuedFiles","firstValueFrom","fileUploaded$","then","ɵɵdirectiveInject","MAT_DIALOG_DATA","selectors","features","ɵɵProvidersFeature","provide","useClass","ImageUploadService","decls","vars","consts","template","rf","ctx","ImageUploadModalComponent_Case_4_Template","ImageUploadModalComponent_Case_5_Template","ɵɵtextInterpolate","tmp_1_0","MatDialogModule","MatDialogTitle","MatDialogContent","GalaxyUploaderModule","GalaxyImageUploaderComponent","GalaxyImageEditorComponent","TranslateModule","TranslatePipe","GalaxyAvatarModule","AvatarComponent","MatButtonModule","MatButton","MatIconModule","styles","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ctx_r0","defaultSvg","ImageUploadComponent","init_image_upload_component","__esmMin","init_common","init_core","init_uploader","init_image_upload_service","init_button","init_avatar","init_ngx_translate_core","init_icon","init_menu","init_dialog","init_image_upload_modal_component","constructor","imageUrl","input","imageUrlChanged","EventEmitter","newUploadedImageUrl","signal","dialog","inject","MatDialog","onChangeImage","open","ImageUploadModalComponent","width","data","imageURL","afterClosed","subscribe","result","remove","emit","newImageUrl","set","selectors","inputs","outputs","features","ɵɵProvidersFeature","provide","GALAXY_UPLOADER_SERVICE_TOKEN","useClass","ImageUploadService","decls","vars","consts","template","rf","ctx","ɵɵlistener","ɵɵtext","ɵɵtemplate","ImageUploadComponent_Conditional_5_Template","ɵɵconditional","CommonModule","TranslateModule","GalaxyUploaderModule","MatButtonModule","GalaxyAvatarModule","AvatarComponent","MatIconModule","MatIcon","MatMenuModule","styles","UnsavedChangesGuard","init_unsaved_changes_guard","__esmMin","init_core","init_confirmation_modal","init_esm","constructor","confirmationModal","inject","OpenConfirmationModalService","hasUnsavedChanges","signal","canDeactivate","openModal","type","title","message","confirmButtonText","pipe","map","confirmation","notifyStateChanged","hasChanges","set","factory","ɵfac","providedIn","AiAssistantVoiceUsageComponent","init_ai_assistant_voice_usage_component","__esmMin","init_common","init_core","init_ngx_translate_core","init_esm","init_ai_assistant_i18n_module","init_progress_bar","init_icon","init_tooltip","init_vendasta_voice","init_rxjs_interop","constructor","namespace","input","translationService","inject","TranslateService","voiceApiService","VoiceApiService","callUsageLimitMinutes","callUsage$","toObservable","pipe","filter","switchMap","getCallUsage","map","r","totalMinutes","Math","floor","totalDuration","startDate","startTime","endDate","endTime","limitPercent","min","round","shareReplay","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵdeclareLet","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵadvance","ɵɵclassMap","callUsage_r1","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵpureFunction2","_c0","ɵɵproperty","_c1","ɵɵpipeBind3","CommonModule","AsyncPipe","DatePipe","AiAssistantI18nModule","TranslatePipe","GalaxyProgressBarModule","ProgressBarComponent","MatIconModule","GalaxyTooltipModule","styles","MatSliderVisualThumb_Conditional_0_Template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ctx_r0","ɵɵnextContext","ɵɵadvance","ɵɵtextInterpolate","MatSlider_Conditional_6_Conditional_2_For_1_Template","ɵɵelement","tickMark_r1","ɵ$index_14_r2","ctx_r2","ɵɵclassMap","ɵɵstyleProp","MatSlider_Conditional_6_Conditional_2_Template","ɵɵrepeaterCreate","ɵɵrepeaterTrackByIndex","ɵɵrepeater","MatSlider_Conditional_6_Template","ɵɵtemplate","ɵɵconditional","MatSlider_Conditional_7_Template","ɵɵproperty","_c0","_c1","_c2","_c3","_MatThumb","_MatTickMark","MAT_SLIDER","MAT_SLIDER_THUMB","MAT_SLIDER_RANGE_THUMB","MAT_SLIDER_VISUAL_THUMB","MatSliderVisualThumb","MatSlider","MAT_SLIDER_THUMB_VALUE_ACCESSOR","MatSliderThumb","MatSliderModule","init_slider","__esmMin","init_bidi","init_platform","init_core","init_private","init_forms","init_esm","InjectionToken","inject","ChangeDetectorRef","NgZone","Renderer2","ElementRef","Platform","sliderInput","input","renderer","cleanup","event","rect","isHovered","rippleRef","RippleState","animation","ignoreGlobalRippleConfig","sibling","__ngFactoryType__","ɵɵdefineComponent","ɵɵviewQuery","MatRipple","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵProvidersFeature","Directionality","MAT_RIPPLE_GLOBAL_OPTIONS","v","endInput","startInput","min","prevMin","oldEndValue","oldStartValue","oldValue","max","prevMax","step","prevStartValue","value","_CdkPrivateStyleLoader","_StructuralStylesLoader","animationMode","ANIMATION_MODULE_TYPE","eInput","sInput","thumb","thumbPosition","styles","trackStyle","index","offset","source","input1","input2","sourceThumb","valuetext","visualThumb","percentage","activePercentage","numActive","numInactive","endValue","startValue","numInactiveBeforeStartThumb","numInactiveAfterEndThumb","withAnimation","radius","centerX","centerY","dx","dy","dirIndex","ɵɵcontentQuery","ɵɵclassProp","booleanAttribute","numberAttribute","ɵɵInputTransformsFeature","ɵɵprojectionDef","ɵɵprojection","NG_VALUE_ACCESSOR","forwardRef","stringValue","EventEmitter","signal","Subject","isCursorOnSliderThumb","xPos","width","numSteps","impreciseValue","prevValue","options","fn","isDisabled","ɵɵdefineDirective","ɵɵlistener","ɵɵattribute","ɵɵdefineNgModule","ɵɵdefineInjector","MatCommonModule","MatRippleModule","ɵɵelementStart","ɵɵlistener","goal_r2","ɵɵrestoreView","_r1","$implicit","ctx_r2","ɵɵnextContext","ɵɵresetView","goalClicked","emit","id","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","name","description","GoalsListComponent","init_goals_list_component","__esmMin","init_core","init_list","init_card","init_ai_assistant_i18n_module","init_common","constructor","goals","input","required","output","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ɵɵrepeaterCreate","GoalsListComponent_For_2_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","CommonModule","MatCardModule","MatCard","MatCardContent","MatListModule","AiAssistantI18nModule","styles","AiGoalService","init_ai_goal_service","__esmMin","init_core","init_vendasta_ai_assistants","init_ai_assistant_utils","init_esm","constructor","goalApiService","inject","GoalApiService","promptModuleApiService","PromptModuleApiService","functionApiService","FunctionApiService","buildGoalConfigurationUrl","accountGroupId","goalId","getGoal","partnerId","get","id","namespace","getNamespace","pipe","map","response","goal","getPromptModule","promptModuleId","getDeployedVersion","promptModule","promptVersion","deployedPromptModuleVersion","upsertGoal","upsert","factory","ɵfac","providedIn","ɵɵtext","ɵɵelementStart","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵelementContainer","errorTemplate_r3","ɵɵpureFunction1","_c2","ctx_r1","error","ɵɵelement","ɵɵlistener","$event","ɵɵrestoreView","_r5","ɵɵnextContext","ɵɵresetView","onImageChanged","tmp_3_0","assistantForm","get","value","tmp_4_0","aiAssistant","decoration","defaultAvatarIcon","undefined","ɵɵtextInterpolate1","assistant","namespace","ɵɵpipeBind2","_c5","aiConnection_r7","connection","name","cta","label","_r6","$implicit","triggerAction","preventDefault","ɵɵtemplate","AiAssistantFormComponent_Conditional_10_Conditional_29_Conditional_3_For_3_Conditional_7_Conditional_1_Template","AiAssistantFormComponent_Conditional_10_Conditional_29_Conditional_3_For_3_Conditional_7_Conditional_2_Template","ɵɵconditional","isDefault","AiAssistantFormComponent_Conditional_10_Conditional_29_Conditional_3_For_3_Conditional_7_Template","ɵ$index_103_r8","iconUrl","ɵɵsanitizeUrl","getConnectionName","widgetConnections_r9","ɵɵpureFunction0","_c4","action","showButton","ɵɵdeclareLet","ɵɵrepeaterCreate","AiAssistantFormComponent_Conditional_10_Conditional_29_Conditional_3_For_3_Template","ɵɵrepeaterTrackByIndex","ɵɵstoreLet","widgetConnections$","ɵɵrepeater","aiConnections_r10","AiAssistantFormComponent_Conditional_10_Conditional_29_Conditional_2_Template","AiAssistantFormComponent_Conditional_10_Conditional_29_Conditional_3_Template","connections$","aiConnections_r11","length","family_r13","selectedVoiceFamily_r14","description_key","voice_r15","ɵɵtextInterpolate3","region","gender","_r16","accordionItem_r17","ɵɵreference","toggle","AiAssistantFormComponent_Conditional_10_Conditional_30_Conditional_29_Conditional_8_Template","expanded","AiAssistantFormComponent_Conditional_10_Conditional_30_For_14_Template","ɵɵrepeaterTrackByIdentity","AiAssistantFormComponent_Conditional_10_Conditional_30_Conditional_16_Template","AiAssistantFormComponent_Conditional_10_Conditional_30_For_25_Template","_r12","togglePreview","AiAssistantFormComponent_Conditional_10_Conditional_30_Conditional_27_Template","AiAssistantFormComponent_Conditional_10_Conditional_30_Conditional_28_Template","AiAssistantFormComponent_Conditional_10_Conditional_30_Conditional_29_Template","voiceConfigForm","voiceFamilies","voiceFamily","selectedVoiceFamily_r18","availableVoices","currentlyPlayingPreview","tmp_13_0","provider","vendorModels","VENDOR_MODEL_OPEN_AI_REALTIME","AiAssistantFormComponent_Conditional_10_Conditional_39_Conditional_13_Conditional_4_For_6_For_2_Conditional_1_Template","AiAssistantFormComponent_Conditional_10_Conditional_39_Conditional_13_Conditional_4_For_6_For_2_Conditional_2_Template","type_r21","calendar_r22","isPersonal","AiAssistantFormComponent_Conditional_10_Conditional_39_Conditional_13_Conditional_4_For_6_For_2_Template","calendarName","meetingTypes","AiAssistantFormComponent_Conditional_10_Conditional_39_Conditional_13_Conditional_4_For_6_Template","_r20","goToMeetings","compareBookingOptions","calendarsWithTypes$","AiAssistantFormComponent_Conditional_10_Conditional_39_Conditional_13_Conditional_4_Template","tmp_5_0","_r19","openEnableLeadCaptureDialog","AiAssistantFormComponent_Conditional_10_Conditional_39_Conditional_13_Template","$isMeetingBookingEnabled","ɵɵtextInterpolate2","additionalPromptSoftLimit_r24","additionalInstructionsLimit","_r23","openAdditionalInstructionsDialog","AiAssistantFormComponent_Conditional_10_Conditional_40_glxy_hint_16_Template","AiAssistantFormComponent_Conditional_10_Conditional_40_glxy_error_17_Template","_r25","editGoal","goals","_r26","updateSelectedSources","knowledgeForm","controls","knowledgeAppId","AiAssistantFormComponent_Conditional_10_Conditional_4_Template","AiAssistantFormComponent_Conditional_10_Conditional_5_Template","AiAssistantFormComponent_Conditional_10_Conditional_18_Template","AiAssistantFormComponent_Conditional_10_Conditional_28_Template","AiAssistantFormComponent_Conditional_10_Conditional_29_Template","AiAssistantFormComponent_Conditional_10_Conditional_30_Template","AiAssistantFormComponent_Conditional_10_Conditional_39_Template","AiAssistantFormComponent_Conditional_10_Conditional_40_Template","AiAssistantFormComponent_Conditional_10_Conditional_41_Template","AiAssistantFormComponent_Conditional_10_Conditional_51_Template","AiAssistantFormComponent_Conditional_10_Conditional_52_Template","ɵɵprojection","_r4","submit","back","$isLoading","ɵɵpureFunction2","_c3","PopoverPositions","TopLeft","BottomLeft","ɵɵpropertyInterpolate","connectionForm","$isVoiceAssistant","$showPrimaryGoalCheckbox","showCustomGoals","$canSave","errorMessage_r27","ADDITIONAL_INSTRUCTIONS_LIMIT","FALLBACK_BACK_URL","MEETING_URL","DEFAULT_LEAD_CAPTURE_GOAL_ID","DEFAULT_MEETING_BOOKING_GOAL_ID","ADDITIONAL_INSTRUCTIONS_GOAL_ID","DEEPGRAM_SPEAK_FEATURE_FLAG","GOAL_CONFIG_KEY_CALENDAR_ID","GOAL_CONFIG_KEY_MEETING_TYPE_ID","AiAssistantFormComponent","init_ai_assistant_form_component","__esmMin","init_common","init_core","init_rxjs_interop","init_forms","init_button","init_button_toggle","init_card","init_checkbox","init_divider","init_icon","init_input","init_router","init_form_field","init_loading_spinner","init_src","init_dialog","init_snackbar_service","init_page_no_access_unauthorized","init_esm","init_badge","init_tooltip","init_vendasta_ai_assistants","init_ai_assistant_service","init_booking_config_service","init_ai_assistant_constants","init_enable_lead_capture_dialog_component","init_additional_instructions_dialog_component","init_sticky_footer_component","init_image_upload_component","init_page","init_ai_assistant_i18n_module","init_alert","init_empty_state","init_ai_assistant_utils","init_avatar","init_tokens","init_unsaved_changes_guard","init_vendasta_conversation","init_ai_assistant_voice_usage_component","init_popover","init_select","init_accordion","init_slider","init_ai_assistant_interface","init_goals_list_component","init_ai_goal_service","connectionsFormGroupFactory","aiConnections","formArray","map","aiConnection","FormControl","assistantKeys","some","assistantKey","id","disabled","isConnectionLocked","FormGroup","connections","FormArray","assistantFormGroupFactory","assistantService","additionalInstructions","leadCaptureEnabled","$isAssistantGoalsEnabled","configurableGoals","goal","config","inboxConfig","meetingBookingEnabled","calendarId","meetingTypeId","$isAIMeetingBookingEnabled","bookingGoal","find","Boolean","configuration","key","assistantAvatarUrl","avatarUrl","enableLeadCapture","enableMeetingBooking","calendarAndMeetingType","additionalPrompt","Validators","maxLength","assistantId","voiceConfigFormGroupFactory","voice","voiceConfig","modelConfig","openaiRealtimeConfig","family","familyFromVoice","vendorModel","VendorModel","VENDOR_MODEL_DEEPGRAM","deepgramConfig","advanced","turnDetectionThreshold","turnDetection","threshold","turnDetectionPrefixPadding","prefixPadding","turnDetectionSilenceDuration","silenceDuration","knowledgeFormGroupFactory","kID","inject","AiAssistantService","buildAppId","knowledgeSources","constructor","location","destroyRef","DestroyRef","assistantAPI","AssistantApiService","snackbarService","SnackbarService","knowledgeService","AiKnowledgeService","goalService","AiGoalService","featureFlagService","FeatureFlagService","bookingConfigService","BookingConfigService","router","Router","route","ActivatedRoute","unsavedGuard","UnsavedChangesGuard","dialog","MatDialog","injector","EnvironmentInjector","accountGroupId$","ACCOUNT_GROUP_ID_TOKEN","partnerId$","PARTNER_ID_TOKEN","conversationApiService","ConversationApiService","translateService","TranslateService","DEFAULT_CONNECTION_PREFIX","signal","defaultWorkforce$","AI_DEFAULT_WORKFORCE_TOKEN","navHistory","previewAudio","Audio","partnerIdAndAccountGroupId$","combineLatest","pipe","distinctUntilChanged","a","b","$isSaving","$hasUnsavedChanges","$initialSources","computed","$isNewCustomAIGoalsEnabled","snapshot","params","aiAssistant$","switchMap","partnerIdAndAccountGroupId","defaultWorkforce","partnerId","accountGroupId","getAssistant","hydrateAssistantWithDefaultInfo","catchError","err","status","getDefaultAssistant","set","message","EMPTY","shareReplay","refCount","bufferSize","toSignal","initialValue","configurableGoal","filter","globalNamespace","additionalInstructions$","additionalInstructionsPromptModule","buildAdditionalInstructionsGoalID","promptModules","getPromptModuleVersion","deployedVersion","instructions","of","$additionalInstructions","listConnectionsForAssistant","openErrorSnack","$connections","type","AssistantType","ASSISTANT_TYPE_VOICE_RECEPTIONIST","$showBetaBadge","connectionType","WEBCHAT_WIDGET_CONNECTION_TYPE","webchatWidgetConnectionIds","widgetIds","includes","getMultiWidget","response","widgets","fetching$","startWith","$fetching","requireSync","getCalendarsWithTypes","audioEndedHandler","effect","notifyStateChanged","setValue","runInInjectionContext","subscribeToFormChanges","f","previewUrlFromVoice","voicesForFamily","batchGetStatus","resp","take","subscribe","deepgramEnabled","getVoiceFamilies","queryParams","previousUrl","valueChanges","takeUntilDestroyed","markChanges","updateBookingValidator","familyName","stopPlayingPreview","handleEnded","removeEventListener","play","then","addEventListener","pause","currentTime","cleanupAudioEventListeners","knowledgeSourcesHaveChanged","currentSources","source","s","accountGroupNamespace","ConnectionType","WebchatWidget","MY_LISTING_CONNECTION_NAME","instant","widget","widgetId","sources","JSON","parse","stringify","goalId","__async","firstValueFrom","goalConfigurationUrl","buildGoalConfigurationUrl","navigate","relativeTo","onBeforeUnload","event","stopPropagation","returnValue","markAllAsTouched","invalid","dirty","assistantPromise","connectionPromise","updateAssistant","updateConnections","Promise","all","markAsSaved","openSuccessSnack","hasChanges","markAsPristine","setValidators","control","bothRequired","clearValidators","updateValueAndValidity","emitEvent","toAssistant","updateGoals","Error","cause","configurationUrl","buildAiKnowledgeAppConfigurationUrl","knowledge","toKnowledgeSource","upsertKnowledgeForApp","knowledgeAppType","upsertAssistant","throwError","Namespace","ASSISTANT_TYPE_INBOX","updateGoal","goalConfig","addAdditionalInstructionsGoal","defaultGoalId","existingGoals","goalIndex","findIndex","push","ConfigurableGoal","hasAdditionalInstructionsGoal","additionalInstructionsFormValue","goalKey","upsertAdditionalInstructions","console","warn","setAssistantConnections","associationStates","index","connectionKey","isAssociated","getRawValue","AssistantIdToAssistantType","buildVoiceModelConfig","open","EnableLeadCaptureDialogComponent","width","AdditionalInstructionsDialogComponent","imageUrl","markAsDirty","buildConnectionActionCallback","url","partnerNamespace","outlets","inbox","newTab","relativeRoute","window","pathCommands","callback","backUrl","ngOnDestroy","ɵɵdirectiveInject","Location","selectors","hostBindings","rf","ctx","ɵɵresolveWindow","i0","_r1","AiAssistantFormComponent_Conditional_7_Template","AiAssistantFormComponent_Conditional_9_Template","AiAssistantFormComponent_Conditional_10_Template","AiAssistantFormComponent_ng_template_11_Template","ɵɵtemplateRefExtractor","_c1","tmp_2_0","CommonModule","NgIf","NgTemplateOutlet","AsyncPipe","MatInputModule","MatInput","CdkTextareaAutosize","MatCardModule","MatCard","MatCardContent","MatCardHeader","MatCardSubtitle","MatCardTitle","MatOptionModule","MatOption","MatOptgroup","MatSelectModule","MatSelect","MatSliderModule","MatSlider","MatSliderThumb","CdkAccordionModule","CdkAccordion","CdkAccordionItem","ReactiveFormsModule","ɵNgNoValidate","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormGroupDirective","FormControlName","FormGroupName","FormArrayName","FormsModule","MatButtonModule","MatIconButton","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","HintDirective","ErrorDirective","ExtendedDirective","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","GalaxyPageNoAccessUnauthorizedModule","AiAssistantI18nModule","TranslatePipe","MatCheckboxModule","MatCheckbox","RouterModule","MatIconModule","MatIcon","MatButtonToggleModule","MatDialogModule","MatDividerModule","ApplicationKnowledgeComponent","GalaxyBadgeModule","BadgeComponent","ImageUploadComponent","GalaxyTooltipModule","GalaxyTooltipDirective","StickyFooterComponent","GalaxyPageModule","PageComponent","PageToolbarComponent","PageTitleDirective","PageNavDirective","PageNavButtonComponent","PageWrapperDirective","GalaxyAlertModule","AlertComponent","AlertExtendedDirective","GalaxyEmptyStateModule","EmptyStateComponent","EmptyStateHeroDirective","EmptyStateTitleDirective","GalaxyAvatarModule","AiAssistantVoiceUsageComponent","GoalsListComponent","styles","goalChannels","goalChannelIcons","init_ai_goal_util","__esmMin","init_vendasta_ai_assistants","Map","GoalChannel","GOAL_CHANNEL_PLATFORM","GOAL_CHANNEL_WEBCHAT","GOAL_CHANNEL_SMS","GOAL_CHANNEL_EMAIL","GOAL_CHANNEL_VOICE","GOAL_CHANNEL_FACEBOOK","GOAL_CHANNEL_INSTAGRAM","GOAL_CHANNEL_WHATSAPP","ɵɵelement","ɵɵproperty","channel_r4","icon","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r3","$implicit","ctx_r1","ɵɵnextContext","ɵɵresetView","toggleChannelSelection","id","ɵɵtemplate","AiGoalFormComponent_Conditional_8_For_20_Conditional_2_Template","ɵɵtext","ɵɵelementEnd","tmp_14_0","form_r5","get","value","includes","ɵɵadvance","ɵɵconditional","goalChannelIcons","ɵɵtextInterpolate1","ɵɵpipeBind1","name","goalFunction_r6","description","_r1","selectAllChannels","ɵɵrepeaterCreate","AiGoalFormComponent_Conditional_8_For_20_Template","_forTrack0","AiGoalFormComponent_Conditional_8_For_32_Template","submit","cancel","ɵɵtextInterpolate","tmp_8_0","length","ɵɵrepeater","availableGoalChannels","canSave","AVAILABLE_CHANNELS","FALLBACK_BACK_URL","AiGoalFormComponent","init_ai_goal_form_component","__esmMin","init_core","init_page","init_router","init_ai_goal_service","init_tokens","init_esm","init_common","init_form_field","init_forms","init_rxjs_interop","init_vendasta_ai_assistants","init_ai_goal_util","init_select","init_badge","init_chips","init_avatar","init_card","init_sticky_footer_component","init_snackbar_service","init_page_service","init_ai_assistant_i18n_module","init_input","GoalChannel","GOAL_CHANNEL_SMS","GOAL_CHANNEL_WEBCHAT","GOAL_CHANNEL_WHATSAPP","constructor","destroyRef","route","inject","ActivatedRoute","goalService","AiGoalService","snackbarService","SnackbarService","pageService","PageService","router","Router","accountGroupId$","ACCOUNT_GROUP_ID_TOKEN","partnerId$","PARTNER_ID_TOKEN","map","channel","goalChannels","goalId","snapshot","params","goal$","combineLatest","pipe","switchMap","partnerId","accountGroupId","getGoal","promptModule$","goal","promptModules","of","getPromptModule","form","toSignal","promptModule","initForm","promptVersion","content","isLoading","computed","isSubmitting","signal","hasUnsavedChanges","effect","valueChanges","takeUntilDestroyed","subscribe","set","promptContent","FormGroup","FormControl","Validators","required","supportedChannels","prompt","functions","channelKey","control","currentValue","filter","key","setValue","getGoalFromForm","formValue","newGoal","__spreadValues","__async","valid","openErrorSnack","firstValueFrom","upsertGoal","openSuccessSnack","path","getPreviousPageUrl","navigate","relativeTo","ɵɵdirectiveInject","DestroyRef","selectors","decls","vars","consts","template","rf","ctx","AiGoalFormComponent_Conditional_8_Template","tmp_4_0","CommonModule","GalaxyPageModule","PageComponent","PageToolbarComponent","PageTitleDirective","PageNavDirective","PageNavButtonComponent","PageWrapperDirective","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormGroupDirective","FormControlName","MatSelectModule","GalaxyBadgeModule","MatChipsModule","MatChipListbox","MatChipOption","GalaxyAvatarModule","AvatarComponent","MatCardModule","MatCard","MatCardContent","StickyFooterComponent","AiAssistantI18nModule","TranslatePipe","FormsModule","MatInputModule","MatInput","styles","AI_ASSISTANT_ROUTES","init_routes","__esmMin","init_src","init_ai_assistant_form_component","init_unsaved_changes_guard","init_ai_goal_form_component","path","children","component","AiAssistantPageComponent","AiAssistantFormComponent","canDeactivate","UnsavedChangesGuard","AiGoalFormComponent","init_src","__esmMin","init_core","init_components","init_tokens","init_config_interface","init_ai_assistant_interface","init_routes","DefaultChipStyling","init_interfaces","__esmMin","selectedChipColor","unselectedChipColor","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ctx_r1","size","ɵɵadvance","ɵɵtextInterpolate1","chipIcon_r1","SelectedChipIcon","ChipComponent","init_chip_component","__esmMin","init_core","init_icon","init_badge","init_coercion","init_interfaces","init_common","init_ngx_translate_core","constructor","_icon","signal","undefined","_selected","_hideLabelWhenSelected","label","color","computed","DefaultChipStyling","selectedChipColor","unselectedChipColor","chipIcon","hideLabel","hideLabelWhenSelected","value","set","icon","selected","selectors","inputs","coerceBooleanProperty","features","ɵɵInputTransformsFeature","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵtemplate","ChipComponent_mat_icon_3_Template","ɵɵclassProp","ɵɵpipeBind1","CommonModule","NgClass","NgIf","GalaxyBadgeModule","BadgeComponent","MatIconModule","MatIcon","MatRippleModule","MatRipple","TranslateModule","TranslatePipe","styles","changeDetection","ɵɵelement","ɵɵclassProp","index_r4","ctx_r2","focusedIndex","ɵɵelementStart","ɵɵlistener","item_r2","ɵɵrestoreView","_r1","$implicit","ɵɵnextContext","ɵɵresetView","handleChipClick","value","ɵɵelementEnd","ɵɵtemplate","ChipListComponent_div_2_div_2_Template","ɵɵadvance","ɵɵproperty","hideLabelWhenSelected","label","icon","selected","size","captureFocus","ChipListComponent","init_chip_list_component","__esmMin","init_core","init_chip_component","init_common","init_coercion","constructor","items","selectedChange","EventEmitter","onFocusIn","findIndex","item","onFocusOut","setSelected","handleKeyDown","event","code","length","target","HTMLElement","nextElementSibling","focus","preventDefault","emit","selectors","hostBindings","rf","ctx","coerceBooleanProperty","outputs","features","ɵɵInputTransformsFeature","decls","vars","consts","template","$event","ChipListComponent_div_2_Template","ChipComponent","CommonModule","NgClass","NgForOf","NgIf","styles","changeDetection","init_chip_list","__esmMin","init_chip_list_component","CrmUnknownUserAvatarComponent","init_unknown_user_avatar_component","__esmMin","init_common","init_avatar","init_constants","constructor","width","AVATAR_WIDTH","selectors","inputs","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵproperty","CommonModule","GalaxyAvatarModule","AvatarComponent","encapsulation","ActivityLoggerService","init_activity_logger_service","__esmMin","init_vendasta_iamv2","init_esm","init_operators","init_tokens_and_interfaces","constructor","config","activityService","iamService","trackingService","user$","Observable","currentUserId$","pipe","distinctUntilChanged","switchMap","currentUserId","getUser","UserIdentifier","userId","map","user","__spreadProps","__spreadValues","fullName","firstName","lastName","trim","shareReplay","addActivity","activityType","fields","associations","ownerId","cleanAssociations","association","crmObjectId","crmObjectType","crmObjectSubtype","activity","createActivity","tap","trackEvent","getActivity","activityId","getMultiActivities","activities","updateActivity","fieldMask","forEach","push","length","paths","of","ɵɵinject","CrmInjectionToken","ActivityService","IAMService","CRMTrackingService","factory","ɵfac","init_interfaces","__esmMin","CrmLoggerContentDirective","init_logger_content_directive","__esmMin","crmLoggerContent","value","placement","selectors","inputs","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelementContainerStart","ɵɵtemplate","CrmActivityLoggerCallComponent_ng_container_5_glxy_error_1_Template","ɵɵproperty","ctx_r0","formGroup","controls","loggedCallNote","hasError","CrmActivityLoggerCallComponent_ng_container_14_glxy_error_1_Template","loggedCallDate","CrmActivityLoggerCallComponent_ng_container_24_glxy_error_1_Template","loggedCallDirection","CrmActivityLoggerCallComponent","init_call_component","__esmMin","init_text_field","init_common","init_core","init_forms","init_datepicker","init_input","init_select","init_ngx_translate_core","init_form_field","init_esm","init_field_service","init_translation_module","init_activity_interface","init_validators","init_coercion","init_rxjs_interop","init_rich_text_editor","init_constants","activity","value","setValues","description","getRawValue","patchValue","emitEvent","constructor","fieldsService","mobile","descriptionChange","EventEmitter","showErrors","ActivityDirection","CallStatus","ActivityOutcome","textRows","DEFAULT_RICH_TEXT_PLUGINS","DEFAULT_RICH_TEXT_TOOLBAR","FormBuilder","nonNullable","group","formatDate","Date","loggedCallStatus","loggedCallOutcome","validators","requiredFormGroupFieldsIf","valueChanges","pipe","takeUntilDestroyed","distinctUntilChanged","subscribe","emit","ngAfterViewInit","defaultInput","nativeElement","focus","validate","markAllAsTouched","updateValueAndValidity","callDate","getFieldValueFromCrmObject","StandardIds","ActivityCallDate","callBody","ActivityCallBody","callDirection","ActivityCallDirection","callStatus","ActivityCallStatus","callOutcome","ActivityCallOutcome","setValue","stringValue","dateValue","dirty","resetForm","getValues","formValues","fieldId","undefined","reset","ɵɵdirectiveInject","CrmFieldService","selectors","viewQuery","rf","ctx","coerceBooleanProperty","outputs","features","ɵɵInputTransformsFeature","ngContentSelectors","_c3","decls","vars","consts","template","ɵɵelement","CrmActivityLoggerCallComponent_ng_container_5_Template","ɵɵprojection","CrmActivityLoggerCallComponent_ng_container_14_Template","CrmActivityLoggerCallComponent_ng_container_24_Template","ɵɵclassProp","ɵɵpropertyInterpolate","Outbound","ɵɵtextInterpolate","Inbound","Connected","Busy","Rejected","Voicemail","NoAnswer","NotInService","WrongNumber","NoInterest","Interested","QualityConnect","Demo","Timeline","Rescheduling","Referred","CommonModule","NgIf","TranslateModule","TranslatePipe","TranslationModule","GalaxyFormFieldModule","FormFieldComponent","FormRowComponent","ErrorDirective","MatSelectModule","MatSelect","MatOption","MatDatepickerModule","MatDatepicker","MatInputModule","MatInput","ReactiveFormsModule","ɵNgNoValidate","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormControlDirective","FormGroupDirective","FormControlName","TextFieldModule","GalaxyRichTextEditorModule","RichTextEditorComponent","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelementContainerStart","ɵɵtemplate","CrmActivityLoggerEmailComponent_ng_container_5_glxy_error_1_Template","ɵɵproperty","ctx_r0","formGroup","controls","loggedEmailDescription","hasError","CrmActivityLoggerEmailComponent_ng_container_14_glxy_error_1_Template","loggedEmailDate","CrmActivityLoggerEmailComponent_ng_container_27_glxy_error_1_Template","loggedEmailDirection","CrmActivityLoggerEmailComponent","init_email_component","__esmMin","init_text_field","init_common","init_core","init_forms","init_datepicker","init_icon","init_input","init_select","init_ngx_translate_core","init_form_field","init_esm","init_shared_services","init_translation_module","init_activity_interface","init_validators","init_coercion","init_rxjs_interop","init_rich_text_editor","init_constants","activity","value","setValues","description","getRawValue","patchValue","emitEvent","constructor","fieldsService","mobile","descriptionChange","EventEmitter","showErrors","ActivityDirection","textRows","DEFAULT_RICH_TEXT_PLUGINS","DEFAULT_RICH_TEXT_TOOLBAR","FormBuilder","nonNullable","group","formatDate","Date","validators","requiredFormGroupFieldsIf","valueChanges","pipe","takeUntilDestroyed","distinctUntilChanged","subscribe","emit","ngAfterViewInit","defaultInput","nativeElement","focus","validate","markAllAsTouched","updateValueAndValidity","emailDate","getFieldValueFromCrmObject","StandardIds","ActivityEmailDate","emailBody","ActivityEmailBody","emailDirection","ActivityEmailDirection","setValue","stringValue","dateValue","dirty","resetForm","getValues","formValues","fieldId","undefined","reset","ɵɵdirectiveInject","CrmFieldService","selectors","viewQuery","rf","ctx","coerceBooleanProperty","outputs","features","ɵɵInputTransformsFeature","ngContentSelectors","_c3","decls","vars","consts","template","ɵɵelement","CrmActivityLoggerEmailComponent_ng_container_5_Template","ɵɵprojection","CrmActivityLoggerEmailComponent_ng_container_14_Template","CrmActivityLoggerEmailComponent_ng_container_27_Template","ɵɵclassProp","ɵɵpropertyInterpolate","Outbound","ɵɵtextInterpolate","Inbound","Forwarded","CommonModule","NgIf","TranslateModule","TranslatePipe","TranslationModule","MatIconModule","GalaxyFormFieldModule","FormFieldComponent","FormRowComponent","ErrorDirective","MatSelectModule","MatSelect","MatOption","MatDatepickerModule","MatDatepicker","MatInputModule","MatInput","ReactiveFormsModule","ɵNgNoValidate","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormControlDirective","FormGroupDirective","FormControlName","TextFieldModule","GalaxyRichTextEditorModule","RichTextEditorComponent","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelementContainerStart","ɵɵtemplate","CrmActivityLoggerMeetingComponent_ng_container_5_glxy_error_1_Template","ɵɵproperty","ctx_r0","formGroup","controls","loggedMeetingNote","hasError","CrmActivityLoggerMeetingComponent_ng_container_14_glxy_error_1_Template","loggedMeetingDate","CrmActivityLoggerMeetingComponent_ng_container_55_glxy_error_1_Template","loggedMeetingStatus","CrmActivityLoggerMeetingComponent","init_meeting_component","__esmMin","init_text_field","init_common","init_core","init_forms","init_input","init_ngx_translate_core","init_form_field","init_field_service","init_translation_module","init_esm","init_datepicker","init_select","init_activity_interface","init_validators","init_coercion","init_rxjs_interop","init_rich_text_editor","init_constants","activity","value","setValues","description","getRawValue","patchValue","emitEvent","constructor","fieldsService","mobile","descriptionChange","EventEmitter","showErrors","ActivityOutcome","MeetingDuration","MeetingStatus","textRows","DEFAULT_RICH_TEXT_PLUGINS","DEFAULT_RICH_TEXT_TOOLBAR","FormBuilder","nonNullable","group","loggedMeetingOutcome","loggedMeetingDuration","formatDate","Date","validators","requiredFormGroupFieldsIf","valueChanges","pipe","takeUntilDestroyed","distinctUntilChanged","subscribe","emit","ngAfterViewInit","defaultInput","nativeElement","focus","resetForm","reset","updateValueAndValidity","getValues","formValues","fieldId","StandardIds","ActivityMeetingStartTime","dateValue","undefined","ActivityMeetingBody","stringValue","ActivityMeetingStatus","ActivityMeetingOutcome","ActivityMeetingDuration","integerValue","meetingDate","getFieldValueFromCrmObject","meetingBody","meetingStatus","meetingOutcome","meetingDuration","setValue","replace","dirty","validate","markAllAsTouched","ɵɵdirectiveInject","CrmFieldService","selectors","viewQuery","rf","ctx","coerceBooleanProperty","outputs","features","ɵɵInputTransformsFeature","ngContentSelectors","_c3","decls","vars","consts","template","ɵɵelement","CrmActivityLoggerMeetingComponent_ng_container_5_Template","ɵɵprojection","CrmActivityLoggerMeetingComponent_ng_container_14_Template","CrmActivityLoggerMeetingComponent_ng_container_55_Template","ɵɵclassProp","ɵɵpropertyInterpolate","FiveMin","FifteenMin","ThirtyMin","OneHour","OneHourThirtyMin","TwoHoursPlus","Scheduled","Rescheduled","Completed","Cancelled","NoShow","ɵɵtextInterpolate","NoInterest","Interested","QualityConnect","Demo","Timeline","Rescheduling","Referred","CommonModule","NgIf","TranslateModule","TranslatePipe","TranslationModule","GalaxyFormFieldModule","FormFieldComponent","FormRowComponent","ErrorDirective","MatInputModule","MatInput","ReactiveFormsModule","ɵNgNoValidate","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormControlDirective","FormGroupDirective","FormControlName","TextFieldModule","MatDatepickerModule","MatDatepicker","MatSelectModule","MatSelect","MatOption","GalaxyRichTextEditorModule","RichTextEditorComponent","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelementContainerStart","ɵɵtemplate","CrmActivityLoggerNoteComponent_ng_container_5_glxy_error_1_Template","ɵɵproperty","ctx_r0","formGroup","controls","noteBody","hasError","CrmActivityLoggerNoteComponent","init_note_component","__esmMin","init_text_field","init_common","init_core","init_forms","init_autocomplete","init_chips","init_icon","init_input","init_tooltip","init_ngx_translate_core","init_form_field","init_field_service","init_translation_module","init_validators","init_coercion","init_rxjs_interop","init_esm","init_tokens_and_interfaces","init_rich_text_editor","init_constants","activity","value","setValues","description","getRawValue","patchValue","emitEvent","constructor","config","fieldsService","mobile","descriptionChange","EventEmitter","showErrors","textRows","DEFAULT_RICH_TEXT_PLUGINS","DEFAULT_RICH_TEXT_TOOLBAR","FormBuilder","nonNullable","group","validators","requiredFormGroupFieldsIf","separatorKeyCodes","ENTER","COMMA","valueChanges","pipe","takeUntilDestroyed","distinctUntilChanged","subscribe","emit","ngAfterViewInit","defaultInput","nativeElement","focus","resetForm","reset","updateValueAndValidity","getValues","formValues","fieldId","StandardIds","ActivityNoteBody","stringValue","getFieldValueFromCrmObject","setValue","replace","dirty","validate","markAllAsTouched","ɵɵdirectiveInject","CrmInjectionToken","CrmFieldService","selectors","viewQuery","rf","ctx","coerceBooleanProperty","outputs","features","ɵɵInputTransformsFeature","ngContentSelectors","_c3","decls","vars","consts","template","ɵɵelement","CrmActivityLoggerNoteComponent_ng_container_5_Template","ɵɵprojection","CommonModule","NgIf","TranslateModule","TranslatePipe","TranslationModule","MatIconModule","MatChipsModule","GalaxyFormFieldModule","FormRowComponent","ErrorDirective","MatInputModule","ReactiveFormsModule","ɵNgNoValidate","NgControlStatus","NgControlStatusGroup","FormControlDirective","FormGroupDirective","TextFieldModule","MatAutocompleteModule","MatTooltipModule","GalaxyRichTextEditorModule","RichTextEditorComponent","styles","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","removeTag","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵpropertyInterpolate","tag_r4","ɵɵtextInterpolate1","ɵɵproperty","tag_r5","ɵɵtemplate","CrmActivityLoggerTagsComponent_ng_container_7_mat_option_1_Template","tags_r6","CrmActivityLoggerTagsComponent","init_tags_component","__esmMin","init_coercion","init_common","init_core","init_forms","init_autocomplete","init_chips","init_icon","init_tooltip","init_form_field","init_esm","init_operators","init_tokens_and_interfaces","init_translation_module","init_shared_services","tags","value","activityTags","set","constructor","config","crmObjectService","mobile","tagsChanged","EventEmitter","showErrors","noteTagsCtrl","FormControl","formGroup","FormGroup","loggedNoteTags","separatorKeyCodes","ENTER","COMMA","tagsCtrl","signal","tagTextSearch$","valueChanges","pipe","startWith","filteredTags$","combineLatest","namespace$","debounceTime","switchMap","searchTerm","namespace","listFieldOptions","fieldId","StandardIds","ActivityTags","pageSize","map","resp","options","addNewTag","event","addTag","setValue","selectedTag","tag","option","includes","push","markAsDirty","emit","chip","filter","t","ɵɵdirectiveInject","CrmInjectionToken","CrmObjectService","selectors","inputs","coerceBooleanProperty","outputs","features","ɵɵInputTransformsFeature","decls","vars","consts","template","rf","ctx","CrmActivityLoggerTagsComponent_ng_container_2_Template","i0","_r1","CrmActivityLoggerTagsComponent_ng_container_7_Template","ɵɵpipeBind1","tagGrid_r7","tagAutocomplete_r8","CommonModule","NgForOf","NgIf","AsyncPipe","GalaxyFormFieldModule","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","MatChipsModule","MatChipGrid","MatChipInput","MatChipRemove","MatChipRow","MatIconModule","MatIcon","TranslationModule","TranslatePipe","MatAutocompleteModule","MatAutocomplete","MatOption","MatAutocompleteTrigger","MatTooltipModule","MatTooltip","encapsulation","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","toggleExpanded","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵproperty","type_r4","value","nameKey","ɵɵelement","ɵɵtemplate","CrmActivityLoggerFollowUpTaskComponent_ng_template_2_mat_option_13_Template","_r3","CrmActivityLoggerFollowUpTaskComponent_ng_template_2_ng_template_17_Template","ɵɵtextInterpolate","formGroup","ɵɵclassProp","mobile","ɵɵpropertyInterpolate","taskTypes","CrmActivityLoggerFollowUpTaskComponent","init_follow_up_task_component","__esmMin","init_core","init_common","init_esm","init_form_field","init_datepicker","init_coercion","init_forms","init_activity_interface","init_input","init_ngx_translate_core","init_text_field","init_select","init_button","init_icon","init_shared_services","init_constants","init_i18n","constructor","fieldsService","translateService","expandedChanged","EventEmitter","isExpanded$$","BehaviorSubject","isExpanded$","asObservable","pipe","tap","isExpanded","emit","today","Date","FormBuilder","nonNullable","group","taskDueDate","formatDate","setDate","getDate","STANDARD_DATE_FORMAT","taskType","ActivityTaskType","ToDo","ActivityTaskTypeTranslationKeys","next","getValues","crmObjectName","formValues","getRawValue","followUpWith","instant","fieldId","getFieldId","StandardIds","ActivityName","stringValue","ActivityTaskDueDate","dateValue","undefined","ActivityTaskStatus","DEFAULT_TASK_STATUS","ngOnDestroy","ɵɵdirectiveInject","CrmFieldService","TranslateService","selectors","viewQuery","rf","ctx","coerceBooleanProperty","outputs","features","ɵɵInputTransformsFeature","decls","vars","consts","template","CrmActivityLoggerFollowUpTaskComponent_button_0_Template","CrmActivityLoggerFollowUpTaskComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","addFollowUp_r5","CommonModule","NgForOf","NgIf","AsyncPipe","TranslateModule","TranslatePipe","TranslationModule","GalaxyFormFieldModule","FormFieldComponent","FormRowComponent","MatInputModule","MatInput","ReactiveFormsModule","ɵNgNoValidate","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormGroupDirective","FormControlName","TextFieldModule","MatDatepickerModule","MatDatepicker","MatSelectModule","MatSelect","MatOption","MatButtonModule","MatButton","MatIconButton","MatIconModule","MatIcon","styles","init_logger","__esmMin","init_interfaces","init_logger_content_directive","init_call_component","init_email_component","init_meeting_component","init_note_component","init_task_component","init_tags_component","init_follow_up_task_component","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelementContainerStart","ɵɵtemplate","CrmActivityLoggerCommunicationComponent_ng_container_5_glxy_error_1_Template","ɵɵproperty","ctx_r0","formGroup","controls","loggedCommunicationBody","hasError","CrmActivityLoggerCommunicationComponent_ng_container_14_glxy_error_1_Template","loggedCommunicationDate","CrmActivityLoggerCommunicationComponent_ng_container_36_glxy_error_1_Template","loggedCommunicationOutcome","CrmActivityLoggerCommunicationComponent","init_communication_component","__esmMin","init_core","init_common","init_ngx_translate_core","init_translation_module","init_icon","init_form_field","init_select","init_datepicker","init_input","init_forms","init_text_field","init_coercion","init_validators","init_activity_interface","init_esm","init_field_service","init_rxjs_interop","init_rich_text_editor","init_constants","communicationType","value","getRawValue","patchValue","loggedCommunicationChannel","activity","setValues","description","emitEvent","constructor","fieldsService","mobile","descriptionChange","EventEmitter","showErrors","textRows","ActivityOutcome","DEFAULT_RICH_TEXT_PLUGINS","DEFAULT_RICH_TEXT_TOOLBAR","FormBuilder","nonNullable","group","loggedCommunicationFromId","loggedCommunicationToId","formatDate","Date","validators","requiredFormGroupFieldsIf","valueChanges","pipe","takeUntilDestroyed","distinctUntilChanged","subscribe","emit","ngAfterViewInit","defaultInput","nativeElement","focus","validate","markAllAsTouched","updateValueAndValidity","communicationChannel","getFieldValueFromCrmObject","StandardIds","ActivityCommunicationChannel","communicationOutcome","ActivityCommunicationOutcome","communicationFromId","ActivityCommunicationFromId","communicationToId","ActivityCommunicationToId","communicationBody","ActivityCommunicationBody","communicationDate","ActivityCommunicationDate","setValue","stringValue","dateValue","dirty","resetForm","getValues","formValues","fieldId","undefined","reset","ɵɵdirectiveInject","CrmFieldService","selectors","viewQuery","rf","ctx","coerceBooleanProperty","outputs","features","ɵɵInputTransformsFeature","ngContentSelectors","_c3","decls","vars","consts","template","ɵɵelement","CrmActivityLoggerCommunicationComponent_ng_container_5_Template","ɵɵprojection","CrmActivityLoggerCommunicationComponent_ng_container_14_Template","CrmActivityLoggerCommunicationComponent_ng_container_36_Template","ɵɵclassProp","ɵɵpropertyInterpolate","NoInterest","Interested","QualityConnect","Demo","Timeline","Referred","CommonModule","NgIf","TranslateModule","TranslatePipe","TranslationModule","MatIconModule","GalaxyFormFieldModule","FormFieldComponent","FormRowComponent","ErrorDirective","MatSelectModule","MatSelect","MatOption","MatDatepickerModule","MatDatepicker","MatInputModule","MatInput","ReactiveFormsModule","ɵNgNoValidate","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormControlDirective","FormGroupDirective","FormControlName","TextFieldModule","GalaxyRichTextEditorModule","RichTextEditorComponent","styles","CrmTeamAssociationFormFieldComponent","init_team_association_component","__esmMin","init_common","init_core","init_coercion","init_esm","init_interface","init_association_form_field_component","CrmAssociationFormField","constructor","fixedId","mobile","placeholder","associationsChange","EventEmitter","crmObjectType","userService","config","services","filteredAssociationsList","computed","associationsList","filter","association","crmObjectId","associations","value","setAssociations","fetchObjects","objectIds","__async","users","firstValueFrom","getMultiUsers","mapAssociations","setupSearchTerm","searchTerm$$","asObservable","pipe","debounceTime","distinctUntilChanged","switchMap","search","searchUsers","of","map","filteredOptions","o","option","name","displayName","userId","handleAdd","find","a","newAssociations","set","emit","handleRemove","handleSearchTermChange","searchTerm","updateSearchTerm","__ngFactoryType__","selectors","inputs","coerceBooleanProperty","outputs","features","ɵɵInputTransformsFeature","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","$event","ɵɵelementEnd","ɵɵproperty","tmp_3_0","ɵɵpipeBind1","options$","undefined","ɵɵpureFunction0","_c0","CommonModule","AsyncPipe","CrmAssociationFormFieldComponent","encapsulation","CrmSalesOpportunityAssociationFormFieldComponent","init_sales_opportunity_association_component","__esmMin","init_common","init_core","init_coercion","init_esm","init_interface","init_association_form_field_component","CrmAssociationFormField","constructor","mobile","placeholder","associationsChange","EventEmitter","crmObjectType","opportunityService","config","services","accountGroupId","value","setAccountGroupId","associations","setAssociations","fetchObjects","objectIds","__async","opportunities","firstValueFrom","getMultiOpportunity","mapAssociations","setupSearchTerm","searchTerm$$","asObservable","pipe","debounceTime","distinctUntilChanged","switchMap","search","searchOpportunities","of","map","filteredOptions","option","name","crmObjectId","opportunityId","handleAdd","association","associationsList","find","a","newAssociations","set","emit","handleRemove","filter","handleSearchTermChange","searchTerm","updateSearchTerm","__ngFactoryType__","selectors","inputs","coerceBooleanProperty","outputs","features","ɵɵInputTransformsFeature","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","$event","ɵɵelementEnd","ɵɵproperty","tmp_2_0","ɵɵpipeBind1","options$","undefined","ɵɵpureFunction0","_c0","CommonModule","AsyncPipe","CrmAssociationFormFieldComponent","encapsulation","CrmObjectAssociationFormFieldComponent","init_crm_object_association_component","__esmMin","init_common","init_core","init_association_form_field_component","init_tokens_and_interfaces","init_esm","init_shared_services","init_i18n","constructor","objectType","input","required","associationsList","model","customizationService","inject","CrmObjectDisplayService","searchTerm$$","BehaviorSubject","searchTerm$","asObservable","config","CrmInjectionToken","crmObjectService","CrmObjectService","crmFiltersService","CrmFiltersService","options$","setupSearchTerm","crmObjectDependencies","CrmObjectInjectionToken","optional","updateSearchTerm","searchTerm","next","trim","handleAdd","association","update","prevAssociations","find","a","crmObjectId","handleRemove","filter","buildListCrmObjectsRequest","namespace","__async","initialFilters","getInitialAppliedFilters$","search","pagingOptions","cursor","pageSize","filtersV2","convertFilters","combineLatest","namespace$","pipe","debounceTime","distinctUntilChanged","switchMap","from","r","listObjects","map","filteredOptions","crmObjects","option","name","getDisplayName","getObjectDisplayName","associationInfo","getAssociationInfo","crmObjectType","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","$event","ɵɵelementEnd","ɵɵproperty","tmp_1_0","ɵɵpipeBind1","undefined","ɵɵpureFunction0","_c0","ɵɵpipeBind2","CommonModule","AsyncPipe","CrmAssociationFormFieldComponent","TranslateByObjectTypePipe","encapsulation","CrmMultiObjectAssociationFormFieldComponent","init_crm_multi_object_association_component","__esmMin","init_common","init_core","init_association_form_field_component","init_tokens_and_interfaces","init_esm","init_shared_services","init_ngx_translate_core","init_rxjs_interop","constructor","isMobile","input","objectType","model","objectType$","toObservable","objectSubtype","objectSubtype$","availableObjectTypes","associationFormFields","filteredAssociationFormFields","computed","filter","field","includes","type","associationFormFieldsOutput","EventEmitter","customizationService","inject","CrmObjectDisplayService","searchTerm$$","BehaviorSubject","searchTerm$","asObservable","config","CrmInjectionToken","crmObjectService","CrmObjectService","crmFiltersService","CrmFiltersService","opportunityService","services","options$","setupSearchTerm","crmObjectDependencies","CrmObjectInjectionToken","optional","accountGroupId","value","setAccountGroupId","updateSearchTerm","searchTerm","next","trim","handleRemove","association","update","found","updatedAssociationFormFields","map","crmObjectType","updatedAssociations","associations","a","crmObjectId","__spreadProps","__spreadValues","console","warn","emit","handleUpdate","fields","newAssociations","find","f","updateObjectType","set","buildListCrmObjectsRequest","namespace","__async","initialFilters","getInitialAppliedFilters$","search","pagingOptions","cursor","pageSize","filtersV2","convertFilters","crmObjectSubtype","combineLatest","namespace$","pipe","debounceTime","distinctUntilChanged","switchMap","from","r","searchOpportunities","opportunities","mapOpportunityAssociations","of","listObjects","filteredOptions","mapFilteredOptions","crmObjects","option","name","getDisplayName","getObjectDisplayName","associationInfo","getAssociationInfo","opportunityId","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","$event","ɵɵelementEnd","ɵɵproperty","tmp_2_0","ɵɵpipeBind1","undefined","ɵɵpureFunction0","_c0","CommonModule","AsyncPipe","CrmAssociationFormFieldComponent","TranslateModule","TranslatePipe","encapsulation","init_association_form_field","__esmMin","init_contact_to_company_association_component","init_company_association_component","init_team_association_component","init_sales_opportunity_association_component","init_crm_object_association_component","init_crm_multi_object_association_component","ɵɵelementContainer","ɵɵproperty","avatar_r1","ɵɵelementContainerStart","ɵɵtemplate","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_note_6_ng_container_4_ng_container_1_Template","ɵɵadvance","associationFormRow_r4","ɵɵelementStart","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_note_6_ng_container_5_ng_container_2_Template","ɵɵelementEnd","ɵɵclassProp","layout_r5","mobile","associationFormModal_r6","addOpportunities_r7","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","sharedDescription","ɵɵresetView","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_note_6_ng_container_2_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_note_6_ng_container_4_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_note_6_ng_container_5_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_note_6_ng_container_8_Template","ɵɵpipeBind1","activity$","ɵɵtwoWayProperty","activitySelector_r8","showAssociationModal_r12","addTeamMembers_r9","addTags_r10","addFollowUpTask_r11","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_email_7_ng_container_4_ng_container_1_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_email_7_ng_container_5_ng_container_2_Template","_r13","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_email_7_ng_container_2_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_email_7_ng_container_4_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_email_7_ng_container_5_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_email_7_ng_container_8_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_call_8_ng_container_4_ng_container_1_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_call_8_ng_container_5_ng_container_2_Template","_r14","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_call_8_ng_container_2_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_call_8_ng_container_4_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_call_8_ng_container_5_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_call_8_ng_container_8_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_meeting_9_ng_container_4_ng_container_1_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_meeting_9_ng_container_5_ng_container_2_Template","_r15","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_meeting_9_ng_container_2_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_meeting_9_ng_container_4_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_meeting_9_ng_container_5_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_meeting_9_ng_container_8_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_task_10_ng_container_5_ng_container_1_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_task_10_ng_container_6_ng_container_2_Template","_r16","teamAssociations","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_task_10_ng_container_3_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_task_10_ng_container_5_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_task_10_ng_container_6_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_task_10_ng_container_7_Template","activityOwner","user$","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_communication_11_ng_container_4_ng_container_1_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_communication_11_ng_container_5_ng_container_2_Template","_r17","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_communication_11_ng_container_2_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_communication_11_ng_container_4_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_communication_11_ng_container_5_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_communication_11_ng_container_8_Template","communicationSubTypeSelected","ɵɵlistener","_r18","handleDefaultStateFocus","ɵɵpropertyInterpolate","ɵɵpureFunction0","_c1","CrmActivityLoggerComponent_ng_container_0_ng_container_13_ng_container_1_Template","formButtons_r19","ɵɵelement","tmp_16_0","user_r20","fullName","undefined","AVATAR_WIDTH","profileImageUrl","CrmActivityLoggerComponent_ng_container_0_ng_template_14_glxy_avatar_1_Template","CrmActivityLoggerComponent_ng_container_0_ng_template_14_ng_template_3_Template","ɵɵtemplateRefExtractor","editing","unknownUserAvatar_r21","communicationType_r24","_r23","$implicit","onCommunicationTypeChanged","value","ɵɵtext","ɵɵtextInterpolate1","label","_r22","onActivityTypeChanged","CrmActivityLoggerComponent_ng_container_0_ng_template_16_div_0_button_12_Template","noMargins_r26","SELECTABLE_ACTIVITY_TYPES","activityTypeSelected","communicationMenu_r25","getTranslatedCommunicationType","SELECTABLE_COMMUNICATION_TYPES","CrmActivityLoggerComponent_ng_container_0_ng_template_16_div_0_Template","_r27","contactAssociations","companyAssociations","CrmActivityLoggerComponent_ng_container_0_ng_template_18_glxy_form_row_0_Template","hideCrmObjectAssociations","ɵɵstyleProp","CrmActivityLoggerComponent_ng_container_0_ng_template_20_ng_template_7_ng_container_0_Template","CrmActivityLoggerComponent_ng_container_0_ng_template_20_ng_template_7_ng_template_1_Template","logActivity_r29","CrmActivityLoggerComponent_ng_container_0_ng_template_20_Conditional_1_Template","_r28","upsertActivity","CrmActivityLoggerComponent_ng_container_0_ng_template_20_ng_container_6_Template","CrmActivityLoggerComponent_ng_container_0_ng_template_20_ng_template_7_Template","handleCancelClicked","ɵɵconditional","hasTimelineActivitiesFeatureFlag","upsertActivityButtonLoading$","createActivity_r30","_r31","activityOwnerId$","CrmActivityLoggerComponent_ng_container_0_ng_template_22_glxy_form_field_0_Template","showTeamMemberInput","_r32","opportunityAssociations","primaryAccountGroupId$","CrmActivityLoggerComponent_ng_container_0_ng_template_24_glxy_form_field_0_Template","hasOpportunityType$","_r33","updateTags","tags$","_r34","followUpExpandedChanged","CrmActivityLoggerComponent_ng_container_0_ng_template_28_crm_activity_logger_follow_up_task_0_Template","_r35","handleObjectAssociationsUpdate","objectAssociations","availableObjectTypes$","CrmActivityLoggerComponent_ng_container_0_ng_template_30_glxy_form_field_0_Template","ɵɵdeclareLet","CrmActivityLoggerComponent_ng_container_0_Conditional_5_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_note_6_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_email_7_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_call_8_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_meeting_9_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_task_10_Template","CrmActivityLoggerComponent_ng_container_0_crm_activity_logger_communication_11_Template","CrmActivityLoggerComponent_ng_container_0_form_12_Template","CrmActivityLoggerComponent_ng_container_0_ng_container_13_Template","CrmActivityLoggerComponent_ng_container_0_ng_template_14_Template","CrmActivityLoggerComponent_ng_container_0_ng_template_16_Template","CrmActivityLoggerComponent_ng_container_0_ng_template_18_Template","CrmActivityLoggerComponent_ng_container_0_ng_template_20_Template","CrmActivityLoggerComponent_ng_container_0_ng_template_22_Template","CrmActivityLoggerComponent_ng_container_0_ng_template_24_Template","CrmActivityLoggerComponent_ng_container_0_ng_template_26_Template","CrmActivityLoggerComponent_ng_container_0_ng_template_28_Template","CrmActivityLoggerComponent_ng_container_0_ng_template_30_Template","ɵɵstoreLet","showAssociationModal$","DEFAULT_SELECTED_ACTIVITY_TYPE","DEFAULT_MOBILE_BREAKPOINT","manuallyLoggedFieldValue","CrmActivityLoggerComponent","init_activity_logger_component","__esmMin","init_common","init_core","init_rxjs_interop","init_forms","init_autocomplete","init_button","init_card","init_chips","init_icon","init_input","init_menu","init_tooltip","init_ngx_translate_core","init_avatar","init_button_loading_indicator","init_form_field","init_src","init_esm","init_operators","init_chip_list","init_unknown_user_avatar_component","init_tokens_and_interfaces","init_constants","init_i18n","init_activity_logger_service","init_logger","init_communication_component","init_shared_services","init_association_form_field","icon","fieldId","StandardIds","ActivityManuallyLogged","booleanValue","objectType","objectType$$","next","crmObjectId","crmObjectId$$","expandAndSelectType","activityType","layout","layout$$","crmActivityId","crmActivityId$$","find","field","type","associations","newAssociations","update","fields","map","__spreadProps","__spreadValues","constructor","config","displayService","activityLoggerService","crmObjectService","snackService","fieldsService","associationService","breakpointObserver","collapsed","signal","BehaviorSubject","ReplaySubject","objectType$","asObservable","isCompany$","pipe","crmObjectId$","crmActivityId$","activityCreated","EventEmitter","activityUpdated","cancel","activity$$","tags$$","upsertActivityWorkState$","ObservableWorkState","isLoading$","showOpportunityInput","hasCrmAssociationModalFeatureFlag$","of","followUpExpanded$$","toSignal","hasTimelineActivitiesFeatureFlag$","takeUntilDestroyed","switchMap","getActivity","tap","activity","tags","getFieldValueFromCrmObject","ActivityTags","stringValues","values","subscribe","combineLatest","user","ownerId","userId","distinctUntilChanged","isEditing$","Boolean","services","userService","searchUsers","opportunityService","crmObject$","crmObjectType","getMultiObject","response","crmObjects","filter","shareReplay","crmObjectName$","crmObject","getObjectDisplayName","getPrimaryAccountGroupId","parentNamespace$","isCompany","accountGroupId","parentNamespace","startWith","types","includes","mobileLayout$","setupMobileMatcher","workResults$","crmIds","from","mergeMap","crmId","created","getTime","updated","emit","successEvents$","success","__async","isEditing","firstValueFrom","successMsg","errorMsg","openSuccessSnack","duration","SNACKBAR_DURATION","collapse","openErrorSnack","initializeActivity","toObservable","isCollapsed","withLatestFrom","_","crmObjectSubtype","updateValueAndValidity","setDefaultObjectAssociations","setAssociationValues","setDefaultActivity","setDefaultUserAssociation","setDefaultAssociationsByObjectType","setDefaultCurrentObjectAssociation","take","objectDefault","name","setAssociationsInObjectAssociations","existing","userDefault","getDefaultAssociationsByObjectType","set","associationObjectType","hideForObjectTypes","objectId","getAssociationsWithAssociatedObjectForObject$","association","associatedObject","catchError","updatedAssociations","expand","communicationSubType","toUpperCase","validateForm","fieldValues","getSelectedComponent","getValues","work$","crmObjectName","isFollowUpExpanded","tagsField","apiCalls","activityId","fieldMask","getFieldMaskFromFormGroup","formGroup","getValue","push","updateActivity","mergeAssociations","addActivity","followUpFieldValues","loggerFollowUpTaskComponent","startWork","loggerNoteComponent","loggerEmailComponent","loggerCallComponent","loggerMeetingComponent","loggerTaskComponent","loggerCommunicationComponent","isFormValid","valid","item","setAssociationsByObjectType","customObjectAssociation","getAssociationObjects","then","formFields","objectIds","setAssociations","validate","clearFields","isExpanded","resetForm","extraAssociations","mergedAssociations","forEach","PlatformExtensionFieldIds","AccountGroupID","stringValue","mobileMedia$","observe","result","matches","switchWhenFalsy","tagEvent","ɵɵdirectiveInject","CrmInjectionToken","CrmObjectDisplayService","ActivityLoggerService","CrmObjectService","SnackbarService","CrmFieldService","CrmAssociationService","BreakpointObserver","selectors","viewQuery","rf","ctx","CrmActivityLoggerNoteComponent","CrmActivityLoggerEmailComponent","CrmActivityLoggerCallComponent","CrmActivityLoggerMeetingComponent","CrmActivityLoggerTaskComponent","CrmActivityLoggerCommunicationComponent","CrmActivityLoggerFollowUpTaskComponent","decls","vars","consts","template","CrmActivityLoggerComponent_ng_container_0_Template","ɵɵpureFunction2","_c0","CommonModule","NgForOf","NgIf","NgTemplateOutlet","NgSwitch","NgSwitchCase","NgSwitchDefault","AsyncPipe","TranslateModule","TranslatePipe","TranslationModule","MatCardModule","MatCard","MatCardActions","MatCardAvatar","MatCardContent","MatIconModule","MatIcon","MatAutocompleteModule","MatChipsModule","MatButtonModule","MatButton","GalaxyAvatarModule","AvatarComponent","GalaxyFormFieldModule","FormFieldComponent","FormRowComponent","MatInputModule","MatInput","ReactiveFormsModule","ɵNgNoValidate","NgControlStatusGroup","CrmUnknownUserAvatarComponent","MatTooltipModule","GalaxyButtonLoadingIndicatorModule","ButtonLoadingIndicatorComponent","ChipListComponent","CrmLoggerContentDirective","CrmTeamAssociationFormFieldComponent","CrmSalesOpportunityAssociationFormFieldComponent","MatMenuModule","MatMenu","MatMenuItem","MatMenuTrigger","CrmActivityLoggerTagsComponent","CrmObjectAssociationFormFieldComponent","CrmMultiObjectAssociationFormFieldComponent","styles","OpenOverdueTaskFilters","ActivitiesTimelineService","init_timeline_service","__esmMin","init_core","init_rxjs_interop","init_vendasta_crm","init_esm","init_operators","init_constants","init_tokens_and_interfaces","init_shared_services","init_utils","operator","FilterGroupOperator","FILTER_GROUP_OPERATOR_AND","filters","fieldId","StandardIds","ActivityTaskStatus","FilterOperator","FILTER_OPERATOR_IS","values","string","Open","ActivityTaskDueDate","FILTER_OPERATOR_IS_BEFORE","dateDefault","DateDefault","DATE_DEFAULT_TODAY","constructor","state","activityService","fieldService","translateService","iamService","crmObjectService","config","upcomingSectionName","instant","crmObjectId$$","BehaviorSubject","objectType$$","destroyRef","inject","DestroyRef","set","activitiesLoading","activitiesLoadMore","activitiesChanged","activitiesPagedResponseMetadata","activities","activitySections","uniqueUserIds","searchTerm","lockedActivityEffectiveDate","Map","initialized","setupReloadActivities","setupLoadMore","setupUniqueUsers","getActivitySections","prioritizeOverdueTask","activitiesWithEffectiveDate","map","activity","atv","toActivityWithEffectiveDate","crmObjectId","effectiveDate","get","overdueTasks","filter","getFieldValueFromCrmObject","stringValue","getTime","Date","now","sort","a","b","upcomingActivities","overdueTasksAndUpcomingActivities","pastActivities","find","item","length","push","name","pastSectionsMap","startOfMonth","getFullYear","getMonth","startOfMonthTime","has","toLocaleString","month","date","pastSections","crmActivity","SystemFieldIds","ActivityEffectiveDate","dateValue","isLoggedActivity","ActivityManuallyLogged","booleanValue","Error","__spreadProps","__spreadValues","initializeState","combineLatest","select","asObservable","pipe","takeUntilDestroyed","skipWhile","debounceTime","tap","switchMap","objectType","hasMore","of","crmFilters","convertFilters","request","crmObjectType","pagingOptions","pageSize","ACTIVITIES_TIMELINE_PAGE_SIZE","cursor","nextCursor","search","filtersV2","addPredefinedFilters","activities$","listActivities","overdueTasks$","overdueRequest","response","allActivities","pagingMetadata","filteredActivities","filterActivities","mergedActivities","updatedMergedActivities","updatedActivities","mergeEmailActivities","subscribe","connect","ownerId","includes","getMultiUsers","distinctUntilChanged","reloadActivities","loadMoreActivities","activitiesWithEffectiveDateMap","lockActivityEffectiveDate","created","hideTaskAndSystemActivities","predefFilter","boolean","ActivityType","emailActivitiesMap","addEmailActivities","forEach","emailType","ActivityEmailType","emailID","ActivityEmailID","existingCampaignActivity","mostRecentActivity","relatedActivities","some","relatedActivity","Array","from","filterCampaignActivities","existingCampaignActivities","activitiesToRemove","Set","updated","slice","subject","ActivityEmailSubject","body","ActivityEmailBody","needSubject","needBody","relatedSubject","setFieldValueOnCrmObject","relatedBody","add","getRelatedCampaignActivities","activityID","campaignActivity","flatMap","ɵɵinject","RxState","ActivityService","CrmFieldService","TranslateService","IAMService","CrmObjectService","CrmInjectionToken","factory","ɵfac","enumStringToValue$8","enumRef","value","enumStringToValue$7","enumStringToValue$5","enumStringToValue","Currency","DurationPeriod","RevenuePeriod","MEDDICSection","ClientOrigin","ClosedLostReasonOption","OpportunityRevenuePeriod","SortDirection","ListOpportunitiesRequestSortField","LineItemAppKey","BillingPeriod","Cost","CustomPriceMapping","Duration","LineItem","Revenue","RevenueComponent","ScoringScore","Scoring","Forecasting","RevenueInMonth","Attachment","CSVExports","CSVFormatOptions","ClosedLostReason","CurrentOpportunityPoint","DateRangeFilter","ListOpportunitiesRequestFilters","InitiateOpportunityExportRequest","ListOpportunitiesRequest","Opportunity","OpportunityCount","OpportunityValue","Package","PipelineClosePoint","PipelineCreationPoint","ProbabilityRangeFilter","RevenuePeriodFilter","ListOpportunitiesRequestSortOption","Pipeline","Stage","AddAttachmentToOpportunityRequest","AddOpportunityPackagesRequest","AddOpportunityPackagesResponse","AddPipelineStagesRequestAddPipelineStage","AddPipelineStagesRequest","AddPipelineStagesResponse","CloseAsLostOpportunityRequest","CloseAsLostOpportunityResponse","CloseAsWonOpportunityRequest","CloseAsWonOpportunityResponse","CreateOpportunityRequestCreateOpportunityPackage","CreateOpportunityRequest","CreateOpportunityResponse","CreatePipelineRequest","CreatePipelineResponse","CreatePipelineRequestCreatePipelineStage","DeleteOpportunityRequest","DeletePipelineRequest","DeletePipelineResponse","GetOpportunityByIdempotencyKeyRequest","GetOpportunityCountByAccountGroupsRequest","GetOpportunityCountByAccountGroupsResponse","GetOpportunityRequest","GetOpportunityResponse","GetOpportunityValueByAccountGroupsRequest","GetOpportunityValueByAccountGroupsResponse","GetTagsForOpportunitiesRequest","GetTagsForOpportunitiesResponse","InitiateOpportunityExportResponse","ListOpportunitiesResponse","ListPipelinesRequest","ListPipelinesResponse","PagedRequestOptions","PagedResponseMetadata","RemoveOpportunityPackagesRequest","RemoveOpportunityPackagesResponse","RemovePipelineStagesRequest","RemovePipelineStagesResponse","ReopenClosedOpportunityRequest","SalespersonStatsRequest","SalespersonStatsResponse","SetPipelineStagesRequest","SetPipelineStagesResponse","UpdateClosedDateRequest","UpdateLastActivityDateRequest","UpdateLastActivityDateResponse","UpdateLastConnectedDateRequest","UpdateLastConnectedDateResponse","UpdateLineItemsRequest","UpdateLineItemsResponse","UpdateOpportunityDurationRequest","UpdateOpportunityDurationResponse","UpdateOpportunityExpectedCloseDateRequest","UpdateOpportunityExpectedCloseDateResponse","UpdateOpportunityMarketRequest","UpdateOpportunityMarketResponse","UpdateOpportunityNameRequest","UpdateOpportunityNameResponse","UpdateOpportunityNotesRequest","UpdateOpportunityNotesResponse","UpdateOpportunityPackageRequest","UpdateOpportunityPackageResponse","UpdateOpportunityPackageRevenueRequest","UpdateOpportunityPackageRevenueResponse","UpdateOpportunityPipelineAndProbabilityRequest","UpdateOpportunityPipelineRequest","UpdateOpportunityProbabilityRequest","UpdateOpportunityProbabilityResponse","UpdateOpportunitySalespersonRequest","UpdateOpportunitySalespersonResponse","UpdateOpportunityTagsRequest","UpdateOpportunityTagsResponse","UpdateOpportunityTypeRequest","UpdateOpportunityTypeResponse","UpdatePipelineNameRequest","UpdatePipelineNameResponse","UpdatePipelineStageNameRequest","UpdatePipelineStageNameResponse","UpdatePipelineStageProbabilityRequest","UpdatePipelineStageProbabilityResponse","UpdateSubscriberUserIDsRequest","environment","hostMap","HostService","SalesOpportunitiesApiService","SalesPipelinesApiService","DEFAULT_PIPELINE_ID","SalesOpportunitiesService","SalesPipelinesService","init_vendasta_sales_opportunities","__esmMin","init_core","init_http","init_operators","_LineItemAppKey","proto","m","kwargs","toReturn","_BillingPeriod","_Cost","_CustomPriceMapping","_Duration","_LineItem","_Revenue","_RevenueComponent","_ScoringScore","_Scoring","_Forecasting","_RevenueInMonth","_Attachment","_CSVExports","_CSVFormatOptions","_ClosedLostReason","_CurrentOpportunityPoint","_DateRangeFilter","_ListOpportunitiesRequestFilters","_InitiateOpportunityExportRequest","_ListOpportunitiesRequest","_Opportunity","_OpportunityCount","_OpportunityValue","_Package","_PipelineClosePoint","_PipelineCreationPoint","_ProbabilityRangeFilter","_RevenuePeriodFilter","_ListOpportunitiesRequestSortOption","_Pipeline","_Stage","_AddAttachmentToOpportunityRequest","_AddOpportunityPackagesRequest","_AddOpportunityPackagesResponse","_AddPipelineStagesRequestAddPipelineStage","_AddPipelineStagesRequest","_AddPipelineStagesResponse","_CloseAsLostOpportunityRequest","_CloseAsLostOpportunityResponse","_CloseAsWonOpportunityRequest","_CloseAsWonOpportunityResponse","_CreateOpportunityRequestCreateOpportunityPackage","_CreateOpportunityRequest","_CreateOpportunityResponse","_CreatePipelineRequest","_CreatePipelineResponse","_CreatePipelineRequestCreatePipelineStage","_DeleteOpportunityRequest","_DeletePipelineRequest","_DeletePipelineResponse","_GetOpportunityByIdempotencyKeyRequest","_GetOpportunityCountByAccountGroupsRequest","_GetOpportunityCountByAccountGroupsResponse","_GetOpportunityRequest","_GetOpportunityResponse","_GetOpportunityValueByAccountGroupsRequest","_GetOpportunityValueByAccountGroupsResponse","_GetTagsForOpportunitiesRequest","_GetTagsForOpportunitiesResponse","_InitiateOpportunityExportResponse","_ListOpportunitiesResponse","_ListPipelinesRequest","_ListPipelinesResponse","_PagedRequestOptions","_PagedResponseMetadata","_RemoveOpportunityPackagesRequest","_RemoveOpportunityPackagesResponse","_RemovePipelineStagesRequest","_RemovePipelineStagesResponse","_ReopenClosedOpportunityRequest","_SalespersonStatsRequest","_SalespersonStatsResponse","_SetPipelineStagesRequest","_SetPipelineStagesResponse","_UpdateClosedDateRequest","_UpdateLastActivityDateRequest","_UpdateLastActivityDateResponse","_UpdateLastConnectedDateRequest","_UpdateLastConnectedDateResponse","_UpdateLineItemsRequest","_UpdateLineItemsResponse","_UpdateOpportunityDurationRequest","_UpdateOpportunityDurationResponse","_UpdateOpportunityExpectedCloseDateRequest","_UpdateOpportunityExpectedCloseDateResponse","_UpdateOpportunityMarketRequest","_UpdateOpportunityMarketResponse","_UpdateOpportunityNameRequest","_UpdateOpportunityNameResponse","_UpdateOpportunityNotesRequest","_UpdateOpportunityNotesResponse","_UpdateOpportunityPackageRequest","_UpdateOpportunityPackageResponse","_UpdateOpportunityPackageRevenueRequest","_UpdateOpportunityPackageRevenueResponse","_UpdateOpportunityPipelineAndProbabilityRequest","_UpdateOpportunityPipelineRequest","_UpdateOpportunityProbabilityRequest","_UpdateOpportunityProbabilityResponse","_UpdateOpportunitySalespersonRequest","_UpdateOpportunitySalespersonResponse","_UpdateOpportunityTagsRequest","_UpdateOpportunityTagsResponse","_UpdateOpportunityTypeRequest","_UpdateOpportunityTypeResponse","_UpdatePipelineNameRequest","_UpdatePipelineNameResponse","_UpdatePipelineStageNameRequest","_UpdatePipelineStageNameResponse","_UpdatePipelineStageProbabilityRequest","_UpdatePipelineStageProbabilityResponse","_UpdateSubscriberUserIDsRequest","__ngFactoryType__","ɵɵdefineInjectable","inject","HttpClient","HttpHeaders","r","request","map","resp","__spreadProps","__spreadValues","_api","accountGroupId","opportunityId","editSalesPersonId","expectedCloseDate","createSalesActivity","req","salesPersonId","name","url","marketId","partnerId","probability","pipelineId","packages","notes","tags","expectedContractDuration","lineItems","subscriberUserIds","opportunityType","opportunityID","accountGroupID","editSalespersonID","accountGroupIds","onlyOpen","requestParams","filters","sortOption","searchTerm","pageSize","cursor","reason","response","csvExports","csvOptions","clientOrigin","ɵɵinject","stages","stageId","stageName","stageIds","SanitizeHtmlPipe","init_sanitize_html_pipe","__esmMin","init_core","constructor","_sanitizer","transform","value","sanitize","SecurityContext","HTML","ɵɵdirectiveInject","DomSanitizer","pure","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind2","cardInfo_r1","effectiveDate","ctx_r1","dateFormat","ɵɵpipeBind1","ɵɵproperty","ɵɵpureFunction2","_c0","activityInfo_r4","status","ɵɵtextInterpolate","lostReason","ɵɵtemplate","CrmActivityOpportunityUpdatedComponent_ng_container_0_div_11_div_5_div_1_Template","ɵɵelement","notes","ɵɵsanitizeHtml","ɵɵlistener","ɵɵrestoreView","_r3","ɵɵnextContext","ɵɵresetView","handleOpenOpportunity","CrmActivityOpportunityUpdatedComponent_ng_container_0_div_11_div_4_Template","CrmActivityOpportunityUpdatedComponent_ng_container_0_div_11_div_5_Template","CrmActivityOpportunityUpdatedComponent_ng_container_0_div_11_div_6_Template","opportunityName","isClosedWon","ɵɵelementContainerStart","CrmActivityOpportunityUpdatedComponent_ng_container_0_p_9_Template","CrmActivityOpportunityUpdatedComponent_ng_container_0_div_11_Template","ɵɵstyleProp","showAvatar","AVATAR_WIDTH","toString","headerText","activityInfo","CrmActivityOpportunityUpdatedComponent","init_opportunity_change_component","__esmMin","init_core","init_common","init_ngx_translate_core","init_field_service","init_tokens_and_interfaces","init_card","init_pipes","init_avatar","init_date_utils","init_constants","init_state","init_vendasta_sales","init_operators","init_esm","init_rxjs_interop","init_vendasta_sales_opportunities","init_platform_api_service","init_sanitize_html_pipe","#activity","checkClosedWon","opportunityChangeStatus","fieldService","getFieldValueFromCrmObject","StandardIds","ActivityOpportunityChangePipelineStage","stringValue","toLowerCase","ngOnInit","activity","set","_showAvatar","getStringFieldData","fieldId","__async","opportunityId","ActivityOpportunityChangeID","accountGroupId","firstValueFrom","accountGroupId$","config","customActions","openOpportunitiesDetails","constructor","translateService","crmPlatformApiService","salespersonService","opportunityApi","signal","DateFormat","medium","salespersonId","computed","ActivityOpportunityChangeSalespersonID","namespace","toSignal","namespace$","effectResult","undefined","instant","opportunityUpdatedBy","cardInfo","updatedBy","opportunityChangeLostReason","ActivityOpportunityChangeLostReason","opportunityChangeNotes","ActivityOpportunityChangeNotes","formattedStatus","charAt","toUpperCase","slice","formattedLostReason","SystemFieldIds","ActivityEffectiveDate","dateValue","toObservable","pipe","map","associations","find","association","crmObjectType","crmObjectId","filter","companyId","switchMap","getAccountGroupForCompany","combineLatest","get","opportunity","name","catchError","of","effect","getSalespersonBySubjectId","salesperson","firstName","lastName","take","subscribe","ɵɵdirectiveInject","CrmFieldService","TranslateService","CrmPlatformApiService","SalespersonService","CrmInjectionToken","SalesOpportunitiesService","selectors","inputs","features","ɵɵProvidersFeature","RxState","decls","vars","consts","template","rf","ctx","CrmActivityOpportunityUpdatedComponent_ng_container_0_Template","CommonModule","NgClass","NgIf","DatePipe","TranslateModule","TranslatePipe","MatCardModule","MatCard","MatCardAvatar","MatCardContent","MatCardHeader","MatCardSubtitle","MatCardTitle","GalaxyPipesModule","GalaxyAvatarModule","AvatarComponent","SanitizeHtmlPipe","styles","OnResizeDirective","init_on_resize_directive","__esmMin","init_core","onWindowResize","resizeDetected","emit","constructor","element","EventEmitter","window","ResizeObserver","resizeObserver","observe","nativeElement","ɵɵdirectiveInject","ElementRef","selectors","hostBindings","rf","ctx","ɵɵlistener","ɵɵresolveWindow","ɵɵelement","ɵɵstyleProp","ctx_r1","maxHeightPx","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r3","ɵɵnextContext","ɵɵresetView","toggleCollapsed","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵpureFunction1","_c3","collapsed","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","CollapsibleSectionComponent","init_collapsible_section_component","__esmMin","init_common","init_core","init_ngx_translate_core","init_translation_module","init_on_resize_directive","init_observers","constructor","showBorderWhenCollapsed","signal","collapsible","update","value","checkForOverflow","element","collapsibleContentContainer","nativeElement","isOverflow","scrollHeight","offsetHeight","set","selectors","viewQuery","rf","ctx","i0","_r1","ɵɵprojection","ɵɵtemplate","CollapsibleSectionComponent_div_4_Template","CollapsibleSectionComponent_p_5_Template","undefined","ɵɵpureFunction2","_c2","CommonModule","NgClass","NgIf","TranslateModule","TranslatePipe","TranslationModule","ObserversModule","CdkObserveContent","OnResizeDirective","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","openaiRealtimeConfig_r5","voice","turnDetection","threshold","prefixPadding","silenceDuration","ɵɵdeclareLet","ɵɵlistener","ɵɵrestoreView","_r2","popover_r3","ɵɵreference","ɵɵresetView","open","ɵɵtwoWayListener","$event","ctx_r3","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","show","ɵɵtemplate","CallTranscriptModalComponent_Conditional_5_Conditional_9_Template","CallTranscriptModalComponent_Conditional_5_Conditional_10_Template","CallTranscriptModalComponent_Conditional_5_Conditional_11_Template","CallTranscriptModalComponent_Conditional_5_Conditional_12_Template","ɵɵstoreLet","callRecord_r6","metadata","voiceConfig","openaiRealtimeConfig","ɵɵproperty","ɵɵtwoWayProperty","ɵɵpureFunction1","_c0","PopoverPositions","Left","ɵɵconditional","openaiRealtimeConfig_r7","ɵɵelement","ɵɵpipeBind2","message_r8","timestamp","content","ɵɵrepeaterCreate","CallTranscriptModalComponent_For_20_For_2_Template","ɵɵrepeaterTrackByIdentity","messageGroup_r9","name","assistantLoading_r11","assistantProfilePicUrl_r10","undefined","data","toName","fromName","OPENAI_BOT_SVG_ICON","OPENAI_BOT_BACKGROUND_COLOR","ɵɵrepeater","messages","CallTranscriptModalComponent","init_call_transcript_modal_component","__esmMin","init_core","init_dialog","init_common","init_ngx_translate_core","init_chat","init_src","init_esm","init_popover","init_icon","init_button","init_vendasta_voice","init_operators","init_router","constructor","dialogRef","transcript","buildTranscriptFromJSON","transcriptJSON","DEFAULT_AVATAR_SVG_ICON","assistantService","inject","AiAssistantService","voiceApi","VoiceApiService","signal","route","ActivatedRoute","showVoiceConfig$","queryParamMap","pipe","tap","params","console","log","map","get","namespace","accountGroupId","accountGroupNamespace","partnerId","partnerNamespace","callRecordId","callRecord$","getCallRecord","id","resp","callRecord","shareReplay","refCount","bufferSize","of","callRecordHasVoiceSettings$","config","Boolean","agid","pid","assistantThatHandledCall$","switchMap","getAssistant","assistantId","assistantDetails$","assistant","avatarUrl","loading","startWith","assistantProfilePic$","details","assistantLoading$","closeDialog","close","JSON","parse","length","results","shift","message","push","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","CallTranscriptModalComponent_Conditional_5_Template","_r1","CallTranscriptModalComponent_For_20_Template","ɵɵtextInterpolate","tmp_4_0","MatDialogModule","MatDialogTitle","MatDialogContent","TranslateModule","TranslatePipe","DatePipe","CommonModule","AsyncPipe","ChatMessageComponent","ChatMessageGroupComponent","GalaxyChatModule","ChatContainerComponent","GalaxyPopoverModule","PopoverComponent","GalaxyPopoverDirective","MatIcon","MatIconButton","styles","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ctx_r0","AVATAR_WIDTH","ɵɵtext","ɵɵtextInterpolate","headerText_r2","ɵɵpipeBind1","ɵɵtextInterpolate1","ɵɵpipeBind2","cardInfo_r3","date","dateFormat","cardTitle_r4","from","to","ɵɵtemplate","CrmActivityCallComponent_div_0_Conditional_16_Conditional_1_Conditional_2_Template","CrmActivityCallComponent_div_0_Conditional_16_Conditional_1_Conditional_5_Template","ctx","ɵɵconditional","ownerName","CrmActivityCallComponent_div_0_Conditional_16_Conditional_1_Template","tmp_4_0","associatedCrmObject","CrmActivityCallComponent_div_0_Conditional_17_Conditional_4_Conditional_2_Template","CrmActivityCallComponent_div_0_Conditional_17_Conditional_3_Template","CrmActivityCallComponent_div_0_Conditional_17_Conditional_4_Template","tmp_6_0","body","ɵɵsanitizeHtml","ɵɵelementContainerStart","ɵɵpropertyInterpolate","callUrl_r5","ɵɵsanitizeUrl","ɵɵlistener","ɵɵrestoreView","_r6","ɵɵnextContext","ɵɵresetView","openTranscriptModal","CrmActivityCallComponent_div_0_div_3_Template","CrmActivityCallComponent_div_0_span_5_Template","CrmActivityCallComponent_div_0_ng_template_6_Template","ɵɵtemplateRefExtractor","CrmActivityCallComponent_div_0_p_9_Template","CrmActivityCallComponent_div_0_span_13_Template","CrmActivityCallComponent_div_0_Conditional_16_Template","CrmActivityCallComponent_div_0_Conditional_17_Template","CrmActivityCallComponent_div_0_Conditional_19_Template","CrmActivityCallComponent_div_0_ng_container_20_Template","CrmActivityCallComponent_div_0_Conditional_22_Template","ɵɵstyleProp","showAvatar","toString","headerText","unknown_r7","cardTitle","direction","callRecordingSource$","transcriptJSON","CrmActivityCallComponent","init_call_component","__esmMin","init_common","init_core","init_rxjs_interop","init_card","init_ngx_translate_core","init_state","init_avatar","init_pipes","init_date_utils","init_esm","init_operators","init_constants","init_translation_module","init_field_service","init_tokens_and_interfaces","init_collapsible_section_component","init_chat","init_call_transcript_modal_component","init_libphonenumber_js","init_layout","getAssociatedObjectName","combineLatest","objectType$","associatedObjectId$","pipe","switchMap","objectType","associatedObjectId","crmObjectService","getMultiObject","map","data","crmObject","crmObjects","firstName","fieldService","getFieldValueFromCrmObject","StandardExternalIds","FirstName","stringValue","lastName","LastName","filter","Boolean","join","StandardIds","CompanyName","of","getStringFieldData","activity","fieldId","formatPhoneNumber","phoneNumber","parsePhoneNumberFromString","defaultCountry","formatInternational","__async","toName","fromName","cardInfo","namespace","parentNamespace","firstValueFrom","config","namespace$","parentNamespace$","partnerId","accountGroupId","dialogRef","dialog","open","CallTranscriptModalComponent","width","maxWidth","maxHeight","callRecordId","smallDialogSubscription","isExtraSmall","subscribe","size","matches","updateSize","afterClosed","unsubscribe","constructor","http","DateFormat","mediumDateShortTime","input","required","toObservable","associatedCrmObject$","toSignal","inject","CrmInjectionToken","breakpointObserver","BreakpointObserver","observe","Breakpoints","XSmall","computed","directionText","status","duration","minutes","Math","floor","seconds","toFixed","owner","ownerUser","trim","ownerId","sourceName","ActivitySourceName","ActivityCallBody","ActivityCallStatus","ActivityCallDirection","SystemFieldIds","ActivityEffectiveDate","dateValue","ActivityCallToNumber","ActivityCallFromNumber","ActivityCallDuration","integerValue","ActivityCallTranscript","callRecordingUrl","ActivityCallRecordingUrl","ActivityCallRecordId","get","responseType","withCredentials","ɵɵdirectiveInject","CrmFieldService","HttpClient","CrmObjectService","MatDialog","selectors","inputs","features","ɵɵProvidersFeature","RxState","decls","vars","consts","template","rf","CrmActivityCallComponent_div_0_Template","CommonModule","NgIf","AsyncPipe","DatePipe","TranslateModule","TranslatePipe","TranslationModule","CollapsibleSectionComponent","MatCardModule","MatCard","MatCardAvatar","MatCardContent","MatCardHeader","MatCardSubtitle","MatCardTitle","GalaxyAvatarModule","AvatarComponent","GalaxyPipesModule","GalaxyITrustThisHtmlPipe","GalaxyChatModule","styles","ActivityAssociationService","init_activity_association_service","__esmMin","init_core","init_vendasta_crm","init_esm","init_tokens_and_interfaces","init_constants","init_shared_services","init_rxjs_interop","activity","_activity","set","constructor","fieldService","objectService","customObjectTypeService","signal","config","inject","CrmInjectionToken","primaryAccountGroupId$","PrimaryAccountGroupIDForCrmObject","opportunityService","services","userService","opportunityApiService","CRMOpportunityApiService","routePrefix","toSignal","routePrefix$","companies$","toObservable","pipe","switchMap","ids","associations","filter","a","crmObjectType","crmObjectId","map","length","getMultiObject","of","response","crmObjects","crmObject","o","newActivityAssociationDisplayInfo","getFieldValueFromCrmObject","StandardIds","CompanyName","stringValue","PAGE_ROUTES","COMPANY","ROOT","SUBROUTES","PROFILE","replace","companies","initialValue","contacts$","displayName","StandardExternalIds","FirstName","LastName","CONTACT","contacts","customObjects$","CustomObjectName","CUSTOM_OBJECT","crmObjectSubtype","customObjects","customObjectGroups$","combineLatest","namespace$","namespace","customObjectIds","Array","from","Set","objectSubtype","getMultiCustomObjectType","customObjectTypeIds","customObjectGroups","customObjectTypes","customObjectType","push","customObjectTypeId","objectGroupName","pluralObjectName","activityAssociationDisplayInfo","customObject","group","find","opportunityIds$","legacyOpportuynities$","startWith","accountGroupId","opportunityIds","fetchLegacyOpportunities","crmOpportunities$","fetchCrmOpportunities","opportunities$","opportunities","legacyOpportuynities","concat","primaryAssociation$","primaryAssociation","userIds$","getMultiUsers","users","user","userId","teamMembers","associationCount$","reduce","acc","curr","numberOfAssociations","name","link","objectType","linkUrl","legacyIds","id","startsWith","setAccountGroupId","getMultiOpportunity","crmObjectIds","getOpportunityInfo","fields","f","fieldId","OpportunityName","OPPORTUNITY","ɵɵinject","CrmFieldService","CrmObjectService","CRMCustomObjectTypeApiService","factory","ɵfac","ɵɵelement","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","openPopover","activity","ɵɵtext","ɵɵelementEnd","ɵɵproperty","associations_r4","ɵɵadvance","ɵɵtextInterpolate2","numberOfAssociations","ɵɵpipeBind1","ɵɵtemplate","CrmActivityAssociationPopoverComponent_div_0_hr_1_Template","CrmActivityAssociationPopoverComponent_div_0_Conditional_3_Template","hideDivider","ɵɵconditional","ɵɵelementContainer","itemTemplate_r6","ɵɵpureFunction1","_c1","contact_r5","ɵɵrepeaterCreate","CrmActivityAssociationPopoverComponent_div_3_For_5_Template","ɵɵrepeaterTrackByIndex","ɵɵtextInterpolate","ɵɵrepeater","contacts","company_r7","CrmActivityAssociationPopoverComponent_div_4_For_5_Template","companies","customObject_r8","CrmActivityAssociationPopoverComponent_div_5_For_2_For_5_Template","ɵɵrepeaterTrackByIdentity","ɵɵtextInterpolate1","ɵɵpipeBind2","_c2","customObjectGroup_r9","objectGroupName","activityAssociationDisplayInfo","CrmActivityAssociationPopoverComponent_div_5_For_2_Template","customObjectGroups","opportunity_r10","CrmActivityAssociationPopoverComponent_div_6_For_5_Template","opportunities","member_r11","CrmActivityAssociationPopoverComponent_div_7_For_5_Template","teamMembers","routePrefix","item_r12","linkUrl","name","CrmActivityAssociationPopoverComponent_ng_template_8_Conditional_0_Template","CrmActivityAssociationPopoverComponent_ng_template_8_Conditional_1_Template","isMultiLocation","CrmActivityAssociationPopoverComponent","init_association_popover_component","__esmMin","init_common","init_translation_module","init_router","init_popover","init_icon","init_tokens_and_interfaces","init_rxjs_interop","init_esm","associationService","constructor","multiLocationConfig","popupOpen","PopoverPositions","toSignal","isMultiLocation$","of","crmObjectId","ɵɵdirectiveInject","CrmMultilocationInjectionToken","ActivityAssociationService","selectors","inputs","decls","vars","consts","template","rf","ctx","CrmActivityAssociationPopoverComponent_div_0_Template","ɵɵtwoWayListener","$event","i0","_r1","ɵɵtwoWayBindingSet","CrmActivityAssociationPopoverComponent_div_3_Template","CrmActivityAssociationPopoverComponent_div_4_Template","CrmActivityAssociationPopoverComponent_div_5_Template","CrmActivityAssociationPopoverComponent_div_6_Template","CrmActivityAssociationPopoverComponent_div_7_Template","CrmActivityAssociationPopoverComponent_ng_template_8_Template","ɵɵtemplateRefExtractor","associations","length","ɵɵtwoWayProperty","ɵɵpureFunction2","_c0","Bottom","Top","tmp_8_0","tmp_9_0","tmp_10_0","tmp_11_0","tmp_12_0","CommonModule","NgIf","NgTemplateOutlet","TranslationModule","TranslatePipe","RouterLink","GalaxyPopoverModule","PopoverComponent","GalaxyPopoverDirective","MatIconModule","MatIcon","styles","getActivityUrl","activityUrl","urlToCheck","startsWith","url","URL","host","toString","test","window","location","protocol","pathname","init_activity_url_builder","__esmMin","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ctx_r0","AVATAR_WIDTH","isPhoneCall","ɵɵpipeBind1","cardInfo","body","ɵɵsanitizeHtml","ɵɵtext","activityUrl","ɵɵsanitizeUrl","ɵɵtextInterpolate","activityUrlName","ɵɵtextInterpolate1","ɵɵpipeBind2","effectiveDate","dateFormat","ɵɵtemplate","CrmActivityCommunicationComponent_Conditional_0_Conditional_1_Conditional_1_Template","CrmActivityCommunicationComponent_Conditional_0_Conditional_1_Conditional_3_Template","CrmActivityCommunicationComponent_Conditional_0_Conditional_1_Conditional_4_Template","CrmActivityCommunicationComponent_Conditional_0_Conditional_1_Conditional_6_Template","ɵɵstyleProp","showAvatar","toString","ɵɵconditional","headerText","activityName","ɵɵpropertyInterpolate","tmp_3_0","sourceName","CrmActivityCommunicationComponent_Conditional_0_Conditional_2_Conditional_1_Template","CrmActivityCommunicationComponent_Conditional_0_Conditional_2_Conditional_2_Template","CrmActivityCommunicationComponent_Conditional_0_Conditional_2_Conditional_3_Template","CrmActivityCommunicationComponent_Conditional_0_Conditional_2_Conditional_4_Template","CrmActivityCommunicationComponent_Conditional_0_Conditional_2_Conditional_7_Template","CrmActivityCommunicationComponent_Conditional_0_Conditional_2_Conditional_10_Template","CrmActivityCommunicationComponent_Conditional_0_Conditional_1_Template","CrmActivityCommunicationComponent_Conditional_0_Conditional_2_Template","isCampaignSMS","CrmActivityCommunicationComponent","init_activity_communication_component","__esmMin","init_ngx_translate_core","init_constants","init_translation_module","init_common","init_core","init_field_service","init_card","init_date_utils","init_avatar","init_activity_url_builder","init_sanitize_html_pipe","init_esm","init_operators","init_rxjs_interop","activity","_activity","set","objectType","_objectType","associatedObjectId","crmObjectId","_associatedObjectId","constructor","fieldService","translateService","crmObjectService","objectDisplayService","signal","DateFormat","medium","associatedCrmObjectName$","toObservable","pipe","switchMap","getAssociatedObjectName","associatedCrmObjectName","toSignal","computed","getStringFieldData","StandardIds","ActivityName","ActivitySourceName","ActivityCommunicationBody","getFieldValueFromCrmObject","SystemFieldIds","ActivityEffectiveDate","dateValue","getActivityUrl","ActivityUrl","ActivityUrlName","communicationType","ActivityCommunicationType","communicationStatus","ActivityCommunicationStatus","baseText","instant","nameText","verbText","getStatusText","trim","status","fieldId","stringValue","associatedContactID","associations","find","association","crmObjectType","getObjectName","useAssociatedObjectID","of","objectID","objectName","getMultiObject","map","data","crmObject","crmObjects","getObjectDisplayName","ɵɵdirectiveInject","CrmFieldService","TranslateService","CrmObjectService","CrmObjectDisplayService","selectors","inputs","decls","vars","consts","template","rf","ctx","CrmActivityCommunicationComponent_Conditional_0_Template","CommonModule","DatePipe","TranslateModule","TranslatePipe","TranslationModule","MatCardModule","MatCard","MatCardAvatar","MatCardContent","MatCardHeader","MatCardSubtitle","MatCardTitle","GalaxyAvatarModule","AvatarComponent","SanitizeHtmlPipe","styles","ɵɵelement","ɵɵproperty","fullName_r1","ctx_r1","AVATAR_WIDTH","tmp_9_0","ɵɵpipeBind1","profileImageUrl$","undefined","ɵɵelementStart","ɵɵtemplate","CrmActivityTemplateComponent_mat_card_header_1_div_1_glxy_avatar_1_Template","ɵɵelementEnd","ɵɵadvance","showUnknownAvatar$","unknownUserAvatar_r3","ɵɵtext","ɵɵtextInterpolate","fullName_r4","headerText_r5","ɵɵelementContainerStart","ɵɵtextInterpolate2","primaryAssociation_r6","objectType","routePrefix","linkUrl","name","CrmActivityTemplateComponent_mat_card_header_1_ng_container_8_ng_container_1_Template","primaryAssociation","ɵɵelementContainer","CrmActivityTemplateComponent_mat_card_header_1_div_1_Template","CrmActivityTemplateComponent_mat_card_header_1_span_4_Template","CrmActivityTemplateComponent_mat_card_header_1_span_6_Template","CrmActivityTemplateComponent_mat_card_header_1_ng_container_8_Template","CrmActivityTemplateComponent_mat_card_header_1_ng_container_10_Template","ɵɵprojection","ɵɵstyleProp","showAvatar","toString","fullName$","headerText$","showPrimaryAssociation","subtitleTemplate","subtitleCustomTemplate_r8","subtitleDefaultTemplate_r7","ɵɵtextInterpolate1","ɵɵpipeBind2","effectiveDate_r9","dateFormat","CrmActivityTemplateComponent_ng_template_7_p_0_Template","effectiveDate$","CrmActivityTemplateComponent_ng_template_9_ng_container_1_Template","CrmActivityTemplateComponent","init_activity_template_component","__esmMin","init_common","init_core","init_ngx_translate_core","init_constants","init_translation_module","init_card","init_icon","init_state","init_avatar","init_esm","init_field_service","init_date_utils","init_unknown_user_avatar_component","init_activity_association_service","init_router","activity","state","set","get","ownerUser","isOwnedByServiceAccount","headerText","text","_showAvatar","constructor","fieldService","translateService","DateFormat","medium","showFullName","unknownNamePlaceholder","instant","select","pipe","map","headerTextFromActivityType","crmObjectSubtype","combineLatest","isUnknownUser","user","profileImageUrl","associationService","inject","ActivityAssociationService","fullName","effectiveDate","connect","filter","firstName","lastName","trim","tap","getFieldValueFromCrmObject","SystemFieldIds","ActivityEffectiveDate","dateValue","activityType","ɵɵdirectiveInject","RxState","CrmFieldService","TranslateService","selectors","inputs","features","ɵɵProvidersFeature","ngContentSelectors","_c1","decls","vars","consts","template","rf","ctx","CrmActivityTemplateComponent_mat_card_header_1_Template","CrmActivityTemplateComponent_ng_template_5_Template","ɵɵtemplateRefExtractor","CrmActivityTemplateComponent_ng_template_7_Template","CrmActivityTemplateComponent_ng_template_9_Template","CommonModule","NgIf","NgTemplateOutlet","AsyncPipe","DatePipe","TranslateModule","TranslatePipe","TranslationModule","MatCardModule","MatCard","MatCardAvatar","MatCardContent","MatCardHeader","MatCardSubtitle","MatCardTitle","MatIconModule","GalaxyAvatarModule","AvatarComponent","CrmUnknownUserAvatarComponent","RouterLink","styles","CrmActivityTemplateOptionsDirective","init_activity_template_options_directive","__esmMin","selectors","enumStringToValue$1","enumRef","value","enumStringToValue","DateDefault","FilterGroupOperator","FilterOperator","AsyncWorkStatus","CampaignQuotaCategory","CampaignScheduleStatus","CampaignState","CampaignStepEventType","CampaignStepSendStatusType","CampaignStepType","ContactType","DaysOfTheWeek","DeletedTagsPolicy","DuplicateCampaignStepStatus","Feature","Focuses","Period","RecipientCampaignStatus","RecipientType","SenderType","SortDirection","SortField","Statuses","TemplateStatus","FieldMask","Filter","FilterGroup","Phone","FilterValue","RecipientClickStatsAccount","ActivateProductForSenderRequest","AddContactToCampaignRequest","AddContactToCampaignResponse","AddStepToCampaignRequest","AddTagToCampaignRequest","BulkAddContactIdsToCampaignRequest","BulkAddContactsToCampaignRequest","CampaignDetailStats","CampaignRecipient","CampaignStepEvent","CampaignStepInterface","CampaignStepStats","CampaignTag","CheckDuplicateCampaignStatusRequest","CheckDuplicateCampaignStatusResponse","CheckDuplicateCampaignStepStatusRequest","CheckDuplicateCampaignStepStatusResponse","Contact","CreateCampaignRequest","CreateCampaignResponse","CreateEmailTemplateRequest","CreateQuotaRequest","CreateTagRequest","CreateTagResponse","DateFilter","DeactivateProductForSenderRequest","DeleteCampaignRequest","DeleteTagRequest","DuplicateAndRecommendCampaignRequest","DuplicateCampaignDetails","DuplicateCampaignRequest","DuplicateCampaignRequestV2","DuplicateCampaignResponse","DuplicateCampaignStepRequest","DuplicateCampaignStepResponse","EmailTemplateStruct","ExecuteStepRequest","ExportRecipientLinkClickStatsRequest","ExtractLinkTrackingDataForTemplateRequest","ExtractLinkTrackingDataForTemplateResponse","GetAggregatedCampaignStatsRequest","GetAggregatedCampaignStatsResponse","GetAvailableStepTypesForSenderRequest","GetAvailableStepTypesForSenderResponse","GetCampaignDetailsStatsRequest","GetCampaignDetailsStatsResponse","GetCampaignQuotaRequest","GetCampaignQuotaResponse","GetCampaignRequest","GetCampaignResponse","GetCampaignStepContentRequest","GetCampaignStepContentResponse","GetCampaignStepStatsRequest","GetCampaignStepStatsResponse","GetConfigRequest","GetConfigResponse","GetEmailTemplateRequest","GetEmailTemplateResponse","GetEmailTemplatesRequest","GetEmailTemplatesResponse","GetLinkStatsRequest","GetLinkStatsResponse","GetMultiCampaignsRequest","GetMultiCampaignsResponse","GetRecipientCampaignRequest","GetRecipientCampaignResponse","GetRecipientLinkClickStatsRequest","GetRecipientLinkClickStatsResponse","GetterCampaignData","IsFeatureActiveForSenderRequest","IsFeatureActiveForSenderResponse","IsProductActiveForSenderRequest","IsProductActiveForSenderResponse","LegacyAddAccountGroupToCampaignRequest","LegacyGetRecipientCampaignsByAgidRequest","LegacyGetRecipientCampaignsByAgidResponse","LegacyPauseAccountGroupOnCampaignRequest","LegacyRateLimitedAddToCampaignRequest","LegacyRateLimitedAddToCampaignResponse","LegacyUpdateRecipientCampaignStatusRequest","LinkStats","LinkTrackingData","ListCampaignStatsForSenderRequest","ListCampaignStatsForSenderResponse","ListCampaignStatsRequest","ListCampaignStatsResponse","ListCampaignStatsStruct","ListCampaignTagDetails","ListCampaignsRequest","ListCampaignsResponse","ListCampaignsV2Request","ListCampaignsV2Response","ListLinksInTemplateRequest","ListLinksInTemplateResponse","ListRecipientCampaignsRequest","ListRecipientCampaignsResponse","ListRecommendedCampaignsRequest","ListTagsForCampaignRequest","ListTagsForCampaignResponse","ListTagsForSenderRequest","ListTagsForSenderResponse","LookupRecipientCampaignRequest","LookupRecipientCampaignResponse","LookupRecipientCampaignsRequest","LookupRecipientCampaignsResponse","PagedRequestOptions","GetRecipientLinkClickStatsRequestPagedRequestOptions","PagedResponseMetadata","PauseCampaignRequest","PauseRecipientCampaignRequest","PreviewEmailTemplateRequest","PreviewEmailTemplateResponse","RecipientClickStatsRecipient","RecipientCampaignPair","RecipientCampaignStruct","RecipientClickStats","RecipientCriteria","RecipientV2","RemoveTagFromCampaignRequest","ResumeRecipientCampaignRequest","ScheduledCampaignStepInterface","SendCampaignStepTestEmailRequest","SendCampaignStepTestEmailResponse","SendPreviewEmailRequest","SendRecipientCampaignStepEmailRequest","Sender","SenderOptions","SortOptions","StepDataResponse","UnpauseCampaignRequest","UpdateCampaignNameRequest","UpdateConfigRequest","UpdateConfigResponse","UpdateEmailTemplateRequest","UpdateQuotaLimitRequest","UpdateStepOnCampaignRequest","UpdateTemplateRequest","UpsertCampaignRequest","UpsertConfigRequest","UpsertRecipientCampaignRequest","environment","hostMap","HostService","ActivationsApiService","CampaignConfigApiService","CampaignQuotaApiService","CampaignStatsApiService","CampaignTaggingApiService","CampaignsApiService","EmailTemplateApiService","LegacyAppengineAPIApiService","RecipientCampaignApiService","TemplatesApiService","AllDates","CampaignService","RecipientCampaignService","EmailTemplateService","CampaignStatsService","CampaignTaggingService","LegacyAppengineService","ConfigService","ActivationService","QuotaService","TemplatesService","init_vendasta_campaigns","__esmMin","init_core","init_http","init_operators","_FieldMask","proto","m","kwargs","toReturn","_Filter","_FilterGroup","_Phone","_FilterValue","_RecipientClickStatsAccount","_ActivateProductForSenderRequest","_AddContactToCampaignRequest","_AddContactToCampaignResponse","_AddStepToCampaignRequest","_AddTagToCampaignRequest","_BulkAddContactIdsToCampaignRequest","_BulkAddContactsToCampaignRequest","_CampaignDetailStats","_CampaignRecipient","_CampaignStepEvent","_CampaignStepInterface","_CampaignStepStats","_CampaignTag","_CheckDuplicateCampaignStatusRequest","_CheckDuplicateCampaignStatusResponse","_CheckDuplicateCampaignStepStatusRequest","_CheckDuplicateCampaignStepStatusResponse","_Contact","_CreateCampaignRequest","_CreateCampaignResponse","_CreateEmailTemplateRequest","_CreateQuotaRequest","_CreateTagRequest","_CreateTagResponse","_DateFilter","_DeactivateProductForSenderRequest","_DeleteCampaignRequest","_DeleteTagRequest","_DuplicateAndRecommendCampaignRequest","_DuplicateCampaignDetails","_DuplicateCampaignRequest","_DuplicateCampaignRequestV2","_DuplicateCampaignResponse","_DuplicateCampaignStepRequest","_DuplicateCampaignStepResponse","_EmailTemplateStruct","_ExecuteStepRequest","_ExportRecipientLinkClickStatsRequest","_ExtractLinkTrackingDataForTemplateRequest","_ExtractLinkTrackingDataForTemplateResponse","_GetAggregatedCampaignStatsRequest","v","_GetAggregatedCampaignStatsResponse","_GetAvailableStepTypesForSenderRequest","_GetAvailableStepTypesForSenderResponse","_GetCampaignDetailsStatsRequest","_GetCampaignDetailsStatsResponse","_GetCampaignQuotaRequest","_GetCampaignQuotaResponse","_GetCampaignRequest","_GetCampaignResponse","_GetCampaignStepContentRequest","obj","k","_GetCampaignStepContentResponse","_GetCampaignStepStatsRequest","_GetCampaignStepStatsResponse","_GetConfigRequest","_GetConfigResponse","_GetEmailTemplateRequest","_GetEmailTemplateResponse","_GetEmailTemplatesRequest","_GetEmailTemplatesResponse","_GetLinkStatsRequest","_GetLinkStatsResponse","_GetMultiCampaignsRequest","_GetMultiCampaignsResponse","_GetRecipientCampaignRequest","_GetRecipientCampaignResponse","_GetRecipientLinkClickStatsRequest","_GetRecipientLinkClickStatsResponse","_GetterCampaignData","_IsFeatureActiveForSenderRequest","_IsFeatureActiveForSenderResponse","_IsProductActiveForSenderRequest","_IsProductActiveForSenderResponse","_LegacyAddAccountGroupToCampaignRequest","_LegacyGetRecipientCampaignsByAgidRequest","_LegacyGetRecipientCampaignsByAgidResponse","_LegacyPauseAccountGroupOnCampaignRequest","_LegacyRateLimitedAddToCampaignRequest","_LegacyRateLimitedAddToCampaignResponse","_LegacyUpdateRecipientCampaignStatusRequest","_LinkStats","_LinkTrackingData","_ListCampaignStatsForSenderRequest","_ListCampaignStatsForSenderResponse","_ListCampaignStatsRequest","_ListCampaignStatsResponse","_ListCampaignStatsStruct","_ListCampaignTagDetails","_ListCampaignsRequest","_ListCampaignsResponse","_ListCampaignsV2Request","_ListCampaignsV2Response","_ListLinksInTemplateRequest","_ListLinksInTemplateResponse","_ListRecipientCampaignsRequest","_ListRecipientCampaignsResponse","_ListRecommendedCampaignsRequest","_ListTagsForCampaignRequest","_ListTagsForCampaignResponse","_ListTagsForSenderRequest","_ListTagsForSenderResponse","_LookupRecipientCampaignRequest","_LookupRecipientCampaignResponse","_LookupRecipientCampaignsRequest","_LookupRecipientCampaignsResponse","_PagedRequestOptions","_GetRecipientLinkClickStatsRequestPagedRequestOptions","_PagedResponseMetadata","_PauseCampaignRequest","_PauseRecipientCampaignRequest","_PreviewEmailTemplateRequest","_PreviewEmailTemplateResponse","_RecipientClickStatsRecipient","_RecipientCampaignPair","_RecipientCampaignStruct","_RecipientClickStats","_RecipientCriteria","_RecipientV2","_RemoveTagFromCampaignRequest","_ResumeRecipientCampaignRequest","_ScheduledCampaignStepInterface","_SendCampaignStepTestEmailRequest","_SendCampaignStepTestEmailResponse","_SendPreviewEmailRequest","_SendRecipientCampaignStepEmailRequest","_Sender","_SenderOptions","_SortOptions","_StepDataResponse","_UnpauseCampaignRequest","_UpdateCampaignNameRequest","_UpdateConfigRequest","_UpdateConfigResponse","_UpdateEmailTemplateRequest","_UpdateQuotaLimitRequest","_UpdateStepOnCampaignRequest","_UpdateTemplateRequest","_UpsertCampaignRequest","_UpsertConfigRequest","_UpsertRecipientCampaignRequest","__ngFactoryType__","ɵɵdefineInjectable","inject","HttpClient","HttpHeaders","r","request","__spreadProps","__spreadValues","map","resp","api","sender","name","campaignId","stepType","contentId","req","campaignStepId","secondsAfterLastStep","fm","campaignID","campaign","campaignIDs","partnerID","focuses","statuses","pagingOptions","vv","data","stepId","workflowStatusId","targetPartnerId","sendToUserId","status","mapTo","campaignSchedule","locale","searchTerm","sortOptions","ɵɵinject","accountGroupID","recipient","date","sendNow","senderOptions","filterGroup","recipients","recipientCampaignId","templateID","templateIDs","templateId","accountGroupId","partnerId","marketId","userId","htmlContent","subject","recipientUserId","stat","senderType","senderId","text","colour","cursor","pageSize","tagId","timeZoneForEmailsSent","daysEmailsCanBeSent","recipientsAddedRateLimitEnabled","recipientsAddedRateLimit","emailsCanbeSent","feature","type","datePeriod","content","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ctx_r0","AVATAR_WIDTH","ɵɵtext","ɵɵtextInterpolate","headerText_r2","ɵɵpipeBind1","ɵɵtextInterpolate1","ɵɵpipeBind2","cardInfo_r3","effectiveDate","dateFormat","ɵɵpropertyInterpolate","campaignLink","ɵɵsanitizeUrl","campaignName","INNER_AVATAR_WIDTH","activity_r5","emailStatus","ɵɵtemplate","CrmActivityEmailComponent_div_0_Conditional_12_Conditional_7_Conditional_3_For_1_Conditional_3_Template","CrmActivityEmailComponent_div_0_Conditional_12_Conditional_7_Conditional_3_For_1_Conditional_4_Template","CrmActivityEmailComponent_div_0_Conditional_12_Conditional_7_Conditional_3_For_1_Conditional_5_Template","ɵɵpureFunction1","_c0","ɵ$index_76_r6","ɵ$count_76_r7","ɵɵstyleProp","toString","ɵɵconditional","showAvatar","ɵɵrepeaterCreate","CrmActivityEmailComponent_div_0_Conditional_12_Conditional_7_Conditional_3_For_1_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","relatedActivities","ɵɵlistener","ɵɵrestoreView","_r4","ɵɵnextContext","ɵɵresetView","showRelatedActivities","set","CrmActivityEmailComponent_div_0_Conditional_12_Conditional_7_Conditional_1_Template","CrmActivityEmailComponent_div_0_Conditional_12_Conditional_7_Conditional_2_Template","CrmActivityEmailComponent_div_0_Conditional_12_Conditional_7_Conditional_3_Template","CrmActivityEmailComponent_div_0_Conditional_12_Conditional_5_Template","CrmActivityEmailComponent_div_0_Conditional_12_Conditional_6_Template","CrmActivityEmailComponent_div_0_Conditional_12_Conditional_7_Template","emailSubject","isDeletedCampaign","length","ɵɵtextInterpolate2","emailBody","ɵɵsanitizeHtml","_r8","CrmActivityEmailComponent_div_0_Conditional_13_Conditional_5_Conditional_1_Template","CrmActivityEmailComponent_div_0_Conditional_13_Conditional_5_Conditional_2_Template","activity_r9","CrmActivityEmailComponent_div_0_Conditional_13_Conditional_6_For_1_Conditional_3_Template","CrmActivityEmailComponent_div_0_Conditional_13_Conditional_6_For_1_Conditional_4_Template","CrmActivityEmailComponent_div_0_Conditional_13_Conditional_6_For_1_Conditional_5_Template","ɵ$index_138_r10","ɵ$count_138_r11","CrmActivityEmailComponent_div_0_Conditional_13_Conditional_6_For_1_Template","CrmActivityEmailComponent_div_0_Conditional_13_Conditional_3_Template","CrmActivityEmailComponent_div_0_Conditional_13_Conditional_4_Template","CrmActivityEmailComponent_div_0_Conditional_13_Conditional_5_Template","CrmActivityEmailComponent_div_0_Conditional_13_Conditional_6_Template","ownerName_r12","CrmActivityEmailComponent_div_0_Conditional_14_span_6_div_1_Template","ownerName","CrmActivityEmailComponent_div_0_Conditional_14_span_7_span_3_Template","ɵɵpropertyInterpolate1","contact_r13","lastContact_r14","CrmActivityEmailComponent_div_0_Conditional_14_span_6_Template","CrmActivityEmailComponent_div_0_Conditional_14_span_7_Template","CrmActivityEmailComponent_div_0_Conditional_14_div_8_Template","emailDirection","contactEmails","CrmActivityEmailComponent_div_0_Conditional_3_Template","CrmActivityEmailComponent_div_0_Conditional_4_Template","CrmActivityEmailComponent_div_0_span_6_Template","CrmActivityEmailComponent_div_0_ng_template_7_Template","ɵɵtemplateRefExtractor","CrmActivityEmailComponent_div_0_p_10_Template","CrmActivityEmailComponent_div_0_Conditional_12_Template","CrmActivityEmailComponent_div_0_Conditional_13_Template","CrmActivityEmailComponent_div_0_Conditional_14_Template","isCampaign","headerText","unknown_r15","isYeswareTrackedEmail","isYeswareCampaignEmail","CrmActivityEmailComponent","init_email_component","__esmMin","init_common","init_core","init_rxjs_interop","init_card","init_icon","init_ngx_translate_core","init_state","init_avatar","init_pipes","init_date_utils","init_esm","init_operators","init_constants","init_i18n","init_shared_services","init_tokens_and_interfaces","init_collapsible_section_component","activity","_activity","objectType","_objectType","associatedObjectId","crmObjectId","_associatedObjectId","_showAvatar","constructor","config","fieldService","campaignService","recipientCampaignService","crmObjectService","translateService","activitiesTimelineService","sanitizer","objectDisplayService","unknownNamePlaceholder","instant","signal","DateFormat","medium","associatedCrmObjectName$","toObservable","pipe","switchMap","getAssociatedObjectName","associatedCrmObjectName","toSignal","contactEmails$","getContactEmails","campaignId$","getCampaignId","campaignId","campaignName$","getCampaign","computed","name","includes","accountGroupId$","getAccountGroupId","accountGroupId","getRelatedCampaignActivities","cardInfo","sanitize","SecurityContext","HTML","getStringFieldData","StandardIds","ActivityEmailBody","ActivityEmailSubject","ActivityEmailStatus","ActivityEmailDirection","toLowerCase","emailType","ActivityEmailType","emailHeaders","ActivityEmailHeaders","sourceName","ActivitySourceName","getDateFieldData","SystemFieldIds","ActivityEffectiveDate","getRelatedActivitiesCardInfo","ActivityEmailCampaignName","owner","ownerUser","firstName","lastName","trim","baseText","ownerNameText","contactNameText","verbText","ownerVerbText","result","useBusinessCenterCampaignLink","parentNamespace$","map","parentNamespace","relatedActivitiesCardInfo","statusText","getStatusText","push","fieldId","getFieldValueFromCrmObject","stringValue","getCampaignName","id","get","campaignData","catchError","error","console","warn","of","dateValue","recipientId","ActivityCampaignID","getRecipientCampaign","recipientCampaign","parts","partnerId","split","associatedContactID","associations","find","association","crmObjectType","getContactName","useAssociatedObjectID","getMultiObject","data","crmObjects","crmObject","getObjectDisplayName","objectID","crmObjectIds","forEach","resp","contact","StandardExternalIds","Email","ɵɵdirectiveInject","CrmInjectionToken","CrmFieldService","CampaignService","RecipientCampaignService","CrmObjectService","TranslateService","ActivitiesTimelineService","DomSanitizer","CrmObjectDisplayService","selectors","inputs","features","ɵɵProvidersFeature","RxState","decls","vars","consts","template","rf","ctx","CrmActivityEmailComponent_div_0_Template","CommonModule","NgClass","NgForOf","NgIf","DatePipe","TranslateModule","TranslatePipe","TranslationModule","CollapsibleSectionComponent","MatCardModule","MatCard","MatCardAvatar","MatCardContent","MatCardHeader","MatCardSubtitle","MatCardTitle","GalaxyAvatarModule","AvatarComponent","MatIconModule","MatIcon","GalaxyPipesModule","GalaxyITrustThisHtmlPipe","styles","import_dompurify","ActivityRichTextComponent","init_activity_rich_text_component","__esmMin","init_pipes","init_common","constructor","sanitizedRichText","richText","rteValue","cleanedText","replace","DOMPurify","sanitize","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵproperty","ɵɵpipeBind1","ɵɵsanitizeHtml","CommonModule","GalaxyPipesModule","GalaxyITrustThisHtmlPipe","styles","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵpropertyInterpolate","callUrl_r1","ɵɵsanitizeUrl","ɵɵelement","ɵɵtemplate","CrmActivityLoggedCallComponent_div_0_ng_container_3_Template","ɵɵelementContainer","ɵɵproperty","cardInfo_r2","note","ɵɵpipeBind1","ctx_r2","callRecordingSource$","activityData_r4","ɵɵpureFunction1","_c0","direction","_c1","status","_c2","outcome","_c3","ɵɵpipeBind2","date","dateFormat","ɵɵtextInterpolate1","value_r5","CrmActivityLoggedCallComponent_ng_template_1_ng_container_5_Template","label_r6","CrmActivityLoggedCallComponent","init_logged_call_component","__esmMin","init_common","init_core","init_rxjs_interop","init_ngx_translate_core","init_date_utils","init_esm","init_operators","init_collapsible_section_component","init_field_service","init_translation_module","init_activity_rich_text_component","activity","_activity","set","getFieldData","fieldId","fieldService","getFieldValueFromCrmObject","stringValue","constructor","http","DateFormat","mediumDateShortTime","signal","cardInfo","computed","StandardIds","ActivityCallBody","ActivityCallDirection","ActivityCallStatus","ActivityCallOutcome","SystemFieldIds","ActivityEffectiveDate","dateValue","callRecordingUrl","ActivityCallRecordingUrl","toObservable","pipe","switchMap","get","responseType","withCredentials","of","ɵɵdirectiveInject","HttpClient","CrmFieldService","selectors","inputs","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","CrmActivityLoggedCallComponent_div_0_Template","CrmActivityLoggedCallComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","CommonModule","NgIf","NgTemplateOutlet","AsyncPipe","DatePipe","TranslateModule","TranslatePipe","TranslationModule","CollapsibleSectionComponent","ActivityRichTextComponent","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","cardInfo_r1","activityUrl","ɵɵsanitizeUrl","ɵɵtextInterpolate","activityUrlName","ɵɵelement","ɵɵtemplate","CrmActivityLoggedCommunicationComponent_div_0_div_3_Template","ɵɵelementContainer","body","activityData_r3","ɵɵpureFunction1","_c0","channel","_c1","outcome","_c2","ɵɵpipeBind2","date","ctx_r1","dateFormat","ɵɵelementContainerStart","ɵɵtextInterpolate1","value_r4","CrmActivityLoggedCommunicationComponent_ng_template_1_ng_container_5_Template","ɵɵpipeBind1","label_r5","CrmActivityLoggedCommunicationComponent","init_logged_communication_component","__esmMin","init_common","init_core","init_ngx_translate_core","init_translation_module","init_field_service","init_collapsible_section_component","init_date_utils","init_pipes","init_activity_rich_text_component","activity","_activity","set","getFieldData","fieldId","fieldService","getFieldValueFromCrmObject","stringValue","constructor","signal","DateFormat","mediumDateShortTime","cardInfo","computed","StandardIds","ActivityCommunicationBody","ActivityUrl","ActivityUrlName","ActivityCommunicationChannel","ActivityCommunicationOutcome","SystemFieldIds","ActivityEffectiveDate","dateValue","ɵɵdirectiveInject","CrmFieldService","selectors","inputs","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","CrmActivityLoggedCommunicationComponent_div_0_Template","CrmActivityLoggedCommunicationComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","CommonModule","NgIf","NgTemplateOutlet","DatePipe","TranslateModule","TranslatePipe","TranslationModule","CollapsibleSectionComponent","GalaxyPipesModule","ActivityRichTextComponent","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","direction_r1","ɵɵelement","ɵɵtemplate","CrmActivityLoggedEmailComponent_div_0_div_3_Template","ɵɵproperty","description_r2","ctx_r2","direction$","CrmActivityLoggedEmailComponent","init_logged_email_component","__esmMin","init_common","init_ngx_translate_core","init_state","init_esm","init_collapsible_section_component","init_field_service","init_translation_module","init_activity_rich_text_component","activity","state","set","get","constructor","fieldService","description$","select","undefined","description","direction","connect","pipe","map","getFieldValueFromCrmObject","StandardIds","ActivityEmailBody","stringValue","ActivityEmailDirection","ɵɵdirectiveInject","RxState","CrmFieldService","selectors","inputs","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","CrmActivityLoggedEmailComponent_div_0_Template","CommonModule","NgIf","AsyncPipe","TranslateModule","TranslatePipe","TranslationModule","CollapsibleSectionComponent","ActivityRichTextComponent","styles","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵelementContainer","ɵɵadvance","ɵɵproperty","cardInfo_r1","note","activityData_r3","ɵɵpureFunction1","_c0","status","_c1","outcome","_c2","ɵɵpipeBind2","date","ctx_r1","dateFormat","_c3","duration","ɵɵelementContainerStart","ɵɵtext","ɵɵtextInterpolate1","value_r4","ɵɵtemplate","CrmActivityLoggedMeetingComponent_ng_template_1_ng_container_5_Template","ɵɵpipeBind1","label_r5","CrmActivityLoggedMeetingComponent","init_logged_meeting_component","__esmMin","init_common","init_core","init_ngx_translate_core","init_translation_module","init_field_service","init_collapsible_section_component","init_esm","init_date_utils","init_activity_rich_text_component","activity","_activity","set","getStringFieldData","fieldId","fieldService","getFieldValueFromCrmObject","stringValue","getIntegerFieldData","integerValue","convertMillisecondsToHoursAndMinutes","convertedDuration","intervalToDuration","start","end","hours","minutes","constructor","DateFormat","mediumDateShortTime","signal","cardInfo","computed","StandardIds","ActivityMeetingDuration","ActivityMeetingBody","ActivityMeetingStatus","ActivityMeetingOutcome","SystemFieldIds","ActivityEffectiveDate","dateValue","ɵɵdirectiveInject","CrmFieldService","selectors","inputs","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","CrmActivityLoggedMeetingComponent_div_0_Template","CrmActivityLoggedMeetingComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","CommonModule","NgIf","NgTemplateOutlet","DatePipe","TranslateModule","TranslatePipe","TranslationModule","CollapsibleSectionComponent","ActivityRichTextComponent","styles","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","noteBody_r1","CrmActivityLoggedNoteComponent","init_logged_note_component","__esmMin","init_common","init_ngx_translate_core","init_translation_module","init_state","init_esm","init_field_service","init_collapsible_section_component","init_activity_rich_text_component","activity","state","set","get","constructor","fieldService","noteBody$","select","undefined","noteBody","connect","pipe","map","getFieldValueFromCrmObject","StandardIds","ActivityNoteBody","stringValue","ɵɵdirectiveInject","RxState","CrmFieldService","selectors","inputs","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","CrmActivityLoggedNoteComponent_div_0_Template","ɵɵpipeBind1","CommonModule","NgIf","AsyncPipe","TranslateModule","TranslationModule","CollapsibleSectionComponent","ActivityRichTextComponent","encapsulation","ɵɵelement","ɵɵproperty","ctx_r0","AVATAR_WIDTH","ɵɵelementStart","ɵɵtemplate","CrmActivityNoteComponent_Conditional_0_Conditional_3_Conditional_1_Template","CrmActivityNoteComponent_Conditional_0_Conditional_3_Conditional_2_Template","ɵɵelementEnd","ɵɵadvance","ɵɵconditional","isFormActivity","ɵɵtext","ɵɵpropertyInterpolate","cardInfo_r2","formLink","ɵɵsanitizeUrl","ɵɵtextInterpolate","formName","ɵɵtextInterpolate1","CrmActivityNoteComponent_Conditional_0_Conditional_5_Conditional_2_Conditional_0_Template","CrmActivityNoteComponent_Conditional_0_Conditional_5_Conditional_2_Conditional_1_Template","CrmActivityNoteComponent_Conditional_0_Conditional_5_Conditional_2_Template","headerText","ɵɵpipeBind1","ɵɵpipeBind2","effectiveDate","dateFormat","ɵɵelementContainer","cardContent_r3","noteBody","ɵɵsanitizeHtml","activityUrl","activityUrlName","CrmActivityNoteComponent_Conditional_0_ng_template_12_Conditional_0_Template","CrmActivityNoteComponent_Conditional_0_ng_template_12_Conditional_1_Template","CrmActivityNoteComponent_Conditional_0_Conditional_3_Template","CrmActivityNoteComponent_Conditional_0_Conditional_5_Template","CrmActivityNoteComponent_Conditional_0_Conditional_6_Template","CrmActivityNoteComponent_Conditional_0_Conditional_8_Template","CrmActivityNoteComponent_Conditional_0_Conditional_10_Template","CrmActivityNoteComponent_Conditional_0_Conditional_11_Template","CrmActivityNoteComponent_Conditional_0_ng_template_12_Template","ɵɵtemplateRefExtractor","ɵɵstyleProp","showAvatar","toString","ctx","CrmActivityNoteComponent","init_note_component","__esmMin","init_state","init_ngx_translate_core","init_constants","init_translation_module","init_collapsible_section_component","init_common","init_core","init_field_service","init_card","init_date_utils","init_avatar","init_sanitize_html_pipe","init_rxjs_interop","init_operators","init_tokens_and_interfaces","activity","_activity","set","_showAvatar","getStringFieldData","fieldId","fieldService","getFieldValueFromCrmObject","stringValue","getDateFieldData","dateValue","getFormLink","formID","StandardIds","ActivityRecordSourceDrillDown2","link","useBusinessCenterLink","namespace","constructor","config","signal","DateFormat","medium","computed","ActivitySourceName","toSignal","namespace$","parentNamespace$","pipe","map","parentNamespace","cardInfo","ActivityNoteBody","noteTitle","ActivityNoteTitle","SystemFieldIds","ActivityEffectiveDate","ActivityUrl","ActivityUrlName","ActivityRecordSourceDrillDown1","ɵɵdirectiveInject","CrmFieldService","CrmInjectionToken","selectors","inputs","features","ɵɵProvidersFeature","RxState","decls","vars","consts","template","rf","CrmActivityNoteComponent_Conditional_0_Template","tmp_0_0","CommonModule","NgTemplateOutlet","DatePipe","TranslateModule","TranslatePipe","TranslationModule","CollapsibleSectionComponent","MatCardModule","MatCard","MatCardAvatar","MatCardContent","MatCardHeader","MatCardSubtitle","MatCardTitle","GalaxyAvatarModule","AvatarComponent","SanitizeHtmlPipe","styles","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ctx_r0","AVATAR_WIDTH","icon","ɵɵtext","ɵɵtextInterpolate1","ɵɵpipeBind2","cardInfo_r2","effectiveDate","dateFormat","ɵɵtemplate","CrmActivityRecordChangeComponent_ng_container_0_mat_card_1_div_2_Template","CrmActivityRecordChangeComponent_ng_container_0_mat_card_1_div_3_Template","CrmActivityRecordChangeComponent_ng_container_0_mat_card_1_p_8_Template","ɵɵstyleProp","showAvatar","toString","isUpdatedRecordChange","ɵɵtextInterpolate","headerText","contentText","ɵɵelementContainerStart","CrmActivityRecordChangeComponent_ng_container_0_mat_card_1_Template","isReady","RecordChangeIcons","CrmActivityRecordChangeComponent","init_record_change_component","__esmMin","init_common","init_core","init_rxjs_interop","init_card","init_ngx_translate_core","init_avatar","init_pipes","init_date_utils","init_vendasta_sales","init_esm","init_operators","init_tokens_and_interfaces","init_translation_module","init_constants","init_shared_services","Default","Opportunity","#activity","activity","set","_showAvatar","constructor","fieldService","translateByObjectTypeService","changeLogService","config","salespersonService","DateFormat","medium","signal","namespace","toSignal","namespace$","recordChangeType","computed","getFieldValueFromCrmObject","StandardExternalIds","ActivityRecordChangeType","stringValue","objectType","associations","undefined","length","console","warn","crmObjectId","crmObjectType","sourceName","StandardIds","ActivitySourceName","cardInfo","effectResult","partialKey","computedObjectType","createdVia","getTranslationByObjectType","updatedField","changeLogUser","displayName","trim","SystemFieldIds","ActivityEffectiveDate","dateValue","changeLogSalesPerson","changeLogSalespersonId","salespersonUnknownPartialKey","salespersonFullName","firstName","lastName","map","name","join","changeLog","crmChangeSubtype","effect","companyId","find","association","changeId","RecordChangeReferenceFieldID","getMultiChangeLog","crmChangelogIdentifiers","crmChangeId","pipe","switchMap","res","object","changeLogs","salesPersonSubId","CompanyPrimarySalespersonID","createdByUserId","combineLatest","of","getSalespersonBySubjectId","catchError","services","userService","getMultiUsers","EMPTY","take","subscribe","salesPerson","simplifiedUser","ɵɵdirectiveInject","CrmFieldService","TranslateByObjectTypeService","CRMChangeLogApiService","CrmInjectionToken","SalespersonService","selectors","inputs","decls","vars","consts","template","rf","ctx","CrmActivityRecordChangeComponent_ng_container_0_Template","CommonModule","NgIf","DatePipe","TranslateModule","TranslationModule","MatCardModule","MatCard","MatCardAvatar","MatCardContent","MatCardHeader","MatCardSubtitle","MatCardTitle","GalaxyPipesModule","GalaxyAvatarModule","AvatarComponent","styles","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","updateTaskCompletionStatus","ɵɵelementEnd","ɵɵtext","ɵɵelement","ɵɵelementContainer","ɵɵadvance","ɵɵproperty","completedTaskControl","ɵɵtextInterpolate","cardInfo_r3","title","ɵɵpipeBind1","body","ɵɵsanitizeHtml","activityData_r4","ɵɵpureFunction1","_c0","ɵɵpipeBind2","dueDate","dateFormat","_c1","assignee","_c2","type","_c3","priority","ɵɵelementContainerStart","ɵɵtextInterpolate1","value_r5","ɵɵtemplate","CrmActivityTaskComponent_ng_template_1_ng_container_5_Template","label_r6","CrmActivityTaskComponent","init_task_component","__esmMin","init_common","init_core","init_ngx_translate_core","init_tokens_and_interfaces","init_translation_module","init_shared_services","init_date_utils","init_checkbox","init_icon","init_esm","init_forms","init_form_field","init_input","init_collapsible_section_component","init_sanitize_html_pipe","activity","_activity","set","ngOnInit","taskIsCompleted","fields","find","field","fieldId","StandardIds","ActivityTaskStatus","stringValue","Completed","setValue","emitEvent","getFieldData","fieldService","getFieldValueFromCrmObject","getAssigneeName","ownerId","user","users","userId","firstName","lastName","map","name","trim","filter","join","unknownNamePlaceholder","getTaskCompletionStatus","value","Open","getAssociations","associations","emitStatusChange","status","push","activityChange","emit","__async","crmObjectId","crmObjectSubtype","mask","paths","firstValueFrom","activityService","updateActivity","snack","openSuccessSnack","openErrorSnack","constructor","FormControl","DateFormat","mediumDateShortTime","signal","EventEmitter","cardInfo","computed","ActivityName","ActivityTaskBody","ActivityTaskType","ActivityTaskPriority","ActivityTaskDueDate","dateValue","ɵɵdirectiveInject","CrmFieldService","ActivityService","SnackbarService","selectors","inputs","associatedObject","outputs","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","CrmActivityTaskComponent_div_0_Template","CrmActivityTaskComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","CommonModule","NgIf","NgTemplateOutlet","DatePipe","TranslateModule","TranslatePipe","TranslationModule","MatCheckboxModule","MatCheckbox","ReactiveFormsModule","NgControlStatus","FormControlDirective","GalaxyFormFieldModule","FormFieldComponent","ExtendedDirective","MatInputModule","MatIconModule","CollapsibleSectionComponent","SanitizeHtmlPipe","styles","enumStringToValue$1","enumRef","value","enumStringToValue","environment","hostMap","HostService","ConversationSortField","ConversationSource","EvaluationFeedback","EvaluationReason","SortDirection","PagedRequestOptions","PagedResponseMetadata","Conversation","ExternalAttendee","CreateConversationRequest","CreateConversationResponse","CreateEvaluationRequest","ListConversationsRequestFilters","GetConversationRequest","GetConversationResponse","ListConversationsRequest","ListConversationsResponse","ListConversationsRequestSort","MeetingAnalysisApiService","init_vendasta_meeting_analysis","__esmMin","init_core","init_http","init_operators","__ngFactoryType__","ɵɵdefineInjectable","_PagedRequestOptions","proto","m","kwargs","toReturn","_PagedResponseMetadata","_Conversation","_ExternalAttendee","_CreateConversationRequest","_CreateConversationResponse","_CreateEvaluationRequest","v","_ListConversationsRequestFilters","_GetConversationRequest","_GetConversationResponse","_ListConversationsRequest","_ListConversationsResponse","_ListConversationsRequestSort","inject","HttpClient","HttpHeaders","r","request","map","resp","__spreadProps","__spreadValues","FeedbackFormModalComponent","init_feedback_form_modal_component","__esmMin","init_dialog","init_forms","init_vendasta_meeting_analysis","init_ngx_translate_core","init_translation_module","init_form_field","init_button","init_input","init_checkbox","init_rxjs_interop","constructor","dialogRef","data","destroyRef","formGroup","FormBuilder","group","inaccurateSummary","inaccurateTakeaways","inaccurateActionItems","lackOfDetails","wrongSpeakers","other","comment","ngOnInit","controls","valueChanges","pipe","takeUntilDestroyed","subscribe","otherChecked","enable","submitFeedback","feedbackReasons","formValues","value","push","EvaluationReason","EVALUATION_REASON_INACCURATE_SUMMARY","EVALUATION_REASON_INACCURATE_TAKEAWAYS","EVALUATION_REASON_INACCURATE_ACTION_ITEMS","EVALUATION_REASON_LACK_OF_DETAILS","EVALUATION_REASON_WRONG_SPEAKERS","EVALUATION_REASON_OTHER","feedbackData","feedbackType","EvaluationFeedback","EVALUATION_FEEDBACK_NEGATIVE","close","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","DestroyRef","selectors","viewQuery","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtextInterpolate","ɵɵproperty","ɵɵpropertyInterpolate","feedbackCommentCounter_r2","length","TranslateModule","TranslatePipe","TranslationModule","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","MaxLengthValidator","FormControlDirective","GalaxyFormFieldModule","FormFieldComponent","HintDirective","MatDialogModule","MatDialogTitle","MatDialogActions","MatDialogContent","MatButton","MatInput","MatCheckbox","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","takeaway_r2","item_r3","ɵɵlistener","ɵɵrestoreView","_r4","ctx_r4","ɵɵnextContext","ɵɵresetView","downloadTranscript","ɵɵtextInterpolate1","ɵɵpipeBind1","_r6","viewRecording","convertMillisecondsToHoursAndMinutes","duration","convertedDuration","intervalToDuration","start","end","hours","undefined","minutes","MeetingSummaryModalComponent","init_meeting_summary_modal_component","__esmMin","init_dialog","init_card","init_icon","init_common","init_button","init_ngx_translate_core","init_activity_association_service","init_operators","init_translation_module","init_feedback_form_modal_component","init_vendasta_meeting_analysis","init_esm","init_association_popover_component","init_tokens_and_interfaces","constructor","dialogRef","data","http","snackbarService","dialog","meetingAnalysisApiService","activityAssociationService","title","meetingTitle","summary","keyTakeaways","actionItems","meetingDate","recordingUrl","transcriptUrl","sentimentScore","salesScore","companies","processedTranscriptID","activity","hasRecording","window","open","get","responseType","withCredentials","pipe","take","subscribe","next","result","openSuccessSnack","downloadFile","error","console","openErrorSnack","message","file","filename","url","URL","createObjectURL","Blob","type","link","downloadAnchor","nativeElement","href","download","click","revokeObjectURL","thumbsUp","submitEvaluation","EvaluationFeedback","EVALUATION_FEEDBACK_POSITIVE","thumbsDown","FeedbackFormModalComponent","width","afterClosed","feedbackType","feedbackReasons","comment","request","conversationId","feedback","reasons","createEvaluation","closeDialog","close","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","HttpClient","SnackbarService","MatDialog","MeetingAnalysisApiService","ActivityAssociationService","selectors","viewQuery","rf","ctx","provide","PrimaryAccountGroupIDForCrmObject","useFactory","of","decls","vars","consts","template","ɵɵelement","ɵɵtemplate","MeetingSummaryModalComponent_li_47_Template","MeetingSummaryModalComponent_li_53_Template","i0","_r1","MeetingSummaryModalComponent_button_63_Template","MeetingSummaryModalComponent_button_64_Template","ɵɵpipeBind2","ɵɵproperty","MatDialogModule","MatDialogTitle","MatDialogActions","MatDialogContent","TranslateModule","TranslatePipe","TranslationModule","MatCardModule","MatIconModule","MatIcon","DatePipe","MatButtonModule","MatButton","MatIconButton","CommonModule","NgForOf","NgIf","CrmActivityAssociationPopoverComponent","styles","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ctx_r0","AVATAR_WIDTH","ɵɵtext","ɵɵtextInterpolate1","headerText_r2","ɵɵpipeBind2","cardInfo","date","dateFormat","ɵɵtextInterpolate","cardTitle_r3","ɵɵtemplate","CrmActivityMeetingComponent_div_0_mat_card_title_13_span_1_Template","cardTitle","meetingSummaryTitle","ɵɵsanitizeHtml","ɵɵlistener","ɵɵrestoreView","_r4","ɵɵnextContext","ɵɵresetView","openSummaryModal","ɵɵpipeBind1","meetingSummaryBody","CrmActivityMeetingComponent_div_0_Conditional_15_div_0_Template","CrmActivityMeetingComponent_div_0_Conditional_15_div_1_Template","meetingBody","CrmActivityMeetingComponent_div_0_Conditional_16_div_0_Template","ɵɵelementContainer","activityData_r5","ɵɵpureFunction1","_c1","meetingDuration","_c2","meetingSalesScore","_c3","meetingStatus","_c4","meetingLocation","_c5","meetingSummarySentiment","CrmActivityMeetingComponent_div_0_div_3_Template","CrmActivityMeetingComponent_div_0_span_5_Template","CrmActivityMeetingComponent_div_0_ng_template_7_Template","ɵɵtemplateRefExtractor","CrmActivityMeetingComponent_div_0_p_10_Template","CrmActivityMeetingComponent_div_0_mat_card_title_13_Template","CrmActivityMeetingComponent_div_0_Conditional_15_Template","CrmActivityMeetingComponent_div_0_Conditional_16_Template","CrmActivityMeetingComponent_div_0_ng_container_20_Template","CrmActivityMeetingComponent_div_0_ng_container_21_Template","CrmActivityMeetingComponent_div_0_ng_container_22_Template","CrmActivityMeetingComponent_div_0_ng_container_23_Template","CrmActivityMeetingComponent_div_0_ng_container_24_Template","ɵɵstyleProp","showAvatar","toString","headerText$","loadingHeaderText_r6","ɵɵconditional","_c0","ɵɵelementContainerStart","value_r7","CrmActivityMeetingComponent_ng_template_1_ng_container_5_Template","label_r8","CrmActivityMeetingComponent","init_meeting_component","__esmMin","init_common","init_core","init_card","init_ngx_translate_core","init_state","init_avatar","init_pipes","init_date_utils","init_constants","init_translation_module","init_field_service","init_collapsible_section_component","init_association_popover_component","init_icon","init_meeting_summary_modal_component","init_operators","init_activity_interface","objectType","_objectType","set","associatedObjectId","crmObjectId","_associatedObjectId","_showAvatar","data","checkIfActivityCardInformation","_cardInfo","associationService","activity","convertActivityToCardInfo","type","duration","getIntegerFieldData","StandardIds","ActivityMeetingDuration","sanitizer","sanitize","SecurityContext","HTML","getStringFieldData","ActivityMeetingBody","ActivityMeetingStatus","ActivityMeetingLocation","fieldService","getFieldValueFromCrmObject","SystemFieldIds","ActivityEffectiveDate","dateValue","convertMillisecondsToHoursAndMinutes","ActivityMeetingSummaryTitle","meetingKeyTakeAways","getStringValuesFieldData","ActivityMeetingKeyTakeaways","meetingActionItems","ActivityMeetingActionItems","ActivityMeetingSummaryBody","ActivityMeetingSentiment","ActivityMeetingSalesScore","meetingTranscriptUrl","ActivityMeetingTranscriptUrl","meetingRecordingUrl","ActivityMeetingRecordingUrl","processedTranscriptID","ActivityMeetingAnalysisProcessedTranscriptID","ownerId","ActivityOwnerID","constructor","translateService","dialog","userService","DateFormat","mediumDateShortTime","signal","companies","computed","stream","statusConfig","MeetingStatus","Scheduled","toLowerCase","i18nKey","supportsOwnerSuffix","Rescheduled","Cancelled","Completed","NoShow","getMultiUsers","pipe","map","u","statusText","instant","displayName","ownerName","minutes","Math","floor","hours","fieldId","stringValue","stringValues","values","integerValue","cardDetails","companyList","open","MeetingSummaryModalComponent","width","meetingTitle","meetingDate","sentimentScore","salesScore","summary","keyTakeaways","actionItems","transcriptUrl","recordingUrl","ownerID","afterClosed","subscribe","isClosed","ɵɵdirectiveInject","CrmFieldService","TranslateService","DomSanitizer","MatDialog","ActivityAssociationService","ActivityAssigneeService","selectors","inputs","features","ɵɵProvidersFeature","RxState","decls","vars","consts","template","rf","ctx","CrmActivityMeetingComponent_div_0_Template","CrmActivityMeetingComponent_ng_template_1_Template","CommonModule","NgIf","NgTemplateOutlet","AsyncPipe","DatePipe","TranslateModule","TranslatePipe","TranslationModule","CollapsibleSectionComponent","MatCardModule","MatCard","MatCardAvatar","MatCardContent","MatCardHeader","MatCardSubtitle","MatCardTitle","GalaxyAvatarModule","AvatarComponent","GalaxyPipesModule","CrmActivityAssociationPopoverComponent","MatIcon","styles","init_activities","__esmMin","init_activity_interface","init_activity_communication_component","init_activity_logger_component","init_activity_logger_service","init_activity_template_component","init_activity_template_options_directive","init_activity_url_builder","init_email_component","init_logged_call_component","init_logged_communication_component","init_logged_email_component","init_logged_meeting_component","init_logged_note_component","init_note_component","init_record_change_component","init_task_component","init_logger","init_meeting_component","init_activity_association_service","init_meeting_summary_modal_component","CrmTimelineAssociatedObjectPipe","init_timeline_associated_object_pipe","__esmMin","init_tokens_and_interfaces","transform","activity","crmObject","isObjectType","objectType","crmObjectId","associations","length","asc","crmObjectType","ObjectTypes","includes","pure","ɵɵelementContainer","ɵɵtemplate","CrmTimelineActivityComponent_ng_container_1_div_1_ng_template_1_ng_container_0_Template","ɵɵproperty","ɵɵpipeBind1","ctx_r0","activity","taskOverdueSubtitle_r3","taskDueSubtitle_r2","ɵɵpureFunction1","_c1","ɵɵelement","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r4","ɵɵnextContext","ɵɵresetView","updateActivity","ɵɵelementEnd","crmObjectIdentifier","uniqueUsers$","ɵɵelementContainerStart","CrmTimelineActivityComponent_ng_container_1_div_1_ng_container_4_crm_activity_logged_note_2_Template","CrmTimelineActivityComponent_ng_container_1_div_1_ng_container_4_crm_activity_logged_email_3_Template","CrmTimelineActivityComponent_ng_container_1_div_1_ng_container_4_crm_activity_logged_call_4_Template","CrmTimelineActivityComponent_ng_container_1_div_1_ng_container_4_crm_activity_logged_meeting_5_Template","CrmTimelineActivityComponent_ng_container_1_div_1_ng_container_4_crm_activity_task_6_Template","CrmTimelineActivityComponent_ng_container_1_div_1_ng_container_4_crm_activity_logged_communication_7_Template","ɵɵadvance","crmObjectSubtype","_r5","editMode","crmActivity_r6","crmObjectId","objectType","hideCrmAssociations","ownerUser","CrmTimelineActivityComponent_ng_container_1_div_1_ng_container_5_crm_activity_logger_1_Template","ɵɵpipeBind2","_r8","copyLinkToActivity","ɵɵtext","ɵɵtextInterpolate1","_r7","CrmTimelineActivityComponent_ng_container_1_div_1_div_7_Conditional_6_Template","ɵɵconditional","showCopyLink","activityOptionsMenu_r9","CrmTimelineActivityComponent_ng_container_1_div_1_ng_template_1_Template","ɵɵtemplateRefExtractor","CrmTimelineActivityComponent_ng_container_1_div_1_ng_container_4_Template","CrmTimelineActivityComponent_ng_container_1_div_1_ng_container_5_Template","CrmTimelineActivityComponent_ng_container_1_div_1_div_7_Template","_c0","isLast","ownerId","taskSubtitle_r10","undefined","CrmTimelineActivityComponent_ng_container_1_div_1_Template","isActivityValid","CrmTimelineActivityComponent_ng_template_2_div_0_crm_activity_record_change_1_Template","CrmTimelineActivityComponent_ng_template_2_div_0_crm_activity_note_2_Template","CrmTimelineActivityComponent_ng_template_2_div_0_crm_activity_email_3_Template","CrmTimelineActivityComponent_ng_template_2_div_0_crm_activity_call_4_Template","CrmTimelineActivityComponent_ng_template_2_div_0_crm_activity_communication_5_Template","CrmTimelineActivityComponent_ng_template_2_div_0_crm_activity_opportunity_updated_6_Template","CrmTimelineActivityComponent_ng_template_2_div_0_crm_activity_meeting_7_Template","CrmTimelineActivityComponent_ng_template_2_div_0_Template","ɵɵtextInterpolate2","activity_r11","dateFormat","activity_r12","CrmTimelineActivityComponent","init_timeline_activity_component","__esmMin","init_core","init_common","init_ngx_translate_core","init_translation_module","init_constants","init_empty_state","init_loading_spinner","init_icon","init_observers","init_opportunity_change_component","init_form_field","init_input","init_forms","init_menu","init_button","init_call_component","init_association_popover_component","init_date_utils","init_activity_association_service","init_activities","init_shared_pipes","init_timeline_associated_object_pipe","init_timeline_service","init_shared_services","init_meeting_component","init_snackbar_service","init_chips","init_utils","init_clipboard","constructor","input","required","activitiesTimelineService","inject","ActivitiesTimelineService","fieldService","CrmFieldService","clipboard","Clipboard","document","DOCUMENT","snackbarService","SnackbarService","state","select","DateFormat","medium","computed","objId","startsWith","getFieldValueFromCrmObject","StandardIds","ActivityNoteTitle","stringValue","ActivityNoteBody","VALID_RECORD_CHANGE_TYPES","includes","StandardExternalIds","ActivityRecordChangeType","console","error","constructCopyLink","documentUrl","URL","split","glxyFilter","fieldId","SystemFieldIds","ActivityID","operator","GalaxyFilterOperator","FILTER_OPERATOR_IS","values","string","encodedFilter","encodeFilters","copy","openSuccessSnack","activities","get","index","findIndex","a","lockActivityEffectiveDate","set","selectors","inputs","features","ɵɵProvidersFeature","ActivityAssociationService","decls","vars","consts","template","rf","ctx","CrmTimelineActivityComponent_ng_container_1_Template","CrmTimelineActivityComponent_ng_template_2_Template","CrmTimelineActivityComponent_ng_template_4_Template","CrmTimelineActivityComponent_ng_template_6_Template","isLoggedActivity","systemActivity_r13","CommonModule","NgClass","NgIf","NgTemplateOutlet","NgSwitch","NgSwitchCase","AsyncPipe","DatePipe","TranslateModule","TranslatePipe","TranslationModule","GalaxyEmptyStateModule","GalaxyLoadingSpinnerModule","MatIconModule","MatIcon","CrmActivityTemplateComponent","CrmActivityLoggedNoteComponent","ObserversModule","CrmActivityRecordChangeComponent","CrmActivityOpportunityUpdatedComponent","CrmActivityLoggedEmailComponent","CrmActivityLoggedCallComponent","CrmActivityLoggedMeetingComponent","CrmActivityEmailComponent","CrmActivityLoggedCommunicationComponent","GalaxyFormFieldModule","MatInputModule","ReactiveFormsModule","CrmActivityNoteComponent","CrmActivityTaskComponent","CrmActivityEffectiveDatePipe","CrmIsTaskOverduePipe","CrmActivityLoggerComponent","CrmActivityTemplateOptionsDirective","MatMenuModule","MatMenu","MatMenuItem","MatMenuTrigger","MatButtonModule","MatIconButton","CrmTimelineAssociatedObjectPipe","CrmActivityCommunicationComponent","CrmActivityCallComponent","CrmActivityAssociationPopoverComponent","CrmActivityMeetingComponent","styles","ɵɵtext","ɵɵtextInterpolate1","ɵɵpipeBind1","ctx","ɵɵelementStart","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ctx_r1","routePrefix","primaryAssociation_r1","linkUrl","ɵɵtextInterpolate","name","ɵɵtemplate","CrmActivityTemplateV2Component_Conditional_0_Conditional_8_Conditional_0_Template","ɵɵconditional","tmp_5_0","primaryAssociation","ɵɵelementContainer","CrmActivityTemplateV2Component_Conditional_0_Conditional_10_ng_container_0_Template","subtitleCustomTemplate_r3","CrmActivityTemplateV2Component_Conditional_0_Conditional_11_ng_container_0_Template","subtitleDefaultTemplate_r4","ɵɵelement","CrmActivityTemplateV2Component_Conditional_0_Conditional_6_Template","CrmActivityTemplateV2Component_Conditional_0_Conditional_8_Template","CrmActivityTemplateV2Component_Conditional_0_Conditional_10_Template","CrmActivityTemplateV2Component_Conditional_0_Conditional_11_Template","ɵɵprojection","ɵɵstyleProp","showAvatar","AVATAR_WIDTH","toString","ɵɵpropertyInterpolate","activityIcon","tmp_7_0","headerText","showPrimaryAssociation","subtitleTemplate","ɵɵpipeBind2","dateFormat","CrmActivityTemplateV2Component_ng_template_1_Conditional_0_Template","tmp_3_0","effectiveDate","CrmActivityTemplateV2Component_ng_template_3_ng_container_1_Template","CrmActivityTemplateV2Component","init_activity_template_v2_component","__esmMin","init_common","init_core","init_ngx_translate_core","init_constants","init_translation_module","init_card","init_icon","init_state","init_avatar","init_field_service","init_date_utils","init_router","init_activities","constructor","fieldService","translateService","associationService","DateFormat","medium","unknownNamePlaceholder","instant","activity","model","ownerUser","undefined","isOwnedByServiceAccount","fullName","computed","user","firstName","lastName","trim","headerTextFromActivityType","crmObjectSubtype","getFieldValueFromCrmObject","SystemFieldIds","ActivityEffectiveDate","dateValue","activityType","ActivityIcons","ActivityType","ActivityTypes","Note","Email","Call","Meeting","Task","Communication","ɵɵdirectiveInject","CrmFieldService","TranslateService","ActivityAssociationService","selectors","inputs","outputs","features","ɵɵProvidersFeature","RxState","ngContentSelectors","_c1","decls","vars","consts","template","rf","CrmActivityTemplateV2Component_Conditional_0_Template","CrmActivityTemplateV2Component_ng_template_1_Template","ɵɵtemplateRefExtractor","CrmActivityTemplateV2Component_ng_template_3_Template","tmp_2_0","CommonModule","NgTemplateOutlet","DatePipe","TranslateModule","TranslatePipe","TranslationModule","MatCardModule","MatCard","MatCardAvatar","MatCardContent","MatCardHeader","MatCardSubtitle","MatCardTitle","MatIconModule","GalaxyAvatarModule","AvatarComponent","RouterLink","styles","ɵɵelementContainer","ɵɵtemplate","CrmTimelineActivityV2Component_Conditional_1_Conditional_0_ng_template_1_ng_container_0_Template","ɵɵproperty","ɵɵpipeBind1","ctx_r0","activity","taskOverdueSubtitle_r3","taskDueSubtitle_r2","ɵɵpureFunction1","_c1","ɵɵelement","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r4","ɵɵnextContext","ɵɵresetView","updateActivity","ɵɵelementEnd","crmObjectIdentifier","uniqueUsers$","ɵɵelementContainerStart","CrmTimelineActivityV2Component_Conditional_1_Conditional_0_Conditional_4_Case_1_Template","CrmTimelineActivityV2Component_Conditional_1_Conditional_0_Conditional_4_Case_2_Template","CrmTimelineActivityV2Component_Conditional_1_Conditional_0_Conditional_4_Case_3_Template","CrmTimelineActivityV2Component_Conditional_1_Conditional_0_Conditional_4_Case_4_Template","CrmTimelineActivityV2Component_Conditional_1_Conditional_0_Conditional_4_Case_5_Template","CrmTimelineActivityV2Component_Conditional_1_Conditional_0_Conditional_4_Case_6_Template","ɵɵadvance","ɵɵconditional","tmp_6_0","crmObjectSubtype","ActivityType","Note","Email","Call","Meeting","Task","Communication","_r5","editMode","crmActivity_r6","crmObjectId","objectType","hideCrmAssociations","ownerUser","CrmTimelineActivityV2Component_Conditional_1_Conditional_0_Conditional_5_Conditional_0_Template","ɵɵpipeBind2","_r8","copyLinkToActivity","ɵɵtext","ɵɵtextInterpolate1","_r7","CrmTimelineActivityV2Component_Conditional_1_Conditional_0_Conditional_7_Conditional_6_Template","showCopyLink","activityOptionsMenu_r9","CrmTimelineActivityV2Component_Conditional_1_Conditional_0_ng_template_1_Template","ɵɵtemplateRefExtractor","CrmTimelineActivityV2Component_Conditional_1_Conditional_0_Conditional_4_Template","CrmTimelineActivityV2Component_Conditional_1_Conditional_0_Conditional_5_Template","CrmTimelineActivityV2Component_Conditional_1_Conditional_0_Conditional_7_Template","_c0","isLast","ownerId","taskSubtitle_r10","undefined","CrmTimelineActivityV2Component_Conditional_1_Conditional_0_Template","isActivityValid","CrmTimelineActivityV2Component_Conditional_2_Conditional_0_Case_1_Template","CrmTimelineActivityV2Component_Conditional_2_Conditional_0_Case_2_Template","CrmTimelineActivityV2Component_Conditional_2_Conditional_0_Case_3_Template","CrmTimelineActivityV2Component_Conditional_2_Conditional_0_Case_4_Template","CrmTimelineActivityV2Component_Conditional_2_Conditional_0_Case_5_Template","CrmTimelineActivityV2Component_Conditional_2_Conditional_0_Case_6_Template","CrmTimelineActivityV2Component_Conditional_2_Conditional_0_Case_7_Template","tmp_5_0","RecordChange","OpportunityChange","CrmTimelineActivityV2Component_Conditional_2_Conditional_0_Template","ɵɵtextInterpolate2","activity_r11","dateFormat","activity_r12","CrmTimelineActivityV2Component","init_timeline_activity_v2_component","__esmMin","init_core","init_common","init_ngx_translate_core","init_translation_module","init_constants","init_empty_state","init_loading_spinner","init_icon","init_observers","init_opportunity_change_component","init_form_field","init_input","init_forms","init_menu","init_button","init_call_component","init_association_popover_component","init_date_utils","init_activity_association_service","init_activities","init_shared_pipes","init_timeline_associated_object_pipe","init_timeline_service","init_shared_services","init_meeting_component","init_snackbar_service","init_chips","init_utils","init_clipboard","init_activity_template_v2_component","constructor","input","required","activitiesTimelineService","inject","ActivitiesTimelineService","fieldService","CrmFieldService","clipboard","Clipboard","document","DOCUMENT","snackbarService","SnackbarService","state","select","DateFormat","medium","computed","objId","startsWith","ActivityTypes","getFieldValueFromCrmObject","StandardIds","ActivityNoteTitle","stringValue","ActivityNoteBody","VALID_RECORD_CHANGE_TYPES","includes","StandardExternalIds","ActivityRecordChangeType","console","error","constructCopyLink","documentUrl","URL","split","glxyFilter","fieldId","SystemFieldIds","ActivityID","operator","GalaxyFilterOperator","FILTER_OPERATOR_IS","values","string","encodedFilter","encodeFilters","copy","openSuccessSnack","activities","get","index","findIndex","a","lockActivityEffectiveDate","set","selectors","inputs","features","ɵɵProvidersFeature","ActivityAssociationService","decls","vars","consts","template","rf","ctx","CrmTimelineActivityV2Component_Conditional_1_Template","CrmTimelineActivityV2Component_Conditional_2_Template","CrmTimelineActivityV2Component_ng_template_3_Template","CrmTimelineActivityV2Component_ng_template_5_Template","isLoggedActivity","CommonModule","NgClass","NgTemplateOutlet","AsyncPipe","DatePipe","TranslateModule","TranslatePipe","TranslationModule","GalaxyEmptyStateModule","GalaxyLoadingSpinnerModule","MatIconModule","MatIcon","ObserversModule","CrmActivityRecordChangeComponent","CrmActivityOpportunityUpdatedComponent","CrmActivityLoggedCallComponent","CrmActivityLoggedMeetingComponent","CrmActivityEmailComponent","CrmActivityLoggedCommunicationComponent","GalaxyFormFieldModule","MatInputModule","ReactiveFormsModule","CrmActivityNoteComponent","CrmActivityTaskComponent","CrmActivityEffectiveDatePipe","CrmIsTaskOverduePipe","CrmActivityLoggerComponent","CrmActivityTemplateOptionsDirective","MatMenuModule","MatMenu","MatMenuItem","MatMenuTrigger","MatButtonModule","MatIconButton","CrmTimelineAssociatedObjectPipe","CrmActivityCommunicationComponent","CrmActivityCallComponent","CrmActivityAssociationPopoverComponent","CrmActivityMeetingComponent","CrmActivityLoggedEmailComponent","CrmActivityLoggedNoteComponent","CrmActivityTemplateV2Component","styles","ɵɵelement","ɵɵproperty","activity_r2","crmIdentifier_r4","last_r3","ctx_r4","showCopyLink","ɵɵelementContainerStart","ɵɵtemplate","CrmTimelineComponent_ng_container_1_ng_container_1_ng_container_1_div_1_ng_container_5_ng_container_1_Conditional_1_Template","CrmTimelineComponent_ng_container_1_ng_container_1_ng_container_1_div_1_ng_container_5_ng_container_1_Conditional_3_Template","ɵɵadvance","ɵɵconditional","ɵɵpipeBind1","hasCrmTimelineActivitiesFeatureFlag$","CrmTimelineComponent_ng_container_1_ng_container_1_ng_container_1_div_1_ng_container_5_ng_container_1_Template","section_r6","activities","trackActivitiesBy","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","CrmTimelineComponent_ng_container_1_ng_container_1_ng_container_1_div_1_ng_container_5_Template","ɵɵtextInterpolate","name","crmIdentifiers$","CrmTimelineComponent_ng_container_1_ng_container_1_ng_container_1_div_1_Template","activitySections_r7","trackActivitySectionsBy","CrmTimelineComponent_ng_container_1_ng_container_1_ng_container_1_Template","CrmTimelineComponent_ng_container_1_ng_container_1_ng_container_2_Template","length","emptyActivities_r8","showLoadingAfterActivities$","CrmTimelineComponent_ng_container_1_ng_container_1_Template","activitySections$","ɵɵtextInterpolate1","CrmTimelineComponent_ng_template_5_ng_container_0_ng_container_1_ng_container_5_Template","CrmTimelineComponent_ng_template_5_ng_container_0_ng_container_1_ng_template_6_Template","ɵɵtemplateRefExtractor","filtersPristineObj_r10","filtersPristine","emptyActivitiesSearchText_r9","CrmTimelineComponent_ng_template_5_ng_container_0_ng_container_1_Template","loading$","CrmTimelineComponent_ng_template_5_ng_container_0_Template","ɵɵpureFunction1","_c0","filtersPristine$","CrmTimelineComponent","init_timeline_component","__esmMin","init_common","init_core","init_observers","init_ngx_translate_core","init_tokens_and_interfaces","init_translation_module","init_empty_state","init_loading_spinner","init_icon","init_state","init_esm","init_field_service","init_form_field","init_input","init_forms","init_src","init_date_utils","init_menu","init_button","init_timeline_activity_component","init_timeline_activity_v2_component","crmObjectId","activitiesTimelineService","crmObjectId$$","next","objectType","objectType$$","constructor","config","fieldService","trackingService","input","activitiesChanged","EventEmitter","dateFormat","DateFormat","medium","now","Date","combineLatest","asObservable","pipe","map","state","select","filters$","activitiesLoading","activitiesLoadMore","searchTerm","filters","loading","paged","showLoadingReplacingActivities$","subscriptions","SubscriptionList","new","hasTimelineActivitiesFeatureFlag$","ngOnInit","setupSplitActivitiesIntoSections","getValue","connect","distinctUntilChanged","filter","Boolean","subscribe","set","emit","get","ngOnDestroy","destroy","setFilters","reloadActivities","trackFilterUsage","setSearchTerm","prioritizeOverdueTask","uniqueUsers","activity","__spreadProps","__spreadValues","ownerUser","find","user","userId","ownerId","isLoggedActivity","getFieldValueFromCrmObject","StandardIds","ActivityManuallyLogged","booleanValue","activitiesWithOwnerUser","getActivitySections","addActivity","loadMoreActivities","index","section","ɵɵdirectiveInject","CrmInjectionToken","ActivitiesTimelineService","CrmFieldService","CRMTrackingService","selectors","inputs","outputs","features","ɵɵProvidersFeature","RxState","decls","vars","consts","template","rf","ctx","CrmTimelineComponent_ng_container_1_Template","CrmTimelineComponent_ng_template_3_Template","CrmTimelineComponent_ng_template_5_Template","loading_r11","CommonModule","NgForOf","NgIf","AsyncPipe","TranslateModule","TranslatePipe","TranslationModule","GalaxyEmptyStateModule","EmptyStateComponent","EmptyStateHeroDirective","EmptyStateTitleDirective","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","MatIconModule","ObserversModule","GalaxyFormFieldModule","MatInputModule","ReactiveFormsModule","MatMenuModule","MatButtonModule","CrmTimelineActivityComponent","CrmTimelineActivityV2Component","styles","ɵɵelement","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","aiSummaryResponse_r3","ɵɵlistener","ɵɵrestoreView","_r4","ctx_r1","ɵɵnextContext","ɵɵresetView","regenerateSummary","ɵɵproperty","ɵɵsanitizeHtml","ɵɵpipeBind1","ɵɵtemplate","CrmAISummaryComponent_Conditional_0_ng_template_7_Conditional_0_Conditional_0_Template","CrmAISummaryComponent_Conditional_0_ng_template_7_Conditional_0_Conditional_1_Template","CrmAISummaryComponent_Conditional_0_ng_template_7_Conditional_0_Conditional_2_Template","ɵɵconditional","aiSummaryIsLoading","noAISummary","CrmAISummaryComponent_Conditional_0_ng_template_7_Conditional_0_Template","CrmAISummaryComponent_Conditional_0_ng_template_7_Conditional_2_Template","tmp_2_0","aiSummaryResponse$","$event","_r1","onExpandedChange","CrmAISummaryComponent_Conditional_0_ng_template_7_Template","openAISummaryExpansionPanel","_r5","onOpenNoFeatureAISummary","CrmAISummaryComponent","init_ai_summary_component","__esmMin","init_core","init_esm","init_ai_icon","init_tokens_and_interfaces","init_translation_module","init_rxjs_interop","init_operators","init_expansion","init_ngx_translate_core","init_common","init_alert","init_loading_spinner","init_icon","constructor","config","activatedRoute","crmAIService","snackbarService","trackingService","crmObjectId","input","crmObjectId$","toObservable","crmObjectType","crmObjectType$","aiSummaryTrigger$$","Subject","regenerateAISummary","signal","changedIdSinceGeneration","showAISummaryRestrictedDialog","hasAccessToAISummary$","hasAccessToFeature$","of","translateService","inject","TranslateService","aiIconService","GalaxyAiIconService","dummyInit","set","openRestrictedDialog","getAISummaryResponse","hasAISummaryParam$","queryParamMap","pipe","take","map","params","get","aiSummary","tap","hasAISummaryParam","trackEvent","toSignal","initialValue","effect","next","expanded","combineLatest","namespace$","locale$","startWith","undefined","shouldGenerateAISummary","delay","filter","switchMap","namespace","locale","getAiSummaryForCrmObject","crmObjectNamespace","language","response","instant","DOMParser","parseFromString","body","innerHTML","catchError","openErrorSnack","ɵɵdirectiveInject","CrmInjectionToken","ActivatedRoute","CrmAIApiService","SnackbarService","CRMTrackingService","selectors","inputs","decls","vars","consts","template","rf","ctx","CrmAISummaryComponent_Conditional_0_Template","CrmAISummaryComponent_Conditional_2_Template","MatExpansionPanel","MatExpansionModule","MatExpansionPanelHeader","MatExpansionPanelTitle","MatExpansionPanelContent","AsyncPipe","TranslateModule","TranslatePipe","TranslationModule","GalaxyAlertModule","AlertComponent","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","MatIconModule","MatIcon","styles","init_ai_summary","__esmMin","init_ai_summary_component","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","addActivity","ɵɵelementEnd","ɵɵproperty","crmObjectId","objectType_r4","ɵɵelement","_r5","loadMoreActivities","CrmActivitiesTimelineComponent","init_activities_timeline_component","__esmMin","init_common","init_core","init_ngx_translate_core","init_tokens_and_interfaces","init_translation_module","init_esm","init_activity_logger_component","init_form_field","init_input","init_forms","init_timeline_component","init_button","init_galaxy_filter_chips_component","init_chips","init_animations","init_icon","init_infinite_scroll_trigger","init_state","init_rxjs_interop","init_utils","init_timeline_service","init_filter_view_component","init_shared_services","init_alert","init_ai_summary","constructor","config","activitiesTimelineService","activitiesTimelineFilterService","router","activatedRoute","input","showFiltersOpen","activityObjectType","enableAISummary","hasTimelineActivitiesFeatureFlag","toSignal","hasTimelineActivitiesFeatureFlag$","of","objectType","translateService","inject","TranslateService","destroyRef","DestroyRef","filters","signal","filtersApplied","computed","length","presetFilters","name","instant","fieldId","operator","GalaxyFilterOperator","FILTER_OPERATOR_IS","values","string","StandardIds","ActivityCampaignID","FILTER_OPERATOR_IS_EMPTY","ActivityCommunicationType","FILTER_OPERATOR_IS_NOT","searchControl","FormControl","subscriptions","showLoadMore","scrollTop","initialSearchTerm","initialSearchTermSet","initialFilters","filterParam","snapshot","queryParamMap","get","f","decodeFilters","validateFilters","setInitialAppliedFilters","keys","appID","push","effect","filter","ngOnInit","searchParam","decodeURI","initializeState","valueChanges","pipe","skipWhile","term","debounceTime","SEARCH_DEBOUNCE_MS","map","value","trim","tap","searchTerm","encodeURI","navigate","relativeTo","queryParams","search","queryParamsHandling","timeline","setSearchTerm","subscribe","ngAfterViewChecked","setValue","updateValueAndValidity","ngAfterContentInit","filters$","takeUntilDestroyed","set","activity","handleActivitiesChanged","activities","scrollableContainer","nativeElement","ngOnDestroy","forEach","subscription","unsubscribe","toggleFilterBar","updateFilters","updateChipList","readyFilters","encodeFilters","setFilters","filterChipRef","ɵɵdirectiveInject","CrmInjectionToken","ActivitiesTimelineService","GalaxyFilterChipInjectionToken","Router","ActivatedRoute","selectors","viewQuery","rf","ctx","RxState","provide","useFactory","tableFiltersInjectionTokenGenerator","PrimaryAccountGroupIDForCrmObject","comp","objectService","fieldService","crmObjectId$","toObservable","crmObjectType$","Boolean","combineLatest","switchMap","v","crmObjectType","getMultiObject","response","crmObjects","crmObject","getFieldValueFromCrmObject","PlatformExtensionFieldIds","AccountGroupID","stringValue","shareReplay","deps","CrmObjectService","CrmFieldService","decls","vars","consts","template","ɵɵdeclareLet","ɵɵtemplate","CrmActivitiesTimelineComponent_Conditional_3_Template","CrmActivitiesTimelineComponent_Conditional_4_Template","i0","_r1","ɵɵtext","CrmActivitiesTimelineComponent_span_11_Template","CrmActivitiesTimelineComponent_glxy_infinite_scroll_trigger_26_Template","ɵɵstoreLet","ɵɵadvance","ɵɵconditional","objectType_r6","ɵɵpureFunction1","_c3","ɵɵtextInterpolate","ɵɵpipeBind1","_c4","CommonModule","NgClass","NgIf","TranslateModule","TranslatePipe","TranslationModule","CrmActivityLoggerComponent","CrmTimelineComponent","GalaxyFormFieldModule","FormFieldComponent","MatInputModule","MatInput","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","MatButtonModule","MatButton","GalaxyFilterChipsComponent","MatIconModule","MatIcon","GalaxyInfiniteScrollTriggerModule","InfiniteScrollTriggerComponent","FilterViewComponent","GalaxyAlertModule","CrmAISummaryComponent","styles","data","animation","trigger","state","style","height","opacity","transition","animate","AllMetricTypes","ActivityLeaderboardDatasource","init_activity_leaderboard_datasource","__esmMin","init_core","init_vendasta_crm","init_esm","init_vendasta_iamv2","init_tokens_and_interfaces","init_field_service","init_utils","MetricType","METRIC_TYPE_INBOUND_CALLS","METRIC_TYPE_OUTBOUND_CALLS","METRIC_TYPE_EMAILS_RECEIVED","METRIC_TYPE_EMAILS_SENT","METRIC_TYPE_MEETINGS","constructor","crmActivityApiService","inject","CRMActivityApiService","iamService","IAMService","config","CrmInjectionToken","total$$","BehaviorSubject","average$$","results$$","undefined","filter$$","sort$$","get","req","filter","filters","sort","sorting","fetch$","namespace$","pipe","tap","next","map","namespace","buildRequestParams","switchMap","params","getActivityMetrics","response","summary","mapSummary","summaries","total","average","mapUsersActivities","ownerMetricCounts","data","fetchUserInfo","isFilterEqual","getValue","asObservable","sortData","mapResponse","userIds","item","userId","getMultiUsers","users","user","find","u","fullName","firstName","lastName","Boolean","join","__spreadProps","__spreadValues","profilePicture","profileImageUrl","field","active","isAsc","direction","a","b","compare","sortResult","count","localeCompare","filterA","filterB","JSON","stringify","pagingMetadata","nextCursor","hasMore","operator","FilterGroupOperator","FILTER_GROUP_OPERATOR_AND","fieldId","SystemFieldIds","ActivityCreated","FilterOperator","FILTER_OPERATOR_IS_BETWEEN","values","date","dateRangeStart","dateRangeEnd","metricTypes","metrics","metric","ownerId","mapMetricToCount","metricCounts","metricCount","inboundCall","getMetricValue","outboundCall","inboundEmail","outboundEmail","meeting","metricType","effort","factory","ɵfac","ɵɵelement","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","index_r1","ɵɵproperty","element_r2","profilePicture","fullName","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r3","ctx_r3","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","footerType","ɵɵresetView","ɵɵtwoWayProperty","ɵɵtextInterpolate1","element_r5","count","inboundCall","ɵɵpipeBind2","footerData","element_r6","outboundCall","element_r7","inboundEmail","element_r8","outboundEmail","element_r9","meeting","ActivityLeaderboardComponent","init_activity_leaderboard_component","__esmMin","init_core","init_table","init_activity_leaderboard_datasource","init_rxjs_interop","init_sort","init_avatar","init_form_field","init_select","init_forms","init_common","init_ngx_translate_core","constructor","activityDatasource","inject","ActivityLeaderboardDatasource","selection","input","columns","id","title","pinned","sticky","tableColumns","map","c","dataSource","GalaxyDataSource","selectedRows","signal","footerTotal","toSignal","total$$","footerAverage","average$$","computed","type","total","average","effect","setFilters","ngOnInit","sortChange","sort","setSorting","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵlistener","ɵɵtemplate","ActivityLeaderboardComponent_tr_2_Template","ɵɵelementContainerStart","ActivityLeaderboardComponent_th_4_Template","ActivityLeaderboardComponent_td_5_Template","ActivityLeaderboardComponent_td_6_Template","ActivityLeaderboardComponent_th_8_Template","ActivityLeaderboardComponent_td_9_Template","ActivityLeaderboardComponent_td_10_Template","ActivityLeaderboardComponent_th_12_Template","ActivityLeaderboardComponent_td_13_Template","ActivityLeaderboardComponent_td_14_Template","ActivityLeaderboardComponent_th_16_Template","ActivityLeaderboardComponent_td_17_Template","ActivityLeaderboardComponent_td_18_Template","ActivityLeaderboardComponent_th_20_Template","ActivityLeaderboardComponent_td_21_Template","ActivityLeaderboardComponent_td_22_Template","ActivityLeaderboardComponent_th_24_Template","ActivityLeaderboardComponent_td_25_Template","ActivityLeaderboardComponent_td_26_Template","ActivityLeaderboardComponent_th_28_Template","ActivityLeaderboardComponent_td_29_Template","ActivityLeaderboardComponent_td_30_Template","ActivityLeaderboardComponent_tr_31_Template","ActivityLeaderboardComponent_tr_32_Template","GalaxyTableModule","TableContainerComponent","MatTable","MatSort","MatHeaderRowDef","MatHeaderRow","MatColumnDef","MatHeaderCellDef","MatHeaderCell","MatCellDef","MatCell","MatFooterCellDef","MatFooterCell","MatSortHeader","GalaxyAvatarModule","AvatarComponent","GalaxyFormFieldModule","FormFieldComponent","MatSelect","FormsModule","NgControlStatus","NgModel","MatOption","MatRowDef","MatRow","MatFooterRowDef","MatFooterRow","DecimalPipe","TranslateModule","TranslatePipe","styles","changeDetection","ActivityLeaderboardModule","init_activity_leaderboard_module","__esmMin","init_common","init_activity_leaderboard_component","init_ngx_translate_core","init_table","init_select","init_forms","init_form_field","init_avatar","init_sort","init_i18n","init_activity_leaderboard_datasource","ActivityLeaderboardDatasource","imports","CommonModule","FormsModule","TranslateModule","TranslationModule","GalaxyTableModule","MatTableModule","MatSelectModule","MatSortModule","GalaxyFormFieldModule","GalaxyAvatarModule","ActivityLeaderboardComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","option_r1","ɵɵadvance","ɵɵtextInterpolate1","name","ɵɵelement","ɵɵlistener","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","triggerCustomRangeChanged","picker_r4","ɵɵpropertyInterpolate","ɵɵpipeBind1","customRangeStart","customRangeEnd","import_moment","DateRangeSelectorComponent","init_date_range_selector_component","__esmMin","init_esm","init_forms","init_ngx_translate_core","init_core","init_form_field","init_select","init_datepicker","init_common","init_rxjs_interop","init_i18n","constructor","translate","destroyRef","dateRangeChanged","EventEmitter","currentDate","Date","lastMonth","subMonths","lastYear","subYears","CUSTOM_DATE_ID","timeRangeOptions","dateRange","dateRangeStart","startOfMonth","dateRangeEnd","endOfMonth","instant","format","id","startOfYear","endOfYear","FormControl","timeRange$$","BehaviorSubject","showCustomDateSelector$$","ngOnInit","pipe","takeUntilDestroyed","subscribe","timeRange","emit","setTimeRange","event","next","start","value","end","isMoment","toDate","startOfDay","endOfDay","ɵɵdirectiveInject","TranslateService","DestroyRef","selectors","outputs","features","ɵɵProvidersFeature","provideNativeDateAdapter","decls","vars","consts","template","rf","ctx","$event","ɵɵtemplate","DateRangeSelectorComponent_mat_option_6_Template","DateRangeSelectorComponent_glxy_form_field_7_Template","ɵɵtextInterpolate","CommonModule","NgForOf","NgIf","AsyncPipe","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","TranslateModule","TranslatePipe","TranslationModule","MatSelectModule","MatPrefix","MatSelect","MatOption","MatDatepickerModule","MatDatepickerToggle","MatDateRangeInput","MatStartDate","MatEndDate","MatDateRangePicker","styles","CrmCoreModule","init_crm_core_module","__esmMin","init_tokens_and_interfaces","init_shared_services","forRoot","config","multilocationConfig","ngModule","providers","provide","CrmInjectionToken","useExisting","deps","CrmMultilocationInjectionToken","ActivityCustomizationService","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","StartCampaignDialogComponent","init_start_campaign_dialog_component","__esmMin","init_common","init_button","init_ngx_translate_core","init_loading_spinner","init_dialog","init_empty_state","init_icon","init_form_field","init_radio","init_forms","init_src","init_input","init_button_loading_indicator","init_progress_spinner","init_infinite_scroll_trigger","init_tooltip","init_alert","init_vendasta_campaigns","init_field_service","init_tokens_and_interfaces","init_datepicker","init_esm","init_operators","init_add_campaign_dialog_component","init_rxjs_interop","constructor","destroyRef","modalData","dialog","translate","objectService","config","ref","snackbarService","recipientCampaignService","crmFieldService","formGroup","FormBuilder","nonNullable","group","selectFormControl","dateFormControl","formatDate","Date","nowDate","now","loading$$","BehaviorSubject","crmObject$","getMultiObject","id","pipe","map","resp","object","crmObjects","length","ngOnInit","selectedCampaign","campaign","sendCampaign","undefined","openErrorSnack","sender","combineLatest","namespace$","parentNamespace$","take","subscribe","namespace","parentNamespace","senderType","SenderType","SENDER_TYPE_PARTNER","SENDER_TYPE_BUSINESS","type","recipient","crmObjectId","RecipientType","RECIPIENT_TYPE_CRM_CONTACT","contact","ContactType","CONTACT_TYPE_EMAIL","value","getFieldValueFromCrmObject","StandardExternalIds","Email","stringValue","emailAddress","phoneNumber","PhoneNumber","next","takeUntilDestroyed","switchMap","rec","formValues","getRawValue","campaignStartTime","addToCampaign","catchError","err","of","error","message","instant","getErrorMessage","openSuccessSnack","title","close","startsWith","back","open","AddCampaignDialogComponent","width","data","ɵɵdirectiveInject","DestroyRef","MAT_DIALOG_DATA","MatDialog","TranslateService","CrmObjectService","CrmInjectionToken","MatDialogRef","SnackbarService","RecipientCampaignService","CrmFieldService","selectors","features","ɵɵProvidersFeature","provide","PageAnalyticsInjectionToken","useFactory","pageAnalyticsInjectionTokenGenerator","decls","vars","consts","template","rf","ctx","ɵɵtext","ɵɵtemplate","StartCampaignDialogComponent_glxy_form_field_24_Template","ɵɵelementContainerStart","ɵɵlistener","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵproperty","ɵɵtextInterpolate1","ɵɵtextInterpolate2","ɵɵpipeBind2","controls","CommonModule","NgIf","DatePipe","MatButtonModule","MatButton","TranslateModule","TranslatePipe","GalaxyLoadingSpinnerModule","MatDialogModule","MatDialogTitle","MatDialogActions","MatDialogContent","GalaxyEmptyStateModule","MatIconModule","GalaxyFormFieldModule","FormFieldComponent","ExtendedDirective","MatRadioModule","MatRadioGroup","MatRadioButton","FormsModule","ɵNgNoValidate","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","VaFormsModule","MatInputModule","MatInput","GalaxyButtonLoadingIndicatorModule","ButtonLoadingIndicatorComponent","MatProgressSpinnerModule","VaFilterModule","GalaxyInfiniteScrollTriggerModule","ReactiveFormsModule","FormGroupDirective","FormControlName","GalaxyTooltipModule","GalaxyAlertModule","GalaxyDatepickerModule","MatDatepickerModule","MatDatepicker","styles","ɵɵelementStart","ɵɵlistener","campaign_r2","ɵɵrestoreView","_r1","$implicit","ctx_r2","ɵɵnextContext","ɵɵresetView","onItemChange","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","id","ɵɵtextInterpolate1","title","ɵɵtextInterpolate2","ɵɵpipeBind1","ɵɵpipeBind2","updated","ɵɵtextInterpolate","AddCampaignDialogComponent","init_add_campaign_dialog_component","__esmMin","init_common","init_forms","init_button","init_dialog","init_icon","init_input","init_progress_spinner","init_radio","init_field_service","init_tokens_and_interfaces","init_ngx_translate_core","init_alert","init_vendasta_campaigns","init_src","init_button_loading_indicator","init_empty_state","init_form_field","init_infinite_scroll_trigger","init_loading_spinner","init_tooltip","init_esm","init_operators","init_start_campaign_dialog_component","init_expansion","constructor","translate","objectService","config","ref","campaignService","dialog","modalData","searchControl","UntypedFormControl","campaigns$$","BehaviorSubject","campaigns$","asObservable","criteria$","valueChanges","pipe","startWith","distinctUntilChanged","debounceTime","loading$$","placeholder","crmObject$","getMultiObject","map","resp","object","crmObjects","length","ngOnInit","combineLatest","namespace$","parentNamespace$","take","subscribe","namespace","parentNamespace","senderType","SenderType","SENDER_TYPE_PARTNER","SENDER_TYPE_BUSINESS","scrollable","getScrollableList","items$","instant","close","loadNext","loadMore","campaign","selectedCampaign","senderId","Scrollable","criteria","cursor","next","listCampaignsV2","type","Statuses","STATUSES_ACTIVE","STATUSES_PUBLISHED","pageSize","field","SortField","SORT_FIELDS_UPDATED_AT","direction","SortDirection","SORT_ORDER_DESCENDING","response","items","campaigns","campaignId","name","toISOString","metadata","nextCursor","hasMore","catchError","of","openStartCampaignDialog","open","StartCampaignDialogComponent","data","width","ɵɵdirectiveInject","TranslateService","CrmObjectService","CrmInjectionToken","MatDialogRef","CampaignService","MatDialog","MAT_DIALOG_DATA","selectors","features","ɵɵProvidersFeature","RecipientCampaignService","CrmFieldService","provide","PageAnalyticsInjectionToken","useFactory","pageAnalyticsInjectionTokenGenerator","decls","vars","consts","template","rf","ctx","ɵɵelementContainerStart","ɵɵelement","ɵɵtemplate","AddCampaignDialogComponent_div_11_Template","AddCampaignDialogComponent_glxy_empty_state_13_Template","ɵɵpropertyInterpolate","tmp_5_0","CommonModule","NgForOf","NgIf","AsyncPipe","DatePipe","MatButtonModule","MatButton","TranslateModule","TranslatePipe","GalaxyLoadingSpinnerModule","MatDialogModule","MatDialogTitle","MatDialogActions","MatDialogContent","GalaxyEmptyStateModule","EmptyStateComponent","EmptyStateHeroDirective","MatIconModule","MatIcon","GalaxyFormFieldModule","FormFieldComponent","ExtendedDirective","MatRadioModule","MatRadioGroup","MatRadioButton","FormsModule","DefaultValueAccessor","NgControlStatus","VaFormsModule","MatInputModule","MatInput","GalaxyButtonLoadingIndicatorModule","ButtonLoadingIndicatorComponent","MatProgressSpinnerModule","VaFilterModule","GalaxyInfiniteScrollTriggerModule","InfiniteScrollTriggerComponent","ReactiveFormsModule","FormControlDirective","GalaxyTooltipModule","GalaxyAlertModule","MatExpansionModule","styles","RecipientCampaignStatusComponent","init_recipient_campaign_status_component","__esmMin","init_common","init_vendasta_campaigns","init_badge","constructor","translate","ngOnChanges","recipientCampaignStatus","CampaignScheduleStatus","CAMPAIGN_SCHEDULE_STATUS_ACTIVE","status","instant","color","CAMPAIGN_SCHEDULE_STATUS_STOPPED","CAMPAIGN_SCHEDULE_STATUS_COMPLETED","ɵɵdirectiveInject","TranslateService","selectors","inputs","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵadvance","ɵɵtextInterpolate","CommonModule","GalaxyBadgeModule","BadgeComponent","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","campaign_r1","link","ɵɵtextInterpolate","title","ɵɵelementContainerStart","ɵɵlistener","ɵɵrestoreView","_r2","ɵɵnextContext","$implicit","ctx_r2","ɵɵresetView","pauseCampaign","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtemplate","ContactCampaignsCardComponent_ng_container_10_Conditional_6_ng_container_0_Template","recipientCampaignId","_r4","resumeCampaign","ContactCampaignsCardComponent_ng_container_10_Conditional_7_ng_container_0_Template","menu_r5","ContactCampaignsCardComponent_ng_container_10_mat_card_title_3_Template","ContactCampaignsCardComponent_ng_container_10_Conditional_6_Template","ContactCampaignsCardComponent_ng_container_10_Conditional_7_Template","ContactCampaignsCardComponent_ng_container_10_button_8_Template","ɵɵelement","ɵɵconditional","recipientCampaignStatus","CampaignScheduleStatus","CAMPAIGN_SCHEDULE_STATUS_ACTIVE","CAMPAIGN_SCHEDULE_STATUS_STOPPED","canShowMenu","_r6","viewAll","ContactCampaignsCardComponent","init_contact_campaigns_card_component","__esmMin","init_core","init_common","init_translation_module","init_expansion","init_input","init_form_field","init_button","init_progress_spinner","init_add_campaign_dialog_component","init_icon","init_card","init_tokens_and_interfaces","init_vendasta_campaigns","init_operators","init_avatar","init_menu","init_tooltip","init_badge","init_router","init_rxjs_interop","init_esm","init_confirmation_modal","init_recipient_campaign_status_component","constructor","dialog","config","campaignService","recipientCampaignService","router","snackbarService","translate","postHogService","id","input","name","objectType","confirmationModal","inject","OpenConfirmationModalService","subscriptions","recipientCampaigns$","toObservable","pipe","switchMap","list","canViewAllCampaigns$","services","accessService","of","campaigns$","listRecipientCampaigns","useBusinessCenterCampaignLink","toSignal","parentNamespace$","map","parentNamespace","addCampaigns","open","AddCampaignDialogComponent","width","data","recipientCampaigns","tap","rc","campaignId","campaignIds","length","getMulti","campaigns","campaign","campaignLink","getCampaignLink","partnerId","recipientCampaign","find","status","partnerID","namespace","split","namespace$","take","subscribe","navigate","CAMPAIGN_SCHEDULE_STATUS_WAITING_ON_RATE_LIMIT","includes","modalTitle","instant","recipient","message","confirmText","push","openConfirmationModal","filter","result","pauseRecipientCampaign","openSuccessSnack","catchError","err","console","error","openErrorSnack","trackEvent","pid","recipientCampaignID","contactID","resumeRecipientCampaign","confirmButtonText","openModal","ngOnDestroy","forEach","sub","unsubscribe","ɵɵdirectiveInject","MatDialog","CrmInjectionToken","CampaignService","RecipientCampaignService","Router","SnackbarService","TranslateService","ProductAnalyticsService","selectors","inputs","decls","vars","consts","template","rf","ctx","ContactCampaignsCardComponent_ng_container_10_Template","ContactCampaignsCardComponent_Conditional_12_Template","CommonModule","NgForOf","NgIf","AsyncPipe","TranslationModule","TranslatePipe","MatExpansionModule","MatExpansionPanel","MatExpansionPanelHeader","MatExpansionPanelTitle","MatInputModule","GalaxyFormFieldModule","MatButtonModule","MatButton","MatIconButton","MatProgressSpinnerModule","MatIconModule","MatIcon","MatCardModule","MatCard","MatCardContent","MatCardHeader","MatCardTitle","GalaxyAvatarModule","MatMenuModule","MatMenu","MatMenuItem","MatMenuTrigger","MatTooltipModule","GalaxyBadgeModule","RouterLink","RecipientCampaignStatusComponent","styles","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","handleSelectAll","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind3","objectType","ɵɵpureFunction1","_c1","dataSource","state","totalDataMembers","_r3","_c2","ɵɵpipeBind2","ɵɵtemplate","SelectObjectTypeModalComponent_Conditional_11_Conditional_2_Template","SelectObjectTypeModalComponent_Conditional_11_Conditional_4_Template","ɵɵconditional","ɵɵpipeBind1","useSelectAll$","ɵɵelement","SelectObjectTypeModalComponent_th_17_Conditional_1_Template","data","singleSelection","ɵɵproperty","row_r4","preSelectedLockedRows","newSelection","ɵɵtextInterpolate","createButtonText","_r6","createObjectModal","SelectObjectTypeModalComponent_Conditional_23_Conditional_2_Template","SelectObjectTypeModalComponent_Conditional_23_Conditional_3_Template","numSelected","SelectObjectTypeModalComponent_Case_30_Conditional_0_Template","SelectObjectTypeModalComponent_Case_30_Conditional_1_Template","selectAll","CRM_PROVIDERS","SelectObjectTypeModalComponent","init_select_object_type_modal_component","__esmMin","init_layout","init_common","init_core","init_button","init_dialog","init_table","init_state","init_empty_state","init_chips","init_loading_spinner","init_esm","init_operators","init_constants","init_tokens_and_interfaces","init_translation_module","init_list_objects_table_service","init_translate_by_object_type_pipe","init_shared_services","CrmObjectService","constructor","config","service","dialogRef","snackService","translateService","breakpointObserver","translateByObjectTypeService","crmFiltersService","trackingService","columns$","initialLoadingCompleted$","showEmptyState$","showFiltersApplied$","filtersApplied$","isMobile$","observe","Breakpoints","XSmall","pipe","startWith","matches","breakpoints","map","breakpoint","selectAll$","of","showCreateButton","hideCreateButton","undefined","selectedRows","signal","computed","length","associations","association","id","associatedObject","crmObjectId","pageSizeOptions","LIST_OBJECTS_PAGE_SIZE_OPTIONS","pageSize","LIST_OBJECTS_DEFAULT_PAGE_SIZE","selectAllActions$","createSelectAllActions","hasSelectAllActions$","actions","hasAssociations","setInitialFilters","filters","setObjectType","setShowActions","setBaseColumns","baseColumnIds","newSelectedRow","enablePreselectedRows","enableMultiplePreSelectedRows","preselectedIds","forEach","unshift","unlockPreSelectedRows","newSelectionIDs","updateFilters","setFilters","trackFilterUsage","selectionChanged","rows","filteredData","filter","some","item","set","cancel","close","clickedCreate","toggleSelectAll","contact","selectAllTableActions$","save","useSelectAll","totalObjects","searchTerm","translatedString","getTranslationByObjectType","openWithOptions","instant","duration","SNACKBAR_DURATION","ɵɵdirectiveInject","MAT_DIALOG_DATA","CrmInjectionToken","ListObjectsTableService","MatDialogRef","SnackbarService","TranslateService","BreakpointObserver","TranslateByObjectTypeService","CrmFiltersService","CRMTrackingService","selectors","features","ɵɵProvidersFeature","RxState","provide","GalaxyTableSelectionCustomizationToken","useValue","rowsSelectionLimit","decls","vars","consts","template","rf","ctx","$event","SelectObjectTypeModalComponent_Conditional_11_Template","SelectObjectTypeModalComponent_tr_15_Template","ɵɵelementContainerStart","SelectObjectTypeModalComponent_th_17_Template","SelectObjectTypeModalComponent_td_18_Template","SelectObjectTypeModalComponent_tr_19_Template","SelectObjectTypeModalComponent_Conditional_20_Template","SelectObjectTypeModalComponent_Conditional_23_Template","SelectObjectTypeModalComponent_Case_28_Template","SelectObjectTypeModalComponent_Case_29_Template","SelectObjectTypeModalComponent_Case_30_Template","modalTitle","showActions","tmp_13_0","hideActionButton","ɵɵpureFunction0","_c0","tmp_24_0","CommonModule","AsyncPipe","MatButtonModule","MatButton","TranslationModule","TranslatePipe","MatDialogModule","MatDialogTitle","MatDialogActions","MatDialogContent","GalaxyLoadingSpinnerModule","GalaxyEmptyStateModule","EmptyStateComponent","EmptyStateHeroDirective","EmptyStateTitleDirective","GalaxyTableModule","TableContainerComponent","TableContentHeaderComponent","GalaxySelectionComponent","MatTableModule","MatTable","MatHeaderCellDef","MatHeaderRowDef","MatColumnDef","MatCellDef","MatRowDef","MatHeaderCell","MatCell","MatHeaderRow","MatRow","GalaxyFilterChipsModule","GalaxyFilterChipsComponent","TranslateByObjectTypePipe","styles","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","parent_r3","ɵɵrestoreView","_r2","ngIf","ctx_r3","ɵɵnextContext","ɵɵresetView","removeParentAssociation","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","_r5","openSetParentModal","ɵɵtext","ɵɵtextInterpolate1","ɵɵpipeBind1","_r6","child_r7","$implicit","removeChildAssociation","ɵɵtemplate","ParentChildCompanyAssociationsCardComponent_ng_container_15_crm_association_card_1_Template","businessName","ParentChildCompanyAssociationsCardComponent","init_parent_child_company_associations_card_component","__esmMin","init_common","init_core","init_button","init_dialog","init_expansion","init_icon","init_menu","init_tooltip","init_alert","init_chips","init_esm","init_operators","init_shared_services","init_i18n","init_association_card","init_select_object_type_modal_component","init_card","init_tokens_and_interfaces","init_constants","init_confirmation_modal","constructor","config","objectService","fieldService","associationService","dialog","translateService","objectDisplayService","crmAssociationService","snackService","data","inject","COMPANY_PROFILE_CARD_DATA_TOKEN","loadAssociations$$","BehaviorSubject","preSelectedRows$$","canOpenModal","removedAssociationIds$$","removedParentAssociationIds$$","setParentAssociation$$","undefined","newCompany$$","changedAssociations$$","confirmationModalService","OpenConfirmationModalService","injector","Injector","setCrmObjectIdToAssociate","company_id","fullName$","getMultiObject","pipe","map","resp","object","crmObjects","length","getObjectDisplayName","getAssociations$","getChildCompanyAssociationsForCompany$","latestCompanies$","switchMap","combineLatest","routePrefix$","tap","next","associations","routePrefix","copyCrmObject","changed","fullName","associatedObjects","association","associationId","associationType","tags","associatedObject","combinedData","existingAssociationsCombined","combineAssociationsWithChanges","filter","index","array","findIndex","a","parentCompanyName","getFieldValueFromCrmObject","StandardIds","CompanyName","stringValue","businessWebsite","CompanyWebsite","type","tag","id","crmObjectId","profileButtonUrl","PAGE_ROUTES","COMPANY","ROOT","SUBROUTES","PROFILE","replace","childCompanies$","asObservable","companies","removed","company","includes","latestParentCompany$","getParentCompanyAssociationsForCompany$","parentCompany$","parentCompany","setParentAssociation","splice","childCompanyName","modalData$","objectIdAndName","newContact","modalTitle","primarySelect","description","selectedRows","selectedCompanyNames","fromId","copyCrmObjects","newSelection","openAddChildModal","take","open","SelectObjectTypeModalComponent","baseColumnIds","objectType","instant","companyName","hideCreateButton","create","providers","provide","PageAnalyticsInjectionToken","useFactory","pageAnalyticsInjectionTokenGenerator","GalaxyFilterChipInjectionToken","tableFiltersInjectionTokenGenerator","parent","afterClosed","modalResponse","clickedCreate","Array","selectedIDs","row","objects","name","selectedObjects","updatedObjects","setCopyCrmObjects","mergeMap","createAssociation$","subscribe","respCount","error","openSuccessSnack","duration","SNACKBAR_DURATION","interpolateTranslateParams","createdCount","totalCount","copyCrmObjectsUpdated","singleSelection","cardData","openModal","title","message","fromName","removeName","confirmButtonText","cancelButtonText","success","removeAssociation","of","value","getValue","openErrorSnack","ɵɵdirectiveInject","CrmInjectionToken","CrmObjectService","CrmFieldService","CrmAssociationService","MatDialog","TranslateService","CrmObjectDisplayService","SnackbarService","selectors","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","ParentChildCompanyAssociationsCardComponent_ng_container_8_Template","ParentChildCompanyAssociationsCardComponent_ng_template_10_Template","ɵɵtemplateRefExtractor","ParentChildCompanyAssociationsCardComponent_ng_container_15_Template","i0","_r1","ɵɵtextInterpolate","setParentButton_r8","CommonModule","NgForOf","NgIf","AsyncPipe","TranslationModule","TranslatePipe","MatExpansionModule","MatExpansionPanel","MatExpansionPanelHeader","MatExpansionPanelTitle","AssociationCardComponent","GalaxyAlertModule","MatIconModule","MatIcon","MatButtonModule","MatButton","MatTooltipModule","MatMenuModule","MatDialogModule","MatCardModule","styles","init_select_associations_modal_component","__esmMin","EditAssociationTagsDialogComponent","init_edit_association_tags_dialog_component","__esmMin","init_common","init_dialog","init_button","init_ngx_translate_core","init_edit_association_tags_component","init_constants","constructor","dialogRef","data","initialTags","association","tags","map","tag","tagValue","displayTags","filter","RESERVED_TAGS","includes","toLowerCase","isPrimary","PRIMARY_TAG","associationType","tagsToSave","save","close","proceed","updatedTags","cancel","tagsChanged","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","$event","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtextInterpolate","associationName","ɵɵproperty","CommonModule","TranslateModule","TranslatePipe","MatDialogModule","MatDialogTitle","MatDialogActions","MatDialogContent","MatButtonModule","MatButton","EditAssociationTagsComponent","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","$event","tmp_12_0","ɵɵrestoreView","_r1","association_r2","ɵɵnextContext","$implicit","ctx_r2","ɵɵresetView","tagsChanged","crmObjectId","undefined","ɵɵadvance","ɵɵtextInterpolate","displayNamesByObjectId","get","tmp_11_0","ɵɵproperty","primaryAssociation","ɵɵtextInterpolate1","ɵɵpipeBind2","objectType","ɵɵpureFunction0","_c0","data","associationType","ɵɵtemplate","SelectPrimaryAssociationModalComponent_For_7_Conditional_0_Template","ɵɵconditional","SelectPrimaryAssociationModalComponent","init_select_primary_association_modal_component","__esmMin","init_core","init_dialog","init_form_field","init_button","init_edit_association_tags_component","init_i18n","init_radio","init_forms","constructor","dialogRef","objectDisplayService","tagMap","signal","Map","associations","selectedObjects","forEach","object","set","getObjectDisplayName","objectId","tags","update","prev","setPrimaryAssociation","cancel","close","continue","save","primaryId","prevTags","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","CrmObjectDisplayService","selectors","decls","vars","consts","template","rf","ctx","value","ɵɵrepeaterCreate","SelectPrimaryAssociationModalComponent_For_7_Template","_forTrack0","ɵɵpipeBind1","ɵɵrepeater","MatDialogTitle","MatDialogContent","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","ExtendedDirective","EditAssociationTagsComponent","MatDialogActions","TranslationModule","TranslatePipe","MatButton","MatRadioModule","MatRadioGroup","MatRadioButton","FormsModule","TranslateByObjectTypePipe","styles","FieldValidation","init_field_validation","__esmMin","constructor","errorCodeMap","addValidationError","codeMapEntries","__spreadValues","getAsyncValidators","asyncValidators","errorValue","Object","values","asyncValidationFn","severity","push","getValidators","validators","validationFn","getAsyncWarningValidators","getWarningValidators","InlineEditService","init_inline_edit_service","__esmMin","init_core","init_rxjs_interop","init_snackbar_service","init_esm","init_tokens_and_interfaces","init_page_analytics_service","init_translate_for_crm_object_service","init_crm_form_service","init_shared_services","init_operators","constructor","crmFormService","inject","CrmFormService","snackService","SnackbarService","trackingService","CRMTrackingService","translateForCrmObjectService","TranslateForCrmObjectService","crmObjectManagementTableChangesService","CrmObjectManagementTableChangesService","crmObjectDependencies","CrmObjectInjectionToken","optional","crmObjectId","isInlineEdit","signal","isInlineEdit$","toObservable","objectSubtype$","of","setObjectId","objectId","setInlineEdit","inlineEdit","set","saveInlineEdit","objectType","values","pipe","switchMap","objectSubtype","validateAndUpdateCrmObjectFields$","take","withLatestFrom","getTranslationForCrmObject","subscribe","next","updatedValue","success","addUpdatedCrmObject","trackEvent","openSuccessSnack","duration","SNACKBAR_DURATION","error","errorSnackbar","defaultMessage","message","openErrorSnack","factory","ɵfac","RendererSelectorComponent","init_renderer_selector_component","__esmMin","constructor","viewContainerRef","handler","ngOnInit","render","ngOnChanges","ngOnDestroy","ɵɵdirectiveInject","ViewContainerRef","selectors","inputs","features","ɵɵNgOnChangesFeature","decls","vars","template","rf","ctx","ɵɵelementContainer","FieldWarningService","init_field_warning_service","__esmMin","init_esm","init_operators","validateWarning","control","asyncValidatorFns","validatorFns","results$","validatorFn","push","forkJoin","pipe","defaultIfEmpty","map","results","validationErrors","err","__spreadValues","result","factory","ɵfac","ɵɵelementContainerStart","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","control","value","ɵɵelementStart","ɵɵelementEnd","ɵɵtemplate","BooleanRendererComponent_div_0_ng_container_5_Template","ɵɵpipeBind1","label","ɵɵproperty","ɵɵtextInterpolate","BooleanRendererComponent_ng_template_1_glxy_label_1_Template","ɵɵlistener","ɵɵrestoreView","_r2","ɵɵnextContext","ɵɵresetView","saveField","ɵɵpipeBind2","ɵɵpureFunction1","_c0","toLowerCase","BooleanFieldHandler","BooleanRendererComponent","init_boolean","__esmMin","init_forms","init_common","init_ngx_translate_core","init_form_field","init_input","init_field_validation","init_field_warning_service","init_select","constructor","objectType","fieldId","name","description","readOnly","validation","FieldValidation","component","formControl","UntypedFormControl","setValidation","setValidators","getValidators","setAsyncValidators","getAsyncValidators","fieldValue","booleanValue","hasModification","dirty","render","viewContainerRef","clear","createComponent","instance","inlineEditService","saveInlineEdit","ɵɵdirectiveInject","InlineEditService","selectors","features","ɵɵProvidersFeature","FieldWarningService","decls","vars","consts","template","rf","ctx","BooleanRendererComponent_div_0_Template","BooleanRendererComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","formField_r3","CommonModule","NgIf","MatInputModule","ReactiveFormsModule","NgControlStatus","FormControlDirective","TranslateModule","TranslatePipe","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","MatSelectModule","MatSelect","MatOption","styles","encapsulation","changeDetection","stopChromeAutofill","Math","random","toString","substring","init_stop_chrome_autofill","__esmMin","uniquenessInvalidValidatorFn","uniquenessWarningValidatorFn","ValidatorFactoryService","init_validator_factory_service","__esmMin","init_core","init_esm","init_operators","init_shared_services","validationChanges$","fieldId","pipe","take","map","validationErrors","errors","find","e","ruleId","details","uniquenessCheck","uniqueness_enforced","uniquenessErrorForField","existingCrmObjectIds","length","uniqueness_warning","constructor","formService","inject","CrmFormService","valueChanges$","of","renderableFields","latestValidationErrors$$","BehaviorSubject","initialize","objectType","existingObjectId","v","debounceTime","switchMap","fields","r","fieldValue","validateCrmObject$","crmObjectId","shareReplay","bufferSize","refCount","tap","next","buildUniquenessValidatorCodeMappings","severity","message","validationFn","asyncValidationFn","factory","ɵfac","ɵɵelementContainerStart","ɵɵelement","ɵɵadvance","ɵɵproperty","cardInfo_r1","ɵɵelementStart","ɵɵtemplate","CrmUniquenessSuggestionCardComponent_div_0_ng_container_1_Template","CrmUniquenessSuggestionCardComponent_div_0_ng_template_3_Template","ɵɵtemplateRefExtractor","ɵɵelementEnd","ɵɵpipeBind1","ctx_r2","objectCardInfo$","loading_r2","ɵɵtext","ɵɵtextInterpolate1","ɵɵpipeBind3","objectType","ɵɵpureFunction1","_c0","label","toLowerCase","CrmUniquenessSuggestionCardComponent","init_uniqueness_suggestion_card_component","__esmMin","init_common","init_core","init_forms","init_button","init_icon","init_ngx_translate_core","init_form_field","init_loading_spinner","init_esm","init_operators","init_tokens_and_interfaces","init_constants","init_translate_by_object_type_pipe","init_field_service","init_association_card_component","ngOnChanges","permissionDenied$$","next","displayError","emit","constructor","config","validatorFactory","objectService","crmFieldService","objectDisplayService","snackbar","EventEmitter","BehaviorSubject","uniquenessDetailsForField$","latestValidationErrors$$","pipe","map","validation","uniquenessDetailsFound","errors","filter","e","details","uniquenessCheck","fieldId","length","crmObject$","uniquenessDetails","existingObjectIds","existingCrmObjectIds","switchMap","objectId","getMultiObject","response","crmObjects","fields","catchError","error","status","of","console","openErrorSnack","crmObject","objectCardLink$","link","buildCardForContact","buildCardForCompany","warn","withLatestFrom","routePrefix$","crmObjectId","routePrefix","templateLink","PAGE_ROUTES","CONTACT","ROOT","SUBROUTES","PROFILE","replace","COMPANY","profileButtonUrl","email","getFieldId","StandardExternalIds","Email","emailValue","find","f","stringValue","type","userName","getObjectDisplayName","businessName","StandardIds","CompanyName","ɵɵdirectiveInject","CrmInjectionToken","ValidatorFactoryService","CrmObjectService","CrmFieldService","CrmObjectDisplayService","SnackbarService","selectors","inputs","displayCard","outputs","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","CrmUniquenessSuggestionCardComponent_div_0_Template","CrmUniquenessSuggestionCardComponent_div_2_Template","CommonModule","NgIf","AsyncPipe","FormsModule","ReactiveFormsModule","TranslateModule","GalaxyFormFieldModule","ErrorDirective","TranslateByObjectTypePipe","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","MatButtonModule","MatIconModule","AssociationCardComponent","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind3","ctx_r2","validation","errorCodeMap","errorCode_r2","message","objectType","ɵɵpureFunction1","_c0","label","toLowerCase","ɵɵelementContainerStart","ɵɵtemplate","CrmModelDrivenFormErrorComponent_ng_container_0_glxy_error_1_Template","ɵɵlistener","$event","ɵɵrestoreView","_r1","ɵɵnextContext","ɵɵresetView","showError","ɵɵproperty","control","hasError","severity","ɵɵpipeBind1","showError$$","fieldId","warningCode_r4","CrmModelDrivenFormErrorComponent_glxy_hint_1_span_1_Template","status","CrmModelDrivenFormErrorComponent","init_model_driven_form_error_component","__esmMin","init_common","init_forms","init_ngx_translate_core","init_form_field","init_esm","init_operators","init_uniqueness_suggestion_card_component","init_translate_by_object_type_pipe","constructor","warningService","errorCodes","BehaviorSubject","ngOnInit","next","Object","keys","warningCode$","valueChanges","pipe","switchMap","validateWarning","getAsyncWarningValidators","getWarningValidators","map","warnings","length","err","ɵɵdirectiveInject","FieldWarningService","selectors","inputs","decls","vars","consts","template","rf","ctx","CrmModelDrivenFormErrorComponent_ng_container_0_Template","CrmModelDrivenFormErrorComponent_glxy_hint_1_Template","CommonModule","NgForOf","NgIf","AsyncPipe","FormsModule","ReactiveFormsModule","TranslateModule","GalaxyFormFieldModule","HintDirective","ErrorDirective","TranslateByObjectTypePipe","CrmUniquenessSuggestionCardComponent","styles","SyncFieldFormInputService","init_sync_field_form_input_service","__esmMin","init_operators","init_esm","init_tokens_and_interfaces","constructor","crmObjectService","route","schemaService","partnerService","config","crmObjectId$","params","pipe","map","distinctUntilChanged","shareReplay","crmObject$","switchMap","crmObjectId","getMultiObject","customFieldIds$","getPartnerId","partnerId","listAuxiliaryDataFieldSchema","pagingOptions","pageSize","cursor","response","fieldSchemas","field","fieldId","syncFieldIds$","combineLatest","company","syncIds$","of","syncIds","customFieldIds","getAccountId","accountId$","hasAccount","id","getSyncFieldIds","ɵɵinject","CrmObjectService","ActivatedRoute","AuxiliaryFieldSchemaApiService","PartnerService","CrmInjectionToken","factory","ɵfac","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r2","ɵɵnextContext","popover_r3","ɵɵreference","ɵɵresetView","open","ɵɵtext","ɵɵelementEnd","ɵɵproperty","SyncIconComponent","init_sync_icon_component","__esmMin","init_icon","init_popover","init_ngx_translate_core","init_operators","init_esm","init_common","constructor","router","syncFieldFormInputService","popoverShown","renderIcon$","combineLatest","hasAccount","getSyncFieldIds","pipe","map","syncFieldIds","isSynced","find","id","fieldId","openAccount","getAccountId","take","subscribe","console","error","crmURL","navigateByUrl","ɵɵdirectiveInject","Router","SyncFieldFormInputService","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵtemplate","SyncIconComponent_Conditional_0_Template","i0","_r1","ɵɵconditional","ɵɵpipeBind1","ɵɵadvance","ɵɵtextInterpolate","ɵɵtextInterpolate1","MatIcon","GalaxyPopoverModule","PopoverComponent","PopoverTitleDirective","GalaxyPopoverDirective","TranslateModule","TranslatePipe","AsyncPipe","styles","ɵɵelementContainerStart","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind2","ctx_r0","control","value","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtemplate","DateRendererComponent_div_0_ng_container_6_Template","ɵɵpipeBind1","label","ɵɵproperty","fieldId","DateRendererComponent_ng_template_1_glxy_label_1_Template","ɵɵlistener","$event","i0","ɵɵrestoreView","_r2","ɵɵresetView","preventDefault","datepicker_r3","ɵɵreference","open","ɵɵnextContext","saveField","ɵɵpropertyInterpolate","disableAutoComplete","ɵɵpureFunction1","_c0","toLowerCase","objectType","validation","DateFieldHandler","DateRendererComponent","init_date","__esmMin","init_common","init_forms","init_datepicker","init_core","init_ngx_translate_core","init_form_field","init_stop_chrome_autofill","init_model_driven_form_error_component","init_field_validation","init_field_warning_service","init_locale","init_material_date_fns_adapter","init_sync_icon_component","init_input","constructor","name","description","readOnly","FieldValidation","component","formControl","UntypedFormControl","setValidation","setValidators","getValidators","setAsyncValidators","getAsyncValidators","render","viewContainerRef","clear","createComponent","instance","hasModification","dirty","fieldValue","dateValue","inlineEditService","stopChromeAutofill","saveInlineEdit","ɵɵdirectiveInject","InlineEditService","selectors","features","ɵɵProvidersFeature","provide","MAT_DATE_LOCALE","useValue","getLocale","DateAdapter","useClass","DateFnsAdapter","MAT_DATE_FORMATS","MAT_DATE_FNS_FORMATS","FieldWarningService","decls","vars","consts","template","rf","ctx","DateRendererComponent_div_0_Template","DateRendererComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","formField_r4","CommonModule","NgIf","DatePipe","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","MatDatepickerModule","MatDatepicker","MatDatepickerInput","MatDatepickerToggle","TranslateModule","TranslatePipe","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","CrmModelDrivenFormErrorComponent","SyncIconComponent","MatInput","styles","encapsulation","changeDetection","ɵɵelementContainerStart","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind2","ctx_r0","control","value","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtemplate","DatetimeRendererComponent_div_0_ng_container_6_Template","ɵɵpipeBind1","label","ɵɵproperty","fieldId","DatetimeRendererComponent_ng_template_1_glxy_label_1_Template","ɵɵlistener","ɵɵrestoreView","_r2","ɵɵnextContext","ɵɵresetView","saveField","ɵɵpropertyInterpolate","disableAutoComplete","ɵɵpureFunction1","_c0","toLowerCase","objectType","validation","DatetimeFieldHandler","DatetimeRendererComponent","init_datetime","__esmMin","init_common","init_core","init_forms","init_ngx_translate_core","init_form_field","init_stop_chrome_autofill","init_model_driven_form_error_component","init_field_validation","init_field_warning_service","init_inline_edit_service","init_sync_icon_component","init_input","init_esm","constructor","name","description","readOnly","FieldValidation","component","dateValue","formatDate","formControl","UntypedFormControl","setValidation","setValidators","getValidators","setAsyncValidators","getAsyncValidators","render","viewContainerRef","clear","createComponent","instance","hasModification","dirty","fieldValue","Date","inlineEditService","inject","InlineEditService","stopChromeAutofill","saveInlineEdit","selectors","features","ɵɵProvidersFeature","FieldWarningService","decls","vars","consts","template","rf","ctx","DatetimeRendererComponent_div_0_Template","DatetimeRendererComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","formField_r3","CommonModule","NgIf","DatePipe","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","TranslateModule","TranslatePipe","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","CrmModelDrivenFormErrorComponent","SyncIconComponent","MatInput","styles","encapsulation","changeDetection","expr","emailRegex","emailValidatorFn","emailValidatorCodeMapping","init_email_validator","__esmMin","RegExp","control","value","exec","invalid_email","severity","message","validationFn","asyncValidationFn","ɵɵelementContainerStart","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","control","value","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtemplate","IntegerRendererComponent_div_0_ng_container_6_Template","ɵɵpipeBind1","label","ɵɵproperty","fieldId","IntegerRendererComponent_ng_template_1_glxy_label_1_Template","ɵɵlistener","$event","i0","ɵɵrestoreView","_r2","ɵɵresetView","preventDefault","ɵɵnextContext","saveField","ɵɵpropertyInterpolate","disableAutoComplete","ɵɵpipeBind2","ɵɵpureFunction1","_c0","toLowerCase","objectType","validation","IntegerFieldHandler","IntegerRendererComponent","init_integer","__esmMin","init_common","init_forms","init_input","init_ngx_translate_core","init_uiowa_digit_only","init_form_field","init_stop_chrome_autofill","init_model_driven_form_error_component","init_field_validation","init_field_warning_service","init_sync_icon_component","constructor","name","description","readOnly","FieldValidation","component","formControl","UntypedFormControl","setValidation","setValidators","getValidators","setAsyncValidators","getAsyncValidators","render","viewContainerRef","clear","createComponent","instance","hasModification","dirty","fieldValue","integerValue","inlineEditService","stopChromeAutofill","saveInlineEdit","ɵɵdirectiveInject","InlineEditService","selectors","features","ɵɵProvidersFeature","FieldWarningService","decls","vars","consts","template","rf","ctx","IntegerRendererComponent_div_0_Template","IntegerRendererComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","formField_r3","CommonModule","NgIf","MatInputModule","MatInput","ReactiveFormsModule","DefaultValueAccessor","NumberValueAccessor","NgControlStatus","PatternValidator","FormControlDirective","DigitOnlyModule","DigitOnlyDirective","TranslateModule","TranslatePipe","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","CrmModelDrivenFormErrorComponent","SyncIconComponent","styles","encapsulation","changeDetection","ɵɵelementContainerStart","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","control","value","ɵɵelementStart","ɵɵelementEnd","ɵɵtemplate","FloatRendererComponent_div_0_ng_container_5_Template","ɵɵtextInterpolate","ɵɵpipeBind1","label","ɵɵproperty","FloatRendererComponent_ng_template_1_glxy_label_1_Template","ɵɵlistener","ɵɵrestoreView","_r2","ɵɵnextContext","ɵɵresetView","saveField","$event","i0","preventDefault","ɵɵelement","ɵɵpropertyInterpolate","disableAutoComplete","ɵɵpipeBind2","ɵɵpureFunction1","_c0","toLowerCase","objectType","fieldId","validation","FloatRendererComponent","init_float","__esmMin","init_common","init_input","init_forms","init_uiowa_digit_only","init_ngx_translate_core","init_form_field","init_model_driven_form_error_component","init_field_warning_service","init_stop_chrome_autofill","constructor","inlineEditService","stopChromeAutofill","saveInlineEdit","floatValue","ɵɵdirectiveInject","InlineEditService","selectors","features","ɵɵProvidersFeature","FieldWarningService","decls","vars","consts","template","rf","ctx","FloatRendererComponent_div_0_Template","FloatRendererComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","readOnly","formField_r3","CommonModule","NgIf","MatInputModule","MatInput","ReactiveFormsModule","DefaultValueAccessor","NumberValueAccessor","NgControlStatus","FormControlDirective","DigitOnlyModule","DigitOnlyDirective","TranslateModule","TranslatePipe","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","CrmModelDrivenFormErrorComponent","styles","encapsulation","changeDetection","FloatFieldHandler","init_float_field_handler","__esmMin","init_forms","init_field_validation","init_float","constructor","objectType","fieldId","name","label","value","description","readOnly","validation","FieldValidation","component","formControl","FormControl","setValidation","setValidators","getValidators","setAsyncValidators","getAsyncValidators","render","viewContainerRef","clear","createComponent","FloatRendererComponent","instance","control","hasModification","dirty","fieldValue","floatValue","CrmFieldWarningDirective","init_field_warning_directive","__esmMin","init_esm","init_operators","hasWarningsClass","hasWarnings","constructor","formFieldComponent","warningService","cd","destroyed$$","Subject","ngAfterViewInit","combineLatest","warningControl","valueChanges","statusChanges","pipe","takeUntil","switchMap","of","validateWarning","fieldValidation","getAsyncWarningValidators","getWarningValidators","tap","warnings","Object","keys","length","prefixIcon","markForCheck","subscribe","ngOnDestroy","next","unsubscribe","ɵɵdirectiveInject","FormFieldComponent","FieldWarningService","ChangeDetectorRef","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassProp","CrmFormButtonGroupComponent","init_form_button_group_component","__esmMin","init_common","init_core","init_icon","init_ngx_translate_core","init_empty_state","init_loading_spinner","init_button_loading_indicator","init_button","init_tokens_and_interfaces","constructor","submitButtonText","cancelButtonText","clickedOnSubmit","EventEmitter","clickedOnCancel","SavingStatus","selectors","inputs","savingStatus","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","emit","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","SAVING","ɵɵtextInterpolate1","ɵɵpipeBind1","CommonModule","TranslateModule","TranslatePipe","GalaxyEmptyStateModule","MatIconModule","GalaxyLoadingSpinnerModule","GalaxyButtonLoadingIndicatorModule","ButtonLoadingIndicatorComponent","MatButtonModule","MatButton","styles","ɵɵelementStart","ɵɵtext","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ctx_r1","label","ɵɵproperty","fieldId","CrmModelDrivenPopoverComponent","init_model_driven_popover_component","__esmMin","init_common","init_core","init_forms","init_input","init_ngx_translate_core","init_form_field","init_popover","init_button","init_overlay","init_form_button_group_component","init_sync_icon_component","init_field_warning_directive","constructor","save","EventEmitter","renderedValue","openedPopover","popoverPositions","PopoverPositions","Right","Bottom","openPopover","closePopover","saveModification","control","invalid","displayValue","emit","ngOnInit","selectors","inputs","validation","outputs","features","ɵɵProvidersFeature","ngContentSelectors","_c0","decls","vars","consts","template","rf","ctx","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵtemplate","CrmModelDrivenPopoverComponent_glxy_label_2_Template","ɵɵtwoWayListener","$event","ɵɵtwoWayBindingSet","ɵɵprojection","ɵɵpipeBind2","ɵɵpureFunction1","_c1","toLowerCase","popOverOrigin_r3","ɵɵtwoWayProperty","ɵɵtextInterpolate","CommonModule","NgIf","MatInputModule","MatInput","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","TranslateModule","TranslatePipe","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","GalaxyPopoverModule","PopoverComponent","PopoverTitleDirective","PopoverActionsDirective","MatButtonModule","OverlayModule","CdkOverlayOrigin","FormsModule","NgModel","CrmFormButtonGroupComponent","SyncIconComponent","CrmFieldWarningDirective","styles","encapsulation","UpdaterService","init_updater_service","__esmMin","init_esm","init_vendasta_crm","constructor","clearedField$$","Subject","clearedField$","asObservable","updatedField","BehaviorSubject","FieldValue","clearField","fieldId","next","updateStringField","value","clearIfEmpty","stringValue","updateGeopointField","lat","lon","geopointValue","updateFieldValue","factory","ɵfac","providedIn","parsePhoneNumber","formatAsReadonlyPhone","formatAsRFC3966Phone","validatePhone","validatePhoneNumber","validateBasedOnPhoneFormGroup","init_utils","__esmMin","init_libphonenumber_js","phoneValue","parsedNumber","parseNumber","defaultCountry","nationalNumber","phone","isoCountryCode","country","extension","ext","parsed","internationalNumber","format","e","console","warn","isInvalid","isValidNumber","invalidPhoneNumber","Object","keys","length","control","parsedPhoneNumber","value","phoneNumber","phoneGroup","updateValueAndValidity","invalid","ɵɵelementContainer","ɵɵelementStart","ɵɵtext","ɵɵelement","ɵɵelementEnd","ɵɵtemplate","PhoneRendererComponent_div_0_ng_container_6_Template","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ctx_r0","label","ɵɵproperty","fieldId","crmFieldValue_r2","ɵɵlistener","ɵɵrestoreView","_r3","ɵɵnextContext","ɵɵresetView","saveField","PhoneRendererComponent_div_1_ng_container_2_Template","readonlyPhoneNumber","control","validation","formField_r4","ɵɵelementContainerStart","PhoneRendererComponent_ng_container_3_ng_container_1_Template","selectedCountry_r6","flag","option_r7","countryCode","ɵɵtextInterpolate","callingCode","ɵɵtextInterpolate2","countryName","PhoneRendererComponent_ng_template_5_glxy_label_1_Template","PhoneRendererComponent_ng_template_5_p_7_Template","PhoneRendererComponent_ng_template_5_ng_template_8_Template","ɵɵtemplateRefExtractor","PhoneRendererComponent_ng_template_5_mat_option_14_Template","PhoneRendererComponent_ng_template_5_glxy_error_16_Template","$event","i0","_r5","preventDefault","PhoneRendererComponent_ng_template_5_glxy_error_21_Template","PhoneRendererComponent_ng_template_5_glxy_error_25_Template","PhoneRendererComponent_ng_template_5_glxy_error_26_Template","phone","selectedCountry","invalidCountryTrigger_r8","searchCountryControl","filteredCountryOptions$","hasError","selectedCountryCallingCode","objectType","initialValue","RFC3966PhoneNumber","ɵɵsanitizeUrl","readonlyPhoneNumber_r9","PhoneRendererComponent_ng_template_7_ng_template_1_a_0_Template","PhoneRendererComponent_ng_template_7_ng_container_0_Template","PhoneRendererComponent_ng_template_7_ng_template_1_Template","invalid","phoneLink_r10","DEFAULT_COUNTRY_CODE","PhoneRendererComponent","init_phone","__esmMin","init_layout","init_common","init_core","init_rxjs_interop","init_forms","init_input","init_select","init_ngx_translate_core","init_state","init_uiowa_digit_only","init_form_field","init_ngx_mat_select_search","init_esm","init_operators","init_field_warning_directive","init_field_warning_service","init_model_driven_form_error_component","init_model_driven_popover_component","init_stop_chrome_autofill","init_country_codes","init_utils","init_sync_icon_component","init_animations","constructor","countryCodeService","changeDetRef","updaterService","inlineEditService","destroyRef","FormControl","countryControl","phoneNumberControl","extensionControl","FormGroup","country","phoneNumber","extension","isInlineEdit$","phoneFieldVals","signal","isoCountryCode","nationalNumber","parsedPhoneNumber","computed","formatAsReadonlyPhone","formatAsRFC3966Phone","RFC3966PhoneNumber$","toObservable","phoneFieldVals$","destroyed$$","Subject","disableAutoComplete","stopChromeAutofill","countryOptions$","pipe","distinctUntilChanged","shareReplay","refCount","bufferSize","valueChanges","startWith","withLatestFrom","map","filterValue","countryOptions","filter","c","includes","toLowerCase","getCountryOption","autoFillState","addValidators","validatePhoneNumber","countryCodeUsed","ngOnInit","setInitialValue","setupPhoneFormGroup","setupControlValuesForForm","clearedField$","takeUntilDestroyed","f","subscribe","_","reset","updatedField","takeUntil","tap","data","phoneFieldValues","setTimeout","detectChanges","setPhoneFieldValues","ngOnDestroy","next","complete","value","startingCountry","startingPhoneNumber","startingExtension","setValue","phoneVals","set","setPhoneValue","phoneValue","parsePhoneNumber","e164Compliant","countryValue$","phoneNumberValue$","extensionValue$","combineLatest","ext","parsedNumber","validateBasedOnPhoneFormGroup","markAsDirty","markAsPristine","phoneFieldsAreEqual","saveInlineEdit","phoneFieldVals2","ɵɵdirectiveInject","CountryCodeService","ChangeDetectorRef","UpdaterService","InlineEditService","DestroyRef","selectors","features","ɵɵProvidersFeature","RxState","countryOptionsFactoryProvider","provide","MAT_SELECT_CONFIG","useValue","overlayPanelClass","FieldWarningService","decls","vars","consts","template","rf","ctx","PhoneRendererComponent_div_0_Template","PhoneRendererComponent_div_1_Template","PhoneRendererComponent_ng_container_3_Template","PhoneRendererComponent_ng_template_5_Template","PhoneRendererComponent_ng_template_7_Template","readOnly","CommonModule","NgForOf","NgIf","NgTemplateOutlet","AsyncPipe","MatInputModule","MatInput","MatPrefix","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","FormControlDirective","FormGroupDirective","FormControlName","TranslateModule","TranslatePipe","GalaxyFormFieldModule","FormFieldComponent","FormRowComponent","LabelDirective","ErrorDirective","LayoutModule","DigitOnlyModule","DigitOnlyDirective","MatSelectModule","MatSelect","MatSelectTrigger","MatOption","NgxMatSelectSearchModule","MatSelectSearchComponent","CrmModelDrivenFormErrorComponent","CrmFieldWarningDirective","CrmModelDrivenPopoverComponent","SyncIconComponent","styles","encapsulation","animation","AutoFill","changeDetection","PhoneFieldHandler","init_phone_field_handler","__esmMin","init_forms","init_phone","init_field_validation","constructor","objectType","fieldId","name","label","value","description","readOnly","validation","FieldValidation","component","formControl","UntypedFormControl","setValidation","setValidators","getValidators","setAsyncValidators","getAsyncValidators","hasModification","dirty","fieldValue","stringValue","phoneFieldValues","isoCountryCode","nationalNumber","extension","render","viewContainerRef","clear","createComponent","PhoneRendererComponent","instance","initialValue","control","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","tag_r1","ɵɵtemplate","TagsRendererComponent_div_0_mat_chip_listbox_6_mat_chip_1_Template","ɵɵproperty","ctx_r1","control","value","ɵɵelement","TagsRendererComponent_div_0_mat_chip_listbox_6_Template","ɵɵtextInterpolate1","ɵɵpipeBind1","label","fieldId","ɵɵlistener","ɵɵrestoreView","_r4","tagIndex_r5","ɵɵnextContext","index","removeTag","ɵɵresetView","saveField","tag_r6","ɵɵelementContainerStart","TagsRendererComponent_ng_template_1_ng_container_4_mat_chip_row_1_Template","TagsRendererComponent_ng_template_1_ng_container_4_ng_template_2_Template","ɵɵtemplateRefExtractor","readOnly","readonlyTags_r7","ɵɵpipeBind2","ɵɵpureFunction1","_c1","newTagControl","length","maximumTagsError","_c2","$event","i0","_r8","preventDefault","tag_r9","TagsRendererComponent_ng_template_1_glxy_label_1_Template","TagsRendererComponent_ng_template_1_ng_container_4_Template","_r3","addNewTag","isInputActive","initializeField","TagsRendererComponent_ng_template_1_glxy_error_8_Template","TagsRendererComponent_ng_template_1_glxy_error_9_Template","selectExistingTag","TagsRendererComponent_ng_template_1_mat_option_12_Template","ɵɵpropertyInterpolate","maxTagLength","maxTags","addTagPrompt","auto_r11","tagChips_r10","separatorKeysCodes","autoFillState","availableTags$","objectType","validation","TagsFieldHandler","TagsRendererComponent","init_tags","__esmMin","init_common","init_forms","init_autocomplete","init_chips","init_icon","init_input","init_ngx_translate_core","init_state","init_badge","init_form_field","init_tooltip","init_esm","init_operators","init_field_validation","init_field_warning_service","init_model_driven_form_error_component","init_tokens_and_interfaces","init_sync_icon_component","init_rxjs_interop","init_animations","constructor","name","description","FieldValidation","component","formControl","FormControl","nonNullable","setValue","setValidation","setValidators","getValidators","setAsyncValidators","getAsyncValidators","hasModification","dirty","fieldValue","stringValues","values","render","viewContainerRef","clear","createComponent","instance","getTagOptions","fieldOptionsDependencies","state","destroyRef","inlineEditService","updaterService","changeDetRef","ENTER","COMMA","initialized$","BehaviorSubject","isInlineEdit","toSignal","isInlineEdit$","zeros","existingTags","addedTags","availableTags","set","select","clearedField$","pipe","takeUntilDestroyed","filter","f","subscribe","_","updatedField","tap","data","setTimeout","detectChanges","markAsDirty","reset","distinctUntilChanged","tagControlChanges$","valueChanges","startWith","existingTags$","combineLatest","skipWhile","initialized","map","search","trim","debounceTime","SEARCH_DEBOUNCE_MS","switchMap","getFieldOptions","tags","sort","connect","addedTags$","a","b","JSON","stringify","usedTags","existing","t","includes","addTag","tag","touchControls","markAsTouched","updateValueAndValidity","event","chipInput","tagIndex","splice","tagInput","nativeElement","option","viewValue","next","saveInlineEdit","ɵɵdirectiveInject","FieldOptionsInjectionToken","RxState","DestroyRef","InlineEditService","UpdaterService","ChangeDetectorRef","selectors","viewQuery","rf","ctx","FieldWarningService","decls","vars","consts","template","TagsRendererComponent_div_0_Template","TagsRendererComponent_ng_template_1_Template","formField_r12","CommonModule","NgForOf","NgIf","AsyncPipe","MatAutocompleteModule","MatAutocomplete","MatOption","MatAutocompleteTrigger","MatChipsModule","MatChip","MatChipGrid","MatChipInput","MatChipListbox","MatChipRemove","MatChipRow","MatIconModule","MatIcon","MatInputModule","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","MaxLengthValidator","FormControlDirective","TranslateModule","TranslatePipe","GalaxyBadgeModule","BadgeComponent","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","ErrorDirective","GalaxyTooltipModule","GalaxyTooltipDirective","CrmModelDrivenFormErrorComponent","SyncIconComponent","styles","encapsulation","animation","AutoFill","changeDetection","invalidTimingValue","exp","RuntimeError","negativeStepValue","negativeDelayValue","invalidStyleParams","varName","invalidParamValue","invalidNodeType","nodeType","invalidCssUnitValue","userProvidedProperty","value","invalidTrigger","invalidDefinition","invalidState","metadataName","missingSubs","invalidStyleValue","invalidParallelAnimation","prop","firstStart","firstEnd","secondStart","secondEnd","invalidKeyframes","invalidOffset","keyframeOffsetsOutOfOrder","keyframesMissingOffsets","invalidStagger","invalidQuery","selector","invalidExpression","expr","invalidTransitionAlias","alias","triggerBuildFailed","name","errors","animationFailed","registerFailed","missingOrDestroyedAnimation","createAnimationFailed","missingPlayer","id","missingTrigger","phase","missingEvent","unsupportedTriggerEvent","unregisteredTrigger","triggerTransitionsFailed","transitionFailed","optimizeGroupPlayer","players","NoopAnimationPlayer","AnimationGroupPlayer","normalizeKeyframes$1","normalizer","keyframes","preStyles","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","kf","offset","isSameOffset","normalizedKeyframe","val","normalizedProp","normalizedValue","ɵPRE_STYLE","AUTO_STYLE","listenOnPlayer","player","eventName","event","callback","copyAnimationEvent","e","phaseName","totalTime","disabled","makeAnimationEvent","data","element","triggerName","fromState","toState","getOrSetDefaultValue","map","key","defaultValue","parseTimelineCommand","command","separatorPos","action","getParentElement","parent","documentElement","containsVendorPrefix","validateStyleProperty","_CACHED_BODY","getBodyNode","_IS_WEBKIT","result","containsElement","elm1","elm2","invokeQuery","multi","elem","resolveTimingValue","matches","_convertTimeValueToMS","unit","ONE_SECOND","resolveTiming","timings","allowNegativeValues","parseTimeExpression","regex","duration","delay","easing","delayMatch","easingVal","containsErrors","startIndex","normalizeKeyframes","setStyles","styles","formerStyles","camelProp","dashCaseToCamelCase","eraseStyles","_","normalizeAnimationEntry","steps","sequence","validateStyleParams","options","params","extractStyleParams","match","PARAM_REGEX","interpolateParams","original","str","localVal","input","DASH_CASE_REGEXP","m","allowPreviousPlayerStylesMerge","balancePreviousStylesIntoKeyframes","previousStyles","startingKeyframe","missingStyleProps","i","computeStyle","visitDslNode","visitor","node","context","AnimationMetadataType","parseTransitionExpr","transitionValue","expressions","parseInnerTransitionStr","eventStr","parseAnimationAlias","separator","makeLambdaFromStates","isFullAnyStateExpr","ANY_STATE","lhs","rhs","LHS_MATCH_BOOLEAN","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","buildAnimationAst","driver","metadata","warnings","AnimationAstBuilderVisitor","normalizeSelector","hasAmpersand","token","SELF_TOKEN","SELF_TOKEN_REGEX","NG_TRIGGER_SELECTOR","NG_ANIMATING_SELECTOR","normalizeParams","obj","__spreadValues","consumeOffset","styleTuple","constructTimingAst","makeTimingAst","strValue","v","ast","normalizeAnimationOptions","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","buildAnimationTimelines","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","roundOffset","decimalPoints","mult","flattenStyles","allStyles","allProperties","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","timelines","queriedElements","oneOrMoreTransitionsMatch","matchFns","currentState","nextState","fn","applyParamDefaults","userParams","defaults","buildTrigger","AnimationTrigger","createFallbackTransition","states","matchers","animation","transition","AnimationTransitionFactory","balanceProperties","stateMap","key1","key2","deleteOrUnsetInMap","currentValues","index","normalizeTriggerValue","isElementNode","isTriggerEventValid","cloakElement","oldValue","cloakAndComputeStyles","valuesMap","elements","elementPropsMap","defaultStyle","cloakVals","failedElements","props","REMOVAL_FLAG","NULL_REMOVED_QUERIED_STATE","buildRootMap","roots","nodes","rootMap","root","NULL_NODE","nodeSet","localRootMap","getRoot","addClass","className","removeClass","removeNodesAfterAnimationDone","engine","flattenGroupPlayers","finalPlayers","_flattenGroupPlayersRecur","objEquals","a","b","k1","k2","replacePostStylesAsPre","allPreStyleElements","allPostStyleElements","postEntry","preEntry","packageNonAnimatableStyles","startStyles","endStyles","filterNonAnimatableStyles","SpecialCasedStyles","isNonAnimatableStyle","resolveElementFromTarget","target","parseTriggerCallbackName","dotIndex","trigger","NoopAnimationDriver","AnimationDriver","AnimationStyleNormalizer","SUBSTITUTION_EXPR_START","SUBSTITUTION_EXPR_END","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_ANIMATING_CLASSNAME","DIMENSIONAL_PROP_SET","WebAnimationsStyleNormalizer","ROOT_SELECTOR","AnimationAstBuilderContext","ElementInstructionMap","ONE_FRAME_IN_MILLISECONDS","ENTER_TOKEN","ENTER_TOKEN_REGEX","LEAVE_TOKEN","LEAVE_TOKEN_REGEX","DEFAULT_NOOP_PREVIOUS_NODE","AnimationTimelineContext","TimelineBuilder","SubTimelineBuilder","EMPTY_OBJECT","AnimationStateStyles","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","QUEUED_CLASSNAME","QUEUED_SELECTOR","DISABLED_CLASSNAME","DISABLED_SELECTOR","STAR_CLASSNAME","STAR_SELECTOR","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","StateValue","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","TransitionAnimationEngine","TransitionAnimationPlayer","AnimationEngine","WebAnimationsPlayer","WebAnimationsDriver","ANIMATION_PREFIX","DISABLE_ANIMATIONS_FLAG","BaseAnimationRenderer","AnimationRenderer","AnimationRendererFactory","init_browser","__esmMin","init_animations","init_core","previousPlayers","scrubberAccessRequested","__ngFactoryType__","ɵɵdefineInjectable","propertyName","normalizedProperty","strVal","valAndSuffixMatch","_driver","queryCount","depCount","transitions","def","stateDef","n","styleAst","astParams","style","sub","s","currentTime","furthestTime","step","innerAst","timingAst","styleMetadata","isEmpty","newStyleData","_styleAst","metadataStyles","containsDynamicStyles","collectedEasing","styleData","endTime","startTime","tuple","collectedStyles","collectedEntry","updateCollectedStyle","MAX_KEYFRAME_OFFSET","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","length","generatedOffset","limit","currentAnimateTimings","animateDuration","durationUpToThisFrame","parentSelector","includeSelf","instructions","existingInstructions","timeline","lastRootTimeline","elementInstructions","innerContext","animationsRefsOptions","animationRefOptions","animationDelay","animationDelayValue","instruction","instructionTimings","subContextCount","ctx","innerTimelines","timingValue","innerTimeline","elms","sameElementTimeline","parentContext","tl","maxTime","startingTime","_AnimationTimelineContext","_enterClassName","_leaveClassName","initialTimeline","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","oldParams","newTime","updatedTimings","builder","time","originalSelector","optional","results","_TimelineBuilder","_elementTimelineStylesLookup","hasPreStyleStep","properties","details1","details0","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","oldOffset","timeAtKeyframe","_triggerName","_stateStyles","stateName","styler","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","elm","defaultParams","combinedParams","_normalizer","f","bodyNode","autoStylesMap","inst","baseEvent","args","namespaceId","isObj","_a","__objRest","hostElement","_engine","listeners","triggersWithStates","defaultToFallback","playersOnElement","isFallbackTransition","entry","elementPlayers","namespaces","ns","destroyAfterComplete","triggerStates","previousTriggersValues","state","elementStates","visitedTriggers","listener","containsPotentialParentTransition","currentPlayers","removalFlag","microtaskId","d0","d1","p","namespaceList","namespacesByHostElement","found","ancestor","ancestorNs","stateValue","insertBefore","details","hostNS","hasAnimation","subTimelines","skipBuildAst","containerElement","resolve","cleanupFns","quietFns","skippedPlayers","skippedPlayersMap","queuedInstructions","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","previousValue","nodeIsOrphaned","stringMap","setVal","allPreviousPlayersMap","animationElementMap","prevPlayer","replaceNodes","postStylesMap","preStylesMap","post","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","parentPlayers","playersForElement","queriedPlayerResults","queriedInnerElements","j","queriedPlayers","activePlayers","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","pp","wrappedPlayer","callbacks","doc","componentId","cacheKey","disable","property","eventPhase","cb","_element","_startStyles","_endStyles","initialStyles","_specialStyles","onFinish","kfs","frame","methods","fill","playerOptions","previousWebAnimationPlayers","_keyframes","specialStyles","delegate","_onDestroy","namespace","newChild","refChild","isMove","oldChild","isHostElement","selectorOrNode","preserveContent","el","flags","factory","onDestroy","countId","_zone","type","EMPTY_NAMESPACE_ID","cache","renderer","onRendererDestroy","registerTrigger","count","animationCallbacksBuffer","instantiateDefaultStyleNormalizer","WebAnimationsStyleNormalizer","instantiateRendererFactory","renderer","engine","zone","AnimationRendererFactory","provideAnimations","performanceMarkFeature","BROWSER_ANIMATIONS_PROVIDERS","InjectableAnimationEngine","SHARED_ANIMATION_PROVIDERS","BROWSER_NOOP_ANIMATIONS_PROVIDERS","BrowserAnimationsModule","init_animations","__esmMin","init_core","init_platform_browser","init_browser","init_common","AnimationEngine","doc","driver","normalizer","__ngFactoryType__","ɵɵinject","DOCUMENT","AnimationDriver","AnimationStyleNormalizer","ɵɵdefineInjectable","RendererFactory2","DomRendererFactory2","NgZone","WebAnimationsDriver","ANIMATION_MODULE_TYPE","NoopAnimationDriver","config","ɵɵdefineNgModule","ɵɵdefineInjector","BrowserModule","ɵɵelementContainerStart","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","control","value","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtemplate","TextRendererComponent_div_0_ng_container_6_Template","ɵɵpipeBind1","label","ɵɵproperty","fieldId","ɵɵlistener","ɵɵrestoreView","_r3","ɵɵnextContext","ɵɵresetView","clear","$event","i0","_r4","preventDefault","option_r5","ɵɵpipeBind2","ɵɵpureFunction1","_c1","length","TextRendererComponent_ng_template_1_glxy_label_1_Template","_r2","initializeField","saveField","TextRendererComponent_ng_template_1_Conditional_5_Template","TextRendererComponent_ng_template_1_mat_option_8_Template","TextRendererComponent_ng_template_1_glxy_error_10_Template","validation","ɵɵpropertyInterpolate","disableAutoComplete","auto_r6","_c0","toLowerCase","autoFillState","ɵɵconditional","filteredOptions$","objectType","TextFieldHandler","EXCLUDED_FROM_AUTOCOMPLETE","TextRendererComponent","init_text","__esmMin","init_common","init_rxjs_interop","init_forms","init_autocomplete","init_input","init_animations","init_ngx_translate_core","init_form_field","init_esm","init_tokens_and_interfaces","init_field_validation","init_field_warning_directive","init_field_warning_service","init_model_driven_form_error_component","init_stop_chrome_autofill","init_field_service","init_sync_icon_component","init_icon","init_button","init_operators","constructor","name","description","readOnly","FieldValidation","component","formControl","UntypedFormControl","setValidation","setValidators","getValidators","setAsyncValidators","getAsyncValidators","hasModification","dirty","fieldValue","stringValue","render","viewContainerRef","createComponent","instance","StandardExternalIds","FirstName","LastName","SystemFieldIds","ContactExternalID","CompanyExternalID","#control","controlChanges$","valueChanges","pipe","startWith","debounceTime","SEARCH_DEBOUNCE_MS","initialized$","distinctUntilChanged","combineLatest","takeUntilDestroyed","destroyRef","skipWhile","initialized","switchMap","id","fieldService","getFieldId","of","fieldOptionsDependencies","getFieldOptions","inlineEditService","changeDetRef","updaterService","BehaviorSubject","stopChromeAutofill","isInlineEdit","toSignal","isInlineEdit$","clearedField$","filter","f","subscribe","_","updatedField","tap","data","setTimeout","detectChanges","setValue","markAsDirty","reset","next","saveInlineEdit","ɵɵdirectiveInject","FieldOptionsInjectionToken","DestroyRef","InlineEditService","CrmFieldService","ChangeDetectorRef","UpdaterService","selectors","features","ɵɵProvidersFeature","FieldWarningService","provideAnimations","decls","vars","consts","template","rf","ctx","TextRendererComponent_div_0_Template","TextRendererComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","formField_r7","CommonModule","NgForOf","NgIf","AsyncPipe","MatInputModule","MatInput","MatSuffix","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","MaxLengthValidator","FormControlDirective","TranslateModule","TranslatePipe","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","ErrorDirective","CrmModelDrivenFormErrorComponent","CrmFieldWarningDirective","MatAutocompleteModule","MatAutocomplete","MatOption","MatAutocompleteTrigger","SyncIconComponent","MatIcon","MatIconButton","styles","encapsulation","animation","AutoFill","changeDetection","ɵɵelementContainerStart","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind2","ctx_r0","control","value","displayedCurrencyCode","ɵɵelementStart","ɵɵelementEnd","ɵɵtemplate","CurrencyRendererComponent_div_0_ng_container_5_Template","ɵɵtextInterpolate","ɵɵpipeBind1","label","ɵɵproperty","ɵɵlistener","$event","i0","ɵɵrestoreView","_r2","ɵɵresetView","preventDefault","ɵɵelement","ɵɵpureFunction1","_c0","toLowerCase","objectType","fieldId","validation","CurrencyRendererComponent","init_currency","__esmMin","init_forms","init_core","init_tokens_and_interfaces","init_common","init_ngx_translate_core","init_input","init_uiowa_digit_only","init_form_field","init_model_driven_form_error_component","init_field_warning_service","init_pipes","init_esm","init_rxjs_interop","constructor","inlineEditService","destroyRef","crmDependencies","defaultCurrencyCode","signal","computed","currencyCode","ngOnInit","String","defaultFormValue$","formDefaultOnCreateInputValues$","firstValueFrom","then","defaultFormValues","length","find","v","set","console","warn","valueChanges","pipe","takeUntilDestroyed","debounceTime","subscribe","saveField","saveInlineEdit","currencyValue","ɵɵdirectiveInject","InlineEditService","DestroyRef","CrmInjectionToken","selectors","features","ɵɵProvidersFeature","FieldWarningService","decls","vars","consts","template","rf","ctx","CurrencyRendererComponent_div_0_Template","CurrencyRendererComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","readOnly","formField_r3","CommonModule","NgIf","TranslateModule","TranslatePipe","GalaxyFormFieldModule","ErrorDirective","GalaxyInputModule","CurrencyFieldComponent","GalaxyPipesModule","GalaxyCurrencyPipe","MatInputModule","ReactiveFormsModule","NgControlStatus","FormControlDirective","DigitOnlyModule","CrmModelDrivenFormErrorComponent","styles","encapsulation","changeDetection","CurrencyFieldHandler","init_currency_field_handler","__esmMin","init_forms","init_field_validation","init_currency","constructor","objectType","fieldId","name","label","value","description","readOnly","validation","FieldValidation","component","formControl","FormControl","currencyCode","fieldValue","currencyValue","hasModification","dirty","setValidation","setValidators","getValidators","setAsyncValidators","getAsyncValidators","render","viewContainerRef","clear","createComponent","CurrencyRendererComponent","instance","control","CustomFieldHandler","init_custom","__esmMin","init_forms","constructor","customFormInput","objectType","fieldId","label","value","readOnly","formGroup","isEditing","objectId","component","formControl","UntypedFormControl","setValidation","validation","fieldValue","instance","hasModification","render","viewContainerRef","clear","createComponent","setInput","control","lifecycleStages","init_lifecycle_stage","__esmMin","id","translationKey","LifecycleStageNamePipe","init_lifecycle_stage_pipe","__esmMin","init_lifecycle_stage","constructor","translate","transform","id","key","lifecycleStages","find","val","translationKey","stream","ɵɵdirectiveInject","TranslateService","pure","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","label","ɵɵpipeBind1","control","value","ɵɵlistener","$event","i0","ɵɵrestoreView","_r3","ɵɵresetView","preventDefault","ɵɵproperty","stage_r4","id","translateKey","translationKey","_r2","ɵɵnextContext","saveField","ɵɵtemplate","LifecycleStageSelectorComponent_ng_template_1_mat_option_4_Template","ɵɵtextInterpolate","lifecycleStages","LifecycleStageSelectorComponent","init_lifecycle_stage_selector_component","__esmMin","init_common","init_forms","init_select","init_form_field","init_ngx_translate_core","init_lifecycle_stage","init_lifecycle_stage_pipe","constructor","translate","inlineEditService","key","instant","saveInlineEdit","objectType","fieldId","stringValue","ɵɵdirectiveInject","TranslateService","InlineEditService","selectors","decls","vars","consts","template","rf","ctx","LifecycleStageSelectorComponent_ng_container_0_Template","LifecycleStageSelectorComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","readOnly","selectStage_r5","CommonModule","NgForOf","NgIf","AsyncPipe","ReactiveFormsModule","NgControlStatus","FormControlDirective","MatSelectModule","MatSelect","MatOption","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","TranslateModule","LifecycleStageNamePipe","encapsulation","LifecycleStageSelectorHandler","init_lifecycle_stage_handler","__esmMin","init_forms","init_field_validation","init_lifecycle_stage_selector_component","constructor","objectType","fieldId","name","label","value","description","readOnly","validation","FieldValidation","component","formControl","FormControl","nonNullable","render","viewContainerRef","clear","createComponent","LifecycleStageSelectorComponent","instance","control","setValidation","setValidators","getValidators","setAsyncValidators","getAsyncValidators","fieldValue","stringValue","hasModification","dirty","ɵɵelementContainerStart","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","control","value","ɵɵelementStart","ɵɵelementEnd","ɵɵtemplate","EmailRendererComponent_div_0_ng_container_5_Template","ɵɵpipeBind1","label","ɵɵproperty","ɵɵelementContainer","ɵɵlistener","ɵɵrestoreView","_r2","ɵɵnextContext","ɵɵresetView","saveField","EmailRendererComponent_div_1_ng_container_2_Template","validation","formField_r3","EmailRendererComponent_ng_container_3_ng_container_1_Template","ɵɵtextInterpolate","_r5","clear","ɵɵpipeBind2","ɵɵpureFunction1","_c1","length","EmailRendererComponent_ng_template_5_glxy_label_1_Template","$event","i0","_r4","preventDefault","EmailRendererComponent_ng_template_5_Conditional_5_Template","EmailRendererComponent_ng_template_5_glxy_error_6_Template","ɵɵelement","ɵɵpropertyInterpolate","disableAutoComplete","_c0","toLowerCase","ɵɵconditional","objectType","fieldId","EmailFieldHandler","EmailRendererComponent","init_email","__esmMin","init_common","init_forms","init_input","init_ngx_translate_core","init_form_field","init_field_validation","init_field_warning_directive","init_field_warning_service","init_model_driven_form_error_component","init_model_driven_popover_component","init_stop_chrome_autofill","init_icon","init_button","init_rxjs_interop","constructor","name","description","readOnly","FieldValidation","component","formControl","UntypedFormControl","setValidation","setValidators","getValidators","setAsyncValidators","getAsyncValidators","hasModification","dirty","fieldValue","stringValue","render","viewContainerRef","createComponent","instance","inlineEditService","isInlineEdit$","isInlineEdit","toSignal","stopChromeAutofill","reset","markAsDirty","saveInlineEdit","ɵɵdirectiveInject","InlineEditService","selectors","features","ɵɵProvidersFeature","FieldWarningService","decls","vars","consts","template","rf","ctx","EmailRendererComponent_div_0_Template","EmailRendererComponent_div_1_Template","EmailRendererComponent_ng_container_3_Template","EmailRendererComponent_ng_template_5_Template","ɵɵtemplateRefExtractor","CommonModule","NgIf","NgTemplateOutlet","AsyncPipe","MatInputModule","MatInput","MatSuffix","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","MaxLengthValidator","FormControlDirective","TranslateModule","TranslatePipe","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","ErrorDirective","CrmModelDrivenFormErrorComponent","CrmFieldWarningDirective","CrmModelDrivenPopoverComponent","MatIcon","MatIconButton","styles","encapsulation","changeDetection","GeopointFieldHandler","GeopointRendererComponent","init_geopoint","__esmMin","init_forms","init_field_validation","init_rxjs_interop","init_esm","init_operators","constructor","objectType","fieldId","name","label","value","description","readOnly","validation","FieldValidation","component","formControl","FormControl","fieldValue","geopointValue","hasModification","dirty","setValidation","setValidators","getValidators","setAsyncValidators","getAsyncValidators","render","viewContainerRef","clear","createComponent","instance","control","updaterService","changeDetRef","destroyRef","clearedField$","pipe","takeUntilDestroyed","filter","f","subscribe","_","reset","updatedField","tap","data","lat","undefined","lon","setValue","markAsDirty","detectChanges","ɵɵdirectiveInject","UpdaterService","ChangeDetectorRef","DestroyRef","selectors","decls","vars","template","rf","ctx","styles","encapsulation","changeDetection","AutocompleteService","init_autocomplete_service","__esmMin","init_operators","NO_BUSINESS_FOUND","constructor","http","parseAutoCompleteResponse","responses","choices","i","length","drop_down","convertToDropDown","push","response","mainText","structured_formatting","main_text","description","secondaryText","secondary_text","placeId","place_id","init","googleMap","delegate","map","post","pipe","tap","location","currentPosition","take","subscribe","autocompleteSessionToken","google","maps","places","AutocompleteSessionToken","onSelect","placeService","PlacesService","callback","place","getTimeZone","timeZone","setBusinessSelectedDetailsCallback","getDetails","fields","sessionToken","getChoices","search_term","suggest","service","result","normalizedSearchTerm","toLowerCase","request","input","types","locationBias","north","lat","east","lng","south","west","getPlacePredictions","e","console","error","timeZoneApiUrl","paramKey","paramLat","geometry","paramLng","params","timestamp","Math","floor","Date","now","toString","key","get","ɵɵinject","HttpClient","factory","ɵfac","providedIn","ɵɵelementContainerStart","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","Name_r1","ɵɵtemplate","GooglePlaceSelectorComponent_div_0_ng_container_4_ng_container_1_Template","ɵɵproperty","ctx_r1","NO_VALUE_FOR_NAME","ɵɵelement","ɵɵelementStart","ɵɵelementEnd","GooglePlaceSelectorComponent_div_0_ng_container_4_Template","GooglePlaceSelectorComponent_div_0_ng_template_5_Template","ɵɵtemplateRefExtractor","ɵɵtextInterpolate","label","value","loading_r3","ɵɵpipeBind1","ɵɵpureFunction0","_c1","location_r5","mainText","secondaryText","ɵɵlistener","$event","ɵɵrestoreView","_r4","ɵɵnextContext","ɵɵresetView","onMapReady","i0","preventDefault","GooglePlaceSelectorComponent_ng_template_1_mat_error_5_Template","companyOnSelected","option","ɵɵrepeaterCreate","GooglePlaceSelectorComponent_ng_template_1_For_9_Template","_forTrack0","_c0","ɵɵpropertyInterpolate","disableAutoComplete","control","auto_r6","dirty","hasError","companyDisplayValue","ɵɵrepeater","locations$","GooglePlaceSelectorComponent","init_google_place_selector_component","__esmMin","init_common","init_core","init_rxjs_interop","init_forms","init_google_maps","init_autocomplete","init_input","init_progress_spinner","init_ngx_translate_core","init_form_field","init_esm","init_operators","init_field_service","init_tokens_and_interfaces","init_autocomplete_service","init_stop_chrome_autofill","FormInputComponent","_control","markAsPristine","formGroup","group","fieldId","_fieldId","set","hasModification","controlValue","companyName","toString","stringValue","constructor","autocompleteService","updaterService","destroyRef","readOnly","FormControl","locations$$","ReplaySubject","asObservable","txtQueryChanged","Subject","signal","stopChromeAutofill","ngOnInit","pipe","takeUntilDestroyed","debounceTime","distinctUntilChanged","subscribe","model","getChoices","choices","next","valueChanges","searchTerm","googleMap","init","setBusinessSelectedDetailsCallback","place_id","place","timeZone","companyAddressDetails","name","street_number","extractFromAddress","address_components","address","formattedAddress","trim","city","zip","country","country_short","region","region_short","clearIfEmpty","isEditing","updateStringField","StandardIds","CompanyPrimaryAddressLine1","CompanyPrimaryAddressLine2","CompanyPrimaryAddressCity","CompanyPrimaryAddressState","CompanyPrimaryAddressPostalCode","CompanyPrimaryAddressCountry","CompanyPrimaryAddressGooglePlaceID","CompanyWebsite","website","updateFieldValue","CompanyPhoneNumber","phoneFieldValues","isoCountryCode","nationalNumber","formatted_phone_number","CompanyTimezone","timeZoneId","lat","geometry","location","lng","updateGeopointField","CompanyPrimaryAddressLatitudeLongitude","components","type","name_type","filter","component","types","indexOf","map","item","pop","onSelect","placeId","ɵɵdirectiveInject","AutocompleteService","UpdaterService","DestroyRef","selectors","features","ɵɵProvidersFeature","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","GooglePlaceSelectorComponent_div_0_Template","GooglePlaceSelectorComponent_ng_template_1_Template","formField_r7","CommonModule","NgClass","NgIf","AsyncPipe","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","RequiredValidator","FormControlDirective","TranslateModule","TranslatePipe","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","MatInputModule","MatInput","MatError","MatAutocompleteModule","MatAutocomplete","MatOption","MatAutocompleteTrigger","MatProgressSpinnerModule","GoogleMapsModule","GoogleMap","styles","encapsulation","phoneValuesEqual","phone1","phone2","isoCountryCode","nationalNumber","extension","buildE164FormatValidator","schema","isNotE164Compliant","value","e164Compliant","parsedPhoneNumber","parsePhoneNumber","parsedPhoneVals","DEFAULT_COUNTRY_CODE","e164_format_warning","severity","message","validationFn","e164FormatWarningValidatorFn","asyncValidationFn","init_phone_validator","__esmMin","init_utils","init_phone","initialParsedValue","control","curPhoneValue","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","pipelineOption_r3","id","ɵɵadvance","ɵɵtextInterpolate1","name","ɵɵpipeBind1","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","saveField","applyPipelineMutations","ɵɵtemplate","PipelineSelectorComponent_Conditional_0_mat_option_5_Template","PipelineSelectorComponent_Conditional_0_glxy_error_6_Template","ɵɵtextInterpolate","label","control","ctx","untouched","hasError","ɵɵelement","PipelineSelectorComponent","init_pipeline_selector_component","__esmMin","init_common","init_core","init_forms","init_ngx_translate_core","init_form_field","init_esm","init_select","init_tokens_and_interfaces","init_inline_edit_service","init_shared_services","init_updater_service","init_rxjs_interop","FormInputComponent","fieldId","_fieldId","_control","setValidators","Validators","required","_label","constructor","inlineEditService","inject","InlineEditService","pipelineService","CrmPipelineService","updaterService","UpdaterService","objectType","FormControl","nonNullable","validators","availableOptions$","listPipelines$","pipe","map","pipelines","pipeline","takeUntilDestroyed","subscribe","currentPipelineId","value","pipelineFound","find","p","setValue","markAsTouched","length","markAsDirty","updateStringField","formGroup","group","hasModification","dirty","stringValue","saveInlineEdit","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","PipelineSelectorComponent_Conditional_0_Template","PipelineSelectorComponent_Conditional_2_Template","ɵɵconditional","tmp_0_0","CommonModule","NgForOf","NgIf","AsyncPipe","MatSelectModule","MatSelect","MatOption","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","ErrorDirective","TranslateModule","TranslatePipe","ReactiveFormsModule","NgControlStatus","FormControlDirective","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","OpportunityNameComponent","init_opportunity_name_component","__esmMin","init_common","init_forms","init_ngx_translate_core","init_form_field","init_input","init_select","init_tokens_and_interfaces","init_stop_chrome_autofill","FormInputComponent","fieldId","_fieldId","control","_control","setValue","value","setValidators","Validators","required","label","_label","constructor","inlineEditService","disableAutoComplete","stopChromeAutofill","FormControl","nonNullable","validators","formGroup","group","hasModification","dirty","stringValue","saveField","saveInlineEdit","objectType","ɵɵdirectiveInject","InlineEditService","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵtemplate","OpportunityNameComponent_glxy_error_5_Template","ɵɵproperty","ɵɵtextInterpolate","ɵɵpropertyInterpolate","untouched","hasError","CommonModule","NgIf","MatSelectModule","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","ErrorDirective","TranslateModule","TranslatePipe","MatInput","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","styles","HiddenTextFormInputComponent","init_hidden_text","__esmMin","init_core","init_common","init_forms","init_ngx_translate_core","init_form_field","init_tokens_and_interfaces","init_rxjs_interop","init_operators","init_esm","init_inline_edit_service","init_updater_service","FormInputComponent","constructor","destroyRef","inject","DestroyRef","updaterService","UpdaterService","inlineEditService","InlineEditService","isInlineEdit","toSignal","isInlineEdit$","_control","FormControl","_label","_fieldId","signal","clearedField$","pipe","takeUntilDestroyed","filter","f","fieldId","subscribe","_","clear","updatedField","tap","data","stringValue","control","setValue","markAsDirty","formGroup","group","set","label","hasModification","dirty","value","saveField","saveInlineEdit","objectType","reset","selectors","features","ɵɵProvidersFeature","ɵɵInheritDefinitionFeature","decls","vars","template","rf","ctx","dependencies","CommonModule","ReactiveFormsModule","TranslateModule","GalaxyFormFieldModule","encapsulation","HiddenDatetimeFormInputComponent","init_hidden_datetime","__esmMin","init_core","init_common","init_forms","init_ngx_translate_core","init_form_field","init_tokens_and_interfaces","init_rxjs_interop","init_operators","init_esm","init_inline_edit_service","init_updater_service","FormInputComponent","constructor","destroyRef","inject","DestroyRef","updaterService","UpdaterService","inlineEditService","InlineEditService","isInlineEdit","toSignal","isInlineEdit$","_control","FormControl","_label","_fieldId","signal","clearedField$","pipe","takeUntilDestroyed","filter","f","fieldId","subscribe","_","clear","updatedField","tap","data","dateValue","control","setValue","markAsDirty","formGroup","group","set","label","hasModification","dirty","value","Date","saveField","saveInlineEdit","objectType","reset","selectors","features","ɵɵProvidersFeature","ɵɵInheritDefinitionFeature","decls","vars","template","rf","ctx","dependencies","CommonModule","ReactiveFormsModule","TranslateModule","GalaxyFormFieldModule","encapsulation","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","consentStatus_r1","ɵɵadvance","ɵɵtextInterpolate1","MarketingConsentSelectorComponent","init_marketing_consent_selector_component","__esmMin","init_common","init_core","init_forms","init_ngx_translate_core","init_form_field","init_select","init_tokens_and_interfaces","init_inline_edit_service","init_updater_service","init_shared_services","init_rxjs_interop","FormInputComponent","fieldId","_fieldId","control","_control","value","setValue","label","_label","constructor","inlineEditService","inject","InlineEditService","updaterService","UpdaterService","objectType","FormControl","nonNullable","availableOptions","isInline","toSignal","isInlineEdit$","currentConsentValue","validSelectionFound","find","v","markAsTouched","formGroup","group","hasModification","dirty","stringValue","calculateConsentMutations","StandardIds","ContactMarketingEmailConsentStatus","ContactMarketingEmailConsentSource","ContactMarketingEmailConsentTimestamp","dateValue","Date","ContactSMSConsentStatus","ContactSMSConsentSource","ContactSMSConsentTimestamp","applyConsentMutations","fieldValues","mutation","updateFieldValue","saveField","consentMutations","saveInlineEdit","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵlistener","ɵɵtemplate","MarketingConsentSelectorComponent_mat_option_6_Template","ɵɵtextInterpolate","CommonModule","NgForOf","MatSelectModule","MatSelect","MatOption","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","TranslateModule","ReactiveFormsModule","NgControlStatus","FormControlDirective","styles","normalizeUrl","url","startsWith","cleanUrl","parsedUrl","URL","scheme","protocol","host","path","normalizeUrlPath","pathname","re","replace","isValidUrl","urlHostEquals","hostValue","toLowerCase","urlHostEqualsOneOf","hostValues","some","h","urlHostEndsWith","endsWith","urlHostEndsWithOneOf","urlPathNotEmpty","hash","linkedInUrlValidator","facebookUrlValidator","pinterestUrlValidator","tikTokUrlValidator","xUrlValidator","instagramUrlValidator","init_url_service","__esmMin","normalizedUrl","cleanedUrl","includes","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","clear","ɵɵtext","ɵɵelementEnd","$event","i0","_r4","preventDefault","ɵɵproperty","option_r5","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵpureFunction1","_c1","control","value","length","ɵɵpipeBind1","SocialMediaUrlComponent","init_social_media_url","__esmMin","init_common","init_form_field","init_input","init_autocomplete","init_ngx_translate_core","init_forms","init_tokens_and_interfaces","init_shared_services","init_sync_icon_component","init_url_service","init_esm","init_stop_chrome_autofill","init_rxjs_interop","init_field_warning_service","init_animations","init_icon","init_button","FormInputComponent","fieldId","_fieldId","label","_label","formControl","_control","clearValidators","setUrlValidator","controlChanges$","valueChanges","pipe","startWith","debounceTime","SEARCH_DEBOUNCE_MS","initialized$","distinctUntilChanged","filteredOptions$","combineLatest","takeUntilDestroyed","destroyRef","skipWhile","initialized","switchMap","fieldOptionsDependencies","getFieldOptions","constructor","changeDetRef","updaterService","inlineEditService","validUrl","of","BehaviorSubject","disableAutoComplete","stopChromeAutofill","autoFillState","isInlineEdit","toSignal","isInlineEdit$","clearedField$","filter","f","subscribe","_","updatedField","tap","data","stringValue","trim","setTimeout","detectChanges","setValue","markAsDirty","reset","saveField","initializeField","next","formGroup","group","hasModification","dirty","valid","saveInlineEdit","objectType","StandardIds","CompanyLinkedInURL","addValidators","isValidLinkedInUrl","bind","CompanyFacebookURL","isValidFacebookUrl","CompanyPinterestURL","isValidPinterestInUrl","CompanyTikTokURL","isValidTikTokUrl","CompanyXURL","isValidXUrl","CompanyInstagramURL","isValidInstagramUrl","linkedInUrl","validLinkedInUrl","linkedInUrlValidator","invalidSocialMediaUrl","facebookUrl","validFacebookUrl","facebookUrlValidator","pinterestUrl","validPinterestUrl","pinterestUrlValidator","tikTokUrl","validTikTokUrl","tikTokUrlValidator","xUrl","validXUrl","xUrlValidator","instagramUrl","validInstagramUrl","instagramUrlValidator","ɵɵdirectiveInject","FieldOptionsInjectionToken","DestroyRef","ChangeDetectorRef","UpdaterService","InlineEditService","selectors","features","ɵɵProvidersFeature","FieldWarningService","provideAnimations","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵelement","_r1","ɵɵtemplate","SocialMediaUrlComponent_Conditional_8_Template","ɵɵrepeaterCreate","SocialMediaUrlComponent_For_12_Template","ɵɵrepeaterTrackByIdentity","SocialMediaUrlComponent_Conditional_14_Template","SocialMediaUrlComponent_Conditional_15_Template","ɵɵpropertyInterpolate","auto_r6","_c0","toLowerCase","ɵɵconditional","ɵɵrepeater","hasError","CommonModule","AsyncPipe","MatInputModule","MatInput","MatSuffix","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","MaxLengthValidator","FormControlDirective","TranslateModule","TranslatePipe","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","ErrorDirective","MatAutocompleteModule","MatAutocomplete","MatOption","MatAutocompleteTrigger","SyncIconComponent","MatIcon","MatIconButton","styles","encapsulation","animation","AutoFill","changeDetection","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","pipelineOption_r3","id","ɵɵadvance","ɵɵtextInterpolate1","name","ɵɵpipeBind1","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","saveField","ɵɵtemplate","StageSelectorComponent_Conditional_0_mat_option_6_Template","StageSelectorComponent_Conditional_0_glxy_error_7_Template","ɵɵtextInterpolate","control","autoFillState","availableStageOptions","untouched","hasError","ɵɵelement","StageSelectorComponent","init_stage_selector_component","__esmMin","init_core","init_common","init_select","init_form_field","init_ngx_translate_core","init_forms","init_animations","init_tokens_and_interfaces","init_model_driven_form","init_shared_services","init_operators","init_rxjs_interop","FormInputComponent","fieldId","_fieldId","_control","valueChanges","pipe","takeUntilDestroyed","destroyRef","subscribe","val","selectedStage","set","label","_label","constructor","pipelineService","inject","CrmPipelineService","updaterService","UpdaterService","fieldService","CrmFieldService","crmObjectService","CrmObjectService","changeDetRef","ChangeDetectorRef","DestroyRef","inlineEditService","InlineEditService","objectType","signal","selectedMutations","computed","newStageId","find","stage","mutations","FormControl","nonNullable","objectId$","toObservable","objectId","currentPipelineId","stageOptionsPerPipeline","toSignal","listPipelines$","map","pipelines","pipelineMap","Map","forEach","pipeline","stages","allOptions","selectedPipeline","get","existingObject","switchMap","getMultiObject","resp","crmObjects","length","existingStage","getFieldValueFromCrmObject","StandardIds","OpportunityCalculatedStageID","stringValue","effect","setValue","emitEvent","updatedField","fieldChanged","OpportunityPipelineID","validStages","markAsDirty","highlightField","formGroup","group","value","hasModification","dirty","probability","OpportunityProbability","floatValue","stageId","stageMutations","mutation","updateFieldValue","updateStringField","saveInlineEdit","setTimeout","detectChanges","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","StageSelectorComponent_Conditional_0_Template","StageSelectorComponent_Conditional_1_Template","ɵɵconditional","CommonModule","NgForOf","NgIf","MatSelectModule","MatSelect","MatOption","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","ErrorDirective","TranslateModule","TranslatePipe","ReactiveFormsModule","NgControlStatus","FormControlDirective","styles","data","animation","AutoFill","RendererSelectorService","init_renderer_selector_service","__esmMin","init_boolean","init_date","init_datetime","init_email_validator","init_integer","init_float_field_handler","init_phone_field_handler","init_tags","init_text","init_currency_field_handler","init_field_validation","init_custom","init_lifecycle_stage_handler","init_email","init_geopoint","init_google_place_selector_component","init_tokens_and_interfaces","init_shared_services","init_phone_validator","init_pipeline_selector_component","init_opportunity_name_component","init_hidden_text","init_hidden_datetime","init_marketing_consent_selector_component","init_social_media_url","init_stage_selector_component","constructor","config","validatorFactory","defaultCustomInputs","fieldId","StandardIds","CompanyName","component","GooglePlaceSelectorComponent","OpportunityPipelineID","PipelineSelectorComponent","OpportunityName","OpportunityNameComponent","OpportunityProbability","StageSelectorComponent","CompanyPrimaryAddressGooglePlaceID","HiddenTextFormInputComponent","ContactMarketingEmailConsentStatus","MarketingConsentSelectorComponent","ContactMarketingEmailConsentTimestamp","HiddenDatetimeFormInputComponent","ContactMarketingEmailConsentSource","ContactSMSConsentStatus","ContactSMSConsentTimestamp","ContactSMSConsentSource","CompanyLinkedInURL","SocialMediaUrlComponent","CompanyFacebookURL","CompanyPinterestURL","CompanyTikTokURL","CompanyXURL","CompanyInstagramURL","OpportunityStatus","chooseHandler","objectType","fieldSchema","fieldData","showLabel","readOnly","formGroup","isEditing","objectId","label","fieldName","customForms","objectDependencies","toLowerCase","formCustomInputs","push","customForm","find","f","CustomFieldHandler","CompanyLifecycleStage","ContactLifecycleStage","LifecycleStageSelectorHandler","fieldDescription","CompanyPrimaryAddressLatitudeLongitude","GeopointFieldHandler","fieldType","FieldType","FIELD_TYPE_PHONE","PhoneFieldHandler","FIELD_TYPE_STRING","TextFieldHandler","FIELD_TYPE_INTEGER","IntegerFieldHandler","FIELD_TYPE_FLOAT","FloatFieldHandler","FIELD_TYPE_DATE","DateFieldHandler","FIELD_TYPE_DATETIME","DatetimeFieldHandler","FIELD_TYPE_BOOLEAN","BooleanFieldHandler","FIELD_TYPE_EMAIL","EmailFieldHandler","FIELD_TYPE_TAG","TagsFieldHandler","FIELD_TYPE_STRING_LIST","FIELD_TYPE_CURRENCY","CurrencyFieldHandler","console","warn","setupFieldValidators","field","fieldSchemaMap","schema","get","validation","FieldValidation","systemExternalIds","SystemFieldIds","CompanyExternalID","ContactExternalID","includes","addValidationError","buildUniquenessValidatorCodeMappings","setValidation","emailValidatorCodeMapping","buildE164FormatValidator","ɵɵinject","CrmInjectionToken","ValidatorFactoryService","factory","ɵfac","SNACKBAR_DURATION","BaseCrmModelDrivenFormComponent","init_base_model_driven_form_component","__esmMin","init_core","init_forms","init_tokens_and_interfaces","constructor","config","snackService","rendererSelector","validatorFactory","inlineEditService","crmFieldService","scoreService","translateByObjectTypeService","existingObjectId","fieldConfig","submitButtonText","cancelButtonText","readOnly","inlineEdit","isEditing","formSubmit","EventEmitter","formCancel","formGroup","UntypedFormGroup","readOnlyFields","renderableFields","renderableFieldGroups","readonlyRenderableFieldGroups","ngOnChanges","changes","initialize","fieldSchemas","fieldGroups","setObjectId","setInlineEdit","ngOnDestroy","setupValidation","objectType","valueChanges","fieldSchemaMap","Map","schema","set","fieldId","field","setupFieldValidators","length","forEach","group","renderableFieldGroup","description","fields","editableFieldCount","readOnlyRenderableFieldGroup","fieldIds","fieldSchema","find","undefined","console","warn","renderableField","chooseHandler","value","setControl","formControl","hasDefaultValue","markAsDirty","push","shouldRenderReadonlyField","reduce","acc","onSubmit","pristine","openErrorSnack","duration","invalid","markAllAsTouched","errorMessage","translatedObjectType","getTranslatedObjectType","interpolateTranslateParams","toLowerCase","emit","onCancel","ɵɵdirectiveInject","CrmInjectionToken","SnackbarService","RendererSelectorService","ValidatorFactoryService","InlineEditService","CrmFieldService","ScoreService","TranslateByObjectTypeService","selectors","inputs","loadingStatus","savingStatus","outputs","features","ɵɵNgOnChangesFeature","decls","vars","template","rf","ctx","ɵɵelementContainer","ɵɵelementContainerStart","ɵɵprojection","ɵɵelement","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtextInterpolate","ɵɵtemplate","CrmFormLoadingIndicatorComponent_ng_template_1_ng_container_0_Template","CrmFormLoadingIndicatorComponent_ng_template_1_glxy_empty_state_1_Template","ɵɵproperty","ctx_r0","loadingStatus","LoadingStatus","LOADING","ERROR","CrmFormLoadingIndicatorComponent","init_form_loading_indicator_component","__esmMin","init_common","init_icon","init_ngx_translate_core","init_empty_state","init_loading_spinner","init_tokens_and_interfaces","constructor","selectors","inputs","ngContentSelectors","_c1","decls","vars","consts","template","rf","ctx","CrmFormLoadingIndicatorComponent_ng_container_0_Template","CrmFormLoadingIndicatorComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","OK","loadingState_r2","CommonModule","NgIf","TranslateModule","TranslatePipe","GalaxyEmptyStateModule","EmptyStateComponent","EmptyStateHeroDirective","EmptyStateTitleDirective","EmptyStateActionsDirective","MatIconModule","MatIcon","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","encapsulation","require_strings","__commonJSMin","exports","decamelize","dasherize","camelize","classify","underscore","capitalize","levenshtein","STRING_DASHERIZE_REGEXP","STRING_DECAMELIZE_REGEXP","STRING_CAMELIZE_REGEXP","STRING_UNDERSCORE_REGEXP_1","STRING_UNDERSCORE_REGEXP_2","str","_match","_separator","chr","match","part","a","b","matrix","i","j","ɵɵelementContainerStart","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","import_strings","VerticalNavCardComponent","init_vertical_nav_card_component","__esmMin","init_common","constructor","label","active","class","id","ngOnInit","dasherize","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","ɵɵtemplate","VerticalNavCardComponent_ng_container_0_Template","ɵɵproperty","CommonModule","NgIf","encapsulation","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","tab_r3","ɵɵrestoreView","_r2","$implicit","ctx_r3","ɵɵnextContext","scrollTarget_r5","ɵɵreference","selectTab","ɵɵresetView","addQueryString","id","$event","i0","click","preventDefault","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵclassProp","active","ɵɵtextInterpolate","label","ɵɵtemplate","VerticalNavTabComponent_ul_2_ng_container_1_Template","ɵɵproperty","tabs","tab_r8","_r7","ɵɵtextInterpolate1","ɵɵrepeaterCreate","VerticalNavTabComponent_mat_select_4_For_2_Template","ɵɵrepeaterTrackByIdentity","mobileSelectValue","ɵɵrepeater","VerticalNavTabComponent","init_vertical_nav_tab_component","__esmMin","init_common","init_http","init_core","init_router","init_select","init_observers","init_layout","init_vertical_nav_card_component","init_form_field","constructor","responsive","class","useQueryParams","tabClicked","EventEmitter","tabActivated","location","inject","Location","activatedRoute","ActivatedRoute","isMobile","ngOnInit","observe","Breakpoints","Handset","subscribe","result","matches","ngAfterContentInit","setActiveTab","queryParamHasMappedToATab","activeTabParam","snapshot","queryParams","activeTabs","filter","tab","some","push","length","first","tabTitle","params","HttpParams","set","replaceState","path","split","toString","scrolltarget","forEach","thisTab","getClientRects","top","window","setTimeout","scrollIntoView","behavior","emit","ɵɵdirectiveInject","BreakpointObserver","selectors","contentQueries","rf","ctx","dirIndex","VerticalNavCardComponent","ɵɵclassMap","ɵɵelement","VerticalNavTabComponent_ul_2_Template","VerticalNavTabComponent_mat_select_4_Template","_r1","ɵɵprojection","CommonModule","NgForOf","NgIf","ObserversModule","CdkObserveContent","MatSelectModule","MatSelect","MatOption","GalaxyFormFieldModule","FormFieldComponent","styles","init_vertical_nav_tab","__esmMin","init_vertical_nav_tab_component","init_vertical_nav_card_component","ɵɵelement","ɵɵproperty","renderableField_r1","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind2","ctx_r3","objectType","ɵɵtwoWayListener","$event","field_r3","ɵɵrestoreView","_r2","$implicit","i0","ɵɵtwoWayBindingSet","associations","ɵɵresetView","ɵɵlistener","ɵɵnextContext","associationsUpdated","ɵɵtemplate","CrmCardGroupDrivenFormComponent_For_4_Conditional_0_Conditional_7_For_1_Conditional_5_Template","type","ɵɵtwoWayProperty","ɵɵconditional","associationRequiredError","ɵɵrepeaterCreate","CrmCardGroupDrivenFormComponent_For_4_Conditional_0_Conditional_7_For_1_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","associationFormFields","CrmCardGroupDrivenFormComponent_For_4_Conditional_0_For_6_Template","CrmCardGroupDrivenFormComponent_For_4_Conditional_0_Conditional_7_Template","fieldGroup_r6","description","ɵɵpipeBind1","ɵ$index_7_r7","fields","isEditing","CrmCardGroupDrivenFormComponent_For_4_Conditional_0_Template","editableFieldCount","renderableField_r8","CrmCardGroupDrivenFormComponent_For_6_For_1_Template","renderableFieldGroup_r9","CrmCardGroupDrivenFormComponent_Conditional_7_ng_template_1_Template","formButtons_r10","_r11","onSubmit","onCancel","submitButtonText","cancelButtonText","savingStatus","CrmCardGroupDrivenFormComponent","init_card_group_driven_form_component","__esmMin","init_common","init_core","init_forms","init_card","init_icon","init_ngx_translate_core","init_empty_state","init_sticky_footer","init_base_model_driven_form_component","init_form_button_group_component","init_form_loading_indicator_component","init_renderer_selector_component","init_vertical_nav_tab","init_tokens_and_interfaces","init_form_field","init_association_form_field","init_utils","init_i18n","BaseCrmModelDrivenFormComponent","constructor","model","associationIsRequired","signal","crmObjectDependencies","inject","CrmObjectInjectionToken","optional","set","associationFieldHasError","initialize","fieldSchemas","fieldGroups","createAssociationFields","getObjectDependencies","config","required","formFields","objectTypes","map","associationType","flatMap","length","errorMessage","translateByObjectTypeService","getTranslationByObjectType","snackService","openErrorSnack","duration","SNACKBAR_DURATION","__ngFactoryType__","selectors","inputs","outputs","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","CrmCardGroupDrivenFormComponent_For_4_Template","CrmCardGroupDrivenFormComponent_For_6_Template","CrmCardGroupDrivenFormComponent_Conditional_7_Template","CrmCardGroupDrivenFormComponent_ng_template_8_Template","ɵɵtemplateRefExtractor","loadingStatus","formGroup","renderableFieldGroups","readonlyRenderableFieldGroups","readOnly","CommonModule","NgTemplateOutlet","FormsModule","ɵNgNoValidate","NgControlStatusGroup","MatCardModule","MatCard","MatCardContent","MatIconModule","ReactiveFormsModule","FormGroupDirective","TranslateModule","TranslatePipe","GalaxyEmptyStateModule","GalaxyStickyFooterModule","StickyFooterComponent","CrmFormButtonGroupComponent","CrmFormLoadingIndicatorComponent","RendererSelectorComponent","VerticalNavTabComponent","VerticalNavCardComponent","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","ErrorDirective","CrmObjectAssociationFormFieldComponent","TranslateByObjectTypePipe","styles","encapsulation","changeDetection","ɵɵelement","ɵɵproperty","renderableField_r1","ɵɵrepeaterCreate","CrmPanelDrivenFormComponent_For_3_For_1_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","renderableFieldGroup_r2","fields","renderableField_r3","CrmPanelDrivenFormComponent_For_5_For_1_Template","renderableFieldGroup_r4","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r5","ctx_r5","ɵɵnextContext","ɵɵresetView","onSubmit","onCancel","ɵɵelementEnd","ɵɵadvance","ɵɵpipeBind1","submitButtonText","cancelButtonText","savingStatus","CrmPanelDrivenFormComponent","init_panel_driven_form_component","__esmMin","init_common","init_forms","init_ngx_translate_core","init_renderer_selector_component","init_base_model_driven_form_component","init_form_button_group_component","init_form_loading_indicator_component","init_divider","BaseCrmModelDrivenFormComponent","__ngFactoryType__","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","CrmPanelDrivenFormComponent_For_3_Template","CrmPanelDrivenFormComponent_For_5_Template","ɵɵtemplate","CrmPanelDrivenFormComponent_Conditional_6_Template","loadingStatus","formGroup","renderableFieldGroups","readonlyRenderableFieldGroups","ɵɵconditional","readOnly","inlineEdit","CommonModule","FormsModule","ɵNgNoValidate","NgControlStatusGroup","ReactiveFormsModule","FormGroupDirective","TranslateModule","TranslatePipe","RendererSelectorComponent","CrmFormLoadingIndicatorComponent","CrmFormButtonGroupComponent","MatDividerModule","styles","encapsulation","changeDetection","ɵɵelement","ɵɵproperty","renderableField_r1","ɵɵtemplate","CrmBasicFieldGroupFormComponent_For_9_For_1_Conditional_0_crm_renderer_selector_0_Template","ctx","get","ctx_r1","objectType","includes","fieldId","CrmBasicFieldGroupFormComponent_For_9_For_1_Conditional_0_Template","ɵɵconditional","tmp_21_0","ɵɵpipeBind1","basicGroupFieldsMap$","ɵɵrepeaterCreate","CrmBasicFieldGroupFormComponent_For_9_For_1_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","renderableFieldGroup_r3","fields","renderableField_r4","CrmBasicFieldGroupFormComponent_For_11_For_1_Template","renderableFieldGroup_r5","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r6","ɵɵnextContext","ɵɵresetView","onCancel","ɵɵtext","ɵɵelementEnd","onSubmit","ɵɵadvance","ɵɵtextInterpolate1","CrmBasicFieldGroupFormComponent","init_basic_field_group_form_component","__esmMin","init_common","init_forms","init_icon","init_card","init_ngx_translate_core","init_empty_state","init_renderer_selector_component","init_base_model_driven_form_component","init_form_loading_indicator_component","init_button","init_dialog","init_tokens_and_interfaces","init_shared_services","init_translate_by_object_type_pipe","init_field_service","init_esm","BaseCrmModelDrivenFormComponent","constructor","config","snackService","rendererSelector","validatorFactory","inlineEditService","fieldService","scoreService","translateByObjectTypeService","combineLatest","contact","additionalBaseFormFieldIds$","of","company","opportunity","pipe","map","contactFields","companyFields","opportunityFields","basicGroupFieldsMap","Map","set","getFieldId","StandardExternalIds","FirstName","LastName","PhoneNumber","Email","Tags","StandardIds","ContactLinkedInURL","ContactJobTitle","CompanyName","CompanyWebsite","CompanyPrimaryAddressLine1","CompanyPrimaryAddressLine2","CompanyPrimaryAddressCity","CompanyPrimaryAddressState","CompanyPrimaryAddressPostalCode","CompanyPrimaryAddressCountry","CompanyPhoneNumber","CompanyTags","CompanyPrimaryAddressGooglePlaceID","OpportunityName","SystemFieldIds","OpportunityOwnerID","OpportunityPipelineID","OpportunityProbability","OpportunityAmount","OpportunityExpectedCloseDate","ɵɵdirectiveInject","CrmInjectionToken","SnackbarService","RendererSelectorService","ValidatorFactoryService","InlineEditService","CrmFieldService","ScoreService","TranslateByObjectTypeService","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","CrmBasicFieldGroupFormComponent_For_9_Template","CrmBasicFieldGroupFormComponent_For_11_Template","CrmBasicFieldGroupFormComponent_ng_template_12_Template","CrmBasicFieldGroupFormComponent_ng_template_13_Template","ɵɵtemplateRefExtractor","loadingStatus","formGroup","ɵɵtextInterpolate","ɵɵpipeBind2","renderableFieldGroups","readonlyRenderableFieldGroups","formButtons_r7","CommonModule","NgIf","NgTemplateOutlet","AsyncPipe","FormsModule","ɵNgNoValidate","NgControlStatusGroup","ReactiveFormsModule","FormGroupDirective","TranslateModule","TranslatePipe","TranslateByObjectTypePipe","GalaxyEmptyStateModule","MatIconModule","RendererSelectorComponent","MatCardModule","MatCard","MatCardContent","CrmFormLoadingIndicatorComponent","MatButtonModule","MatButton","MatDialogModule","MatDialogTitle","MatDialogActions","MatDialogContent","styles","encapsulation","changeDetection","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","onSubmit","onCancel","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","objectType","existingObjectId","ɵɵpipeBind1","submitButtonText","cancelButtonText","loadingStatus","savingStatus","fieldConfig","readOnly","isEditing","_r3","ɵɵtwoWayListener","i0","ɵɵtwoWayBindingSet","associationFormFields","ɵɵtwoWayProperty","_r4","CrmModelDrivenFormComponent","init_model_driven_form_component","__esmMin","init_core","init_card_group_driven_form_component","init_panel_driven_form_component","init_common","init_ngx_translate_core","init_basic_field_group_form_component","init_shared_services","init_inline_edit_service","init_sync_field_form_input_service","constructor","mode","formSubmit","EventEmitter","formCancel","model","fields","emit","selectors","inputs","outputs","features","ɵɵProvidersFeature","InlineEditService","ScoreService","SyncFieldFormInputService","decls","vars","consts","template","rf","ctx","ɵɵtemplate","CrmModelDrivenFormComponent_ng_container_1_Template","CrmModelDrivenFormComponent_ng_container_2_Template","CrmModelDrivenFormComponent_ng_container_3_Template","CommonModule","NgSwitch","NgSwitchCase","NgSwitchDefault","TranslateModule","TranslatePipe","CrmCardGroupDrivenFormComponent","CrmPanelDrivenFormComponent","CrmBasicFieldGroupFormComponent","styles","changeDetection","init_model_driven_form","__esmMin","init_field_validation","init_inline_edit_service","init_renderer_selector_component","init_renderer_selector_service","init_validator_factory_service","init_model_driven_form_component","init_autocomplete_service","init_updater_service","init_utils","init_hidden_text","init_sync_icon_component","createCrmObjectModalProviders","objectType","parentInjector","Injector","create","providers","provide","ModelDrivenFormFieldOptionsInjectionToken","useFactory","modelDrivenFormFieldOptionsInjectionTokenGenerator","PageAnalyticsInjectionToken","pageAnalyticsInjectionTokenGenerator","parent","CrmCreateCrmObjectModalComponent","init_create_crm_object_modal_component","__esmMin","init_common","init_core","init_dialog","init_esm","init_model_driven_form","init_tokens_and_interfaces","init_i18n","init_utils","constructor","dialogRef","data","config","crmFormService","snackService","trackingService","translateByObjectTypeService","crmObjectManagementTableChangesService","crmObjectDependencies","objectSubtype$","of","loadingStatus","signal","LoadingStatus","LOADING","savingStatus","SavingStatus","NOT_SAVING","fieldSchemas$","combineLatest","listAllFormFields$","defaultInputValues$","pipe","map","fieldSchemas","defaultInputValues","fieldSchema","defaultInputValue","find","inputValue","fieldId","value","hasDefaultValue","take","fieldGroups$","listAllObjectFormFieldGroups$","fieldConfig$","tap","fieldGroups","empty","length","set","EMPTY","OK","catchError","error","ERROR","errorSnackbar","shareReplay","onSave","fields","__async","SAVING","createdObject","firstValueFrom","validateAndCreateCrmObject$","trackEvent","objectSubtype","addCreatedCrmObject","close","crmObject","formDefaultOnCreateInputValues$","getObjectDependencies","defaultMessage","message","translatedDefaultMessage","getTranslationByObjectType","openErrorSnack","duration","SNACKBAR_DURATION","onCancel","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","CrmInjectionToken","CrmFormService","SnackbarService","CRMTrackingService","TranslateByObjectTypeService","CrmObjectManagementTableChangesService","CrmObjectInjectionToken","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","$event","ɵɵelementEnd","ɵɵproperty","ɵɵpipeBind1","ɵɵpureFunction0","_c0","CommonModule","AsyncPipe","TranslationModule","TranslatePipe","CrmModelDrivenFormComponent","MatDialogModule","encapsulation","init_create_crm_object_modal","__esmMin","init_create_crm_object_modal_component","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ctx_r1","displayNamesByObjectId","get","association_r1","crmObjectId","ɵɵtemplate","ConfirmExistingPrimaryAssociationModalComponent_For_12_Conditional_0_Template","ɵɵconditional","data","existingPrimaryObjectIds","includes","ConfirmExistingPrimaryAssociationModalComponent","init_confirm_existing_primary_association_modal_component","__esmMin","init_core","init_dialog","init_button","init_i18n","init_common","init_confirmation_modal","init_icon","constructor","dialogRef","objectDisplayService","tagMap","signal","Map","associations","selectedObjects","objectType","forEach","object","set","getObjectDisplayName","cancel","close","continue","save","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","CrmObjectDisplayService","selectors","decls","vars","consts","template","rf","ctx","ɵɵrepeaterCreate","ConfirmExistingPrimaryAssociationModalComponent_For_12_Template","_forTrack0","ɵɵlistener","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵrepeater","ɵɵpipeBind1","CommonModule","GalaxyConfirmationModalModule","ConfirmationModalActionsDirective","ModalActionsComponent","ConfirmationModalIconDirective","ConfirmationModalMessageDirective","ConfirmationModalTitleDirective","ModalBodyComponent","MatButtonModule","MatButton","MatIconModule","MatIcon","TranslationModule","TranslatePipe","TranslateByObjectTypePipe","styles","ɵɵelement","ɵɵproperty","card_r4","avatar","icon","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","profileUrl","ɵɵadvance","ɵɵtextInterpolate1","name","ɵɵtemplate","CrmObjectAssociationPanelComponent_Defer_5_Conditional_5_For_1_Conditional_0_Conditional_3_Conditional_1_Template","CrmObjectAssociationPanelComponent_Defer_5_Conditional_5_For_1_Conditional_0_Conditional_3_Conditional_2_Template","ɵɵconditional","ctx_r1","showAssociationLink","ɵɵelementContainer","tmp_16_0","customHeaderContent","undefined","ɵɵpureFunction1","_c0","ɵɵlistener","ɵɵrestoreView","_r5","ɵɵnextContext","$implicit","ɵɵresetView","setAsPrimary","ɵɵpipeBind2","associatedObject","_r6","removeAssociation","ɵɵpipeBind1","ɵɵtextInterpolate","action_r8","_r7","callback","CrmObjectAssociationPanelComponent_Defer_5_Conditional_5_For_1_Conditional_0_For_18_Conditional_4_Template","label","customCardContent","tags","ɵɵpureFunction0","_c1","CrmObjectAssociationPanelComponent_Defer_5_Conditional_5_For_1_Conditional_0_Conditional_2_Template","CrmObjectAssociationPanelComponent_Defer_5_Conditional_5_For_1_Conditional_0_Conditional_3_Template","CrmObjectAssociationPanelComponent_Defer_5_Conditional_5_For_1_Conditional_0_Conditional_5_Template","CrmObjectAssociationPanelComponent_Defer_5_Conditional_5_For_1_Conditional_0_Conditional_11_Template","_r3","editTags","CrmObjectAssociationPanelComponent_Defer_5_Conditional_5_For_1_Conditional_0_Conditional_16_Template","ɵɵrepeaterCreate","CrmObjectAssociationPanelComponent_Defer_5_Conditional_5_For_1_Conditional_0_For_18_Template","ɵɵrepeaterTrackByIdentity","CrmObjectAssociationPanelComponent_Defer_5_Conditional_5_For_1_Conditional_0_Conditional_20_Template","CrmObjectAssociationPanelComponent_Defer_5_Conditional_5_For_1_Conditional_0_Conditional_21_Template","menu_r9","primaryAssociationId$","associationId","requiresPrimaryAssociation","isMultiLocation","ɵɵrepeater","customActions","length","CrmObjectAssociationPanelComponent_Defer_5_Conditional_5_For_1_Conditional_0_Template","CrmObjectAssociationPanelComponent_Defer_5_Conditional_5_For_1_Template","ctx","_r1","addAssociation","CrmObjectAssociationPanelComponent_Defer_5_Conditional_5_Template","CrmObjectAssociationPanelComponent_Defer_5_Conditional_7_Template","tmp_3_0","cards$","updateTypes","CrmObjectAssociationPanelComponent","init_crm_object_association_panel_component","__esmMin","init_common","init_core","init_button","init_card","init_icon","init_menu","init_tooltip","init_avatar","init_i18n","init_expansion","init_esm","init_tokens_and_interfaces","init_operators","init_rxjs_interop","init_edit_association_tags_dialog_component","init_chips","init_select_object_type_modal_component","init_association_utils","init_loading_spinner","init_select_primary_association_modal_component","init_create_crm_object_modal","init_confirm_existing_primary_association_modal_component","TranslateByObjectTypePipe","LoadingSpinnerComponent","constructor","config","multiLocationConfig","associationService","confirmationModalService","objectService","translateService","translateByObjectTypeService","snackService","dialog","input","required","associatedObject$","toObservable","id","id$","name$","objectType","objectType$","createCardData","confirmExistingPrimaryAssociations","toSignal","isMultiLocation$","of","computed","associationType","fromObject","toObject","getAssociationType","injector","inject","Injector","tokenInjector","create","providers","provide","PageAnalyticsInjectionToken","useFactory","pageAnalyticsInjectionTokenGenerator","GalaxyFilterChipInjectionToken","tableFiltersInjectionTokenGenerator","parent","associationsWithUpdatedTags","signal","Map","associationsWithUpdatedTags$","updatedAssociations","updatedAssociations$","routePrefix$","pipe","distinctUntilChanged","takeUntilDestroyed","subscribe","set","initialAssociations$","combineLatest","switchMap","getAssociationsForObject$","map","associations","association","filter","withLatestFrom","ids","getAssociationsFromAssociationIds$","shareReplay","addedAssociations$","updatedMap","addedIds","forEach","value","key","Added","push","startWith","associations$","initialAssociations","updatedTags","addedAssociations","withRemoved","crmObjectId","get","Removed","withRemovedAndAdded","addTagUpdatesToAssociations","includes","find","a","hasPrimaryAssociation$","primaryAssociationId","routePrefix","sort","b","aName","toLowerCase","bName","aTags","bTags","__async","selectAssociationModalResult","firstValueFrom","openSelectAssociationsModal","objectIdsToAdd","selectedRows","crmObject","clickedCreate","createModalResult","openCreateCrmObjectModal","selectModalResult","hasPrimary","dialogResult","openSelectPrimaryAssociationModal","continue","tagMap","addAssociationsWithTags","objectIdsWithPrimaryAssociation","getObjectIdsWithExistingPrimaryAssociations","openConfirmExistingPrimaryAssociationModal","o","partialObservables$","getAssociationsWithAssociatedObjectForObject$","results","v","objectsWithPrimaryAssociation$","zip","flat","resp","createObjectAssociations","idsCreated","update","val","added","prev","objectId","associatedIdToObjectId","openAddAssociationResultSnack","error","errorSnack","successfulIds","totalIds","openErrorSnack","openSuccessSnack","interpolateTranslateParams","createdCount","String","totalCount","allIds","getMultiObject","crmObjects","objects","open","ConfirmExistingPrimaryAssociationModalComponent","data","existingPrimaryObjectIds","selectedObjects","afterClosed","SelectPrimaryAssociationModalComponent","CrmCreateCrmObjectModalComponent","createCrmObjectModalProviders","width","hideCreateButton","preselectedObjectIds","take","existingAssociations","SelectObjectTypeModalComponent","baseColumnIds","modalTitle","getTranslationByObjectType","objectName","newSelection","showActions","hideActionButton","preselectedIds","createButtonText","idsToAdd","updatesToDo","createObjectAssociation$","responses","Promise","all","index","createdIds","cardData","openModal","type","title","message","instant","fromName","removeName","confirmButtonText","cancelButtonText","success","changes","item","hasUpdates","associationName","primaryAssociationName","association$","getAssociation","associationTags","newAssociationTags","tagValue","updatePrimaryAssociation$","updateAssociationTags","catchError","_","primaryAssociation$","primaryTags","newPrimaryTags","t","removePrimaryFromExisting$","modalConfirmation$","newAssociationName","previousAssociationName","hideCancel","updateWithConfirmation$","proceed","dialogResponse","EditAssociationTagsDialogComponent","ɵɵdirectiveInject","CrmInjectionToken","CrmMultilocationInjectionToken","CrmAssociationService","OpenConfirmationModalService","CrmObjectService","TranslateService","TranslateByObjectTypeService","SnackbarService","MatDialog","selectors","inputs","decls","vars","consts","template","rf","CrmObjectAssociationPanelComponent_Defer_5_Template","CrmObjectAssociationPanelComponent_DeferLoading_6_Template","ɵɵdefer","CrmObjectAssociationPanelComponent_Defer_7_DepsFn","CommonModule","MatCardModule","GalaxyAvatarModule","MatIconModule","MatMenuModule","MatButtonModule","MatTooltipModule","TranslationModule","MatExpansionPanel","MatExpansionPanelHeader","MatExpansionPanelTitle","GalaxyLoadingSpinnerModule","styles","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","card_r2","ɵɵnextContext","card","ctx_r2","ɵɵresetView","openMailWindow","email","ɵɵtext","ɵɵelementEnd","copyToClipboard","ɵɵadvance","ɵɵpropertyInterpolate1","ɵɵsanitizeUrl","ɵɵtextInterpolate1","ɵɵtemplate","ContactAssociationPanelComponent_ng_template_2_Conditional_0_Template","ɵɵconditional","ɵɵproperty","card_r4","jobTitle","ɵɵpropertyInterpolate","linkedInUrl","phone","ContactAssociationPanelComponent_ng_template_4_Conditional_0_Template","ContactAssociationPanelComponent_ng_template_4_Conditional_1_Template","ContactAssociationPanelComponent_ng_template_4_Conditional_2_Template","ContactAssociationPanelComponent","init_contact_association_panel_component","__esmMin","init_core","init_card","init_association_card","init_tokens_and_interfaces","init_shared_services","init_crm_object_association_panel_component","init_model_driven_form","init_constants","init_icon","init_button","init_esm","init_add_campaign_dialog_component","init_operators","init_common","openCampaignDialog","id","dialog","open","AddCampaignDialogComponent","width","data","openEditContactPage","__async","newPath","firstValueFrom","config","routePrefix$","PAGE_ROUTES","CONTACT","ROOT","SUBROUTES","EDIT","replace","window","location","pathname","focus","constructor","translateService","fieldService","objectDisplayService","clipboard","snackbarService","input","name","objectType","showCampaignAction$","company","showCampaigns$","of","customActions$","pipe","map","showCampaigns","campaignAction","editContactPageAction","label","instant","callback","objectId","icon","cardFunction","associations","routePrefix","association","fullName","getObjectDisplayName","associatedObject","phoneParsed","parsePhoneNumber","getFieldValueFromCrmObject","StandardExternalIds","PhoneNumber","stringValue","associationId","crmObjectId","profileUrl","PROFILE","tags","filter","tag","formatAsReadonlyPhone","Email","StandardIds","ContactLinkedInURL","ContactJobTitle","copy","openSuccessSnack","action","ɵɵdirectiveInject","CrmInjectionToken","MatDialog","TranslateService","CrmFieldService","CrmObjectDisplayService","Window","Clipboard","SnackbarService","selectors","inputs","features","ɵɵProvidersFeature","provide","useValue","decls","vars","consts","template","rf","ctx","ɵɵelement","ContactAssociationPanelComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","ContactAssociationPanelComponent_ng_template_4_Template","cardContent_r6","headerContent_r5","ɵɵpipeBind1","CrmObjectAssociationPanelComponent","CommonAssociationCardContentComponent","MatCardSubtitle","MatIcon","MatIconButton","AsyncPipe","styles","CompanyToContactAssociationsCardComponent","init_company_to_contact_associations_card_component","__esmMin","init_core","init_tokens_and_interfaces","init_contact_association_panel_component","constructor","data","inject","COMPANY_PROFILE_CARD_DATA_TOKEN","id","company_id","name","selectors","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵproperty","ContactAssociationPanelComponent","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","card_r1","website","ɵɵsanitizeUrl","ɵɵadvance","ɵɵtextInterpolate1","ɵɵtemplate","CompanyAssociationPanelComponent_ng_template_1_Conditional_0_Template","ɵɵconditional","card_r2","address","ɵɵpropertyInterpolate1","phone","CompanyAssociationPanelComponent_ng_template_3_Conditional_0_Template","CompanyAssociationPanelComponent_ng_template_3_Conditional_1_Template","CompanyAssociationPanelComponent","init_company_association_panel_component","__esmMin","init_core","init_card","init_association_card","init_crm_object_association_panel_component","init_shared_services","init_model_driven_form","init_constants","constructor","fieldService","id","input","name","objectType","primaryAssociationRequired","computed","cardFunction","associations","routePrefix","map","association","phoneParsed","parsePhoneNumber","getFieldValueFromCrmObject","associatedObject","StandardIds","CompanyPhoneNumber","stringValue","associationId","objectId","SystemFieldIds","CompanyID","CompanyName","profileUrl","PAGE_ROUTES","COMPANY","ROOT","SUBROUTES","PROFILE","replace","crmObjectId","tags","icon","generateAddressString","CompanyWebsite","formatAsReadonlyPhone","address1","CompanyPrimaryAddressLine1","address2","CompanyPrimaryAddressLine2","city","CompanyPrimaryAddressCity","state","CompanyPrimaryAddressState","country","CompanyPrimaryAddressCountry","zip","CompanyPrimaryAddressPostalCode","filter","Boolean","join","ɵɵdirectiveInject","CrmFieldService","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵelement","CompanyAssociationPanelComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","CompanyAssociationPanelComponent_ng_template_3_Template","cardContent_r4","headerContent_r3","CommonAssociationCardContentComponent","CrmObjectAssociationPanelComponent","MatCardSubtitle","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtemplate","OpportunityAssociationPanelComponent_ng_template_1_Case_0_Template","OpportunityAssociationPanelComponent_ng_template_1_Case_1_Template","OpportunityAssociationPanelComponent_ng_template_1_Case_2_Template","ɵɵconditional","tmp_4_0","card_r1","status","ctx_r1","ClosedWon","ClosedLost","Open","ɵɵtextInterpolate2","ɵɵpipeBind2","card_r3","lastActivity","expectedClose","ctx","OpportunityAssociationPanelComponent_ng_template_3_Conditional_5_Template","OpportunityAssociationPanelComponent_ng_template_3_Conditional_6_Template","OpportunityAssociationPanelComponent_ng_template_3_Conditional_7_Template","value","currency","tmp_7_0","stageName$","OpportunityAssociationPanelComponent","init_opportunity_association_panel_component","__esmMin","init_core","init_shared_services","init_crm_object_association_panel_component","init_constants","init_pipes","init_common","init_ngx_translate_core","init_badge","init_esm","constructor","opportunityCustomizationService","fieldService","crmPipelineService","id","input","name","objectType","cardFunction","associations","routePrefix","map","association","fullName","getObjectDisplayName","associatedObject","currencyValue","getFieldValueFromCrmObject","StandardIds","OpportunityAmount","SystemFieldIds","OpportunityLastActivityDate","closeDate","OpportunityExpectedCloseDate","OpportunityStatus","stageField","OpportunityCalculatedStageID","pipelineId","OpportunityPipelineID","stringValue","stageId","getPipeline$","EMPTY","pipe","pipeline","stages","find","stage","associationId","objectId","crmObjectId","profileUrl","PAGE_ROUTES","OPPORTUNITY","ROOT","SUBROUTES","PROFILE","replace","tags","currencyCode","dateValue","ɵɵdirectiveInject","CrmObjectDisplayService","CrmFieldService","CrmPipelineService","selectors","inputs","decls","vars","consts","template","rf","ɵɵelement","OpportunityAssociationPanelComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","OpportunityAssociationPanelComponent_ng_template_3_Template","ɵɵproperty","headerContent_r5","cardContent_r4","CrmObjectAssociationPanelComponent","GalaxyPipesModule","GalaxyCurrencyPipe","DatePipe","TranslateModule","TranslatePipe","GalaxyBadgeModule","BadgeComponent","AsyncPipe","styles","CompanyToOpportunityAssociationsPanelComponent","init_company_to_opportunity_associations_panel_component","__esmMin","init_core","init_tokens_and_interfaces","init_opportunity_association_panel_component","constructor","data","inject","COMPANY_PROFILE_CARD_DATA_TOKEN","id","company_id","name","selectors","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵproperty","OpportunityAssociationPanelComponent","styles","init_tokens_and_interfaces","__esmMin","init_association_panel_components","__esmMin","init_association_card","init_contact_campaigns_card_component","init_parent_child_company_associations_card_component","init_select_associations_modal_component","init_company_to_contact_associations_card_component","init_contact_association_panel_component","init_company_association_panel_component","init_opportunity_association_panel_component","init_company_to_opportunity_associations_panel_component","init_tokens_and_interfaces","init_list_objects","__esmMin","init_list_objects_page_component","init_list_objects_table_service","init_value_summary_service","init_list_objects_table_component","init_content_directive","init_page_actions_directive","init_timeline","__esmMin","init_timeline_component","init_timeline_activity_component","init_timeline_associated_object_pipe","init_timeline_service","init_activities_timeline","__esmMin","init_activities","init_timeline","init_activities_timeline_component","ɵɵelementContainerStart","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","selectedCompanyText","ɵɵelement","CompanyCustomFilterChipComponent","init_company_custom_filter_chip_component","__esmMin","init_core","init_common","init_ngx_translate_core","init_rxjs_interop","init_operators","initialValue","value","length","string","selectedCompanyId","set","constructor","companyFiltersService","signal","selectedCompany","computed","displayName","toObservable","pipe","switchMap","companyIds","getMultiCompany","takeUntilDestroyed","subscribe","result","ɵɵdirectiveInject","CompanyFiltersService","selectors","inputs","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","CompanyCustomFilterChipComponent_ng_container_0_Template","CompanyCustomFilterChipComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","ɵɵproperty","loading_r2","CommonModule","NgIf","TranslateModule","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","option_r1","ɵɵadvance","ɵɵtextInterpolate1","displayName","ɵɵelement","ɵɵtemplate","CompanyCustomFilterInputComponent_glxy_form_field_0_mat_option_5_Template","ɵɵpipeBind1","ctx_r3","formControl","auto_r3","displayFn","companyDetails_r2","availableOptions","CompanyCustomFilterInputComponent","init_company_custom_filter_input_component","__esmMin","init_core","init_chips","init_common","init_ngx_translate_core","init_forms","init_input","init_form_field","init_autocomplete","init_rxjs_interop","init_esm","init_operators","fieldId","value","_fieldId","set","initialValue","length","string","setValue","clearValue","constructor","companyFiltersService","valueChanges","EventEmitter","FormControl","nonNullable","searchTerm","toSignal","signal","availableOptions$","toObservable","pipe","takeUntilDestroyed","switchMap","filterTerm","crmObjectId","listReadableCompanies","companyDetails$","getMultiCompany","of","effect","emit","company","find","ɵɵdirectiveInject","CompanyFiltersService","selectors","inputs","outputs","features","ɵɵProvidersFeature","provide","GalaxyAbstractFilterInput","useExisting","forwardRef","decls","vars","consts","template","rf","ctx","CompanyCustomFilterInputComponent_glxy_form_field_0_Template","CompanyCustomFilterInputComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","loading_r5","CommonModule","NgForOf","NgIf","AsyncPipe","TranslateModule","TranslatePipe","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","MatInputModule","MatInput","GalaxyFormFieldModule","FormFieldComponent","MatAutocompleteModule","MatAutocomplete","MatOption","MatAutocompleteTrigger","encapsulation","AbstractAssigneeFilterChipComponent","init_abstract_assignee_filter_chip_component","__esmMin","init_common","init_core","init_ngx_translate_core","constructor","selectedAssigneeIds","signal","selectedAssignees","selectedAssigneesText","computed","length","firstAssigneeName","getDisplayName","initialValue","value","set","map","v","string","filter","Boolean","selectors","inputs","decls","vars","template","rf","ctx","dependencies","CommonModule","TranslateModule","encapsulation","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","selectedAssigneesText","ɵɵelement","UserFilterChipComponent","init_user_filter_chip_component","__esmMin","init_core","init_rxjs_interop","init_operators","init_common","init_ngx_translate_core","init_abstract_assignee_filter_chip_component","init_activity_assignee_service","AbstractAssigneeFilterChipComponent","getDisplayName","user","displayName","constructor","userService","inject","ActivityAssigneeService","toObservable","selectedAssigneeIds","pipe","switchMap","userIds","getMultiUsers","takeUntilDestroyed","subscribe","result","selectedAssignees","set","selectors","features","ɵɵProvidersFeature","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","UserFilterChipComponent_ng_container_0_Template","UserFilterChipComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","ɵɵproperty","loading_r2","CommonModule","NgIf","TranslateModule","styles","AbstractAssigneeFilterInputComponent","init_abstract_assignee_filter_input_component","__esmMin","init_core","init_chips","init_common","init_ngx_translate_core","init_forms","init_input","init_form_field","init_autocomplete","init_rxjs_interop","fieldId","value","_fieldId","set","initialValue","length","string","formControl","setValue","constructor","valueChanges","EventEmitter","FormControl","nonNullable","searchTerm","toSignal","signal","availableOptions","filteredOptions","computed","filterTerm","extractFilterTerm","filter","assignee","filterFn","emitSearchTermValue","effect","emitNewValue","getId","clearValue","displayFn","foundOption","find","o","getDisplayName","emit","selectors","inputs","outputs","features","ɵɵProvidersFeature","provide","GalaxyAbstractFilterInput","useExisting","forwardRef","decls","vars","template","rf","ctx","dependencies","CommonModule","TranslateModule","ReactiveFormsModule","MatInputModule","GalaxyFormFieldModule","MatAutocompleteModule","encapsulation","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","option_r1","ɵɵadvance","ɵɵtextInterpolate1","displayName","UserFilterInputComponent","init_user_filter_input_component","__esmMin","init_common","init_core","init_forms","init_input","init_ngx_translate_core","init_form_field","init_autocomplete","init_rxjs_interop","init_abstract_assignee_filter_input_component","init_utils","AbstractAssigneeFilterInputComponent","filterFn","user","searchTerm","userFilterFn","extractFilterTerm","userId","getId","getDisplayName","setAvailableOptions","userService","allUsers$","pipe","takeUntilDestroyed","subscribe","allUsers","availableOptions","set","constructor","emitSearchTermValue","effect","value","valueChanges","emit","searchTerm$$","next","find","o","formControl","setValue","string","ɵɵdirectiveInject","ActivityAssigneeService","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵtemplate","UserFilterInputComponent_mat_option_5_Template","ɵɵpipeBind1","auto_r2","displayFn","filteredOptions","CommonModule","NgForOf","TranslateModule","TranslatePipe","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","MatInputModule","MatInput","GalaxyFormFieldModule","FormFieldComponent","MatAutocompleteModule","MatAutocomplete","MatOption","MatAutocompleteTrigger","encapsulation","ɵɵelement","ɵɵtext","ɵɵtextInterpolate1","ctx_r0","selectedTeamMemberText","TeamMemberFilterChipComponent","init_team_member_filter_chip_component","__esmMin","init_common","init_core","init_rxjs_interop","init_ngx_translate_core","init_operators","init_tokens_and_interfaces","init_esm","initialValue","value","selectedTeamMemberIds","set","map","v","string","constructor","signal","selectedTeamMember","isLoading","computed","length","firstSalespersonName","displayName","config","inject","CrmInjectionToken","services","userService","undefined","Error","toObservable","pipe","tap","switchMap","userIds","getMultiUsers","takeUntilDestroyed","subscribe","result","selectors","inputs","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","TeamMemberFilterChipComponent_Conditional_0_Template","TeamMemberFilterChipComponent_Conditional_1_Template","ɵɵconditional","CommonModule","TranslateModule","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","option_r3","userId","ɵɵadvance","ɵɵtextInterpolate1","displayName","ɵɵelement","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","selected","ɵɵtemplate","TeamMemberFilterInputComponent_Defer_0_Conditional_0_mat_option_5_Template","ɵɵpipeBind1","formControl","auto_r4","displayFn","availableOptions","ɵɵelementContainerStart","owner_r7","_r6","$implicit","remove","TeamMemberFilterInputComponent_Defer_0_Conditional_1_ng_template_4_mat_chip_row_0_Template","selectedTeamMembers","option_r8","TeamMemberFilterInputComponent_Defer_0_Conditional_1_ng_container_3_Template","TeamMemberFilterInputComponent_Defer_0_Conditional_1_ng_template_4_Template","ɵɵtemplateRefExtractor","_r5","add","TeamMemberFilterInputComponent_Defer_0_Conditional_1_mat_option_11_Template","loadingValues","loadedChips_r10","teamMemberGrid_r9","auto_r11","separatorKeysCodes","TeamMemberFilterInputComponent_Defer_0_Conditional_0_Template","TeamMemberFilterInputComponent_Defer_0_Conditional_1_Template","ɵɵconditional","singleInput","TeamMemberFilterInputComponent","init_team_member_filter_input_component","__esmMin","init_common","init_core","init_rxjs_interop","init_forms","init_autocomplete","init_input","init_ngx_translate_core","init_chips","init_form_field","init_tokens_and_interfaces","init_operators","init_esm","MatChipGrid","MatChipInput","MatChipRemove","MatChipRow","then","m","MatIcon","MatProgressSpinner","fieldId","value","_fieldId","set","initialValue","ownerIds","map","v","string","selectedTeamMemberIDs","length","setValue","operator","_operator","isMultiInput","GalaxyFilterOperator","FILTER_OPERATOR_IS_ANY","FILTER_OPERATOR_IS_NOT_ANY","selectedTeamMember","userService","getMultiUsers","pipe","take","catchError","of","tap","sUsr","subscribe","constructor","ENTER","COMMA","valueChanges","EventEmitter","FormControl","nonNullable","searchTerm","toSignal","signal","config","inject","CrmInjectionToken","services","undefined","Error","effect","emit","s","startWith","takeUntilDestroyed","debounceTime","switchMap","searchValue","searchUsers","results","filterTerm","startsWith","clearValue","teamMember","find","tm","event","current","hasTeamMember","some","chipInput","clear","option","ownerInput","nativeElement","listWithoutSelected","filter","selectors","viewQuery","rf","ctx","provide","GalaxyAbstractFilterInput","useExisting","forwardRef","decls","vars","consts","template","TeamMemberFilterInputComponent_Defer_0_Template","TeamMemberFilterInputComponent_DeferPlaceholder_1_Template","ɵɵdefer","TeamMemberFilterInputComponent_Defer_2_DepsFn","ɵɵdeferEnableTimerScheduling","ɵɵdeferWhen","CommonModule","TranslateModule","ReactiveFormsModule","MatInputModule","GalaxyFormFieldModule","MatAutocompleteModule","styles","init_custom_filters","__esmMin","init_company_custom_filter_chip_component","init_company_custom_filter_input_component","init_user_filter_chip_component","init_user_filter_input_component","init_team_member_filter_chip_component","init_team_member_filter_input_component","init_abstract_custom_filters","__esmMin","ɵɵprojection","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","menu_r2","ɵɵlistener","ɵɵrestoreView","_r3","ctx_r3","ɵɵnextContext","ɵɵresetView","open","action_r6","_r5","$implicit","callback","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","label","DropdownComponent","init_dropdown_component","__esmMin","init_core","init_common","init_icon","init_button","init_menu","init_i18n","constructor","isExpanded","signal","toggle","set","selectors","inputs","actions","ngContentSelectors","_c1","decls","vars","consts","template","rf","ctx","i0","_r1","ɵɵtemplate","DropdownComponent_Conditional_4_Template","DropdownComponent_Conditional_5_Template","DropdownComponent_Conditional_6_Template","DropdownComponent_Conditional_7_Template","DropdownComponent_Conditional_8_Template","ɵɵrepeaterCreate","DropdownComponent_For_12_Template","ɵɵrepeaterTrackByIndex","ɵɵconditional","length","ɵɵrepeater","CommonModule","MatIconModule","MatIcon","MatButtonModule","MatIconButton","MatMenuModule","MatMenu","MatMenuItem","MatMenuTrigger","TranslationModule","TranslatePipe","styles","changeDetection","DropdownContentDirective","init_dropdown_content_directive","__esmMin","onState","value","behavior","selectors","inputs","DropdownHeaderDirective","init_dropdown_header_directive","__esmMin","onState","value","behavior","selectors","inputs","init_dropdown","__esmMin","init_dropdown_component","init_dropdown_content_directive","init_dropdown_header_directive","ɵɵelement","ɵɵelementStart","ɵɵlistener","lostStage_r2","ɵɵrestoreView","_r1","ctx_r2","ɵɵnextContext","ɵɵresetView","updateStage","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","wonStage_r5","_r4","ɵɵtemplate","CrmOpportunityPageActionsComponent_Conditional_1_Conditional_1_Conditional_0_Template","CrmOpportunityPageActionsComponent_Conditional_1_Conditional_1_Conditional_1_Template","ɵɵconditional","tmp_2_0","lostStage","tmp_3_0","wonStage","firstOpenStage_r7","_r6","CrmOpportunityPageActionsComponent_Conditional_1_Conditional_2_Conditional_0_Template","firstOpenStage","CrmOpportunityPageActionsComponent_Conditional_1_Conditional_1_Template","CrmOpportunityPageActionsComponent_Conditional_1_Conditional_2_Template","status","CrmOpportunityPageActionsComponent","init_opportunity_page_actions_component","__esmMin","init_core","init_button","init_tokens_and_interfaces","init_shared_services","init_vendasta_crm","init_snackbar_service","init_esm","init_common","init_progress_spinner","init_ngx_translate_core","init_model_driven_form","init_rxjs_interop","constructor","config","inject","CrmInjectionToken","data","PROFILE_PAGE_DATA_TOKEN","fieldService","CrmFieldService","opportunityService","OpportunityService","snackbarService","SnackbarService","pipelineService","PipelinesApiService","updaterService","UpdaterService","signal","getStatus","crmObject","loading","pipelineId","getPipelineId","stages","computed","getStage","updatedField","pipe","takeUntilDestroyed","filter","field","fieldId","StandardIds","OpportunityStatus","debounceTime","subscribe","set","stringValue","effect","__async","namespace","firstValueFrom","namespace$","pipeline","getMultiPipeline","pipelineIds","pipelines","find","stage","mutations","m","getFieldValueFromCrmObject","OpportunityPipelineID","updateCrmObject","crmObjectId","fields","fieldMask","paths","map","openSuccessSnack","syncChanges","openErrorSnack","otherFields","f","__spreadProps","__spreadValues","forEach","mutation","updateFieldValue","OpportunityCalculatedStageID","stageId","onChangeCallback","selectors","decls","vars","consts","template","rf","ctx","CrmOpportunityPageActionsComponent_Conditional_0_Template","CrmOpportunityPageActionsComponent_Conditional_1_Template","CommonModule","MatButtonModule","MatButton","MatProgressSpinnerModule","MatProgressSpinner","TranslateModule","TranslatePipe","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ctx_r0","statusColor","ɵɵtextInterpolate","ɵɵpipeBind1","ctx","CrmOpportunityStatusBadgeComponent","init_opportunity_status_badge_component","__esmMin","init_core","init_tokens_and_interfaces","init_shared_services","init_badge","init_ngx_translate_core","init_model_driven_form","init_rxjs_interop","init_esm","constructor","data","inject","PROFILE_PAGE_DATA_TOKEN","fieldService","CrmFieldService","objectDisplayService","CrmObjectDisplayService","updaterService","UpdaterService","statusValue","signal","getStatusFieldValue","crmObject","title","getTitle","status","computed","getStatus","getStatusColor","updatedField","pipe","takeUntilDestroyed","filter","field","fieldId","StandardIds","OpportunityStatus","debounceTime","subscribe","set","stringValue","getObjectDisplayName","getFieldValueFromCrmObject","i18nStatusKey","selectors","decls","vars","consts","template","rf","ɵɵtemplate","CrmOpportunityStatusBadgeComponent_Conditional_3_Template","ɵɵconditional","tmp_1_0","GalaxyBadgeModule","BadgeComponent","TranslateModule","TranslatePipe","styles","init_opportunity","__esmMin","init_opportunity_page_actions_component","init_opportunity_status_badge_component","init_interfaces","__esmMin","init_leaderboard","__esmMin","init_activity_leaderboard_module","init_date_range_selector_component","init_interfaces","init_shared_components","__esmMin","init_association_panel_components","init_custom_table_cells","init_filter_view","init_list_objects","init_select_object_type_modal_component","init_create_crm_object_modal","init_side_panel","init_model_driven_form","init_activities_timeline","init_custom_filters","init_abstract_custom_filters","init_vertical_nav_tab","init_dropdown","init_association_form_field","init_opportunity","init_leaderboard","init_src","__esmMin","init_shared_services","init_shared_components","init_shared_pipes","init_crm_core_module","init_tokens_and_interfaces","init_constants","init_i18n","init_utils"],"x_google_ignoreList":[65,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,234,239,242,247,248,288,313,361,380,400,479,480,512]}