ontimize-web-ngx 15.7.0 → 15.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/app-header/o-app-header.component.mjs +4 -4
- package/esm2020/lib/components/app-header/o-app-header.module.mjs +5 -5
- package/esm2020/lib/components/app-sidenav/image/o-app-sidenav-image.component.mjs +4 -4
- package/esm2020/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.mjs +4 -4
- package/esm2020/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +4 -4
- package/esm2020/lib/components/app-sidenav/o-app-sidenav.module.mjs +5 -5
- package/esm2020/lib/components/bar-menu/locale-menu-item/o-locale-bar-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/menu-group/o-bar-menu-group.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/menu-item/o-bar-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/menu-nested/o-bar-menu-nested.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/menu-separator/o-bar-menu-separator.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/o-bar-menu-base.class.mjs +4 -4
- package/esm2020/lib/components/bar-menu/o-bar-menu.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/o-bar-menu.module.mjs +5 -5
- package/esm2020/lib/components/bar-menu/o-base-menu-item.class.mjs +4 -4
- package/esm2020/lib/components/breadcrumb/o-breadcrumb.component.mjs +4 -4
- package/esm2020/lib/components/breadcrumb/o-breadcrumb.module.mjs +5 -5
- package/esm2020/lib/components/button/o-button.component.mjs +4 -4
- package/esm2020/lib/components/button/o-button.module.mjs +5 -5
- package/esm2020/lib/components/button-toggle/o-button-toggle-group/o-button-toggle-group.component.mjs +4 -4
- package/esm2020/lib/components/button-toggle/o-button-toggle.component.mjs +4 -4
- package/esm2020/lib/components/button-toggle/o-button-toggle.module.mjs +5 -5
- package/esm2020/lib/components/card-menu-item/o-card-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/card-menu-item/o-card-menu-item.module.mjs +5 -5
- package/esm2020/lib/components/container/column/o-column.component.mjs +4 -4
- package/esm2020/lib/components/container/column/o-column.module.mjs +5 -5
- package/esm2020/lib/components/container/column-collapsible/o-column-collapsible.component.mjs +4 -4
- package/esm2020/lib/components/container/column-collapsible/o-column-collapsible.module.mjs +5 -5
- package/esm2020/lib/components/container/o-container-collapsible-component.class.mjs +4 -4
- package/esm2020/lib/components/container/o-container-component.class.mjs +4 -4
- package/esm2020/lib/components/container/row/o-row.component.mjs +4 -4
- package/esm2020/lib/components/container/row/o-row.module.mjs +5 -5
- package/esm2020/lib/components/container/row-collapsible/o-row-collapsible.component.mjs +4 -4
- package/esm2020/lib/components/container/row-collapsible/o-row-collapsible.module.mjs +5 -5
- package/esm2020/lib/components/contextmenu/context-menu/o-context-menu-content.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/context-menu/o-wrapper-content-menu/o-wrapper-content-menu.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/context-menu-group/o-context-menu-group.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/context-menu-item/o-context-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/context-menu-separator/o-context-menu-separator.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-content-menu-base-item.class.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-context-menu-overlay.service.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-context-menu.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-context-menu.directive.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-context-menu.module.mjs +5 -5
- package/esm2020/lib/components/contextmenu/o-context-menu.service.mjs +4 -4
- package/esm2020/lib/components/dual-list-selector/dual-list-selector-item/date/o-dual-list-selector-date-item.component.mjs +4 -4
- package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.component.mjs +4 -4
- package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.module.mjs +5 -5
- package/esm2020/lib/components/expandable-container/o-expandable-container.component.mjs +4 -4
- package/esm2020/lib/components/expandable-container/o-expandable-container.module.mjs +5 -5
- package/esm2020/lib/components/filter-builder/filter-builder-menu/filter-builder-menu.component.mjs +4 -4
- package/esm2020/lib/components/filter-builder/o-filter-builder-clear.directive.mjs +4 -4
- package/esm2020/lib/components/filter-builder/o-filter-builder-query.directive.mjs +4 -4
- package/esm2020/lib/components/filter-builder/o-filter-builder.component.mjs +4 -4
- package/esm2020/lib/components/filter-builder/o-filter-builder.module.mjs +5 -5
- package/esm2020/lib/components/form/guards/o-form-can-deactivate.guard.mjs +4 -4
- package/esm2020/lib/components/form/navigation/o-form-confirm-exit.service.mjs +4 -4
- package/esm2020/lib/components/form/navigation/o-form-navigation.component.mjs +4 -4
- package/esm2020/lib/components/form/o-form.component.mjs +4 -4
- package/esm2020/lib/components/form/o-form.module.mjs +5 -5
- package/esm2020/lib/components/form/services/o-form-message.service.mjs +4 -4
- package/esm2020/lib/components/form/toolbar/o-form-toolbar.component.mjs +4 -4
- package/esm2020/lib/components/form/toolbar/o-form-toolbar.module.mjs +5 -5
- package/esm2020/lib/components/form-container/o-form-container.component.mjs +4 -4
- package/esm2020/lib/components/form-container/o-form-container.module.mjs +5 -5
- package/esm2020/lib/components/grid/grid-item/o-grid-item.component.mjs +4 -4
- package/esm2020/lib/components/grid/grid-item/o-grid-item.directive.mjs +4 -4
- package/esm2020/lib/components/grid/o-grid.component.mjs +4 -4
- package/esm2020/lib/components/grid/o-grid.module.mjs +5 -5
- package/esm2020/lib/components/grid/skeketon/o-grid-skeleton.component.mjs +4 -4
- package/esm2020/lib/components/image/fullscreen/fullscreen-dialog.component.mjs +4 -4
- package/esm2020/lib/components/image/o-image.component.mjs +4 -4
- package/esm2020/lib/components/image/o-image.module.mjs +5 -5
- package/esm2020/lib/components/input/checkbox/o-checkbox.component.mjs +4 -4
- package/esm2020/lib/components/input/checkbox/o-checkbox.module.mjs +5 -5
- package/esm2020/lib/components/input/combo/combo-renderer/boolean/o-combo-renderer-boolean.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/currency/o-combo-renderer-currency.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/date/o-combo-renderer-date.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/icon/o-combo-renderer-icon.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/integer/o-combo-renderer-integer.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/o-combo-renderer.class.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/percentage/o-combo-renderer-percentage.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/real/o-combo-renderer-real.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-search/o-combo-search.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/o-combo.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/o-combo.module.mjs +5 -5
- package/esm2020/lib/components/input/currency-input/o-currency-input.component.mjs +4 -4
- package/esm2020/lib/components/input/currency-input/o-currency-input.module.mjs +5 -5
- package/esm2020/lib/components/input/date-input/o-date-input.component.mjs +4 -4
- package/esm2020/lib/components/input/date-input/o-date-input.module.mjs +5 -5
- package/esm2020/lib/components/input/date-range/o-daterange-input.component.mjs +4 -4
- package/esm2020/lib/components/input/date-range/o-daterange-input.module.mjs +5 -5
- package/esm2020/lib/components/input/date-range-legacy/o-daterange-input.component.mjs +4 -4
- package/esm2020/lib/components/input/date-range-legacy/o-daterange-input.directive.mjs +4 -4
- package/esm2020/lib/components/input/date-range-legacy/o-daterange-input.module.mjs +5 -5
- package/esm2020/lib/components/input/date-range-legacy/o-daterange-picker.component.mjs +4 -4
- package/esm2020/lib/components/input/email-input/o-email-input.component.mjs +4 -4
- package/esm2020/lib/components/input/email-input/o-email-input.module.mjs +5 -5
- package/esm2020/lib/components/input/file-input/o-file-input.component.mjs +4 -4
- package/esm2020/lib/components/input/file-input/o-file-input.module.mjs +5 -5
- package/esm2020/lib/components/input/hour-input/index.mjs +4 -0
- package/esm2020/lib/components/input/hour-input/o-hour-input.component.mjs +38 -9
- package/esm2020/lib/components/input/hour-input/o-hour-input.directive.mjs +46 -0
- package/esm2020/lib/components/input/hour-input/o-hour-input.module.mjs +8 -7
- package/esm2020/lib/components/input/html-input/o-html-input.component.mjs +4 -4
- package/esm2020/lib/components/input/html-input/o-html-input.module.mjs +5 -5
- package/esm2020/lib/components/input/index.mjs +2 -3
- package/esm2020/lib/components/input/integer-input/o-integer-input.component.mjs +4 -4
- package/esm2020/lib/components/input/integer-input/o-integer-input.module.mjs +5 -5
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/currency/o-list-picker-renderer-currency.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/date/o-list-picker-renderer-date.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/integer/o-list-picker-renderer-integer.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/o-list-picker-renderer.class.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/percentage/o-list-picker-renderer-percentage.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/real/o-list-picker-renderer-real.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/o-list-picker-dialog.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/o-list-picker.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/o-list-picker.module.mjs +5 -5
- package/esm2020/lib/components/input/nif-input/o-nif-input.component.mjs +4 -4
- package/esm2020/lib/components/input/nif-input/o-nif-input.module.mjs +5 -5
- package/esm2020/lib/components/input/o-boolean-form-data-component.class.mjs +4 -4
- package/esm2020/lib/components/input/o-form-service-component.class.mjs +4 -4
- package/esm2020/lib/components/input/password-input/o-password-input.component.mjs +4 -4
- package/esm2020/lib/components/input/password-input/o-password-input.module.mjs +5 -5
- package/esm2020/lib/components/input/percent-input/o-percent-input.component.mjs +4 -4
- package/esm2020/lib/components/input/percent-input/o-percent-input.module.mjs +5 -5
- package/esm2020/lib/components/input/phone-input/data/country-code.mjs +4 -4
- package/esm2020/lib/components/input/phone-input/o-phone-input.component.mjs +4 -4
- package/esm2020/lib/components/input/phone-input/o-phone-input.module.mjs +5 -5
- package/esm2020/lib/components/input/radio/o-radio.component.mjs +4 -4
- package/esm2020/lib/components/input/radio/o-radio.module.mjs +5 -5
- package/esm2020/lib/components/input/real-input/o-real-input.component.mjs +4 -4
- package/esm2020/lib/components/input/real-input/o-real-input.module.mjs +5 -5
- package/esm2020/lib/components/input/search-input/o-search-input.component.mjs +4 -4
- package/esm2020/lib/components/input/search-input/o-search-input.module.mjs +5 -5
- package/esm2020/lib/components/input/slide-toggle/o-slide-toggle.component.mjs +4 -4
- package/esm2020/lib/components/input/slide-toggle/o-slide-toggle.module.mjs +5 -5
- package/esm2020/lib/components/input/slider/o-slider.component.mjs +4 -4
- package/esm2020/lib/components/input/slider/o-slider.module.mjs +5 -5
- package/esm2020/lib/components/input/text-input/o-text-input.component.mjs +4 -4
- package/esm2020/lib/components/input/text-input/o-text-input.module.mjs +5 -5
- package/esm2020/lib/components/input/textarea-input/o-textarea-input.component.mjs +4 -4
- package/esm2020/lib/components/input/textarea-input/o-textarea-input.module.mjs +5 -5
- package/esm2020/lib/components/input/time-input/o-time-input.component.mjs +4 -4
- package/esm2020/lib/components/input/time-input/o-time-input.module.mjs +5 -5
- package/esm2020/lib/components/language-selector/o-language-selector.component.mjs +4 -4
- package/esm2020/lib/components/language-selector/o-language-selector.module.mjs +5 -5
- package/esm2020/lib/components/list/list-item/o-list-item.component.mjs +4 -4
- package/esm2020/lib/components/list/list-item/o-list-item.directive.mjs +4 -4
- package/esm2020/lib/components/list/o-list.component.mjs +4 -4
- package/esm2020/lib/components/list/o-list.module.mjs +5 -5
- package/esm2020/lib/components/list/renderers/avatar/o-list-item-avatar.component.mjs +4 -4
- package/esm2020/lib/components/list/renderers/card/o-list-item-card.component.mjs +4 -4
- package/esm2020/lib/components/list/renderers/card-image/o-list-item-card-image.component.mjs +4 -4
- package/esm2020/lib/components/list/renderers/o-list-item-card-renderer.class.mjs +4 -4
- package/esm2020/lib/components/list/renderers/o-list-item-text-renderer.class.mjs +4 -4
- package/esm2020/lib/components/list/renderers/text/o-list-item-text.component.mjs +4 -4
- package/esm2020/lib/components/list/skeleton/o-list-skeleton.component.mjs +4 -4
- package/esm2020/lib/components/material/ckeditor/ck-editor.component.mjs +4 -4
- package/esm2020/lib/components/material/ckeditor/ck-editor.module.mjs +5 -5
- package/esm2020/lib/components/o-data-toolbar/o-data-toolbar.component.mjs +4 -4
- package/esm2020/lib/components/o-data-toolbar/o-data-toolbar.module.mjs +5 -5
- package/esm2020/lib/components/o-form-data-component.class.mjs +4 -4
- package/esm2020/lib/components/o-repeatable-skeleton.component.mjs +4 -4
- package/esm2020/lib/components/o-service-base-component.class.mjs +15 -10
- package/esm2020/lib/components/o-service-component.class.mjs +7 -7
- package/esm2020/lib/components/o-skeleton.component.mjs +4 -4
- package/esm2020/lib/components/table/column/calculated/o-table-column-calculated.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/boolean/o-table-cell-editor-boolean.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/date/o-table-cell-editor-date.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/email/o-table-cell-editor-email.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/integer/o-table-cell-editor-integer.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/o-base-table-cell-editor.class.mjs +10 -4
- package/esm2020/lib/components/table/column/cell-editor/real/o-table-cell-editor-real.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/text/o-table-cell-editor-text.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/time/o-table-cell-editor-time.component.mjs +26 -12
- package/esm2020/lib/components/table/column/cell-renderer/action/o-table-cell-renderer-action.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/boolean/o-table-cell-renderer-boolean.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/currency/o-table-cell-renderer-currency.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/date/o-table-cell-renderer-date.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/image/o-table-cell-renderer-image.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/integer/o-table-cell-renderer-integer.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/o-base-table-cell-renderer.class.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/percentage/o-table-cell-renderer-percentage.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/real/o-table-cell-renderer-real.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/time/o-table-cell-renderer-time.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/translate/o-table-cell-renderer-translate.component.mjs +4 -4
- package/esm2020/lib/components/table/column/o-table-column.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/contextmenu/o-table-context-menu.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/default-o-table.datasource.mjs +137 -66
- package/esm2020/lib/components/table/extensions/dialog/apply-configuration/o-table-apply-configuration-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column.service.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/group-by-columns/o-table-group-by-columns-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/o-table-base-dialog.class.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/store-configuration/o-table-store-configuration-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/export-button/o-table-export-button.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/export-button/o-table-export-button.service.mjs +4 -4
- package/esm2020/lib/components/table/extensions/footer/aggregate/o-table-column-aggregate.component.mjs +6 -6
- package/esm2020/lib/components/table/extensions/footer/expanded/o-table-expanded-footer.directive.mjs +11 -14
- package/esm2020/lib/components/table/extensions/footer/paginator/o-table-mat-paginator-intl.mjs +4 -4
- package/esm2020/lib/components/table/extensions/footer/paginator/o-table-paginator.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-button/o-table-button.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-buttons/o-table-buttons.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-column-resizer/o-table-column-resizer.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-column-select-all/o-table-column-select-all.directive.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-columns-filter/columns/o-table-columns-filter-column.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-columns-grouping/columns/o-table-columns-grouping-column.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-columns-grouping/o-table-columns-grouping.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-header/o-table-header.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-header-column-filter-icon/o-table-header-column-filter-icon.component.mjs +5 -5
- package/esm2020/lib/components/table/extensions/header/table-header-select-all/o-table-header-select-all.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-insertable-row/o-table-insertable-row.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-option/o-table-option.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/o-table-datasource.service.mjs +4 -4
- package/esm2020/lib/components/table/extensions/o-table-strategy.service.mjs +10 -4
- package/esm2020/lib/components/table/extensions/pipes/o-table-row-class.pipe.mjs +4 -4
- package/esm2020/lib/components/table/extensions/row/o-table-row.directive.mjs +4 -4
- package/esm2020/lib/components/table/extensions/row/table-row-expandable/o-table-row-expandable.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/skeleton/o-table-skeleton.component.mjs +19 -19
- package/esm2020/lib/components/table/extensions/sort/o-mat-sort-header.mjs +14 -7
- package/esm2020/lib/components/table/extensions/sort/o-mat-sort-module.mjs +5 -5
- package/esm2020/lib/components/table/extensions/sort/o-mat-sort.mjs +4 -4
- package/esm2020/lib/components/table/index.mjs +2 -1
- package/esm2020/lib/components/table/o-table-base.class.mjs +1 -1
- package/esm2020/lib/components/table/o-table-loading.service.mjs +113 -0
- package/esm2020/lib/components/table/o-table.component.mjs +66 -61
- package/esm2020/lib/components/table/o-table.module.mjs +12 -8
- package/esm2020/lib/components/tree/header/tree-menu/o-tree-menu.component.mjs +4 -4
- package/esm2020/lib/components/tree/o-tree-dao.service.mjs +4 -4
- package/esm2020/lib/components/tree/o-tree.component.mjs +4 -4
- package/esm2020/lib/components/tree/o-tree.module.mjs +5 -5
- package/esm2020/lib/components/tree/tree-node/tree-node.component.mjs +4 -4
- package/esm2020/lib/components/user-info/o-user-info.component.mjs +4 -4
- package/esm2020/lib/components/user-info/o-user-info.module.mjs +5 -5
- package/esm2020/lib/components/user-info/user-info-configuration/o-user-info-configuration.directive.mjs +4 -4
- package/esm2020/lib/components/user-info/user-info-configuration-item/o-user-info-configuration-item.directive.mjs +4 -4
- package/esm2020/lib/config/o-modules.mjs +5 -5
- package/esm2020/lib/directives/input-regulate.directive.mjs +4 -4
- package/esm2020/lib/directives/keyboard-listener.directive.mjs +4 -4
- package/esm2020/lib/directives/locker.directive.mjs +4 -4
- package/esm2020/lib/directives/o-file-drag-and-drop.directive.mjs +4 -4
- package/esm2020/lib/directives/o-hidden.directive.mjs +4 -4
- package/esm2020/lib/directives/o-mat-error.directive.mjs +4 -4
- package/esm2020/lib/directives/o-mat-prefix.directive.mjs +4 -4
- package/esm2020/lib/directives/o-mat-suffix.directive.mjs +4 -4
- package/esm2020/lib/directives/o-tab-group.directive.mjs +4 -4
- package/esm2020/lib/layouts/app-layout/app-layout-header/o-app-layout-header.component.mjs +4 -4
- package/esm2020/lib/layouts/app-layout/app-layout-sidenav/o-app-layout-sidenav.component.mjs +4 -4
- package/esm2020/lib/layouts/app-layout/o-app-layout.component.mjs +4 -4
- package/esm2020/lib/layouts/app-layout/o-app-layout.module.mjs +5 -5
- package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.component.mjs +4 -4
- package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.module.mjs +5 -5
- package/esm2020/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/dialog/options/o-form-layout-dialog-options.directive.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/directives/o-form-layout-manager-content.directive.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/guards/o-form-layout-can-activate-child.guard.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager.module.mjs +5 -5
- package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/split-pane/options/o-form-layout-split-pane-options.directive.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/tabgroup/options/o-form-layout-tabgroup-options.directive.mjs +4 -4
- package/esm2020/lib/ontimize-web-ngx.module.mjs +5 -5
- package/esm2020/lib/pipes/columns-filter.pipe.mjs +4 -4
- package/esm2020/lib/pipes/is-empty-value.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-currency.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-icon.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-integer.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-moment.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-percentage.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-real.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-safe.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-translate.pipe.mjs +8 -8
- package/esm2020/lib/pipes/order-by.pipe.mjs +4 -4
- package/esm2020/lib/services/app-menu.service.mjs +4 -4
- package/esm2020/lib/services/appearance.service.mjs +4 -4
- package/esm2020/lib/services/auth-guard.service.mjs +4 -4
- package/esm2020/lib/services/auth.service.mjs +4 -4
- package/esm2020/lib/services/base-service-response.adapter.mjs +4 -4
- package/esm2020/lib/services/base-service.class.mjs +4 -4
- package/esm2020/lib/services/currency.service.mjs +4 -4
- package/esm2020/lib/services/dialog.service.mjs +4 -4
- package/esm2020/lib/services/icon.service.mjs +4 -4
- package/esm2020/lib/services/jsonapi/jsonapi-preferences.service.mjs +4 -4
- package/esm2020/lib/services/jsonapi/jsonapi-service-response.adapter.mjs +4 -4
- package/esm2020/lib/services/jsonapi/jsonapi.service.mjs +4 -4
- package/esm2020/lib/services/local-storage.service.mjs +4 -4
- package/esm2020/lib/services/login-storage.service.mjs +4 -4
- package/esm2020/lib/services/moment.service.mjs +4 -4
- package/esm2020/lib/services/navigation.service.mjs +4 -4
- package/esm2020/lib/services/number.service.mjs +4 -4
- package/esm2020/lib/services/o-auth.service.mjs +4 -4
- package/esm2020/lib/services/o-breadcrumb.service.mjs +4 -4
- package/esm2020/lib/services/o-error-dialog-manager.service.mjs +4 -4
- package/esm2020/lib/services/o-form-layout-manager.service.mjs +4 -4
- package/esm2020/lib/services/o-modules-info.service.mjs +4 -4
- package/esm2020/lib/services/o-user-info.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/o-preference-response.adapter.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-base-service.class.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-ee.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-export-3xx.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-export.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-file.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-preferences.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-service-response.adapter.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize.service.mjs +4 -4
- package/esm2020/lib/services/ontimize-export-data-base-provider.service.mjs +4 -4
- package/esm2020/lib/services/ontimize-export-data-provider-3x.service.mjs +4 -4
- package/esm2020/lib/services/ontimize-export-data-provider.service.mjs +4 -4
- package/esm2020/lib/services/ontimize-icon-registry.service.mjs +4 -4
- package/esm2020/lib/services/pagination-context.service.mjs +4 -4
- package/esm2020/lib/services/parser/o-service-response.parser.mjs +4 -4
- package/esm2020/lib/services/permissions/o-permissions.module.mjs +5 -5
- package/esm2020/lib/services/permissions/ontimize-ee-permissions.service.mjs +4 -4
- package/esm2020/lib/services/permissions/ontimize-permissions.service.mjs +4 -4
- package/esm2020/lib/services/permissions/permissions-can-activate.guard.mjs +4 -4
- package/esm2020/lib/services/permissions/permissions.service.mjs +4 -4
- package/esm2020/lib/services/remote-config.service.mjs +5 -5
- package/esm2020/lib/services/request-adapter/jsonapi-request-arguments.adapter.mjs +4 -4
- package/esm2020/lib/services/request-adapter/ontimize-request-arguments.adapter.mjs +4 -4
- package/esm2020/lib/services/share-can-activate-child.service.mjs +4 -4
- package/esm2020/lib/services/snackbar.service.mjs +4 -4
- package/esm2020/lib/services/state/o-app-menu-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-component-state.service.mjs +10 -10
- package/esm2020/lib/services/state/o-filter-builder-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-form-layout-manager-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-grid-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-list-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-table-component-state.class.mjs +1 -1
- package/esm2020/lib/services/state/o-table-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-tree-component-state.service.mjs +4 -4
- package/esm2020/lib/services/translate/o-translate.parser.mjs +4 -4
- package/esm2020/lib/services/translate/o-translate.service.mjs +4 -4
- package/esm2020/lib/shared/components/dialog/o-dialog-internal.component.mjs +4 -4
- package/esm2020/lib/shared/components/dialog/o-dialog.component.mjs +4 -4
- package/esm2020/lib/shared/components/error403/o-error-403.component.mjs +4 -4
- package/esm2020/lib/shared/components/filter/load-filter/o-load-filter-dialog.component.mjs +4 -4
- package/esm2020/lib/shared/components/filter/store-filter/o-store-filter-dialog.component.mjs +4 -4
- package/esm2020/lib/shared/components/snackbar/o-snackbar-base.class.mjs +4 -4
- package/esm2020/lib/shared/components/snackbar/o-snackbar.component.mjs +4 -4
- package/esm2020/lib/shared/components/validation/o-error.component.mjs +4 -4
- package/esm2020/lib/shared/components/validation/o-validator.component.mjs +4 -4
- package/esm2020/lib/shared/material/custom.material.module.mjs +5 -5
- package/esm2020/lib/shared/material/date/ontimize-moment-date-adapter.mjs +4 -4
- package/esm2020/lib/shared/shared.module.mjs +5 -5
- package/esm2020/lib/types/aggregate-function.type.mjs +1 -1
- package/esm2020/lib/types/table/o-table-global-config.type.mjs +1 -1
- package/fesm2015/ontimize-web-ngx.mjs +1582 -1283
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +1567 -1280
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/dual-list-selector/o-dual-list-selector.component.d.ts +1 -1
- package/lib/components/input/hour-input/index.d.ts +3 -0
- package/lib/components/input/hour-input/o-hour-input.component.d.ts +6 -2
- package/lib/components/input/hour-input/o-hour-input.directive.d.ts +8 -0
- package/lib/components/input/hour-input/o-hour-input.module.d.ts +5 -4
- package/lib/components/input/index.d.ts +1 -2
- package/lib/components/o-service-base-component.class.d.ts +1 -0
- package/lib/components/table/column/cell-editor/o-base-table-cell-editor.class.d.ts +5 -3
- package/lib/components/table/column/cell-editor/time/o-table-cell-editor-time.component.d.ts +2 -2
- package/lib/components/table/extensions/default-o-table.datasource.d.ts +6 -1
- package/lib/components/table/extensions/dialog/group-by-columns/o-table-group-by-columns-dialog.component.d.ts +1 -1
- package/lib/components/table/extensions/footer/aggregate/o-table-column-aggregate.component.d.ts +1 -1
- package/lib/components/table/extensions/footer/expanded/o-table-expanded-footer.directive.d.ts +1 -2
- package/lib/components/table/extensions/o-table-strategy.service.d.ts +2 -1
- package/lib/components/table/extensions/skeleton/o-table-skeleton.component.d.ts +1 -0
- package/lib/components/table/extensions/sort/o-mat-sort-header.d.ts +5 -3
- package/lib/components/table/index.d.ts +1 -0
- package/lib/components/table/o-table-base.class.d.ts +3 -1
- package/lib/components/table/o-table-loading.service.d.ts +28 -0
- package/lib/components/table/o-table.component.d.ts +3 -1
- package/lib/components/table/o-table.module.d.ts +2 -1
- package/lib/services/state/o-table-component-state.class.d.ts +1 -1
- package/lib/types/aggregate-function.type.d.ts +2 -1
- package/lib/types/table/o-table-global-config.type.d.ts +4 -0
- package/package.json +2 -2
package/esm2020/lib/components/table/extensions/contextmenu/o-table-context-menu.component.mjs
CHANGED
|
@@ -331,14 +331,14 @@ export class OTableContextMenuComponent {
|
|
|
331
331
|
this.isDateColumn.next(this.column.type == 'date');
|
|
332
332
|
}
|
|
333
333
|
}
|
|
334
|
-
OTableContextMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
335
|
-
OTableContextMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
334
|
+
OTableContextMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableContextMenuComponent, deps: [{ token: i0.Injector }, { token: forwardRef(() => OTableBase) }], target: i0.ɵɵFactoryTarget.Component });
|
|
335
|
+
OTableContextMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableContextMenuComponent, selector: "o-table-context-menu", inputs: { contextMenu: ["context-menu", "contextMenu"], showInsert: ["insert", "showInsert"], showEdit: ["edit", "showEdit"], showViewDetail: ["view-detail", "showViewDetail"], showCopy: ["copy", "showCopy"], showSelectAll: ["select-all", "showSelectAll"], showRefresh: ["refresh", "showRefresh"], showDelete: ["delete", "showDelete"], showFilter: ["filter", "showFilter"], showGroupByRow: ["group-by-row", "showGroupByRow"] }, viewQueries: [{ propertyName: "defaultContextMenu", first: true, predicate: ["defaultContextMenu"], descendants: true }], ngImport: i0, template: "<o-context-menu #defaultContextMenu>\n\n <ng-container *ngIf=\"isDataCell | async\">\n <o-context-menu-item attr=\"refresh\" label=\"TABLE_CONTEXT_MENU.REFRESH\" svg-icon=\"ontimize:autorenew\" (execute)=\"refresh()\"\n [visible]=\"isVisibleRefresh | async\"></o-context-menu-item>\n <o-context-menu-item attr=\"detail\" icon=\"chevron_right\" label=\"TABLE_CONTEXT_MENU.VIEW_DETAIL\" (execute)=\"gotoDetails($event)\"\n [visible]=\"isVisibleDetail | async\"></o-context-menu-item>\n <o-context-menu-item attr=\"edit\" icon=\"edit\" label=\"TABLE_CONTEXT_MENU.EDIT\" (execute)=\"edit($event)\" [visible]=\"isVisibleEdit | async\">\n </o-context-menu-item>\n <o-context-menu-item attr=\"insert\" label=\"TABLE_CONTEXT_MENU.INSERT\" icon=\"add\" (execute)=\"add()\" [visible]=\"isVisibleInsert | async\">\n </o-context-menu-item>\n <o-context-menu-item attr=\"delete\" label=\"TABLE_CONTEXT_MENU.DELETE\" icon=\"delete\" (execute)=\"delete($event)\" [visible]=\"isVisibleDelete | async\">\n </o-context-menu-item>\n <!-- FILTER GROUP -->\n <o-context-menu-group label=\"TABLE_CONTEXT_MENU.FILTER\" icon=\"filter_alt\" type=\"group\" [visible]=\"isVisibleFilter | async\">\n <o-context-menu-item icon=\"filter_alt\" [label]=\"labelFilterByColumn\" (execute)=\"filterByColumn($event)\"></o-context-menu-item>\n <o-context-menu-item icon=\"filter_alt\" label=\"TABLE_CONTEXT_MENU.FILTER_BY_VALUE\" (execute)=\"filterByValue()\"></o-context-menu-item>\n </o-context-menu-group>\n <!-- COPY GROUP -->\n <o-context-menu-separator [visible]=\"isVisibleCopy | async\"></o-context-menu-separator>\n <o-context-menu-group label=\"TABLE_CONTEXT_MENU.COPY\" icon=\"file_copy\" type=\"group\" [visible]=\"isVisibleCopy | async\">\n <o-context-menu-item icon=\"file_copy\" label=\"TABLE_CONTEXT_MENU.COPY_CELL\" (execute)=\"copyCell($event)\"></o-context-menu-item>\n <o-context-menu-item icon=\"file_copy\" label=\"TABLE_CONTEXT_MENU.COPY_ROW\" (execute)=\"copyRow($event)\"></o-context-menu-item>\n <o-context-menu-item label=\"TABLE_CONTEXT_MENU.COPY_ALL\" icon=\"file_copy\" (execute)=\"copyAll()\"></o-context-menu-item>\n <o-context-menu-item label=\"TABLE_CONTEXT_MENU.COPY_SELECTION\" icon=\"file_copy\" (execute)=\"copySelection()\"></o-context-menu-item>\n </o-context-menu-group>\n <o-context-menu-separator [visible]=\"isVisibleSelectAll | async\"></o-context-menu-separator>\n <o-context-menu-item attr=\"select-all\" [label]=\"table.isAllSelected() ? 'TABLE_CONTEXT_MENU.DESELECT_ALL': 'TABLE_CONTEXT_MENU.SELECT_ALL'\"\n icon=\"select_all\" (execute)=\"table.isAllSelected() ? unSelectAll() : selectAll()\" [visible]=\"isVisibleSelectAll | async\"></o-context-menu-item>\n\n <!-- GROUP BY -->\n <o-context-menu-separator [visible]=\"isVisibleGroupByRow | async\"></o-context-menu-separator>\n <o-context-menu-group label=\"TABLE_CONTEXT_MENU.GROUP_BY\" icon=\"format_indent_increase\" type=\"group\" [visible]=\"isVisibleGroupByRow | async\">\n <o-context-menu-item *ngIf=\"isDateColumn | async\" label=\"TABLE_CONTEXT_MENU.GROUP_BY_YEAR\" (execute)=\"groupByColumn('YEAR')\"\n icon=\"format_indent_increase\" type=\"group\" [visible]=\"isVisibleGroupByRow | async\" [enabled]=\"isEnabledGroupByColumn | async\">\n </o-context-menu-item>\n <o-context-menu-item *ngIf=\"isDateColumn | async\" label=\"TABLE_CONTEXT_MENU.GROUP_BY_MONTH\" (execute)=\"groupByColumn('MONTH')\"\n icon=\"format_indent_increase\" type=\"group\" [visible]=\"isVisibleGroupByRow | async\" [enabled]=\"isEnabledGroupByColumn | async\">\n </o-context-menu-item>\n <o-context-menu-item *ngIf=\"isDateColumn | async\" label=\"TABLE_CONTEXT_MENU.GROUP_BY_YEAR_MONTH\" icon=\"format_indent_increase\" type=\"group\"\n (execute)=\"groupByColumn('YEAR_MONTH')\" [visible]=\"isVisibleGroupByRow | async\" [enabled]=\"isEnabledGroupByColumn | async\">\n </o-context-menu-item>\n <o-context-menu-item *ngIf=\"isDateColumn | async\" label=\"TABLE_CONTEXT_MENU.GROUP_BY_YEAR_MONTH_DAY\" icon=\"format_indent_increase\" type=\"group\"\n (execute)=\"groupByColumn('YEAR_MONTH_DAY')\" [visible]=\"isVisibleGroupByRow | async\" [enabled]=\"isEnabledGroupByColumn | async\">\n </o-context-menu-item>\n <o-context-menu-item *ngIf=\"!(isDateColumn | async)\" icon=\"format_indent_increase\" [label]=\"labelGroupByColumn\" (execute)=\"groupByColumn()\"\n [enabled]=\"isEnabledGroupByColumn | async\"></o-context-menu-item>\n <o-context-menu-item *ngIf=\"isEnabledUnGroupByColumn | async\" icon=\"format_indent_decrease\" [label]=\"labelUnGroupByColumn\"\n (execute)=\"unGroupByColumn()\" [enabled]=\"isEnabledUnGroupByColumn | async\"></o-context-menu-item>\n <o-context-menu-item icon=\"format_line_spacing\" label=\"TABLE_CONTEXT_MENU.UNGROUP_ALLCOLUMNS\" (execute)=\"unGroupAll()\"\n [enabled]=\"isEnabledUnGroupAllColumn | async\">\n </o-context-menu-item>\n </o-context-menu-group>\n </ng-container>\n\n <!-- GROUP BY HEADER CELL AGGREGATE FUNCTION -->\n <ng-container *ngIf=\"isGroupableCell | async\">\n <o-context-menu-group label=\"TABLE_CONTEXT_MENU.GROUP_BY.AGGREGATE_FUNCTION\" icon=\"format_indent_increase\" type=\"group\">\n <o-context-menu-item *ngFor=\"let aggregateFn of availableColumnAggregates\" label=\"{{ 'AGGREGATE_NAME.' + aggregateFn }}\"\n (execute)=\"changeAggregateFunction($event, aggregateFn)\"></o-context-menu-item>\n </o-context-menu-group>\n </ng-container>\n\n <ng-container *ngIf=\"isTableGroupedRow | async\">\n <o-context-menu-item icon=\"unfold_more\" label=\"TABLE_CONTEXT_MENU.EXPAND_ALL_GROUPS\" (execute)=\"expandRowGroupsSameLevel()\"></o-context-menu-item>\n <o-context-menu-item icon=\"unfold_less\" label=\"TABLE_CONTEXT_MENU.COLLAPSE_ALL_GROUPS\" (execute)=\"collapseRowGroupsSameLevel()\">\n </o-context-menu-item>\n </ng-container>\n\n</o-context-menu>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.OContextMenuComponent, selector: "o-context-menu", outputs: ["onShow", "onClose"] }, { kind: "component", type: i3.OContextMenuItemComponent, selector: "o-context-menu-item", outputs: ["execute"] }, { kind: "component", type: i4.OContextMenuGroupComponent, selector: "o-context-menu-group" }, { kind: "component", type: i5.OContextMenuSeparatorComponent, selector: "o-context-menu-separator", inputs: ["attr", "visible"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
336
336
|
__decorate([
|
|
337
337
|
BooleanInputConverter(),
|
|
338
338
|
__metadata("design:type", Boolean),
|
|
339
339
|
__metadata("design:paramtypes", [Boolean])
|
|
340
340
|
], OTableContextMenuComponent.prototype, "showSelectAll", null);
|
|
341
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
341
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableContextMenuComponent, decorators: [{
|
|
342
342
|
type: Component,
|
|
343
343
|
args: [{ selector: 'o-table-context-menu', changeDetection: ChangeDetectionStrategy.OnPush, inputs: DEFAULT_TABLE_CONTEXT_MENU_INPUTS, template: "<o-context-menu #defaultContextMenu>\n\n <ng-container *ngIf=\"isDataCell | async\">\n <o-context-menu-item attr=\"refresh\" label=\"TABLE_CONTEXT_MENU.REFRESH\" svg-icon=\"ontimize:autorenew\" (execute)=\"refresh()\"\n [visible]=\"isVisibleRefresh | async\"></o-context-menu-item>\n <o-context-menu-item attr=\"detail\" icon=\"chevron_right\" label=\"TABLE_CONTEXT_MENU.VIEW_DETAIL\" (execute)=\"gotoDetails($event)\"\n [visible]=\"isVisibleDetail | async\"></o-context-menu-item>\n <o-context-menu-item attr=\"edit\" icon=\"edit\" label=\"TABLE_CONTEXT_MENU.EDIT\" (execute)=\"edit($event)\" [visible]=\"isVisibleEdit | async\">\n </o-context-menu-item>\n <o-context-menu-item attr=\"insert\" label=\"TABLE_CONTEXT_MENU.INSERT\" icon=\"add\" (execute)=\"add()\" [visible]=\"isVisibleInsert | async\">\n </o-context-menu-item>\n <o-context-menu-item attr=\"delete\" label=\"TABLE_CONTEXT_MENU.DELETE\" icon=\"delete\" (execute)=\"delete($event)\" [visible]=\"isVisibleDelete | async\">\n </o-context-menu-item>\n <!-- FILTER GROUP -->\n <o-context-menu-group label=\"TABLE_CONTEXT_MENU.FILTER\" icon=\"filter_alt\" type=\"group\" [visible]=\"isVisibleFilter | async\">\n <o-context-menu-item icon=\"filter_alt\" [label]=\"labelFilterByColumn\" (execute)=\"filterByColumn($event)\"></o-context-menu-item>\n <o-context-menu-item icon=\"filter_alt\" label=\"TABLE_CONTEXT_MENU.FILTER_BY_VALUE\" (execute)=\"filterByValue()\"></o-context-menu-item>\n </o-context-menu-group>\n <!-- COPY GROUP -->\n <o-context-menu-separator [visible]=\"isVisibleCopy | async\"></o-context-menu-separator>\n <o-context-menu-group label=\"TABLE_CONTEXT_MENU.COPY\" icon=\"file_copy\" type=\"group\" [visible]=\"isVisibleCopy | async\">\n <o-context-menu-item icon=\"file_copy\" label=\"TABLE_CONTEXT_MENU.COPY_CELL\" (execute)=\"copyCell($event)\"></o-context-menu-item>\n <o-context-menu-item icon=\"file_copy\" label=\"TABLE_CONTEXT_MENU.COPY_ROW\" (execute)=\"copyRow($event)\"></o-context-menu-item>\n <o-context-menu-item label=\"TABLE_CONTEXT_MENU.COPY_ALL\" icon=\"file_copy\" (execute)=\"copyAll()\"></o-context-menu-item>\n <o-context-menu-item label=\"TABLE_CONTEXT_MENU.COPY_SELECTION\" icon=\"file_copy\" (execute)=\"copySelection()\"></o-context-menu-item>\n </o-context-menu-group>\n <o-context-menu-separator [visible]=\"isVisibleSelectAll | async\"></o-context-menu-separator>\n <o-context-menu-item attr=\"select-all\" [label]=\"table.isAllSelected() ? 'TABLE_CONTEXT_MENU.DESELECT_ALL': 'TABLE_CONTEXT_MENU.SELECT_ALL'\"\n icon=\"select_all\" (execute)=\"table.isAllSelected() ? unSelectAll() : selectAll()\" [visible]=\"isVisibleSelectAll | async\"></o-context-menu-item>\n\n <!-- GROUP BY -->\n <o-context-menu-separator [visible]=\"isVisibleGroupByRow | async\"></o-context-menu-separator>\n <o-context-menu-group label=\"TABLE_CONTEXT_MENU.GROUP_BY\" icon=\"format_indent_increase\" type=\"group\" [visible]=\"isVisibleGroupByRow | async\">\n <o-context-menu-item *ngIf=\"isDateColumn | async\" label=\"TABLE_CONTEXT_MENU.GROUP_BY_YEAR\" (execute)=\"groupByColumn('YEAR')\"\n icon=\"format_indent_increase\" type=\"group\" [visible]=\"isVisibleGroupByRow | async\" [enabled]=\"isEnabledGroupByColumn | async\">\n </o-context-menu-item>\n <o-context-menu-item *ngIf=\"isDateColumn | async\" label=\"TABLE_CONTEXT_MENU.GROUP_BY_MONTH\" (execute)=\"groupByColumn('MONTH')\"\n icon=\"format_indent_increase\" type=\"group\" [visible]=\"isVisibleGroupByRow | async\" [enabled]=\"isEnabledGroupByColumn | async\">\n </o-context-menu-item>\n <o-context-menu-item *ngIf=\"isDateColumn | async\" label=\"TABLE_CONTEXT_MENU.GROUP_BY_YEAR_MONTH\" icon=\"format_indent_increase\" type=\"group\"\n (execute)=\"groupByColumn('YEAR_MONTH')\" [visible]=\"isVisibleGroupByRow | async\" [enabled]=\"isEnabledGroupByColumn | async\">\n </o-context-menu-item>\n <o-context-menu-item *ngIf=\"isDateColumn | async\" label=\"TABLE_CONTEXT_MENU.GROUP_BY_YEAR_MONTH_DAY\" icon=\"format_indent_increase\" type=\"group\"\n (execute)=\"groupByColumn('YEAR_MONTH_DAY')\" [visible]=\"isVisibleGroupByRow | async\" [enabled]=\"isEnabledGroupByColumn | async\">\n </o-context-menu-item>\n <o-context-menu-item *ngIf=\"!(isDateColumn | async)\" icon=\"format_indent_increase\" [label]=\"labelGroupByColumn\" (execute)=\"groupByColumn()\"\n [enabled]=\"isEnabledGroupByColumn | async\"></o-context-menu-item>\n <o-context-menu-item *ngIf=\"isEnabledUnGroupByColumn | async\" icon=\"format_indent_decrease\" [label]=\"labelUnGroupByColumn\"\n (execute)=\"unGroupByColumn()\" [enabled]=\"isEnabledUnGroupByColumn | async\"></o-context-menu-item>\n <o-context-menu-item icon=\"format_line_spacing\" label=\"TABLE_CONTEXT_MENU.UNGROUP_ALLCOLUMNS\" (execute)=\"unGroupAll()\"\n [enabled]=\"isEnabledUnGroupAllColumn | async\">\n </o-context-menu-item>\n </o-context-menu-group>\n </ng-container>\n\n <!-- GROUP BY HEADER CELL AGGREGATE FUNCTION -->\n <ng-container *ngIf=\"isGroupableCell | async\">\n <o-context-menu-group label=\"TABLE_CONTEXT_MENU.GROUP_BY.AGGREGATE_FUNCTION\" icon=\"format_indent_increase\" type=\"group\">\n <o-context-menu-item *ngFor=\"let aggregateFn of availableColumnAggregates\" label=\"{{ 'AGGREGATE_NAME.' + aggregateFn }}\"\n (execute)=\"changeAggregateFunction($event, aggregateFn)\"></o-context-menu-item>\n </o-context-menu-group>\n </ng-container>\n\n <ng-container *ngIf=\"isTableGroupedRow | async\">\n <o-context-menu-item icon=\"unfold_more\" label=\"TABLE_CONTEXT_MENU.EXPAND_ALL_GROUPS\" (execute)=\"expandRowGroupsSameLevel()\"></o-context-menu-item>\n <o-context-menu-item icon=\"unfold_less\" label=\"TABLE_CONTEXT_MENU.COLLAPSE_ALL_GROUPS\" (execute)=\"collapseRowGroupsSameLevel()\">\n </o-context-menu-item>\n </ng-container>\n\n</o-context-menu>\n" }]
|
|
344
344
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i6.OTableBase, decorators: [{
|
|
@@ -348,4 +348,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
348
348
|
type: ViewChild,
|
|
349
349
|
args: ['defaultContextMenu']
|
|
350
350
|
}] } });
|
|
351
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb250ZXh0LW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9jb250ZXh0bWVudS9vLXRhYmxlLWNvbnRleHQtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2NvbnRleHRtZW51L28tdGFibGUtY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDdkYsT0FBTyxFQUFFLHlCQUF5QixFQUFzQixNQUFNLG9EQUFvRCxDQUFDO0FBQ25ILE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUV0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUUxRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7O0FBRXRELE1BQU0sQ0FBQyxNQUFN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QUEwQixrbUJDakN2QywyM0xBc0VBO0FEMEJFO0lBQUMscUJBQXFCLEVBQUU7OzsrREFNdkI7MkZBckVVLDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDRSxzQkFBc0IsbUJBRWYsdUJBQXVCLENBQUMsTUFBTSxVQUN2QyxpQ0FBaUM7OzBCQW1JdEMsTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDOzRDQWpFbEMsYUFBYSxNQXlEUCxrQkFBa0I7c0JBRDNCLFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbmplY3RvciwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBPVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS9vLXRyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IsIE9Db2x1bW5WYWx1ZUZpbHRlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzL3RhYmxlL28tY29sdW1uLXZhbHVlLWZpbHRlci50eXBlJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0NvbnRleHRNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dG1lbnUvby1jb250ZXh0LW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgT0NvbHVtbiB9IGZyb20gJy4uLy4uL2NvbHVtbi9vLWNvbHVtbi5jbGFzcyc7XG5pbXBvcnQgeyBPVGFibGVHcm91cGVkUm93IH0gZnJvbSAnLi4vcm93L28tdGFibGUtcm93LWdyb3VwLmNsYXNzJztcbmltcG9ydCB7IE9UYWJsZUZpbHRlckJ5Q29sdW1uU2VydmljZSB9IGZyb20gJy4uL2RpYWxvZy9maWx0ZXItYnktY29sdW1uL28tdGFibGUtZmlsdGVyLWJ5LWNvbHVtbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlRmlsdGVyQnlDb2x1bW5EYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMvdGFibGUvby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEudHlwZSc7XG5pbXBvcnQgeyBPVGFibGVCYXNlIH0gZnJvbSAnLi4vLi4vby10YWJsZS1iYXNlLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVEFCTEVfQ09OVEVYVF9NRU5VX0lOUFVUUyA9IFtcbiAgJ2NvbnRleHRNZW51OiBjb250ZXh0LW1lbnUnLFxuICAnc2hvd0luc2VydDogaW5zZXJ0JyxcbiAgJ3Nob3dFZGl0OiBlZGl0JyxcbiAgJ3Nob3dWaWV3RGV0YWlsOiB2aWV3LWRldGFpbCcsXG4gICdzaG93Q29weTogY29weScsXG4gICdzaG93U2VsZWN0QWxsOiBzZWxlY3QtYWxsJyxcbiAgJ3Nob3dSZWZyZXNoOiByZWZyZXNoJyxcbiAgJ3Nob3dEZWxldGU6IGRlbGV0ZScsXG4gICdzaG93RmlsdGVyOiBmaWx0ZXInLFxuICAnc2hvd0dyb3VwQnlSb3c6IGdyb3VwLWJ5LXJvdydcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY29udGV4dC1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdGFibGUtY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGlucHV0czogREVGQVVMVF9UQUJMRV9DT05URVhUX01FTlVfSU5QVVRTXG59KVxuZXhwb3J0IGNsYXNzIE9UYWJsZUNvbnRleHRNZW51Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHB1YmxpYyBjb250ZXh0TWVudTogT0NvbnRleHRNZW51Q29tcG9uZW50O1xuICBwdWJsaWMgaXNWaXNpYmxlSW5zZXJ0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuICBwdWJsaWMgaXNWaXNpYmxlRWRpdDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcbiAgcHVibGljIGlzVmlzaWJsZURldGFpbDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcbiAgcHVibGljIGlzVmlzaWJsZUNvcHk6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHB1YmxpYyBpc1Zpc2libGVTZWxlY3RBbGw6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHB1YmxpYyBpc1Zpc2libGVSZWZyZXNoOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuICBwdWJsaWMgaXNWaXNpYmxlRGVsZXRlOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuICBwdWJsaWMgaXNWaXNpYmxlRmlsdGVyOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuICBwdWJsaWMgaXNWaXNpYmxlR3JvdXBCeVJvdzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcbiAgcHVibGljIGlzRW5hYmxlZEdyb3VwQnlDb2x1bW46IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHB1YmxpYyBpc0VuYWJsZWRVbkdyb3VwQnlDb2x1bW46IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwdWJsaWMgaXNFbmFibGVkVW5Hcm91cEFsbENvbHVtbjogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIGlzRGF0YUNlbGw6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHB1YmxpYyBpc1RhYmxlR3JvdXBlZFJvdzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcbiAgcHVibGljIGlzR3JvdXBhYmxlQ2VsbDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcblxuICBzZXQgc2hvd0luc2VydCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykge1xuICAgICAgdmFsdWUgPSBVdGlsLnBhcnNlQm9vbGVhbih2YWx1ZSBhcyBhbnkpO1xuICAgIH1cbiAgICB0aGlzLmlzVmlzaWJsZUluc2VydC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBzaG93SW5zZXJ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZUluc2VydC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgc2V0IHNob3dFZGl0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB2YWx1ZSA9IFV0aWwucGFyc2VCb29sZWFuKHZhbHVlIGFzIGFueSk7XG4gICAgfVxuICAgIHRoaXMuaXNWaXNpYmxlRWRpdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBzaG93RWRpdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1Zpc2libGVFZGl0LmdldFZhbHVlKCk7XG4gIH1cblxuICBzZXQgc2hvd1ZpZXdEZXRhaWwodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHZhbHVlID0gVXRpbC5wYXJzZUJvb2xlYW4odmFsdWUgYXMgYW55KTtcbiAgICB9XG4gICAgdGhpcy5pc1Zpc2libGVEZXRhaWwubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2hvd1ZpZXdEZXRhaWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlRGV0YWlsLmdldFZhbHVlKCk7XG4gIH1cblxuICBzZXQgc2hvd0NvcHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHZhbHVlID0gVXRpbC5wYXJzZUJvb2xlYW4odmFsdWUgYXMgYW55KTtcbiAgICB9XG4gICAgdGhpcy5pc1Zpc2libGVDb3B5Lm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNob3dDb3B5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZUNvcHkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzZXQgc2hvd1NlbGVjdEFsbCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykge1xuICAgICAgdmFsdWUgPSBVdGlsLnBhcnNlQm9vbGVhbih2YWx1ZSBhcyBhbnkpO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlLmlzU2VsZWN0aW9uTW9kZU5vbmUoKSA/IHRoaXMuaXNWaXNpYmxlU2VsZWN0QWxsLm5leHQoZmFsc2UpIDogdGhpcy5pc1Zpc2libGVTZWxlY3RBbGwubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2hvd1NlbGVjdEFsbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1Zpc2libGVTZWxlY3RBbGwuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHNldCBzaG93UmVmcmVzaCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykge1xuICAgICAgdmFsdWUgPSBVdGlsLnBhcnNlQm9vbGVhbih2YWx1ZSBhcyBhbnkpO1xuICAgIH1cbiAgICB0aGlzLmlzVmlzaWJsZVJlZnJlc2gubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2hvd1JlZnJlc2goKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlUmVmcmVzaC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgc2V0IHNob3dEZWxldGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHZhbHVlID0gVXRpbC5wYXJzZUJvb2xlYW4odmFsdWUgYXMgYW55KTtcbiAgICB9XG4gICAgdGhpcy5pc1Zpc2libGVEZWxldGUubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2hvd0RlbGV0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1Zpc2libGVEZWxldGUuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHNldCBzaG93RmlsdGVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB2YWx1ZSA9IFV0aWwucGFyc2VCb29sZWFuKHZhbHVlIGFzIGFueSk7XG4gICAgfVxuICAgIHRoaXMuaXNWaXNpYmxlRmlsdGVyLm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNob3dGaWx0ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlRmlsdGVyLmdldFZhbHVlKCk7XG4gIH1cblxuICBzZXQgc2hvd0dyb3VwQnlSb3codmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHZhbHVlID0gVXRpbC5wYXJzZUJvb2xlYW4odmFsdWUgYXMgYW55KTtcbiAgICB9XG4gICAgdGhpcy5pc1Zpc2libGVHcm91cEJ5Um93Lm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNob3dHcm91cEJ5Um93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZUdyb3VwQnlSb3cuZ2V0VmFsdWUoKTtcbiAgfVxuXG5cbiAgQFZpZXdDaGlsZCgnZGVmYXVsdENvbnRleHRNZW51JylcbiAgcHJvdGVjdGVkIGRlZmF1bHRDb250ZXh0TWVudTogT0NvbnRleHRNZW51Q29tcG9uZW50O1xuICBwcm90ZWN0ZWQgX3JvdzogYW55O1xuICBwcm90ZWN0ZWQgY29sdW1uOiBPQ29sdW1uO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogT1RyYW5zbGF0ZVNlcnZpY2U7XG4gIHByb3RlY3RlZCBjb250ZXh0TWVudVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwdWJsaWMgaXNEYXRlQ29sdW1uOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT1RhYmxlQmFzZSkpIHB1YmxpYyB0YWJsZTogT1RhYmxlQmFzZVxuICApIHtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPVHJhbnNsYXRlU2VydmljZSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5zaG93U2VsZWN0QWxsKSkge1xuICAgICAgdGhpcy5pc1Zpc2libGVTZWxlY3RBbGwubmV4dCh0aGlzLnRhYmxlLnNlbGVjdEFsbENoZWNrYm94KTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnRhYmxlLmdyb3VwYWJsZSkge1xuICAgICAgdGhpcy5pc1Zpc2libGVHcm91cEJ5Um93Lm5leHQodGhpcy50YWJsZS5ncm91cGFibGUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb250ZXh0TWVudSkge1xuICAgICAgdGhpcy5kZWZhdWx0Q29udGV4dE1lbnUuZXh0ZXJuYWxDb250ZXh0TWVudUl0ZW1zID0gdGhpcy5jb250ZXh0TWVudS5vQ29udGV4dE1lbnVJdGVtcztcbiAgICB9XG4gICAgdGhpcy50YWJsZS5yZWdpc3RlckNvbnRleHRNZW51KHRoaXMuZGVmYXVsdENvbnRleHRNZW51KTtcbiAgICB0aGlzLnJlZ2lzdGVyQ29udGV4dE1lbnVMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckNvbnRleHRNZW51TGlzdGVuZXJzKCkge1xuICAgIHRoaXMuY29udGV4dE1lbnVTdWJzY3JpcHRpb24uYWRkKHRoaXMuZGVmYXVsdENvbnRleHRNZW51Lm9uQ2xvc2Uuc3Vic2NyaWJlKChwYXJhbTogYW55KSA9PiB7XG4gICAgICBpZiAoIXRoaXMudGFibGUuaXNTZWxlY3Rpb25Nb2RlTXVsdGlwbGUoKSkge1xuICAgICAgICB0aGlzLnRhYmxlLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgdGhpcy5jb250ZXh0TWVudVN1YnNjcmlwdGlvbi5hZGQodGhpcy5kZWZhdWx0Q29udGV4dE1lbnUub25TaG93LnN1YnNjcmliZSgocGFyYW06IGFueSkgPT4ge1xuICAgICAgdGhpcy5pbml0UHJvcGVydGllcyhwYXJhbSk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIGdvdG9EZXRhaWxzKGV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZGF0YSA9IGV2ZW50LmRhdGEucm93VmFsdWU7XG4gICAgdGhpcy50YWJsZS52aWV3RGV0YWlsKGRhdGEpO1xuICB9XG5cbiAgcHVibGljIGVkaXQoZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlLmRvSGFuZGxlQ2xpY2soZXZlbnQuZGF0YS5yb3dWYWx1ZSwgZXZlbnQuZGF0YS5jZWxsTmFtZSwgZXZlbnQuZGF0YS5yb3dJbmRleCwgZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIGFkZCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlLmFkZCgpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlLnNob3dBbmRTZWxlY3RBbGxDaGVja2JveCgpO1xuICB9XG5cbiAgcHVibGljIHVuU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMudGFibGUuc2VsZWN0aW9uLmNsZWFyKCk7XG4gIH1cblxuICBwdWJsaWMgY29weUFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlLmNvcHlBbGwoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb3B5Q2VsbChldmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNlbGxfZGF0YSA9IHRoaXMuZGVmYXVsdENvbnRleHRNZW51Lm9yaWdpbi5pbm5lclRleHQ7XG4gICAgVXRpbC5jb3B5VG9DbGlwYm9hcmQoY2VsbF9kYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBjb3B5U2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMudGFibGUuY29weVNlbGVjdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGNvcHlSb3coZXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5zdHJpbmdpZnkodGhpcy50YWJsZS5kYXRhU291cmNlLmdldFJlbmRlcmVkRGF0YShbZXZlbnQuZGF0YS5yb3dWYWx1ZV0pKTtcbiAgICBVdGlsLmNvcHlUb0NsaXBib2FyZChkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGUoZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlLnJlbW92ZSgpO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy50YWJsZS5yZWZyZXNoKCk7XG4gIH1cblxuICBwdWJsaWMgZmlsdGVyQnlWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT1RhYmxlRmlsdGVyQnlDb2x1bW5TZXJ2aWNlKTtcblxuICAgIGNvbnN0IGNvbHVtbkF0dHIgPSB0aGlzLmNvbHVtbi5hdHRyO1xuICAgIGNvbnN0IGZpbHRlckJ5Q29sdW1uRGVmaW5pdGlvbiA9IHRoaXMudGFibGUuZ2V0RmlsdGVyQ29sdW1uQnlBdHRyKHRoaXMuY29sdW1uLmF0dHIpO1xuICAgIGNvbnN0IHNvdXJjZURhdGFUeXBlID0gZmlsdGVyQnlDb2x1bW5EZWZpbml0aW9uLmZpbHRlclZhbHVlc0luRGF0YTtcbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGZpbHRlckJ5Q29sdW1uRGVmaW5pdGlvbi52aXNpYmxlQ29sdW1ucztcblxuICAgIGZpbHRlclNlcnZpY2UuZ2V0RGF0YUZvckNvbHVtbkZpbHRlcih0aGlzLmluamVjdG9yLCB0aGlzLnRhYmxlLCB0aGlzLmNvbHVtbiwgZmlsdGVyQnlDb2x1bW5EZWZpbml0aW9uKS5zdWJzY3JpYmUoXG4gICAgICB0YWJsZURhdGEgPT4ge1xuICAgICAgICBsZXQgc2VsZWN0ZWRWYWx1ZSA9IHRoaXMucm93W2NvbHVtbkF0dHJdO1xuICAgICAgICBpZiAoc291cmNlRGF0YVR5cGUgIT09ICdjdXJyZW50LXBhZ2UnICYmIHZpc2libGVDb2x1bW5zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgc2VsZWN0ZWRWYWx1ZSA9IHRhYmxlRGF0YS5maWx0ZXIocmVnaXN0cm8gPT5cbiAgICAgICAgICAgIHZpc2libGVDb2x1bW5zLnNvbWUocHJvcCA9PiByZWdpc3Ryb1twcm9wXSA9PT0gc2VsZWN0ZWRWYWx1ZSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyOiBPQ29sdW1uVmFsdWVGaWx0ZXIgPVxuICAgICAgICAgIHRoaXMudGFibGUuZGF0YVNvdXJjZS5nZXRDb2x1bW5WYWx1ZUZpbHRlckJ5QXR0cih0aGlzLmNvbHVtbi5hdHRyKSA/P1xuICAgICAgICAgIHRoaXMuY3JlYXRlQ29sdW1uVmFsdWVGaWx0ZXIoY29sdW1uQXR0ciwgc2VsZWN0ZWRWYWx1ZSwgc291cmNlRGF0YVR5cGUpO1xuXG4gICAgICAgIGxldCBjb2x1bW5EYXRhID0gZmlsdGVyU2VydmljZS5wYXJzZUxpc3REYXRhKGZpbHRlciwgdGhpcy5jb2x1bW4sIHRhYmxlRGF0YSwgdGhpcy50YWJsZS5wYWdlYWJsZSwgZmlsdGVyQnlDb2x1bW5EZWZpbml0aW9uKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLmdldFNlbGVjdGVkVmFsdWVzKGNvbHVtbkRhdGEsIHNlbGVjdGVkVmFsdWUpO1xuICAgICAgICBmaWx0ZXJTZXJ2aWNlLmFwcGx5U2VsZWN0ZWRWYWx1ZXNUb0ZpbHRlcihcbiAgICAgICAgICB0aGlzLmNvbHVtbixcbiAgICAgICAgICB0YWJsZURhdGEsXG4gICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgIHNlbGVjdGVkVmFsdWVzLFxuICAgICAgICAgIGZpbHRlckJ5Q29sdW1uRGVmaW5pdGlvbixcbiAgICAgICAgICB0aGlzLnRhYmxlLnBhZ2VhYmxlLFxuICAgICAgICAgICgpID0+IHRoaXMudGFibGUuZ2V0Q29tcG9uZW50RmlsdGVyKClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnRhYmxlLmZpbHRlckJ5Q29sdW1uKGZpbHRlcik7XG4gICAgICB9XG4gICAgKVxuXG5cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ29sdW1uVmFsdWVGaWx0ZXIoYXR0cjogc3RyaW5nLCB2YWx1ZTogYW55LCBzb3VyY2VEYXRhOiAnY3VycmVudC1wYWdlJyB8ICdhbGwtZGF0YScpOiBPQ29sdW1uVmFsdWVGaWx0ZXIge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyLFxuICAgICAgb3BlcmF0b3I6IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuSU4sXG4gICAgICB2YWx1ZXM6IFt2YWx1ZV0sXG4gICAgICBhdmFpbGFibGVWYWx1ZXM6IG51bGwsXG4gICAgICBmaWx0ZXJWYWx1ZXNJbkRhdGE6IHNvdXJjZURhdGEsXG4gICAgICBmaWx0ZXJFeHByZXNpb246IHRoaXMudGFibGUuZ2V0Q29tcG9uZW50RmlsdGVyKCkgPz8gdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRWYWx1ZXMoY29sdW1uRGF0YTogVGFibGVGaWx0ZXJCeUNvbHVtbkRhdGFbXSwgdGFyZ2V0VmFsdWU6IGFueSk6IFRhYmxlRmlsdGVyQnlDb2x1bW5EYXRhW10ge1xuICAgIHJldHVybiBjb2x1bW5EYXRhLmZpbHRlcihpdGVtID0+IGl0ZW0udmFsdWUgPT09IHRhcmdldFZhbHVlICYmIGl0ZW0uc2VsZWN0ZWQpO1xuICB9XG5cbiAgcHVibGljIGdyb3VwQnlDb2x1bW4oZGF0ZVR5cGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlLmdyb3VwQnlDb2x1bW4odGhpcy5jb2x1bW4sIGRhdGVUeXBlKTtcbiAgICB0aGlzLmlzRW5hYmxlZEdyb3VwQnlDb2x1bW4ubmV4dChmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgdW5Hcm91cEJ5Q29sdW1uKCk6IHZvaWQge1xuICAgIHRoaXMudGFibGUudW5Hcm91cEJ5Q29sdW1uKHRoaXMuY29sdW1uKTtcbiAgfVxuXG4gIHB1YmxpYyB1bkdyb3VwQWxsKCk6IHZvaWQge1xuICAgIHRoaXMudGFibGUudW5Hcm91cEJ5QWxsQ29sdW1ucygpO1xuICB9XG5cbiAgZ2V0IGxhYmVsRmlsdGVyQnlDb2x1bW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY29sdW1uICYmIHRoaXMuY29sdW1uLnRpdGxlKSA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoJ1RBQkxFX0NPTlRFWFRfTUVOVS5GSUxURVJfQlknKSArICcgJyArIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQodGhpcy5jb2x1bW4udGl0bGUpIDogJyc7XG4gIH1cblxuICBnZXQgbGFiZWxHcm91cEJ5Q29sdW1uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNvbHVtbiAmJiB0aGlzLmNvbHVtbi50aXRsZSkgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdUQUJMRV9DT05URVhUX01FTlUuR1JPVVBfQllfQ09MVU1OJykgKyAnICcgKyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRoaXMuY29sdW1uLnRpdGxlKSA6ICcnO1xuICB9XG5cbiAgZ2V0IGxhYmVsVW5Hcm91cEJ5Q29sdW1uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNvbHVtbiAmJiB0aGlzLmNvbHVtbi50aXRsZSkgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdUQUJMRV9DT05URVhUX01FTlUuVU5HUk9VUF9CWV9DT0xVTU4nKSArICcgJyArIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQodGhpcy5jb2x1bW4udGl0bGUpIDogJyc7XG4gIH1cblxuICBnZXQgcm93KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdztcbiAgfVxuXG4gIHNldCByb3codmFsdWU6IGFueSkge1xuICAgIHRoaXMuX3JvdyA9IHZhbHVlLnJvd1ZhbHVlO1xuICAgIGNvbnN0IGlzVGFibGVHcm91cGVkUm93ID0gdGhpcy5fcm93IGluc3RhbmNlb2YgT1RhYmxlR3JvdXBlZFJvdztcbiAgICBsZXQgY29sdW1uTmFtZSA9IHZhbHVlLmNlbGxOYW1lO1xuICAgIGlmIChpc1RhYmxlR3JvdXBlZFJvdykge1xuICAgICAgY29sdW1uTmFtZSA9IGNvbHVtbk5hbWUuc3Vic3RyaW5nKCdncm91cEhlYWRlci0nLmxlbmd0aCk7XG4gICAgfVxuICAgIHRoaXMuY29sdW1uID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKGNvbHVtbk5hbWUpO1xuICAgIHRoaXMuaXNDb2x1bW5EYXRlKCk7XG4gICAgdGhpcy5pc0RhdGFDZWxsLm5leHQoIWlzVGFibGVHcm91cGVkUm93KTtcbiAgICB0aGlzLmlzVGFibGVHcm91cGVkUm93Lm5leHQoaXNUYWJsZUdyb3VwZWRSb3cpO1xuICAgIHRoaXMuaXNHcm91cGFibGVDZWxsLm5leHQoaXNUYWJsZUdyb3VwZWRSb3cgJiYgKHRoaXMuX3JvdyBhcyBPVGFibGVHcm91cGVkUm93KS5oYXNDb2x1bW5EYXRhKHRoaXMuY29sdW1uLmF0dHIpKTtcbiAgfVxuXG4gIGdldCBhdmFpbGFibGVDb2x1bW5BZ2dyZWdhdGVzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgcmVzdWx0ID0gVXRpbC5jb2x1bW5BZ2dyZWdhdGVzO1xuICAgIGlmICh0aGlzLnJvdyBpbnN0YW5jZW9mIE9UYWJsZUdyb3VwZWRSb3cpIHtcbiAgICAgIGNvbnN0IGdyb3VwaW5nQ29tcCA9IHRoaXMucm93LmdldENvbHVtbkdyb3VwaW5nQ29tcG9uZW50KHRoaXMuY29sdW1uLmF0dHIpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGdyb3VwaW5nQ29tcC5hZ2dyZWdhdGVOYW1lKSkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoKTtcbiAgICAgICAgaWYgKHJlc3VsdC5pbmNsdWRlcyhncm91cGluZ0NvbXAuYWdncmVnYXRlKSkge1xuICAgICAgICAgIHJlc3VsdC5zcGxpY2UocmVzdWx0LmluZGV4T2YoZ3JvdXBpbmdDb21wLmFnZ3JlZ2F0ZSksIDEsIGdyb3VwaW5nQ29tcC5hZ2dyZWdhdGVOYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQucHVzaChncm91cGluZ0NvbXAuYWdncmVnYXRlTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJCeUNvbHVtbihldmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRhYmxlLm9UYWJsZU1lbnUpIHtcbiAgICAgIHRoaXMudGFibGUuaXNDb2x1bW5GaWx0ZXJzQWN0aXZlID0gdHJ1ZTtcbiAgICAgIHRoaXMudGFibGUub3BlbkNvbHVtbkZpbHRlckRpYWxvZyh0aGlzLmNvbHVtbiwgZXZlbnQuZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjaGVja1Zpc2libGVGaWx0ZXIoKTogdm9pZCB7XG4gICAgbGV0IGlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmNvbHVtbikge1xuICAgICAgaXNWaXNpYmxlID0gdGhpcy5zaG93RmlsdGVyICYmIHRoaXMudGFibGUuaXNDb2x1bW5GaWx0ZXJhYmxlKHRoaXMuY29sdW1uKTtcbiAgICB9XG4gICAgdGhpcy5pc1Zpc2libGVGaWx0ZXIubmV4dChpc1Zpc2libGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBncm91cCBieSByb3cgb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIGNoZWNrR3JvdXBCeVJvd09wdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0VuYWJsZWRVbkdyb3VwQnlDb2x1bW4ubmV4dChmYWxzZSk7XG4gICAgdGhpcy5pc0VuYWJsZWRVbkdyb3VwQWxsQ29sdW1uLm5leHQoZmFsc2UpO1xuICAgIGxldCBncm91cGVkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuY29sdW1uLmdyb3VwYWJsZSAmJiAhVXRpbC5pc0FycmF5RW1wdHkodGhpcy50YWJsZS5ncm91cGVkQ29sdW1uc0FycmF5KSAmJiB0aGlzLmZvdW5kQ29sdW1uSW5Hcm91cGVkQ29sdW1ucyh0aGlzLmNvbHVtbikpIHtcbiAgICAgIHRoaXMuaXNFbmFibGVkVW5Hcm91cEJ5Q29sdW1uLm5leHQodHJ1ZSk7XG4gICAgICBncm91cGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLmlzRW5hYmxlZEdyb3VwQnlDb2x1bW4ubmV4dCh0aGlzLmNvbHVtbi5ncm91cGFibGUgJiYgIWdyb3VwZWQpO1xuICAgIGlmICghVXRpbC5pc0FycmF5RW1wdHkodGhpcy50YWJsZS5ncm91cGVkQ29sdW1uc0FycmF5KSkge1xuICAgICAgdGhpcy5pc0VuYWJsZWRVbkdyb3VwQWxsQ29sdW1uLm5leHQodHJ1ZSk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBmb3VuZENvbHVtbkluR3JvdXBlZENvbHVtbnMoY29sdW1uKTogYm9vbGVhbiB7XG4gICAgbGV0IGZvdW5kOiBib29sZWFuID0gZmFsc2U7XG4gICAgdGhpcy50YWJsZS5ncm91cGVkQ29sdW1uc0FycmF5LmZvckVhY2goZ3JvdXBlZENvbHVtbiA9PiB7IGlmIChncm91cGVkQ29sdW1uID09IGNvbHVtbi5hdHRyKSB7IGZvdW5kID0gdHJ1ZSB9IH0pO1xuICAgIHJldHVybiBmb3VuZDtcbiAgfVxuXG5cbiAgcHVibGljIGNoYW5nZUFnZ3JlZ2F0ZUZ1bmN0aW9uKGFyZzogYW55LCBhZ2dyZWdhdGVGbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChhcmcuZGF0YS5yb3dWYWx1ZSBpbnN0YW5jZW9mIE9UYWJsZUdyb3VwZWRSb3cpIHtcbiAgICAgIChhcmcuZGF0YS5yb3dWYWx1ZSBhcyBPVGFibGVHcm91cGVkUm93KS5zZXRDb2x1bW5BY3RpdmVBZ2dyZWdhdGVGdW5jdGlvbih0aGlzLmNvbHVtbi5hdHRyLCBhZ2dyZWdhdGVGbk5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0UHJvcGVydGllcyhwYXJhbTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGF0YSA9IHBhcmFtLmRhdGE7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChkYXRhKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJvdyA9IHsgcm93VmFsdWU6IGRhdGEucm93VmFsdWUsIGNlbGxOYW1lOiBkYXRhLmNlbGxOYW1lIH07XG4gICAgdGhpcy5jaGVja1Zpc2libGVGaWx0ZXIoKTtcbiAgICB0aGlzLmNoZWNrR3JvdXBCeVJvd09wdGlvbnMoKTtcbiAgfVxuXG4gIGV4cGFuZFJvd0dyb3Vwc1NhbWVMZXZlbCgpIHtcbiAgICB0aGlzLnRhYmxlLmRhdGFTb3VyY2Uuc2V0Um93R3JvdXBMZXZlbEV4cGFuc2lvbih0aGlzLl9yb3csIHRydWUpO1xuICB9XG5cbiAgY29sbGFwc2VSb3dHcm91cHNTYW1lTGV2ZWwoKSB7XG4gICAgdGhpcy50YWJsZS5kYXRhU291cmNlLnNldFJvd0dyb3VwTGV2ZWxFeHBhbnNpb24odGhpcy5fcm93LCBmYWxzZSk7XG5cbiAgfVxuICBpc0NvbHVtbkRhdGUoKSB7XG4gICAgdGhpcy5pc0RhdGVDb2x1bW4ubmV4dCh0aGlzLmNvbHVtbi50eXBlID09ICdkYXRlJyk7XG4gIH1cbn1cbiIsIjxvLWNvbnRleHQtbWVudSAjZGVmYXVsdENvbnRleHRNZW51PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0RhdGFDZWxsIHwgYXN5bmNcIj5cbiAgICA8by1jb250ZXh0LW1lbnUtaXRlbSBhdHRyPVwicmVmcmVzaFwiIGxhYmVsPVwiVEFCTEVfQ09OVEVYVF9NRU5VLlJFRlJFU0hcIiBzdmctaWNvbj1cIm9udGltaXplOmF1dG9yZW5ld1wiIChleGVjdXRlKT1cInJlZnJlc2goKVwiXG4gICAgICBbdmlzaWJsZV09XCJpc1Zpc2libGVSZWZyZXNoIHwgYXN5bmNcIj48L28tY29udGV4dC1tZW51LWl0ZW0+XG4gICAgPG8tY29udGV4dC1tZW51LWl0ZW0gYXR0cj1cImRldGFpbFwiIGljb249XCJjaGV2cm9uX3JpZ2h0XCIgbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuVklFV19ERVRBSUxcIiAoZXhlY3V0ZSk9XCJnb3RvRGV0YWlscygkZXZlbnQpXCJcbiAgICAgIFt2aXNpYmxlXT1cImlzVmlzaWJsZURldGFpbCB8IGFzeW5jXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgIDxvLWNvbnRleHQtbWVudS1pdGVtIGF0dHI9XCJlZGl0XCIgaWNvbj1cImVkaXRcIiBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5FRElUXCIgKGV4ZWN1dGUpPVwiZWRpdCgkZXZlbnQpXCIgW3Zpc2libGVdPVwiaXNWaXNpYmxlRWRpdCB8IGFzeW5jXCI+XG4gICAgPC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgIDxvLWNvbnRleHQtbWVudS1pdGVtIGF0dHI9XCJpbnNlcnRcIiBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5JTlNFUlRcIiBpY29uPVwiYWRkXCIgKGV4ZWN1dGUpPVwiYWRkKClcIiBbdmlzaWJsZV09XCJpc1Zpc2libGVJbnNlcnQgfCBhc3luY1wiPlxuICAgIDwvby1jb250ZXh0LW1lbnUtaXRlbT5cbiAgICA8by1jb250ZXh0LW1lbnUtaXRlbSBhdHRyPVwiZGVsZXRlXCIgbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuREVMRVRFXCIgaWNvbj1cImRlbGV0ZVwiIChleGVjdXRlKT1cImRlbGV0ZSgkZXZlbnQpXCIgW3Zpc2libGVdPVwiaXNWaXNpYmxlRGVsZXRlIHwgYXN5bmNcIj5cbiAgICA8L28tY29udGV4dC1tZW51LWl0ZW0+XG4gICAgPCEtLSBGSUxURVIgR1JPVVAgLS0+XG4gICAgPG8tY29udGV4dC1tZW51LWdyb3VwIGxhYmVsPVwiVEFCTEVfQ09OVEVYVF9NRU5VLkZJTFRFUlwiIGljb249XCJmaWx0ZXJfYWx0XCIgdHlwZT1cImdyb3VwXCIgW3Zpc2libGVdPVwiaXNWaXNpYmxlRmlsdGVyIHwgYXN5bmNcIj5cbiAgICAgIDxvLWNvbnRleHQtbWVudS1pdGVtIGljb249XCJmaWx0ZXJfYWx0XCIgW2xhYmVsXT1cImxhYmVsRmlsdGVyQnlDb2x1bW5cIiAoZXhlY3V0ZSk9XCJmaWx0ZXJCeUNvbHVtbigkZXZlbnQpXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgICAgPG8tY29udGV4dC1tZW51LWl0ZW0gaWNvbj1cImZpbHRlcl9hbHRcIiBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5GSUxURVJfQllfVkFMVUVcIiAoZXhlY3V0ZSk9XCJmaWx0ZXJCeVZhbHVlKClcIj48L28tY29udGV4dC1tZW51LWl0ZW0+XG4gICAgPC9vLWNvbnRleHQtbWVudS1ncm91cD5cbiAgICA8IS0tIENPUFkgR1JPVVAgLS0+XG4gICAgPG8tY29udGV4dC1tZW51LXNlcGFyYXRvciBbdmlzaWJsZV09XCJpc1Zpc2libGVDb3B5IHwgYXN5bmNcIj48L28tY29udGV4dC1tZW51LXNlcGFyYXRvcj5cbiAgICA8by1jb250ZXh0LW1lbnUtZ3JvdXAgbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuQ09QWVwiIGljb249XCJmaWxlX2NvcHlcIiB0eXBlPVwiZ3JvdXBcIiBbdmlzaWJsZV09XCJpc1Zpc2libGVDb3B5IHwgYXN5bmNcIj5cbiAgICAgIDxvLWNvbnRleHQtbWVudS1pdGVtIGljb249XCJmaWxlX2NvcHlcIiBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5DT1BZX0NFTExcIiAoZXhlY3V0ZSk9XCJjb3B5Q2VsbCgkZXZlbnQpXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgICAgPG8tY29udGV4dC1tZW51LWl0ZW0gaWNvbj1cImZpbGVfY29weVwiIGxhYmVsPVwiVEFCTEVfQ09OVEVYVF9NRU5VLkNPUFlfUk9XXCIgKGV4ZWN1dGUpPVwiY29weVJvdygkZXZlbnQpXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgICAgPG8tY29udGV4dC1tZW51LWl0ZW0gbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuQ09QWV9BTExcIiBpY29uPVwiZmlsZV9jb3B5XCIgKGV4ZWN1dGUpPVwiY29weUFsbCgpXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgICAgPG8tY29udGV4dC1tZW51LWl0ZW0gbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuQ09QWV9TRUxFQ1RJT05cIiBpY29uPVwiZmlsZV9jb3B5XCIgKGV4ZWN1dGUpPVwiY29weVNlbGVjdGlvbigpXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgIDwvby1jb250ZXh0LW1lbnUtZ3JvdXA+XG4gICAgPG8tY29udGV4dC1tZW51LXNlcGFyYXRvciBbdmlzaWJsZV09XCJpc1Zpc2libGVTZWxlY3RBbGwgfCBhc3luY1wiPjwvby1jb250ZXh0LW1lbnUtc2VwYXJhdG9yPlxuICAgIDxvLWNvbnRleHQtbWVudS1pdGVtIGF0dHI9XCJzZWxlY3QtYWxsXCIgW2xhYmVsXT1cInRhYmxlLmlzQWxsU2VsZWN0ZWQoKSA/ICdUQUJMRV9DT05URVhUX01FTlUuREVTRUxFQ1RfQUxMJzogJ1RBQkxFX0NPTlRFWFRfTUVOVS5TRUxFQ1RfQUxMJ1wiXG4gICAgICBpY29uPVwic2VsZWN0X2FsbFwiIChleGVjdXRlKT1cInRhYmxlLmlzQWxsU2VsZWN0ZWQoKSA/IHVuU2VsZWN0QWxsKCkgOiBzZWxlY3RBbGwoKVwiIFt2aXNpYmxlXT1cImlzVmlzaWJsZVNlbGVjdEFsbCB8IGFzeW5jXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuXG4gICAgPCEtLSBHUk9VUCBCWSAtLT5cbiAgICA8by1jb250ZXh0LW1lbnUtc2VwYXJhdG9yIFt2aXNpYmxlXT1cImlzVmlzaWJsZUdyb3VwQnlSb3cgfCBhc3luY1wiPjwvby1jb250ZXh0LW1lbnUtc2VwYXJhdG9yPlxuICAgIDxvLWNvbnRleHQtbWVudS1ncm91cCBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5HUk9VUF9CWVwiIGljb249XCJmb3JtYXRfaW5kZW50X2luY3JlYXNlXCIgdHlwZT1cImdyb3VwXCIgW3Zpc2libGVdPVwiaXNWaXNpYmxlR3JvdXBCeVJvdyB8IGFzeW5jXCI+XG4gICAgICA8by1jb250ZXh0LW1lbnUtaXRlbSAqbmdJZj1cImlzRGF0ZUNvbHVtbiB8IGFzeW5jXCIgbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuR1JPVVBfQllfWUVBUlwiIChleGVjdXRlKT1cImdyb3VwQnlDb2x1bW4oJ1lFQVInKVwiXG4gICAgICAgIGljb249XCJmb3JtYXRfaW5kZW50X2luY3JlYXNlXCIgdHlwZT1cImdyb3VwXCIgW3Zpc2libGVdPVwiaXNWaXNpYmxlR3JvdXBCeVJvdyB8IGFzeW5jXCIgW2VuYWJsZWRdPVwiaXNFbmFibGVkR3JvdXBCeUNvbHVtbiB8IGFzeW5jXCI+XG4gICAgICA8L28tY29udGV4dC1tZW51LWl0ZW0+XG4gICAgICA8by1jb250ZXh0LW1lbnUtaXRlbSAqbmdJZj1cImlzRGF0ZUNvbHVtbiB8IGFzeW5jXCIgbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuR1JPVVBfQllfTU9OVEhcIiAoZXhlY3V0ZSk9XCJncm91cEJ5Q29sdW1uKCdNT05USCcpXCJcbiAgICAgICAgaWNvbj1cImZvcm1hdF9pbmRlbnRfaW5jcmVhc2VcIiB0eXBlPVwiZ3JvdXBcIiBbdmlzaWJsZV09XCJpc1Zpc2libGVHcm91cEJ5Um93IHwgYXN5bmNcIiBbZW5hYmxlZF09XCJpc0VuYWJsZWRHcm91cEJ5Q29sdW1uIHwgYXN5bmNcIj5cbiAgICAgIDwvby1jb250ZXh0LW1lbnUtaXRlbT5cbiAgICAgIDxvLWNvbnRleHQtbWVudS1pdGVtICpuZ0lmPVwiaXNEYXRlQ29sdW1uIHwgYXN5bmNcIiBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5HUk9VUF9CWV9ZRUFSX01PTlRIXCIgaWNvbj1cImZvcm1hdF9pbmRlbnRfaW5jcmVhc2VcIiB0eXBlPVwiZ3JvdXBcIlxuICAgICAgICAoZXhlY3V0ZSk9XCJncm91cEJ5Q29sdW1uKCdZRUFSX01PTlRIJylcIiBbdmlzaWJsZV09XCJpc1Zpc2libGVHcm91cEJ5Um93IHwgYXN5bmNcIiBbZW5hYmxlZF09XCJpc0VuYWJsZWRHcm91cEJ5Q29sdW1uIHwgYXN5bmNcIj5cbiAgICAgIDwvby1jb250ZXh0LW1lbnUtaXRlbT5cbiAgICAgIDxvLWNvbnRleHQtbWVudS1pdGVtICpuZ0lmPVwiaXNEYXRlQ29sdW1uIHwgYXN5bmNcIiBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5HUk9VUF9CWV9ZRUFSX01PTlRIX0RBWVwiIGljb249XCJmb3JtYXRfaW5kZW50X2luY3JlYXNlXCIgdHlwZT1cImdyb3VwXCJcbiAgICAgICAgKGV4ZWN1dGUpPVwiZ3JvdXBCeUNvbHVtbignWUVBUl9NT05USF9EQVknKVwiIFt2aXNpYmxlXT1cImlzVmlzaWJsZUdyb3VwQnlSb3cgfCBhc3luY1wiIFtlbmFibGVkXT1cImlzRW5hYmxlZEdyb3VwQnlDb2x1bW4gfCBhc3luY1wiPlxuICAgICAgPC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgICAgPG8tY29udGV4dC1tZW51LWl0ZW0gKm5nSWY9XCIhKGlzRGF0ZUNvbHVtbiB8IGFzeW5jKVwiIGljb249XCJmb3JtYXRfaW5kZW50X2luY3JlYXNlXCIgW2xhYmVsXT1cImxhYmVsR3JvdXBCeUNvbHVtblwiIChleGVjdXRlKT1cImdyb3VwQnlDb2x1bW4oKVwiXG4gICAgICAgIFtlbmFibGVkXT1cImlzRW5hYmxlZEdyb3VwQnlDb2x1bW4gfCBhc3luY1wiPjwvby1jb250ZXh0LW1lbnUtaXRlbT5cbiAgICAgIDxvLWNvbnRleHQtbWVudS1pdGVtICpuZ0lmPVwiaXNFbmFibGVkVW5Hcm91cEJ5Q29sdW1uIHwgYXN5bmNcIiBpY29uPVwiZm9ybWF0X2luZGVudF9kZWNyZWFzZVwiIFtsYWJlbF09XCJsYWJlbFVuR3JvdXBCeUNvbHVtblwiXG4gICAgICAgIChleGVjdXRlKT1cInVuR3JvdXBCeUNvbHVtbigpXCIgW2VuYWJsZWRdPVwiaXNFbmFibGVkVW5Hcm91cEJ5Q29sdW1uIHwgYXN5bmNcIj48L28tY29udGV4dC1tZW51LWl0ZW0+XG4gICAgICA8by1jb250ZXh0LW1lbnUtaXRlbSBpY29uPVwiZm9ybWF0X2xpbmVfc3BhY2luZ1wiIGxhYmVsPVwiVEFCTEVfQ09OVEVYVF9NRU5VLlVOR1JPVVBfQUxMQ09MVU1OU1wiIChleGVjdXRlKT1cInVuR3JvdXBBbGwoKVwiXG4gICAgICAgIFtlbmFibGVkXT1cImlzRW5hYmxlZFVuR3JvdXBBbGxDb2x1bW4gfCBhc3luY1wiPlxuICAgICAgPC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgIDwvby1jb250ZXh0LW1lbnUtZ3JvdXA+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gR1JPVVAgQlkgSEVBREVSIENFTEwgQUdHUkVHQVRFIEZVTkNUSU9OIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNHcm91cGFibGVDZWxsIHwgYXN5bmNcIj5cbiAgICA8by1jb250ZXh0LW1lbnUtZ3JvdXAgbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuR1JPVVBfQlkuQUdHUkVHQVRFX0ZVTkNUSU9OXCIgaWNvbj1cImZvcm1hdF9pbmRlbnRfaW5jcmVhc2VcIiB0eXBlPVwiZ3JvdXBcIj5cbiAgICAgIDxvLWNvbnRleHQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBhZ2dyZWdhdGVGbiBvZiBhdmFpbGFibGVDb2x1bW5BZ2dyZWdhdGVzXCIgbGFiZWw9XCJ7eyAnQUdHUkVHQVRFX05BTUUuJyArIGFnZ3JlZ2F0ZUZuIH19XCJcbiAgICAgICAgKGV4ZWN1dGUpPVwiY2hhbmdlQWdncmVnYXRlRnVuY3Rpb24oJGV2ZW50LCBhZ2dyZWdhdGVGbilcIj48L28tY29udGV4dC1tZW51LWl0ZW0+XG4gICAgPC9vLWNvbnRleHQtbWVudS1ncm91cD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGFibGVHcm91cGVkUm93IHwgYXN5bmNcIj5cbiAgICA8by1jb250ZXh0LW1lbnUtaXRlbSBpY29uPVwidW5mb2xkX21vcmVcIiBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5FWFBBTkRfQUxMX0dST1VQU1wiIChleGVjdXRlKT1cImV4cGFuZFJvd0dyb3Vwc1NhbWVMZXZlbCgpXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgIDxvLWNvbnRleHQtbWVudS1pdGVtIGljb249XCJ1bmZvbGRfbGVzc1wiIGxhYmVsPVwiVEFCTEVfQ09OVEVYVF9NRU5VLkNPTExBUFNFX0FMTF9HUk9VUFNcIiAoZXhlY3V0ZSk9XCJjb2xsYXBzZVJvd0dyb3Vwc1NhbWVMZXZlbCgpXCI+XG4gICAgPC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICA8L25nLWNvbnRhaW5lcj5cblxuPC9vLWNvbnRleHQtbWVudT5cbiJdfQ==
|
|
351
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb250ZXh0LW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9jb250ZXh0bWVudS9vLXRhYmxlLWNvbnRleHQtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2NvbnRleHRtZW51L28tdGFibGUtY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDdkYsT0FBTyxFQUFFLHlCQUF5QixFQUFzQixNQUFNLG9EQUFvRCxDQUFDO0FBQ25ILE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUV0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUUxRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7O0FBRXRELE1BQU0sQ0FBQyxNQUFN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QUEwQixrbUJDakN2QywyM0xBc0VBO0FEMEJFO0lBQUMscUJBQXFCLEVBQUU7OzsrREFNdkI7NEZBckVVLDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDRSxzQkFBc0IsbUJBRWYsdUJBQXVCLENBQUMsTUFBTSxVQUN2QyxpQ0FBaUM7OzBCQW1JdEMsTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDOzRDQWpFbEMsYUFBYSxNQXlEUCxrQkFBa0I7c0JBRDNCLFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbmplY3RvciwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBPVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS9vLXRyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IsIE9Db2x1bW5WYWx1ZUZpbHRlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzL3RhYmxlL28tY29sdW1uLXZhbHVlLWZpbHRlci50eXBlJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0NvbnRleHRNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dG1lbnUvby1jb250ZXh0LW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgT0NvbHVtbiB9IGZyb20gJy4uLy4uL2NvbHVtbi9vLWNvbHVtbi5jbGFzcyc7XG5pbXBvcnQgeyBPVGFibGVHcm91cGVkUm93IH0gZnJvbSAnLi4vcm93L28tdGFibGUtcm93LWdyb3VwLmNsYXNzJztcbmltcG9ydCB7IE9UYWJsZUZpbHRlckJ5Q29sdW1uU2VydmljZSB9IGZyb20gJy4uL2RpYWxvZy9maWx0ZXItYnktY29sdW1uL28tdGFibGUtZmlsdGVyLWJ5LWNvbHVtbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlRmlsdGVyQnlDb2x1bW5EYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMvdGFibGUvby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEudHlwZSc7XG5pbXBvcnQgeyBPVGFibGVCYXNlIH0gZnJvbSAnLi4vLi4vby10YWJsZS1iYXNlLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVEFCTEVfQ09OVEVYVF9NRU5VX0lOUFVUUyA9IFtcbiAgJ2NvbnRleHRNZW51OiBjb250ZXh0LW1lbnUnLFxuICAnc2hvd0luc2VydDogaW5zZXJ0JyxcbiAgJ3Nob3dFZGl0OiBlZGl0JyxcbiAgJ3Nob3dWaWV3RGV0YWlsOiB2aWV3LWRldGFpbCcsXG4gICdzaG93Q29weTogY29weScsXG4gICdzaG93U2VsZWN0QWxsOiBzZWxlY3QtYWxsJyxcbiAgJ3Nob3dSZWZyZXNoOiByZWZyZXNoJyxcbiAgJ3Nob3dEZWxldGU6IGRlbGV0ZScsXG4gICdzaG93RmlsdGVyOiBmaWx0ZXInLFxuICAnc2hvd0dyb3VwQnlSb3c6IGdyb3VwLWJ5LXJvdydcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY29udGV4dC1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdGFibGUtY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGlucHV0czogREVGQVVMVF9UQUJMRV9DT05URVhUX01FTlVfSU5QVVRTXG59KVxuZXhwb3J0IGNsYXNzIE9UYWJsZUNvbnRleHRNZW51Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHB1YmxpYyBjb250ZXh0TWVudTogT0NvbnRleHRNZW51Q29tcG9uZW50O1xuICBwdWJsaWMgaXNWaXNpYmxlSW5zZXJ0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuICBwdWJsaWMgaXNWaXNpYmxlRWRpdDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcbiAgcHVibGljIGlzVmlzaWJsZURldGFpbDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcbiAgcHVibGljIGlzVmlzaWJsZUNvcHk6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHB1YmxpYyBpc1Zpc2libGVTZWxlY3RBbGw6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHB1YmxpYyBpc1Zpc2libGVSZWZyZXNoOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuICBwdWJsaWMgaXNWaXNpYmxlRGVsZXRlOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuICBwdWJsaWMgaXNWaXNpYmxlRmlsdGVyOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuICBwdWJsaWMgaXNWaXNpYmxlR3JvdXBCeVJvdzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcbiAgcHVibGljIGlzRW5hYmxlZEdyb3VwQnlDb2x1bW46IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHB1YmxpYyBpc0VuYWJsZWRVbkdyb3VwQnlDb2x1bW46IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwdWJsaWMgaXNFbmFibGVkVW5Hcm91cEFsbENvbHVtbjogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIGlzRGF0YUNlbGw6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHB1YmxpYyBpc1RhYmxlR3JvdXBlZFJvdzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcbiAgcHVibGljIGlzR3JvdXBhYmxlQ2VsbDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcblxuICBzZXQgc2hvd0luc2VydCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykge1xuICAgICAgdmFsdWUgPSBVdGlsLnBhcnNlQm9vbGVhbih2YWx1ZSBhcyBhbnkpO1xuICAgIH1cbiAgICB0aGlzLmlzVmlzaWJsZUluc2VydC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBzaG93SW5zZXJ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZUluc2VydC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgc2V0IHNob3dFZGl0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB2YWx1ZSA9IFV0aWwucGFyc2VCb29sZWFuKHZhbHVlIGFzIGFueSk7XG4gICAgfVxuICAgIHRoaXMuaXNWaXNpYmxlRWRpdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBzaG93RWRpdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1Zpc2libGVFZGl0LmdldFZhbHVlKCk7XG4gIH1cblxuICBzZXQgc2hvd1ZpZXdEZXRhaWwodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHZhbHVlID0gVXRpbC5wYXJzZUJvb2xlYW4odmFsdWUgYXMgYW55KTtcbiAgICB9XG4gICAgdGhpcy5pc1Zpc2libGVEZXRhaWwubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2hvd1ZpZXdEZXRhaWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlRGV0YWlsLmdldFZhbHVlKCk7XG4gIH1cblxuICBzZXQgc2hvd0NvcHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHZhbHVlID0gVXRpbC5wYXJzZUJvb2xlYW4odmFsdWUgYXMgYW55KTtcbiAgICB9XG4gICAgdGhpcy5pc1Zpc2libGVDb3B5Lm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNob3dDb3B5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZUNvcHkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzZXQgc2hvd1NlbGVjdEFsbCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykge1xuICAgICAgdmFsdWUgPSBVdGlsLnBhcnNlQm9vbGVhbih2YWx1ZSBhcyBhbnkpO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlLmlzU2VsZWN0aW9uTW9kZU5vbmUoKSA/IHRoaXMuaXNWaXNpYmxlU2VsZWN0QWxsLm5leHQoZmFsc2UpIDogdGhpcy5pc1Zpc2libGVTZWxlY3RBbGwubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2hvd1NlbGVjdEFsbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1Zpc2libGVTZWxlY3RBbGwuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHNldCBzaG93UmVmcmVzaCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykge1xuICAgICAgdmFsdWUgPSBVdGlsLnBhcnNlQm9vbGVhbih2YWx1ZSBhcyBhbnkpO1xuICAgIH1cbiAgICB0aGlzLmlzVmlzaWJsZVJlZnJlc2gubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2hvd1JlZnJlc2goKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlUmVmcmVzaC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgc2V0IHNob3dEZWxldGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHZhbHVlID0gVXRpbC5wYXJzZUJvb2xlYW4odmFsdWUgYXMgYW55KTtcbiAgICB9XG4gICAgdGhpcy5pc1Zpc2libGVEZWxldGUubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2hvd0RlbGV0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1Zpc2libGVEZWxldGUuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHNldCBzaG93RmlsdGVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB2YWx1ZSA9IFV0aWwucGFyc2VCb29sZWFuKHZhbHVlIGFzIGFueSk7XG4gICAgfVxuICAgIHRoaXMuaXNWaXNpYmxlRmlsdGVyLm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNob3dGaWx0ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlRmlsdGVyLmdldFZhbHVlKCk7XG4gIH1cblxuICBzZXQgc2hvd0dyb3VwQnlSb3codmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHZhbHVlID0gVXRpbC5wYXJzZUJvb2xlYW4odmFsdWUgYXMgYW55KTtcbiAgICB9XG4gICAgdGhpcy5pc1Zpc2libGVHcm91cEJ5Um93Lm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNob3dHcm91cEJ5Um93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZUdyb3VwQnlSb3cuZ2V0VmFsdWUoKTtcbiAgfVxuXG5cbiAgQFZpZXdDaGlsZCgnZGVmYXVsdENvbnRleHRNZW51JylcbiAgcHJvdGVjdGVkIGRlZmF1bHRDb250ZXh0TWVudTogT0NvbnRleHRNZW51Q29tcG9uZW50O1xuICBwcm90ZWN0ZWQgX3JvdzogYW55O1xuICBwcm90ZWN0ZWQgY29sdW1uOiBPQ29sdW1uO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogT1RyYW5zbGF0ZVNlcnZpY2U7XG4gIHByb3RlY3RlZCBjb250ZXh0TWVudVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwdWJsaWMgaXNEYXRlQ29sdW1uOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT1RhYmxlQmFzZSkpIHB1YmxpYyB0YWJsZTogT1RhYmxlQmFzZVxuICApIHtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPVHJhbnNsYXRlU2VydmljZSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5zaG93U2VsZWN0QWxsKSkge1xuICAgICAgdGhpcy5pc1Zpc2libGVTZWxlY3RBbGwubmV4dCh0aGlzLnRhYmxlLnNlbGVjdEFsbENoZWNrYm94KTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnRhYmxlLmdyb3VwYWJsZSkge1xuICAgICAgdGhpcy5pc1Zpc2libGVHcm91cEJ5Um93Lm5leHQodGhpcy50YWJsZS5ncm91cGFibGUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb250ZXh0TWVudSkge1xuICAgICAgdGhpcy5kZWZhdWx0Q29udGV4dE1lbnUuZXh0ZXJuYWxDb250ZXh0TWVudUl0ZW1zID0gdGhpcy5jb250ZXh0TWVudS5vQ29udGV4dE1lbnVJdGVtcztcbiAgICB9XG4gICAgdGhpcy50YWJsZS5yZWdpc3RlckNvbnRleHRNZW51KHRoaXMuZGVmYXVsdENvbnRleHRNZW51KTtcbiAgICB0aGlzLnJlZ2lzdGVyQ29udGV4dE1lbnVMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckNvbnRleHRNZW51TGlzdGVuZXJzKCkge1xuICAgIHRoaXMuY29udGV4dE1lbnVTdWJzY3JpcHRpb24uYWRkKHRoaXMuZGVmYXVsdENvbnRleHRNZW51Lm9uQ2xvc2Uuc3Vic2NyaWJlKChwYXJhbTogYW55KSA9PiB7XG4gICAgICBpZiAoIXRoaXMudGFibGUuaXNTZWxlY3Rpb25Nb2RlTXVsdGlwbGUoKSkge1xuICAgICAgICB0aGlzLnRhYmxlLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgdGhpcy5jb250ZXh0TWVudVN1YnNjcmlwdGlvbi5hZGQodGhpcy5kZWZhdWx0Q29udGV4dE1lbnUub25TaG93LnN1YnNjcmliZSgocGFyYW06IGFueSkgPT4ge1xuICAgICAgdGhpcy5pbml0UHJvcGVydGllcyhwYXJhbSk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIGdvdG9EZXRhaWxzKGV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZGF0YSA9IGV2ZW50LmRhdGEucm93VmFsdWU7XG4gICAgdGhpcy50YWJsZS52aWV3RGV0YWlsKGRhdGEpO1xuICB9XG5cbiAgcHVibGljIGVkaXQoZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlLmRvSGFuZGxlQ2xpY2soZXZlbnQuZGF0YS5yb3dWYWx1ZSwgZXZlbnQuZGF0YS5jZWxsTmFtZSwgZXZlbnQuZGF0YS5yb3dJbmRleCwgZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIGFkZCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlLmFkZCgpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlLnNob3dBbmRTZWxlY3RBbGxDaGVja2JveCgpO1xuICB9XG5cbiAgcHVibGljIHVuU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMudGFibGUuc2VsZWN0aW9uLmNsZWFyKCk7XG4gIH1cblxuICBwdWJsaWMgY29weUFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlLmNvcHlBbGwoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb3B5Q2VsbChldmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNlbGxfZGF0YSA9IHRoaXMuZGVmYXVsdENvbnRleHRNZW51Lm9yaWdpbi5pbm5lclRleHQ7XG4gICAgVXRpbC5jb3B5VG9DbGlwYm9hcmQoY2VsbF9kYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBjb3B5U2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMudGFibGUuY29weVNlbGVjdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGNvcHlSb3coZXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5zdHJpbmdpZnkodGhpcy50YWJsZS5kYXRhU291cmNlLmdldFJlbmRlcmVkRGF0YShbZXZlbnQuZGF0YS5yb3dWYWx1ZV0pKTtcbiAgICBVdGlsLmNvcHlUb0NsaXBib2FyZChkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGUoZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlLnJlbW92ZSgpO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy50YWJsZS5yZWZyZXNoKCk7XG4gIH1cblxuICBwdWJsaWMgZmlsdGVyQnlWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT1RhYmxlRmlsdGVyQnlDb2x1bW5TZXJ2aWNlKTtcblxuICAgIGNvbnN0IGNvbHVtbkF0dHIgPSB0aGlzLmNvbHVtbi5hdHRyO1xuICAgIGNvbnN0IGZpbHRlckJ5Q29sdW1uRGVmaW5pdGlvbiA9IHRoaXMudGFibGUuZ2V0RmlsdGVyQ29sdW1uQnlBdHRyKHRoaXMuY29sdW1uLmF0dHIpO1xuICAgIGNvbnN0IHNvdXJjZURhdGFUeXBlID0gZmlsdGVyQnlDb2x1bW5EZWZpbml0aW9uLmZpbHRlclZhbHVlc0luRGF0YTtcbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGZpbHRlckJ5Q29sdW1uRGVmaW5pdGlvbi52aXNpYmxlQ29sdW1ucztcblxuICAgIGZpbHRlclNlcnZpY2UuZ2V0RGF0YUZvckNvbHVtbkZpbHRlcih0aGlzLmluamVjdG9yLCB0aGlzLnRhYmxlLCB0aGlzLmNvbHVtbiwgZmlsdGVyQnlDb2x1bW5EZWZpbml0aW9uKS5zdWJzY3JpYmUoXG4gICAgICB0YWJsZURhdGEgPT4ge1xuICAgICAgICBsZXQgc2VsZWN0ZWRWYWx1ZSA9IHRoaXMucm93W2NvbHVtbkF0dHJdO1xuICAgICAgICBpZiAoc291cmNlRGF0YVR5cGUgIT09ICdjdXJyZW50LXBhZ2UnICYmIHZpc2libGVDb2x1bW5zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgc2VsZWN0ZWRWYWx1ZSA9IHRhYmxlRGF0YS5maWx0ZXIocmVnaXN0cm8gPT5cbiAgICAgICAgICAgIHZpc2libGVDb2x1bW5zLnNvbWUocHJvcCA9PiByZWdpc3Ryb1twcm9wXSA9PT0gc2VsZWN0ZWRWYWx1ZSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyOiBPQ29sdW1uVmFsdWVGaWx0ZXIgPVxuICAgICAgICAgIHRoaXMudGFibGUuZGF0YVNvdXJjZS5nZXRDb2x1bW5WYWx1ZUZpbHRlckJ5QXR0cih0aGlzLmNvbHVtbi5hdHRyKSA/P1xuICAgICAgICAgIHRoaXMuY3JlYXRlQ29sdW1uVmFsdWVGaWx0ZXIoY29sdW1uQXR0ciwgc2VsZWN0ZWRWYWx1ZSwgc291cmNlRGF0YVR5cGUpO1xuXG4gICAgICAgIGxldCBjb2x1bW5EYXRhID0gZmlsdGVyU2VydmljZS5wYXJzZUxpc3REYXRhKGZpbHRlciwgdGhpcy5jb2x1bW4sIHRhYmxlRGF0YSwgdGhpcy50YWJsZS5wYWdlYWJsZSwgZmlsdGVyQnlDb2x1bW5EZWZpbml0aW9uKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLmdldFNlbGVjdGVkVmFsdWVzKGNvbHVtbkRhdGEsIHNlbGVjdGVkVmFsdWUpO1xuICAgICAgICBmaWx0ZXJTZXJ2aWNlLmFwcGx5U2VsZWN0ZWRWYWx1ZXNUb0ZpbHRlcihcbiAgICAgICAgICB0aGlzLmNvbHVtbixcbiAgICAgICAgICB0YWJsZURhdGEsXG4gICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgIHNlbGVjdGVkVmFsdWVzLFxuICAgICAgICAgIGZpbHRlckJ5Q29sdW1uRGVmaW5pdGlvbixcbiAgICAgICAgICB0aGlzLnRhYmxlLnBhZ2VhYmxlLFxuICAgICAgICAgICgpID0+IHRoaXMudGFibGUuZ2V0Q29tcG9uZW50RmlsdGVyKClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnRhYmxlLmZpbHRlckJ5Q29sdW1uKGZpbHRlcik7XG4gICAgICB9XG4gICAgKVxuXG5cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ29sdW1uVmFsdWVGaWx0ZXIoYXR0cjogc3RyaW5nLCB2YWx1ZTogYW55LCBzb3VyY2VEYXRhOiAnY3VycmVudC1wYWdlJyB8ICdhbGwtZGF0YScpOiBPQ29sdW1uVmFsdWVGaWx0ZXIge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyLFxuICAgICAgb3BlcmF0b3I6IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuSU4sXG4gICAgICB2YWx1ZXM6IFt2YWx1ZV0sXG4gICAgICBhdmFpbGFibGVWYWx1ZXM6IG51bGwsXG4gICAgICBmaWx0ZXJWYWx1ZXNJbkRhdGE6IHNvdXJjZURhdGEsXG4gICAgICBmaWx0ZXJFeHByZXNpb246IHRoaXMudGFibGUuZ2V0Q29tcG9uZW50RmlsdGVyKCkgPz8gdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRWYWx1ZXMoY29sdW1uRGF0YTogVGFibGVGaWx0ZXJCeUNvbHVtbkRhdGFbXSwgdGFyZ2V0VmFsdWU6IGFueSk6IFRhYmxlRmlsdGVyQnlDb2x1bW5EYXRhW10ge1xuICAgIHJldHVybiBjb2x1bW5EYXRhLmZpbHRlcihpdGVtID0+IGl0ZW0udmFsdWUgPT09IHRhcmdldFZhbHVlICYmIGl0ZW0uc2VsZWN0ZWQpO1xuICB9XG5cbiAgcHVibGljIGdyb3VwQnlDb2x1bW4oZGF0ZVR5cGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlLmdyb3VwQnlDb2x1bW4odGhpcy5jb2x1bW4sIGRhdGVUeXBlKTtcbiAgICB0aGlzLmlzRW5hYmxlZEdyb3VwQnlDb2x1bW4ubmV4dChmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgdW5Hcm91cEJ5Q29sdW1uKCk6IHZvaWQge1xuICAgIHRoaXMudGFibGUudW5Hcm91cEJ5Q29sdW1uKHRoaXMuY29sdW1uKTtcbiAgfVxuXG4gIHB1YmxpYyB1bkdyb3VwQWxsKCk6IHZvaWQge1xuICAgIHRoaXMudGFibGUudW5Hcm91cEJ5QWxsQ29sdW1ucygpO1xuICB9XG5cbiAgZ2V0IGxhYmVsRmlsdGVyQnlDb2x1bW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY29sdW1uICYmIHRoaXMuY29sdW1uLnRpdGxlKSA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoJ1RBQkxFX0NPTlRFWFRfTUVOVS5GSUxURVJfQlknKSArICcgJyArIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQodGhpcy5jb2x1bW4udGl0bGUpIDogJyc7XG4gIH1cblxuICBnZXQgbGFiZWxHcm91cEJ5Q29sdW1uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNvbHVtbiAmJiB0aGlzLmNvbHVtbi50aXRsZSkgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdUQUJMRV9DT05URVhUX01FTlUuR1JPVVBfQllfQ09MVU1OJykgKyAnICcgKyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRoaXMuY29sdW1uLnRpdGxlKSA6ICcnO1xuICB9XG5cbiAgZ2V0IGxhYmVsVW5Hcm91cEJ5Q29sdW1uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNvbHVtbiAmJiB0aGlzLmNvbHVtbi50aXRsZSkgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdUQUJMRV9DT05URVhUX01FTlUuVU5HUk9VUF9CWV9DT0xVTU4nKSArICcgJyArIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQodGhpcy5jb2x1bW4udGl0bGUpIDogJyc7XG4gIH1cblxuICBnZXQgcm93KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdztcbiAgfVxuXG4gIHNldCByb3codmFsdWU6IGFueSkge1xuICAgIHRoaXMuX3JvdyA9IHZhbHVlLnJvd1ZhbHVlO1xuICAgIGNvbnN0IGlzVGFibGVHcm91cGVkUm93ID0gdGhpcy5fcm93IGluc3RhbmNlb2YgT1RhYmxlR3JvdXBlZFJvdztcbiAgICBsZXQgY29sdW1uTmFtZSA9IHZhbHVlLmNlbGxOYW1lO1xuICAgIGlmIChpc1RhYmxlR3JvdXBlZFJvdykge1xuICAgICAgY29sdW1uTmFtZSA9IGNvbHVtbk5hbWUuc3Vic3RyaW5nKCdncm91cEhlYWRlci0nLmxlbmd0aCk7XG4gICAgfVxuICAgIHRoaXMuY29sdW1uID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKGNvbHVtbk5hbWUpO1xuICAgIHRoaXMuaXNDb2x1bW5EYXRlKCk7XG4gICAgdGhpcy5pc0RhdGFDZWxsLm5leHQoIWlzVGFibGVHcm91cGVkUm93KTtcbiAgICB0aGlzLmlzVGFibGVHcm91cGVkUm93Lm5leHQoaXNUYWJsZUdyb3VwZWRSb3cpO1xuICAgIHRoaXMuaXNHcm91cGFibGVDZWxsLm5leHQoaXNUYWJsZUdyb3VwZWRSb3cgJiYgKHRoaXMuX3JvdyBhcyBPVGFibGVHcm91cGVkUm93KS5oYXNDb2x1bW5EYXRhKHRoaXMuY29sdW1uLmF0dHIpKTtcbiAgfVxuXG4gIGdldCBhdmFpbGFibGVDb2x1bW5BZ2dyZWdhdGVzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgcmVzdWx0ID0gVXRpbC5jb2x1bW5BZ2dyZWdhdGVzO1xuICAgIGlmICh0aGlzLnJvdyBpbnN0YW5jZW9mIE9UYWJsZUdyb3VwZWRSb3cpIHtcbiAgICAgIGNvbnN0IGdyb3VwaW5nQ29tcCA9IHRoaXMucm93LmdldENvbHVtbkdyb3VwaW5nQ29tcG9uZW50KHRoaXMuY29sdW1uLmF0dHIpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGdyb3VwaW5nQ29tcC5hZ2dyZWdhdGVOYW1lKSkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoKTtcbiAgICAgICAgaWYgKHJlc3VsdC5pbmNsdWRlcyhncm91cGluZ0NvbXAuYWdncmVnYXRlKSkge1xuICAgICAgICAgIHJlc3VsdC5zcGxpY2UocmVzdWx0LmluZGV4T2YoZ3JvdXBpbmdDb21wLmFnZ3JlZ2F0ZSksIDEsIGdyb3VwaW5nQ29tcC5hZ2dyZWdhdGVOYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQucHVzaChncm91cGluZ0NvbXAuYWdncmVnYXRlTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJCeUNvbHVtbihldmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRhYmxlLm9UYWJsZU1lbnUpIHtcbiAgICAgIHRoaXMudGFibGUuaXNDb2x1bW5GaWx0ZXJzQWN0aXZlID0gdHJ1ZTtcbiAgICAgIHRoaXMudGFibGUub3BlbkNvbHVtbkZpbHRlckRpYWxvZyh0aGlzLmNvbHVtbiwgZXZlbnQuZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjaGVja1Zpc2libGVGaWx0ZXIoKTogdm9pZCB7XG4gICAgbGV0IGlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmNvbHVtbikge1xuICAgICAgaXNWaXNpYmxlID0gdGhpcy5zaG93RmlsdGVyICYmIHRoaXMudGFibGUuaXNDb2x1bW5GaWx0ZXJhYmxlKHRoaXMuY29sdW1uKTtcbiAgICB9XG4gICAgdGhpcy5pc1Zpc2libGVGaWx0ZXIubmV4dChpc1Zpc2libGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBncm91cCBieSByb3cgb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIGNoZWNrR3JvdXBCeVJvd09wdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0VuYWJsZWRVbkdyb3VwQnlDb2x1bW4ubmV4dChmYWxzZSk7XG4gICAgdGhpcy5pc0VuYWJsZWRVbkdyb3VwQWxsQ29sdW1uLm5leHQoZmFsc2UpO1xuICAgIGxldCBncm91cGVkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuY29sdW1uLmdyb3VwYWJsZSAmJiAhVXRpbC5pc0FycmF5RW1wdHkodGhpcy50YWJsZS5ncm91cGVkQ29sdW1uc0FycmF5KSAmJiB0aGlzLmZvdW5kQ29sdW1uSW5Hcm91cGVkQ29sdW1ucyh0aGlzLmNvbHVtbikpIHtcbiAgICAgIHRoaXMuaXNFbmFibGVkVW5Hcm91cEJ5Q29sdW1uLm5leHQodHJ1ZSk7XG4gICAgICBncm91cGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLmlzRW5hYmxlZEdyb3VwQnlDb2x1bW4ubmV4dCh0aGlzLmNvbHVtbi5ncm91cGFibGUgJiYgIWdyb3VwZWQpO1xuICAgIGlmICghVXRpbC5pc0FycmF5RW1wdHkodGhpcy50YWJsZS5ncm91cGVkQ29sdW1uc0FycmF5KSkge1xuICAgICAgdGhpcy5pc0VuYWJsZWRVbkdyb3VwQWxsQ29sdW1uLm5leHQodHJ1ZSk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBmb3VuZENvbHVtbkluR3JvdXBlZENvbHVtbnMoY29sdW1uKTogYm9vbGVhbiB7XG4gICAgbGV0IGZvdW5kOiBib29sZWFuID0gZmFsc2U7XG4gICAgdGhpcy50YWJsZS5ncm91cGVkQ29sdW1uc0FycmF5LmZvckVhY2goZ3JvdXBlZENvbHVtbiA9PiB7IGlmIChncm91cGVkQ29sdW1uID09IGNvbHVtbi5hdHRyKSB7IGZvdW5kID0gdHJ1ZSB9IH0pO1xuICAgIHJldHVybiBmb3VuZDtcbiAgfVxuXG5cbiAgcHVibGljIGNoYW5nZUFnZ3JlZ2F0ZUZ1bmN0aW9uKGFyZzogYW55LCBhZ2dyZWdhdGVGbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChhcmcuZGF0YS5yb3dWYWx1ZSBpbnN0YW5jZW9mIE9UYWJsZUdyb3VwZWRSb3cpIHtcbiAgICAgIChhcmcuZGF0YS5yb3dWYWx1ZSBhcyBPVGFibGVHcm91cGVkUm93KS5zZXRDb2x1bW5BY3RpdmVBZ2dyZWdhdGVGdW5jdGlvbih0aGlzLmNvbHVtbi5hdHRyLCBhZ2dyZWdhdGVGbk5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0UHJvcGVydGllcyhwYXJhbTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGF0YSA9IHBhcmFtLmRhdGE7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChkYXRhKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJvdyA9IHsgcm93VmFsdWU6IGRhdGEucm93VmFsdWUsIGNlbGxOYW1lOiBkYXRhLmNlbGxOYW1lIH07XG4gICAgdGhpcy5jaGVja1Zpc2libGVGaWx0ZXIoKTtcbiAgICB0aGlzLmNoZWNrR3JvdXBCeVJvd09wdGlvbnMoKTtcbiAgfVxuXG4gIGV4cGFuZFJvd0dyb3Vwc1NhbWVMZXZlbCgpIHtcbiAgICB0aGlzLnRhYmxlLmRhdGFTb3VyY2Uuc2V0Um93R3JvdXBMZXZlbEV4cGFuc2lvbih0aGlzLl9yb3csIHRydWUpO1xuICB9XG5cbiAgY29sbGFwc2VSb3dHcm91cHNTYW1lTGV2ZWwoKSB7XG4gICAgdGhpcy50YWJsZS5kYXRhU291cmNlLnNldFJvd0dyb3VwTGV2ZWxFeHBhbnNpb24odGhpcy5fcm93LCBmYWxzZSk7XG5cbiAgfVxuICBpc0NvbHVtbkRhdGUoKSB7XG4gICAgdGhpcy5pc0RhdGVDb2x1bW4ubmV4dCh0aGlzLmNvbHVtbi50eXBlID09ICdkYXRlJyk7XG4gIH1cbn1cbiIsIjxvLWNvbnRleHQtbWVudSAjZGVmYXVsdENvbnRleHRNZW51PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0RhdGFDZWxsIHwgYXN5bmNcIj5cbiAgICA8by1jb250ZXh0LW1lbnUtaXRlbSBhdHRyPVwicmVmcmVzaFwiIGxhYmVsPVwiVEFCTEVfQ09OVEVYVF9NRU5VLlJFRlJFU0hcIiBzdmctaWNvbj1cIm9udGltaXplOmF1dG9yZW5ld1wiIChleGVjdXRlKT1cInJlZnJlc2goKVwiXG4gICAgICBbdmlzaWJsZV09XCJpc1Zpc2libGVSZWZyZXNoIHwgYXN5bmNcIj48L28tY29udGV4dC1tZW51LWl0ZW0+XG4gICAgPG8tY29udGV4dC1tZW51LWl0ZW0gYXR0cj1cImRldGFpbFwiIGljb249XCJjaGV2cm9uX3JpZ2h0XCIgbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuVklFV19ERVRBSUxcIiAoZXhlY3V0ZSk9XCJnb3RvRGV0YWlscygkZXZlbnQpXCJcbiAgICAgIFt2aXNpYmxlXT1cImlzVmlzaWJsZURldGFpbCB8IGFzeW5jXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgIDxvLWNvbnRleHQtbWVudS1pdGVtIGF0dHI9XCJlZGl0XCIgaWNvbj1cImVkaXRcIiBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5FRElUXCIgKGV4ZWN1dGUpPVwiZWRpdCgkZXZlbnQpXCIgW3Zpc2libGVdPVwiaXNWaXNpYmxlRWRpdCB8IGFzeW5jXCI+XG4gICAgPC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgIDxvLWNvbnRleHQtbWVudS1pdGVtIGF0dHI9XCJpbnNlcnRcIiBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5JTlNFUlRcIiBpY29uPVwiYWRkXCIgKGV4ZWN1dGUpPVwiYWRkKClcIiBbdmlzaWJsZV09XCJpc1Zpc2libGVJbnNlcnQgfCBhc3luY1wiPlxuICAgIDwvby1jb250ZXh0LW1lbnUtaXRlbT5cbiAgICA8by1jb250ZXh0LW1lbnUtaXRlbSBhdHRyPVwiZGVsZXRlXCIgbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuREVMRVRFXCIgaWNvbj1cImRlbGV0ZVwiIChleGVjdXRlKT1cImRlbGV0ZSgkZXZlbnQpXCIgW3Zpc2libGVdPVwiaXNWaXNpYmxlRGVsZXRlIHwgYXN5bmNcIj5cbiAgICA8L28tY29udGV4dC1tZW51LWl0ZW0+XG4gICAgPCEtLSBGSUxURVIgR1JPVVAgLS0+XG4gICAgPG8tY29udGV4dC1tZW51LWdyb3VwIGxhYmVsPVwiVEFCTEVfQ09OVEVYVF9NRU5VLkZJTFRFUlwiIGljb249XCJmaWx0ZXJfYWx0XCIgdHlwZT1cImdyb3VwXCIgW3Zpc2libGVdPVwiaXNWaXNpYmxlRmlsdGVyIHwgYXN5bmNcIj5cbiAgICAgIDxvLWNvbnRleHQtbWVudS1pdGVtIGljb249XCJmaWx0ZXJfYWx0XCIgW2xhYmVsXT1cImxhYmVsRmlsdGVyQnlDb2x1bW5cIiAoZXhlY3V0ZSk9XCJmaWx0ZXJCeUNvbHVtbigkZXZlbnQpXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgICAgPG8tY29udGV4dC1tZW51LWl0ZW0gaWNvbj1cImZpbHRlcl9hbHRcIiBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5GSUxURVJfQllfVkFMVUVcIiAoZXhlY3V0ZSk9XCJmaWx0ZXJCeVZhbHVlKClcIj48L28tY29udGV4dC1tZW51LWl0ZW0+XG4gICAgPC9vLWNvbnRleHQtbWVudS1ncm91cD5cbiAgICA8IS0tIENPUFkgR1JPVVAgLS0+XG4gICAgPG8tY29udGV4dC1tZW51LXNlcGFyYXRvciBbdmlzaWJsZV09XCJpc1Zpc2libGVDb3B5IHwgYXN5bmNcIj48L28tY29udGV4dC1tZW51LXNlcGFyYXRvcj5cbiAgICA8by1jb250ZXh0LW1lbnUtZ3JvdXAgbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuQ09QWVwiIGljb249XCJmaWxlX2NvcHlcIiB0eXBlPVwiZ3JvdXBcIiBbdmlzaWJsZV09XCJpc1Zpc2libGVDb3B5IHwgYXN5bmNcIj5cbiAgICAgIDxvLWNvbnRleHQtbWVudS1pdGVtIGljb249XCJmaWxlX2NvcHlcIiBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5DT1BZX0NFTExcIiAoZXhlY3V0ZSk9XCJjb3B5Q2VsbCgkZXZlbnQpXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgICAgPG8tY29udGV4dC1tZW51LWl0ZW0gaWNvbj1cImZpbGVfY29weVwiIGxhYmVsPVwiVEFCTEVfQ09OVEVYVF9NRU5VLkNPUFlfUk9XXCIgKGV4ZWN1dGUpPVwiY29weVJvdygkZXZlbnQpXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgICAgPG8tY29udGV4dC1tZW51LWl0ZW0gbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuQ09QWV9BTExcIiBpY29uPVwiZmlsZV9jb3B5XCIgKGV4ZWN1dGUpPVwiY29weUFsbCgpXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgICAgPG8tY29udGV4dC1tZW51LWl0ZW0gbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuQ09QWV9TRUxFQ1RJT05cIiBpY29uPVwiZmlsZV9jb3B5XCIgKGV4ZWN1dGUpPVwiY29weVNlbGVjdGlvbigpXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgIDwvby1jb250ZXh0LW1lbnUtZ3JvdXA+XG4gICAgPG8tY29udGV4dC1tZW51LXNlcGFyYXRvciBbdmlzaWJsZV09XCJpc1Zpc2libGVTZWxlY3RBbGwgfCBhc3luY1wiPjwvby1jb250ZXh0LW1lbnUtc2VwYXJhdG9yPlxuICAgIDxvLWNvbnRleHQtbWVudS1pdGVtIGF0dHI9XCJzZWxlY3QtYWxsXCIgW2xhYmVsXT1cInRhYmxlLmlzQWxsU2VsZWN0ZWQoKSA/ICdUQUJMRV9DT05URVhUX01FTlUuREVTRUxFQ1RfQUxMJzogJ1RBQkxFX0NPTlRFWFRfTUVOVS5TRUxFQ1RfQUxMJ1wiXG4gICAgICBpY29uPVwic2VsZWN0X2FsbFwiIChleGVjdXRlKT1cInRhYmxlLmlzQWxsU2VsZWN0ZWQoKSA/IHVuU2VsZWN0QWxsKCkgOiBzZWxlY3RBbGwoKVwiIFt2aXNpYmxlXT1cImlzVmlzaWJsZVNlbGVjdEFsbCB8IGFzeW5jXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuXG4gICAgPCEtLSBHUk9VUCBCWSAtLT5cbiAgICA8by1jb250ZXh0LW1lbnUtc2VwYXJhdG9yIFt2aXNpYmxlXT1cImlzVmlzaWJsZUdyb3VwQnlSb3cgfCBhc3luY1wiPjwvby1jb250ZXh0LW1lbnUtc2VwYXJhdG9yPlxuICAgIDxvLWNvbnRleHQtbWVudS1ncm91cCBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5HUk9VUF9CWVwiIGljb249XCJmb3JtYXRfaW5kZW50X2luY3JlYXNlXCIgdHlwZT1cImdyb3VwXCIgW3Zpc2libGVdPVwiaXNWaXNpYmxlR3JvdXBCeVJvdyB8IGFzeW5jXCI+XG4gICAgICA8by1jb250ZXh0LW1lbnUtaXRlbSAqbmdJZj1cImlzRGF0ZUNvbHVtbiB8IGFzeW5jXCIgbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuR1JPVVBfQllfWUVBUlwiIChleGVjdXRlKT1cImdyb3VwQnlDb2x1bW4oJ1lFQVInKVwiXG4gICAgICAgIGljb249XCJmb3JtYXRfaW5kZW50X2luY3JlYXNlXCIgdHlwZT1cImdyb3VwXCIgW3Zpc2libGVdPVwiaXNWaXNpYmxlR3JvdXBCeVJvdyB8IGFzeW5jXCIgW2VuYWJsZWRdPVwiaXNFbmFibGVkR3JvdXBCeUNvbHVtbiB8IGFzeW5jXCI+XG4gICAgICA8L28tY29udGV4dC1tZW51LWl0ZW0+XG4gICAgICA8by1jb250ZXh0LW1lbnUtaXRlbSAqbmdJZj1cImlzRGF0ZUNvbHVtbiB8IGFzeW5jXCIgbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuR1JPVVBfQllfTU9OVEhcIiAoZXhlY3V0ZSk9XCJncm91cEJ5Q29sdW1uKCdNT05USCcpXCJcbiAgICAgICAgaWNvbj1cImZvcm1hdF9pbmRlbnRfaW5jcmVhc2VcIiB0eXBlPVwiZ3JvdXBcIiBbdmlzaWJsZV09XCJpc1Zpc2libGVHcm91cEJ5Um93IHwgYXN5bmNcIiBbZW5hYmxlZF09XCJpc0VuYWJsZWRHcm91cEJ5Q29sdW1uIHwgYXN5bmNcIj5cbiAgICAgIDwvby1jb250ZXh0LW1lbnUtaXRlbT5cbiAgICAgIDxvLWNvbnRleHQtbWVudS1pdGVtICpuZ0lmPVwiaXNEYXRlQ29sdW1uIHwgYXN5bmNcIiBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5HUk9VUF9CWV9ZRUFSX01PTlRIXCIgaWNvbj1cImZvcm1hdF9pbmRlbnRfaW5jcmVhc2VcIiB0eXBlPVwiZ3JvdXBcIlxuICAgICAgICAoZXhlY3V0ZSk9XCJncm91cEJ5Q29sdW1uKCdZRUFSX01PTlRIJylcIiBbdmlzaWJsZV09XCJpc1Zpc2libGVHcm91cEJ5Um93IHwgYXN5bmNcIiBbZW5hYmxlZF09XCJpc0VuYWJsZWRHcm91cEJ5Q29sdW1uIHwgYXN5bmNcIj5cbiAgICAgIDwvby1jb250ZXh0LW1lbnUtaXRlbT5cbiAgICAgIDxvLWNvbnRleHQtbWVudS1pdGVtICpuZ0lmPVwiaXNEYXRlQ29sdW1uIHwgYXN5bmNcIiBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5HUk9VUF9CWV9ZRUFSX01PTlRIX0RBWVwiIGljb249XCJmb3JtYXRfaW5kZW50X2luY3JlYXNlXCIgdHlwZT1cImdyb3VwXCJcbiAgICAgICAgKGV4ZWN1dGUpPVwiZ3JvdXBCeUNvbHVtbignWUVBUl9NT05USF9EQVknKVwiIFt2aXNpYmxlXT1cImlzVmlzaWJsZUdyb3VwQnlSb3cgfCBhc3luY1wiIFtlbmFibGVkXT1cImlzRW5hYmxlZEdyb3VwQnlDb2x1bW4gfCBhc3luY1wiPlxuICAgICAgPC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgICAgPG8tY29udGV4dC1tZW51LWl0ZW0gKm5nSWY9XCIhKGlzRGF0ZUNvbHVtbiB8IGFzeW5jKVwiIGljb249XCJmb3JtYXRfaW5kZW50X2luY3JlYXNlXCIgW2xhYmVsXT1cImxhYmVsR3JvdXBCeUNvbHVtblwiIChleGVjdXRlKT1cImdyb3VwQnlDb2x1bW4oKVwiXG4gICAgICAgIFtlbmFibGVkXT1cImlzRW5hYmxlZEdyb3VwQnlDb2x1bW4gfCBhc3luY1wiPjwvby1jb250ZXh0LW1lbnUtaXRlbT5cbiAgICAgIDxvLWNvbnRleHQtbWVudS1pdGVtICpuZ0lmPVwiaXNFbmFibGVkVW5Hcm91cEJ5Q29sdW1uIHwgYXN5bmNcIiBpY29uPVwiZm9ybWF0X2luZGVudF9kZWNyZWFzZVwiIFtsYWJlbF09XCJsYWJlbFVuR3JvdXBCeUNvbHVtblwiXG4gICAgICAgIChleGVjdXRlKT1cInVuR3JvdXBCeUNvbHVtbigpXCIgW2VuYWJsZWRdPVwiaXNFbmFibGVkVW5Hcm91cEJ5Q29sdW1uIHwgYXN5bmNcIj48L28tY29udGV4dC1tZW51LWl0ZW0+XG4gICAgICA8by1jb250ZXh0LW1lbnUtaXRlbSBpY29uPVwiZm9ybWF0X2xpbmVfc3BhY2luZ1wiIGxhYmVsPVwiVEFCTEVfQ09OVEVYVF9NRU5VLlVOR1JPVVBfQUxMQ09MVU1OU1wiIChleGVjdXRlKT1cInVuR3JvdXBBbGwoKVwiXG4gICAgICAgIFtlbmFibGVkXT1cImlzRW5hYmxlZFVuR3JvdXBBbGxDb2x1bW4gfCBhc3luY1wiPlxuICAgICAgPC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgIDwvby1jb250ZXh0LW1lbnUtZ3JvdXA+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gR1JPVVAgQlkgSEVBREVSIENFTEwgQUdHUkVHQVRFIEZVTkNUSU9OIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNHcm91cGFibGVDZWxsIHwgYXN5bmNcIj5cbiAgICA8by1jb250ZXh0LW1lbnUtZ3JvdXAgbGFiZWw9XCJUQUJMRV9DT05URVhUX01FTlUuR1JPVVBfQlkuQUdHUkVHQVRFX0ZVTkNUSU9OXCIgaWNvbj1cImZvcm1hdF9pbmRlbnRfaW5jcmVhc2VcIiB0eXBlPVwiZ3JvdXBcIj5cbiAgICAgIDxvLWNvbnRleHQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBhZ2dyZWdhdGVGbiBvZiBhdmFpbGFibGVDb2x1bW5BZ2dyZWdhdGVzXCIgbGFiZWw9XCJ7eyAnQUdHUkVHQVRFX05BTUUuJyArIGFnZ3JlZ2F0ZUZuIH19XCJcbiAgICAgICAgKGV4ZWN1dGUpPVwiY2hhbmdlQWdncmVnYXRlRnVuY3Rpb24oJGV2ZW50LCBhZ2dyZWdhdGVGbilcIj48L28tY29udGV4dC1tZW51LWl0ZW0+XG4gICAgPC9vLWNvbnRleHQtbWVudS1ncm91cD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGFibGVHcm91cGVkUm93IHwgYXN5bmNcIj5cbiAgICA8by1jb250ZXh0LW1lbnUtaXRlbSBpY29uPVwidW5mb2xkX21vcmVcIiBsYWJlbD1cIlRBQkxFX0NPTlRFWFRfTUVOVS5FWFBBTkRfQUxMX0dST1VQU1wiIChleGVjdXRlKT1cImV4cGFuZFJvd0dyb3Vwc1NhbWVMZXZlbCgpXCI+PC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICAgIDxvLWNvbnRleHQtbWVudS1pdGVtIGljb249XCJ1bmZvbGRfbGVzc1wiIGxhYmVsPVwiVEFCTEVfQ09OVEVYVF9NRU5VLkNPTExBUFNFX0FMTF9HUk9VUFNcIiAoZXhlY3V0ZSk9XCJjb2xsYXBzZVJvd0dyb3Vwc1NhbWVMZXZlbCgpXCI+XG4gICAgPC9vLWNvbnRleHQtbWVudS1pdGVtPlxuICA8L25nLWNvbnRhaW5lcj5cblxuPC9vLWNvbnRleHQtbWVudT5cbiJdfQ==
|