@elderbyte/ngx-starter 18.11.0 → 18.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_index.scss +38 -33
- package/esm2022/lib/common/arrays.mjs +1 -1
- package/esm2022/lib/common/async/public_api.mjs +1 -1
- package/esm2022/lib/common/async/refreshing-entity.mjs +5 -3
- package/esm2022/lib/common/csv/csv-serializer.mjs +5 -5
- package/esm2022/lib/common/csv/csv-spec.mjs +2 -2
- package/esm2022/lib/common/csv/public_api.mjs +1 -1
- package/esm2022/lib/common/data/continuable-listing.mjs +1 -1
- package/esm2022/lib/common/data/data-context/data-context-active-page.mjs +5 -4
- package/esm2022/lib/common/data/data-context/data-context-auto-starter.mjs +7 -5
- package/esm2022/lib/common/data/data-context/data-context-base.mjs +19 -12
- package/esm2022/lib/common/data/data-context/data-context-builder.mjs +5 -7
- package/esm2022/lib/common/data/data-context/data-context-continuable-base.mjs +5 -7
- package/esm2022/lib/common/data/data-context/data-context-continuable-paged.mjs +2 -2
- package/esm2022/lib/common/data/data-context/data-context-continuable-token.mjs +17 -7
- package/esm2022/lib/common/data/data-context/data-context-life-cycle-binding.mjs +2 -2
- package/esm2022/lib/common/data/data-context/data-context-simple.mjs +5 -4
- package/esm2022/lib/common/data/data-context/data-context-source-event-binding.mjs +2 -2
- package/esm2022/lib/common/data/data-context/data-context-status.mjs +1 -1
- package/esm2022/lib/common/data/data-context/data-context.mjs +5 -5
- package/esm2022/lib/common/data/data-context/indexed-entities.mjs +2 -2
- package/esm2022/lib/common/data/data-context/mat-table-data-context-binding.mjs +14 -8
- package/esm2022/lib/common/data/data-context/public_api.mjs +1 -1
- package/esm2022/lib/common/data/datasource/data-source-adapter.mjs +9 -5
- package/esm2022/lib/common/data/datasource/data-source-base.mjs +1 -1
- package/esm2022/lib/common/data/datasource/data-source-change-event.mjs +1 -1
- package/esm2022/lib/common/data/datasource/data-source-processor.mjs +14 -15
- package/esm2022/lib/common/data/datasource/data-source.mjs +4 -4
- package/esm2022/lib/common/data/datasource/entity-id-util.mjs +2 -2
- package/esm2022/lib/common/data/datasource/fetcher/delegate-data-source.mjs +2 -2
- package/esm2022/lib/common/data/datasource/local/local-list-data-source.mjs +9 -11
- package/esm2022/lib/common/data/datasource/local/local-paged-data-source.mjs +4 -2
- package/esm2022/lib/common/data/datasource/public_api.mjs +1 -1
- package/esm2022/lib/common/data/datasource/rest/public_api.mjs +1 -1
- package/esm2022/lib/common/data/datasource/rest/rest-client.mjs +44 -39
- package/esm2022/lib/common/data/entity-set-patch.mjs +6 -9
- package/esm2022/lib/common/data/field-comparator.mjs +2 -2
- package/esm2022/lib/common/data/filters/filter-commons.mjs +1 -1
- package/esm2022/lib/common/data/filters/filter-context.mjs +9 -9
- package/esm2022/lib/common/data/filters/filter-value.mjs +1 -1
- package/esm2022/lib/common/data/filters/filter.mjs +2 -2
- package/esm2022/lib/common/data/http-params-builder.mjs +5 -7
- package/esm2022/lib/common/data/page.mjs +1 -1
- package/esm2022/lib/common/data/public_api.mjs +1 -1
- package/esm2022/lib/common/data/required-filter-evaluator.mjs +7 -10
- package/esm2022/lib/common/data/sort-context.mjs +4 -6
- package/esm2022/lib/common/data/sort.mjs +1 -1
- package/esm2022/lib/common/data/token-chunk-request.mjs +1 -1
- package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +9 -9
- package/esm2022/lib/common/enums/public_api.mjs +1 -1
- package/esm2022/lib/common/errors/exception-detail.mjs +1 -1
- package/esm2022/lib/common/errors/public_api.mjs +1 -1
- package/esm2022/lib/common/errors/standard-error-detail.mjs +1 -1
- package/esm2022/lib/common/format/bytes-format.mjs +2 -9
- package/esm2022/lib/common/format/bytes-per-second-format.mjs +1 -1
- package/esm2022/lib/common/format/curency-format-util.mjs +1 -1
- package/esm2022/lib/common/format/duration-format-util.mjs +1 -1
- package/esm2022/lib/common/format/iso-interval-format-util.mjs +6 -4
- package/esm2022/lib/common/format/public_api.mjs +1 -1
- package/esm2022/lib/common/forms/elder-entity-value-accessor.mjs +7 -7
- package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +7 -7
- package/esm2022/lib/common/forms/elder-from-field-base.mjs +3 -3
- package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +1 -1
- package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +5 -5
- package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +7 -7
- package/esm2022/lib/common/forms/elder-multi-entity-value-accessor.mjs +7 -7
- package/esm2022/lib/common/forms/form-field-base.component.mjs +3 -4
- package/esm2022/lib/common/forms/multi-model-base.component.mjs +2 -2
- package/esm2022/lib/common/forms/public_api.mjs +1 -1
- package/esm2022/lib/common/forms/template-composite-control.mjs +17 -13
- package/esm2022/lib/common/forms/value-accessor-base.mjs +3 -3
- package/esm2022/lib/common/forms/view-providers.mjs +1 -1
- package/esm2022/lib/common/http/http-client-builder.service.mjs +2 -2
- package/esm2022/lib/common/http/http-client-pristine.mjs +2 -2
- package/esm2022/lib/common/http/public_api.mjs +1 -1
- package/esm2022/lib/common/http/transfer/data-transfer-base.mjs +2 -2
- package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +4 -4
- package/esm2022/lib/common/http/transfer/data-transfer-progress-aggregate.mjs +6 -5
- package/esm2022/lib/common/http/transfer/data-transfer-progress.mjs +1 -1
- package/esm2022/lib/common/http/transfer/data-transfer-state.mjs +1 -1
- package/esm2022/lib/common/http/transfer/data-transfer-status.mjs +1 -1
- package/esm2022/lib/common/http/transfer/data-transfer.mjs +1 -1
- package/esm2022/lib/common/http/transfer/http-data-transfer.mjs +9 -9
- package/esm2022/lib/common/http/transfer/public_api.mjs +1 -1
- package/esm2022/lib/common/http/upload/file-upload-client.mjs +2 -2
- package/esm2022/lib/common/i18n/entity/impl/i18n-base.mjs +1 -1
- package/esm2022/lib/common/i18n/entity/impl/i18n-text.mjs +1 -1
- package/esm2022/lib/common/i18n/entity/impl/translated.mjs +1 -1
- package/esm2022/lib/common/i18n/entity/language-tag.mjs +1 -1
- package/esm2022/lib/common/i18n/entity/locale.mjs +1 -1
- package/esm2022/lib/common/i18n/entity/localisation-picker.mjs +4 -4
- package/esm2022/lib/common/i18n/entity/localized.mjs +1 -1
- package/esm2022/lib/common/i18n/entity/public_api.mjs +1 -1
- package/esm2022/lib/common/i18n/entity/translated-converter.mjs +4 -4
- package/esm2022/lib/common/i18n/entity/translated.mjs +1 -1
- package/esm2022/lib/common/i18n/public_api.mjs +1 -1
- package/esm2022/lib/common/json-map.mjs +3 -4
- package/esm2022/lib/common/objects.mjs +1 -1
- package/esm2022/lib/common/public_api.mjs +1 -1
- package/esm2022/lib/common/reactive-map.mjs +5 -5
- package/esm2022/lib/common/rxjs/operators/lazy-sample.mjs +2 -2
- package/esm2022/lib/common/rxjs/public_api.mjs +1 -1
- package/esm2022/lib/common/selection/public_api.mjs +1 -1
- package/esm2022/lib/common/selection/selection-model.mjs +8 -8
- package/esm2022/lib/common/sets.mjs +3 -2
- package/esm2022/lib/common/suggestion-provider.mjs +1 -1
- package/esm2022/lib/common/templates/template-slot-manager.mjs +2 -2
- package/esm2022/lib/common/theme-sizes.mjs +1 -1
- package/esm2022/lib/common/time/date-util.mjs +8 -10
- package/esm2022/lib/common/time/interval-coerce.mjs +3 -3
- package/esm2022/lib/common/time/interval.mjs +19 -16
- package/esm2022/lib/common/time/period-duration.mjs +1 -1
- package/esm2022/lib/common/time/public_api.mjs +1 -1
- package/esm2022/lib/common/time/temporal-plain-date-interval.mjs +1 -1
- package/esm2022/lib/common/time/temporal-util.mjs +1 -1
- package/esm2022/lib/common/time/time-util.mjs +3 -6
- package/esm2022/lib/common/url/elder-router.service.mjs +2 -2
- package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +4 -6
- package/esm2022/lib/common/url/public_api.mjs +1 -1
- package/esm2022/lib/common/url/url-query-params.mjs +2 -2
- package/esm2022/lib/common/utils/batcher.mjs +2 -2
- package/esm2022/lib/common/utils/collection-util.mjs +7 -5
- package/esm2022/lib/common/utils/filter-util.mjs +10 -8
- package/esm2022/lib/common/utils/focus-util.mjs +1 -1
- package/esm2022/lib/common/utils/input-utils.mjs +1 -1
- package/esm2022/lib/common/utils/next-number-util.mjs +4 -3
- package/esm2022/lib/common/utils/ng-zone-utils.mjs +2 -2
- package/esm2022/lib/common/utils/parse-util.mjs +1 -1
- package/esm2022/lib/common/utils/property-path-util.mjs +2 -2
- package/esm2022/lib/common/utils/public_api.mjs +1 -1
- package/esm2022/lib/common/utils/query-list-binding.mjs +5 -4
- package/esm2022/lib/common/utils/sort-util.mjs +2 -2
- package/esm2022/lib/common/utils/url-builder.mjs +1 -1
- package/esm2022/lib/common/utils/uuid-util.mjs +3 -4
- package/esm2022/lib/common/utils/value-wrapper.mjs +1 -1
- package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +4 -5
- package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +5 -15
- package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +16 -6
- package/esm2022/lib/components/auditing/elder-audit.module.mjs +4 -6
- package/esm2022/lib/components/auditing/i-audited-entity.mjs +1 -1
- package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +18 -12
- package/esm2022/lib/components/badge/elder-badge.directive.mjs +7 -7
- package/esm2022/lib/components/badge/elder-badge.module.mjs +4 -4
- package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +3 -5
- package/esm2022/lib/components/button-group/elder-button-group.module.mjs +5 -20
- package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +4 -5
- package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +2 -2
- package/esm2022/lib/components/card-organizer/card-organizer-data.mjs +7 -7
- package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +24 -12
- package/esm2022/lib/components/card-organizer/card-stack.mjs +3 -3
- package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +18 -7
- package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +3 -3
- package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +9 -9
- package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +16 -10
- package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +3 -3
- package/esm2022/lib/components/chips/elder-chips.module.mjs +3 -5
- package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +9 -8
- package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +10 -12
- package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +3 -3
- package/esm2022/lib/components/connectivity/public_api.mjs +1 -1
- package/esm2022/lib/components/containers/elder-containers.module.mjs +4 -10
- package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +4 -4
- package/esm2022/lib/components/containers/public_api.mjs +1 -1
- package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +6 -6
- package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.mjs +2 -4
- package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +2 -2
- package/esm2022/lib/components/csv/elder-csv-stream-exporter.mjs +12 -12
- package/esm2022/lib/components/csv/elder-csv.module.mjs +6 -19
- package/esm2022/lib/components/currency/elder-currency.module.mjs +6 -18
- package/esm2022/lib/components/currency/elder-currency.pipe.mjs +2 -2
- package/esm2022/lib/components/currency/model/currency-code.mjs +1 -1
- package/esm2022/lib/components/currency/model/currency-unit-registry.mjs +1 -1
- package/esm2022/lib/components/currency/model/currency-unit.mjs +1 -1
- package/esm2022/lib/components/currency/model/currency.mjs +1 -1
- package/esm2022/lib/components/currency/public_api.mjs +1 -1
- package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +28 -16
- package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +12 -10
- package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +23 -12
- package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +3 -3
- package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +13 -3
- package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +11 -3
- package/esm2022/lib/components/data-view/base/data-view-options-provider-binding.mjs +4 -2
- package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +4 -5
- package/esm2022/lib/components/data-view/base/elder-data-view-options-provider.mjs +1 -1
- package/esm2022/lib/components/data-view/base/elder-data-view-options.mjs +1 -1
- package/esm2022/lib/components/data-view/base/elder-data-view.mjs +1 -1
- package/esm2022/lib/components/data-view/base/public_api.mjs +1 -1
- package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-context.mjs +2 -2
- package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-dc.directive.mjs +5 -7
- package/esm2022/lib/components/data-view/common/composite-sort/composite-sort.mjs +4 -5
- package/esm2022/lib/components/data-view/common/composite-sort/elder-composite-sort/elder-composite-sort.component.mjs +6 -6
- package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +4 -5
- package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +38 -20
- package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +5 -13
- package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +16 -6
- package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +6 -4
- package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +4 -5
- package/esm2022/lib/components/data-view/common/selection/master-selection-state.mjs +1 -1
- package/esm2022/lib/components/data-view/elder-data-view-interaction-mode.mjs +1 -1
- package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +46 -26
- package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +30 -21
- package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +15 -9
- package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +5 -7
- package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +8 -6
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail-provider.mjs +2 -2
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +19 -25
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +4 -4
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +5 -4
- package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +2 -2
- package/esm2022/lib/components/data-view/master-detail/master-detail-activation-event.mjs +1 -1
- package/esm2022/lib/components/data-view/public_api.mjs +1 -1
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +4 -5
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +41 -16
- package/esm2022/lib/components/data-view/table/activation/activation-event-source.mjs +1 -1
- package/esm2022/lib/components/data-view/table/activation/elder-activation-context.mjs +1 -1
- package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +6 -6
- package/esm2022/lib/components/data-view/table/activation/elder-table-activation-options.mjs +1 -1
- package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +23 -15
- package/esm2022/lib/components/data-view/table/activation/item-activation-event.mjs +1 -1
- package/esm2022/lib/components/data-view/table/activation/item-activation-options.mjs +1 -1
- package/esm2022/lib/components/data-view/table/activation/public_api.mjs +1 -1
- package/esm2022/lib/components/data-view/table/elder-center-cell.directive.mjs +4 -5
- package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +8 -7
- package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +2 -2
- package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +54 -38
- package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +2 -2
- package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +6 -11
- package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +4 -8
- package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +8 -6
- package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +2 -2
- package/esm2022/lib/components/data-view/table/elder-table.module.mjs +57 -25
- package/esm2022/lib/components/data-view/table/model/elder-column-layout.mjs +7 -7
- package/esm2022/lib/components/data-view/table/model/elder-table-model-cdk-table-binding.mjs +15 -11
- package/esm2022/lib/components/data-view/table/model/elder-table-model-provider.mjs +4 -4
- package/esm2022/lib/components/data-view/table/model/elder-table-model-query-group.mjs +11 -9
- package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +7 -5
- package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +13 -3
- package/esm2022/lib/components/dialogs/elder-dialog-config.mjs +1 -1
- package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +34 -13
- package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +19 -22
- package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +17 -5
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +4 -5
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +5 -5
- package/esm2022/lib/components/errors/elder-error.module.mjs +4 -6
- package/esm2022/lib/components/errors/error-util.mjs +4 -4
- package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +17 -6
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +3 -3
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +15 -8
- package/esm2022/lib/components/files/blob-url.mjs +1 -1
- package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +16 -11
- package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +3 -3
- package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +4 -4
- package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +7 -7
- package/esm2022/lib/components/files/elder-file-select-input.mjs +3 -3
- package/esm2022/lib/components/files/elder-file-select.directive.mjs +14 -16
- package/esm2022/lib/components/files/elder-file.module.mjs +16 -10
- package/esm2022/lib/components/files/file-select/file-select.component.mjs +5 -6
- package/esm2022/lib/components/files/file-system-api.mjs +2 -2
- package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +16 -3
- package/esm2022/lib/components/files/listing/file-entry.mjs +3 -3
- package/esm2022/lib/components/files/listing/file-listing-rx.mjs +5 -5
- package/esm2022/lib/components/files/listing/file-listing-system-handle.mjs +3 -3
- package/esm2022/lib/components/files/listing/file-listing-webkit.mjs +10 -11
- package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +2 -2
- package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +1 -1
- package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +5 -3
- package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +2 -2
- package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +1 -1
- package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +2 -2
- package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +2 -2
- package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +2 -2
- package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +13 -6
- package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +5 -5
- package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +2 -2
- package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +2 -2
- package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +6 -6
- package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +2 -2
- package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +13 -10
- package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +2 -2
- package/esm2022/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +5 -3
- package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +2 -2
- package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +2 -2
- package/esm2022/lib/components/forms/directives/validation/strategies/fallback-validation-message-strategy.mjs +1 -1
- package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +4 -6
- package/esm2022/lib/components/forms/directives/validation/validation-message-strategy.mjs +1 -1
- package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +4 -9
- package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +4 -9
- package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +12 -11
- package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +4 -4
- package/esm2022/lib/components/forms/elder-forms.module.mjs +1 -1
- package/esm2022/lib/components/forms/public_api.mjs +1 -1
- package/esm2022/lib/components/forms/search/domain/context/search-context.mjs +7 -3
- package/esm2022/lib/components/forms/search/domain/context/search-context.service.mjs +2 -2
- package/esm2022/lib/components/forms/search/domain/input/input-value.mjs +1 -1
- package/esm2022/lib/components/forms/search/domain/input/search-input-state.mjs +2 -2
- package/esm2022/lib/components/forms/search/domain/input/search-input.mjs +1 -1
- package/esm2022/lib/components/forms/search/domain/input/simple-search-input.mjs +1 -1
- package/esm2022/lib/components/forms/search/domain/url/elder-search-url.directive.mjs +14 -8
- package/esm2022/lib/components/forms/search/domain/url/elder-search-url.service.mjs +15 -12
- package/esm2022/lib/components/forms/search/domain/url/search-query-params-parser.mjs +3 -3
- package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +30 -25
- package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +14 -19
- package/esm2022/lib/components/forms/search/elder-search.module.mjs +24 -13
- package/esm2022/lib/components/forms/search/filter/default-input-filter-converter.mjs +2 -4
- package/esm2022/lib/components/forms/search/filter/input-filter-converter.mjs +1 -1
- package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +27 -8
- package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +4 -4
- package/esm2022/lib/components/global-search/elder-global-search.component.mjs +19 -10
- package/esm2022/lib/components/global-search/elder-global-search.module.mjs +24 -6
- package/esm2022/lib/components/global-search/elder-global-search.service.mjs +8 -6
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +6 -6
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +4 -10
- package/esm2022/lib/components/graph/elder-progress-bar/sub-bar.mjs +1 -1
- package/esm2022/lib/components/graph/public_api.mjs +1 -1
- package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +3 -3
- package/esm2022/lib/components/headers/elder-header.module.mjs +12 -14
- package/esm2022/lib/components/http-support/elder-http-client.service.mjs +4 -9
- package/esm2022/lib/components/http-support/public_api.mjs +1 -1
- package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +3 -3
- package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +31 -20
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +14 -5
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +4 -4
- package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +42 -19
- package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +2 -2
- package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +4 -5
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +3 -3
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +2 -2
- package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +6 -6
- package/esm2022/lib/components/i18n/language/elder-language-config.mjs +1 -1
- package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +8 -7
- package/esm2022/lib/components/i18n/language/elder-language.module.mjs +11 -10
- package/esm2022/lib/components/i18n/language/elder-language.service.mjs +3 -4
- package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +17 -5
- package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +7 -7
- package/esm2022/lib/components/i18n/public_api.mjs +1 -1
- package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +13 -13
- package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +13 -11
- package/esm2022/lib/components/iframes/elder-iframe.module.mjs +4 -4
- package/esm2022/lib/components/iframes/iframe-close.directive.mjs +2 -3
- package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +3 -3
- package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +12 -4
- package/esm2022/lib/components/iframes/iframe-messages.mjs +1 -1
- package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +11 -9
- package/esm2022/lib/components/iframes/iframe.service.mjs +7 -5
- package/esm2022/lib/components/iframes/typed-event-message.mjs +1 -1
- package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +10 -6
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +12 -7
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +4 -10
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.mjs +1 -1
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-suggestion-panel.component.mjs +26 -17
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +11 -7
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +8 -6
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +9 -6
- package/esm2022/lib/components/input/autocomplete/many/word-position-finder.mjs +1 -1
- package/esm2022/lib/components/input/public_api.mjs +1 -1
- package/esm2022/lib/components/labels/elder-labels.module.mjs +26 -8
- package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +28 -11
- package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +22 -21
- package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +4 -4
- package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +2 -2
- package/esm2022/lib/components/measures/elder-measures.module.mjs +7 -19
- package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +2 -2
- package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +2 -2
- package/esm2022/lib/components/measures/elder-unit.service.mjs +4 -6
- package/esm2022/lib/components/measures/model/dimensions.mjs +1 -1
- package/esm2022/lib/components/measures/model/quantity.mjs +1 -1
- package/esm2022/lib/components/measures/model/unit-dimension.mjs +1 -1
- package/esm2022/lib/components/measures/model/unit-registry.mjs +1 -1
- package/esm2022/lib/components/measures/model/unit.mjs +1 -1
- package/esm2022/lib/components/measures/public_api.mjs +1 -1
- package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +13 -3
- package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +18 -16
- package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +4 -8
- package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +4 -8
- package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +15 -10
- package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +26 -6
- package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +12 -8
- package/esm2022/lib/components/navigation/bread-crumbs/path/path.mjs +1 -1
- package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +26 -20
- package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +15 -21
- package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +20 -7
- package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +3 -3
- package/esm2022/lib/components/navigation/public_api.mjs +1 -1
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +2 -2
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +26 -20
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +2 -2
- package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +12 -7
- package/esm2022/lib/components/navigation/toolbar/toolbar-column-position.mjs +1 -1
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +4 -5
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +5 -4
- package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +2 -2
- package/esm2022/lib/components/overlays/elder-overlay-ref.mjs +1 -1
- package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +3 -3
- package/esm2022/lib/components/overlays/elder-overlay.component.mjs +23 -14
- package/esm2022/lib/components/overlays/elder-overlay.module.mjs +4 -10
- package/esm2022/lib/components/page/exit-guard/page-exit-guard.module.mjs +5 -12
- package/esm2022/lib/components/page/exit-guard/page-exit-guard.service.mjs +6 -6
- package/esm2022/lib/components/page/exit-guard/page-exit-lock/page-exit-lock.component.mjs +3 -5
- package/esm2022/lib/components/page/exit-guard/page-exit-lock-indicator/page-exit-lock-indicator.component.mjs +3 -8
- package/esm2022/lib/components/page/exit-guard/page-exit-lock-overview/page-exit-lock-overview.component.mjs +3 -7
- package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +3 -3
- package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +3 -3
- package/esm2022/lib/components/panels/elder-panel.module.mjs +10 -7
- package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +4 -4
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +2 -2
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +6 -6
- package/esm2022/lib/components/public_api.mjs +1 -1
- package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +2 -2
- package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +2 -2
- package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +5 -8
- package/esm2022/lib/components/select/auto/elder-auto-select-first.service.mjs +1 -1
- package/esm2022/lib/components/select/auto/elder-auto-select-suggest-first.directive.mjs +7 -9
- package/esm2022/lib/components/select/auto/elder-select-first-util.mjs +7 -4
- package/esm2022/lib/components/select/elder-select-base.mjs +12 -13
- package/esm2022/lib/components/select/elder-select-chip.directive.mjs +4 -4
- package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +10 -5
- package/esm2022/lib/components/select/elder-select-value.directive.mjs +2 -2
- package/esm2022/lib/components/select/elder-select.module.mjs +65 -29
- package/esm2022/lib/components/select/filter/elder-chip-filter-style-resolver.mjs +9 -9
- package/esm2022/lib/components/select/filter/elder-chips-include-exclude.directive.mjs +19 -15
- package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +3 -3
- package/esm2022/lib/components/select/filter/include-exclude-model-filter-adapter.mjs +6 -8
- package/esm2022/lib/components/select/filter/include-exclude-selection-model.mjs +7 -11
- package/esm2022/lib/components/select/multi/elder-chip-select-option/elder-select-option.component.mjs +2 -3
- package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +29 -27
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/chip-options-provider.mjs +12 -10
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.mjs +40 -29
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/select-option-chip-spec.mjs +4 -4
- package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +41 -21
- package/esm2022/lib/components/select/multi/elder-multi-select-chips/select-chip-spec.mjs +4 -4
- package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +2 -2
- package/esm2022/lib/components/select/multi/elder-mutli-select-all-directive.mjs +7 -8
- package/esm2022/lib/components/select/multi/elder-search-include-exclude.directive.mjs +8 -10
- package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +7 -5
- package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +13 -13
- package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +15 -5
- package/esm2022/lib/components/select/public_api.mjs +1 -1
- package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +5 -3
- package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +39 -29
- package/esm2022/lib/components/select/single/elder-select-form-field.mjs +1 -1
- package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +11 -12
- package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +3 -5
- package/esm2022/lib/components/shell/drawers/drawer-outlet-binding.mjs +8 -4
- package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +6 -4
- package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +7 -7
- package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +2 -2
- package/esm2022/lib/components/shell/elder-shell.module.mjs +10 -7
- package/esm2022/lib/components/shell/elder-shell.service.mjs +6 -9
- package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +6 -6
- package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +34 -14
- package/esm2022/lib/components/shell/shell-content-slot.mjs +1 -1
- package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +5 -5
- package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +2 -2
- package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +12 -12
- package/esm2022/lib/components/tabs/elder-tab.module.mjs +4 -14
- package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +5 -6
- package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +3 -4
- package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +6 -7
- package/esm2022/lib/components/theme/elder-theme.directive.mjs +5 -3
- package/esm2022/lib/components/theme/elder-theme.module.mjs +9 -15
- package/esm2022/lib/components/theme/elder-theme.service.mjs +7 -9
- package/esm2022/lib/components/theme/known-elder-themes.mjs +1 -1
- package/esm2022/lib/components/theme/public_api.mjs +1 -1
- package/esm2022/lib/components/theme/theme-spec.mjs +3 -7
- package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +1 -1
- package/esm2022/lib/components/time/date-formats/locale-date-formats.mjs +2 -2
- package/esm2022/lib/components/time/duration/duration-bucket.mjs +3 -2
- package/esm2022/lib/components/time/duration/duration-format.mjs +1 -1
- package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +6 -12
- package/esm2022/lib/components/time/duration/iso-duration-str.mjs +1 -1
- package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +13 -7
- package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +7 -13
- package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +27 -27
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-binding.directive.mjs +1 -1
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.mjs +7 -14
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +5 -11
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.service.mjs +4 -9
- package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +22 -13
- package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +7 -13
- package/esm2022/lib/components/time/elder-time.module.mjs +29 -21
- package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +6 -12
- package/esm2022/lib/components/time/period/period-bucket.mjs +1 -1
- package/esm2022/lib/components/time/period/period-format.mjs +1 -1
- package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +2 -2
- package/esm2022/lib/components/time/public_api.mjs +1 -1
- package/esm2022/lib/components/toasts/elder-toast.module.mjs +18 -4
- package/esm2022/lib/components/toasts/elder-toast.service.mjs +9 -10
- package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +21 -14
- package/esm2022/lib/components/toasts/toast-type.mjs +1 -1
- package/esm2022/lib/components/toasts/toast.mjs +1 -1
- package/esm2022/lib/components/url-fragment/elder-url-fragment.mjs +1 -1
- package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +3 -5
- package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +16 -5
- package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +3 -4
- package/esm2022/lib/components/viewers/elder-viewers.module.mjs +4 -10
- package/esm2022/lib/features/event-source/fetch/public_api.mjs +1 -1
- package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.mjs +14 -14
- package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.service.mjs +2 -2
- package/esm2022/lib/features/event-source/public_api.mjs +1 -1
- package/esm2022/lib/features/event-source/standard/elder-event-source.service.mjs +2 -2
- package/esm2022/lib/features/event-source/standard/public_api.mjs +1 -1
- package/esm2022/lib/features/event-source/standard/reactive-event-source.mjs +8 -7
- package/esm2022/lib/features/kafent/access-token-provider.mjs +1 -1
- package/esm2022/lib/features/kafent/kafent-config.mjs +1 -1
- package/esm2022/lib/features/kafent/kafent-event-stream.mjs +1 -1
- package/esm2022/lib/features/kafent/kafent-event.mjs +1 -1
- package/esm2022/lib/features/kafent/kafent-event.service.mjs +16 -8
- package/esm2022/lib/features/kafent/kafent-live-event-request.mjs +1 -1
- package/esm2022/lib/features/kafent/kafent.module.mjs +10 -13
- package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +12 -9
- package/esm2022/lib/features/kafent/sse/kafent-topic-sse.mjs +2 -3
- package/esm2022/lib/features/public_api.mjs +1 -1
- package/esm2022/lib/pipes/bytes.pipe.mjs +2 -2
- package/esm2022/lib/pipes/elder-pipes.module.mjs +52 -8
- package/esm2022/lib/pipes/elder-repeat.pipe.mjs +2 -2
- package/esm2022/lib/pipes/elder-round.pipe.mjs +2 -2
- package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +2 -2
- package/esm2022/lib/pipes/elder-truncate.pipe.mjs +3 -3
- package/esm2022/lib/pipes/iso-duration.pipe.mjs +2 -2
- package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +4 -5
- package/esm2022/lib/pipes/iso-interval.pipe.mjs +2 -2
- package/esm2022/lib/pipes/public_api.mjs +1 -1
- package/esm2022/lib/pipes/time-ago.pipe.mjs +12 -7
- package/esm2022/lib/pipes/time-duration.pipe.mjs +6 -4
- package/esm2022/lib/pipes/weight.pipe.mjs +4 -3
- package/esm2022/public_api.mjs +1 -1
- package/fesm2022/elderbyte-ngx-starter.mjs +2928 -2310
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/common/arrays.d.ts +1 -1
- package/lib/common/data/data-context/data-context-active-page.d.ts +1 -1
- package/lib/common/data/data-context/data-context-base.d.ts +1 -1
- package/lib/common/data/data-context/data-context-builder.d.ts +2 -2
- package/lib/common/data/data-context/data-context-continuable-base.d.ts +1 -1
- package/lib/common/data/data-context/data-context-continuable-paged.d.ts +1 -1
- package/lib/common/data/data-context/data-context-continuable-token.d.ts +1 -1
- package/lib/common/data/data-context/data-context-simple.d.ts +1 -1
- package/lib/common/data/datasource/local/local-list-data-source.d.ts +3 -3
- package/lib/common/data/datasource/local/local-paged-data-source.d.ts +1 -1
- package/lib/common/json-map.d.ts +1 -1
- package/lib/common/selection/selection-model.d.ts +2 -2
- package/lib/common/time/interval.d.ts +4 -4
- package/lib/common/utils/collection-util.d.ts +1 -1
- package/lib/components/card-organizer/card-organizer-data.d.ts +3 -3
- package/lib/components/card-organizer/card-stack.d.ts +2 -2
- package/lib/components/data-view/base/elder-data-view-options-provider.d.ts +1 -1
- package/lib/components/data-view/common/elder-data-common.module.d.ts +1 -1
- package/lib/components/data-view/elder-data-view-interaction-mode.d.ts +2 -2
- package/lib/components/data-view/grid/elder-grid.module.d.ts +1 -1
- package/lib/components/forms/search/elder-search-input.directive.d.ts +1 -1
- package/lib/components/navigation/toolbar/elder-toolbar.module.d.ts +1 -1
- package/lib/components/navigation/toolbar/toolbar-column-position.d.ts +3 -3
- package/lib/components/select/elder-select.module.d.ts +1 -1
- package/lib/components/time/elder-interval-input/elder-interval-input.component.d.ts +4 -4
- package/package.json +1 -1
- package/src/assets/i18n/de.json +0 -1
- package/src/assets/i18n/en.json +0 -1
- package/src/lib/components/access-denied/elder-access-denied.component.scss +1 -5
- package/src/lib/components/auditing/audited-entity/elder-audited-entity.component.scss +0 -1
- package/src/lib/components/badge/elder-badge/elder-badge.component.scss +2 -7
- package/src/lib/components/card-organizer/card-organizer/elder-card-organizer.component.scss +0 -1
- package/src/lib/components/card-organizer/card-stack/elder-card-stack.component.scss +4 -14
- package/src/lib/components/cards/elder-card/elder-card.component.scss +3 -9
- package/src/lib/components/chips/_elder-chip-theme.scss +5 -9
- package/src/lib/components/containers/elder-scroll-container/elder-scroll-container.component.scss +0 -1
- package/src/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.scss +0 -1
- package/src/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.scss +0 -1
- package/src/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.scss +4 -5
- package/src/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.scss +1 -1
- package/src/lib/components/data-view/grid/elder-grid/elder-grid.component.scss +21 -13
- package/src/lib/components/data-view/table/elder-table/elder-table.component.scss +12 -21
- package/src/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.scss +2 -3
- package/src/lib/components/errors/exception-detail/elder-exception-detail.component.scss +2 -4
- package/src/lib/components/expand-toggle-button/elder-expand-toggle-button.component.scss +0 -4
- package/src/lib/components/files/blob-viewer/elder-blob-viewer.component.scss +2 -4
- package/src/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.scss +2 -7
- package/src/lib/components/forms/search/search-box/elder-search-box.component.scss +0 -2
- package/src/lib/components/global-search/elder-global-search.component.scss +1 -2
- package/src/lib/components/graph/elder-progress-bar/elder-progress-bar.component.scss +0 -1
- package/src/lib/components/iframes/iframe-host/iframe-host.component.scss +0 -1
- package/src/lib/components/labels/labels-input/labels-input.component.scss +0 -2
- package/src/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.scss +0 -2
- package/src/lib/components/navigation/nav/_elder-nav-theme.scss +4 -8
- package/src/lib/components/navigation/nav/nav-group/elder-nav-group.component.scss +6 -6
- package/src/lib/components/navigation/nav/nav-list/elder-nav-list.component.scss +0 -1
- package/src/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.scss +1 -2
- package/src/lib/components/panels/card-panel/elder-card-panel.component.scss +0 -3
- package/src/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.scss +0 -1
- package/src/lib/components/panels/flat/_elder-panel-theme.scss +0 -2
- package/src/lib/components/panels/flat/elder-panel.component.scss +1 -2
- package/src/lib/components/select/_elder-select-base.scss +0 -1
- package/src/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.scss +7 -7
- package/src/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.scss +3 -4
- package/src/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.scss +7 -7
- package/src/lib/components/select/single/elder-select/elder-select.component.scss +1 -1
- package/src/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.scss +2 -3
- package/src/lib/components/shell/header/elder-app-header/elder-app-header.component.scss +1 -2
- package/src/lib/components/shell/shell/elder-shell.component.scss +0 -1
- package/src/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.scss +1 -2
- package/src/lib/components/time/_elder-time-input.theme.scss +2 -2
- package/src/lib/components/time/duration/elder-duration-input/elder-duration-input.component.scss +0 -4
- package/src/lib/components/time/elder-date-time-input/elder-date-time-input.component.scss +1 -3
- package/src/lib/components/time/elder-interval-input/elder-interval-input.component.scss +0 -1
- package/src/lib/components/time/elder-local-date-input/elder-local-date-input.component.scss +2 -5
- package/src/lib/components/time/period/elder-period-input/elder-period-input.component.scss +0 -4
- package/src/lib/components/toasts/standard-toast/standard-toast.component.scss +0 -1
- package/src/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.scss +0 -5
- package/src/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.scss +0 -1
- package/theming/_elder-common.scss +10 -11
- package/theming/_elder-defaults.scss +2 -4
- package/theming/_elder-flex-layout.scss +7 -8
- package/theming/_elder-mdc-support.scss +22 -19
- package/theming/_elder-palettes.scss +28 -25
- package/theming/_elder-scrollbar-theme.scss +0 -2
- package/theming/_elder-style-fixes.scss +10 -7
- package/theming/_elder-theme.scss +6 -1
- package/theming/_elder-toast-theme.scss +0 -2
- package/theming/_mat-icon-button-size.scss +3 -2
- package/theming/_mixins.scss +11 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input, Optional, Output, Self, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, Optional, Output, Self, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
2
2
|
import { ElderFormFieldControlBase } from '../../../../common/forms/elder-form-field-control-base.directive';
|
|
3
3
|
import { Quantity } from '../../model/quantity';
|
|
4
4
|
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
@@ -40,7 +40,7 @@ export class ElderQuantityInputControlComponent extends ElderFormFieldControlBas
|
|
|
40
40
|
this.displayFormat = null;
|
|
41
41
|
this.afterInit = false;
|
|
42
42
|
this._hideUnit = false;
|
|
43
|
-
this.unitSymbol$ = this.value$.pipe(map(v => v?.unit), map(unit => {
|
|
43
|
+
this.unitSymbol$ = this.value$.pipe(map((v) => v?.unit), map((unit) => {
|
|
44
44
|
if (unit) {
|
|
45
45
|
return this.unitService.getUnitSymbol(unit);
|
|
46
46
|
}
|
|
@@ -49,13 +49,13 @@ export class ElderQuantityInputControlComponent extends ElderFormFieldControlBas
|
|
|
49
49
|
}
|
|
50
50
|
}));
|
|
51
51
|
this.formattedValue$ = combineLatest([
|
|
52
|
-
this.quantityInput$.pipe(filter(input => !!input)),
|
|
53
|
-
this.value
|
|
52
|
+
this.quantityInput$.pipe(filter((input) => !!input)),
|
|
53
|
+
this.value$,
|
|
54
54
|
]).pipe(map(([input, quantity]) => {
|
|
55
55
|
const qtyValue = quantity?.value;
|
|
56
56
|
if (!input?.focused && this.displayFormat && qtyValue) {
|
|
57
57
|
return formatNumber(qtyValue, 'en', this.displayFormat)
|
|
58
|
-
.replace('
|
|
58
|
+
.replace("'", '')
|
|
59
59
|
.replace('’', '')
|
|
60
60
|
.replace(',', '');
|
|
61
61
|
}
|
|
@@ -82,7 +82,7 @@ export class ElderQuantityInputControlComponent extends ElderFormFieldControlBas
|
|
|
82
82
|
this.quantityInput$.next(input);
|
|
83
83
|
}
|
|
84
84
|
get quantityValueChange() {
|
|
85
|
-
return this.valueChange.pipe(map(q => q?.value));
|
|
85
|
+
return this.valueChange.pipe(map((q) => q?.value));
|
|
86
86
|
}
|
|
87
87
|
get quantityValue() {
|
|
88
88
|
return this.value?.value;
|
|
@@ -104,7 +104,7 @@ export class ElderQuantityInputControlComponent extends ElderFormFieldControlBas
|
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
get unitChange() {
|
|
107
|
-
return this.valueChange.pipe(map(q => q?.unit));
|
|
107
|
+
return this.valueChange.pipe(map((q) => q?.unit));
|
|
108
108
|
}
|
|
109
109
|
get unit() {
|
|
110
110
|
return this.value?.unit;
|
|
@@ -138,19 +138,21 @@ export class ElderQuantityInputControlComponent extends ElderFormFieldControlBas
|
|
|
138
138
|
if (a === b) {
|
|
139
139
|
return true;
|
|
140
140
|
}
|
|
141
|
-
return a?.value === b?.value
|
|
142
|
-
&& a?.unit === b?.unit;
|
|
141
|
+
return a?.value === b?.value && a?.unit === b?.unit;
|
|
143
142
|
}
|
|
144
143
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderQuantityInputControlComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.NgControl, optional: true, self: true }, { token: i4.ElderUnitService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
145
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: ElderQuantityInputControlComponent, isStandalone: true, selector: "elder-quantity-input", inputs: { displayFormat: "displayFormat", quantityValue: "quantityValue", unit: "unit", hideUnit: "hideUnit" }, outputs: { quantityValueChange: "quantityValueChange", unitChange: "unitChange" }, providers: [
|
|
146
|
-
{ provide: MatFormFieldControl, useExisting: ElderQuantityInputControlComponent },
|
|
147
|
-
], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }, { propertyName: "quantityInput", first: true, predicate: ["quantityMatInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"layout-row place-start-baseline elder-flex-control\"\n>\n <input #input\n matInput type=\"number\" elderNoSpinner\n #quantityMatInput=\"matInput\"\n class=\"flex-grow elder-quantity-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [readonly]=\"readonly\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"formattedValue$ | async\" [ngModelOptions]=\"{standalone: true, updateOn: 'change'}\"\n (ngModelChange)=\"onQuantityValueChanged($event)\"\n >\n <span *ngIf=\"!hideUnit\" class=\"mat-small elder-quantity-unit\">{{unitSymbol$ | async}}</span>\n</div>\n", styles: [".elder-quantity-input{text-align:right}.elder-quantity-unit{margin-left:4px}\n"], dependencies: [{ kind: "directive", type: 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: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
144
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: ElderQuantityInputControlComponent, isStandalone: true, selector: "elder-quantity-input", inputs: { displayFormat: "displayFormat", quantityValue: "quantityValue", unit: "unit", hideUnit: "hideUnit" }, outputs: { quantityValueChange: "quantityValueChange", unitChange: "unitChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderQuantityInputControlComponent }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }, { propertyName: "quantityInput", first: true, predicate: ["quantityMatInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n #input\n matInput\n type=\"number\"\n elderNoSpinner\n #quantityMatInput=\"matInput\"\n class=\"flex-grow elder-quantity-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [readonly]=\"readonly\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"formattedValue$ | async\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'change' }\"\n (ngModelChange)=\"onQuantityValueChanged($event)\"\n />\n <span *ngIf=\"!hideUnit\" class=\"mat-small elder-quantity-unit\">{{ unitSymbol$ | async }}</span>\n</div>\n", styles: [".elder-quantity-input{text-align:right}.elder-quantity-unit{margin-left:4px}\n"], dependencies: [{ kind: "directive", type: 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: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
148
145
|
}
|
|
149
146
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderQuantityInputControlComponent, decorators: [{
|
|
150
147
|
type: Component,
|
|
151
|
-
args: [{ selector: 'elder-quantity-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
152
|
-
|
|
153
|
-
|
|
148
|
+
args: [{ selector: 'elder-quantity-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MatFormFieldControl, useExisting: ElderQuantityInputControlComponent }], standalone: true, imports: [
|
|
149
|
+
MatInput,
|
|
150
|
+
FormsModule,
|
|
151
|
+
ElderFormFieldNoSpinnerDirective,
|
|
152
|
+
NgIf,
|
|
153
|
+
AsyncPipe,
|
|
154
|
+
TranslateModule,
|
|
155
|
+
], template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n #input\n matInput\n type=\"number\"\n elderNoSpinner\n #quantityMatInput=\"matInput\"\n class=\"flex-grow elder-quantity-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [readonly]=\"readonly\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"formattedValue$ | async\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'change' }\"\n (ngModelChange)=\"onQuantityValueChanged($event)\"\n />\n <span *ngIf=\"!hideUnit\" class=\"mat-small elder-quantity-unit\">{{ unitSymbol$ | async }}</span>\n</div>\n", styles: [".elder-quantity-input{text-align:right}.elder-quantity-unit{margin-left:4px}\n"] }]
|
|
154
156
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.FocusMonitor }, { type: i2.TranslateService }, { type: i3.NgControl, decorators: [{
|
|
155
157
|
type: Optional
|
|
156
158
|
}, {
|
|
@@ -174,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
|
|
|
174
176
|
}], hideUnit: [{
|
|
175
177
|
type: Input
|
|
176
178
|
}] } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHktaW5wdXQtY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL21lYXN1cmVzL3F1YW50aXR5LWlucHV0L3F1YW50aXR5LWlucHV0LWNvbnRyb2wvZWxkZXItcXVhbnRpdHktaW5wdXQtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL21lYXN1cmVzL3F1YW50aXR5LWlucHV0L3F1YW50aXR5LWlucHV0LWNvbnRyb2wvZWxkZXItcXVhbnRpdHktaW5wdXQtY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxrRUFBa0UsQ0FBQztBQUMzRyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLFdBQVcsRUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxN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O2tCQVo5QyxTQUFTOytCQUNJLHNCQUFzQixpQkFHakIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCxFQUFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLG9DQUFvQyxFQUFDO3FCQUNsRixjQUNXLElBQUksV0FDUCxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsZ0NBQWdDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUM7OzBCQTRDbkcsUUFBUTs7MEJBQUksSUFBSTt3RUEvQlosUUFBUTtzQkFEZCxTQUFTO3VCQUFDLE9BQU87Z0JBU1gsYUFBYTtzQkFEbkIsS0FBSztnQkFvRkssYUFBYTtzQkFEdkIsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBTWxCLG1CQUFtQjtzQkFEN0IsTUFBTTtnQkFZSSxhQUFhO3NCQUR2QixLQUFLO2dCQVVLLElBQUk7c0JBRGQsS0FBSztnQkFVSyxVQUFVO3NCQURwQixNQUFNO2dCQVlJLFFBQVE7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VsZGVyRm9ybUZpZWxkQ29udHJvbEJhc2V9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9mb3Jtcy9lbGRlci1mb3JtLWZpZWxkLWNvbnRyb2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtRdWFudGl0eX0gZnJvbSAnLi4vLi4vbW9kZWwvcXVhbnRpdHknO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0ZvY3VzTW9uaXRvcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZSwgTmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hdEZvcm1GaWVsZENvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtFbGRlclVuaXRTZXJ2aWNlfSBmcm9tICcuLi8uLi9lbGRlci11bml0LnNlcnZpY2UnO1xuaW1wb3J0IHtBc3luY1BpcGUsIGZvcm1hdE51bWJlciwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7VW5pdH0gZnJvbSAnLi4vLi4vbW9kZWwvdW5pdCc7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtFbGRlckZvcm1GaWVsZE5vU3Bpbm5lckRpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vLi4vZm9ybXMvZGlyZWN0aXZlcy9lbGRlci1mb3JtLWZpZWxkLW5vLXNwaW5uZXIuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlbGRlci1xdWFudGl0eS1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLXF1YW50aXR5LWlucHV0LWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2VsZGVyLXF1YW50aXR5LWlucHV0LWNvbnRyb2wuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7cHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IEVsZGVyUXVhbnRpdHlJbnB1dENvbnRyb2xDb21wb25lbnR9LFxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTWF0SW5wdXQsIEZvcm1zTW9kdWxlLCBFbGRlckZvcm1GaWVsZE5vU3Bpbm5lckRpcmVjdGl2ZSwgTmdJZiwgQXN5bmNQaXBlLCBUcmFuc2xhdGVNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyUXVhbnRpdHlJbnB1dENvbnRyb2xDb21wb25lbnQgZXh0ZW5kcyBFbGRlckZvcm1GaWVsZENvbnRyb2xCYXNlPFF1YW50aXR5PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JylcbiAgcHVibGljIGlucHV0UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IHF1YW50aXR5SW5wdXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXRJbnB1dD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIERpc3BsYXkgZm9ybWF0IGZvciB0aGUgcXVhbnRpdHkgdmFsdWU6XG4gICAqIHttaW5JbnRlZ2VyRGlnaXRzfS57bWluRnJhY3Rpb25EaWdpdHN9LXttYXhGcmFjdGlvbkRpZ2l0c31cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNwbGF5Rm9ybWF0OiBzdHJpbmcgPSBudWxsO1xuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtYXR0ZWRWYWx1ZSQ6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVtYmVyPjtcblxuICBwdWJsaWMgcmVhZG9ubHkgdW5pdFN5bWJvbCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBwcml2YXRlIGFmdGVySW5pdCA9IGZhbHNlO1xuICBwcml2YXRlIGluaXRpYWxVbml0OiBVbml0O1xuICBwcml2YXRlIGluaXRpYWxRdHlWYWx1ZTogbnVtYmVyO1xuXG4gIHByaXZhdGUgX2hpZGVVbml0ID0gZmFsc2U7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgaG9zdFJlZjogRWxlbWVudFJlZixcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVuaXRTZXJ2aWNlOiBFbGRlclVuaXRTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGhvc3RSZWYsXG4gICAgICAncXVhbnRpdHktaW5wdXQnLFxuICAgICAgZm9jdXNNb25pdG9yLFxuICAgICAgdHJhbnNsYXRlU2VydmljZSxcbiAgICAgIG5nQ29udHJvbFxuICAgICk7XG5cbiAgICB0aGlzLnVuaXRTeW1ib2wkID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICAgIG1hcCh2ID0+IHY/LnVuaXQpLFxuICAgICAgbWFwKHVuaXQgPT4ge1xuICAgICAgICBpZiAodW5pdCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnVuaXRTZXJ2aWNlLmdldFVuaXRTeW1ib2wodW5pdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmZvcm1hdHRlZFZhbHVlJCA9IGNvbWJpbmVMYXRlc3QoXG4gICAgICBbXG4gICAgICAgIHRoaXMucXVhbnRpdHlJbnB1dCQucGlwZShmaWx0ZXIoaW5wdXQgPT4gISFpbnB1dCkpLFxuICAgICAgICB0aGlzLnZhbHVlJFxuICAgICAgXVxuICAgICkucGlwZShcbiAgICAgIG1hcCgoW2lucHV0LCBxdWFudGl0eV0pID0+IHtcbiAgICAgICAgY29uc3QgcXR5VmFsdWUgPSBxdWFudGl0eT8udmFsdWU7XG4gICAgICAgIGlmICghaW5wdXQ/LmZvY3VzZWQgJiYgdGhpcy5kaXNwbGF5Rm9ybWF0ICYmIHF0eVZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlcihxdHlWYWx1ZSwgJ2VuJywgdGhpcy5kaXNwbGF5Rm9ybWF0KVxuICAgICAgICAgICAgLnJlcGxhY2UoJ1xcJycsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UoJ+KAmScsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UoJywnLCAnJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHF0eVZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IFF1YW50aXR5LmZyb20odGhpcy5pbml0aWFsVW5pdCwgdGhpcy5pbml0aWFsUXR5VmFsdWUpO1xuICAgIHRoaXMuYWZ0ZXJJbml0ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBWaWV3Q2hpbGQoJ3F1YW50aXR5TWF0SW5wdXQnKVxuICBwdWJsaWMgc2V0IHF1YW50aXR5SW5wdXQoaW5wdXQ6IE1hdElucHV0KSB7XG4gICAgdGhpcy5xdWFudGl0eUlucHV0JC5uZXh0KGlucHV0KTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IHF1YW50aXR5VmFsdWVDaGFuZ2UoKTogT2JzZXJ2YWJsZTxudW1iZXIgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVDaGFuZ2UucGlwZShcbiAgICAgIG1hcChxID0+IHE/LnZhbHVlKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1YW50aXR5VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZT8udmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHF1YW50aXR5VmFsdWUocXVhbnRpdHlWYWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuYWZ0ZXJJbml0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gUXVhbnRpdHkuZnJvbSh0aGlzLnZhbHVlPy51bml0LCBxdWFudGl0eVZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsUXR5VmFsdWUgPSBxdWFudGl0eVZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdW5pdCh1bml0OiBVbml0KSB7XG4gICAgaWYgKHRoaXMuYWZ0ZXJJbml0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gUXVhbnRpdHkuZnJvbSh1bml0LCB0aGlzLnZhbHVlPy52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdGlhbFVuaXQgPSB1bml0O1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IHVuaXRDaGFuZ2UoKTogT2JzZXJ2YWJsZTxVbml0IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlQ2hhbmdlLnBpcGUoXG4gICAgICBtYXAocSA9PiBxPy51bml0KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHVuaXQoKTogVW5pdCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU/LnVuaXQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGhpZGVVbml0KGhpZGU6IEJvb2xlYW5JbnB1dCl7XG4gICAgdGhpcy5faGlkZVVuaXQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoaGlkZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhpZGVVbml0KCl7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGVVbml0O1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG9uUXVhbnRpdHlWYWx1ZUNoYW5nZWQodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVmFsdWUoUXVhbnRpdHkuZnJvbSh0aGlzLnZhbHVlPy51bml0LCB2YWx1ZSkpO1xuICB9XG5cbiAgcHVibGljIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uYmx1cigpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKG9wdGlvbnM6IEZvY3VzT3B0aW9ucyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEludGVybmFsIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJvdGVjdGVkIHZhbHVlc0VxdWFscyhhOiBRdWFudGl0eSwgYjogUXVhbnRpdHkpOiBib29sZWFuIHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBhPy52YWx1ZSA9PT0gYj8udmFsdWVcbiAgICAgICYmIGE/LnVuaXQgPT09IGI/LnVuaXQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJsYXlvdXQtcm93IHBsYWNlLXN0YXJ0LWJhc2VsaW5lIGVsZGVyLWZsZXgtY29udHJvbFwiXG4+XG4gIDxpbnB1dCAjaW5wdXRcbiAgICAgICAgIG1hdElucHV0IHR5cGU9XCJudW1iZXJcIiBlbGRlck5vU3Bpbm5lclxuICAgICAgICAgI3F1YW50aXR5TWF0SW5wdXQ9XCJtYXRJbnB1dFwiXG4gICAgICAgICBjbGFzcz1cImZsZXgtZ3JvdyBlbGRlci1xdWFudGl0eS1pbnB1dCBtZGMtdGV4dC1maWVsZF9faW5wdXRcIlxuICAgICAgICAgW2Rpc2FibGVkXT1cIiEhZGlzYWJsZWRcIlxuICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgIFtuYW1lXT1cIm5nQ29udHJvbD8ubmFtZSArICctaW5uZXItaW5wdXQnXCJcbiAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICBbbmdNb2RlbF09XCJmb3JtYXR0ZWRWYWx1ZSQgfCBhc3luY1wiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZSwgdXBkYXRlT246ICdjaGFuZ2UnfVwiXG4gICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblF1YW50aXR5VmFsdWVDaGFuZ2VkKCRldmVudClcIlxuICA+XG4gIDxzcGFuICpuZ0lmPVwiIWhpZGVVbml0XCIgY2xhc3M9XCJtYXQtc21hbGwgZWxkZXItcXVhbnRpdHktdW5pdFwiPnt7dW5pdFN5bWJvbCQgfCBhc3luY319PC9zcGFuPlxuPC9kaXY+XG4iXX0=
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHktaW5wdXQtY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL21lYXN1cmVzL3F1YW50aXR5LWlucHV0L3F1YW50aXR5LWlucHV0LWNvbnRyb2wvZWxkZXItcXVhbnRpdHktaW5wdXQtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL21lYXN1cmVzL3F1YW50aXR5LWlucHV0L3F1YW50aXR5LWlucHV0LWNvbnRyb2wvZWxkZXItcXVhbnRpdHktaW5wdXQtY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQTtBQUM1RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0scUJBQXFCLENBQUE7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxN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Q1QsZUFBZTs7MkZBR04sa0NBQWtDO2tCQWpCOUMsU0FBUzsrQkFDRSxzQkFBc0IsaUJBR2pCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLG9DQUFvQyxFQUFFLENBQUMsY0FDbEYsSUFBSSxXQUNQO3dCQUNQLFFBQVE7d0JBQ1IsV0FBVzt3QkFDWCxnQ0FBZ0M7d0JBQ2hDLElBQUk7d0JBQ0osU0FBUzt3QkFDVCxlQUFlO3FCQUNoQjs7MEJBOENFLFFBQVE7OzBCQUFJLElBQUk7d0VBL0JaLFFBQVE7c0JBRGQsU0FBUzt1QkFBQyxPQUFPO2dCQVNYLGFBQWE7c0JBRG5CLEtBQUs7Z0JBNEVLLGFBQWE7c0JBRHZCLFNBQVM7dUJBQUMsa0JBQWtCO2dCQU1sQixtQkFBbUI7c0JBRDdCLE1BQU07Z0JBVUksYUFBYTtzQkFEdkIsS0FBSztnQkFVSyxJQUFJO3NCQURkLEtBQUs7Z0JBVUssVUFBVTtzQkFEcEIsTUFBTTtnQkFVSSxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRWxkZXJGb3JtRmllbGRDb250cm9sQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9mb3Jtcy9lbGRlci1mb3JtLWZpZWxkLWNvbnRyb2wtYmFzZS5kaXJlY3RpdmUnXG5pbXBvcnQgeyBRdWFudGl0eSB9IGZyb20gJy4uLy4uL21vZGVsL3F1YW50aXR5J1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJ1xuaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IEVsZGVyVW5pdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbGRlci11bml0LnNlcnZpY2UnXG5pbXBvcnQgeyBBc3luY1BpcGUsIGZvcm1hdE51bWJlciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnXG5pbXBvcnQgeyBVbml0IH0gZnJvbSAnLi4vLi4vbW9kZWwvdW5pdCdcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHsgRWxkZXJGb3JtRmllbGROb1NwaW5uZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9mb3Jtcy9kaXJlY3RpdmVzL2VsZGVyLWZvcm0tZmllbGQtbm8tc3Bpbm5lci5kaXJlY3RpdmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLXF1YW50aXR5LWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLXF1YW50aXR5LWlucHV0LWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbGRlci1xdWFudGl0eS1pbnB1dC1jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBFbGRlclF1YW50aXR5SW5wdXRDb250cm9sQ29tcG9uZW50IH1dLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0SW5wdXQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRWxkZXJGb3JtRmllbGROb1NwaW5uZXJEaXJlY3RpdmUsXG4gICAgTmdJZixcbiAgICBBc3luY1BpcGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFbGRlclF1YW50aXR5SW5wdXRDb250cm9sQ29tcG9uZW50XG4gIGV4dGVuZHMgRWxkZXJGb3JtRmllbGRDb250cm9sQmFzZTxRdWFudGl0eT5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICBwdWJsaWMgaW5wdXRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cbiAgcHJpdmF0ZSByZWFkb25seSBxdWFudGl0eUlucHV0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF0SW5wdXQ+KG51bGwpXG5cbiAgLyoqXG4gICAqIERpc3BsYXkgZm9ybWF0IGZvciB0aGUgcXVhbnRpdHkgdmFsdWU6XG4gICAqIHttaW5JbnRlZ2VyRGlnaXRzfS57bWluRnJhY3Rpb25EaWdpdHN9LXttYXhGcmFjdGlvbkRpZ2l0c31cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNwbGF5Rm9ybWF0OiBzdHJpbmcgPSBudWxsXG5cbiAgcHVibGljIHJlYWRvbmx5IGZvcm1hdHRlZFZhbHVlJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudW1iZXI+XG5cbiAgcHVibGljIHJlYWRvbmx5IHVuaXRTeW1ib2wkOiBPYnNlcnZhYmxlPHN0cmluZz5cblxuICBwcml2YXRlIGFmdGVySW5pdCA9IGZhbHNlXG4gIHByaXZhdGUgaW5pdGlhbFVuaXQ6IFVuaXRcbiAgcHJpdmF0ZSBpbml0aWFsUXR5VmFsdWU6IG51bWJlclxuXG4gIHByaXZhdGUgX2hpZGVVbml0ID0gZmFsc2VcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBob3N0UmVmOiBFbGVtZW50UmVmLFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdW5pdFNlcnZpY2U6IEVsZGVyVW5pdFNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoaG9zdFJlZiwgJ3F1YW50aXR5LWlucHV0JywgZm9jdXNNb25pdG9yLCB0cmFuc2xhdGVTZXJ2aWNlLCBuZ0NvbnRyb2wpXG5cbiAgICB0aGlzLnVuaXRTeW1ib2wkID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICAgIG1hcCgodikgPT4gdj8udW5pdCksXG4gICAgICBtYXAoKHVuaXQpID0+IHtcbiAgICAgICAgaWYgKHVuaXQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy51bml0U2VydmljZS5nZXRVbml0U3ltYm9sKHVuaXQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICcnXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuXG4gICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMucXVhbnRpdHlJbnB1dCQucGlwZShmaWx0ZXIoKGlucHV0KSA9PiAhIWlucHV0KSksXG4gICAgICB0aGlzLnZhbHVlJCxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbaW5wdXQsIHF1YW50aXR5XSkgPT4ge1xuICAgICAgICBjb25zdCBxdHlWYWx1ZSA9IHF1YW50aXR5Py52YWx1ZVxuICAgICAgICBpZiAoIWlucHV0Py5mb2N1c2VkICYmIHRoaXMuZGlzcGxheUZvcm1hdCAmJiBxdHlWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXIocXR5VmFsdWUsICdlbicsIHRoaXMuZGlzcGxheUZvcm1hdClcbiAgICAgICAgICAgIC5yZXBsYWNlKFwiJ1wiLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKCfigJknLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKCcsJywgJycpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHF0eVZhbHVlXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBRdWFudGl0eS5mcm9tKHRoaXMuaW5pdGlhbFVuaXQsIHRoaXMuaW5pdGlhbFF0eVZhbHVlKVxuICAgIHRoaXMuYWZ0ZXJJbml0ID0gdHJ1ZVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQFZpZXdDaGlsZCgncXVhbnRpdHlNYXRJbnB1dCcpXG4gIHB1YmxpYyBzZXQgcXVhbnRpdHlJbnB1dChpbnB1dDogTWF0SW5wdXQpIHtcbiAgICB0aGlzLnF1YW50aXR5SW5wdXQkLm5leHQoaW5wdXQpXG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBxdWFudGl0eVZhbHVlQ2hhbmdlKCk6IE9ic2VydmFibGU8bnVtYmVyIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlQ2hhbmdlLnBpcGUobWFwKChxKSA9PiBxPy52YWx1ZSkpXG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1YW50aXR5VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZT8udmFsdWVcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcXVhbnRpdHlWYWx1ZShxdWFudGl0eVZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5hZnRlckluaXQpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBRdWFudGl0eS5mcm9tKHRoaXMudmFsdWU/LnVuaXQsIHF1YW50aXR5VmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdGlhbFF0eVZhbHVlID0gcXVhbnRpdHlWYWx1ZVxuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdW5pdCh1bml0OiBVbml0KSB7XG4gICAgaWYgKHRoaXMuYWZ0ZXJJbml0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gUXVhbnRpdHkuZnJvbSh1bml0LCB0aGlzLnZhbHVlPy52YWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsVW5pdCA9IHVuaXRcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCB1bml0Q2hhbmdlKCk6IE9ic2VydmFibGU8VW5pdCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZUNoYW5nZS5waXBlKG1hcCgocSkgPT4gcT8udW5pdCkpXG4gIH1cblxuICBwdWJsaWMgZ2V0IHVuaXQoKTogVW5pdCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU/LnVuaXRcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaGlkZVVuaXQoaGlkZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5faGlkZVVuaXQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoaGlkZSlcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGlkZVVuaXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGVVbml0XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgb25RdWFudGl0eVZhbHVlQ2hhbmdlZCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZShRdWFudGl0eS5mcm9tKHRoaXMudmFsdWU/LnVuaXQsIHZhbHVlKSlcbiAgfVxuXG4gIHB1YmxpYyBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmJsdXIoKVxuICB9XG5cbiAgcHVibGljIGZvY3VzKG9wdGlvbnM6IEZvY3VzT3B0aW9ucyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKG9wdGlvbnMpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogSW50ZXJuYWwgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcm90ZWN0ZWQgdmFsdWVzRXF1YWxzKGE6IFF1YW50aXR5LCBiOiBRdWFudGl0eSk6IGJvb2xlYW4ge1xuICAgIGlmIChhID09PSBiKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gYT8udmFsdWUgPT09IGI/LnZhbHVlICYmIGE/LnVuaXQgPT09IGI/LnVuaXRcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2Utc3RhcnQtYmFzZWxpbmUgZWxkZXItZmxleC1jb250cm9sXCI+XG4gIDxpbnB1dFxuICAgICNpbnB1dFxuICAgIG1hdElucHV0XG4gICAgdHlwZT1cIm51bWJlclwiXG4gICAgZWxkZXJOb1NwaW5uZXJcbiAgICAjcXVhbnRpdHlNYXRJbnB1dD1cIm1hdElucHV0XCJcbiAgICBjbGFzcz1cImZsZXgtZ3JvdyBlbGRlci1xdWFudGl0eS1pbnB1dCBtZGMtdGV4dC1maWVsZF9faW5wdXRcIlxuICAgIFtkaXNhYmxlZF09XCIhIWRpc2FibGVkXCJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIFtuYW1lXT1cIm5nQ29udHJvbD8ubmFtZSArICctaW5uZXItaW5wdXQnXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAgIFtuZ01vZGVsXT1cImZvcm1hdHRlZFZhbHVlJCB8IGFzeW5jXCJcbiAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlLCB1cGRhdGVPbjogJ2NoYW5nZScgfVwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25RdWFudGl0eVZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgLz5cbiAgPHNwYW4gKm5nSWY9XCIhaGlkZVVuaXRcIiBjbGFzcz1cIm1hdC1zbWFsbCBlbGRlci1xdWFudGl0eS11bml0XCI+e3sgdW5pdFN5bWJvbCQgfCBhc3luYyB9fTwvc3Bhbj5cbjwvZGl2PlxuIl19
|
package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs
CHANGED
|
@@ -65,9 +65,7 @@ export class ElderQuantityRangeValidator {
|
|
|
65
65
|
return quantity?.value <= maxValue;
|
|
66
66
|
}
|
|
67
67
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderQuantityRangeValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
68
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: ElderQuantityRangeValidator, isStandalone: true, selector: "elder-quantity-input[min][formControl],elder-quantity-input[min][formControlName],elder-quantity-input[min][ngModel],elder-quantity-input[max][formControl],elder-quantity-input[max][formControlName],elder-quantity-input[max][ngModel]", inputs: { min: "min", max: "max" }, providers: [
|
|
69
|
-
{ provide: NG_VALIDATORS, useExisting: ElderQuantityRangeValidator, multi: true }
|
|
70
|
-
], ngImport: i0 }); }
|
|
68
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: ElderQuantityRangeValidator, isStandalone: true, selector: "elder-quantity-input[min][formControl],elder-quantity-input[min][formControlName],elder-quantity-input[min][ngModel],elder-quantity-input[max][formControl],elder-quantity-input[max][formControlName],elder-quantity-input[max][ngModel]", inputs: { min: "min", max: "max" }, providers: [{ provide: NG_VALIDATORS, useExisting: ElderQuantityRangeValidator, multi: true }], ngImport: i0 }); }
|
|
71
69
|
}
|
|
72
70
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderQuantityRangeValidator, decorators: [{
|
|
73
71
|
type: Directive,
|
|
@@ -75,14 +73,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
|
|
|
75
73
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
76
74
|
selector: 'elder-quantity-input[min][formControl],elder-quantity-input[min][formControlName],elder-quantity-input[min][ngModel],' +
|
|
77
75
|
'elder-quantity-input[max][formControl],elder-quantity-input[max][formControlName],elder-quantity-input[max][ngModel]',
|
|
78
|
-
providers: [
|
|
79
|
-
|
|
80
|
-
],
|
|
81
|
-
standalone: true
|
|
76
|
+
providers: [{ provide: NG_VALIDATORS, useExisting: ElderQuantityRangeValidator, multi: true }],
|
|
77
|
+
standalone: true,
|
|
82
78
|
}]
|
|
83
79
|
}], propDecorators: { min: [{
|
|
84
80
|
type: Input
|
|
85
81
|
}], max: [{
|
|
86
82
|
type: Input
|
|
87
83
|
}] } });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHktcmFuZ2UudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9tZWFzdXJlcy9xdWFudGl0eS1pbnB1dC92YWxpZGF0aW9uL2VsZGVyLXF1YW50aXR5LXJhbmdlLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDcEQsT0FBTyxFQUFtQixhQUFhLEVBQStCLE1BQU0sZ0JBQWdCLENBQUE7QUFFNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFlLE1BQU0sdUJBQXVCLENBQUE7O0FBVXpFLGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8sMkJBQTJCO0lBVHhDO1FBVUU7Ozs7b0ZBSTRFO1FBRTNELFFBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7S0FzRXRFO0lBakVDOzs7O2dGQUk0RTtJQUU1RSwrQ0FBK0M7SUFFL0M7O09BRUc7SUFDSCxJQUNXLEdBQUcsQ0FBQyxLQUFrQjtRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUE7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDVyxHQUFHLENBQUMsS0FBa0I7UUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBO0lBQ2xCLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsUUFBUSxDQUFDLENBQWtCO1FBQ2hDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUNmLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFpQixDQUFBO1FBRS9CLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6RCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNqRixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ2pGLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFcEUsU0FBUyxDQUFDLFFBQWtCLEVBQUUsUUFBZ0I7UUFDcEQsT0FBTyxRQUFRLEVBQUUsS0FBSyxJQUFJLFFBQVEsQ0FBQTtJQUNwQyxDQUFDO0lBRU8sUUFBUSxDQUFDLFFBQWtCLEVBQUUsUUFBZ0I7UUFDbkQsT0FBTyxRQUFRLEVBQUUsS0FBSyxJQUFJLFFBQVEsQ0FBQTtJQUNwQyxDQUFDOzhHQTVFVSwyQkFBMkI7a0dBQTNCLDJCQUEyQiw0VEFKM0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzs7MkZBSW5GLDJCQUEyQjtrQkFUdkMsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFDTix1SEFBdUg7d0JBQ3ZILHNIQUFzSDtvQkFDeEgsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsNkJBQTZCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO29CQUM5RixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBMEJZLEdBQUc7c0JBRGIsS0FBSztnQkFhSyxHQUFHO3NCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IExvZ2dlckZhY3RvcnkgfSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcidcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTkdfVkFMSURBVE9SUywgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBRdWFudGl0eSB9IGZyb20gJy4uLy4uL21vZGVsL3F1YW50aXR5J1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHksIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6XG4gICAgJ2VsZGVyLXF1YW50aXR5LWlucHV0W21pbl1bZm9ybUNvbnRyb2xdLGVsZGVyLXF1YW50aXR5LWlucHV0W21pbl1bZm9ybUNvbnRyb2xOYW1lXSxlbGRlci1xdWFudGl0eS1pbnB1dFttaW5dW25nTW9kZWxdLCcgK1xuICAgICdlbGRlci1xdWFudGl0eS1pbnB1dFttYXhdW2Zvcm1Db250cm9sXSxlbGRlci1xdWFudGl0eS1pbnB1dFttYXhdW2Zvcm1Db250cm9sTmFtZV0sZWxkZXItcXVhbnRpdHktaW5wdXRbbWF4XVtuZ01vZGVsXScsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IEVsZGVyUXVhbnRpdHlSYW5nZVZhbGlkYXRvciwgbXVsdGk6IHRydWUgfV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgRWxkZXJRdWFudGl0eVJhbmdlVmFsaWRhdG9yIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG5cbiAgcHJpdmF0ZSBfbWluOiBudW1iZXJcbiAgcHJpdmF0ZSBfbWF4OiBudW1iZXJcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvLyBUT0RPIE1heWJlIHN1cHBvcnQgbWluUXVhbnRpdHkgLyBtYXhRdWFudGl0eVxuXG4gIC8qKlxuICAgKiBNaW5pbXVtIG51bWJlciBhbGxvd2VkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtaW4odmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fbWluID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpXG4gIH1cblxuICBwdWJsaWMgZ2V0IG1pbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9taW5cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG51bWJlciBhbGxvd2VkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtYXgodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fbWF4ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpXG4gIH1cblxuICBwdWJsaWMgZ2V0IG1heCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgYW55IHtcbiAgICBsZXQgcmVzdWx0ID0ge31cbiAgICBjb25zdCBxdHkgPSBjLnZhbHVlIGFzIFF1YW50aXR5XG5cbiAgICBpZiAodGhpcy5fbWluICE9IG51bGwgJiYgIXRoaXMuaXNBdExlYXN0KHF0eSwgdGhpcy5fbWluKSkge1xuICAgICAgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbihyZXN1bHQsIHsgbWluOiB7IG1pbjogdGhpcy5fbWluLCBhY3R1YWw6IHF0eT8udmFsdWUgfSB9KVxuICAgIH1cbiAgICBpZiAodGhpcy5fbWF4ICE9IG51bGwgJiYgIXRoaXMuaXNBdE1vc3QocXR5LCB0aGlzLl9tYXgpKSB7XG4gICAgICByZXN1bHQgPSBPYmplY3QuYXNzaWduKHJlc3VsdCwgeyBtYXg6IHsgbWF4OiB0aGlzLl9tYXgsIGFjdHVhbDogcXR5Py52YWx1ZSB9IH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBpc0F0TGVhc3QocXVhbnRpdHk6IFF1YW50aXR5LCBtaW5WYWx1ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHF1YW50aXR5Py52YWx1ZSA+PSBtaW5WYWx1ZVxuICB9XG5cbiAgcHJpdmF0ZSBpc0F0TW9zdChxdWFudGl0eTogUXVhbnRpdHksIG1heFZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcXVhbnRpdHk/LnZhbHVlIDw9IG1heFZhbHVlXG4gIH1cbn1cbiJdfQ==
|
|
@@ -55,23 +55,19 @@ export class ElderRequiredQuantityValidator {
|
|
|
55
55
|
return false;
|
|
56
56
|
}
|
|
57
57
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderRequiredQuantityValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
58
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: ElderRequiredQuantityValidator, isStandalone: true, selector: "elder-quantity-input[required][formControl],elder-quantity-input[required][formControlName],elder-quantity-input[required][ngModel]", inputs: { requiredIgnoreZero: "requiredIgnoreZero", required: "required" }, providers: [
|
|
59
|
-
{ provide: NG_VALIDATORS, useExisting: ElderRequiredQuantityValidator, multi: true }
|
|
60
|
-
], ngImport: i0 }); }
|
|
58
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: ElderRequiredQuantityValidator, isStandalone: true, selector: "elder-quantity-input[required][formControl],elder-quantity-input[required][formControlName],elder-quantity-input[required][ngModel]", inputs: { requiredIgnoreZero: "requiredIgnoreZero", required: "required" }, providers: [{ provide: NG_VALIDATORS, useExisting: ElderRequiredQuantityValidator, multi: true }], ngImport: i0 }); }
|
|
61
59
|
}
|
|
62
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderRequiredQuantityValidator, decorators: [{
|
|
63
61
|
type: Directive,
|
|
64
62
|
args: [{
|
|
65
63
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
66
64
|
selector: 'elder-quantity-input[required][formControl],elder-quantity-input[required][formControlName],elder-quantity-input[required][ngModel]',
|
|
67
|
-
providers: [
|
|
68
|
-
|
|
69
|
-
],
|
|
70
|
-
standalone: true
|
|
65
|
+
providers: [{ provide: NG_VALIDATORS, useExisting: ElderRequiredQuantityValidator, multi: true }],
|
|
66
|
+
standalone: true,
|
|
71
67
|
}]
|
|
72
68
|
}], propDecorators: { requiredIgnoreZero: [{
|
|
73
69
|
type: Input
|
|
74
70
|
}], required: [{
|
|
75
71
|
type: Input
|
|
76
72
|
}] } });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcmVxdWlyZWQtcXVhbnRpdHkudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9tZWFzdXJlcy9xdWFudGl0eS1pbnB1dC92YWxpZGF0aW9uL2VsZGVyLXJlcXVpcmVkLXF1YW50aXR5LnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNoRCxPQUFPLEVBQW1CLGFBQWEsRUFBK0IsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDcEQsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBOztBQVUzRSxNQUFNLE9BQU8sOEJBQThCO0lBUDNDO1FBUUU7Ozs7b0ZBSTRFO1FBRTNELFFBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7UUFHN0Qsd0JBQW1CLEdBQVksS0FBSyxDQUFBO0tBc0Q3QztJQXBEQzs7OztnRkFJNEU7SUFFNUUsSUFDVyxrQkFBa0IsQ0FBQyxLQUFtQjtRQUMvQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekQsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFBO0lBQ2pDLENBQUM7SUFFRCxJQUNXLFFBQVEsQ0FBQyxLQUFtQjtRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9DLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsUUFBUSxDQUFDLENBQWtCO1FBQ2hDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUVmLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ2hFLENBQUM7UUFDRCx3RkFBd0Y7UUFDeEYsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXBFLGlCQUFpQixDQUFDLEdBQWE7UUFDckMsSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzVDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQ3ZELENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7OEdBL0RVLDhCQUE4QjtrR0FBOUIsOEJBQThCLDhQQUg5QixDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsOEJBQThCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOzsyRkFHdEYsOEJBQThCO2tCQVAxQyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUNOLHFJQUFxSTtvQkFDdkksU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsZ0NBQWdDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO29CQUNqRyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBb0JZLGtCQUFrQjtzQkFENUIsS0FBSztnQkFVSyxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJ1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBRdWFudGl0eSB9IGZyb20gJy4uLy4uL21vZGVsL3F1YW50aXR5J1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6XG4gICAgJ2VsZGVyLXF1YW50aXR5LWlucHV0W3JlcXVpcmVkXVtmb3JtQ29udHJvbF0sZWxkZXItcXVhbnRpdHktaW5wdXRbcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0sZWxkZXItcXVhbnRpdHktaW5wdXRbcmVxdWlyZWRdW25nTW9kZWxdJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogRWxkZXJSZXF1aXJlZFF1YW50aXR5VmFsaWRhdG9yLCBtdWx0aTogdHJ1ZSB9XSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJSZXF1aXJlZFF1YW50aXR5VmFsaWRhdG9yIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG5cbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW5cbiAgcHJpdmF0ZSBfcmVxdWlyZWRJZ25vcmVaZXJvOiBib29sZWFuID0gZmFsc2VcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHJlcXVpcmVkSWdub3JlWmVybyh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fcmVxdWlyZWRJZ25vcmVaZXJvID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKVxuICB9XG5cbiAgcHVibGljIGdldCByZXF1aXJlZElnbm9yZVplcm8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkSWdub3JlWmVyb1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpXG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZFxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBhbnkge1xuICAgIGxldCByZXN1bHQgPSB7fVxuXG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMuaXNRdWFudGl0eURlZmluZWQoYy52YWx1ZSkpIHtcbiAgICAgIHJlc3VsdCA9IE9iamVjdC5hc3NpZ24ocmVzdWx0LCB7IHJlcXVpcmVkOiB7IHZhbGlkOiBmYWxzZSB9IH0pXG4gICAgfVxuICAgIC8vIHRoaXMubG9nLmluZm8oJ1wiJyArIGMudmFsdWUgKyAnXCIgLS0+IHZhbGlkYXRlIHJlc3VsdDogJyArIEpTT04uc3RyaW5naWZ5KHJlc3VsdCksIGMpO1xuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgaXNRdWFudGl0eURlZmluZWQocXR5OiBRdWFudGl0eSk6IGJvb2xlYW4ge1xuICAgIGlmIChxdHk/LnZhbHVlICE9IG51bGwgJiYgcXR5Py51bml0ICE9IG51bGwpIHtcbiAgICAgIHJldHVybiAhKHRoaXMuX3JlcXVpcmVkSWdub3JlWmVybyAmJiBxdHkudmFsdWUgPT09IDApXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG4iXX0=
|
|
@@ -161,10 +161,9 @@ export class ElderQuantityService {
|
|
|
161
161
|
if (!quantities || quantities.length == 0) {
|
|
162
162
|
return null;
|
|
163
163
|
}
|
|
164
|
-
const helpers = quantities
|
|
165
|
-
.map(quantity => ({
|
|
164
|
+
const helpers = quantities.map((quantity) => ({
|
|
166
165
|
original: quantity,
|
|
167
|
-
baseValue: this.toBaseUnitValue(quantity)
|
|
166
|
+
baseValue: this.toBaseUnitValue(quantity),
|
|
168
167
|
}));
|
|
169
168
|
helpers.sort((a, b) => b.baseValue - a.baseValue);
|
|
170
169
|
return helpers[0].original;
|
|
@@ -261,7 +260,7 @@ export class ElderQuantityService {
|
|
|
261
260
|
if (dimensionUnits) {
|
|
262
261
|
const factorSortedUnits = dimensionUnits.sort((a, b) => b.toBaseFactor - a.toBaseFactor);
|
|
263
262
|
for (const unitInfo of factorSortedUnits) {
|
|
264
|
-
const signedBaseValue =
|
|
263
|
+
const signedBaseValue = baseValue < 0 ? baseValue * -1 : baseValue;
|
|
265
264
|
if (unitInfo.toBaseFactor <= signedBaseValue) {
|
|
266
265
|
suitableUnit = unitInfo;
|
|
267
266
|
break;
|
|
@@ -269,7 +268,13 @@ export class ElderQuantityService {
|
|
|
269
268
|
}
|
|
270
269
|
}
|
|
271
270
|
else {
|
|
272
|
-
this.logger.debug('Could not find Dimension info for ' +
|
|
271
|
+
this.logger.debug('Could not find Dimension info for ' +
|
|
272
|
+
dimension +
|
|
273
|
+
'. (' +
|
|
274
|
+
quantity.unit +
|
|
275
|
+
' --> ' +
|
|
276
|
+
dimension +
|
|
277
|
+
')');
|
|
273
278
|
}
|
|
274
279
|
if (!suitableUnit) {
|
|
275
280
|
return quantity;
|
|
@@ -301,11 +306,11 @@ export class ElderQuantityService {
|
|
|
301
306
|
return value;
|
|
302
307
|
}
|
|
303
308
|
static determineUserOptions(normalize, targetUnit, digitsInfo) {
|
|
304
|
-
const userOptions =
|
|
309
|
+
const userOptions = normalize === undefined || typeof normalize === 'boolean'
|
|
305
310
|
? {
|
|
306
311
|
normalize: normalize,
|
|
307
312
|
targetUnit: targetUnit,
|
|
308
|
-
digitsInfo: digitsInfo
|
|
313
|
+
digitsInfo: digitsInfo,
|
|
309
314
|
}
|
|
310
315
|
: normalize;
|
|
311
316
|
if (userOptions.normalize === undefined && !userOptions.targetUnit) {
|
|
@@ -318,7 +323,7 @@ export class ElderQuantityService {
|
|
|
318
323
|
}
|
|
319
324
|
determineSuffix(userOptions, quantityToDisplay) {
|
|
320
325
|
if (!userOptions.hideUnit) {
|
|
321
|
-
return ElderQuantityService.SPACE_STRING + this.unitService.getUnitSymbol(quantityToDisplay.unit);
|
|
326
|
+
return (ElderQuantityService.SPACE_STRING + this.unitService.getUnitSymbol(quantityToDisplay.unit));
|
|
322
327
|
}
|
|
323
328
|
else {
|
|
324
329
|
return '';
|
|
@@ -330,7 +335,7 @@ export class ElderQuantityService {
|
|
|
330
335
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderQuantityService, decorators: [{
|
|
331
336
|
type: Injectable,
|
|
332
337
|
args: [{
|
|
333
|
-
providedIn: 'root'
|
|
338
|
+
providedIn: 'root',
|
|
334
339
|
}]
|
|
335
340
|
}], ctorParameters: () => [{ type: i1.ElderUnitService }] });
|
|
336
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbWVhc3VyZXMvdXRpbC9lbGRlci1xdWFudGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7QUFXN0MsTUFBTSxPQUFPLG9CQUFvQjthQVVQLGlCQUFZLEdBQVcsRUFBRSxBQUFiLENBQWM7YUFDMUIsaUJBQVksR0FBVyxHQUFHLEFBQWQsQ0FBZTthQUUzQixtQkFBYyxHQUFXLE9BQU8sQUFBbEIsQ0FBbUI7SUFLekQ7Ozs7Z0ZBSTRFO0lBRXJFLFVBQVUsQ0FBQyxNQUFnQixFQUFFLEtBQWU7UUFDakQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQzFCLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQzNCLENBQUM7SUFDSixDQUFDO0lBRU0sZ0JBQWdCLENBQ3JCLE1BQWdCLEVBQ2hCLEtBQWUsRUFDZixNQUFnQjtRQUVoQixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQ3BCLE1BQU0sQ0FBQyxJQUFJLEVBQ1gsTUFBTSxDQUFDLEtBQUssRUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUM1QyxJQUFJ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LENBQUMsY0FBYyxDQUFDO1FBQy9ELENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU8sZUFBZSxDQUFDLFdBQWdDLEVBQUUsaUJBQTJCO1FBQ25GLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUIsT0FBTyxvQkFBb0IsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEcsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDOzhHQW5iVSxvQkFBb0I7a0hBQXBCLG9CQUFvQixjQUZuQixNQUFNOzsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtVbml0fSBmcm9tICcuLi9tb2RlbC91bml0JztcbmltcG9ydCB7UXVhbnRpdHl9IGZyb20gJy4uL21vZGVsL3F1YW50aXR5JztcbmltcG9ydCB7VW5pdEluZm99IGZyb20gJy4uL21vZGVsL3VuaXQtcmVnaXN0cnknO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RWxkZXJVbml0U2VydmljZX0gZnJvbSAnLi4vZWxkZXItdW5pdC5zZXJ2aWNlJztcbmltcG9ydCB7RGltZW5zaW9uc30gZnJvbSAnLi4vbW9kZWwvZGltZW5zaW9ucyc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7Zm9ybWF0TnVtYmVyfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtRdWFudGl0eVBpcGVPcHRpb25zfSBmcm9tICcuLi9lbGRlci1xdWFudGl0eS5waXBlJztcblxuaW50ZXJmYWNlIFF1YW50aXR5V2l0aEJhc2VWYWx1ZSB7XG4gIG9yaWdpbmFsOiBRdWFudGl0eTtcbiAgYmFzZVZhbHVlOiBudW1iZXI7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyUXVhbnRpdHlTZXJ2aWNlIHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRU1QVFlfU1RSSU5HOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgU1BBQ0VfU1RSSU5HOiBzdHJpbmcgPSAnICc7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9ESUdJVFM6IHN0cmluZyA9ICcxLjAtMSc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBRVUFOVElUWV9DQUNIRV9TSVpFID0gNTAwO1xuICBwcml2YXRlIHJlYWRvbmx5IFFVQU5USVRZX0NBQ0hFID0gbmV3IE1hcDxzdHJpbmcsIFF1YW50aXR5PigpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBCdWlsZGVyIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBjcmVhdGVBcmVhKGxlbmd0aDogUXVhbnRpdHksIHdpZHRoOiBRdWFudGl0eSk6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZURpbWVuc2lvbnMoXG4gICAgICBsZW5ndGgsXG4gICAgICB3aWR0aCxcbiAgICAgIFF1YW50aXR5Lnplcm8obGVuZ3RoLnVuaXQpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVEaW1lbnNpb25zKFxuICAgIGxlbmd0aDogUXVhbnRpdHksXG4gICAgd2lkdGg6IFF1YW50aXR5LFxuICAgIGhlaWdodDogUXVhbnRpdHlcbiAgKTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbShcbiAgICAgIGxlbmd0aC51bml0LFxuICAgICAgbGVuZ3RoLnZhbHVlLFxuICAgICAgdGhpcy5jb252ZXJ0VG9Vbml0KHdpZHRoLCBsZW5ndGgudW5pdCkudmFsdWUsXG4gICAgICB0aGlzLmNvbnZlcnRUb1VuaXQoaGVpZ2h0LCBsZW5ndGgudW5pdCkudmFsdWVcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBjb3B5IG9mIHRoZSBtYXhpbXVtIChsb25nZXN0KSBlZGdlIG9mIHRoZSBkaW1lbnNpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gZGltZW5zaW9uc1xuICAgKi9cbiAgcHVibGljIGdldE1heEVkZ2UoZGltZW5zaW9uczogRGltZW5zaW9ucyk6IFF1YW50aXR5IHtcbiAgICBpZiAoIWRpbWVuc2lvbnMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgICAgZGltZW5zaW9ucy51bml0LFxuICAgICAgICBNYXRoLm1heChkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25zLmxlbmd0aCwgZGltZW5zaW9ucy5oZWlnaHQpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdW5pdFNlcnZpY2U6IEVsZGVyVW5pdFNlcnZpY2VcbiAgKSB7XG4gIH1cblxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyB3aXRoVW5pdChxdWFudGl0eTogUXVhbnRpdHksIHVuaXQ6IFVuaXQpIHtcbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbSh1bml0LCBxdWFudGl0eS52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgd2l0aFZhbHVlKHF1YW50aXR5OiBRdWFudGl0eSwgdmFsdWU6IG51bWJlcikge1xuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKHF1YW50aXR5LnVuaXQsIHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWNoZUxvb2t1cChsb29rdXA6IFF1YW50aXR5KTogUXVhbnRpdHkge1xuICAgIHJldHVybiB0aGlzLlFVQU5USVRZX0NBQ0hFLmdldCh0aGlzLmdldFF1YW50aXR5SWRlbnRpZmllcihsb29rdXApKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWNoZVVwZGF0ZShrZXk6IFF1YW50aXR5LCB2YWx1ZTogUXVhbnRpdHkpIHtcbiAgICBpZiAodGhpcy5RVUFOVElUWV9DQUNIRS5zaXplID49IHRoaXMuUVVBTlRJVFlfQ0FDSEVfU0laRSkge1xuICAgICAgdGhpcy5RVUFOVElUWV9DQUNIRS5jbGVhcigpO1xuICAgIH1cbiAgICB0aGlzLlFVQU5USVRZX0NBQ0hFLnNldCh0aGlzLmdldFF1YW50aXR5SWRlbnRpZmllcihrZXkpLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTXVsdGlwbGllcyBhIHF1YW50aXR5IHdpdGggYSBtdWx0aXBsaWVyIGFuZCByZXR1cm5zIGEgcXVhbnRpdHkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpICogMyA9IFF1YW50aXR5KDMwMDAwLCdnJylcbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXR5XG4gICAqIEBwYXJhbSBtdWx0aXBsaWVyXG4gICAqL1xuXG4gIHB1YmxpYyBtdWx0aXBseShxdWFudGl0eTogUXVhbnRpdHksIG11bHRpcGxpZXI6IG51bWJlcik6IFF1YW50aXR5IHtcblxuICAgIGlmICghcXVhbnRpdHkgfHwgIW11bHRpcGxpZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgIHF1YW50aXR5LnVuaXQsXG4gICAgICBxdWFudGl0eS52YWx1ZSAqIG11bHRpcGxpZXJcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIERpdmlkZXMgYSBxdWFudGl0eSBieSBhbm90aGVyIHF1YW50aXR5IGFuZCByZXR1cm5zIGEgc2NhbGFyLlxuICAgKlxuICAgKiBFeGFtcGxlczpcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgLyBRdWFudGl0eSg1LCdrZycpID0gMlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSAvIFF1YW50aXR5KDUsJ2cnKSA9IDIwMDBcbiAgICpcbiAgICogQHBhcmFtIGRpdmlkZW5kXG4gICAqIEBwYXJhbSBkaXZpc29yXG4gICAqL1xuICBwdWJsaWMgZGl2aWRlQnlRdWFudGl0eShkaXZpZGVuZDogUXVhbnRpdHksIGRpdmlzb3I6IFF1YW50aXR5KTogbnVtYmVyIHtcblxuICAgIGlmICghZGl2aWRlbmQgfHwgIWRpdmlzb3IpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBkaXZpZGVuZE5vcm1hbCA9ICB0aGlzLnRvQmFzZVVuaXRWYWx1ZShkaXZpZGVuZCk7XG4gICAgY29uc3QgZGl2aXNvck5vcm1hbCA9ICB0aGlzLnRvQmFzZVVuaXRWYWx1ZShkaXZpc29yKTtcbiAgICByZXR1cm4gZGl2aWRlbmROb3JtYWwgLyBkaXZpc29yTm9ybWFsO1xuICB9XG5cblxuICAvKipcbiAgICogU3VtcyB1cCBRdWFudGl0aWVzIGFuZCByZXR1cm5zIGEgUXVhbnRpdHkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpICsgUXVhbnRpdHkoNSwna2cnKSArIFF1YW50aXR5KDUsJ2cnKSA9IFF1YW50aXR5KDE1MDA1LCAnZycpXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0aWVzXG4gICAqL1xuICBwdWJsaWMgc3VtKHF1YW50aXRpZXM6IFF1YW50aXR5W10pOiBRdWFudGl0eSB7XG4gICAgaWYgKCFxdWFudGl0aWVzIHx8IHF1YW50aXRpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRVbml0ID0gcXVhbnRpdGllc1swXS51bml0O1xuXG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICB0YXJnZXRVbml0LFxuICAgICAgcXVhbnRpdGllcy5yZWR1Y2UoXG4gICAgICAgICh0b3RhbCwgYWRkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRvdGFsICsgdGhpcy5jb252ZXJ0VG9Vbml0KGFkZCwgdGFyZ2V0VW5pdCkudmFsdWU7XG4gICAgICAgIH0sIDBcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnRyYWN0cyBhIHF1YW50aXR5IGZyb20gYW5vdGhlciBxdWFudGl0eSBhbmQgcmV0dXJucyBhIHF1YW50aXR5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSAtIFF1YW50aXR5KDUsJ2cnKSA9IFF1YW50aXR5KDk5OTUsICdnJylcbiAgICpcbiAgICogQHBhcmFtIG1pbnVlbmRcbiAgICogQHBhcmFtIHN1YnRyYWhlbmRcbiAgICovXG4gIHB1YmxpYyBzdWJ0cmFjdChtaW51ZW5kOiBRdWFudGl0eSwgc3VidHJhaGVuZDogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG4gICAgaWYgKCFtaW51ZW5kIHx8ICFzdWJ0cmFoZW5kKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICBtaW51ZW5kLnVuaXQsXG4gICAgICBtaW51ZW5kLnZhbHVlIC0gdGhpcy5jb252ZXJ0VG9Vbml0KHN1YnRyYWhlbmQsIG1pbnVlbmQudW5pdCkudmFsdWVcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnRyYWN0cyBhIHF1YW50aXR5IGZyb20gYW5vdGhlciBxdWFudGl0eSBhbmQgcmV0dXJucyBhIHF1YW50aXR5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSArIFF1YW50aXR5KDUwMCwnZycpID0gUXVhbnRpdHkoMTAuNSwgJ2tnJylcbiAgICpcbiAgICogQHBhcmFtIGxlZnRcbiAgICogQHBhcmFtIHJpZ2h0XG4gICAqL1xuICBwdWJsaWMgYWRkKGxlZnQ6IFF1YW50aXR5LCByaWdodDogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG4gICAgaWYgKCFsZWZ0IHx8ICFyaWdodCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgbGVmdC51bml0LFxuICAgICAgbGVmdC52YWx1ZSAtIHRoaXMuY29udmVydFRvVW5pdChyaWdodCwgbGVmdC51bml0KS52YWx1ZVxuICAgICk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBtYXggcXVhbnRpdHkgb2YgYW4gYXJyYXkgb2YgcXVhbnRpdGllcy5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUXVhbnRpdHkoMTAsICdtJyksIFF1YW50aXR5KDI1MDAsICdjbScpLCBRdWFudGl0eSgwLjAwMywgJ2ttJykgPSBRdWFudGl0eSgyNTAwLCAnY20nKVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdGllc1xuICAgKi9cblxuICBwdWJsaWMgbWF4KHF1YW50aXRpZXM6IFF1YW50aXR5W10pOiBRdWFudGl0eSB7XG5cbiAgICBpZiAoIXF1YW50aXRpZXMgfHwgcXVhbnRpdGllcy5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgaGVscGVycyA9IHF1YW50aXRpZXNcbiAgICAgIC5tYXAocXVhbnRpdHkgPT4gPFF1YW50aXR5V2l0aEJhc2VWYWx1ZT57XG4gICAgICAgIG9yaWdpbmFsOiBxdWFudGl0eSxcbiAgICAgICAgYmFzZVZhbHVlOiB0aGlzLnRvQmFzZVVuaXRWYWx1ZShxdWFudGl0eSlcbiAgICAgIH0pO1xuXG4gICAgaGVscGVycy5zb3J0KChhLCBiKSA9PiBiLmJhc2VWYWx1ZSAtIGEuYmFzZVZhbHVlKTtcblxuICAgIHJldHVybiBoZWxwZXJzWzBdLm9yaWdpbmFsO1xuICB9XG5cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhIHF1YW50aXR5IHRvIGFub3RoZXIgcXVhbnRpdHkgb2YgdGhlIHNhbWUgZGltZW5zaW9uIGJ5IHRhcmdldC1TSVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdHlcbiAgICogQHBhcmFtIHRhcmdldFVuaXRcbiAgICovXG4gIHB1YmxpYyBjb252ZXJ0VG9Vbml0KHF1YW50aXR5OiBRdWFudGl0eSwgdGFyZ2V0VW5pdDogVW5pdCk6IFF1YW50aXR5IHtcbiAgICBpZiAoIXF1YW50aXR5IHx8ICF0YXJnZXRVbml0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocXVhbnRpdHkudW5pdCA9PT0gdGFyZ2V0VW5pdCkge1xuICAgICAgcmV0dXJuIFF1YW50aXR5LmZyb20ocXVhbnRpdHkudW5pdCwgcXVhbnRpdHkudmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldEJhc2VGYWN0b3IgPSB0aGlzLnVuaXRTZXJ2aWNlLmdldFRvQmFzZUZhY3Rvcih0YXJnZXRVbml0KTtcblxuICAgIGlmICh0YXJnZXRCYXNlRmFjdG9yID4gMCkge1xuICAgICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICAgIHRhcmdldFVuaXQsXG4gICAgICAgIHRoaXMudG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5KSAvIHRhcmdldEJhc2VGYWN0b3JcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBjb252ZXJ0IHF1YW50aXR5IHRvIHRhcmdldCB1bml0OicgKyB0YXJnZXRVbml0ICsgJy4gUXVhbnRpdHk6ICcsIHF1YW50aXR5KTtcbiAgICAgIHJldHVybiBxdWFudGl0eTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5OiBRdWFudGl0eSk6IG51bWJlciB7XG4gICAgY29uc3QgdGFyZ2V0QmFzZUZhY3RvciA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VG9CYXNlRmFjdG9yKHF1YW50aXR5LnVuaXQpO1xuICAgIHJldHVybiBxdWFudGl0eS52YWx1ZSAqIHRhcmdldEJhc2VGYWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHF1YW50aXR5IGluIGEgbm9ybWFsaXplZCBmb3JtLlxuICAgKiBBIGNhY2hlIGlzIHVzZWQgdG8gcmVkdWNlIGNhbGN1bGF0aW9ucy5cbiAgICpcbiAgICogODUwMCBrZyAtPiA4LjUgdFxuICAgKiA5MDAwMDAwIG1tIC0+IDkga21cbiAgICogMTIxNSBtIC0+IDEuMiBrbVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdHlcbiAgICovXG4gIHB1YmxpYyBub3JtYWxpemUocXVhbnRpdHk6IFF1YW50aXR5KTogUXVhbnRpdHkge1xuXG4gICAgLy8gQ2hlY2sgY2FjaGVcbiAgICBjb25zdCBjYWNoZWRJdGVtID0gdGhpcy5jYWNoZUxvb2t1cChxdWFudGl0eSk7XG5cbiAgICAvLyBWYWx1ZSBpcyBpbiBjYWNoZVxuICAgIGlmIChjYWNoZWRJdGVtKSB7XG4gICAgICByZXR1cm4gY2FjaGVkSXRlbTtcbiAgICB9IGVsc2Uge1xuXG4gICAgICBjb25zdCB0YXJnZXRRdWFudGl0eSA9IHRoaXMubm9ybWFsaXplSW50ZXJuYWwocXVhbnRpdHkpO1xuXG4gICAgICAvLyBVcGRhdGUgY2FjaGVcbiAgICAgIHRoaXMuY2FjaGVVcGRhdGUocXVhbnRpdHksIHRhcmdldFF1YW50aXR5KTtcblxuICAgICAgcmV0dXJuIHRhcmdldFF1YW50aXR5O1xuXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRyYW5zZm9ybVF1YW50aXR5KFxuICAgIHF1YW50aXR5OiBRdWFudGl0eSxcbiAgICBub3JtYWxpemU6IGJvb2xlYW4gPSB0cnVlLFxuICAgIHRhcmdldFVuaXQ/OiBVbml0IHwgc3RyaW5nXG4gICk6IFF1YW50aXR5IHtcblxuICAgIGlmICghcXVhbnRpdHkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemUpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZShxdWFudGl0eSk7XG4gICAgfSBlbHNlIGlmICh0YXJnZXRVbml0KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9Vbml0KHF1YW50aXR5LCA8VW5pdD50YXJnZXRVbml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHF1YW50aXR5O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRRdWFudGl0eShcbiAgICBxdWFudGl0eTogUXVhbnRpdHkgfCB1bmRlZmluZWQsXG4gICAgbG9jYWxlOiBzdHJpbmcsXG4gICAgbm9ybWFsaXplPzogYm9vbGVhbiB8IFF1YW50aXR5UGlwZU9wdGlvbnMsXG4gICAgdGFyZ2V0VW5pdD86IFVuaXQgfCBzdHJpbmcsXG4gICAgZGlnaXRzSW5mbz86IHN0cmluZ1xuICApOiBzdHJpbmcge1xuICAgIGRpZ2l0c0luZm8gfHw9IEVsZGVyUXVhbnRpdHlTZXJ2aWNlLkRFRkFVTFRfRElHSVRTO1xuXG4gICAgaWYgKCFxdWFudGl0eSkge1xuICAgICAgcmV0dXJuIEVsZGVyUXVhbnRpdHlTZXJ2aWNlLkVNUFRZX1NUUklORztcbiAgICB9XG4gICAgY29uc3QgdXNlck9wdGlvbnMgPSBFbGRlclF1YW50aXR5U2VydmljZS5kZXRlcm1pbmVVc2VyT3B0aW9ucyhub3JtYWxpemUsIHRhcmdldFVuaXQsIGRpZ2l0c0luZm8pO1xuXG4gICAgY29uc3QgcXVhbnRpdHlUb0Rpc3BsYXk6IFF1YW50aXR5ID0gdGhpcy50cmFuc2Zvcm1RdWFudGl0eShcbiAgICAgIHF1YW50aXR5LFxuICAgICAgdXNlck9wdGlvbnMubm9ybWFsaXplLFxuICAgICAgdXNlck9wdGlvbnMudGFyZ2V0VW5pdFxuICAgICk7XG4gICAgY29uc3QgbnVtYmVyID0gdGhpcy5zdHJUb051bWJlcihxdWFudGl0eVRvRGlzcGxheS52YWx1ZSk7XG4gICAgY29uc3Qgc3VmZml4ID0gdGhpcy5kZXRlcm1pbmVTdWZmaXgodXNlck9wdGlvbnMsIHF1YW50aXR5VG9EaXNwbGF5KTtcbiAgICByZXR1cm4gZm9ybWF0TnVtYmVyKG51bWJlciwgbG9jYWxlLCB1c2VyT3B0aW9ucy5kaWdpdHNJbmZvKSArIHN1ZmZpeDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgbm9ybWFsaXplSW50ZXJuYWwocXVhbnRpdHk6IFF1YW50aXR5KTogUXVhbnRpdHkge1xuXG4gICAgLy8gR2l2ZW4gcXVhbnRpdHkgdmFsdWUgaW4gYmFzZSB1bml0XG5cbiAgICBjb25zdCBkaW1lbnNpb24gPSB0aGlzLnVuaXRTZXJ2aWNlLmdldFVuaXREaW1lbnNpb24ocXVhbnRpdHkudW5pdCk7XG5cbiAgICBpZiAoIWRpbWVuc2lvbikgeyByZXR1cm4gcXVhbnRpdHk7IH1cblxuICAgIGNvbnN0IGJhc2VWYWx1ZSA9IHRoaXMudG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5KTtcblxuICAgIGxldCBzdWl0YWJsZVVuaXQ6IFVuaXRJbmZvO1xuXG4gICAgY29uc3QgZGltZW5zaW9uVW5pdHMgPSB0aGlzLnVuaXRTZXJ2aWNlLmdldFVuaXRJbmZvc0J5RGltZW5zaW9uKGRpbWVuc2lvbik7XG5cbiAgICBpZiAoZGltZW5zaW9uVW5pdHMpIHtcblxuICAgICAgY29uc3QgZmFjdG9yU29ydGVkVW5pdHMgPSBkaW1lbnNpb25Vbml0cy5zb3J0KChhLCBiKSA9PiBiLnRvQmFzZUZhY3RvciAtIGEudG9CYXNlRmFjdG9yKTtcblxuICAgICAgZm9yIChjb25zdCB1bml0SW5mbyBvZiBmYWN0b3JTb3J0ZWRVbml0cykge1xuICAgICAgICBjb25zdCBzaWduZWRCYXNlVmFsdWUgPSAoKGJhc2VWYWx1ZSA8IDApID8gYmFzZVZhbHVlICogLTEgOiBiYXNlVmFsdWUpO1xuICAgICAgICBpZiAodW5pdEluZm8udG9CYXNlRmFjdG9yIDw9IHNpZ25lZEJhc2VWYWx1ZSkge1xuICAgICAgICAgIHN1aXRhYmxlVW5pdCA9IHVuaXRJbmZvO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDb3VsZCBub3QgZmluZCBEaW1lbnNpb24gaW5mbyBmb3IgJyArIGRpbWVuc2lvbiArICcuICgnICsgcXVhbnRpdHkudW5pdCArICcgLS0+ICcgKyBkaW1lbnNpb24gKyAnKScpO1xuICAgIH1cblxuICAgIGlmICghc3VpdGFibGVVbml0KSB7XG4gICAgICByZXR1cm4gcXVhbnRpdHk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFRvQmFzZSA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VG9CYXNlRmFjdG9yKHF1YW50aXR5LnVuaXQpO1xuXG4gICAgLy8gRW5zdXJlIHdlIHByZWZlciB0aGUgaW5pdGlhbCB1bml0IGlmIHRoZSBhY3R1YWwgdmFsdWUgaXMgbm90IGFmZmVjdGVkLlxuICAgIC8vIFRoaXMgaGVscHMgdG8gYmUgY29uc2lzdGVudCBhbmQgZGlzcGxheSB0aGUgYWN0dWFsIHVuaXQgaW4gcmFyZSBjYXNlcyB3aGVuIG11bHRpcGxlIHVuaXQgYWx0ZXJuYXRpdmVzIGV4aXN0IChzYW1lIGZhY3RvcilcbiAgICBpZiAoc3VpdGFibGVVbml0LnRvQmFzZUZhY3RvciA9PT0gY3VycmVudFRvQmFzZSkge1xuICAgICAgcmV0dXJuIHF1YW50aXR5O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9Vbml0KHF1YW50aXR5LCBzdWl0YWJsZVVuaXQudW5pdCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRRdWFudGl0eUlkZW50aWZpZXIocXVhbnRpdHk6IFF1YW50aXR5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcXVhbnRpdHkudmFsdWUgKyAnLScgKyBxdWFudGl0eS51bml0O1xuICB9XG5cblxuICAvKipcbiAgICogQWRhcHRlZCBmcm9tIEBhbmd1bGFyL2NvbW1vbiBudW1iZXJfcGlwZS50c1xuICAgKi9cbiAgcHJpdmF0ZSBzdHJUb051bWJlcih2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogbnVtYmVyIHtcbiAgICAvLyBDb252ZXJ0IHN0cmluZ3MgdG8gbnVtYmVyc1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFpc05hTihOdW1iZXIodmFsdWUpIC0gcGFyc2VGbG9hdCh2YWx1ZSkpKSB7XG4gICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt2YWx1ZX0gaXMgbm90IGEgbnVtYmVyYCk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGRldGVybWluZVVzZXJPcHRpb25zKFxuICAgIG5vcm1hbGl6ZTogYm9vbGVhbiB8IFF1YW50aXR5UGlwZU9wdGlvbnMsXG4gICAgdGFyZ2V0VW5pdDogVW5pdCB8IHN0cmluZyxcbiAgICBkaWdpdHNJbmZvOiBzdHJpbmdcbiAgKTogUXVhbnRpdHlQaXBlT3B0aW9ucyB7XG4gICAgY29uc3QgdXNlck9wdGlvbnMgPSAobm9ybWFsaXplID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIG5vcm1hbGl6ZSA9PT0gJ2Jvb2xlYW4nKVxuICAgICAgPyA8UXVhbnRpdHlQaXBlT3B0aW9ucz57XG4gICAgICAgIG5vcm1hbGl6ZTogbm9ybWFsaXplLFxuICAgICAgICB0YXJnZXRVbml0OiB0YXJnZXRVbml0LFxuICAgICAgICBkaWdpdHNJbmZvOiBkaWdpdHNJbmZvXG4gICAgICB9XG4gICAgICA6IG5vcm1hbGl6ZTtcblxuICAgIGlmICh1c2VyT3B0aW9ucy5ub3JtYWxpemUgPT09IHVuZGVmaW5lZCAmJiAhdXNlck9wdGlvbnMudGFyZ2V0VW5pdCkge1xuICAgICAgdXNlck9wdGlvbnMubm9ybWFsaXplID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodXNlck9wdGlvbnMuZGlnaXRzSW5mbyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1c2VyT3B0aW9ucy5kaWdpdHNJbmZvID0gRWxkZXJRdWFudGl0eVNlcnZpY2UuREVGQVVMVF9ESUdJVFM7XG4gICAgfVxuICAgIHJldHVybiB1c2VyT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lU3VmZml4KHVzZXJPcHRpb25zOiBRdWFudGl0eVBpcGVPcHRpb25zLCBxdWFudGl0eVRvRGlzcGxheTogUXVhbnRpdHkpIHtcbiAgICBpZiAoIXVzZXJPcHRpb25zLmhpZGVVbml0KSB7XG4gICAgICByZXR1cm4gRWxkZXJRdWFudGl0eVNlcnZpY2UuU1BBQ0VfU1RSSU5HICsgdGhpcy51bml0U2VydmljZS5nZXRVbml0U3ltYm9sKHF1YW50aXR5VG9EaXNwbGF5LnVuaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
341
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbWVhc3VyZXMvdXRpbC9lbGRlci1xdWFudGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUU1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBOzs7QUFXOUMsTUFBTSxPQUFPLG9CQUFvQjthQVNQLGlCQUFZLEdBQVcsRUFBRSxBQUFiLENBQWE7YUFDekIsaUJBQVksR0FBVyxHQUFHLEFBQWQsQ0FBYzthQUUxQixtQkFBYyxHQUFXLE9BQU8sQUFBbEIsQ0FBa0I7SUFLeEQ7Ozs7Z0ZBSTRFO0lBRXJFLFVBQVUsQ0FBQyxNQUFnQixFQUFFLEtBQWU7UUFDakQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3pFLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxNQUFnQixFQUFFLEtBQWUsRUFBRSxNQUFnQjtRQUN6RSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQ3BCLE1BQU0sQ0FBQyxJQUFJLEVBQ1gsTUFBTSxDQUFDLEtBQUssRUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUM1QyxJQUFJLENB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QUM7UUFDRCxPQUFPLFdBQVcsQ0FBQTtJQUNwQixDQUFDO0lBRU8sZUFBZSxDQUFDLFdBQWdDLEVBQUUsaUJBQTJCO1FBQ25GLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUIsT0FBTyxDQUNMLG9CQUFvQixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FDM0YsQ0FBQTtRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxFQUFFLENBQUE7UUFDWCxDQUFDO0lBQ0gsQ0FBQzs4R0FoYVUsb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7MkZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVuaXQgfSBmcm9tICcuLi9tb2RlbC91bml0J1xuaW1wb3J0IHsgUXVhbnRpdHkgfSBmcm9tICcuLi9tb2RlbC9xdWFudGl0eSdcbmltcG9ydCB7IFVuaXRJbmZvIH0gZnJvbSAnLi4vbW9kZWwvdW5pdC1yZWdpc3RyeSdcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRWxkZXJVbml0U2VydmljZSB9IGZyb20gJy4uL2VsZGVyLXVuaXQuc2VydmljZSdcbmltcG9ydCB7IERpbWVuc2lvbnMgfSBmcm9tICcuLi9tb2RlbC9kaW1lbnNpb25zJ1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJ1xuaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgUXVhbnRpdHlQaXBlT3B0aW9ucyB9IGZyb20gJy4uL2VsZGVyLXF1YW50aXR5LnBpcGUnXG5cbmludGVyZmFjZSBRdWFudGl0eVdpdGhCYXNlVmFsdWUge1xuICBvcmlnaW5hbDogUXVhbnRpdHlcbiAgYmFzZVZhbHVlOiBudW1iZXJcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyUXVhbnRpdHlTZXJ2aWNlIHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRU1QVFlfU1RSSU5HOiBzdHJpbmcgPSAnJ1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBTUEFDRV9TVFJJTkc6IHN0cmluZyA9ICcgJ1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfRElHSVRTOiBzdHJpbmcgPSAnMS4wLTEnXG5cbiAgcHJpdmF0ZSByZWFkb25seSBRVUFOVElUWV9DQUNIRV9TSVpFID0gNTAwXG4gIHByaXZhdGUgcmVhZG9ubHkgUVVBTlRJVFlfQ0FDSEUgPSBuZXcgTWFwPHN0cmluZywgUXVhbnRpdHk+KClcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQnVpbGRlciBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgY3JlYXRlQXJlYShsZW5ndGg6IFF1YW50aXR5LCB3aWR0aDogUXVhbnRpdHkpOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVEaW1lbnNpb25zKGxlbmd0aCwgd2lkdGgsIFF1YW50aXR5Lnplcm8obGVuZ3RoLnVuaXQpKVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZURpbWVuc2lvbnMobGVuZ3RoOiBRdWFudGl0eSwgd2lkdGg6IFF1YW50aXR5LCBoZWlnaHQ6IFF1YW50aXR5KTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbShcbiAgICAgIGxlbmd0aC51bml0LFxuICAgICAgbGVuZ3RoLnZhbHVlLFxuICAgICAgdGhpcy5jb252ZXJ0VG9Vbml0KHdpZHRoLCBsZW5ndGgudW5pdCkudmFsdWUsXG4gICAgICB0aGlzLmNvbnZlcnRUb1VuaXQoaGVpZ2h0LCBsZW5ndGgudW5pdCkudmFsdWVcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGNvcHkgb2YgdGhlIG1heGltdW0gKGxvbmdlc3QpIGVkZ2Ugb2YgdGhlIGRpbWVuc2lvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBkaW1lbnNpb25zXG4gICAqL1xuICBwdWJsaWMgZ2V0TWF4RWRnZShkaW1lbnNpb25zOiBEaW1lbnNpb25zKTogUXVhbnRpdHkge1xuICAgIGlmICghZGltZW5zaW9ucykge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICAgIGRpbWVuc2lvbnMudW5pdCxcbiAgICAgICAgTWF0aC5tYXgoZGltZW5zaW9ucy53aWR0aCwgZGltZW5zaW9ucy5sZW5ndGgsIGRpbWVuc2lvbnMuaGVpZ2h0KVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdW5pdFNlcnZpY2U6IEVsZGVyVW5pdFNlcnZpY2UpIHt9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHdpdGhVbml0KHF1YW50aXR5OiBRdWFudGl0eSwgdW5pdDogVW5pdCkge1xuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKHVuaXQsIHF1YW50aXR5LnZhbHVlKVxuICB9XG5cbiAgcHVibGljIHdpdGhWYWx1ZShxdWFudGl0eTogUXVhbnRpdHksIHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShxdWFudGl0eS51bml0LCB2YWx1ZSlcbiAgfVxuXG4gIHB1YmxpYyBjYWNoZUxvb2t1cChsb29rdXA6IFF1YW50aXR5KTogUXVhbnRpdHkge1xuICAgIHJldHVybiB0aGlzLlFVQU5USVRZX0NBQ0hFLmdldCh0aGlzLmdldFF1YW50aXR5SWRlbnRpZmllcihsb29rdXApKVxuICB9XG5cbiAgcHVibGljIGNhY2hlVXBkYXRlKGtleTogUXVhbnRpdHksIHZhbHVlOiBRdWFudGl0eSkge1xuICAgIGlmICh0aGlzLlFVQU5USVRZX0NBQ0hFLnNpemUgPj0gdGhpcy5RVUFOVElUWV9DQUNIRV9TSVpFKSB7XG4gICAgICB0aGlzLlFVQU5USVRZX0NBQ0hFLmNsZWFyKClcbiAgICB9XG4gICAgdGhpcy5RVUFOVElUWV9DQUNIRS5zZXQodGhpcy5nZXRRdWFudGl0eUlkZW50aWZpZXIoa2V5KSwgdmFsdWUpXG4gIH1cblxuICAvKipcbiAgICogTXVsdGlwbGllcyBhIHF1YW50aXR5IHdpdGggYSBtdWx0aXBsaWVyIGFuZCByZXR1cm5zIGEgcXVhbnRpdHkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpICogMyA9IFF1YW50aXR5KDMwMDAwLCdnJylcbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXR5XG4gICAqIEBwYXJhbSBtdWx0aXBsaWVyXG4gICAqL1xuXG4gIHB1YmxpYyBtdWx0aXBseShxdWFudGl0eTogUXVhbnRpdHksIG11bHRpcGxpZXI6IG51bWJlcik6IFF1YW50aXR5IHtcbiAgICBpZiAoIXF1YW50aXR5IHx8ICFtdWx0aXBsaWVyKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShxdWFudGl0eS51bml0LCBxdWFudGl0eS52YWx1ZSAqIG11bHRpcGxpZXIpXG4gIH1cblxuICAvKipcbiAgICogRGl2aWRlcyBhIHF1YW50aXR5IGJ5IGFub3RoZXIgcXVhbnRpdHkgYW5kIHJldHVybnMgYSBzY2FsYXIuXG4gICAqXG4gICAqIEV4YW1wbGVzOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSAvIFF1YW50aXR5KDUsJ2tnJykgPSAyXG4gICAqIFF1YW50aXR5KDEwLCdrZycpIC8gUXVhbnRpdHkoNSwnZycpID0gMjAwMFxuICAgKlxuICAgKiBAcGFyYW0gZGl2aWRlbmRcbiAgICogQHBhcmFtIGRpdmlzb3JcbiAgICovXG4gIHB1YmxpYyBkaXZpZGVCeVF1YW50aXR5KGRpdmlkZW5kOiBRdWFudGl0eSwgZGl2aXNvcjogUXVhbnRpdHkpOiBudW1iZXIge1xuICAgIGlmICghZGl2aWRlbmQgfHwgIWRpdmlzb3IpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IGRpdmlkZW5kTm9ybWFsID0gdGhpcy50b0Jhc2VVbml0VmFsdWUoZGl2aWRlbmQpXG4gICAgY29uc3QgZGl2aXNvck5vcm1hbCA9IHRoaXMudG9CYXNlVW5pdFZhbHVlKGRpdmlzb3IpXG4gICAgcmV0dXJuIGRpdmlkZW5kTm9ybWFsIC8gZGl2aXNvck5vcm1hbFxuICB9XG5cbiAgLyoqXG4gICAqIFN1bXMgdXAgUXVhbnRpdGllcyBhbmQgcmV0dXJucyBhIFF1YW50aXR5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSArIFF1YW50aXR5KDUsJ2tnJykgKyBRdWFudGl0eSg1LCdnJykgPSBRdWFudGl0eSgxNTAwNSwgJ2cnKVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdGllc1xuICAgKi9cbiAgcHVibGljIHN1bShxdWFudGl0aWVzOiBRdWFudGl0eVtdKTogUXVhbnRpdHkge1xuICAgIGlmICghcXVhbnRpdGllcyB8fCBxdWFudGl0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRVbml0ID0gcXVhbnRpdGllc1swXS51bml0XG5cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgIHRhcmdldFVuaXQsXG4gICAgICBxdWFudGl0aWVzLnJlZHVjZSgodG90YWwsIGFkZCkgPT4ge1xuICAgICAgICByZXR1cm4gdG90YWwgKyB0aGlzLmNvbnZlcnRUb1VuaXQoYWRkLCB0YXJnZXRVbml0KS52YWx1ZVxuICAgICAgfSwgMClcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogU3VidHJhY3RzIGEgcXVhbnRpdHkgZnJvbSBhbm90aGVyIHF1YW50aXR5IGFuZCByZXR1cm5zIGEgcXVhbnRpdHkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpIC0gUXVhbnRpdHkoNSwnZycpID0gUXVhbnRpdHkoOTk5NSwgJ2cnKVxuICAgKlxuICAgKiBAcGFyYW0gbWludWVuZFxuICAgKiBAcGFyYW0gc3VidHJhaGVuZFxuICAgKi9cbiAgcHVibGljIHN1YnRyYWN0KG1pbnVlbmQ6IFF1YW50aXR5LCBzdWJ0cmFoZW5kOiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICBpZiAoIW1pbnVlbmQgfHwgIXN1YnRyYWhlbmQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgbWludWVuZC51bml0LFxuICAgICAgbWludWVuZC52YWx1ZSAtIHRoaXMuY29udmVydFRvVW5pdChzdWJ0cmFoZW5kLCBtaW51ZW5kLnVuaXQpLnZhbHVlXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFN1YnRyYWN0cyBhIHF1YW50aXR5IGZyb20gYW5vdGhlciBxdWFudGl0eSBhbmQgcmV0dXJucyBhIHF1YW50aXR5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSArIFF1YW50aXR5KDUwMCwnZycpID0gUXVhbnRpdHkoMTAuNSwgJ2tnJylcbiAgICpcbiAgICogQHBhcmFtIGxlZnRcbiAgICogQHBhcmFtIHJpZ2h0XG4gICAqL1xuICBwdWJsaWMgYWRkKGxlZnQ6IFF1YW50aXR5LCByaWdodDogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG4gICAgaWYgKCFsZWZ0IHx8ICFyaWdodCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20obGVmdC51bml0LCBsZWZ0LnZhbHVlIC0gdGhpcy5jb252ZXJ0VG9Vbml0KHJpZ2h0LCBsZWZ0LnVuaXQpLnZhbHVlKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1heCBxdWFudGl0eSBvZiBhbiBhcnJheSBvZiBxdWFudGl0aWVzLlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwgJ20nKSwgUXVhbnRpdHkoMjUwMCwgJ2NtJyksIFF1YW50aXR5KDAuMDAzLCAna20nKSA9IFF1YW50aXR5KDI1MDAsICdjbScpXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0aWVzXG4gICAqL1xuXG4gIHB1YmxpYyBtYXgocXVhbnRpdGllczogUXVhbnRpdHlbXSk6IFF1YW50aXR5IHtcbiAgICBpZiAoIXF1YW50aXRpZXMgfHwgcXVhbnRpdGllcy5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBoZWxwZXJzID0gcXVhbnRpdGllcy5tYXAoXG4gICAgICAocXVhbnRpdHkpID0+XG4gICAgICAgIDxRdWFudGl0eVdpdGhCYXNlVmFsdWU+e1xuICAgICAgICAgIG9yaWdpbmFsOiBxdWFudGl0eSxcbiAgICAgICAgICBiYXNlVmFsdWU6IHRoaXMudG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5KSxcbiAgICAgICAgfVxuICAgIClcblxuICAgIGhlbHBlcnMuc29ydCgoYSwgYikgPT4gYi5iYXNlVmFsdWUgLSBhLmJhc2VWYWx1ZSlcblxuICAgIHJldHVybiBoZWxwZXJzWzBdLm9yaWdpbmFsXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhIHF1YW50aXR5IHRvIGFub3RoZXIgcXVhbnRpdHkgb2YgdGhlIHNhbWUgZGltZW5zaW9uIGJ5IHRhcmdldC1TSVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdHlcbiAgICogQHBhcmFtIHRhcmdldFVuaXRcbiAgICovXG4gIHB1YmxpYyBjb252ZXJ0VG9Vbml0KHF1YW50aXR5OiBRdWFudGl0eSwgdGFyZ2V0VW5pdDogVW5pdCk6IFF1YW50aXR5IHtcbiAgICBpZiAoIXF1YW50aXR5IHx8ICF0YXJnZXRVbml0KSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGlmIChxdWFudGl0eS51bml0ID09PSB0YXJnZXRVbml0KSB7XG4gICAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShxdWFudGl0eS51bml0LCBxdWFudGl0eS52YWx1ZSlcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRCYXNlRmFjdG9yID0gdGhpcy51bml0U2VydmljZS5nZXRUb0Jhc2VGYWN0b3IodGFyZ2V0VW5pdClcblxuICAgIGlmICh0YXJnZXRCYXNlRmFjdG9yID4gMCkge1xuICAgICAgcmV0dXJuIFF1YW50aXR5LmZyb20odGFyZ2V0VW5pdCwgdGhpcy50b0Jhc2VVbml0VmFsdWUocXVhbnRpdHkpIC8gdGFyZ2V0QmFzZUZhY3RvcilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgJ0ZhaWxlZCB0byBjb252ZXJ0IHF1YW50aXR5IHRvIHRhcmdldCB1bml0OicgKyB0YXJnZXRVbml0ICsgJy4gUXVhbnRpdHk6ICcsXG4gICAgICAgIHF1YW50aXR5XG4gICAgICApXG4gICAgICByZXR1cm4gcXVhbnRpdHlcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5OiBRdWFudGl0eSk6IG51bWJlciB7XG4gICAgY29uc3QgdGFyZ2V0QmFzZUZhY3RvciA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VG9CYXNlRmFjdG9yKHF1YW50aXR5LnVuaXQpXG4gICAgcmV0dXJuIHF1YW50aXR5LnZhbHVlICogdGFyZ2V0QmFzZUZhY3RvclxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBxdWFudGl0eSBpbiBhIG5vcm1hbGl6ZWQgZm9ybS5cbiAgICogQSBjYWNoZSBpcyB1c2VkIHRvIHJlZHVjZSBjYWxjdWxhdGlvbnMuXG4gICAqXG4gICAqIDg1MDAga2cgLT4gOC41IHRcbiAgICogOTAwMDAwMCBtbSAtPiA5IGttXG4gICAqIDEyMTUgbSAtPiAxLjIga21cbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXR5XG4gICAqL1xuICBwdWJsaWMgbm9ybWFsaXplKHF1YW50aXR5OiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICAvLyBDaGVjayBjYWNoZVxuICAgIGNvbnN0IGNhY2hlZEl0ZW0gPSB0aGlzLmNhY2hlTG9va3VwKHF1YW50aXR5KVxuXG4gICAgLy8gVmFsdWUgaXMgaW4gY2FjaGVcbiAgICBpZiAoY2FjaGVkSXRlbSkge1xuICAgICAgcmV0dXJuIGNhY2hlZEl0ZW1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdGFyZ2V0UXVhbnRpdHkgPSB0aGlzLm5vcm1hbGl6ZUludGVybmFsKHF1YW50aXR5KVxuXG4gICAgICAvLyBVcGRhdGUgY2FjaGVcbiAgICAgIHRoaXMuY2FjaGVVcGRhdGUocXVhbnRpdHksIHRhcmdldFF1YW50aXR5KVxuXG4gICAgICByZXR1cm4gdGFyZ2V0UXVhbnRpdHlcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdHJhbnNmb3JtUXVhbnRpdHkoXG4gICAgcXVhbnRpdHk6IFF1YW50aXR5LFxuICAgIG5vcm1hbGl6ZTogYm9vbGVhbiA9IHRydWUsXG4gICAgdGFyZ2V0VW5pdD86IFVuaXQgfCBzdHJpbmdcbiAgKTogUXVhbnRpdHkge1xuICAgIGlmICghcXVhbnRpdHkpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZSkge1xuICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplKHF1YW50aXR5KVxuICAgIH0gZWxzZSBpZiAodGFyZ2V0VW5pdCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvVW5pdChxdWFudGl0eSwgPFVuaXQ+dGFyZ2V0VW5pdClcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHF1YW50aXR5XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvcm1hdFF1YW50aXR5KFxuICAgIHF1YW50aXR5OiBRdWFudGl0eSB8IHVuZGVmaW5lZCxcbiAgICBsb2NhbGU6IHN0cmluZyxcbiAgICBub3JtYWxpemU/OiBib29sZWFuIHwgUXVhbnRpdHlQaXBlT3B0aW9ucyxcbiAgICB0YXJnZXRVbml0PzogVW5pdCB8IHN0cmluZyxcbiAgICBkaWdpdHNJbmZvPzogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgZGlnaXRzSW5mbyB8fD0gRWxkZXJRdWFudGl0eVNlcnZpY2UuREVGQVVMVF9ESUdJVFNcblxuICAgIGlmICghcXVhbnRpdHkpIHtcbiAgICAgIHJldHVybiBFbGRlclF1YW50aXR5U2VydmljZS5FTVBUWV9TVFJJTkdcbiAgICB9XG4gICAgY29uc3QgdXNlck9wdGlvbnMgPSBFbGRlclF1YW50aXR5U2VydmljZS5kZXRlcm1pbmVVc2VyT3B0aW9ucyhub3JtYWxpemUsIHRhcmdldFVuaXQsIGRpZ2l0c0luZm8pXG5cbiAgICBjb25zdCBxdWFudGl0eVRvRGlzcGxheTogUXVhbnRpdHkgPSB0aGlzLnRyYW5zZm9ybVF1YW50aXR5KFxuICAgICAgcXVhbnRpdHksXG4gICAgICB1c2VyT3B0aW9ucy5ub3JtYWxpemUsXG4gICAgICB1c2VyT3B0aW9ucy50YXJnZXRVbml0XG4gICAgKVxuICAgIGNvbnN0IG51bWJlciA9IHRoaXMuc3RyVG9OdW1iZXIocXVhbnRpdHlUb0Rpc3BsYXkudmFsdWUpXG4gICAgY29uc3Qgc3VmZml4ID0gdGhpcy5kZXRlcm1pbmVTdWZmaXgodXNlck9wdGlvbnMsIHF1YW50aXR5VG9EaXNwbGF5KVxuICAgIHJldHVybiBmb3JtYXROdW1iZXIobnVtYmVyLCBsb2NhbGUsIHVzZXJPcHRpb25zLmRpZ2l0c0luZm8pICsgc3VmZml4XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIG5vcm1hbGl6ZUludGVybmFsKHF1YW50aXR5OiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICAvLyBHaXZlbiBxdWFudGl0eSB2YWx1ZSBpbiBiYXNlIHVuaXRcblxuICAgIGNvbnN0IGRpbWVuc2lvbiA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VW5pdERpbWVuc2lvbihxdWFudGl0eS51bml0KVxuXG4gICAgaWYgKCFkaW1lbnNpb24pIHtcbiAgICAgIHJldHVybiBxdWFudGl0eVxuICAgIH1cblxuICAgIGNvbnN0IGJhc2VWYWx1ZSA9IHRoaXMudG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5KVxuXG4gICAgbGV0IHN1aXRhYmxlVW5pdDogVW5pdEluZm9cblxuICAgIGNvbnN0IGRpbWVuc2lvblVuaXRzID0gdGhpcy51bml0U2VydmljZS5nZXRVbml0SW5mb3NCeURpbWVuc2lvbihkaW1lbnNpb24pXG5cbiAgICBpZiAoZGltZW5zaW9uVW5pdHMpIHtcbiAgICAgIGNvbnN0IGZhY3RvclNvcnRlZFVuaXRzID0gZGltZW5zaW9uVW5pdHMuc29ydCgoYSwgYikgPT4gYi50b0Jhc2VGYWN0b3IgLSBhLnRvQmFzZUZhY3RvcilcblxuICAgICAgZm9yIChjb25zdCB1bml0SW5mbyBvZiBmYWN0b3JTb3J0ZWRVbml0cykge1xuICAgICAgICBjb25zdCBzaWduZWRCYXNlVmFsdWUgPSBiYXNlVmFsdWUgPCAwID8gYmFzZVZhbHVlICogLTEgOiBiYXNlVmFsdWVcbiAgICAgICAgaWYgKHVuaXRJbmZvLnRvQmFzZUZhY3RvciA8PSBzaWduZWRCYXNlVmFsdWUpIHtcbiAgICAgICAgICBzdWl0YWJsZVVuaXQgPSB1bml0SW5mb1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICdDb3VsZCBub3QgZmluZCBEaW1lbnNpb24gaW5mbyBmb3IgJyArXG4gICAgICAgICAgZGltZW5zaW9uICtcbiAgICAgICAgICAnLiAoJyArXG4gICAgICAgICAgcXVhbnRpdHkudW5pdCArXG4gICAgICAgICAgJyAtLT4gJyArXG4gICAgICAgICAgZGltZW5zaW9uICtcbiAgICAgICAgICAnKSdcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIXN1aXRhYmxlVW5pdCkge1xuICAgICAgcmV0dXJuIHF1YW50aXR5XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFRvQmFzZSA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VG9CYXNlRmFjdG9yKHF1YW50aXR5LnVuaXQpXG5cbiAgICAvLyBFbnN1cmUgd2UgcHJlZmVyIHRoZSBpbml0aWFsIHVuaXQgaWYgdGhlIGFjdHVhbCB2YWx1ZSBpcyBub3QgYWZmZWN0ZWQuXG4gICAgLy8gVGhpcyBoZWxwcyB0byBiZSBjb25zaXN0ZW50IGFuZCBkaXNwbGF5IHRoZSBhY3R1YWwgdW5pdCBpbiByYXJlIGNhc2VzIHdoZW4gbXVsdGlwbGUgdW5pdCBhbHRlcm5hdGl2ZXMgZXhpc3QgKHNhbWUgZmFjdG9yKVxuICAgIGlmIChzdWl0YWJsZVVuaXQudG9CYXNlRmFjdG9yID09PSBjdXJyZW50VG9CYXNlKSB7XG4gICAgICByZXR1cm4gcXVhbnRpdHlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvVW5pdChxdWFudGl0eSwgc3VpdGFibGVVbml0LnVuaXQpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRRdWFudGl0eUlkZW50aWZpZXIocXVhbnRpdHk6IFF1YW50aXR5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcXVhbnRpdHkudmFsdWUgKyAnLScgKyBxdWFudGl0eS51bml0XG4gIH1cblxuICAvKipcbiAgICogQWRhcHRlZCBmcm9tIEBhbmd1bGFyL2NvbW1vbiBudW1iZXJfcGlwZS50c1xuICAgKi9cbiAgcHJpdmF0ZSBzdHJUb051bWJlcih2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogbnVtYmVyIHtcbiAgICAvLyBDb252ZXJ0IHN0cmluZ3MgdG8gbnVtYmVyc1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFpc05hTihOdW1iZXIodmFsdWUpIC0gcGFyc2VGbG9hdCh2YWx1ZSkpKSB7XG4gICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3ZhbHVlfSBpcyBub3QgYSBudW1iZXJgKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGRldGVybWluZVVzZXJPcHRpb25zKFxuICAgIG5vcm1hbGl6ZTogYm9vbGVhbiB8IFF1YW50aXR5UGlwZU9wdGlvbnMsXG4gICAgdGFyZ2V0VW5pdDogVW5pdCB8IHN0cmluZyxcbiAgICBkaWdpdHNJbmZvOiBzdHJpbmdcbiAgKTogUXVhbnRpdHlQaXBlT3B0aW9ucyB7XG4gICAgY29uc3QgdXNlck9wdGlvbnMgPVxuICAgICAgbm9ybWFsaXplID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIG5vcm1hbGl6ZSA9PT0gJ2Jvb2xlYW4nXG4gICAgICAgID8gPFF1YW50aXR5UGlwZU9wdGlvbnM+e1xuICAgICAgICAgICAgbm9ybWFsaXplOiBub3JtYWxpemUsXG4gICAgICAgICAgICB0YXJnZXRVbml0OiB0YXJnZXRVbml0LFxuICAgICAgICAgICAgZGlnaXRzSW5mbzogZGlnaXRzSW5mbyxcbiAgICAgICAgICB9XG4gICAgICAgIDogbm9ybWFsaXplXG5cbiAgICBpZiAodXNlck9wdGlvbnMubm9ybWFsaXplID09PSB1bmRlZmluZWQgJiYgIXVzZXJPcHRpb25zLnRhcmdldFVuaXQpIHtcbiAgICAgIHVzZXJPcHRpb25zLm5vcm1hbGl6ZSA9IHRydWVcbiAgICB9XG5cbiAgICBpZiAodXNlck9wdGlvbnMuZGlnaXRzSW5mbyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1c2VyT3B0aW9ucy5kaWdpdHNJbmZvID0gRWxkZXJRdWFudGl0eVNlcnZpY2UuREVGQVVMVF9ESUdJVFNcbiAgICB9XG4gICAgcmV0dXJuIHVzZXJPcHRpb25zXG4gIH1cblxuICBwcml2YXRlIGRldGVybWluZVN1ZmZpeCh1c2VyT3B0aW9uczogUXVhbnRpdHlQaXBlT3B0aW9ucywgcXVhbnRpdHlUb0Rpc3BsYXk6IFF1YW50aXR5KSB7XG4gICAgaWYgKCF1c2VyT3B0aW9ucy5oaWRlVW5pdCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgRWxkZXJRdWFudGl0eVNlcnZpY2UuU1BBQ0VfU1RSSU5HICsgdGhpcy51bml0U2VydmljZS5nZXRVbml0U3ltYm9sKHF1YW50aXR5VG9EaXNwbGF5LnVuaXQpXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgfVxufVxuIl19
|