keevo-components 1.8.262 → 1.8.264
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/ng-package.json +7 -0
- package/package.json +32 -45
- package/src/assets/.gitkeep +0 -0
- package/src/assets/images/LogoEvo.png +0 -0
- package/src/assets/images/LogoPequenaEvo.png +0 -0
- package/src/assets/images/background.png +0 -0
- package/src/assets/images/keepass-logo.png +0 -0
- package/src/assets/images/keepass-logo.svg +74 -0
- package/src/assets/images/keevo-logo.png +0 -0
- package/src/assets/images/logokeevo_2.png +0 -0
- package/src/index.ts +1 -0
- package/src/lib/api/base-components/base-component-button.ts +29 -0
- package/src/lib/api/base-components/base-component-chart.ts +105 -0
- package/src/lib/api/base-components/base-component-crud-form.ts +368 -0
- package/src/lib/api/base-components/base-component-crud-list.ts +136 -0
- package/src/lib/api/base-components/base-component-crud.ts +83 -0
- package/src/lib/api/base-components/base-component-dropdown-external.ts +29 -0
- package/src/lib/api/base-components/base-component-dropdown-new.ts +112 -0
- package/src/lib/api/base-components/base-component-dropdown.ts +192 -0
- package/src/lib/api/base-components/base-component-input.ts +121 -0
- package/src/lib/api/base-components/base-component-multi-select.ts +136 -0
- package/src/lib/api/base-components/base-component-table.ts +364 -0
- package/src/lib/api/base-components/base-component.ts +47 -0
- package/src/lib/api/components/chart/chart.config.ts +12 -0
- package/src/lib/api/components/chart/chart.model.ts +9 -0
- package/src/lib/api/components/chart/orchart.config.ts +41 -0
- package/src/lib/api/components/chart/orchart.item.ts +33 -0
- package/src/lib/api/components/dropdown/filtro.combo.ts +4 -0
- package/src/lib/api/components/stepper/kv-stepperpanel.ts +10 -0
- package/src/lib/api/components/table/action-item.ts +12 -0
- package/src/lib/api/components/table/kv-menuitem.ts +198 -0
- package/src/lib/api/components/table/table-dropdown-control.ts +6 -0
- package/src/lib/api/components/table/table.config.column.ts +31 -0
- package/src/lib/api/components/table/table.config.ts +36 -0
- package/src/lib/api/components/table/table.paginate.ts +6 -0
- package/src/lib/api/components/table/tabledit.config.ts +10 -0
- package/src/lib/api/components/table/tableedit.config.column.ts +12 -0
- package/src/lib/api/components/tree-table/tree-table.config.ts +31 -0
- package/src/lib/api/directives/directives.module.ts +19 -0
- package/src/lib/api/directives/drag/drag.directive.ts +40 -0
- package/src/lib/api/directives/stepper/dynamicinput.directive.ts +23 -0
- package/src/lib/api/directives/template/template.directive.ts +15 -0
- package/src/lib/api/helpers/component-providers.ts +16 -0
- package/src/lib/api/helpers/keevo-validators.ts +126 -0
- package/src/lib/api/helpers/severity-color.ts +77 -0
- package/src/lib/api/helpers/translate-primeng.ts +25 -0
- package/src/lib/api/modules/primeng.module.ts +138 -0
- package/src/lib/api/pipes/capitalize.pipe.ts +23 -0
- package/src/lib/api/pipes/cpfcnpj.pipe.ts +21 -0
- package/src/lib/api/pipes/mask.pipe.ts +24 -0
- package/src/lib/api/pipes/pipes.module.ts +26 -0
- package/src/lib/api/pipes/telefone.pipe.ts +38 -0
- package/src/lib/api/services/base.api.service.ts +115 -0
- package/src/lib/api/services/breadcrumbs.service.ts +60 -0
- package/src/lib/api/services/component.service.ts +32 -0
- package/src/lib/api/services/docs.service.ts +129 -0
- package/src/lib/api/services/form.service.ts +137 -0
- package/src/lib/api/services/imagens.service.ts +28 -0
- package/src/lib/api/services/notification.service.ts +88 -0
- package/src/lib/api/services/object.service.ts +33 -0
- package/{lib/api/types/severity.d.ts → src/lib/api/types/severity.ts} +3 -2
- package/src/lib/api/types/stimulsoft.reports.d.ts +67463 -0
- package/src/lib/components/keevo-components-styles.scss +194 -0
- package/src/lib/components/keevo-components.module.ts +88 -0
- package/src/lib/components/kv-avatar/kv-avatar.component.html +13 -0
- package/src/lib/components/kv-avatar/kv-avatar.component.scss +58 -0
- package/src/lib/components/kv-avatar/kv-avatar.component.spec.ts +23 -0
- package/src/lib/components/kv-avatar/kv-avatar.component.ts +142 -0
- package/src/lib/components/kv-avatar/kv-avatar.module.ts +35 -0
- package/src/lib/components/kv-avatar/kv-crop-image/kv-crop-image.component.html +11 -0
- package/src/lib/components/kv-avatar/kv-crop-image/kv-crop-image.component.scss +27 -0
- package/src/lib/components/kv-avatar/kv-crop-image/kv-crop-image.component.ts +217 -0
- package/src/lib/components/kv-button/kv-button.component.html +13 -0
- package/src/lib/components/kv-button/kv-button.component.scss +152 -0
- package/src/lib/components/kv-button/kv-button.component.spec.ts +23 -0
- package/src/lib/components/kv-button/kv-button.component.ts +21 -0
- package/src/lib/components/kv-button/kv-button.module.ts +20 -0
- package/src/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.html +14 -0
- package/src/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.scss +6 -0
- package/src/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.ts +25 -0
- package/src/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.html +12 -0
- package/src/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.scss +71 -0
- package/src/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.ts +36 -0
- package/src/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.html +12 -0
- package/src/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.scss +18 -0
- package/src/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.ts +14 -0
- package/src/lib/components/kv-buttons/kv-button-success/kv-button-success.component.html +11 -0
- package/src/lib/components/kv-buttons/kv-button-success/kv-button-success.component.scss +17 -0
- package/src/lib/components/kv-buttons/kv-button-success/kv-button-success.component.ts +14 -0
- package/src/lib/components/kv-buttons/kv-button.module.ts +26 -0
- package/src/lib/components/kv-carousel/kv-carousel.component.html +25 -0
- package/src/lib/components/kv-carousel/kv-carousel.component.scss +32 -0
- package/src/lib/components/kv-carousel/kv-carousel.component.spec.ts +23 -0
- package/src/lib/components/kv-carousel/kv-carousel.component.ts +38 -0
- package/src/lib/components/kv-carousel/kv-carousel.module.ts +19 -0
- package/src/lib/components/kv-chart/kv-chart.component.html +38 -0
- package/src/lib/components/kv-chart/kv-chart.component.scss +0 -0
- package/src/lib/components/kv-chart/kv-chart.component.spec.ts +28 -0
- package/src/lib/components/kv-chart/kv-chart.component.ts +153 -0
- package/src/lib/components/kv-chart/kv-chart.module.ts +21 -0
- package/src/lib/components/kv-error/kv-error.component.html +3 -0
- package/src/lib/components/kv-error/kv-error.component.scss +5 -0
- package/src/lib/components/kv-error/kv-error.component.ts +27 -0
- package/src/lib/components/kv-error/kv-error.module.ts +26 -0
- package/src/lib/components/kv-file-upload/kv-file-upload.component.html +53 -0
- package/src/lib/components/kv-file-upload/kv-file-upload.component.scss +9 -0
- package/src/lib/components/kv-file-upload/kv-file-upload.component.spec.ts +23 -0
- package/src/lib/components/kv-file-upload/kv-file-upload.component.ts +128 -0
- package/src/lib/components/kv-file-upload/kv-file-upload.module.ts +10 -0
- package/src/lib/components/kv-file-viewer/kv-file-viewer.component.html +16 -0
- package/src/lib/components/kv-file-viewer/kv-file-viewer.component.scss +18 -0
- package/src/lib/components/kv-file-viewer/kv-file-viewer.component.ts +40 -0
- package/src/lib/components/kv-file-viewer/kv-file-viewer.module.ts +14 -0
- package/src/lib/components/kv-filter-card/kv-filter-card.component.html +13 -0
- package/src/lib/components/kv-filter-card/kv-filter-card.component.scss +74 -0
- package/src/lib/components/kv-filter-card/kv-filter-card.component.spec.ts +23 -0
- package/src/lib/components/kv-filter-card/kv-filter-card.component.ts +17 -0
- package/src/lib/components/kv-filter-card/kv-filter-card.module.ts +23 -0
- package/src/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.html +21 -0
- package/src/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.scss +22 -0
- package/src/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.spec.ts +23 -0
- package/src/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.ts +20 -0
- package/src/lib/components/kv-filter-fieldset/kv-filter-fieldset.module.ts +20 -0
- package/src/lib/components/kv-g-icon/kv-g-icon.component.html +1 -0
- package/src/lib/components/kv-g-icon/kv-g-icon.component.scss +0 -0
- package/src/lib/components/kv-g-icon/kv-g-icon.component.spec.ts +23 -0
- package/src/lib/components/kv-g-icon/kv-g-icon.component.ts +10 -0
- package/src/lib/components/kv-g-icon/kv-g-icon.module.ts +11 -0
- package/src/lib/components/kv-home-card/kv-home-card.component.html +35 -0
- package/src/lib/components/kv-home-card/kv-home-card.component.scss +5 -0
- package/src/lib/components/kv-home-card/kv-home-card.component.spec.ts +23 -0
- package/src/lib/components/kv-home-card/kv-home-card.component.ts +33 -0
- package/src/lib/components/kv-home-card/kv-home-card.module.ts +18 -0
- package/src/lib/components/kv-image-upload/kv-image-upload.component.html +64 -0
- package/src/lib/components/kv-image-upload/kv-image-upload.component.scss +0 -0
- package/src/lib/components/kv-image-upload/kv-image-upload.component.ts +84 -0
- package/src/lib/components/kv-image-upload/kv-image-upload.module.ts +10 -0
- package/src/lib/components/kv-inputs/kv-check/kv-check.component.html +12 -0
- package/src/lib/components/kv-inputs/kv-check/kv-check.component.scss +32 -0
- package/src/lib/components/kv-inputs/kv-check/kv-check.component.ts +33 -0
- package/src/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.html +91 -0
- package/src/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.scss +21 -0
- package/src/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.ts +40 -0
- package/src/lib/components/kv-inputs/kv-editor/kv-editor.component.html +113 -0
- package/src/lib/components/kv-inputs/kv-editor/kv-editor.component.scss +45 -0
- package/src/lib/components/kv-inputs/kv-editor/kv-editor.component.ts +138 -0
- package/src/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.html +31 -0
- package/src/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.scss +19 -0
- package/src/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.ts +96 -0
- package/src/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.html +24 -0
- package/src/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.scss +0 -0
- package/src/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.ts +35 -0
- package/src/lib/components/kv-inputs/kv-input-number/kv-input-number.component.html +23 -0
- package/src/lib/components/kv-inputs/kv-input-number/kv-input-number.component.scss +0 -0
- package/src/lib/components/kv-inputs/kv-input-number/kv-input-number.component.ts +61 -0
- package/src/lib/components/kv-inputs/kv-input-password/kv-input-password.component.html +24 -0
- package/src/lib/components/kv-inputs/kv-input-password/kv-input-password.component.scss +0 -0
- package/src/lib/components/kv-inputs/kv-input-password/kv-input-password.component.ts +26 -0
- package/src/lib/components/kv-inputs/kv-input-text/kv-input-text.component.html +23 -0
- package/src/lib/components/kv-inputs/kv-input-text/kv-input-text.component.scss +18 -0
- package/src/lib/components/kv-inputs/kv-input-text/kv-input-text.component.ts +27 -0
- package/src/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.html +35 -0
- package/src/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.scss +0 -0
- package/src/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.spec.ts +23 -0
- package/src/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.ts +43 -0
- package/src/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.html +23 -0
- package/src/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.scss +0 -0
- package/src/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.ts +40 -0
- package/src/lib/components/kv-inputs/kv-input-time/kv-input-time.component.html +24 -0
- package/src/lib/components/kv-inputs/kv-input-time/kv-input-time.component.scss +0 -0
- package/src/lib/components/kv-inputs/kv-input-time/kv-input-time.component.ts +27 -0
- package/src/lib/components/kv-inputs/kv-inputs.module.ts +78 -0
- package/src/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.html +45 -0
- package/src/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.scss +13 -0
- package/src/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.ts +44 -0
- package/src/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.html +19 -0
- package/src/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.scss +21 -0
- package/src/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.ts +63 -0
- package/src/lib/components/kv-inputs/kv-select-button/kv-select-button.component.html +26 -0
- package/src/lib/components/kv-inputs/kv-select-button/kv-select-button.component.scss +5 -0
- package/src/lib/components/kv-inputs/kv-select-button/kv-select-button.component.spec.ts +21 -0
- package/src/lib/components/kv-inputs/kv-select-button/kv-select-button.component.ts +30 -0
- package/src/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.html +19 -0
- package/src/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.scss +25 -0
- package/src/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.spec.ts +23 -0
- package/src/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.ts +29 -0
- package/src/lib/components/kv-inputs/kv-switch/kv-switch.component.html +20 -0
- package/src/lib/components/kv-inputs/kv-switch/kv-switch.component.scss +23 -0
- package/src/lib/components/kv-inputs/kv-switch/kv-switch.component.ts +54 -0
- package/src/lib/components/kv-label/kv-label.component.html +6 -0
- package/src/lib/components/kv-label/kv-label.component.scss +9 -0
- package/src/lib/components/kv-label/kv-label.component.spec.ts +23 -0
- package/src/lib/components/kv-label/kv-label.component.ts +14 -0
- package/src/lib/components/kv-label/kv-label.module.ts +17 -0
- package/src/lib/components/kv-layout/dropdown-master/dropdown-master.component.html +16 -0
- package/src/lib/components/kv-layout/dropdown-master/dropdown-master.component.scss +0 -0
- package/src/lib/components/kv-layout/dropdown-master/dropdown-master.component.spec.ts +28 -0
- package/src/lib/components/kv-layout/dropdown-master/dropdown-master.component.ts +34 -0
- package/src/lib/components/kv-layout/kv-layout.module.ts +35 -0
- package/src/lib/components/kv-layout/layout/kv-layout.component.html +373 -0
- package/src/lib/components/kv-layout/layout/kv-layout.component.scss +216 -0
- package/src/lib/components/kv-layout/layout/kv-layout.component.spec.ts +23 -0
- package/src/lib/components/kv-layout/layout/kv-layout.component.ts +277 -0
- package/src/lib/components/kv-loader/kv-loader.component.html +1 -0
- package/src/lib/components/kv-loader/kv-loader.component.ts +15 -0
- package/src/lib/components/kv-loader/kv-loader.module.ts +17 -0
- package/src/lib/components/kv-loader/kv-loader.service.ts +31 -0
- package/src/lib/components/kv-login/kv-login.component.html +116 -0
- package/src/lib/components/kv-login/kv-login.component.scss +99 -0
- package/src/lib/components/kv-login/kv-login.component.spec.ts +23 -0
- package/src/lib/components/kv-login/kv-login.component.ts +81 -0
- package/src/lib/components/kv-login/kv-login.module.ts +33 -0
- package/src/lib/components/kv-modal/kv-modal.component.html +20 -0
- package/src/lib/components/kv-modal/kv-modal.component.scss +33 -0
- package/src/lib/components/kv-modal/kv-modal.component.spec.ts +21 -0
- package/src/lib/components/kv-modal/kv-modal.component.ts +111 -0
- package/src/lib/components/kv-modal/kv-modal.module.ts +12 -0
- package/src/lib/components/kv-orgchart/kv-orgchart.component.html +58 -0
- package/src/lib/components/kv-orgchart/kv-orgchart.component.scss +21 -0
- package/src/lib/components/kv-orgchart/kv-orgchart.component.ts +110 -0
- package/src/lib/components/kv-orgchart/kv-orgchart.module.ts +14 -0
- package/src/lib/components/kv-page-form/kv-page-form.component.html +103 -0
- package/src/lib/components/kv-page-form/kv-page-form.component.scss +76 -0
- package/src/lib/components/kv-page-form/kv-page-form.component.spec.ts +28 -0
- package/src/lib/components/kv-page-form/kv-page-form.component.ts +167 -0
- package/src/lib/components/kv-page-form/kv-page-form.module.ts +33 -0
- package/src/lib/components/kv-page-stepper/kv-page-stepper.component.html +251 -0
- package/src/lib/components/kv-page-stepper/kv-page-stepper.component.scss +129 -0
- package/src/lib/components/kv-page-stepper/kv-page-stepper.component.spec.ts +23 -0
- package/src/lib/components/kv-page-stepper/kv-page-stepper.component.ts +223 -0
- package/src/lib/components/kv-page-stepper/kv-page-stepper.module.ts +34 -0
- package/src/lib/components/kv-pick-list/kv-pick-list.component.html +23 -0
- package/src/lib/components/kv-pick-list/kv-pick-list.component.scss +5 -0
- package/src/lib/components/kv-pick-list/kv-pick-list.component.spec.ts +26 -0
- package/src/lib/components/kv-pick-list/kv-pick-list.component.ts +60 -0
- package/src/lib/components/kv-pick-list/kv-pick-list.module.ts +21 -0
- package/src/lib/components/kv-progress-bar/kv-progress-bar.component.html +38 -0
- package/src/lib/components/kv-progress-bar/kv-progress-bar.component.scss +130 -0
- package/src/lib/components/kv-progress-bar/kv-progress-bar.component.spec.ts +21 -0
- package/src/lib/components/kv-progress-bar/kv-progress-bar.component.ts +75 -0
- package/src/lib/components/kv-progress-bar/kv-progress-bar.module.ts +19 -0
- package/src/lib/components/kv-report/kv-report.component.html +12 -0
- package/src/lib/components/kv-report/kv-report.component.scss +21 -0
- package/src/lib/components/kv-report/kv-report.component.spec.ts +28 -0
- package/src/lib/components/kv-report/kv-report.component.ts +50 -0
- package/src/lib/components/kv-report/kv-report.module.ts +18 -0
- package/src/lib/components/kv-stepper/kv-stepper.component.html +66 -0
- package/src/lib/components/kv-stepper/kv-stepper.component.scss +41 -0
- package/src/lib/components/kv-stepper/kv-stepper.component.spec.ts +23 -0
- package/src/lib/components/kv-stepper/kv-stepper.component.ts +48 -0
- package/src/lib/components/kv-stepper/kv-stepper.module.ts +20 -0
- package/src/lib/components/kv-table/kv-table.component.html +504 -0
- package/src/lib/components/kv-table/kv-table.component.scss +130 -0
- package/src/lib/components/kv-table/kv-table.component.spec.ts +28 -0
- package/src/lib/components/kv-table/kv-table.component.ts +676 -0
- package/src/lib/components/kv-table/kv-table.module.ts +25 -0
- package/src/lib/components/kv-table-edit/kv-table-edit.component.html +825 -0
- package/src/lib/components/kv-table-edit/kv-table-edit.component.scss +712 -0
- package/src/lib/components/kv-table-edit/kv-table-edit.component.ts +391 -0
- package/src/lib/components/kv-table-edit/kv-table-edit.module.ts +28 -0
- package/src/lib/components/kv-table-expandable/kv-table-expandable.component.html +440 -0
- package/src/lib/components/kv-table-expandable/kv-table-expandable.component.scss +372 -0
- package/src/lib/components/kv-table-expandable/kv-table-expandable.component.ts +519 -0
- package/src/lib/components/kv-table-expandable/kv-table-expandable.module.ts +22 -0
- package/src/lib/components/kv-tree-table/kv-tree-table.component.html +568 -0
- package/src/lib/components/kv-tree-table/kv-tree-table.component.scss +96 -0
- package/src/lib/components/kv-tree-table/kv-tree-table.component.spec.ts +21 -0
- package/src/lib/components/kv-tree-table/kv-tree-table.component.ts +326 -0
- package/src/lib/components/kv-tree-table/kv-tree-table.module.ts +23 -0
- package/src/lib/components/kv-tree-view/kv-tree-view.component.html +9 -0
- package/src/lib/components/kv-tree-view/kv-tree-view.component.scss +0 -0
- package/src/lib/components/kv-tree-view/kv-tree-view.component.spec.ts +23 -0
- package/src/lib/components/kv-tree-view/kv-tree-view.component.ts +31 -0
- package/src/lib/components/kv-tree-view/kv-tree-view.module.ts +19 -0
- package/src/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.html +14 -0
- package/src/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.scss +0 -0
- package/src/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.spec.ts +28 -0
- package/src/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.ts +77 -0
- package/src/lib/components/kv-workspace/kv-workspace.module.ts +41 -0
- package/src/lib/components/kv-workspace/logo/kv-workspace-logo.component.html +20 -0
- package/src/lib/components/kv-workspace/logo/kv-workspace-logo.component.scss +0 -0
- package/src/lib/components/kv-workspace/logo/kv-workspace-logo.component.spec.ts +28 -0
- package/src/lib/components/kv-workspace/logo/kv-workspace-logo.component.ts +18 -0
- package/src/lib/components/kv-workspace/master/kv-workspace-master.component.html +12 -0
- package/src/lib/components/kv-workspace/master/kv-workspace-master.component.scss +0 -0
- package/src/lib/components/kv-workspace/master/kv-workspace-master.component.spec.ts +28 -0
- package/src/lib/components/kv-workspace/master/kv-workspace-master.component.ts +72 -0
- package/src/lib/components/kv-workspace/workspace/kv-workspace.component.html +36 -0
- package/src/lib/components/kv-workspace/workspace/kv-workspace.component.scss +17 -0
- package/src/lib/components/kv-workspace/workspace/kv-workspace.component.ts +54 -0
- package/{public-api.d.ts → src/public-api.ts} +272 -232
- package/tsconfig.lib.json +14 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +14 -0
- package/esm2022/keevo-components.mjs +0 -5
- package/esm2022/lib/api/base-components/base-component-button.mjs +0 -39
- package/esm2022/lib/api/base-components/base-component-chart.mjs +0 -92
- package/esm2022/lib/api/base-components/base-component-crud-form.mjs +0 -304
- package/esm2022/lib/api/base-components/base-component-crud-list.mjs +0 -93
- package/esm2022/lib/api/base-components/base-component-crud.mjs +0 -65
- package/esm2022/lib/api/base-components/base-component-dropdown-external.mjs +0 -31
- package/esm2022/lib/api/base-components/base-component-dropdown.mjs +0 -187
- package/esm2022/lib/api/base-components/base-component-input.mjs +0 -101
- package/esm2022/lib/api/base-components/base-component-multi-select.mjs +0 -130
- package/esm2022/lib/api/base-components/base-component-table.mjs +0 -351
- package/esm2022/lib/api/base-components/base-component.mjs +0 -51
- package/esm2022/lib/api/components/chart/chart.config.mjs +0 -2
- package/esm2022/lib/api/components/chart/chart.model.mjs +0 -2
- package/esm2022/lib/api/components/chart/orchart.config.mjs +0 -2
- package/esm2022/lib/api/components/chart/orchart.item.mjs +0 -2
- package/esm2022/lib/api/components/dropdown/filtro.combo.mjs +0 -2
- package/esm2022/lib/api/components/stepper/kv-stepperpanel.mjs +0 -2
- package/esm2022/lib/api/components/table/action-item.mjs +0 -2
- package/esm2022/lib/api/components/table/kv-menuitem.mjs +0 -46
- package/esm2022/lib/api/components/table/table-dropdown-control.mjs +0 -2
- package/esm2022/lib/api/components/table/table.config.column.mjs +0 -2
- package/esm2022/lib/api/components/table/table.config.mjs +0 -2
- package/esm2022/lib/api/components/table/table.paginate.mjs +0 -9
- package/esm2022/lib/api/components/table/tabledit.config.mjs +0 -2
- package/esm2022/lib/api/components/table/tableedit.config.column.mjs +0 -2
- package/esm2022/lib/api/components/tree-table/tree-table.config.mjs +0 -3
- package/esm2022/lib/api/directives/directives.module.mjs +0 -30
- package/esm2022/lib/api/directives/drag/drag.directive.mjs +0 -52
- package/esm2022/lib/api/directives/stepper/dynamicinput.directive.mjs +0 -31
- package/esm2022/lib/api/directives/template/template.directive.mjs +0 -24
- package/esm2022/lib/api/helpers/component-providers.mjs +0 -16
- package/esm2022/lib/api/helpers/keevo-validators.mjs +0 -106
- package/esm2022/lib/api/helpers/translate-primeng.mjs +0 -23
- package/esm2022/lib/api/modules/primeng.module.mjs +0 -271
- package/esm2022/lib/api/pipes/capitalize.pipe.mjs +0 -28
- package/esm2022/lib/api/pipes/cpfcnpj.pipe.mjs +0 -25
- package/esm2022/lib/api/pipes/mask.pipe.mjs +0 -29
- package/esm2022/lib/api/pipes/pipes.module.mjs +0 -39
- package/esm2022/lib/api/pipes/telefone.pipe.mjs +0 -45
- package/esm2022/lib/api/services/base.api.service.mjs +0 -74
- package/esm2022/lib/api/services/breadcrumbs.service.mjs +0 -60
- package/esm2022/lib/api/services/component.service.mjs +0 -27
- package/esm2022/lib/api/services/docs.service.mjs +0 -129
- package/esm2022/lib/api/services/form.service.mjs +0 -92
- package/esm2022/lib/api/services/imagens.service.mjs +0 -28
- package/esm2022/lib/api/services/notification.service.mjs +0 -69
- package/esm2022/lib/api/services/object.service.mjs +0 -39
- package/esm2022/lib/api/types/severity.mjs +0 -2
- package/esm2022/lib/components/keevo-components.module.mjs +0 -193
- package/esm2022/lib/components/kv-avatar/kv-avatar.component.mjs +0 -226
- package/esm2022/lib/components/kv-avatar/kv-avatar.module.mjs +0 -51
- package/esm2022/lib/components/kv-button/kv-button.component.mjs +0 -36
- package/esm2022/lib/components/kv-button/kv-button.module.mjs +0 -28
- package/esm2022/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.mjs +0 -25
- package/esm2022/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.mjs +0 -34
- package/esm2022/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.mjs +0 -17
- package/esm2022/lib/components/kv-buttons/kv-button-success/kv-button-success.component.mjs +0 -17
- package/esm2022/lib/components/kv-buttons/kv-button.module.mjs +0 -39
- package/esm2022/lib/components/kv-carousel/kv-carousel.component.mjs +0 -30
- package/esm2022/lib/components/kv-carousel/kv-carousel.module.mjs +0 -28
- package/esm2022/lib/components/kv-chart/kv-chart.component.mjs +0 -145
- package/esm2022/lib/components/kv-chart/kv-chart.module.mjs +0 -32
- package/esm2022/lib/components/kv-error/kv-error.component.mjs +0 -26
- package/esm2022/lib/components/kv-error/kv-error.module.mjs +0 -35
- package/esm2022/lib/components/kv-file-upload/kv-file-upload.component.mjs +0 -118
- package/esm2022/lib/components/kv-file-upload/kv-file-upload.module.mjs +0 -18
- package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.component.mjs +0 -40
- package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.module.mjs +0 -20
- package/esm2022/lib/components/kv-filter-card/kv-filter-card.component.mjs +0 -26
- package/esm2022/lib/components/kv-filter-card/kv-filter-card.module.mjs +0 -34
- package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.mjs +0 -26
- package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.module.mjs +0 -28
- package/esm2022/lib/components/kv-g-icon/kv-g-icon.component.mjs +0 -11
- package/esm2022/lib/components/kv-g-icon/kv-g-icon.module.mjs +0 -19
- package/esm2022/lib/components/kv-home-card/kv-home-card.component.mjs +0 -27
- package/esm2022/lib/components/kv-home-card/kv-home-card.module.mjs +0 -32
- package/esm2022/lib/components/kv-image-upload/kv-image-upload.component.mjs +0 -89
- package/esm2022/lib/components/kv-image-upload/kv-image-upload.module.mjs +0 -18
- package/esm2022/lib/components/kv-inputs/kv-check/kv-check.component.mjs +0 -29
- package/esm2022/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.mjs +0 -44
- package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +0 -112
- package/esm2022/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.mjs +0 -96
- package/esm2022/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.mjs +0 -30
- package/esm2022/lib/components/kv-inputs/kv-input-number/kv-input-number.component.mjs +0 -59
- package/esm2022/lib/components/kv-inputs/kv-input-password/kv-input-password.component.mjs +0 -33
- package/esm2022/lib/components/kv-inputs/kv-input-text/kv-input-text.component.mjs +0 -25
- package/esm2022/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.mjs +0 -42
- package/esm2022/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.mjs +0 -43
- package/esm2022/lib/components/kv-inputs/kv-input-time/kv-input-time.component.mjs +0 -24
- package/esm2022/lib/components/kv-inputs/kv-inputs.module.mjs +0 -122
- package/esm2022/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.mjs +0 -44
- package/esm2022/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.mjs +0 -60
- package/esm2022/lib/components/kv-inputs/kv-select-button/kv-select-button.component.mjs +0 -46
- package/esm2022/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.mjs +0 -31
- package/esm2022/lib/components/kv-inputs/kv-switch/kv-switch.component.mjs +0 -41
- package/esm2022/lib/components/kv-label/kv-label.component.mjs +0 -15
- package/esm2022/lib/components/kv-label/kv-label.module.mjs +0 -24
- package/esm2022/lib/components/kv-layout/dropdown-master/dropdown-master.component.mjs +0 -28
- package/esm2022/lib/components/kv-layout/kv-layout.module.mjs +0 -50
- package/esm2022/lib/components/kv-layout/layout/kv-layout.component.mjs +0 -250
- package/esm2022/lib/components/kv-loader/kv-loader.component.mjs +0 -17
- package/esm2022/lib/components/kv-loader/kv-loader.module.mjs +0 -28
- package/esm2022/lib/components/kv-loader/kv-loader.service.mjs +0 -29
- package/esm2022/lib/components/kv-login/kv-login.component.mjs +0 -52
- package/esm2022/lib/components/kv-login/kv-login.module.mjs +0 -47
- package/esm2022/lib/components/kv-modal/kv-modal.component.mjs +0 -97
- package/esm2022/lib/components/kv-modal/kv-modal.module.mjs +0 -20
- package/esm2022/lib/components/kv-orgchart/kv-orgchart.component.mjs +0 -100
- package/esm2022/lib/components/kv-orgchart/kv-orgchart.module.mjs +0 -24
- package/esm2022/lib/components/kv-page-form/kv-page-form.component.mjs +0 -191
- package/esm2022/lib/components/kv-page-form/kv-page-form.module.mjs +0 -41
- package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.component.mjs +0 -207
- package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.module.mjs +0 -47
- package/esm2022/lib/components/kv-pick-list/kv-pick-list.component.mjs +0 -78
- package/esm2022/lib/components/kv-pick-list/kv-pick-list.module.mjs +0 -32
- package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.component.mjs +0 -58
- package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.module.mjs +0 -28
- package/esm2022/lib/components/kv-report/kv-report.component.mjs +0 -53
- package/esm2022/lib/components/kv-report/kv-report.module.mjs +0 -24
- package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +0 -55
- package/esm2022/lib/components/kv-stepper/kv-stepper.module.mjs +0 -32
- package/esm2022/lib/components/kv-table/kv-table.component.mjs +0 -584
- package/esm2022/lib/components/kv-table/kv-table.module.mjs +0 -40
- package/esm2022/lib/components/kv-table-edit/kv-table-edit.component.mjs +0 -322
- package/esm2022/lib/components/kv-table-edit/kv-table-edit.module.mjs +0 -41
- package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.component.mjs +0 -485
- package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.module.mjs +0 -36
- package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +0 -298
- package/esm2022/lib/components/kv-tree-table/kv-tree-table.module.mjs +0 -39
- package/esm2022/lib/components/kv-tree-view/kv-tree-view.component.mjs +0 -30
- package/esm2022/lib/components/kv-tree-view/kv-tree-view.module.mjs +0 -28
- package/esm2022/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.mjs +0 -72
- package/esm2022/lib/components/kv-workspace/kv-workspace.module.mjs +0 -60
- package/esm2022/lib/components/kv-workspace/logo/kv-workspace-logo.component.mjs +0 -22
- package/esm2022/lib/components/kv-workspace/master/kv-workspace-master.component.mjs +0 -63
- package/esm2022/lib/components/kv-workspace/workspace/kv-workspace.component.mjs +0 -64
- package/esm2022/public-api.mjs +0 -236
- package/fesm2022/keevo-components.mjs +0 -8181
- package/fesm2022/keevo-components.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/api/base-components/base-component-button.d.ts +0 -15
- package/lib/api/base-components/base-component-chart.d.ts +0 -40
- package/lib/api/base-components/base-component-crud-form.d.ts +0 -149
- package/lib/api/base-components/base-component-crud-list.d.ts +0 -70
- package/lib/api/base-components/base-component-crud.d.ts +0 -36
- package/lib/api/base-components/base-component-dropdown-external.d.ts +0 -15
- package/lib/api/base-components/base-component-dropdown.d.ts +0 -47
- package/lib/api/base-components/base-component-input.d.ts +0 -33
- package/lib/api/base-components/base-component-multi-select.d.ts +0 -35
- package/lib/api/base-components/base-component-table.d.ts +0 -87
- package/lib/api/base-components/base-component.d.ts +0 -22
- package/lib/api/components/chart/chart.config.d.ts +0 -11
- package/lib/api/components/chart/chart.model.d.ts +0 -9
- package/lib/api/components/chart/orchart.config.d.ts +0 -35
- package/lib/api/components/chart/orchart.item.d.ts +0 -26
- package/lib/api/components/dropdown/filtro.combo.d.ts +0 -4
- package/lib/api/components/stepper/kv-stepperpanel.d.ts +0 -9
- package/lib/api/components/table/action-item.d.ts +0 -12
- package/lib/api/components/table/kv-menuitem.d.ts +0 -152
- package/lib/api/components/table/table-dropdown-control.d.ts +0 -6
- package/lib/api/components/table/table.config.column.d.ts +0 -28
- package/lib/api/components/table/table.config.d.ts +0 -32
- package/lib/api/components/table/table.paginate.d.ts +0 -6
- package/lib/api/components/table/tabledit.config.d.ts +0 -8
- package/lib/api/components/table/tableedit.config.column.d.ts +0 -10
- package/lib/api/components/tree-table/tree-table.config.d.ts +0 -28
- package/lib/api/directives/directives.module.d.ts +0 -9
- package/lib/api/directives/drag/drag.directive.d.ts +0 -11
- package/lib/api/directives/stepper/dynamicinput.directive.d.ts +0 -15
- package/lib/api/directives/template/template.directive.d.ts +0 -11
- package/lib/api/helpers/component-providers.d.ts +0 -2
- package/lib/api/helpers/keevo-validators.d.ts +0 -14
- package/lib/api/helpers/translate-primeng.d.ts +0 -4
- package/lib/api/modules/primeng.module.d.ts +0 -66
- package/lib/api/pipes/capitalize.pipe.d.ts +0 -8
- package/lib/api/pipes/cpfcnpj.pipe.d.ts +0 -7
- package/lib/api/pipes/mask.pipe.d.ts +0 -7
- package/lib/api/pipes/pipes.module.d.ts +0 -11
- package/lib/api/pipes/telefone.pipe.d.ts +0 -7
- package/lib/api/services/base.api.service.d.ts +0 -25
- package/lib/api/services/breadcrumbs.service.d.ts +0 -16
- package/lib/api/services/component.service.d.ts +0 -11
- package/lib/api/services/docs.service.d.ts +0 -12
- package/lib/api/services/form.service.d.ts +0 -31
- package/lib/api/services/imagens.service.d.ts +0 -10
- package/lib/api/services/notification.service.d.ts +0 -26
- package/lib/api/services/object.service.d.ts +0 -9
- package/lib/components/keevo-components.module.d.ts +0 -32
- package/lib/components/kv-avatar/kv-avatar.component.d.ts +0 -45
- package/lib/components/kv-avatar/kv-avatar.module.d.ts +0 -14
- package/lib/components/kv-button/kv-button.component.d.ts +0 -15
- package/lib/components/kv-button/kv-button.module.d.ts +0 -9
- package/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.d.ts +0 -11
- package/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.d.ts +0 -14
- package/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.d.ts +0 -7
- package/lib/components/kv-buttons/kv-button-success/kv-button-success.component.d.ts +0 -7
- package/lib/components/kv-buttons/kv-button.module.d.ts +0 -11
- package/lib/components/kv-carousel/kv-carousel.component.d.ts +0 -16
- package/lib/components/kv-carousel/kv-carousel.module.d.ts +0 -9
- package/lib/components/kv-chart/kv-chart.component.d.ts +0 -56
- package/lib/components/kv-chart/kv-chart.module.d.ts +0 -10
- package/lib/components/kv-error/kv-error.component.d.ts +0 -12
- package/lib/components/kv-error/kv-error.module.d.ts +0 -10
- package/lib/components/kv-file-upload/kv-file-upload.component.d.ts +0 -29
- package/lib/components/kv-file-upload/kv-file-upload.module.d.ts +0 -8
- package/lib/components/kv-file-viewer/kv-file-viewer.component.d.ts +0 -19
- package/lib/components/kv-file-viewer/kv-file-viewer.module.d.ts +0 -8
- package/lib/components/kv-filter-card/kv-filter-card.component.d.ts +0 -12
- package/lib/components/kv-filter-card/kv-filter-card.module.d.ts +0 -10
- package/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.d.ts +0 -10
- package/lib/components/kv-filter-fieldset/kv-filter-fieldset.module.d.ts +0 -9
- package/lib/components/kv-g-icon/kv-g-icon.component.d.ts +0 -5
- package/lib/components/kv-g-icon/kv-g-icon.module.d.ts +0 -9
- package/lib/components/kv-home-card/kv-home-card.component.d.ts +0 -24
- package/lib/components/kv-home-card/kv-home-card.module.d.ts +0 -11
- package/lib/components/kv-image-upload/kv-image-upload.component.d.ts +0 -25
- package/lib/components/kv-image-upload/kv-image-upload.module.d.ts +0 -8
- package/lib/components/kv-inputs/kv-check/kv-check.component.d.ts +0 -12
- package/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.d.ts +0 -16
- package/lib/components/kv-inputs/kv-editor/kv-editor.component.d.ts +0 -27
- package/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.d.ts +0 -29
- package/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.d.ts +0 -12
- package/lib/components/kv-inputs/kv-input-number/kv-input-number.component.d.ts +0 -19
- package/lib/components/kv-inputs/kv-input-password/kv-input-password.component.d.ts +0 -13
- package/lib/components/kv-inputs/kv-input-text/kv-input-text.component.d.ts +0 -10
- package/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.d.ts +0 -16
- package/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.d.ts +0 -16
- package/lib/components/kv-inputs/kv-input-time/kv-input-time.component.d.ts +0 -10
- package/lib/components/kv-inputs/kv-inputs.module.d.ts +0 -28
- package/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.d.ts +0 -15
- package/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.d.ts +0 -20
- package/lib/components/kv-inputs/kv-select-button/kv-select-button.component.d.ts +0 -19
- package/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.d.ts +0 -16
- package/lib/components/kv-inputs/kv-switch/kv-switch.component.d.ts +0 -16
- package/lib/components/kv-label/kv-label.component.d.ts +0 -7
- package/lib/components/kv-label/kv-label.module.d.ts +0 -8
- package/lib/components/kv-layout/dropdown-master/dropdown-master.component.d.ts +0 -12
- package/lib/components/kv-layout/kv-layout.module.d.ts +0 -14
- package/lib/components/kv-layout/layout/kv-layout.component.d.ts +0 -109
- package/lib/components/kv-loader/kv-loader.component.d.ts +0 -8
- package/lib/components/kv-loader/kv-loader.module.d.ts +0 -9
- package/lib/components/kv-loader/kv-loader.service.d.ts +0 -10
- package/lib/components/kv-login/kv-login.component.d.ts +0 -30
- package/lib/components/kv-login/kv-login.module.d.ts +0 -13
- package/lib/components/kv-modal/kv-modal.component.d.ts +0 -27
- package/lib/components/kv-modal/kv-modal.module.d.ts +0 -10
- package/lib/components/kv-orgchart/kv-orgchart.component.d.ts +0 -27
- package/lib/components/kv-orgchart/kv-orgchart.module.d.ts +0 -9
- package/lib/components/kv-page-form/kv-page-form.component.d.ts +0 -100
- package/lib/components/kv-page-form/kv-page-form.module.d.ts +0 -12
- package/lib/components/kv-page-stepper/kv-page-stepper.component.d.ts +0 -84
- package/lib/components/kv-page-stepper/kv-page-stepper.module.d.ts +0 -13
- package/lib/components/kv-pick-list/kv-pick-list.component.d.ts +0 -30
- package/lib/components/kv-pick-list/kv-pick-list.module.d.ts +0 -10
- package/lib/components/kv-progress-bar/kv-progress-bar.component.d.ts +0 -67
- package/lib/components/kv-progress-bar/kv-progress-bar.module.d.ts +0 -9
- package/lib/components/kv-report/kv-report.component.d.ts +0 -20
- package/lib/components/kv-report/kv-report.module.d.ts +0 -8
- package/lib/components/kv-stepper/kv-stepper.component.d.ts +0 -25
- package/lib/components/kv-stepper/kv-stepper.module.d.ts +0 -10
- package/lib/components/kv-table/kv-table.component.d.ts +0 -138
- package/lib/components/kv-table/kv-table.module.d.ts +0 -12
- package/lib/components/kv-table-edit/kv-table-edit.component.d.ts +0 -60
- package/lib/components/kv-table-edit/kv-table-edit.module.d.ts +0 -14
- package/lib/components/kv-table-expandable/kv-table-expandable.component.d.ts +0 -110
- package/lib/components/kv-table-expandable/kv-table-expandable.module.d.ts +0 -12
- package/lib/components/kv-tree-table/kv-tree-table.component.d.ts +0 -76
- package/lib/components/kv-tree-table/kv-tree-table.module.d.ts +0 -11
- package/lib/components/kv-tree-view/kv-tree-view.component.d.ts +0 -14
- package/lib/components/kv-tree-view/kv-tree-view.module.d.ts +0 -9
- package/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.d.ts +0 -20
- package/lib/components/kv-workspace/kv-workspace.module.d.ts +0 -17
- package/lib/components/kv-workspace/logo/kv-workspace-logo.component.d.ts +0 -11
- package/lib/components/kv-workspace/master/kv-workspace-master.component.d.ts +0 -18
- package/lib/components/kv-workspace/workspace/kv-workspace.component.d.ts +0 -26
|
@@ -1,322 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { getOrExecute, mapToMenuItem } from '../../../public-api';
|
|
3
|
-
import { Subject, takeUntil, timer } from 'rxjs';
|
|
4
|
-
import { BasecomponentTable } from '../../api/base-components/base-component-table';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
import * as i2 from "../../../public-api";
|
|
8
|
-
import * as i3 from "primeng/api";
|
|
9
|
-
import * as i4 from "primeng/autofocus";
|
|
10
|
-
import * as i5 from "primeng/tooltip";
|
|
11
|
-
import * as i6 from "primeng/button";
|
|
12
|
-
import * as i7 from "primeng/contextmenu";
|
|
13
|
-
import * as i8 from "primeng/dropdown";
|
|
14
|
-
import * as i9 from "primeng/inputtext";
|
|
15
|
-
import * as i10 from "primeng/menu";
|
|
16
|
-
import * as i11 from "primeng/panel";
|
|
17
|
-
import * as i12 from "primeng/ripple";
|
|
18
|
-
import * as i13 from "primeng/tieredmenu";
|
|
19
|
-
import * as i14 from "primeng/table";
|
|
20
|
-
import * as i15 from "primeng/toast";
|
|
21
|
-
import * as i16 from "@angular/forms";
|
|
22
|
-
import * as i17 from "../kv-inputs/kv-input-calendar/kv-input-calendar.component";
|
|
23
|
-
import * as i18 from "../kv-inputs/kv-input-mask/kv-input-mask.component";
|
|
24
|
-
import * as i19 from "../kv-inputs/kv-input-number/kv-input-number.component";
|
|
25
|
-
import * as i20 from "../kv-inputs/kv-input-text/kv-input-text.component";
|
|
26
|
-
import * as i21 from "../kv-inputs/kv-switch/kv-switch.component";
|
|
27
|
-
import * as i22 from "../../api/pipes/mask.pipe";
|
|
28
|
-
export class KvTableEditComponent extends BasecomponentTable {
|
|
29
|
-
constructor(datePipe, decimalPipe, cpfCnpjPipe, telefonePipe, notificationService
|
|
30
|
-
// capitalizePipe: CapitalizePipe,
|
|
31
|
-
) {
|
|
32
|
-
super(datePipe, decimalPipe, cpfCnpjPipe, telefonePipe, notificationService);
|
|
33
|
-
this.enableSizes = false;
|
|
34
|
-
this.editMode = 'cell';
|
|
35
|
-
this.itemsParaSalvamento = [];
|
|
36
|
-
this.isEditing = false;
|
|
37
|
-
this.isShowSizes = false;
|
|
38
|
-
this.clonedDataSource = {};
|
|
39
|
-
this.selectedProduct = {
|
|
40
|
-
rowData: {},
|
|
41
|
-
editing: false
|
|
42
|
-
};
|
|
43
|
-
this.menuItems = [];
|
|
44
|
-
/** Emite evento de salvamento da linha */
|
|
45
|
-
this.onSave = new EventEmitter();
|
|
46
|
-
this.filterField = new EventEmitter();
|
|
47
|
-
this.sizes = [
|
|
48
|
-
{
|
|
49
|
-
label: 'Pequeno', class: 'p-datatable-sm', size: 0.83, command: (x) => {
|
|
50
|
-
this.selectedSize = { label: 'Pequeno', class: 'p-datatable-sm', size: 0.83 };
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
label: 'Médio', class: 'p-datatable-md', size: 1, command: (x) => {
|
|
55
|
-
this.selectedSize = { label: 'Médio', class: 'p-datatable-md', size: 1 };
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
label: 'Grande', class: 'p-datatable-lg', size: 1.17, command: (x) => {
|
|
60
|
-
this.selectedSize = { label: 'Large', class: 'p-datatable-lg', size: 1.17 };
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
// { name: 'Small', class: 'p-datatable-sm', size: 0.83 },
|
|
64
|
-
// { name: 'Normal', class: 'p-datatable-md', size: 1 },
|
|
65
|
-
// { name: 'Large', class: 'p-datatable-lg', size: 1.17 }
|
|
66
|
-
];
|
|
67
|
-
this.onSaveTimer$ = new Subject(); // Sujeito para controlar o temporizador
|
|
68
|
-
this.onDestroy$ = new Subject();
|
|
69
|
-
this.isRowSelectable = this.isRowSelectable.bind(this);
|
|
70
|
-
}
|
|
71
|
-
getOrExecute(action, data) {
|
|
72
|
-
return getOrExecute(action, data);
|
|
73
|
-
}
|
|
74
|
-
ngOnInit() {
|
|
75
|
-
super.ngOnInit();
|
|
76
|
-
this.onSaveTimer$.pipe(takeUntil(this.onDestroy$)).subscribe(() => {
|
|
77
|
-
// Quando o temporizador terminar, emita o evento onSave com os dados a serem salvos
|
|
78
|
-
this.onRowEditSave();
|
|
79
|
-
});
|
|
80
|
-
this.tamanhoTela = window.innerWidth;
|
|
81
|
-
this.itemsContextMenu = [
|
|
82
|
-
{
|
|
83
|
-
label: 'Editar linha', icon: 'pi pi-fw pi-pencil', command: () => {
|
|
84
|
-
const element = document.getElementById('rowEdit' + this.selectedProduct.rowData[this.config.dataKey]);
|
|
85
|
-
if (element && !this.config.disableEditRowFunction?.(this.selectedProduct.rowData)) {
|
|
86
|
-
element.click();
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
this.notificationService.toastWarn("A edição dessa linha esta desabilitada");
|
|
90
|
-
}
|
|
91
|
-
this.onRowEditInit(this.selectedProduct);
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
label: 'Cancelar edição', icon: 'pi pi-fw pi-times', command: (data) => {
|
|
96
|
-
const element = document.getElementById('rowCancel' + this.selectedProduct.rowData[this.config.dataKey]);
|
|
97
|
-
if (element) {
|
|
98
|
-
element.click();
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
this.notificationService.toastWarn("A edição dessa linha esta desabilitada");
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
label: 'Salvar edição', icon: 'pi pi-fw pi-save', command: (data) => {
|
|
107
|
-
const element = document.getElementById('rowSave' + this.selectedProduct.rowData[this.config.dataKey]);
|
|
108
|
-
if (element) {
|
|
109
|
-
element.click(); // Dispara um evento de clique no elemento com ID 'teste'
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
this.notificationService.toastWarn("A edição dessa linha esta desabilitada");
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
label: 'Entrar em modo de edição', icon: 'pi pi-fw pi-pencil', command: () => {
|
|
118
|
-
this.isEditing = true;
|
|
119
|
-
}
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
label: 'Sair do modo de edição', icon: 'pi pi-fw pi-pencil', command: () => {
|
|
123
|
-
this.isEditing = false;
|
|
124
|
-
if (this.itemsParaSalvamento.length > 0)
|
|
125
|
-
this.onRowEditSave();
|
|
126
|
-
}
|
|
127
|
-
},
|
|
128
|
-
];
|
|
129
|
-
// Subscreve-se ao sujeito onSaveTimer$
|
|
130
|
-
}
|
|
131
|
-
adjustTableSize() {
|
|
132
|
-
}
|
|
133
|
-
ngOnDestroy() {
|
|
134
|
-
// Completa o sujeito onDestroy$
|
|
135
|
-
this.onDestroy$.next();
|
|
136
|
-
this.onDestroy$.complete();
|
|
137
|
-
// Se houver um temporizador em execução, pare-o
|
|
138
|
-
if (this.timerSubscription) {
|
|
139
|
-
this.timerSubscription.unsubscribe();
|
|
140
|
-
// Após parar o temporizador, chame onSave diretamente para salvar os dados
|
|
141
|
-
this.onRowEditSave();
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
ngDoCheck() {
|
|
145
|
-
this.itemsContextMenu[0].visible = this.editMode == 'row' && !this.selectedProduct.editing && this.isEditableTable() !== false;
|
|
146
|
-
this.itemsContextMenu[1].visible = this.editMode == 'row' && this.selectedProduct.editing && this.isEditableTable() !== false;
|
|
147
|
-
this.itemsContextMenu[2].visible = this.editMode == 'row' && this.selectedProduct.editing && this.isEditableTable() !== false;
|
|
148
|
-
this.itemsContextMenu[3].visible = this.editMode == 'cell' && !this.isEditing;
|
|
149
|
-
this.itemsContextMenu[4].visible = this.editMode == 'cell' && this.isEditing;
|
|
150
|
-
}
|
|
151
|
-
dbClickEdit() {
|
|
152
|
-
const element = document.getElementById('rowEdit' + this.selectedItem[this.config.dataKey]);
|
|
153
|
-
if (element) {
|
|
154
|
-
element.click();
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
if (this.editMode == 'row')
|
|
158
|
-
this.notificationService.toastWarn("A edição dessa linha esta desabilitada");
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
isRowSelectable(event) {
|
|
162
|
-
return !this.isDisabledCheckbox(event.data);
|
|
163
|
-
}
|
|
164
|
-
ngOnChanges(changes) {
|
|
165
|
-
//Called before any other lifecycle hook. Use it to inject dependencies, but avoid any serious work here.
|
|
166
|
-
//Add '${implements OnChanges}' to the class.
|
|
167
|
-
if (changes['setConfig'] && this.config) {
|
|
168
|
-
this.config.columns.forEach((e) => {
|
|
169
|
-
if (e.fieldControlType == 'dropdown') {
|
|
170
|
-
this.listarDrop(e.fieldDropDownControl?.fieldControlDropdownService, e);
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
criarMenusModal(data) {
|
|
176
|
-
if (this.config.actions && data) {
|
|
177
|
-
for (const action of this.config.actions) {
|
|
178
|
-
const menuInsert = mapToMenuItem(action, data);
|
|
179
|
-
let item = this.menuItems.filter(x => x.command == menuInsert.command);
|
|
180
|
-
if (item.length == 0)
|
|
181
|
-
this.menuItems.push(menuInsert);
|
|
182
|
-
else {
|
|
183
|
-
if (menuInsert.label != item[0].label) {
|
|
184
|
-
let index = this.menuItems.indexOf(item[0]);
|
|
185
|
-
this.menuItems.splice(index, 1);
|
|
186
|
-
}
|
|
187
|
-
if (menuInsert.visible != item[0].visible) {
|
|
188
|
-
let index = this.menuItems.indexOf(item[0]);
|
|
189
|
-
this.menuItems.splice(index, 1);
|
|
190
|
-
}
|
|
191
|
-
if (menuInsert.disabled != item[0].disabled) {
|
|
192
|
-
let index = this.menuItems.indexOf(item[0]);
|
|
193
|
-
this.menuItems.splice(index, 1);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
onRowEditInit(rowData) {
|
|
200
|
-
this.clonedDataSource[rowData.id] = { ...rowData };
|
|
201
|
-
}
|
|
202
|
-
onEditInit(event1) {
|
|
203
|
-
if (this.isEditing)
|
|
204
|
-
this.itemInitialState = { ...event1.data };
|
|
205
|
-
}
|
|
206
|
-
onEditComplete(event) {
|
|
207
|
-
if (this.isEditing) {
|
|
208
|
-
if (this.itemsParaSalvamento.length === 0 ||
|
|
209
|
-
this.itemsParaSalvamento[this.itemsParaSalvamento.length - 1].index === event.index) {
|
|
210
|
-
if (event.data && this.itemInitialState &&
|
|
211
|
-
event.data.hasOwnProperty(event.field) &&
|
|
212
|
-
this.itemInitialState.hasOwnProperty(event.field) &&
|
|
213
|
-
event.data[event.field] != this.itemInitialState[event.field]) {
|
|
214
|
-
this.adicionarCelulaParaSalvar(event);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
this.onRowEditSave();
|
|
219
|
-
this.adicionarCelulaParaSalvar(event);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
adicionarCelulaParaSalvar(item) {
|
|
224
|
-
// Adiciona os dados editados ao array para salvamento
|
|
225
|
-
this.itemsParaSalvamento.push(item);
|
|
226
|
-
// Se houver um temporizador em execução, limpe-o e reinicie
|
|
227
|
-
if (this.timerSubscription) {
|
|
228
|
-
this.timerSubscription.unsubscribe();
|
|
229
|
-
}
|
|
230
|
-
// Inicia o temporizador para emitir onSave após 5 segundos
|
|
231
|
-
this.timerSubscription = timer(5000).subscribe(() => {
|
|
232
|
-
this.onSaveTimer$.next(); // Emita onSave após 5 segundos
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
onRowEditSave() {
|
|
236
|
-
if (this.itemsParaSalvamento.length == 0 || !this.itemsParaSalvamento[0].data)
|
|
237
|
-
return;
|
|
238
|
-
const objetoRefletido = { ...this.itemsParaSalvamento[0].data };
|
|
239
|
-
// Reflete as alterações em um objeto
|
|
240
|
-
this.itemsParaSalvamento.forEach(item => {
|
|
241
|
-
if (!item.data)
|
|
242
|
-
return; // Verifica se o item tem a propriedade 'data'
|
|
243
|
-
const chave = item.field;
|
|
244
|
-
const valor = item.data[chave];
|
|
245
|
-
objetoRefletido[chave] = valor;
|
|
246
|
-
});
|
|
247
|
-
this.onSave.emit(objetoRefletido);
|
|
248
|
-
this.itemsParaSalvamento = [];
|
|
249
|
-
}
|
|
250
|
-
onRowEditCancel(product, index) {
|
|
251
|
-
this.dataSource[index] = this.clonedDataSource[product.id];
|
|
252
|
-
delete this.clonedDataSource[product.id];
|
|
253
|
-
}
|
|
254
|
-
listarDrop(service, col, indtodos) {
|
|
255
|
-
const column = this.config.columns?.indexOf(col);
|
|
256
|
-
return this.config.columns[column].fieldDropDownControl?.fieldControlDropdownSource;
|
|
257
|
-
}
|
|
258
|
-
retornaDescricaoDrop(rowData, col) {
|
|
259
|
-
const data = col.fieldDropDownControl?.fieldControlDropdownSource;
|
|
260
|
-
const idobjeto = col.fieldDropDownControl?.idobjeto;
|
|
261
|
-
const descricaoobjeto = col.fieldDropDownControl?.descricaoobjeto;
|
|
262
|
-
// @ts-ignore
|
|
263
|
-
const valorAtual = rowData[col.field];
|
|
264
|
-
if (data && idobjeto && descricaoobjeto)
|
|
265
|
-
return data?.find((item) => item[idobjeto] == valorAtual)[descricaoobjeto];
|
|
266
|
-
else
|
|
267
|
-
return 'Carregando';
|
|
268
|
-
}
|
|
269
|
-
isDisableEditRowFunction(rowData) {
|
|
270
|
-
return this.config.disableEditRowFunction ? this.config.disableEditRowFunction(rowData) : false;
|
|
271
|
-
}
|
|
272
|
-
isDisableEditRowCellFunction(rowData, col) {
|
|
273
|
-
return col.disableEditRowCellFunction ? col.disableEditRowCellFunction(rowData) : false;
|
|
274
|
-
}
|
|
275
|
-
isEditableTable() {
|
|
276
|
-
if (!this.config.columns)
|
|
277
|
-
return null;
|
|
278
|
-
return this.config.columns.some((column) => 'fieldControlType' in column);
|
|
279
|
-
}
|
|
280
|
-
transformValueDrop(value, col) {
|
|
281
|
-
if (value != null) {
|
|
282
|
-
if (!col.pipe) {
|
|
283
|
-
return value;
|
|
284
|
-
}
|
|
285
|
-
switch (col.pipe) {
|
|
286
|
-
case 'date':
|
|
287
|
-
return this.datePipe.transform(value, 'dd/MM/yyyy');
|
|
288
|
-
case 'datetime':
|
|
289
|
-
return this.datePipe.transform(value, 'dd/MM/yyyy hh:mm');
|
|
290
|
-
case 'decimal':
|
|
291
|
-
return this.decimalPipe.transform(value, '1.2-2', 'pt-BR');
|
|
292
|
-
case 'cpfcnpj':
|
|
293
|
-
return this.cpfCnpjPipe.transform(value);
|
|
294
|
-
case 'telefone':
|
|
295
|
-
return this.telefonePipe.transform(value);
|
|
296
|
-
case 'capitalize':
|
|
297
|
-
return this.transformCapitalize(value);
|
|
298
|
-
case 'money':
|
|
299
|
-
return this.formatarValor(value);
|
|
300
|
-
case 'percentage':
|
|
301
|
-
return `${value} %`;
|
|
302
|
-
default:
|
|
303
|
-
break;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTableEditComponent, deps: [{ token: i1.DatePipe }, { token: i1.DecimalPipe }, { token: i2.CpfCnpjPipe }, { token: i2.TelefonePipe }, { token: i2.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
308
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvTableEditComponent, selector: "kv-table-edit", inputs: { enableSizes: "enableSizes", editMode: "editMode" }, outputs: { onSave: "onSave", filterField: "filterField" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"card\" id=\"tamanhotabela\" [style.font-size]=\"'1px'\">\r\n <p-toast></p-toast>\r\n\r\n <p-panel\r\n *ngIf=\"filtrosAvancados\"\r\n header=\"Filtros avan\u00E7ados\"\r\n [toggleable]=\"true\"\r\n [collapsed]=\"true\"\r\n (collapsedChange)=\"collapsed = !collapsed\"\r\n [style]=\"{ 'margin-bottom': '2px' }\"\r\n >\r\n <ng-template pTemplate=\"headericons\">\r\n <i *ngIf=\"!collapsed\" class=\"pi pi-filter\"></i>\r\n <!-- \u00CDcone quando o painel est\u00E1 aberto -->\r\n <i *ngIf=\"collapsed\" class=\"pi pi-minus\"></i>\r\n <!-- \u00CDcone quando o painel est\u00E1 fechado -->\r\n </ng-template>\r\n <ng-content></ng-content>\r\n </p-panel>\r\n\r\n <p-contextMenu #cm [model]=\"itemsContextMenu\"></p-contextMenu>\r\n <p-table\r\n #te\r\n [editMode]=\"editMode\"\r\n (onEditComplete)=\"onEditComplete($event)\"\r\n (onEditInit)=\"onEditInit($event)\"\r\n [reorderableColumns]=\"config.reorderableColumns || false\"\r\n *ngIf=\"config\"\r\n [value]=\"dataSource\"\r\n [dataKey]=\"config.dataKey\"\r\n [columns]=\"config.columns\"\r\n [scrollable]=\"true\"\r\n appendTo=\"body\"\r\n [styleClass]=\"selectedSize.class\"\r\n [(selection)]=\"selectedItems\"\r\n [rowSelectable]=\"isRowSelectable\"\r\n [globalFilterFields]=\"globalFilterFields\"\r\n [rows]=\"rows\"\r\n [paginator]=\"paginator\"\r\n [rowsPerPageOptions]=\"rowsPerPageOptions\"\r\n [showCurrentPageReport]=\"true\"\r\n currentPageReportTemplate=\"{first} - {last} de {totalRecords}\"\r\n (selectionChange)=\"selectionChange($event)\"\r\n [rowHover]=\"true\"\r\n [totalRecords]=\"totalRecords\"\r\n [lazy]=\"config.lazy\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n [groupRowsBy]=\"config.fieldGroup\"\r\n paginatorDropdownAppendTo=\"body\"\r\n [showFirstLastIcon]=\"showFirstLastIcon\"\r\n [pageLinks]=\"pageLinksOptions\"\r\n [scrollable]=\"isTableScrollable\"\r\n [scrollHeight]=\"scrollHeight\"\r\n [rowTrackBy]=\"rowTrackBy\"\r\n [(contextMenuSelection)]=\"selectedProduct\"\r\n [contextMenu]=\"isEditableTable() ? cm : null\"\r\n >\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n\r\n <ng-template pTemplate=\"caption\" *ngIf=\"config.enableCation || enableSizes\">\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\"\r\n >\r\n <div class=\"col-12 flex flex-column\">\r\n <div *ngIf=\"config.title\" class=\"text-md font-bold my-3\">\r\n {{ config.title }}\r\n </div>\r\n <div *ngIf=\"config.subtitle\" class=\"text-sm mb-4 font-medium\">\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex flex-row align-items-center md:col-6 lg:col-4 {{\r\n tamanhoTela < 768 ? 'col-10' : 'col-12'\r\n }} mt-1 mb-2 \"\r\n >\r\n <span *ngIf=\"config.enableFilter\" class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(te, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2rem\"\r\n />\r\n </span>\r\n\r\n <!-- FIXME: Op\u00E7\u00E3o 1 -->\r\n <!-- <div class=\"sizes-controls ml-2\" *ngIf=\"isShowSizes\">\r\n <p-selectButton\r\n [options]=\"sizes\"\r\n [(ngModel)]=\"selectedSize\"\r\n [style]=\"{'display': 'flex'}\"\r\n optionLabel=\"name\"\r\n />\r\n </div>\r\n <button\r\n id=\"btn-sizes\"\r\n pButton\r\n [pTooltip]=\"isShowSizes ? 'Esconder controles de tamanho' : 'Mostrar controles de tamanho'\"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"isShowSizes = !isShowSizes\"\r\n >\r\n <span style=\"font-size: 0.8rem;\" class=\"flex align-items-end\">\r\n <span style=\"font-size: 0.7rem;\">\r\n A\r\n </span>\r\n A\r\n </span>\r\n </button> -->\r\n\r\n <!-- FIXME: Op\u00E7\u00E3o 2 -->\r\n <div *ngIf=\"enableSizes\" class=\"sizes-controls ml-2\">\r\n <!-- <p-splitButton\r\n label=\"aA\"\r\n [model]=\"sizes\"\r\n styleClass=\"teste\"\r\n [menuStyle]=\"{'font-size': '0.7rem'}\"\r\n\r\n ngModel\r\n >\r\n </p-splitButton> -->\r\n <!-- <p-button icon=\"pi pi-ellipsis-v\"/> -->\r\n\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n (click)=\"menu.toggle($event)\"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n style=\"background-color: #1da750; color: #fff; display: flex\"\r\n >\r\n <span class=\"text-xs\">A</span>\r\n <span class=\"text-md\">A</span>\r\n </button>\r\n\r\n <p-tieredMenu\r\n [style]=\"{ 'font-size': '0.7rem' }\"\r\n styleClass=\"menuSizes\"\r\n appendTo=\"body\"\r\n #menu\r\n [model]=\"sizes\"\r\n [popup]=\"true\"\r\n >\r\n <ng-template let-item pTemplate=\"item\">\r\n <div\r\n class=\"cursor-pointer flex gap-2 align-items-center pl-1 m-2 menu-sizes\"\r\n (click)=\"item.command()\"\r\n >\r\n <div\r\n *ngIf=\"this.selectedSize.size != item.size\"\r\n class=\"tag\"\r\n [style.background-color]=\"'#EAEAEA'\"\r\n ></div>\r\n <div\r\n *ngIf=\"this.selectedSize.size == item.size\"\r\n class=\"tag\"\r\n [style.background-color]=\"'#1DA750'\"\r\n ></div>\r\n\r\n {{ item.label }}\r\n </div>\r\n </ng-template>\r\n </p-tieredMenu>\r\n </div>\r\n <!-- FIXME: Op\u00E7\u00E3o 3 -->\r\n <!-- <div class=\"sizes-controls ml-2\" style=\"transform: translate(0px, -15px);\" >\r\n <p-speedDial\r\n [model]=\"sizes\"\r\n showIcon=\"format_size\"\r\n [mask]=\"true\"\r\n direction=\"right\"\r\n buttonClassName=\"item-circle\"\r\n >\r\n\r\n\r\n\r\n\r\n <ng-template let-item pTemplate=\"item\" >\r\n <div class=\"item-circle cursor-pointer\r\n\r\n shadow-2 hover:shadow-8\r\n\r\n \" (click)=\"item.command()\">\r\n {{item.label}}\r\n </div>\r\n </ng-template>\r\n\r\n </p-speedDial>\r\n </div> -->\r\n </div>\r\n\r\n <span *ngIf=\"isEditing\" class=\"text-aviso\">\r\n Tabela em modo de edi\u00E7\u00E3o\r\n </span>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options flex flex-row\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n !isEditing &&\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns border-none\"\r\n style=\"background-color: #1da750\"\r\n (click)=\"action?.command(); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"getOrExecute(action.tooltip, selectedItems)\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [disabled]=\"getOrExecute(action.disabled, selectedItems)\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined\"\r\n style=\"color: white\"\r\n >\r\n {{ getOrExecute(action.icon, selectedItems) }}\r\n </span>\r\n </button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"isEditableTable()\"\r\n class=\"btns-options\"\r\n [style]=\"{ 'margin-right': '7px' }\"\r\n >\r\n <button\r\n (click)=\"this.isEditing = !this.isEditing\"\r\n id=\"actionLoteBtns\"\r\n pButton\r\n [pTooltip]=\"!isEditing ? 'Habilitar Edi\u00E7\u00E3o' : 'Desabilitar Edi\u00E7\u00E3o'\"\r\n [tooltipPosition]=\"'left'\"\r\n style=\"background-color: #1da750; color: #fff\"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n >\r\n <span class=\"material-symbols-outlined\"> edit_square </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th\r\n style=\"width: 4rem; border-left: solid 4px transparent\"\r\n *ngIf=\"config.enableSelect && !isEditing\"\r\n [class]=\"selectedSize.class + 'th'\"\r\n >\r\n <p-tableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"\r\n ></p-tableHeaderCheckbox>\r\n </th>\r\n\r\n <th\r\n *ngFor=\"let col of columns\"\r\n [pSortableColumn]=\"col.field\"\r\n [pSortableColumnDisabled]=\"col.sortable === false\"\r\n [style.min-width]=\"col.width * selectedSize.size + 'px'\"\r\n pReorderableColumn\r\n [class]=\"selectedSize.class + 'th'\"\r\n >\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span\r\n >\r\n </div>\r\n </th>\r\n <th\r\n *ngIf=\"!isEditing && config.actions && config.actions.length > 0\"\r\n ></th>\r\n <th\r\n *ngIf=\"isEditableTable() && this.editMode == 'row'\"\r\n id=\"th-edit\"\r\n style=\"width: 20px\"\r\n >\r\n Editar\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowData\r\n let-editing=\"editing\"\r\n let-ri=\"rowIndex\"\r\n let-columns=\"columns\"\r\n let-rowgroup=\"rowgroup\"\r\n let-rowspan=\"rowspan\"\r\n >\r\n <tr\r\n [pEditableRow]=\"rowData\"\r\n [pEditableRowDisabled]=\"false\"\r\n [pContextMenuRow]=\"{rowData, editing}\"\r\n [class]=\"selectedSize.class + '-tr'\"\r\n >\r\n <td\r\n *ngIf=\"config.enableSelect && !isEditing\"\r\n [style]=\"applyStyle(rowData, { field: 'check-box', header: '' })\"\r\n >\r\n <!--<p-tableCheckbox *ngIf=\"isVisibleCheckbox(rowData)\"-->\r\n <p-tableCheckbox\r\n class=\"check-edit-list\"\r\n [value]=\"rowData\"\r\n [disabled]=\"isDisabledCheckbox(rowData)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n ></p-tableCheckbox>\r\n </td>\r\n\r\n <ng-container *ngFor=\"let col of columns; let i = index\">\r\n <!-- FIXME: Testar a implementa\u00E7\u00E3o abaixo e mesaclar as duas formas -->\r\n\r\n <ng-template #templateInput let-rowData=\"rowData\" let-col=\"col\">\r\n <ng-container *ngIf=\"isEditing; else templatevisualedicao\">\r\n <ng-container [ngSwitch]=\"col.fieldControlType\">\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div [style.width]=\"col.width\" class=\"grid formgrid p-fluid\">\r\n <kv-input-text\r\n [disabled]=\"isDisableEditRowCellFunction(rowData, col)\"\r\n class=\"cellControl col\"\r\n [(ngModel)]=\"rowData[col.field]\"\r\n [required]=\"col.required ?? true\"\r\n ></kv-input-text>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <div [style.width]=\"col.width\" class=\"grid formgrid p-fluid\">\r\n <kv-input-number\r\n [disabled]=\"isDisableEditRowCellFunction(rowData, col)\"\r\n class=\"cellControl col\"\r\n [(ngModel)]=\"rowData[col.field]\"\r\n [required]=\"col.required ?? true\"\r\n ></kv-input-number>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'mask'\">\r\n <div [style.width]=\"col.width\" class=\"grid formgrid p-fluid\">\r\n <kv-input-mask\r\n [disabled]=\"isDisableEditRowCellFunction(rowData, col)\"\r\n class=\"cellControl col\"\r\n [mask]=\"col.mask\"\r\n [required]=\"col.required ?? true\"\r\n [(ngModel)]=\"rowData[col.field]\"\r\n ></kv-input-mask>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'switch'\">\r\n <div [style.width]=\"col.width\" class=\"grid formgrid p-fluid\">\r\n <kv-switch\r\n [disabled]=\"isDisableEditRowCellFunction(rowData, col)\"\r\n class=\"cellControl col\"\r\n [(ngModel)]=\"rowData[col.field]\"\r\n ></kv-switch>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'calendar'\">\r\n <div [style.width]=\"col.width\">\r\n <div\r\n [style.width]=\"col.width\"\r\n class=\"grid formgrid p-fluid\"\r\n >\r\n <kv-input-calendar\r\n class=\"cellControl col\"\r\n [(ngModel)]=\"rowData[col.field]\"\r\n ></kv-input-calendar>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'dropdown'\">\r\n <div [style.width]=\"col.width\" class=\"grid formgrid p-fluid\">\r\n <p-dropdown\r\n [disabled]=\"isDisableEditRowCellFunction(rowData, col)\"\r\n class=\"cellControl col\"\r\n appendTo=\"body\"\r\n [panelStyle]=\"{ 'font-size': '0.75rem' }\"\r\n [optionLabel]=\"col.fieldDropDownControl.descricaoobjeto\"\r\n [optionValue]=\"col.fieldDropDownControl.idobjeto\"\r\n [options]=\"\r\n col.fieldDropDownControl.fieldControlDropdownSource\r\n \"\r\n [(ngModel)]=\"rowData[col.field]\"\r\n >\r\n </p-dropdown>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #templatevisualedicao>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n templateOutput;\r\n context: { rowData: rowData, col: col }\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <ng-template #templateOutput let-rowData=\"rowData\" let-col=\"col\">\r\n <ng-container [ngSwitch]=\"col.fieldControlType\">\r\n <ng-container *ngSwitchCase=\"'dropdown'\">\r\n <ng-container *ngIf=\"rowData[col.field]\">\r\n {{ transformValueDrop(retornaDescricaoDrop(rowData, col), col) }}\r\n <!-- {{rowData[col.field]}} -->\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'switch'\">\r\n <kv-switch\r\n [(ngModel)]=\"rowData[col.field]\"\r\n [disabled]=\"true\"\r\n ></kv-switch>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'calendar'\">\r\n {{ rowData[col.field] | date }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'mask'\">\r\n {{ rowData[col.field] | mask : col.mask }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n {{ transformValue(rowData, col) }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <td\r\n *ngIf=\"editMode == 'cell' && col.fieldControlType\"\r\n [pEditableColumn]=\"rowData\"\r\n [pEditableColumnField]=\"col.field\"\r\n [pEditableColumnRowIndex]=\"rowData[config.dataKey]\"\r\n [id]=\"'rowTable' + rowData[config.dataKey]\"\r\n (click)=\"activeItem(rowData)\"\r\n (dblclick)=\"dbClickEdit()\"\r\n class=\"rowTable\"\r\n [style]=\"\r\n applyStyle(rowData, col) +\r\n centralizarColunas(col) +\r\n alignColunas(col)\r\n \"\r\n [pTooltip]=\"returnTooltipRow(rowData, col)\"\r\n >\r\n <p-cellEditor>\r\n <ng-container>\r\n <ng-template pTemplate=\"input\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n templateInput;\r\n context: { rowData: rowData, col: col }\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"output\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n templateOutput;\r\n context: { rowData: rowData, col: col }\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <!-- <ng-template *ngIf=\"!isEditing\" pTemplate=\"input\">\r\n <ng-container *ngTemplateOutlet=\"templateInput; context: { rowData: rowData, col: col }\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template *ngIf=\"isEditing\" pTemplate=\"output\">\r\n <ng-container *ngTemplateOutlet=\"templateOutput; context: { rowData: rowData, col: col }\"></ng-container>\r\n </ng-template> -->\r\n </p-cellEditor>\r\n </td>\r\n\r\n <!-- NOTE: Edi\u00E7\u00E3o de linha -->\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n\r\n <!-- Celula que armazena os controles de edi\u00E7\u00E3o para os campos -->\r\n <td\r\n *ngIf=\"false && col.fieldControlType && editMode == 'row'\"\r\n [id]=\"'rowTable' + rowData[config.dataKey]\"\r\n (click)=\"activeItem(rowData)\"\r\n (dblclick)=\"dbClickEdit()\"\r\n class=\"rowTable\"\r\n [style]=\"\r\n applyStyle(rowData, col) +\r\n centralizarColunas(col) +\r\n alignColunas(col)\r\n \"\r\n [pTooltip]=\"returnTooltipRow(rowData, col)\"\r\n >\r\n <p-cellEditor\r\n [ngClass]=\"{ switch: col.fieldControlType == 'switch' }\"\r\n >\r\n <ng-template pTemplate=\"input\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n templateInput;\r\n context: { rowData: rowData, col: col }\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"output\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n templateOutput;\r\n context: { rowData: rowData, col: col }\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n </p-cellEditor>\r\n </td>\r\n\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n\r\n <td\r\n *ngIf=\"rowgroup && !col.template\"\r\n [attr.rowspan]=\"rowgroup && col.grouped ? rowspan : null\"\r\n class=\"rowTable\"\r\n [style]=\"\r\n applyStyle(rowData, col) +\r\n centralizarColunas(col) +\r\n alignColunas(col)\r\n \"\r\n [pTooltip]=\"returnTooltipRow(rowData, col)\"\r\n >\r\n <span class=\"p-column-title\">{{ col.header }}:</span>\r\n\r\n <span\r\n *ngIf=\"!isBooleanField(rowData, col); else booleanField\"\r\n [class]=\"returnRowClass(rowData, col)\"\r\n >\r\n <span\r\n *ngIf=\"\r\n !isChipField(col) && !col.iconField && !isImageField(col)\r\n \"\r\n >\r\n <i *ngIf=\"col.icon\" [class]=\"col.icon + ' mr-2'\"></i>\r\n {{ transformValue(rowData, col) }}\r\n </span>\r\n\r\n <div *ngIf=\"isChipField(col) && !col.iconField\">\r\n <span\r\n [class]=\"returnClassChip(rowData, col)\"\r\n [pTooltip]=\"returnTooltipIcon(rowData, col)\"\r\n >{{ transformValue(rowData, col) }}</span\r\n >\r\n </div>\r\n </span>\r\n\r\n <span *ngIf=\"isImageField(col)\">\r\n <span>\r\n <img class=\"image\" [src]=\"loadImage(rowData, col)\" />\r\n </span>\r\n </span>\r\n\r\n <i\r\n *ngIf=\"col.iconField\"\r\n [ngClass]=\"{\r\n 'material-icons': col.indIconMaterial,\r\n 'material-symbols-outlined mr-2': !col.indIconMaterial\r\n }\"\r\n [pTooltip]=\"returnTooltipIcon(rowData, col)\"\r\n >\r\n {{ returnClassIcon(rowData, col) }}\r\n </i>\r\n\r\n <ng-template #booleanField>\r\n <i\r\n *ngIf=\"!col.iconField && !isSwitchField(col)\"\r\n [ngClass]=\"\r\n rowData[col.field] ? 'text-green-500' : 'text-red-500'\r\n \"\r\n ><span class=\"material-symbols-outlined\">\r\n {{ rowData[col.field] ? \"check\" : \"close\" }}\r\n </span>\r\n </i>\r\n\r\n <span\r\n *ngIf=\"isSwitchField(col)\"\r\n [class]=\"returnRowClass(rowData, col)\"\r\n >\r\n <kv-switch\r\n (onSwitchChange)=\"onSwitchChange($event, rowData, col)\"\r\n [disabled]=\"col?.onlyReadField ?? true\"\r\n [switchValue]=\"transformValue(rowData, col)\"\r\n >\r\n </kv-switch>\r\n </span>\r\n </ng-template>\r\n </td>\r\n\r\n <td\r\n *ngIf=\"\r\n !rowgroup &&\r\n !col.grouped &&\r\n !col.template &&\r\n !col.fieldControlType\r\n \"\r\n [style]=\"\r\n applyStyle(rowData, col) +\r\n centralizarColunas(col) +\r\n alignColunas(col)\r\n \"\r\n class=\"rowTable\"\r\n [pTooltip]=\"returnTooltipRow(rowData, col)\"\r\n >\r\n <span class=\"p-column-title\">{{ col.header }}:</span>\r\n\r\n <span\r\n *ngIf=\"!isBooleanField(rowData, col); else booleanField\"\r\n [class]=\"returnRowClass(rowData, col)\"\r\n >\r\n <span\r\n *ngIf=\"\r\n !isChipField(col) && !col.iconField && !isImageField(col)\r\n \"\r\n >\r\n <i *ngIf=\"col.icon\" [class]=\"col.icon + ' mr-2'\"></i>\r\n {{ transformValue(rowData, col) }}\r\n </span>\r\n\r\n <div *ngIf=\"isChipField(col) && !col.iconField\">\r\n <span\r\n [class]=\"returnClassChip(rowData, col)\"\r\n [pTooltip]=\"returnTooltipIcon(rowData, col)\"\r\n >\r\n {{ transformValue(rowData, col) }}</span\r\n >\r\n </div>\r\n </span>\r\n\r\n <span *ngIf=\"isImageField(col)\">\r\n <span>\r\n <img class=\"image\" [src]=\"loadImage(rowData, col)\" />\r\n </span>\r\n </span>\r\n\r\n <i\r\n *ngIf=\"col.iconField\"\r\n [ngClass]=\"{\r\n 'material-icons': col.indIconMaterial,\r\n 'material-symbols-outlined mr-2': !col.indIconMaterial\r\n }\"\r\n [pTooltip]=\"returnTooltipIcon(rowData, col)\"\r\n >\r\n {{ returnClassIcon(rowData, col) }}\r\n </i>\r\n\r\n <ng-template #booleanField>\r\n <i\r\n *ngIf=\"!col.iconField && !isSwitchField(col)\"\r\n [ngClass]=\"\r\n rowData[col.field] ? 'text-green-500' : 'text-red-500'\r\n \"\r\n ><span class=\"material-symbols-outlined\">\r\n {{ rowData[col.field] ? \"check\" : \"close\" }}\r\n </span>\r\n </i>\r\n\r\n <span\r\n *ngIf=\"isSwitchField(col)\"\r\n [class]=\"returnRowClass(rowData, col)\"\r\n >\r\n <kv-switch\r\n (onSwitchChange)=\"onSwitchChange($event, rowData, col)\"\r\n [disabled]=\"col?.onlyReadField ?? true\"\r\n [switchValue]=\"transformValue(rowData, col)\"\r\n >\r\n </kv-switch>\r\n </span>\r\n </ng-template>\r\n </td>\r\n\r\n <td\r\n *ngIf=\"col.template && !isEditableTable()\"\r\n [style]=\"\r\n applyStyle(rowData, col) +\r\n centralizarColunas(col) +\r\n alignColunas(col)\r\n \"\r\n class=\"rowTable\"\r\n >\r\n <span class=\"p-column-title\">{{ col.header }}:</span>\r\n <ng-container\r\n *ngIf=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n >\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- ------------------------------------------------------------------------------------------------------------------------------------------- -->\r\n <!-- Controle de a\u00E7\u00E3o -->\r\n <td\r\n [ngClass]=\"{\r\n 'td-tools': isEditableTable() && this.editMode == 'row',\r\n 'td-tools-sticky': !isEditableTable() || this.editMode == 'cell'\r\n }\"\r\n *ngIf=\"!isEditing && config.actions && config.actions.length > 0\"\r\n [style]=\"\r\n applyStyle(rowData, { field: 'btns-options', header: '' }) +\r\n 'border-right: 1px solid #ddd !important; border-left: 1px solid #ddd !important;'\r\n \"\r\n >\r\n <div class=\"flex flex-row justify-content-end w-full\">\r\n <!-- <button\r\n id=\"moreVertBtn\"\r\n pButton\r\n class=\"actionBtns p-button-text p-button-raised\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n > -->\r\n <span\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 1rem; height: 10px; width: 20px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n <!-- </button> -->\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <!-- <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div> -->\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n </div>\r\n </td>\r\n\r\n <!-- <td\r\n class=\"td-tools\"\r\n *ngIf=\"!isEditing && config.actions && config.actions.length > 0\"\r\n [style]=\"applyStyle(rowData, { field: 'btns-options', header: '' })\"\r\n >\r\n </td> -->\r\n\r\n <!-- ------------------------------------------------------------------------------------------------------------------------------------------- -->\r\n <!-- Controle de edi\u00E7\u00E3o -->\r\n <td\r\n class=\"td-edit\"\r\n *ngIf=\"this.isEditableTable() && this.editMode == 'row'\"\r\n >\r\n <div class=\"flex align-items-center justify-content-center gap-2\">\r\n <button\r\n [style.height]=\"'28px'\"\r\n [id]=\"'rowEdit' + rowData[config.dataKey]\"\r\n [style.width]=\"'28px'\"\r\n [disabled]=\"isDisableEditRowFunction(rowData)\"\r\n *ngIf=\"!editing\"\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n pInitEditableRow\r\n icon=\"pi pi-pencil\"\r\n (click)=\"onRowEditInit(rowData)\"\r\n class=\"p-button-rounded p-button-text\"\r\n ></button>\r\n <!-- <button [style.height]=\"'28px'\" [style.width]=\"'28px'\" [disabled]=\"isDisableEditRowFunction(rowData)\" *ngIf=\"editing\" pButton pRipple type=\"button\" pSaveEditableRow icon=\"pi pi-check\"\r\n (click)=\"onRowEditSave(rowData, ri)\" [id]=\"'rowSave' + rowData[config.dataKey] \" class=\"p-button-rounded p-button-text p-button-success mr-2\"></button> -->\r\n <button\r\n [style.height]=\"'28px'\"\r\n [style.width]=\"'28px'\"\r\n [disabled]=\"isDisableEditRowFunction(rowData)\"\r\n *ngIf=\"editing\"\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n pCancelEditableRow\r\n icon=\"pi pi-times\"\r\n (click)=\"onRowEditCancel(rowData, ri)\"\r\n [id]=\"'rowCancel' + rowData[config.dataKey]\"\r\n class=\"p-button-rounded p-button-text p-button-danger\"\r\n ></button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.td-edit{position:sticky;right:-1px;background-color:#fff;color:#5289b4}.td-tools{position:sticky;right:52px;border-right:1px solid #ddd!important;background-color:#fff;box-shadow:-5px 0 20px -10px #000000bf}.td-tools-sticky{position:sticky;right:0;border-right:3px solid #fff!important;background-color:#fff}#th-edit{position:sticky;right:0;background-color:#eaeaea}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td{text-align:center;border:1px solid #eaeaea;border-width:1px 1px;padding:0rem .5rem}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{text-align:center;padding:0rem .5rem;border-left:none;border-right:none;border-width:1px 1px;font-weight:700;color:#343a40;background:#eaeaea;transition:box-shadow .2s}.error-show{background-color:red;width:5px;height:10px}.btns-options{position:relative;left:20px}.chip-style{border:solid 1px}:host::ng-deep .p-card .p-card-content{padding:0}.material-symbols-outlined.md-19{font-size:15px}.material-symbols-outlined.md-22{font-size:19px}.checkbox-container{display:flex;align-items:center;gap:2px;margin-top:5px}#botaoFiltro:hover{color:#a9a9a9}.actionLoteBtns{align-items:center;background-color:transparent;color:#a9a9a9;display:flex;font-size:16px;width:2rem;height:2rem;top:2px;margin-left:.5rem;justify-content:center;text-decoration:none;text-align:justify;padding:12px}:host ::ng-deep .center{display:flex;align-items:center;justify-content:center}#actionLoteBtns:hover,.actionLoteBtns:hover{background-color:#29b92d!important}.actionBtns{align-items:center;background-color:transparent;color:#a9a9a9;display:flex;width:.8rem;height:.8rem;margin-left:.22rem;justify-content:center;text-decoration:none;text-align:justify;padding:11px}:host::ng-deep .material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;line-height:.9;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased}#actionBtns:hover{color:#a9a9a9}.image{border-style:solid;border-width:3.5px;border-color:#5289b4;border-radius:100%;height:55px;width:55px;padding:0;margin:0;vertical-align:middle}:host ::ng-deep .p-datatable-header{background-color:#eaeaea!important;padding:2px 13px 0!important;border-radius:5px!important}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{background-color:#eaeaea!important}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td{border-left:none!important;border-right:none!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:20%;width:1.625rem!important;height:1.625rem!important;box-shadow:#0000003d 0 3px 8px}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}@media only screen and (min-width: 768px){.actionLoteBtns{top:-1px}}@media only screen and (max-width: 960px){:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:has(p-tablecheckbox){border-bottom:0px!important}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:has(img){justify-content:center!important;align-items:center!important}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:has(img) .p-column-title{display:none!important}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:last-child{border-bottom:1px solid #ddd!important}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:last-child div{justify-content:center!important;align-items:center!important}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td .p-column-title{font-weight:600}}::ng-deep .p-panel.p-panel-toggleable .p-panel-header{background-color:#eaeaea!important}::ng-deep .field.grid,.formgrid.grid{padding:0rem!important}@media screen and (min-width: 961px){.moreVertBtn{position:relative;right:3px}}::ng-deep .p-datatable .p-datatable-thead>tr>th:last-of-type{border-radius:0 0 5px!important;-webkit-border-radius:0px 0px 5px 0px!important;-moz-border-radius:0px 0px 5px 0px!important;-ms-border-radius:0px 0px 5px 0px!important;-o-border-radius:0px 0px 5px 0px!important}::ng-deep .p-datatable .p-datatable-thead>tr>th:first-of-type{border-radius:0 0 0 5px!important;-webkit-border-radius:0px 0px 0px 5px!important;-moz-border-radius:0px 0px 0px 5px!important;-ms-border-radius:0px 0px 0px 5px!important;-o-border-radius:0px 0px 0px 5px!important}:host ::ng-deep p-celleditor>kv-switch>div>p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before{transform:translate(1.25rem);height:15px;margin-top:-8px;-webkit-transform:translateX(1.25rem);-moz-transform:translateX(1.25rem);-ms-transform:translateX(1.25rem);-o-transform:translateX(1.25rem)}:host ::ng-deep p-celleditor>kv-switch>div>p-inputswitch.p-inputswitch-checked .p-inputswitch-slider{height:21px}:host ::ng-deep p-celleditor>kv-switch>div>p-inputswitch{height:21px}:host ::ng-deep p-celleditor>kv-switch>div>p-inputswitch .p-inputswitch-slider:before{background:#fff;width:1rem;height:1.25rem;height:16px!important;left:.25rem;margin-top:-9px!important;margin-top:-.625rem;border-radius:50%;transition-duration:.2s}:host ::ng-deep p-celleditor>kv-switch>div>p-inputswitch:not(.p-disabled) .p-inputswitch-slider{height:21px}:host ::ng-deep .p-cell-editing{padding-top:0!important;padding-bottom:0!important}:host ::ng-deep p-dropdown-item{font-size:.1rem}.text-aviso{color:red;font-size:.85rem;font-weight:400;width:500px}:host ::ng-deep .p-checkbox .p-checkbox-box{width:18px;height:18px}:host ::ng-deep .p-selectbutton .p-button{font-size:.75rem!important;height:24px;padding:11px}#btn-sizes{border-radius:50%;width:.5rem!important;height:.5rem!important;box-shadow:#0000003d 0 3px 8px}:host ::ng-deep .p-datatable.p-datatable-sm{font-size:.625rem!important}:host ::ng-deep .p-datatable.p-datatable-md{font-size:.75rem!important}:host ::ng-deep .p-datatable.p-datatable-lg{font-size:.875rem!important}:host ::ng-deep .p-datatable-sm-tr>td i>span.material-symbols-outlined{font-size:.9rem}:host ::ng-deep .p-datatable-sm-tr>td .check-edit-list>.p-checkbox .p-checkbox-box{width:15px;height:15px}:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>div>.cellControl>.p-dropdown .p-dropdown-label{width:1%;padding-top:0;padding-bottom:0;font-size:.6rem}:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>div>kv-input-text>span>.inputs{padding-top:0;padding-bottom:0;font-size:.6rem;height:1rem}:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>div>.cellControl>span>p-inputmask>.inputs{height:1rem;padding-top:0;padding-bottom:0;font-size:.6rem}:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>div>kv-switch>div>p-inputswitch>div,:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>kv-switch>div>p-inputswitch,:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>kv-switch>div>p-inputswitch .p-inputswitch-slider{height:.6rem!important;width:2.4rem}:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>kv-switch>div>p-inputswitch .p-inputswitch-slider:before{background:#fff;width:.6rem!important;height:.6rem!important;left:.2rem;margin-top:-.35rem!important;border-radius:50%;transition-duration:.2s}:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>div>kv-switch>div>p-inputswitch>div>span:before{background:#fff;width:.6rem!important;height:.6rem!important;left:.2rem;margin-top:-.35rem!important;border-radius:50%;transition-duration:.2s}:host ::ng-deep .p-datatable-md-tr>td i>span.material-symbols-outlined{font-size:1rem}:host ::ng-deep .p-datatable-md-tr>td .check-edit-list>.p-checkbox .p-checkbox-box{width:18px;height:18px}:host ::ng-deep .p-datatable-md-tr>td p-celleditor>div>.cellControl>.p-dropdown .p-dropdown-label{width:1%;padding-top:0;padding-bottom:0;font-size:.7rem}:host ::ng-deep .p-datatable-md-tr>td p-celleditor>div>kv-input-text>span>.inputs{padding-top:0;padding-bottom:0;font-size:.7rem;height:1rem}:host ::ng-deep .p-datatable-md-tr>td p-celleditor>div>.cellControl>span>p-inputmask>.inputs{height:1rem;padding-top:0;padding-bottom:0;font-size:.7rem}:host ::ng-deep .p-datatable-md-tr>td p-celleditor>div>kv-switch>div>p-inputswitch>div,:host ::ng-deep .p-datatable-md-tr>td p-celleditor>kv-switch>div>p-inputswitch,:host ::ng-deep .p-datatable-md-tr>td p-celleditor>kv-switch>div>p-inputswitch .p-inputswitch-slider{height:.83rem!important;width:2.7rem}:host ::ng-deep .p-datatable-md-tr>td p-celleditor>kv-switch>div>p-inputswitch .p-inputswitch-slider:before{background:#fff;width:.7rem!important;height:.7rem!important;left:.25rem;margin-top:-.35rem!important;border-radius:50%;transition-duration:.2s}:host ::ng-deep .p-datatable-md-tr>td p-celleditor>div>kv-switch>div>p-inputswitch>div>span:before{background:#fff;width:.7rem;height:.7rem;left:.25rem;margin-top:-.4rem;border-radius:50%;transition-duration:.2s}:host ::ng-deep .p-datatable-lg-tr>td i>span.material-symbols-outlined{font-size:1.1rem}:host ::ng-deep .p-datatable-lg-tr>td p-celleditor>div>kv-input-text>span>.inputs{padding-top:0;padding-bottom:0;font-size:.8rem;height:1rem}:host ::ng-deep .p-datatable-lg-tr>td p-celleditor>div>.cellControl>.p-dropdown .p-dropdown-label{padding-top:0;padding-bottom:0;font-size:.8rem}:host ::ng-deep .p-datatable-lg-tr>td p-celleditor>div>.cellControl>span>p-inputmask>.inputs{height:1rem;padding-top:0;padding-bottom:0;font-size:.8rem}:host ::ng-deep .p-datatable-sm-tr>td{padding-top:0!important;padding-top:.05rem!important;padding-bottom:.05rem!important}:host ::ng-deep .p-datatable-md-tr>td,:host ::ng-deep .p-datatable-lg-tr>td{padding:.15rem!important}.p-datatable.p-datatable-smth{font-size:.6rem!important}.p-datatable.p-datatable-dmth{font-size:.7rem!important}.p-datatable.p-datatable-lgth{font-size:.8rem!important}:host ::ng-deep .p-datatable.p-datatable-sm * p-celleditor>div>p-dropdown>.p-dropdown:not(.p-paginator-rpp-options) p-celleditor>div>p-dropdown>.p-dropdown:not(.p-paginator-rpp-options){height:15px!important}:host ::ng-deep .p-datatable.p-datatable-md * p-celleditor>div>p-dropdown>.p-dropdown:not(.p-paginator-rpp-options) p-celleditor>div>p-dropdown>.p-dropdown:not(.p-paginator-rpp-options){height:25px!important}:host ::ng-deep .p-datatable.p-datatable-lg * p-celleditor>div>p-dropdown>.p-dropdown:not(.p-paginator-rpp-options) p-celleditor>div>p-dropdown>.p-dropdown:not(.p-paginator-rpp-options){height:30px!important}:host ::ng-deep p-celleditor>kv-switch>div>p-inputswitch .p-inputswitch-slider{height:21px!important}:host ::ng-deep .teste>.p-button{background:#eaeaea!important;color:#a9a9a9;border:none;box-shadow:#0000003d 0 3px 8px;height:20px}::ng-deep .menuSizes>p-tieredmenusub>.p-tieredmenu-root-list>li:first-child{font-size:.6rem}::ng-deep .menuSizes>p-tieredmenusub>.p-tieredmenu-root-list>li:last-child{font-size:.8rem}.tag{width:5px;height:25px;border-radius:.25rem}:host ::ng-deep .p-speeddial-button.p-button.p-button-icon-only{width:2rem;height:2rem;font-size:1rem}.item-circle{width:4rem;height:2rem;padding:1rem;font-size:.8rem;border-radius:17%;display:flex;align-items:center;justify-content:center;background:#eaeaea!important;box-shadow:#0000003d 0 3px 13px}:host ::ng-deep p-speeddial>div>button>span.material-symbols-outlined.ng-star-inserted{font-size:1.1rem}:host ::ng-deep .check-edit-list>div.p-checkbox.p-component{height:1rem}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:first-child{border-left:1px solid #ddd!important}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:last-child{border-right:1px solid #ddd!important}:host ::ng-deep .p-datatable-wrapper::-webkit-scrollbar:hover{background-color:#dededebf}:host ::ng-deep .p-datatable-wrapper::-webkit-scrollbar{width:6px;height:3px}:host ::ng-deep .p-datatable-wrapper:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}:host ::ng-deep .p-datatable-wrapper::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}:host ::ng-deep .p-datatable-wrapper::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}:host ::ng-deep .p-datatable>.p-datatable-wrapper{overflow-y:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i4.AutoFocus, selector: "[pAutoFocus]", inputs: ["autofocus"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i7.ContextMenu, selector: "p-contextMenu", inputs: ["model", "triggerEvent", "target", "global", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "id", "ariaLabel", "ariaLabelledBy", "pressDelay"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i8.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i9.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i10.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i11.Panel, selector: "p-panel", inputs: ["toggleable", "header", "collapsed", "style", "styleClass", "iconPos", "expandIcon", "collapseIcon", "showHeader", "toggler", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "directive", type: i12.Ripple, selector: "[pRipple]" }, { kind: "component", type: i13.TieredMenu, selector: "p-tieredMenu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "autoDisplay", "showTransitionOptions", "hideTransitionOptions", "id", "ariaLabel", "ariaLabelledBy", "disabled", "tabindex"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i14.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i14.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i14.ContextMenuRow, selector: "[pContextMenuRow]", inputs: ["pContextMenuRow", "pContextMenuRowIndex", "pContextMenuRowDisabled"] }, { kind: "directive", type: i14.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "directive", type: i14.EditableColumn, selector: "[pEditableColumn]", inputs: ["pEditableColumn", "pEditableColumnField", "pEditableColumnRowIndex", "pEditableColumnDisabled", "pFocusCellSelector"] }, { kind: "component", type: i14.CellEditor, selector: "p-cellEditor" }, { kind: "component", type: i14.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i14.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i14.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i14.EditableRow, selector: "[pEditableRow]", inputs: ["pEditableRow", "pEditableRowDisabled"] }, { kind: "directive", type: i14.InitEditableRow, selector: "[pInitEditableRow]" }, { kind: "directive", type: i14.CancelEditableRow, selector: "[pCancelEditableRow]" }, { kind: "component", type: i15.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i16.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i16.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i16.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i17.KvInputCalendarComponent, selector: "kv-input-calendar", inputs: ["isYear", "isMonthYear", "minDate", "maxDate", "showButtonBar", "showIcon", "showTime", "selectionMode"], outputs: ["onSelectionChange", "onSelectionValue"] }, { kind: "component", type: i18.KvInputMaskComponent, selector: "kv-input-mask", inputs: ["mask"], outputs: ["onComplete"] }, { kind: "component", type: i19.KvInputNumberComponent, selector: "kv-input-number", inputs: ["mode", "digits", "min", "max", "suffix"] }, { kind: "component", type: i20.KvInputTextComponent, selector: "kv-input-text", inputs: ["textCaptalized"] }, { kind: "component", type: i21.KvSwitchComponent, selector: "kv-switch", inputs: ["readonly", "switchValue"], outputs: ["onSwitchChange"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i22.MaskPipe, name: "mask" }] }); }
|
|
309
|
-
}
|
|
310
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTableEditComponent, decorators: [{
|
|
311
|
-
type: Component,
|
|
312
|
-
args: [{ selector: 'kv-table-edit', template: "<div class=\"card\" id=\"tamanhotabela\" [style.font-size]=\"'1px'\">\r\n <p-toast></p-toast>\r\n\r\n <p-panel\r\n *ngIf=\"filtrosAvancados\"\r\n header=\"Filtros avan\u00E7ados\"\r\n [toggleable]=\"true\"\r\n [collapsed]=\"true\"\r\n (collapsedChange)=\"collapsed = !collapsed\"\r\n [style]=\"{ 'margin-bottom': '2px' }\"\r\n >\r\n <ng-template pTemplate=\"headericons\">\r\n <i *ngIf=\"!collapsed\" class=\"pi pi-filter\"></i>\r\n <!-- \u00CDcone quando o painel est\u00E1 aberto -->\r\n <i *ngIf=\"collapsed\" class=\"pi pi-minus\"></i>\r\n <!-- \u00CDcone quando o painel est\u00E1 fechado -->\r\n </ng-template>\r\n <ng-content></ng-content>\r\n </p-panel>\r\n\r\n <p-contextMenu #cm [model]=\"itemsContextMenu\"></p-contextMenu>\r\n <p-table\r\n #te\r\n [editMode]=\"editMode\"\r\n (onEditComplete)=\"onEditComplete($event)\"\r\n (onEditInit)=\"onEditInit($event)\"\r\n [reorderableColumns]=\"config.reorderableColumns || false\"\r\n *ngIf=\"config\"\r\n [value]=\"dataSource\"\r\n [dataKey]=\"config.dataKey\"\r\n [columns]=\"config.columns\"\r\n [scrollable]=\"true\"\r\n appendTo=\"body\"\r\n [styleClass]=\"selectedSize.class\"\r\n [(selection)]=\"selectedItems\"\r\n [rowSelectable]=\"isRowSelectable\"\r\n [globalFilterFields]=\"globalFilterFields\"\r\n [rows]=\"rows\"\r\n [paginator]=\"paginator\"\r\n [rowsPerPageOptions]=\"rowsPerPageOptions\"\r\n [showCurrentPageReport]=\"true\"\r\n currentPageReportTemplate=\"{first} - {last} de {totalRecords}\"\r\n (selectionChange)=\"selectionChange($event)\"\r\n [rowHover]=\"true\"\r\n [totalRecords]=\"totalRecords\"\r\n [lazy]=\"config.lazy\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n [groupRowsBy]=\"config.fieldGroup\"\r\n paginatorDropdownAppendTo=\"body\"\r\n [showFirstLastIcon]=\"showFirstLastIcon\"\r\n [pageLinks]=\"pageLinksOptions\"\r\n [scrollable]=\"isTableScrollable\"\r\n [scrollHeight]=\"scrollHeight\"\r\n [rowTrackBy]=\"rowTrackBy\"\r\n [(contextMenuSelection)]=\"selectedProduct\"\r\n [contextMenu]=\"isEditableTable() ? cm : null\"\r\n >\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n\r\n <ng-template pTemplate=\"caption\" *ngIf=\"config.enableCation || enableSizes\">\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\"\r\n >\r\n <div class=\"col-12 flex flex-column\">\r\n <div *ngIf=\"config.title\" class=\"text-md font-bold my-3\">\r\n {{ config.title }}\r\n </div>\r\n <div *ngIf=\"config.subtitle\" class=\"text-sm mb-4 font-medium\">\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex flex-row align-items-center md:col-6 lg:col-4 {{\r\n tamanhoTela < 768 ? 'col-10' : 'col-12'\r\n }} mt-1 mb-2 \"\r\n >\r\n <span *ngIf=\"config.enableFilter\" class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(te, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2rem\"\r\n />\r\n </span>\r\n\r\n <!-- FIXME: Op\u00E7\u00E3o 1 -->\r\n <!-- <div class=\"sizes-controls ml-2\" *ngIf=\"isShowSizes\">\r\n <p-selectButton\r\n [options]=\"sizes\"\r\n [(ngModel)]=\"selectedSize\"\r\n [style]=\"{'display': 'flex'}\"\r\n optionLabel=\"name\"\r\n />\r\n </div>\r\n <button\r\n id=\"btn-sizes\"\r\n pButton\r\n [pTooltip]=\"isShowSizes ? 'Esconder controles de tamanho' : 'Mostrar controles de tamanho'\"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"isShowSizes = !isShowSizes\"\r\n >\r\n <span style=\"font-size: 0.8rem;\" class=\"flex align-items-end\">\r\n <span style=\"font-size: 0.7rem;\">\r\n A\r\n </span>\r\n A\r\n </span>\r\n </button> -->\r\n\r\n <!-- FIXME: Op\u00E7\u00E3o 2 -->\r\n <div *ngIf=\"enableSizes\" class=\"sizes-controls ml-2\">\r\n <!-- <p-splitButton\r\n label=\"aA\"\r\n [model]=\"sizes\"\r\n styleClass=\"teste\"\r\n [menuStyle]=\"{'font-size': '0.7rem'}\"\r\n\r\n ngModel\r\n >\r\n </p-splitButton> -->\r\n <!-- <p-button icon=\"pi pi-ellipsis-v\"/> -->\r\n\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n (click)=\"menu.toggle($event)\"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n style=\"background-color: #1da750; color: #fff; display: flex\"\r\n >\r\n <span class=\"text-xs\">A</span>\r\n <span class=\"text-md\">A</span>\r\n </button>\r\n\r\n <p-tieredMenu\r\n [style]=\"{ 'font-size': '0.7rem' }\"\r\n styleClass=\"menuSizes\"\r\n appendTo=\"body\"\r\n #menu\r\n [model]=\"sizes\"\r\n [popup]=\"true\"\r\n >\r\n <ng-template let-item pTemplate=\"item\">\r\n <div\r\n class=\"cursor-pointer flex gap-2 align-items-center pl-1 m-2 menu-sizes\"\r\n (click)=\"item.command()\"\r\n >\r\n <div\r\n *ngIf=\"this.selectedSize.size != item.size\"\r\n class=\"tag\"\r\n [style.background-color]=\"'#EAEAEA'\"\r\n ></div>\r\n <div\r\n *ngIf=\"this.selectedSize.size == item.size\"\r\n class=\"tag\"\r\n [style.background-color]=\"'#1DA750'\"\r\n ></div>\r\n\r\n {{ item.label }}\r\n </div>\r\n </ng-template>\r\n </p-tieredMenu>\r\n </div>\r\n <!-- FIXME: Op\u00E7\u00E3o 3 -->\r\n <!-- <div class=\"sizes-controls ml-2\" style=\"transform: translate(0px, -15px);\" >\r\n <p-speedDial\r\n [model]=\"sizes\"\r\n showIcon=\"format_size\"\r\n [mask]=\"true\"\r\n direction=\"right\"\r\n buttonClassName=\"item-circle\"\r\n >\r\n\r\n\r\n\r\n\r\n <ng-template let-item pTemplate=\"item\" >\r\n <div class=\"item-circle cursor-pointer\r\n\r\n shadow-2 hover:shadow-8\r\n\r\n \" (click)=\"item.command()\">\r\n {{item.label}}\r\n </div>\r\n </ng-template>\r\n\r\n </p-speedDial>\r\n </div> -->\r\n </div>\r\n\r\n <span *ngIf=\"isEditing\" class=\"text-aviso\">\r\n Tabela em modo de edi\u00E7\u00E3o\r\n </span>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options flex flex-row\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n !isEditing &&\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns border-none\"\r\n style=\"background-color: #1da750\"\r\n (click)=\"action?.command(); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"getOrExecute(action.tooltip, selectedItems)\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [disabled]=\"getOrExecute(action.disabled, selectedItems)\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined\"\r\n style=\"color: white\"\r\n >\r\n {{ getOrExecute(action.icon, selectedItems) }}\r\n </span>\r\n </button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"isEditableTable()\"\r\n class=\"btns-options\"\r\n [style]=\"{ 'margin-right': '7px' }\"\r\n >\r\n <button\r\n (click)=\"this.isEditing = !this.isEditing\"\r\n id=\"actionLoteBtns\"\r\n pButton\r\n [pTooltip]=\"!isEditing ? 'Habilitar Edi\u00E7\u00E3o' : 'Desabilitar Edi\u00E7\u00E3o'\"\r\n [tooltipPosition]=\"'left'\"\r\n style=\"background-color: #1da750; color: #fff\"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n >\r\n <span class=\"material-symbols-outlined\"> edit_square </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th\r\n style=\"width: 4rem; border-left: solid 4px transparent\"\r\n *ngIf=\"config.enableSelect && !isEditing\"\r\n [class]=\"selectedSize.class + 'th'\"\r\n >\r\n <p-tableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"\r\n ></p-tableHeaderCheckbox>\r\n </th>\r\n\r\n <th\r\n *ngFor=\"let col of columns\"\r\n [pSortableColumn]=\"col.field\"\r\n [pSortableColumnDisabled]=\"col.sortable === false\"\r\n [style.min-width]=\"col.width * selectedSize.size + 'px'\"\r\n pReorderableColumn\r\n [class]=\"selectedSize.class + 'th'\"\r\n >\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span\r\n >\r\n </div>\r\n </th>\r\n <th\r\n *ngIf=\"!isEditing && config.actions && config.actions.length > 0\"\r\n ></th>\r\n <th\r\n *ngIf=\"isEditableTable() && this.editMode == 'row'\"\r\n id=\"th-edit\"\r\n style=\"width: 20px\"\r\n >\r\n Editar\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowData\r\n let-editing=\"editing\"\r\n let-ri=\"rowIndex\"\r\n let-columns=\"columns\"\r\n let-rowgroup=\"rowgroup\"\r\n let-rowspan=\"rowspan\"\r\n >\r\n <tr\r\n [pEditableRow]=\"rowData\"\r\n [pEditableRowDisabled]=\"false\"\r\n [pContextMenuRow]=\"{rowData, editing}\"\r\n [class]=\"selectedSize.class + '-tr'\"\r\n >\r\n <td\r\n *ngIf=\"config.enableSelect && !isEditing\"\r\n [style]=\"applyStyle(rowData, { field: 'check-box', header: '' })\"\r\n >\r\n <!--<p-tableCheckbox *ngIf=\"isVisibleCheckbox(rowData)\"-->\r\n <p-tableCheckbox\r\n class=\"check-edit-list\"\r\n [value]=\"rowData\"\r\n [disabled]=\"isDisabledCheckbox(rowData)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n ></p-tableCheckbox>\r\n </td>\r\n\r\n <ng-container *ngFor=\"let col of columns; let i = index\">\r\n <!-- FIXME: Testar a implementa\u00E7\u00E3o abaixo e mesaclar as duas formas -->\r\n\r\n <ng-template #templateInput let-rowData=\"rowData\" let-col=\"col\">\r\n <ng-container *ngIf=\"isEditing; else templatevisualedicao\">\r\n <ng-container [ngSwitch]=\"col.fieldControlType\">\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div [style.width]=\"col.width\" class=\"grid formgrid p-fluid\">\r\n <kv-input-text\r\n [disabled]=\"isDisableEditRowCellFunction(rowData, col)\"\r\n class=\"cellControl col\"\r\n [(ngModel)]=\"rowData[col.field]\"\r\n [required]=\"col.required ?? true\"\r\n ></kv-input-text>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <div [style.width]=\"col.width\" class=\"grid formgrid p-fluid\">\r\n <kv-input-number\r\n [disabled]=\"isDisableEditRowCellFunction(rowData, col)\"\r\n class=\"cellControl col\"\r\n [(ngModel)]=\"rowData[col.field]\"\r\n [required]=\"col.required ?? true\"\r\n ></kv-input-number>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'mask'\">\r\n <div [style.width]=\"col.width\" class=\"grid formgrid p-fluid\">\r\n <kv-input-mask\r\n [disabled]=\"isDisableEditRowCellFunction(rowData, col)\"\r\n class=\"cellControl col\"\r\n [mask]=\"col.mask\"\r\n [required]=\"col.required ?? true\"\r\n [(ngModel)]=\"rowData[col.field]\"\r\n ></kv-input-mask>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'switch'\">\r\n <div [style.width]=\"col.width\" class=\"grid formgrid p-fluid\">\r\n <kv-switch\r\n [disabled]=\"isDisableEditRowCellFunction(rowData, col)\"\r\n class=\"cellControl col\"\r\n [(ngModel)]=\"rowData[col.field]\"\r\n ></kv-switch>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'calendar'\">\r\n <div [style.width]=\"col.width\">\r\n <div\r\n [style.width]=\"col.width\"\r\n class=\"grid formgrid p-fluid\"\r\n >\r\n <kv-input-calendar\r\n class=\"cellControl col\"\r\n [(ngModel)]=\"rowData[col.field]\"\r\n ></kv-input-calendar>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'dropdown'\">\r\n <div [style.width]=\"col.width\" class=\"grid formgrid p-fluid\">\r\n <p-dropdown\r\n [disabled]=\"isDisableEditRowCellFunction(rowData, col)\"\r\n class=\"cellControl col\"\r\n appendTo=\"body\"\r\n [panelStyle]=\"{ 'font-size': '0.75rem' }\"\r\n [optionLabel]=\"col.fieldDropDownControl.descricaoobjeto\"\r\n [optionValue]=\"col.fieldDropDownControl.idobjeto\"\r\n [options]=\"\r\n col.fieldDropDownControl.fieldControlDropdownSource\r\n \"\r\n [(ngModel)]=\"rowData[col.field]\"\r\n >\r\n </p-dropdown>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #templatevisualedicao>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n templateOutput;\r\n context: { rowData: rowData, col: col }\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <ng-template #templateOutput let-rowData=\"rowData\" let-col=\"col\">\r\n <ng-container [ngSwitch]=\"col.fieldControlType\">\r\n <ng-container *ngSwitchCase=\"'dropdown'\">\r\n <ng-container *ngIf=\"rowData[col.field]\">\r\n {{ transformValueDrop(retornaDescricaoDrop(rowData, col), col) }}\r\n <!-- {{rowData[col.field]}} -->\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'switch'\">\r\n <kv-switch\r\n [(ngModel)]=\"rowData[col.field]\"\r\n [disabled]=\"true\"\r\n ></kv-switch>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'calendar'\">\r\n {{ rowData[col.field] | date }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'mask'\">\r\n {{ rowData[col.field] | mask : col.mask }}\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n {{ transformValue(rowData, col) }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <td\r\n *ngIf=\"editMode == 'cell' && col.fieldControlType\"\r\n [pEditableColumn]=\"rowData\"\r\n [pEditableColumnField]=\"col.field\"\r\n [pEditableColumnRowIndex]=\"rowData[config.dataKey]\"\r\n [id]=\"'rowTable' + rowData[config.dataKey]\"\r\n (click)=\"activeItem(rowData)\"\r\n (dblclick)=\"dbClickEdit()\"\r\n class=\"rowTable\"\r\n [style]=\"\r\n applyStyle(rowData, col) +\r\n centralizarColunas(col) +\r\n alignColunas(col)\r\n \"\r\n [pTooltip]=\"returnTooltipRow(rowData, col)\"\r\n >\r\n <p-cellEditor>\r\n <ng-container>\r\n <ng-template pTemplate=\"input\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n templateInput;\r\n context: { rowData: rowData, col: col }\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"output\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n templateOutput;\r\n context: { rowData: rowData, col: col }\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <!-- <ng-template *ngIf=\"!isEditing\" pTemplate=\"input\">\r\n <ng-container *ngTemplateOutlet=\"templateInput; context: { rowData: rowData, col: col }\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template *ngIf=\"isEditing\" pTemplate=\"output\">\r\n <ng-container *ngTemplateOutlet=\"templateOutput; context: { rowData: rowData, col: col }\"></ng-container>\r\n </ng-template> -->\r\n </p-cellEditor>\r\n </td>\r\n\r\n <!-- NOTE: Edi\u00E7\u00E3o de linha -->\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n\r\n <!-- Celula que armazena os controles de edi\u00E7\u00E3o para os campos -->\r\n <td\r\n *ngIf=\"false && col.fieldControlType && editMode == 'row'\"\r\n [id]=\"'rowTable' + rowData[config.dataKey]\"\r\n (click)=\"activeItem(rowData)\"\r\n (dblclick)=\"dbClickEdit()\"\r\n class=\"rowTable\"\r\n [style]=\"\r\n applyStyle(rowData, col) +\r\n centralizarColunas(col) +\r\n alignColunas(col)\r\n \"\r\n [pTooltip]=\"returnTooltipRow(rowData, col)\"\r\n >\r\n <p-cellEditor\r\n [ngClass]=\"{ switch: col.fieldControlType == 'switch' }\"\r\n >\r\n <ng-template pTemplate=\"input\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n templateInput;\r\n context: { rowData: rowData, col: col }\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"output\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n templateOutput;\r\n context: { rowData: rowData, col: col }\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n </p-cellEditor>\r\n </td>\r\n\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n <!-- ----------------------------------------------------------------------------------------------------------------------------------- -->\r\n\r\n <td\r\n *ngIf=\"rowgroup && !col.template\"\r\n [attr.rowspan]=\"rowgroup && col.grouped ? rowspan : null\"\r\n class=\"rowTable\"\r\n [style]=\"\r\n applyStyle(rowData, col) +\r\n centralizarColunas(col) +\r\n alignColunas(col)\r\n \"\r\n [pTooltip]=\"returnTooltipRow(rowData, col)\"\r\n >\r\n <span class=\"p-column-title\">{{ col.header }}:</span>\r\n\r\n <span\r\n *ngIf=\"!isBooleanField(rowData, col); else booleanField\"\r\n [class]=\"returnRowClass(rowData, col)\"\r\n >\r\n <span\r\n *ngIf=\"\r\n !isChipField(col) && !col.iconField && !isImageField(col)\r\n \"\r\n >\r\n <i *ngIf=\"col.icon\" [class]=\"col.icon + ' mr-2'\"></i>\r\n {{ transformValue(rowData, col) }}\r\n </span>\r\n\r\n <div *ngIf=\"isChipField(col) && !col.iconField\">\r\n <span\r\n [class]=\"returnClassChip(rowData, col)\"\r\n [pTooltip]=\"returnTooltipIcon(rowData, col)\"\r\n >{{ transformValue(rowData, col) }}</span\r\n >\r\n </div>\r\n </span>\r\n\r\n <span *ngIf=\"isImageField(col)\">\r\n <span>\r\n <img class=\"image\" [src]=\"loadImage(rowData, col)\" />\r\n </span>\r\n </span>\r\n\r\n <i\r\n *ngIf=\"col.iconField\"\r\n [ngClass]=\"{\r\n 'material-icons': col.indIconMaterial,\r\n 'material-symbols-outlined mr-2': !col.indIconMaterial\r\n }\"\r\n [pTooltip]=\"returnTooltipIcon(rowData, col)\"\r\n >\r\n {{ returnClassIcon(rowData, col) }}\r\n </i>\r\n\r\n <ng-template #booleanField>\r\n <i\r\n *ngIf=\"!col.iconField && !isSwitchField(col)\"\r\n [ngClass]=\"\r\n rowData[col.field] ? 'text-green-500' : 'text-red-500'\r\n \"\r\n ><span class=\"material-symbols-outlined\">\r\n {{ rowData[col.field] ? \"check\" : \"close\" }}\r\n </span>\r\n </i>\r\n\r\n <span\r\n *ngIf=\"isSwitchField(col)\"\r\n [class]=\"returnRowClass(rowData, col)\"\r\n >\r\n <kv-switch\r\n (onSwitchChange)=\"onSwitchChange($event, rowData, col)\"\r\n [disabled]=\"col?.onlyReadField ?? true\"\r\n [switchValue]=\"transformValue(rowData, col)\"\r\n >\r\n </kv-switch>\r\n </span>\r\n </ng-template>\r\n </td>\r\n\r\n <td\r\n *ngIf=\"\r\n !rowgroup &&\r\n !col.grouped &&\r\n !col.template &&\r\n !col.fieldControlType\r\n \"\r\n [style]=\"\r\n applyStyle(rowData, col) +\r\n centralizarColunas(col) +\r\n alignColunas(col)\r\n \"\r\n class=\"rowTable\"\r\n [pTooltip]=\"returnTooltipRow(rowData, col)\"\r\n >\r\n <span class=\"p-column-title\">{{ col.header }}:</span>\r\n\r\n <span\r\n *ngIf=\"!isBooleanField(rowData, col); else booleanField\"\r\n [class]=\"returnRowClass(rowData, col)\"\r\n >\r\n <span\r\n *ngIf=\"\r\n !isChipField(col) && !col.iconField && !isImageField(col)\r\n \"\r\n >\r\n <i *ngIf=\"col.icon\" [class]=\"col.icon + ' mr-2'\"></i>\r\n {{ transformValue(rowData, col) }}\r\n </span>\r\n\r\n <div *ngIf=\"isChipField(col) && !col.iconField\">\r\n <span\r\n [class]=\"returnClassChip(rowData, col)\"\r\n [pTooltip]=\"returnTooltipIcon(rowData, col)\"\r\n >\r\n {{ transformValue(rowData, col) }}</span\r\n >\r\n </div>\r\n </span>\r\n\r\n <span *ngIf=\"isImageField(col)\">\r\n <span>\r\n <img class=\"image\" [src]=\"loadImage(rowData, col)\" />\r\n </span>\r\n </span>\r\n\r\n <i\r\n *ngIf=\"col.iconField\"\r\n [ngClass]=\"{\r\n 'material-icons': col.indIconMaterial,\r\n 'material-symbols-outlined mr-2': !col.indIconMaterial\r\n }\"\r\n [pTooltip]=\"returnTooltipIcon(rowData, col)\"\r\n >\r\n {{ returnClassIcon(rowData, col) }}\r\n </i>\r\n\r\n <ng-template #booleanField>\r\n <i\r\n *ngIf=\"!col.iconField && !isSwitchField(col)\"\r\n [ngClass]=\"\r\n rowData[col.field] ? 'text-green-500' : 'text-red-500'\r\n \"\r\n ><span class=\"material-symbols-outlined\">\r\n {{ rowData[col.field] ? \"check\" : \"close\" }}\r\n </span>\r\n </i>\r\n\r\n <span\r\n *ngIf=\"isSwitchField(col)\"\r\n [class]=\"returnRowClass(rowData, col)\"\r\n >\r\n <kv-switch\r\n (onSwitchChange)=\"onSwitchChange($event, rowData, col)\"\r\n [disabled]=\"col?.onlyReadField ?? true\"\r\n [switchValue]=\"transformValue(rowData, col)\"\r\n >\r\n </kv-switch>\r\n </span>\r\n </ng-template>\r\n </td>\r\n\r\n <td\r\n *ngIf=\"col.template && !isEditableTable()\"\r\n [style]=\"\r\n applyStyle(rowData, col) +\r\n centralizarColunas(col) +\r\n alignColunas(col)\r\n \"\r\n class=\"rowTable\"\r\n >\r\n <span class=\"p-column-title\">{{ col.header }}:</span>\r\n <ng-container\r\n *ngIf=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n >\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- ------------------------------------------------------------------------------------------------------------------------------------------- -->\r\n <!-- Controle de a\u00E7\u00E3o -->\r\n <td\r\n [ngClass]=\"{\r\n 'td-tools': isEditableTable() && this.editMode == 'row',\r\n 'td-tools-sticky': !isEditableTable() || this.editMode == 'cell'\r\n }\"\r\n *ngIf=\"!isEditing && config.actions && config.actions.length > 0\"\r\n [style]=\"\r\n applyStyle(rowData, { field: 'btns-options', header: '' }) +\r\n 'border-right: 1px solid #ddd !important; border-left: 1px solid #ddd !important;'\r\n \"\r\n >\r\n <div class=\"flex flex-row justify-content-end w-full\">\r\n <!-- <button\r\n id=\"moreVertBtn\"\r\n pButton\r\n class=\"actionBtns p-button-text p-button-raised\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n > -->\r\n <span\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 1rem; height: 10px; width: 20px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n <!-- </button> -->\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <!-- <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div> -->\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n </div>\r\n </td>\r\n\r\n <!-- <td\r\n class=\"td-tools\"\r\n *ngIf=\"!isEditing && config.actions && config.actions.length > 0\"\r\n [style]=\"applyStyle(rowData, { field: 'btns-options', header: '' })\"\r\n >\r\n </td> -->\r\n\r\n <!-- ------------------------------------------------------------------------------------------------------------------------------------------- -->\r\n <!-- Controle de edi\u00E7\u00E3o -->\r\n <td\r\n class=\"td-edit\"\r\n *ngIf=\"this.isEditableTable() && this.editMode == 'row'\"\r\n >\r\n <div class=\"flex align-items-center justify-content-center gap-2\">\r\n <button\r\n [style.height]=\"'28px'\"\r\n [id]=\"'rowEdit' + rowData[config.dataKey]\"\r\n [style.width]=\"'28px'\"\r\n [disabled]=\"isDisableEditRowFunction(rowData)\"\r\n *ngIf=\"!editing\"\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n pInitEditableRow\r\n icon=\"pi pi-pencil\"\r\n (click)=\"onRowEditInit(rowData)\"\r\n class=\"p-button-rounded p-button-text\"\r\n ></button>\r\n <!-- <button [style.height]=\"'28px'\" [style.width]=\"'28px'\" [disabled]=\"isDisableEditRowFunction(rowData)\" *ngIf=\"editing\" pButton pRipple type=\"button\" pSaveEditableRow icon=\"pi pi-check\"\r\n (click)=\"onRowEditSave(rowData, ri)\" [id]=\"'rowSave' + rowData[config.dataKey] \" class=\"p-button-rounded p-button-text p-button-success mr-2\"></button> -->\r\n <button\r\n [style.height]=\"'28px'\"\r\n [style.width]=\"'28px'\"\r\n [disabled]=\"isDisableEditRowFunction(rowData)\"\r\n *ngIf=\"editing\"\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n pCancelEditableRow\r\n icon=\"pi pi-times\"\r\n (click)=\"onRowEditCancel(rowData, ri)\"\r\n [id]=\"'rowCancel' + rowData[config.dataKey]\"\r\n class=\"p-button-rounded p-button-text p-button-danger\"\r\n ></button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.td-edit{position:sticky;right:-1px;background-color:#fff;color:#5289b4}.td-tools{position:sticky;right:52px;border-right:1px solid #ddd!important;background-color:#fff;box-shadow:-5px 0 20px -10px #000000bf}.td-tools-sticky{position:sticky;right:0;border-right:3px solid #fff!important;background-color:#fff}#th-edit{position:sticky;right:0;background-color:#eaeaea}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td{text-align:center;border:1px solid #eaeaea;border-width:1px 1px;padding:0rem .5rem}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{text-align:center;padding:0rem .5rem;border-left:none;border-right:none;border-width:1px 1px;font-weight:700;color:#343a40;background:#eaeaea;transition:box-shadow .2s}.error-show{background-color:red;width:5px;height:10px}.btns-options{position:relative;left:20px}.chip-style{border:solid 1px}:host::ng-deep .p-card .p-card-content{padding:0}.material-symbols-outlined.md-19{font-size:15px}.material-symbols-outlined.md-22{font-size:19px}.checkbox-container{display:flex;align-items:center;gap:2px;margin-top:5px}#botaoFiltro:hover{color:#a9a9a9}.actionLoteBtns{align-items:center;background-color:transparent;color:#a9a9a9;display:flex;font-size:16px;width:2rem;height:2rem;top:2px;margin-left:.5rem;justify-content:center;text-decoration:none;text-align:justify;padding:12px}:host ::ng-deep .center{display:flex;align-items:center;justify-content:center}#actionLoteBtns:hover,.actionLoteBtns:hover{background-color:#29b92d!important}.actionBtns{align-items:center;background-color:transparent;color:#a9a9a9;display:flex;width:.8rem;height:.8rem;margin-left:.22rem;justify-content:center;text-decoration:none;text-align:justify;padding:11px}:host::ng-deep .material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;line-height:.9;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased}#actionBtns:hover{color:#a9a9a9}.image{border-style:solid;border-width:3.5px;border-color:#5289b4;border-radius:100%;height:55px;width:55px;padding:0;margin:0;vertical-align:middle}:host ::ng-deep .p-datatable-header{background-color:#eaeaea!important;padding:2px 13px 0!important;border-radius:5px!important}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{background-color:#eaeaea!important}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td{border-left:none!important;border-right:none!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:20%;width:1.625rem!important;height:1.625rem!important;box-shadow:#0000003d 0 3px 8px}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}@media only screen and (min-width: 768px){.actionLoteBtns{top:-1px}}@media only screen and (max-width: 960px){:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:has(p-tablecheckbox){border-bottom:0px!important}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:has(img){justify-content:center!important;align-items:center!important}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:has(img) .p-column-title{display:none!important}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:last-child{border-bottom:1px solid #ddd!important}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:last-child div{justify-content:center!important;align-items:center!important}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td .p-column-title{font-weight:600}}::ng-deep .p-panel.p-panel-toggleable .p-panel-header{background-color:#eaeaea!important}::ng-deep .field.grid,.formgrid.grid{padding:0rem!important}@media screen and (min-width: 961px){.moreVertBtn{position:relative;right:3px}}::ng-deep .p-datatable .p-datatable-thead>tr>th:last-of-type{border-radius:0 0 5px!important;-webkit-border-radius:0px 0px 5px 0px!important;-moz-border-radius:0px 0px 5px 0px!important;-ms-border-radius:0px 0px 5px 0px!important;-o-border-radius:0px 0px 5px 0px!important}::ng-deep .p-datatable .p-datatable-thead>tr>th:first-of-type{border-radius:0 0 0 5px!important;-webkit-border-radius:0px 0px 0px 5px!important;-moz-border-radius:0px 0px 0px 5px!important;-ms-border-radius:0px 0px 0px 5px!important;-o-border-radius:0px 0px 0px 5px!important}:host ::ng-deep p-celleditor>kv-switch>div>p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before{transform:translate(1.25rem);height:15px;margin-top:-8px;-webkit-transform:translateX(1.25rem);-moz-transform:translateX(1.25rem);-ms-transform:translateX(1.25rem);-o-transform:translateX(1.25rem)}:host ::ng-deep p-celleditor>kv-switch>div>p-inputswitch.p-inputswitch-checked .p-inputswitch-slider{height:21px}:host ::ng-deep p-celleditor>kv-switch>div>p-inputswitch{height:21px}:host ::ng-deep p-celleditor>kv-switch>div>p-inputswitch .p-inputswitch-slider:before{background:#fff;width:1rem;height:1.25rem;height:16px!important;left:.25rem;margin-top:-9px!important;margin-top:-.625rem;border-radius:50%;transition-duration:.2s}:host ::ng-deep p-celleditor>kv-switch>div>p-inputswitch:not(.p-disabled) .p-inputswitch-slider{height:21px}:host ::ng-deep .p-cell-editing{padding-top:0!important;padding-bottom:0!important}:host ::ng-deep p-dropdown-item{font-size:.1rem}.text-aviso{color:red;font-size:.85rem;font-weight:400;width:500px}:host ::ng-deep .p-checkbox .p-checkbox-box{width:18px;height:18px}:host ::ng-deep .p-selectbutton .p-button{font-size:.75rem!important;height:24px;padding:11px}#btn-sizes{border-radius:50%;width:.5rem!important;height:.5rem!important;box-shadow:#0000003d 0 3px 8px}:host ::ng-deep .p-datatable.p-datatable-sm{font-size:.625rem!important}:host ::ng-deep .p-datatable.p-datatable-md{font-size:.75rem!important}:host ::ng-deep .p-datatable.p-datatable-lg{font-size:.875rem!important}:host ::ng-deep .p-datatable-sm-tr>td i>span.material-symbols-outlined{font-size:.9rem}:host ::ng-deep .p-datatable-sm-tr>td .check-edit-list>.p-checkbox .p-checkbox-box{width:15px;height:15px}:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>div>.cellControl>.p-dropdown .p-dropdown-label{width:1%;padding-top:0;padding-bottom:0;font-size:.6rem}:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>div>kv-input-text>span>.inputs{padding-top:0;padding-bottom:0;font-size:.6rem;height:1rem}:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>div>.cellControl>span>p-inputmask>.inputs{height:1rem;padding-top:0;padding-bottom:0;font-size:.6rem}:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>div>kv-switch>div>p-inputswitch>div,:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>kv-switch>div>p-inputswitch,:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>kv-switch>div>p-inputswitch .p-inputswitch-slider{height:.6rem!important;width:2.4rem}:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>kv-switch>div>p-inputswitch .p-inputswitch-slider:before{background:#fff;width:.6rem!important;height:.6rem!important;left:.2rem;margin-top:-.35rem!important;border-radius:50%;transition-duration:.2s}:host ::ng-deep .p-datatable-sm-tr>td p-celleditor>div>kv-switch>div>p-inputswitch>div>span:before{background:#fff;width:.6rem!important;height:.6rem!important;left:.2rem;margin-top:-.35rem!important;border-radius:50%;transition-duration:.2s}:host ::ng-deep .p-datatable-md-tr>td i>span.material-symbols-outlined{font-size:1rem}:host ::ng-deep .p-datatable-md-tr>td .check-edit-list>.p-checkbox .p-checkbox-box{width:18px;height:18px}:host ::ng-deep .p-datatable-md-tr>td p-celleditor>div>.cellControl>.p-dropdown .p-dropdown-label{width:1%;padding-top:0;padding-bottom:0;font-size:.7rem}:host ::ng-deep .p-datatable-md-tr>td p-celleditor>div>kv-input-text>span>.inputs{padding-top:0;padding-bottom:0;font-size:.7rem;height:1rem}:host ::ng-deep .p-datatable-md-tr>td p-celleditor>div>.cellControl>span>p-inputmask>.inputs{height:1rem;padding-top:0;padding-bottom:0;font-size:.7rem}:host ::ng-deep .p-datatable-md-tr>td p-celleditor>div>kv-switch>div>p-inputswitch>div,:host ::ng-deep .p-datatable-md-tr>td p-celleditor>kv-switch>div>p-inputswitch,:host ::ng-deep .p-datatable-md-tr>td p-celleditor>kv-switch>div>p-inputswitch .p-inputswitch-slider{height:.83rem!important;width:2.7rem}:host ::ng-deep .p-datatable-md-tr>td p-celleditor>kv-switch>div>p-inputswitch .p-inputswitch-slider:before{background:#fff;width:.7rem!important;height:.7rem!important;left:.25rem;margin-top:-.35rem!important;border-radius:50%;transition-duration:.2s}:host ::ng-deep .p-datatable-md-tr>td p-celleditor>div>kv-switch>div>p-inputswitch>div>span:before{background:#fff;width:.7rem;height:.7rem;left:.25rem;margin-top:-.4rem;border-radius:50%;transition-duration:.2s}:host ::ng-deep .p-datatable-lg-tr>td i>span.material-symbols-outlined{font-size:1.1rem}:host ::ng-deep .p-datatable-lg-tr>td p-celleditor>div>kv-input-text>span>.inputs{padding-top:0;padding-bottom:0;font-size:.8rem;height:1rem}:host ::ng-deep .p-datatable-lg-tr>td p-celleditor>div>.cellControl>.p-dropdown .p-dropdown-label{padding-top:0;padding-bottom:0;font-size:.8rem}:host ::ng-deep .p-datatable-lg-tr>td p-celleditor>div>.cellControl>span>p-inputmask>.inputs{height:1rem;padding-top:0;padding-bottom:0;font-size:.8rem}:host ::ng-deep .p-datatable-sm-tr>td{padding-top:0!important;padding-top:.05rem!important;padding-bottom:.05rem!important}:host ::ng-deep .p-datatable-md-tr>td,:host ::ng-deep .p-datatable-lg-tr>td{padding:.15rem!important}.p-datatable.p-datatable-smth{font-size:.6rem!important}.p-datatable.p-datatable-dmth{font-size:.7rem!important}.p-datatable.p-datatable-lgth{font-size:.8rem!important}:host ::ng-deep .p-datatable.p-datatable-sm * p-celleditor>div>p-dropdown>.p-dropdown:not(.p-paginator-rpp-options) p-celleditor>div>p-dropdown>.p-dropdown:not(.p-paginator-rpp-options){height:15px!important}:host ::ng-deep .p-datatable.p-datatable-md * p-celleditor>div>p-dropdown>.p-dropdown:not(.p-paginator-rpp-options) p-celleditor>div>p-dropdown>.p-dropdown:not(.p-paginator-rpp-options){height:25px!important}:host ::ng-deep .p-datatable.p-datatable-lg * p-celleditor>div>p-dropdown>.p-dropdown:not(.p-paginator-rpp-options) p-celleditor>div>p-dropdown>.p-dropdown:not(.p-paginator-rpp-options){height:30px!important}:host ::ng-deep p-celleditor>kv-switch>div>p-inputswitch .p-inputswitch-slider{height:21px!important}:host ::ng-deep .teste>.p-button{background:#eaeaea!important;color:#a9a9a9;border:none;box-shadow:#0000003d 0 3px 8px;height:20px}::ng-deep .menuSizes>p-tieredmenusub>.p-tieredmenu-root-list>li:first-child{font-size:.6rem}::ng-deep .menuSizes>p-tieredmenusub>.p-tieredmenu-root-list>li:last-child{font-size:.8rem}.tag{width:5px;height:25px;border-radius:.25rem}:host ::ng-deep .p-speeddial-button.p-button.p-button-icon-only{width:2rem;height:2rem;font-size:1rem}.item-circle{width:4rem;height:2rem;padding:1rem;font-size:.8rem;border-radius:17%;display:flex;align-items:center;justify-content:center;background:#eaeaea!important;box-shadow:#0000003d 0 3px 13px}:host ::ng-deep p-speeddial>div>button>span.material-symbols-outlined.ng-star-inserted{font-size:1.1rem}:host ::ng-deep .check-edit-list>div.p-checkbox.p-component{height:1rem}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:first-child{border-left:1px solid #ddd!important}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td:last-child{border-right:1px solid #ddd!important}:host ::ng-deep .p-datatable-wrapper::-webkit-scrollbar:hover{background-color:#dededebf}:host ::ng-deep .p-datatable-wrapper::-webkit-scrollbar{width:6px;height:3px}:host ::ng-deep .p-datatable-wrapper:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}:host ::ng-deep .p-datatable-wrapper::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}:host ::ng-deep .p-datatable-wrapper::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}:host ::ng-deep .p-datatable>.p-datatable-wrapper{overflow-y:hidden}\n"] }]
|
|
313
|
-
}], ctorParameters: () => [{ type: i1.DatePipe }, { type: i1.DecimalPipe }, { type: i2.CpfCnpjPipe }, { type: i2.TelefonePipe }, { type: i2.NotificationService }], propDecorators: { enableSizes: [{
|
|
314
|
-
type: Input
|
|
315
|
-
}], editMode: [{
|
|
316
|
-
type: Input
|
|
317
|
-
}], onSave: [{
|
|
318
|
-
type: Output
|
|
319
|
-
}], filterField: [{
|
|
320
|
-
type: Output
|
|
321
|
-
}] } });
|
|
322
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdGFibGUtZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi10YWJsZS1lZGl0L2t2LXRhYmxlLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUtZWRpdC9rdi10YWJsZS1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ1EsTUFBTSxlQUFlLENBQUM7QUFXdEMsT0FBTyxFQU1MLFlBQVksRUFDWixhQUFhLEVBQ2QsTUFBTSxxQkFBcUIsQ0FBQztBQUk3QixPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPcEYsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGtCQUFrQjtJQTBCMUQsWUFDRSxRQUFrQixFQUNsQixXQUF3QixFQUN4QixXQUF3QixFQUN4QixZQUEwQixFQUMxQixtQkFBd0M7SUFDeEMsa0NBQWtDOztRQUVsQyxLQUFLLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUE3QnRFLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGFBQVEsR0FBbUIsTUFBTSxDQUFDO1FBQ25DLHdCQUFtQixHQUFVLEVBQUUsQ0FBQTtRQUd2QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLHFC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QUFwQixvQkFBb0IsME5DdENqQyxtamhDQXl6QkE7OzJGRG54QmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGVBQWU7OExBU2hCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFpQkksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIERhdGVQaXBlLFxyXG4gIERlY2ltYWxQaXBlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7XHJcbiAgTWVudUl0ZW19IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuXHJcblxyXG5pbXBvcnQge1xyXG4gIENwZkNucGpQaXBlLFxyXG4gIE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgVGFibGVDb25maWdDb2x1bW4sXHJcbiAgVGVsZWZvbmVQaXBlLFxyXG4gIFZhbHVlT3JGbixcclxuICBnZXRPckV4ZWN1dGUsXHJcbiAgbWFwVG9NZW51SXRlbVxyXG59IGZyb20gJy4uLy4uLy4uL3B1YmxpYy1hcGknO1xyXG5cclxuaW1wb3J0IHsgVGFibGVFZGl0Q29uZmlnQ29sdW1uIH0gZnJvbSAnLi4vLi4vYXBpL2NvbXBvbmVudHMvdGFibGUvdGFibGVlZGl0LmNvbmZpZy5jb2x1bW4nO1xyXG5pbXBvcnQgVGFibGVFZGl0Q29uZmlnIGZyb20gJy4uLy4uL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlZGl0LmNvbmZpZyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCYXNlY29tcG9uZW50VGFibGUgfSBmcm9tICcuLi8uLi9hcGkvYmFzZS1jb21wb25lbnRzL2Jhc2UtY29tcG9uZW50LXRhYmxlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtdGFibGUtZWRpdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LXRhYmxlLWVkaXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LXRhYmxlLWVkaXQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZUYWJsZUVkaXRDb21wb25lbnQgZXh0ZW5kcyBCYXNlY29tcG9uZW50VGFibGUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG5cclxuICBvdmVycmlkZSBjb25maWchOiBUYWJsZUVkaXRDb25maWc7XHJcblxyXG4gIEBJbnB1dCgpIGVuYWJsZVNpemVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZWRpdE1vZGU6ICdyb3cnIHwgJ2NlbGwnID0gJ2NlbGwnO1xyXG4gIHByaXZhdGUgaXRlbXNQYXJhU2FsdmFtZW50bzogYW55W10gPSBbXVxyXG4gIHByb3RlY3RlZCBpdGVtSW5pdGlhbFN0YXRlITogYW55O1xyXG5cclxuICBpc0VkaXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1Nob3dTaXplczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNsb25lZERhdGFTb3VyY2U6IHsgW3M6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgc2VsZWN0ZWRQcm9kdWN0OiBhbnkgPSB7XHJcbiAgICByb3dEYXRhOiB7fSxcclxuICAgIGVkaXRpbmc6IGZhbHNlXHJcbiAgfTtcclxuXHJcbiAgbWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XHJcbiAgLy9cclxuICBpdGVtc0NvbnRleHRNZW51ITogTWVudUl0ZW1bXTtcclxuXHJcbiAgLyoqICBFbWl0ZSBldmVudG8gZGUgc2FsdmFtZW50byBkYSBsaW5oYSAqL1xyXG4gIEBPdXRwdXQoKSBvblNhdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJGaWVsZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgZGF0ZVBpcGU6IERhdGVQaXBlLFxyXG4gICAgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxyXG4gICAgY3BmQ25walBpcGU6IENwZkNucGpQaXBlLFxyXG4gICAgdGVsZWZvbmVQaXBlOiBUZWxlZm9uZVBpcGUsXHJcbiAgICBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlXHJcbiAgICAvLyBjYXBpdGFsaXplUGlwZTogQ2FwaXRhbGl6ZVBpcGUsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihkYXRlUGlwZSwgZGVjaW1hbFBpcGUsIGNwZkNucGpQaXBlLCB0ZWxlZm9uZVBpcGUsIG5vdGlmaWNhdGlvblNlcnZpY2UpO1xyXG4gICAgdGhpcy5pc1Jvd1NlbGVjdGFibGUgPSB0aGlzLmlzUm93U2VsZWN0YWJsZS5iaW5kKHRoaXMpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldE9yRXhlY3V0ZTxUPihhY3Rpb246IFZhbHVlT3JGbjxUPiwgZGF0YTogYW55KTogVCB7XHJcbiAgICByZXR1cm4gZ2V0T3JFeGVjdXRlKGFjdGlvbiwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBzaXplcyA9IFtcclxuICAgIHtcclxuICAgICAgbGFiZWw6ICdQZXF1ZW5vJywgY2xhc3M6ICdwLWRhdGF0YWJsZS1zbScsIHNpemU6IDAuODMsIGNvbW1hbmQ6ICh4OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkU2l6ZSA9IHsgbGFiZWw6ICdQZXF1ZW5vJywgY2xhc3M6ICdwLWRhdGF0YWJsZS1zbScsIHNpemU6IDAuODMgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBsYWJlbDogJ03DqWRpbycsIGNsYXNzOiAncC1kYXRhdGFibGUtbWQnLCBzaXplOiAxLCBjb21tYW5kOiAoeDogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNpemUgPSB7IGxhYmVsOiAnTcOpZGlvJywgY2xhc3M6ICdwLWRhdGF0YWJsZS1tZCcsIHNpemU6IDEgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBsYWJlbDogJ0dyYW5kZScsIGNsYXNzOiAncC1kYXRhdGFibGUtbGcnLCBzaXplOiAxLjE3LCBjb21tYW5kOiAoeDogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNpemUgPSB7IGxhYmVsOiAnTGFyZ2UnLCBjbGFzczogJ3AtZGF0YXRhYmxlLWxnJywgc2l6ZTogMS4xNyB9XHJcblxyXG4gICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIC8vIHsgbmFtZTogJ1NtYWxsJywgY2xhc3M6ICdwLWRhdGF0YWJsZS1zbScsIHNpemU6ICAwLjgzIH0sXHJcbiAgICAvLyB7IG5hbWU6ICdOb3JtYWwnLCBjbGFzczogJ3AtZGF0YXRhYmxlLW1kJywgc2l6ZTogMSB9LFxyXG4gICAgLy8geyBuYW1lOiAnTGFyZ2UnLCAgY2xhc3M6ICdwLWRhdGF0YWJsZS1sZycsIHNpemU6IDEuMTcgfVxyXG4gIF07XHJcblxyXG5cclxuICAvL0ZJWE1FOiBNb3ZlciBwYXJhIHVtIGxvY2FsIGFkZXF1YWRvXHJcbiAgdGltZXJTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247IC8vIEFzc2luYXR1cmEgZG8gdGVtcG9yaXphZG9yXHJcbiAgb25TYXZlVGltZXIkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTsgLy8gU3VqZWl0byBwYXJhIGNvbnRyb2xhciBvIHRlbXBvcml6YWRvclxyXG4gIHByaXZhdGUgb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICB0aGlzLm9uU2F2ZVRpbWVyJC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKVxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAvLyBRdWFuZG8gbyB0ZW1wb3JpemFkb3IgdGVybWluYXIsIGVtaXRhIG8gZXZlbnRvIG9uU2F2ZSBjb20gb3MgZGFkb3MgYSBzZXJlbSBzYWx2b3NcclxuICAgICAgdGhpcy5vblJvd0VkaXRTYXZlKCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgdGhpcy50YW1hbmhvVGVsYSA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG5cclxuICAgIHRoaXMuaXRlbXNDb250ZXh0TWVudSA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiAnRWRpdGFyIGxpbmhhJywgaWNvbjogJ3BpIHBpLWZ3IHBpLXBlbmNpbCcsIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm93RWRpdCcgKyB0aGlzLnNlbGVjdGVkUHJvZHVjdC5yb3dEYXRhW3RoaXMuY29uZmlnLmRhdGFLZXldKTtcclxuICAgICAgICAgIGlmIChlbGVtZW50ICYmICF0aGlzLmNvbmZpZy5kaXNhYmxlRWRpdFJvd0Z1bmN0aW9uPy4odGhpcy5zZWxlY3RlZFByb2R1Y3Qucm93RGF0YSkpIHtcclxuICAgICAgICAgICAgZWxlbWVudC5jbGljaygpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RXYXJuKFwiQSBlZGnDp8OjbyBkZXNzYSBsaW5oYSBlc3RhIGRlc2FiaWxpdGFkYVwiKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vblJvd0VkaXRJbml0KHRoaXMuc2VsZWN0ZWRQcm9kdWN0KVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogJ0NhbmNlbGFyIGVkacOnw6NvJywgaWNvbjogJ3BpIHBpLWZ3IHBpLXRpbWVzJywgY29tbWFuZDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb3dDYW5jZWwnICsgdGhpcy5zZWxlY3RlZFByb2R1Y3Qucm93RGF0YVt0aGlzLmNvbmZpZy5kYXRhS2V5XSk7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RXYXJuKFwiQSBlZGnDp8OjbyBkZXNzYSBsaW5oYSBlc3RhIGRlc2FiaWxpdGFkYVwiKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiAnU2FsdmFyIGVkacOnw6NvJywgaWNvbjogJ3BpIHBpLWZ3IHBpLXNhdmUnLCBjb21tYW5kOiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvd1NhdmUnICsgdGhpcy5zZWxlY3RlZFByb2R1Y3Qucm93RGF0YVt0aGlzLmNvbmZpZy5kYXRhS2V5XSk7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LmNsaWNrKCk7IC8vIERpc3BhcmEgdW0gZXZlbnRvIGRlIGNsaXF1ZSBubyBlbGVtZW50byBjb20gSUQgJ3Rlc3RlJ1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0V2FybihcIkEgZWRpw6fDo28gZGVzc2EgbGluaGEgZXN0YSBkZXNhYmlsaXRhZGFcIilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogJ0VudHJhciBlbSBtb2RvIGRlIGVkacOnw6NvJywgaWNvbjogJ3BpIHBpLWZ3IHBpLXBlbmNpbCcsIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNFZGl0aW5nID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogJ1NhaXIgZG8gbW9kbyBkZSBlZGnDp8OjbycsIGljb246ICdwaSBwaS1mdyBwaS1wZW5jaWwnLCBjb21tYW5kOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzRWRpdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuaXRlbXNQYXJhU2FsdmFtZW50by5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICB0aGlzLm9uUm93RWRpdFNhdmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG5cclxuXHJcbiAgICAvLyBTdWJzY3JldmUtc2UgYW8gc3VqZWl0byBvblNhdmVUaW1lciRcclxuXHJcblxyXG4gIH1cclxuICBvdmVycmlkZSBhZGp1c3RUYWJsZVNpemUoKXtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgLy8gQ29tcGxldGEgbyBzdWplaXRvIG9uRGVzdHJveSRcclxuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcclxuICAgIC8vIFNlIGhvdXZlciB1bSB0ZW1wb3JpemFkb3IgZW0gZXhlY3XDp8OjbywgcGFyZS1vXHJcbiAgICBpZiAodGhpcy50aW1lclN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIC8vIEFww7NzIHBhcmFyIG8gdGVtcG9yaXphZG9yLCBjaGFtZSBvblNhdmUgZGlyZXRhbWVudGUgcGFyYSBzYWx2YXIgb3MgZGFkb3NcclxuICAgICAgdGhpcy5vblJvd0VkaXRTYXZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLml0ZW1zQ29udGV4dE1lbnVbMF0udmlzaWJsZSA9IHRoaXMuZWRpdE1vZGUgPT0gJ3JvdycgJiYgIXRoaXMuc2VsZWN0ZWRQcm9kdWN0LmVkaXRpbmcgJiYgdGhpcy5pc0VkaXRhYmxlVGFibGUoKSAhPT0gZmFsc2U7XHJcbiAgICB0aGlzLml0ZW1zQ29udGV4dE1lbnVbMV0udmlzaWJsZSA9IHRoaXMuZWRpdE1vZGUgPT0gJ3JvdycgJiYgdGhpcy5zZWxlY3RlZFByb2R1Y3QuZWRpdGluZyAmJiB0aGlzLmlzRWRpdGFibGVUYWJsZSgpICE9PSBmYWxzZTtcclxuICAgIHRoaXMuaXRlbXNDb250ZXh0TWVudVsyXS52aXNpYmxlID0gdGhpcy5lZGl0TW9kZSA9PSAncm93JyAmJiB0aGlzLnNlbGVjdGVkUHJvZHVjdC5lZGl0aW5nICYmIHRoaXMuaXNFZGl0YWJsZVRhYmxlKCkgIT09IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuaXRlbXNDb250ZXh0TWVudVszXS52aXNpYmxlID0gdGhpcy5lZGl0TW9kZSA9PSAnY2VsbCcgJiYgIXRoaXMuaXNFZGl0aW5nO1xyXG4gICAgdGhpcy5pdGVtc0NvbnRleHRNZW51WzRdLnZpc2libGUgPSB0aGlzLmVkaXRNb2RlID09ICdjZWxsJyAmJiB0aGlzLmlzRWRpdGluZztcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgZGJDbGlja0VkaXQoKSB7XHJcblxyXG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb3dFZGl0JyArIHRoaXMuc2VsZWN0ZWRJdGVtW3RoaXMuY29uZmlnLmRhdGFLZXldKTtcclxuICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgIGVsZW1lbnQuY2xpY2soKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmVkaXRNb2RlID09ICdyb3cnKVxyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS50b2FzdFdhcm4oXCJBIGVkacOnw6NvIGRlc3NhIGxpbmhhIGVzdGEgZGVzYWJpbGl0YWRhXCIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1Jvd1NlbGVjdGFibGUoZXZlbnQ6IGFueSkge1xyXG4gICAgcmV0dXJuICF0aGlzLmlzRGlzYWJsZWRDaGVja2JveChldmVudC5kYXRhKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIC8vQ2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgbGlmZWN5Y2xlIGhvb2suIFVzZSBpdCB0byBpbmplY3QgZGVwZW5kZW5jaWVzLCBidXQgYXZvaWQgYW55IHNlcmlvdXMgd29yayBoZXJlLlxyXG4gICAgLy9BZGQgJyR7aW1wbGVtZW50cyBPbkNoYW5nZXN9JyB0byB0aGUgY2xhc3MuXHJcbiAgICBpZiAoY2hhbmdlc1snc2V0Q29uZmlnJ10gJiYgdGhpcy5jb25maWcpIHtcclxuXHJcbiAgICAgIHRoaXMuY29uZmlnLmNvbHVtbnMuZm9yRWFjaCgoZTogVGFibGVFZGl0Q29uZmlnQ29sdW1uKSA9PiB7XHJcbiAgICAgICAgaWYgKGUuZmllbGRDb250cm9sVHlwZSA9PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgICAgICB0aGlzLmxpc3RhckRyb3AoZS5maWVsZERyb3BEb3duQ29udHJvbD8uZmllbGRDb250cm9sRHJvcGRvd25TZXJ2aWNlLCBlKVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIGNyaWFyTWVudXNNb2RhbChkYXRhOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5hY3Rpb25zICYmIGRhdGEpIHtcclxuICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgdGhpcy5jb25maWcuYWN0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IG1lbnVJbnNlcnQgPSBtYXBUb01lbnVJdGVtKGFjdGlvbiwgZGF0YSk7XHJcblxyXG4gICAgICAgIGxldCBpdGVtID0gdGhpcy5tZW51SXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICAgeCA9PiB4LmNvbW1hbmQgPT0gbWVudUluc2VydC5jb21tYW5kXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID09IDApIHRoaXMubWVudUl0ZW1zLnB1c2gobWVudUluc2VydCk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC5sYWJlbCAhPSBpdGVtWzBdLmxhYmVsKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKG1lbnVJbnNlcnQudmlzaWJsZSAhPSBpdGVtWzBdLnZpc2libGUpIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5tZW51SXRlbXMuaW5kZXhPZihpdGVtWzBdKTtcclxuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC5kaXNhYmxlZCAhPSBpdGVtWzBdLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJvd0VkaXRJbml0KHJvd0RhdGE6IGFueSkge1xyXG4gICAgdGhpcy5jbG9uZWREYXRhU291cmNlW3Jvd0RhdGEuaWQgYXMgc3RyaW5nXSA9IHsgLi4ucm93RGF0YSB9O1xyXG4gIH1cclxuXHJcbiAgb25FZGl0SW5pdChldmVudDE6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuaXNFZGl0aW5nKSB0aGlzLml0ZW1Jbml0aWFsU3RhdGUgPSB7IC4uLmV2ZW50MS5kYXRhIH1cclxuICB9XHJcblxyXG4gIG9uRWRpdENvbXBsZXRlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmlzRWRpdGluZykge1xyXG4gICAgICBpZiAodGhpcy5pdGVtc1BhcmFTYWx2YW1lbnRvLmxlbmd0aCA9PT0gMCB8fCBcclxuICAgICAgICB0aGlzLml0ZW1zUGFyYVNhbHZhbWVudG9bdGhpcy5pdGVtc1BhcmFTYWx2YW1lbnRvLmxlbmd0aCAtIDFdLmluZGV4ID09PSBldmVudC5pbmRleCkge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChldmVudC5kYXRhICYmIHRoaXMuaXRlbUluaXRpYWxTdGF0ZSAmJlxyXG4gICAgICAgICAgZXZlbnQuZGF0YS5oYXNPd25Qcm9wZXJ0eShldmVudC5maWVsZCkgJiYgXHJcbiAgICAgICAgICB0aGlzLml0ZW1Jbml0aWFsU3RhdGUuaGFzT3duUHJvcGVydHkoZXZlbnQuZmllbGQpICYmXHJcbiAgICAgICAgICBldmVudC5kYXRhW2V2ZW50LmZpZWxkXSAhPSB0aGlzLml0ZW1Jbml0aWFsU3RhdGVbZXZlbnQuZmllbGRdKSB7XHJcbiAgICAgICAgICB0aGlzLmFkaWNpb25hckNlbHVsYVBhcmFTYWx2YXIoZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm9uUm93RWRpdFNhdmUoKTtcclxuICAgICAgICB0aGlzLmFkaWNpb25hckNlbHVsYVBhcmFTYWx2YXIoZXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGljaW9uYXJDZWx1bGFQYXJhU2FsdmFyKGl0ZW06IGFueSkge1xyXG4gICAgLy8gQWRpY2lvbmEgb3MgZGFkb3MgZWRpdGFkb3MgYW8gYXJyYXkgcGFyYSBzYWx2YW1lbnRvXHJcbiAgICB0aGlzLml0ZW1zUGFyYVNhbHZhbWVudG8ucHVzaChpdGVtKTtcclxuXHJcbiAgICAvLyBTZSBob3V2ZXIgdW0gdGVtcG9yaXphZG9yIGVtIGV4ZWN1w6fDo28sIGxpbXBlLW8gZSByZWluaWNpZVxyXG4gICAgaWYgKHRoaXMudGltZXJTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEluaWNpYSBvIHRlbXBvcml6YWRvciBwYXJhIGVtaXRpciBvblNhdmUgYXDDs3MgNSBzZWd1bmRvc1xyXG4gICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbiA9IHRpbWVyKDUwMDApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMub25TYXZlVGltZXIkLm5leHQoKTsgLy8gRW1pdGEgb25TYXZlIGFww7NzIDUgc2VndW5kb3NcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uUm93RWRpdFNhdmUoKSB7XHJcbiAgICBpZiAodGhpcy5pdGVtc1BhcmFTYWx2YW1lbnRvLmxlbmd0aCA9PSAwIHx8ICF0aGlzLml0ZW1zUGFyYVNhbHZhbWVudG9bMF0uZGF0YSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IG9iamV0b1JlZmxldGlkbzogYW55ID0geyAuLi50aGlzLml0ZW1zUGFyYVNhbHZhbWVudG9bMF0uZGF0YSB9O1xyXG4gICAgLy8gUmVmbGV0ZSBhcyBhbHRlcmHDp8O1ZXMgZW0gdW0gb2JqZXRvXHJcbiAgICB0aGlzLml0ZW1zUGFyYVNhbHZhbWVudG8uZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaWYgKCFpdGVtLmRhdGEpIHJldHVybjsgLy8gVmVyaWZpY2Egc2UgbyBpdGVtIHRlbSBhIHByb3ByaWVkYWRlICdkYXRhJ1xyXG4gICAgICBjb25zdCBjaGF2ZSA9IGl0ZW0uZmllbGRcclxuICAgICAgY29uc3QgdmFsb3IgPSBpdGVtLmRhdGFbY2hhdmVdO1xyXG4gICAgICBvYmpldG9SZWZsZXRpZG9bY2hhdmVdID0gdmFsb3I7XHJcbiAgICB9KTtcclxuICAgIHRoaXMub25TYXZlLmVtaXQob2JqZXRvUmVmbGV0aWRvKVxyXG4gICAgdGhpcy5pdGVtc1BhcmFTYWx2YW1lbnRvID0gW107XHJcbiAgfVxyXG5cclxuXHJcbiAgb25Sb3dFZGl0Q2FuY2VsKHByb2R1Y3Q6IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5kYXRhU291cmNlW2luZGV4XSA9IHRoaXMuY2xvbmVkRGF0YVNvdXJjZVtwcm9kdWN0LmlkIGFzIHN0cmluZ107XHJcbiAgICBkZWxldGUgdGhpcy5jbG9uZWREYXRhU291cmNlW3Byb2R1Y3QuaWQgYXMgc3RyaW5nXTtcclxuICB9XHJcblxyXG4gIGxpc3RhckRyb3Aoc2VydmljZTogYW55LCBjb2w6IGFueSwgaW5kdG9kb3M/OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbmZpZy5jb2x1bW5zPy5pbmRleE9mKGNvbCk7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuY29sdW1uc1tjb2x1bW5dLmZpZWxkRHJvcERvd25Db250cm9sPy5maWVsZENvbnRyb2xEcm9wZG93blNvdXJjZVxyXG4gIH1cclxuXHJcbiAgcmV0b3JuYURlc2NyaWNhb0Ryb3Aocm93RGF0YTogYW55W10sIGNvbDogVGFibGVFZGl0Q29uZmlnQ29sdW1uKSB7XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IGNvbC5maWVsZERyb3BEb3duQ29udHJvbD8uZmllbGRDb250cm9sRHJvcGRvd25Tb3VyY2VcclxuICAgIGNvbnN0IGlkb2JqZXRvID0gY29sLmZpZWxkRHJvcERvd25Db250cm9sPy5pZG9iamV0b1xyXG4gICAgY29uc3QgZGVzY3JpY2Fvb2JqZXRvID0gY29sLmZpZWxkRHJvcERvd25Db250cm9sPy5kZXNjcmljYW9vYmpldG9cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGNvbnN0IHZhbG9yQXR1YWwgPSByb3dEYXRhW2NvbC5maWVsZF1cclxuXHJcbiAgICBpZiAoZGF0YSAmJiBpZG9iamV0byAmJiBkZXNjcmljYW9vYmpldG8pXHJcbiAgICAgIHJldHVybiBkYXRhPy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW1baWRvYmpldG9dID09IHZhbG9yQXR1YWwpW2Rlc2NyaWNhb29iamV0b11cclxuICAgIGVsc2UgcmV0dXJuICdDYXJyZWdhbmRvJ1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBpc0Rpc2FibGVFZGl0Um93RnVuY3Rpb24ocm93RGF0YTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZGlzYWJsZUVkaXRSb3dGdW5jdGlvbiA/IHRoaXMuY29uZmlnLmRpc2FibGVFZGl0Um93RnVuY3Rpb24ocm93RGF0YSkgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzRGlzYWJsZUVkaXRSb3dDZWxsRnVuY3Rpb24ocm93RGF0YTogYW55LCBjb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbC5kaXNhYmxlRWRpdFJvd0NlbGxGdW5jdGlvbiA/IGNvbC5kaXNhYmxlRWRpdFJvd0NlbGxGdW5jdGlvbihyb3dEYXRhKSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNFZGl0YWJsZVRhYmxlKCk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgIGlmICghdGhpcy5jb25maWcuY29sdW1ucylcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNvbHVtbnMuc29tZSgoY29sdW1uOiBhbnkpID0+ICdmaWVsZENvbnRyb2xUeXBlJyBpbiBjb2x1bW4pO1xyXG4gIH1cclxuXHJcblxyXG4gIHRyYW5zZm9ybVZhbHVlRHJvcCh2YWx1ZTogYW55LCBjb2w6IFRhYmxlQ29uZmlnQ29sdW1uKSB7XHJcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICBpZiAoIWNvbC5waXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzd2l0Y2ggKGNvbC5waXBlKSB7XHJcbiAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsICdkZC9NTS95eXl5Jyk7XHJcbiAgICAgICAgY2FzZSAnZGF0ZXRpbWUnOlxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCAnZGQvTU0veXl5eSBoaDptbScpO1xyXG4gICAgICAgIGNhc2UgJ2RlY2ltYWwnOlxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHZhbHVlLCAnMS4yLTInLCAncHQtQlInKTtcclxuICAgICAgICBjYXNlICdjcGZjbnBqJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNwZkNucGpQaXBlLnRyYW5zZm9ybSh2YWx1ZSk7XHJcbiAgICAgICAgY2FzZSAndGVsZWZvbmUnOlxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudGVsZWZvbmVQaXBlLnRyYW5zZm9ybSh2YWx1ZSk7XHJcbiAgICAgICAgY2FzZSAnY2FwaXRhbGl6ZSc6XHJcbiAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1DYXBpdGFsaXplKHZhbHVlKTtcclxuICAgICAgICBjYXNlICdtb25leSc6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRhclZhbG9yKHZhbHVlKTtcclxuICAgICAgICBjYXNlICdwZXJjZW50YWdlJzpcclxuICAgICAgICAgIHJldHVybiBgJHsgdmFsdWUgfSAlYDtcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIiBpZD1cInRhbWFuaG90YWJlbGFcIiBbc3R5bGUuZm9udC1zaXplXT1cIicxcHgnXCI+XHJcbiAgPHAtdG9hc3Q+PC9wLXRvYXN0PlxyXG5cclxuICA8cC1wYW5lbFxyXG4gICAgKm5nSWY9XCJmaWx0cm9zQXZhbmNhZG9zXCJcclxuICAgIGhlYWRlcj1cIkZpbHRyb3MgYXZhbsOnYWRvc1wiXHJcbiAgICBbdG9nZ2xlYWJsZV09XCJ0cnVlXCJcclxuICAgIFtjb2xsYXBzZWRdPVwidHJ1ZVwiXHJcbiAgICAoY29sbGFwc2VkQ2hhbmdlKT1cImNvbGxhcHNlZCA9ICFjb2xsYXBzZWRcIlxyXG4gICAgW3N0eWxlXT1cInsgJ21hcmdpbi1ib3R0b20nOiAnMnB4JyB9XCJcclxuICA+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyaWNvbnNcIj5cclxuICAgICAgPGkgKm5nSWY9XCIhY29sbGFwc2VkXCIgY2xhc3M9XCJwaSBwaS1maWx0ZXJcIj48L2k+XHJcbiAgICAgIDwhLS0gw41jb25lIHF1YW5kbyBvIHBhaW5lbCBlc3TDoSBhYmVydG8gLS0+XHJcbiAgICAgIDxpICpuZ0lmPVwiY29sbGFwc2VkXCIgY2xhc3M9XCJwaSBwaS1taW51c1wiPjwvaT5cclxuICAgICAgPCEtLSDDjWNvbmUgcXVhbmRvIG8gcGFpbmVsIGVzdMOhIGZlY2hhZG8gLS0+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIDwvcC1wYW5lbD5cclxuXHJcbiAgPHAtY29udGV4dE1lbnUgI2NtIFttb2RlbF09XCJpdGVtc0NvbnRleHRNZW51XCI+PC9wLWNvbnRleHRNZW51PlxyXG4gIDxwLXRhYmxlXHJcbiAgICAjdGVcclxuICAgIFtlZGl0TW9kZV09XCJlZGl0TW9kZVwiXHJcbiAgICAob25FZGl0Q29tcGxldGUpPVwib25FZGl0Q29tcGxldGUoJGV2ZW50KVwiXHJcbiAgICAob25FZGl0SW5pdCk9XCJvbkVkaXRJbml0KCRldmVudClcIlxyXG4gICAgW3Jlb3JkZXJhYmxlQ29sdW1uc109XCJjb25maWcucmVvcmRlcmFibGVDb2x1bW5zIHx8IGZhbHNlXCJcclxuICAgICpuZ0lmPVwiY29uZmlnXCJcclxuICAgIFt2YWx1ZV09XCJkYXRhU291cmNlXCJcclxuICAgIFtkYXRhS2V5XT1cImNvbmZpZy5kYXRhS2V5XCJcclxuICAgIFtjb2x1bW5zXT1cImNvbmZpZy5jb2x1bW5zXCJcclxuICAgIFtzY3JvbGxhYmxlXT1cInRydWVcIlxyXG4gICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgIFtzdHlsZUNsYXNzXT1cInNlbGVjdGVkU2l6ZS5jbGFzc1wiXHJcbiAgICBbKHNlbGVjdGlvbildPVwic2VsZWN0ZWRJdGVtc1wiXHJcbiAgICBbcm93U2VsZWN0YWJsZV09XCJpc1Jvd1NlbGVjdGFibGVcIlxyXG4gICAgW2dsb2JhbEZpbHRlckZpZWxkc109XCJnbG9iYWxGaWx0ZXJGaWVsZHNcIlxyXG4gICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICBbcGFnaW5hdG9yXT1cInBhZ2luYXRvclwiXHJcbiAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cInJvd3NQZXJQYWdlT3B0aW9uc1wiXHJcbiAgICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIlxyXG4gICAgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cIntmaXJzdH0gLSB7bGFzdH0gZGUge3RvdGFsUmVjb3Jkc31cIlxyXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICBbcm93SG92ZXJdPVwidHJ1ZVwiXHJcbiAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICBbbGF6eV09XCJjb25maWcubGF6eVwiXHJcbiAgICAob25MYXp5TG9hZCk9XCJwYWdpbmF0ZSgkZXZlbnQpXCJcclxuICAgIFtncm91cFJvd3NCeV09XCJjb25maWcuZmllbGRHcm91cFwiXHJcbiAgICBwYWdpbmF0b3JEcm9wZG93bkFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICBbc2hvd0ZpcnN0TGFzdEljb25dPVwic2hvd0ZpcnN0TGFzdEljb25cIlxyXG4gICAgW3BhZ2VMaW5rc109XCJwYWdlTGlua3NPcHRpb25zXCJcclxuICAgIFtzY3JvbGxhYmxlXT1cImlzVGFibGVTY3JvbGxhYmxlXCJcclxuICAgIFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0XCJcclxuICAgIFtyb3dUcmFja0J5XT1cInJvd1RyYWNrQnlcIlxyXG4gICAgWyhjb250ZXh0TWVudVNlbGVjdGlvbildPVwic2VsZWN0ZWRQcm9kdWN0XCJcclxuICAgIFtjb250ZXh0TWVudV09XCJpc0VkaXRhYmxlVGFibGUoKSA/IGNtIDogbnVsbFwiXHJcbiAgPlxyXG4gICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiICpuZ0lmPVwiY29uZmlnLmVuYWJsZUNhdGlvbiB8fCBlbmFibGVTaXplc1wiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ3JpZCBmb3JtZ3JpZCBwLWZsdWlkIGNvbC0xMlwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb25maWcudGl0bGVcIiBjbGFzcz1cInRleHQtbWQgZm9udC1ib2xkIG15LTNcIj5cclxuICAgICAgICAgICAge3sgY29uZmlnLnRpdGxlIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb25maWcuc3VidGl0bGVcIiBjbGFzcz1cInRleHQtc20gbWItNCBmb250LW1lZGl1bVwiPlxyXG4gICAgICAgICAgICB7eyBjb25maWcuc3VidGl0bGUgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIG1kOmNvbC02IGxnOmNvbC00IHt7XHJcbiAgICAgICAgICAgIHRhbWFuaG9UZWxhIDwgNzY4ID8gJ2NvbC0xMCcgOiAnY29sLTEyJ1xyXG4gICAgICAgICAgfX0gbXQtMSBtYi0yIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb25maWcuZW5hYmxlRmlsdGVyXCIgY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcclxuICAgICAgICAgICAgICBwQXV0b0ZvY3VzXHJcbiAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgKGlucHV0KT1cIm9uR2xvYmFsRmlsdGVyKHRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBlc3F1aXNhci4uLlwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJoLTJyZW1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgIDwhLS0gRklYTUU6IE9ww6fDo28gMSAgLS0+XHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJzaXplcy1jb250cm9scyBtbC0yXCIgKm5nSWY9XCJpc1Nob3dTaXplc1wiPlxyXG4gICAgICAgICAgICA8cC1zZWxlY3RCdXR0b25cclxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNpemVzXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTaXplXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7J2Rpc3BsYXknOiAnZmxleCd9XCJcclxuICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGlkPVwiYnRuLXNpemVzXCJcclxuICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgIFtwVG9vbHRpcF09XCJpc1Nob3dTaXplcyA/ICdFc2NvbmRlciBjb250cm9sZXMgZGUgdGFtYW5obycgOiAnTW9zdHJhciBjb250cm9sZXMgZGUgdGFtYW5obydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb25Mb3RlQnRucyBwLWJ1dHRvbi1yYWlzZWQgcC1idXR0b24tdGV4dFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiaXNTaG93U2l6ZXMgPSAhaXNTaG93U2l6ZXNcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuICBzdHlsZT1cImZvbnQtc2l6ZTogMC44cmVtO1wiIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgIDxzcGFuICBzdHlsZT1cImZvbnQtc2l6ZTogMC43cmVtO1wiPlxyXG4gICAgICAgICAgICBBXHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIEFcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgICAgPCEtLSBGSVhNRTogT3DDp8OjbyAyICAtLT5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbmFibGVTaXplc1wiIGNsYXNzPVwic2l6ZXMtY29udHJvbHMgbWwtMlwiPlxyXG4gICAgICAgICAgICA8IS0tIDxwLXNwbGl0QnV0dG9uXHJcbiAgICAgICAgICAgICAgbGFiZWw9XCJhQVwiXHJcbiAgICAgICAgICAgICAgW21vZGVsXT1cInNpemVzXCJcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwidGVzdGVcIlxyXG4gICAgICAgICAgICAgIFttZW51U3R5bGVdPVwieydmb250LXNpemUnOiAnMC43cmVtJ31cIlxyXG5cclxuICAgICAgICAgICAgICBuZ01vZGVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9wLXNwbGl0QnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPCEtLSA8cC1idXR0b24gIGljb249XCJwaSBwaS1lbGxpcHNpcy12XCIvPiAtLT5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBpZD1cImFjdGlvbkxvdGVCdG5zXCJcclxuICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1lbnUudG9nZ2xlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uTG90ZUJ0bnMgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXRleHRcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogIzFkYTc1MDsgY29sb3I6ICNmZmY7IGRpc3BsYXk6IGZsZXhcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzXCI+QTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbWRcIj5BPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxwLXRpZXJlZE1lbnVcclxuICAgICAgICAgICAgICBbc3R5bGVdPVwieyAnZm9udC1zaXplJzogJzAuN3JlbScgfVwiXHJcbiAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cIm1lbnVTaXplc1wiXHJcbiAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAjbWVudVxyXG4gICAgICAgICAgICAgIFttb2RlbF09XCJzaXplc1wiXHJcbiAgICAgICAgICAgICAgW3BvcHVwXT1cInRydWVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtIHBUZW1wbGF0ZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBmbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlciBwbC0xIG0tMiBtZW51LXNpemVzXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIml0ZW0uY29tbWFuZCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGhpcy5zZWxlY3RlZFNpemUuc2l6ZSAhPSBpdGVtLnNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFnXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCInI0VBRUFFQSdcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRoaXMuc2VsZWN0ZWRTaXplLnNpemUgPT0gaXRlbS5zaXplXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiJyMxREE3NTAnXCJcclxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9wLXRpZXJlZE1lbnU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gRklYTUU6IE9ww6fDo28gMyAgLS0+XHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJzaXplcy1jb250cm9scyBtbC0yXCIgc3R5bGU9XCJ0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwcHgsIC0xNXB4KTtcIiA+XHJcbiAgICAgICAgICAgIDxwLXNwZWVkRGlhbFxyXG4gICAgICAgICAgICAgIFttb2RlbF09XCJzaXplc1wiXHJcbiAgICAgICAgICAgICAgc2hvd0ljb249XCJmb3JtYXRfc2l6ZVwiXHJcbiAgICAgICAgICAgICAgW21hc2tdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgZGlyZWN0aW9uPVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgIGJ1dHRvbkNsYXNzTmFtZT1cIml0ZW0tY2lyY2xlXCJcclxuICAgICAgICAgICAgPlxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtIHBUZW1wbGF0ZT1cIml0ZW1cIiA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY2lyY2xlIGN1cnNvci1wb2ludGVyXHJcblxyXG4gICAgICAgICAgICAgIHNoYWRvdy0yIGhvdmVyOnNoYWRvdy04XHJcblxyXG4gICAgICAgICAgICAgIFwiIChjbGljayk9XCJpdGVtLmNvbW1hbmQoKVwiPlxyXG4gICAgICAgICAgICAgICAge3tpdGVtLmxhYmVsfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICA8L3Atc3BlZWREaWFsPlxyXG4gICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzRWRpdGluZ1wiIGNsYXNzPVwidGV4dC1hdmlzb1wiPlxyXG4gICAgICAgICAgVGFiZWxhIGVtIG1vZG8gZGUgZWRpw6fDo29cclxuICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGNvbC0xIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb25maWcuYWN0aW9uc0xvdGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0bnMtb3B0aW9ucyBmbGV4IGZsZXgtcm93XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGlkPVwiYWN0aW9uTG90ZUJ0bnNcIlxyXG4gICAgICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgIWlzRWRpdGluZyAmJlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBhY3Rpb24uc2hvd0Fjb2VzTG90ZSkgJiZcclxuICAgICAgICAgICAgICAgIGV4aWJpckNhbXBvKGFjdGlvbiwgdGhpcy5hY3Rpb24pXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbkxvdGVCdG5zIGJvcmRlci1ub25lXCJcclxuICAgICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICMxZGE3NTBcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb24/LmNvbW1hbmQoKTsgYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIlxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJnZXRPckV4ZWN1dGUoYWN0aW9uLnRvb2x0aXAsIHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20nXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2V0T3JFeGVjdXRlKGFjdGlvbi5kaXNhYmxlZCwgc2VsZWN0ZWRJdGVtcylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiB3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgZ2V0T3JFeGVjdXRlKGFjdGlvbi5pY29uLCBzZWxlY3RlZEl0ZW1zKSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNFZGl0YWJsZVRhYmxlKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0bnMtb3B0aW9uc1wiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAnN3B4JyB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0aGlzLmlzRWRpdGluZyA9ICF0aGlzLmlzRWRpdGluZ1wiXHJcbiAgICAgICAgICAgICAgaWQ9XCJhY3Rpb25Mb3RlQnRuc1wiXHJcbiAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCIhaXNFZGl0aW5nID8gJ0hhYmlsaXRhciBFZGnDp8OjbycgOiAnRGVzYWJpbGl0YXIgRWRpw6fDo28nXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjMWRhNzUwOyBjb2xvcjogI2ZmZlwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25Mb3RlQnRucyBwLWJ1dHRvbi1yYWlzZWQgcC1idXR0b24tdGV4dFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gZWRpdF9zcXVhcmUgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICBzdHlsZT1cIndpZHRoOiA0cmVtOyBib3JkZXItbGVmdDogc29saWQgNHB4IHRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmVuYWJsZVNlbGVjdCAmJiAhaXNFZGl0aW5nXCJcclxuICAgICAgICAgIFtjbGFzc109XCJzZWxlY3RlZFNpemUuY2xhc3MgKyAndGgnXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8cC10YWJsZUhlYWRlckNoZWNrYm94XHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiXHJcbiAgICAgICAgICA+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxyXG4gICAgICAgICAgW3BTb3J0YWJsZUNvbHVtbl09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW3BTb3J0YWJsZUNvbHVtbkRpc2FibGVkXT1cImNvbC5zb3J0YWJsZSA9PT0gZmFsc2VcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2wud2lkdGggKiBzZWxlY3RlZFNpemUuc2l6ZSArICdweCdcIlxyXG4gICAgICAgICAgcFJlb3JkZXJhYmxlQ29sdW1uXHJcbiAgICAgICAgICBbY2xhc3NdPVwic2VsZWN0ZWRTaXplLmNsYXNzICsgJ3RoJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgY2VudHJhbGl6YXJDb2x1bmFzKGNvbCkgJiYgYWxpZ25Db2x1bmFzSGVhZGVyKGNvbCkgPT0gJydcclxuICAgICAgICAgICAgICAgID8gJ2ZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWNlbnRlcidcclxuICAgICAgICAgICAgICAgIDogJ2ZsZXggZmxleC1yb3cnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJhbGlnbkNvbHVuYXNIZWFkZXIoY29sKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxwLXNvcnRJY29uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuc29ydGFibGUgPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgIFtmaWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxMHB4XCJcclxuICAgICAgICAgICAgPjwvcC1zb3J0SWNvbj5cclxuXHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuaGVhZGVyVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiY29sLmhlYWRlclRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgID5pbmZvPC9zcGFuXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICAqbmdJZj1cIiFpc0VkaXRpbmcgJiYgY29uZmlnLmFjdGlvbnMgJiYgY29uZmlnLmFjdGlvbnMubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgPjwvdGg+XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICAqbmdJZj1cImlzRWRpdGFibGVUYWJsZSgpICYmIHRoaXMuZWRpdE1vZGUgPT0gJ3JvdydcIlxyXG4gICAgICAgICAgaWQ9XCJ0aC1lZGl0XCJcclxuICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDIwcHhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEVkaXRhclxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgIHBUZW1wbGF0ZT1cImJvZHlcIlxyXG4gICAgICBsZXQtcm93RGF0YVxyXG4gICAgICBsZXQtZWRpdGluZz1cImVkaXRpbmdcIlxyXG4gICAgICBsZXQtcmk9XCJyb3dJbmRleFwiXHJcbiAgICAgIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXHJcbiAgICAgIGxldC1yb3dncm91cD1cInJvd2dyb3VwXCJcclxuICAgICAgbGV0LXJvd3NwYW49XCJyb3dzcGFuXCJcclxuICAgID5cclxuICAgICAgPHRyXHJcbiAgICAgICAgW3BFZGl0YWJsZVJvd109XCJyb3dEYXRhXCJcclxuICAgICAgICBbcEVkaXRhYmxlUm93RGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtwQ29udGV4dE1lbnVSb3ddPVwie3Jvd0RhdGEsIGVkaXRpbmd9XCJcclxuICAgICAgICBbY2xhc3NdPVwic2VsZWN0ZWRTaXplLmNsYXNzICsgJy10cidcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHRkXHJcbiAgICAgICAgICAqbmdJZj1cImNvbmZpZy5lbmFibGVTZWxlY3QgJiYgIWlzRWRpdGluZ1wiXHJcbiAgICAgICAgICBbc3R5bGVdPVwiYXBwbHlTdHlsZShyb3dEYXRhLCB7IGZpZWxkOiAnY2hlY2stYm94JywgaGVhZGVyOiAnJyB9KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPCEtLTxwLXRhYmxlQ2hlY2tib3ggKm5nSWY9XCJpc1Zpc2libGVDaGVja2JveChyb3dEYXRhKVwiLS0+XHJcbiAgICAgICAgICA8cC10YWJsZUNoZWNrYm94XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2stZWRpdC1saXN0XCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cInJvd0RhdGFcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZENoZWNrYm94KHJvd0RhdGEpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgID48L3AtdGFibGVDaGVja2JveD5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgPCEtLSBGSVhNRTogVGVzdGFyIGEgaW1wbGVtZW50YcOnw6NvIGFiYWl4byBlIG1lc2FjbGFyIGFzIGR1YXMgZm9ybWFzIC0tPlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVJbnB1dCBsZXQtcm93RGF0YT1cInJvd0RhdGFcIiBsZXQtY29sPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0VkaXRpbmc7IGVsc2UgdGVtcGxhdGV2aXN1YWxlZGljYW9cIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb2wuZmllbGRDb250cm9sVHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RleHQnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aFwiIGNsYXNzPVwiZ3JpZCBmb3JtZ3JpZCBwLWZsdWlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGt2LWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVFZGl0Um93Q2VsbEZ1bmN0aW9uKHJvd0RhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsQ29udHJvbCBjb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dEYXRhW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImNvbC5yZXF1aXJlZCA/PyB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9rdi1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aFwiIGNsYXNzPVwiZ3JpZCBmb3JtZ3JpZCBwLWZsdWlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGt2LWlucHV0LW51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZUVkaXRSb3dDZWxsRnVuY3Rpb24ocm93RGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxDb250cm9sIGNvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd0RhdGFbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sLnJlcXVpcmVkID8/IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2t2LWlucHV0LW51bWJlcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbWFzaydcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoXCIgY2xhc3M9XCJncmlkIGZvcm1ncmlkIHAtZmx1aWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8a3YtaW5wdXQtbWFza1xyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZUVkaXRSb3dDZWxsRnVuY3Rpb24ocm93RGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxDb250cm9sIGNvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWFza109XCJjb2wubWFza1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sLnJlcXVpcmVkID8/IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dEYXRhW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2t2LWlucHV0LW1hc2s+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3N3aXRjaCdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoXCIgY2xhc3M9XCJncmlkIGZvcm1ncmlkIHAtZmx1aWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8a3Ytc3dpdGNoXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlRWRpdFJvd0NlbGxGdW5jdGlvbihyb3dEYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2VsbENvbnRyb2wgY29sXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93RGF0YVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9rdi1zd2l0Y2g+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NhbGVuZGFyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3JpZCBmb3JtZ3JpZCBwLWZsdWlkXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8a3YtaW5wdXQtY2FsZW5kYXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsQ29udHJvbCBjb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd0RhdGFbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9rdi1pbnB1dC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkcm9wZG93bidcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoXCIgY2xhc3M9XCJncmlkIGZvcm1ncmlkIHAtZmx1aWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93blxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZUVkaXRSb3dDZWxsRnVuY3Rpb24ocm93RGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxDb250cm9sIGNvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3BhbmVsU3R5bGVdPVwieyAnZm9udC1zaXplJzogJzAuNzVyZW0nIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cImNvbC5maWVsZERyb3BEb3duQ29udHJvbC5kZXNjcmljYW9vYmpldG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW29wdGlvblZhbHVlXT1cImNvbC5maWVsZERyb3BEb3duQ29udHJvbC5pZG9iamV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sLmZpZWxkRHJvcERvd25Db250cm9sLmZpZWxkQ29udHJvbERyb3Bkb3duU291cmNlXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dEYXRhW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZXZpc3VhbGVkaWNhbz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICB0ZW1wbGF0ZU91dHB1dDtcclxuICAgICAgICAgICAgICAgICAgY29udGV4dDogeyByb3dEYXRhOiByb3dEYXRhLCBjb2w6IGNvbCB9XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZU91dHB1dCBsZXQtcm93RGF0YT1cInJvd0RhdGFcIiBsZXQtY29sPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbC5maWVsZENvbnRyb2xUeXBlXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Ryb3Bkb3duJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd0RhdGFbY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyB0cmFuc2Zvcm1WYWx1ZURyb3AocmV0b3JuYURlc2NyaWNhb0Ryb3Aocm93RGF0YSwgY29sKSwgY29sKSB9fVxyXG4gICAgICAgICAgICAgICAgICA8IS0tIHt7cm93RGF0YVtjb2wuZmllbGRdfX0gLS0+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3N3aXRjaCdcIj5cclxuICAgICAgICAgICAgICAgIDxrdi1zd2l0Y2hcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dEYXRhW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICA+PC9rdi1zd2l0Y2g+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjYWxlbmRhcidcIj5cclxuICAgICAgICAgICAgICAgIHt7IHJvd0RhdGFbY29sLmZpZWxkXSB8IGRhdGUgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ21hc2snXCI+XHJcbiAgICAgICAgICAgICAgICB7eyByb3dEYXRhW2NvbC5maWVsZF0gfCBtYXNrIDogY29sLm1hc2sgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICAgICAge3sgIHRyYW5zZm9ybVZhbHVlKHJvd0RhdGEsIGNvbCkgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAqbmdJZj1cImVkaXRNb2RlID09ICdjZWxsJyAmJiBjb2wuZmllbGRDb250cm9sVHlwZVwiXHJcbiAgICAgICAgICAgIFtwRWRpdGFibGVDb2x1bW5dPVwicm93RGF0YVwiXHJcbiAgICAgICAgICAgIFtwRWRpdGFibGVDb2x1bW5GaWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICBbcEVkaXRhYmxlQ29sdW1uUm93SW5kZXhdPVwicm93RGF0YVtjb25maWcuZGF0YUtleV1cIlxyXG4gICAgICAgICAgICBbaWRdPVwiJ3Jvd1RhYmxlJyArIHJvd0RhdGFbY29uZmlnLmRhdGFLZXldXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUl0ZW0ocm93RGF0YSlcIlxyXG4gICAgICAgICAgICAoZGJsY2xpY2spPVwiZGJDbGlja0VkaXQoKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwicm93VGFibGVcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiXHJcbiAgICAgICAgICAgICAgYXBwbHlTdHlsZShyb3dEYXRhLCBjb2wpICtcclxuICAgICAgICAgICAgICBjZW50cmFsaXphckNvbHVuYXMoY29sKSArXHJcbiAgICAgICAgICAgICAgYWxpZ25Db2x1bmFzKGNvbClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgW3BUb29sdGlwXT1cInJldHVyblRvb2x0aXBSb3cocm93RGF0YSwgY29sKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxwLWNlbGxFZGl0b3I+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlSW5wdXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHJvd0RhdGE6IHJvd0RhdGEsIGNvbDogY29sIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJvdXRwdXRcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZU91dHB1dDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgcm93RGF0YTogcm93RGF0YSwgY29sOiBjb2wgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gPG5nLXRlbXBsYXRlICpuZ0lmPVwiIWlzRWRpdGluZ1wiIHBUZW1wbGF0ZT1cImlucHV0XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVJbnB1dDsgY29udGV4dDogeyByb3dEYXRhOiByb3dEYXRhLCBjb2w6IGNvbCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNFZGl0aW5nXCIgcFRlbXBsYXRlPVwib3V0cHV0XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVPdXRwdXQ7IGNvbnRleHQ6IHsgcm93RGF0YTogcm93RGF0YSwgY29sOiBjb2wgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+IC0tPlxyXG4gICAgICAgICAgICA8L3AtY2VsbEVkaXRvcj5cclxuICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgPCEtLSBOT1RFOiBFZGnDp8OjbyBkZSBsaW5oYSAtLT5cclxuICAgICAgICAgIDwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcbiAgICAgICAgICA8IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG4gICAgICAgICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuXHJcbiAgICAgICAgICA8IS0tIENlbHVsYSBxdWUgYXJtYXplbmEgb3MgY29udHJvbGVzIGRlIGVkacOnw6NvIHBhcmEgb3MgY2FtcG9zIC0tPlxyXG4gICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZmFsc2UgJiYgY29sLmZpZWxkQ29udHJvbFR5cGUgJiYgZWRpdE1vZGUgPT0gJ3JvdydcIlxyXG4gICAgICAgICAgICBbaWRdPVwiJ3Jvd1RhYmxlJyArIHJvd0RhdGFbY29uZmlnLmRhdGFLZXldXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUl0ZW0ocm93RGF0YSlcIlxyXG4gICAgICAgICAgICAoZGJsY2xpY2spPVwiZGJDbGlja0VkaXQoKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwicm93VGFibGVcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiXHJcbiAgICAgICAgICAgICAgYXBwbHlTdHlsZShyb3dEYXRhLCBjb2wpICtcclxuICAgICAgICAgICAgICBjZW50cmFsaXphckNvbHVuYXMoY29sKSArXHJcbiAgICAgICAgICAgICAgYWxpZ25Db2x1bmFzKGNvbClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgW3BUb29sdGlwXT1cInJldHVyblRvb2x0aXBSb3cocm93RGF0YSwgY29sKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxwLWNlbGxFZGl0b3JcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IHN3aXRjaDogY29sLmZpZWxkQ29udHJvbFR5cGUgPT0gJ3N3aXRjaCcgfVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUlucHV0O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgcm93RGF0YTogcm93RGF0YSwgY29sOiBjb2wgfVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJvdXRwdXRcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZU91dHB1dDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHJvd0RhdGE6IHJvd0RhdGEsIGNvbDogY29sIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3AtY2VsbEVkaXRvcj5cclxuICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuICAgICAgICAgIDwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcbiAgICAgICAgICA8IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG5cclxuICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAqbmdJZj1cInJvd2dyb3VwICYmICFjb2wudGVtcGxhdGVcIlxyXG4gICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cInJvd2dyb3VwICYmIGNvbC5ncm91cGVkID8gcm93c3BhbiA6IG51bGxcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInJvd1RhYmxlXCJcclxuICAgICAgICAgICAgW3N0eWxlXT1cIlxyXG4gICAgICAgICAgICAgIGFwcGx5U3R5bGUocm93RGF0YSwgY29sKSArXHJcbiAgICAgICAgICAgICAgY2VudHJhbGl6YXJDb2x1bmFzKGNvbCkgK1xyXG4gICAgICAgICAgICAgIGFsaWduQ29sdW5hcyhjb2wpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXR1cm5Ub29sdGlwUm93KHJvd0RhdGEsIGNvbClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmhlYWRlciB9fTo8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWlzQm9vbGVhbkZpZWxkKHJvd0RhdGEsIGNvbCk7IGVsc2UgYm9vbGVhbkZpZWxkXCJcclxuICAgICAgICAgICAgICBbY2xhc3NdPVwicmV0dXJuUm93Q2xhc3Mocm93RGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgIWlzQ2hpcEZpZWxkKGNvbCkgJiYgIWNvbC5pY29uRmllbGQgJiYgIWlzSW1hZ2VGaWVsZChjb2wpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29sLmljb25cIiBbY2xhc3NdPVwiY29sLmljb24gKyAnIG1yLTInXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAge3sgdHJhbnNmb3JtVmFsdWUocm93RGF0YSwgY29sKSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzQ2hpcEZpZWxkKGNvbCkgJiYgIWNvbC5pY29uRmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJyZXR1cm5DbGFzc0NoaXAocm93RGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXR1cm5Ub29sdGlwSWNvbihyb3dEYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IHRyYW5zZm9ybVZhbHVlKHJvd0RhdGEsIGNvbCkgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0ltYWdlRmllbGQoY29sKVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltYWdlXCIgW3NyY109XCJsb2FkSW1hZ2Uocm93RGF0YSwgY29sKVwiIC8+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29sLmljb25GaWVsZFwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgJ21hdGVyaWFsLWljb25zJzogY29sLmluZEljb25NYXRlcmlhbCxcclxuICAgICAgICAgICAgICAgICdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIG1yLTInOiAhY29sLmluZEljb25NYXRlcmlhbFxyXG4gICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXR1cm5Ub29sdGlwSWNvbihyb3dEYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IHJldHVybkNsYXNzSWNvbihyb3dEYXRhLCBjb2wpIH19XHJcbiAgICAgICAgICAgIDwvaT5cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYm9vbGVhbkZpZWxkPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb2wuaWNvbkZpZWxkICYmICFpc1N3aXRjaEZpZWxkKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJvd0RhdGFbY29sLmZpZWxkXSA/ICd0ZXh0LWdyZWVuLTUwMCcgOiAndGV4dC1yZWQtNTAwJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5cclxuICAgICAgICAgICAgICAgICAge3sgcm93RGF0YVtjb2wuZmllbGRdID8gXCJjaGVja1wiIDogXCJjbG9zZVwiIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9pPlxyXG5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc1N3aXRjaEZpZWxkKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cInJldHVyblJvd0NsYXNzKHJvd0RhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxrdi1zd2l0Y2hcclxuICAgICAgICAgICAgICAgICAgKG9uU3dpdGNoQ2hhbmdlKT1cIm9uU3dpdGNoQ2hhbmdlKCRldmVudCwgcm93RGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2w/Lm9ubHlSZWFkRmllbGQgPz8gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzd2l0Y2hWYWx1ZV09XCJ0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwva3Ytc3dpdGNoPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgIXJvd2dyb3VwICYmXHJcbiAgICAgICAgICAgICAgIWNvbC5ncm91cGVkICYmXHJcbiAgICAgICAgICAgICAgIWNvbC50ZW1wbGF0ZSAmJlxyXG4gICAgICAgICAgICAgICFjb2wuZmllbGRDb250cm9sVHlwZVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiXHJcbiAgICAgICAgICAgICAgYXBwbHlTdHlsZShyb3dEYXRhLCBjb2wpICtcclxuICAgICAgICAgICAgICBjZW50cmFsaXphckNvbHVuYXMoY29sKSArXHJcbiAgICAgICAgICAgICAgYWxpZ25Db2x1bmFzKGNvbClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJyb3dUYWJsZVwiXHJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXR1cm5Ub29sdGlwUm93KHJvd0RhdGEsIGNvbClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmhlYWRlciB9fTo8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWlzQm9vbGVhbkZpZWxkKHJvd0RhdGEsIGNvbCk7IGVsc2UgYm9vbGVhbkZpZWxkXCJcclxuICAgICAgICAgICAgICBbY2xhc3NdPVwicmV0dXJuUm93Q2xhc3Mocm93RGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgIWlzQ2hpcEZpZWxkKGNvbCkgJiYgIWNvbC5pY29uRmllbGQgJiYgIWlzSW1hZ2VGaWVsZChjb2wpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29sLmljb25cIiBbY2xhc3NdPVwiY29sLmljb24gKyAnIG1yLTInXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAge3sgdHJhbnNmb3JtVmFsdWUocm93RGF0YSwgY29sKSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzQ2hpcEZpZWxkKGNvbCkgJiYgIWNvbC5pY29uRmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJyZXR1cm5DbGFzc0NoaXAocm93RGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXR1cm5Ub29sdGlwSWNvbihyb3dEYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3sgdHJhbnNmb3JtVmFsdWUocm93RGF0YSwgY29sKSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzSW1hZ2VGaWVsZChjb2wpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1hZ2VcIiBbc3JjXT1cImxvYWRJbWFnZShyb3dEYXRhLCBjb2wpXCIgLz5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuaWNvbkZpZWxkXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAnbWF0ZXJpYWwtaWNvbnMnOiBjb2wuaW5kSWNvbk1hdGVyaWFsLFxyXG4gICAgICAgICAgICAgICAgJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbXItMic6ICFjb2wuaW5kSWNvbk1hdGVyaWFsXHJcbiAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJldHVyblRvb2x0aXBJY29uKHJvd0RhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgcmV0dXJuQ2xhc3NJY29uKHJvd0RhdGEsIGNvbCkgfX1cclxuICAgICAgICAgICAgPC9pPlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNib29sZWFuRmllbGQ+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbC5pY29uRmllbGQgJiYgIWlzU3dpdGNoRmllbGQoY29sKVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgICAgICAgcm93RGF0YVtjb2wuZmllbGRdID8gJ3RleHQtZ3JlZW4tNTAwJyA6ICd0ZXh0LXJlZC01MDAnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyByb3dEYXRhW2NvbC5maWVsZF0gPyBcImNoZWNrXCIgOiBcImNsb3NlXCIgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzU3dpdGNoRmllbGQoY29sKVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwicmV0dXJuUm93Q2xhc3Mocm93RGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGt2LXN3aXRjaFxyXG4gICAgICAgICAgICAgICAgICAob25Td2l0Y2hDaGFuZ2UpPVwib25Td2l0Y2hDaGFuZ2UoJGV2ZW50LCByb3dEYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbD8ub25seVJlYWRGaWVsZCA/PyB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3N3aXRjaFZhbHVlXT1cInRyYW5zZm9ybVZhbHVlKHJvd0RhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9rdi1zd2l0Y2g+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgKm5nSWY9XCJjb2wudGVtcGxhdGUgJiYgIWlzRWRpdGFibGVUYWJsZSgpXCJcclxuICAgICAgICAgICAgW3N0eWxlXT1cIlxyXG4gICAgICAgICAgICAgIGFwcGx5U3R5bGUocm93RGF0YSwgY29sKSArXHJcbiAgICAgICAgICAgICAgY2VudHJhbGl6YXJDb2x1bmFzKGNvbCkgK1xyXG4gICAgICAgICAgICAgIGFsaWduQ29sdW5hcyhjb2wpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwicm93VGFibGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmhlYWRlciB9fTo8L3NwYW4+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdJZj1cImdldEN1c3RvbVRlbXBsYXRlKGNvbC50ZW1wbGF0ZS5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0Q3VzdG9tVGVtcGxhdGUoY29sLnRlbXBsYXRlLm5hbWUpXCJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvd0RhdGEgfVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcbiAgICAgICAgPCEtLSBDb250cm9sZSBkZSBhw6fDo28gIC0tPlxyXG4gICAgICAgIDx0ZFxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAndGQtdG9vbHMnOiBpc0VkaXRhYmxlVGFibGUoKSAmJiB0aGlzLmVkaXRNb2RlID09ICdyb3cnLFxyXG4gICAgICAgICAgICAndGQtdG9vbHMtc3RpY2t5JzogIWlzRWRpdGFibGVUYWJsZSgpIHx8IHRoaXMuZWRpdE1vZGUgPT0gJ2NlbGwnXHJcbiAgICAgICAgICB9XCJcclxuICAgICAgICAgICpuZ0lmPVwiIWlzRWRpdGluZyAmJiBjb25maWcuYWN0aW9ucyAmJiBjb25maWcuYWN0aW9ucy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgIFtzdHlsZV09XCJcclxuICAgICAgICAgICAgYXBwbHlTdHlsZShyb3dEYXRhLCB7IGZpZWxkOiAnYnRucy1vcHRpb25zJywgaGVhZGVyOiAnJyB9KSArXHJcbiAgICAgICAgICAgICdib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGRkICFpbXBvcnRhbnQ7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZCAhaW1wb3J0YW50OydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWVuZCB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgPCEtLSA8YnV0dG9uXHJcbiAgICAgICAgICAgIGlkPVwibW9yZVZlcnRCdG5cIlxyXG4gICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uQnRucyBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpOyBhY3RpdmVJdGVtKHJvd0RhdGEpXCJcclxuICAgICAgICAgID4gLS0+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGN1cnNvci1wb2ludGVyIGljb24tbW9yZS1ob3JpelwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDFyZW07IGhlaWdodDogMTBweDsgd2lkdGg6IDIwcHhcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpOyBhY3RpdmVJdGVtKHJvd0RhdGEpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIG1vcmVfaG9yaXpcclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8IS0tIDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb25maWcuYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIHt7IGNyaWFyTWVudXNNb2RhbChyb3dEYXRhKSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbmZpZy5hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgIHt7IGNyaWFyTWVudXNNb2RhbChyb3dEYXRhKSB9fVxyXG4gICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgPHAtbWVudVxyXG4gICAgICAgICAgICAgICNtZW51XHJcbiAgICAgICAgICAgICAgW3BvcHVwXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFttb2RlbF09XCJtZW51SXRlbXNcIlxyXG4gICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgID48L3AtbWVudT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDwhLS0gPHRkXHJcbiAgICAgIGNsYXNzPVwidGQtdG9vbHNcIlxyXG4gICAgICAqbmdJZj1cIiFpc0VkaXRpbmcgJiYgY29uZmlnLmFjdGlvbnMgJiYgY29uZmlnLmFjdGlvbnMubGVuZ3RoID4gMFwiXHJcbiAgICAgIFtzdHlsZV09XCJhcHBseVN0eWxlKHJvd0RhdGEsIHsgZmllbGQ6ICdidG5zLW9wdGlvbnMnLCBoZWFkZXI6ICcnIH0pXCJcclxuICAgID5cclxuICAgICAgPC90ZD4gLS0+XHJcblxyXG4gICAgICAgIDwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuICAgICAgICA8IS0tIENvbnRyb2xlIGRlIGVkacOnw6NvIC0tPlxyXG4gICAgICAgIDx0ZFxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZC1lZGl0XCJcclxuICAgICAgICAgICpuZ0lmPVwidGhpcy5pc0VkaXRhYmxlVGFibGUoKSAmJiB0aGlzLmVkaXRNb2RlID09ICdyb3cnXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCInMjhweCdcIlxyXG4gICAgICAgICAgICAgIFtpZF09XCIncm93RWRpdCcgKyByb3dEYXRhW2NvbmZpZy5kYXRhS2V5XVwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIicyOHB4J1wiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZUVkaXRSb3dGdW5jdGlvbihyb3dEYXRhKVwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhZWRpdGluZ1wiXHJcbiAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgIHBSaXBwbGVcclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBwSW5pdEVkaXRhYmxlUm93XHJcbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXBlbmNpbFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93RWRpdEluaXQocm93RGF0YSlcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0XCJcclxuICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8IS0tIDxidXR0b24gW3N0eWxlLmhlaWdodF09XCInMjhweCdcIiBbc3R5bGUud2lkdGhdPVwiJzI4cHgnXCIgW2Rpc2FibGVkXT1cImlzRGlzYWJsZUVkaXRSb3dGdW5jdGlvbihyb3dEYXRhKVwiICpuZ0lmPVwiZWRpdGluZ1wiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgcFNhdmVFZGl0YWJsZVJvdyBpY29uPVwicGkgcGktY2hlY2tcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0VkaXRTYXZlKHJvd0RhdGEsIHJpKVwiIFtpZF09XCIncm93U2F2ZScgKyByb3dEYXRhW2NvbmZpZy5kYXRhS2V5XSBcIiBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zdWNjZXNzIG1yLTJcIj48L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cIicyOHB4J1wiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIicyOHB4J1wiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZUVkaXRSb3dGdW5jdGlvbihyb3dEYXRhKVwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJlZGl0aW5nXCJcclxuICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgcFJpcHBsZVxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIHBDYW5jZWxFZGl0YWJsZVJvd1xyXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS10aW1lc1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93RWRpdENhbmNlbChyb3dEYXRhLCByaSlcIlxyXG4gICAgICAgICAgICAgIFtpZF09XCIncm93Q2FuY2VsJyArIHJvd0RhdGFbY29uZmlnLmRhdGFLZXldXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1kYW5nZXJcIlxyXG4gICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3AtdGFibGU+XHJcbjwvZGl2PlxyXG4iXX0=
|