@testgorilla/tgo-ui 2.10.999 → 2.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.circleci/config.yml +112 -0
- package/.editorconfig +16 -0
- package/.eslintignore +5 -0
- package/.eslintrc.js +301 -0
- package/.github/README.md +81 -0
- package/.husky/pre-commit +4 -0
- package/.prettierignore +2 -0
- package/.prettierrc +13 -0
- package/.storybook/main.js +25 -0
- package/.storybook/preview-head.html +10 -0
- package/.storybook/preview.js +107 -0
- package/.storybook/tsconfig.json +24 -0
- package/.storybook/typings.d.ts +4 -0
- package/.stylelintrc.json +30 -0
- package/.vscode/extensions.json +4 -0
- package/.vscode/launch.json +20 -0
- package/.vscode/tasks.json +42 -0
- package/CHANGELOG.md +149 -0
- package/angular.json +174 -0
- package/e2e/bannerAction.spec.ts +46 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--default-chromium-darwin.png +0 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--default-chromium-linux.png +0 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--error-chromium-darwin.png +0 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--error-chromium-linux.png +0 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--info-chromium-darwin.png +0 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--info-chromium-linux.png +0 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--warning-chromium-darwin.png +0 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--warning-chromium-linux.png +0 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--with-relative-width-chromium-darwin.png +0 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-alert-bars-banner-action--with-relative-width-chromium-linux.png +0 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-bars-banner-action--default-chromium-linux.png +0 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-bars-banner-action--error-chromium-linux.png +0 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-bars-banner-action--info-chromium-linux.png +0 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-bars-banner-action--warning-chromium-linux.png +0 -0
- package/e2e/bannerAction.spec.ts-snapshots/id-bars-banner-action--with-relative-width-chromium-linux.png +0 -0
- package/e2e/button.spec.ts +53 -0
- package/e2e/button.spec.ts-snapshots/id-button--basic-chromium-linux.png +0 -0
- package/e2e/button.spec.ts-snapshots/id-button--button-as-link-chromium-linux.png +0 -0
- package/e2e/button.spec.ts-snapshots/id-button--button-only-label-chromium-linux.png +0 -0
- package/e2e/button.spec.ts-snapshots/id-button--disabled-chromium-linux.png +0 -0
- package/e2e/button.spec.ts-snapshots/id-button--full-width-chromium-linux.png +0 -0
- package/e2e/button.spec.ts-snapshots/id-button--label-icon-left-chromium-linux.png +0 -0
- package/e2e/button.spec.ts-snapshots/id-button--label-icon-right-chromium-linux.png +0 -0
- package/e2e/button.spec.ts-snapshots/id-button--loading-chromium-linux.png +0 -0
- package/e2e/button.spec.ts-snapshots/id-button--menu-cell-chromium-linux.png +0 -0
- package/e2e/button.spec.ts-snapshots/id-button--menu-trigger-chromium-linux.png +0 -0
- package/e2e/button.spec.ts-snapshots/id-button--only-icon-chromium-linux.png +0 -0
- package/e2e/button.spec.ts-snapshots/id-button--small-chromium-linux.png +0 -0
- package/e2e/card.spec.ts +43 -0
- package/e2e/card.spec.ts-snapshots/id-card--default-chromium-linux.png +0 -0
- package/e2e/colors.spec.ts +47 -0
- package/e2e/colors.spec.ts-snapshots/id-foundations-colors--greysacale-chromium-linux.png +0 -0
- package/e2e/colors.spec.ts-snapshots/id-foundations-colors--primary-error-chromium-linux.png +0 -0
- package/e2e/colors.spec.ts-snapshots/id-foundations-colors--primary-petrol-chromium-linux.png +0 -0
- package/e2e/colors.spec.ts-snapshots/id-foundations-colors--primary-teal-chromium-linux.png +0 -0
- package/e2e/colors.spec.ts-snapshots/id-foundations-colors--primary-warning-chromium-linux.png +0 -0
- package/e2e/colors.spec.ts-snapshots/id-foundations-colors--secondary-colors-chromium-linux.png +0 -0
- package/e2e/createAccount.spec.ts +102 -0
- package/e2e/createAccount.spec.ts-snapshots/id-create-account--default-chromium-linux.png +0 -0
- package/e2e/createAccount.spec.ts-snapshots/id-deprecated-create-account--default-chromium-linux.png +0 -0
- package/e2e/createAccount.spec.ts-snapshots/register-with-errors-chromium-linux.png +0 -0
- package/e2e/createAccount.spec.ts-snapshots/register-with-texts-chromium-linux.png +0 -0
- package/e2e/createPassword.spec.ts +94 -0
- package/e2e/createPassword.spec.ts-snapshots/createPassword-with-errors-chromium-linux.png +0 -0
- package/e2e/createPassword.spec.ts-snapshots/createPassword-with-texts-chromium-linux.png +0 -0
- package/e2e/createPassword.spec.ts-snapshots/id-createpassword--default-args-viewMode-story-chromium-linux.png +0 -0
- package/e2e/createPassword.spec.ts-snapshots/id-createpassword--default-chromium-linux.png +0 -0
- package/e2e/createPassword.spec.ts-snapshots/id-deprecated-create-password--default-chromium-linux.png +0 -0
- package/e2e/dialog.spec.ts +43 -0
- package/e2e/dialog.spec.ts-snapshots/id-dialog-dialog--default-chromium-darwin.png +0 -0
- package/e2e/dialog.spec.ts-snapshots/id-dialog-dialog--default-chromium-linux.png +0 -0
- package/e2e/field.spec.ts +51 -0
- package/e2e/field.spec.ts-snapshots/id-forms-field--email-chromium-linux.png +0 -0
- package/e2e/field.spec.ts-snapshots/id-forms-field--number-type-chromium-linux.png +0 -0
- package/e2e/field.spec.ts-snapshots/id-forms-field--password-chromium-linux.png +0 -0
- package/e2e/field.spec.ts-snapshots/id-forms-field--search-chromium-linux.png +0 -0
- package/e2e/field.spec.ts-snapshots/id-forms-field--tel-chromium-linux.png +0 -0
- package/e2e/field.spec.ts-snapshots/id-forms-field--text-chromium-linux.png +0 -0
- package/e2e/field.spec.ts-snapshots/id-forms-field--with-disable-chromium-linux.png +0 -0
- package/e2e/field.spec.ts-snapshots/id-forms-field--with-errors-chromium-linux.png +0 -0
- package/e2e/field.spec.ts-snapshots/id-forms-field--with-require-chromium-linux.png +0 -0
- package/e2e/field.spec.ts-snapshots/id-forms-field--without-label-chromium-linux.png +0 -0
- package/e2e/forgotPassword.spec.ts +94 -0
- package/e2e/forgotPassword.spec.ts-snapshots/forgotPassword-with-errors-chromium-linux.png +0 -0
- package/e2e/forgotPassword.spec.ts-snapshots/forgotPassword-with-texts-chromium-linux.png +0 -0
- package/e2e/forgotPassword.spec.ts-snapshots/id-deprecated-forgot-password--default-chromium-linux.png +0 -0
- package/e2e/forgotPassword.spec.ts-snapshots/id-forgotpassword--default-args-viewMode-story-chromium-linux.png +0 -0
- package/e2e/forgotPassword.spec.ts-snapshots/id-forgotpassword--default-chromium-linux.png +0 -0
- package/e2e/label.spec.ts +47 -0
- package/e2e/label.spec.ts-snapshots/id-label--big-chromium-linux.png +0 -0
- package/e2e/label.spec.ts-snapshots/id-label--huge-chromium-linux.png +0 -0
- package/e2e/label.spec.ts-snapshots/id-label--large-chromium-linux.png +0 -0
- package/e2e/label.spec.ts-snapshots/id-label--medium-chromium-linux.png +0 -0
- package/e2e/label.spec.ts-snapshots/id-label--small-chromium-linux.png +0 -0
- package/e2e/label.spec.ts-snapshots/id-under-review-label--big-chromium-linux.png +0 -0
- package/e2e/label.spec.ts-snapshots/id-under-review-label--huge-chromium-linux.png +0 -0
- package/e2e/label.spec.ts-snapshots/id-under-review-label--large-chromium-linux.png +0 -0
- package/e2e/label.spec.ts-snapshots/id-under-review-label--medium-chromium-linux.png +0 -0
- package/e2e/label.spec.ts-snapshots/id-under-review-label--small-chromium-linux.png +0 -0
- package/e2e/login.spec.ts +102 -0
- package/e2e/login.spec.ts-snapshots/id-deprecated-login--default-chromium-linux.png +0 -0
- package/e2e/login.spec.ts-snapshots/id-login--default-chromium-linux.png +0 -0
- package/e2e/login.spec.ts-snapshots/login-with-errors-chromium-linux.png +0 -0
- package/e2e/login.spec.ts-snapshots/login-with-texts-chromium-linux.png +0 -0
- package/e2e/logo.spec.ts +45 -0
- package/e2e/logo.spec.ts-snapshots/id-logo--default-chromium-linux.png +0 -0
- package/e2e/logo.spec.ts-snapshots/id-logo--powered-by-chromium-linux.png +0 -0
- package/e2e/logo.spec.ts-snapshots/id-logo--reverse-chromium-linux.png +0 -0
- package/e2e/navbar.spec.ts +42 -0
- package/e2e/navbar.spec.ts-snapshots/id-navbar--default-chromium-linux.png +0 -0
- package/e2e/navigation.spec.ts +43 -0
- package/e2e/navigation.spec.ts-snapshots/id-navigation--default-chromium-linux.png +0 -0
- package/e2e/paginator.spec.ts +42 -0
- package/e2e/paginator.spec.ts-snapshots/id-paginator--default-chromium-linux.png +0 -0
- package/e2e/progressBar.spec.ts +42 -0
- package/e2e/progressBar.spec.ts-snapshots/id-progressbar--determinate-chromium-linux.png +0 -0
- package/e2e/table.spec.ts +47 -0
- package/e2e/table.spec.ts-snapshots/id-deprecated-table--default-chromium-linux.png +0 -0
- package/e2e/table.spec.ts-snapshots/id-table--default-chromium-darwin.png +0 -0
- package/e2e/table.spec.ts-snapshots/id-table--default-chromium-linux.png +0 -0
- package/e2e/table.spec.ts-snapshots/id-table--expandable-chromium-darwin.png +0 -0
- package/e2e/table.spec.ts-snapshots/id-table--expandable-chromium-linux.png +0 -0
- package/e2e/typography.spec.ts +42 -0
- package/e2e/typography.spec.ts-snapshots/id-foundations-typography--page-args-viewMode-story-chromium-linux.png +0 -0
- package/globalSetup.js +9 -0
- package/jest.config.js +69 -0
- package/ng-package.json +9 -0
- package/package.json +68 -17
- package/projects/client/src/app/app.component.html +1 -0
- package/projects/client/src/app/app.component.scss +8 -0
- package/projects/client/src/app/app.component.spec.ts +27 -0
- package/projects/client/src/app/app.component.ts +37 -0
- package/projects/client/src/app/app.routes.ts +11 -0
- package/projects/client/src/app/components/avatar/avatar.component.html +10 -0
- package/projects/client/src/app/components/avatar/avatar.component.scss +0 -0
- package/projects/client/src/app/components/avatar/avatar.component.ts +25 -0
- package/projects/client/src/app/components/badge/badge.component.html +11 -0
- package/projects/client/src/app/components/badge/badge.component.scss +0 -0
- package/projects/client/src/app/components/badge/badge.component.ts +22 -0
- package/projects/client/src/app/components/checkbox/checkbox.component.html +13 -0
- package/projects/client/src/app/components/checkbox/checkbox.component.scss +0 -0
- package/projects/client/src/app/components/checkbox/checkbox.component.ts +23 -0
- package/projects/client/src/app/components/icon/icon.component.html +10 -0
- package/projects/client/src/app/components/icon/icon.component.scss +0 -0
- package/projects/client/src/app/components/icon/icon.component.ts +19 -0
- package/projects/client/src/assets/.gitkeep +0 -0
- package/projects/client/src/assets/Avatar.png +0 -0
- package/projects/client/src/favicon.ico +0 -0
- package/projects/client/src/index.html +13 -0
- package/projects/client/src/main.ts +15 -0
- package/projects/client/src/styles.scss +10 -0
- package/projects/client/tsconfig.app.json +14 -0
- package/projects/client/tsconfig.spec.json +14 -0
- package/projects/tgo-canopy-ui/__mocks__/alert-bar.mock.ts +18 -0
- package/projects/tgo-canopy-ui/__mocks__/button.mock.ts +34 -0
- package/projects/tgo-canopy-ui/__mocks__/field.mock.ts +10 -0
- package/projects/tgo-canopy-ui/__mocks__/icon.mock.ts +14 -0
- package/projects/tgo-canopy-ui/__mocks__/tag.mock.ts +9 -0
- package/projects/tgo-canopy-ui/assets/.gitkeep +0 -0
- package/projects/tgo-canopy-ui/components/accordion/accordion.component.html +35 -0
- package/projects/tgo-canopy-ui/components/accordion/accordion.component.module.ts +26 -0
- package/projects/tgo-canopy-ui/components/accordion/accordion.component.scss +284 -0
- package/projects/tgo-canopy-ui/components/accordion/accordion.component.spec.ts +37 -0
- package/projects/tgo-canopy-ui/components/accordion/accordion.component.stories.ts +176 -0
- package/projects/tgo-canopy-ui/components/accordion/accordion.component.ts +97 -0
- package/projects/tgo-canopy-ui/components/alert-banner/__snapshots__/alert-banner.component.spec.ts.snap +42 -0
- package/projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.html +22 -0
- package/projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.module.ts +12 -0
- package/projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.scss +39 -0
- package/projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.spec.ts +177 -0
- package/projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.stories.ts +100 -0
- package/projects/tgo-canopy-ui/components/alert-banner/alert-banner.component.ts +130 -0
- package/projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.html +219 -0
- package/projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.module.ts +40 -0
- package/projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.scss +283 -0
- package/projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.spec.ts +238 -0
- package/projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.stories.ts +135 -0
- package/projects/tgo-canopy-ui/components/autocomplete/autocomplete.component.ts +541 -0
- package/projects/tgo-canopy-ui/components/autocomplete/autocomplete.model.ts +22 -0
- package/projects/tgo-canopy-ui/components/autocomplete/includes.pipe.spec.ts +33 -0
- package/projects/tgo-canopy-ui/components/autocomplete/includes.pipe.ts +15 -0
- package/projects/tgo-canopy-ui/components/autocomplete/transform-Item.pipe.ts +21 -0
- package/projects/tgo-canopy-ui/components/autocomplete/transform-item.pipe.spec.ts +24 -0
- package/projects/tgo-canopy-ui/components/avatar/avatar.component.html +23 -0
- package/projects/tgo-canopy-ui/components/avatar/avatar.component.module.ts +14 -0
- package/projects/tgo-canopy-ui/components/avatar/avatar.component.scss +75 -0
- package/projects/tgo-canopy-ui/components/avatar/avatar.component.spec.ts +39 -0
- package/projects/tgo-canopy-ui/components/avatar/avatar.component.stories.ts +111 -0
- package/projects/tgo-canopy-ui/components/avatar/avatar.component.ts +76 -0
- package/projects/tgo-canopy-ui/components/avatar/avatar.model.ts +13 -0
- package/projects/tgo-canopy-ui/components/badge/badge.component.html +10 -0
- package/projects/tgo-canopy-ui/components/badge/badge.component.module.ts +11 -0
- package/projects/tgo-canopy-ui/components/badge/badge.component.scss +147 -0
- package/projects/tgo-canopy-ui/components/badge/badge.component.spec.ts +57 -0
- package/projects/tgo-canopy-ui/components/badge/badge.component.stories.ts +61 -0
- package/projects/tgo-canopy-ui/components/badge/badge.component.ts +99 -0
- package/projects/tgo-canopy-ui/components/badge/badge.model.ts +40 -0
- package/projects/tgo-canopy-ui/components/button/__snapshots__/button.component.spec.ts.snap +64 -0
- package/projects/tgo-canopy-ui/components/button/button.component.html +80 -0
- package/projects/tgo-canopy-ui/components/button/button.component.module.ts +23 -0
- package/projects/tgo-canopy-ui/components/button/button.component.scss +1012 -0
- package/projects/tgo-canopy-ui/components/button/button.component.spec.ts +274 -0
- package/projects/tgo-canopy-ui/components/button/button.component.stories.ts +455 -0
- package/projects/tgo-canopy-ui/components/button/button.component.ts +393 -0
- package/projects/tgo-canopy-ui/components/button/button.model.ts +28 -0
- package/projects/tgo-canopy-ui/components/card/card.component.html +9 -0
- package/projects/tgo-canopy-ui/components/card/card.component.module.ts +11 -0
- package/projects/tgo-canopy-ui/components/card/card.component.scss +91 -0
- package/projects/tgo-canopy-ui/components/card/card.component.spec.ts +76 -0
- package/projects/tgo-canopy-ui/components/card/card.component.stories.ts +88 -0
- package/projects/tgo-canopy-ui/components/card/card.component.ts +72 -0
- package/projects/tgo-canopy-ui/components/checkbox/checkbox.component.html +23 -0
- package/projects/tgo-canopy-ui/components/checkbox/checkbox.component.module.ts +17 -0
- package/projects/tgo-canopy-ui/components/checkbox/checkbox.component.scss +233 -0
- package/projects/tgo-canopy-ui/components/checkbox/checkbox.component.spec.ts +193 -0
- package/projects/tgo-canopy-ui/components/checkbox/checkbox.component.stories.ts +122 -0
- package/projects/tgo-canopy-ui/components/checkbox/checkbox.component.ts +242 -0
- package/projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.html +16 -0
- package/projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.module.ts +18 -0
- package/projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.scss +3 -0
- package/projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.spec.ts +42 -0
- package/projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.component.ts +43 -0
- package/projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.model.ts +10 -0
- package/projects/tgo-canopy-ui/components/confirm-dialog/confirm-dialog.stories.ts +37 -0
- package/projects/tgo-canopy-ui/components/datepicker/__snapshots__/datepicker.component.spec.ts.snap +56 -0
- package/projects/tgo-canopy-ui/components/datepicker/datepicker.component.html +98 -0
- package/projects/tgo-canopy-ui/components/datepicker/datepicker.component.module.ts +33 -0
- package/projects/tgo-canopy-ui/components/datepicker/datepicker.component.scss +195 -0
- package/projects/tgo-canopy-ui/components/datepicker/datepicker.component.spec.ts +249 -0
- package/projects/tgo-canopy-ui/components/datepicker/datepicker.component.stories.ts +138 -0
- package/projects/tgo-canopy-ui/components/datepicker/datepicker.component.ts +358 -0
- package/projects/tgo-canopy-ui/components/datepicker/no-date-format.directive.spec.ts +35 -0
- package/projects/tgo-canopy-ui/components/datepicker/no-date-format.directive.ts +43 -0
- package/projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.html +5 -0
- package/projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.module.ts +12 -0
- package/projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.scss +32 -0
- package/projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.stories.ts +31 -0
- package/projects/tgo-canopy-ui/components/deprecated-paginator/deprecated-paginator.component.ts +54 -0
- package/projects/tgo-canopy-ui/components/deprecated-table/deprecated-table.component.html +113 -0
- package/projects/tgo-canopy-ui/components/deprecated-table/deprecated-table.component.module.ts +25 -0
- package/projects/tgo-canopy-ui/components/deprecated-table/deprecated-table.component.scss +188 -0
- package/projects/tgo-canopy-ui/components/deprecated-table/deprecated-table.component.stories.ts +620 -0
- package/projects/tgo-canopy-ui/components/deprecated-table/deprecated-table.component.ts +160 -0
- package/projects/tgo-canopy-ui/components/deprecated-table/deprecated-table.model.ts +51 -0
- package/projects/tgo-canopy-ui/components/deprecated-table/directives/dynamic-component.directive.ts +41 -0
- package/projects/tgo-canopy-ui/components/dialog/__snapshots__/dialog.component.spec.ts.snap +51 -0
- package/projects/tgo-canopy-ui/components/dialog/dialog.component.html +41 -0
- package/projects/tgo-canopy-ui/components/dialog/dialog.component.module.ts +15 -0
- package/projects/tgo-canopy-ui/components/dialog/dialog.component.scss +133 -0
- package/projects/tgo-canopy-ui/components/dialog/dialog.component.spec.ts +230 -0
- package/projects/tgo-canopy-ui/components/dialog/dialog.component.stories.ts +60 -0
- package/projects/tgo-canopy-ui/components/dialog/dialog.component.ts +184 -0
- package/projects/tgo-canopy-ui/components/dialog/dialog.service.spec.ts +55 -0
- package/projects/tgo-canopy-ui/components/dialog/dialog.service.ts +33 -0
- package/projects/tgo-canopy-ui/components/dialog-custom/__snapshots__/dialog-custom.component.spec.ts.snap +28 -0
- package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom +0 -0
- package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom.component.html +38 -0
- package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom.component.mdx +38 -0
- package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom.component.module.ts +11 -0
- package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom.component.scss +0 -0
- package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom.component.spec.ts +56 -0
- package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom.component.stories.ts +27 -0
- package/projects/tgo-canopy-ui/components/dialog-custom/dialog-custom.component.ts +45 -0
- package/projects/tgo-canopy-ui/components/dialog-demo/__snapshots__/dialog-demo.component.spec.ts.snap +21 -0
- package/projects/tgo-canopy-ui/components/dialog-demo/dialog-demo.component.html +4 -0
- package/projects/tgo-canopy-ui/components/dialog-demo/dialog-demo.component.mdx +28 -0
- package/projects/tgo-canopy-ui/components/dialog-demo/dialog-demo.component.module.ts +15 -0
- package/projects/tgo-canopy-ui/components/dialog-demo/dialog-demo.component.scss +12 -0
- package/projects/tgo-canopy-ui/components/dialog-demo/dialog-demo.component.spec.ts +58 -0
- package/projects/tgo-canopy-ui/components/dialog-demo/dialog-demo.component.stories.ts +30 -0
- package/projects/tgo-canopy-ui/components/dialog-demo/dialog-demo.component.ts +33 -0
- package/projects/tgo-canopy-ui/components/divider/divider.component.html +13 -0
- package/projects/tgo-canopy-ui/components/divider/divider.component.module.ts +11 -0
- package/projects/tgo-canopy-ui/components/divider/divider.component.scss +57 -0
- package/projects/tgo-canopy-ui/components/divider/divider.component.spec.ts +21 -0
- package/projects/tgo-canopy-ui/components/divider/divider.component.stories.ts +48 -0
- package/projects/tgo-canopy-ui/components/divider/divider.component.ts +54 -0
- package/projects/tgo-canopy-ui/components/dropdown/dropdown.component.html +43 -0
- package/projects/tgo-canopy-ui/components/dropdown/dropdown.component.module.ts +31 -0
- package/projects/tgo-canopy-ui/components/dropdown/dropdown.component.scss +237 -0
- package/projects/tgo-canopy-ui/components/dropdown/dropdown.component.spec.ts +104 -0
- package/projects/tgo-canopy-ui/components/dropdown/dropdown.component.stories.ts +248 -0
- package/projects/tgo-canopy-ui/components/dropdown/dropdown.component.ts +264 -0
- package/projects/tgo-canopy-ui/components/dropdown/dropdown.model.ts +5 -0
- package/projects/tgo-canopy-ui/components/elevation-shadow/elevation-shadow.component.html +3 -0
- package/projects/tgo-canopy-ui/components/elevation-shadow/elevation-shadow.component.module.ts +10 -0
- package/projects/tgo-canopy-ui/components/elevation-shadow/elevation-shadow.component.scss +41 -0
- package/projects/tgo-canopy-ui/components/elevation-shadow/elevation-shadow.component.spec.ts +39 -0
- package/projects/tgo-canopy-ui/components/elevation-shadow/elevation-shadow.component.stories.ts +59 -0
- package/projects/tgo-canopy-ui/components/elevation-shadow/elevation-shadow.component.ts +38 -0
- package/projects/tgo-canopy-ui/components/elevation-shadow/elevation-shadow.constant.ts +9 -0
- package/projects/tgo-canopy-ui/components/empty-state/empty-state.component.html +25 -0
- package/projects/tgo-canopy-ui/components/empty-state/empty-state.component.module.ts +13 -0
- package/projects/tgo-canopy-ui/components/empty-state/empty-state.component.scss +70 -0
- package/projects/tgo-canopy-ui/components/empty-state/empty-state.component.spec.ts +80 -0
- package/projects/tgo-canopy-ui/components/empty-state/empty-state.component.stories.ts +159 -0
- package/projects/tgo-canopy-ui/components/empty-state/empty-state.component.ts +174 -0
- package/projects/tgo-canopy-ui/components/field/__snapshots__/field.component.spec.ts.snap +55 -0
- package/projects/tgo-canopy-ui/components/field/field.component.html +105 -0
- package/projects/tgo-canopy-ui/components/field/field.component.module.ts +32 -0
- package/projects/tgo-canopy-ui/components/field/field.component.scss +492 -0
- package/projects/tgo-canopy-ui/components/field/field.component.spec.ts +268 -0
- package/projects/tgo-canopy-ui/components/field/field.component.stories.ts +212 -0
- package/projects/tgo-canopy-ui/components/field/field.component.ts +430 -0
- package/projects/tgo-canopy-ui/components/field/field.model.ts +11 -0
- package/projects/tgo-canopy-ui/components/file-upload/__snapshots__/file-upload.component.spec.ts.snap +59 -0
- package/projects/tgo-canopy-ui/components/file-upload/file-upload.component.html +94 -0
- package/projects/tgo-canopy-ui/components/file-upload/file-upload.component.module.ts +23 -0
- package/projects/tgo-canopy-ui/components/file-upload/file-upload.component.scss +182 -0
- package/projects/tgo-canopy-ui/components/file-upload/file-upload.component.spec.ts +142 -0
- package/projects/tgo-canopy-ui/components/file-upload/file-upload.component.stories.ts +96 -0
- package/projects/tgo-canopy-ui/components/file-upload/file-upload.component.ts +284 -0
- package/projects/tgo-canopy-ui/components/file-upload-demo/file-upload-demo.component.html +32 -0
- package/projects/tgo-canopy-ui/components/file-upload-demo/file-upload-demo.component.module.ts +14 -0
- package/projects/tgo-canopy-ui/components/file-upload-demo/file-upload-demo.component.scss +23 -0
- package/projects/tgo-canopy-ui/components/file-upload-demo/file-upload-demo.component.spec.ts +111 -0
- package/projects/tgo-canopy-ui/components/file-upload-demo/file-upload-demo.component.stories.ts +28 -0
- package/projects/tgo-canopy-ui/components/file-upload-demo/file-upload-demo.component.ts +74 -0
- package/projects/tgo-canopy-ui/components/form-demo/form-demo-component.stories.ts +41 -0
- package/projects/tgo-canopy-ui/components/form-demo/form-demo.component.html +210 -0
- package/projects/tgo-canopy-ui/components/form-demo/form-demo.component.module.ts +34 -0
- package/projects/tgo-canopy-ui/components/form-demo/form-demo.component.scss +59 -0
- package/projects/tgo-canopy-ui/components/form-demo/form-demo.component.spec.ts +127 -0
- package/projects/tgo-canopy-ui/components/form-demo/form-demo.component.ts +217 -0
- package/projects/tgo-canopy-ui/components/form-demo/form-demo.model.ts +6 -0
- package/projects/tgo-canopy-ui/components/icon/__snapshots__/icon.component.spec.ts.snap +20 -0
- package/projects/tgo-canopy-ui/components/icon/icon.component.html +1 -0
- package/projects/tgo-canopy-ui/components/icon/icon.component.module.ts +13 -0
- package/projects/tgo-canopy-ui/components/icon/icon.component.scss +66 -0
- package/projects/tgo-canopy-ui/components/icon/icon.component.spec.ts +150 -0
- package/projects/tgo-canopy-ui/components/icon/icon.component.stories.ts +68 -0
- package/projects/tgo-canopy-ui/components/icon/icon.component.ts +147 -0
- package/projects/tgo-canopy-ui/components/icon/icon.config.ts +658 -0
- package/projects/tgo-canopy-ui/components/icon/icon.model.ts +8 -0
- package/projects/tgo-canopy-ui/components/icon-label/__snapshots__/icon-label.component.spec.ts.snap +15 -0
- package/projects/tgo-canopy-ui/components/icon-label/icon-label.component.html +2 -0
- package/projects/tgo-canopy-ui/components/icon-label/icon-label.component.module.ts +12 -0
- package/projects/tgo-canopy-ui/components/icon-label/icon-label.component.scss +8 -0
- package/projects/tgo-canopy-ui/components/icon-label/icon-label.component.spec.ts +64 -0
- package/projects/tgo-canopy-ui/components/icon-label/icon-label.component.stories.ts +48 -0
- package/projects/tgo-canopy-ui/components/icon-label/icon-label.component.ts +53 -0
- package/projects/tgo-canopy-ui/components/icons-showcase/__snapshots__/icons-showcase.component.spec.ts.snap +3487 -0
- package/projects/tgo-canopy-ui/components/icons-showcase/icons-showcase.component.html +17 -0
- package/projects/tgo-canopy-ui/components/icons-showcase/icons-showcase.component.module.ts +12 -0
- package/projects/tgo-canopy-ui/components/icons-showcase/icons-showcase.component.scss +25 -0
- package/projects/tgo-canopy-ui/components/icons-showcase/icons-showcase.component.spec.ts +40 -0
- package/projects/tgo-canopy-ui/components/icons-showcase/icons-showcase.component.stories.ts +44 -0
- package/projects/tgo-canopy-ui/components/icons-showcase/icons-showcase.component.ts +43 -0
- package/projects/tgo-canopy-ui/components/login/login.component.scss +0 -0
- package/projects/tgo-canopy-ui/components/logo/logo.component.html +14 -0
- package/projects/tgo-canopy-ui/components/logo/logo.component.module.ts +10 -0
- package/projects/tgo-canopy-ui/components/logo/logo.component.scss +13 -0
- package/projects/tgo-canopy-ui/components/logo/logo.component.spec.ts +162 -0
- package/projects/tgo-canopy-ui/components/logo/logo.component.stories.ts +55 -0
- package/projects/tgo-canopy-ui/components/logo/logo.component.ts +148 -0
- package/projects/tgo-canopy-ui/components/logo/logo.model.ts +30 -0
- package/projects/tgo-canopy-ui/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.html +36 -0
- package/projects/tgo-canopy-ui/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.scss +70 -0
- package/projects/tgo-canopy-ui/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.spec.ts +58 -0
- package/projects/tgo-canopy-ui/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.ts +58 -0
- package/projects/tgo-canopy-ui/components/navbar/navbar.component.html +62 -0
- package/projects/tgo-canopy-ui/components/navbar/navbar.component.module.ts +36 -0
- package/projects/tgo-canopy-ui/components/navbar/navbar.component.scss +240 -0
- package/projects/tgo-canopy-ui/components/navbar/navbar.component.spec.ts +136 -0
- package/projects/tgo-canopy-ui/components/navbar/navbar.component.stories.ts +134 -0
- package/projects/tgo-canopy-ui/components/navbar/navbar.component.ts +206 -0
- package/projects/tgo-canopy-ui/components/navbar/navbar.model.ts +12 -0
- package/projects/tgo-canopy-ui/components/overflow-menu/__snapshots__/overflow-menu.component.spec.ts.snap +28 -0
- package/projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.html +47 -0
- package/projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.module.ts +13 -0
- package/projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.scss +98 -0
- package/projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.spec.ts +124 -0
- package/projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.stories.ts +58 -0
- package/projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.component.ts +88 -0
- package/projects/tgo-canopy-ui/components/overflow-menu/overflow-menu.model.ts +11 -0
- package/projects/tgo-canopy-ui/components/page-header/page-header.component.html +35 -0
- package/projects/tgo-canopy-ui/components/page-header/page-header.component.module.ts +12 -0
- package/projects/tgo-canopy-ui/components/page-header/page-header.component.scss +61 -0
- package/projects/tgo-canopy-ui/components/page-header/page-header.component.spec.ts +34 -0
- package/projects/tgo-canopy-ui/components/page-header/page-header.component.stories.ts +56 -0
- package/projects/tgo-canopy-ui/components/page-header/page-header.component.ts +64 -0
- package/projects/tgo-canopy-ui/components/paginator/paginator.component.html +10 -0
- package/projects/tgo-canopy-ui/components/paginator/paginator.component.module.ts +11 -0
- package/projects/tgo-canopy-ui/components/paginator/paginator.component.scss +159 -0
- package/projects/tgo-canopy-ui/components/paginator/paginator.component.spec.ts +29 -0
- package/projects/tgo-canopy-ui/components/paginator/paginator.component.stories.ts +36 -0
- package/projects/tgo-canopy-ui/components/paginator/paginator.component.ts +67 -0
- package/projects/tgo-canopy-ui/components/password-criteria/password.component.html +31 -0
- package/projects/tgo-canopy-ui/components/password-criteria/password.component.module.ts +22 -0
- package/projects/tgo-canopy-ui/components/password-criteria/password.component.scss +56 -0
- package/projects/tgo-canopy-ui/components/password-criteria/password.component.spec.ts +45 -0
- package/projects/tgo-canopy-ui/components/password-criteria/password.component.stories.ts +49 -0
- package/projects/tgo-canopy-ui/components/password-criteria/password.component.ts +106 -0
- package/projects/tgo-canopy-ui/components/password-strength/password-strength.component.html +19 -0
- package/projects/tgo-canopy-ui/components/password-strength/password-strength.component.module.ts +13 -0
- package/projects/tgo-canopy-ui/components/password-strength/password-strength.component.scss +54 -0
- package/projects/tgo-canopy-ui/components/password-strength/password-strength.component.spec.ts +40 -0
- package/projects/tgo-canopy-ui/components/password-strength/password-strength.component.stories.ts +50 -0
- package/projects/tgo-canopy-ui/components/password-strength/password-strength.component.ts +98 -0
- package/projects/tgo-canopy-ui/components/password-strength-demo/password-strength-demo.component.html +2 -0
- package/projects/tgo-canopy-ui/components/password-strength-demo/password-strength-demo.component.scss +0 -0
- package/projects/tgo-canopy-ui/components/password-strength-demo/password-strength-demo.component.spec.ts +28 -0
- package/projects/tgo-canopy-ui/components/password-strength-demo/password-strength-demo.component.stories.ts +40 -0
- package/projects/tgo-canopy-ui/components/password-strength-demo/password-strength-demo.component.ts +20 -0
- package/projects/tgo-canopy-ui/components/phone-input/join-string.pipe.spec.ts +9 -0
- package/projects/tgo-canopy-ui/components/phone-input/join-strings.pipe.ts +8 -0
- package/projects/tgo-canopy-ui/components/phone-input/phone-input.component.html +64 -0
- package/projects/tgo-canopy-ui/components/phone-input/phone-input.component.module.ts +35 -0
- package/projects/tgo-canopy-ui/components/phone-input/phone-input.component.scss +133 -0
- package/projects/tgo-canopy-ui/components/phone-input/phone-input.component.spec.ts +212 -0
- package/projects/tgo-canopy-ui/components/phone-input/phone-input.component.stories.ts +89 -0
- package/projects/tgo-canopy-ui/components/phone-input/phone-input.component.ts +427 -0
- package/projects/tgo-canopy-ui/components/phone-input/phone-input.model.ts +8 -0
- package/projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.html +9 -0
- package/projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.module.ts +12 -0
- package/projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.scss +152 -0
- package/projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.spec.ts +76 -0
- package/projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.stories.ts +48 -0
- package/projects/tgo-canopy-ui/components/progress-bar/progress-bar.component.ts +82 -0
- package/projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.html +26 -0
- package/projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.module.ts +12 -0
- package/projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.scss +41 -0
- package/projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.spec.ts +102 -0
- package/projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.stories.ts +69 -0
- package/projects/tgo-canopy-ui/components/radial-progress/radial-progress.component.ts +114 -0
- package/projects/tgo-canopy-ui/components/radial-progress/radial-progress.model.ts +13 -0
- package/projects/tgo-canopy-ui/components/radio-button/radio-button.component.html +18 -0
- package/projects/tgo-canopy-ui/components/radio-button/radio-button.component.module.ts +13 -0
- package/projects/tgo-canopy-ui/components/radio-button/radio-button.component.scss +189 -0
- package/projects/tgo-canopy-ui/components/radio-button/radio-button.component.spec.ts +139 -0
- package/projects/tgo-canopy-ui/components/radio-button/radio-button.component.stories.ts +126 -0
- package/projects/tgo-canopy-ui/components/radio-button/radio-button.component.ts +190 -0
- package/projects/tgo-canopy-ui/components/radio-button/radio-button.model.ts +4 -0
- package/projects/tgo-canopy-ui/components/rating/__snapshots__/rating.component.spec.ts.snap +47 -0
- package/projects/tgo-canopy-ui/components/rating/half-star.pipe.spec.ts +33 -0
- package/projects/tgo-canopy-ui/components/rating/half-star.pipe.ts +17 -0
- package/projects/tgo-canopy-ui/components/rating/rating.component.html +31 -0
- package/projects/tgo-canopy-ui/components/rating/rating.component.module.ts +12 -0
- package/projects/tgo-canopy-ui/components/rating/rating.component.scss +139 -0
- package/projects/tgo-canopy-ui/components/rating/rating.component.spec.ts +142 -0
- package/projects/tgo-canopy-ui/components/rating/rating.component.stories.ts +87 -0
- package/projects/tgo-canopy-ui/components/rating/rating.component.ts +97 -0
- package/projects/tgo-canopy-ui/components/scale/__snapshots__/scale.component.spec.ts.snap +42 -0
- package/projects/tgo-canopy-ui/components/scale/scale.component.html +7 -0
- package/projects/tgo-canopy-ui/components/scale/scale.component.module.ts +12 -0
- package/projects/tgo-canopy-ui/components/scale/scale.component.scss +71 -0
- package/projects/tgo-canopy-ui/components/scale/scale.component.spec.ts +125 -0
- package/projects/tgo-canopy-ui/components/scale/scale.component.stories.ts +60 -0
- package/projects/tgo-canopy-ui/components/scale/scale.component.ts +57 -0
- package/projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.html +16 -0
- package/projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.module.ts +12 -0
- package/projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.scss +86 -0
- package/projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.spec.ts +69 -0
- package/projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.stories.ts +98 -0
- package/projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.component.ts +69 -0
- package/projects/tgo-canopy-ui/components/segmented-bar/segmented-bar.model.ts +8 -0
- package/projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.html +11 -0
- package/projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.module.ts +22 -0
- package/projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.scss +67 -0
- package/projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.spec.ts +50 -0
- package/projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.stories.ts +59 -0
- package/projects/tgo-canopy-ui/components/segmented-button/segmented-button.component.ts +67 -0
- package/projects/tgo-canopy-ui/components/segmented-button/segmented-button.model.ts +8 -0
- package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.html +37 -0
- package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.module.ts +24 -0
- package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.scss +97 -0
- package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.spec.ts +176 -0
- package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.component.ts +110 -0
- package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.model.ts +12 -0
- package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.service.spec.ts +88 -0
- package/projects/tgo-canopy-ui/components/side-sheet/side-sheet.service.ts +28 -0
- package/projects/tgo-canopy-ui/components/side-sheet-demo/side-sheet-demo.component.html +5 -0
- package/projects/tgo-canopy-ui/components/side-sheet-demo/side-sheet-demo.component.scss +14 -0
- package/projects/tgo-canopy-ui/components/side-sheet-demo/side-sheet-demo.component.spec.ts +26 -0
- package/projects/tgo-canopy-ui/components/side-sheet-demo/side-sheet-demo.component.stories.ts +54 -0
- package/projects/tgo-canopy-ui/components/side-sheet-demo/side-sheet-demo.component.ts +98 -0
- package/projects/tgo-canopy-ui/components/side-sheet-demo/side-sheet-demo.module.ts +12 -0
- package/projects/tgo-canopy-ui/components/skeleton/skeleton.component.html +5 -0
- package/projects/tgo-canopy-ui/components/skeleton/skeleton.component.scss +0 -0
- package/projects/tgo-canopy-ui/components/skeleton/skeleton.component.spec.ts +75 -0
- package/projects/tgo-canopy-ui/components/skeleton/skeleton.component.stories.ts +47 -0
- package/projects/tgo-canopy-ui/components/skeleton/skeleton.component.ts +66 -0
- package/projects/tgo-canopy-ui/components/skeleton/skeleton.model.ts +3 -0
- package/projects/tgo-canopy-ui/components/slider/slider.component.html +75 -0
- package/projects/tgo-canopy-ui/components/slider/slider.component.module.ts +24 -0
- package/projects/tgo-canopy-ui/components/slider/slider.component.scss +223 -0
- package/projects/tgo-canopy-ui/components/slider/slider.component.spec.ts +103 -0
- package/projects/tgo-canopy-ui/components/slider/slider.component.stories.ts +87 -0
- package/projects/tgo-canopy-ui/components/slider/slider.component.ts +185 -0
- package/projects/tgo-canopy-ui/components/slider/slider.model.ts +4 -0
- package/projects/tgo-canopy-ui/components/snackbar/__snapshots__/snackbar.component.spec.ts.snap +44 -0
- package/projects/tgo-canopy-ui/components/snackbar/snackbar.component.html +33 -0
- package/projects/tgo-canopy-ui/components/snackbar/snackbar.component.module.ts +16 -0
- package/projects/tgo-canopy-ui/components/snackbar/snackbar.component.scss +45 -0
- package/projects/tgo-canopy-ui/components/snackbar/snackbar.component.spec.ts +214 -0
- package/projects/tgo-canopy-ui/components/snackbar/snackbar.component.stories.ts +159 -0
- package/projects/tgo-canopy-ui/components/snackbar/snackbar.component.ts +196 -0
- package/projects/tgo-canopy-ui/components/snackbar/snackbar.service.spec.ts +52 -0
- package/projects/tgo-canopy-ui/components/snackbar/snackbar.service.ts +37 -0
- package/projects/tgo-canopy-ui/components/spinner/spinner.component.html +6 -0
- package/projects/tgo-canopy-ui/components/spinner/spinner.component.scss +75 -0
- package/projects/tgo-canopy-ui/components/spinner/spinner.component.spec.ts +82 -0
- package/projects/tgo-canopy-ui/components/spinner/spinner.component.stories.ts +46 -0
- package/projects/tgo-canopy-ui/components/spinner/spinner.component.ts +59 -0
- package/projects/tgo-canopy-ui/components/spinner/spinner.module.ts +10 -0
- package/projects/tgo-canopy-ui/components/step/step.component.html +100 -0
- package/projects/tgo-canopy-ui/components/step/step.component.module.ts +11 -0
- package/projects/tgo-canopy-ui/components/step/step.component.scss +315 -0
- package/projects/tgo-canopy-ui/components/step/step.component.spec.ts +61 -0
- package/projects/tgo-canopy-ui/components/step/step.component.ts +134 -0
- package/projects/tgo-canopy-ui/components/stepper/stepper.component.html +79 -0
- package/projects/tgo-canopy-ui/components/stepper/stepper.component.module.ts +25 -0
- package/projects/tgo-canopy-ui/components/stepper/stepper.component.scss +144 -0
- package/projects/tgo-canopy-ui/components/stepper/stepper.component.spec.ts +64 -0
- package/projects/tgo-canopy-ui/components/stepper/stepper.component.stories.ts +84 -0
- package/projects/tgo-canopy-ui/components/stepper/stepper.component.ts +118 -0
- package/projects/tgo-canopy-ui/components/stepper/stepper.model.ts +10 -0
- package/projects/tgo-canopy-ui/components/table/sentence-case.pipe.ts +13 -0
- package/projects/tgo-canopy-ui/components/table/sentence-case.spec.ts +53 -0
- package/projects/tgo-canopy-ui/components/table/table.component.html +290 -0
- package/projects/tgo-canopy-ui/components/table/table.component.module.ts +35 -0
- package/projects/tgo-canopy-ui/components/table/table.component.scss +201 -0
- package/projects/tgo-canopy-ui/components/table/table.component.spec.ts +187 -0
- package/projects/tgo-canopy-ui/components/table/table.component.stories.ts +427 -0
- package/projects/tgo-canopy-ui/components/table/table.component.ts +242 -0
- package/projects/tgo-canopy-ui/components/table/table.model.ts +103 -0
- package/projects/tgo-canopy-ui/components/tabs/tab.directive.ts +33 -0
- package/projects/tgo-canopy-ui/components/tabs/tabs.component.html +19 -0
- package/projects/tgo-canopy-ui/components/tabs/tabs.component.module.ts +22 -0
- package/projects/tgo-canopy-ui/components/tabs/tabs.component.scss +234 -0
- package/projects/tgo-canopy-ui/components/tabs/tabs.component.spec.ts +85 -0
- package/projects/tgo-canopy-ui/components/tabs/tabs.component.stories.ts +73 -0
- package/projects/tgo-canopy-ui/components/tabs/tabs.component.ts +79 -0
- package/projects/tgo-canopy-ui/components/tabs/tabs.directive.spec.ts +90 -0
- package/projects/tgo-canopy-ui/components/tabs/tabs.model.ts +11 -0
- package/projects/tgo-canopy-ui/components/tag/__snapshots__/tag.component.spec.ts.snap +42 -0
- package/projects/tgo-canopy-ui/components/tag/tag.component.html +26 -0
- package/projects/tgo-canopy-ui/components/tag/tag.component.module.ts +15 -0
- package/projects/tgo-canopy-ui/components/tag/tag.component.scss +161 -0
- package/projects/tgo-canopy-ui/components/tag/tag.component.spec.ts +193 -0
- package/projects/tgo-canopy-ui/components/tag/tag.component.stories.ts +125 -0
- package/projects/tgo-canopy-ui/components/tag/tag.component.ts +213 -0
- package/projects/tgo-canopy-ui/components/toggle/toggle.component.html +24 -0
- package/projects/tgo-canopy-ui/components/toggle/toggle.component.module.ts +14 -0
- package/projects/tgo-canopy-ui/components/toggle/toggle.component.scss +202 -0
- package/projects/tgo-canopy-ui/components/toggle/toggle.component.spec.ts +197 -0
- package/projects/tgo-canopy-ui/components/toggle/toggle.component.stories.ts +97 -0
- package/projects/tgo-canopy-ui/components/toggle/toggle.component.ts +179 -0
- package/projects/tgo-canopy-ui/components/tooltip/tooltip.component.html +9 -0
- package/projects/tgo-canopy-ui/components/tooltip/tooltip.component.module.ts +10 -0
- package/projects/tgo-canopy-ui/components/tooltip/tooltip.component.spec.ts +53 -0
- package/projects/tgo-canopy-ui/components/tooltip/tooltip.component.stories.ts +235 -0
- package/projects/tgo-canopy-ui/components/tooltip/tooltip.component.ts +81 -0
- package/projects/tgo-canopy-ui/components/tooltip/tooltip.model.ts +6 -0
- package/projects/tgo-canopy-ui/components/validation-error/validation-error.component.html +29 -0
- package/projects/tgo-canopy-ui/components/validation-error/validation-error.component.scss +0 -0
- package/projects/tgo-canopy-ui/components/validation-error/validation-error.component.spec.ts +75 -0
- package/projects/tgo-canopy-ui/components/validation-error/validation-error.component.ts +53 -0
- package/projects/tgo-canopy-ui/components/validation-error/validation-error.module.ts +12 -0
- package/projects/tgo-canopy-ui/directives/digits-only.directive.spec.ts +121 -0
- package/projects/tgo-canopy-ui/directives/digits-only.directive.ts +42 -0
- package/projects/tgo-canopy-ui/directives/drag-drop.directive.spec.ts +84 -0
- package/projects/tgo-canopy-ui/directives/drag-drop.directive.ts +39 -0
- package/projects/tgo-canopy-ui/directives/ellipse-text.directive.spec.ts +57 -0
- package/projects/tgo-canopy-ui/directives/ellipse-text.directive.ts +27 -0
- package/projects/tgo-canopy-ui/directives/select-text.directive.spec.ts +54 -0
- package/projects/tgo-canopy-ui/directives/select-text.directive.ts +37 -0
- package/projects/tgo-canopy-ui/directives/step-line-width.directive.spec.ts +59 -0
- package/projects/tgo-canopy-ui/directives/step-line-width.directive.ts +31 -0
- package/projects/tgo-canopy-ui/foundations/colors/colors.component.html +4 -0
- package/projects/tgo-canopy-ui/foundations/colors/colors.component.module.ts +10 -0
- package/projects/tgo-canopy-ui/foundations/colors/colors.component.scss +318 -0
- package/projects/tgo-canopy-ui/foundations/colors/colors.component.spec.ts +47 -0
- package/projects/tgo-canopy-ui/foundations/colors/colors.component.ts +22 -0
- package/projects/tgo-canopy-ui/foundations/colors/colors.stories.ts +426 -0
- package/projects/tgo-canopy-ui/foundations/typography/typography.stories.ts +195 -0
- package/projects/tgo-canopy-ui/mocked-assets/images/some_progress.svg +4 -0
- package/projects/tgo-canopy-ui/models/colors.model.ts +88 -0
- package/projects/tgo-canopy-ui/models/screen-breakpoints.model.ts +4 -0
- package/projects/tgo-canopy-ui/pipes/data-property-getter.spec.ts +42 -0
- package/projects/tgo-canopy-ui/pipes/data-property-getter.ts +31 -0
- package/projects/tgo-canopy-ui/pipes/has-validation-error.pipe.spec.ts +32 -0
- package/projects/tgo-canopy-ui/pipes/has-validation-error.pipe.ts +20 -0
- package/projects/tgo-canopy-ui/pipes/memoize-func.pipe.spec.ts +19 -0
- package/projects/tgo-canopy-ui/pipes/memoize-func.pipe.ts +34 -0
- package/projects/tgo-canopy-ui/pipes/name-initials.pipe.spec.ts +44 -0
- package/projects/tgo-canopy-ui/pipes/name-initials.pipe.ts +18 -0
- package/projects/tgo-canopy-ui/pipes/ui-translate.pipe.spec.ts +45 -0
- package/projects/tgo-canopy-ui/pipes/ui-translate.pipe.ts +71 -0
- package/projects/tgo-canopy-ui/polyfills.ts +51 -0
- package/projects/tgo-canopy-ui/providers/is-mobile.ts +11 -0
- package/projects/tgo-canopy-ui/public-api.ts +184 -0
- package/projects/tgo-canopy-ui/services/custom-event-manager.service.spec.ts +57 -0
- package/projects/tgo-canopy-ui/services/custom-event-manager.service.ts +28 -0
- package/projects/tgo-canopy-ui/test-utils/mock-file.spec.ts +44 -0
- package/projects/tgo-canopy-ui/test-utils/mock-file.ts +24 -0
- package/projects/tgo-canopy-ui/test.ts +20 -0
- package/projects/tgo-canopy-ui/theme/_input.scss +12 -0
- package/projects/tgo-canopy-ui/utils/alert-bars.utils.spec.ts +47 -0
- package/projects/tgo-canopy-ui/utils/alert-bars.utils.ts +36 -0
- package/projects/tgo-canopy-ui/utils/autocomplete-utils.spec.ts +68 -0
- package/projects/tgo-canopy-ui/utils/autocomplete-utils.ts +66 -0
- package/projects/tgo-canopy-ui/utils/color-contrast.spec.ts +46 -0
- package/projects/tgo-canopy-ui/utils/color-contrast.ts +135 -0
- package/projects/tgo-canopy-ui/utils/localization/language.model.ts +14 -0
- package/projects/tgo-canopy-ui/utils/localization/language.service.mocks.ts +6 -0
- package/projects/tgo-canopy-ui/utils/localization/language.service.spec.ts +25 -0
- package/projects/tgo-canopy-ui/utils/localization/language.service.ts +32 -0
- package/projects/tgo-canopy-ui/utils/table.utils.spec.ts +47 -0
- package/projects/tgo-canopy-ui/utils/table.utils.ts +22 -0
- package/projects/tgo-canopy-ui/utils/transform-theme.ts +9 -0
- package/projects/tgo-canopy-ui/utils/transform.theme.spec.ts +16 -0
- package/projects/tgo-canopy-ui/utils/validators.utils.spec.ts +16 -0
- package/projects/tgo-canopy-ui/utils/validators.utils.ts +9 -0
- package/setupJest.ts +1 -0
- package/transloco.config.js +5 -0
- package/tsconfig.json +46 -0
- package/tsconfig.spec.json +17 -0
- package/tsconfig.ui.json +24 -0
- package/tsconfig.ui.prod.json +10 -0
- package/visual-tests/component-page-objects/avatar-component.ts +30 -0
- package/visual-tests/component-page-objects/badge-component.ts +33 -0
- package/visual-tests/component-page-objects/base-component.ts +44 -0
- package/visual-tests/component-page-objects/checkbox-component.ts +38 -0
- package/visual-tests/component-page-objects/icon-component.ts +32 -0
- package/visual-tests/component-tests/avatar.spec.ts +91 -0
- package/visual-tests/component-tests/avatar.spec.ts-snapshots/Avatar-Component-Visual-Tests-should-allow-edit-for-the-avatar-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/avatar.spec.ts-snapshots/Avatar-Component-Visual-Tests-should-display-large-avatar-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/avatar.spec.ts-snapshots/Avatar-Component-Visual-Tests-should-display-medium-avatar-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/avatar.spec.ts-snapshots/Avatar-Component-Visual-Tests-should-display-small-avatar-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/avatar.spec.ts-snapshots/Avatar-Component-Visual-Tests-should-display-the-avatar-correctly-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/avatar.spec.ts-snapshots/Avatar-Component-Visual-Tests-should-display-the-avatar-image-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/avatar.spec.ts-snapshots/Avatar-Component-Visual-Tests-should-emit-edit-click-event-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/badge.spec.ts +56 -0
- package/visual-tests/component-tests/badge.spec.ts-snapshots/Badge-Component-Visual-Tests-should-display-notification-badge-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/badge.spec.ts-snapshots/Badge-Component-Visual-Tests-should-display-secondary-badge-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/badge.spec.ts-snapshots/Badge-Component-Visual-Tests-should-display-the-badge-correctly-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/badge.spec.ts-snapshots/Badge-Component-Visual-Tests-should-display-the-badge-with-icon-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/checkbox.spec.ts +151 -0
- package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-checked-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-correctly-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-disabled-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-error-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-indeterminate-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-multiple-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-multiple-error-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-set-company-color-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/checkbox.spec.ts-snapshots/Checkbox-Component-Visual-Tests-should-display-the-checkbox-without-lable-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/icon.spec.ts +41 -0
- package/visual-tests/component-tests/icon.spec.ts-snapshots/Icon-Component-Visual-Tests-should-display-red-the-icon-color-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/icon.spec.ts-snapshots/Icon-Component-Visual-Tests-should-display-the-icon-correctly-1-chromium-linux.png +0 -0
- package/visual-tests/component-tests/icon.spec.ts-snapshots/Icon-Component-Visual-Tests-should-display-the-icon-small-size-1-chromium-linux.png +0 -0
- package/visual-tests/playwright.config.ts +45 -0
- package/visual-tests/runConfig.ts +1 -0
- package/components/accordion/accordion.component.d.ts +0 -76
- package/components/accordion/accordion.component.module.d.ts +0 -12
- package/components/alert-banner/alert-banner.component.d.ts +0 -89
- package/components/alert-banner/alert-banner.component.module.d.ts +0 -10
- package/components/autocomplete/autocomplete.component.d.ts +0 -211
- package/components/autocomplete/autocomplete.component.module.d.ts +0 -22
- package/components/autocomplete/autocomplete.model.d.ts +0 -18
- package/components/autocomplete/includes.pipe.d.ts +0 -12
- package/components/autocomplete/transform-Item.pipe.d.ts +0 -11
- package/components/avatar/avatar.component.d.ts +0 -58
- package/components/avatar/avatar.component.module.d.ts +0 -12
- package/components/avatar/avatar.model.d.ts +0 -7
- package/components/badge/badge.component.d.ts +0 -58
- package/components/badge/badge.component.module.d.ts +0 -9
- package/components/badge/badge.model.d.ts +0 -27
- package/components/button/button.component.d.ts +0 -190
- package/components/button/button.component.module.d.ts +0 -13
- package/components/button/button.model.d.ts +0 -14
- package/components/card/card.component.d.ts +0 -46
- package/components/card/card.component.module.d.ts +0 -9
- package/components/checkbox/checkbox.component.d.ts +0 -147
- package/components/checkbox/checkbox.component.module.d.ts +0 -15
- package/components/confirm-dialog/confirm-dialog.component.d.ts +0 -25
- package/components/confirm-dialog/confirm-dialog.component.module.d.ts +0 -12
- package/components/confirm-dialog/confirm-dialog.model.d.ts +0 -9
- package/components/datepicker/datepicker.component.d.ts +0 -205
- package/components/datepicker/datepicker.component.module.d.ts +0 -18
- package/components/datepicker/no-date-format.directive.d.ts +0 -11
- package/components/deprecated-paginator/deprecated-paginator.component.d.ts +0 -38
- package/components/deprecated-paginator/deprecated-paginator.component.module.d.ts +0 -9
- package/components/deprecated-table/deprecated-table.component.d.ts +0 -91
- package/components/deprecated-table/deprecated-table.component.module.d.ts +0 -14
- package/components/deprecated-table/deprecated-table.model.d.ts +0 -45
- package/components/deprecated-table/directives/dynamic-component.directive.d.ts +0 -13
- package/components/dialog/dialog.component.d.ts +0 -108
- package/components/dialog/dialog.component.module.d.ts +0 -11
- package/components/dialog/dialog.service.d.ts +0 -13
- package/components/divider/divider.component.d.ts +0 -39
- package/components/divider/divider.component.module.d.ts +0 -9
- package/components/dropdown/dropdown.component.d.ts +0 -157
- package/components/dropdown/dropdown.component.module.d.ts +0 -17
- package/components/dropdown/dropdown.model.d.ts +0 -5
- package/components/elevation-shadow/elevation-shadow.component.d.ts +0 -26
- package/components/elevation-shadow/elevation-shadow.component.module.d.ts +0 -8
- package/components/elevation-shadow/elevation-shadow.constant.d.ts +0 -8
- package/components/empty-state/empty-state.component.d.ts +0 -124
- package/components/empty-state/empty-state.component.module.d.ts +0 -11
- package/components/field/field.component.d.ts +0 -238
- package/components/field/field.component.module.d.ts +0 -18
- package/components/field/field.model.d.ts +0 -1
- package/components/file-upload/file-upload.component.d.ts +0 -124
- package/components/file-upload/file-upload.component.module.d.ts +0 -14
- package/components/icon/icon.component.d.ts +0 -65
- package/components/icon/icon.component.module.d.ts +0 -10
- package/components/icon/icon.config.d.ts +0 -10
- package/components/icon/icon.model.d.ts +0 -7
- package/components/icon-label/icon-label.component.d.ts +0 -39
- package/components/icon-label/icon-label.component.module.d.ts +0 -9
- package/components/logo/logo.component.d.ts +0 -57
- package/components/logo/logo.component.module.d.ts +0 -8
- package/components/logo/logo.model.d.ts +0 -29
- package/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.d.ts +0 -22
- package/components/navbar/navbar.component.d.ts +0 -113
- package/components/navbar/navbar.component.module.d.ts +0 -20
- package/components/navbar/navbar.model.d.ts +0 -10
- package/components/overflow-menu/overflow-menu.component.d.ts +0 -55
- package/components/overflow-menu/overflow-menu.component.module.d.ts +0 -11
- package/components/overflow-menu/overflow-menu.model.d.ts +0 -10
- package/components/page-header/page-header.component.d.ts +0 -45
- package/components/page-header/page-header.component.module.d.ts +0 -10
- package/components/paginator/paginator.component.d.ts +0 -49
- package/components/paginator/paginator.component.module.d.ts +0 -9
- package/components/password-criteria/password.component.d.ts +0 -49
- package/components/password-criteria/password.component.module.d.ts +0 -13
- package/components/password-strength/password-strength.component.d.ts +0 -52
- package/components/password-strength/password-strength.component.module.d.ts +0 -11
- package/components/phone-input/join-strings.pipe.d.ts +0 -7
- package/components/phone-input/phone-input.component.d.ts +0 -154
- package/components/phone-input/phone-input.component.module.d.ts +0 -20
- package/components/phone-input/phone-input.model.d.ts +0 -8
- package/components/progress-bar/progress-bar.component.d.ts +0 -52
- package/components/progress-bar/progress-bar.component.module.d.ts +0 -9
- package/components/radial-progress/radial-progress.component.d.ts +0 -68
- package/components/radial-progress/radial-progress.component.module.d.ts +0 -10
- package/components/radial-progress/radial-progress.model.d.ts +0 -10
- package/components/radio-button/radio-button.component.d.ts +0 -116
- package/components/radio-button/radio-button.component.module.d.ts +0 -11
- package/components/radio-button/radio-button.model.d.ts +0 -4
- package/components/rating/half-star.pipe.d.ts +0 -14
- package/components/rating/rating.component.d.ts +0 -64
- package/components/rating/rating.component.module.d.ts +0 -10
- package/components/scale/scale.component.d.ts +0 -34
- package/components/scale/scale.component.module.d.ts +0 -8
- package/components/segmented-bar/segmented-bar.component.d.ts +0 -54
- package/components/segmented-bar/segmented-bar.component.module.d.ts +0 -10
- package/components/segmented-bar/segmented-bar.model.d.ts +0 -7
- package/components/segmented-button/segmented-button.component.d.ts +0 -23
- package/components/segmented-button/segmented-button.component.module.d.ts +0 -10
- package/components/segmented-button/segmented-button.model.d.ts +0 -6
- package/components/side-sheet/side-sheet.component.d.ts +0 -49
- package/components/side-sheet/side-sheet.component.module.d.ts +0 -14
- package/components/side-sheet/side-sheet.model.d.ts +0 -10
- package/components/side-sheet/side-sheet.service.d.ts +0 -14
- package/components/skeleton/skeleton.component.d.ts +0 -26
- package/components/skeleton/skeleton.model.d.ts +0 -2
- package/components/slider/slider.component.d.ts +0 -103
- package/components/slider/slider.component.module.d.ts +0 -14
- package/components/slider/slider.model.d.ts +0 -4
- package/components/snackbar/snackbar.component.d.ts +0 -111
- package/components/snackbar/snackbar.component.module.d.ts +0 -12
- package/components/snackbar/snackbar.service.d.ts +0 -12
- package/components/spinner/spinner.component.d.ts +0 -38
- package/components/spinner/spinner.module.d.ts +0 -8
- package/components/step/step.component.d.ts +0 -104
- package/components/step/step.component.module.d.ts +0 -9
- package/components/stepper/stepper.component.d.ts +0 -76
- package/components/stepper/stepper.component.module.d.ts +0 -15
- package/components/stepper/stepper.model.d.ts +0 -9
- package/components/table/sentence-case.pipe.d.ts +0 -7
- package/components/table/table.component.d.ts +0 -93
- package/components/table/table.component.module.d.ts +0 -19
- package/components/table/table.model.d.ts +0 -92
- package/components/tabs/tab.directive.d.ts +0 -18
- package/components/tabs/tabs.component.d.ts +0 -59
- package/components/tabs/tabs.component.module.d.ts +0 -11
- package/components/tabs/tabs.model.d.ts +0 -9
- package/components/tag/tag.component.d.ts +0 -129
- package/components/tag/tag.component.module.d.ts +0 -12
- package/components/toggle/toggle.component.d.ts +0 -105
- package/components/toggle/toggle.component.module.d.ts +0 -12
- package/components/tooltip/tooltip.component.d.ts +0 -44
- package/components/tooltip/tooltip.component.module.d.ts +0 -8
- package/components/tooltip/tooltip.model.d.ts +0 -6
- package/components/validation-error/validation-error.component.d.ts +0 -27
- package/components/validation-error/validation-error.module.d.ts +0 -10
- package/directives/digits-only.directive.d.ts +0 -15
- package/directives/drag-drop.directive.d.ts +0 -12
- package/directives/ellipse-text.directive.d.ts +0 -16
- package/directives/select-text.directive.d.ts +0 -19
- package/directives/step-line-width.directive.d.ts +0 -15
- package/esm2022/assets/i18n/da-dk.json +0 -77
- package/esm2022/assets/i18n/de.json +0 -77
- package/esm2022/assets/i18n/en.json +0 -100
- package/esm2022/assets/i18n/es.json +0 -77
- package/esm2022/assets/i18n/fr.json +0 -77
- package/esm2022/assets/i18n/it-it.json +0 -77
- package/esm2022/assets/i18n/ja-jp.json +0 -77
- package/esm2022/assets/i18n/nb-no.json +0 -77
- package/esm2022/assets/i18n/nl.json +0 -77
- package/esm2022/assets/i18n/pl-pl.json +0 -77
- package/esm2022/assets/i18n/pt-br.json +0 -77
- package/esm2022/assets/i18n/sv-se.json +0 -77
- package/esm2022/components/accordion/accordion.component.mjs +0 -105
- package/esm2022/components/accordion/accordion.component.module.mjs +0 -40
- package/esm2022/components/accordion/accordion.model.mjs +0 -2
- package/esm2022/components/alert-banner/alert-banner.component.mjs +0 -127
- package/esm2022/components/alert-banner/alert-banner.component.module.mjs +0 -20
- package/esm2022/components/alert-banner/alert-banner.model.mjs +0 -2
- package/esm2022/components/autocomplete/autocomplete.component.mjs +0 -506
- package/esm2022/components/autocomplete/autocomplete.component.module.mjs +0 -70
- package/esm2022/components/autocomplete/autocomplete.model.mjs +0 -22
- package/esm2022/components/autocomplete/includes.pipe.mjs +0 -21
- package/esm2022/components/autocomplete/transform-Item.pipe.mjs +0 -29
- package/esm2022/components/avatar/avatar.component.mjs +0 -91
- package/esm2022/components/avatar/avatar.component.module.mjs +0 -22
- package/esm2022/components/avatar/avatar.model.mjs +0 -12
- package/esm2022/components/badge/badge.component.mjs +0 -102
- package/esm2022/components/badge/badge.component.module.mjs +0 -19
- package/esm2022/components/badge/badge.model.mjs +0 -28
- package/esm2022/components/button/button.component.mjs +0 -352
- package/esm2022/components/button/button.component.module.mjs +0 -41
- package/esm2022/components/button/button.model.mjs +0 -2
- package/esm2022/components/card/card.component.mjs +0 -75
- package/esm2022/components/card/card.component.module.mjs +0 -19
- package/esm2022/components/card/card.model.mjs +0 -2
- package/esm2022/components/checkbox/checkbox.component.mjs +0 -228
- package/esm2022/components/checkbox/checkbox.component.module.mjs +0 -25
- package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +0 -48
- package/esm2022/components/confirm-dialog/confirm-dialog.component.module.mjs +0 -29
- package/esm2022/components/confirm-dialog/confirm-dialog.model.mjs +0 -2
- package/esm2022/components/datepicker/datepicker.component.mjs +0 -302
- package/esm2022/components/datepicker/datepicker.component.module.mjs +0 -60
- package/esm2022/components/datepicker/no-date-format.directive.mjs +0 -56
- package/esm2022/components/deprecated-paginator/deprecated-paginator.component.mjs +0 -55
- package/esm2022/components/deprecated-paginator/deprecated-paginator.component.module.mjs +0 -20
- package/esm2022/components/deprecated-table/deprecated-table.component.mjs +0 -158
- package/esm2022/components/deprecated-table/deprecated-table.component.module.mjs +0 -43
- package/esm2022/components/deprecated-table/deprecated-table.model.mjs +0 -13
- package/esm2022/components/deprecated-table/directives/dynamic-component.directive.mjs +0 -40
- package/esm2022/components/dialog/dialog.component.mjs +0 -193
- package/esm2022/components/dialog/dialog.component.module.mjs +0 -23
- package/esm2022/components/dialog/dialog.service.mjs +0 -32
- package/esm2022/components/divider/divider.component.mjs +0 -65
- package/esm2022/components/divider/divider.component.module.mjs +0 -19
- package/esm2022/components/divider/divider.model.mjs +0 -2
- package/esm2022/components/dropdown/dropdown.component.mjs +0 -228
- package/esm2022/components/dropdown/dropdown.component.module.mjs +0 -57
- package/esm2022/components/dropdown/dropdown.model.mjs +0 -2
- package/esm2022/components/elevation-shadow/elevation-shadow.component.mjs +0 -45
- package/esm2022/components/elevation-shadow/elevation-shadow.component.module.mjs +0 -18
- package/esm2022/components/elevation-shadow/elevation-shadow.constant.mjs +0 -9
- package/esm2022/components/empty-state/empty-state.component.mjs +0 -195
- package/esm2022/components/empty-state/empty-state.component.module.mjs +0 -21
- package/esm2022/components/empty-state/empty-state.model.mjs +0 -2
- package/esm2022/components/field/field.component.mjs +0 -409
- package/esm2022/components/field/field.component.module.mjs +0 -58
- package/esm2022/components/field/field.model.mjs +0 -2
- package/esm2022/components/file-upload/file-upload.component.mjs +0 -271
- package/esm2022/components/file-upload/file-upload.component.module.mjs +0 -40
- package/esm2022/components/icon/icon.component.mjs +0 -127
- package/esm2022/components/icon/icon.component.module.mjs +0 -21
- package/esm2022/components/icon/icon.config.mjs +0 -657
- package/esm2022/components/icon/icon.model.mjs +0 -2
- package/esm2022/components/icon-label/icon-label.component.mjs +0 -53
- package/esm2022/components/icon-label/icon-label.component.module.mjs +0 -20
- package/esm2022/components/logo/logo.component.mjs +0 -149
- package/esm2022/components/logo/logo.component.module.mjs +0 -18
- package/esm2022/components/logo/logo.model.mjs +0 -32
- package/esm2022/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.mjs +0 -75
- package/esm2022/components/navbar/navbar.component.mjs +0 -200
- package/esm2022/components/navbar/navbar.component.module.mjs +0 -67
- package/esm2022/components/navbar/navbar.model.mjs +0 -2
- package/esm2022/components/overflow-menu/overflow-menu.component.mjs +0 -73
- package/esm2022/components/overflow-menu/overflow-menu.component.module.mjs +0 -21
- package/esm2022/components/overflow-menu/overflow-menu.model.mjs +0 -2
- package/esm2022/components/page-header/page-header.component.mjs +0 -81
- package/esm2022/components/page-header/page-header.component.module.mjs +0 -20
- package/esm2022/components/paginator/paginator.component.mjs +0 -76
- package/esm2022/components/paginator/paginator.component.module.mjs +0 -19
- package/esm2022/components/password-criteria/password.component.mjs +0 -115
- package/esm2022/components/password-criteria/password.component.module.mjs +0 -39
- package/esm2022/components/password-strength/password-strength.component.mjs +0 -103
- package/esm2022/components/password-strength/password-strength.component.module.mjs +0 -21
- package/esm2022/components/phone-input/join-strings.pipe.mjs +0 -14
- package/esm2022/components/phone-input/phone-input.component.mjs +0 -363
- package/esm2022/components/phone-input/phone-input.component.module.mjs +0 -63
- package/esm2022/components/phone-input/phone-input.model.mjs +0 -2
- package/esm2022/components/progress-bar/progress-bar.component.mjs +0 -74
- package/esm2022/components/progress-bar/progress-bar.component.module.mjs +0 -20
- package/esm2022/components/radial-progress/radial-progress.component.mjs +0 -106
- package/esm2022/components/radial-progress/radial-progress.component.module.mjs +0 -20
- package/esm2022/components/radial-progress/radial-progress.model.mjs +0 -11
- package/esm2022/components/radio-button/radio-button.component.mjs +0 -176
- package/esm2022/components/radio-button/radio-button.component.module.mjs +0 -21
- package/esm2022/components/radio-button/radio-button.model.mjs +0 -2
- package/esm2022/components/rating/half-star.pipe.mjs +0 -23
- package/esm2022/components/rating/rating.component.mjs +0 -92
- package/esm2022/components/rating/rating.component.module.mjs +0 -20
- package/esm2022/components/scale/scale.component.mjs +0 -58
- package/esm2022/components/scale/scale.component.module.mjs +0 -18
- package/esm2022/components/segmented-bar/segmented-bar.component.mjs +0 -75
- package/esm2022/components/segmented-bar/segmented-bar.component.module.mjs +0 -20
- package/esm2022/components/segmented-bar/segmented-bar.model.mjs +0 -2
- package/esm2022/components/segmented-button/segmented-button.component.mjs +0 -53
- package/esm2022/components/segmented-button/segmented-button.component.module.mjs +0 -32
- package/esm2022/components/segmented-button/segmented-button.model.mjs +0 -2
- package/esm2022/components/side-sheet/side-sheet.component.mjs +0 -109
- package/esm2022/components/side-sheet/side-sheet.component.module.mjs +0 -43
- package/esm2022/components/side-sheet/side-sheet.model.mjs +0 -2
- package/esm2022/components/side-sheet/side-sheet.service.mjs +0 -31
- package/esm2022/components/skeleton/skeleton.component.mjs +0 -71
- package/esm2022/components/skeleton/skeleton.model.mjs +0 -2
- package/esm2022/components/slider/slider.component.mjs +0 -191
- package/esm2022/components/slider/slider.component.module.mjs +0 -43
- package/esm2022/components/slider/slider.model.mjs +0 -2
- package/esm2022/components/snackbar/snackbar.component.mjs +0 -208
- package/esm2022/components/snackbar/snackbar.component.module.mjs +0 -24
- package/esm2022/components/snackbar/snackbar.model.mjs +0 -2
- package/esm2022/components/snackbar/snackbar.service.mjs +0 -41
- package/esm2022/components/spinner/spinner.component.mjs +0 -62
- package/esm2022/components/spinner/spinner.model.mjs +0 -2
- package/esm2022/components/spinner/spinner.module.mjs +0 -18
- package/esm2022/components/step/step.component.mjs +0 -110
- package/esm2022/components/step/step.component.module.mjs +0 -19
- package/esm2022/components/stepper/stepper.component.mjs +0 -124
- package/esm2022/components/stepper/stepper.component.module.mjs +0 -44
- package/esm2022/components/stepper/stepper.model.mjs +0 -2
- package/esm2022/components/table/sentence-case.pipe.mjs +0 -19
- package/esm2022/components/table/table.component.mjs +0 -220
- package/esm2022/components/table/table.component.module.mjs +0 -58
- package/esm2022/components/table/table.model.mjs +0 -13
- package/esm2022/components/tabs/tab.directive.mjs +0 -42
- package/esm2022/components/tabs/tabs.component.mjs +0 -99
- package/esm2022/components/tabs/tabs.component.module.mjs +0 -33
- package/esm2022/components/tabs/tabs.model.mjs +0 -2
- package/esm2022/components/tag/tag.component.mjs +0 -201
- package/esm2022/components/tag/tag.component.module.mjs +0 -23
- package/esm2022/components/tag/tag.model.mjs +0 -2
- package/esm2022/components/toggle/toggle.component.mjs +0 -169
- package/esm2022/components/toggle/toggle.component.module.mjs +0 -22
- package/esm2022/components/toggle/toggle.model.mjs +0 -2
- package/esm2022/components/tooltip/tooltip.component.mjs +0 -79
- package/esm2022/components/tooltip/tooltip.component.module.mjs +0 -18
- package/esm2022/components/tooltip/tooltip.model.mjs +0 -8
- package/esm2022/components/validation-error/validation-error.component.mjs +0 -59
- package/esm2022/components/validation-error/validation-error.model.mjs +0 -2
- package/esm2022/components/validation-error/validation-error.module.mjs +0 -20
- package/esm2022/directives/digits-only.directive.mjs +0 -52
- package/esm2022/directives/drag-drop.directive.mjs +0 -55
- package/esm2022/directives/ellipse-text.directive.mjs +0 -37
- package/esm2022/directives/select-text.directive.mjs +0 -41
- package/esm2022/directives/step-line-width.directive.mjs +0 -38
- package/esm2022/models/application-theme.model.mjs +0 -2
- package/esm2022/models/colors.model.mjs +0 -78
- package/esm2022/models/screen-breakpoints.model.mjs +0 -6
- package/esm2022/pipes/data-property-getter.mjs +0 -33
- package/esm2022/pipes/has-validation-error.pipe.mjs +0 -27
- package/esm2022/pipes/name-initials.pipe.mjs +0 -25
- package/esm2022/pipes/ui-translate.pipe.mjs +0 -76
- package/esm2022/providers/is-mobile.mjs +0 -11
- package/esm2022/public-api.mjs +0 -184
- package/esm2022/testgorilla-tgo-ui.mjs +0 -5
- package/esm2022/utils/alert-bar.model.mjs +0 -2
- package/esm2022/utils/alert-bars.utils.mjs +0 -33
- package/esm2022/utils/autocomplete-utils.mjs +0 -61
- package/esm2022/utils/color-contrast.mjs +0 -131
- package/esm2022/utils/localization/language.model.mjs +0 -16
- package/esm2022/utils/localization/language.service.mjs +0 -33
- package/esm2022/utils/table.utils.mjs +0 -19
- package/fesm2022/testgorilla-tgo-ui.mjs +0 -11103
- package/fesm2022/testgorilla-tgo-ui.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/models/colors.model.d.ts +0 -63
- package/models/screen-breakpoints.model.d.ts +0 -4
- package/pipes/data-property-getter.d.ts +0 -8
- package/pipes/has-validation-error.pipe.d.ts +0 -15
- package/pipes/name-initials.pipe.d.ts +0 -7
- package/pipes/ui-translate.pipe.d.ts +0 -28
- package/providers/is-mobile.d.ts +0 -2
- package/public-api.d.ts +0 -130
- package/utils/alert-bars.utils.d.ts +0 -7
- package/utils/autocomplete-utils.d.ts +0 -11
- package/utils/color-contrast.d.ts +0 -28
- package/utils/localization/language.model.d.ts +0 -14
- package/utils/localization/language.service.d.ts +0 -16
- package/utils/table.utils.d.ts +0 -6
- /package/{components/accordion/accordion.model.d.ts → projects/tgo-canopy-ui/components/accordion/accordion.model.ts} +0 -0
- /package/{components/alert-banner/alert-banner.model.d.ts → projects/tgo-canopy-ui/components/alert-banner/alert-banner.model.ts} +0 -0
- /package/{components/card/card.model.d.ts → projects/tgo-canopy-ui/components/card/card.model.ts} +0 -0
- /package/{components/divider/divider.model.d.ts → projects/tgo-canopy-ui/components/divider/divider.model.ts} +0 -0
- /package/{components/empty-state/empty-state.model.d.ts → projects/tgo-canopy-ui/components/empty-state/empty-state.model.ts} +0 -0
- /package/{components/snackbar/snackbar.model.d.ts → projects/tgo-canopy-ui/components/snackbar/snackbar.model.ts} +0 -0
- /package/{components/spinner/spinner.model.d.ts → projects/tgo-canopy-ui/components/spinner/spinner.model.ts} +0 -0
- /package/{components/tag/tag.model.d.ts → projects/tgo-canopy-ui/components/tag/tag.model.ts} +0 -0
- /package/{components/toggle/toggle.model.d.ts → projects/tgo-canopy-ui/components/toggle/toggle.model.ts} +0 -0
- /package/{components/validation-error/validation-error.model.d.ts → projects/tgo-canopy-ui/components/validation-error/validation-error.model.ts} +0 -0
- /package/{models/application-theme.model.d.ts → projects/tgo-canopy-ui/models/application-theme.model.ts} +0 -0
- /package/{utils/alert-bar.model.d.ts → projects/tgo-canopy-ui/utils/alert-bar.model.ts} +0 -0
|
@@ -1,506 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Inject, Input, Optional, Output, PLATFORM_ID, Self, ViewChild, } from '@angular/core';
|
|
2
|
-
import { map, ReplaySubject, startWith } from 'rxjs';
|
|
3
|
-
import { AutocompleteUtils } from '../../utils/autocomplete-utils';
|
|
4
|
-
import { Autocomplete, DropdownVariation, Padding, Timeout } from './autocomplete.model';
|
|
5
|
-
import { LanguageService } from '../../utils/localization/language.service';
|
|
6
|
-
import { isPlatformBrowser } from '@angular/common';
|
|
7
|
-
import { CdkVirtualScrollViewport } from "@angular/cdk/scrolling";
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/platform-browser";
|
|
10
|
-
import * as i2 from "@angular/forms";
|
|
11
|
-
import * as i3 from "@angular/common";
|
|
12
|
-
import * as i4 from "@angular/material/form-field";
|
|
13
|
-
import * as i5 from "@angular/material/autocomplete";
|
|
14
|
-
import * as i6 from "@angular/material/core";
|
|
15
|
-
import * as i7 from "@angular/material/input";
|
|
16
|
-
import * as i8 from "../tag/tag.component";
|
|
17
|
-
import * as i9 from "../icon/icon.component";
|
|
18
|
-
import * as i10 from "../validation-error/validation-error.component";
|
|
19
|
-
import * as i11 from "../../directives/select-text.directive";
|
|
20
|
-
import * as i12 from "../../pipes/ui-translate.pipe";
|
|
21
|
-
import * as i13 from "../../pipes/has-validation-error.pipe";
|
|
22
|
-
import * as i14 from "./transform-Item.pipe";
|
|
23
|
-
import * as i15 from "./includes.pipe";
|
|
24
|
-
// eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle
|
|
25
|
-
export class AutocompleteComponent {
|
|
26
|
-
/**
|
|
27
|
-
* @property value
|
|
28
|
-
* @description The selected value(s) in the autocomplete.
|
|
29
|
-
* @memberof AutocompleteComponent
|
|
30
|
-
*/
|
|
31
|
-
set itemValue(v) {
|
|
32
|
-
this.value = AutocompleteUtils.isArray(v) ? v : v ? [v] : [];
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Input field errors
|
|
36
|
-
*
|
|
37
|
-
* @type {string[]}
|
|
38
|
-
* @memberof AutocompleteComponent
|
|
39
|
-
*/
|
|
40
|
-
set errors(errors) {
|
|
41
|
-
this.safeErrors = errors?.filter(Boolean).map(error => this.domSanitizer.bypassSecurityTrustHtml(error));
|
|
42
|
-
}
|
|
43
|
-
constructor(defaultAppTheme, cdr, domSanitizer, ngControl, renderer2, platformId) {
|
|
44
|
-
this.defaultAppTheme = defaultAppTheme;
|
|
45
|
-
this.cdr = cdr;
|
|
46
|
-
this.domSanitizer = domSanitizer;
|
|
47
|
-
this.ngControl = ngControl;
|
|
48
|
-
this.renderer2 = renderer2;
|
|
49
|
-
this.platformId = platformId;
|
|
50
|
-
/**
|
|
51
|
-
* @property itemsList
|
|
52
|
-
* @description The list of items to display in the autocomplete.
|
|
53
|
-
* @memberof AutocompleteComponent
|
|
54
|
-
*/
|
|
55
|
-
this.itemsList = [];
|
|
56
|
-
/**
|
|
57
|
-
* @property suggestionsList
|
|
58
|
-
* @description The list of suggestions to display in the autocomplete.
|
|
59
|
-
* @memberof AutocompleteComponent
|
|
60
|
-
*/
|
|
61
|
-
this.suggestionsList = [];
|
|
62
|
-
/**
|
|
63
|
-
* @property disabled
|
|
64
|
-
* @description If `true`, the autocomplete is disabled.
|
|
65
|
-
* @memberof AutocompleteComponent
|
|
66
|
-
*/
|
|
67
|
-
this.disabled = false;
|
|
68
|
-
/**
|
|
69
|
-
* @property allowAdd
|
|
70
|
-
* @description If `true`, allows adding new values to the autocomplete.
|
|
71
|
-
* @memberof AutocompleteComponent
|
|
72
|
-
*/
|
|
73
|
-
this.allowAdd = true;
|
|
74
|
-
/**
|
|
75
|
-
* @property textField
|
|
76
|
-
* @description The field to be used as the display text in the autocomplete.
|
|
77
|
-
* @memberof AutocompleteComponent
|
|
78
|
-
*/
|
|
79
|
-
this.textField = '';
|
|
80
|
-
/**
|
|
81
|
-
* @property valueField
|
|
82
|
-
* @description The field to be used as the value in the autocomplete.
|
|
83
|
-
* @memberof AutocompleteComponent
|
|
84
|
-
*/
|
|
85
|
-
this.valueField = '';
|
|
86
|
-
/**
|
|
87
|
-
* @property label
|
|
88
|
-
* @description The label for the autocomplete input.
|
|
89
|
-
* @memberof AutocompleteComponent
|
|
90
|
-
*/
|
|
91
|
-
this.label = '';
|
|
92
|
-
/**
|
|
93
|
-
* @property type
|
|
94
|
-
* @description The type of the autocomplete ('single', 'multi', etc.).
|
|
95
|
-
* @memberof AutocompleteComponent
|
|
96
|
-
*/
|
|
97
|
-
this.type = 'multi';
|
|
98
|
-
/**
|
|
99
|
-
* @property minCharactersSearch
|
|
100
|
-
* @description The minimum characters to trigger search.
|
|
101
|
-
* @memberof AutocompleteComponent
|
|
102
|
-
*/
|
|
103
|
-
this.minCharactersSearch = 3;
|
|
104
|
-
/**
|
|
105
|
-
* @property variant
|
|
106
|
-
* @description The variant of Autocomplete
|
|
107
|
-
* @memberof AutocompleteComponent
|
|
108
|
-
*/
|
|
109
|
-
this.variant = DropdownVariation.AUTOCOMPLETE;
|
|
110
|
-
/**
|
|
111
|
-
* The language to be used
|
|
112
|
-
* @property language
|
|
113
|
-
* @type {Language}
|
|
114
|
-
* @memberof AutocompleteComponent
|
|
115
|
-
*/
|
|
116
|
-
this.language = LanguageService.defaultLanguage;
|
|
117
|
-
/**
|
|
118
|
-
* Show reserved content below form field
|
|
119
|
-
* @property showBottomContent
|
|
120
|
-
* @type {boolean}
|
|
121
|
-
* @memberof AutocompleteComponent
|
|
122
|
-
*/
|
|
123
|
-
this.showBottomContent = true;
|
|
124
|
-
/**
|
|
125
|
-
* Return full object if true
|
|
126
|
-
* @property valuePrimitive
|
|
127
|
-
* @type {boolean}
|
|
128
|
-
* @memberof AutocompleteComponent
|
|
129
|
-
*/
|
|
130
|
-
this.valuePrimitive = false;
|
|
131
|
-
/**
|
|
132
|
-
* Indicator of the autocomplete width
|
|
133
|
-
* @property fullWidth
|
|
134
|
-
* @type {boolean}
|
|
135
|
-
* @memberof AutocompleteComponent
|
|
136
|
-
*/
|
|
137
|
-
this.fullWidth = false;
|
|
138
|
-
/**
|
|
139
|
-
*
|
|
140
|
-
* Defines the application theme
|
|
141
|
-
*
|
|
142
|
-
* @type {ApplicationTheme}
|
|
143
|
-
* @memberof AutocompleteComponent
|
|
144
|
-
*/
|
|
145
|
-
this.applicationTheme = 'light';
|
|
146
|
-
/**
|
|
147
|
-
* Color of the option hover.
|
|
148
|
-
* Defaults to Test Gorilla primary color.
|
|
149
|
-
*
|
|
150
|
-
* @type {string}
|
|
151
|
-
* @memberof AutocompleteComponent
|
|
152
|
-
*/
|
|
153
|
-
this.companyColor = '#FFF2FC';
|
|
154
|
-
/**
|
|
155
|
-
* Hide in-build errors for Reactive Forms
|
|
156
|
-
*
|
|
157
|
-
* @type {number}
|
|
158
|
-
* @memberof AutocompleteComponent
|
|
159
|
-
*/
|
|
160
|
-
this.hideBuiltInErrors = false;
|
|
161
|
-
/**
|
|
162
|
-
* Hide label in errors
|
|
163
|
-
*
|
|
164
|
-
* @type {number}
|
|
165
|
-
* @memberof AutocompleteComponent
|
|
166
|
-
*/
|
|
167
|
-
this.hideLabelInErrors = false;
|
|
168
|
-
this.selectionChange = new EventEmitter();
|
|
169
|
-
this.searchTextChange = new EventEmitter();
|
|
170
|
-
this.safeErrors = [];
|
|
171
|
-
this.inputValue = '';
|
|
172
|
-
this.isInputFocus = false;
|
|
173
|
-
this.autocompleteType = Autocomplete;
|
|
174
|
-
this.isOverLapping = false;
|
|
175
|
-
this.isOverlapChecking = true;
|
|
176
|
-
this.overlapIndex = 0;
|
|
177
|
-
this.inputValueSearch$ = new ReplaySubject(1);
|
|
178
|
-
this.userInput$ = new ReplaySubject(1);
|
|
179
|
-
this.filteredItemsList$ = this.inputValueSearch$.pipe(startWith(''), map(inputValue => inputValue.length ? AutocompleteUtils.filterItems(this.itemsList, inputValue, this.textField) : null));
|
|
180
|
-
this.filteredSuggestionList$ = this.inputValueSearch$.pipe(map(inputValue => inputValue.length ? AutocompleteUtils.filterItems(this.suggestionsList, inputValue, this.textField) : null));
|
|
181
|
-
this.searchResult$ = this.inputValueSearch$.pipe(map(inputValue => !!inputValue.trim()));
|
|
182
|
-
this.translationContext = 'AUTOCOMPLETE.';
|
|
183
|
-
this.isPlatform = isPlatformBrowser(this.platformId);
|
|
184
|
-
this.onChange = (_) => { };
|
|
185
|
-
this.onTouch = () => { };
|
|
186
|
-
this.trackByFn = (index, value) => value.changingThisBreaksApplicationSecurity;
|
|
187
|
-
if (this.ngControl != null) {
|
|
188
|
-
this.ngControl.valueAccessor = this;
|
|
189
|
-
}
|
|
190
|
-
if (defaultAppTheme) {
|
|
191
|
-
this.applicationTheme = defaultAppTheme;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Used to mark component view as dirty when touched programmatically with markAsTouched/markAllAsTouched or errors
|
|
196
|
-
* to display validation errors that might happen (e.g. required)
|
|
197
|
-
*/
|
|
198
|
-
// eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle
|
|
199
|
-
ngDoCheck() {
|
|
200
|
-
if (this.ngControl?.touched || this.ngControl?.errors) {
|
|
201
|
-
this.cdr.markForCheck();
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
// eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle
|
|
205
|
-
ngOnChanges(changes) {
|
|
206
|
-
this.itemsList = AutocompleteUtils.excludeSuggestions(this.itemsList, this.suggestionsList, this.valueField);
|
|
207
|
-
this.initValue();
|
|
208
|
-
if (this.isPlatform && changes['companyColor']) {
|
|
209
|
-
this.setCompanyColorVariable();
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
// eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle
|
|
213
|
-
ngAfterViewInit() {
|
|
214
|
-
if (this.type !== Autocomplete.LARGE) {
|
|
215
|
-
this.checkOverlap(Timeout.VIEW_INITIALIZED_COMPONENT_LOAD, true);
|
|
216
|
-
}
|
|
217
|
-
this.isPlatform && this.setCompanyColorVariable();
|
|
218
|
-
}
|
|
219
|
-
registerOnChange(fn) {
|
|
220
|
-
this.onChange = fn;
|
|
221
|
-
}
|
|
222
|
-
registerOnTouched(fn) {
|
|
223
|
-
this.onTouch = fn;
|
|
224
|
-
}
|
|
225
|
-
setDisabledState(isDisabled) {
|
|
226
|
-
this.disabled = isDisabled;
|
|
227
|
-
this.cdr.markForCheck();
|
|
228
|
-
}
|
|
229
|
-
writeValue(value) {
|
|
230
|
-
if (this.valuePrimitive && this.textField && this.valueField) {
|
|
231
|
-
if (this.type === Autocomplete.SINGLE) {
|
|
232
|
-
this.value = this.itemsList.find(item => item[this.valueField] === value);
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
this.value = [this.itemsList.find(item => item[this.valueField] === value)];
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
239
|
-
this.value = value;
|
|
240
|
-
}
|
|
241
|
-
this.initValue();
|
|
242
|
-
}
|
|
243
|
-
onOptionSelected(event) {
|
|
244
|
-
const inputValue = event.option.value;
|
|
245
|
-
const itemValue = AutocompleteUtils.createValueItem(inputValue, this.textField, this.valueField);
|
|
246
|
-
this.addNewValue(itemValue);
|
|
247
|
-
if (this.type === this.autocompleteType.MULTI) {
|
|
248
|
-
this.checkOverlap();
|
|
249
|
-
}
|
|
250
|
-
queueMicrotask(() => {
|
|
251
|
-
if (this.type !== this.autocompleteType.SINGLE) {
|
|
252
|
-
this.inputValue = '';
|
|
253
|
-
}
|
|
254
|
-
else {
|
|
255
|
-
this.inputValue = AutocompleteUtils.transformDisplayValue(this.value, this.textField);
|
|
256
|
-
}
|
|
257
|
-
this.cdr.markForCheck();
|
|
258
|
-
});
|
|
259
|
-
this.onUpdate();
|
|
260
|
-
}
|
|
261
|
-
onOptionRemoved(option) {
|
|
262
|
-
setTimeout(() => this.autocomplete.closePanel(), 0);
|
|
263
|
-
const foundValue = this.value.find((v) => v === option);
|
|
264
|
-
if (foundValue) {
|
|
265
|
-
this.value = this.value.filter((v) => v !== option);
|
|
266
|
-
}
|
|
267
|
-
if (this.type === this.autocompleteType.MULTI) {
|
|
268
|
-
this.checkOverlap();
|
|
269
|
-
}
|
|
270
|
-
if (!this.value.length) {
|
|
271
|
-
this.inputValue = '';
|
|
272
|
-
}
|
|
273
|
-
this.onUpdate();
|
|
274
|
-
}
|
|
275
|
-
onInputChange(event) {
|
|
276
|
-
const inputValue = event.target.value;
|
|
277
|
-
this.userInput$.next(inputValue);
|
|
278
|
-
if (inputValue.length >= this.minCharactersSearch) {
|
|
279
|
-
this.inputValueSearch$.next(inputValue);
|
|
280
|
-
this.searchTextChange.emit(inputValue);
|
|
281
|
-
}
|
|
282
|
-
else {
|
|
283
|
-
this.inputValueSearch$.next('');
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
onClear() {
|
|
287
|
-
this.inputValue = '';
|
|
288
|
-
this.value = AutocompleteUtils.isArray(this.value) ? [] : '';
|
|
289
|
-
this.isOverLapping = false;
|
|
290
|
-
this.overlapIndex = 0;
|
|
291
|
-
this.onUpdate();
|
|
292
|
-
}
|
|
293
|
-
refillInput() {
|
|
294
|
-
if (this.value && this.type === this.autocompleteType.SINGLE && !this.inputValue) {
|
|
295
|
-
this.inputValue = AutocompleteUtils.transformDisplayValue(this.value, this.textField);
|
|
296
|
-
this.inputValueSearch$.next('');
|
|
297
|
-
}
|
|
298
|
-
if (!this.inputValue && this.value?.length) {
|
|
299
|
-
this.inputValue = ' ';
|
|
300
|
-
}
|
|
301
|
-
this.isInputFocus = false;
|
|
302
|
-
}
|
|
303
|
-
gotoUp() {
|
|
304
|
-
if (this.cdkVirtualScrollViewPort) {
|
|
305
|
-
this.cdkVirtualScrollViewPort.scrollToIndex(0);
|
|
306
|
-
this.cdkVirtualScrollViewPort.checkViewportSize();
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
onFocus() {
|
|
310
|
-
this.isInputFocus = true;
|
|
311
|
-
const inputValue = AutocompleteUtils.isArray(this.inputValue) ? this.inputValue[0] : this.inputValue;
|
|
312
|
-
if (AutocompleteUtils.isPrimitive(inputValue)) {
|
|
313
|
-
if (inputValue?.match(/^\s+/gm)) {
|
|
314
|
-
this.inputValue = inputValue.trimStart();
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
else {
|
|
318
|
-
if (inputValue[this.textField]?.match(/^\s+/gm)) {
|
|
319
|
-
this.inputValue = inputValue[this.textField].trimStart();
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
checkOverlap(delay = Timeout.VIEW_INITIALIZED_AFTER_ACTION, init = false) {
|
|
324
|
-
this.isOverLapping = false;
|
|
325
|
-
this.isOverlapChecking = true;
|
|
326
|
-
setTimeout(() => {
|
|
327
|
-
const inputWidth = this.inputWidth;
|
|
328
|
-
const tags = this.tagContainer?.nativeElement.querySelectorAll('.value-tag');
|
|
329
|
-
if (tags) {
|
|
330
|
-
let width = 0;
|
|
331
|
-
let firstTagWidth = 0;
|
|
332
|
-
tags.forEach((tag, index) => {
|
|
333
|
-
width += tag.getBoundingClientRect().width;
|
|
334
|
-
if (!index) {
|
|
335
|
-
firstTagWidth = width;
|
|
336
|
-
}
|
|
337
|
-
if (!this.isOverLapping && width > inputWidth) {
|
|
338
|
-
this.isOverLapping = true;
|
|
339
|
-
this.overlapIndex = index;
|
|
340
|
-
}
|
|
341
|
-
if (firstTagWidth > inputWidth) {
|
|
342
|
-
this.overlapIndex = 0;
|
|
343
|
-
}
|
|
344
|
-
});
|
|
345
|
-
this.isOverlapChecking = false;
|
|
346
|
-
if (init) {
|
|
347
|
-
if (this.type === this.autocompleteType.SINGLE) {
|
|
348
|
-
this.inputValue = AutocompleteUtils.transformDisplayValue(this.value[0], this.textField);
|
|
349
|
-
}
|
|
350
|
-
else {
|
|
351
|
-
this.inputValue = ' ';
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
this.cdr.markForCheck();
|
|
355
|
-
}
|
|
356
|
-
}, delay);
|
|
357
|
-
}
|
|
358
|
-
onUpdate() {
|
|
359
|
-
this.inputValueSearch$.next('');
|
|
360
|
-
this.userInput$.next('');
|
|
361
|
-
if (!this.valuePrimitive) {
|
|
362
|
-
this.onChange(this.value);
|
|
363
|
-
}
|
|
364
|
-
else {
|
|
365
|
-
if (this.type === Autocomplete.SINGLE) {
|
|
366
|
-
this.onChange(this.value[this.valueField]);
|
|
367
|
-
}
|
|
368
|
-
else {
|
|
369
|
-
this.onChange(this.value.map((v) => v[this.valueField]));
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
this.selectionChange.emit(this.value);
|
|
373
|
-
}
|
|
374
|
-
initValue() {
|
|
375
|
-
if (this.type === this.autocompleteType.SINGLE && this.variant !== DropdownVariation.DROPDOWN) {
|
|
376
|
-
if (AutocompleteUtils.isArray(this.value)) {
|
|
377
|
-
this.inputValue = AutocompleteUtils.transformDisplayValue(this.value[0], this.textField);
|
|
378
|
-
}
|
|
379
|
-
else {
|
|
380
|
-
this.inputValue = this.value ? AutocompleteUtils.transformDisplayValue(this.value, this.textField) : '';
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
else if (this.variant === DropdownVariation.DROPDOWN) {
|
|
384
|
-
this.inputValue = this.value ? AutocompleteUtils.transformDisplayValue(this.value, this.textField) : '';
|
|
385
|
-
}
|
|
386
|
-
else {
|
|
387
|
-
this.inputValue = this.value && this.value.length ? ' ' : '';
|
|
388
|
-
}
|
|
389
|
-
if (this.type === this.autocompleteType.MULTI) {
|
|
390
|
-
this.checkOverlap();
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
addNewValue(newValue) {
|
|
394
|
-
if (this.type !== this.autocompleteType.SINGLE && !this.value) {
|
|
395
|
-
this.value = [];
|
|
396
|
-
}
|
|
397
|
-
const foundDuplicate = AutocompleteUtils.findDuplicate(this.value, newValue, this.textField);
|
|
398
|
-
if (this.type !== this.autocompleteType.SINGLE) {
|
|
399
|
-
this.value = foundDuplicate ? this.value.filter((v) => v !== foundDuplicate) : [...this.value, newValue];
|
|
400
|
-
}
|
|
401
|
-
else {
|
|
402
|
-
this.value = newValue;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
get isDropdown() {
|
|
406
|
-
return this.variant === DropdownVariation.DROPDOWN;
|
|
407
|
-
}
|
|
408
|
-
onChevronClick(autocomplete) {
|
|
409
|
-
if (autocomplete.isOpen) {
|
|
410
|
-
setTimeout(() => {
|
|
411
|
-
this.autocomplete.closePanel();
|
|
412
|
-
}, 0);
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
get inputWidth() {
|
|
416
|
-
return (this.formFieldElement?.nativeElement.getBoundingClientRect().width -
|
|
417
|
-
(this.isDropdown ? Padding.DROPDOWN_CONTAINER : Padding.AUTOCOMPLETE_CONTAINER));
|
|
418
|
-
}
|
|
419
|
-
/**
|
|
420
|
-
* Adding company color variable to the body to style overlay container that's out of the component scope.
|
|
421
|
-
*/
|
|
422
|
-
setCompanyColorVariable() {
|
|
423
|
-
this.renderer2.setProperty(document.body, 'style', `--ui-autocomplete-option-color: ${this.companyColor};`);
|
|
424
|
-
}
|
|
425
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: i0.ChangeDetectorRef }, { token: i1.DomSanitizer }, { token: i2.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
426
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AutocompleteComponent, selector: "ui-autocomplete", inputs: { itemsList: "itemsList", suggestionsList: "suggestionsList", disabled: "disabled", allowAdd: "allowAdd", textField: "textField", valueField: "valueField", label: "label", itemValue: "itemValue", type: "type", minCharactersSearch: "minCharactersSearch", variant: "variant", language: "language", showBottomContent: "showBottomContent", valuePrimitive: "valuePrimitive", fullWidth: "fullWidth", applicationTheme: "applicationTheme", required: "required", errors: "errors", companyColor: "companyColor", hideBuiltInErrors: "hideBuiltInErrors", hideLabelInErrors: "hideLabelInErrors" }, outputs: { selectionChange: "selectionChange", searchTextChange: "searchTextChange" }, host: { properties: { "attr.theme": "this.applicationTheme" } }, viewQueries: [{ propertyName: "formFieldElement", first: true, predicate: ["formField"], descendants: true }, { propertyName: "tagContainer", first: true, predicate: ["tagContainer"], descendants: true }, { propertyName: "autocomplete", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "cdkVirtualScrollViewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container>\n <div class=\"autocomplete-wrapper\" [ngClass]=\"{ 'full-width': fullWidth, disabled: disabled }\">\n <mat-form-field\n [color]=\"(safeErrors.length || (ngControl?.errors && ngControl?.touched )) ? 'warn' : 'accent'\"\n [appearance]=\"'outline'\"\n [ngClass]=\"{ 'large-size': type === autocompleteType.LARGE, 'hide-bottom-content': !showBottomContent }\"\n >\n <mat-label *ngIf=\"label\">{{ label }} <span *ngIf=\"required\">*</span></mat-label>\n <div #formField class=\"input-container\">\n <div\n class=\"selected-items\"\n #tagContainer\n *ngIf=\"\n (type === autocompleteType.LARGE && this.value) ||\n (!(inputValue && this.isInputFocus) && this.value && type !== autocompleteType.SINGLE)\n \"\n >\n <ui-tag\n class=\"value-tag\"\n [id]=\"'ui-tag-' + i\"\n *ngFor=\"let valueItem of value; let i = index\"\n [label]=\"valueItem | transformItem: textField\"\n [allowClose]=\"true\"\n [applicationTheme]=\"applicationTheme\"\n [style.display]=\"isOverLapping && i >= overlapIndex ? 'none' : 'block'\"\n [ngClass]=\"{\n 'overlap-tag': isOverlapChecking && overlapIndex && i >= overlapIndex && type === autocompleteType.MULTI\n }\"\n (close)=\"onOptionRemoved(valueItem)\"\n ></ui-tag>\n <ng-container *ngIf=\"isOverLapping\">\n <div *ngIf=\"!overlapIndex; else overlapTag\" class=\"overlap-count\">\n {{ (translationContext + 'SELECTED_AMOUNT') | uiTranslate : language : { numberSelected: (value | slice: overlapIndex).length } }}\n </div>\n <ng-template #overlapTag>\n <ui-tag [applicationTheme]=\"applicationTheme\" [readOnly]=\"true\" [label]=\"'+' + (value | slice: overlapIndex).length\"></ui-tag>\n </ng-template>\n </ng-container>\n </div>\n <input\n #trigger=\"matAutocompleteTrigger\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'unset-margin': this.value && type === autocompleteType.LARGE }\"\n (blur)=\"refillInput()\"\n (focusin)=\"onFocus()\"\n matInput\n [type]=\"'text'\"\n [matAutocomplete]=\"autocomplete\"\n (input)=\"onInputChange($event)\"\n [(ngModel)]=\"inputValue\"\n />\n </div>\n\n <ui-icon\n *ngIf=\"value && value.length\"\n class=\"remove-selected lalalal\"\n [ngClass]=\"{ 'large-input-icon': type === autocompleteType.LARGE }\"\n (click)=\"onClear()\"\n [size]=\"'24'\"\n [color]=\"applicationTheme === 'classic' ? 'inherit' : 'rebrand-black'\"\n [name]=\"applicationTheme === 'classic' ? 'Close' : 'Close-in-line'\"\n ></ui-icon>\n\n <ui-icon\n class=\"arrow-state\"\n [ngClass]=\"{ opened: autocomplete.isOpen, 'large-input-icon': type === autocompleteType.LARGE }\"\n *ngIf=\"isDropdown\"\n [size]=\"'24'\"\n [name]=\"applicationTheme !== 'classic' ? 'Arrow-chevron-down-in-line' : 'Arrow_down'\"\n (click)=\"onChevronClick(autocomplete)\"\n ></ui-icon>\n\n <mat-autocomplete\n #autocomplete\n [class]=\"applicationTheme\"\n (optionSelected)=\"onOptionSelected($event)\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n [hideSingleSelectionIndicator]=\"false\"\n (opened)=\"gotoUp()\"\n >\n <ng-container *ngIf=\"!(searchResult$ | async)\">\n <ng-container *ngIf=\"!isDropdown; else dropdownList\">\n <mat-optgroup [label]=\"(translationContext + 'SUGGESTED') | uiTranslate : language | uppercase\" *ngIf=\"suggestionsList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': suggested | includes: value }\"\n *ngFor=\"let suggested of suggestionsList\"\n [value]=\"suggested\"\n >\n <span [selectText]=\"userInput$ | async\">{{ suggested | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"(translationContext + 'SELECTED') | uiTranslate : language | uppercase\" *ngIf=\"value?.length && type !== autocompleteType.SINGLE\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of value\"\n [value]=\"item\"\n >\n <span>{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"(translationContext + 'SELECTED') | uiTranslate : language | uppercase\" *ngIf=\"value?.length && type === autocompleteType.SINGLE\">\n <mat-option\n [class]=\"'selected-option'\"\n [value]=\"value\"\n >\n <span [selectText]=\"userInput$ | async\">{{ value | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-template #dropdownList>\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n\n </ng-template>\n\n </ng-container>\n\n <ng-container *ngIf=\"filteredSuggestionList$ | async as filteredSuggestionList\">\n <ng-container *ngIf=\"filteredItemsList$ | async as filteredItemsList\">\n <mat-optgroup [label]=\"(translationContext + 'SUGGESTED') | uiTranslate : language | uppercase\" *ngIf=\"filteredSuggestionList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length; else showItemListWithGroup\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </ng-container>\n\n <ng-template #showItemListWithGroup>\n <mat-optgroup [label]=\"(translationContext + 'ALL_ITEMS') | uiTranslate : language | uppercase\" *ngIf=\"filteredItemsList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-template>\n\n <ng-container *ngIf=\"!filteredItemsList.length && !filteredSuggestionList.length && inputValue\">\n <ng-container *ngIf=\"allowAdd && !isDropdown; else notFound\">\n <mat-option [value]=\"inputValue\">\n <span>{{ ('COMMON.ADD') | uiTranslate : language }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n </ng-container>\n\n <ng-template #notFound>\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ (translationContext + 'NO_RESULTS_FOUND') | uiTranslate : language }}</span>\n </mat-option>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n </mat-autocomplete>\n <mat-hint class=\"error\" *ngIf=\"safeErrors.length || (ngControl?.errors | hasValidationError)\">\n <ng-container *ngIf=\"safeErrors.length\">\n <div class=\"errors\" *ngFor=\"let error of safeErrors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n <ui-validation-error *ngIf=\"ngControl && !hideBuiltInErrors\" [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : label\" [language]=\"language\"></ui-validation-error>\n\n </mat-hint>\n </mat-form-field>\n </div>\n</ng-container>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.large-size input{margin:10px 0}.large-size .selected-items{margin:5px 0;flex-wrap:wrap}.large-size .input-container{display:block}.large-size ::ng-deep .mat-mdc-form-field-infix,.large-size .mat-mdc-form-field-flex{align-items:unset!important}.disabled{opacity:.5}.disabled *{pointer-events:none}.input-container{width:100%;margin:auto;display:flex}.input-container .selected-items{display:flex}.input-container .selected-items .overlap-count{font-size:14px;line-height:20px;width:80px}.input-container .selected-items .overlap-tag{position:absolute;opacity:0}.input-container input{margin-left:4px}.input-container input.unset-margin{margin-top:unset}.add-suggestion{margin:0 5px;color:#000;font-weight:700}.remove-selected{cursor:pointer}.remove-selected.large-input-icon{margin-top:10px}.arrow-state{margin-left:8px;height:24px;cursor:pointer}.arrow-state.large-input-icon{margin-top:10px}.arrow-state.opened{transform:rotateX(180deg)}::ng-deep .autocomplete-wrapper .mat-mdc-form-field{max-width:330px;min-width:330px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error,::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error svg{color:#cb7b7a}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{display:flex}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{display:flex;flex-flow:column;row-gap:4px}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error .errors{display:flex}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error .errors ui-icon{margin-right:8px}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{color:#e02800!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error svg{color:#e02800!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-bottom-align:before{height:0}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint-wrapper{padding:0 0 12px;font-size:12px;line-height:16px;position:relative}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint-wrapper .mat-form-field-hint-spacer{display:none}::ng-deep .autocomplete-wrapper .mat-mdc-form-field.hide-bottom-content .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{top:28px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:22px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper{padding-left:12px!important;height:unset!important;max-height:unset!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{color:#276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch{border-bottom:2px solid #276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading{border-left:2px solid #276678!important;border-bottom:2px solid #276678!important;border-top:2px solid #276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border:2px solid #276678!important;border-left:unset!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-infix,::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-flex{min-height:48px!important;max-height:184px!important;overflow-y:auto;overflow-x:hidden;padding:0!important;display:flex;justify-content:center;text-align:center;align-items:center;flex-direction:row;width:100%}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-line-ripple{display:none!important}::ng-deep .autocomplete-wrapper.full-width .mat-mdc-form-field{width:100%;max-width:100%}::ng-deep .mat-mdc-autocomplete-panel{box-shadow:0 8px 24px 4px #00000014;max-height:312px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option:hover:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option:focus:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mat-mdc-option-active,::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:#e9f0f1!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option{padding-right:32px;padding-left:12px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option ui-icon{display:none;position:absolute;right:0;bottom:calc(50% - 8px);margin:0 10px}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.selected-option{background:#e9f0f1}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.selected-option ui-icon{display:block}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item--selected .mdc-list-item__primary-text,::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option .mdc-list-item--activated .mdc-list-item__primary-text{color:#000!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option .mat-pseudo-checkbox{display:none}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-optgroup .mat-mdc-optgroup-label{font-weight:700!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-optgroup .mdc-list-item__primary-text{color:#000;font-size:12px;line-height:16px;font-weight:700}.active-field .mdc-notched-outline__leading{border-left-width:2px;border-top-width:2px;border-bottom-width:2px}.active-field .mdc-notched-outline__notch{border-top-width:2px;border-bottom-width:2px}.active-field .mdc-notched-outline__trailing{border-top-width:2px;border-bottom-width:2px;border-right-width:2px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i6.MatOptgroup, selector: "mat-optgroup", inputs: ["disabled"], exportAs: ["matOptgroup"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.TagComponent, selector: "ui-tag", inputs: ["label", "icon", "allowClose", "readOnly", "isSelected", "showIconWhenSelected", "isDisabled", "applicationTheme", "ariaLabel", "ariaRequired"], outputs: ["close", "press"] }, { kind: "component", type: i9.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme"] }, { kind: "component", type: i10.ValidationErrorComponent, selector: "ui-validation-error", inputs: ["ngControl", "label", "applicationTheme", "language"] }, { kind: "directive", type: i11.SelectTextDirective, selector: "[selectText]", inputs: ["selectText"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }, { kind: "pipe", type: i12.UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: i13.HasValidationErrorPipe, name: "hasValidationError" }, { kind: "pipe", type: i14.TransformItemPipe, name: "transformItem" }, { kind: "pipe", type: i15.IncludesPipe, name: "includes" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
427
|
-
}
|
|
428
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
429
|
-
type: Component,
|
|
430
|
-
args: [{ selector: 'ui-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container>\n <div class=\"autocomplete-wrapper\" [ngClass]=\"{ 'full-width': fullWidth, disabled: disabled }\">\n <mat-form-field\n [color]=\"(safeErrors.length || (ngControl?.errors && ngControl?.touched )) ? 'warn' : 'accent'\"\n [appearance]=\"'outline'\"\n [ngClass]=\"{ 'large-size': type === autocompleteType.LARGE, 'hide-bottom-content': !showBottomContent }\"\n >\n <mat-label *ngIf=\"label\">{{ label }} <span *ngIf=\"required\">*</span></mat-label>\n <div #formField class=\"input-container\">\n <div\n class=\"selected-items\"\n #tagContainer\n *ngIf=\"\n (type === autocompleteType.LARGE && this.value) ||\n (!(inputValue && this.isInputFocus) && this.value && type !== autocompleteType.SINGLE)\n \"\n >\n <ui-tag\n class=\"value-tag\"\n [id]=\"'ui-tag-' + i\"\n *ngFor=\"let valueItem of value; let i = index\"\n [label]=\"valueItem | transformItem: textField\"\n [allowClose]=\"true\"\n [applicationTheme]=\"applicationTheme\"\n [style.display]=\"isOverLapping && i >= overlapIndex ? 'none' : 'block'\"\n [ngClass]=\"{\n 'overlap-tag': isOverlapChecking && overlapIndex && i >= overlapIndex && type === autocompleteType.MULTI\n }\"\n (close)=\"onOptionRemoved(valueItem)\"\n ></ui-tag>\n <ng-container *ngIf=\"isOverLapping\">\n <div *ngIf=\"!overlapIndex; else overlapTag\" class=\"overlap-count\">\n {{ (translationContext + 'SELECTED_AMOUNT') | uiTranslate : language : { numberSelected: (value | slice: overlapIndex).length } }}\n </div>\n <ng-template #overlapTag>\n <ui-tag [applicationTheme]=\"applicationTheme\" [readOnly]=\"true\" [label]=\"'+' + (value | slice: overlapIndex).length\"></ui-tag>\n </ng-template>\n </ng-container>\n </div>\n <input\n #trigger=\"matAutocompleteTrigger\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'unset-margin': this.value && type === autocompleteType.LARGE }\"\n (blur)=\"refillInput()\"\n (focusin)=\"onFocus()\"\n matInput\n [type]=\"'text'\"\n [matAutocomplete]=\"autocomplete\"\n (input)=\"onInputChange($event)\"\n [(ngModel)]=\"inputValue\"\n />\n </div>\n\n <ui-icon\n *ngIf=\"value && value.length\"\n class=\"remove-selected lalalal\"\n [ngClass]=\"{ 'large-input-icon': type === autocompleteType.LARGE }\"\n (click)=\"onClear()\"\n [size]=\"'24'\"\n [color]=\"applicationTheme === 'classic' ? 'inherit' : 'rebrand-black'\"\n [name]=\"applicationTheme === 'classic' ? 'Close' : 'Close-in-line'\"\n ></ui-icon>\n\n <ui-icon\n class=\"arrow-state\"\n [ngClass]=\"{ opened: autocomplete.isOpen, 'large-input-icon': type === autocompleteType.LARGE }\"\n *ngIf=\"isDropdown\"\n [size]=\"'24'\"\n [name]=\"applicationTheme !== 'classic' ? 'Arrow-chevron-down-in-line' : 'Arrow_down'\"\n (click)=\"onChevronClick(autocomplete)\"\n ></ui-icon>\n\n <mat-autocomplete\n #autocomplete\n [class]=\"applicationTheme\"\n (optionSelected)=\"onOptionSelected($event)\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n [hideSingleSelectionIndicator]=\"false\"\n (opened)=\"gotoUp()\"\n >\n <ng-container *ngIf=\"!(searchResult$ | async)\">\n <ng-container *ngIf=\"!isDropdown; else dropdownList\">\n <mat-optgroup [label]=\"(translationContext + 'SUGGESTED') | uiTranslate : language | uppercase\" *ngIf=\"suggestionsList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': suggested | includes: value }\"\n *ngFor=\"let suggested of suggestionsList\"\n [value]=\"suggested\"\n >\n <span [selectText]=\"userInput$ | async\">{{ suggested | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"(translationContext + 'SELECTED') | uiTranslate : language | uppercase\" *ngIf=\"value?.length && type !== autocompleteType.SINGLE\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of value\"\n [value]=\"item\"\n >\n <span>{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <mat-optgroup [label]=\"(translationContext + 'SELECTED') | uiTranslate : language | uppercase\" *ngIf=\"value?.length && type === autocompleteType.SINGLE\">\n <mat-option\n [class]=\"'selected-option'\"\n [value]=\"value\"\n >\n <span [selectText]=\"userInput$ | async\">{{ value | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n\n <ng-template #dropdownList>\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of itemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n\n </ng-template>\n\n </ng-container>\n\n <ng-container *ngIf=\"filteredSuggestionList$ | async as filteredSuggestionList\">\n <ng-container *ngIf=\"filteredItemsList$ | async as filteredItemsList\">\n <mat-optgroup [label]=\"(translationContext + 'SUGGESTED') | uiTranslate : language | uppercase\" *ngIf=\"filteredSuggestionList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredSuggestionList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n\n <ng-container *ngIf=\"!filteredSuggestionList.length; else showItemListWithGroup\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </ng-container>\n\n <ng-template #showItemListWithGroup>\n <mat-optgroup [label]=\"(translationContext + 'ALL_ITEMS') | uiTranslate : language | uppercase\" *ngIf=\"filteredItemsList.length\">\n <mat-option\n [ngClass]=\"{ 'selected-option': item | includes: value }\"\n *ngFor=\"let item of filteredItemsList\"\n [value]=\"item\"\n >\n <span [selectText]=\"userInput$ | async\">{{ item | transformItem: textField }}</span>\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"applicationTheme === 'classic' ? 'Check' : 'Check-in-line'\"></ui-icon>\n </mat-option>\n </mat-optgroup>\n </ng-template>\n\n <ng-container *ngIf=\"!filteredItemsList.length && !filteredSuggestionList.length && inputValue\">\n <ng-container *ngIf=\"allowAdd && !isDropdown; else notFound\">\n <mat-option [value]=\"inputValue\">\n <span>{{ ('COMMON.ADD') | uiTranslate : language }}</span>\n <span class=\"add-suggestion\">\"{{ inputValue }}\"</span>\n </mat-option>\n </ng-container>\n\n <ng-template #notFound>\n <mat-option [style.pointer-events]=\"'none'\">\n <span>{{ (translationContext + 'NO_RESULTS_FOUND') | uiTranslate : language }}</span>\n </mat-option>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n </mat-autocomplete>\n <mat-hint class=\"error\" *ngIf=\"safeErrors.length || (ngControl?.errors | hasValidationError)\">\n <ng-container *ngIf=\"safeErrors.length\">\n <div class=\"errors\" *ngFor=\"let error of safeErrors; trackBy: trackByFn\">\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"'Error'\"></ui-icon>\n <span [innerHTML]=\"error\"></span>\n </div>\n </ng-container>\n <ui-validation-error *ngIf=\"ngControl && !hideBuiltInErrors\" [ngControl]=\"ngControl\" [label]=\"hideLabelInErrors ? null : label\" [language]=\"language\"></ui-validation-error>\n\n </mat-hint>\n </mat-form-field>\n </div>\n</ng-container>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.large-size input{margin:10px 0}.large-size .selected-items{margin:5px 0;flex-wrap:wrap}.large-size .input-container{display:block}.large-size ::ng-deep .mat-mdc-form-field-infix,.large-size .mat-mdc-form-field-flex{align-items:unset!important}.disabled{opacity:.5}.disabled *{pointer-events:none}.input-container{width:100%;margin:auto;display:flex}.input-container .selected-items{display:flex}.input-container .selected-items .overlap-count{font-size:14px;line-height:20px;width:80px}.input-container .selected-items .overlap-tag{position:absolute;opacity:0}.input-container input{margin-left:4px}.input-container input.unset-margin{margin-top:unset}.add-suggestion{margin:0 5px;color:#000;font-weight:700}.remove-selected{cursor:pointer}.remove-selected.large-input-icon{margin-top:10px}.arrow-state{margin-left:8px;height:24px;cursor:pointer}.arrow-state.large-input-icon{margin-top:10px}.arrow-state.opened{transform:rotateX(180deg)}::ng-deep .autocomplete-wrapper .mat-mdc-form-field{max-width:330px;min-width:330px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error,::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error svg{color:#cb7b7a}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{display:flex}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{display:flex;flex-flow:column;row-gap:4px}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error .errors{display:flex}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error .errors ui-icon{margin-right:8px}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error{color:#e02800!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint.error svg{color:#e02800!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-bottom-align:before{height:0}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint-wrapper{padding:0 0 12px;font-size:12px;line-height:16px;position:relative}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-hint-wrapper .mat-form-field-hint-spacer{display:none}::ng-deep .autocomplete-wrapper .mat-mdc-form-field.hide-bottom-content .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{top:28px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:22px!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-text-field-wrapper{padding-left:12px!important;height:unset!important;max-height:unset!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{color:#276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch{border-bottom:2px solid #276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading{border-left:2px solid #276678!important;border-bottom:2px solid #276678!important;border-top:2px solid #276678!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border:2px solid #276678!important;border-left:unset!important}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-infix,::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mat-mdc-form-field-flex{min-height:48px!important;max-height:184px!important;overflow-y:auto;overflow-x:hidden;padding:0!important;display:flex;justify-content:center;text-align:center;align-items:center;flex-direction:row;width:100%}::ng-deep .autocomplete-wrapper .mat-mdc-form-field .mdc-line-ripple{display:none!important}::ng-deep .autocomplete-wrapper.full-width .mat-mdc-form-field{width:100%;max-width:100%}::ng-deep .mat-mdc-autocomplete-panel{box-shadow:0 8px 24px 4px #00000014;max-height:312px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option:hover:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option:focus:not(.mdc-list-item--disabled),::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mat-mdc-option-active,::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:#e9f0f1!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option{padding-right:32px;padding-left:12px!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option ui-icon{display:none;position:absolute;right:0;bottom:calc(50% - 8px);margin:0 10px}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.selected-option{background:#e9f0f1}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.selected-option ui-icon{display:block}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item--selected .mdc-list-item__primary-text,::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option .mdc-list-item--activated .mdc-list-item__primary-text{color:#000!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-option .mat-pseudo-checkbox{display:none}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-optgroup .mat-mdc-optgroup-label{font-weight:700!important}::ng-deep .mat-mdc-autocomplete-panel .mat-mdc-optgroup .mdc-list-item__primary-text{color:#000;font-size:12px;line-height:16px;font-weight:700}.active-field .mdc-notched-outline__leading{border-left-width:2px;border-top-width:2px;border-bottom-width:2px}.active-field .mdc-notched-outline__notch{border-top-width:2px;border-bottom-width:2px}.active-field .mdc-notched-outline__trailing{border-top-width:2px;border-bottom-width:2px;border-right-width:2px}\n"] }]
|
|
431
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
432
|
-
type: Optional
|
|
433
|
-
}, {
|
|
434
|
-
type: Inject,
|
|
435
|
-
args: ['CANOPYUI_DEFAULT_APPLICATION_THEME']
|
|
436
|
-
}] }, { type: i0.ChangeDetectorRef }, { type: i1.DomSanitizer }, { type: i2.NgControl, decorators: [{
|
|
437
|
-
type: Optional
|
|
438
|
-
}, {
|
|
439
|
-
type: Self
|
|
440
|
-
}] }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
|
441
|
-
type: Inject,
|
|
442
|
-
args: [PLATFORM_ID]
|
|
443
|
-
}] }]; }, propDecorators: { itemsList: [{
|
|
444
|
-
type: Input
|
|
445
|
-
}], suggestionsList: [{
|
|
446
|
-
type: Input
|
|
447
|
-
}], disabled: [{
|
|
448
|
-
type: Input
|
|
449
|
-
}], allowAdd: [{
|
|
450
|
-
type: Input
|
|
451
|
-
}], textField: [{
|
|
452
|
-
type: Input
|
|
453
|
-
}], valueField: [{
|
|
454
|
-
type: Input
|
|
455
|
-
}], label: [{
|
|
456
|
-
type: Input
|
|
457
|
-
}], itemValue: [{
|
|
458
|
-
type: Input
|
|
459
|
-
}], type: [{
|
|
460
|
-
type: Input
|
|
461
|
-
}], minCharactersSearch: [{
|
|
462
|
-
type: Input
|
|
463
|
-
}], variant: [{
|
|
464
|
-
type: Input,
|
|
465
|
-
args: [{ required: true }]
|
|
466
|
-
}], language: [{
|
|
467
|
-
type: Input
|
|
468
|
-
}], showBottomContent: [{
|
|
469
|
-
type: Input
|
|
470
|
-
}], valuePrimitive: [{
|
|
471
|
-
type: Input
|
|
472
|
-
}], fullWidth: [{
|
|
473
|
-
type: Input
|
|
474
|
-
}], applicationTheme: [{
|
|
475
|
-
type: HostBinding,
|
|
476
|
-
args: ['attr.theme']
|
|
477
|
-
}, {
|
|
478
|
-
type: Input
|
|
479
|
-
}], required: [{
|
|
480
|
-
type: Input
|
|
481
|
-
}], errors: [{
|
|
482
|
-
type: Input
|
|
483
|
-
}], companyColor: [{
|
|
484
|
-
type: Input
|
|
485
|
-
}], hideBuiltInErrors: [{
|
|
486
|
-
type: Input
|
|
487
|
-
}], hideLabelInErrors: [{
|
|
488
|
-
type: Input
|
|
489
|
-
}], selectionChange: [{
|
|
490
|
-
type: Output
|
|
491
|
-
}], searchTextChange: [{
|
|
492
|
-
type: Output
|
|
493
|
-
}], formFieldElement: [{
|
|
494
|
-
type: ViewChild,
|
|
495
|
-
args: ['formField']
|
|
496
|
-
}], tagContainer: [{
|
|
497
|
-
type: ViewChild,
|
|
498
|
-
args: ['tagContainer']
|
|
499
|
-
}], autocomplete: [{
|
|
500
|
-
type: ViewChild,
|
|
501
|
-
args: ['trigger']
|
|
502
|
-
}], cdkVirtualScrollViewPort: [{
|
|
503
|
-
type: ViewChild,
|
|
504
|
-
args: [CdkVirtualScrollViewport, { static: false }]
|
|
505
|
-
}] } });
|
|
506
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUdULFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFFWCxJQUFJLEVBRUosU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFvQixpQkFBaUIsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0csT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQVFsRSxvRUFBb0U7QUFDcEUsTUFBTSxPQUFPLHFCQUFxQjtJQWtEaEM7Ozs7T0FJRztJQUNILElBQWEsU0FBUyxDQUFDLENBQU07UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDL0QsQ0FBQztJQXlFRDs7Ozs7T0FLRztJQUNILElBQWEsTUFBTSxDQUFDLE1BQWdCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0csQ0FBQztJQTJERCxZQUM2RSxlQUFpQyxFQUMzRixHQUFzQixFQUN0QixZQUEwQixFQUNoQixTQUFvQixFQUN2QyxTQUFvQixFQUNDLFVBQWU7UUFMK0Isb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBQzNGLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDdkMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNDLGVBQVUsR0FBVixVQUFVLENBQUs7UUExTTlDOzs7O1dBSUc7UUFDTSxjQUFTLEdBQVUsRUFBRSxDQUFDO1FBRS9COzs7O1dBSUc7UUFDTSxvQkFBZSxHQUFVLEVBQUUsQ0FBQztRQUVyQzs7OztXQUlHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUxQjs7OztXQUlHO1FBQ00sYUFBUSxHQUFHLElBQUksQ0FBQztRQUV6Qjs7OztXQUlHO1FBQ00sY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUV4Qjs7OztXQUlHO1FBQ00sZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUV6Qjs7OztXQUlHO1FBQ00sVUFBSyxHQUFHLEVBQUUsQ0FBQztRQVdwQjs7OztXQUlHO1FBQ00sU0FBSSxHQUFxQixPQUFPLENBQUM7UUFFMUM7Ozs7V0FJRztRQUNNLHdCQUFtQixHQUFHLENBQUMsQ0FBQztRQUVqQzs7OztXQUlHO1FBQ3dCLFlBQU8sR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLENBQUM7UUFFcEU7Ozs7O1dBS0c7UUFDTSxhQUFRLEdBQUcsZUFBZSxDQUFDLGVBQWUsQ0FBQztRQUVwRDs7Ozs7V0FLRztRQUNNLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUVsQzs7Ozs7V0FLRztRQUNNLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRWhDOzs7OztXQUtHO1FBQ00sY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUzQjs7Ozs7O1dBTUc7UUFFTSxxQkFBZ0IsR0FBcUIsT0FBTyxDQUFDO1FBb0J0RDs7Ozs7O1dBTUc7UUFDTSxpQkFBWSxHQUFHLFNBQVMsQ0FBQztRQUVsQzs7Ozs7V0FLRztRQUNNLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUVuQzs7Ozs7V0FLRztRQUNNLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUV6QixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDMUMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU05QyxlQUFVLEdBQWUsRUFBRSxDQUFDO1FBRTVCLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFDckIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIscUJBQWdCLEdBQUcsWUFBWSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUN6QixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixzQkFBaUIsR0FBRyxJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUNqRCxlQUFVLEdBQUcsSUFBSSxhQUFhLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsdUJBQWtCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FDeEQsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNiLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUNmLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDckcsQ0FDRixDQUFDO1FBQ1EsNEJBQXVCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FDN0QsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQ2YsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMzRyxDQUNGLENBQUM7UUFDUSxrQkFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEYsdUJBQWtCLEdBQUcsZUFBZSxDQUFDO1FBQzlCLGVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFnRGpFLGFBQVEsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzFCLFlBQU8sR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFvT1QsY0FBUyxHQUFHLENBQUMsS0FBYSxFQUFFLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxDQUFDO1FBM1EvRixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFO1lBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUNyQztRQUVELElBQUksZUFBZSxFQUFFO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsb0VBQW9FO0lBQ3BFLFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFO1lBQ3JELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsb0VBQW9FO0lBQ3BFLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0csSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDOUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsb0VBQW9FO0lBQ3BFLGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLEtBQUssRUFBRTtZQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNsRTtRQUNELElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUtELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDNUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO2FBQzNFO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQzthQUM3RTtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNwQjtRQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRVMsZ0JBQWdCLENBQUMsS0FBbUM7UUFDNUQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDdEMsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTVCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1lBQzdDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtRQUVELGNBQWMsQ0FBQyxHQUFHLEVBQUU7WUFDbEIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO2FBQ3RCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDdkY7WUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFUyxlQUFlLENBQUMsTUFBVztRQUNuQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBRTdELElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1NBQzFEO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1NBQ3RCO1FBRUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFUyxhQUFhLENBQUMsS0FBWTtRQUNsQyxNQUFNLFVBQVUsR0FBSSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUM7UUFDNUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsSUFBSSxVQUFVLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUNqRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDeEM7YUFBTTtZQUNMLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRVMsT0FBTztRQUNmLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFUyxXQUFXO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2hGLElBQUksQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNqQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQzFDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVTLE1BQU07UUFDZCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNqQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVTLE9BQU87UUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUV6QixNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRXJHLElBQUksaUJBQWlCLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzdDLElBQUksVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDMUM7U0FDRjthQUFNO1lBQ0wsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBQzFEO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxHQUFHLEtBQUs7UUFDOUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUU5QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM3RSxJQUFJLElBQUksRUFBRTtnQkFDUixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ2QsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO2dCQUV0QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEtBQWEsRUFBRSxFQUFFO29CQUN2QyxLQUFLLElBQUksR0FBRyxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxDQUFDO29CQUUzQyxJQUFJLENBQUMsS0FBSyxFQUFFO3dCQUNWLGFBQWEsR0FBRyxLQUFLLENBQUM7cUJBQ3ZCO29CQUVELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUssR0FBRyxVQUFVLEVBQUU7d0JBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO3dCQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztxQkFDM0I7b0JBRUQsSUFBSSxhQUFhLEdBQUcsVUFBVSxFQUFFO3dCQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztxQkFDdkI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztnQkFDL0IsSUFBSSxJQUFJLEVBQUU7b0JBQ1IsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7d0JBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQzFGO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO3FCQUN2QjtpQkFDRjtnQkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVPLFFBQVE7UUFDZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLE1BQU0sRUFBRTtnQkFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2FBQzVDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9EO1NBQ0Y7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtZQUM3RixJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDMUY7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ3pHO1NBQ0Y7YUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssaUJBQWlCLENBQUMsUUFBUSxFQUFFO1lBQ3RELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUN6RzthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUM5RDtRQUNELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1lBQzdDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsUUFBYTtRQUMvQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDN0QsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDakI7UUFFRCxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdGLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO1lBQzlDLElBQUksQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztTQUMvRzthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRUQsSUFBYyxVQUFVO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7SUFDckQsQ0FBQztJQUVTLGNBQWMsQ0FBQyxZQUE2QjtRQUNwRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDdkIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNQO0lBQ0gsQ0FBQztJQUVELElBQWMsVUFBVTtRQUN0QixPQUFPLENBQ0wsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUs7WUFDbEUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUNoRixDQUFDO0lBQ0osQ0FBQztJQUlEOztPQUVHO0lBQ0ssdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLG1DQUFtQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUM5RyxDQUFDOytHQS9kVSxxQkFBcUIsa0JBc01WLG9DQUFvQyx3S0FLaEQsV0FBVzttR0EzTVYscUJBQXFCLGtuQ0EyS3JCLHdCQUF3QixxRUNqTnJDLG14VEFvTUE7OzRGRDlKYSxxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07OzBCQXlNNUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxvQ0FBb0M7OzBCQUd2RCxRQUFROzswQkFBSSxJQUFJOzswQkFFaEIsTUFBTTsyQkFBQyxXQUFXOzRDQXJNWixTQUFTO3NCQUFqQixLQUFLO2dCQU9HLGVBQWU7c0JBQXZCLEtBQUs7Z0JBT0csUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csVUFBVTtzQkFBbEIsS0FBSztnQkFPRyxLQUFLO3NCQUFiLEtBQUs7Z0JBT08sU0FBUztzQkFBckIsS0FBSztnQkFTRyxJQUFJO3NCQUFaLEtBQUs7Z0JBT0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQU9xQixPQUFPO3NCQUFqQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFRaEIsUUFBUTtzQkFBaEIsS0FBSztnQkFRRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUcsY0FBYztzQkFBdEIsS0FBSztnQkFRRyxTQUFTO3NCQUFqQixLQUFLO2dCQVVHLGdCQUFnQjtzQkFEeEIsV0FBVzt1QkFBQyxZQUFZOztzQkFDeEIsS0FBSztnQkFRRyxRQUFRO3NCQUFoQixLQUFLO2dCQVFPLE1BQU07c0JBQWxCLEtBQUs7Z0JBV0csWUFBWTtzQkFBcEIsS0FBSztnQkFRRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVpQixnQkFBZ0I7c0JBQXZDLFNBQVM7dUJBQUMsV0FBVztnQkFDSyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0gsWUFBWTtzQkFBakMsU0FBUzt1QkFBQyxTQUFTO2dCQUNvQyx3QkFBd0I7c0JBQS9FLFNBQVM7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFJlbmRlcmVyMixcbiAgU2VsZixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgbWFwLCBSZXBsYXlTdWJqZWN0LCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZVV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXV0b2NvbXBsZXRlLXV0aWxzJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZSwgQXV0b2NvbXBsZXRlVHlwZSwgRHJvcGRvd25WYXJpYXRpb24sIFBhZGRpbmcsIFRpbWVvdXQgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS5tb2RlbCc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9sb2NhbGl6YXRpb24vbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1jb25mbGljdGluZy1saWZlY3ljbGVcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBEb0NoZWNrIHtcbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBpdGVtc0xpc3RcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIGl0ZW1zIHRvIGRpc3BsYXkgaW4gdGhlIGF1dG9jb21wbGV0ZS5cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgaXRlbXNMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgc3VnZ2VzdGlvbnNMaXN0XG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzdWdnZXN0aW9ucyB0byBkaXNwbGF5IGluIHRoZSBhdXRvY29tcGxldGUuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25zTGlzdDogYW55W10gPSBbXTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IGRpc2FibGVkXG4gICAqIEBkZXNjcmlwdGlvbiBJZiBgdHJ1ZWAsIHRoZSBhdXRvY29tcGxldGUgaXMgZGlzYWJsZWQuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBhbGxvd0FkZFxuICAgKiBAZGVzY3JpcHRpb24gSWYgYHRydWVgLCBhbGxvd3MgYWRkaW5nIG5ldyB2YWx1ZXMgdG8gdGhlIGF1dG9jb21wbGV0ZS5cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYWxsb3dBZGQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgdGV4dEZpZWxkXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgZmllbGQgdG8gYmUgdXNlZCBhcyB0aGUgZGlzcGxheSB0ZXh0IGluIHRoZSBhdXRvY29tcGxldGUuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHRleHRGaWVsZCA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgdmFsdWVGaWVsZFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGZpZWxkIHRvIGJlIHVzZWQgYXMgdGhlIHZhbHVlIGluIHRoZSBhdXRvY29tcGxldGUuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHZhbHVlRmllbGQgPSAnJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IGxhYmVsXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgbGFiZWwgZm9yIHRoZSBhdXRvY29tcGxldGUgaW5wdXQuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSB2YWx1ZVxuICAgKiBAZGVzY3JpcHRpb24gVGhlIHNlbGVjdGVkIHZhbHVlKHMpIGluIHRoZSBhdXRvY29tcGxldGUuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNldCBpdGVtVmFsdWUodjogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLmlzQXJyYXkodikgPyB2IDogdiA/IFt2XSA6IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSB0eXBlXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiB0aGUgYXV0b2NvbXBsZXRlICgnc2luZ2xlJywgJ211bHRpJywgZXRjLikuXG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6IEF1dG9jb21wbGV0ZVR5cGUgPSAnbXVsdGknO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgbWluQ2hhcmFjdGVyc1NlYXJjaFxuICAgKiBAZGVzY3JpcHRpb24gVGhlIG1pbmltdW0gY2hhcmFjdGVycyB0byB0cmlnZ2VyIHNlYXJjaC5cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgbWluQ2hhcmFjdGVyc1NlYXJjaCA9IDM7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSB2YXJpYW50XG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFyaWFudCBvZiBBdXRvY29tcGxldGVcbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdmFyaWFudCA9IERyb3Bkb3duVmFyaWF0aW9uLkFVVE9DT01QTEVURTtcblxuICAvKipcbiAgICogVGhlIGxhbmd1YWdlIHRvIGJlIHVzZWRcbiAgICogQHByb3BlcnR5IGxhbmd1YWdlXG4gICAqIEB0eXBlIHtMYW5ndWFnZX1cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgbGFuZ3VhZ2UgPSBMYW5ndWFnZVNlcnZpY2UuZGVmYXVsdExhbmd1YWdlO1xuXG4gIC8qKlxuICAgKiBTaG93IHJlc2VydmVkIGNvbnRlbnQgYmVsb3cgZm9ybSBmaWVsZFxuICAgKiBAcHJvcGVydHkgc2hvd0JvdHRvbUNvbnRlbnRcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNob3dCb3R0b21Db250ZW50ID0gdHJ1ZTtcblxuICAvKipcbiAgICogUmV0dXJuIGZ1bGwgb2JqZWN0IGlmIHRydWVcbiAgICogQHByb3BlcnR5IHZhbHVlUHJpbWl0aXZlXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZVByaW1pdGl2ZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0b3Igb2YgdGhlIGF1dG9jb21wbGV0ZSB3aWR0aFxuICAgKiBAcHJvcGVydHkgZnVsbFdpZHRoXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBmdWxsV2lkdGggPSBmYWxzZTtcblxuICAvKipcbiAgICpcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWVcbiAgICpcbiAgICogQHR5cGUge0FwcGxpY2F0aW9uVGhlbWV9XG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci50aGVtZScpXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuXG4gIC8qKlxuICAgKiBBdXRvY29tcGxldGUgaXMgcmVxdWlyZWQgb3Igbm90XG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5wdXQgZmllbGQgZXJyb3JzXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmdbXX1cbiAgICogQG1lbWJlcm9mIEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2V0IGVycm9ycyhlcnJvcnM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5zYWZlRXJyb3JzID0gZXJyb3JzPy5maWx0ZXIoQm9vbGVhbikubWFwKGVycm9yID0+IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGVycm9yKSk7XG4gIH1cblxuICAvKipcbiAgICogQ29sb3Igb2YgdGhlIG9wdGlvbiBob3Zlci5cbiAgICogRGVmYXVsdHMgdG8gVGVzdCBHb3JpbGxhIHByaW1hcnkgY29sb3IuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGNvbXBhbnlDb2xvciA9ICcjRkZGMkZDJztcblxuICAvKipcbiAgICogSGlkZSBpbi1idWlsZCBlcnJvcnMgZm9yIFJlYWN0aXZlIEZvcm1zXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGhpZGVCdWlsdEluRXJyb3JzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEhpZGUgbGFiZWwgaW4gZXJyb3JzXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGhpZGVMYWJlbEluRXJyb3JzID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc2VhcmNoVGV4dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1GaWVsZCcpIGZvcm1GaWVsZEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd0YWdDb250YWluZXInKSB0YWdDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd0cmlnZ2VyJykgYXV0b2NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgeyBzdGF0aWM6IGZhbHNlIH0pIGNka1ZpcnR1YWxTY3JvbGxWaWV3UG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuICBwcm90ZWN0ZWQgc2FmZUVycm9yczogU2FmZUh0bWxbXSA9IFtdO1xuICBwcm90ZWN0ZWQgdmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIGlucHV0VmFsdWU6IGFueSA9ICcnO1xuICBwcm90ZWN0ZWQgaXNJbnB1dEZvY3VzID0gZmFsc2U7XG4gIHByb3RlY3RlZCBhdXRvY29tcGxldGVUeXBlID0gQXV0b2NvbXBsZXRlO1xuICBwcm90ZWN0ZWQgaXNPdmVyTGFwcGluZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgaXNPdmVybGFwQ2hlY2tpbmcgPSB0cnVlO1xuICBwcm90ZWN0ZWQgb3ZlcmxhcEluZGV4ID0gMDtcbiAgcHJvdGVjdGVkIGlucHV0VmFsdWVTZWFyY2gkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKTtcbiAgcHJvdGVjdGVkIHVzZXJJbnB1dCQgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xuICBwcm90ZWN0ZWQgZmlsdGVyZWRJdGVtc0xpc3QkID0gdGhpcy5pbnB1dFZhbHVlU2VhcmNoJC5waXBlKFxuICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgbWFwKGlucHV0VmFsdWUgPT5cbiAgICAgIGlucHV0VmFsdWUubGVuZ3RoID8gQXV0b2NvbXBsZXRlVXRpbHMuZmlsdGVySXRlbXModGhpcy5pdGVtc0xpc3QsIGlucHV0VmFsdWUsIHRoaXMudGV4dEZpZWxkKSA6IG51bGxcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCBmaWx0ZXJlZFN1Z2dlc3Rpb25MaXN0JCA9IHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQucGlwZShcbiAgICBtYXAoaW5wdXRWYWx1ZSA9PlxuICAgICAgaW5wdXRWYWx1ZS5sZW5ndGggPyBBdXRvY29tcGxldGVVdGlscy5maWx0ZXJJdGVtcyh0aGlzLnN1Z2dlc3Rpb25zTGlzdCwgaW5wdXRWYWx1ZSwgdGhpcy50ZXh0RmllbGQpIDogbnVsbFxuICAgIClcbiAgKTtcbiAgcHJvdGVjdGVkIHNlYXJjaFJlc3VsdCQgPSB0aGlzLmlucHV0VmFsdWVTZWFyY2gkLnBpcGUobWFwKGlucHV0VmFsdWUgPT4gISFpbnB1dFZhbHVlLnRyaW0oKSkpO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRpb25Db250ZXh0ID0gJ0FVVE9DT01QTEVURS4nO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzUGxhdGZvcm0gPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIHJlbmRlcmVyMjogUmVuZGVyZXIyLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55XG4gICkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWFyayBjb21wb25lbnQgdmlldyBhcyBkaXJ0eSB3aGVuIHRvdWNoZWQgcHJvZ3JhbW1hdGljYWxseSB3aXRoIG1hcmtBc1RvdWNoZWQvbWFya0FsbEFzVG91Y2hlZCBvciBlcnJvcnNcbiAgICogdG8gZGlzcGxheSB2YWxpZGF0aW9uIGVycm9ycyB0aGF0IG1pZ2h0IGhhcHBlbiAoZS5nLiByZXF1aXJlZClcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tY29uZmxpY3RpbmctbGlmZWN5Y2xlXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LnRvdWNoZWQgfHwgdGhpcy5uZ0NvbnRyb2w/LmVycm9ycykge1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1jb25mbGljdGluZy1saWZlY3ljbGVcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuaXRlbXNMaXN0ID0gQXV0b2NvbXBsZXRlVXRpbHMuZXhjbHVkZVN1Z2dlc3Rpb25zKHRoaXMuaXRlbXNMaXN0LCB0aGlzLnN1Z2dlc3Rpb25zTGlzdCwgdGhpcy52YWx1ZUZpZWxkKTtcbiAgICB0aGlzLmluaXRWYWx1ZSgpO1xuXG4gICAgaWYgKHRoaXMuaXNQbGF0Zm9ybSAmJiBjaGFuZ2VzWydjb21wYW55Q29sb3InXSkge1xuICAgICAgdGhpcy5zZXRDb21wYW55Q29sb3JWYXJpYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tY29uZmxpY3RpbmctbGlmZWN5Y2xlXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50eXBlICE9PSBBdXRvY29tcGxldGUuTEFSR0UpIHtcbiAgICAgIHRoaXMuY2hlY2tPdmVybGFwKFRpbWVvdXQuVklFV19JTklUSUFMSVpFRF9DT01QT05FTlRfTE9BRCwgdHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuaXNQbGF0Zm9ybSAmJiB0aGlzLnNldENvbXBhbnlDb2xvclZhcmlhYmxlKCk7XG4gIH1cblxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICBvblRvdWNoID0gKCkgPT4ge307XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52YWx1ZVByaW1pdGl2ZSAmJiB0aGlzLnRleHRGaWVsZCAmJiB0aGlzLnZhbHVlRmllbGQpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IEF1dG9jb21wbGV0ZS5TSU5HTEUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaXRlbXNMaXN0LmZpbmQoaXRlbSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT09IHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBbdGhpcy5pdGVtc0xpc3QuZmluZChpdGVtID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PT0gdmFsdWUpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICB0aGlzLmluaXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uT3B0aW9uU2VsZWN0ZWQoZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gZXZlbnQub3B0aW9uLnZhbHVlO1xuICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLmNyZWF0ZVZhbHVlSXRlbShpbnB1dFZhbHVlLCB0aGlzLnRleHRGaWVsZCwgdGhpcy52YWx1ZUZpZWxkKTtcbiAgICB0aGlzLmFkZE5ld1ZhbHVlKGl0ZW1WYWx1ZSk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuTVVMVEkpIHtcbiAgICAgIHRoaXMuY2hlY2tPdmVybGFwKCk7XG4gICAgfVxuXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgaWYgKHRoaXMudHlwZSAhPT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLlNJTkdMRSkge1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLnRyYW5zZm9ybURpc3BsYXlWYWx1ZSh0aGlzLnZhbHVlLCB0aGlzLnRleHRGaWVsZCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIHRoaXMub25VcGRhdGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbk9wdGlvblJlbW92ZWQob3B0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXV0b2NvbXBsZXRlLmNsb3NlUGFuZWwoKSwgMCk7XG4gICAgY29uc3QgZm91bmRWYWx1ZSA9IHRoaXMudmFsdWUuZmluZCgodjogYW55KSA9PiB2ID09PSBvcHRpb24pO1xuXG4gICAgaWYgKGZvdW5kVmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcigodjogYW55KSA9PiB2ICE9PSBvcHRpb24pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5NVUxUSSkge1xuICAgICAgdGhpcy5jaGVja092ZXJsYXAoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsdWUubGVuZ3RoKSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICB0aGlzLm9uVXBkYXRlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25JbnB1dENoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICB0aGlzLnVzZXJJbnB1dCQubmV4dChpbnB1dFZhbHVlKTtcbiAgICBpZiAoaW5wdXRWYWx1ZS5sZW5ndGggPj0gdGhpcy5taW5DaGFyYWN0ZXJzU2VhcmNoKSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWVTZWFyY2gkLm5leHQoaW5wdXRWYWx1ZSk7XG4gICAgICB0aGlzLnNlYXJjaFRleHRDaGFuZ2UuZW1pdChpbnB1dFZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlU2VhcmNoJC5uZXh0KCcnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25DbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICB0aGlzLnZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMuaXNBcnJheSh0aGlzLnZhbHVlKSA/IFtdIDogJyc7XG4gICAgdGhpcy5pc092ZXJMYXBwaW5nID0gZmFsc2U7XG4gICAgdGhpcy5vdmVybGFwSW5kZXggPSAwO1xuICAgIHRoaXMub25VcGRhdGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWZpbGxJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnR5cGUgPT09IHRoaXMuYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEUgJiYgIXRoaXMuaW5wdXRWYWx1ZSkge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMudHJhbnNmb3JtRGlzcGxheVZhbHVlKHRoaXMudmFsdWUsIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZVNlYXJjaCQubmV4dCgnJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlucHV0VmFsdWUgJiYgdGhpcy52YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSAnICc7XG4gICAgfVxuXG4gICAgdGhpcy5pc0lucHV0Rm9jdXMgPSBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnb3RvVXAoKSB7XG4gICAgaWYgKHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdQb3J0KSB7XG4gICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3UG9ydC5zY3JvbGxUb0luZGV4KDApO1xuICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld1BvcnQuY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1cyA9IHRydWU7XG5cbiAgICBjb25zdCBpbnB1dFZhbHVlID0gQXV0b2NvbXBsZXRlVXRpbHMuaXNBcnJheSh0aGlzLmlucHV0VmFsdWUpID8gdGhpcy5pbnB1dFZhbHVlWzBdIDogdGhpcy5pbnB1dFZhbHVlO1xuXG4gICAgaWYgKEF1dG9jb21wbGV0ZVV0aWxzLmlzUHJpbWl0aXZlKGlucHV0VmFsdWUpKSB7XG4gICAgICBpZiAoaW5wdXRWYWx1ZT8ubWF0Y2goL15cXHMrL2dtKSkge1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnRyaW1TdGFydCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaW5wdXRWYWx1ZVt0aGlzLnRleHRGaWVsZF0/Lm1hdGNoKC9eXFxzKy9nbSkpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gaW5wdXRWYWx1ZVt0aGlzLnRleHRGaWVsZF0udHJpbVN0YXJ0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja092ZXJsYXAoZGVsYXkgPSBUaW1lb3V0LlZJRVdfSU5JVElBTElaRURfQUZURVJfQUNUSU9OLCBpbml0ID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3ZlckxhcHBpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmlzT3ZlcmxhcENoZWNraW5nID0gdHJ1ZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXRXaWR0aCA9IHRoaXMuaW5wdXRXaWR0aDtcbiAgICAgIGNvbnN0IHRhZ3MgPSB0aGlzLnRhZ0NvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudmFsdWUtdGFnJyk7XG4gICAgICBpZiAodGFncykge1xuICAgICAgICBsZXQgd2lkdGggPSAwO1xuICAgICAgICBsZXQgZmlyc3RUYWdXaWR0aCA9IDA7XG5cbiAgICAgICAgdGFncy5mb3JFYWNoKCh0YWc6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgIHdpZHRoICs9IHRhZy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcblxuICAgICAgICAgIGlmICghaW5kZXgpIHtcbiAgICAgICAgICAgIGZpcnN0VGFnV2lkdGggPSB3aWR0aDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXRoaXMuaXNPdmVyTGFwcGluZyAmJiB3aWR0aCA+IGlucHV0V2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPdmVyTGFwcGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXBJbmRleCA9IGluZGV4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaXJzdFRhZ1dpZHRoID4gaW5wdXRXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGFwSW5kZXggPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaXNPdmVybGFwQ2hlY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgaWYgKGluaXQpIHtcbiAgICAgICAgICBpZiAodGhpcy50eXBlID09PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSBBdXRvY29tcGxldGVVdGlscy50cmFuc2Zvcm1EaXNwbGF5VmFsdWUodGhpcy52YWx1ZVswXSwgdGhpcy50ZXh0RmllbGQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSAnICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH0sIGRlbGF5KTtcbiAgfVxuXG4gIHByaXZhdGUgb25VcGRhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFZhbHVlU2VhcmNoJC5uZXh0KCcnKTtcbiAgICB0aGlzLnVzZXJJbnB1dCQubmV4dCgnJyk7XG4gICAgaWYgKCF0aGlzLnZhbHVlUHJpbWl0aXZlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy50eXBlID09PSBBdXRvY29tcGxldGUuU0lOR0xFKSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZS5tYXAoKHY6IGFueSkgPT4gdlt0aGlzLnZhbHVlRmllbGRdKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRWYWx1ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50eXBlID09PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFICYmIHRoaXMudmFyaWFudCAhPT0gRHJvcGRvd25WYXJpYXRpb24uRFJPUERPV04pIHtcbiAgICAgIGlmIChBdXRvY29tcGxldGVVdGlscy5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IEF1dG9jb21wbGV0ZVV0aWxzLnRyYW5zZm9ybURpc3BsYXlWYWx1ZSh0aGlzLnZhbHVlWzBdLCB0aGlzLnRleHRGaWVsZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLnZhbHVlID8gQXV0b2NvbXBsZXRlVXRpbHMudHJhbnNmb3JtRGlzcGxheVZhbHVlKHRoaXMudmFsdWUsIHRoaXMudGV4dEZpZWxkKSA6ICcnO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy52YXJpYW50ID09PSBEcm9wZG93blZhcmlhdGlvbi5EUk9QRE9XTikge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy52YWx1ZSA/IEF1dG9jb21wbGV0ZVV0aWxzLnRyYW5zZm9ybURpc3BsYXlWYWx1ZSh0aGlzLnZhbHVlLCB0aGlzLnRleHRGaWVsZCkgOiAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA/ICcgJyA6ICcnO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSB0aGlzLmF1dG9jb21wbGV0ZVR5cGUuTVVMVEkpIHtcbiAgICAgIHRoaXMuY2hlY2tPdmVybGFwKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGROZXdWYWx1ZShuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHlwZSAhPT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLlNJTkdMRSAmJiAhdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGZvdW5kRHVwbGljYXRlID0gQXV0b2NvbXBsZXRlVXRpbHMuZmluZER1cGxpY2F0ZSh0aGlzLnZhbHVlLCBuZXdWYWx1ZSwgdGhpcy50ZXh0RmllbGQpO1xuXG4gICAgaWYgKHRoaXMudHlwZSAhPT0gdGhpcy5hdXRvY29tcGxldGVUeXBlLlNJTkdMRSkge1xuICAgICAgdGhpcy52YWx1ZSA9IGZvdW5kRHVwbGljYXRlID8gdGhpcy52YWx1ZS5maWx0ZXIoKHY6IGFueSkgPT4gdiAhPT0gZm91bmREdXBsaWNhdGUpIDogWy4uLnRoaXMudmFsdWUsIG5ld1ZhbHVlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgaXNEcm9wZG93bigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYW50ID09PSBEcm9wZG93blZhcmlhdGlvbi5EUk9QRE9XTjtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNoZXZyb25DbGljayhhdXRvY29tcGxldGU6IE1hdEF1dG9jb21wbGV0ZSk6IHZvaWQge1xuICAgIGlmIChhdXRvY29tcGxldGUuaXNPcGVuKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGUuY2xvc2VQYW5lbCgpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBpbnB1dFdpZHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZm9ybUZpZWxkRWxlbWVudD8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAtXG4gICAgICAodGhpcy5pc0Ryb3Bkb3duID8gUGFkZGluZy5EUk9QRE9XTl9DT05UQUlORVIgOiBQYWRkaW5nLkFVVE9DT01QTEVURV9DT05UQUlORVIpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFja0J5Rm4gPSAoaW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSkgPT4gdmFsdWUuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eTtcblxuICAvKipcbiAgICogQWRkaW5nIGNvbXBhbnkgY29sb3IgdmFyaWFibGUgdG8gdGhlIGJvZHkgdG8gc3R5bGUgb3ZlcmxheSBjb250YWluZXIgdGhhdCdzIG91dCBvZiB0aGUgY29tcG9uZW50IHNjb3BlLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXRDb21wYW55Q29sb3JWYXJpYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyMi5zZXRQcm9wZXJ0eShkb2N1bWVudC5ib2R5LCAnc3R5bGUnLCBgLS11aS1hdXRvY29tcGxldGUtb3B0aW9uLWNvbG9yOiAke3RoaXMuY29tcGFueUNvbG9yfTtgKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyXCIgW25nQ2xhc3NdPVwieyAnZnVsbC13aWR0aCc6IGZ1bGxXaWR0aCwgZGlzYWJsZWQ6IGRpc2FibGVkIH1cIj5cbiAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgIFtjb2xvcl09XCIoc2FmZUVycm9ycy5sZW5ndGggfHwgKG5nQ29udHJvbD8uZXJyb3JzICYmIG5nQ29udHJvbD8udG91Y2hlZCApKSA/ICd3YXJuJyA6ICdhY2NlbnQnXCJcbiAgICAgIFthcHBlYXJhbmNlXT1cIidvdXRsaW5lJ1wiXG4gICAgICBbbmdDbGFzc109XCJ7ICdsYXJnZS1zaXplJzogdHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5MQVJHRSwgJ2hpZGUtYm90dG9tLWNvbnRlbnQnOiAhc2hvd0JvdHRvbUNvbnRlbnQgfVwiXG4gICAgPlxuICAgICAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsXCI+e3sgbGFiZWwgfX0gPHNwYW4gKm5nSWY9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9tYXQtbGFiZWw+XG4gICAgICA8ZGl2ICNmb3JtRmllbGQgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQtaXRlbXNcIlxuICAgICAgICAgICN0YWdDb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgKHR5cGUgPT09IGF1dG9jb21wbGV0ZVR5cGUuTEFSR0UgJiYgdGhpcy52YWx1ZSkgfHxcbiAgICAgICAgICAgICghKGlucHV0VmFsdWUgJiYgdGhpcy5pc0lucHV0Rm9jdXMpICYmIHRoaXMudmFsdWUgJiYgdHlwZSAhPT0gYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEUpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx1aS10YWdcbiAgICAgICAgICAgIGNsYXNzPVwidmFsdWUtdGFnXCJcbiAgICAgICAgICAgIFtpZF09XCIndWktdGFnLScgKyBpXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2YWx1ZUl0ZW0gb2YgdmFsdWU7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgW2xhYmVsXT1cInZhbHVlSXRlbSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZFwiXG4gICAgICAgICAgICBbYWxsb3dDbG9zZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiaXNPdmVyTGFwcGluZyAmJiBpID49IG92ZXJsYXBJbmRleCA/ICdub25lJyA6ICdibG9jaydcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnb3ZlcmxhcC10YWcnOiBpc092ZXJsYXBDaGVja2luZyAmJiBvdmVybGFwSW5kZXggJiYgaSA+PSBvdmVybGFwSW5kZXggJiYgdHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5NVUxUSVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAoY2xvc2UpPVwib25PcHRpb25SZW1vdmVkKHZhbHVlSXRlbSlcIlxuICAgICAgICAgID48L3VpLXRhZz5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPdmVyTGFwcGluZ1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvdmVybGFwSW5kZXg7IGVsc2Ugb3ZlcmxhcFRhZ1wiIGNsYXNzPVwib3ZlcmxhcC1jb3VudFwiPlxuICAgICAgICAgICAgICB7eyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ1NFTEVDVEVEX0FNT1VOVCcpIHwgdWlUcmFuc2xhdGUgOiBsYW5ndWFnZSA6IHsgbnVtYmVyU2VsZWN0ZWQ6ICh2YWx1ZSB8IHNsaWNlOiBvdmVybGFwSW5kZXgpLmxlbmd0aCB9IH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3ZlcmxhcFRhZz5cbiAgICAgICAgICAgICAgPHVpLXRhZyBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW3JlYWRPbmx5XT1cInRydWVcIiBbbGFiZWxdPVwiJysnICsgKHZhbHVlIHwgc2xpY2U6IG92ZXJsYXBJbmRleCkubGVuZ3RoXCI+PC91aS10YWc+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgI3RyaWdnZXI9XCJtYXRBdXRvY29tcGxldGVUcmlnZ2VyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3Vuc2V0LW1hcmdpbic6IHRoaXMudmFsdWUgJiYgdHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5MQVJHRSB9XCJcbiAgICAgICAgICAoYmx1cik9XCJyZWZpbGxJbnB1dCgpXCJcbiAgICAgICAgICAoZm9jdXNpbik9XCJvbkZvY3VzKClcIlxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8dWktaWNvblxuICAgICAgICAqbmdJZj1cInZhbHVlICYmIHZhbHVlLmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwicmVtb3ZlLXNlbGVjdGVkIGxhbGFsYWxcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdsYXJnZS1pbnB1dC1pY29uJzogdHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5MQVJHRSB9XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiXG4gICAgICAgIFtzaXplXT1cIicyNCdcIlxuICAgICAgICBbY29sb3JdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ2luaGVyaXQnIDogJ3JlYnJhbmQtYmxhY2snXCJcbiAgICAgICAgW25hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0Nsb3NlJyA6ICdDbG9zZS1pbi1saW5lJ1wiXG4gICAgICA+PC91aS1pY29uPlxuXG4gICAgICA8dWktaWNvblxuICAgICAgICBjbGFzcz1cImFycm93LXN0YXRlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBvcGVuZWQ6IGF1dG9jb21wbGV0ZS5pc09wZW4sICdsYXJnZS1pbnB1dC1pY29uJzogdHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5MQVJHRSB9XCJcbiAgICAgICAgKm5nSWY9XCJpc0Ryb3Bkb3duXCJcbiAgICAgICAgW3NpemVdPVwiJzI0J1wiXG4gICAgICAgIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJyA/ICdBcnJvdy1jaGV2cm9uLWRvd24taW4tbGluZScgOiAnQXJyb3dfZG93bidcIlxuICAgICAgICAoY2xpY2spPVwib25DaGV2cm9uQ2xpY2soYXV0b2NvbXBsZXRlKVwiXG4gICAgICA+PC91aS1pY29uPlxuXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZVxuICAgICAgICAjYXV0b2NvbXBsZXRlXG4gICAgICAgIFtjbGFzc109XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cIm9uT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlUmlwcGxlXT1cImFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJ1wiXG4gICAgICAgIFtoaWRlU2luZ2xlU2VsZWN0aW9uSW5kaWNhdG9yXT1cImZhbHNlXCJcbiAgICAgICAgKG9wZW5lZCk9XCJnb3RvVXAoKVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKHNlYXJjaFJlc3VsdCQgfCBhc3luYylcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRHJvcGRvd247IGVsc2UgZHJvcGRvd25MaXN0XCI+XG4gICAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ1NVR0dFU1RFRCcpIHwgdWlUcmFuc2xhdGUgOiBsYW5ndWFnZSB8IHVwcGVyY2FzZVwiICpuZ0lmPVwic3VnZ2VzdGlvbnNMaXN0Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLW9wdGlvbic6IHN1Z2dlc3RlZCB8IGluY2x1ZGVzOiB2YWx1ZSB9XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3VnZ2VzdGVkIG9mIHN1Z2dlc3Rpb25zTGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInN1Z2dlc3RlZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBbc2VsZWN0VGV4dF09XCJ1c2VySW5wdXQkIHwgYXN5bmNcIj57eyBzdWdnZXN0ZWQgfCB0cmFuc2Zvcm1JdGVtOiB0ZXh0RmllbGQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdDaGVjaycgOiAnQ2hlY2staW4tbGluZSdcIj48L3VpLWljb24+XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LW9wdGdyb3VwPlxuXG4gICAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ1NFTEVDVEVEJykgfCB1aVRyYW5zbGF0ZSA6IGxhbmd1YWdlIHwgdXBwZXJjYXNlXCIgKm5nSWY9XCJ2YWx1ZT8ubGVuZ3RoICYmIHR5cGUgIT09IGF1dG9jb21wbGV0ZVR5cGUuU0lOR0xFXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtb3B0aW9uJzogaXRlbSB8IGluY2x1ZGVzOiB2YWx1ZSB9XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2YWx1ZVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0NoZWNrJyA6ICdDaGVjay1pbi1saW5lJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgIDxtYXQtb3B0Z3JvdXAgW2xhYmVsXT1cIih0cmFuc2xhdGlvbkNvbnRleHQgKyAnU0VMRUNURUQnKSB8IHVpVHJhbnNsYXRlIDogbGFuZ3VhZ2UgfCB1cHBlcmNhc2VcIiAqbmdJZj1cInZhbHVlPy5sZW5ndGggJiYgdHlwZSA9PT0gYXV0b2NvbXBsZXRlVHlwZS5TSU5HTEVcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3NlbGVjdGVkLW9wdGlvbidcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBbc2VsZWN0VGV4dF09XCJ1c2VySW5wdXQkIHwgYXN5bmNcIj57eyB2YWx1ZSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0NoZWNrJyA6ICdDaGVjay1pbi1saW5lJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duTGlzdD5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLW9wdGlvbic6IGl0ZW0gfCBpbmNsdWRlczogdmFsdWUgfVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zTGlzdFwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwidXNlcklucHV0JCB8IGFzeW5jXCI+e3sgaXRlbSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICdDaGVjaycgOiAnQ2hlY2staW4tbGluZSdcIj48L3VpLWljb24+XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZFN1Z2dlc3Rpb25MaXN0JCB8IGFzeW5jIGFzIGZpbHRlcmVkU3VnZ2VzdGlvbkxpc3RcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRJdGVtc0xpc3QkIHwgYXN5bmMgYXMgZmlsdGVyZWRJdGVtc0xpc3RcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0Z3JvdXAgW2xhYmVsXT1cIih0cmFuc2xhdGlvbkNvbnRleHQgKyAnU1VHR0VTVEVEJykgfCB1aVRyYW5zbGF0ZSA6IGxhbmd1YWdlIHwgdXBwZXJjYXNlXCIgKm5nSWY9XCJmaWx0ZXJlZFN1Z2dlc3Rpb25MaXN0Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLW9wdGlvbic6IGl0ZW0gfCBpbmNsdWRlczogdmFsdWUgfVwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRTdWdnZXN0aW9uTGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwidXNlcklucHV0JCB8IGFzeW5jXCI+e3sgaXRlbSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0NoZWNrJyA6ICdDaGVjay1pbi1saW5lJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmlsdGVyZWRTdWdnZXN0aW9uTGlzdC5sZW5ndGg7IGVsc2Ugc2hvd0l0ZW1MaXN0V2l0aEdyb3VwXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtb3B0aW9uJzogaXRlbSB8IGluY2x1ZGVzOiB2YWx1ZSB9XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zTGlzdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwidXNlcklucHV0JCB8IGFzeW5jXCI+e3sgaXRlbSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0NoZWNrJyA6ICdDaGVjay1pbi1saW5lJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0l0ZW1MaXN0V2l0aEdyb3VwPlxuICAgICAgICAgICAgICA8bWF0LW9wdGdyb3VwIFtsYWJlbF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ0FMTF9JVEVNUycpIHwgdWlUcmFuc2xhdGUgOiBsYW5ndWFnZSB8IHVwcGVyY2FzZVwiICpuZ0lmPVwiZmlsdGVyZWRJdGVtc0xpc3QubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLW9wdGlvbic6IGl0ZW0gfCBpbmNsdWRlczogdmFsdWUgfVwiXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zTGlzdFwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3NlbGVjdFRleHRdPVwidXNlcklucHV0JCB8IGFzeW5jXCI+e3sgaXRlbSB8IHRyYW5zZm9ybUl0ZW06IHRleHRGaWVsZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDx1aS1pY29uIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIiBbbmFtZV09XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYycgPyAnQ2hlY2snIDogJ0NoZWNrLWluLWxpbmUnXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpbHRlcmVkSXRlbXNMaXN0Lmxlbmd0aCAmJiAhZmlsdGVyZWRTdWdnZXN0aW9uTGlzdC5sZW5ndGggJiYgaW5wdXRWYWx1ZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dBZGQgJiYgIWlzRHJvcGRvd247IGVsc2Ugbm90Rm91bmRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaW5wdXRWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgKCdDT01NT04uQUREJykgfCB1aVRyYW5zbGF0ZSA6IGxhbmd1YWdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGQtc3VnZ2VzdGlvblwiPlwie3sgaW5wdXRWYWx1ZSB9fVwiPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RGb3VuZD5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbc3R5bGUucG9pbnRlci1ldmVudHNdPVwiJ25vbmUnXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ05PX1JFU1VMVFNfRk9VTkQnKSB8IHVpVHJhbnNsYXRlIDogbGFuZ3VhZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgPG1hdC1oaW50IGNsYXNzPVwiZXJyb3JcIiAqbmdJZj1cInNhZmVFcnJvcnMubGVuZ3RoIHx8IChuZ0NvbnRyb2w/LmVycm9ycyB8IGhhc1ZhbGlkYXRpb25FcnJvcilcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNhZmVFcnJvcnMubGVuZ3RoXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yc1wiICpuZ0Zvcj1cImxldCBlcnJvciBvZiBzYWZlRXJyb3JzOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgICAgIDx1aS1pY29uIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIiBbbmFtZV09XCInRXJyb3InXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJlcnJvclwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx1aS12YWxpZGF0aW9uLWVycm9yICpuZ0lmPVwibmdDb250cm9sICYmICFoaWRlQnVpbHRJbkVycm9yc1wiIFtuZ0NvbnRyb2xdPVwibmdDb250cm9sXCIgW2xhYmVsXT1cImhpZGVMYWJlbEluRXJyb3JzID8gbnVsbCA6IGxhYmVsXCIgW2xhbmd1YWdlXT1cImxhbmd1YWdlXCI+PC91aS12YWxpZGF0aW9uLWVycm9yPlxuXG4gICAgICA8L21hdC1oaW50PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|