ontimize-web-ngx 15.7.0 → 15.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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/cell-renderer.mjs +11 -4
- package/esm2020/lib/components/table/column/cell-renderer/chip/o-table-cell-renderer-chip.component.mjs +65 -0
- 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/index.mjs +3 -1
- 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/list/o-table-cell-renderer-list.component.mjs +41 -0
- 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 +10 -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 +5 -5
- 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 +6 -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 +317 -121
- package/esm2020/lib/components/table/o-table.module.mjs +46 -40
- 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/interfaces/column-filter-change-event.interface.mjs +2 -0
- package/esm2020/lib/interfaces/index.mjs +2 -1
- 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 +1945 -1348
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +1928 -1345
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/app-sidenav/o-app-sidenav.component.d.ts +1 -1
- package/lib/components/dual-list-selector/o-dual-list-selector.component.d.ts +1 -1
- package/lib/components/filter-builder/o-filter-builder.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 +2 -1
- package/lib/components/o-service-component.class.d.ts +1 -1
- 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/column/cell-renderer/cell-renderer.d.ts +5 -1
- package/lib/components/table/column/cell-renderer/chip/o-table-cell-renderer-chip.component.d.ts +23 -0
- package/lib/components/table/column/cell-renderer/index.d.ts +2 -0
- package/lib/components/table/column/cell-renderer/list/o-table-cell-renderer-list.component.d.ts +14 -0
- package/lib/components/table/column/o-table-column.component.d.ts +2 -1
- 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/header/table-header-select-all/o-table-header-select-all.component.d.ts +2 -1
- 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 +25 -4
- package/lib/components/table/o-table.module.d.ts +48 -45
- package/lib/interfaces/column-filter-change-event.interface.d.ts +6 -0
- package/lib/interfaces/index.d.ts +1 -0
- 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 +6 -0
- package/package.json +2 -2
- package/theme.scss +0 -2
|
@@ -191,6 +191,12 @@ export class OTableColumnComponent {
|
|
|
191
191
|
case 'translate':
|
|
192
192
|
newRenderer.translateArgsFn = this.translateArgsFn;
|
|
193
193
|
break;
|
|
194
|
+
case 'chip':
|
|
195
|
+
newRenderer.icon = this.icon;
|
|
196
|
+
newRenderer.svgOcon = this.svgIcon;
|
|
197
|
+
newRenderer.iconPosition = this.iconPosition;
|
|
198
|
+
newRenderer.translate = this.translate;
|
|
199
|
+
break;
|
|
194
200
|
}
|
|
195
201
|
this.registerRenderer(newRenderer);
|
|
196
202
|
}
|
|
@@ -364,8 +370,8 @@ export class OTableColumnComponent {
|
|
|
364
370
|
return this._filterSource;
|
|
365
371
|
}
|
|
366
372
|
}
|
|
367
|
-
OTableColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
368
|
-
OTableColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
373
|
+
OTableColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableColumnComponent, deps: [{ token: forwardRef(() => OTableComponent) }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
374
|
+
OTableColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableColumnComponent, selector: "o-table-column", inputs: { attr: "attr", title: "title", titleAlign: ["title-align", "titleAlign"], contentAlign: ["content-align", "contentAlign"], orderable: "orderable", searchable: "searchable", groupable: "groupable", type: "type", editable: "editable", width: "width", minWidth: ["min-width", "minWidth"], maxWidth: ["max-width", "maxWidth"], asyncLoad: ["async-load", "asyncLoad"], sqlType: ["sql-type", "sqlType"], tooltip: "tooltip", tooltipValue: ["tooltip-value", "tooltipValue"], tooltipFunction: ["tooltip-function", "tooltipFunction"], multiline: "multiline", resizable: "resizable", filterExpressionFunction: ["filter-expression-function", "filterExpressionFunction"], class: "class", angularValidatorsFn: ["validators", "angularValidatorsFn"], angularValidatorsFnErrors: ["validators-errors", "angularValidatorsFnErrors"], angularAsyncValidatorsFn: ["async-validators", "angularAsyncValidatorsFn"], valueColumn: ["value-column", "valueColumn"], trueValue: ["true-value", "trueValue"], falseValue: ["false-value", "falseValue"], booleanType: ["boolean-type", "booleanType"], renderTrueValue: ["render-true-value", "renderTrueValue"], renderFalseValue: ["render-false-value", "renderFalseValue"], renderType: ["render-type", "renderType"], grouping: "grouping", thousandSeparator: ["thousand-separator", "thousandSeparator"], decimalSeparator: ["decimal-separator", "decimalSeparator"], minDecimalDigits: ["min-decimal-digits", "minDecimalDigits"], maxDecimalDigits: ["max-decimal-digits", "maxDecimalDigits"], currencySymbol: ["currency-symbol", "currencySymbol"], currencySymbolPosition: ["currency-symbol-position", "currencySymbolPosition"], valueBase: ["value-base", "valueBase"], format: "format", imageType: ["image-type", "imageType"], emptyImage: ["empty-image", "emptyImage"], avatar: "avatar", icon: "icon", svgIcon: ["svg-icon", "svgIcon"], action: "action", text: "text", iconPosition: ["icon-position", "iconPosition"], entity: "entity", service: "service", columns: "columns", translate: "translate", valueColumnType: ["value-column-type", "valueColumnType"], parentKeys: ["parent-keys", "parentKeys"], queryMethod: ["query-method", "queryMethod"], serviceType: ["service-type", "serviceType"], translateArgsFn: ["translate-params", "translateArgsFn"], configureServiceArgs: ["configure-service-args", "configureServiceArgs"], orequired: ["required", "orequired"], showPlaceHolder: ["show-placeholder", "showPlaceHolder"], olabel: ["label", "olabel"], updateRecordOnEdit: ["update-record-on-edit", "updateRecordOnEdit"], showNotificationOnEdit: ["show-notification-on-edit", "showNotificationOnEdit"], enabled: "enabled", min: "min", max: "max", step: "step", locale: "locale", oStartView: ["start-view", "oStartView"], oTouchUi: ["touch-ui", "oTouchUi"], startAt: ["start-at", "startAt"], filterDate: ["filter-date", "filterDate"], dateValueType: ["date-value-type", "dateValueType"], oDateFormat: ["date-format", "oDateFormat"], oDateLocale: ["date-locale", "oDateLocale"], oDateStartView: ["date-start-view", "oDateStartView"], oMinDate: ["date-min", "oMinDate"], oMaxDate: ["date-max", "oMaxDate"], oDateTouchUi: ["date-touch-ui", "oDateTouchUi"], oDateStartAt: ["date-start-at", "oDateStartAt"], oHourFormat: ["hour-format", "oHourFormat"], oHourMin: ["hour-min", "oHourMin"], oHourMax: ["hour-max", "oHourMax"], oHourPlaceholder: ["hour-placeholder", "oHourPlaceholder"], oDatePlaceholder: ["date-placeholder", "oDatePlaceholder"] }, outputs: { onClick: "onClick", onDataLoaded: "onDataLoaded", editionStarted: "editionStarted", editionCancelled: "editionCancelled", editionCommitted: "editionCommitted", onPostUpdateRecord: "onPostUpdateRecord" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<span #container>\n</span>", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
369
375
|
__decorate([
|
|
370
376
|
BooleanInputConverter(),
|
|
371
377
|
__metadata("design:type", Boolean)
|
|
@@ -430,7 +436,7 @@ __decorate([
|
|
|
430
436
|
BooleanInputConverter(),
|
|
431
437
|
__metadata("design:type", Boolean)
|
|
432
438
|
], OTableColumnComponent.prototype, "asyncLoad", void 0);
|
|
433
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
439
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableColumnComponent, decorators: [{
|
|
434
440
|
type: Component,
|
|
435
441
|
args: [{ selector: 'o-table-column', changeDetection: ChangeDetectionStrategy.OnPush, inputs: DEFAULT_INPUTS_O_TABLE_COLUMN, outputs: DEFAULT_OUTPUTS_O_TABLE_COLUMN, template: "<span #container>\n</span>" }]
|
|
436
442
|
}], ctorParameters: function () { return [{ type: i1.OTableComponent, decorators: [{
|
|
@@ -440,4 +446,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
440
446
|
type: ViewChild,
|
|
441
447
|
args: ['container', { read: ViewContainerRef, static: true }]
|
|
442
448
|
}] } });
|
|
443
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvY29sdW1uL28tdGFibGUtY29sdW1uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2NvbHVtbi9vLXRhYmxlLWNvbHVtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUdSLFNBQVMsRUFDVCxnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU9sRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSwyQkFBMkIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSw4QkFBOEIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFFaEksTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUc7SUFFM0MsTUFBTTtJQUdOLE9BQU87SUFHUCx5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REFDUztBQUVqQztJQUFDLHFCQUFxQixFQUFFOztpRUFDVztBQUNuQztJQUFDLHFCQUFxQixFQUFFOztxRUFDZ0I7QUFPeEM7SUFBQyxxQkFBcUIsRUFBRTs7dURBQ1k7QUFNcEM7SUFBQyxvQkFBb0IsRUFBRTs7a0RBQ1g7QUFDWjtJQUFDLG9CQUFvQixFQUFFOztrREFDWDtBQUNaO0lBQUMsb0JBQW9CLEVBQUU7O21EQUNWO0FBQ2I7SUFBQyxvQkFBb0IsRUFBRTs7K0RBQ007QUFDN0I7SUFBQyxvQkFBb0IsRUFBRTs7K0RBQ007QUFHN0I7SUFBQyxxQkFBcUIsRUFBRTs7a0VBQ2E7QUFDckM7SUFBQyxxQkFBcUIsRUFBRTs7eURBQ0o7QUFXcEI7SUFBQyxxQkFBcUIsRUFBRTs7d0RBQ0c7MkZBakpoQixxQkFBcUI7a0JBUmpDLFNBQVM7K0JBQ0UsZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU0sVUFDdkMsNkJBQTZCLFdBQzVCLDhCQUE4Qjs7MEJBMkpwQyxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7bUVBeklwQyxRQUFRLE1BS1IsT0FBTyxNQWdFSixTQUFTLE1BWVQsU0FBUyxNQUVuQixlQUFlLE1BR2Ysa0JBQWtCLE1BRWxCLHNCQUFzQixNQVFaLFFBQVEsTUFPbEIsR0FBRyxNQUVILEdBQUcsTUFFSCxJQUFJLE1BRUosZ0JBQWdCLE1BRWhCLGdCQUFnQixNQUloQixtQkFBbUIsTUFFbkIsVUFBVSxNQVlWLFNBQVMsTUFHVCxTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIsIE51bWJlcklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgT1RhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9vLXRhYmxlLWNvbHVtbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT1BlcmNlbnRhZ2VWYWx1ZUJhc2VUeXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvby1wZXJjZW50YWdlLnBpcGUnO1xuaW1wb3J0IHsgRGF0ZUZpbHRlckZ1bmN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZGF0ZS1maWx0ZXItZnVuY3Rpb24udHlwZSc7XG5pbXBvcnQgeyBFcnJvckRhdGEgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9lcnJvci1kYXRhLnR5cGUnO1xuaW1wb3J0IHsgRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2V4cHJlc3Npb24udHlwZSc7XG5pbXBvcnQgeyBPRGF0ZVZhbHVlVHlwZSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL28tZGF0ZS12YWx1ZS50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBTUUxUeXBlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvc3FsdHlwZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9vLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBlZGl0b3JzTWFwcGluZywgT19UQUJMRV9DRUxMX0VESVRPUlNfSU5QVVRTLCBPX1RBQkxFX0NFTExfRURJVE9SU19PVVRQVVRTIH0gZnJvbSAnLi9jZWxsLWVkaXRvci9jZWxsLWVkaXRvcic7XG5pbXBvcnQgeyBPX1RBQkxFX0NFTExfUkVOREVSRVJTX0lOUFVUUywgT19UQUJMRV9DRUxMX1JFTkRFUkVSU19PVVRQVVRTLCByZW5kZXJlcnNNYXBwaW5nIH0gZnJvbSAnLi9jZWxsLXJlbmRlcmVyL2NlbGwtcmVuZGVyZXInO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DT0xVTU4gPSBbXG4gIC8vIGF0dHIgW3N0cmluZ106IGNvbHVtbiBuYW1lLlxuICAnYXR0cicsXG5cbiAgLy8gdGl0bGUgW3N0cmluZ106IGNvbHVtbiB0aXRsZS4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICd0aXRsZScsXG5cbiAgLy8gdGl0bGUtYWxpZ24gW3N0YXJ0IHwgY2VudGVyIHwgZW5kXTogY29sdW1uIHRpdGxlIGFsaWdubWVudC4gRGVmYXVsdDogY2VudGVyLlxuICAndGl0bGVBbGlnbjogdGl0bGUtYWxpZ24nLFxuXG4gIC8vIGNvbnRlbnQtYWxpZ24gW3N0YXJ0IHwgY2VudGVyIHwgZW5kXTogY29sdW1uIGNvbnRlbnQgYWxpZ25tZW50LlxuICAnY29udGVudEFsaWduOiBjb250ZW50LWFsaWduJyxcblxuICAvLyBvcmRlcmFibGUgW25vfHllc106IGNvbHVtbiBjYW4gYmUgc29ydGVkLiBEZWZhdWx0OiB5ZXMuXG4gICdvcmRlcmFibGUnLFxuXG4gIC8vIHNlYXJjaGFibGUgW25vfHllc106IHNlYXJjaGluZ3MgYXJlIHBlcmZvcm1lZCBpbnRvIGNvbHVtbiBjb250ZW50LiBEZWZhdWx0OiB5ZXMuXG4gICdzZWFyY2hhYmxlJyxcblxuICAvLyBncm91cGFibGUgW25vfHllc3x0cnVlfGZhbHNlXTogSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBjb2x1bW4gY2FuIGJlIGdyb3VwYWJsZVxuICAnZ3JvdXBhYmxlJyxcblxuICAvLyB0eXBlIFtib29sZWFufGludGVnZXJ8cmVhbHxjdXJyZW5jeXxkYXRlfGltYWdlXTogY29sdW1uIHR5cGUuIERlZmF1bHQ6IG5vIHZhbHVlIChzdHJpbmcpLlxuICAndHlwZScsXG5cbiAgLy8gZWRpdGFibGUgW25vfHllc106IGNvbHVtbiBjYW4gYmUgZWRpdGVkIGRpcmVjdGx5IG92ZXIgdGhlIHRhYmxlLiBEZWZhdWx0OiBuby5cbiAgJ2VkaXRhYmxlJyxcblxuICAnd2lkdGgnLFxuXG4gIC8vIG9ubHkgaW4gcGl4ZWxzXG4gICdtaW5XaWR0aDogbWluLXdpZHRoJyxcblxuICAvLyBvbmx5IGluIHBpeGVsc1xuICAnbWF4V2lkdGg6IG1heC13aWR0aCcsXG5cbiAgLy8gYXN5bmMtbG9hZCBbbm98eWVzfHRydWV8ZmFsc2VdOiBhc3luY2hyb25vdXMgcXVlcnkuIERlZmF1bHQ6IG5vXG4gICdhc3luY0xvYWQgOiBhc3luYy1sb2FkJyxcblxuICAvLyBzcWx0eXBlW3N0cmluZ106IERhdGEgdHlwZSBhY2NvcmRpbmcgdG8gSmF2YSBzdGFuZGFyZC4gU2VlIFNRTFR5cGUgY2xhc3MuIERlZmF1bHQ6ICdPVEhFUidcbiAgJ3NxbFR5cGU6IHNxbC10eXBlJyxcblxuICAndG9vbHRpcCcsXG5cbiAgJ3Rvb2x0aXBWYWx1ZTogdG9vbHRpcC12YWx1ZScsXG5cbiAgJ3Rvb2x0aXBGdW5jdGlvbjogdG9vbHRpcC1mdW5jdGlvbicsXG5cbiAgJ211bHRpbGluZScsXG5cbiAgJ3Jlc2l6YWJsZScsXG5cbiAgJ2ZpbHRlckV4cHJlc3Npb25GdW5jdGlvbjogZmlsdGVyLWV4cHJlc3Npb24tZnVuY3Rpb24nLFxuXG4gICdjbGFzcycsXG5cbiAgJ2FuZ3VsYXJWYWxpZGF0b3JzRm46IHZhbGlkYXRvcnMnLFxuXG4gICdhbmd1bGFyVmFsaWRhdG9yc0ZuRXJyb3JzOiB2YWxpZGF0b3JzLWVycm9ycycsXG5cbiAgJ2FuZ3VsYXJBc3luY1ZhbGlkYXRvcnNGbjogYXN5bmMtdmFsaWRhdG9ycycsXG4gICd2YWx1ZUNvbHVtbjogdmFsdWUtY29sdW1uJyxcblxuICAuLi5PX1RBQkxFX0NFTExfUkVOREVSRVJTX0lOUFVUUyxcbiAgLi4uT19UQUJMRV9DRUxMX0VESVRPUlNfSU5QVVRTXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ09MVU1OID0gW1xuICAuLi5PX1RBQkxFX0NFTExfUkVOREVSRVJTX09VVFBVVFMsXG4gIC4uLk9fVEFCTEVfQ0VMTF9FRElUT1JTX09VVFBVVFNcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY29sdW1uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdGFibGUtY29sdW1uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby10YWJsZS1jb2x1bW4uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DT0xVTU4sXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX0NPTFVNTixcbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlQ29sdW1uQ29tcG9uZW50IGltcGxlbWVudHMgT1RhYmxlQ29sdW1uLCBPbkRlc3Ryb3ksIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHB1YmxpYyByZW5kZXJlcjogYW55O1xuICBwdWJsaWMgZWRpdG9yOiBhbnk7XG5cbiAgcHVibGljIHR5cGU6IHN0cmluZztcbiAgcHVibGljIGF0dHI6IHN0cmluZztcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyB0aXRsZUFsaWduOiBzdHJpbmc7XG4gIHB1YmxpYyBjb250ZW50QWxpZ246ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuICBwdWJsaWMgc3FsVHlwZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX1NRTFR5cGU6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9vcmRlcmFibGU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfcmVzaXphYmxlOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgX3NlYXJjaGFibGU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfZ3JvdXBhYmxlOiBib29sZWFuO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIGVkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyB3aWR0aDogc3RyaW5nO1xuICBwdWJsaWMgbWluV2lkdGg6IHN0cmluZztcbiAgcHVibGljIG1heFdpZHRoOiBzdHJpbmc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgdG9vbHRpcDogYm9vbGVhbiA9IGZhbHNlO1xuICB0b29sdGlwVmFsdWU6IHN0cmluZztcbiAgdG9vbHRpcEZ1bmN0aW9uOiAocm93RGF0YTogYW55KSA9PiBhbnk7XG4gIHB1YmxpYyBjbGFzczogc3RyaW5nO1xuICBwdWJsaWMgdmFsdWVDb2x1bW46IHN0cmluZztcblxuICBzZXQgbXVsdGlsaW5lKHZhbDogYm9vbGVhbikge1xuICAgIHZhbCA9IFV0aWwucGFyc2VCb29sZWFuKFN0cmluZyh2YWwpKTtcbiAgICB0aGlzLl9tdWx0aWxpbmUgPSB2YWw7XG4gIH1cbiAgZ2V0IG11bHRpbGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlsaW5lO1xuICB9XG4gIHByb3RlY3RlZCBfbXVsdGlsaW5lOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGFuZ3VsYXJWYWxpZGF0b3JzRm46IFZhbGlkYXRvckZuW10gPSBbXTtcbiAgcHVibGljIGFuZ3VsYXJWYWxpZGF0b3JzRm5FcnJvcnM6IEVycm9yRGF0YVtdID0gW107XG5cbiAgcHVibGljIGFuZ3VsYXJBc3luY1ZhbGlkYXRvcnNGbjogQXN5bmNWYWxpZGF0b3JGbltdID0gW107XG5cbiAgZmlsdGVyRXhwcmVzc2lvbkZ1bmN0aW9uOiAoY29sdW1uQXR0cjogc3RyaW5nLCBxdWlja0ZpbHRlcj86IHN0cmluZykgPT4gRXhwcmVzc2lvbjtcblxuICAvKiBpbnB1dCByZW5kZXJlciBiYXNlICovXG4gIHB1YmxpYyBfZmlsdGVyU291cmNlOiAncmVuZGVyJyB8ICdkYXRhJyB8ICdib3RoJyA9ICdyZW5kZXInO1xuICBwdWJsaWMgZmlsdGVyRnVuY3Rpb246IChjZWxsVmFsdWU6IGFueSwgcm93VmFsdWU6IGFueSwgcXVpY2tGaWx0ZXI/OiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIC8qIGlucHV0IHJlbmRlcmVyIGRhdGUgKi9cbiAgcHJvdGVjdGVkIGZvcm1hdDogc3RyaW5nO1xuICAvKiBpbnB1dCByZW5kZXJlciBpbnRlZ2VyICovXG4gIHByb3RlY3RlZCBncm91cGluZzogYW55ID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIHRob3VzYW5kU2VwYXJhdG9yOiBzdHJpbmcgPSAnLCc7XG4gIC8qIGlucHV0IHJlbmRlcmVyIHJlYWwgKi9cbiAgcHJvdGVjdGVkIGRlY2ltYWxTZXBhcmF0b3I6IHN0cmluZyA9ICcuJztcblxuICAvKiBpbnB1dCByZW5kZXJlciBjdXJyZW5jeSAqL1xuICBwcm90ZWN0ZWQgY3VycmVuY3lTeW1ib2w6IHN0cmluZztcbiAgcHJvdGVjdGVkIGN1cnJlbmN5U3ltYm9sUG9zaXRpb246IHN0cmluZztcblxuICAvKiBpbnB1dCByZW5kZXJlciBib29sZWFuICovXG4gIHByb3RlY3RlZCB0cnVlVmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIGZhbHNlVmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIHJlbmRlclRydWVWYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgcmVuZGVyRmFsc2VWYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgcmVuZGVyVHlwZTogc3RyaW5nID0gJ3N0cmluZyc7XG4gIHByb3RlY3RlZCBib29sZWFuVHlwZTogc3RyaW5nID0gJ2Jvb2xlYW4nO1xuXG4gIC8qIGlucHV0IGltYWdlICovXG4gIHByb3RlY3RlZCBpbWFnZVR5cGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGF2YXRhcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgZW1wdHlJbWFnZTogc3RyaW5nO1xuXG4gIC8qIGlucHV0IHJlbmRlcmVyIGFjdGlvbiAqL1xuICBwcm90ZWN0ZWQgaWNvbjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYWN0aW9uOiBzdHJpbmc7XG4gIHByb3RlY3RlZCB0ZXh0OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBpY29uUG9zaXRpb246IHN0cmluZztcblxuICAvKiBpbnB1dCByZW5kZXJlciBzZXJ2aWNlICovXG4gIHByb3RlY3RlZCBlbnRpdHk6IHN0cmluZztcbiAgcHJvdGVjdGVkIHNlcnZpY2U6IHN0cmluZztcbiAgcHJvdGVjdGVkIGNvbHVtbnM6IHN0cmluZztcbiAgcHJvdGVjdGVkIHBhcmVudEtleXM6IHN0cmluZztcbiAgcHJvdGVjdGVkIHF1ZXJ5TWV0aG9kOiBzdHJpbmcgPSBDb2Rlcy5RVUVSWV9NRVRIT0Q7XG4gIHByb3RlY3RlZCBzZXJ2aWNlVHlwZTogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiBpbnB1dCByZW5kZXJlciB0cmFuc2xhdGUgKi9cbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZUFyZ3NGbjogKHJvd0RhdGE6IGFueSkgPT4gYW55W107XG4gIC8qIGlucHV0IHRpbWUgKi9cbiAgb0RhdGVGb3JtYXQgPSAnTCc7XG4gIG9Ib3VyRm9ybWF0ID0gMjQ7XG5cbiAgLyogaW5wdXQgcmVuZGVyZXIgcGVyY2VudGFnZSAqL1xuICB2YWx1ZUJhc2U6IE9QZXJjZW50YWdlVmFsdWVCYXNlVHlwZSA9IDE7XG5cbiAgLyogaW5wdXQgZWRpdG9yICovXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwcm90ZWN0ZWQgb3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93UGxhY2VIb2xkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb2xhYmVsOiBzdHJpbmc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICB1cGRhdGVSZWNvcmRPbkVkaXQ6IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd05vdGlmaWNhdGlvbk9uRWRpdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qIGlucHV0IGVkaXRvciBkYXRlICovXG4gIHByb3RlY3RlZCBsb2NhbGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIG9TdGFydFZpZXc6ICdtb250aCcgfCAneWVhcicgPSAnbW9udGgnO1xuICBwcm90ZWN0ZWQgb01pbkRhdGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIG9NYXhEYXRlOiBzdHJpbmc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwcm90ZWN0ZWQgb1RvdWNoVWk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIG9TdGFydEF0OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBmaWx0ZXJEYXRlOiBEYXRlRmlsdGVyRnVuY3Rpb247XG4gIHByb3RlY3RlZCBkYXRlVmFsdWVUeXBlOiBPRGF0ZVZhbHVlVHlwZSA9ICd0aW1lc3RhbXAnO1xuXG4gIC8qIGlucHV0IGVkaXRvciBpbnRlZ2VyICovXG4gIEBOdW1iZXJJbnB1dENvbnZlcnRlcigpXG4gIG1pbjogbnVtYmVyO1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBtYXg6IG51bWJlcjtcbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgc3RlcDogbnVtYmVyO1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBtaW5EZWNpbWFsRGlnaXRzOiBudW1iZXIgPSAyO1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBtYXhEZWNpbWFsRGlnaXRzOiBudW1iZXIgPSAyO1xuXG4gIC8qIGlucHV0IGVkaXRvciBib29sZWFuICovXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBpbmRldGVybWluYXRlT25OdWxsOiBib29sZWFuID0gZmFsc2U7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBhdXRvQ29tbWl0OiBib29sZWFuO1xuXG4gIC8qIG91dHB1dCBjZWxsIHJlbmRlcmVyIGFjdGlvbiAqL1xuICBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8b2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuXG4gIC8qIG91dHB1dCBjZWxsIGVkaXRvciAqL1xuICBlZGl0aW9uU3RhcnRlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgZWRpdGlvbkNhbmNlbGxlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgZWRpdGlvbkNvbW1pdHRlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgb25Qb3N0VXBkYXRlUmVjb3JkOiBFdmVudEVtaXR0ZXI8b2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBhc3luY0xvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPVGFibGVDb21wb25lbnQpKSBwdWJsaWMgdGFibGU6IE9UYWJsZUNvbXBvbmVudCxcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge1xuICB9XG5cbiAgc3RhdGljIGFkZEVkaXRvcih0eXBlOiBzdHJpbmcsIGVkaXRvckNsYXNzUmVmZXJlbmNlOiBhbnkpIHtcbiAgICBpZiAoIWVkaXRvcnNNYXBwaW5nLmhhc093blByb3BlcnR5KHR5cGUpICYmIFV0aWwuaXNEZWZpbmVkKGVkaXRvckNsYXNzUmVmZXJlbmNlKSkge1xuICAgICAgZWRpdG9yc01hcHBpbmdbdHlwZV0gPSBlZGl0b3JDbGFzc1JlZmVyZW5jZTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmdyb3VwaW5nID0gVXRpbC5wYXJzZUJvb2xlYW4odGhpcy5ncm91cGluZywgdHJ1ZSk7XG4gICAgdGhpcy50aXRsZUFsaWduID0gdGhpcy5wYXJzZVRpdGxlQWxpZ24oKTtcbiAgICB0aGlzLnRhYmxlLnJlZ2lzdGVyQ29sdW1uKHRoaXMpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy50YWJsZS5vblJlaW5pdGlhbGl6ZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50YWJsZS5yZWdpc3RlckNvbHVtbih0aGlzKSkpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlUmVuZGVyZXIoKTtcbiAgICB0aGlzLmNyZWF0ZUVkaXRvcigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwYXJzZVRpdGxlQWxpZ24oKTogc3RyaW5nIHtcbiAgICBjb25zdCBhbGlnbiA9ICh0aGlzLnRpdGxlQWxpZ24gfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIENvZGVzLkFWQUlMQUJMRV9DT0xVTU5fVElUTEVfQUxJR05TLmluZGV4T2YoYWxpZ24pICE9PSAtMSA/IGFsaWduIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IG9yaWdpbmFsV2lkdGgoKSB7XG4gICAgbGV0IG9yaWdpbmFsV2lkdGggPSB0aGlzLndpZHRoO1xuICAgIGNvbnN0IHB4VmFsID0gVXRpbC5leHRyYWN0UGl4ZWxzVmFsdWUob3JpZ2luYWxXaWR0aCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHB4VmFsKSkge1xuICAgICAgb3JpZ2luYWxXaWR0aCA9IHB4VmFsICsgJyc7XG4gICAgfVxuICAgIHJldHVybiBvcmlnaW5hbFdpZHRoO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVJlbmRlcmVyKCk6IHZvaWQge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5yZW5kZXJlcikgJiYgVXRpbC5pc0RlZmluZWQodGhpcy50eXBlKSkge1xuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gcmVuZGVyZXJzTWFwcGluZ1t0aGlzLnR5cGVdO1xuICAgICAgaWYgKGNvbXBvbmVudFJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBuZXdSZW5kZXJlcjtcbiAgICAgICAgY29uc3QgcmVmID0gdGhpcy5jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFJlZik7XG4gICAgICAgIG5ld1JlbmRlcmVyID0gcmVmLmluc3RhbmNlO1xuICAgICAgICBuZXdSZW5kZXJlci5maWx0ZXJTb3VyY2UgPSB0aGlzLmZpbHRlclNvdXJjZTtcbiAgICAgICAgbmV3UmVuZGVyZXIuZmlsdGVyRnVuY3Rpb24gPSB0aGlzLmZpbHRlckZ1bmN0aW9uO1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ2N1cnJlbmN5JzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmN1cnJlbmN5U3ltYm9sID0gdGhpcy5jdXJyZW5jeVN5bWJvbDtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmN1cnJlbmN5U3ltYm9sUG9zaXRpb24gPSB0aGlzLmN1cnJlbmN5U3ltYm9sUG9zaXRpb247XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5kZWNpbWFsU2VwYXJhdG9yID0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIubWluRGVjaW1hbERpZ2l0cyA9IHRoaXMubWluRGVjaW1hbERpZ2l0cztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLm1heERlY2ltYWxEaWdpdHMgPSB0aGlzLm1heERlY2ltYWxEaWdpdHM7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5ncm91cGluZyA9IHRoaXMuZ3JvdXBpbmc7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50aG91c2FuZFNlcGFyYXRvciA9IHRoaXMudGhvdXNhbmRTZXBhcmF0b3I7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmZvcm1hdCA9IHRoaXMuZm9ybWF0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5mb3JtYXQgPSB0aGlzLmZvcm1hdDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZ3JvdXBpbmcgPSB0aGlzLmdyb3VwaW5nO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIudGhvdXNhbmRTZXBhcmF0b3IgPSB0aGlzLnRob3VzYW5kU2VwYXJhdG9yO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50cnVlVmFsdWUgPSB0aGlzLnRydWVWYWx1ZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmZhbHNlVmFsdWUgPSB0aGlzLmZhbHNlVmFsdWU7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5yZW5kZXJUcnVlVmFsdWUgPSB0aGlzLnJlbmRlclRydWVWYWx1ZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnJlbmRlckZhbHNlVmFsdWUgPSB0aGlzLnJlbmRlckZhbHNlVmFsdWU7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5yZW5kZXJUeXBlID0gdGhpcy5yZW5kZXJUeXBlO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuYm9vbGVhblR5cGUgPSB0aGlzLmJvb2xlYW5UeXBlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncGVyY2VudGFnZSc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci52YWx1ZUJhc2UgPSB0aGlzLnZhbHVlQmFzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3JlYWwnOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZGVjaW1hbFNlcGFyYXRvciA9IHRoaXMuZGVjaW1hbFNlcGFyYXRvcjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLm1pbkRlY2ltYWxEaWdpdHMgPSB0aGlzLm1pbkRlY2ltYWxEaWdpdHM7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5tYXhEZWNpbWFsRGlnaXRzID0gdGhpcy5tYXhEZWNpbWFsRGlnaXRzO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZ3JvdXBpbmcgPSB0aGlzLmdyb3VwaW5nO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIudGhvdXNhbmRTZXBhcmF0b3IgPSB0aGlzLnRob3VzYW5kU2VwYXJhdG9yO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaW1hZ2UnOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuaW1hZ2VUeXBlID0gdGhpcy5pbWFnZVR5cGU7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5hdmF0YXIgPSB0aGlzLmF2YXRhcjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmVtcHR5SW1hZ2UgPSB0aGlzLmVtcHR5SW1hZ2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdhY3Rpb24nOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuaWNvbiA9IHRoaXMuaWNvbjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmFjdGlvbiA9IHRoaXMuYWN0aW9uO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIudGV4dCA9IHRoaXMudGV4dDtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmljb25Qb3NpdGlvbiA9IHRoaXMuaWNvblBvc2l0aW9uO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIub25DbGljayA9IHRoaXMub25DbGljaztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3NlcnZpY2UnOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZW50aXR5ID0gdGhpcy5lbnRpdHk7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5zZXJ2aWNlID0gdGhpcy5zZXJ2aWNlO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuY29sdW1ucyA9IHRoaXMuY29sdW1ucztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnZhbHVlQ29sdW1uID0gdGhpcy52YWx1ZUNvbHVtbjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnBhcmVudEtleXMgPSB0aGlzLnBhcmVudEtleXM7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5xdWVyeU1ldGhvZCA9IHRoaXMucXVlcnlNZXRob2Q7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5zZXJ2aWNlVHlwZSA9IHRoaXMuc2VydmljZVR5cGU7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50cmFuc2xhdGUgPSB0aGlzLnRyYW5zbGF0ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3RyYW5zbGF0ZSc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50cmFuc2xhdGVBcmdzRm4gPSB0aGlzLnRyYW5zbGF0ZUFyZ3NGbjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVnaXN0ZXJSZW5kZXJlcihuZXdSZW5kZXJlcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYnVpbGRDZWxsRWRpdG9yKHR5cGU6IHN0cmluZywgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCBwcm9wc09yaWdpbjogYW55LCByZWdpc3RlckluQ29sdW1uOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGxldCBlZGl0b3I7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gZWRpdG9yc01hcHBpbmdbdHlwZV0gfHwgZWRpdG9yc01hcHBpbmcudGV4dDtcbiAgICBpZiAoY29tcG9uZW50UmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBlZGl0b3I7XG4gICAgfVxuXG4gICAgY29uc3QgcmVmID0gY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRSZWYpO1xuICAgIGVkaXRvciA9IHJlZi5pbnN0YW5jZTtcbiAgICBpZiAocHJvcHNPcmlnaW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgIGVkaXRvci5mb3JtYXQgPSBwcm9wc09yaWdpbi5mb3JtYXQ7XG4gICAgICAgICAgZWRpdG9yLmxvY2FsZSA9IHByb3BzT3JpZ2luLmxvY2FsZTtcbiAgICAgICAgICBlZGl0b3Iub1N0YXJ0VmlldyA9IHByb3BzT3JpZ2luLm9TdGFydFZpZXc7XG4gICAgICAgICAgZWRpdG9yLm9NaW5EYXRlID0gcHJvcHNPcmlnaW4ub01pbkRhdGU7XG4gICAgICAgICAgZWRpdG9yLm9NYXhEYXRlID0gcHJvcHNPcmlnaW4ub01heERhdGU7XG4gICAgICAgICAgZWRpdG9yLm9Ub3VjaFVpID0gcHJvcHNPcmlnaW4ub1RvdWNoVWk7XG4gICAgICAgICAgZWRpdG9yLm9TdGFydEF0ID0gcHJvcHNPcmlnaW4ub1N0YXJ0QXQ7XG4gICAgICAgICAgZWRpdG9yLmZpbHRlckRhdGUgPSBwcm9wc09yaWdpbi5maWx0ZXJEYXRlO1xuICAgICAgICAgIGVkaXRvci5kYXRlVmFsdWVUeXBlID0gcHJvcHNPcmlnaW4uZGF0ZVZhbHVlVHlwZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgICAgZWRpdG9yLm9EYXRlRm9ybWF0ID0gcHJvcHNPcmlnaW4ub0RhdGVGb3JtYXQ7XG4gICAgICAgICAgZWRpdG9yLm9Ib3VyRm9ybWF0ID0gcHJvcHNPcmlnaW4ub0hvdXJGb3JtYXQ7XG4gICAgICAgICAgZWRpdG9yLm9EYXRlTG9jYWxlID0gcHJvcHNPcmlnaW4ub0RhdGVMb2NhbGU7XG4gICAgICAgICAgZWRpdG9yLm9NaW5EYXRlID0gcHJvcHNPcmlnaW4ub01pbkRhdGU7XG4gICAgICAgICAgZWRpdG9yLm9NYXhEYXRlID0gcHJvcHNPcmlnaW4ub01heERhdGU7XG5cbiAgICAgICAgICBlZGl0b3Iub1RvdWNoVWkgPSBwcm9wc09yaWdpbi5vVG91Y2hVaTtcbiAgICAgICAgICBlZGl0b3Iub0RhdGVTdGFydEF0ID0gcHJvcHNPcmlnaW4ub0RhdGVTdGFydEF0O1xuICAgICAgICAgIGVkaXRvci5vRGF0ZVRleHRJbnB1dEVuYWJsZWQgPSBwcm9wc09yaWdpbi5vRGF0ZVRleHRJbnB1dEVuYWJsZWQ7XG5cbiAgICAgICAgICBlZGl0b3Iub0hvdXJNaW4gPSBwcm9wc09yaWdpbi5vSG91ck1pbjtcbiAgICAgICAgICBlZGl0b3Iub0hvdXJNYXggPSBwcm9wc09yaWdpbi5vSG91ck1heDtcbiAgICAgICAgICBlZGl0b3Iub0hvdXJUZXh0SW5wdXRFbmFibGVkID0gcHJvcHNPcmlnaW4ub0hvdXJUZXh0SW5wdXRFbmFibGVkO1xuICAgICAgICAgIGVkaXRvci5vSG91clBsYWNlaG9sZGVyID0gcHJvcHNPcmlnaW4ub0hvdXJQbGFjZWhvbGRlcjtcbiAgICAgICAgICBlZGl0b3Iub0RhdGVQbGFjZWhvbGRlciA9IHByb3BzT3JpZ2luLm9EYXRlUGxhY2Vob2xkZXI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgIGVkaXRvci5ib29sZWFuVHlwZSA9IHByb3BzT3JpZ2luLmJvb2xlYW5UeXBlO1xuICAgICAgICAgIGVkaXRvci5pbmRldGVybWluYXRlT25OdWxsID0gcHJvcHNPcmlnaW4uaW5kZXRlcm1pbmF0ZU9uTnVsbDtcbiAgICAgICAgICBlZGl0b3IuYXV0b0NvbW1pdCA9IHByb3BzT3JpZ2luLmF1dG9Db21taXQ7XG4gICAgICAgICAgZWRpdG9yLnRydWVWYWx1ZSA9IHByb3BzT3JpZ2luLnRydWVWYWx1ZTtcbiAgICAgICAgICBlZGl0b3IuZmFsc2VWYWx1ZSA9IHByb3BzT3JpZ2luLmZhbHNlVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICBjYXNlICdwZXJjZW50YWdlJzpcbiAgICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICBjYXNlICdyZWFsJzpcbiAgICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQocHJvcHNPcmlnaW4ubWluKSkge1xuICAgICAgICAgICAgZWRpdG9yLm1pbiA9IHByb3BzT3JpZ2luLm1pbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHByb3BzT3JpZ2luLm1heCkpIHtcbiAgICAgICAgICAgIGVkaXRvci5tYXggPSBwcm9wc09yaWdpbi5tYXg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVkaXRvci5zdGVwID0gVXRpbC5pc0RlZmluZWQocHJvcHNPcmlnaW4uc3RlcCkgPyBwcm9wc09yaWdpbi5zdGVwIDogZWRpdG9yLnN0ZXA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ltYWdlJzpcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGVkaXRvci5vbGFiZWwgPSBwcm9wc09yaWdpbi5vbGFiZWw7XG4gICAgICBlZGl0b3IudHlwZSA9IHByb3BzT3JpZ2luLnR5cGU7XG4gICAgfVxuICAgIGVkaXRvci5yZWdpc3RlckluQ29sdW1uID0gcmVnaXN0ZXJJbkNvbHVtbjtcblxuICAgIHJldHVybiBlZGl0b3I7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlRWRpdG9yKCkge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5lZGl0b3IpICYmIHRoaXMuZWRpdGFibGUpIHtcbiAgICAgIGNvbnN0IG5ld0VkaXRvciA9IHRoaXMuYnVpbGRDZWxsRWRpdG9yKHRoaXMudHlwZSwgdGhpcy5jb250YWluZXIsIHRoaXMpO1xuICAgICAgaWYgKG5ld0VkaXRvcikge1xuICAgICAgICBuZXdFZGl0b3Iub3JlcXVpcmVkID0gdGhpcy5vcmVxdWlyZWQ7XG4gICAgICAgIG5ld0VkaXRvci5zaG93UGxhY2VIb2xkZXIgPSB0aGlzLnNob3dQbGFjZUhvbGRlcjtcbiAgICAgICAgbmV3RWRpdG9yLnVwZGF0ZVJlY29yZE9uRWRpdCA9IHRoaXMudXBkYXRlUmVjb3JkT25FZGl0O1xuICAgICAgICBuZXdFZGl0b3Iuc2hvd05vdGlmaWNhdGlvbk9uRWRpdCA9IHRoaXMuc2hvd05vdGlmaWNhdGlvbk9uRWRpdDtcbiAgICAgICAgbmV3RWRpdG9yLmVkaXRpb25TdGFydGVkID0gdGhpcy5lZGl0aW9uU3RhcnRlZDtcbiAgICAgICAgbmV3RWRpdG9yLmVkaXRpb25DYW5jZWxsZWQgPSB0aGlzLmVkaXRpb25DYW5jZWxsZWQ7XG4gICAgICAgIG5ld0VkaXRvci5lZGl0aW9uQ29tbWl0dGVkID0gdGhpcy5lZGl0aW9uQ29tbWl0dGVkO1xuICAgICAgICBuZXdFZGl0b3Iub25Qb3N0VXBkYXRlUmVjb3JkID0gdGhpcy5vblBvc3RVcGRhdGVSZWNvcmQ7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFZGl0b3IobmV3RWRpdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJSZW5kZXJlcihyZW5kZXJlcjogYW55KSB7XG4gICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICAgIGNvbnN0IG9Db2wgPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5hdHRyKTtcbiAgICBpZiAob0NvbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvQ29sLnJlbmRlcmVyID0gdGhpcy5yZW5kZXJlcjtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJlci5pbml0aWFsaXplKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJFZGl0b3IoZWRpdG9yOiBhbnkpIHtcbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICBjb25zdCBvQ29sID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKHRoaXMuYXR0cik7XG4gICAgaWYgKG9Db2wgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb0NvbC5lZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICB9XG4gICAgdGhpcy5lZGl0b3IuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgc2V0IG9yZGVyYWJsZSh2YWw6IGFueSkge1xuICAgIHRoaXMuX29yZGVyYWJsZSA9IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJyA/IHZhbCA6IFV0aWwucGFyc2VCb29sZWFuKHZhbCwgdHJ1ZSk7XG4gICAgY29uc3Qgb0NvbCA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLmF0dHIpO1xuICAgIGlmIChvQ29sKSB7XG4gICAgICBvQ29sLm9yZGVyYWJsZSA9IHRoaXMuX29yZGVyYWJsZTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3JkZXJhYmxlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX29yZGVyYWJsZTtcbiAgfVxuXG4gIHNldCByZXNpemFibGUodmFsOiBhbnkpIHtcbiAgICB0aGlzLl9yZXNpemFibGUgPSB0eXBlb2YgdmFsID09PSAnYm9vbGVhbicgPyB2YWwgOiBVdGlsLnBhcnNlQm9vbGVhbih2YWwsIHRydWUpO1xuICAgIGNvbnN0IG9Db2wgPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5hdHRyKTtcbiAgICBpZiAob0NvbCkge1xuICAgICAgb0NvbC5yZXNpemFibGUgPSB0aGlzLl9yZXNpemFibGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJlc2l6YWJsZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9yZXNpemFibGU7XG4gIH1cblxuICBzZXQgc2VhcmNoYWJsZSh2YWw6IGFueSkge1xuICAgIHRoaXMuX3NlYXJjaGFibGUgPSB0eXBlb2YgdmFsID09PSAnYm9vbGVhbicgPyB2YWwgOiBVdGlsLnBhcnNlQm9vbGVhbih2YWwsIHRydWUpO1xuICAgIGNvbnN0IG9Db2wgPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5hdHRyKTtcbiAgICBpZiAob0NvbCkge1xuICAgICAgb0NvbC5zZWFyY2hhYmxlID0gdGhpcy5fc2VhcmNoYWJsZTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2VhcmNoYWJsZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hhYmxlO1xuICB9XG5cbiAgc2V0IGdyb3VwYWJsZSh2YWw6IGFueSkge1xuICAgIHRoaXMuX2dyb3VwYWJsZSA9IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJyA/IHZhbCA6IFV0aWwucGFyc2VCb29sZWFuKHZhbCwgdHJ1ZSk7XG4gICAgY29uc3Qgb0NvbCA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLmF0dHIpO1xuICAgIGlmIChvQ29sKSB7XG4gICAgICBvQ29sLmdyb3VwYWJsZSA9IHRoaXMuX2dyb3VwYWJsZTtcbiAgICB9XG4gIH1cblxuICBnZXQgZ3JvdXBhYmxlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2dyb3VwYWJsZTtcbiAgfVxuXG4gIGdldFNRTFR5cGUoKTogbnVtYmVyIHtcbiAgICBpZiAoISh0aGlzLnNxbFR5cGUgJiYgdGhpcy5zcWxUeXBlLmxlbmd0aCA+IDApKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICB0aGlzLnNxbFR5cGUgPSAnVElNRVNUQU1QJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgICAgdGhpcy5zcWxUeXBlID0gJ0lOVEVHRVInO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICB0aGlzLnNxbFR5cGUgPSAnQk9PTEVBTic7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JlYWwnOlxuICAgICAgICBjYXNlICdwZXJjZW50YWdlJzpcbiAgICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICAgIHRoaXMuc3FsVHlwZSA9ICdET1VCTEUnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX1NRTFR5cGUgPSBTUUxUeXBlcy5nZXRTUUxUeXBlVmFsdWUodGhpcy5zcWxUeXBlKTtcbiAgICByZXR1cm4gdGhpcy5fU1FMVHlwZTtcbiAgfVxuXG4gIHNldCBmaWx0ZXJTb3VyY2UodmFsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBsb3dlclZhbCA9ICh2YWwgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5fZmlsdGVyU291cmNlID0gKGxvd2VyVmFsID09PSAncmVuZGVyJyB8fCBsb3dlclZhbCA9PT0gJ2RhdGEnIHx8IGxvd2VyVmFsID09PSAnYm90aCcpID8gbG93ZXJWYWwgOiAncmVuZGVyJztcbiAgfVxuXG4gIGdldCBmaWx0ZXJTb3VyY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyU291cmNlO1xuICB9XG59XG4iLCI8c3BhbiAjY29udGFpbmVyPlxuPC9zcGFuPiJdfQ==
|
|
449
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvY29sdW1uL28tdGFibGUtY29sdW1uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2NvbHVtbi9vLXRhYmxlLWNvbHVtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUdSLFNBQVMsRUFDVCxnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU9sRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSwyQkFBMkIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSw4QkFBOEIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFFaEksTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUc7SUFFM0MsTUFBTTtJQUdOLE9BQU87SUFHUCx5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QUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzeW5jVmFsaWRhdG9yRm4sIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciwgTnVtYmVySW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBPVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL28tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPUGVyY2VudGFnZVZhbHVlQmFzZVR5cGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9vLXBlcmNlbnRhZ2UucGlwZSc7XG5pbXBvcnQgeyBEYXRlRmlsdGVyRnVuY3Rpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9kYXRlLWZpbHRlci1mdW5jdGlvbi50eXBlJztcbmltcG9ydCB7IEVycm9yRGF0YSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2Vycm9yLWRhdGEudHlwZSc7XG5pbXBvcnQgeyBFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZXhwcmVzc2lvbi50eXBlJztcbmltcG9ydCB7IE9EYXRlVmFsdWVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvby1kYXRlLXZhbHVlLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFNRTFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9zcWx0eXBlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9UYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL28tdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IGVkaXRvcnNNYXBwaW5nLCBPX1RBQkxFX0NFTExfRURJVE9SU19JTlBVVFMsIE9fVEFCTEVfQ0VMTF9FRElUT1JTX09VVFBVVFMgfSBmcm9tICcuL2NlbGwtZWRpdG9yL2NlbGwtZWRpdG9yJztcbmltcG9ydCB7IE9fVEFCTEVfQ0VMTF9SRU5ERVJFUlNfSU5QVVRTLCBPX1RBQkxFX0NFTExfUkVOREVSRVJTX09VVFBVVFMsIHJlbmRlcmVyc01hcHBpbmcgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXIvY2VsbC1yZW5kZXJlcic7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NPTFVNTiA9IFtcbiAgLy8gYXR0ciBbc3RyaW5nXTogY29sdW1uIG5hbWUuXG4gICdhdHRyJyxcblxuICAvLyB0aXRsZSBbc3RyaW5nXTogY29sdW1uIHRpdGxlLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3RpdGxlJyxcblxuICAvLyB0aXRsZS1hbGlnbiBbc3RhcnQgfCBjZW50ZXIgfCBlbmRdOiBjb2x1bW4gdGl0bGUgYWxpZ25tZW50LiBEZWZhdWx0OiBjZW50ZXIuXG4gICd0aXRsZUFsaWduOiB0aXRsZS1hbGlnbicsXG5cbiAgLy8gY29udGVudC1hbGlnbiBbc3RhcnQgfCBjZW50ZXIgfCBlbmRdOiBjb2x1bW4gY29udGVudCBhbGlnbm1lbnQuXG4gICdjb250ZW50QWxpZ246IGNvbnRlbnQtYWxpZ24nLFxuXG4gIC8vIG9yZGVyYWJsZSBbbm98eWVzXTogY29sdW1uIGNhbiBiZSBzb3J0ZWQuIERlZmF1bHQ6IHllcy5cbiAgJ29yZGVyYWJsZScsXG5cbiAgLy8gc2VhcmNoYWJsZSBbbm98eWVzXTogc2VhcmNoaW5ncyBhcmUgcGVyZm9ybWVkIGludG8gY29sdW1uIGNvbnRlbnQuIERlZmF1bHQ6IHllcy5cbiAgJ3NlYXJjaGFibGUnLFxuXG4gIC8vIGdyb3VwYWJsZSBbbm98eWVzfHRydWV8ZmFsc2VdOiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGNvbHVtbiBjYW4gYmUgZ3JvdXBhYmxlXG4gICdncm91cGFibGUnLFxuXG4gIC8vIHR5cGUgW2Jvb2xlYW58aW50ZWdlcnxyZWFsfGN1cnJlbmN5fGRhdGV8aW1hZ2VdOiBjb2x1bW4gdHlwZS4gRGVmYXVsdDogbm8gdmFsdWUgKHN0cmluZykuXG4gICd0eXBlJyxcblxuICAvLyBlZGl0YWJsZSBbbm98eWVzXTogY29sdW1uIGNhbiBiZSBlZGl0ZWQgZGlyZWN0bHkgb3ZlciB0aGUgdGFibGUuIERlZmF1bHQ6IG5vLlxuICAnZWRpdGFibGUnLFxuXG4gICd3aWR0aCcsXG5cbiAgLy8gb25seSBpbiBwaXhlbHNcbiAgJ21pbldpZHRoOiBtaW4td2lkdGgnLFxuXG4gIC8vIG9ubHkgaW4gcGl4ZWxzXG4gICdtYXhXaWR0aDogbWF4LXdpZHRoJyxcblxuICAvLyBhc3luYy1sb2FkIFtub3x5ZXN8dHJ1ZXxmYWxzZV06IGFzeW5jaHJvbm91cyBxdWVyeS4gRGVmYXVsdDogbm9cbiAgJ2FzeW5jTG9hZCA6IGFzeW5jLWxvYWQnLFxuXG4gIC8vIHNxbHR5cGVbc3RyaW5nXTogRGF0YSB0eXBlIGFjY29yZGluZyB0byBKYXZhIHN0YW5kYXJkLiBTZWUgU1FMVHlwZSBjbGFzcy4gRGVmYXVsdDogJ09USEVSJ1xuICAnc3FsVHlwZTogc3FsLXR5cGUnLFxuXG4gICd0b29sdGlwJyxcblxuICAndG9vbHRpcFZhbHVlOiB0b29sdGlwLXZhbHVlJyxcblxuICAndG9vbHRpcEZ1bmN0aW9uOiB0b29sdGlwLWZ1bmN0aW9uJyxcblxuICAnbXVsdGlsaW5lJyxcblxuICAncmVzaXphYmxlJyxcblxuICAnZmlsdGVyRXhwcmVzc2lvbkZ1bmN0aW9uOiBmaWx0ZXItZXhwcmVzc2lvbi1mdW5jdGlvbicsXG5cbiAgJ2NsYXNzJyxcblxuICAnYW5ndWxhclZhbGlkYXRvcnNGbjogdmFsaWRhdG9ycycsXG5cbiAgJ2FuZ3VsYXJWYWxpZGF0b3JzRm5FcnJvcnM6IHZhbGlkYXRvcnMtZXJyb3JzJyxcblxuICAnYW5ndWxhckFzeW5jVmFsaWRhdG9yc0ZuOiBhc3luYy12YWxpZGF0b3JzJyxcbiAgJ3ZhbHVlQ29sdW1uOiB2YWx1ZS1jb2x1bW4nLFxuXG4gIC4uLk9fVEFCTEVfQ0VMTF9SRU5ERVJFUlNfSU5QVVRTLFxuICAuLi5PX1RBQkxFX0NFTExfRURJVE9SU19JTlBVVFNcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19UQUJMRV9DT0xVTU4gPSBbXG4gIC4uLk9fVEFCTEVfQ0VMTF9SRU5ERVJFUlNfT1VUUFVUUyxcbiAgLi4uT19UQUJMRV9DRUxMX0VESVRPUlNfT1VUUFVUU1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1jb2x1bW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vby10YWJsZS1jb2x1bW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLWNvbHVtbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NPTFVNTixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ09MVU1OLFxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVDb2x1bW5Db21wb25lbnQgaW1wbGVtZW50cyBPVGFibGVDb2x1bW4sIE9uRGVzdHJveSwgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgcHVibGljIHJlbmRlcmVyOiBhbnk7XG4gIHB1YmxpYyBlZGl0b3I6IGFueTtcblxuICBwdWJsaWMgdHlwZTogc3RyaW5nO1xuICBwdWJsaWMgYXR0cjogc3RyaW5nO1xuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgcHVibGljIHRpdGxlQWxpZ246IHN0cmluZztcbiAgcHVibGljIGNvbnRlbnRBbGlnbjogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XG4gIHB1YmxpYyBzcWxUeXBlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfU1FMVHlwZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX29yZGVyYWJsZTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF9yZXNpemFibGU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfc2VhcmNoYWJsZTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF9ncm91cGFibGU6IGJvb2xlYW47XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgZWRpdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHdpZHRoOiBzdHJpbmc7XG4gIHB1YmxpYyBtaW5XaWR0aDogc3RyaW5nO1xuICBwdWJsaWMgbWF4V2lkdGg6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyB0b29sdGlwOiBib29sZWFuID0gZmFsc2U7XG4gIHRvb2x0aXBWYWx1ZTogc3RyaW5nO1xuICB0b29sdGlwRnVuY3Rpb246IChyb3dEYXRhOiBhbnkpID0+IGFueTtcbiAgcHVibGljIGNsYXNzOiBzdHJpbmc7XG4gIHB1YmxpYyB2YWx1ZUNvbHVtbjogc3RyaW5nO1xuXG4gIHNldCBtdWx0aWxpbmUodmFsOiBib29sZWFuKSB7XG4gICAgdmFsID0gVXRpbC5wYXJzZUJvb2xlYW4oU3RyaW5nKHZhbCkpO1xuICAgIHRoaXMuX211bHRpbGluZSA9IHZhbDtcbiAgfVxuICBnZXQgbXVsdGlsaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aWxpbmU7XG4gIH1cbiAgcHJvdGVjdGVkIF9tdWx0aWxpbmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgYW5ndWxhclZhbGlkYXRvcnNGbjogVmFsaWRhdG9yRm5bXSA9IFtdO1xuICBwdWJsaWMgYW5ndWxhclZhbGlkYXRvcnNGbkVycm9yczogRXJyb3JEYXRhW10gPSBbXTtcblxuICBwdWJsaWMgYW5ndWxhckFzeW5jVmFsaWRhdG9yc0ZuOiBBc3luY1ZhbGlkYXRvckZuW10gPSBbXTtcblxuICBmaWx0ZXJFeHByZXNzaW9uRnVuY3Rpb246IChjb2x1bW5BdHRyOiBzdHJpbmcsIHF1aWNrRmlsdGVyPzogc3RyaW5nKSA9PiBFeHByZXNzaW9uO1xuXG4gIC8qIGlucHV0IHJlbmRlcmVyIGJhc2UgKi9cbiAgcHVibGljIF9maWx0ZXJTb3VyY2U6ICdyZW5kZXInIHwgJ2RhdGEnIHwgJ2JvdGgnID0gJ3JlbmRlcic7XG4gIHB1YmxpYyBmaWx0ZXJGdW5jdGlvbjogKGNlbGxWYWx1ZTogYW55LCByb3dWYWx1ZTogYW55LCBxdWlja0ZpbHRlcj86IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgLyogaW5wdXQgcmVuZGVyZXIgZGF0ZSAqL1xuICBwcm90ZWN0ZWQgZm9ybWF0OiBzdHJpbmc7XG4gIC8qIGlucHV0IHJlbmRlcmVyIGludGVnZXIgKi9cbiAgcHJvdGVjdGVkIGdyb3VwaW5nOiBhbnkgPSB0cnVlO1xuICBwcm90ZWN0ZWQgdGhvdXNhbmRTZXBhcmF0b3I6IHN0cmluZyA9ICcsJztcbiAgLyogaW5wdXQgcmVuZGVyZXIgcmVhbCAqL1xuICBwcm90ZWN0ZWQgZGVjaW1hbFNlcGFyYXRvcjogc3RyaW5nID0gJy4nO1xuXG4gIC8qIGlucHV0IHJlbmRlcmVyIGN1cnJlbmN5ICovXG4gIHByb3RlY3RlZCBjdXJyZW5jeVN5bWJvbDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgY3VycmVuY3lTeW1ib2xQb3NpdGlvbjogc3RyaW5nO1xuXG4gIC8qIGlucHV0IHJlbmRlcmVyIGJvb2xlYW4gKi9cbiAgcHJvdGVjdGVkIHRydWVWYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgZmFsc2VWYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgcmVuZGVyVHJ1ZVZhbHVlOiBhbnk7XG4gIHByb3RlY3RlZCByZW5kZXJGYWxzZVZhbHVlOiBhbnk7XG4gIHByb3RlY3RlZCByZW5kZXJUeXBlOiBzdHJpbmcgPSAnc3RyaW5nJztcbiAgcHJvdGVjdGVkIGJvb2xlYW5UeXBlOiBzdHJpbmcgPSAnYm9vbGVhbic7XG5cbiAgLyogaW5wdXQgaW1hZ2UgKi9cbiAgcHJvdGVjdGVkIGltYWdlVHlwZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYXZhdGFyOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBlbXB0eUltYWdlOiBzdHJpbmc7XG5cbiAgLyogaW5wdXQgcmVuZGVyZXIgYWN0aW9uICovXG4gIHByb3RlY3RlZCBpY29uOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhY3Rpb246IHN0cmluZztcbiAgcHJvdGVjdGVkIHRleHQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGljb25Qb3NpdGlvbjogc3RyaW5nO1xuXG4gIC8qIGlucHV0IHJlbmRlcmVyIHNlcnZpY2UgKi9cbiAgcHJvdGVjdGVkIGVudGl0eTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2VydmljZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgY29sdW1uczogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcGFyZW50S2V5czogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcXVlcnlNZXRob2Q6IHN0cmluZyA9IENvZGVzLlFVRVJZX01FVEhPRDtcbiAgcHJvdGVjdGVkIHNlcnZpY2VUeXBlOiBzdHJpbmc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIC8qIGlucHV0IHJlbmRlcmVyIHRyYW5zbGF0ZSAqL1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRlQXJnc0ZuOiAocm93RGF0YTogYW55KSA9PiBhbnlbXTtcbiAgLyogaW5wdXQgdGltZSAqL1xuICBvRGF0ZUZvcm1hdCA9ICdMJztcbiAgb0hvdXJGb3JtYXQgPSAyNDtcblxuICAvKiBpbnB1dCByZW5kZXJlciBwZXJjZW50YWdlICovXG4gIHZhbHVlQmFzZTogT1BlcmNlbnRhZ2VWYWx1ZUJhc2VUeXBlID0gMTtcblxuICAvKiBpbnB1dCByZW5kZXJlciBhY3Rpb24gKi9cbiAgcHJvdGVjdGVkIHN2Z0ljb246IHN0cmluZztcblxuICAvKiBpbnB1dCBlZGl0b3IgKi9cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHByb3RlY3RlZCBvcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dQbGFjZUhvbGRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBvbGFiZWw6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHVwZGF0ZVJlY29yZE9uRWRpdDogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93Tm90aWZpY2F0aW9uT25FZGl0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyogaW5wdXQgZWRpdG9yIGRhdGUgKi9cbiAgcHJvdGVjdGVkIGxvY2FsZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgb1N0YXJ0VmlldzogJ21vbnRoJyB8ICd5ZWFyJyA9ICdtb250aCc7XG4gIHByb3RlY3RlZCBvTWluRGF0ZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgb01heERhdGU6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHByb3RlY3RlZCBvVG91Y2hVaTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgb1N0YXJ0QXQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGZpbHRlckRhdGU6IERhdGVGaWx0ZXJGdW5jdGlvbjtcbiAgcHJvdGVjdGVkIGRhdGVWYWx1ZVR5cGU6IE9EYXRlVmFsdWVUeXBlID0gJ3RpbWVzdGFtcCc7XG5cbiAgLyogaW5wdXQgZWRpdG9yIGludGVnZXIgKi9cbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgbWluOiBudW1iZXI7XG4gIEBOdW1iZXJJbnB1dENvbnZlcnRlcigpXG4gIG1heDogbnVtYmVyO1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBzdGVwOiBudW1iZXI7XG4gIEBOdW1iZXJJbnB1dENvbnZlcnRlcigpXG4gIG1pbkRlY2ltYWxEaWdpdHM6IG51bWJlciA9IDI7XG4gIEBOdW1iZXJJbnB1dENvbnZlcnRlcigpXG4gIG1heERlY2ltYWxEaWdpdHM6IG51bWJlciA9IDI7XG5cbiAgLyogaW5wdXQgZWRpdG9yIGJvb2xlYW4gKi9cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIGluZGV0ZXJtaW5hdGVPbk51bGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIGF1dG9Db21taXQ6IGJvb2xlYW47XG5cbiAgLyogb3V0cHV0IGNlbGwgcmVuZGVyZXIgYWN0aW9uICovXG4gIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG5cbiAgLyogb3V0cHV0IGNlbGwgZWRpdG9yICovXG4gIGVkaXRpb25TdGFydGVkOiBFdmVudEVtaXR0ZXI8b2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuICBlZGl0aW9uQ2FuY2VsbGVkOiBFdmVudEVtaXR0ZXI8b2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuICBlZGl0aW9uQ29tbWl0dGVkOiBFdmVudEVtaXR0ZXI8b2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuICBvblBvc3RVcGRhdGVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG5cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIGFzeW5jTG9hZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9UYWJsZUNvbXBvbmVudCkpIHB1YmxpYyB0YWJsZTogT1RhYmxlQ29tcG9uZW50LFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gIH1cblxuICBzdGF0aWMgYWRkRWRpdG9yKHR5cGU6IHN0cmluZywgZWRpdG9yQ2xhc3NSZWZlcmVuY2U6IGFueSkge1xuICAgIGlmICghZWRpdG9yc01hcHBpbmcuaGFzT3duUHJvcGVydHkodHlwZSkgJiYgVXRpbC5pc0RlZmluZWQoZWRpdG9yQ2xhc3NSZWZlcmVuY2UpKSB7XG4gICAgICBlZGl0b3JzTWFwcGluZ1t0eXBlXSA9IGVkaXRvckNsYXNzUmVmZXJlbmNlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ3JvdXBpbmcgPSBVdGlsLnBhcnNlQm9vbGVhbih0aGlzLmdyb3VwaW5nLCB0cnVlKTtcbiAgICB0aGlzLnRpdGxlQWxpZ24gPSB0aGlzLnBhcnNlVGl0bGVBbGlnbigpO1xuICAgIHRoaXMudGFibGUucmVnaXN0ZXJDb2x1bW4odGhpcyk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnRhYmxlLm9uUmVpbml0aWFsaXplLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRhYmxlLnJlZ2lzdGVyQ29sdW1uKHRoaXMpKSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGVSZW5kZXJlcigpO1xuICAgIHRoaXMuY3JlYXRlRWRpdG9yKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHBhcnNlVGl0bGVBbGlnbigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFsaWduID0gKHRoaXMudGl0bGVBbGlnbiB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gQ29kZXMuQVZBSUxBQkxFX0NPTFVNTl9USVRMRV9BTElHTlMuaW5kZXhPZihhbGlnbikgIT09IC0xID8gYWxpZ24gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgb3JpZ2luYWxXaWR0aCgpIHtcbiAgICBsZXQgb3JpZ2luYWxXaWR0aCA9IHRoaXMud2lkdGg7XG4gICAgY29uc3QgcHhWYWwgPSBVdGlsLmV4dHJhY3RQaXhlbHNWYWx1ZShvcmlnaW5hbFdpZHRoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocHhWYWwpKSB7XG4gICAgICBvcmlnaW5hbFdpZHRoID0gcHhWYWwgKyAnJztcbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbmFsV2lkdGg7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlUmVuZGVyZXIoKTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLnJlbmRlcmVyKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnR5cGUpKSB7XG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSByZW5kZXJlcnNNYXBwaW5nW3RoaXMudHlwZV07XG4gICAgICBpZiAoY29tcG9uZW50UmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IG5ld1JlbmRlcmVyO1xuICAgICAgICBjb25zdCByZWYgPSB0aGlzLmNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50UmVmKTtcbiAgICAgICAgbmV3UmVuZGVyZXIgPSByZWYuaW5zdGFuY2U7XG4gICAgICAgIG5ld1JlbmRlcmVyLmZpbHRlclNvdXJjZSA9IHRoaXMuZmlsdGVyU291cmNlO1xuICAgICAgICBuZXdSZW5kZXJlci5maWx0ZXJGdW5jdGlvbiA9IHRoaXMuZmlsdGVyRnVuY3Rpb247XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuY3VycmVuY3lTeW1ib2wgPSB0aGlzLmN1cnJlbmN5U3ltYm9sO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuY3VycmVuY3lTeW1ib2xQb3NpdGlvbiA9IHRoaXMuY3VycmVuY3lTeW1ib2xQb3NpdGlvbjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmRlY2ltYWxTZXBhcmF0b3IgPSB0aGlzLmRlY2ltYWxTZXBhcmF0b3I7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5taW5EZWNpbWFsRGlnaXRzID0gdGhpcy5taW5EZWNpbWFsRGlnaXRzO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIubWF4RGVjaW1hbERpZ2l0cyA9IHRoaXMubWF4RGVjaW1hbERpZ2l0cztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmdyb3VwaW5nID0gdGhpcy5ncm91cGluZztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnRob3VzYW5kU2VwYXJhdG9yID0gdGhpcy50aG91c2FuZFNlcGFyYXRvcjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZm9ybWF0ID0gdGhpcy5mb3JtYXQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmZvcm1hdCA9IHRoaXMuZm9ybWF0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5ncm91cGluZyA9IHRoaXMuZ3JvdXBpbmc7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50aG91c2FuZFNlcGFyYXRvciA9IHRoaXMudGhvdXNhbmRTZXBhcmF0b3I7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnRydWVWYWx1ZSA9IHRoaXMudHJ1ZVZhbHVlO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZmFsc2VWYWx1ZSA9IHRoaXMuZmFsc2VWYWx1ZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnJlbmRlclRydWVWYWx1ZSA9IHRoaXMucmVuZGVyVHJ1ZVZhbHVlO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIucmVuZGVyRmFsc2VWYWx1ZSA9IHRoaXMucmVuZGVyRmFsc2VWYWx1ZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnJlbmRlclR5cGUgPSB0aGlzLnJlbmRlclR5cGU7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5ib29sZWFuVHlwZSA9IHRoaXMuYm9vbGVhblR5cGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdwZXJjZW50YWdlJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnZhbHVlQmFzZSA9IHRoaXMudmFsdWVCYXNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncmVhbCc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5kZWNpbWFsU2VwYXJhdG9yID0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIubWluRGVjaW1hbERpZ2l0cyA9IHRoaXMubWluRGVjaW1hbERpZ2l0cztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLm1heERlY2ltYWxEaWdpdHMgPSB0aGlzLm1heERlY2ltYWxEaWdpdHM7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5ncm91cGluZyA9IHRoaXMuZ3JvdXBpbmc7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50aG91c2FuZFNlcGFyYXRvciA9IHRoaXMudGhvdXNhbmRTZXBhcmF0b3I7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdpbWFnZSc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5pbWFnZVR5cGUgPSB0aGlzLmltYWdlVHlwZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmF2YXRhciA9IHRoaXMuYXZhdGFyO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZW1wdHlJbWFnZSA9IHRoaXMuZW1wdHlJbWFnZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2FjdGlvbic6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5pY29uID0gdGhpcy5pY29uO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuYWN0aW9uID0gdGhpcy5hY3Rpb247XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50ZXh0ID0gdGhpcy50ZXh0O1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuaWNvblBvc2l0aW9uID0gdGhpcy5pY29uUG9zaXRpb247XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5vbkNsaWNrID0gdGhpcy5vbkNsaWNrO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnc2VydmljZSc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5lbnRpdHkgPSB0aGlzLmVudGl0eTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnNlcnZpY2UgPSB0aGlzLnNlcnZpY2U7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5jb2x1bW5zID0gdGhpcy5jb2x1bW5zO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIudmFsdWVDb2x1bW4gPSB0aGlzLnZhbHVlQ29sdW1uO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIucGFyZW50S2V5cyA9IHRoaXMucGFyZW50S2V5cztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnF1ZXJ5TWV0aG9kID0gdGhpcy5xdWVyeU1ldGhvZDtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnNlcnZpY2VUeXBlID0gdGhpcy5zZXJ2aWNlVHlwZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnRyYW5zbGF0ZSA9IHRoaXMudHJhbnNsYXRlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndHJhbnNsYXRlJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnRyYW5zbGF0ZUFyZ3NGbiA9IHRoaXMudHJhbnNsYXRlQXJnc0ZuO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnY2hpcCc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5pY29uID0gdGhpcy5pY29uO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuc3ZnT2NvbiA9IHRoaXMuc3ZnSWNvbjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmljb25Qb3NpdGlvbiA9IHRoaXMuaWNvblBvc2l0aW9uO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIudHJhbnNsYXRlID0gdGhpcy50cmFuc2xhdGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZ2lzdGVyUmVuZGVyZXIobmV3UmVuZGVyZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGJ1aWxkQ2VsbEVkaXRvcih0eXBlOiBzdHJpbmcsIGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHJvcHNPcmlnaW46IGFueSwgcmVnaXN0ZXJJbkNvbHVtbjogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBsZXQgZWRpdG9yO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGVkaXRvcnNNYXBwaW5nW3R5cGVdIHx8IGVkaXRvcnNNYXBwaW5nLnRleHQ7XG4gICAgaWYgKGNvbXBvbmVudFJlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZWRpdG9yO1xuICAgIH1cblxuICAgIGNvbnN0IHJlZiA9IGNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50UmVmKTtcbiAgICBlZGl0b3IgPSByZWYuaW5zdGFuY2U7XG4gICAgaWYgKHByb3BzT3JpZ2luICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICBlZGl0b3IuZm9ybWF0ID0gcHJvcHNPcmlnaW4uZm9ybWF0O1xuICAgICAgICAgIGVkaXRvci5sb2NhbGUgPSBwcm9wc09yaWdpbi5sb2NhbGU7XG4gICAgICAgICAgZWRpdG9yLm9TdGFydFZpZXcgPSBwcm9wc09yaWdpbi5vU3RhcnRWaWV3O1xuICAgICAgICAgIGVkaXRvci5vTWluRGF0ZSA9IHByb3BzT3JpZ2luLm9NaW5EYXRlO1xuICAgICAgICAgIGVkaXRvci5vTWF4RGF0ZSA9IHByb3BzT3JpZ2luLm9NYXhEYXRlO1xuICAgICAgICAgIGVkaXRvci5vVG91Y2hVaSA9IHByb3BzT3JpZ2luLm9Ub3VjaFVpO1xuICAgICAgICAgIGVkaXRvci5vU3RhcnRBdCA9IHByb3BzT3JpZ2luLm9TdGFydEF0O1xuICAgICAgICAgIGVkaXRvci5maWx0ZXJEYXRlID0gcHJvcHNPcmlnaW4uZmlsdGVyRGF0ZTtcbiAgICAgICAgICBlZGl0b3IuZGF0ZVZhbHVlVHlwZSA9IHByb3BzT3JpZ2luLmRhdGVWYWx1ZVR5cGU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3RpbWUnOlxuICAgICAgICAgIGVkaXRvci5vRGF0ZUZvcm1hdCA9IHByb3BzT3JpZ2luLm9EYXRlRm9ybWF0O1xuICAgICAgICAgIGVkaXRvci5vSG91ckZvcm1hdCA9IHByb3BzT3JpZ2luLm9Ib3VyRm9ybWF0O1xuICAgICAgICAgIGVkaXRvci5vRGF0ZUxvY2FsZSA9IHByb3BzT3JpZ2luLm9EYXRlTG9jYWxlO1xuICAgICAgICAgIGVkaXRvci5vTWluRGF0ZSA9IHByb3BzT3JpZ2luLm9NaW5EYXRlO1xuICAgICAgICAgIGVkaXRvci5vTWF4RGF0ZSA9IHByb3BzT3JpZ2luLm9NYXhEYXRlO1xuXG4gICAgICAgICAgZWRpdG9yLm9Ub3VjaFVpID0gcHJvcHNPcmlnaW4ub1RvdWNoVWk7XG4gICAgICAgICAgZWRpdG9yLm9EYXRlU3RhcnRBdCA9IHByb3BzT3JpZ2luLm9EYXRlU3RhcnRBdDtcbiAgICAgICAgICBlZGl0b3Iub0RhdGVUZXh0SW5wdXRFbmFibGVkID0gcHJvcHNPcmlnaW4ub0RhdGVUZXh0SW5wdXRFbmFibGVkO1xuXG4gICAgICAgICAgZWRpdG9yLm9Ib3VyTWluID0gcHJvcHNPcmlnaW4ub0hvdXJNaW47XG4gICAgICAgICAgZWRpdG9yLm9Ib3VyTWF4ID0gcHJvcHNPcmlnaW4ub0hvdXJNYXg7XG4gICAgICAgICAgZWRpdG9yLm9Ib3VyVGV4dElucHV0RW5hYmxlZCA9IHByb3BzT3JpZ2luLm9Ib3VyVGV4dElucHV0RW5hYmxlZDtcbiAgICAgICAgICBlZGl0b3Iub0hvdXJQbGFjZWhvbGRlciA9IHByb3BzT3JpZ2luLm9Ib3VyUGxhY2Vob2xkZXI7XG4gICAgICAgICAgZWRpdG9yLm9EYXRlUGxhY2Vob2xkZXIgPSBwcm9wc09yaWdpbi5vRGF0ZVBsYWNlaG9sZGVyO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICBlZGl0b3IuYm9vbGVhblR5cGUgPSBwcm9wc09yaWdpbi5ib29sZWFuVHlwZTtcbiAgICAgICAgICBlZGl0b3IuaW5kZXRlcm1pbmF0ZU9uTnVsbCA9IHByb3BzT3JpZ2luLmluZGV0ZXJtaW5hdGVPbk51bGw7XG4gICAgICAgICAgZWRpdG9yLmF1dG9Db21taXQgPSBwcm9wc09yaWdpbi5hdXRvQ29tbWl0O1xuICAgICAgICAgIGVkaXRvci50cnVlVmFsdWUgPSBwcm9wc09yaWdpbi50cnVlVmFsdWU7XG4gICAgICAgICAgZWRpdG9yLmZhbHNlVmFsdWUgPSBwcm9wc09yaWdpbi5mYWxzZVZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgICAgY2FzZSAncGVyY2VudGFnZSc6XG4gICAgICAgIGNhc2UgJ2N1cnJlbmN5JzpcbiAgICAgICAgY2FzZSAncmVhbCc6XG4gICAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHByb3BzT3JpZ2luLm1pbikpIHtcbiAgICAgICAgICAgIGVkaXRvci5taW4gPSBwcm9wc09yaWdpbi5taW47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChwcm9wc09yaWdpbi5tYXgpKSB7XG4gICAgICAgICAgICBlZGl0b3IubWF4ID0gcHJvcHNPcmlnaW4ubWF4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBlZGl0b3Iuc3RlcCA9IFV0aWwuaXNEZWZpbmVkKHByb3BzT3JpZ2luLnN0ZXApID8gcHJvcHNPcmlnaW4uc3RlcCA6IGVkaXRvci5zdGVwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpbWFnZSc6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBlZGl0b3Iub2xhYmVsID0gcHJvcHNPcmlnaW4ub2xhYmVsO1xuICAgICAgZWRpdG9yLnR5cGUgPSBwcm9wc09yaWdpbi50eXBlO1xuICAgIH1cbiAgICBlZGl0b3IucmVnaXN0ZXJJbkNvbHVtbiA9IHJlZ2lzdGVySW5Db2x1bW47XG5cbiAgICByZXR1cm4gZWRpdG9yO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUVkaXRvcigpIHtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMuZWRpdG9yKSAmJiB0aGlzLmVkaXRhYmxlKSB7XG4gICAgICBjb25zdCBuZXdFZGl0b3IgPSB0aGlzLmJ1aWxkQ2VsbEVkaXRvcih0aGlzLnR5cGUsIHRoaXMuY29udGFpbmVyLCB0aGlzKTtcbiAgICAgIGlmIChuZXdFZGl0b3IpIHtcbiAgICAgICAgbmV3RWRpdG9yLm9yZXF1aXJlZCA9IHRoaXMub3JlcXVpcmVkO1xuICAgICAgICBuZXdFZGl0b3Iuc2hvd1BsYWNlSG9sZGVyID0gdGhpcy5zaG93UGxhY2VIb2xkZXI7XG4gICAgICAgIG5ld0VkaXRvci51cGRhdGVSZWNvcmRPbkVkaXQgPSB0aGlzLnVwZGF0ZVJlY29yZE9uRWRpdDtcbiAgICAgICAgbmV3RWRpdG9yLnNob3dOb3RpZmljYXRpb25PbkVkaXQgPSB0aGlzLnNob3dOb3RpZmljYXRpb25PbkVkaXQ7XG4gICAgICAgIG5ld0VkaXRvci5lZGl0aW9uU3RhcnRlZCA9IHRoaXMuZWRpdGlvblN0YXJ0ZWQ7XG4gICAgICAgIG5ld0VkaXRvci5lZGl0aW9uQ2FuY2VsbGVkID0gdGhpcy5lZGl0aW9uQ2FuY2VsbGVkO1xuICAgICAgICBuZXdFZGl0b3IuZWRpdGlvbkNvbW1pdHRlZCA9IHRoaXMuZWRpdGlvbkNvbW1pdHRlZDtcbiAgICAgICAgbmV3RWRpdG9yLm9uUG9zdFVwZGF0ZVJlY29yZCA9IHRoaXMub25Qb3N0VXBkYXRlUmVjb3JkO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRWRpdG9yKG5ld0VkaXRvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyUmVuZGVyZXIocmVuZGVyZXI6IGFueSkge1xuICAgIHRoaXMucmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICBjb25zdCBvQ29sID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKHRoaXMuYXR0cik7XG4gICAgaWYgKG9Db2wgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb0NvbC5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXI7XG4gICAgfVxuICAgIHRoaXMucmVuZGVyZXIuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyRWRpdG9yKGVkaXRvcjogYW55KSB7XG4gICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgY29uc3Qgb0NvbCA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLmF0dHIpO1xuICAgIGlmIChvQ29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9Db2wuZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgfVxuICAgIHRoaXMuZWRpdG9yLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIHNldCBvcmRlcmFibGUodmFsOiBhbnkpIHtcbiAgICB0aGlzLl9vcmRlcmFibGUgPSB0eXBlb2YgdmFsID09PSAnYm9vbGVhbicgPyB2YWwgOiBVdGlsLnBhcnNlQm9vbGVhbih2YWwsIHRydWUpO1xuICAgIGNvbnN0IG9Db2wgPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5hdHRyKTtcbiAgICBpZiAob0NvbCkge1xuICAgICAgb0NvbC5vcmRlcmFibGUgPSB0aGlzLl9vcmRlcmFibGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9yZGVyYWJsZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9vcmRlcmFibGU7XG4gIH1cblxuICBzZXQgcmVzaXphYmxlKHZhbDogYW55KSB7XG4gICAgdGhpcy5fcmVzaXphYmxlID0gdHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nID8gdmFsIDogVXRpbC5wYXJzZUJvb2xlYW4odmFsLCB0cnVlKTtcbiAgICBjb25zdCBvQ29sID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKHRoaXMuYXR0cik7XG4gICAgaWYgKG9Db2wpIHtcbiAgICAgIG9Db2wucmVzaXphYmxlID0gdGhpcy5fcmVzaXphYmxlO1xuICAgIH1cbiAgfVxuXG4gIGdldCByZXNpemFibGUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fcmVzaXphYmxlO1xuICB9XG5cbiAgc2V0IHNlYXJjaGFibGUodmFsOiBhbnkpIHtcbiAgICB0aGlzLl9zZWFyY2hhYmxlID0gdHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nID8gdmFsIDogVXRpbC5wYXJzZUJvb2xlYW4odmFsLCB0cnVlKTtcbiAgICBjb25zdCBvQ29sID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKHRoaXMuYXR0cik7XG4gICAgaWYgKG9Db2wpIHtcbiAgICAgIG9Db2wuc2VhcmNoYWJsZSA9IHRoaXMuX3NlYXJjaGFibGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNlYXJjaGFibGUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoYWJsZTtcbiAgfVxuXG4gIHNldCBncm91cGFibGUodmFsOiBhbnkpIHtcbiAgICB0aGlzLl9ncm91cGFibGUgPSB0eXBlb2YgdmFsID09PSAnYm9vbGVhbicgPyB2YWwgOiBVdGlsLnBhcnNlQm9vbGVhbih2YWwsIHRydWUpO1xuICAgIGNvbnN0IG9Db2wgPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5hdHRyKTtcbiAgICBpZiAob0NvbCkge1xuICAgICAgb0NvbC5ncm91cGFibGUgPSB0aGlzLl9ncm91cGFibGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGdyb3VwYWJsZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9ncm91cGFibGU7XG4gIH1cblxuICBnZXRTUUxUeXBlKCk6IG51bWJlciB7XG4gICAgaWYgKCEodGhpcy5zcWxUeXBlICYmIHRoaXMuc3FsVHlwZS5sZW5ndGggPiAwKSkge1xuICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgdGhpcy5zcWxUeXBlID0gJ1RJTUVTVEFNUCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICAgIHRoaXMuc3FsVHlwZSA9ICdJTlRFR0VSJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgdGhpcy5zcWxUeXBlID0gJ0JPT0xFQU4nO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyZWFsJzpcbiAgICAgICAgY2FzZSAncGVyY2VudGFnZSc6XG4gICAgICAgIGNhc2UgJ2N1cnJlbmN5JzpcbiAgICAgICAgICB0aGlzLnNxbFR5cGUgPSAnRE9VQkxFJztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9TUUxUeXBlID0gU1FMVHlwZXMuZ2V0U1FMVHlwZVZhbHVlKHRoaXMuc3FsVHlwZSk7XG4gICAgcmV0dXJuIHRoaXMuX1NRTFR5cGU7XG4gIH1cblxuICBzZXQgZmlsdGVyU291cmNlKHZhbDogc3RyaW5nKSB7XG4gICAgY29uc3QgbG93ZXJWYWwgPSAodmFsIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuX2ZpbHRlclNvdXJjZSA9IChsb3dlclZhbCA9PT0gJ3JlbmRlcicgfHwgbG93ZXJWYWwgPT09ICdkYXRhJyB8fCBsb3dlclZhbCA9PT0gJ2JvdGgnKSA/IGxvd2VyVmFsIDogJ3JlbmRlcic7XG4gIH1cblxuICBnZXQgZmlsdGVyU291cmNlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclNvdXJjZTtcbiAgfVxufVxuIiwiPHNwYW4gI2NvbnRhaW5lcj5cbjwvc3Bhbj4iXX0=
|
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==
|