ontimize-web-ngx 15.5.1 → 15.6.0-next.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 +6 -5
- package/esm2020/lib/components/form/o-form.component.mjs +27 -13
- 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 +5 -5
- 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 +6 -6
- 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 +5 -5
- 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 +9 -5
- package/esm2020/lib/components/input/file-input/o-file-input.module.mjs +5 -5
- package/esm2020/lib/components/input/hour-input/o-hour-input.component.mjs +4 -4
- package/esm2020/lib/components/input/hour-input/o-hour-input.module.mjs +5 -5
- 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/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 +20 -11
- 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 +5 -5
- 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-service-base-component.class.mjs +35 -24
- package/esm2020/lib/components/o-service-component.class.mjs +8 -8
- 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 +4 -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 +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/action/o-table-cell-renderer-action.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/boolean/o-table-cell-renderer-boolean.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/currency/o-table-cell-renderer-currency.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/date/o-table-cell-renderer-date.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/image/o-table-cell-renderer-image.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/integer/o-table-cell-renderer-integer.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/o-base-table-cell-renderer.class.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/percentage/o-table-cell-renderer-percentage.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/real/o-table-cell-renderer-real.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +23 -9
- package/esm2020/lib/components/table/column/cell-renderer/time/o-table-cell-renderer-time.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/translate/o-table-cell-renderer-translate.component.mjs +4 -4
- package/esm2020/lib/components/table/column/o-table-column.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/contextmenu/o-table-context-menu.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/apply-configuration/o-table-apply-configuration-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/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 +4 -4
- package/esm2020/lib/components/table/extensions/footer/expanded/o-table-expanded-footer.directive.mjs +4 -4
- 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/o-table-header-components.mjs +3 -2
- 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 +4 -4
- package/esm2020/lib/components/table/extensions/header/table-header-select-all/o-table-header-select-all.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-insertable-row/o-table-insertable-row.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-option/o-table-option.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/o-table-datasource.service.mjs +4 -4
- package/esm2020/lib/components/table/extensions/o-table-strategy.service.mjs +4 -4
- package/esm2020/lib/components/table/extensions/o-table.dao.mjs +2 -2
- 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 +4 -4
- package/esm2020/lib/components/table/extensions/sort/o-mat-sort-header.mjs +4 -4
- 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/o-table.component.mjs +20 -15
- package/esm2020/lib/components/table/o-table.module.mjs +6 -6
- 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 +6 -6
- 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/app-config.mjs +4 -1
- package/esm2020/lib/config/o-modules.mjs +5 -5
- package/esm2020/lib/config/o-providers.mjs +9 -4
- 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/base-response.interface.mjs +2 -0
- package/esm2020/lib/interfaces/data-service.interface.mjs +1 -1
- package/esm2020/lib/interfaces/form-data-component.interface.mjs +1 -1
- package/esm2020/lib/interfaces/index.mjs +4 -1
- package/esm2020/lib/interfaces/jsonapi-response.interface.mjs +2 -0
- package/esm2020/lib/interfaces/name-convention.interface.mjs +2 -0
- package/esm2020/lib/interfaces/prefereces-service.interface.mjs +2 -0
- package/esm2020/lib/interfaces/service-response-adapter.interface.mjs +1 -1
- package/esm2020/lib/interfaces/service-response.interface.mjs +1 -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-data-service.class.mjs +19 -0
- package/esm2020/lib/services/base-service.class.mjs +36 -9
- package/esm2020/lib/services/currency.service.mjs +4 -4
- package/esm2020/lib/services/dialog.service.mjs +4 -4
- package/esm2020/lib/services/factories.mjs +73 -4
- package/esm2020/lib/services/icon.service.mjs +4 -4
- package/esm2020/lib/services/index.mjs +4 -1
- package/esm2020/lib/services/jsonapi/index.mjs +5 -0
- package/esm2020/lib/services/jsonapi/jsonapi-preferences.service.mjs +45 -0
- package/esm2020/lib/services/jsonapi/jsonapi-service-response.adapter.mjs +31 -0
- package/esm2020/lib/services/jsonapi/jsonapi-service-response.class.mjs +45 -0
- package/esm2020/lib/services/jsonapi/jsonapi.service.mjs +166 -0
- 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/name-convention/base-name-convention.service.mjs +59 -0
- package/esm2020/lib/services/name-convention/index.mjs +4 -0
- package/esm2020/lib/services/name-convention/name-convention-lower.service.mjs +11 -0
- package/esm2020/lib/services/name-convention/name-convention-upper.service.mjs +11 -0
- package/esm2020/lib/services/name-convention/name-convention.service.mjs +24 -0
- 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/index.mjs +4 -1
- package/esm2020/lib/services/ontimize/o-preference-query-argument.adapter.mjs +17 -0
- package/esm2020/lib/services/ontimize/o-preference-response.adapter.mjs +22 -0
- package/esm2020/lib/services/ontimize/ontimize-base-service.class.mjs +7 -12
- package/esm2020/lib/services/ontimize/ontimize-ee.service.mjs +33 -12
- package/esm2020/lib/services/ontimize/ontimize-export-3xx.service.mjs +6 -6
- package/esm2020/lib/services/ontimize/ontimize-export.service.mjs +6 -6
- package/esm2020/lib/services/ontimize/ontimize-file.service.mjs +6 -6
- package/esm2020/lib/services/ontimize/ontimize-preferences.service.mjs +58 -0
- package/esm2020/lib/services/ontimize/ontimize-service-response.adapter.mjs +7 -4
- package/esm2020/lib/services/ontimize/ontimize.service.mjs +32 -23
- 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 +21 -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/query-arguments/base-query-argument.adapter.mjs +9 -0
- package/esm2020/lib/services/query-arguments/base-query-argument.interface.mjs +2 -0
- package/esm2020/lib/services/query-arguments/index.mjs +5 -0
- package/esm2020/lib/services/query-arguments/jsonapi-query-arguments.adapter.mjs +63 -0
- package/esm2020/lib/services/query-arguments/ontimize-query-arguments.adapter.mjs +19 -0
- package/esm2020/lib/services/remote-config.service.mjs +5 -5
- 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.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/config.type.mjs +1 -1
- package/esm2020/lib/types/configure-service-args.type.mjs +1 -1
- package/esm2020/lib/types/index.mjs +5 -1
- package/esm2020/lib/types/json-query-parameter.type.mjs +2 -0
- package/esm2020/lib/types/preferences.type.mjs +2 -0
- package/esm2020/lib/types/query-params.type.mjs +2 -0
- package/esm2020/lib/types/service-configuration.type.mjs +2 -0
- package/esm2020/lib/types/service-request-param.type.mjs +1 -1
- package/esm2020/lib/types/service-type.type.mjs +8 -0
- package/esm2020/lib/util/codes.mjs +2 -1
- package/esm2020/lib/util/index.mjs +2 -1
- package/esm2020/lib/util/preference-mapping-util.mjs +80 -0
- package/esm2020/lib/util/sqltypes.mjs +5 -1
- package/esm2020/lib/util/util.mjs +103 -12
- package/fesm2015/ontimize-web-ngx.mjs +3564 -2637
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +3560 -2636
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/form/navigation/o-form-navigation.component.d.ts +3 -1
- package/lib/components/form/o-form.component.d.ts +12 -7
- package/lib/components/grid/o-grid.component.d.ts +2 -1
- package/lib/components/input/file-input/o-file-input.component.d.ts +3 -1
- package/lib/components/input/o-form-service-component.class.d.ts +11 -4
- package/lib/components/list/o-list.component.d.ts +2 -1
- package/lib/components/o-service-base-component.class.d.ts +8 -4
- package/lib/components/o-service-component.class.d.ts +1 -1
- package/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.d.ts +7 -2
- package/lib/components/table/column/o-table-column.component.d.ts +1 -1
- package/lib/components/table/extensions/o-table.dao.d.ts +4 -2
- package/lib/components/table/o-table.component.d.ts +4 -2
- package/lib/components/table/o-table.module.d.ts +1 -1
- package/lib/config/app-config.d.ts +1 -0
- package/lib/config/o-directives.d.ts +1 -1
- package/lib/interfaces/base-response.interface.d.ts +7 -0
- package/lib/interfaces/data-service.interface.d.ts +1 -0
- package/lib/interfaces/form-data-component.interface.d.ts +1 -0
- package/lib/interfaces/index.d.ts +3 -0
- package/lib/interfaces/jsonapi-response.interface.d.ts +9 -0
- package/lib/interfaces/name-convention.interface.d.ts +9 -0
- package/lib/interfaces/prefereces-service.interface.d.ts +7 -0
- package/lib/interfaces/service-response-adapter.interface.d.ts +4 -2
- package/lib/interfaces/service-response.interface.d.ts +2 -6
- package/lib/services/base-data-service.class.d.ts +17 -0
- package/lib/services/base-service.class.d.ts +27 -20
- package/lib/services/factories.d.ts +30 -0
- package/lib/services/index.d.ts +3 -0
- package/lib/services/jsonapi/index.d.ts +4 -0
- package/lib/services/jsonapi/jsonapi-preferences.service.d.ts +13 -0
- package/lib/services/jsonapi/jsonapi-service-response.adapter.d.ts +12 -0
- package/lib/services/jsonapi/jsonapi-service-response.class.d.ts +23 -0
- package/lib/services/jsonapi/jsonapi.service.d.ts +31 -0
- package/lib/services/name-convention/base-name-convention.service.d.ts +12 -0
- package/lib/services/name-convention/index.d.ts +3 -0
- package/lib/services/name-convention/name-convention-lower.service.d.ts +5 -0
- package/lib/services/name-convention/name-convention-upper.service.d.ts +5 -0
- package/lib/services/name-convention/name-convention.service.d.ts +10 -0
- package/lib/services/ontimize/index.d.ts +3 -0
- package/lib/services/ontimize/o-preference-query-argument.adapter.d.ts +7 -0
- package/lib/services/ontimize/o-preference-response.adapter.d.ts +9 -0
- package/lib/services/ontimize/ontimize-base-service.class.d.ts +3 -3
- package/lib/services/ontimize/ontimize-ee.service.d.ts +1 -0
- package/lib/services/ontimize/ontimize-export-3xx.service.d.ts +3 -2
- package/lib/services/ontimize/ontimize-export.service.d.ts +2 -2
- package/lib/services/ontimize/ontimize-file.service.d.ts +3 -2
- package/lib/services/ontimize/ontimize-preferences.service.d.ts +16 -0
- package/lib/services/ontimize/ontimize-service-response.adapter.d.ts +6 -5
- package/lib/services/ontimize/ontimize.service.d.ts +2 -0
- package/lib/services/parser/o-service-response.parser.d.ts +11 -5
- package/lib/services/query-arguments/base-query-argument.adapter.d.ts +6 -0
- package/lib/services/query-arguments/base-query-argument.interface.d.ts +3 -0
- package/lib/services/query-arguments/index.d.ts +4 -0
- package/lib/services/query-arguments/jsonapi-query-arguments.adapter.d.ts +12 -0
- package/lib/services/query-arguments/ontimize-query-arguments.adapter.d.ts +8 -0
- package/lib/types/config.type.d.ts +3 -1
- package/lib/types/configure-service-args.type.d.ts +5 -5
- package/lib/types/index.d.ts +4 -0
- package/lib/types/json-query-parameter.type.d.ts +15 -0
- package/lib/types/preferences.type.d.ts +7 -0
- package/lib/types/query-params.type.d.ts +11 -0
- package/lib/types/service-configuration.type.d.ts +7 -0
- package/lib/types/service-request-param.type.d.ts +5 -5
- package/lib/types/service-type.type.d.ts +5 -0
- package/lib/util/codes.d.ts +6 -5
- package/lib/util/index.d.ts +1 -0
- package/lib/util/preference-mapping-util.d.ts +74 -0
- package/lib/util/util.d.ts +10 -2
- package/package.json +1 -1
|
@@ -343,8 +343,8 @@ export class ODateRangeInputComponent extends OFormDataComponent {
|
|
|
343
343
|
return Util.isDefined(result) && result.isValid() ? result : undefined;
|
|
344
344
|
}
|
|
345
345
|
}
|
|
346
|
-
ODateRangeInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
347
|
-
ODateRangeInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
346
|
+
ODateRangeInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ODateRangeInputComponent, deps: [{ token: forwardRef(() => OFormComponent), optional: true }, { token: i0.ElementRef }, { token: i0.Injector }, { token: i1.DateAdapter }, { token: i2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
347
|
+
ODateRangeInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ODateRangeInputComponent, selector: "o-daterange-input", inputs: { separator: "separator", olocale: ["locale", "olocale"], startKey: "startKey", endKey: "endKey", valueType: ["value-type", "valueType"], mode: "mode", placeholderStartDay: ["placeholder-startday", "placeholderStartDay"], placeholderEndDay: ["placeholder-endday", "placeholderEndDay"], oformat: ["format", "oformat"], oStartView: ["start-view", "oStartView"], oMinDate: ["min", "oMinDate"], oMaxDate: ["max", "oMaxDate"], oTouchUi: ["touch-ui", "oTouchUi"], oStartAt: ["start-at", "oStartAt"], filterDate: ["filter-date", "filterDate"], textInputEnabled: ["text-input-enabled", "textInputEnabled"], dateClass: ["date-class", "dateClass"] }, outputs: { onChange: "onChange", onValueChange: "onValueChange", onFocus: "onFocus", onBlur: "onBlur" }, providers: [
|
|
348
348
|
{ provide: DateAdapter, useClass: OntimizeMomentDateAdapter, deps: [MAT_DATE_LOCALE] }
|
|
349
349
|
], viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true, static: true }, { propertyName: "dateRangeInput", first: true, predicate: ["dateRangeInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\">\n\n <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n class=\"icon-field\" fxFlexFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <mat-date-range-input #dateRangeInput [rangePicker]=\"picker\" [id]=\"getAttribute()\" [formGroup]=\"range\" [separator]=\"separator\"\n [required]=\"isRequired\" [min]=\"oMinDate\" [max]=\"oMaxDate\" (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\">\n <input #startDate matStartDate placeholder=\"{{ placeholderStartDay | oTranslate }}\" [value]=\"startDateValue\"\n [formControlName]=\"startKey\" (dateChange)=\"onChangeEvent($event)\" [readonly]=\"isReadOnly || !textInputEnabled\" (focus)=\"innerOnFocus($event)\"\n (blur)=\"innerOnBlur($event)\" [required]=\"isRequired\">\n <input #endDate matEndDate placeholder=\"{{ placeholderEndDay | oTranslate }}\" [value]=\"endDateValue\" [formControlName]=\"endKey\"\n (dateChange)=\"onChangeEvent($event)\" [readonly]=\"isReadOnly || !textInputEnabled\" (focus)=\"innerOnFocus($event)\" (blur)=\"innerOnBlur($event)\"\n [required]=\"isRequired\">\n </mat-date-range-input>\n\n <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" [disabled]=\"isReadOnly || !enabled\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker [disabled]=\"isReadOnly || !enabled\" [class.read-only]=\"isReadOnly\" [touchUi]=\"touchUi\" [dateClass]=\"dateClass\"></mat-date-range-picker>\n\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('dateRange')\">\n {{ 'FORM_VALIDATION.DATERANGE_INVALID' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('dateRangeParse')\">\n {{ 'FORM_VALIDATION.DATE_PARSE' | oTranslate }} : {{ getErrorValue('dateRangeParse', 'format') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('dateRangeMin')\">\n {{ 'FORM_VALIDATION.DATERANGE_MIN' | oTranslate }} : {{ getErrorValue('dateRangeMin', 'dateMin') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('dateRangeMax')\">\n {{ 'FORM_VALIDATION.DATERANGE_MAX' | oTranslate }} : {{ getErrorValue('dateRangeMax', 'dateMax') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6.OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i8.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i8.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i8.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i8.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i10.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i12.OTranslatePipe, name: "oTranslate" }] });
|
|
350
350
|
__decorate([
|
|
@@ -355,7 +355,7 @@ __decorate([
|
|
|
355
355
|
BooleanInputConverter(),
|
|
356
356
|
__metadata("design:type", Boolean)
|
|
357
357
|
], ODateRangeInputComponent.prototype, "oTouchUi", void 0);
|
|
358
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
358
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ODateRangeInputComponent, decorators: [{
|
|
359
359
|
type: Component,
|
|
360
360
|
args: [{ selector: 'o-daterange-input', outputs: DEFAULT_OUTPUTS_O_DATERANGE_INPUT, inputs: DEFAULT_INPUTS_O_DATERANGE_INPUT, providers: [
|
|
361
361
|
{ provide: DateAdapter, useClass: OntimizeMomentDateAdapter, deps: [MAT_DATE_LOCALE] }
|
|
@@ -372,4 +372,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
372
372
|
type: ViewChild,
|
|
373
373
|
args: ['dateRangeInput']
|
|
374
374
|
}] } });
|
|
375
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1kYXRlcmFuZ2UtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS1yYW5nZS9vLWRhdGVyYW5nZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9kYXRlLXJhbmdlL28tZGF0ZXJhbmdlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQXFCLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFlLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQXFELE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQXNDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekgsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQs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QWUsRUFBRTt3QkFDbkIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtxQkFDckI7aUJBQ0Y7Z0JBQ0QsTUFBTTtZQUNSO2dCQUNFLE1BQU07U0FDVDtRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0lBQ3hFLENBQUM7O3NIQXZYVSx3QkFBd0Isa0JBd0diLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUM7MEdBeEczQyx3QkFBd0IsOHhCQUp4QjtRQUNULEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUU7S0FDdkYsb1FDL0NILDA5RkEwQ0E7QURZRTtJQUFDLHFCQUFxQixFQUFFOztrRUFDZ0I7QUFFeEM7SUFBQyxxQkFBcUIsRUFBRTs7MERBQ1M7NEZBVHRCLHdCQUF3QjtrQkFUcEMsU0FBUzsrQkFDRSxtQkFBbUIsV0FFcEIsaUNBQWlDLFVBQ2xDLGdDQUFnQyxhQUM3Qjt3QkFDVCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFO3FCQUN2Rjs7MEJBMEdFLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQzt1SkFyR3RELE1BQU07c0JBREwsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUk5QixnQkFBZ0IsTUFHaEIsUUFBUSxNQUdmLGNBQWM7c0JBRGIsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZWRpYUNoYW5nZSwgTWVkaWFPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcbmltcG9ydCB7IEZvcm1Hcm91cCwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQVRfREFURV9MT0NBTEUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IERhdGVSYW5nZSwgTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQsIE1hdERhdGVSYW5nZUlucHV0LCBNYXREYXRlUmFuZ2VQaWNrZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBNb21lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9tZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgT250aW1pemVNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBGb3JtVmFsdWVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZm9ybS12YWx1ZS1vcHRpb25zLnR5cGUnO1xuaW1wb3J0IHsgT0RhdGVWYWx1ZVR5cGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9vLWRhdGUtdmFsdWUudHlwZSc7XG5pbXBvcnQgeyBTUUxUeXBlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvc3FsdHlwZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybVZhbHVlIH0gZnJvbSAnLi4vLi4vZm9ybS9vLWZvcm0tdmFsdWUnO1xuaW1wb3J0IHsgT0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3JtL28tZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgREVGQVVMVF9PVVRQVVRTX09fRk9STV9EQVRBX0NPTVBPTkVOVCwgT0Zvcm1EYXRhQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vby1mb3JtLWRhdGEtY29tcG9uZW50LmNsYXNzJztcbmltcG9ydCB7IE9WYWx1ZUNoYW5nZUV2ZW50IH0gZnJvbSAnLi4vLi4vby12YWx1ZS1jaGFuZ2UtZXZlbnQuY2xhc3MnO1xuaW1wb3J0IHsgREVGQVVMVF9JTlBVVFNfT19EQVRFX0lOUFVUIH0gZnJvbSAnLi4vZGF0ZS1pbnB1dC9vLWRhdGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE9Gb3JtQ29udHJvbCB9IGZyb20gJy4uL28tZm9ybS1jb250cm9sLmNsYXNzJztcbmltcG9ydCB7IERhdGVDdXN0b21DbGFzc0Z1bmN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZGF0ZS1jdXN0b20tY2xhc3MudHlwZSc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19EQVRFUkFOR0VfSU5QVVQgPSBbXG4gIC4uLkRFRkFVTFRfT1VUUFVUU19PX0ZPUk1fREFUQV9DT01QT05FTlRcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0RBVEVSQU5HRV9JTlBVVCA9IFtcbiAgJ3NlcGFyYXRvcicsXG4gICdvbG9jYWxlOmxvY2FsZScsXG4gICdzdGFydEtleScsXG4gICdlbmRLZXknLFxuICAndmFsdWVUeXBlOiB2YWx1ZS10eXBlJyxcbiAgJ21vZGUnLFxuICAncGxhY2Vob2xkZXJTdGFydERheTogcGxhY2Vob2xkZXItc3RhcnRkYXknLFxuICAncGxhY2Vob2xkZXJFbmREYXk6IHBsYWNlaG9sZGVyLWVuZGRheScsXG4gIC4uLkRFRkFVTFRfSU5QVVRTX09fREFURV9JTlBVVFxuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby1kYXRlcmFuZ2UtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vby1kYXRlcmFuZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19EQVRFUkFOR0VfSU5QVVQsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19EQVRFUkFOR0VfSU5QVVQsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBPbnRpbWl6ZU1vbWVudERhdGVBZGFwdGVyLCBkZXBzOiBbTUFUX0RBVEVfTE9DQUxFXSB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgT0RhdGVSYW5nZUlucHV0Q29tcG9uZW50IGV4dGVuZHMgT0Zvcm1EYXRhQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ3BpY2tlcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHBpY2tlciE6IE1hdERhdGVSYW5nZVBpY2tlcjxEYXRlPjtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHRleHRJbnB1dEVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgb1RvdWNoVWk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdkYXRlUmFuZ2VJbnB1dCcpXG4gIGRhdGVSYW5nZUlucHV0OiBNYXREYXRlUmFuZ2VJbnB1dDxEYXRlPjtcblxuICBwdWJsaWMgbW9kZTogJ21vYmlsZScgfCAnZGVza3RvcCcgfCAnYXV0bycgPSAnYXV0byc7XG5cbiAgc3RhcnREYXRlVmFsdWU6IERhdGU7XG4gIGVuZERhdGVWYWx1ZTogRGF0ZTtcblxuICByYW5nZTogRm9ybUdyb3VwPHsgW3g6IHN0cmluZ106IE9Gb3JtQ29udHJvbDsgfT5cblxuICBwcm90ZWN0ZWQgX2RhdGVDbGFzczogRGF0ZUN1c3RvbUNsYXNzRnVuY3Rpb25cbiAgZ2V0IGRhdGVDbGFzcygpOiBEYXRlQ3VzdG9tQ2xhc3NGdW5jdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVDbGFzcztcbiAgfVxuXG4gIHNldCBkYXRlQ2xhc3ModmFsOiBEYXRlQ3VzdG9tQ2xhc3NGdW5jdGlvbikge1xuICAgIHRoaXMuX2RhdGVDbGFzcyA9IHZhbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBfb01pbkRhdGU6IERhdGU7XG4gIHNldCBvTWluRGF0ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCBtb21lbnREID0gdGhpcy5nZXRWYWx1ZUFzTW9tZW50KHZhbHVlKVxuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKG1vbWVudEQpKSB7XG4gICAgICAgIHRoaXMuX29NaW5EYXRlID0gdGhpcy5jb252ZXJ0VG9EYXRlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZ2V0IG9NaW5EYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9vTWluRGF0ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfb01heERhdGU6IERhdGU7XG4gIHNldCBvTWF4RGF0ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9vTWF4RGF0ZSA9IHRoaXMuY29udmVydFRvRGF0ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIGdldCBvTWF4RGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fb01heERhdGU7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3N0YXJ0S2V5OiBzdHJpbmcgPSAnc3RhcnREYXRlJztcbiAgZ2V0IHN0YXJ0S2V5KCkge1xuICAgIHJldHVybiB0aGlzLl9zdGFydEtleTtcbiAgfVxuICBzZXQgc3RhcnRLZXkodmFsdWUpIHtcbiAgICB0aGlzLl9zdGFydEtleSA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9lbmRLZXk6IHN0cmluZyA9ICdlbmREYXRlJztcbiAgZ2V0IGVuZEtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kS2V5O1xuICB9XG4gIHNldCBlbmRLZXkodmFsdWUpIHtcbiAgICB0aGlzLl9lbmRLZXkgPSB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfdmFsdWVUeXBlOiBPRGF0ZVZhbHVlVHlwZSA9ICd0aW1lc3RhbXAnO1xuXG4gIHB1YmxpYyBzZXBhcmF0b3IgPSAnIC0gJztcblxuICBnZXQgc2hvd0NsZWFyQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNsZWFyQnV0dG9uICYmICF0aGlzLmlzUmVhZE9ubHkgJiYgdGhpcy5lbmFibGVkICYmIHRoaXMuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCB0b3VjaFVpKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9Ub3VjaFVpIHx8IGZhbHNlO1xuICB9XG5cbiAgc2V0IHRvdWNoVWkodmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5vVG91Y2hVaSA9IHZhbDtcbiAgfVxuXG4gIGlzTW9iaWxlTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnbW9iaWxlJyB8fCAodGhpcy5tb2RlID09PSAnYXV0bycgJiYgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLkhhbmRzZXQpKVxuICB9XG5cbiAgaXNEZXNrdG9wTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZGVza3RvcCcgfHwgKHRoaXMubW9kZSA9PT0gJ2F1dG8nICYmICF0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuSGFuZHNldCkpXG4gIH1cblxuICBwdWJsaWMgb2Zvcm1hdDogc3RyaW5nID0gJ0wnO1xuXG4gIHByb3RlY3RlZCBvbG9jYWxlOiBzdHJpbmc7XG4gIHByaXZhdGUgbW9tZW50U3J2OiBNb21lbnRTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgbWVkaWE6IE1lZGlhT2JzZXJ2ZXI7XG4gIHByb3RlY3RlZCBtZWRpYVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgb25MYW5ndWFnZUNoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHB1YmxpYyBwbGFjZWhvbGRlclN0YXJ0RGF5ID0gJ0RBVEVSQU5HRS5QTEFDRUhPTERFUl9TVEFSVERBVEUnO1xuICBwdWJsaWMgcGxhY2Vob2xkZXJFbmREYXkgPSAnREFURVJBTkdFLlBMQUNFSE9MREVSX0VORERBVEUnO1xuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT0Zvcm1Db21wb25lbnQpKSBmb3JtOiBPRm9ybUNvbXBvbmVudCxcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIG1vbWVudERhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxPbnRpbWl6ZU1vbWVudERhdGVBZGFwdGVyPixcbiAgICBwcm90ZWN0ZWQgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXJcbiAgKSB7XG4gICAgc3VwZXIoZm9ybSwgZWxSZWYsIGluamVjdG9yKTtcbiAgICB0aGlzLm1vbWVudFNydiA9IHRoaXMuaW5qZWN0b3IuZ2V0KE1vbWVudFNlcnZpY2UpO1xuICAgIHRoaXMubWVkaWEgPSB0aGlzLmluamVjdG9yLmdldChNZWRpYU9ic2VydmVyKTtcbiAgICB0aGlzLnJhbmdlID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBbdGhpcy5zdGFydEtleV06IG5ldyBPRm9ybUNvbnRyb2woKSxcbiAgICAgIFt0aGlzLmVuZEtleV06IG5ldyBPRm9ybUNvbnRyb2woKVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvTWVkaWFDaGFuZ2VzKCk7XG4gICAgaWYgKCF0aGlzLm9sb2NhbGUpIHtcbiAgICAgIHRoaXMub2xvY2FsZSA9IHRoaXMubW9tZW50U3J2LmdldExvY2FsZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9mb3JtYXQpIHtcbiAgICAgICh0aGlzLm1vbWVudERhdGVBZGFwdGVyIGFzIGFueSkub0Zvcm1hdCA9IHRoaXMub2Zvcm1hdDtcbiAgICB9XG5cbiAgICB0aGlzLm1vbWVudERhdGVBZGFwdGVyLnNldExvY2FsZSh0aGlzLm9sb2NhbGUpO1xuICAgIHRoaXMub25MYW5ndWFnZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5vbkxhbmd1YWdlQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5tb21lbnREYXRlQWRhcHRlci5zZXRMb2NhbGUodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldEN1cnJlbnRMYW5nKCkpO1xuICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLmdldFZhbHVlKCkpO1xuICAgIH0pO1xuXG4gIH1cblxuICBwdWJsaWMgc3Vic2NyaWJlVG9NZWRpYUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5tZWRpYVN1YnNjcmlwdGlvbiA9IHRoaXMubWVkaWEuYXNPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKChjaGFuZ2U6IE1lZGlhQ2hhbmdlW10pID0+IHtcbiAgICAgIGlmIChbJ3hzJywgJ3NtJ10uaW5kZXhPZihjaGFuZ2VbMF0ubXFBbGlhcykgIT09IC0xKSB7XG4gICAgICAgIHRoaXMudG91Y2hVaSA9IFV0aWwuaXNEZWZpbmVkKHRoaXMub1RvdWNoVWkpID8gdGhpcy5vVG91Y2hVaSA6IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoWydtZCcsICdsZycsICd4bCddLmluZGV4T2YoY2hhbmdlWzBdLm1xQWxpYXMpICE9PSAtMSkge1xuICAgICAgICB0aGlzLnRvdWNoVWkgPSBVdGlsLmlzRGVmaW5lZCh0aGlzLm9Ub3VjaFVpKSA/IHRoaXMub1RvdWNoVWkgOiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1JlYWRPbmx5ICYmIHRoaXMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5waWNrZXIub3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIHJlc29sdmVWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBzdXBlci5yZXNvbHZlVmFsaWRhdG9ycygpO1xuXG4gICAgdmFsaWRhdG9ycy5wdXNoKHRoaXMucmFuZ2VEYXRlVmFsaWRhdG9yLmJpbmQodGhpcykpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLm9NaW5EYXRlKSkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKHRoaXMubWluRGF0ZVZhbGlkYXRvci5iaW5kKHRoaXMpKTtcbiAgICB9XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMub01heERhdGUpKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5tYXhEYXRlVmFsaWRhdG9yLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLnBhcnNlRGF0ZVZhbGlkYXRvci5iaW5kKHRoaXMpKTtcbiAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgfVxuXG4gIGlzT2JqZWN0RGF0YVJhbmdlTnVsbChvYmplY3RWYWx1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvYmplY3RWYWx1ZSAhPT0gbnVsbCAmJiBvYmplY3RWYWx1ZS52YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgIVV0aWwuaXNEZWZpbmVkKG9iamVjdFZhbHVlLnZhbHVlW3RoaXMuc3RhcnRLZXldKSAmJlxuICAgICAgIVV0aWwuaXNEZWZpbmVkKG9iamVjdFZhbHVlLnZhbHVlW3RoaXMuZW5kS2V5XSk7XG4gIH1cblxuXG4gIHByb3RlY3RlZCByYW5nZURhdGVWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG5cbiAgICBpZiAoY29udHJvbC52YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhdGhpcy5pc09iamVjdERhdGFSYW5nZU51bGwoY29udHJvbCkpIHtcbiAgICAgIGNvbnN0IGVuZFZhbHVlID0gdGhpcy5nZXRWYWx1ZUFzTW9tZW50KGNvbnRyb2wudmFsdWVbdGhpcy5fZW5kS2V5XSk7XG4gICAgICBjb25zdCBzdGFydFZhbHVlID0gdGhpcy5nZXRWYWx1ZUFzTW9tZW50KGNvbnRyb2wudmFsdWVbdGhpcy5fc3RhcnRLZXldKTtcbiAgICAgIGlmIChlbmRWYWx1ZS5pc1NhbWVPckJlZm9yZShzdGFydFZhbHVlKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGVSYW5nZTogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBwcm90ZWN0ZWQgbWluRGF0ZVZhbGlkYXRvcihjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBjb25zdCBtaW5kYXRlID0gbW9tZW50KHRoaXMub01pbkRhdGUpO1xuICAgIGlmICgoY29udHJvbC52YWx1ZSBpbnN0YW5jZW9mIE9iamVjdClcbiAgICAgICYmICF0aGlzLmlzT2JqZWN0RGF0YVJhbmdlTnVsbChjb250cm9sKSkge1xuICAgICAgY29uc3Qgc3RhcnRWYWx1ZSA9IHRoaXMuZ2V0VmFsdWVBc01vbWVudChjb250cm9sLnZhbHVlW3RoaXMuX3N0YXJ0S2V5XSk7XG4gICAgICBpZiAoc3RhcnRWYWx1ZS5pc0JlZm9yZShtaW5kYXRlKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGVSYW5nZU1pbjoge1xuICAgICAgICAgICAgZGF0ZU1pbjogbWluZGF0ZS5mb3JtYXQodGhpcy5vZm9ybWF0KVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcHJvdGVjdGVkIG1heERhdGVWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgY29uc3QgbWF4ZGF0ZSA9IG1vbWVudCh0aGlzLm9NYXhEYXRlKTtcbiAgICBpZiAoKGNvbnRyb2wudmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgICAmJiAhdGhpcy5pc09iamVjdERhdGFSYW5nZU51bGwoY29udHJvbCkpIHtcbiAgICAgIGNvbnN0IGVuZFZhbHVlID0gdGhpcy5nZXRWYWx1ZUFzTW9tZW50KGNvbnRyb2wudmFsdWVbdGhpcy5fZW5kS2V5XSk7XG4gICAgICBpZiAoZW5kVmFsdWUuaXNBZnRlcihtYXhkYXRlKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGVSYW5nZU1heDoge1xuICAgICAgICAgICAgZGF0ZU1heDogbWF4ZGF0ZS5mb3JtYXQodGhpcy5vZm9ybWF0KVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlRGF0ZVZhbGlkYXRvcihjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBpZiAoKGNvbnRyb2wudmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgICAmJiAhdGhpcy5pc09iamVjdERhdGFSYW5nZU51bGwoY29udHJvbCkpIHtcbiAgICAgIGNvbnN0IGVuZFZhbHVlID0gdGhpcy5nZXRWYWx1ZUFzTW9tZW50KGNvbnRyb2wudmFsdWVbdGhpcy5fZW5kS2V5XSk7XG4gICAgICBjb25zdCBzdGFydFZhbHVlID0gdGhpcy5nZXRWYWx1ZUFzTW9tZW50KGNvbnRyb2wudmFsdWVbdGhpcy5fc3RhcnRLZXldKTtcbiAgICAgIGlmICghZW5kVmFsdWUuaXNWYWxpZCgpIHx8ICFzdGFydFZhbHVlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGVSYW5nZVBhcnNlOiB7XG4gICAgICAgICAgICBmb3JtYXQ6IHRoaXMub2Zvcm1hdCArIHRoaXMuc2VwYXJhdG9yICsgdGhpcy5vZm9ybWF0XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBzZXQgdmFsdWVUeXBlKHZhbDogYW55KSB7XG4gICAgdGhpcy5fdmFsdWVUeXBlID0gVXRpbC5jb252ZXJ0VG9PRGF0ZVZhbHVlVHlwZSh2YWwpO1xuICB9XG5cbiAgZ2V0IHZhbHVlVHlwZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZVR5cGU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBpZiAodGhpcy5tZWRpYVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5tZWRpYVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbkxhbmd1YWdlQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm9uTGFuZ3VhZ2VDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlKHZhbDogYW55LCBvcHRpb25zPzogRm9ybVZhbHVlT3B0aW9ucywgc2V0RGlydHk6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGxldCB2YWx1ZSA9IHZhbDtcbiAgICBpZiAodmFsIGluc3RhbmNlb2YgT0Zvcm1WYWx1ZSkge1xuICAgICAgdmFsdWUgPSB2YWwudmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5yYW5nZS5zZXRWYWx1ZSh0aGlzLmVuc3VyZU9EYXRlVmFsdWVUeXBlKHZhbHVlKSwgb3B0aW9ucyk7XG4gICAgc3VwZXIuc2V0Rm9ybVZhbHVlKHZhbHVlLCBvcHRpb25zLCBzZXREaXJ0eSk7XG4gIH1cblxuXG4gIHByb3RlY3RlZCBlbnN1cmVPRGF0ZVZhbHVlVHlwZSh2YWw6IGFueSkge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodmFsKSkge1xuICAgICAgcmV0dXJuIHsgW3RoaXMuc3RhcnRLZXldOiBudWxsLCBbdGhpcy5lbmRLZXldOiBudWxsIH07XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdCA9IHZhbDtcbiAgICBjb25zdCBzdGFydFZhbCA9IHRoaXMuY29udmVydFRvRGF0ZSh2YWxbdGhpcy5zdGFydEtleV0pO1xuICAgIGNvbnN0IGVuZFZhbCA9IHRoaXMuY29udmVydFRvRGF0ZSh2YWxbdGhpcy5lbmRLZXldKTtcblxuICAgIGlmICghVXRpbC5pc0RlZmluZWQocmVzdWx0KSkge1xuICAgICAgY29uc29sZS53YXJuKGBPRGF0ZVJhbmdlSW5wdXRDb21wb25lbnQgdmFsdWUgKCR7dmFsfSkgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB2YWx1ZS10eXBlICgke3RoaXMudmFsdWVUeXBlfSlgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0geyBbdGhpcy5zdGFydEtleV06IHN0YXJ0VmFsLCBbdGhpcy5lbmRLZXldOiBlbmRWYWwgfTtcblxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnZlcnRUb0RhdGUodmFsOiBhbnkpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh2YWwpKSByZXR1cm4gbnVsbDtcblxuICAgIHN3aXRjaCAodGhpcy52YWx1ZVR5cGUpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyAmJiBtb21lbnQodmFsLCB0aGlzLm9mb3JtYXQpLmlzVmFsaWQoKVxuICAgICAgICAgID8gbmV3IERhdGUobW9tZW50KHZhbCwgdGhpcy5vZm9ybWF0KS52YWx1ZU9mKCkpXG4gICAgICAgICAgOiBudWxsO1xuXG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIERhdGUgPyB2YWwgOiBudWxsO1xuXG4gICAgICBjYXNlICd0aW1lc3RhbXAnOlxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcicgPyBuZXcgRGF0ZSh2YWwpIDogbnVsbDtcblxuICAgICAgY2FzZSAnaXNvLTg2MDEnOlxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gbW9tZW50KHZhbCkuaXNWYWxpZCgpID8gbmV3IERhdGUobW9tZW50KHZhbCkudmFsdWVPZigpKSA6IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicgJiYgdGhpcy5nZXRTUUxUeXBlKCkgPT09IFNRTFR5cGVzLlRJTUVTVEFNUCkge1xuICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2VFdmVudChldmVudDogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4pOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlUmFuZ2VWYWx1ZTogRGF0ZVJhbmdlPERhdGU+ID0gdGhpcy5kYXRlUmFuZ2VJbnB1dC52YWx1ZTtcblxuICAgIGlmIChkYXRlUmFuZ2VWYWx1ZS5zdGFydCAmJiBkYXRlUmFuZ2VWYWx1ZS5lbmQpIHtcbiAgICAgIGxldCB2YWx1ZSA9IHtcbiAgICAgICAgW3RoaXMuc3RhcnRLZXldOiBVdGlsLnBhcnNlQnlWYWx1ZVR5cGUoZGF0ZVJhbmdlVmFsdWUuc3RhcnQsIHRoaXMudmFsdWVUeXBlLCB0aGlzLm9mb3JtYXQpLFxuICAgICAgICBbdGhpcy5lbmRLZXldOiBVdGlsLnBhcnNlQnlWYWx1ZVR5cGUoZGF0ZVJhbmdlVmFsdWUuZW5kLCB0aGlzLnZhbHVlVHlwZSwgdGhpcy5vZm9ybWF0KVxuICAgICAgfTtcbiAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUsIHtcbiAgICAgICAgY2hhbmdlVHlwZTogT1ZhbHVlQ2hhbmdlRXZlbnQuVVNFUl9DSEFOR0UsXG4gICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgIGVtaXRNb2RlbFRvVmlld0NoYW5nZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cblxuICB9XG5cbiAgcHVibGljIG9uQ2xpY2tJbnB1dChlOiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50ZXh0SW5wdXRFbmFibGVkKSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DbGlja0NsZWFyVmFsdWUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgc3VwZXIub25DbGlja0NsZWFyVmFsdWUoZXZlbnQpO1xuICAgIHRoaXMucmFuZ2Uuc2V0VmFsdWUoeyBbdGhpcy5zdGFydEtleV06IG51bGwsIFt0aGlzLmVuZEtleV06IG51bGwgfSk7XG4gICAgdGhpcy5tYXJrRm9ybUdyb3VwVG91Y2hlZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtGb3JtR3JvdXBUb3VjaGVkKCkge1xuICAgIE9iamVjdC5rZXlzKHRoaXMucmFuZ2UuY29udHJvbHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMucmFuZ2UuZ2V0KGtleSk7XG4gICAgICBjb250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfSk7XG4gIH1cbiAgcHJvdGVjdGVkIGdldFZhbHVlQXNNb21lbnQodmFsOiBhbnkpOiBhbnkge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodmFsKSkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgbGV0IHJlc3VsdDtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgdGhpcy52YWx1ZVR5cGUgPT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnOlxuICAgICAgICByZXN1bHQgPSBtb21lbnQodmFsLCB0aGlzLm9mb3JtYXQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy52YWx1ZVR5cGUgPT09ICdkYXRlJyAmJiB2YWwgaW5zdGFuY2VvZiBEYXRlOlxuICAgICAgY2FzZSB0aGlzLnZhbHVlVHlwZSA9PT0gJ3RpbWVzdGFtcCcgJiYgdHlwZW9mIHZhbCA9PT0gJ251bWJlcic6XG4gICAgICBjYXNlIHRoaXMudmFsdWVUeXBlID09PSAnaXNvLTg2MDEnICYmIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnOlxuICAgICAgICByZXN1bHQgPSBtb21lbnQodmFsKVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy52YWx1ZVR5cGUgPT09ICdpc28tODYwMSc6XG4gICAgICAgIGlmICh0eXBlb2YgdmFsICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNvbnN0IGFjY2VwdFRpbWVzdGFtcCA9IHR5cGVvZiB2YWwgPT09ICdudW1iZXInICYmIHRoaXMuZ2V0U1FMVHlwZSgpID09PSBTUUxUeXBlcy5USU1FU1RBTVA7XG4gICAgICAgICAgaWYgKGFjY2VwdFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gbW9tZW50KHZhbClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKHJlc3VsdCkgJiYgcmVzdWx0LmlzVmFsaWQoKSA/IHJlc3VsdCA6IHVuZGVmaW5lZFxuICB9XG5cblxuXG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJnZXRGb3JtR3JvdXAoKVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXBcIiBbbWF0VG9vbHRpcENsYXNzXT1cInRvb2x0aXBDbGFzc1wiXG4gIFttYXRUb29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCIgW21hdFRvb2x0aXBTaG93RGVsYXldPVwidG9vbHRpcFNob3dEZWxheVwiIFttYXRUb29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIj5cblxuICA8bWF0LWZvcm0tZmllbGQgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIiBbaGlkZVJlcXVpcmVkTWFya2VyXT1cImhpZGVSZXF1aXJlZE1hcmtlclwiIFtjbGFzcy5jdXN0b20td2lkdGhdPVwiaGFzQ3VzdG9tV2lkdGhcIlxuICAgIGNsYXNzPVwiaWNvbi1maWVsZFwiIGZ4RmxleEZpbGwgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWxWaXNpYmxlXCI+e3sgb2xhYmVsIHwgb1RyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dCAjZGF0ZVJhbmdlSW5wdXQgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiIFtpZF09XCJnZXRBdHRyaWJ1dGUoKVwiIFtmb3JtR3JvdXBdPVwicmFuZ2VcIiBbc2VwYXJhdG9yXT1cInNlcGFyYXRvclwiXG4gICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiIFttaW5dPVwib01pbkRhdGVcIiBbbWF4XT1cIm9NYXhEYXRlXCIgKGZvY3VzKT1cImlubmVyT25Gb2N1cygkZXZlbnQpXCIgKGJsdXIpPVwiaW5uZXJPbkJsdXIoJGV2ZW50KVwiPlxuICAgICAgPGlucHV0ICNzdGFydERhdGUgbWF0U3RhcnREYXRlIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXJTdGFydERheSB8IG9UcmFuc2xhdGUgfX1cIiBbdmFsdWVdPVwic3RhcnREYXRlVmFsdWVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInN0YXJ0S2V5XCIgKGRhdGVDaGFuZ2UpPVwib25DaGFuZ2VFdmVudCgkZXZlbnQpXCIgW3JlYWRvbmx5XT1cImlzUmVhZE9ubHkgfHwgIXRleHRJbnB1dEVuYWJsZWRcIiAoZm9jdXMpPVwiaW5uZXJPbkZvY3VzKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJpbm5lck9uQmx1cigkZXZlbnQpXCIgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIj5cbiAgICAgIDxpbnB1dCAjZW5kRGF0ZSBtYXRFbmREYXRlIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXJFbmREYXkgfCBvVHJhbnNsYXRlIH19XCIgW3ZhbHVlXT1cImVuZERhdGVWYWx1ZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZW5kS2V5XCJcbiAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25DaGFuZ2VFdmVudCgkZXZlbnQpXCIgW3JlYWRvbmx5XT1cImlzUmVhZE9ubHkgfHwgIXRleHRJbnB1dEVuYWJsZWRcIiAoZm9jdXMpPVwiaW5uZXJPbkZvY3VzKCRldmVudClcIiAoYmx1cik9XCJpbm5lck9uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIj5cbiAgICA8L21hdC1kYXRlLXJhbmdlLWlucHV0PlxuXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJzaG93Q2xlYXJCdXR0b25cIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkNsaWNrQ2xlYXJWYWx1ZSgkZXZlbnQpXCI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmNsb3NlXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdEljb25TdWZmaXggW2Zvcl09XCJwaWNrZXJcIiBbZGlzYWJsZWRdPVwiaXNSZWFkT25seSB8fCAhZW5hYmxlZFwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlciBbZGlzYWJsZWRdPVwiaXNSZWFkT25seSB8fCAhZW5hYmxlZFwiIFtjbGFzcy5yZWFkLW9ubHldPVwiaXNSZWFkT25seVwiIFt0b3VjaFVpXT1cInRvdWNoVWlcIiBbZGF0ZUNsYXNzXT1cImRhdGVDbGFzc1wiPjwvbWF0LWRhdGUtcmFuZ2UtcGlja2VyPlxuXG4gICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uUkVRVUlSRUQnIHwgb1RyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdkYXRlUmFuZ2UnKVwiPlxuICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5EQVRFUkFOR0VfSU5WQUxJRCcgfCBvVHJhbnNsYXRlIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ2RhdGVSYW5nZVBhcnNlJylcIj5cbiAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uREFURV9QQVJTRScgfCBvVHJhbnNsYXRlIH19IDoge3sgZ2V0RXJyb3JWYWx1ZSgnZGF0ZVJhbmdlUGFyc2UnLCAnZm9ybWF0JykgfX1cbiAgICA8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignZGF0ZVJhbmdlTWluJylcIj5cbiAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uREFURVJBTkdFX01JTicgfCBvVHJhbnNsYXRlIH19IDoge3sgZ2V0RXJyb3JWYWx1ZSgnZGF0ZVJhbmdlTWluJywgJ2RhdGVNaW4nKSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdkYXRlUmFuZ2VNYXgnKVwiPlxuICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5EQVRFUkFOR0VfTUFYJyB8IG9UcmFuc2xhdGUgfX0gOiB7eyBnZXRFcnJvclZhbHVlKCdkYXRlUmFuZ2VNYXgnLCAnZGF0ZU1heCcpIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgb0Vycm9yIG9mIGdldEFjdGl2ZU9FcnJvcnMoKVwiPlxuICAgICAge3sgb0Vycm9yLnRleHQgfCBvVHJhbnNsYXRlIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
|
|
375
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1kYXRlcmFuZ2UtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS1yYW5nZS9vLWRhdGVyYW5nZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9kYXRlLXJhbmdlL28tZGF0ZXJhbmdlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQXFCLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFlLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQXFELE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQXNDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekgsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQs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QWUsRUFBRTt3QkFDbkIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtxQkFDckI7aUJBQ0Y7Z0JBQ0QsTUFBTTtZQUNSO2dCQUNFLE1BQU07U0FDVDtRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0lBQ3hFLENBQUM7O3FIQXZYVSx3QkFBd0Isa0JBd0diLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUM7eUdBeEczQyx3QkFBd0IsOHhCQUp4QjtRQUNULEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUU7S0FDdkYsb1FDL0NILDA5RkEwQ0E7QURZRTtJQUFDLHFCQUFxQixFQUFFOztrRUFDZ0I7QUFFeEM7SUFBQyxxQkFBcUIsRUFBRTs7MERBQ1M7MkZBVHRCLHdCQUF3QjtrQkFUcEMsU0FBUzsrQkFDRSxtQkFBbUIsV0FFcEIsaUNBQWlDLFVBQ2xDLGdDQUFnQyxhQUM3Qjt3QkFDVCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFO3FCQUN2Rjs7MEJBMEdFLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQzt1SkFyR3RELE1BQU07c0JBREwsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUk5QixnQkFBZ0IsTUFHaEIsUUFBUSxNQUdmLGNBQWM7c0JBRGIsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZWRpYUNoYW5nZSwgTWVkaWFPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcbmltcG9ydCB7IEZvcm1Hcm91cCwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQVRfREFURV9MT0NBTEUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IERhdGVSYW5nZSwgTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQsIE1hdERhdGVSYW5nZUlucHV0LCBNYXREYXRlUmFuZ2VQaWNrZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBNb21lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9tZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgT250aW1pemVNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBGb3JtVmFsdWVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZm9ybS12YWx1ZS1vcHRpb25zLnR5cGUnO1xuaW1wb3J0IHsgT0RhdGVWYWx1ZVR5cGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9vLWRhdGUtdmFsdWUudHlwZSc7XG5pbXBvcnQgeyBTUUxUeXBlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvc3FsdHlwZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybVZhbHVlIH0gZnJvbSAnLi4vLi4vZm9ybS9vLWZvcm0tdmFsdWUnO1xuaW1wb3J0IHsgT0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3JtL28tZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgREVGQVVMVF9PVVRQVVRTX09fRk9STV9EQVRBX0NPTVBPTkVOVCwgT0Zvcm1EYXRhQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vby1mb3JtLWRhdGEtY29tcG9uZW50LmNsYXNzJztcbmltcG9ydCB7IE9WYWx1ZUNoYW5nZUV2ZW50IH0gZnJvbSAnLi4vLi4vby12YWx1ZS1jaGFuZ2UtZXZlbnQuY2xhc3MnO1xuaW1wb3J0IHsgREVGQVVMVF9JTlBVVFNfT19EQVRFX0lOUFVUIH0gZnJvbSAnLi4vZGF0ZS1pbnB1dC9vLWRhdGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE9Gb3JtQ29udHJvbCB9IGZyb20gJy4uL28tZm9ybS1jb250cm9sLmNsYXNzJztcbmltcG9ydCB7IERhdGVDdXN0b21DbGFzc0Z1bmN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZGF0ZS1jdXN0b20tY2xhc3MudHlwZSc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19EQVRFUkFOR0VfSU5QVVQgPSBbXG4gIC4uLkRFRkFVTFRfT1VUUFVUU19PX0ZPUk1fREFUQV9DT01QT05FTlRcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0RBVEVSQU5HRV9JTlBVVCA9IFtcbiAgJ3NlcGFyYXRvcicsXG4gICdvbG9jYWxlOmxvY2FsZScsXG4gICdzdGFydEtleScsXG4gICdlbmRLZXknLFxuICAndmFsdWVUeXBlOiB2YWx1ZS10eXBlJyxcbiAgJ21vZGUnLFxuICAncGxhY2Vob2xkZXJTdGFydERheTogcGxhY2Vob2xkZXItc3RhcnRkYXknLFxuICAncGxhY2Vob2xkZXJFbmREYXk6IHBsYWNlaG9sZGVyLWVuZGRheScsXG4gIC4uLkRFRkFVTFRfSU5QVVRTX09fREFURV9JTlBVVFxuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby1kYXRlcmFuZ2UtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vby1kYXRlcmFuZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19EQVRFUkFOR0VfSU5QVVQsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19EQVRFUkFOR0VfSU5QVVQsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBPbnRpbWl6ZU1vbWVudERhdGVBZGFwdGVyLCBkZXBzOiBbTUFUX0RBVEVfTE9DQUxFXSB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgT0RhdGVSYW5nZUlucHV0Q29tcG9uZW50IGV4dGVuZHMgT0Zvcm1EYXRhQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ3BpY2tlcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHBpY2tlciE6IE1hdERhdGVSYW5nZVBpY2tlcjxEYXRlPjtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHRleHRJbnB1dEVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgb1RvdWNoVWk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdkYXRlUmFuZ2VJbnB1dCcpXG4gIGRhdGVSYW5nZUlucHV0OiBNYXREYXRlUmFuZ2VJbnB1dDxEYXRlPjtcblxuICBwdWJsaWMgbW9kZTogJ21vYmlsZScgfCAnZGVza3RvcCcgfCAnYXV0bycgPSAnYXV0byc7XG5cbiAgc3RhcnREYXRlVmFsdWU6IERhdGU7XG4gIGVuZERhdGVWYWx1ZTogRGF0ZTtcblxuICByYW5nZTogRm9ybUdyb3VwPHsgW3g6IHN0cmluZ106IE9Gb3JtQ29udHJvbDsgfT5cblxuICBwcm90ZWN0ZWQgX2RhdGVDbGFzczogRGF0ZUN1c3RvbUNsYXNzRnVuY3Rpb25cbiAgZ2V0IGRhdGVDbGFzcygpOiBEYXRlQ3VzdG9tQ2xhc3NGdW5jdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVDbGFzcztcbiAgfVxuXG4gIHNldCBkYXRlQ2xhc3ModmFsOiBEYXRlQ3VzdG9tQ2xhc3NGdW5jdGlvbikge1xuICAgIHRoaXMuX2RhdGVDbGFzcyA9IHZhbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBfb01pbkRhdGU6IERhdGU7XG4gIHNldCBvTWluRGF0ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCBtb21lbnREID0gdGhpcy5nZXRWYWx1ZUFzTW9tZW50KHZhbHVlKVxuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKG1vbWVudEQpKSB7XG4gICAgICAgIHRoaXMuX29NaW5EYXRlID0gdGhpcy5jb252ZXJ0VG9EYXRlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZ2V0IG9NaW5EYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9vTWluRGF0ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfb01heERhdGU6IERhdGU7XG4gIHNldCBvTWF4RGF0ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9vTWF4RGF0ZSA9IHRoaXMuY29udmVydFRvRGF0ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIGdldCBvTWF4RGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fb01heERhdGU7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3N0YXJ0S2V5OiBzdHJpbmcgPSAnc3RhcnREYXRlJztcbiAgZ2V0IHN0YXJ0S2V5KCkge1xuICAgIHJldHVybiB0aGlzLl9zdGFydEtleTtcbiAgfVxuICBzZXQgc3RhcnRLZXkodmFsdWUpIHtcbiAgICB0aGlzLl9zdGFydEtleSA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9lbmRLZXk6IHN0cmluZyA9ICdlbmREYXRlJztcbiAgZ2V0IGVuZEtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kS2V5O1xuICB9XG4gIHNldCBlbmRLZXkodmFsdWUpIHtcbiAgICB0aGlzLl9lbmRLZXkgPSB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfdmFsdWVUeXBlOiBPRGF0ZVZhbHVlVHlwZSA9ICd0aW1lc3RhbXAnO1xuXG4gIHB1YmxpYyBzZXBhcmF0b3IgPSAnIC0gJztcblxuICBnZXQgc2hvd0NsZWFyQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNsZWFyQnV0dG9uICYmICF0aGlzLmlzUmVhZE9ubHkgJiYgdGhpcy5lbmFibGVkICYmIHRoaXMuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCB0b3VjaFVpKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9Ub3VjaFVpIHx8IGZhbHNlO1xuICB9XG5cbiAgc2V0IHRvdWNoVWkodmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5vVG91Y2hVaSA9IHZhbDtcbiAgfVxuXG4gIGlzTW9iaWxlTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnbW9iaWxlJyB8fCAodGhpcy5tb2RlID09PSAnYXV0bycgJiYgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLkhhbmRzZXQpKVxuICB9XG5cbiAgaXNEZXNrdG9wTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZGVza3RvcCcgfHwgKHRoaXMubW9kZSA9PT0gJ2F1dG8nICYmICF0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuSGFuZHNldCkpXG4gIH1cblxuICBwdWJsaWMgb2Zvcm1hdDogc3RyaW5nID0gJ0wnO1xuXG4gIHByb3RlY3RlZCBvbG9jYWxlOiBzdHJpbmc7XG4gIHByaXZhdGUgbW9tZW50U3J2OiBNb21lbnRTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgbWVkaWE6IE1lZGlhT2JzZXJ2ZXI7XG4gIHByb3RlY3RlZCBtZWRpYVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgb25MYW5ndWFnZUNoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHB1YmxpYyBwbGFjZWhvbGRlclN0YXJ0RGF5ID0gJ0RBVEVSQU5HRS5QTEFDRUhPTERFUl9TVEFSVERBVEUnO1xuICBwdWJsaWMgcGxhY2Vob2xkZXJFbmREYXkgPSAnREFURVJBTkdFLlBMQUNFSE9MREVSX0VORERBVEUnO1xuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT0Zvcm1Db21wb25lbnQpKSBmb3JtOiBPRm9ybUNvbXBvbmVudCxcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIG1vbWVudERhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxPbnRpbWl6ZU1vbWVudERhdGVBZGFwdGVyPixcbiAgICBwcm90ZWN0ZWQgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXJcbiAgKSB7XG4gICAgc3VwZXIoZm9ybSwgZWxSZWYsIGluamVjdG9yKTtcbiAgICB0aGlzLm1vbWVudFNydiA9IHRoaXMuaW5qZWN0b3IuZ2V0KE1vbWVudFNlcnZpY2UpO1xuICAgIHRoaXMubWVkaWEgPSB0aGlzLmluamVjdG9yLmdldChNZWRpYU9ic2VydmVyKTtcbiAgICB0aGlzLnJhbmdlID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBbdGhpcy5zdGFydEtleV06IG5ldyBPRm9ybUNvbnRyb2woKSxcbiAgICAgIFt0aGlzLmVuZEtleV06IG5ldyBPRm9ybUNvbnRyb2woKVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvTWVkaWFDaGFuZ2VzKCk7XG4gICAgaWYgKCF0aGlzLm9sb2NhbGUpIHtcbiAgICAgIHRoaXMub2xvY2FsZSA9IHRoaXMubW9tZW50U3J2LmdldExvY2FsZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9mb3JtYXQpIHtcbiAgICAgICh0aGlzLm1vbWVudERhdGVBZGFwdGVyIGFzIGFueSkub0Zvcm1hdCA9IHRoaXMub2Zvcm1hdDtcbiAgICB9XG5cbiAgICB0aGlzLm1vbWVudERhdGVBZGFwdGVyLnNldExvY2FsZSh0aGlzLm9sb2NhbGUpO1xuICAgIHRoaXMub25MYW5ndWFnZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5vbkxhbmd1YWdlQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5tb21lbnREYXRlQWRhcHRlci5zZXRMb2NhbGUodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldEN1cnJlbnRMYW5nKCkpO1xuICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLmdldFZhbHVlKCkpO1xuICAgIH0pO1xuXG4gIH1cblxuICBwdWJsaWMgc3Vic2NyaWJlVG9NZWRpYUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5tZWRpYVN1YnNjcmlwdGlvbiA9IHRoaXMubWVkaWEuYXNPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKChjaGFuZ2U6IE1lZGlhQ2hhbmdlW10pID0+IHtcbiAgICAgIGlmIChbJ3hzJywgJ3NtJ10uaW5kZXhPZihjaGFuZ2VbMF0ubXFBbGlhcykgIT09IC0xKSB7XG4gICAgICAgIHRoaXMudG91Y2hVaSA9IFV0aWwuaXNEZWZpbmVkKHRoaXMub1RvdWNoVWkpID8gdGhpcy5vVG91Y2hVaSA6IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoWydtZCcsICdsZycsICd4bCddLmluZGV4T2YoY2hhbmdlWzBdLm1xQWxpYXMpICE9PSAtMSkge1xuICAgICAgICB0aGlzLnRvdWNoVWkgPSBVdGlsLmlzRGVmaW5lZCh0aGlzLm9Ub3VjaFVpKSA/IHRoaXMub1RvdWNoVWkgOiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1JlYWRPbmx5ICYmIHRoaXMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5waWNrZXIub3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIHJlc29sdmVWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBzdXBlci5yZXNvbHZlVmFsaWRhdG9ycygpO1xuXG4gICAgdmFsaWRhdG9ycy5wdXNoKHRoaXMucmFuZ2VEYXRlVmFsaWRhdG9yLmJpbmQodGhpcykpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLm9NaW5EYXRlKSkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKHRoaXMubWluRGF0ZVZhbGlkYXRvci5iaW5kKHRoaXMpKTtcbiAgICB9XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMub01heERhdGUpKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5tYXhEYXRlVmFsaWRhdG9yLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLnBhcnNlRGF0ZVZhbGlkYXRvci5iaW5kKHRoaXMpKTtcbiAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgfVxuXG4gIGlzT2JqZWN0RGF0YVJhbmdlTnVsbChvYmplY3RWYWx1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvYmplY3RWYWx1ZSAhPT0gbnVsbCAmJiBvYmplY3RWYWx1ZS52YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgIVV0aWwuaXNEZWZpbmVkKG9iamVjdFZhbHVlLnZhbHVlW3RoaXMuc3RhcnRLZXldKSAmJlxuICAgICAgIVV0aWwuaXNEZWZpbmVkKG9iamVjdFZhbHVlLnZhbHVlW3RoaXMuZW5kS2V5XSk7XG4gIH1cblxuXG4gIHByb3RlY3RlZCByYW5nZURhdGVWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG5cbiAgICBpZiAoY29udHJvbC52YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhdGhpcy5pc09iamVjdERhdGFSYW5nZU51bGwoY29udHJvbCkpIHtcbiAgICAgIGNvbnN0IGVuZFZhbHVlID0gdGhpcy5nZXRWYWx1ZUFzTW9tZW50KGNvbnRyb2wudmFsdWVbdGhpcy5fZW5kS2V5XSk7XG4gICAgICBjb25zdCBzdGFydFZhbHVlID0gdGhpcy5nZXRWYWx1ZUFzTW9tZW50KGNvbnRyb2wudmFsdWVbdGhpcy5fc3RhcnRLZXldKTtcbiAgICAgIGlmIChlbmRWYWx1ZS5pc1NhbWVPckJlZm9yZShzdGFydFZhbHVlKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGVSYW5nZTogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBwcm90ZWN0ZWQgbWluRGF0ZVZhbGlkYXRvcihjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBjb25zdCBtaW5kYXRlID0gbW9tZW50KHRoaXMub01pbkRhdGUpO1xuICAgIGlmICgoY29udHJvbC52YWx1ZSBpbnN0YW5jZW9mIE9iamVjdClcbiAgICAgICYmICF0aGlzLmlzT2JqZWN0RGF0YVJhbmdlTnVsbChjb250cm9sKSkge1xuICAgICAgY29uc3Qgc3RhcnRWYWx1ZSA9IHRoaXMuZ2V0VmFsdWVBc01vbWVudChjb250cm9sLnZhbHVlW3RoaXMuX3N0YXJ0S2V5XSk7XG4gICAgICBpZiAoc3RhcnRWYWx1ZS5pc0JlZm9yZShtaW5kYXRlKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGVSYW5nZU1pbjoge1xuICAgICAgICAgICAgZGF0ZU1pbjogbWluZGF0ZS5mb3JtYXQodGhpcy5vZm9ybWF0KVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcHJvdGVjdGVkIG1heERhdGVWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgY29uc3QgbWF4ZGF0ZSA9IG1vbWVudCh0aGlzLm9NYXhEYXRlKTtcbiAgICBpZiAoKGNvbnRyb2wudmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgICAmJiAhdGhpcy5pc09iamVjdERhdGFSYW5nZU51bGwoY29udHJvbCkpIHtcbiAgICAgIGNvbnN0IGVuZFZhbHVlID0gdGhpcy5nZXRWYWx1ZUFzTW9tZW50KGNvbnRyb2wudmFsdWVbdGhpcy5fZW5kS2V5XSk7XG4gICAgICBpZiAoZW5kVmFsdWUuaXNBZnRlcihtYXhkYXRlKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGVSYW5nZU1heDoge1xuICAgICAgICAgICAgZGF0ZU1heDogbWF4ZGF0ZS5mb3JtYXQodGhpcy5vZm9ybWF0KVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlRGF0ZVZhbGlkYXRvcihjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBpZiAoKGNvbnRyb2wudmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgICAmJiAhdGhpcy5pc09iamVjdERhdGFSYW5nZU51bGwoY29udHJvbCkpIHtcbiAgICAgIGNvbnN0IGVuZFZhbHVlID0gdGhpcy5nZXRWYWx1ZUFzTW9tZW50KGNvbnRyb2wudmFsdWVbdGhpcy5fZW5kS2V5XSk7XG4gICAgICBjb25zdCBzdGFydFZhbHVlID0gdGhpcy5nZXRWYWx1ZUFzTW9tZW50KGNvbnRyb2wudmFsdWVbdGhpcy5fc3RhcnRLZXldKTtcbiAgICAgIGlmICghZW5kVmFsdWUuaXNWYWxpZCgpIHx8ICFzdGFydFZhbHVlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGVSYW5nZVBhcnNlOiB7XG4gICAgICAgICAgICBmb3JtYXQ6IHRoaXMub2Zvcm1hdCArIHRoaXMuc2VwYXJhdG9yICsgdGhpcy5vZm9ybWF0XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBzZXQgdmFsdWVUeXBlKHZhbDogYW55KSB7XG4gICAgdGhpcy5fdmFsdWVUeXBlID0gVXRpbC5jb252ZXJ0VG9PRGF0ZVZhbHVlVHlwZSh2YWwpO1xuICB9XG5cbiAgZ2V0IHZhbHVlVHlwZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZVR5cGU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBpZiAodGhpcy5tZWRpYVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5tZWRpYVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbkxhbmd1YWdlQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm9uTGFuZ3VhZ2VDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlKHZhbDogYW55LCBvcHRpb25zPzogRm9ybVZhbHVlT3B0aW9ucywgc2V0RGlydHk6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGxldCB2YWx1ZSA9IHZhbDtcbiAgICBpZiAodmFsIGluc3RhbmNlb2YgT0Zvcm1WYWx1ZSkge1xuICAgICAgdmFsdWUgPSB2YWwudmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5yYW5nZS5zZXRWYWx1ZSh0aGlzLmVuc3VyZU9EYXRlVmFsdWVUeXBlKHZhbHVlKSwgb3B0aW9ucyk7XG4gICAgc3VwZXIuc2V0Rm9ybVZhbHVlKHZhbHVlLCBvcHRpb25zLCBzZXREaXJ0eSk7XG4gIH1cblxuXG4gIHByb3RlY3RlZCBlbnN1cmVPRGF0ZVZhbHVlVHlwZSh2YWw6IGFueSkge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodmFsKSkge1xuICAgICAgcmV0dXJuIHsgW3RoaXMuc3RhcnRLZXldOiBudWxsLCBbdGhpcy5lbmRLZXldOiBudWxsIH07XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdCA9IHZhbDtcbiAgICBjb25zdCBzdGFydFZhbCA9IHRoaXMuY29udmVydFRvRGF0ZSh2YWxbdGhpcy5zdGFydEtleV0pO1xuICAgIGNvbnN0IGVuZFZhbCA9IHRoaXMuY29udmVydFRvRGF0ZSh2YWxbdGhpcy5lbmRLZXldKTtcblxuICAgIGlmICghVXRpbC5pc0RlZmluZWQocmVzdWx0KSkge1xuICAgICAgY29uc29sZS53YXJuKGBPRGF0ZVJhbmdlSW5wdXRDb21wb25lbnQgdmFsdWUgKCR7dmFsfSkgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB2YWx1ZS10eXBlICgke3RoaXMudmFsdWVUeXBlfSlgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0geyBbdGhpcy5zdGFydEtleV06IHN0YXJ0VmFsLCBbdGhpcy5lbmRLZXldOiBlbmRWYWwgfTtcblxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnZlcnRUb0RhdGUodmFsOiBhbnkpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh2YWwpKSByZXR1cm4gbnVsbDtcblxuICAgIHN3aXRjaCAodGhpcy52YWx1ZVR5cGUpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyAmJiBtb21lbnQodmFsLCB0aGlzLm9mb3JtYXQpLmlzVmFsaWQoKVxuICAgICAgICAgID8gbmV3IERhdGUobW9tZW50KHZhbCwgdGhpcy5vZm9ybWF0KS52YWx1ZU9mKCkpXG4gICAgICAgICAgOiBudWxsO1xuXG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIERhdGUgPyB2YWwgOiBudWxsO1xuXG4gICAgICBjYXNlICd0aW1lc3RhbXAnOlxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcicgPyBuZXcgRGF0ZSh2YWwpIDogbnVsbDtcblxuICAgICAgY2FzZSAnaXNvLTg2MDEnOlxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gbW9tZW50KHZhbCkuaXNWYWxpZCgpID8gbmV3IERhdGUobW9tZW50KHZhbCkudmFsdWVPZigpKSA6IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicgJiYgdGhpcy5nZXRTUUxUeXBlKCkgPT09IFNRTFR5cGVzLlRJTUVTVEFNUCkge1xuICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2VFdmVudChldmVudDogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4pOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlUmFuZ2VWYWx1ZTogRGF0ZVJhbmdlPERhdGU+ID0gdGhpcy5kYXRlUmFuZ2VJbnB1dC52YWx1ZTtcblxuICAgIGlmIChkYXRlUmFuZ2VWYWx1ZS5zdGFydCAmJiBkYXRlUmFuZ2VWYWx1ZS5lbmQpIHtcbiAgICAgIGxldCB2YWx1ZSA9IHtcbiAgICAgICAgW3RoaXMuc3RhcnRLZXldOiBVdGlsLnBhcnNlQnlWYWx1ZVR5cGUoZGF0ZVJhbmdlVmFsdWUuc3RhcnQsIHRoaXMudmFsdWVUeXBlLCB0aGlzLm9mb3JtYXQpLFxuICAgICAgICBbdGhpcy5lbmRLZXldOiBVdGlsLnBhcnNlQnlWYWx1ZVR5cGUoZGF0ZVJhbmdlVmFsdWUuZW5kLCB0aGlzLnZhbHVlVHlwZSwgdGhpcy5vZm9ybWF0KVxuICAgICAgfTtcbiAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUsIHtcbiAgICAgICAgY2hhbmdlVHlwZTogT1ZhbHVlQ2hhbmdlRXZlbnQuVVNFUl9DSEFOR0UsXG4gICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgIGVtaXRNb2RlbFRvVmlld0NoYW5nZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cblxuICB9XG5cbiAgcHVibGljIG9uQ2xpY2tJbnB1dChlOiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50ZXh0SW5wdXRFbmFibGVkKSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DbGlja0NsZWFyVmFsdWUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgc3VwZXIub25DbGlja0NsZWFyVmFsdWUoZXZlbnQpO1xuICAgIHRoaXMucmFuZ2Uuc2V0VmFsdWUoeyBbdGhpcy5zdGFydEtleV06IG51bGwsIFt0aGlzLmVuZEtleV06IG51bGwgfSk7XG4gICAgdGhpcy5tYXJrRm9ybUdyb3VwVG91Y2hlZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtGb3JtR3JvdXBUb3VjaGVkKCkge1xuICAgIE9iamVjdC5rZXlzKHRoaXMucmFuZ2UuY29udHJvbHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMucmFuZ2UuZ2V0KGtleSk7XG4gICAgICBjb250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfSk7XG4gIH1cbiAgcHJvdGVjdGVkIGdldFZhbHVlQXNNb21lbnQodmFsOiBhbnkpOiBhbnkge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodmFsKSkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgbGV0IHJlc3VsdDtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgdGhpcy52YWx1ZVR5cGUgPT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnOlxuICAgICAgICByZXN1bHQgPSBtb21lbnQodmFsLCB0aGlzLm9mb3JtYXQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy52YWx1ZVR5cGUgPT09ICdkYXRlJyAmJiB2YWwgaW5zdGFuY2VvZiBEYXRlOlxuICAgICAgY2FzZSB0aGlzLnZhbHVlVHlwZSA9PT0gJ3RpbWVzdGFtcCcgJiYgdHlwZW9mIHZhbCA9PT0gJ251bWJlcic6XG4gICAgICBjYXNlIHRoaXMudmFsdWVUeXBlID09PSAnaXNvLTg2MDEnICYmIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnOlxuICAgICAgICByZXN1bHQgPSBtb21lbnQodmFsKVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy52YWx1ZVR5cGUgPT09ICdpc28tODYwMSc6XG4gICAgICAgIGlmICh0eXBlb2YgdmFsICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNvbnN0IGFjY2VwdFRpbWVzdGFtcCA9IHR5cGVvZiB2YWwgPT09ICdudW1iZXInICYmIHRoaXMuZ2V0U1FMVHlwZSgpID09PSBTUUxUeXBlcy5USU1FU1RBTVA7XG4gICAgICAgICAgaWYgKGFjY2VwdFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gbW9tZW50KHZhbClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKHJlc3VsdCkgJiYgcmVzdWx0LmlzVmFsaWQoKSA/IHJlc3VsdCA6IHVuZGVmaW5lZFxuICB9XG5cblxuXG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJnZXRGb3JtR3JvdXAoKVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXBcIiBbbWF0VG9vbHRpcENsYXNzXT1cInRvb2x0aXBDbGFzc1wiXG4gIFttYXRUb29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCIgW21hdFRvb2x0aXBTaG93RGVsYXldPVwidG9vbHRpcFNob3dEZWxheVwiIFttYXRUb29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIj5cblxuICA8bWF0LWZvcm0tZmllbGQgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIiBbaGlkZVJlcXVpcmVkTWFya2VyXT1cImhpZGVSZXF1aXJlZE1hcmtlclwiIFtjbGFzcy5jdXN0b20td2lkdGhdPVwiaGFzQ3VzdG9tV2lkdGhcIlxuICAgIGNsYXNzPVwiaWNvbi1maWVsZFwiIGZ4RmxleEZpbGwgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWxWaXNpYmxlXCI+e3sgb2xhYmVsIHwgb1RyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dCAjZGF0ZVJhbmdlSW5wdXQgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiIFtpZF09XCJnZXRBdHRyaWJ1dGUoKVwiIFtmb3JtR3JvdXBdPVwicmFuZ2VcIiBbc2VwYXJhdG9yXT1cInNlcGFyYXRvclwiXG4gICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiIFttaW5dPVwib01pbkRhdGVcIiBbbWF4XT1cIm9NYXhEYXRlXCIgKGZvY3VzKT1cImlubmVyT25Gb2N1cygkZXZlbnQpXCIgKGJsdXIpPVwiaW5uZXJPbkJsdXIoJGV2ZW50KVwiPlxuICAgICAgPGlucHV0ICNzdGFydERhdGUgbWF0U3RhcnREYXRlIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXJTdGFydERheSB8IG9UcmFuc2xhdGUgfX1cIiBbdmFsdWVdPVwic3RhcnREYXRlVmFsdWVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInN0YXJ0S2V5XCIgKGRhdGVDaGFuZ2UpPVwib25DaGFuZ2VFdmVudCgkZXZlbnQpXCIgW3JlYWRvbmx5XT1cImlzUmVhZE9ubHkgfHwgIXRleHRJbnB1dEVuYWJsZWRcIiAoZm9jdXMpPVwiaW5uZXJPbkZvY3VzKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJpbm5lck9uQmx1cigkZXZlbnQpXCIgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIj5cbiAgICAgIDxpbnB1dCAjZW5kRGF0ZSBtYXRFbmREYXRlIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXJFbmREYXkgfCBvVHJhbnNsYXRlIH19XCIgW3ZhbHVlXT1cImVuZERhdGVWYWx1ZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZW5kS2V5XCJcbiAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25DaGFuZ2VFdmVudCgkZXZlbnQpXCIgW3JlYWRvbmx5XT1cImlzUmVhZE9ubHkgfHwgIXRleHRJbnB1dEVuYWJsZWRcIiAoZm9jdXMpPVwiaW5uZXJPbkZvY3VzKCRldmVudClcIiAoYmx1cik9XCJpbm5lck9uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIj5cbiAgICA8L21hdC1kYXRlLXJhbmdlLWlucHV0PlxuXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJzaG93Q2xlYXJCdXR0b25cIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkNsaWNrQ2xlYXJWYWx1ZSgkZXZlbnQpXCI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmNsb3NlXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdEljb25TdWZmaXggW2Zvcl09XCJwaWNrZXJcIiBbZGlzYWJsZWRdPVwiaXNSZWFkT25seSB8fCAhZW5hYmxlZFwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlciBbZGlzYWJsZWRdPVwiaXNSZWFkT25seSB8fCAhZW5hYmxlZFwiIFtjbGFzcy5yZWFkLW9ubHldPVwiaXNSZWFkT25seVwiIFt0b3VjaFVpXT1cInRvdWNoVWlcIiBbZGF0ZUNsYXNzXT1cImRhdGVDbGFzc1wiPjwvbWF0LWRhdGUtcmFuZ2UtcGlja2VyPlxuXG4gICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uUkVRVUlSRUQnIHwgb1RyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdkYXRlUmFuZ2UnKVwiPlxuICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5EQVRFUkFOR0VfSU5WQUxJRCcgfCBvVHJhbnNsYXRlIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ2RhdGVSYW5nZVBhcnNlJylcIj5cbiAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uREFURV9QQVJTRScgfCBvVHJhbnNsYXRlIH19IDoge3sgZ2V0RXJyb3JWYWx1ZSgnZGF0ZVJhbmdlUGFyc2UnLCAnZm9ybWF0JykgfX1cbiAgICA8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignZGF0ZVJhbmdlTWluJylcIj5cbiAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uREFURVJBTkdFX01JTicgfCBvVHJhbnNsYXRlIH19IDoge3sgZ2V0RXJyb3JWYWx1ZSgnZGF0ZVJhbmdlTWluJywgJ2RhdGVNaW4nKSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdkYXRlUmFuZ2VNYXgnKVwiPlxuICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5EQVRFUkFOR0VfTUFYJyB8IG9UcmFuc2xhdGUgfX0gOiB7eyBnZXRFcnJvclZhbHVlKCdkYXRlUmFuZ2VNYXgnLCAnZGF0ZU1heCcpIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgb0Vycm9yIG9mIGdldEFjdGl2ZU9FcnJvcnMoKVwiPlxuICAgICAge3sgb0Vycm9yLnRleHQgfCBvVHJhbnNsYXRlIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -5,10 +5,10 @@ import { ODateRangeInputComponent } from './o-daterange-input.component';
|
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class ODateRangeInputModule {
|
|
7
7
|
}
|
|
8
|
-
ODateRangeInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
9
|
-
ODateRangeInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.
|
|
10
|
-
ODateRangeInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
8
|
+
ODateRangeInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ODateRangeInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
ODateRangeInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: ODateRangeInputModule, declarations: [ODateRangeInputComponent], imports: [CommonModule, OSharedModule], exports: [ODateRangeInputComponent] });
|
|
10
|
+
ODateRangeInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ODateRangeInputModule, imports: [CommonModule, OSharedModule] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ODateRangeInputModule, decorators: [{
|
|
12
12
|
type: NgModule,
|
|
13
13
|
args: [{
|
|
14
14
|
declarations: [ODateRangeInputComponent],
|
|
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
16
16
|
exports: [ODateRangeInputComponent]
|
|
17
17
|
}]
|
|
18
18
|
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1kYXRlcmFuZ2UtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS1yYW5nZS9vLWRhdGVyYW5nZS1pbnB1dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQU96RSxNQUFNLE9BQU8scUJBQXFCOztrSEFBckIscUJBQXFCO21IQUFyQixxQkFBcUIsaUJBSmpCLHdCQUF3QixhQUM3QixZQUFZLEVBQUUsYUFBYSxhQUMzQix3QkFBd0I7bUhBRXZCLHFCQUFxQixZQUh0QixZQUFZLEVBQUUsYUFBYTsyRkFHMUIscUJBQXFCO2tCQUxqQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHdCQUF3QixDQUFDO29CQUN4QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO29CQUN0QyxPQUFPLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT1NoYXJlZE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IE9EYXRlUmFuZ2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vby1kYXRlcmFuZ2UtaW5wdXQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbT0RhdGVSYW5nZUlucHV0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgT1NoYXJlZE1vZHVsZV0sXG4gIGV4cG9ydHM6IFtPRGF0ZVJhbmdlSW5wdXRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIE9EYXRlUmFuZ2VJbnB1dE1vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -317,8 +317,8 @@ export class ODateRangeLegacyInputComponent extends OFormDataComponent {
|
|
|
317
317
|
return this._valueType;
|
|
318
318
|
}
|
|
319
319
|
}
|
|
320
|
-
ODateRangeLegacyInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
321
|
-
ODateRangeLegacyInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
320
|
+
ODateRangeLegacyInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ODateRangeLegacyInputComponent, deps: [{ token: forwardRef(() => OFormComponent), optional: true }, { token: i0.ElementRef }, { token: i0.Injector }, { token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
321
|
+
ODateRangeLegacyInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ODateRangeLegacyInputComponent, selector: "o-daterange-legacy-input", inputs: { separator: "separator", showWeekNumbers: ["show-week-numbers", "showWeekNumbers"], showRanges: ["show-ranges", "showRanges"], olocale: ["locale", "olocale"], startKey: "startKey", endKey: "endKey", valueType: ["value-type", "valueType"], mode: "mode", oformat: ["format", "oformat"], oStartView: ["start-view", "oStartView"], oMinDate: ["min", "oMinDate"], oMaxDate: ["max", "oMaxDate"], oTouchUi: ["touch-ui", "oTouchUi"], oStartAt: ["start-at", "oStartAt"], filterDate: ["filter-date", "filterDate"], textInputEnabled: ["text-input-enabled", "textInputEnabled"], dateClass: ["date-class", "dateClass"] }, outputs: { onChange: "onChange", onValueChange: "onValueChange", onFocus: "onFocus", onBlur: "onBlur" }, viewQueries: [{ propertyName: "pickerDirective", first: true, predicate: ODaterangepickerDirective, descendants: true, static: true }, { propertyName: "matInputRef", first: true, predicate: ["matInputRef"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\">\n\n <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n class=\"icon-field\" fxFlexFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input #matInputRef matInput type=\"text\" o-daterange-input [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [required]=\"isRequired\"\n [placeholder]=\"placeHolder\" [readonly]=\"isReadOnly || !textInputEnabled\" showDropdowns=\"true\" showCancel=\"true\" [showRanges]=\"showRanges\"\n (datesUpdated)=\"datesUpdated($event)\" [oTouchUi]=\"oTouchUi\" [minDate]=\"oMinDate\" [maxDate]=\"oMaxDate\" (focus)=\"innerOnFocus($event)\"\n (blur)=\"innerOnBlur($event)\" (change)=\"onChangeEvent($event)\" [locale]=\"localeOptions\" [separator]=\"separator\" [startKey]=\"startKey\"\n [endKey]=\"endKey\" [showWeekNumbers]=\"showWeekNumbers\" [singleDatePicker]=\"isMobileMode()\">\n <button type=\"button\" matSuffix mat-icon-button (click)=\"openPicker()\" [disabled]=\"isReadOnly || !enabled\">\n <mat-icon>today</mat-icon>\n </button>\n\n <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\" [disabled]=\"isReadOnly || !enabled\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('dateRange')\">\n {{ 'FORM_VALIDATION.DATERANGE_INVALID' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('dateRangeParse')\">\n {{ 'FORM_VALIDATION.DATE_PARSE' | oTranslate }} : {{ getErrorValue('dateRangeParse', 'format') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('dateRangeMin')\">\n {{ 'FORM_VALIDATION.DATERANGE_MIN' | oTranslate }} : {{ getErrorValue('dateRangeMin', 'dateMin') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('dateRangeMax')\">\n {{ 'FORM_VALIDATION.DATERANGE_MAX' | oTranslate }} : {{ getErrorValue('dateRangeMax', 'dateMax') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i9.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i11.ODaterangepickerDirective, selector: "input[o-daterange-input]", inputs: ["minDate", "maxDate", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "opens", "drops", "lastMonthDayClass", "emptyWeekRowClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "timePicker", "showRanges", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "separator", "locale", "_endKey", "oTouchUi", "startKey", "endKey"], outputs: ["onChange", "rangeClicked", "datesUpdated"] }, { kind: "pipe", type: i12.OTranslatePipe, name: "oTranslate" }] });
|
|
322
322
|
__decorate([
|
|
323
323
|
BooleanInputConverter(),
|
|
324
324
|
__metadata("design:type", Boolean)
|
|
@@ -335,7 +335,7 @@ __decorate([
|
|
|
335
335
|
BooleanInputConverter(),
|
|
336
336
|
__metadata("design:type", Boolean)
|
|
337
337
|
], ODateRangeLegacyInputComponent.prototype, "showRanges", void 0);
|
|
338
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
338
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ODateRangeLegacyInputComponent, decorators: [{
|
|
339
339
|
type: Component,
|
|
340
340
|
args: [{ selector: 'o-daterange-legacy-input', outputs: DEFAULT_OUTPUTS_O_DATERANGE_LEGACY_INPUT, inputs: DEFAULT_INPUTS_O_DATERANGE_LEGACY_INPUT, template: "<div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\">\n\n <mat-form-field [appearance]=\"appearance\" [floatLabel]=\"floatLabel\" [hideRequiredMarker]=\"hideRequiredMarker\" [class.custom-width]=\"hasCustomWidth\"\n class=\"icon-field\" fxFlexFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input #matInputRef matInput type=\"text\" o-daterange-input [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [required]=\"isRequired\"\n [placeholder]=\"placeHolder\" [readonly]=\"isReadOnly || !textInputEnabled\" showDropdowns=\"true\" showCancel=\"true\" [showRanges]=\"showRanges\"\n (datesUpdated)=\"datesUpdated($event)\" [oTouchUi]=\"oTouchUi\" [minDate]=\"oMinDate\" [maxDate]=\"oMaxDate\" (focus)=\"innerOnFocus($event)\"\n (blur)=\"innerOnBlur($event)\" (change)=\"onChangeEvent($event)\" [locale]=\"localeOptions\" [separator]=\"separator\" [startKey]=\"startKey\"\n [endKey]=\"endKey\" [showWeekNumbers]=\"showWeekNumbers\" [singleDatePicker]=\"isMobileMode()\">\n <button type=\"button\" matSuffix mat-icon-button (click)=\"openPicker()\" [disabled]=\"isReadOnly || !enabled\">\n <mat-icon>today</mat-icon>\n </button>\n\n <button type=\"button\" *ngIf=\"showClearButton\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\" [disabled]=\"isReadOnly || !enabled\">\n <mat-icon svgIcon=\"ontimize:close\"></mat-icon>\n </button>\n\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('dateRange')\">\n {{ 'FORM_VALIDATION.DATERANGE_INVALID' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('dateRangeParse')\">\n {{ 'FORM_VALIDATION.DATE_PARSE' | oTranslate }} : {{ getErrorValue('dateRangeParse', 'format') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('dateRangeMin')\">\n {{ 'FORM_VALIDATION.DATERANGE_MIN' | oTranslate }} : {{ getErrorValue('dateRangeMin', 'dateMin') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('dateRangeMax')\">\n {{ 'FORM_VALIDATION.DATERANGE_MAX' | oTranslate }} : {{ getErrorValue('dateRangeMax', 'dateMax') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n</div>\n" }]
|
|
341
341
|
}], ctorParameters: function () { return [{ type: i13.OFormComponent, decorators: [{
|
|
@@ -350,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
350
350
|
type: ViewChild,
|
|
351
351
|
args: ['matInputRef', { read: ElementRef, static: true }]
|
|
352
352
|
}], textInputEnabled: [], showWeekNumbers: [], oTouchUi: [], showRanges: [] } });
|
|
353
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1kYXRlcmFuZ2UtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS1yYW5nZS1sZWdhY3kvby1kYXRlcmFuZ2UtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS1yYW5nZS1sZWdhY3kvby1kYXRlcmFuZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBcUIsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1SCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBR3BGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7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V0FBVztzQkFEbEIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXJELGdCQUFnQixNQUdoQixlQUFlLE1BR2YsUUFBUSxNQUdSLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBNb21lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9tZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtVmFsdWVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZm9ybS12YWx1ZS1vcHRpb25zLnR5cGUnO1xuaW1wb3J0IHsgT0RhdGVWYWx1ZVR5cGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9vLWRhdGUtdmFsdWUudHlwZSc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZm9ybS9vLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IERFRkFVTFRfT1VUUFVUU19PX0ZPUk1fREFUQV9DT01QT05FTlQsIE9Gb3JtRGF0YUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL28tZm9ybS1kYXRhLWNvbXBvbmVudC5jbGFzcyc7XG5pbXBvcnQgeyBPVmFsdWVDaGFuZ2VFdmVudCB9IGZyb20gJy4uLy4uL28tdmFsdWUtY2hhbmdlLWV2ZW50LmNsYXNzJztcbmltcG9ydCB7IERFRkFVTFRfSU5QVVRTX09fREFURV9JTlBVVCB9IGZyb20gJy4uL2RhdGUtaW5wdXQvby1kYXRlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRGF0ZXJhbmdlcGlja2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9vLWRhdGVyYW5nZS1pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF0ZXJhbmdlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9vLWRhdGVyYW5nZS1waWNrZXIuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX0RBVEVSQU5HRV9MRUdBQ1lfSU5QVVQgPSBbXG4gIC4uLkRFRkFVTFRfT1VUUFVUU19PX0ZPUk1fREFUQV9DT01QT05FTlRcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0RBVEVSQU5HRV9MRUdBQ1lfSU5QVVQgPSBbXG4gICdzZXBhcmF0b3InLFxuICAnc2hvd1dlZWtOdW1iZXJzOnNob3ctd2Vlay1udW1iZXJzJyxcbiAgJ3Nob3dSYW5nZXM6c2hvdy1yYW5nZXMnLFxuICAnb2xvY2FsZTpsb2NhbGUnLFxuICAnc3RhcnRLZXknLFxuICAnZW5kS2V5JyxcbiAgJ3ZhbHVlVHlwZTogdmFsdWUtdHlwZScsXG4gICdtb2RlJyxcbiAgLi4uREVGQVVMVF9JTlBVVFNfT19EQVRFX0lOUFVUXG5dO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYE9EYXRlUmFuZ2VJbnB1dENvbXBvbmVudGAgaW5zdGVhZC4gVGhpcyBjb21wb25lbnQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tZGF0ZXJhbmdlLWxlZ2FjeS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWRhdGVyYW5nZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX0RBVEVSQU5HRV9MRUdBQ1lfSU5QVVQsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19EQVRFUkFOR0VfTEVHQUNZX0lOUFVUXG59KVxuZXhwb3J0IGNsYXNzIE9EYXRlUmFuZ2VMZWdhY3lJbnB1dENvbXBvbmVudCBleHRlbmRzIE9Gb3JtRGF0YUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcblxuICBAVmlld0NoaWxkKE9EYXRlcmFuZ2VwaWNrZXJEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHBpY2tlckRpcmVjdGl2ZTogT0RhdGVyYW5nZXBpY2tlckRpcmVjdGl2ZTtcbiAgcGlja2VyITogRGF0ZXJhbmdlcGlja2VyQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ21hdElucHV0UmVmJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBtYXRJbnB1dFJlZiE6IEVsZW1lbnRSZWY7XG5cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyB0ZXh0SW5wdXRFbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHNob3dXZWVrTnVtYmVyczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgb1RvdWNoVWk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHNob3dSYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgX29NaW5EYXRlOiBtb21lbnQuTW9tZW50O1xuXG4gIHB1YmxpYyBtb2RlOiAnbW9iaWxlJyB8ICdkZXNrdG9wJyB8ICdhdXRvJyA9ICdhdXRvJztcblxuICBnZXQgb01pbkRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX29NaW5EYXRlO1xuICB9XG4gIHNldCBvTWluRGF0ZSh2YWx1ZSkge1xuICAgIHRoaXMuX29NaW5EYXRlID0gbW9tZW50KHZhbHVlLCB0aGlzLm9mb3JtYXQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9vTWF4RGF0ZTogbW9tZW50Lk1vbWVudDtcbiAgZ2V0IG9NYXhEYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9vTWF4RGF0ZTtcbiAgfVxuICBzZXQgb01heERhdGUodmFsdWUpIHtcbiAgICB0aGlzLl9vTWF4RGF0ZSA9IG1vbWVudCh2YWx1ZSwgdGhpcy5vZm9ybWF0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfc3RhcnRLZXk6IHN0cmluZyA9ICdzdGFydERhdGUnO1xuICBnZXQgc3RhcnRLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0S2V5O1xuICB9XG4gIHNldCBzdGFydEtleSh2YWx1ZSkge1xuICAgIHRoaXMuX3N0YXJ0S2V5ID0gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2VuZEtleTogc3RyaW5nID0gJ2VuZERhdGUnO1xuICBnZXQgZW5kS2V5KCkge1xuICAgIHJldHVybiB0aGlzLl9lbmRLZXk7XG4gIH1cbiAgc2V0IGVuZEtleSh2YWx1ZSkge1xuICAgIHRoaXMuX2VuZEtleSA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF92YWx1ZVR5cGU6IE9EYXRlVmFsdWVUeXBlID0gJ3RpbWVzdGFtcCc7XG5cbiAgcHJvdGVjdGVkIF9zZXBhcmF0b3IgPSAnIC0gJztcbiAgZ2V0IHNlcGFyYXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VwYXJhdG9yO1xuICB9XG5cbiAgc2V0IHNlcGFyYXRvcih2YWx1ZSkge1xuICAgIHRoaXMuX3NlcGFyYXRvciA9IHZhbHVlO1xuICAgIGlmICh0aGlzLmdldEZvcm1Db250cm9sKCk/LnZhbHVlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUVsZW1lbnQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2hvd0NsZWFyQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNsZWFyQnV0dG9uICYmICF0aGlzLmlzUmVhZE9ubHkgJiYgdGhpcy5lbmFibGVkICYmIHRoaXMubWF0SW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIGdldCBsb2NhbGVPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2NhbGVPcHRpb25zO1xuICB9XG5cbiAgaXNNb2JpbGVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdtb2JpbGUnIHx8ICh0aGlzLm1vZGUgPT09ICdhdXRvJyAmJiB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuSGFuZHNldCkpXG4gIH1cblxuICBpc0Rlc2t0b3BNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdkZXNrdG9wJyB8fCAodGhpcy5tb2RlID09PSAnYXV0bycgJiYgIXRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5IYW5kc2V0KSlcbiAgfVxuXG5cbiAgcHVibGljIG9mb3JtYXQ6IHN0cmluZyA9ICdMJztcbiAgcHJvdGVjdGVkIF9sb2NhbGVPcHRpb25zOiBhbnk7XG4gIHByb3RlY3RlZCBvbG9jYWxlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb21lbnRTcnY6IE1vbWVudFNlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgb1RyYW5zbGF0ZTogT1RyYW5zbGF0ZVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9Gb3JtQ29tcG9uZW50KSkgZm9ybTogT0Zvcm1Db21wb25lbnQsXG4gICAgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlclxuICApIHtcbiAgICBzdXBlcihmb3JtLCBlbFJlZiwgaW5qZWN0b3IpO1xuICAgIHRoaXMub1RyYW5zbGF0ZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9UcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLm1vbWVudFNydiA9IHRoaXMuaW5qZWN0b3IuZ2V0KE1vbWVudFNlcnZpY2UpO1xuICAgIGlmICghdGhpcy5vbG9jYWxlKSB7XG4gICAgICB0aGlzLm9sb2NhbGUgPSB0aGlzLm1vbWVudFNydi5nZXRMb2NhbGUoKTtcbiAgICAgIG1vbWVudC5sb2NhbGUodGhpcy5vbG9jYWxlKTtcbiAgICB9XG4gICAgdGhpcy5fbG9jYWxlT3B0aW9ucyA9IHtcbiAgICAgIGRpcmVjdGlvbjogJ2x0cicsXG4gICAgICBzZXBhcmF0b3I6ICcgLSAnLFxuICAgICAgd2Vla0xhYmVsOiB0aGlzLm9UcmFuc2xhdGUuZ2V0KCdEQVRFUkFOR0UuVycpLFxuICAgICAgYXBwbHlMYWJlbDogdGhpcy5vVHJhbnNsYXRlLmdldCgnREFURVJBTkdFLkFQUExZTEFCRUwnKSxcbiAgICAgIGNhbmNlbExhYmVsOiB0aGlzLm9UcmFuc2xhdGUuZ2V0KCdDQU5DRUwnKSxcbiAgICAgIGN1c3RvbVJhbmdlTGFiZWw6ICdDdXN0b20gcmFuZ2UnLFxuICAgICAgZGF5c09mV2VlazogbW9tZW50LmxvY2FsZURhdGEoKS53ZWVrZGF5c01pbigpLFxuICAgICAgbW9udGhOYW1lczogbW9tZW50LmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCgpLFxuICAgICAgZmlyc3REYXk6IG1vbWVudC5sb2NhbGVEYXRhKCkuZmlyc3REYXlPZldlZWsoKSxcbiAgICAgIGZvcm1hdDogJ0wnXG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgaWYgKHRoaXMub2Zvcm1hdCkge1xuICAgICAgdGhpcy5fbG9jYWxlT3B0aW9ucy5mb3JtYXQgPSB0aGlzLm9mb3JtYXQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5QaWNrZXIoKSB7XG4gICAgdGhpcy5waWNrZXJEaXJlY3RpdmUub3BlbigpO1xuICB9XG5cbiAgcHVibGljIG9uQ2hhbmdlRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGxldCBvYmplY3RWYWx1ZTtcbiAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBFdmVudCkge1xuICAgICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgICAgaWYgKHZhbHVlICE9PSAnJykge1xuICAgICAgICBvYmplY3RWYWx1ZSA9IHRoaXMuZ2V0RGF0ZVJhbmdlVG9TdHJpbmcodmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvYmplY3RWYWx1ZSA9IGV2ZW50O1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWUob2JqZWN0VmFsdWUsIHtcbiAgICAgIGNoYW5nZVR5cGU6IE9WYWx1ZUNoYW5nZUV2ZW50LlVTRVJfQ0hBTkdFLFxuICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgIGVtaXRNb2RlbFRvVmlld0NoYW5nZTogZmFsc2VcbiAgICB9KTtcblxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlKHZhbDogYW55LCBvcHRpb25zOiBGb3JtVmFsdWVPcHRpb25zID0ge30sIHNldERpcnR5OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBzdXBlci5zZXRWYWx1ZSh2YWwsIG9wdGlvbnMsIHNldERpcnR5KTtcbiAgICB0aGlzLnVwZGF0ZUVsZW1lbnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsaWNrQ2xlYXJWYWx1ZShlOiBFdmVudCk6IHZvaWQge1xuICAgIHN1cGVyLm9uQ2xpY2tDbGVhclZhbHVlKGUpO1xuICAgIHRoaXMucGlja2VyRGlyZWN0aXZlLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucGlja2VyRGlyZWN0aXZlLmRhdGVzVXBkYXRlZC5lbWl0KCk7XG4gIH1cblxuICBkYXRlc1VwZGF0ZWQocmFuZ2UpIHtcbiAgICB0aGlzLnBpY2tlckRpcmVjdGl2ZS5jbG9zZSgpO1xuICAgIHRoaXMuc2V0VmFsdWUocmFuZ2UsXG4gICAgICB7XG4gICAgICAgIGNoYW5nZVR5cGU6IE9WYWx1ZUNoYW5nZUV2ZW50LlVTRVJfQ0hBTkdFLFxuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6IGZhbHNlXG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREYXRhKG5ld1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBzdXBlci5zZXREYXRhKG5ld1ZhbHVlKTtcbiAgICB0aGlzLnBpY2tlckRpcmVjdGl2ZS5kYXRlc1VwZGF0ZWQuZW1pdChuZXdWYWx1ZSk7XG4gICAgdGhpcy51cGRhdGVFbGVtZW50KCk7XG4gIH1cblxuICB1cGRhdGVFbGVtZW50KCkge1xuICAgIGxldCBjaG9zZW5MYWJlbDogYW55O1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnZhbHVlKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnZhbHVlLnZhbHVlKSAmJiAhdGhpcy5pc09iamVjdERhdGFSYW5nZU51bGwodGhpcy52YWx1ZSkpIHtcbiAgICAgIGlmICh0aGlzLnZhbHVlLnZhbHVlW3RoaXMucGlja2VyRGlyZWN0aXZlLnN0YXJ0S2V5XSAmJiB0aGlzLnZhbHVlLnZhbHVlW3RoaXMucGlja2VyRGlyZWN0aXZlLmVuZEtleV0pIHtcbiAgICAgICAgdGhpcy52YWx1ZS52YWx1ZVt0aGlzLnBpY2tlckRpcmVjdGl2ZS5zdGFydEtleV0gPSB0aGlzLmVuc3VyZURhdGVSYW5nZVZhbHVlKHRoaXMudmFsdWUudmFsdWVbdGhpcy5waWNrZXJEaXJlY3RpdmUuc3RhcnRLZXldLCB0aGlzLl92YWx1ZVR5cGUpO1xuICAgICAgICB0aGlzLnZhbHVlLnZhbHVlW3RoaXMucGlja2VyRGlyZWN0aXZlLmVuZEtleV0gPSB0aGlzLmVuc3VyZURhdGVSYW5nZVZhbHVlKHRoaXMudmFsdWUudmFsdWVbdGhpcy5waWNrZXJEaXJlY3RpdmUuZW5kS2V5XSwgdGhpcy5fdmFsdWVUeXBlKTtcbiAgICAgICAgY2hvc2VuTGFiZWwgPSB0aGlzLnZhbHVlLnZhbHVlW3RoaXMucGlja2VyRGlyZWN0aXZlLnN0YXJ0S2V5XS5mb3JtYXQodGhpcy5vZm9ybWF0KSArXG4gICAgICAgICAgdGhpcy5zZXBhcmF0b3IgKyB0aGlzLnZhbHVlLnZhbHVlW3RoaXMucGlja2VyRGlyZWN0aXZlLmVuZEtleV0uZm9ybWF0KHRoaXMub2Zvcm1hdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaG9zZW5MYWJlbCA9IG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNob3NlbkxhYmVsID0gbnVsbDtcbiAgICAgIHRoaXMucGlja2VyRGlyZWN0aXZlLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLnBpY2tlckRpcmVjdGl2ZS5fZWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IGNob3NlbkxhYmVsO1xuICB9XG5cblxuICBnZXREYXRlUmFuZ2VUb1N0cmluZyh2YWx1ZVRvU3RyaW5nOiBzdHJpbmcpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHt9O1xuICAgIGNvbnN0IHJhbmdlID0gdmFsdWVUb1N0cmluZy5zcGxpdCh0aGlzLnNlcGFyYXRvcik7XG4gICAgdmFsdWVbdGhpcy5fc3RhcnRLZXldID0gbW9tZW50KHJhbmdlWzBdLnRyaW0oKSwgdGhpcy5vZm9ybWF0KTtcbiAgICB2YWx1ZVt0aGlzLl9lbmRLZXldID0gbW9tZW50KHJhbmdlWzFdLnRyaW0oKSwgdGhpcy5vZm9ybWF0KTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuXG4gIHJlc29sdmVWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBzdXBlci5yZXNvbHZlVmFsaWRhdG9ycygpO1xuXG4gICAgdmFsaWRhdG9ycy5wdXNoKHRoaXMucmFuZ2VEYXRlVmFsaWRhdG9yLmJpbmQodGhpcykpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLl9vTWluRGF0ZSkpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLm1pbkRhdGVWYWxpZGF0b3IuYmluZCh0aGlzKSk7XG4gICAgfVxuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLl9vTWF4RGF0ZSkpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLm1heERhdGVWYWxpZGF0b3IuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgdmFsaWRhdG9ycy5wdXNoKHRoaXMucGFyc2VEYXRlVmFsaWRhdG9yLmJpbmQodGhpcykpO1xuICAgIHJldHVybiB2YWxpZGF0b3JzO1xuICB9XG5cbiAgaXNPYmplY3REYXRhUmFuZ2VOdWxsKG9iamVjdFZhbHVlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG9iamVjdFZhbHVlICE9PSBudWxsICYmIG9iamVjdFZhbHVlLnZhbHVlICE9PSBudWxsICYmXG4gICAgICAhVXRpbC5pc0RlZmluZWQob2JqZWN0VmFsdWUudmFsdWVbdGhpcy5waWNrZXJEaXJlY3RpdmUuc3RhcnRLZXldKSAmJlxuICAgICAgIVV0aWwuaXNEZWZpbmVkKG9iamVjdFZhbHVlLnZhbHVlW3RoaXMucGlja2VyRGlyZWN0aXZlLmVuZEtleV0pO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgcmFuZ2VEYXRlVmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuXG4gICAgaWYgKChjb250cm9sLnZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KVxuICAgICAgJiYgIXRoaXMuaXNPYmplY3REYXRhUmFuZ2VOdWxsKGNvbnRyb2wpICYmIGNvbnRyb2wudmFsdWVbdGhpcy5fZW5kS2V5XS5pc1NhbWVPckJlZm9yZShjb250cm9sLnZhbHVlW3RoaXMuX3N0YXJ0S2V5XSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGVSYW5nZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcHJvdGVjdGVkIG1pbkRhdGVWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgY29uc3QgbWluZGF0ZSA9IG1vbWVudCh0aGlzLl9vTWluRGF0ZSk7XG4gICAgaWYgKChjb250cm9sLnZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KVxuICAgICAgJiYgIXRoaXMuaXNPYmplY3REYXRhUmFuZ2VOdWxsKGNvbnRyb2wpICYmIGNvbnRyb2wudmFsdWVbdGhpcy5fc3RhcnRLZXldLmlzQmVmb3JlKG1pbmRhdGUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlUmFuZ2VNaW46IHtcbiAgICAgICAgICBkYXRlTWluOiBtaW5kYXRlLmZvcm1hdCh0aGlzLm9mb3JtYXQpXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXhEYXRlVmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGNvbnN0IG1heGRhdGUgPSBtb21lbnQodGhpcy5fb01heERhdGUpO1xuICAgIGlmICgoY29udHJvbC52YWx1ZSBpbnN0YW5jZW9mIE9iamVjdClcbiAgICAgICYmICF0aGlzLmlzT2JqZWN0RGF0YVJhbmdlTnVsbChjb250cm9sKSAmJiBjb250cm9sLnZhbHVlW3RoaXMuX2VuZEtleV0uaXNBZnRlcihtYXhkYXRlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0ZVJhbmdlTWF4OiB7XG4gICAgICAgICAgZGF0ZU1heDogbWF4ZGF0ZS5mb3JtYXQodGhpcy5vZm9ybWF0KVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cbiAgcHJvdGVjdGVkIHBhcnNlRGF0ZVZhbGlkYXRvcihjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBpZiAoKGNvbnRyb2wudmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgICAmJiAhdGhpcy5pc09iamVjdERhdGFSYW5nZU51bGwoY29udHJvbClcbiAgICAgICYmICgoY29udHJvbC52YWx1ZVt0aGlzLl9zdGFydEtleV0gJiYgIWNvbnRyb2wudmFsdWVbdGhpcy5fc3RhcnRLZXldLmlzVmFsaWQoKSlcbiAgICAgICAgfHwgKGNvbnRyb2wudmFsdWVbdGhpcy5fZW5kS2V5XSAmJiAhY29udHJvbC52YWx1ZVt0aGlzLl9lbmRLZXldLmlzVmFsaWQoKSkpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlUmFuZ2VQYXJzZToge1xuICAgICAgICAgIGZvcm1hdDogdGhpcy5vZm9ybWF0ICsgdGhpcy5fbG9jYWxlT3B0aW9ucy5zZXBhcmF0b3IgKyB0aGlzLm9mb3JtYXRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgZW5zdXJlRGF0ZVJhbmdlVmFsdWUodmFsOiBhbnksIHZhbHVlVHlwZTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh2YWwpKSB7XG4gICAgICByZXR1cm4gdmFsO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0ID0gdmFsO1xuICAgIGlmICghbW9tZW50LmlzTW9tZW50KHZhbCkpIHtcbiAgICAgIHN3aXRjaCAodmFsdWVUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgIGlmICgodmFsIGluc3RhbmNlb2YgRGF0ZSkgfHwgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBtb21lbnQodmFsKS5mb3JtYXQoJ1lZWVktTU0tRERUaGg6bW0nKSArICdaJztcbiAgICAgICAgICAgIGNvbnN0IHEgPSBtb21lbnQoZGF0ZVN0cmluZyk7XG4gICAgICAgICAgICBpZiAocS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgcmVzdWx0ID0gcTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc3VsdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndGltZXN0YW1wJzpcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBtb21lbnQudW5peCh2YWwpLmZvcm1hdCgnWVlZWS1NTS1ERFRoaDptbScpICsgJ1onO1xuICAgICAgICAgICAgY29uc3QgdCA9IG1vbWVudChkYXRlU3RyaW5nKTtcbiAgICAgICAgICAgIGlmICh0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICByZXN1bHQgPSB0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSB2YWw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpc28tODYwMSc6XG4gICAgICAgICAgY29uc3QgbSA9IG1vbWVudCh2YWwpO1xuICAgICAgICAgIGlmIChtLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gbTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChyZXN1bHQpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYE9EYXRlUmFuZ2VJbnB1dENvbXBvbmVudCB2YWx1ZSAoJHt2YWx9KSBpcyBub3QgY29uc2lzdGVudCB3aXRoIHZhbHVlLXR5cGUgKCR7dmFsdWVUeXBlfSlgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNldCB2YWx1ZVR5cGUodmFsOiBhbnkpIHtcbiAgICB0aGlzLl92YWx1ZVR5cGUgPSBVdGlsLmNvbnZlcnRUb09EYXRlVmFsdWVUeXBlKHZhbCk7XG4gIH1cblxuICBnZXQgdmFsdWVUeXBlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlVHlwZTtcbiAgfVxuXG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJnZXRGb3JtR3JvdXAoKVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXBcIiBbbWF0VG9vbHRpcENsYXNzXT1cInRvb2x0aXBDbGFzc1wiXG4gIFttYXRUb29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCIgW21hdFRvb2x0aXBTaG93RGVsYXldPVwidG9vbHRpcFNob3dEZWxheVwiIFttYXRUb29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIj5cblxuICA8bWF0LWZvcm0tZmllbGQgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIiBbaGlkZVJlcXVpcmVkTWFya2VyXT1cImhpZGVSZXF1aXJlZE1hcmtlclwiIFtjbGFzcy5jdXN0b20td2lkdGhdPVwiaGFzQ3VzdG9tV2lkdGhcIlxuICAgIGNsYXNzPVwiaWNvbi1maWVsZFwiIGZ4RmxleEZpbGwgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWxWaXNpYmxlXCI+e3sgb2xhYmVsIHwgb1RyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCAjbWF0SW5wdXRSZWYgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBvLWRhdGVyYW5nZS1pbnB1dCBbaWRdPVwiZ2V0QXR0cmlidXRlKClcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImdldEF0dHJpYnV0ZSgpXCIgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgW3JlYWRvbmx5XT1cImlzUmVhZE9ubHkgfHwgIXRleHRJbnB1dEVuYWJsZWRcIiBzaG93RHJvcGRvd25zPVwidHJ1ZVwiIHNob3dDYW5jZWw9XCJ0cnVlXCIgW3Nob3dSYW5nZXNdPVwic2hvd1Jhbmdlc1wiXG4gICAgICAoZGF0ZXNVcGRhdGVkKT1cImRhdGVzVXBkYXRlZCgkZXZlbnQpXCIgW29Ub3VjaFVpXT1cIm9Ub3VjaFVpXCIgW21pbkRhdGVdPVwib01pbkRhdGVcIiBbbWF4RGF0ZV09XCJvTWF4RGF0ZVwiIChmb2N1cyk9XCJpbm5lck9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAoYmx1cik9XCJpbm5lck9uQmx1cigkZXZlbnQpXCIgKGNoYW5nZSk9XCJvbkNoYW5nZUV2ZW50KCRldmVudClcIiBbbG9jYWxlXT1cImxvY2FsZU9wdGlvbnNcIiBbc2VwYXJhdG9yXT1cInNlcGFyYXRvclwiIFtzdGFydEtleV09XCJzdGFydEtleVwiXG4gICAgICBbZW5kS2V5XT1cImVuZEtleVwiIFtzaG93V2Vla051bWJlcnNdPVwic2hvd1dlZWtOdW1iZXJzXCIgW3NpbmdsZURhdGVQaWNrZXJdPVwiaXNNb2JpbGVNb2RlKClcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvcGVuUGlja2VyKClcIiBbZGlzYWJsZWRdPVwiaXNSZWFkT25seSB8fCAhZW5hYmxlZFwiPlxuICAgICAgPG1hdC1pY29uPnRvZGF5PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwic2hvd0NsZWFyQnV0dG9uXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25DbGlja0NsZWFyVmFsdWUoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5IHx8ICFlbmFibGVkXCI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmNsb3NlXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICB7eyAnRk9STV9WQUxJREFUSU9OLlJFUVVJUkVEJyB8IG9UcmFuc2xhdGUgfX1cbiAgICA8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignZGF0ZVJhbmdlJylcIj5cbiAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uREFURVJBTkdFX0lOVkFMSUQnIHwgb1RyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdkYXRlUmFuZ2VQYXJzZScpXCI+XG4gICAgICB7eyAnRk9STV9WQUxJREFUSU9OLkRBVEVfUEFSU0UnIHwgb1RyYW5zbGF0ZSB9fSA6IHt7IGdldEVycm9yVmFsdWUoJ2RhdGVSYW5nZVBhcnNlJywgJ2Zvcm1hdCcpIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ2RhdGVSYW5nZU1pbicpXCI+XG4gICAgICB7eyAnRk9STV9WQUxJREFUSU9OLkRBVEVSQU5HRV9NSU4nIHwgb1RyYW5zbGF0ZSB9fSA6IHt7IGdldEVycm9yVmFsdWUoJ2RhdGVSYW5nZU1pbicsICdkYXRlTWluJykgfX1cbiAgICA8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignZGF0ZVJhbmdlTWF4JylcIj5cbiAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uREFURVJBTkdFX01BWCcgfCBvVHJhbnNsYXRlIH19IDoge3sgZ2V0RXJyb3JWYWx1ZSgnZGF0ZVJhbmdlTWF4JywgJ2RhdGVNYXgnKSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IG9FcnJvciBvZiBnZXRBY3RpdmVPRXJyb3JzKClcIj5cbiAgICAgIHt7IG9FcnJvci50ZXh0IHwgb1RyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG4iXX0=
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1kYXRlcmFuZ2UtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS1yYW5nZS1sZWdhY3kvby1kYXRlcmFuZ2UtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS1yYW5nZS1sZWdhY3kvby1kYXRlcmFuZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBcUIsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1SCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBR3BGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7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V0FBVztzQkFEbEIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXJELGdCQUFnQixNQUdoQixlQUFlLE1BR2YsUUFBUSxNQUdSLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBNb21lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9tZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtVmFsdWVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZm9ybS12YWx1ZS1vcHRpb25zLnR5cGUnO1xuaW1wb3J0IHsgT0RhdGVWYWx1ZVR5cGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9vLWRhdGUtdmFsdWUudHlwZSc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZm9ybS9vLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IERFRkFVTFRfT1VUUFVUU19PX0ZPUk1fREFUQV9DT01QT05FTlQsIE9Gb3JtRGF0YUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL28tZm9ybS1kYXRhLWNvbXBvbmVudC5jbGFzcyc7XG5pbXBvcnQgeyBPVmFsdWVDaGFuZ2VFdmVudCB9IGZyb20gJy4uLy4uL28tdmFsdWUtY2hhbmdlLWV2ZW50LmNsYXNzJztcbmltcG9ydCB7IERFRkFVTFRfSU5QVVRTX09fREFURV9JTlBVVCB9IGZyb20gJy4uL2RhdGUtaW5wdXQvby1kYXRlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRGF0ZXJhbmdlcGlja2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9vLWRhdGVyYW5nZS1pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF0ZXJhbmdlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9vLWRhdGVyYW5nZS1waWNrZXIuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX0RBVEVSQU5HRV9MRUdBQ1lfSU5QVVQgPSBbXG4gIC4uLkRFRkFVTFRfT1VUUFVUU19PX0ZPUk1fREFUQV9DT01QT05FTlRcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0RBVEVSQU5HRV9MRUdBQ1lfSU5QVVQgPSBbXG4gICdzZXBhcmF0b3InLFxuICAnc2hvd1dlZWtOdW1iZXJzOnNob3ctd2Vlay1udW1iZXJzJyxcbiAgJ3Nob3dSYW5nZXM6c2hvdy1yYW5nZXMnLFxuICAnb2xvY2FsZTpsb2NhbGUnLFxuICAnc3RhcnRLZXknLFxuICAnZW5kS2V5JyxcbiAgJ3ZhbHVlVHlwZTogdmFsdWUtdHlwZScsXG4gICdtb2RlJyxcbiAgLi4uREVGQVVMVF9JTlBVVFNfT19EQVRFX0lOUFVUXG5dO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYE9EYXRlUmFuZ2VJbnB1dENvbXBvbmVudGAgaW5zdGVhZC4gVGhpcyBjb21wb25lbnQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tZGF0ZXJhbmdlLWxlZ2FjeS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWRhdGVyYW5nZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX0RBVEVSQU5HRV9MRUdBQ1lfSU5QVVQsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19EQVRFUkFOR0VfTEVHQUNZX0lOUFVUXG59KVxuZXhwb3J0IGNsYXNzIE9EYXRlUmFuZ2VMZWdhY3lJbnB1dENvbXBvbmVudCBleHRlbmRzIE9Gb3JtRGF0YUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcblxuICBAVmlld0NoaWxkKE9EYXRlcmFuZ2VwaWNrZXJEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHBpY2tlckRpcmVjdGl2ZTogT0RhdGVyYW5nZXBpY2tlckRpcmVjdGl2ZTtcbiAgcGlja2VyITogRGF0ZXJhbmdlcGlja2VyQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ21hdElucHV0UmVmJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBtYXRJbnB1dFJlZiE6IEVsZW1lbnRSZWY7XG5cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyB0ZXh0SW5wdXRFbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHNob3dXZWVrTnVtYmVyczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgb1RvdWNoVWk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHNob3dSYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgX29NaW5EYXRlOiBtb21lbnQuTW9tZW50O1xuXG4gIHB1YmxpYyBtb2RlOiAnbW9iaWxlJyB8ICdkZXNrdG9wJyB8ICdhdXRvJyA9ICdhdXRvJztcblxuICBnZXQgb01pbkRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX29NaW5EYXRlO1xuICB9XG4gIHNldCBvTWluRGF0ZSh2YWx1ZSkge1xuICAgIHRoaXMuX29NaW5EYXRlID0gbW9tZW50KHZhbHVlLCB0aGlzLm9mb3JtYXQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9vTWF4RGF0ZTogbW9tZW50Lk1vbWVudDtcbiAgZ2V0IG9NYXhEYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9vTWF4RGF0ZTtcbiAgfVxuICBzZXQgb01heERhdGUodmFsdWUpIHtcbiAgICB0aGlzLl9vTWF4RGF0ZSA9IG1vbWVudCh2YWx1ZSwgdGhpcy5vZm9ybWF0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfc3RhcnRLZXk6IHN0cmluZyA9ICdzdGFydERhdGUnO1xuICBnZXQgc3RhcnRLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0S2V5O1xuICB9XG4gIHNldCBzdGFydEtleSh2YWx1ZSkge1xuICAgIHRoaXMuX3N0YXJ0S2V5ID0gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2VuZEtleTogc3RyaW5nID0gJ2VuZERhdGUnO1xuICBnZXQgZW5kS2V5KCkge1xuICAgIHJldHVybiB0aGlzLl9lbmRLZXk7XG4gIH1cbiAgc2V0IGVuZEtleSh2YWx1ZSkge1xuICAgIHRoaXMuX2VuZEtleSA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF92YWx1ZVR5cGU6IE9EYXRlVmFsdWVUeXBlID0gJ3RpbWVzdGFtcCc7XG5cbiAgcHJvdGVjdGVkIF9zZXBhcmF0b3IgPSAnIC0gJztcbiAgZ2V0IHNlcGFyYXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VwYXJhdG9yO1xuICB9XG5cbiAgc2V0IHNlcGFyYXRvcih2YWx1ZSkge1xuICAgIHRoaXMuX3NlcGFyYXRvciA9IHZhbHVlO1xuICAgIGlmICh0aGlzLmdldEZvcm1Db250cm9sKCk/LnZhbHVlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUVsZW1lbnQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2hvd0NsZWFyQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNsZWFyQnV0dG9uICYmICF0aGlzLmlzUmVhZE9ubHkgJiYgdGhpcy5lbmFibGVkICYmIHRoaXMubWF0SW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIGdldCBsb2NhbGVPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2NhbGVPcHRpb25zO1xuICB9XG5cbiAgaXNNb2JpbGVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdtb2JpbGUnIHx8ICh0aGlzLm1vZGUgPT09ICdhdXRvJyAmJiB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuSGFuZHNldCkpXG4gIH1cblxuICBpc0Rlc2t0b3BNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdkZXNrdG9wJyB8fCAodGhpcy5tb2RlID09PSAnYXV0bycgJiYgIXRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5IYW5kc2V0KSlcbiAgfVxuXG5cbiAgcHVibGljIG9mb3JtYXQ6IHN0cmluZyA9ICdMJztcbiAgcHJvdGVjdGVkIF9sb2NhbGVPcHRpb25zOiBhbnk7XG4gIHByb3RlY3RlZCBvbG9jYWxlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb21lbnRTcnY6IE1vbWVudFNlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgb1RyYW5zbGF0ZTogT1RyYW5zbGF0ZVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9Gb3JtQ29tcG9uZW50KSkgZm9ybTogT0Zvcm1Db21wb25lbnQsXG4gICAgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlclxuICApIHtcbiAgICBzdXBlcihmb3JtLCBlbFJlZiwgaW5qZWN0b3IpO1xuICAgIHRoaXMub1RyYW5zbGF0ZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9UcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLm1vbWVudFNydiA9IHRoaXMuaW5qZWN0b3IuZ2V0KE1vbWVudFNlcnZpY2UpO1xuICAgIGlmICghdGhpcy5vbG9jYWxlKSB7XG4gICAgICB0aGlzLm9sb2NhbGUgPSB0aGlzLm1vbWVudFNydi5nZXRMb2NhbGUoKTtcbiAgICAgIG1vbWVudC5sb2NhbGUodGhpcy5vbG9jYWxlKTtcbiAgICB9XG4gICAgdGhpcy5fbG9jYWxlT3B0aW9ucyA9IHtcbiAgICAgIGRpcmVjdGlvbjogJ2x0cicsXG4gICAgICBzZXBhcmF0b3I6ICcgLSAnLFxuICAgICAgd2Vla0xhYmVsOiB0aGlzLm9UcmFuc2xhdGUuZ2V0KCdEQVRFUkFOR0UuVycpLFxuICAgICAgYXBwbHlMYWJlbDogdGhpcy5vVHJhbnNsYXRlLmdldCgnREFURVJBTkdFLkFQUExZTEFCRUwnKSxcbiAgICAgIGNhbmNlbExhYmVsOiB0aGlzLm9UcmFuc2xhdGUuZ2V0KCdDQU5DRUwnKSxcbiAgICAgIGN1c3RvbVJhbmdlTGFiZWw6ICdDdXN0b20gcmFuZ2UnLFxuICAgICAgZGF5c09mV2VlazogbW9tZW50LmxvY2FsZURhdGEoKS53ZWVrZGF5c01pbigpLFxuICAgICAgbW9udGhOYW1lczogbW9tZW50LmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCgpLFxuICAgICAgZmlyc3REYXk6IG1vbWVudC5sb2NhbGVEYXRhKCkuZmlyc3REYXlPZldlZWsoKSxcbiAgICAgIGZvcm1hdDogJ0wnXG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgaWYgKHRoaXMub2Zvcm1hdCkge1xuICAgICAgdGhpcy5fbG9jYWxlT3B0aW9ucy5mb3JtYXQgPSB0aGlzLm9mb3JtYXQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5QaWNrZXIoKSB7XG4gICAgdGhpcy5waWNrZXJEaXJlY3RpdmUub3BlbigpO1xuICB9XG5cbiAgcHVibGljIG9uQ2hhbmdlRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGxldCBvYmplY3RWYWx1ZTtcbiAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBFdmVudCkge1xuICAgICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgICAgaWYgKHZhbHVlICE9PSAnJykge1xuICAgICAgICBvYmplY3RWYWx1ZSA9IHRoaXMuZ2V0RGF0ZVJhbmdlVG9TdHJpbmcodmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvYmplY3RWYWx1ZSA9IGV2ZW50O1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWUob2JqZWN0VmFsdWUsIHtcbiAgICAgIGNoYW5nZVR5cGU6IE9WYWx1ZUNoYW5nZUV2ZW50LlVTRVJfQ0hBTkdFLFxuICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgIGVtaXRNb2RlbFRvVmlld0NoYW5nZTogZmFsc2VcbiAgICB9KTtcblxuICB9XG5cbiAgcHVibGljIHNldFZhbHVlKHZhbDogYW55LCBvcHRpb25zOiBGb3JtVmFsdWVPcHRpb25zID0ge30sIHNldERpcnR5OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBzdXBlci5zZXRWYWx1ZSh2YWwsIG9wdGlvbnMsIHNldERpcnR5KTtcbiAgICB0aGlzLnVwZGF0ZUVsZW1lbnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsaWNrQ2xlYXJWYWx1ZShlOiBFdmVudCk6IHZvaWQge1xuICAgIHN1cGVyLm9uQ2xpY2tDbGVhclZhbHVlKGUpO1xuICAgIHRoaXMucGlja2VyRGlyZWN0aXZlLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucGlja2VyRGlyZWN0aXZlLmRhdGVzVXBkYXRlZC5lbWl0KCk7XG4gIH1cblxuICBkYXRlc1VwZGF0ZWQocmFuZ2UpIHtcbiAgICB0aGlzLnBpY2tlckRpcmVjdGl2ZS5jbG9zZSgpO1xuICAgIHRoaXMuc2V0VmFsdWUocmFuZ2UsXG4gICAgICB7XG4gICAgICAgIGNoYW5nZVR5cGU6IE9WYWx1ZUNoYW5nZUV2ZW50LlVTRVJfQ0hBTkdFLFxuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6IGZhbHNlXG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREYXRhKG5ld1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBzdXBlci5zZXREYXRhKG5ld1ZhbHVlKTtcbiAgICB0aGlzLnBpY2tlckRpcmVjdGl2ZS5kYXRlc1VwZGF0ZWQuZW1pdChuZXdWYWx1ZSk7XG4gICAgdGhpcy51cGRhdGVFbGVtZW50KCk7XG4gIH1cblxuICB1cGRhdGVFbGVtZW50KCkge1xuICAgIGxldCBjaG9zZW5MYWJlbDogYW55O1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnZhbHVlKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnZhbHVlLnZhbHVlKSAmJiAhdGhpcy5pc09iamVjdERhdGFSYW5nZU51bGwodGhpcy52YWx1ZSkpIHtcbiAgICAgIGlmICh0aGlzLnZhbHVlLnZhbHVlW3RoaXMucGlja2VyRGlyZWN0aXZlLnN0YXJ0S2V5XSAmJiB0aGlzLnZhbHVlLnZhbHVlW3RoaXMucGlja2VyRGlyZWN0aXZlLmVuZEtleV0pIHtcbiAgICAgICAgdGhpcy52YWx1ZS52YWx1ZVt0aGlzLnBpY2tlckRpcmVjdGl2ZS5zdGFydEtleV0gPSB0aGlzLmVuc3VyZURhdGVSYW5nZVZhbHVlKHRoaXMudmFsdWUudmFsdWVbdGhpcy5waWNrZXJEaXJlY3RpdmUuc3RhcnRLZXldLCB0aGlzLl92YWx1ZVR5cGUpO1xuICAgICAgICB0aGlzLnZhbHVlLnZhbHVlW3RoaXMucGlja2VyRGlyZWN0aXZlLmVuZEtleV0gPSB0aGlzLmVuc3VyZURhdGVSYW5nZVZhbHVlKHRoaXMudmFsdWUudmFsdWVbdGhpcy5waWNrZXJEaXJlY3RpdmUuZW5kS2V5XSwgdGhpcy5fdmFsdWVUeXBlKTtcbiAgICAgICAgY2hvc2VuTGFiZWwgPSB0aGlzLnZhbHVlLnZhbHVlW3RoaXMucGlja2VyRGlyZWN0aXZlLnN0YXJ0S2V5XS5mb3JtYXQodGhpcy5vZm9ybWF0KSArXG4gICAgICAgICAgdGhpcy5zZXBhcmF0b3IgKyB0aGlzLnZhbHVlLnZhbHVlW3RoaXMucGlja2VyRGlyZWN0aXZlLmVuZEtleV0uZm9ybWF0KHRoaXMub2Zvcm1hdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaG9zZW5MYWJlbCA9IG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNob3NlbkxhYmVsID0gbnVsbDtcbiAgICAgIHRoaXMucGlja2VyRGlyZWN0aXZlLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLnBpY2tlckRpcmVjdGl2ZS5fZWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IGNob3NlbkxhYmVsO1xuICB9XG5cblxuICBnZXREYXRlUmFuZ2VUb1N0cmluZyh2YWx1ZVRvU3RyaW5nOiBzdHJpbmcpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHt9O1xuICAgIGNvbnN0IHJhbmdlID0gdmFsdWVUb1N0cmluZy5zcGxpdCh0aGlzLnNlcGFyYXRvcik7XG4gICAgdmFsdWVbdGhpcy5fc3RhcnRLZXldID0gbW9tZW50KHJhbmdlWzBdLnRyaW0oKSwgdGhpcy5vZm9ybWF0KTtcbiAgICB2YWx1ZVt0aGlzLl9lbmRLZXldID0gbW9tZW50KHJhbmdlWzFdLnRyaW0oKSwgdGhpcy5vZm9ybWF0KTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuXG4gIHJlc29sdmVWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBzdXBlci5yZXNvbHZlVmFsaWRhdG9ycygpO1xuXG4gICAgdmFsaWRhdG9ycy5wdXNoKHRoaXMucmFuZ2VEYXRlVmFsaWRhdG9yLmJpbmQodGhpcykpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLl9vTWluRGF0ZSkpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLm1pbkRhdGVWYWxpZGF0b3IuYmluZCh0aGlzKSk7XG4gICAgfVxuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLl9vTWF4RGF0ZSkpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLm1heERhdGVWYWxpZGF0b3IuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgdmFsaWRhdG9ycy5wdXNoKHRoaXMucGFyc2VEYXRlVmFsaWRhdG9yLmJpbmQodGhpcykpO1xuICAgIHJldHVybiB2YWxpZGF0b3JzO1xuICB9XG5cbiAgaXNPYmplY3REYXRhUmFuZ2VOdWxsKG9iamVjdFZhbHVlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG9iamVjdFZhbHVlICE9PSBudWxsICYmIG9iamVjdFZhbHVlLnZhbHVlICE9PSBudWxsICYmXG4gICAgICAhVXRpbC5pc0RlZmluZWQob2JqZWN0VmFsdWUudmFsdWVbdGhpcy5waWNrZXJEaXJlY3RpdmUuc3RhcnRLZXldKSAmJlxuICAgICAgIVV0aWwuaXNEZWZpbmVkKG9iamVjdFZhbHVlLnZhbHVlW3RoaXMucGlja2VyRGlyZWN0aXZlLmVuZEtleV0pO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgcmFuZ2VEYXRlVmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuXG4gICAgaWYgKChjb250cm9sLnZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KVxuICAgICAgJiYgIXRoaXMuaXNPYmplY3REYXRhUmFuZ2VOdWxsKGNvbnRyb2wpICYmIGNvbnRyb2wudmFsdWVbdGhpcy5fZW5kS2V5XS5pc1NhbWVPckJlZm9yZShjb250cm9sLnZhbHVlW3RoaXMuX3N0YXJ0S2V5XSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGVSYW5nZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcHJvdGVjdGVkIG1pbkRhdGVWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgY29uc3QgbWluZGF0ZSA9IG1vbWVudCh0aGlzLl9vTWluRGF0ZSk7XG4gICAgaWYgKChjb250cm9sLnZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KVxuICAgICAgJiYgIXRoaXMuaXNPYmplY3REYXRhUmFuZ2VOdWxsKGNvbnRyb2wpICYmIGNvbnRyb2wudmFsdWVbdGhpcy5fc3RhcnRLZXldLmlzQmVmb3JlKG1pbmRhdGUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlUmFuZ2VNaW46IHtcbiAgICAgICAgICBkYXRlTWluOiBtaW5kYXRlLmZvcm1hdCh0aGlzLm9mb3JtYXQpXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXhEYXRlVmFsaWRhdG9yKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGNvbnN0IG1heGRhdGUgPSBtb21lbnQodGhpcy5fb01heERhdGUpO1xuICAgIGlmICgoY29udHJvbC52YWx1ZSBpbnN0YW5jZW9mIE9iamVjdClcbiAgICAgICYmICF0aGlzLmlzT2JqZWN0RGF0YVJhbmdlTnVsbChjb250cm9sKSAmJiBjb250cm9sLnZhbHVlW3RoaXMuX2VuZEtleV0uaXNBZnRlcihtYXhkYXRlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0ZVJhbmdlTWF4OiB7XG4gICAgICAgICAgZGF0ZU1heDogbWF4ZGF0ZS5mb3JtYXQodGhpcy5vZm9ybWF0KVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cbiAgcHJvdGVjdGVkIHBhcnNlRGF0ZVZhbGlkYXRvcihjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBpZiAoKGNvbnRyb2wudmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgICAmJiAhdGhpcy5pc09iamVjdERhdGFSYW5nZU51bGwoY29udHJvbClcbiAgICAgICYmICgoY29udHJvbC52YWx1ZVt0aGlzLl9zdGFydEtleV0gJiYgIWNvbnRyb2wudmFsdWVbdGhpcy5fc3RhcnRLZXldLmlzVmFsaWQoKSlcbiAgICAgICAgfHwgKGNvbnRyb2wudmFsdWVbdGhpcy5fZW5kS2V5XSAmJiAhY29udHJvbC52YWx1ZVt0aGlzLl9lbmRLZXldLmlzVmFsaWQoKSkpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlUmFuZ2VQYXJzZToge1xuICAgICAgICAgIGZvcm1hdDogdGhpcy5vZm9ybWF0ICsgdGhpcy5fbG9jYWxlT3B0aW9ucy5zZXBhcmF0b3IgKyB0aGlzLm9mb3JtYXRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgZW5zdXJlRGF0ZVJhbmdlVmFsdWUodmFsOiBhbnksIHZhbHVlVHlwZTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh2YWwpKSB7XG4gICAgICByZXR1cm4gdmFsO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0ID0gdmFsO1xuICAgIGlmICghbW9tZW50LmlzTW9tZW50KHZhbCkpIHtcbiAgICAgIHN3aXRjaCAodmFsdWVUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgIGlmICgodmFsIGluc3RhbmNlb2YgRGF0ZSkgfHwgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBtb21lbnQodmFsKS5mb3JtYXQoJ1lZWVktTU0tRERUaGg6bW0nKSArICdaJztcbiAgICAgICAgICAgIGNvbnN0IHEgPSBtb21lbnQoZGF0ZVN0cmluZyk7XG4gICAgICAgICAgICBpZiAocS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgcmVzdWx0ID0gcTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc3VsdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndGltZXN0YW1wJzpcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBtb21lbnQudW5peCh2YWwpLmZvcm1hdCgnWVlZWS1NTS1ERFRoaDptbScpICsgJ1onO1xuICAgICAgICAgICAgY29uc3QgdCA9IG1vbWVudChkYXRlU3RyaW5nKTtcbiAgICAgICAgICAgIGlmICh0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICByZXN1bHQgPSB0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSB2YWw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpc28tODYwMSc6XG4gICAgICAgICAgY29uc3QgbSA9IG1vbWVudCh2YWwpO1xuICAgICAgICAgIGlmIChtLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gbTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChyZXN1bHQpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYE9EYXRlUmFuZ2VJbnB1dENvbXBvbmVudCB2YWx1ZSAoJHt2YWx9KSBpcyBub3QgY29uc2lzdGVudCB3aXRoIHZhbHVlLXR5cGUgKCR7dmFsdWVUeXBlfSlgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNldCB2YWx1ZVR5cGUodmFsOiBhbnkpIHtcbiAgICB0aGlzLl92YWx1ZVR5cGUgPSBVdGlsLmNvbnZlcnRUb09EYXRlVmFsdWVUeXBlKHZhbCk7XG4gIH1cblxuICBnZXQgdmFsdWVUeXBlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlVHlwZTtcbiAgfVxuXG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJnZXRGb3JtR3JvdXAoKVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXBcIiBbbWF0VG9vbHRpcENsYXNzXT1cInRvb2x0aXBDbGFzc1wiXG4gIFttYXRUb29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCIgW21hdFRvb2x0aXBTaG93RGVsYXldPVwidG9vbHRpcFNob3dEZWxheVwiIFttYXRUb29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIj5cblxuICA8bWF0LWZvcm0tZmllbGQgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIiBbaGlkZVJlcXVpcmVkTWFya2VyXT1cImhpZGVSZXF1aXJlZE1hcmtlclwiIFtjbGFzcy5jdXN0b20td2lkdGhdPVwiaGFzQ3VzdG9tV2lkdGhcIlxuICAgIGNsYXNzPVwiaWNvbi1maWVsZFwiIGZ4RmxleEZpbGwgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWxWaXNpYmxlXCI+e3sgb2xhYmVsIHwgb1RyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCAjbWF0SW5wdXRSZWYgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBvLWRhdGVyYW5nZS1pbnB1dCBbaWRdPVwiZ2V0QXR0cmlidXRlKClcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImdldEF0dHJpYnV0ZSgpXCIgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgW3JlYWRvbmx5XT1cImlzUmVhZE9ubHkgfHwgIXRleHRJbnB1dEVuYWJsZWRcIiBzaG93RHJvcGRvd25zPVwidHJ1ZVwiIHNob3dDYW5jZWw9XCJ0cnVlXCIgW3Nob3dSYW5nZXNdPVwic2hvd1Jhbmdlc1wiXG4gICAgICAoZGF0ZXNVcGRhdGVkKT1cImRhdGVzVXBkYXRlZCgkZXZlbnQpXCIgW29Ub3VjaFVpXT1cIm9Ub3VjaFVpXCIgW21pbkRhdGVdPVwib01pbkRhdGVcIiBbbWF4RGF0ZV09XCJvTWF4RGF0ZVwiIChmb2N1cyk9XCJpbm5lck9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAoYmx1cik9XCJpbm5lck9uQmx1cigkZXZlbnQpXCIgKGNoYW5nZSk9XCJvbkNoYW5nZUV2ZW50KCRldmVudClcIiBbbG9jYWxlXT1cImxvY2FsZU9wdGlvbnNcIiBbc2VwYXJhdG9yXT1cInNlcGFyYXRvclwiIFtzdGFydEtleV09XCJzdGFydEtleVwiXG4gICAgICBbZW5kS2V5XT1cImVuZEtleVwiIFtzaG93V2Vla051bWJlcnNdPVwic2hvd1dlZWtOdW1iZXJzXCIgW3NpbmdsZURhdGVQaWNrZXJdPVwiaXNNb2JpbGVNb2RlKClcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvcGVuUGlja2VyKClcIiBbZGlzYWJsZWRdPVwiaXNSZWFkT25seSB8fCAhZW5hYmxlZFwiPlxuICAgICAgPG1hdC1pY29uPnRvZGF5PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwic2hvd0NsZWFyQnV0dG9uXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25DbGlja0NsZWFyVmFsdWUoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5IHx8ICFlbmFibGVkXCI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmNsb3NlXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICB7eyAnRk9STV9WQUxJREFUSU9OLlJFUVVJUkVEJyB8IG9UcmFuc2xhdGUgfX1cbiAgICA8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignZGF0ZVJhbmdlJylcIj5cbiAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uREFURVJBTkdFX0lOVkFMSUQnIHwgb1RyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdkYXRlUmFuZ2VQYXJzZScpXCI+XG4gICAgICB7eyAnRk9STV9WQUxJREFUSU9OLkRBVEVfUEFSU0UnIHwgb1RyYW5zbGF0ZSB9fSA6IHt7IGdldEVycm9yVmFsdWUoJ2RhdGVSYW5nZVBhcnNlJywgJ2Zvcm1hdCcpIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ2RhdGVSYW5nZU1pbicpXCI+XG4gICAgICB7eyAnRk9STV9WQUxJREFUSU9OLkRBVEVSQU5HRV9NSU4nIHwgb1RyYW5zbGF0ZSB9fSA6IHt7IGdldEVycm9yVmFsdWUoJ2RhdGVSYW5nZU1pbicsICdkYXRlTWluJykgfX1cbiAgICA8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignZGF0ZVJhbmdlTWF4JylcIj5cbiAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uREFURVJBTkdFX01BWCcgfCBvVHJhbnNsYXRlIH19IDoge3sgZ2V0RXJyb3JWYWx1ZSgnZGF0ZVJhbmdlTWF4JywgJ2RhdGVNYXgnKSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IG9FcnJvciBvZiBnZXRBY3RpdmVPRXJyb3JzKClcIj5cbiAgICAgIHt7IG9FcnJvci50ZXh0IHwgb1RyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG4iXX0=
|