@dev-tcloud/tcloud-ui 0.1.23 → 2.0.0
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/.editorconfig +16 -0
- package/.vscode/extensions.json +4 -0
- package/.vscode/launch.json +20 -0
- package/.vscode/tasks.json +42 -0
- package/README.md +89 -82
- package/angular.json +147 -0
- package/karma.conf.js +44 -0
- package/ng-package.json +7 -0
- package/package.json +613 -25
- package/projects/tcloud-ui/README.md +83 -0
- package/projects/tcloud-ui/karma.conf.js +44 -0
- package/projects/tcloud-ui/ng-package.json +7 -0
- package/projects/tcloud-ui/package.json +11 -0
- package/projects/tcloud-ui/src/lib/_directives/align/align.directive.ts +42 -0
- package/projects/tcloud-ui/src/lib/_directives/directives.module.ts +21 -0
- package/projects/tcloud-ui/src/lib/_directives/el-copy/el-copy.directive.ts +78 -0
- package/projects/tcloud-ui/src/lib/_directives/hover-parent/hover-parent.directive.ts +52 -0
- package/projects/tcloud-ui/src/lib/_directives/tooltip/tooltip.directive.ts +159 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-body/tcloud-ui-accordion-body.component.html +3 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-body/tcloud-ui-accordion-body.component.scss +9 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-body/tcloud-ui-accordion-body.component.ts +34 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-title/tcloud-ui-accordion-title.component.css +31 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-title/tcloud-ui-accordion-title.component.html +17 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-title/tcloud-ui-accordion-title.component.ts +62 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-accordion/services/tcloud-ui-accordion.service.ts +46 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.component.css +11 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.component.html +3 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.component.ts +77 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.module.ts +25 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.component.html +42 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.component.scss +88 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.component.ts +94 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.module.ts +22 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-data-list/services/data-list.service.ts +42 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list-option/tcloud-ui-data-list-option.component.html +13 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list-option/tcloud-ui-data-list-option.component.scss +25 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list-option/tcloud-ui-data-list-option.component.ts +63 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.component.html +58 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.component.scss +136 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.component.ts +352 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.module.ts +26 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.ts +4 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-datepicker/datepicker/css/datepicker.min.css +1 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-datepicker/datepicker/css/style.css +4 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.component.html +45 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.component.scss +54 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.component.ts +396 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.module.ts +22 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.component.html +97 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.component.scss +160 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.component.ts +369 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.module.ts +24 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-filters/components/range-date/range-date.component.html +54 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-filters/components/range-date/range-date.component.scss +68 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-filters/components/range-date/range-date.component.ts +278 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.component.html +154 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.component.scss +75 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.component.ts +525 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.module.ts +29 -0
- package/{lib/_modules/tcloud-ui-filters/tcloud-ui-filters.d.ts → projects/tcloud-ui/src/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.ts} +12 -6
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.component.html +38 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.component.scss +40 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.component.ts +158 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.module.ts +22 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.component.html +14 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.component.scss +33 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.component.ts +69 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.module.ts +22 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.component.html +15 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.component.scss +68 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.component.ts +102 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.module.ts +19 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.component.html +9 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.component.scss +34 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.component.ts +74 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.module.ts +19 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-body/tcloud-ui-modal-body.component.html +3 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-body/tcloud-ui-modal-body.component.scss +3 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-body/tcloud-ui-modal-body.component.ts +15 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-footer/tcloud-ui-modal-footer.component.html +30 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-footer/tcloud-ui-modal-footer.component.scss +30 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-footer/tcloud-ui-modal-footer.component.ts +66 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-header/tcloud-ui-modal-header.component.html +6 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-header/tcloud-ui-modal-header.component.scss +32 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-header/tcloud-ui-modal-header.component.ts +18 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/services/tcloud-modal.service.ts +66 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.component.html +54 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.component.scss +83 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.component.ts +185 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.module.ts +32 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.ts +4 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.component.html +43 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.component.scss +118 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.component.ts +169 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.module.ts +16 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.component.html +54 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.component.scss +104 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.component.ts +178 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.module.ts +16 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.component.html +184 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.component.scss +288 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.component.ts +364 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.module.ts +24 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.component.html +6 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.component.scss +21 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.component.ts +19 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.module.ts +17 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.component.html +33 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.component.scss +117 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.component.ts +106 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.module.ts +19 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.component.html +5 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.component.scss +49 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.component.ts +81 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.module.ts +15 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.component.html +5 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.component.scss +37 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.component.ts +18 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.module.ts +19 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-content/tcloud-ui-tab-content.component.html +4 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-content/tcloud-ui-tab-content.component.scss +7 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-content/tcloud-ui-tab-content.component.ts +39 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-head/tcloud-ui-tab-head.component.html +24 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-head/tcloud-ui-tab-head.component.scss +85 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-head/tcloud-ui-tab-head.component.ts +76 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-subtitle/tcloud-ui-tab-subtitle.component.html +3 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-subtitle/tcloud-ui-tab-subtitle.component.scss +23 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-subtitle/tcloud-ui-tab-subtitle.component.ts +66 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-title/tcloud-ui-tab-title.component.html +3 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-title/tcloud-ui-tab-title.component.scss +72 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-title/tcloud-ui-tab-title.component.ts +68 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/services/tab-menu.service.ts +115 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.component.html +3 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.component.scss +13 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.component.ts +66 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.module.ts +31 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.ts +4 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-table/tcloud-ui-table.component.html +4 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-table/tcloud-ui-table.component.scss +0 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-table/tcloud-ui-table.component.spec.ts +23 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-table/tcloud-ui-table.component.ts +18 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-table/tcloud-ui-table.module.ts +19 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.component.html +24 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.component.scss +57 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.component.ts +29 -0
- package/projects/tcloud-ui/src/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.module.ts +19 -0
- package/projects/tcloud-ui/src/lib/_pipes/array-to-text.ts +26 -0
- package/projects/tcloud-ui/src/lib/_pipes/bytes.ts +29 -0
- package/projects/tcloud-ui/src/lib/_pipes/cnpj.ts +27 -0
- package/projects/tcloud-ui/src/lib/_pipes/cpf.ts +27 -0
- package/projects/tcloud-ui/src/lib/_pipes/datebr.ts +80 -0
- package/{lib/_pipes/index.d.ts → projects/tcloud-ui/src/lib/_pipes/index.ts} +1 -1
- package/projects/tcloud-ui/src/lib/_pipes/monthname.ts +23 -0
- package/projects/tcloud-ui/src/lib/_pipes/respective.ts +79 -0
- package/projects/tcloud-ui/src/lib/_pipes/statusinfo.ts +79 -0
- package/projects/tcloud-ui/src/lib/_pipes/tcloud-pipes.module.ts +46 -0
- package/projects/tcloud-ui/src/lib/_services/loading-transitions.service.ts +59 -0
- package/projects/tcloud-ui/src/lib/_services/search-in-object.service.ts +100 -0
- package/projects/tcloud-ui/src/lib/tcloud-ui.module.ts +98 -0
- package/{public-api.d.ts → projects/tcloud-ui/src/public-api.ts} +53 -1
- package/projects/tcloud-ui/src/test.ts +15 -0
- package/projects/tcloud-ui/tsconfig.lib.json +15 -0
- package/projects/tcloud-ui/tsconfig.lib.prod.json +10 -0
- package/projects/tcloud-ui/tsconfig.spec.json +17 -0
- package/scripts/copy-artifacts.js +40 -0
- package/src/app/app.component.html +177 -0
- package/src/app/app.component.scss +0 -0
- package/src/app/app.component.ts +37 -0
- package/src/app/app.module.ts +85 -0
- package/src/app/pages/ui-accordion/ui-accordion.component.html +25 -0
- package/src/app/pages/ui-accordion/ui-accordion.component.scss +0 -0
- package/src/app/pages/ui-accordion/ui-accordion.component.ts +27 -0
- package/src/app/pages/ui-array-to-text/ui-array-to-text.component.html +8 -0
- package/src/app/pages/ui-array-to-text/ui-array-to-text.component.scss +0 -0
- package/src/app/pages/ui-array-to-text/ui-array-to-text.component.ts +17 -0
- package/src/app/pages/ui-choice-issues/ui-choice-issues.component.html +8 -0
- package/src/app/pages/ui-choice-issues/ui-choice-issues.component.scss +0 -0
- package/src/app/pages/ui-choice-issues/ui-choice-issues.component.ts +21 -0
- package/src/app/pages/ui-data-list/ui-data-list.component.html +41 -0
- package/src/app/pages/ui-data-list/ui-data-list.component.scss +0 -0
- package/src/app/pages/ui-data-list/ui-data-list.component.ts +80 -0
- package/src/app/pages/ui-datepicker/ui-datepicker.component.html +27 -0
- package/src/app/pages/ui-datepicker/ui-datepicker.component.scss +0 -0
- package/src/app/pages/ui-datepicker/ui-datepicker.component.ts +17 -0
- package/src/app/pages/ui-datepicker-time/ui-datepicker-time.component.html +7 -0
- package/src/app/pages/ui-datepicker-time/ui-datepicker-time.component.scss +0 -0
- package/src/app/pages/ui-datepicker-time/ui-datepicker-time.component.ts +21 -0
- package/src/app/pages/ui-el-copy/ui-el-copy.component.html +16 -0
- package/src/app/pages/ui-el-copy/ui-el-copy.component.scss +0 -0
- package/src/app/pages/ui-el-copy/ui-el-copy.component.ts +15 -0
- package/src/app/pages/ui-filters/ui-filters.component.html +34 -0
- package/src/app/pages/ui-filters/ui-filters.component.scss +0 -0
- package/src/app/pages/ui-filters/ui-filters.component.ts +154 -0
- package/src/app/pages/ui-hover-parent/ui-hover-parent.component.html +14 -0
- package/src/app/pages/ui-hover-parent/ui-hover-parent.component.scss +22 -0
- package/src/app/pages/ui-hover-parent/ui-hover-parent.component.ts +15 -0
- package/src/app/pages/ui-input-password/ui-input-password.component.html +1 -0
- package/src/app/pages/ui-input-password/ui-input-password.component.scss +0 -0
- package/src/app/pages/ui-input-password/ui-input-password.component.ts +17 -0
- package/src/app/pages/ui-input-search/ui-input-search.component.html +19 -0
- package/src/app/pages/ui-input-search/ui-input-search.component.scss +0 -0
- package/src/app/pages/ui-input-search/ui-input-search.component.ts +100 -0
- package/src/app/pages/ui-line-step-circle/ui-line-step-circle.component.html +1 -0
- package/src/app/pages/ui-line-step-circle/ui-line-step-circle.component.scss +0 -0
- package/src/app/pages/ui-line-step-circle/ui-line-step-circle.component.ts +21 -0
- package/src/app/pages/ui-linha-logo/ui-linha-logo.component.html +1 -0
- package/src/app/pages/ui-linha-logo/ui-linha-logo.component.scss +0 -0
- package/src/app/pages/ui-linha-logo/ui-linha-logo.component.ts +15 -0
- package/src/app/pages/ui-loading-transitions/ui-loading-transitions.component.html +3 -0
- package/src/app/pages/ui-loading-transitions/ui-loading-transitions.component.scss +0 -0
- package/src/app/pages/ui-loading-transitions/ui-loading-transitions.component.ts +30 -0
- package/src/app/pages/ui-modal/ui-modal.component.html +20 -0
- package/src/app/pages/ui-modal/ui-modal.component.scss +0 -0
- package/src/app/pages/ui-modal/ui-modal.component.ts +18 -0
- package/src/app/pages/ui-multi-input/ui-multi-input.component.html +14 -0
- package/src/app/pages/ui-multi-input/ui-multi-input.component.scss +0 -0
- package/src/app/pages/ui-multi-input/ui-multi-input.component.ts +41 -0
- package/src/app/pages/ui-multi-select/ui-multi-select.component.html +14 -0
- package/src/app/pages/ui-multi-select/ui-multi-select.component.scss +0 -0
- package/src/app/pages/ui-multi-select/ui-multi-select.component.ts +51 -0
- package/src/app/pages/ui-multiples-values/ui-multiples-values.component.html +8 -0
- package/src/app/pages/ui-multiples-values/ui-multiples-values.component.scss +0 -0
- package/src/app/pages/ui-multiples-values/ui-multiples-values.component.ts +27 -0
- package/src/app/pages/ui-not-found/ui-not-found.component.html +1 -0
- package/src/app/pages/ui-not-found/ui-not-found.component.scss +0 -0
- package/src/app/pages/ui-not-found/ui-not-found.component.ts +15 -0
- package/src/app/pages/ui-number-step/ui-number-step.component.html +11 -0
- package/src/app/pages/ui-number-step/ui-number-step.component.scss +0 -0
- package/src/app/pages/ui-number-step/ui-number-step.component.ts +21 -0
- package/src/app/pages/ui-progress-bar/ui-progress-bar.component.html +15 -0
- package/src/app/pages/ui-progress-bar/ui-progress-bar.component.scss +0 -0
- package/src/app/pages/ui-progress-bar/ui-progress-bar.component.ts +21 -0
- package/src/app/pages/ui-scroll-box/ui-scroll-box.component.html +69 -0
- package/src/app/pages/ui-scroll-box/ui-scroll-box.component.scss +0 -0
- package/src/app/pages/ui-scroll-box/ui-scroll-box.component.ts +15 -0
- package/src/app/pages/ui-search-in-object/ui-search-in-object.component.html +27 -0
- package/src/app/pages/ui-search-in-object/ui-search-in-object.component.scss +0 -0
- package/src/app/pages/ui-search-in-object/ui-search-in-object.component.ts +28 -0
- package/src/app/pages/ui-tab-menu/ui-tab-menu.component.html +31 -0
- package/src/app/pages/ui-tab-menu/ui-tab-menu.component.scss +0 -0
- package/src/app/pages/ui-tab-menu/ui-tab-menu.component.ts +19 -0
- package/src/app/pages/ui-table/ui-table.component.html +37 -0
- package/src/app/pages/ui-table/ui-table.component.scss +0 -0
- package/src/app/pages/ui-table/ui-table.component.ts +15 -0
- package/src/app/pages/ui-tooltip/ui-tooltip.component.html +65 -0
- package/src/app/pages/ui-tooltip/ui-tooltip.component.scss +0 -0
- package/src/app/pages/ui-tooltip/ui-tooltip.component.ts +15 -0
- package/src/app/pages/ui-welcome/ui-welcome.component.html +6 -0
- package/src/app/pages/ui-welcome/ui-welcome.component.scss +0 -0
- package/src/app/pages/ui-welcome/ui-welcome.component.ts +19 -0
- package/src/assets/.gitkeep +0 -0
- package/src/assets/css/bootstrap.min.css +7 -0
- package/src/assets/css/style.css +8351 -0
- package/src/environments/environment.prod.ts +3 -0
- package/src/environments/environment.ts +16 -0
- package/src/favicon.ico +0 -0
- package/src/index.html +18 -0
- package/src/main.ts +12 -0
- package/src/polyfills.ts +53 -0
- package/src/test.ts +14 -0
- package/tsconfig.app.json +15 -0
- package/tsconfig.json +39 -0
- package/tsconfig.spec.json +18 -0
- package/esm2020/dev-tcloud-tcloud-ui.mjs +0 -5
- package/esm2020/lib/_directives/align/align.directive.mjs +0 -39
- package/esm2020/lib/_directives/directives.module.mjs +0 -35
- package/esm2020/lib/_directives/el-copy/el-copy.directive.mjs +0 -69
- package/esm2020/lib/_directives/hover-parent/hover-parent.directive.mjs +0 -58
- package/esm2020/lib/_directives/tooltip/tooltip.directive.mjs +0 -145
- package/esm2020/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-body/tcloud-ui-accordion-body.component.mjs +0 -35
- package/esm2020/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-title/tcloud-ui-accordion-title.component.mjs +0 -54
- package/esm2020/lib/_modules/tcloud-ui-accordion/services/tcloud-ui-accordion.service.mjs +0 -38
- package/esm2020/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.component.mjs +0 -75
- package/esm2020/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.module.mjs +0 -35
- package/esm2020/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.component.mjs +0 -87
- package/esm2020/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.module.mjs +0 -32
- package/esm2020/lib/_modules/tcloud-ui-data-list/services/data-list.service.mjs +0 -38
- package/esm2020/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list-option/tcloud-ui-data-list-option.component.mjs +0 -59
- package/esm2020/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.component.mjs +0 -317
- package/esm2020/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.mjs +0 -3
- package/esm2020/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.module.mjs +0 -37
- package/esm2020/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.component.mjs +0 -319
- package/esm2020/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.module.mjs +0 -32
- package/esm2020/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.component.mjs +0 -312
- package/esm2020/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.module.mjs +0 -40
- package/esm2020/lib/_modules/tcloud-ui-filters/components/range-date/range-date.component.mjs +0 -209
- package/esm2020/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.component.mjs +0 -491
- package/esm2020/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.mjs +0 -19
- package/esm2020/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.module.mjs +0 -45
- package/esm2020/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.component.mjs +0 -142
- package/esm2020/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.module.mjs +0 -32
- package/esm2020/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.component.mjs +0 -66
- package/esm2020/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.module.mjs +0 -32
- package/esm2020/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.component.mjs +0 -93
- package/esm2020/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.module.mjs +0 -25
- package/esm2020/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.component.mjs +0 -65
- package/esm2020/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.module.mjs +0 -25
- package/esm2020/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-body/tcloud-ui-modal-body.component.mjs +0 -14
- package/esm2020/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-footer/tcloud-ui-modal-footer.component.mjs +0 -61
- package/esm2020/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-header/tcloud-ui-modal-header.component.mjs +0 -21
- package/esm2020/lib/_modules/tcloud-ui-modal/services/tcloud-modal.service.mjs +0 -56
- package/esm2020/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.component.mjs +0 -196
- package/esm2020/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.mjs +0 -2
- package/esm2020/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.module.mjs +0 -47
- package/esm2020/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.component.mjs +0 -150
- package/esm2020/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.module.mjs +0 -28
- package/esm2020/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.component.mjs +0 -162
- package/esm2020/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.module.mjs +0 -28
- package/esm2020/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.component.mjs +0 -305
- package/esm2020/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.module.mjs +0 -36
- package/esm2020/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.component.mjs +0 -20
- package/esm2020/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.module.mjs +0 -25
- package/esm2020/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.component.mjs +0 -99
- package/esm2020/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.module.mjs +0 -25
- package/esm2020/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.component.mjs +0 -95
- package/esm2020/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.module.mjs +0 -21
- package/esm2020/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.component.mjs +0 -21
- package/esm2020/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.module.mjs +0 -25
- package/esm2020/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-content/tcloud-ui-tab-content.component.mjs +0 -36
- package/esm2020/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-head/tcloud-ui-tab-head.component.mjs +0 -75
- package/esm2020/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-subtitle/tcloud-ui-tab-subtitle.component.mjs +0 -62
- package/esm2020/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-title/tcloud-ui-tab-title.component.mjs +0 -64
- package/esm2020/lib/_modules/tcloud-ui-tab-menu/services/tab-menu.service.mjs +0 -95
- package/esm2020/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.component.mjs +0 -64
- package/esm2020/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.mjs +0 -2
- package/esm2020/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.module.mjs +0 -45
- package/esm2020/lib/_modules/tcloud-ui-table/tcloud-ui-table.component.mjs +0 -21
- package/esm2020/lib/_modules/tcloud-ui-table/tcloud-ui-table.module.mjs +0 -25
- package/esm2020/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.component.mjs +0 -37
- package/esm2020/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.module.mjs +0 -25
- package/esm2020/lib/_pipes/array-to-text.mjs +0 -29
- package/esm2020/lib/_pipes/bytes.mjs +0 -31
- package/esm2020/lib/_pipes/cnpj.mjs +0 -37
- package/esm2020/lib/_pipes/cpf.mjs +0 -37
- package/esm2020/lib/_pipes/datebr.mjs +0 -102
- package/esm2020/lib/_pipes/index.mjs +0 -9
- package/esm2020/lib/_pipes/monthname.mjs +0 -25
- package/esm2020/lib/_pipes/respective.mjs +0 -73
- package/esm2020/lib/_pipes/statusinfo.mjs +0 -78
- package/esm2020/lib/_pipes/tcloud-pipes.module.mjs +0 -75
- package/esm2020/lib/_services/loading-transitions.service.mjs +0 -52
- package/esm2020/lib/_services/search-in-object.service.mjs +0 -99
- package/esm2020/lib/tcloud-ui.module.mjs +0 -195
- package/esm2020/public-api.mjs +0 -92
- package/fesm2015/dev-tcloud-tcloud-ui.mjs +0 -5632
- package/fesm2015/dev-tcloud-tcloud-ui.mjs.map +0 -1
- package/fesm2020/dev-tcloud-tcloud-ui.mjs +0 -5613
- package/fesm2020/dev-tcloud-tcloud-ui.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/_directives/align/align.directive.d.ts +0 -13
- package/lib/_directives/directives.module.d.ts +0 -10
- package/lib/_directives/el-copy/el-copy.directive.d.ts +0 -13
- package/lib/_directives/hover-parent/hover-parent.directive.d.ts +0 -15
- package/lib/_directives/tooltip/tooltip.directive.d.ts +0 -19
- package/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-body/tcloud-ui-accordion-body.component.d.ts +0 -11
- package/lib/_modules/tcloud-ui-accordion/components/tcloud-ui-accordion-title/tcloud-ui-accordion-title.component.d.ts +0 -20
- package/lib/_modules/tcloud-ui-accordion/services/tcloud-ui-accordion.service.d.ts +0 -20
- package/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.component.d.ts +0 -27
- package/lib/_modules/tcloud-ui-accordion/tcloud-ui-accordion.module.d.ts +0 -10
- package/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.component.d.ts +0 -27
- package/lib/_modules/tcloud-ui-choice-issues/tcloud-ui-choice-issues.module.d.ts +0 -9
- package/lib/_modules/tcloud-ui-data-list/services/data-list.service.d.ts +0 -20
- package/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list-option/tcloud-ui-data-list-option.component.d.ts +0 -22
- package/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.component.d.ts +0 -74
- package/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.d.ts +0 -4
- package/lib/_modules/tcloud-ui-data-list/tcloud-ui-data-list.module.d.ts +0 -10
- package/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.component.d.ts +0 -47
- package/lib/_modules/tcloud-ui-datepicker/tcloud-ui-datepicker.module.d.ts +0 -9
- package/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.component.d.ts +0 -50
- package/lib/_modules/tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.module.d.ts +0 -11
- package/lib/_modules/tcloud-ui-filters/components/range-date/range-date.component.d.ts +0 -41
- package/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.component.d.ts +0 -63
- package/lib/_modules/tcloud-ui-filters/tcloud-ui-filters.module.d.ts +0 -12
- package/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.component.d.ts +0 -36
- package/lib/_modules/tcloud-ui-input-password/tcloud-ui-input-password.module.d.ts +0 -9
- package/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.component.d.ts +0 -28
- package/lib/_modules/tcloud-ui-input-search/tcloud-ui-input-search.module.d.ts +0 -9
- package/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.component.d.ts +0 -28
- package/lib/_modules/tcloud-ui-line-step-circle/tcloud-ui-line-step-circle.module.d.ts +0 -8
- package/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.component.d.ts +0 -17
- package/lib/_modules/tcloud-ui-linha-logo/tcloud-ui-linha-logo.module.d.ts +0 -8
- package/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-body/tcloud-ui-modal-body.component.d.ts +0 -8
- package/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-footer/tcloud-ui-modal-footer.component.d.ts +0 -26
- package/lib/_modules/tcloud-ui-modal/components/tcloud-ui-modal-header/tcloud-ui-modal-header.component.d.ts +0 -10
- package/lib/_modules/tcloud-ui-modal/services/tcloud-modal.service.d.ts +0 -24
- package/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.component.d.ts +0 -68
- package/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.d.ts +0 -4
- package/lib/_modules/tcloud-ui-modal/tcloud-ui-modal.module.d.ts +0 -12
- package/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.component.d.ts +0 -38
- package/lib/_modules/tcloud-ui-multi-input/tcloud-ui-multi-input.module.d.ts +0 -9
- package/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.component.d.ts +0 -37
- package/lib/_modules/tcloud-ui-multi-select/tcloud-ui-multi-select.module.d.ts +0 -9
- package/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.component.d.ts +0 -62
- package/lib/_modules/tcloud-ui-multiples-values/tcloud-ui-multiples-values.module.d.ts +0 -10
- package/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.component.d.ts +0 -8
- package/lib/_modules/tcloud-ui-not-found/tcloud-ui-not-found.module.d.ts +0 -8
- package/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.component.d.ts +0 -29
- package/lib/_modules/tcloud-ui-number-step/tcloud-ui-number-step.module.d.ts +0 -8
- package/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.component.d.ts +0 -21
- package/lib/_modules/tcloud-ui-progress-bar/tcloud-ui-progress-bar.module.d.ts +0 -8
- package/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.component.d.ts +0 -10
- package/lib/_modules/tcloud-ui-scroll-box/tcloud-ui-scroll-box.module.d.ts +0 -8
- package/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-content/tcloud-ui-tab-content.component.d.ts +0 -15
- package/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-head/tcloud-ui-tab-head.component.d.ts +0 -21
- package/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-subtitle/tcloud-ui-tab-subtitle.component.d.ts +0 -21
- package/lib/_modules/tcloud-ui-tab-menu/components/tcloud-ui-tab-title/tcloud-ui-tab-title.component.d.ts +0 -22
- package/lib/_modules/tcloud-ui-tab-menu/services/tab-menu.service.d.ts +0 -33
- package/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.component.d.ts +0 -23
- package/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.d.ts +0 -4
- package/lib/_modules/tcloud-ui-tab-menu/tcloud-ui-tab-menu.module.d.ts +0 -12
- package/lib/_modules/tcloud-ui-table/tcloud-ui-table.component.d.ts +0 -10
- package/lib/_modules/tcloud-ui-table/tcloud-ui-table.module.d.ts +0 -8
- package/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.component.d.ts +0 -17
- package/lib/_modules/tcloud-ui-welcome/tcloud-ui-welcome.module.d.ts +0 -8
- package/lib/_pipes/array-to-text.d.ts +0 -8
- package/lib/_pipes/bytes.d.ts +0 -8
- package/lib/_pipes/cnpj.d.ts +0 -9
- package/lib/_pipes/cpf.d.ts +0 -9
- package/lib/_pipes/datebr.d.ts +0 -11
- package/lib/_pipes/monthname.d.ts +0 -8
- package/lib/_pipes/respective.d.ts +0 -11
- package/lib/_pipes/statusinfo.d.ts +0 -15
- package/lib/_pipes/tcloud-pipes.module.d.ts +0 -15
- package/lib/_services/loading-transitions.service.d.ts +0 -16
- package/lib/_services/search-in-object.service.d.ts +0 -19
- package/lib/tcloud-ui.module.d.ts +0 -29
- /package/{datepicker → projects/tcloud-ui/assets/datepicker}/js/datepicker-full.min.js +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/components/custom/el-copy.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/components/custom/loading-transitions.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/components/custom/tab-menu.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/components/custom/table.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/components/custom/tooltip.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/components/custom/ui-datepicker.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/components/custom/validation.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/components/custom/variables.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/components/styles.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/custom/alerts.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/custom/buttons.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/custom/card.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/custom/colors.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/custom/forms.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/custom/layout.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/custom/left-navigation.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/custom/mixins.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/custom/tcloud-prime.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/custom/tcloud-standard.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/custom/text.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/custom/top-navigation.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/custom/variables.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/iaas/forms.scss +0 -0
- /package/{scss → projects/tcloud-ui/assets/scss}/tcloud/styles.scss +0 -0
|
@@ -1,491 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
|
|
2
|
-
import { TCCondition, TCFiltersType } from './tcloud-ui-filters';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "@angular/forms";
|
|
6
|
-
import * as i3 from "../tcloud-ui-datepicker-time/tcloud-ui-datepicker-time.component";
|
|
7
|
-
import * as i4 from "../tcloud-ui-datepicker/tcloud-ui-datepicker.component";
|
|
8
|
-
import * as i5 from "./components/range-date/range-date.component";
|
|
9
|
-
export class TCloudUiFiltersComponent {
|
|
10
|
-
constructor(datepipe) {
|
|
11
|
-
this.datepipe = datepipe;
|
|
12
|
-
this.datepickers = [];
|
|
13
|
-
this.inputs = [];
|
|
14
|
-
this.show_filters = false;
|
|
15
|
-
this._submitText = 'Filtrar';
|
|
16
|
-
this.btnSubmitClass = 'tc-btn-primary';
|
|
17
|
-
this.useOnChangeSubmit = true; // useOnChangeSubmit - Submit automatico quando for alterado quanquer input
|
|
18
|
-
this.useButtonSubmit = false; // useButtonSubmit - Exibe um botão de submit e não executa a busca automaticamente
|
|
19
|
-
this.useNormalizeCaseSensitive = true; // useNormalizeCaseSensitive - Não valida caixa alta ou baixa e caracteres especiais
|
|
20
|
-
this.useRangeDate = true;
|
|
21
|
-
this.useFilterAccept = false;
|
|
22
|
-
this.result = new EventEmitter();
|
|
23
|
-
this.onFilter = new EventEmitter();
|
|
24
|
-
this.onChange = new EventEmitter();
|
|
25
|
-
this.onSubmit = new EventEmitter();
|
|
26
|
-
this.descriptionStart = '';
|
|
27
|
-
this.descriptionStop = '';
|
|
28
|
-
this.first_active_filter = false;
|
|
29
|
-
this.start_stop = false;
|
|
30
|
-
this.start_stop_width = 0;
|
|
31
|
-
this.start_stop_und = ''; // px ou %
|
|
32
|
-
this.first = true;
|
|
33
|
-
this.start_filter_fc = undefined;
|
|
34
|
-
}
|
|
35
|
-
set data(data) {
|
|
36
|
-
// this._data = JSON.parse(JSON.stringify(data));
|
|
37
|
-
}
|
|
38
|
-
get data() { return this._data; }
|
|
39
|
-
set filters(filters) {
|
|
40
|
-
//this._filters = filters;
|
|
41
|
-
}
|
|
42
|
-
get filters() { return this._filters; }
|
|
43
|
-
set submitText(v) {
|
|
44
|
-
if (v && v !== this._submitText) {
|
|
45
|
-
this._submitText = v;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
get submitText() { return this._submitText; }
|
|
49
|
-
ngOnInit() {
|
|
50
|
-
setTimeout(() => {
|
|
51
|
-
if (this.filters && (this.filters).length > 0) {
|
|
52
|
-
for (let i = 0; i < (this.filters).length; i++) {
|
|
53
|
-
if (this.filters[i].value) {
|
|
54
|
-
if (this.filters[i].type === 'datetime-local') {
|
|
55
|
-
try {
|
|
56
|
-
this.filters[i].searchText = new Date(`${this.filters[i].value}`);
|
|
57
|
-
}
|
|
58
|
-
catch (error) { }
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
this.filters[i].searchText = this.filters[i].value;
|
|
62
|
-
}
|
|
63
|
-
this.first_active_filter = true;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
this.start_stop = (this.useRangeDate) ? this.is_start_stop_datetime() : false;
|
|
68
|
-
this.toSubmit();
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
is_start_stop_datetime() {
|
|
72
|
-
let start = false;
|
|
73
|
-
let stop = false;
|
|
74
|
-
if (this.filters && (this.filters).length > 0) {
|
|
75
|
-
this.start_stop_width = 0;
|
|
76
|
-
for (let i = 0; i < (this.filters).length; i++) {
|
|
77
|
-
if (this.filters[i].id === 'start') {
|
|
78
|
-
start = true;
|
|
79
|
-
this.start_stop_width += this.getValueWidth(this.filters[i].width);
|
|
80
|
-
this.start_stop_und = this.getUnidade(this.filters[i].width);
|
|
81
|
-
this.descriptionStart = this.filters[i].description;
|
|
82
|
-
}
|
|
83
|
-
if (this.filters[i].id === 'stop') {
|
|
84
|
-
stop = true;
|
|
85
|
-
this.start_stop_width += this.getValueWidth(this.filters[i].width);
|
|
86
|
-
this.descriptionStop = this.filters[i].description;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return (start && stop) ? true : false;
|
|
91
|
-
}
|
|
92
|
-
getValueWidth(v) {
|
|
93
|
-
let und = this.getUnidade(v);
|
|
94
|
-
v = (v).replace(und, '');
|
|
95
|
-
return +(v);
|
|
96
|
-
}
|
|
97
|
-
getUnidade(v) {
|
|
98
|
-
let und = '%';
|
|
99
|
-
if (v && (v).includes('px')) {
|
|
100
|
-
und = 'px';
|
|
101
|
-
}
|
|
102
|
-
return und;
|
|
103
|
-
}
|
|
104
|
-
ngOnChanges(changes) {
|
|
105
|
-
if (changes && changes['data']) {
|
|
106
|
-
const data = changes['data'].currentValue;
|
|
107
|
-
if (this._data !== data) {
|
|
108
|
-
this._data = JSON.parse(JSON.stringify(data));
|
|
109
|
-
this.search_data = JSON.parse(JSON.stringify(data));
|
|
110
|
-
this.init();
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
if (changes && changes['filters']) {
|
|
114
|
-
const filters = changes['filters'].currentValue;
|
|
115
|
-
if (this._filters !== filters) {
|
|
116
|
-
this._filters = JSON.parse(JSON.stringify(filters));
|
|
117
|
-
this.init();
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
init() {
|
|
122
|
-
if (this.data && this.filters) {
|
|
123
|
-
this.show_filters = true;
|
|
124
|
-
if (this.filters && (this.filters).length > 0) {
|
|
125
|
-
(this.filters).forEach((filter) => {
|
|
126
|
-
this.searchIn(filter, 'sync');
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
if (!this.useOnChangeSubmit) {
|
|
130
|
-
this.result_accept(this.data);
|
|
131
|
-
}
|
|
132
|
-
if (this.useOnChangeSubmit || this.useButtonSubmit) {
|
|
133
|
-
this.start_filter();
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
normalize(text) {
|
|
138
|
-
if (this.useNormalizeCaseSensitive) {
|
|
139
|
-
const v = (((`${text}`).normalize('NFD').replace(/[\u0300-\u036f]/g, "")).trim()).toLowerCase();
|
|
140
|
-
return v;
|
|
141
|
-
}
|
|
142
|
-
return text;
|
|
143
|
-
}
|
|
144
|
-
toSubmit() {
|
|
145
|
-
if (this.filters && (this.filters).length > 0) {
|
|
146
|
-
this.init();
|
|
147
|
-
}
|
|
148
|
-
this.emitSubmitFilters();
|
|
149
|
-
}
|
|
150
|
-
emitSubmitFilters() {
|
|
151
|
-
let filters = JSON.parse(JSON.stringify(this.filters));
|
|
152
|
-
if (filters && (filters).length > 0) {
|
|
153
|
-
(filters).forEach((filter, i) => {
|
|
154
|
-
if (filter.width) {
|
|
155
|
-
delete (filters[i].width);
|
|
156
|
-
}
|
|
157
|
-
if (filter.placeholder) {
|
|
158
|
-
delete (filters[i].placeholder);
|
|
159
|
-
}
|
|
160
|
-
if (filter.description) {
|
|
161
|
-
delete (filters[i].description);
|
|
162
|
-
}
|
|
163
|
-
if ((!filter.searchText || filter.searchText && filter.searchText === '') && filter.type !== "boolean") {
|
|
164
|
-
delete (filters[i]);
|
|
165
|
-
}
|
|
166
|
-
if (filter.type === "boolean") {
|
|
167
|
-
if (!filter.searchText) {
|
|
168
|
-
filter.searchText = false;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
this.onSubmit.emit(this.filters);
|
|
174
|
-
}
|
|
175
|
-
collectionFind(obj, path) {
|
|
176
|
-
const pathArray = path.split(".");
|
|
177
|
-
let current = obj;
|
|
178
|
-
for (let i = 0; i < pathArray.length; i++) {
|
|
179
|
-
const key = pathArray[i];
|
|
180
|
-
if (key.includes('[') && key.includes(']')) {
|
|
181
|
-
const nextKeys = pathArray.slice(i + 1);
|
|
182
|
-
const index = key.substring(key.indexOf('[') + 1, key.indexOf(']'));
|
|
183
|
-
const arrayKey = key.substring(0, key.indexOf('['));
|
|
184
|
-
if (current && current[arrayKey] && current[arrayKey][index]) {
|
|
185
|
-
return this.collectionFind(current[arrayKey][index], nextKeys.join("."));
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
if (key.includes("[]")) {
|
|
189
|
-
const arrayKey = key.replace("[]", "");
|
|
190
|
-
current = current[arrayKey] || [];
|
|
191
|
-
const nextKeys = pathArray.slice(i + 1);
|
|
192
|
-
const results = [];
|
|
193
|
-
for (let j = 0; j < current.length; j++) {
|
|
194
|
-
let result = this.collectionFind(current[j], nextKeys.join("."));
|
|
195
|
-
if (result !== undefined) {
|
|
196
|
-
results.push(result);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
if (results.length === 0) {
|
|
200
|
-
return undefined;
|
|
201
|
-
}
|
|
202
|
-
return results;
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
if (!current || (current && !current[key])) {
|
|
206
|
-
return undefined;
|
|
207
|
-
}
|
|
208
|
-
current = current[key];
|
|
209
|
-
if (current === undefined) {
|
|
210
|
-
return undefined;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
return current;
|
|
215
|
-
}
|
|
216
|
-
searchInRange(range_date) {
|
|
217
|
-
if (this.filters && (this.filters).length > 0) {
|
|
218
|
-
let event = {};
|
|
219
|
-
event.datepickertime = true;
|
|
220
|
-
for (let i = 0; i < (this.filters).length; i++) {
|
|
221
|
-
if (this.filters[i] && this.filters[i].id && this.filters[i].id === 'start') {
|
|
222
|
-
this.filters[i].value = range_date?.result?.start;
|
|
223
|
-
this.filters[i].searchText = range_date?.result?.start;
|
|
224
|
-
event.innerValue = this.start_value = range_date?.result?.start;
|
|
225
|
-
this.searchIn(this.filters[i], event);
|
|
226
|
-
}
|
|
227
|
-
if (this.filters[i] && this.filters[i].id && this.filters[i].id === 'stop') {
|
|
228
|
-
this.filters[i].value = range_date?.result?.stop;
|
|
229
|
-
this.filters[i].searchText = range_date?.result?.stop;
|
|
230
|
-
event.innerValue = this.stop_value = range_date?.result?.stop;
|
|
231
|
-
this.searchIn(this.filters[i], event);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
if (this.first || this.useOnChangeSubmit) {
|
|
235
|
-
this.toSubmit();
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
this.first = false;
|
|
239
|
-
}
|
|
240
|
-
convertDataToNumber(dataString) {
|
|
241
|
-
try {
|
|
242
|
-
const [dia, mes, ano] = dataString.split('/');
|
|
243
|
-
return +(`${ano}${mes}${dia}`);
|
|
244
|
-
}
|
|
245
|
-
catch (error) { }
|
|
246
|
-
return 0;
|
|
247
|
-
}
|
|
248
|
-
searchIn(item, event) {
|
|
249
|
-
this.start_filter_fc = undefined;
|
|
250
|
-
let isValid = true;
|
|
251
|
-
if (event === 'sync' && isValid) {
|
|
252
|
-
isValid = false;
|
|
253
|
-
this.onChange.emit(true);
|
|
254
|
-
}
|
|
255
|
-
if (typeof event === 'boolean' && isValid) {
|
|
256
|
-
isValid = false;
|
|
257
|
-
item.searchText = event;
|
|
258
|
-
this.onChange.emit(true);
|
|
259
|
-
}
|
|
260
|
-
if ((event === undefined || event === null || event === '') && isValid) {
|
|
261
|
-
isValid = false;
|
|
262
|
-
item.searchText = '';
|
|
263
|
-
this.onChange.emit(true);
|
|
264
|
-
}
|
|
265
|
-
if (event?.datepickertime && isValid) {
|
|
266
|
-
isValid = false;
|
|
267
|
-
item.searchText = event?.innerValue;
|
|
268
|
-
this.onChange.emit(true);
|
|
269
|
-
}
|
|
270
|
-
if (event?.target?.value && isValid) {
|
|
271
|
-
isValid = false;
|
|
272
|
-
item.searchText = this.normalize(event.target.value);
|
|
273
|
-
this.onChange.emit(true);
|
|
274
|
-
}
|
|
275
|
-
if (event?.target?.value === '' && isValid) {
|
|
276
|
-
isValid = false;
|
|
277
|
-
item.searchText = '';
|
|
278
|
-
this.onChange.emit(true);
|
|
279
|
-
}
|
|
280
|
-
if (item.type === 'date-local' && item.value) {
|
|
281
|
-
isValid = false;
|
|
282
|
-
item.searchText = `${this.convertDataToNumber(item.value)}`;
|
|
283
|
-
this.onChange.emit(true);
|
|
284
|
-
}
|
|
285
|
-
if (event && event.result && (event.result.start || event.result.stop)) {
|
|
286
|
-
isValid = false;
|
|
287
|
-
this.onChange.emit(true);
|
|
288
|
-
}
|
|
289
|
-
if (this.useOnChangeSubmit || this.first_active_filter) {
|
|
290
|
-
this.start_filter_fc = this.start_filter();
|
|
291
|
-
this.first_active_filter = false;
|
|
292
|
-
}
|
|
293
|
-
if (!this.useButtonSubmit) {
|
|
294
|
-
this.emitSubmitFilters();
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
getDateUTC(dt) {
|
|
298
|
-
const ano = dt.getFullYear();
|
|
299
|
-
const mes = dt.getMonth();
|
|
300
|
-
const dia = dt.getDate();
|
|
301
|
-
const horas = dt.getHours();
|
|
302
|
-
const minutos = dt.getMinutes();
|
|
303
|
-
const segundos = dt.getSeconds();
|
|
304
|
-
return new Date(Date.UTC(ano, mes, dia, horas, minutos, segundos));
|
|
305
|
-
}
|
|
306
|
-
start_filter() {
|
|
307
|
-
for (let i = 0; i < (this.data).length; i++) {
|
|
308
|
-
this.setDataIndex(i, true);
|
|
309
|
-
for (let j = 0; j < (this.filters).length; j++) {
|
|
310
|
-
const filter_item = this.filters[j];
|
|
311
|
-
if (filter_item.searchText && typeof (filter_item.searchText) === 'string' && filter_item.searchText !== '' && filter_item.type !== TCFiltersType.number && filter_item.type !== TCFiltersType.date) {
|
|
312
|
-
filter_item.searchText = this.normalize(filter_item.searchText);
|
|
313
|
-
let item_value = this.collectionFind(this.data[i], filter_item.searchIn);
|
|
314
|
-
if (item_value) {
|
|
315
|
-
item_value = this.normalize(item_value);
|
|
316
|
-
if (!(item_value.includes(filter_item.searchText) || item_value === filter_item.searchText)) {
|
|
317
|
-
this.setDataIndex(i, false);
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
this.setDataIndex(i, false);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
if (filter_item.searchText && filter_item.searchText instanceof Date && !isNaN(filter_item.searchText.valueOf()) && filter_item.type === TCFiltersType.datetime) {
|
|
325
|
-
let item_value = this.collectionFind(this.data[i], filter_item.searchIn);
|
|
326
|
-
try {
|
|
327
|
-
item_value = new Date(item_value);
|
|
328
|
-
}
|
|
329
|
-
catch (error) { }
|
|
330
|
-
if (item_value && item_value instanceof Date && !isNaN(item_value.valueOf())) {
|
|
331
|
-
let is_accept = false;
|
|
332
|
-
const dt_target = ((filter_item.searchText).getTime()).toString().substring(0, 10); /* + (3 * 60 * 60 * 1000); */
|
|
333
|
-
const dt_current = ((item_value).getTime()).toString().substring(0, 10);
|
|
334
|
-
if (filter_item.condition) {
|
|
335
|
-
switch (filter_item.condition) {
|
|
336
|
-
case TCCondition.gt:
|
|
337
|
-
is_accept = (Number(dt_target) > Number(dt_current));
|
|
338
|
-
break;
|
|
339
|
-
case TCCondition.lt:
|
|
340
|
-
is_accept = (Number(dt_target) < Number(dt_current));
|
|
341
|
-
break;
|
|
342
|
-
case TCCondition.gte:
|
|
343
|
-
is_accept = (Number(dt_target) <= Number(dt_current));
|
|
344
|
-
break;
|
|
345
|
-
case TCCondition.lte:
|
|
346
|
-
is_accept = (Number(dt_target) >= Number(dt_current));
|
|
347
|
-
break;
|
|
348
|
-
case TCCondition.equal:
|
|
349
|
-
is_accept = (Number(dt_target) === Number(dt_current));
|
|
350
|
-
break;
|
|
351
|
-
default: is_accept = (Number(dt_target) == Number(dt_current));
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
else {
|
|
355
|
-
is_accept = (Number(filter_item.searchText) === Number(item_value));
|
|
356
|
-
}
|
|
357
|
-
if (!is_accept) {
|
|
358
|
-
this.setDataIndex(i, false);
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
if (filter_item.searchText && typeof Number(filter_item.searchText) === 'number' && (filter_item.type === TCFiltersType.number || filter_item.type === TCFiltersType.date)) {
|
|
363
|
-
filter_item.searchText = Number(filter_item.searchText);
|
|
364
|
-
let item_value = this.collectionFind(this.data[i], filter_item.searchIn);
|
|
365
|
-
if (typeof Number(item_value) === 'number') {
|
|
366
|
-
item_value = Number(item_value);
|
|
367
|
-
let is_accept = false;
|
|
368
|
-
if (filter_item.condition) {
|
|
369
|
-
switch (filter_item.condition) {
|
|
370
|
-
case TCCondition.gt:
|
|
371
|
-
is_accept = (Number(filter_item.searchText) > Number(item_value));
|
|
372
|
-
break;
|
|
373
|
-
case TCCondition.lt:
|
|
374
|
-
is_accept = (Number(filter_item.searchText) < Number(item_value));
|
|
375
|
-
break;
|
|
376
|
-
case TCCondition.gte:
|
|
377
|
-
is_accept = (Number(filter_item.searchText) <= Number(item_value));
|
|
378
|
-
break;
|
|
379
|
-
case TCCondition.lte:
|
|
380
|
-
is_accept = (Number(filter_item.searchText) >= Number(item_value));
|
|
381
|
-
break;
|
|
382
|
-
case TCCondition.equal:
|
|
383
|
-
is_accept = (Number(filter_item.searchText) === Number(item_value));
|
|
384
|
-
break;
|
|
385
|
-
default: is_accept = (Number(filter_item.searchText) == Number(item_value));
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
else {
|
|
389
|
-
is_accept = (Number(filter_item.searchText) === Number(item_value));
|
|
390
|
-
}
|
|
391
|
-
if (!is_accept) {
|
|
392
|
-
this.setDataIndex(i, false);
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
if (typeof (filter_item.searchText) === 'boolean' && filter_item.searchText === true) {
|
|
397
|
-
let item_value = this.collectionFind(this.data[i], filter_item.searchIn);
|
|
398
|
-
if (item_value && (item_value).length > 0) {
|
|
399
|
-
let qtd_is_true = 0;
|
|
400
|
-
for (let i = 0; i < ((item_value).length); i++) {
|
|
401
|
-
const item = item_value[i];
|
|
402
|
-
if (item === filter_item.searchText) {
|
|
403
|
-
qtd_is_true++;
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
if (qtd_is_true === 0) {
|
|
407
|
-
this.setDataIndex(i, false);
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
else {
|
|
411
|
-
if (!(item_value === filter_item.searchText)) {
|
|
412
|
-
this.setDataIndex(i, false);
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
} // end for
|
|
418
|
-
this.toResult();
|
|
419
|
-
}
|
|
420
|
-
toResult() {
|
|
421
|
-
const search_data = [];
|
|
422
|
-
let is_filter = false;
|
|
423
|
-
for (let i = 0; i < (this.filters).length; i++) {
|
|
424
|
-
if (this.filters[i].searchText && this.filters[i].searchText !== '') {
|
|
425
|
-
is_filter = true;
|
|
426
|
-
break;
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
if (is_filter) {
|
|
430
|
-
for (let i = 0; i < (this.data).length; i++) {
|
|
431
|
-
if (this.data && this.data[i] && this.data[i]['tc_filter_accept']) {
|
|
432
|
-
(search_data).push(this.data[i]);
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
this.result_accept(search_data);
|
|
436
|
-
this.onFilter.emit({ ...this.filters });
|
|
437
|
-
return;
|
|
438
|
-
}
|
|
439
|
-
this.result_accept(this.data);
|
|
440
|
-
this.onFilter.emit({ ...this.filters });
|
|
441
|
-
}
|
|
442
|
-
setDataIndex(index, value) {
|
|
443
|
-
if (this.data && this.data[index]) {
|
|
444
|
-
this.data[index]['tc_filter_accept'] = value;
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
result_accept(data) {
|
|
448
|
-
if (!this.useFilterAccept && data && (data).length > 0) {
|
|
449
|
-
for (let i = 0; i < (data).length; i++) {
|
|
450
|
-
delete data[i]['tc_filter_accept'];
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
this.result.emit(data);
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
TCloudUiFiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiFiltersComponent, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
|
|
457
|
-
TCloudUiFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiFiltersComponent, selector: "tcloud-ui-filters", inputs: { data: "data", filters: "filters", submitText: "submitText", btnSubmitClass: "btnSubmitClass", useOnChangeSubmit: "useOnChangeSubmit", useButtonSubmit: "useButtonSubmit", useNormalizeCaseSensitive: "useNormalizeCaseSensitive", useRangeDate: "useRangeDate", useFilterAccept: "useFilterAccept" }, outputs: { result: "result", onFilter: "onFilter", onChange: "onChange", onSubmit: "onSubmit" }, viewQueries: [{ propertyName: "_formulario", first: true, predicate: ["_formulario"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"show_filters\" class=\"tcloud-ui-filters area-filter\">\r\n <ng-container *ngFor=\"let item of filters; let i = index\">\r\n\r\n <ng-container *ngIf=\"!item.type || (item.type && item.type !== 'boolean')\">\r\n\r\n <ng-container *ngIf=\"item.type === 'date-local'\">\r\n\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"(item.value !== undefined && item.value !== null && item.value !== '')\" class=\"fas fa-filter icon-filter\"></i> {{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <tcloud-ui-datepicker \r\n #_input\r\n name=\"input_{{i+1}}\"\r\n [modeInput]=\"true\"\r\n [(ngModel)]=\"item.value\"\r\n (ngModelChange)=\"searchIn(item, _input)\">\r\n </tcloud-ui-datepicker>\r\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"!(item.value !== undefined && item.value !== null && item.value !== '')\" (click)=\"searchIn(item, null); item.searchText = undefined; item.value = ''\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n \r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"item.type !== 'date-local'\">\r\n <ng-container *ngIf=\"item.type === 'datetime-local'\">\r\n\r\n <ng-container *ngIf=\"(item.id === 'start' || item.id === 'stop') && useRangeDate\">\r\n <!-- PERIOD RANGE DATE -->\r\n <ng-container *ngIf=\"item.id === 'start'\">\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+start_stop_width+''+start_stop_und : ''\">\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"(_range_date && _range_date.result && _range_date.result.start && _range_date.result.stop )\" class=\"fas fa-filter icon-filter\"></i> </div>\r\n <range-date \r\n #_range_date ngModel name=\"input_{{i+1}}\" \r\n [defaultValuePeriodStartStop]=\"item.defaultValuePeriodStartStop\"\r\n [descriptionStart]=\"descriptionStart\"\r\n [descriptionStop]=\"descriptionStop\"\r\n required \r\n (onChange)=\"searchInRange(_range_date); searchIn(item, _range_date)\">\r\n </range-date>\r\n </div>\r\n </ng-container> \r\n <input *ngIf=\"item.id === 'start'\" #_input name=\"input_{{i+1}}\" type=\"hidden\" [(ngModel)]=\"start_value\"> \r\n <input *ngIf=\"item.id === 'stop'\" #_input name=\"input_{{i+1}}\" type=\"hidden\" [(ngModel)]=\"stop_value\"> \r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!item.id || !useRangeDate\">\r\n\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"(item.value !== undefined && item.value !== null && item.value !== '')\" class=\"fas fa-filter icon-filter\"></i> {{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <tcloud-ui-datepicker-time \r\n #_input \r\n [(ngModel)]=\"item.value\" \r\n name=\"input_{{i+1}}\" \r\n [useOptionsDateTime]=\"(item && item.useOptionsDateTime) ? true : false\"\r\n (eventChange)=\"searchIn(item, _input)\" >\r\n </tcloud-ui-datepicker-time>\r\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"!(item.value !== undefined && item.value !== null && item.value !== '')\" (click)=\"searchIn(item, null); item.searchText = undefined; item.value = ''\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n </ng-container>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"item.type !== 'select' && item.type !== 'datetime-local' && item.type !== 'date-local'\">\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i> {{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <input \r\n #_input\r\n [(ngModel)]=\"item.value\"\r\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\r\n name=\"input_{{i+1}}\" \r\n type=\"{{ (item.type === 'number') ? 'text' : item.type }}\" \r\n class=\"tc-form-control\" \r\n (keyup)=\"searchIn(item, $event)\"> \r\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"_input.value === ''\" (click)=\"searchIn(item, null); _input.value = ''\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"item.type === 'select' && item.data && (item.data).length > 0\" >\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i> {{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <select \r\n #_input\r\n [(ngModel)]=\"item.value\"\r\n name=\"input_{{i+1}}\" \r\n class=\"tc-form-control\" \r\n (change)=\"searchIn(item, $event)\">\r\n <option [ngValue]=\"\"></option>\r\n <ng-container *ngFor=\"let v of item.data\">\r\n <option [value]=\"v.value\">{{ v.description }}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngIf=\"item.type && item.type === 'boolean'\">\r\n \r\n <div class=\"box-filter-input\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n <div class=\"m-description tc-title-ellipsis\" title=\"{{ item.description }}\" title=\"{{ item.description }}\"><i [class.to-active]=\"_input.checked === true\" class=\"fas fa-filter icon-filter\"></i> {{ item.description }}</div>\r\n <div class=\"area-input-checkbox\">\r\n <div class=\"tc-form-control\">\r\n <label>\r\n {{ item.placeholder }}\r\n <input \r\n #_input\r\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\r\n name=\"input_{{i+1}}\" \r\n type=\"checkbox\" \r\n (change)=\"searchIn(item, _input.checked)\"> \r\n </label>\r\n </div> \r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n\r\n </ng-container>\r\n\r\n <div class=\"text-right mb-1 mr-1\" *ngIf=\"useButtonSubmit\">\r\n <button type=\"button\" class=\"tc-btn {{ btnSubmitClass }}\" (click)=\"toSubmit()\" >{{ submitText }}</button>\r\n </div>\r\n\r\n</div>\r\n\r\n<!-- <pre>{{ inputs | json }}</pre> -->\r\n<!-- <pre> {{ data | json }} </pre> -->\r\n\r\n<!-- <p>FILTERS</p><pre> {{ filters | json }}</pre> -->\r\n\r\n<!--\r\n <pre>start_stop: {{ start_stop }}</pre>\r\n <pre>start_stop_width: {{ start_stop_width }}</pre>\r\n <pre>start_stop_und: {{ start_stop_und }}</pre>\r\n-->", styles: [".box-filter-input{display:inline-grid;padding:10px 5px;position:relative}.area-filter{border:1px solid #eeeeee;border-radius:5px;margin-bottom:5px}.btn-clear-filter-text{position:absolute;right:8px;top:38px;background-color:#fff;border:none;cursor:pointer;color:#aaa}.to-hide{display:none}.icon-filter{color:#ccc}.to-active{color:var(--tc-primary)}.area-input-checkbox label{cursor:pointer;margin-bottom:0;color:#9f9f9f}.area-input-checkbox div.tc-form-control{height:40px}.m-description{margin-bottom:3px}input{color:#535353}input[type=text],input[type=number],select{height:40px!important}.type-hidden{display:none;width:0px!important}.box-type-global_vars{display:none!important;width:0px!important}.tc-title-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.TCloudUiDatepickerTimeComponent, selector: "tcloud-ui-datepicker-time", inputs: ["ngModel", "useOptionsDateTime"], outputs: ["ngModelChange", "onChange", "eventChange"] }, { kind: "component", type: i4.TCloudUiDatepickerComponent, selector: "tcloud-ui-datepicker", inputs: ["multiple", "maxNumberOfDates", "daysOfWeekDisabled", "minDate", "maxDate", "datesDisabled", "modeInput", "useBorder", "childInputDateTime", "ngModel", "code"], outputs: ["onChange", "ngModelChange"] }, { kind: "component", type: i5.TCloudUiRangeDateComponent, selector: "range-date", inputs: ["defaultValuePeriodStartStop", "required", "descriptionStart", "descriptionStop"], outputs: ["onChange"] }] });
|
|
458
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiFiltersComponent, decorators: [{
|
|
459
|
-
type: Component,
|
|
460
|
-
args: [{ selector: 'tcloud-ui-filters', template: "<div *ngIf=\"show_filters\" class=\"tcloud-ui-filters area-filter\">\r\n <ng-container *ngFor=\"let item of filters; let i = index\">\r\n\r\n <ng-container *ngIf=\"!item.type || (item.type && item.type !== 'boolean')\">\r\n\r\n <ng-container *ngIf=\"item.type === 'date-local'\">\r\n\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"(item.value !== undefined && item.value !== null && item.value !== '')\" class=\"fas fa-filter icon-filter\"></i> {{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <tcloud-ui-datepicker \r\n #_input\r\n name=\"input_{{i+1}}\"\r\n [modeInput]=\"true\"\r\n [(ngModel)]=\"item.value\"\r\n (ngModelChange)=\"searchIn(item, _input)\">\r\n </tcloud-ui-datepicker>\r\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"!(item.value !== undefined && item.value !== null && item.value !== '')\" (click)=\"searchIn(item, null); item.searchText = undefined; item.value = ''\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n \r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"item.type !== 'date-local'\">\r\n <ng-container *ngIf=\"item.type === 'datetime-local'\">\r\n\r\n <ng-container *ngIf=\"(item.id === 'start' || item.id === 'stop') && useRangeDate\">\r\n <!-- PERIOD RANGE DATE -->\r\n <ng-container *ngIf=\"item.id === 'start'\">\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+start_stop_width+''+start_stop_und : ''\">\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"(_range_date && _range_date.result && _range_date.result.start && _range_date.result.stop )\" class=\"fas fa-filter icon-filter\"></i> </div>\r\n <range-date \r\n #_range_date ngModel name=\"input_{{i+1}}\" \r\n [defaultValuePeriodStartStop]=\"item.defaultValuePeriodStartStop\"\r\n [descriptionStart]=\"descriptionStart\"\r\n [descriptionStop]=\"descriptionStop\"\r\n required \r\n (onChange)=\"searchInRange(_range_date); searchIn(item, _range_date)\">\r\n </range-date>\r\n </div>\r\n </ng-container> \r\n <input *ngIf=\"item.id === 'start'\" #_input name=\"input_{{i+1}}\" type=\"hidden\" [(ngModel)]=\"start_value\"> \r\n <input *ngIf=\"item.id === 'stop'\" #_input name=\"input_{{i+1}}\" type=\"hidden\" [(ngModel)]=\"stop_value\"> \r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!item.id || !useRangeDate\">\r\n\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"(item.value !== undefined && item.value !== null && item.value !== '')\" class=\"fas fa-filter icon-filter\"></i> {{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <tcloud-ui-datepicker-time \r\n #_input \r\n [(ngModel)]=\"item.value\" \r\n name=\"input_{{i+1}}\" \r\n [useOptionsDateTime]=\"(item && item.useOptionsDateTime) ? true : false\"\r\n (eventChange)=\"searchIn(item, _input)\" >\r\n </tcloud-ui-datepicker-time>\r\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"!(item.value !== undefined && item.value !== null && item.value !== '')\" (click)=\"searchIn(item, null); item.searchText = undefined; item.value = ''\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n </ng-container>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"item.type !== 'select' && item.type !== 'datetime-local' && item.type !== 'date-local'\">\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i> {{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <input \r\n #_input\r\n [(ngModel)]=\"item.value\"\r\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\r\n name=\"input_{{i+1}}\" \r\n type=\"{{ (item.type === 'number') ? 'text' : item.type }}\" \r\n class=\"tc-form-control\" \r\n (keyup)=\"searchIn(item, $event)\"> \r\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"_input.value === ''\" (click)=\"searchIn(item, null); _input.value = ''\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"item.type === 'select' && item.data && (item.data).length > 0\" >\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i> {{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <select \r\n #_input\r\n [(ngModel)]=\"item.value\"\r\n name=\"input_{{i+1}}\" \r\n class=\"tc-form-control\" \r\n (change)=\"searchIn(item, $event)\">\r\n <option [ngValue]=\"\"></option>\r\n <ng-container *ngFor=\"let v of item.data\">\r\n <option [value]=\"v.value\">{{ v.description }}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngIf=\"item.type && item.type === 'boolean'\">\r\n \r\n <div class=\"box-filter-input\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n <div class=\"m-description tc-title-ellipsis\" title=\"{{ item.description }}\" title=\"{{ item.description }}\"><i [class.to-active]=\"_input.checked === true\" class=\"fas fa-filter icon-filter\"></i> {{ item.description }}</div>\r\n <div class=\"area-input-checkbox\">\r\n <div class=\"tc-form-control\">\r\n <label>\r\n {{ item.placeholder }}\r\n <input \r\n #_input\r\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\r\n name=\"input_{{i+1}}\" \r\n type=\"checkbox\" \r\n (change)=\"searchIn(item, _input.checked)\"> \r\n </label>\r\n </div> \r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n\r\n </ng-container>\r\n\r\n <div class=\"text-right mb-1 mr-1\" *ngIf=\"useButtonSubmit\">\r\n <button type=\"button\" class=\"tc-btn {{ btnSubmitClass }}\" (click)=\"toSubmit()\" >{{ submitText }}</button>\r\n </div>\r\n\r\n</div>\r\n\r\n<!-- <pre>{{ inputs | json }}</pre> -->\r\n<!-- <pre> {{ data | json }} </pre> -->\r\n\r\n<!-- <p>FILTERS</p><pre> {{ filters | json }}</pre> -->\r\n\r\n<!--\r\n <pre>start_stop: {{ start_stop }}</pre>\r\n <pre>start_stop_width: {{ start_stop_width }}</pre>\r\n <pre>start_stop_und: {{ start_stop_und }}</pre>\r\n-->", styles: [".box-filter-input{display:inline-grid;padding:10px 5px;position:relative}.area-filter{border:1px solid #eeeeee;border-radius:5px;margin-bottom:5px}.btn-clear-filter-text{position:absolute;right:8px;top:38px;background-color:#fff;border:none;cursor:pointer;color:#aaa}.to-hide{display:none}.icon-filter{color:#ccc}.to-active{color:var(--tc-primary)}.area-input-checkbox label{cursor:pointer;margin-bottom:0;color:#9f9f9f}.area-input-checkbox div.tc-form-control{height:40px}.m-description{margin-bottom:3px}input{color:#535353}input[type=text],input[type=number],select{height:40px!important}.type-hidden{display:none;width:0px!important}.box-type-global_vars{display:none!important;width:0px!important}.tc-title-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
|
|
461
|
-
}], ctorParameters: function () { return [{ type: i1.DatePipe }]; }, propDecorators: { _formulario: [{
|
|
462
|
-
type: ViewChild,
|
|
463
|
-
args: ['_formulario']
|
|
464
|
-
}], data: [{
|
|
465
|
-
type: Input
|
|
466
|
-
}], filters: [{
|
|
467
|
-
type: Input
|
|
468
|
-
}], submitText: [{
|
|
469
|
-
type: Input
|
|
470
|
-
}], btnSubmitClass: [{
|
|
471
|
-
type: Input
|
|
472
|
-
}], useOnChangeSubmit: [{
|
|
473
|
-
type: Input
|
|
474
|
-
}], useButtonSubmit: [{
|
|
475
|
-
type: Input
|
|
476
|
-
}], useNormalizeCaseSensitive: [{
|
|
477
|
-
type: Input
|
|
478
|
-
}], useRangeDate: [{
|
|
479
|
-
type: Input
|
|
480
|
-
}], useFilterAccept: [{
|
|
481
|
-
type: Input
|
|
482
|
-
}], result: [{
|
|
483
|
-
type: Output
|
|
484
|
-
}], onFilter: [{
|
|
485
|
-
type: Output
|
|
486
|
-
}], onChange: [{
|
|
487
|
-
type: Output
|
|
488
|
-
}], onSubmit: [{
|
|
489
|
-
type: Output
|
|
490
|
-
}] } });
|
|
491
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwSCxPQUFPLEVBQUUsV0FBVyxFQUFpQixhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQU9oRixNQUFNLE9BQU8sd0JBQXdCO0lBcURuQyxZQUNVLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFwRDVCLGdCQUFXLEdBQUcsRUFBUyxDQUFDO1FBSXhCLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFFdEIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFnQnRCLGdCQUFXLEdBQVcsU0FBUyxDQUFDO1FBUS9CLG1CQUFjLEdBQVcsZ0JBQWdCLENBQUM7UUFDMUMsc0JBQWlCLEdBQVksSUFBSSxDQUFDLENBQUMsMkVBQTJFO1FBQzlHLG9CQUFlLEdBQVksS0FBSyxDQUFDLENBQUMsbUZBQW1GO1FBQ3JILDhCQUF5QixHQUFZLElBQUksQ0FBQyxDQUFDLG9GQUFvRjtRQUMvSCxpQkFBWSxHQUFZLElBQUksQ0FBQztRQUM3QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVoQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNqQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVB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QUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsNkJBQTZCO3dCQUNySCxNQUFNLFVBQVUsR0FBSSxDQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUMzRSxJQUFJLFdBQVcsQ0FBQyxTQUFTLEVBQUU7NEJBQ3pCLFFBQVEsV0FBVyxDQUFDLFNBQVMsRUFBRTtnQ0FDN0IsS0FBSyxXQUFXLENBQUMsRUFBRTtvQ0FBSyxTQUFTLEdBQUcsQ0FBRSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFFLENBQUM7b0NBQUUsTUFBTTtnQ0FDeEYsS0FBSyxXQUFXLENBQUMsRUFBRTtvQ0FBSyxTQUFTLEdBQUcsQ0FBRSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFFLENBQUM7b0NBQUUsTUFBTTtnQ0FDeEYsS0FBSyxXQUFXLENBQUMsR0FBRztvQ0FBSSxTQUFTLEdBQUcsQ0FBRSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFFLENBQUM7b0NBQUUsTUFBTTtnQ0FDeEYsS0FBSyxXQUFXLENBQUMsR0FBRztvQ0FBSSxTQUFTLEdBQUcsQ0FBRSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFFLENBQUM7b0NBQUUsTUFBTTtnQ0FDeEYsS0FBSyxXQUFXLENBQUMsS0FBSztvQ0FBRSxTQUFTLEdBQUcsQ0FBRSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFFLENBQUM7b0NBQUUsTUFBTTtnQ0FDekYsT0FBTyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENB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UztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3RELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdEMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQzthQUNwQztTQUNGO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQzs7c0hBaGdCVSx3QkFBd0I7MEdBQXhCLHdCQUF3Qiwya0JDVnJDLHlwVEF5Skc7NEZEL0lVLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxtQkFBbUI7K0ZBUUYsV0FBVztzQkFBckMsU0FBUzt1QkFBQyxhQUFhO2dCQVNYLElBQUk7c0JBQWhCLEtBQUs7Z0JBTU8sT0FBTztzQkFBbkIsS0FBSztnQkFNTyxVQUFVO3NCQUF0QixLQUFLO2dCQU9HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVENDb25kaXRpb24sIFRDRGF0YUZpbHRlcnMsIFRDRmlsdGVyc1R5cGUgfSBmcm9tICcuL3RjbG91ZC11aS1maWx0ZXJzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGNsb3VkLXVpLWZpbHRlcnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90Y2xvdWQtdWktZmlsdGVycy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVENsb3VkVWlGaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG5cclxuICBkYXRlcGlja2VycyA9IFtdIGFzIGFueTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnX2Zvcm11bGFyaW8nKSAgX2Zvcm11bGFyaW86IE5nRm9ybSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgaW5wdXRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBzaG93X2ZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc2VhcmNoX2RhdGE6IGFueSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSBfZGF0YTogYW55IHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHNldCBkYXRhKGRhdGE6IGFueSl7XHJcbiAgICAvLyB0aGlzLl9kYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgfVxyXG4gIGdldCBkYXRhKCk6IGFueXsgcmV0dXJuIHRoaXMuX2RhdGE7IH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsdGVyczogVENEYXRhRmlsdGVycyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzZXQgZmlsdGVycyhmaWx0ZXJzOiBhbnkpe1xyXG4gICAgLy90aGlzLl9maWx0ZXJzID0gZmlsdGVycztcclxuICB9XHJcbiAgZ2V0IGZpbHRlcnMoKTogYW55eyByZXR1cm4gdGhpcy5fZmlsdGVyczsgfVxyXG5cclxuICBwcml2YXRlIF9zdWJtaXRUZXh0OiBzdHJpbmcgPSAnRmlsdHJhcic7XHJcbiAgQElucHV0KCkgc2V0IHN1Ym1pdFRleHQodjogc3RyaW5nKXsgXHJcbiAgICBpZiggdiAmJiB2ICE9PSB0aGlzLl9zdWJtaXRUZXh0ICl7XHJcbiAgICAgIHRoaXMuX3N1Ym1pdFRleHQgPSB2O1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgc3VibWl0VGV4dCgpOnN0cmluZ3sgcmV0dXJuIHRoaXMuX3N1Ym1pdFRleHQ7IH1cclxuXHJcbiAgQElucHV0KCkgYnRuU3VibWl0Q2xhc3M6IHN0cmluZyA9ICd0Yy1idG4tcHJpbWFyeSc7XHJcbiAgQElucHV0KCkgdXNlT25DaGFuZ2VTdWJtaXQ6IGJvb2xlYW4gPSB0cnVlOyAvLyB1c2VPbkNoYW5nZVN1Ym1pdCAtIFN1Ym1pdCBhdXRvbWF0aWNvIHF1YW5kbyBmb3IgYWx0ZXJhZG8gcXVhbnF1ZXIgaW5wdXRcclxuICBASW5wdXQoKSB1c2VCdXR0b25TdWJtaXQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gdXNlQnV0dG9uU3VibWl0IC0gRXhpYmUgdW0gYm90w6NvIGRlIHN1Ym1pdCBlIG7Do28gZXhlY3V0YSBhIGJ1c2NhIGF1dG9tYXRpY2FtZW50ZVxyXG4gIEBJbnB1dCgpIHVzZU5vcm1hbGl6ZUNhc2VTZW5zaXRpdmU6IGJvb2xlYW4gPSB0cnVlOyAvLyB1c2VOb3JtYWxpemVDYXNlU2Vuc2l0aXZlIC0gTsOjbyB2YWxpZGEgY2FpeGEgYWx0YSBvdSBiYWl4YSBlIGNhcmFjdGVyZXMgZXNwZWNpYWlzXHJcbiAgQElucHV0KCkgdXNlUmFuZ2VEYXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSB1c2VGaWx0ZXJBY2NlcHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIHJlc3VsdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvbkZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBkZXNjcmlwdGlvblN0YXJ0OiBzdHJpbmcgPSAnJztcclxuICBkZXNjcmlwdGlvblN0b3A6IHN0cmluZyA9ICcnO1xyXG5cclxuICBwcml2YXRlIGZpcnN0X2FjdGl2ZV9maWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc3RhcnRfc3RvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN0YXJ0X3N0b3Bfd2lkdGg6IG51bWJlciA9IDA7XHJcbiAgc3RhcnRfc3RvcF91bmQ6IHN0cmluZyA9ICcnOyAvLyBweCBvdSAlXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkYXRlcGlwZTogRGF0ZVBpcGVcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiggdGhpcy5maWx0ZXJzICYmICh0aGlzLmZpbHRlcnMpLmxlbmd0aCA+IDAgKXtcclxuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgKHRoaXMuZmlsdGVycykubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgaWYoIHRoaXMuZmlsdGVyc1tpXS52YWx1ZSApe1xyXG4gICAgICAgICAgICBpZiggdGhpcy5maWx0ZXJzW2ldLnR5cGUgPT09ICdkYXRldGltZS1sb2NhbCcgKXtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzW2ldLnNlYXJjaFRleHQgPSBuZXcgRGF0ZSggYCR7dGhpcy5maWx0ZXJzW2ldLnZhbHVlfWAgKTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge31cclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzW2ldLnNlYXJjaFRleHQgPSB0aGlzLmZpbHRlcnNbaV0udmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5maXJzdF9hY3RpdmVfZmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdGFydF9zdG9wID0gKHRoaXMudXNlUmFuZ2VEYXRlKSA/IHRoaXMuaXNfc3RhcnRfc3RvcF9kYXRldGltZSgpIDogZmFsc2U7XHJcbiAgICAgIHRoaXMudG9TdWJtaXQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaXNfc3RhcnRfc3RvcF9kYXRldGltZSgpe1xyXG4gICAgbGV0IHN0YXJ0ID0gZmFsc2U7XHJcbiAgICBsZXQgc3RvcCA9IGZhbHNlO1xyXG4gICAgaWYoIHRoaXMuZmlsdGVycyAmJiAodGhpcy5maWx0ZXJzKS5sZW5ndGggPiAwICl7XHJcbiAgICAgIHRoaXMuc3RhcnRfc3RvcF93aWR0aCA9IDA7XHJcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCAodGhpcy5maWx0ZXJzKS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgaWYoIHRoaXMuZmlsdGVyc1tpXS5pZCA9PT0gJ3N0YXJ0JyApe1xyXG4gICAgICAgICAgc3RhcnQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zdGFydF9zdG9wX3dpZHRoICs9IHRoaXMuZ2V0VmFsdWVXaWR0aCh0aGlzLmZpbHRlcnNbaV0ud2lkdGgpO1xyXG4gICAgICAgICAgdGhpcy5zdGFydF9zdG9wX3VuZCA9IHRoaXMuZ2V0VW5pZGFkZSh0aGlzLmZpbHRlcnNbaV0ud2lkdGgpO1xyXG4gICAgICAgICAgdGhpcy5kZXNjcmlwdGlvblN0YXJ0ID0gdGhpcy5maWx0ZXJzW2ldLmRlc2NyaXB0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiggdGhpcy5maWx0ZXJzW2ldLmlkID09PSAnc3RvcCcgKXtcclxuICAgICAgICAgIHN0b3AgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zdGFydF9zdG9wX3dpZHRoICs9IHRoaXMuZ2V0VmFsdWVXaWR0aCh0aGlzLmZpbHRlcnNbaV0ud2lkdGgpO1xyXG4gICAgICAgICAgdGhpcy5kZXNjcmlwdGlvblN0b3AgPSB0aGlzLmZpbHRlcnNbaV0uZGVzY3JpcHRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKCBzdGFydCAmJiBzdG9wICkgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRWYWx1ZVdpZHRoKHY6IHN0cmluZyk6bnVtYmVyIHtcclxuICAgIGxldCB1bmQgPSB0aGlzLmdldFVuaWRhZGUodik7XHJcbiAgICB2ID0gKHYpLnJlcGxhY2UodW5kLCAnJyk7XHJcbiAgICByZXR1cm4gKyh2KTtcclxuICB9XHJcblxyXG4gIGdldFVuaWRhZGUodjogc3RyaW5nKTpzdHJpbmcge1xyXG4gICAgbGV0IHVuZCA9ICclJztcclxuICAgIGlmKCB2ICYmICh2KS5pbmNsdWRlcygncHgnKSApe1xyXG4gICAgICB1bmQgPSAncHgnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZDtcclxuICB9XHJcbiBcclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykgeyAgXHJcbiAgICBcclxuICAgIGlmKCBjaGFuZ2VzICYmIGNoYW5nZXNbJ2RhdGEnXSApe1xyXG4gICAgICBjb25zdCBkYXRhID0gY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgaWYoIHRoaXMuX2RhdGEgIT09IGRhdGEgKXtcclxuICAgICAgICB0aGlzLl9kYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hfZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIGNoYW5nZXMgJiYgY2hhbmdlc1snZmlsdGVycyddICl7XHJcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBjaGFuZ2VzWydmaWx0ZXJzJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiggdGhpcy5fZmlsdGVycyAhPT0gZmlsdGVycyApe1xyXG4gICAgICAgIHRoaXMuX2ZpbHRlcnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpKTtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0KCl7XHJcbiAgICBpZiggdGhpcy5kYXRhICYmIHRoaXMuZmlsdGVycyApe1xyXG4gICAgICB0aGlzLnNob3dfZmlsdGVycyA9IHRydWU7XHJcbiAgICAgIGlmKCB0aGlzLmZpbHRlcnMgJiYgKHRoaXMuZmlsdGVycykubGVuZ3RoID4gMCApe1xyXG4gICAgICAgICh0aGlzLmZpbHRlcnMpLmZvckVhY2goKGZpbHRlcjogVENEYXRhRmlsdGVycykgPT4geyAgICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5zZWFyY2hJbihmaWx0ZXIsICdzeW5jJyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gXHJcbiAgICAgIGlmKCAhdGhpcy51c2VPbkNoYW5nZVN1Ym1pdCApe1xyXG4gICAgICAgIHRoaXMucmVzdWx0X2FjY2VwdCh0aGlzLmRhdGEpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiggdGhpcy51c2VPbkNoYW5nZVN1Ym1pdCB8fCB0aGlzLnVzZUJ1dHRvblN1Ym1pdCApe1xyXG4gICAgICAgIHRoaXMuc3RhcnRfZmlsdGVyKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbm9ybWFsaXplKHRleHQ6IGFueSk6IHN0cmluZ3tcclxuICAgIGlmKCB0aGlzLnVzZU5vcm1hbGl6ZUNhc2VTZW5zaXRpdmUgKXtcclxuICAgICAgY29uc3QgdiA9ICggKCAoYCR7dGV4dH1gKS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpICkudHJpbSgpICkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgcmV0dXJuIHY7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGV4dDtcclxuICB9XHJcblxyXG4gIHRvU3VibWl0KCl7XHJcbiAgICBpZiggdGhpcy5maWx0ZXJzICYmICh0aGlzLmZpbHRlcnMpLmxlbmd0aCA+IDAgKXtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmVtaXRTdWJtaXRGaWx0ZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRTdWJtaXRGaWx0ZXJzKCl7XHJcbiAgICBsZXQgZmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWx0ZXJzKSk7XHJcbiAgICBpZiggZmlsdGVycyAmJiAoZmlsdGVycykubGVuZ3RoID4gMCApe1xyXG4gICAgICAoZmlsdGVycykuZm9yRWFjaCgoZmlsdGVyOiBUQ0RhdGFGaWx0ZXJzLCBpOiBudW1iZXIpID0+IHtcclxuXHJcbiAgICAgICAgaWYoIGZpbHRlci53aWR0aCApeyBkZWxldGUoZmlsdGVyc1tpXS53aWR0aCk7IH1cclxuICAgICAgICBpZiggZmlsdGVyLnBsYWNlaG9sZGVyICl7IGRlbGV0ZShmaWx0ZXJzW2ldLnBsYWNlaG9sZGVyKTsgfVxyXG4gICAgICAgIGlmKCBmaWx0ZXIuZGVzY3JpcHRpb24gKXsgZGVsZXRlKGZpbHRlcnNbaV0uZGVzY3JpcHRpb24pOyB9XHJcblxyXG4gICAgICAgIGlmKCAoIWZpbHRlci5zZWFyY2hUZXh0IHx8IGZpbHRlci5zZWFyY2hUZXh0ICYmIGZpbHRlci5zZWFyY2hUZXh0ID09PSAnJykgJiYgZmlsdGVyLnR5cGUgIT09IFwiYm9vbGVhblwiICl7XHJcbiAgICAgICAgICBkZWxldGUoZmlsdGVyc1tpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKCBmaWx0ZXIudHlwZSA9PT0gXCJib29sZWFuXCIgKXtcclxuICAgICAgICAgIGlmKCAhZmlsdGVyLnNlYXJjaFRleHQgKXtcclxuICAgICAgICAgICAgZmlsdGVyLnNlYXJjaFRleHQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gICAgfSAgIFxyXG4gICAgXHJcbiAgICB0aGlzLm9uU3VibWl0LmVtaXQodGhpcy5maWx0ZXJzKTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGNvbGxlY3Rpb25GaW5kKG9iajogYW55LCBwYXRoOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgcGF0aEFycmF5ID0gcGF0aC5zcGxpdChcIi5cIik7XHJcbiAgICBsZXQgY3VycmVudCA9IG9iajtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aEFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGtleSA9IHBhdGhBcnJheVtpXTtcclxuXHJcbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ1snKSAmJiBrZXkuaW5jbHVkZXMoJ10nKSkge1xyXG4gICAgICAgIGNvbnN0IG5leHRLZXlzID0gcGF0aEFycmF5LnNsaWNlKGkgKyAxKTtcclxuICAgICAgICBjb25zdCBpbmRleCA9IGtleS5zdWJzdHJpbmcoa2V5LmluZGV4T2YoJ1snKSArIDEsIGtleS5pbmRleE9mKCddJykpO1xyXG4gICAgICAgIGNvbnN0IGFycmF5S2V5ID0ga2V5LnN1YnN0cmluZygwLCBrZXkuaW5kZXhPZignWycpKTtcclxuICAgICAgICBpZiggY3VycmVudCAmJiBjdXJyZW50W2FycmF5S2V5XSAmJiBjdXJyZW50W2FycmF5S2V5XVtpbmRleF0gKXtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb25GaW5kKGN1cnJlbnRbYXJyYXlLZXldW2luZGV4XSwgbmV4dEtleXMuam9pbihcIi5cIikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoXCJbXVwiKSkge1xyXG4gICAgICAgIGNvbnN0IGFycmF5S2V5ID0ga2V5LnJlcGxhY2UoXCJbXVwiLCBcIlwiKTtcclxuICAgICAgICBjdXJyZW50ID0gY3VycmVudFthcnJheUtleV0gfHwgW107XHJcbiAgICAgICAgY29uc3QgbmV4dEtleXMgPSBwYXRoQXJyYXkuc2xpY2UoaSArIDEpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGN1cnJlbnQubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmNvbGxlY3Rpb25GaW5kKGN1cnJlbnRbal0sIG5leHRLZXlzLmpvaW4oXCIuXCIpKTtcclxuICAgICAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTsgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYoICFjdXJyZW50IHx8IChjdXJyZW50ICYmICFjdXJyZW50W2tleV0pICl7XHJcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdXJyZW50ID0gY3VycmVudFtrZXldO1xyXG4gICAgICAgIGlmIChjdXJyZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3VycmVudDtcclxuICB9XHJcbiAgICBcclxuICBmaXJzdDogYm9vbGVhbiA9IHRydWU7XHJcbiAgc3RhcnRfZmlsdGVyX2ZjOiBhbnkgPSB1bmRlZmluZWQ7XHJcblxyXG4gIHN0YXJ0X3ZhbHVlOiBhbnkgfCB1bmRlZmluZWQ7XHJcbiAgc3RvcF92YWx1ZTogYW55IHwgdW5kZWZpbmVkO1xyXG5cclxuICBzZWFyY2hJblJhbmdlKCByYW5nZV9kYXRlOiBhbnkpe1xyXG4gICAgXHJcbiAgICBpZiggdGhpcy5maWx0ZXJzICYmICh0aGlzLmZpbHRlcnMpLmxlbmd0aCA+IDAgKXtcclxuXHJcbiAgICAgIGxldCBldmVudCA9IHt9IGFzIGFueTsgXHJcbiAgICAgIGV2ZW50LmRhdGVwaWNrZXJ0aW1lID0gdHJ1ZTtcclxuXHJcbiAgICAgIGZvciggbGV0IGkgPSAwOyBpIDwgKHRoaXMuZmlsdGVycykubGVuZ3RoOyBpKysgKXtcclxuXHJcbiAgICAgICAgaWYoIHRoaXMuZmlsdGVyc1tpXSAmJiB0aGlzLmZpbHRlcnNbaV0uaWQgJiYgdGhpcy5maWx0ZXJzW2ldLmlkID09PSAnc3RhcnQnICl7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcnNbaV0udmFsdWUgPSByYW5nZV9kYXRlPy5yZXN1bHQ/LnN0YXJ0ITtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyc1tpXS5zZWFyY2hUZXh0ID0gcmFuZ2VfZGF0ZT8ucmVzdWx0Py5zdGFydCE7XHJcbiAgICAgICAgICBldmVudC5pbm5lclZhbHVlID0gdGhpcy5zdGFydF92YWx1ZSA9IHJhbmdlX2RhdGU/LnJlc3VsdD8uc3RhcnQhO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hJbih0aGlzLmZpbHRlcnNbaV0sIGV2ZW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKCB0aGlzLmZpbHRlcnNbaV0gJiYgdGhpcy5maWx0ZXJzW2ldLmlkICYmIHRoaXMuZmlsdGVyc1tpXS5pZCA9PT0gJ3N0b3AnICl7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcnNbaV0udmFsdWUgPSByYW5nZV9kYXRlPy5yZXN1bHQ/LnN0b3AhO1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJzW2ldLnNlYXJjaFRleHQgPSByYW5nZV9kYXRlPy5yZXN1bHQ/LnN0b3AhO1xyXG4gICAgICAgICAgZXZlbnQuaW5uZXJWYWx1ZSA9IHRoaXMuc3RvcF92YWx1ZSA9IHJhbmdlX2RhdGU/LnJlc3VsdD8uc3RvcCE7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEluKHRoaXMuZmlsdGVyc1tpXSwgZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiggdGhpcy5maXJzdCB8fCB0aGlzLnVzZU9uQ2hhbmdlU3VibWl0ICl7XHJcbiAgICAgICAgdGhpcy50b1N1Ym1pdCgpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gICAgdGhpcy5maXJzdCA9IGZhbHNlO1xyXG5cclxuICB9XHJcblxyXG4gIGNvbnZlcnREYXRhVG9OdW1iZXIoZGF0YVN0cmluZzogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IFtkaWEsIG1lcywgYW5vXSA9IGRhdGFTdHJpbmcuc3BsaXQoJy8nKTtcclxuICAgICAgcmV0dXJuICsoYCR7YW5vfSR7bWVzfSR7ZGlhfWApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcblxyXG4gIHNlYXJjaEluKGl0ZW06IFRDRGF0YUZpbHRlcnMsIGV2ZW50PzogYW55KXtcclxuXHJcbiAgICBcclxuXHJcbiAgICB0aGlzLnN0YXJ0X2ZpbHRlcl9mYyA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XHJcblxyXG4gICAgaWYoIGV2ZW50ID09PSAnc3luYycgJiYgaXNWYWxpZCApe1xyXG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiggdHlwZW9mIGV2ZW50ID09PSAnYm9vbGVhbicgJiYgaXNWYWxpZCApe1xyXG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9IGV2ZW50O1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIChldmVudCA9PT0gdW5kZWZpbmVkIHx8IGV2ZW50ID09PSBudWxsIHx8IGV2ZW50ID09PSAnJykgJiYgaXNWYWxpZCApe1xyXG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIGV2ZW50Py5kYXRlcGlja2VydGltZSAgJiYgaXNWYWxpZCApe1xyXG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9IGV2ZW50Py5pbm5lclZhbHVlOyAgICAgIFxyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoZXZlbnQ/LnRhcmdldD8udmFsdWUgJiYgaXNWYWxpZCApe1xyXG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9IHRoaXMubm9ybWFsaXplKGV2ZW50LnRhcmdldC52YWx1ZSk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihldmVudD8udGFyZ2V0Py52YWx1ZSA9PT0gJycgJiYgaXNWYWxpZCApe1xyXG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIGl0ZW0udHlwZSA9PT0gJ2RhdGUtbG9jYWwnICYmIGl0ZW0udmFsdWUgKXtcclxuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xyXG4gICAgICBpdGVtLnNlYXJjaFRleHQgPSBgJHt0aGlzLmNvbnZlcnREYXRhVG9OdW1iZXIoIGl0ZW0udmFsdWUgKX1gO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIGV2ZW50ICYmIGV2ZW50LnJlc3VsdCAmJiAoIGV2ZW50LnJlc3VsdC5zdGFydCB8fCBldmVudC5yZXN1bHQuc3RvcCApICl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIFxyXG4gICAgXHJcbiAgICBpZiggdGhpcy51c2VPbkNoYW5nZVN1Ym1pdCB8fCB0aGlzLmZpcnN0X2FjdGl2ZV9maWx0ZXIgKXsgICAgICBcclxuICAgICAgdGhpcy5zdGFydF9maWx0ZXJfZmMgPSB0aGlzLnN0YXJ0X2ZpbHRlcigpO1xyXG4gICAgICB0aGlzLmZpcnN0X2FjdGl2ZV9maWx0ZXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiggIXRoaXMudXNlQnV0dG9uU3VibWl0ICl7XHJcbiAgICAgIHRoaXMuZW1pdFN1Ym1pdEZpbHRlcnMoKTtcclxuICAgIH0gXHJcbiAgfVxyXG5cclxuICBnZXREYXRlVVRDKGR0OiBhbnkpe1xyXG4gICAgY29uc3QgYW5vID0gZHQuZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1lcyA9IGR0LmdldE1vbnRoKCk7XHJcbiAgICBjb25zdCBkaWEgPSBkdC5nZXREYXRlKCk7XHJcbiAgICBjb25zdCBob3JhcyA9IGR0LmdldEhvdXJzKCk7XHJcbiAgICBjb25zdCBtaW51dG9zID0gZHQuZ2V0TWludXRlcygpO1xyXG4gICAgY29uc3Qgc2VndW5kb3MgPSBkdC5nZXRTZWNvbmRzKCk7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoYW5vLCBtZXMsIGRpYSwgaG9yYXMsIG1pbnV0b3MsIHNlZ3VuZG9zKSk7XHJcbiAgfVxyXG5cclxuICBcclxuICBzdGFydF9maWx0ZXIoKXtcclxuICAgIGZvciggbGV0IGkgPSAwOyBpIDwgKHRoaXMuZGF0YSkubGVuZ3RoOyBpKysgKXtcclxuXHJcbiAgICAgIHRoaXMuc2V0RGF0YUluZGV4KGksIHRydWUpO1xyXG5cclxuICAgICAgZm9yKCBsZXQgaiA9IDA7IGogPCAodGhpcy5maWx0ZXJzKS5sZW5ndGg7IGorKyApeyAgICAgICAgXHJcbiAgICAgICAgY29uc3QgZmlsdGVyX2l0ZW0gPSB0aGlzLmZpbHRlcnNbal07ICAgXHJcblxyXG4gICAgICAgIGlmKCBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICYmIHR5cGVvZiAoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09ICdzdHJpbmcnICYmIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgIT09ICcnICYmIGZpbHRlcl9pdGVtLnR5cGUgIT09IFRDRmlsdGVyc1R5cGUubnVtYmVyICYmIGZpbHRlcl9pdGVtLnR5cGUgIT09IFRDRmlsdGVyc1R5cGUuZGF0ZSApe1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ID0gdGhpcy5ub3JtYWxpemUoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCk7ICAgICAgICBcclxuICAgICAgICAgIGxldCBpdGVtX3ZhbHVlID0gdGhpcy5jb2xsZWN0aW9uRmluZCh0aGlzLmRhdGFbaV0sIGZpbHRlcl9pdGVtLnNlYXJjaEluKTtcclxuICAgICAgICAgIGlmKCBpdGVtX3ZhbHVlICl7XHJcbiAgICAgICAgICAgIGl0ZW1fdmFsdWUgPSB0aGlzLm5vcm1hbGl6ZShpdGVtX3ZhbHVlKTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYoICEoIGl0ZW1fdmFsdWUuaW5jbHVkZXMoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgfHwgaXRlbV92YWx1ZSA9PT0gZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApICl7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gXHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIGlmKCBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICYmIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTiggZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dC52YWx1ZU9mKCkpICYmIGZpbHRlcl9pdGVtLnR5cGUgPT09IFRDRmlsdGVyc1R5cGUuZGF0ZXRpbWUgKXtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgbGV0IGl0ZW1fdmFsdWU6IGFueSA9IHRoaXMuY29sbGVjdGlvbkZpbmQodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XHJcblxyXG4gICAgICAgICAgdHJ5IHsgaXRlbV92YWx1ZSA9IG5ldyBEYXRlKGl0ZW1fdmFsdWUpOyB9IGNhdGNoIChlcnJvcikge31cclxuICAgICAgICAgIGlmKCBpdGVtX3ZhbHVlICYmICBpdGVtX3ZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4oIGl0ZW1fdmFsdWUudmFsdWVPZigpKSApe1xyXG4gICAgICAgICAgICBsZXQgaXNfYWNjZXB0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkdF90YXJnZXQgICA9ICggKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpLmdldFRpbWUoKSApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDEwKTsgLyogKyAoMyAqIDYwICogNjAgKiAxMDAwKTsgKi9cclxuICAgICAgICAgICAgY29uc3QgZHRfY3VycmVudCAgPSAoIChpdGVtX3ZhbHVlKS5nZXRUaW1lKCkgKS50b1N0cmluZygpLnN1YnN0cmluZygwLCAxMCk7XHJcbiAgICAgICAgICAgIGlmKCBmaWx0ZXJfaXRlbS5jb25kaXRpb24gKXtcclxuICAgICAgICAgICAgICBzd2l0Y2ggKGZpbHRlcl9pdGVtLmNvbmRpdGlvbikge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndDogICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA+ICBOdW1iZXIoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5sdDogICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA8ICBOdW1iZXIoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndGU6ICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA8PSBOdW1iZXIoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5sdGU6ICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA+PSBOdW1iZXIoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5lcXVhbDogaXNfYWNjZXB0ID0gKCBOdW1iZXIoZHRfdGFyZ2V0KSA9PT0gTnVtYmVyKGR0X2N1cnJlbnQpICk7ICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGlzX2FjY2VwdCA9ICggTnVtYmVyKGR0X3RhcmdldCkgPT0gTnVtYmVyKGR0X2N1cnJlbnQpICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICBpc19hY2NlcHQgPSAoIE51bWJlcihmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gTnVtYmVyKGl0ZW1fdmFsdWUpICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoICFpc19hY2NlcHQgKXtcclxuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIFxyXG5cclxuICAgICAgICBpZiggZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCAmJiB0eXBlb2YgTnVtYmVyKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09PSAnbnVtYmVyJyAmJiAoIGZpbHRlcl9pdGVtLnR5cGUgPT09IFRDRmlsdGVyc1R5cGUubnVtYmVyIHx8IGZpbHRlcl9pdGVtLnR5cGUgPT09IFRDRmlsdGVyc1R5cGUuZGF0ZSApICl7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgPSBOdW1iZXIoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCk7XHJcbiAgICAgICAgICBsZXQgaXRlbV92YWx1ZSA9IHRoaXMuY29sbGVjdGlvbkZpbmQodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XHJcblxyXG4gICAgICAgICAgaWYoIHR5cGVvZiBOdW1iZXIoaXRlbV92YWx1ZSkgPT09ICdudW1iZXInICl7ICAgXHJcbiAgICAgICAgICAgIGl0ZW1fdmFsdWUgPSBOdW1iZXIoaXRlbV92YWx1ZSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBpc19hY2NlcHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYoIGZpbHRlcl9pdGVtLmNvbmRpdGlvbiApe1xyXG5cclxuICAgICAgICAgICAgICBzd2l0Y2ggKGZpbHRlcl9pdGVtLmNvbmRpdGlvbikge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndDogICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPiAgTnVtYmVyKGl0ZW1fdmFsdWUpICk7ICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24ubHQ6ICAgIGlzX2FjY2VwdCA9ICggTnVtYmVyKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpIDwgIE51bWJlcihpdGVtX3ZhbHVlKSApOyAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmd0ZTogICBpc19hY2NlcHQgPSAoIE51bWJlcihmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA8PSBOdW1iZXIoaXRlbV92YWx1ZSkgKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmx0ZTogICBpc19hY2NlcHQgPSAoIE51bWJlcihmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA+PSBOdW1iZXIoaXRlbV92YWx1ZSkgKTsgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5lcXVhbDogaXNfYWNjZXB0ID0gKCBOdW1iZXIoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09IE51bWJlcihpdGVtX3ZhbHVlKSApOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGlzX2FjY2VwdCA9ICggTnVtYmVyKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09IE51bWJlcihpdGVtX3ZhbHVlKSApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgaXNfYWNjZXB0ID0gKCBOdW1iZXIoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09IE51bWJlcihpdGVtX3ZhbHVlKSApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKCAhaXNfYWNjZXB0ICl7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXREYXRhSW5kZXgoaSwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKCB0eXBlb2YgKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09PSAnYm9vbGVhbicgJiYgZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCA9PT0gdHJ1ZSApe1xyXG5cclxuICAgICAgICAgIGxldCBpdGVtX3ZhbHVlOiBhbnkgPSB0aGlzLmNvbGxlY3Rpb25GaW5kKHRoaXMuZGF0YVtpXSwgZmlsdGVyX2l0ZW0uc2VhcmNoSW4pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZiggaXRlbV92YWx1ZSAmJiAoaXRlbV92YWx1ZSkubGVuZ3RoID4gMCApeyAgXHJcbiAgICAgICAgICAgIGxldCBxdGRfaXNfdHJ1ZSA9IDA7ICAgICAgICAgIFxyXG4gICAgICAgICAgICBmb3IoIGxldCBpID0gMDsgaSA8ICgoaXRlbV92YWx1ZSkubGVuZ3RoKTsgaSsrICl7XHJcbiAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1fdmFsdWVbaV07XHJcbiAgICAgICAgICAgICAgaWYoIGl0ZW0gPT09IGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgKXtcclxuICAgICAgICAgICAgICAgIHF0ZF9pc190cnVlKys7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKCBxdGRfaXNfdHJ1ZSA9PT0gMCApe1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUluZGV4KGksIGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGlmKCAhKCBpdGVtX3ZhbHVlID09PSBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICkgKXtcclxuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICBcclxuICAgICAgfVxyXG5cclxuICAgIH0gLy8gZW5kIGZvclxyXG4gICAgXHJcbiAgICB0aGlzLnRvUmVzdWx0KCk7XHJcbiAgICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b1Jlc3VsdCgpe1xyXG5cclxuXHJcbiAgICBjb25zdCBzZWFyY2hfZGF0YSA9IFtdO1xyXG5cclxuICAgIGxldCBpc19maWx0ZXIgPSBmYWxzZTtcclxuICAgIGZvciggbGV0IGkgPSAwOyBpIDwgKHRoaXMuZmlsdGVycykubGVuZ3RoOyBpKysgKXtcclxuICAgICAgaWYoIHRoaXMuZmlsdGVyc1tpXS5zZWFyY2hUZXh0ICYmIHRoaXMuZmlsdGVyc1tpXS5zZWFyY2hUZXh0ICE9PSAnJyApe1xyXG4gICAgICAgIGlzX2ZpbHRlciA9IHRydWU7IGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIGlzX2ZpbHRlciApe1xyXG4gICAgICBmb3IoIGxldCBpID0gMDsgaSA8ICh0aGlzLmRhdGEpLmxlbmd0aDsgaSsrICl7XHJcbiAgICAgICAgaWYoIHRoaXMuZGF0YSAmJiB0aGlzLmRhdGFbaV0gJiYgdGhpcy5kYXRhW2ldWyd0Y19maWx0ZXJfYWNjZXB0J10gKXtcclxuICAgICAgICAgIChzZWFyY2hfZGF0YSkucHVzaCh0aGlzLmRhdGFbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5yZXN1bHRfYWNjZXB0KHNlYXJjaF9kYXRhKTtcclxuICAgICAgdGhpcy5vbkZpbHRlci5lbWl0KHsuLi50aGlzLmZpbHRlcnN9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVzdWx0X2FjY2VwdCh0aGlzLmRhdGEpO1xyXG4gICAgdGhpcy5vbkZpbHRlci5lbWl0KHsuLi50aGlzLmZpbHRlcnN9KTtcclxuICB9XHJcblxyXG4gIHNldERhdGFJbmRleChpbmRleDogbnVtYmVyLCB2YWx1ZTogYm9vbGVhbiApe1xyXG4gICAgaWYoIHRoaXMuZGF0YSAmJiB0aGlzLmRhdGFbaW5kZXhdICl7XHJcbiAgICAgIHRoaXMuZGF0YVtpbmRleF1bJ3RjX2ZpbHRlcl9hY2NlcHQnXSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzdWx0X2FjY2VwdChkYXRhOiBhbnkpe1xyXG4gICAgaWYoICF0aGlzLnVzZUZpbHRlckFjY2VwdCAmJiBkYXRhICYmIChkYXRhKS5sZW5ndGggPiAwICl7XHJcbiAgICAgIGZvciggbGV0IGkgPSAwOyBpIDwgKGRhdGEpLmxlbmd0aDsgaSsrICl7XHJcbiAgICAgICAgZGVsZXRlIGRhdGFbaV1bJ3RjX2ZpbHRlcl9hY2NlcHQnXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5yZXN1bHQuZW1pdChkYXRhKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJzaG93X2ZpbHRlcnNcIiBjbGFzcz1cInRjbG91ZC11aS1maWx0ZXJzIGFyZWEtZmlsdGVyXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcnM7IGxldCBpID0gaW5kZXhcIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLnR5cGUgfHwgKGl0ZW0udHlwZSAmJiBpdGVtLnR5cGUgIT09ICdib29sZWFuJylcIj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdkYXRlLWxvY2FsJ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtZmlsdGVyLWlucHV0IHR5cGUte3tpdGVtLnR5cGV9fSBib3gtdHlwZS17e2l0ZW0udHlwZX19XCIgW3N0eWxlXT1cIihpdGVtLndpZHRoICE9PSAnJykgPyAnd2lkdGg6JytpdGVtLndpZHRoIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kZXNjcmlwdGlvbiB0Yy10aXRsZS1lbGxpcHNpcyBib3gtdHlwZS17e2l0ZW0udHlwZX19XCIgdGl0bGU9XCJ7eyBpdGVtLmRlc2NyaXB0aW9uIH19XCI+PGkgW2NsYXNzLnRvLWFjdGl2ZV09XCIoaXRlbS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIGl0ZW0udmFsdWUgIT09IG51bGwgJiYgaXRlbS52YWx1ZSAhPT0gJycpXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwO3t7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LXR5cGUte3tpdGVtLnR5cGV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGNsb3VkLXVpLWRhdGVwaWNrZXIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjX2lucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZUlucHV0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaEluKGl0ZW0sIF9pbnB1dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Y2xvdWQtdWktZGF0ZXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jbGVhci1maWx0ZXItdGV4dFwiIFtjbGFzcy50by1oaWRlXT1cIiEoaXRlbS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIGl0ZW0udmFsdWUgIT09IG51bGwgJiYgaXRlbS52YWx1ZSAhPT0gJycpXCIgKGNsaWNrKT1cInNlYXJjaEluKGl0ZW0sIG51bGwpOyBpdGVtLnNlYXJjaFRleHQgPSB1bmRlZmluZWQ7IGl0ZW0udmFsdWUgPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSAhPT0gJ2RhdGUtbG9jYWwnXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlID09PSAnZGF0ZXRpbWUtbG9jYWwnXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoaXRlbS5pZCA9PT0gJ3N0YXJ0JyB8fCBpdGVtLmlkID09PSAnc3RvcCcpICYmIHVzZVJhbmdlRGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBFUklPRCBSQU5HRSBEQVRFIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pZCA9PT0gJ3N0YXJ0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC1maWx0ZXItaW5wdXQgdHlwZS17e2l0ZW0udHlwZX19IGJveC10eXBlLXt7aXRlbS50eXBlfX1cIiBbc3R5bGVdPVwiKGl0ZW0ud2lkdGggIT09ICcnKSA/ICd3aWR0aDonK3N0YXJ0X3N0b3Bfd2lkdGgrJycrc3RhcnRfc3RvcF91bmQgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWRlc2NyaXB0aW9uIHRjLXRpdGxlLWVsbGlwc2lzIGJveC10eXBlLXt7aXRlbS50eXBlfX1cIiB0aXRsZT1cInt7IGl0ZW0uZGVzY3JpcHRpb24gfX1cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIihfcmFuZ2VfZGF0ZSAmJiBfcmFuZ2VfZGF0ZS5yZXN1bHQgJiYgX3JhbmdlX2RhdGUucmVzdWx0LnN0YXJ0ICYmIF9yYW5nZV9kYXRlLnJlc3VsdC5zdG9wIClcIiBjbGFzcz1cImZhcyBmYS1maWx0ZXIgaWNvbi1maWx0ZXJcIj48L2k+Jm5ic3A7PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJhbmdlLWRhdGUgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjX3JhbmdlX2RhdGUgbmdNb2RlbCBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdFZhbHVlUGVyaW9kU3RhcnRTdG9wXT1cIml0ZW0uZGVmYXVsdFZhbHVlUGVyaW9kU3RhcnRTdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rlc2NyaXB0aW9uU3RhcnRdPVwiZGVzY3JpcHRpb25TdGFydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvblN0b3BdPVwiZGVzY3JpcHRpb25TdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJzZWFyY2hJblJhbmdlKF9yYW5nZV9kYXRlKTsgc2VhcmNoSW4oaXRlbSwgX3JhbmdlX2RhdGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yYW5nZS1kYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJpdGVtLmlkID09PSAnc3RhcnQnXCIgI19pbnB1dCBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIHR5cGU9XCJoaWRkZW5cIiBbKG5nTW9kZWwpXT1cInN0YXJ0X3ZhbHVlXCI+ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiaXRlbS5pZCA9PT0gJ3N0b3AnXCIgI19pbnB1dCBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIHR5cGU9XCJoaWRkZW5cIiBbKG5nTW9kZWwpXT1cInN0b3BfdmFsdWVcIj4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLmlkIHx8ICF1c2VSYW5nZURhdGVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtZmlsdGVyLWlucHV0IHR5cGUte3tpdGVtLnR5cGV9fSBib3gtdHlwZS17e2l0ZW0udHlwZX19XCIgW3N0eWxlXT1cIihpdGVtLndpZHRoICE9PSAnJykgPyAnd2lkdGg6JytpdGVtLndpZHRoIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWRlc2NyaXB0aW9uIHRjLXRpdGxlLWVsbGlwc2lzIGJveC10eXBlLXt7aXRlbS50eXBlfX1cIiB0aXRsZT1cInt7IGl0ZW0uZGVzY3JpcHRpb24gfX1cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIihpdGVtLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgaXRlbS52YWx1ZSAhPT0gbnVsbCAmJiBpdGVtLnZhbHVlICE9PSAnJylcIiBjbGFzcz1cImZhcyBmYS1maWx0ZXIgaWNvbi1maWx0ZXJcIj48L2k+Jm5ic3A7e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC10eXBlLXt7aXRlbS50eXBlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGNsb3VkLXVpLWRhdGVwaWNrZXItdGltZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpbnB1dF97e2krMX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VPcHRpb25zRGF0ZVRpbWVdPVwiKGl0ZW0gJiYgaXRlbS51c2VPcHRpb25zRGF0ZVRpbWUpID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50Q2hhbmdlKT1cInNlYXJjaEluKGl0ZW0sIF9pbnB1dClcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Y2xvdWQtdWktZGF0ZXBpY2tlci10aW1lPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xlYXItZmlsdGVyLXRleHRcIiBbY2xhc3MudG8taGlkZV09XCIhKGl0ZW0udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBpdGVtLnZhbHVlICE9PSBudWxsICYmIGl0ZW0udmFsdWUgIT09ICcnKVwiIChjbGljayk9XCJzZWFyY2hJbihpdGVtLCBudWxsKTsgaXRlbS5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkOyBpdGVtLnZhbHVlID0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgIT09ICdzZWxlY3QnICYmIGl0ZW0udHlwZSAhPT0gJ2RhdGV0aW1lLWxvY2FsJyAmJiBpdGVtLnR5cGUgIT09ICdkYXRlLWxvY2FsJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC1maWx0ZXItaW5wdXQgdHlwZS17e2l0ZW0udHlwZX19IGJveC10eXBlLXt7aXRlbS50eXBlfX1cIiBbc3R5bGVdPVwiKGl0ZW0ud2lkdGggIT09ICcnKSA/ICd3aWR0aDonK2l0ZW0ud2lkdGggOiAnJ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kZXNjcmlwdGlvbiB0Yy10aXRsZS1lbGxpcHNpcyBib3gtdHlwZS17e2l0ZW0udHlwZX19XCIgdGl0bGU9XCJ7eyBpdGVtLmRlc2NyaXB0aW9uIH19XCI+PGkgW2NsYXNzLnRvLWFjdGl2ZV09XCJfaW5wdXQudmFsdWUgIT09ICcnXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwO3t7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LXR5cGUte3tpdGVtLnR5cGV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjX2lucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAoaXRlbS5wbGFjZWhvbGRlciAhPT0gJycpID8gaXRlbS5wbGFjZWhvbGRlciA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpbnB1dF97e2krMX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwie3sgKGl0ZW0udHlwZSA9PT0gJ251bWJlcicpID8gJ3RleHQnIDogaXRlbS50eXBlIH19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRjLWZvcm0tY29udHJvbFwiICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwic2VhcmNoSW4oaXRlbSwgJGV2ZW50KVwiPiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xlYXItZmlsdGVyLXRleHRcIiBbY2xhc3MudG8taGlkZV09XCJfaW5wdXQudmFsdWUgPT09ICcnXCIgKGNsaWNrKT1cInNlYXJjaEluKGl0ZW0sIG51bGwpOyBfaW5wdXQudmFsdWUgPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ3NlbGVjdCcgJiYgaXRlbS5kYXRhICYmIChpdGVtLmRhdGEpLmxlbmd0aCA+IDBcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LWZpbHRlci1pbnB1dCB0eXBlLXt7aXRlbS50eXBlfX0gYm94LXR5cGUte3tpdGVtLnR5cGV9fVwiIFtzdHlsZV09XCIoaXRlbS53aWR0aCAhPT0gJycpID8gJ3dpZHRoOicraXRlbS53aWR0aCA6ICcnXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWRlc2NyaXB0aW9uIHRjLXRpdGxlLWVsbGlwc2lzIGJveC10eXBlLXt7aXRlbS50eXBlfX1cIiB0aXRsZT1cInt7IGl0ZW0uZGVzY3JpcHRpb24gfX1cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIl9pbnB1dC52YWx1ZSAhPT0gJydcIiBjbGFzcz1cImZhcyBmYS1maWx0ZXIgaWNvbi1maWx0ZXJcIj48L2k+Jm5ic3A7e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtdHlwZS17e2l0ZW0udHlwZX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjX2lucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlucHV0X3t7aSsxfX1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGMtZm9ybS1jb250cm9sXCIgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VhcmNoSW4oaXRlbSwgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJcIj48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHYgb2YgaXRlbS5kYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwidi52YWx1ZVwiPnt7IHYuZGVzY3JpcHRpb24gfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlICYmIGl0ZW0udHlwZSA9PT0gJ2Jvb2xlYW4nXCI+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LWZpbHRlci1pbnB1dFwiIFtzdHlsZV09XCIoaXRlbS53aWR0aCAhPT0gJycpID8gJ3dpZHRoOicraXRlbS53aWR0aCA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kZXNjcmlwdGlvbiB0Yy10aXRsZS1lbGxpcHNpc1wiIHRpdGxlPVwie3sgaXRlbS5kZXNjcmlwdGlvbiB9fVwiIHRpdGxlPVwie3sgaXRlbS5kZXNjcmlwdGlvbiB9fVwiPjxpIFtjbGFzcy50by1hY3RpdmVdPVwiX2lucHV0LmNoZWNrZWQgPT09IHRydWVcIiBjbGFzcz1cImZhcyBmYS1maWx0ZXIgaWNvbi1maWx0ZXJcIj48L2k+Jm5ic3A7e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFyZWEtaW5wdXQtY2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGMtZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ucGxhY2Vob2xkZXIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjX2lucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAoaXRlbS5wbGFjZWhvbGRlciAhPT0gJycpID8gaXRlbS5wbGFjZWhvbGRlciA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VhcmNoSW4oaXRlbSwgX2lucHV0LmNoZWNrZWQpXCI+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0IG1iLTEgbXItMVwiICpuZ0lmPVwidXNlQnV0dG9uU3VibWl0XCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0Yy1idG4ge3sgYnRuU3VibWl0Q2xhc3MgfX1cIiAoY2xpY2spPVwidG9TdWJtaXQoKVwiID57eyBzdWJtaXRUZXh0IH19PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG5cclxuPCEtLSA8cHJlPnt7IGlucHV0cyB8IGpzb24gfX08L3ByZT4gLS0+XHJcbjwhLS0gPHByZT4ge3sgZGF0YSB8IGpzb24gfX0gPC9wcmU+IC0tPlxyXG5cclxuPCEtLSA8cD5GSUxURVJTPC9wPjxwcmU+IHt7IGZpbHRlcnMgfCBqc29uIH19PC9wcmU+IC0tPlxyXG5cclxuPCEtLVxyXG4gICAgPHByZT5zdGFydF9zdG9wOiB7eyBzdGFydF9zdG9wIH19PC9wcmU+XHJcbiAgICA8cHJlPnN0YXJ0X3N0b3Bfd2lkdGg6IHt7IHN0YXJ0X3N0b3Bfd2lkdGggfX08L3ByZT5cclxuICAgIDxwcmU+c3RhcnRfc3RvcF91bmQ6IHt7IHN0YXJ0X3N0b3BfdW5kIH19PC9wcmU+XHJcbi0tPiJdfQ==
|