@provoly/dashboard 0.22.5 → 0.22.7
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/README.md +0 -2
- package/admin/components/admin-abac-rules/store/abac-rules.effects.d.ts +2 -2
- package/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.d.ts +8 -4
- package/admin/components/admin-classes/store/admin-class.effects.d.ts +2 -2
- package/admin/components/admin-fields/store/fields.effects.d.ts +2 -2
- package/admin/store/admin.effects.d.ts +3 -3
- package/components/metadata-editor/store/metadata.effects.d.ts +6 -6
- package/esm2022/admin/admin-routing.module.mjs +5 -5
- package/esm2022/admin/admin.module.mjs +6 -6
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.effects.mjs +5 -5
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.service.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +11 -10
- package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +47 -33
- package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +5 -5
- package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +5 -5
- package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +5 -5
- package/esm2022/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.mjs +5 -5
- package/esm2022/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.mjs +4 -4
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +5 -5
- package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +5 -5
- package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +5 -5
- package/esm2022/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.mjs +5 -5
- package/esm2022/admin/components/admin-environment/admin-environment.component.mjs +5 -5
- package/esm2022/admin/components/admin-environment/store/environment.effects.mjs +5 -5
- package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +5 -5
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +5 -5
- package/esm2022/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +5 -5
- package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +5 -5
- package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +5 -5
- package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +5 -5
- package/esm2022/admin/components/admin-links/admin-links.component.mjs +5 -5
- package/esm2022/admin/components/admin-links/store/links.effects.mjs +5 -5
- package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +6 -6
- package/esm2022/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/admin-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.mjs +5 -5
- package/esm2022/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-rules/admin-metadata-rules.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.mjs +4 -4
- package/esm2022/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.effects.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +5 -5
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +5 -5
- package/esm2022/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.mjs +5 -5
- package/esm2022/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.mjs +4 -4
- package/esm2022/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.mjs +5 -5
- package/esm2022/admin/components/admin-predicates/admin-predicates.component.mjs +5 -5
- package/esm2022/admin/components/admin-predicates/store/predicates.effects.mjs +5 -5
- package/esm2022/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.mjs +5 -5
- package/esm2022/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +5 -5
- package/esm2022/admin/components/admin-title/admin-title.component.mjs +5 -5
- package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +5 -5
- package/esm2022/admin/components/admin-user/admin-user.component.mjs +5 -5
- package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +5 -5
- package/esm2022/admin/components/admin.component.mjs +5 -5
- package/esm2022/admin/components/association/association.component.mjs +4 -4
- package/esm2022/admin/store/admin.effects.mjs +5 -5
- package/esm2022/admin/store/admin.reducer.mjs +1 -1
- package/esm2022/admin/store/admin.selectors.mjs +1 -1
- package/esm2022/admin/store/admin.service.mjs +5 -5
- package/esm2022/components/card/card.component.mjs +20 -20
- package/esm2022/components/card/card.module.mjs +5 -5
- package/esm2022/components/checkbox/checkbox.component.mjs +5 -5
- package/esm2022/components/checkbox/checkbox.module.mjs +5 -5
- package/esm2022/components/color-picker/color-picker.component.mjs +5 -5
- package/esm2022/components/color-picker/color-picker.module.mjs +5 -5
- package/esm2022/components/expand-panel/expand-panel.component.mjs +7 -7
- package/esm2022/components/expand-panel/expand-panel.module.mjs +5 -5
- package/esm2022/components/filter/filter.module.mjs +5 -5
- package/esm2022/components/filter/filter.pipe.mjs +4 -4
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +5 -5
- package/esm2022/components/metadata-editor/metadata-editor.module.mjs +5 -5
- package/esm2022/components/metadata-editor/store/metadata.effects.mjs +5 -5
- package/esm2022/components/metadata-editor/store/metadata.service.mjs +5 -5
- package/esm2022/components/metadata-editor/style/css.component.mjs +4 -4
- package/esm2022/components/scheme-picker/scheme-picker.component.mjs +5 -5
- package/esm2022/components/scheme-picker/scheme-picker.module.mjs +5 -5
- package/esm2022/components/scheme-picker/scheme.service.mjs +5 -5
- package/esm2022/components/sinceDate/sinceDate.module.mjs +5 -5
- package/esm2022/components/sinceDate/sinceDate.pipe.mjs +5 -5
- package/esm2022/components/stepper/step/step.component.mjs +4 -4
- package/esm2022/components/stepper/step-title.directive.mjs +5 -5
- package/esm2022/components/stepper/stepper.component.mjs +4 -4
- package/esm2022/components/stepper/stepper.module.mjs +5 -5
- package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +5 -5
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +5 -5
- package/esm2022/dataset/components/dataset.component.mjs +5 -5
- package/esm2022/dataset/dataset.module.mjs +6 -6
- package/esm2022/dataset/style/css.component.mjs +4 -4
- package/esm2022/filters/autocomplete/autocomplete.component.mjs +5 -5
- package/esm2022/filters/autocomplete/autocomplete.module.mjs +5 -5
- package/esm2022/filters/autocomplete/style/css.component.mjs +4 -4
- package/esm2022/filters/date/date-filter.component.mjs +5 -5
- package/esm2022/filters/date/date-filter.module.mjs +5 -5
- package/esm2022/filters/list/list-filter.component.mjs +5 -5
- package/esm2022/filters/list/list-filter.module.mjs +5 -5
- package/esm2022/filters/list/style/css.component.mjs +4 -4
- package/esm2022/filters/number/number-filter.component.mjs +5 -5
- package/esm2022/filters/number/number-filter.module.mjs +5 -5
- package/esm2022/filters/text/text-filter.component.mjs +5 -5
- package/esm2022/filters/text/text-filter.module.mjs +5 -5
- package/esm2022/import/components/import.component.mjs +5 -5
- package/esm2022/import/import-routing.module.mjs +5 -5
- package/esm2022/import/import.module.mjs +6 -6
- package/esm2022/import/store/import.effects.mjs +5 -5
- package/esm2022/import/store/import.service.mjs +5 -5
- package/esm2022/import/style/css.component.mjs +4 -4
- package/esm2022/lib/core/access/access.directive.mjs +6 -6
- package/esm2022/lib/core/access/access.guard.mjs +4 -4
- package/esm2022/lib/core/access/access.service.mjs +5 -5
- package/esm2022/lib/core/access/access.utils.mjs +1 -1
- package/esm2022/lib/core/auth/geoAuth.service.mjs +5 -5
- package/esm2022/lib/core/components/about/about.component.mjs +6 -6
- package/esm2022/lib/core/components/about/pry-about.module.mjs +5 -5
- package/esm2022/lib/core/components/accordion/accordion-item/accordion-item.component.mjs +5 -5
- package/esm2022/lib/core/components/accordion/accordion.component.mjs +5 -5
- package/esm2022/lib/core/components/base-layout/base-layout.component.mjs +5 -5
- package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +6 -6
- package/esm2022/lib/core/components/base-toolbox/base-toolbox.component.mjs +4 -4
- package/esm2022/lib/core/components/base-toolbox-action/base-toolbox-action.component.mjs +5 -5
- package/esm2022/lib/core/components/chips-selector/chips-selector.component.mjs +5 -5
- package/esm2022/lib/core/components/date-picker/date-picker.component.mjs +4 -4
- package/esm2022/lib/core/components/date-picker/date-picker.module.mjs +5 -5
- package/esm2022/lib/core/components/date-picker/date-range-highlight.pipe.mjs +4 -4
- package/esm2022/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.mjs +5 -5
- package/esm2022/lib/core/components/date-picker/time-picker/time-picker.component.mjs +4 -4
- package/esm2022/lib/core/components/edit-input/edit-input.component.mjs +5 -5
- package/esm2022/lib/core/components/edit-input/edit-input.module.mjs +5 -5
- package/esm2022/lib/core/components/ellipsis.directive.mjs +5 -5
- package/esm2022/lib/core/components/get-secured-image/get-secured-image.pipe.mjs +5 -5
- package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.mjs +5 -5
- package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.mjs +5 -5
- package/esm2022/lib/core/components/icon/icon.component.mjs +5 -5
- package/esm2022/lib/core/components/icon/icon.module.mjs +5 -5
- package/esm2022/lib/core/components/modal/modal.component.mjs +4 -4
- package/esm2022/lib/core/components/modal/pry-modal.module.mjs +5 -5
- package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +5 -5
- package/esm2022/lib/core/components/modal-status/modal-status.module.mjs +6 -6
- package/esm2022/lib/core/components/nq-color-selector/nq-color-selector.component.mjs +5 -5
- package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +6 -6
- package/esm2022/lib/core/components/overlay/dialog-ref.mjs +1 -1
- package/esm2022/lib/core/components/overlay/dialog.service.mjs +5 -5
- package/esm2022/lib/core/components/overlay/overlay.directive.mjs +5 -5
- package/esm2022/lib/core/components/overlay/overlay.module.mjs +5 -5
- package/esm2022/lib/core/components/range/range.component.mjs +5 -5
- package/esm2022/lib/core/components/range/range.module.mjs +5 -5
- package/esm2022/lib/core/components/select/select-a11y.service.mjs +1 -1
- package/esm2022/lib/core/components/select/select.component.mjs +9 -8
- package/esm2022/lib/core/components/select/select.module.mjs +7 -6
- package/esm2022/lib/core/components/select-image/select-image.component.mjs +6 -6
- package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +5 -5
- package/esm2022/lib/core/components/share/share.component.mjs +5 -5
- package/esm2022/lib/core/components/share/share.module.mjs +5 -5
- package/esm2022/lib/core/components/snackbar/snackbar/snackbar.component.mjs +5 -5
- package/esm2022/lib/core/components/snackbar/snackbar.module.mjs +5 -5
- package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +5 -5
- package/esm2022/lib/core/components/sort/sort-data.pipe.mjs +4 -4
- package/esm2022/lib/core/components/sort/sort-header/sort-header.component.mjs +5 -5
- package/esm2022/lib/core/components/sort/sort-header.directive.mjs +4 -4
- package/esm2022/lib/core/components/sort/sort-table.directive.mjs +4 -4
- package/esm2022/lib/core/components/sort/sort.module.mjs +5 -5
- package/esm2022/lib/core/components/tabs/tab-group.component.mjs +5 -5
- package/esm2022/lib/core/components/tabs/tab.component.mjs +5 -5
- package/esm2022/lib/core/components/toggle/toggle.component.mjs +5 -5
- package/esm2022/lib/core/components/toggle/toggle.module.mjs +5 -5
- package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +5 -5
- package/esm2022/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.mjs +5 -5
- package/esm2022/lib/core/components/upload/upload.component.mjs +5 -5
- package/esm2022/lib/core/core.module.mjs +6 -6
- package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +5 -5
- package/esm2022/lib/core/i18n/deep-merge.function.mjs +1 -1
- package/esm2022/lib/core/i18n/fr.translations.mjs +2 -2
- package/esm2022/lib/core/i18n/i18n.module.mjs +5 -5
- package/esm2022/lib/core/i18n/i18n.pipe.mjs +5 -5
- package/esm2022/lib/core/i18n/i18n.service.mjs +5 -5
- package/esm2022/lib/core/model/display-options.interface.mjs +1 -1
- package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +5 -5
- package/esm2022/lib/core/store/aggregation/base-aggregation.service.mjs +4 -4
- package/esm2022/lib/core/store/aggregation/frontend-aggregation/aggregation-utils.class.mjs +1 -2
- package/esm2022/lib/core/store/aggregation/frontend-aggregation/frontend-aggregation.service.mjs +5 -5
- package/esm2022/lib/core/store/category/category.effects.mjs +5 -5
- package/esm2022/lib/core/store/category/category.service.mjs +5 -5
- package/esm2022/lib/core/store/class/class.effects.mjs +5 -5
- package/esm2022/lib/core/store/class/class.selectors.mjs +1 -1
- package/esm2022/lib/core/store/class/class.service.mjs +5 -5
- package/esm2022/lib/core/store/config/config.effects.mjs +5 -5
- package/esm2022/lib/core/store/config/config.selectors.mjs +1 -1
- package/esm2022/lib/core/store/config/config.service.mjs +5 -5
- package/esm2022/lib/core/store/config/open-map-tiles.service.mjs +5 -5
- package/esm2022/lib/core/store/context-menu/context-menu.effects.mjs +5 -5
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +5 -5
- package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +1 -1
- package/esm2022/lib/core/store/data-source/data-source.service.mjs +5 -5
- package/esm2022/lib/core/store/field/field.effects.mjs +5 -5
- package/esm2022/lib/core/store/field/field.selectors.mjs +1 -1
- package/esm2022/lib/core/store/field/field.service.mjs +5 -5
- package/esm2022/lib/core/store/image/image.effects.mjs +5 -5
- package/esm2022/lib/core/store/image/image.selectors.mjs +1 -1
- package/esm2022/lib/core/store/image/image.service.mjs +5 -5
- package/esm2022/lib/core/store/item/item.effects.mjs +5 -5
- package/esm2022/lib/core/store/item/item.service.mjs +5 -5
- package/esm2022/lib/core/store/raw/raw.service.mjs +5 -5
- package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +5 -5
- package/esm2022/lib/core/store/relation-types/relation-types.service.mjs +5 -5
- package/esm2022/lib/core/store/search/lat-lon-to-geographic-field-transformation.function.mjs +1 -1
- package/esm2022/lib/core/store/search/search.effects.mjs +5 -5
- package/esm2022/lib/core/store/search/search.service.mjs +5 -5
- package/esm2022/lib/core/symbol/symbol.service.mjs +5 -5
- package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +5 -5
- package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +5 -5
- package/esm2022/lib/core/ws/websocket.service.mjs +5 -5
- package/esm2022/lib/dashboard/action-bus/effect/action-bus.effects.mjs +5 -5
- package/esm2022/lib/dashboard/action-bus/service/bus.service.mjs +5 -5
- package/esm2022/lib/dashboard/base-widget.module.mjs +5 -5
- package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/metadata/metadata.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/solve-collisions.function.mjs +1 -1
- package/esm2022/lib/dashboard/components/subscriptionner.directive.mjs +4 -4
- package/esm2022/lib/dashboard/components/vizualize-raw/vizualize-raw.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/header/resultset-size.pipe.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +6 -6
- package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/widget-filler/widget-filler.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.mjs +21 -6
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.mjs +5 -5
- package/esm2022/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.mjs +1 -1
- package/esm2022/lib/dashboard/dashboard.module.mjs +6 -6
- package/esm2022/lib/dashboard/filter/base-filter.component.mjs +5 -5
- package/esm2022/lib/dashboard/filter/base-filter.module.mjs +5 -5
- package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +6 -6
- package/esm2022/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.mjs +5 -5
- package/esm2022/lib/dashboard/filter/filter-factory.service.mjs +6 -6
- package/esm2022/lib/dashboard/filter/filter-loader.function.mjs +1 -1
- package/esm2022/lib/dashboard/filter/style/css.component.mjs +4 -4
- package/esm2022/lib/dashboard/item-utils.mjs +2 -2
- package/esm2022/lib/dashboard/resultset-utils.mjs +1 -1
- package/esm2022/lib/dashboard/store/dashboard-init.service.mjs +6 -6
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +6 -6
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +1 -1
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +1 -4
- package/esm2022/lib/dashboard/store/manifest.service.mjs +5 -5
- package/esm2022/lib/dashboard/store/refresh.service.mjs +16 -11
- package/esm2022/lib/dashboard/store/title.service.mjs +5 -5
- package/esm2022/lib/dashboard/store/wms.service.mjs +5 -5
- package/esm2022/lib/dashboard/tooltip/base-tooltip.component.mjs +4 -4
- package/esm2022/lib/dashboard/tooltip/base-tooltip.module.mjs +5 -5
- package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +4 -4
- package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +6 -6
- package/esm2022/lib/dashboard/tooltip/tooltip-loader.function.mjs +1 -1
- package/esm2022/lib/dashboard/widget-loader.function.mjs +1 -1
- package/esm2022/notification/components/notification/content/notification-content.component.mjs +5 -5
- package/esm2022/notification/components/notification/notification.component.mjs +5 -5
- package/esm2022/notification/notification.module.mjs +6 -6
- package/esm2022/notification/store/notification.effects.mjs +5 -5
- package/esm2022/notification/store/notification.service.mjs +5 -5
- package/esm2022/notification/style/css.component.mjs +4 -4
- package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +5 -5
- package/esm2022/pipeline/components/pipeline-editor/graph-serializer.utils.mjs +1 -1
- package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +5 -5
- package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +5 -5
- package/esm2022/pipeline/components/pipeline-properties-panel.component.mjs +4 -4
- package/esm2022/pipeline/factory/pipeline-component-factory.service.mjs +5 -5
- package/esm2022/pipeline/node-class/base-node.class.mjs +1 -1
- package/esm2022/pipeline/pipeline.module.mjs +6 -6
- package/esm2022/pipeline/store/pipeline.effects.mjs +5 -5
- package/esm2022/pipeline/store/pipeline.service.mjs +5 -5
- package/esm2022/pipeline/style/css.component.mjs +4 -4
- package/esm2022/pipeline-components/filter/component/filter.component.mjs +5 -5
- package/esm2022/pipeline-components/filter/filter.module.mjs +6 -6
- package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +5 -5
- package/esm2022/pipeline-components/input-datasource/input-datasource.module.mjs +6 -6
- package/esm2022/pipeline-components/noop/component/noop.component.mjs +5 -5
- package/esm2022/pipeline-components/noop/noop.module.mjs +6 -6
- package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +5 -5
- package/esm2022/pipeline-components/output-dataset/output-dataset.module.mjs +6 -6
- package/esm2022/pipeline-components/subgraph/component/empty.component.mjs +5 -5
- package/esm2022/pipeline-components/subgraph/node-class/sub-graph-node.class.mjs +1 -1
- package/esm2022/pipeline-components/subgraph/subgraph.module.mjs +6 -6
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +6 -6
- package/esm2022/presentation/components/presentation.component.mjs +6 -6
- package/esm2022/presentation/components/title-presentation/title-presentation.component.mjs +5 -5
- package/esm2022/presentation/presentation.module.mjs +6 -6
- package/esm2022/presentation/style/css.component.mjs +5 -5
- package/esm2022/restitution/components/restitution/restitution.component.mjs +5 -5
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +6 -6
- package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +5 -5
- package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +5 -5
- package/esm2022/restitution/restitution.module.mjs +6 -6
- package/esm2022/restitution/style/css.component.mjs +5 -5
- package/esm2022/search/components/choose-widget/choose-widget.component.mjs +5 -5
- package/esm2022/search/components/edit-named-query/edit-named-query.component.mjs +5 -5
- package/esm2022/search/components/edit-named-query-modal/edit-named-query-modal.component.mjs +5 -5
- package/esm2022/search/components/save-query/save-query.component.mjs +6 -6
- package/esm2022/search/components/save-query-button/save-query-button.component.mjs +5 -5
- package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +5 -5
- package/esm2022/search/search-fulltext/store/search-fulltext.effects.mjs +5 -5
- package/esm2022/search/search-fulltext/store/search-fulltext.service.mjs +4 -4
- package/esm2022/search/search-home/search-home.component.mjs +5 -5
- package/esm2022/search/search-mono-class/components/search-composed/search-composed.component.mjs +5 -5
- package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +5 -5
- package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +5 -5
- package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +5 -5
- package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +5 -5
- package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +5 -5
- package/esm2022/search/search-mono-class/store/search-mono-class.selectors.mjs +1 -1
- package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +4 -4
- package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +5 -5
- package/esm2022/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.mjs +5 -5
- package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +5 -5
- package/esm2022/search/search-multi-class/store/search-multi-class.effects.mjs +5 -5
- package/esm2022/search/search-multi-class/store/search-multi-class.reducer.mjs +1 -1
- package/esm2022/search/search-multi-class/store/search-multi-class.selectors.mjs +1 -1
- package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +4 -4
- package/esm2022/search/search-tools/search-tools.component.mjs +5 -5
- package/esm2022/search/search.module.mjs +6 -6
- package/esm2022/search/style/css.component.mjs +5 -5
- package/esm2022/toolbox/components/automate-refresh/automate-refresh.component.mjs +13 -10
- package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +5 -5
- package/esm2022/toolbox/components/delete/delete.component.mjs +5 -5
- package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +5 -5
- package/esm2022/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.mjs +5 -5
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +5 -5
- package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +5 -5
- package/esm2022/toolbox/components/named-query/named-query.component.mjs +5 -5
- package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +20 -18
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +5 -5
- package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +5 -5
- package/esm2022/toolbox/components/share/share.component.mjs +5 -5
- package/esm2022/toolbox/components/switch-to-edit-content/switch-to-edit-content.component.mjs +5 -5
- package/esm2022/toolbox/components/toolbox-action/toolbox-action.component.mjs +5 -5
- package/esm2022/toolbox/components/toolbox-action-instanciator/toolbox-action-instanciator.component.mjs +5 -5
- package/esm2022/toolbox/components/toolbox.component.mjs +12 -9
- package/esm2022/toolbox/style/css.component.mjs +5 -5
- package/esm2022/toolbox/toolbox.module.mjs +5 -5
- package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +5 -5
- package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +5 -5
- package/esm2022/tooltips/cluster/cluster-tooltip.component.mjs +4 -4
- package/esm2022/tooltips/cluster/cluster-tooltip.module.mjs +5 -5
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +6 -6
- package/esm2022/widgets/widget-aggregated-chart/style/css.component.mjs +5 -5
- package/esm2022/widgets/widget-aggregated-chart/widget-aggregated-chart.module.mjs +6 -6
- package/esm2022/widgets/widget-chart/component/vega-error.handler.mjs +1 -1
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +6 -6
- package/esm2022/widgets/widget-chart/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-chart/widget-chart.module.mjs +6 -6
- package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +5 -5
- package/esm2022/widgets/widget-detail/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-detail/widget-detail.module.mjs +6 -6
- package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +7 -8
- package/esm2022/widgets/widget-graph/layout/simple.function.mjs +1 -1
- package/esm2022/widgets/widget-graph/style/css.component.mjs +5 -5
- package/esm2022/widgets/widget-graph/widget-graph.module.mjs +6 -6
- package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +5 -5
- package/esm2022/widgets/widget-iframe/messaging/iframe-messaging.service.mjs +4 -4
- package/esm2022/widgets/widget-iframe/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-iframe/widget-iframe.module.mjs +6 -6
- package/esm2022/widgets/widget-image/component/widget-image.component.mjs +5 -5
- package/esm2022/widgets/widget-image/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-image/widget-image.module.mjs +5 -5
- package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +4 -4
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +7 -7
- package/esm2022/widgets/widget-map/interaction/interaction-manager.class.mjs +1 -1
- package/esm2022/widgets/widget-map/interaction/layer-slider.class.mjs +1 -1
- package/esm2022/widgets/widget-map/interaction/selection-interaction.class.mjs +1 -1
- package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +5 -5
- package/esm2022/widgets/widget-map/pipe/widget-map-legend-url.pipe.mjs +5 -5
- package/esm2022/widgets/widget-map/style/css.component.mjs +5 -5
- package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +1 -1
- package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +1 -1
- package/esm2022/widgets/widget-map/utils/xml-utils.class.mjs +1 -1
- package/esm2022/widgets/widget-map/widget-map.module.mjs +6 -6
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +5 -5
- package/esm2022/widgets/widget-table/expand-value/detach-row.directive.mjs +5 -5
- package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +4 -4
- package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +5 -5
- package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +5 -5
- package/esm2022/widgets/widget-table/resizable/resizable.component.mjs +4 -4
- package/esm2022/widgets/widget-table/resizable/resizable.directive.mjs +6 -6
- package/esm2022/widgets/widget-table/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-table/widget-table.module.mjs +6 -6
- package/esm2022/widgets/widget-template/component/widget-template.component.mjs +5 -5
- package/esm2022/widgets/widget-template/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-template/widget-template.module.mjs +6 -6
- package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +5 -5
- package/esm2022/widgets/widget-tile/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-tile/widget-tile.module.mjs +6 -6
- package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +6 -6
- package/esm2022/widgets/widget-vega/style/css.component.mjs +4 -4
- package/esm2022/widgets/widget-vega/widget-vega.module.mjs +6 -6
- package/fesm2022/provoly-dashboard-admin.mjs +380 -365
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-card.mjs +23 -23
- package/fesm2022/provoly-dashboard-components-card.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-checkbox.mjs +8 -8
- package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-color-picker.mjs +8 -8
- package/fesm2022/provoly-dashboard-components-color-picker.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-expand-panel.mjs +10 -10
- package/fesm2022/provoly-dashboard-components-expand-panel.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-filter.mjs +7 -7
- package/fesm2022/provoly-dashboard-components-filter.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +19 -19
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +12 -12
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs +8 -8
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-stepper.mjs +14 -14
- package/fesm2022/provoly-dashboard-components-stepper.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +20 -20
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +11 -11
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-date.mjs +8 -8
- package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-list.mjs +11 -11
- package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-number.mjs +8 -8
- package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-text.mjs +8 -8
- package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +24 -24
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-notification.mjs +24 -24
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +9 -9
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +9 -9
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs +9 -9
- package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +9 -9
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs +9 -9
- package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline.mjs +35 -35
- package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +23 -23
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +26 -26
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-search.mjs +95 -95
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +98 -90
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +8 -8
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-tooltips-cluster.mjs +7 -7
- package/fesm2022/provoly-dashboard-tooltips-cluster.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +14 -14
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +13 -13
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +12 -12
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +15 -16
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +15 -15
- package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-image.mjs +11 -11
- package/fesm2022/provoly-dashboard-widgets-widget-image.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +26 -26
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +35 -35
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +12 -12
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +12 -12
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +13 -13
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +558 -542
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/components/select/select.module.d.ts +2 -1
- package/lib/core/store/image/image.effects.d.ts +3 -3
- package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +1 -1
- package/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.d.ts +8 -1
- package/lib/dashboard/store/dashboard.effects.d.ts +7 -7
- package/lib/dashboard/store/dashboard.selectors.d.ts +0 -13
- package/lib/dashboard/store/refresh.service.d.ts +3 -1
- package/package.json +40 -40
- package/presentation/style/_o-pry-presentation.scss +0 -3
- package/schematics/ng-add/index.js.map +1 -1
- package/search/search-mono-class/store/search-mono-class.effects.d.ts +3 -3
- package/styles/components/_a-chip.scss +6 -0
- package/styles/components/_a-pry-select.scss +13 -0
- package/styles/components/_a-range-slider.scss +4 -5
- package/styles/components/_m-nav-links.scss +2 -7
- package/styles/components/_o-widget.scss +6 -0
- package/styles-theme/abstracts-theme/variables/_variables-colors.scss +4 -3
- package/styles-theme/base-theme/_typography.theme.scss +5 -2
- package/styles-theme/components-theme/_a-btn.theme.scss +3 -7
- package/styles-theme/components-theme/_a-label.theme.scss +1 -0
- package/styles-theme/components-theme/_a-pry-select.theme.scss +4 -6
- package/styles-theme/components-theme/_a-range-slider.theme.scss +16 -16
- package/styles-theme/components-theme/_a-table.theme.scss +2 -2
- package/styles-theme/components-theme/_m-btn-sorttable.theme.scss +3 -3
- package/styles-theme/components-theme/_m-nav-links.theme.scss +18 -0
- package/styles-theme/components-theme/_o-pry-presentation.theme.scss +9 -0
- package/styles-theme/components-theme/_o-tabs.theme.scss +1 -1
- package/styles-theme/layout-theme/_o-base-layout.theme.scss +1 -0
- package/styles-theme/main-theme.scss +1 -0
- package/toolbox/components/automate-refresh/automate-refresh.component.d.ts +3 -1
- package/toolbox/components/refresh-datasets/refresh-datasets.component.d.ts +3 -2
- package/widgets/widget-aggregated-chart/style/_o-widget-chart.scss +3 -0
- package/widgets/widget-graph/component/widget-graph.component.d.ts +0 -1
- package/widgets/widget-graph/style/_o-widget-graph.scss +14 -0
- package/schematics/ng-add/index.spec.d.ts +0 -1
- package/schematics/ng-add/index.spec.js +0 -87
- package/schematics/ng-add/index.spec.js.map +0 -1
- package/schematics/ng-update/version-0-13/index.spec.d.ts +0 -1
- package/schematics/ng-update/version-0-13/index.spec.js +0 -184
- package/schematics/ng-update/version-0-13/index.spec.js.map +0 -1
- package/schematics/ng-update/version-0-14/index.spec.d.ts +0 -1
- package/schematics/ng-update/version-0-14/index.spec.js +0 -51
- package/schematics/ng-update/version-0-14/index.spec.js.map +0 -1
- package/schematics/ng-update/version-0-15/index.spec.d.ts +0 -1
- package/schematics/ng-update/version-0-15/index.spec.js +0 -51
- package/schematics/ng-update/version-0-15/index.spec.js.map +0 -1
|
@@ -28,7 +28,7 @@ import * as i10 from "../datasource-selector/datasource-selector.component";
|
|
|
28
28
|
import * as i11 from "../../../../core/components/translate-id/translate-id.pipe";
|
|
29
29
|
import * as i12 from "../../../../core/i18n/i18n.pipe";
|
|
30
30
|
import * as i13 from "./resultset-size.pipe";
|
|
31
|
-
export const WIDGET_HEADER_HEIGHT =
|
|
31
|
+
export const WIDGET_HEADER_HEIGHT = 32;
|
|
32
32
|
export class PryWidgetHeaderComponent extends SubscriptionnerDirective {
|
|
33
33
|
set manifest(manifest) {
|
|
34
34
|
this.manifest$.next(manifest);
|
|
@@ -388,13 +388,13 @@ export class PryWidgetHeaderComponent extends SubscriptionnerDirective {
|
|
|
388
388
|
this.subscription?.unsubscribe();
|
|
389
389
|
this.openSub?.unsubscribe();
|
|
390
390
|
}
|
|
391
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
392
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: { manifest: "manifest", openData$: "openData$", additionalOptions: "additionalOptions", headerOptions: "headerOptions", displayCount: "displayCount", datasourceIds: "datasourceIds", widgetIndex: "widgetIndex" }, outputs: { manifestModified: "manifestModified" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }, { propertyName: "templateModal", first: true, predicate: ["templateModal"], descendants: true, read: TemplateRef }, { propertyName: "toggle", first: true, predicate: ["toggle"], descendants: true, read: TemplateRef }, { propertyName: "overlayMenu", first: true, predicate: ["overlayMenu"], descendants: true, read: TemplateRef }, { propertyName: "overlayCatalog", first: true, predicate: ["overlayCatalog"], descendants: true, read: TemplateRef }, { propertyName: "overlaySpot", first: true, predicate: ["overlaySpot"], descendants: true, read: TemplateRef }, { propertyName: "togglePanel", first: true, predicate: ["togglePanel"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "validate", first: true, predicate: ["validate"], descendants: true }, { propertyName: "validateCatalog", first: true, predicate: ["validateCatalog"], descendants: true }, { propertyName: "cancel", first: true, predicate: ["cancel"], descendants: true }, { propertyName: "crossCatalog", first: true, predicate: ["crossCatalog"], descendants: true }, { propertyName: "inputCatalog", first: true, predicate: ["inputCatalog"], descendants: true }, { propertyName: "menuList", first: true, predicate: ["menuList"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"o-widget__header\">\n <div class=\"o-widget__header__content\">\n <h2 class=\"o-widget__header__content__title\" *ngIf=\"(manifest$ | async)?.title; else querySelector\">\n {{ (manifest$ | async)?.title }}\n </h2>\n <ng-template #querySelector>\n <div *ngFor=\"let ds of usedDatasources$ | async\" class=\"o-widget__header__content__query\">\n <ng-container\n *ngIf=\"ds.id | translateId : { type: 'datasource', output: 'icon', noDefault: true } | async as url\"\n >\n <img [height]=\"20\" [src]=\"url\" [width]=\"20\" alt=\"\" class=\"o-widget__header__content__query__icon\" />\n </ng-container>\n <h3 class=\"o-widget__header__content__query__name\">{{ ds.name }}</h3>\n <h3 class=\"o-widget__header__content__query__name\" *ngIf=\"displayCount && !isGeo(ds)\">\n ({{ [ds.id] | resultSetSize | async }})\n </h3>\n </div>\n <div *ngIf=\"((usedDatasources$ | async) ?? []).length === 0\" class=\"o-widget__header__content__no-data\">\n <h2 class=\"o-widget__header__content__title\">{{ '@pry.widget.noData' | i18n }}</h2>\n </div>\n </ng-template>\n </div>\n <div class=\"m-btn-group\" *ngIf=\"displayContextMenu$ | async as options\">\n <button\n type=\"button\"\n id=\"dialog_Menu\"\n aria-controls=\"menu\"\n [attr.aria-expanded]=\"this.menu\"\n #togglePanel\n class=\"a-btn a-btn--more\"\n (click)=\"menuOpen($event)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.openMenuWidget' | i18n }}</span>\n </button>\n </div>\n</div>\n\n<ng-template #overlayMenu>\n <div class=\"m-context-menu\" *ngIf=\"displayContextMenu$ | async as options\">\n <ul\n class=\"m-context-menu__list\"\n #menuList\n id=\"menu\"\n role=\"menu\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_Menu\"\n (keydown.arrowDown)=\"onArrowDown()\"\n (keydown.arrowUp)=\"onArrowUp()\"\n (keydown.escape)=\"menuOpen()\"\n >\n <li\n class=\"m-context-menu__list__item\"\n role=\"none\"\n *ngIf=\"(manifest$ | async)?.datasource && (options === true || options['datasourceSelection'] === true)\"\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n tabindex=\"-1\"\n id=\"toggleActions\"\n (click)=\"toggleDatasourceSelection()\"\n *pryAccess=\"{ module: 'dashboard', page: 'widget', action: 'select_named_query' }\"\n class=\"a-btn\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"stack-fill\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.readSearch' | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"options === true || options!['parameters'] === true\">\n <ng-content></ng-content>\n </li>\n <ng-container *ngIf=\"options === true || options!['window'] === true\">\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngFor=\"let targetIndex of targetIndexes$ | async\">\n <button\n type=\"button\"\n (click)=\"moveInNewWindow(_widgetIndex, targetIndex)\"\n class=\"a-btn\"\n role=\"menuitem\"\n tabindex=\"-1\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"launch\"></pry-icon>\n {{\n (targetIndex !== -1 ? '@pry.widget.target.existing' : '@pry.widget.target.new')\n | i18n : { targetIndex: this.targetIndex + 1 }\n }}\n </button>\n </li>\n </ng-container>\n <li\n class=\"m-context-menu__list__item\"\n role=\"none\"\n *ngIf=\"hasGrid && (options === true || options!['changeSpot'] === true)\"\n >\n <button type=\"button\" role=\"menuitem\" (click)=\"toggleChangeSpot()\" class=\"a-btn\" tabindex=\"-1\">\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"move\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.changeSpot' | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"options === true || options!['maximize'] === true\">\n <button\n type=\"button\"\n role=\"menuitem\"\n tabindex=\"-1\"\n (click)=\"maximize(_widgetIndex)\"\n class=\"a-btn\"\n (keydown.escape)=\"menuOpen()\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"fullscreen\"></pry-icon>\n {{ '@pry.widget.target.maximize' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"options === true || options!['addToCatalog'] === true\">\n <button type=\"button\" role=\"menuitem\" tabindex=\"-1\" (click)=\"toggleCatalog()\" class=\"a-btn\">\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"library_add\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.catalogWidget' | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"options === true || options!['delete'] === true\">\n <button\n type=\"button\"\n role=\"menuitem\"\n tabindex=\"-1\"\n (click)=\"toggleRemoveConfirm($event)\"\n class=\"a-btn\"\n (keydown.tab)=\"menuOpen()\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"delete\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.deleteWidget' | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngFor=\"let option of additionalOptions\">\n <button\n type=\"button\"\n class=\"a-btn\"\n role=\"menuitem\"\n tabindex=\"-1\"\n (click)=\"executeAction(option)\"\n [disabled]=\"isActionDisabled(option)\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" [iconSvg]=\"option.icon\"></pry-icon>\n {{ option.label | i18n }}\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n\n<ng-template #templateModal>\n <div\n class=\"o-modal\"\n (keydown.escape)=\"cancelRemoveConfirm()\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog confirm delete presentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" #cross (click)=\"cancelRemoveConfirm()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button type=\"submit\" (click)=\"confirmRemove()\" class=\"a-btn a-btn--primary\" (keydown.tab)=\"focusCrossElement()\">\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #template>\n <pry-datasource-selector\n bindLabel=\"name\"\n bindValue=\"id\"\n translationStringBase=\"@pry.components.chipsSelector.datasource.\"\n (cancel)=\"toggleDatasourceSelection()\"\n (validated)=\"emitManifest()\"\n (nextTab)=\"focusInputCatalog()\"\n (previousTab)=\"focusValidation()\"\n (itemsChanged)=\"datasourcesChanged($event)\"\n [usedItems]=\"(usedDatasources$ | async) ?? []\"\n ></pry-datasource-selector>\n</ng-template>\n\n<ng-template #overlayCatalog>\n <div\n class=\"o-modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_Catalog\"\n (keydown.escape)=\"toggleCatalog()\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{ '@pry.widget.defineCatalog' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n (keydown.shift.tab)=\"focusValidation()\"\n #crossCatalog\n (click)=\"toggleCatalog()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"name\">{{ '@pry.toolbox.catalog.label' | i18n }}</label>\n <input [(ngModel)]=\"catalogInfo.name\" id=\"name\" type=\"text\" class=\"a-form-field\" required />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"description\">{{ '@pry.toolbox.catalog.description' | i18n }}</label>\n <input [(ngModel)]=\"catalogInfo.description\" id=\"description\" type=\"text\" class=\"a-form-field\" required />\n </div>\n <div class=\"m-form-label-field\">\n <pry-select-image\n [iconUrl]=\"catalogInfo.image\"\n (changed)=\"catalogInfo.image = $event\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n <div class=\"m-btn-group\">\n <button\n type=\"button\"\n (click)=\"toggleCatalog()\"\n #cancel\n (keydown.tab)=\"disableValidation()\"\n class=\"a-btn a-btn--secondary\"\n >\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n #validateCatalog\n (click)=\"confirmCatalog()\"\n [disabled]=\"!toolboxMenuService.isValidForCatalog(catalogInfo.name)\"\n class=\"a-btn a-btn--primary\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #overlaySpot>\n <div class=\"o-modal -place\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{ '@pry.widget.tooltip.changeSpot' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"toggleChangeSpot()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-dashboard\n [staticDashboard]=\"targetManifest!\"\n [breakpoint]=\"10\"\n [noBackground]=\"true\"\n [forceModeEdition]=\"false\"\n ></pry-dashboard>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i7.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i8.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "component", type: i9.DashboardComponent, selector: "pry-dashboard", inputs: ["staticDashboard", "forceModeEdition", "CloseOnDragOut", "displayOptions", "noBackground", "breakpoint"], outputs: ["rowHeight", "rows"] }, { kind: "component", type: i10.DatasourceSelectorComponent, selector: "pry-datasource-selector", inputs: ["usedItems", "manifest"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i12.I18nPipe, name: "i18n" }, { kind: "pipe", type: i13.ResultSetSizePipe, name: "resultSetSize" }] }); }
|
|
391
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryWidgetHeaderComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.ToolboxMenuService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
392
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: { manifest: "manifest", openData$: "openData$", additionalOptions: "additionalOptions", headerOptions: "headerOptions", displayCount: "displayCount", datasourceIds: "datasourceIds", widgetIndex: "widgetIndex" }, outputs: { manifestModified: "manifestModified" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }, { propertyName: "templateModal", first: true, predicate: ["templateModal"], descendants: true, read: TemplateRef }, { propertyName: "toggle", first: true, predicate: ["toggle"], descendants: true, read: TemplateRef }, { propertyName: "overlayMenu", first: true, predicate: ["overlayMenu"], descendants: true, read: TemplateRef }, { propertyName: "overlayCatalog", first: true, predicate: ["overlayCatalog"], descendants: true, read: TemplateRef }, { propertyName: "overlaySpot", first: true, predicate: ["overlaySpot"], descendants: true, read: TemplateRef }, { propertyName: "togglePanel", first: true, predicate: ["togglePanel"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "validate", first: true, predicate: ["validate"], descendants: true }, { propertyName: "validateCatalog", first: true, predicate: ["validateCatalog"], descendants: true }, { propertyName: "cancel", first: true, predicate: ["cancel"], descendants: true }, { propertyName: "crossCatalog", first: true, predicate: ["crossCatalog"], descendants: true }, { propertyName: "inputCatalog", first: true, predicate: ["inputCatalog"], descendants: true }, { propertyName: "menuList", first: true, predicate: ["menuList"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"o-widget__header\">\n <div class=\"o-widget__header__content\">\n <h2 class=\"o-widget__header__content__title\" *ngIf=\"(manifest$ | async)?.title; else querySelector\">\n {{ (manifest$ | async)?.title }}\n </h2>\n <ng-template #querySelector>\n <div *ngFor=\"let ds of usedDatasources$ | async\" class=\"o-widget__header__content__query\">\n <ng-container\n *ngIf=\"ds.id | translateId : { type: 'datasource', output: 'icon', noDefault: true } | async as url\"\n >\n <img [height]=\"20\" [src]=\"url\" [width]=\"20\" alt=\"\" class=\"o-widget__header__content__query__icon\" />\n </ng-container>\n <h3 class=\"o-widget__header__content__query__name\">{{ ds.name }}</h3>\n <h3 class=\"o-widget__header__content__query__name\" *ngIf=\"displayCount && !isGeo(ds)\">\n ({{ [ds.id] | resultSetSize | async }})\n </h3>\n </div>\n <div *ngIf=\"((usedDatasources$ | async) ?? []).length === 0\" class=\"o-widget__header__content__no-data\">\n <h2 class=\"o-widget__header__content__title\">{{ '@pry.widget.noData' | i18n }}</h2>\n </div>\n </ng-template>\n </div>\n <div class=\"m-btn-group\" *ngIf=\"displayContextMenu$ | async as options\">\n <button\n type=\"button\"\n id=\"dialog_Menu\"\n aria-controls=\"menu\"\n [attr.aria-expanded]=\"this.menu\"\n #togglePanel\n class=\"a-btn a-btn--more\"\n (click)=\"menuOpen($event)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.openMenuWidget' | i18n }}</span>\n </button>\n </div>\n</div>\n\n<ng-template #overlayMenu>\n <div class=\"m-context-menu\" *ngIf=\"displayContextMenu$ | async as options\">\n <ul\n class=\"m-context-menu__list\"\n #menuList\n id=\"menu\"\n role=\"menu\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_Menu\"\n (keydown.arrowDown)=\"onArrowDown()\"\n (keydown.arrowUp)=\"onArrowUp()\"\n (keydown.escape)=\"menuOpen()\"\n >\n <li\n class=\"m-context-menu__list__item\"\n role=\"none\"\n *ngIf=\"(manifest$ | async)?.datasource && (options === true || options['datasourceSelection'] === true)\"\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n tabindex=\"-1\"\n id=\"toggleActions\"\n (click)=\"toggleDatasourceSelection()\"\n *pryAccess=\"{ module: 'dashboard', page: 'widget', action: 'select_named_query' }\"\n class=\"a-btn\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"stack-fill\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.readSearch' | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"options === true || options!['parameters'] === true\">\n <ng-content></ng-content>\n </li>\n <ng-container *ngIf=\"options === true || options!['window'] === true\">\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngFor=\"let targetIndex of targetIndexes$ | async\">\n <button\n type=\"button\"\n (click)=\"moveInNewWindow(_widgetIndex, targetIndex)\"\n class=\"a-btn\"\n role=\"menuitem\"\n tabindex=\"-1\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"launch\"></pry-icon>\n {{\n (targetIndex !== -1 ? '@pry.widget.target.existing' : '@pry.widget.target.new')\n | i18n : { targetIndex: this.targetIndex + 1 }\n }}\n </button>\n </li>\n </ng-container>\n <li\n class=\"m-context-menu__list__item\"\n role=\"none\"\n *ngIf=\"hasGrid && (options === true || options!['changeSpot'] === true)\"\n >\n <button type=\"button\" role=\"menuitem\" (click)=\"toggleChangeSpot()\" class=\"a-btn\" tabindex=\"-1\">\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"move\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.changeSpot' | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"options === true || options!['maximize'] === true\">\n <button\n type=\"button\"\n role=\"menuitem\"\n tabindex=\"-1\"\n (click)=\"maximize(_widgetIndex)\"\n class=\"a-btn\"\n (keydown.escape)=\"menuOpen()\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"fullscreen\"></pry-icon>\n {{ '@pry.widget.target.maximize' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"options === true || options!['addToCatalog'] === true\">\n <button type=\"button\" role=\"menuitem\" tabindex=\"-1\" (click)=\"toggleCatalog()\" class=\"a-btn\">\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"library_add\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.catalogWidget' | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"options === true || options!['delete'] === true\">\n <button\n type=\"button\"\n role=\"menuitem\"\n tabindex=\"-1\"\n (click)=\"toggleRemoveConfirm($event)\"\n class=\"a-btn\"\n (keydown.tab)=\"menuOpen()\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"delete\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.deleteWidget' | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngFor=\"let option of additionalOptions\">\n <button\n type=\"button\"\n class=\"a-btn\"\n role=\"menuitem\"\n tabindex=\"-1\"\n (click)=\"executeAction(option)\"\n [disabled]=\"isActionDisabled(option)\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" [iconSvg]=\"option.icon\"></pry-icon>\n {{ option.label | i18n }}\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n\n<ng-template #templateModal>\n <div\n class=\"o-modal\"\n (keydown.escape)=\"cancelRemoveConfirm()\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog confirm delete presentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" #cross (click)=\"cancelRemoveConfirm()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button type=\"submit\" (click)=\"confirmRemove()\" class=\"a-btn a-btn--primary\" (keydown.tab)=\"focusCrossElement()\">\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #template>\n <pry-datasource-selector\n bindLabel=\"name\"\n bindValue=\"id\"\n translationStringBase=\"@pry.components.chipsSelector.datasource.\"\n (cancel)=\"toggleDatasourceSelection()\"\n (validated)=\"emitManifest()\"\n (nextTab)=\"focusInputCatalog()\"\n (previousTab)=\"focusValidation()\"\n (itemsChanged)=\"datasourcesChanged($event)\"\n [usedItems]=\"(usedDatasources$ | async) ?? []\"\n ></pry-datasource-selector>\n</ng-template>\n\n<ng-template #overlayCatalog>\n <div\n class=\"o-modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_Catalog\"\n (keydown.escape)=\"toggleCatalog()\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{ '@pry.widget.defineCatalog' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n (keydown.shift.tab)=\"focusValidation()\"\n #crossCatalog\n (click)=\"toggleCatalog()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"name\">{{ '@pry.toolbox.catalog.label' | i18n }}</label>\n <input [(ngModel)]=\"catalogInfo.name\" id=\"name\" type=\"text\" class=\"a-form-field\" required />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"description\">{{ '@pry.toolbox.catalog.description' | i18n }}</label>\n <input [(ngModel)]=\"catalogInfo.description\" id=\"description\" type=\"text\" class=\"a-form-field\" required />\n </div>\n <div class=\"m-form-label-field\">\n <pry-select-image\n [iconUrl]=\"catalogInfo.image\"\n (changed)=\"catalogInfo.image = $event\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n <div class=\"m-btn-group\">\n <button\n type=\"button\"\n (click)=\"toggleCatalog()\"\n #cancel\n (keydown.tab)=\"disableValidation()\"\n class=\"a-btn a-btn--secondary\"\n >\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n #validateCatalog\n (click)=\"confirmCatalog()\"\n [disabled]=\"!toolboxMenuService.isValidForCatalog(catalogInfo.name)\"\n class=\"a-btn a-btn--primary\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #overlaySpot>\n <div class=\"o-modal -place\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{ '@pry.widget.tooltip.changeSpot' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"toggleChangeSpot()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-dashboard\n [staticDashboard]=\"targetManifest!\"\n [breakpoint]=\"10\"\n [noBackground]=\"true\"\n [forceModeEdition]=\"false\"\n ></pry-dashboard>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i7.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i8.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "component", type: i9.DashboardComponent, selector: "pry-dashboard", inputs: ["staticDashboard", "forceModeEdition", "CloseOnDragOut", "displayOptions", "noBackground", "breakpoint"], outputs: ["rowHeight", "rows"] }, { kind: "component", type: i10.DatasourceSelectorComponent, selector: "pry-datasource-selector", inputs: ["usedItems", "manifest"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i12.I18nPipe, name: "i18n" }, { kind: "pipe", type: i13.ResultSetSizePipe, name: "resultSetSize" }] }); }
|
|
393
393
|
}
|
|
394
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
394
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryWidgetHeaderComponent, decorators: [{
|
|
395
395
|
type: Component,
|
|
396
396
|
args: [{ selector: 'pry-widget-header', template: "<div class=\"o-widget__header\">\n <div class=\"o-widget__header__content\">\n <h2 class=\"o-widget__header__content__title\" *ngIf=\"(manifest$ | async)?.title; else querySelector\">\n {{ (manifest$ | async)?.title }}\n </h2>\n <ng-template #querySelector>\n <div *ngFor=\"let ds of usedDatasources$ | async\" class=\"o-widget__header__content__query\">\n <ng-container\n *ngIf=\"ds.id | translateId : { type: 'datasource', output: 'icon', noDefault: true } | async as url\"\n >\n <img [height]=\"20\" [src]=\"url\" [width]=\"20\" alt=\"\" class=\"o-widget__header__content__query__icon\" />\n </ng-container>\n <h3 class=\"o-widget__header__content__query__name\">{{ ds.name }}</h3>\n <h3 class=\"o-widget__header__content__query__name\" *ngIf=\"displayCount && !isGeo(ds)\">\n ({{ [ds.id] | resultSetSize | async }})\n </h3>\n </div>\n <div *ngIf=\"((usedDatasources$ | async) ?? []).length === 0\" class=\"o-widget__header__content__no-data\">\n <h2 class=\"o-widget__header__content__title\">{{ '@pry.widget.noData' | i18n }}</h2>\n </div>\n </ng-template>\n </div>\n <div class=\"m-btn-group\" *ngIf=\"displayContextMenu$ | async as options\">\n <button\n type=\"button\"\n id=\"dialog_Menu\"\n aria-controls=\"menu\"\n [attr.aria-expanded]=\"this.menu\"\n #togglePanel\n class=\"a-btn a-btn--more\"\n (click)=\"menuOpen($event)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.openMenuWidget' | i18n }}</span>\n </button>\n </div>\n</div>\n\n<ng-template #overlayMenu>\n <div class=\"m-context-menu\" *ngIf=\"displayContextMenu$ | async as options\">\n <ul\n class=\"m-context-menu__list\"\n #menuList\n id=\"menu\"\n role=\"menu\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_Menu\"\n (keydown.arrowDown)=\"onArrowDown()\"\n (keydown.arrowUp)=\"onArrowUp()\"\n (keydown.escape)=\"menuOpen()\"\n >\n <li\n class=\"m-context-menu__list__item\"\n role=\"none\"\n *ngIf=\"(manifest$ | async)?.datasource && (options === true || options['datasourceSelection'] === true)\"\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n tabindex=\"-1\"\n id=\"toggleActions\"\n (click)=\"toggleDatasourceSelection()\"\n *pryAccess=\"{ module: 'dashboard', page: 'widget', action: 'select_named_query' }\"\n class=\"a-btn\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"stack-fill\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.readSearch' | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"options === true || options!['parameters'] === true\">\n <ng-content></ng-content>\n </li>\n <ng-container *ngIf=\"options === true || options!['window'] === true\">\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngFor=\"let targetIndex of targetIndexes$ | async\">\n <button\n type=\"button\"\n (click)=\"moveInNewWindow(_widgetIndex, targetIndex)\"\n class=\"a-btn\"\n role=\"menuitem\"\n tabindex=\"-1\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"launch\"></pry-icon>\n {{\n (targetIndex !== -1 ? '@pry.widget.target.existing' : '@pry.widget.target.new')\n | i18n : { targetIndex: this.targetIndex + 1 }\n }}\n </button>\n </li>\n </ng-container>\n <li\n class=\"m-context-menu__list__item\"\n role=\"none\"\n *ngIf=\"hasGrid && (options === true || options!['changeSpot'] === true)\"\n >\n <button type=\"button\" role=\"menuitem\" (click)=\"toggleChangeSpot()\" class=\"a-btn\" tabindex=\"-1\">\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"move\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.changeSpot' | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"options === true || options!['maximize'] === true\">\n <button\n type=\"button\"\n role=\"menuitem\"\n tabindex=\"-1\"\n (click)=\"maximize(_widgetIndex)\"\n class=\"a-btn\"\n (keydown.escape)=\"menuOpen()\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"fullscreen\"></pry-icon>\n {{ '@pry.widget.target.maximize' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"options === true || options!['addToCatalog'] === true\">\n <button type=\"button\" role=\"menuitem\" tabindex=\"-1\" (click)=\"toggleCatalog()\" class=\"a-btn\">\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"library_add\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.catalogWidget' | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngIf=\"options === true || options!['delete'] === true\">\n <button\n type=\"button\"\n role=\"menuitem\"\n tabindex=\"-1\"\n (click)=\"toggleRemoveConfirm($event)\"\n class=\"a-btn\"\n (keydown.tab)=\"menuOpen()\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" iconSvg=\"delete\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.deleteWidget' | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\" *ngFor=\"let option of additionalOptions\">\n <button\n type=\"button\"\n class=\"a-btn\"\n role=\"menuitem\"\n tabindex=\"-1\"\n (click)=\"executeAction(option)\"\n [disabled]=\"isActionDisabled(option)\"\n >\n <pry-icon [height]=\"17\" [width]=\"17\" [iconSvg]=\"option.icon\"></pry-icon>\n {{ option.label | i18n }}\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n\n<ng-template #templateModal>\n <div\n class=\"o-modal\"\n (keydown.escape)=\"cancelRemoveConfirm()\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog confirm delete presentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" #cross (click)=\"cancelRemoveConfirm()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button type=\"submit\" (click)=\"confirmRemove()\" class=\"a-btn a-btn--primary\" (keydown.tab)=\"focusCrossElement()\">\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #template>\n <pry-datasource-selector\n bindLabel=\"name\"\n bindValue=\"id\"\n translationStringBase=\"@pry.components.chipsSelector.datasource.\"\n (cancel)=\"toggleDatasourceSelection()\"\n (validated)=\"emitManifest()\"\n (nextTab)=\"focusInputCatalog()\"\n (previousTab)=\"focusValidation()\"\n (itemsChanged)=\"datasourcesChanged($event)\"\n [usedItems]=\"(usedDatasources$ | async) ?? []\"\n ></pry-datasource-selector>\n</ng-template>\n\n<ng-template #overlayCatalog>\n <div\n class=\"o-modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_Catalog\"\n (keydown.escape)=\"toggleCatalog()\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{ '@pry.widget.defineCatalog' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n (keydown.shift.tab)=\"focusValidation()\"\n #crossCatalog\n (click)=\"toggleCatalog()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"name\">{{ '@pry.toolbox.catalog.label' | i18n }}</label>\n <input [(ngModel)]=\"catalogInfo.name\" id=\"name\" type=\"text\" class=\"a-form-field\" required />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"description\">{{ '@pry.toolbox.catalog.description' | i18n }}</label>\n <input [(ngModel)]=\"catalogInfo.description\" id=\"description\" type=\"text\" class=\"a-form-field\" required />\n </div>\n <div class=\"m-form-label-field\">\n <pry-select-image\n [iconUrl]=\"catalogInfo.image\"\n (changed)=\"catalogInfo.image = $event\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n <div class=\"m-btn-group\">\n <button\n type=\"button\"\n (click)=\"toggleCatalog()\"\n #cancel\n (keydown.tab)=\"disableValidation()\"\n class=\"a-btn a-btn--secondary\"\n >\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n #validateCatalog\n (click)=\"confirmCatalog()\"\n [disabled]=\"!toolboxMenuService.isValidForCatalog(catalogInfo.name)\"\n class=\"a-btn a-btn--primary\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #overlaySpot>\n <div class=\"o-modal -place\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\">\n {{ '@pry.widget.tooltip.changeSpot' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"toggleChangeSpot()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-dashboard\n [staticDashboard]=\"targetManifest!\"\n [breakpoint]=\"10\"\n [noBackground]=\"true\"\n [forceModeEdition]=\"false\"\n ></pry-dashboard>\n </div>\n</ng-template>\n" }]
|
|
397
|
-
}], ctorParameters:
|
|
397
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.ToolboxMenuService }], propDecorators: { template: [{
|
|
398
398
|
type: ViewChild,
|
|
399
399
|
args: ['template', { read: TemplateRef }]
|
|
400
400
|
}], templateModal: [{
|
|
@@ -453,4 +453,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
453
453
|
}], widgetIndex: [{
|
|
454
454
|
type: Input
|
|
455
455
|
}] } });
|
|
456
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL2NvbXBvbmVudHMvd2lkZ2V0cy9oZWFkZXIvd2lkZ2V0LWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL2NvbXBvbmVudHMvd2lkZ2V0cy9oZWFkZXIvd2lkZ2V0LWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEtBQUssTUFBTSxxQkFBcUIsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQXFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBcUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUVuSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFN0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRTFFLE9B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O2dCQUNQLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDUSxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0UsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUNGLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFTUixRQUFRO3NCQUFwQixLQUFLO2dCQUlPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBT0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBYU0sYUFBYTtzQkFBekIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgZXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsL2VzNic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IEdlb01ldGFkYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9tb2RlbC9kYXRhc2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRHcmlkTGF5b3V0LCBEYXNoYm9hcmRNYW5pZmVzdCwgV2lkZ2V0TWFuaWZlc3QgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVsL21hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBXaWRnZXQgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVsL3dpZGdldC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29uZmlnQWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvY29uZmlnL2NvbmZpZy5hY3Rpb25zJztcbmltcG9ydCB7IERhdGFzZXQsIERhdGFTb3VyY2UsIE5hbWVkUXVlcnkgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2RhdGEtc291cmNlL2RhdGEtc291cmNlLm1vZGVsJztcbmltcG9ydCB7IERhdGFTb3VyY2VTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2RhdGEtc291cmNlL2RhdGEtc291cmNlLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBMaWJyYXJ5VHlwZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2ltYWdlL2ltYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9vbGJveE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS90b29sYm94L3Rvb2xib3gtbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZEFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9kYXNoYm9hcmQuYWN0aW9ucyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9kYXNoYm9hcmQuc2VsZWN0b3JzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3N1YnNjcmlwdGlvbm5lci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2lkZ2V0UGxhY2VtZW50VXRpbHMgfSBmcm9tICcuLi93aWRnZXQtcGxhY2VtZW50L3dpZGdldC1wbGFjZW1lbnQudXRpbHMnO1xuaW1wb3J0IHsgV2lkZ2V0Q29udGV4dE1lbnVEaXNwbGF5T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvbW9kZWwvZGlzcGxheS1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBERUZBVUxUX0NPTFVNTlNfTlVNQkVSLCBERUZBVUxUX1JPV1NfTlVNQkVSIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZGFzaGJvYXJkLmNvbnRhbnRzJztcblxuZXhwb3J0IGNvbnN0IFdJREdFVF9IRUFERVJfSEVJR0hUID0gMzA7XG5cbmV4cG9ydCB0eXBlIEhlYWRlckFjdGlvbiA9IHtcbiAgaWNvbjogc3RyaW5nO1xuICBhY3Rpb246ICh0aGF0OiBQcnlXaWRnZXRIZWFkZXJDb21wb25lbnQpID0+IHZvaWQ7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRpc2FibGVkPzogKHRoYXQ6IFByeVdpZGdldEhlYWRlckNvbXBvbmVudCkgPT4gYm9vbGVhbjtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS13aWRnZXQtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeVdpZGdldEhlYWRlckNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlTW9kYWwnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlTW9kYWwhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCd0b2dnbGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRvZ2dsZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ292ZXJsYXlNZW51JywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBvdmVybGF5TWVudSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ292ZXJsYXlDYXRhbG9nJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBvdmVybGF5Q2F0YWxvZyE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ292ZXJsYXlTcG90JywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBvdmVybGF5U3BvdCE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3RvZ2dsZVBhbmVsJykgdG9nZ2xlUGFuZWwhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY3Jvc3MnKSBjcm9zcyE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd2YWxpZGF0ZScpIHZhbGlkYXRlITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3ZhbGlkYXRlQ2F0YWxvZycpIHZhbGlkYXRlQ2F0YWxvZyE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjYW5jZWwnKSBjYW5jZWwhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY3Jvc3NDYXRhbG9nJykgY3Jvc3NDYXRhbG9nITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2lucHV0Q2F0YWxvZycpIGlucHV0Q2F0YWxvZyE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ21lbnVMaXN0JykgbWVudUxpc3QhOiBFbGVtZW50UmVmO1xuICBtYW5pZmVzdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFdpZGdldE1hbmlmZXN0IHwgbnVsbD4obnVsbCk7XG4gIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgcGxhY2VzOiBXaWRnZXRNYW5pZmVzdFtdID0gW107XG4gIHNlbGVjdGVkSXRlbT86IEVsZW1lbnQgfCBudWxsO1xuICB1c2VkRGF0YXNvdXJjZXMkOiBPYnNlcnZhYmxlPERhdGFTb3VyY2VbXT47XG4gIG9wZW5TdWI/OiBTdWJzY3JpcHRpb247XG4gIHRhcmdldE1hbmlmZXN0PzogRGFzaGJvYXJkTWFuaWZlc3Q7XG5cbiAgQElucHV0KCkgc2V0IG1hbmlmZXN0KG1hbmlmZXN0OiBXaWRnZXRNYW5pZmVzdCB8IG51bGwpIHtcbiAgICB0aGlzLm1hbmlmZXN0JC5uZXh0KG1hbmlmZXN0KTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBvcGVuRGF0YSQob3BlbiQ6IE9ic2VydmFibGU8dm9pZD4gfCBTdWJqZWN0PHZvaWQ+KSB7XG4gICAgdGhpcy5vcGVuU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub3BlblN1YiA9IG9wZW4kLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnRvZ2dsZURhdGFzb3VyY2VTZWxlY3Rpb24oKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpIGFkZGl0aW9uYWxPcHRpb25zOiBIZWFkZXJBY3Rpb25bXSB8IG51bGwgPSBbXTtcbiAgQElucHV0KCkgaGVhZGVyT3B0aW9uczogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCB7fSB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgZGlzcGxheUNvdW50ID0gdHJ1ZTtcblxuICBAT3V0cHV0KCkgbWFuaWZlc3RNb2RpZmllZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyB3aWRnZXRJbmRleDogbnVtYmVyOyBtYW5pZmVzdDogV2lkZ2V0TWFuaWZlc3QgfT4oKTtcblxuICBpc0VkaXQgPSBmYWxzZTtcbiAgY2F0YWxvZ0luZm86IFdpZGdldCA9IHtcbiAgICBpZDogdjQoKSxcbiAgICBpbWFnZTogJycsXG4gICAgbmFtZTogJycsXG4gICAgZGVzY3JpcHRpb246ICcnLFxuICAgIGNvbnRlbnQ6ICcnLFxuICAgIGRhdGFzb3VyY2U6IFtdLFxuICAgIG1vZGlmaWNhdGlvbkRhdGU6ICcnXG4gIH07XG5cbiAgQElucHV0KCkgc2V0IGRhdGFzb3VyY2VJZHMoZGF0YXNvdXJjZUlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZUlkcyQubmV4dChkYXRhc291cmNlSWRzKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCB3aWRnZXRJbmRleCh3aWRnZXRJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5fd2lkZ2V0SW5kZXgkLm5leHQod2lkZ2V0SW5kZXgpO1xuICAgIHRoaXMuX3dpZGdldEluZGV4ID0gd2lkZ2V0SW5kZXg7XG4gIH1cblxuICBkaXNwbGF5Q29udGV4dE1lbnUkOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBXaWRnZXRDb250ZXh0TWVudURpc3BsYXlPcHRpb25zPjtcbiAgdGFyZ2V0SW5kZXhlcyQ6IE9ic2VydmFibGU8bnVtYmVyW10+O1xuICBfd2lkZ2V0SW5kZXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBfd2lkZ2V0SW5kZXghOiBudW1iZXI7XG4gIG9wZW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWREYXRhU291cmNlSWRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKTtcblxuICB3aW5kb3dNYW5pZmVzdDogRGFzaGJvYXJkTWFuaWZlc3QgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB3aW5kb3dNYW5pZmVzdCQ6IE9ic2VydmFibGU8RGFzaGJvYXJkTWFuaWZlc3Q+O1xuICBwcml2YXRlIG1lbnVSZWY/OiBPdmVybGF5UmVmO1xuICBwcml2YXRlIGNvbWJvUmVmPzogT3ZlcmxheVJlZjtcbiAgcHJpdmF0ZSBjb25maXJtUmVtb3ZlUmVmPzogT3ZlcmxheVJlZjtcbiAgcHJpdmF0ZSBjYXRhbG9nUmVmPzogT3ZlcmxheVJlZjtcbiAgcHJpdmF0ZSBzcG90UmVmPzogT3ZlcmxheVJlZjtcbiAgbWVudTogYm9vbGVhbiA9IGZhbHNlO1xuICB0eXBlOiBMaWJyYXJ5VHlwZXMgPSBMaWJyYXJ5VHlwZXMuSUxMVVNUUkFUSU9OO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHVibGljIHRvb2xib3hNZW51U2VydmljZTogVG9vbGJveE1lbnVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy53aW5kb3dNYW5pZmVzdCQgPSB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy53aW5kb3dNYW5pZmVzdClcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwLCBjKSA9PiBlcXVhbChwLCBjKSkpO1xuXG4gICAgdGhpcy50YXJnZXRJbmRleGVzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy50YXJnZXRUZW5hbnRzSW5kZXhlcyk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMud2luZG93TWFuaWZlc3QkLnN1YnNjcmliZSgobWFuaWZlc3QpID0+IHtcbiAgICAgICAgdGhpcy53aW5kb3dNYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuZGlzcGxheUNvbnRleHRNZW51JCA9IHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRpc3BsYXlPcHRpb25zKVxuICAgICAgLnBpcGUobWFwKChvcHRpb25zKSA9PiBvcHRpb25zLndpZGdldENvbnRleHRNZW51KSk7XG5cbiAgICB0aGlzLnVzZWREYXRhc291cmNlcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuZ2V0RGF0YVNvdXJjZXNTb3J0ZWQpLFxuICAgICAgdGhpcy5zZWxlY3RlZERhdGFTb3VyY2VJZHMkXG4gICAgXSkucGlwZShtYXAoKFthbGxEc3MsIGRzSWRzXSkgPT4gYWxsRHNzLmZpbHRlcigoZHMpID0+IGRzSWRzLmluY2x1ZGVzKGRzLmlkKSkpKTtcbiAgfVxuXG4gIG9uQXJyb3dVcCgpIHtcbiAgICBjb25zdCBsYXN0RWxlbWVudCA9IHRoaXMubWVudUxpc3QubmF0aXZlRWxlbWVudC5sYXN0RWxlbWVudENoaWxkO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbT8ucHJldmlvdXNFbGVtZW50U2libGluZykge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGxhc3RFbGVtZW50O1xuICAgIH1cbiAgICBjb25zdCBmb2N1c0VsZW1lbnQgPSB0aGlzLnNlbGVjdGVkSXRlbT8uY2hpbGRyZW5bMF0gYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgY29uc3QgZm9jdXNDaGlsZHJlbkVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkSXRlbT8uY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0gYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgaWYgKGZvY3VzQ2hpbGRyZW5FbGVtZW50KSB7XG4gICAgICBmb2N1c0NoaWxkcmVuRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICBmb2N1c0VsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIG9uQXJyb3dEb3duKCkge1xuICAgIGNvbnN0IGZpcnN0RWxlbWVudCA9IHRoaXMubWVudUxpc3QubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0/Lm5leHRFbGVtZW50U2libGluZykge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gZmlyc3RFbGVtZW50O1xuICAgIH1cbiAgICBjb25zdCBmb2N1c0VsZW1lbnQgPSB0aGlzLnNlbGVjdGVkSXRlbT8uY2hpbGRyZW5bMF0gYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgY29uc3QgZm9jdXNDaGlsZHJlbkVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkSXRlbT8uY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0gYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgaWYgKGZvY3VzQ2hpbGRyZW5FbGVtZW50KSB7XG4gICAgICBmb2N1c0NoaWxkcmVuRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICBmb2N1c0VsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50TGF5b3V0KCkge1xuICAgIHJldHVybiB0aGlzLndpbmRvd01hbmlmZXN0Py5ncmlkPy5sYXlvdXQgPz8gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUw7XG4gIH1cblxuICBnZXQgaGFzR3JpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50TGF5b3V0ICE9PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTDtcbiAgfVxuXG4gIGdldCBjdXJyZW50UGxhY2VtZW50SW5kZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2VzLmZpbmRJbmRleChcbiAgICAgIChwbGFjZSkgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdCQuZ2V0VmFsdWUoKT8ubGF5b3V0LnggPT09IHBsYWNlLmxheW91dC54ICYmXG4gICAgICAgIHRoaXMubWFuaWZlc3QkLmdldFZhbHVlKCk/LmxheW91dC55ID09PSBwbGFjZS5sYXlvdXQueSAmJlxuICAgICAgICB0aGlzLm1hbmlmZXN0JC5nZXRWYWx1ZSgpPy5sYXlvdXQud2lkdGggPT09IHBsYWNlLmxheW91dC53aWR0aCAmJlxuICAgICAgICB0aGlzLm1hbmlmZXN0JC5nZXRWYWx1ZSgpPy5sYXlvdXQuaGVpZ2h0ID09PSBwbGFjZS5sYXlvdXQuaGVpZ2h0XG4gICAgKTtcbiAgfVxuXG4gIG1lbnVPcGVuKCRldmVudD86IE1vdXNlRXZlbnQsIGZvcmNlT3Blbj86IGJvb2xlYW4pIHtcbiAgICB0aGlzLm1lbnUgPSAhdGhpcy5tZW51O1xuICAgIGNvbnN0IG11c3RPcGVuID0gZm9yY2VPcGVuICE9PSB1bmRlZmluZWQgPyBmb3JjZU9wZW4gOiAhdGhpcy5tZW51UmVmO1xuICAgIGlmIChtdXN0T3Blbikge1xuICAgICAgdGhpcy5tZW51UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnbS1jb250ZXh0LW1lbnUtd3JhcHBlciddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCcsXG4gICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy50b2dnbGVQYW5lbClcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9mZnNldFg6IDUwLFxuICAgICAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICAgICAgICBvdmVybGF5WTogJ3RvcCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSlcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLW1lbnUnIH0pKTtcbiAgICAgIHRoaXMubWVudVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKChfKSA9PiB0aGlzLm1lbnVPcGVuKCkpO1xuICAgICAgdGhpcy5tZW51UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5vdmVybGF5TWVudSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLm1lbnVMaXN0Py5uYXRpdmVFbGVtZW50Py5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgY29uc3QgZm9jdXMgPSB0aGlzLnNlbGVjdGVkSXRlbT8uY2hpbGRyZW5bMF0gYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICAgICAgY29uc3QgZm9jdXNDaGlsZHJlbkVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkSXRlbT8uY2hpbGRyZW5bMF0/LmNoaWxkcmVuWzBdIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICAgICAgICAgIGZvY3VzID8gZm9jdXMuZm9jdXMoKSA6IGZvY3VzQ2hpbGRyZW5FbGVtZW50Py5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9LCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWVudVJlZj8uZGlzcG9zZSgpO1xuICAgICAgdGhpcy5tZW51UmVmID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNsb3NlT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLW1lbnUnIH0pKTtcbiAgICAgIHRoaXMudG9nZ2xlUGFuZWw/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlRGF0YXNvdXJjZVNlbGVjdGlvbigpIHtcbiAgICBpZiAoIXRoaXMuY29tYm9SZWYpIHtcbiAgICAgIHRoaXMuY29tYm9SZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKFxuICAgICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgcGFuZWxDbGFzczogWydvLXdpZGdldF9fY2hvb3NlLXJlc3VsdHNldCddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLWNvbWJvJyB9KSk7XG4gICAgICB0aGlzLmNvbWJvUmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKF8pID0+IHRoaXMudG9nZ2xlRGF0YXNvdXJjZVNlbGVjdGlvbigpKTtcbiAgICAgIHRoaXMuY29tYm9SZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmlucHV0Q2F0YWxvZz8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICAgIH0sIDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb21ib1JlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmNvbWJvUmVmID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNsb3NlT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLWNvbWJvJyB9KSk7XG4gICAgICB0aGlzLm1lbnVPcGVuKHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG1vdmVJbk5ld1dpbmRvdyh3aWRnZXRJbmRleDogbnVtYmVyLCB0YXJnZXRJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLm1vdmVXaWRnZXQoeyB3aWRnZXRJbmRleCwgdGFyZ2V0SW5kZXggfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy50b2dnbGVFZGl0aW9uTW9kZSh7IGZvcmNlOiBmYWxzZSB9KSk7XG4gICAgdGhpcy5tZW51T3BlbigpO1xuICB9XG5cbiAgbWF4aW1pemUod2lkZ2V0SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5tYXhpbWl6ZVdpZGdldCh7IHdpZGdldEluZGV4IH0pKTtcbiAgICB0aGlzLm1lbnVPcGVuKCk7XG4gIH1cblxuICBlbWl0TWFuaWZlc3QoKSB7XG4gICAgdGhpcy5tYW5pZmVzdE1vZGlmaWVkLmVtaXQoe1xuICAgICAgd2lkZ2V0SW5kZXg6IHRoaXMuX3dpZGdldEluZGV4LFxuICAgICAgbWFuaWZlc3Q6IHtcbiAgICAgICAgLi4udGhpcy5tYW5pZmVzdCQuZ2V0VmFsdWUoKSxcbiAgICAgICAgZGF0YXNvdXJjZTogdGhpcy5zZWxlY3RlZERhdGFTb3VyY2VJZHMkLmdldFZhbHVlKClcbiAgICAgIH0gYXMgdW5rbm93biBhcyBXaWRnZXRNYW5pZmVzdFxuICAgIH0pO1xuICAgIHRoaXMudG9nZ2xlRGF0YXNvdXJjZVNlbGVjdGlvbigpO1xuICB9XG5cbiAgdG9nZ2xlUmVtb3ZlQ29uZmlybSgkZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpcm1SZW1vdmVSZWYpIHtcbiAgICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlciddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLW1vZGFsJyB9KSk7XG4gICAgICB0aGlzLmNvbmZpcm1SZW1vdmVSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoXykgPT4gdGhpcy50b2dnbGVSZW1vdmVDb25maXJtKCkpO1xuICAgICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy50ZW1wbGF0ZU1vZGFsLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYuby1tb2RhbC13cmFwcGVyJykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgIGlmICghIXBhbmVsKSB7XG4gICAgICAgICAgcGFuZWwuc3R5bGUubGVmdCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHdpbmRvdy5pbm5lcldpZHRoIC0gcGFuZWwuY2xpZW50V2lkdGgsICRldmVudC5jbGllbnRYIC0gMzApKSArICdweCc7XG4gICAgICAgICAgcGFuZWwuc3R5bGUudG9wID0gTWF0aC5tYXgoMCwgTWF0aC5taW4od2luZG93LmlubmVySGVpZ2h0IC0gcGFuZWwuY2xpZW50SGVpZ2h0LCAkZXZlbnQuY2xpZW50WSAtIDEwKSkgKyAncHgnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jcm9zcz8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICAgIH0sIDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudG9nZ2xlUGFuZWw/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctbW9kYWwnIH0pKTtcbiAgICAgIHRoaXMubWVudU9wZW4oKTtcbiAgICB9XG4gIH1cblxuICBjb25maXJtUmVtb3ZlKCkge1xuICAgIHRoaXMucmVtb3ZlKCk7XG4gICAgdGhpcy5jYW5jZWxSZW1vdmVDb25maXJtKCk7XG4gIH1cblxuICByZW1vdmUoKSB7XG4gICAgY29uc3QgbGlzdFdpZGdldE1hbmlmZXN0cyA9IFsuLi4odGhpcy53aW5kb3dNYW5pZmVzdCB8fCB7IHdpZGdldHM6IFtdIH0pLndpZGdldHNdO1xuICAgIGxpc3RXaWRnZXRNYW5pZmVzdHMuc3BsaWNlKHRoaXMuX3dpZGdldEluZGV4LCAxKTtcblxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZURhc2hib2FyZE1hbmlmZXN0KHtcbiAgICAgICAgbWFuaWZlc3Q6IHtcbiAgICAgICAgICAuLi50aGlzLndpbmRvd01hbmlmZXN0LFxuICAgICAgICAgIHdpZGdldHM6IGxpc3RXaWRnZXRNYW5pZmVzdHNcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY2FuY2VsUmVtb3ZlQ29uZmlybSgpIHtcbiAgICB0aGlzLmlzRWRpdCA9IGZhbHNlO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICB0aGlzLmNvbmZpcm1SZW1vdmVSZWY/LmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50b2dnbGVSZW1vdmVDb25maXJtKCkpO1xuICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZj8uZGlzcG9zZSgpO1xuICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm1lbnVSZWY/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLm1lbnVSZWYgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNsb3NlT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLW1lbnUnIH0pKTtcbiAgfVxuXG4gIHRvZ2dsZUNhdGFsb2coKSB7XG4gICAgaWYgKCF0aGlzLmNhdGFsb2dSZWYpIHtcbiAgICAgIHRoaXMuY2F0YWxvZ0luZm8gPSB7XG4gICAgICAgIGlkOiB2NCgpLFxuICAgICAgICBpbWFnZTogJycsXG4gICAgICAgIG5hbWU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgIGNvbnRlbnQ6ICcnLFxuICAgICAgICBkYXRhc291cmNlOiBbXSxcbiAgICAgICAgbW9kaWZpY2F0aW9uRGF0ZTogJydcbiAgICAgIH07XG4gICAgICB0aGlzLmNhdGFsb2dSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKFxuICAgICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgcGFuZWxDbGFzczogWydvLW1vZGFsLXdyYXBwZXInXSxcbiAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnYmFja2Ryb3AnXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmFkZGluZ092ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgJy1jYXRhbG9nJyB9KSk7XG4gICAgICB0aGlzLmNhdGFsb2dSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoXykgPT4gdGhpcy50b2dnbGVDYXRhbG9nKCkpO1xuICAgICAgdGhpcy5jYXRhbG9nUmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5vdmVybGF5Q2F0YWxvZywgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jcm9zc0NhdGFsb2c/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICB9LCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2F0YWxvZ1JlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmNhdGFsb2dSZWYgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctY2F0YWxvZycgfSkpO1xuICAgICAgdGhpcy5tZW51T3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpcm1DYXRhbG9nKCkge1xuICAgIGlmICh0aGlzLnRvb2xib3hNZW51U2VydmljZS5pc1ZhbGlkRm9yQ2F0YWxvZyh0aGlzLmNhdGFsb2dJbmZvLm5hbWUpKSB7XG4gICAgICB0aGlzLnRvb2xib3hNZW51U2VydmljZS5hZGRUb0NhdGFsb2coXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50aGlzLmNhdGFsb2dJbmZvLFxuICAgICAgICAgIGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KHsgLi4udGhpcy5tYW5pZmVzdCQuZ2V0VmFsdWUoKSwgdGl0bGU6IHRoaXMuY2F0YWxvZ0luZm8ubmFtZSB9KVxuICAgICAgICB9LFxuICAgICAgICB0aGlzLl93aWRnZXRJbmRleFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVDYXRhbG9nKCk7XG4gIH1cblxuICBleGVjdXRlQWN0aW9uKG9wdGlvbnM6IEhlYWRlckFjdGlvbikge1xuICAgIG9wdGlvbnMuYWN0aW9uKHRoaXMpO1xuICAgIHRoaXMubWVudU9wZW4oKTtcbiAgfVxuXG4gIGlzQWN0aW9uRGlzYWJsZWQob3B0aW9uOiBIZWFkZXJBY3Rpb24pIHtcbiAgICByZXR1cm4gISFvcHRpb24/LmRpc2FibGVkID8gb3B0aW9uPy5kaXNhYmxlZCh0aGlzKSA6IGZhbHNlO1xuICB9XG5cbiAgdG9nZ2xlQ2hhbmdlU3BvdCgpIHtcbiAgICBpZiAoIXRoaXMuc3BvdFJlZikge1xuICAgICAgdGhpcy5wbGFjZXMgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5wbGFjZW1lbnRPcHRpb25zKHsgdHlwZTogJ2ljb24nIH0gYXMgV2lkZ2V0TWFuaWZlc3QsIHRoaXMuY3VycmVudExheW91dCk7XG4gICAgICB0aGlzLnBsYWNlc01hbmlmZXN0KCk7XG5cbiAgICAgIHRoaXMuc3BvdFJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlciddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLXNwb3QnIH0pKTtcbiAgICAgIHRoaXMuc3BvdFJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9nZ2xlQ2hhbmdlU3BvdCgpKTtcbiAgICAgIHRoaXMuc3BvdFJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMub3ZlcmxheVNwb3QsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNwb3RSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5zcG90UmVmID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNsb3NlT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLXNwb3QnIH0pKTtcbiAgICAgIHRoaXMubWVudU9wZW4oKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c0Nyb3NzRWxlbWVudCgpIHtcbiAgICB0aGlzLmNyb3NzPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIHRoaXMuY3Jvc3NDYXRhbG9nPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICB9XG5cbiAgZm9jdXNWYWxpZGF0aW9uKCkge1xuICAgIHRoaXMudmFsaWRhdGVDYXRhbG9nPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIGlmICghdGhpcy50b29sYm94TWVudVNlcnZpY2UuaXNWYWxpZEZvckNhdGFsb2codGhpcy5jYXRhbG9nSW5mbz8ubmFtZSkpIHtcbiAgICAgIHRoaXMuY2FuY2VsPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICB9XG5cbiAgZm9jdXNJbnB1dENhdGFsb2coKSB7XG4gICAgdGhpcy5pbnB1dENhdGFsb2c/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gIH1cblxuICBkaXNhYmxlVmFsaWRhdGlvbigpIHtcbiAgICBpZiAoIXRoaXMudG9vbGJveE1lbnVTZXJ2aWNlLmlzVmFsaWRGb3JDYXRhbG9nKHRoaXMuY2F0YWxvZ0luZm8/Lm5hbWUpKSB7XG4gICAgICB0aGlzLmNyb3NzQ2F0YWxvZz8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBkYXRhc291cmNlc0NoYW5nZWQoJGV2ZW50OiBEYXRhU291cmNlW10pIHtcbiAgICBjb25zdCBpZHMgPSAkZXZlbnQubWFwKChkcykgPT4gZHMuaWQpO1xuICAgIGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZUlkcyQuZ2V0VmFsdWUoKSkgIT09IEpTT04uc3RyaW5naWZ5KGlkcykpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhU291cmNlSWRzJC5uZXh0KGlkcyk7XG4gICAgfVxuICB9XG5cbiAgaXNHZW8oZHM6IE5hbWVkUXVlcnkgfCBEYXRhc2V0KSB7XG4gICAgcmV0dXJuIGRzLm1ldGFkYXRhPy5maW5kKChtKSA9PiBtLm1ldGFkYXRhRGVmLm5hbWUgPT09IEdlb01ldGFkYXRhLk5BTUVTUEFDRSkgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHBsYWNlc01hbmlmZXN0KCkge1xuICAgIGNvbnN0IGN1cnJlbnRMYXlvdXQgPSB0aGlzLm1hbmlmZXN0JC5nZXRWYWx1ZSgpPy5sYXlvdXQhO1xuICAgIHRoaXMudGFyZ2V0TWFuaWZlc3QgPSB7XG4gICAgICB3aWRnZXRzOiB0aGlzLnBsYWNlcy5tYXAoKHBsYWNlLCBpZHgpID0+ICh7XG4gICAgICAgIC4uLnBsYWNlLFxuICAgICAgICB0eXBlOiAnZmlsbGVyJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGluZGV4OiBlcXVhbChjdXJyZW50TGF5b3V0LCBwbGFjZS5sYXlvdXQpXG4gICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICA6IHRoaXMucGxhY2VzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAocGwpID0+XG4gICAgICAgICAgICAgICAgICBwbGFjZS5sYXlvdXQueCA9PT0gcGwubGF5b3V0LnggJiZcbiAgICAgICAgICAgICAgICAgIHBsYWNlLmxheW91dC55ID09PSBwbC5sYXlvdXQueSAmJlxuICAgICAgICAgICAgICAgICAgcGxhY2UubGF5b3V0LndpZHRoID09PSBwbC5sYXlvdXQud2lkdGggJiZcbiAgICAgICAgICAgICAgICAgIHBsYWNlLmxheW91dC5oZWlnaHQgPT09IHBsLmxheW91dC5oZWlnaHRcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICBzb3VyY2VQbGFjZTogY3VycmVudExheW91dCxcbiAgICAgICAgICB0YXJnZXRQbGFjZTogcGxhY2UubGF5b3V0LFxuICAgICAgICAgIHdpbmRvd01hbmlmZXN0OiB0aGlzLndpbmRvd01hbmlmZXN0XG4gICAgICAgIH1cbiAgICAgIH0pKSxcbiAgICAgIGdyaWQ6IHtcbiAgICAgICAgbGF5b3V0OiB0aGlzLmN1cnJlbnRMYXlvdXQsXG4gICAgICAgIHJvd3M6IHRoaXMud2luZG93TWFuaWZlc3Q/LmdyaWQ/LnJvd3MgPz8gREVGQVVMVF9ST1dTX05VTUJFUixcbiAgICAgICAgY29sdW1uczogdGhpcy53aW5kb3dNYW5pZmVzdD8uZ3JpZD8uY29sdW1ucyA/PyBERUZBVUxUX0NPTFVNTlNfTlVNQkVSLFxuICAgICAgICBnYXA6IDNcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9wZW5TdWI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJvLXdpZGdldF9faGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJvLXdpZGdldF9faGVhZGVyX19jb250ZW50XCI+XG4gICAgPGgyIGNsYXNzPVwiby13aWRnZXRfX2hlYWRlcl9fY29udGVudF9fdGl0bGVcIiAqbmdJZj1cIihtYW5pZmVzdCQgfCBhc3luYyk/LnRpdGxlOyBlbHNlIHF1ZXJ5U2VsZWN0b3JcIj5cbiAgICAgIHt7IChtYW5pZmVzdCQgfCBhc3luYyk/LnRpdGxlIH19XG4gICAgPC9oMj5cbiAgICA8bmctdGVtcGxhdGUgI3F1ZXJ5U2VsZWN0b3I+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkcyBvZiB1c2VkRGF0YXNvdXJjZXMkIHwgYXN5bmNcIiBjbGFzcz1cIm8td2lkZ2V0X19oZWFkZXJfX2NvbnRlbnRfX3F1ZXJ5XCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cImRzLmlkIHwgdHJhbnNsYXRlSWQgOiB7IHR5cGU6ICdkYXRhc291cmNlJywgb3V0cHV0OiAnaWNvbicsIG5vRGVmYXVsdDogdHJ1ZSB9IHwgYXN5bmMgYXMgdXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbWcgW2hlaWdodF09XCIyMFwiIFtzcmNdPVwidXJsXCIgW3dpZHRoXT1cIjIwXCIgYWx0PVwiXCIgY2xhc3M9XCJvLXdpZGdldF9faGVhZGVyX19jb250ZW50X19xdWVyeV9faWNvblwiIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8aDMgY2xhc3M9XCJvLXdpZGdldF9faGVhZGVyX19jb250ZW50X19xdWVyeV9fbmFtZVwiPnt7IGRzLm5hbWUgfX08L2gzPlxuICAgICAgICA8aDMgY2xhc3M9XCJvLXdpZGdldF9faGVhZGVyX19jb250ZW50X19xdWVyeV9fbmFtZVwiICpuZ0lmPVwiZGlzcGxheUNvdW50ICYmICFpc0dlbyhkcylcIj5cbiAgICAgICAgICAoe3sgW2RzLmlkXSB8IHJlc3VsdFNldFNpemUgfCBhc3luYyB9fSlcbiAgICAgICAgPC9oMz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIigodXNlZERhdGFzb3VyY2VzJCB8IGFzeW5jKSA/PyBbXSkubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJvLXdpZGdldF9faGVhZGVyX19jb250ZW50X19uby1kYXRhXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cIm8td2lkZ2V0X19oZWFkZXJfX2NvbnRlbnRfX3RpdGxlXCI+e3sgJ0Bwcnkud2lkZ2V0Lm5vRGF0YScgfCBpMThuIH19PC9oMj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXBcIiAqbmdJZj1cImRpc3BsYXlDb250ZXh0TWVudSQgfCBhc3luYyBhcyBvcHRpb25zXCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBpZD1cImRpYWxvZ19NZW51XCJcbiAgICAgIGFyaWEtY29udHJvbHM9XCJtZW51XCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwidGhpcy5tZW51XCJcbiAgICAgICN0b2dnbGVQYW5lbFxuICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tbW9yZVwiXG4gICAgICAoY2xpY2spPVwibWVudU9wZW4oJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPHByeS1pY29uIFtoZWlnaHRdPVwiMjVcIiBbd2lkdGhdPVwiMjVcIiBpY29uU3ZnPVwibW9yZV9ob3JpelwiPjwvcHJ5LWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkuYWN0aW9uLm9wZW5NZW51V2lkZ2V0JyB8IGkxOG4gfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjb3ZlcmxheU1lbnU+XG4gIDxkaXYgY2xhc3M9XCJtLWNvbnRleHQtbWVudVwiICpuZ0lmPVwiZGlzcGxheUNvbnRleHRNZW51JCB8IGFzeW5jIGFzIG9wdGlvbnNcIj5cbiAgICA8dWxcbiAgICAgIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RcIlxuICAgICAgI21lbnVMaXN0XG4gICAgICBpZD1cIm1lbnVcIlxuICAgICAgcm9sZT1cIm1lbnVcIlxuICAgICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGlhbG9nX01lbnVcIlxuICAgICAgKGtleWRvd24uYXJyb3dEb3duKT1cIm9uQXJyb3dEb3duKClcIlxuICAgICAgKGtleWRvd24uYXJyb3dVcCk9XCJvbkFycm93VXAoKVwiXG4gICAgICAoa2V5ZG93bi5lc2NhcGUpPVwibWVudU9wZW4oKVwiXG4gICAgPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIlxuICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgICpuZ0lmPVwiKG1hbmlmZXN0JCB8IGFzeW5jKT8uZGF0YXNvdXJjZSAmJiAob3B0aW9ucyA9PT0gdHJ1ZSB8fCBvcHRpb25zWydkYXRhc291cmNlU2VsZWN0aW9uJ10gPT09IHRydWUpXCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJtZW51aXRlbVwiXG4gICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgaWQ9XCJ0b2dnbGVBY3Rpb25zXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGF0YXNvdXJjZVNlbGVjdGlvbigpXCJcbiAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnd2lkZ2V0JywgYWN0aW9uOiAnc2VsZWN0X25hbWVkX3F1ZXJ5JyB9XCJcbiAgICAgICAgICBjbGFzcz1cImEtYnRuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjE3XCIgW3dpZHRoXT1cIjE3XCIgaWNvblN2Zz1cInN0YWNrLWZpbGxcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LndpZGdldC50b29sdGlwLnJlYWRTZWFyY2gnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIiByb2xlPVwibm9uZVwiICpuZ0lmPVwib3B0aW9ucyA9PT0gdHJ1ZSB8fCBvcHRpb25zIVsncGFyYW1ldGVycyddID09PSB0cnVlXCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvbGk+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9ucyA9PT0gdHJ1ZSB8fCBvcHRpb25zIVsnd2luZG93J10gPT09IHRydWVcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIiByb2xlPVwibm9uZVwiICpuZ0Zvcj1cImxldCB0YXJnZXRJbmRleCBvZiB0YXJnZXRJbmRleGVzJCB8IGFzeW5jXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwibW92ZUluTmV3V2luZG93KF93aWRnZXRJbmRleCwgdGFyZ2V0SW5kZXgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1idG5cIlxuICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjE3XCIgW3dpZHRoXT1cIjE3XCIgaWNvblN2Zz1cImxhdW5jaFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAodGFyZ2V0SW5kZXggIT09IC0xID8gJ0Bwcnkud2lkZ2V0LnRhcmdldC5leGlzdGluZycgOiAnQHByeS53aWRnZXQudGFyZ2V0Lm5ldycpXG4gICAgICAgICAgICAgICAgfCBpMThuIDogeyB0YXJnZXRJbmRleDogdGhpcy50YXJnZXRJbmRleCArIDEgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIlxuICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgICpuZ0lmPVwiaGFzR3JpZCAmJiAob3B0aW9ucyA9PT0gdHJ1ZSB8fCBvcHRpb25zIVsnY2hhbmdlU3BvdCddID09PSB0cnVlKVwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJtZW51aXRlbVwiIChjbGljayk9XCJ0b2dnbGVDaGFuZ2VTcG90KClcIiBjbGFzcz1cImEtYnRuXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjE3XCIgW3dpZHRoXT1cIjE3XCIgaWNvblN2Zz1cIm1vdmVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LndpZGdldC50b29sdGlwLmNoYW5nZVNwb3QnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIiByb2xlPVwibm9uZVwiICpuZ0lmPVwib3B0aW9ucyA9PT0gdHJ1ZSB8fCBvcHRpb25zIVsnbWF4aW1pemUnXSA9PT0gdHJ1ZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAoY2xpY2spPVwibWF4aW1pemUoX3dpZGdldEluZGV4KVwiXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0blwiXG4gICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cIm1lbnVPcGVuKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIFtoZWlnaHRdPVwiMTdcIiBbd2lkdGhdPVwiMTdcIiBpY29uU3ZnPVwiZnVsbHNjcmVlblwiPjwvcHJ5LWljb24+XG4gICAgICAgICAge3sgJ0Bwcnkud2lkZ2V0LnRhcmdldC5tYXhpbWl6ZScgfCBpMThuIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCIgcm9sZT1cIm5vbmVcIiAqbmdJZj1cIm9wdGlvbnMgPT09IHRydWUgfHwgb3B0aW9ucyFbJ2FkZFRvQ2F0YWxvZyddID09PSB0cnVlXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJtZW51aXRlbVwiIHRhYmluZGV4PVwiLTFcIiAoY2xpY2spPVwidG9nZ2xlQ2F0YWxvZygpXCIgY2xhc3M9XCJhLWJ0blwiPlxuICAgICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjE3XCIgW3dpZHRoXT1cIjE3XCIgaWNvblN2Zz1cImxpYnJhcnlfYWRkXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8c3Bhbj57eyAnQHByeS53aWRnZXQudG9vbHRpcC5jYXRhbG9nV2lkZ2V0JyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCIgcm9sZT1cIm5vbmVcIiAqbmdJZj1cIm9wdGlvbnMgPT09IHRydWUgfHwgb3B0aW9ucyFbJ2RlbGV0ZSddID09PSB0cnVlXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSZW1vdmVDb25maXJtKCRldmVudClcIlxuICAgICAgICAgIGNsYXNzPVwiYS1idG5cIlxuICAgICAgICAgIChrZXlkb3duLnRhYik9XCJtZW51T3BlbigpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjE3XCIgW3dpZHRoXT1cIjE3XCIgaWNvblN2Zz1cImRlbGV0ZVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4+e3sgJ0Bwcnkud2lkZ2V0LnRvb2x0aXAuZGVsZXRlV2lkZ2V0JyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCIgcm9sZT1cIm5vbmVcIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFkZGl0aW9uYWxPcHRpb25zXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImEtYnRuXCJcbiAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIChjbGljayk9XCJleGVjdXRlQWN0aW9uKG9wdGlvbilcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0FjdGlvbkRpc2FibGVkKG9wdGlvbilcIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIFtoZWlnaHRdPVwiMTdcIiBbd2lkdGhdPVwiMTdcIiBbaWNvblN2Z109XCJvcHRpb24uaWNvblwiPjwvcHJ5LWljb24+XG4gICAgICAgICAge3sgb3B0aW9uLmxhYmVsIHwgaTE4biB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlTW9kYWw+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm8tbW9kYWxcIlxuICAgIChrZXlkb3duLmVzY2FwZSk9XCJjYW5jZWxSZW1vdmVDb25maXJtKClcIlxuICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJkaWFsb2cgY29uZmlybSBkZWxldGUgcHJlc2VudGF0aW9uXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX3RpdGxlXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImEtaDJcIiBpZD1cImRpYWxvZ190aXRsZVwiPlxuICAgICAgICAgIHt7ICdAcHJ5LndpZGdldC5tb2RhbFRpdGxlJyB8IGkxOG4gfX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fY2xvc2VcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIiAjY3Jvc3MgKGNsaWNrKT1cImNhbmNlbFJlbW92ZUNvbmZpcm0oKVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiY2xvc2VcIiBbaGVpZ2h0XT1cIjM1XCIgW3dpZHRoXT1cIjM1XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkudG9vbGJveC5jbG9zZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cFwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNhbmNlbFJlbW92ZUNvbmZpcm0oKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cImNvbmZpcm1SZW1vdmUoKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiAoa2V5ZG93bi50YWIpPVwiZm9jdXNDcm9zc0VsZW1lbnQoKVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LnZhbGlkYXRlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxwcnktZGF0YXNvdXJjZS1zZWxlY3RvclxuICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICB0cmFuc2xhdGlvblN0cmluZ0Jhc2U9XCJAcHJ5LmNvbXBvbmVudHMuY2hpcHNTZWxlY3Rvci5kYXRhc291cmNlLlwiXG4gICAgKGNhbmNlbCk9XCJ0b2dnbGVEYXRhc291cmNlU2VsZWN0aW9uKClcIlxuICAgICh2YWxpZGF0ZWQpPVwiZW1pdE1hbmlmZXN0KClcIlxuICAgIChuZXh0VGFiKT1cImZvY3VzSW5wdXRDYXRhbG9nKClcIlxuICAgIChwcmV2aW91c1RhYik9XCJmb2N1c1ZhbGlkYXRpb24oKVwiXG4gICAgKGl0ZW1zQ2hhbmdlZCk9XCJkYXRhc291cmNlc0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgW3VzZWRJdGVtc109XCIodXNlZERhdGFzb3VyY2VzJCB8IGFzeW5jKSA/PyBbXVwiXG4gID48L3ByeS1kYXRhc291cmNlLXNlbGVjdG9yPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNvdmVybGF5Q2F0YWxvZz5cbiAgPGRpdlxuICAgIGNsYXNzPVwiby1tb2RhbFwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZ19DYXRhbG9nXCJcbiAgICAoa2V5ZG93bi5lc2NhcGUpPVwidG9nZ2xlQ2F0YWxvZygpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX3RpdGxlXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImEtaDJcIj5cbiAgICAgICAgICB7eyAnQHByeS53aWRnZXQuZGVmaW5lQ2F0YWxvZycgfCBpMThuIH19XG4gICAgICAgIDwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX2Nsb3NlXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIlxuICAgICAgICAgIChrZXlkb3duLnNoaWZ0LnRhYik9XCJmb2N1c1ZhbGlkYXRpb24oKVwiXG4gICAgICAgICAgI2Nyb3NzQ2F0YWxvZ1xuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDYXRhbG9nKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiIFtoZWlnaHRdPVwiMzVcIiBbd2lkdGhdPVwiMzVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS50b29sYm94LmNsb3NlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cIm5hbWVcIj57eyAnQHByeS50b29sYm94LmNhdGFsb2cubGFiZWwnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJjYXRhbG9nSW5mby5uYW1lXCIgaWQ9XCJuYW1lXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIHJlcXVpcmVkIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImRlc2NyaXB0aW9uXCI+e3sgJ0BwcnkudG9vbGJveC5jYXRhbG9nLmRlc2NyaXB0aW9uJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiY2F0YWxvZ0luZm8uZGVzY3JpcHRpb25cIiBpZD1cImRlc2NyaXB0aW9uXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIHJlcXVpcmVkIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgPHByeS1zZWxlY3QtaW1hZ2VcbiAgICAgICAgW2ljb25VcmxdPVwiY2F0YWxvZ0luZm8uaW1hZ2VcIlxuICAgICAgICAoY2hhbmdlZCk9XCJjYXRhbG9nSW5mby5pbWFnZSA9ICRldmVudFwiXG4gICAgICAgIFttb2RlXT1cInR5cGVcIlxuICAgICAgPjwvcHJ5LXNlbGVjdC1pbWFnZT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXBcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVDYXRhbG9nKClcIlxuICAgICAgICAjY2FuY2VsXG4gICAgICAgIChrZXlkb3duLnRhYik9XCJkaXNhYmxlVmFsaWRhdGlvbigpXCJcbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCJcbiAgICAgID5cbiAgICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jbG9zZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICN2YWxpZGF0ZUNhdGFsb2dcbiAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1DYXRhbG9nKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIXRvb2xib3hNZW51U2VydmljZS5pc1ZhbGlkRm9yQ2F0YWxvZyhjYXRhbG9nSW5mby5uYW1lKVwiXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgICAoa2V5ZG93bi50YWIpPVwiZm9jdXNDcm9zc0VsZW1lbnQoKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QudmFsaWRhdGUnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNvdmVybGF5U3BvdD5cbiAgPGRpdiBjbGFzcz1cIm8tbW9kYWwgLXBsYWNlXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fdGl0bGVcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiYS1oMlwiPlxuICAgICAgICAgIHt7ICdAcHJ5LndpZGdldC50b29sdGlwLmNoYW5nZVNwb3QnIHwgaTE4biB9fVxuICAgICAgICA8L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX19jbG9zZVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiIChjbGljayk9XCJ0b2dnbGVDaGFuZ2VTcG90KClcIj5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2hlaWdodF09XCIzNVwiIFt3aWR0aF09XCIzNVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3guY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8cHJ5LWRhc2hib2FyZFxuICAgICAgW3N0YXRpY0Rhc2hib2FyZF09XCJ0YXJnZXRNYW5pZmVzdCFcIlxuICAgICAgW2JyZWFrcG9pbnRdPVwiMTBcIlxuICAgICAgW25vQmFja2dyb3VuZF09XCJ0cnVlXCJcbiAgICAgIFtmb3JjZU1vZGVFZGl0aW9uXT1cImZhbHNlXCJcbiAgICA+PC9wcnktZGFzaGJvYXJkPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
456
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL2NvbXBvbmVudHMvd2lkZ2V0cy9oZWFkZXIvd2lkZ2V0LWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL2NvbXBvbmVudHMvd2lkZ2V0cy9oZWFkZXIvd2lkZ2V0LWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEtBQUssTUFBTSxxQkFBcUIsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQXFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBcUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUVuSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFN0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRTFFLE9B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QUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNELFdBQVc7c0JBQTNELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDckIsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNKLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDSyxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ1MsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ1AsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNRLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDRSxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0YsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQVNSLFFBQVE7c0JBQXBCLEtBQUs7Z0JBSU8sU0FBUztzQkFBckIsS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFhTSxhQUFhO3NCQUF6QixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwvZXM2JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgR2VvTWV0YWRhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVsL2RhdGFzZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IERhc2hib2FyZEdyaWRMYXlvdXQsIERhc2hib2FyZE1hbmlmZXN0LCBXaWRnZXRNYW5pZmVzdCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IFdpZGdldCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvbW9kZWwvd2lkZ2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb25maWdBY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9jb25maWcvY29uZmlnLmFjdGlvbnMnO1xuaW1wb3J0IHsgRGF0YXNldCwgRGF0YVNvdXJjZSwgTmFtZWRRdWVyeSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvZGF0YS1zb3VyY2UvZGF0YS1zb3VyY2UubW9kZWwnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVNlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvZGF0YS1zb3VyY2UvZGF0YS1zb3VyY2Uuc2VsZWN0b3JzJztcbmltcG9ydCB7IExpYnJhcnlUeXBlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvaW1hZ2UvaW1hZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBUb29sYm94TWVudVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3Rvb2xib3gvdG9vbGJveC1tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2Rhc2hib2FyZC5hY3Rpb25zJztcbmltcG9ydCB7IERhc2hib2FyZFNlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2Rhc2hib2FyZC5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vc3Vic2NyaXB0aW9ubmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBXaWRnZXRQbGFjZW1lbnRVdGlscyB9IGZyb20gJy4uL3dpZGdldC1wbGFjZW1lbnQvd2lkZ2V0LXBsYWNlbWVudC51dGlscyc7XG5pbXBvcnQgeyBXaWRnZXRDb250ZXh0TWVudURpc3BsYXlPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9tb2RlbC9kaXNwbGF5LW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IERFRkFVTFRfQ09MVU1OU19OVU1CRVIsIERFRkFVTFRfUk9XU19OVU1CRVIgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9kYXNoYm9hcmQuY29udGFudHMnO1xuXG5leHBvcnQgY29uc3QgV0lER0VUX0hFQURFUl9IRUlHSFQgPSAzMjtcblxuZXhwb3J0IHR5cGUgSGVhZGVyQWN0aW9uID0ge1xuICBpY29uOiBzdHJpbmc7XG4gIGFjdGlvbjogKHRoYXQ6IFByeVdpZGdldEhlYWRlckNvbXBvbmVudCkgPT4gdm9pZDtcbiAgbGFiZWw6IHN0cmluZztcbiAgZGlzYWJsZWQ/OiAodGhhdDogUHJ5V2lkZ2V0SGVhZGVyQ29tcG9uZW50KSA9PiBib29sZWFuO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXdpZGdldC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LWhlYWRlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJ5V2lkZ2V0SGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVNb2RhbCcsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGVtcGxhdGVNb2RhbCE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3RvZ2dsZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdG9nZ2xlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnb3ZlcmxheU1lbnUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIG92ZXJsYXlNZW51ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnb3ZlcmxheUNhdGFsb2cnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIG92ZXJsYXlDYXRhbG9nITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnb3ZlcmxheVNwb3QnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIG92ZXJsYXlTcG90ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgndG9nZ2xlUGFuZWwnKSB0b2dnbGVQYW5lbCE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjcm9zcycpIGNyb3NzITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3ZhbGlkYXRlJykgdmFsaWRhdGUhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgndmFsaWRhdGVDYXRhbG9nJykgdmFsaWRhdGVDYXRhbG9nITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NhbmNlbCcpIGNhbmNlbCE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjcm9zc0NhdGFsb2cnKSBjcm9zc0NhdGFsb2chOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnaW5wdXRDYXRhbG9nJykgaW5wdXRDYXRhbG9nITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnbWVudUxpc3QnKSBtZW51TGlzdCE6IEVsZW1lbnRSZWY7XG4gIG1hbmlmZXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2lkZ2V0TWFuaWZlc3QgfCBudWxsPihudWxsKTtcbiAgc3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBwbGFjZXM6IFdpZGdldE1hbmlmZXN0W10gPSBbXTtcbiAgc2VsZWN0ZWRJdGVtPzogRWxlbWVudCB8IG51bGw7XG4gIHVzZWREYXRhc291cmNlcyQ6IE9ic2VydmFibGU8RGF0YVNvdXJjZVtdPjtcbiAgb3BlblN1Yj86IFN1YnNjcmlwdGlvbjtcbiAgdGFyZ2V0TWFuaWZlc3Q/OiBEYXNoYm9hcmRNYW5pZmVzdDtcblxuICBASW5wdXQoKSBzZXQgbWFuaWZlc3QobWFuaWZlc3Q6IFdpZGdldE1hbmlmZXN0IHwgbnVsbCkge1xuICAgIHRoaXMubWFuaWZlc3QkLm5leHQobWFuaWZlc3QpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IG9wZW5EYXRhJChvcGVuJDogT2JzZXJ2YWJsZTx2b2lkPiB8IFN1YmplY3Q8dm9pZD4pIHtcbiAgICB0aGlzLm9wZW5TdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuU3ViID0gb3BlbiQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMudG9nZ2xlRGF0YXNvdXJjZVNlbGVjdGlvbigpO1xuICAgIH0pO1xuICB9XG5cbiAgQElucHV0KCkgYWRkaXRpb25hbE9wdGlvbnM6IEhlYWRlckFjdGlvbltdIHwgbnVsbCA9IFtdO1xuICBASW5wdXQoKSBoZWFkZXJPcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IHt9IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBkaXNwbGF5Q291bnQgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSBtYW5pZmVzdE1vZGlmaWVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IHdpZGdldEluZGV4OiBudW1iZXI7IG1hbmlmZXN0OiBXaWRnZXRNYW5pZmVzdCB9PigpO1xuXG4gIGlzRWRpdCA9IGZhbHNlO1xuICBjYXRhbG9nSW5mbzogV2lkZ2V0ID0ge1xuICAgIGlkOiB2NCgpLFxuICAgIGltYWdlOiAnJyxcbiAgICBuYW1lOiAnJyxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgY29udGVudDogJycsXG4gICAgZGF0YXNvdXJjZTogW10sXG4gICAgbW9kaWZpY2F0aW9uRGF0ZTogJydcbiAgfTtcblxuICBASW5wdXQoKSBzZXQgZGF0YXNvdXJjZUlkcyhkYXRhc291cmNlSWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhU291cmNlSWRzJC5uZXh0KGRhdGFzb3VyY2VJZHMpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHdpZGdldEluZGV4KHdpZGdldEluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLl93aWRnZXRJbmRleCQubmV4dCh3aWRnZXRJbmRleCk7XG4gICAgdGhpcy5fd2lkZ2V0SW5kZXggPSB3aWRnZXRJbmRleDtcbiAgfVxuXG4gIGRpc3BsYXlDb250ZXh0TWVudSQ6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFdpZGdldENvbnRleHRNZW51RGlzcGxheU9wdGlvbnM+O1xuICB0YXJnZXRJbmRleGVzJDogT2JzZXJ2YWJsZTxudW1iZXJbXT47XG4gIF93aWRnZXRJbmRleCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIF93aWRnZXRJbmRleCE6IG51bWJlcjtcbiAgb3BlbiA9IGZhbHNlO1xuICBzZWxlY3RlZERhdGFTb3VyY2VJZHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pO1xuXG4gIHdpbmRvd01hbmlmZXN0OiBEYXNoYm9hcmRNYW5pZmVzdCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHdpbmRvd01hbmlmZXN0JDogT2JzZXJ2YWJsZTxEYXNoYm9hcmRNYW5pZmVzdD47XG4gIHByaXZhdGUgbWVudVJlZj86IE92ZXJsYXlSZWY7XG4gIHByaXZhdGUgY29tYm9SZWY/OiBPdmVybGF5UmVmO1xuICBwcml2YXRlIGNvbmZpcm1SZW1vdmVSZWY/OiBPdmVybGF5UmVmO1xuICBwcml2YXRlIGNhdGFsb2dSZWY/OiBPdmVybGF5UmVmO1xuICBwcml2YXRlIHNwb3RSZWY/OiBPdmVybGF5UmVmO1xuICBtZW51OiBib29sZWFuID0gZmFsc2U7XG4gIHR5cGU6IExpYnJhcnlUeXBlcyA9IExpYnJhcnlUeXBlcy5JTExVU1RSQVRJT047XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwdWJsaWMgdG9vbGJveE1lbnVTZXJ2aWNlOiBUb29sYm94TWVudVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLndpbmRvd01hbmlmZXN0JCA9IHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLndpbmRvd01hbmlmZXN0KVxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKHAsIGMpID0+IGVxdWFsKHAsIGMpKSk7XG5cbiAgICB0aGlzLnRhcmdldEluZGV4ZXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnRhcmdldFRlbmFudHNJbmRleGVzKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy53aW5kb3dNYW5pZmVzdCQuc3Vic2NyaWJlKChtYW5pZmVzdCkgPT4ge1xuICAgICAgICB0aGlzLndpbmRvd01hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5kaXNwbGF5Q29udGV4dE1lbnUkID0gdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZGlzcGxheU9wdGlvbnMpXG4gICAgICAucGlwZShtYXAoKG9wdGlvbnMpID0+IG9wdGlvbnMud2lkZ2V0Q29udGV4dE1lbnUpKTtcblxuICAgIHRoaXMudXNlZERhdGFzb3VyY2VzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5nZXREYXRhU291cmNlc1NvcnRlZCksXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZUlkcyRcbiAgICBdKS5waXBlKG1hcCgoW2FsbERzcywgZHNJZHNdKSA9PiBhbGxEc3MuZmlsdGVyKChkcykgPT4gZHNJZHMuaW5jbHVkZXMoZHMuaWQpKSkpO1xuICB9XG5cbiAgb25BcnJvd1VwKCkge1xuICAgIGNvbnN0IGxhc3RFbGVtZW50ID0gdGhpcy5tZW51TGlzdC5uYXRpdmVFbGVtZW50Lmxhc3RFbGVtZW50Q2hpbGQ7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtPy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWRJdGVtLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gbGFzdEVsZW1lbnQ7XG4gICAgfVxuICAgIGNvbnN0IGZvY3VzRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5jaGlsZHJlblswXSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICBjb25zdCBmb2N1c0NoaWxkcmVuRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5jaGlsZHJlblswXS5jaGlsZHJlblswXSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICBpZiAoZm9jdXNDaGlsZHJlbkVsZW1lbnQpIHtcbiAgICAgIGZvY3VzQ2hpbGRyZW5FbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIGZvY3VzRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgb25BcnJvd0Rvd24oKSB7XG4gICAgY29uc3QgZmlyc3RFbGVtZW50ID0gdGhpcy5tZW51TGlzdC5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbT8ubmV4dEVsZW1lbnRTaWJsaW5nKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWRJdGVtLm5leHRFbGVtZW50U2libGluZztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBmaXJzdEVsZW1lbnQ7XG4gICAgfVxuICAgIGNvbnN0IGZvY3VzRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5jaGlsZHJlblswXSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICBjb25zdCBmb2N1c0NoaWxkcmVuRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5jaGlsZHJlblswXS5jaGlsZHJlblswXSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICBpZiAoZm9jdXNDaGlsZHJlbkVsZW1lbnQpIHtcbiAgICAgIGZvY3VzQ2hpbGRyZW5FbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIGZvY3VzRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRMYXlvdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMud2luZG93TWFuaWZlc3Q/LmdyaWQ/LmxheW91dCA/PyBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTDtcbiAgfVxuXG4gIGdldCBoYXNHcmlkKCkge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRMYXlvdXQgIT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRQbGFjZW1lbnRJbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZXMuZmluZEluZGV4KFxuICAgICAgKHBsYWNlKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0JC5nZXRWYWx1ZSgpPy5sYXlvdXQueCA9PT0gcGxhY2UubGF5b3V0LnggJiZcbiAgICAgICAgdGhpcy5tYW5pZmVzdCQuZ2V0VmFsdWUoKT8ubGF5b3V0LnkgPT09IHBsYWNlLmxheW91dC55ICYmXG4gICAgICAgIHRoaXMubWFuaWZlc3QkLmdldFZhbHVlKCk/LmxheW91dC53aWR0aCA9PT0gcGxhY2UubGF5b3V0LndpZHRoICYmXG4gICAgICAgIHRoaXMubWFuaWZlc3QkLmdldFZhbHVlKCk/LmxheW91dC5oZWlnaHQgPT09IHBsYWNlLmxheW91dC5oZWlnaHRcbiAgICApO1xuICB9XG5cbiAgbWVudU9wZW4oJGV2ZW50PzogTW91c2VFdmVudCwgZm9yY2VPcGVuPzogYm9vbGVhbikge1xuICAgIHRoaXMubWVudSA9ICF0aGlzLm1lbnU7XG4gICAgY29uc3QgbXVzdE9wZW4gPSBmb3JjZU9wZW4gIT09IHVuZGVmaW5lZCA/IGZvcmNlT3BlbiA6ICF0aGlzLm1lbnVSZWY7XG4gICAgaWYgKG11c3RPcGVuKSB7XG4gICAgICB0aGlzLm1lbnVSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKFxuICAgICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgcGFuZWxDbGFzczogWydtLWNvbnRleHQtbWVudS13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJyxcbiAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLnRvZ2dsZVBhbmVsKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0WDogNTAsXG4gICAgICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdKVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5hZGRpbmdPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctbWVudScgfSkpO1xuICAgICAgdGhpcy5tZW51UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKF8pID0+IHRoaXMubWVudU9wZW4oKSk7XG4gICAgICB0aGlzLm1lbnVSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLm92ZXJsYXlNZW51LCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMubWVudUxpc3Q/Lm5hdGl2ZUVsZW1lbnQ/LmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICBjb25zdCBmb2N1cyA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5jaGlsZHJlblswXSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICAgICAgICBjb25zdCBmb2N1c0NoaWxkcmVuRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5jaGlsZHJlblswXT8uY2hpbGRyZW5bMF0gYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICAgICAgZm9jdXMgPyBmb2N1cy5mb2N1cygpIDogZm9jdXNDaGlsZHJlbkVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tZW51UmVmPy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLm1lbnVSZWYgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctbWVudScgfSkpO1xuICAgICAgdGhpcy50b2dnbGVQYW5lbD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVEYXRhc291cmNlU2VsZWN0aW9uKCkge1xuICAgIGlmICghdGhpcy5jb21ib1JlZikge1xuICAgICAgdGhpcy5jb21ib1JlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28td2lkZ2V0X19jaG9vc2UtcmVzdWx0c2V0J10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5hZGRpbmdPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctY29tYm8nIH0pKTtcbiAgICAgIHRoaXMuY29tYm9SZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoXykgPT4gdGhpcy50b2dnbGVEYXRhc291cmNlU2VsZWN0aW9uKCkpO1xuICAgICAgdGhpcy5jb21ib1JlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5wdXRDYXRhbG9nPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgICAgfSwgMTApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbWJvUmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuY29tYm9SZWYgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctY29tYm8nIH0pKTtcbiAgICAgIHRoaXMubWVudU9wZW4odW5kZWZpbmVkLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgbW92ZUluTmV3V2luZG93KHdpZGdldEluZGV4OiBudW1iZXIsIHRhcmdldEluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMubW92ZVdpZGdldCh7IHdpZGdldEluZGV4LCB0YXJnZXRJbmRleCB9KSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnRvZ2dsZUVkaXRpb25Nb2RlKHsgZm9yY2U6IGZhbHNlIH0pKTtcbiAgICB0aGlzLm1lbnVPcGVuKCk7XG4gIH1cblxuICBtYXhpbWl6ZSh3aWRnZXRJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLm1heGltaXplV2lkZ2V0KHsgd2lkZ2V0SW5kZXggfSkpO1xuICAgIHRoaXMubWVudU9wZW4oKTtcbiAgfVxuXG4gIGVtaXRNYW5pZmVzdCgpIHtcbiAgICB0aGlzLm1hbmlmZXN0TW9kaWZpZWQuZW1pdCh7XG4gICAgICB3aWRnZXRJbmRleDogdGhpcy5fd2lkZ2V0SW5kZXgsXG4gICAgICBtYW5pZmVzdDoge1xuICAgICAgICAuLi50aGlzLm1hbmlmZXN0JC5nZXRWYWx1ZSgpLFxuICAgICAgICBkYXRhc291cmNlOiB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZUlkcyQuZ2V0VmFsdWUoKVxuICAgICAgfSBhcyB1bmtub3duIGFzIFdpZGdldE1hbmlmZXN0XG4gICAgfSk7XG4gICAgdGhpcy50b2dnbGVEYXRhc291cmNlU2VsZWN0aW9uKCk7XG4gIH1cblxuICB0b2dnbGVSZW1vdmVDb25maXJtKCRldmVudD86IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlybVJlbW92ZVJlZikge1xuICAgICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5hZGRpbmdPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctbW9kYWwnIH0pKTtcbiAgICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnRvZ2dsZVJlbW92ZUNvbmZpcm0oKSk7XG4gICAgICB0aGlzLmNvbmZpcm1SZW1vdmVSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlTW9kYWwsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICBjb25zdCBwYW5lbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi5vLW1vZGFsLXdyYXBwZXInKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgaWYgKCEhcGFuZWwpIHtcbiAgICAgICAgICBwYW5lbC5zdHlsZS5sZWZ0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4od2luZG93LmlubmVyV2lkdGggLSBwYW5lbC5jbGllbnRXaWR0aCwgJGV2ZW50LmNsaWVudFggLSAzMCkpICsgJ3B4JztcbiAgICAgICAgICBwYW5lbC5zdHlsZS50b3AgPSBNYXRoLm1heCgwLCBNYXRoLm1pbih3aW5kb3cuaW5uZXJIZWlnaHQgLSBwYW5lbC5jbGllbnRIZWlnaHQsICRldmVudC5jbGllbnRZIC0gMTApKSArICdweCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNyb3NzPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgICAgfSwgMTApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmZpcm1SZW1vdmVSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy50b2dnbGVQYW5lbD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgJy1tb2RhbCcgfSkpO1xuICAgICAgdGhpcy5tZW51T3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpcm1SZW1vdmUoKSB7XG4gICAgdGhpcy5yZW1vdmUoKTtcbiAgICB0aGlzLmNhbmNlbFJlbW92ZUNvbmZpcm0oKTtcbiAgfVxuXG4gIHJlbW92ZSgpIHtcbiAgICBjb25zdCBsaXN0V2lkZ2V0TWFuaWZlc3RzID0gWy4uLih0aGlzLndpbmRvd01hbmlmZXN0IHx8IHsgd2lkZ2V0czogW10gfSkud2lkZ2V0c107XG4gICAgbGlzdFdpZGdldE1hbmlmZXN0cy5zcGxpY2UodGhpcy5fd2lkZ2V0SW5kZXgsIDEpO1xuXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlRGFzaGJvYXJkTWFuaWZlc3Qoe1xuICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgIC4uLnRoaXMud2luZG93TWFuaWZlc3QsXG4gICAgICAgICAgd2lkZ2V0czogbGlzdFdpZGdldE1hbmlmZXN0c1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjYW5jZWxSZW1vdmVDb25maXJtKCkge1xuICAgIHRoaXMuaXNFZGl0ID0gZmFsc2U7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNsb3NlT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfSkpO1xuICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZj8uYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRvZ2dsZVJlbW92ZUNvbmZpcm0oKSk7XG4gICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubWVudVJlZj8uZGlzcG9zZSgpO1xuICAgIHRoaXMubWVudVJlZiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctbWVudScgfSkpO1xuICB9XG5cbiAgdG9nZ2xlQ2F0YWxvZygpIHtcbiAgICBpZiAoIXRoaXMuY2F0YWxvZ1JlZikge1xuICAgICAgdGhpcy5jYXRhbG9nSW5mbyA9IHtcbiAgICAgICAgaWQ6IHY0KCksXG4gICAgICAgIGltYWdlOiAnJyxcbiAgICAgICAgbmFtZTogJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgY29udGVudDogJycsXG4gICAgICAgIGRhdGFzb3VyY2U6IFtdLFxuICAgICAgICBtb2RpZmljYXRpb25EYXRlOiAnJ1xuICAgICAgfTtcbiAgICAgIHRoaXMuY2F0YWxvZ1JlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlciddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLWNhdGFsb2cnIH0pKTtcbiAgICAgIHRoaXMuY2F0YWxvZ1JlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnRvZ2dsZUNhdGFsb2coKSk7XG4gICAgICB0aGlzLmNhdGFsb2dSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLm92ZXJsYXlDYXRhbG9nLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNyb3NzQ2F0YWxvZz8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICAgIH0sIDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXRhbG9nUmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuY2F0YWxvZ1JlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgJy1jYXRhbG9nJyB9KSk7XG4gICAgICB0aGlzLm1lbnVPcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgY29uZmlybUNhdGFsb2coKSB7XG4gICAgaWYgKHRoaXMudG9vbGJveE1lbnVTZXJ2aWNlLmlzVmFsaWRGb3JDYXRhbG9nKHRoaXMuY2F0YWxvZ0luZm8ubmFtZSkpIHtcbiAgICAgIHRoaXMudG9vbGJveE1lbnVTZXJ2aWNlLmFkZFRvQ2F0YWxvZyhcbiAgICAgICAge1xuICAgICAgICAgIC4uLnRoaXMuY2F0YWxvZ0luZm8sXG4gICAgICAgICAgY29udGVudDogSlNPTi5zdHJpbmdpZnkoeyAuLi50aGlzLm1hbmlmZXN0JC5nZXRWYWx1ZSgpLCB0aXRsZTogdGhpcy5jYXRhbG9nSW5mby5uYW1lIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuX3dpZGdldEluZGV4XG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZUNhdGFsb2coKTtcbiAgfVxuXG4gIGV4ZWN1dGVBY3Rpb24ob3B0aW9uczogSGVhZGVyQWN0aW9uKSB7XG4gICAgb3B0aW9ucy5hY3Rpb24odGhpcyk7XG4gICAgdGhpcy5tZW51T3BlbigpO1xuICB9XG5cbiAgaXNBY3Rpb25EaXNhYmxlZChvcHRpb246IEhlYWRlckFjdGlvbikge1xuICAgIHJldHVybiAhIW9wdGlvbj8uZGlzYWJsZWQgPyBvcHRpb24/LmRpc2FibGVkKHRoaXMpIDogZmFsc2U7XG4gIH1cblxuICB0b2dnbGVDaGFuZ2VTcG90KCkge1xuICAgIGlmICghdGhpcy5zcG90UmVmKSB7XG4gICAgICB0aGlzLnBsYWNlcyA9IFdpZGdldFBsYWNlbWVudFV0aWxzLnBsYWNlbWVudE9wdGlvbnMoeyB0eXBlOiAnaWNvbicgfSBhcyBXaWRnZXRNYW5pZmVzdCwgdGhpcy5jdXJyZW50TGF5b3V0KTtcbiAgICAgIHRoaXMucGxhY2VzTWFuaWZlc3QoKTtcblxuICAgICAgdGhpcy5zcG90UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5hZGRpbmdPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctc3BvdCcgfSkpO1xuICAgICAgdGhpcy5zcG90UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50b2dnbGVDaGFuZ2VTcG90KCkpO1xuICAgICAgdGhpcy5zcG90UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5vdmVybGF5U3BvdCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3BvdFJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLnNwb3RSZWYgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctc3BvdCcgfSkpO1xuICAgICAgdGhpcy5tZW51T3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzQ3Jvc3NFbGVtZW50KCkge1xuICAgIHRoaXMuY3Jvc3M/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgdGhpcy5jcm9zc0NhdGFsb2c/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gIH1cblxuICBmb2N1c1ZhbGlkYXRpb24oKSB7XG4gICAgdGhpcy52YWxpZGF0ZUNhdGFsb2c/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgaWYgKCF0aGlzLnRvb2xib3hNZW51U2VydmljZS5pc1ZhbGlkRm9yQ2F0YWxvZyh0aGlzLmNhdGFsb2dJbmZvPy5uYW1lKSkge1xuICAgICAgdGhpcy5jYW5jZWw/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGU/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gIH1cblxuICBmb2N1c0lucHV0Q2F0YWxvZygpIHtcbiAgICB0aGlzLmlucHV0Q2F0YWxvZz8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgfVxuXG4gIGRpc2FibGVWYWxpZGF0aW9uKCkge1xuICAgIGlmICghdGhpcy50b29sYm94TWVudVNlcnZpY2UuaXNWYWxpZEZvckNhdGFsb2codGhpcy5jYXRhbG9nSW5mbz8ubmFtZSkpIHtcbiAgICAgIHRoaXMuY3Jvc3NDYXRhbG9nPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGRhdGFzb3VyY2VzQ2hhbmdlZCgkZXZlbnQ6IERhdGFTb3VyY2VbXSkge1xuICAgIGNvbnN0IGlkcyA9ICRldmVudC5tYXAoKGRzKSA9PiBkcy5pZCk7XG4gICAgaWYgKEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWREYXRhU291cmNlSWRzJC5nZXRWYWx1ZSgpKSAhPT0gSlNPTi5zdHJpbmdpZnkoaWRzKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGFTb3VyY2VJZHMkLm5leHQoaWRzKTtcbiAgICB9XG4gIH1cblxuICBpc0dlbyhkczogTmFtZWRRdWVyeSB8IERhdGFzZXQpIHtcbiAgICByZXR1cm4gZHMubWV0YWRhdGE/LmZpbmQoKG0pID0+IG0ubWV0YWRhdGFEZWYubmFtZSA9PT0gR2VvTWV0YWRhdGEuTkFNRVNQQUNFKSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcGxhY2VzTWFuaWZlc3QoKSB7XG4gICAgY29uc3QgY3VycmVudExheW91dCA9IHRoaXMubWFuaWZlc3QkLmdldFZhbHVlKCk/LmxheW91dCE7XG4gICAgdGhpcy50YXJnZXRNYW5pZmVzdCA9IHtcbiAgICAgIHdpZGdldHM6IHRoaXMucGxhY2VzLm1hcCgocGxhY2UsIGlkeCkgPT4gKHtcbiAgICAgICAgLi4ucGxhY2UsXG4gICAgICAgIHR5cGU6ICdmaWxsZXInLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgaW5kZXg6IGVxdWFsKGN1cnJlbnRMYXlvdXQsIHBsYWNlLmxheW91dClcbiAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgIDogdGhpcy5wbGFjZXMuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgIChwbCkgPT5cbiAgICAgICAgICAgICAgICAgIHBsYWNlLmxheW91dC54ID09PSBwbC5sYXlvdXQueCAmJlxuICAgICAgICAgICAgICAgICAgcGxhY2UubGF5b3V0LnkgPT09IHBsLmxheW91dC55ICYmXG4gICAgICAgICAgICAgICAgICBwbGFjZS5sYXlvdXQud2lkdGggPT09IHBsLmxheW91dC53aWR0aCAmJlxuICAgICAgICAgICAgICAgICAgcGxhY2UubGF5b3V0LmhlaWdodCA9PT0gcGwubGF5b3V0LmhlaWdodFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgIHNvdXJjZVBsYWNlOiBjdXJyZW50TGF5b3V0LFxuICAgICAgICAgIHRhcmdldFBsYWNlOiBwbGFjZS5sYXlvdXQsXG4gICAgICAgICAgd2luZG93TWFuaWZlc3Q6IHRoaXMud2luZG93TWFuaWZlc3RcbiAgICAgICAgfVxuICAgICAgfSkpLFxuICAgICAgZ3JpZDoge1xuICAgICAgICBsYXlvdXQ6IHRoaXMuY3VycmVudExheW91dCxcbiAgICAgICAgcm93czogdGhpcy53aW5kb3dNYW5pZmVzdD8uZ3JpZD8ucm93cyA/PyBERUZBVUxUX1JPV1NfTlVNQkVSLFxuICAgICAgICBjb2x1bW5zOiB0aGlzLndpbmRvd01hbmlmZXN0Py5ncmlkPy5jb2x1bW5zID8/IERFRkFVTFRfQ09MVU1OU19OVU1CRVIsXG4gICAgICAgIGdhcDogM1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub3BlblN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8td2lkZ2V0X19oZWFkZXJcIj5cbiAgPGRpdiBjbGFzcz1cIm8td2lkZ2V0X19oZWFkZXJfX2NvbnRlbnRcIj5cbiAgICA8aDIgY2xhc3M9XCJvLXdpZGdldF9faGVhZGVyX19jb250ZW50X190aXRsZVwiICpuZ0lmPVwiKG1hbmlmZXN0JCB8IGFzeW5jKT8udGl0bGU7IGVsc2UgcXVlcnlTZWxlY3RvclwiPlxuICAgICAge3sgKG1hbmlmZXN0JCB8IGFzeW5jKT8udGl0bGUgfX1cbiAgICA8L2gyPlxuICAgIDxuZy10ZW1wbGF0ZSAjcXVlcnlTZWxlY3Rvcj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRzIG9mIHVzZWREYXRhc291cmNlcyQgfCBhc3luY1wiIGNsYXNzPVwiby13aWRnZXRfX2hlYWRlcl9fY29udGVudF9fcXVlcnlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiZHMuaWQgfCB0cmFuc2xhdGVJZCA6IHsgdHlwZTogJ2RhdGFzb3VyY2UnLCBvdXRwdXQ6ICdpY29uJywgbm9EZWZhdWx0OiB0cnVlIH0gfCBhc3luYyBhcyB1cmxcIlxuICAgICAgICA+XG4gICAgICAgICAgPGltZyBbaGVpZ2h0XT1cIjIwXCIgW3NyY109XCJ1cmxcIiBbd2lkdGhdPVwiMjBcIiBhbHQ9XCJcIiBjbGFzcz1cIm8td2lkZ2V0X19oZWFkZXJfX2NvbnRlbnRfX3F1ZXJ5X19pY29uXCIgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxoMyBjbGFzcz1cIm8td2lkZ2V0X19oZWFkZXJfX2NvbnRlbnRfX3F1ZXJ5X19uYW1lXCI+e3sgZHMubmFtZSB9fTwvaDM+XG4gICAgICAgIDxoMyBjbGFzcz1cIm8td2lkZ2V0X19oZWFkZXJfX2NvbnRlbnRfX3F1ZXJ5X19uYW1lXCIgKm5nSWY9XCJkaXNwbGF5Q291bnQgJiYgIWlzR2VvKGRzKVwiPlxuICAgICAgICAgICh7eyBbZHMuaWRdIHwgcmVzdWx0U2V0U2l6ZSB8IGFzeW5jIH19KVxuICAgICAgICA8L2gzPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiKCh1c2VkRGF0YXNvdXJjZXMkIHwgYXN5bmMpID8/IFtdKS5sZW5ndGggPT09IDBcIiBjbGFzcz1cIm8td2lkZ2V0X19oZWFkZXJfX2NvbnRlbnRfX25vLWRhdGFcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiby13aWRnZXRfX2hlYWRlcl9fY29udGVudF9fdGl0bGVcIj57eyAnQHByeS53aWRnZXQubm9EYXRhJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cFwiICpuZ0lmPVwiZGlzcGxheUNvbnRleHRNZW51JCB8IGFzeW5jIGFzIG9wdGlvbnNcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGlkPVwiZGlhbG9nX01lbnVcIlxuICAgICAgYXJpYS1jb250cm9scz1cIm1lbnVcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJ0aGlzLm1lbnVcIlxuICAgICAgI3RvZ2dsZVBhbmVsXG4gICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1tb3JlXCJcbiAgICAgIChjbGljayk9XCJtZW51T3BlbigkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8cHJ5LWljb24gW2hlaWdodF09XCIyNVwiIFt3aWR0aF09XCIyNVwiIGljb25Tdmc9XCJtb3JlX2hvcml6XCI+PC9wcnktaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5hY3Rpb24ub3Blbk1lbnVXaWRnZXQnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNvdmVybGF5TWVudT5cbiAgPGRpdiBjbGFzcz1cIm0tY29udGV4dC1tZW51XCIgKm5nSWY9XCJkaXNwbGF5Q29udGV4dE1lbnUkIHwgYXN5bmMgYXMgb3B0aW9uc1wiPlxuICAgIDx1bFxuICAgICAgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdFwiXG4gICAgICAjbWVudUxpc3RcbiAgICAgIGlkPVwibWVudVwiXG4gICAgICByb2xlPVwibWVudVwiXG4gICAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJkaWFsb2dfTWVudVwiXG4gICAgICAoa2V5ZG93bi5hcnJvd0Rvd24pPVwib25BcnJvd0Rvd24oKVwiXG4gICAgICAoa2V5ZG93bi5hcnJvd1VwKT1cIm9uQXJyb3dVcCgpXCJcbiAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJtZW51T3BlbigpXCJcbiAgICA+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiXG4gICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgKm5nSWY9XCIobWFuaWZlc3QkIHwgYXN5bmMpPy5kYXRhc291cmNlICYmIChvcHRpb25zID09PSB0cnVlIHx8IG9wdGlvbnNbJ2RhdGFzb3VyY2VTZWxlY3Rpb24nXSA9PT0gdHJ1ZSlcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICBpZD1cInRvZ2dsZUFjdGlvbnNcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEYXRhc291cmNlU2VsZWN0aW9uKClcIlxuICAgICAgICAgICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICd3aWRnZXQnLCBhY3Rpb246ICdzZWxlY3RfbmFtZWRfcXVlcnknIH1cIlxuICAgICAgICAgIGNsYXNzPVwiYS1idG5cIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIFtoZWlnaHRdPVwiMTdcIiBbd2lkdGhdPVwiMTdcIiBpY29uU3ZnPVwic3RhY2stZmlsbFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4+e3sgJ0Bwcnkud2lkZ2V0LnRvb2x0aXAucmVhZFNlYXJjaCcgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiIHJvbGU9XCJub25lXCIgKm5nSWY9XCJvcHRpb25zID09PSB0cnVlIHx8IG9wdGlvbnMhWydwYXJhbWV0ZXJzJ10gPT09IHRydWVcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9saT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25zID09PSB0cnVlIHx8IG9wdGlvbnMhWyd3aW5kb3cnXSA9PT0gdHJ1ZVwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiIHJvbGU9XCJub25lXCIgKm5nRm9yPVwibGV0IHRhcmdldEluZGV4IG9mIHRhcmdldEluZGV4ZXMkIHwgYXN5bmNcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJtb3ZlSW5OZXdXaW5kb3coX3dpZGdldEluZGV4LCB0YXJnZXRJbmRleClcIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWJ0blwiXG4gICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHByeS1pY29uIFtoZWlnaHRdPVwiMTdcIiBbd2lkdGhdPVwiMTdcIiBpY29uU3ZnPVwibGF1bmNoXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICh0YXJnZXRJbmRleCAhPT0gLTEgPyAnQHByeS53aWRnZXQudGFyZ2V0LmV4aXN0aW5nJyA6ICdAcHJ5LndpZGdldC50YXJnZXQubmV3JylcbiAgICAgICAgICAgICAgICB8IGkxOG4gOiB7IHRhcmdldEluZGV4OiB0aGlzLnRhcmdldEluZGV4ICsgMSB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiXG4gICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgKm5nSWY9XCJoYXNHcmlkICYmIChvcHRpb25zID09PSB0cnVlIHx8IG9wdGlvbnMhWydjaGFuZ2VTcG90J10gPT09IHRydWUpXCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcm9sZT1cIm1lbnVpdGVtXCIgKGNsaWNrKT1cInRvZ2dsZUNoYW5nZVNwb3QoKVwiIGNsYXNzPVwiYS1idG5cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgPHByeS1pY29uIFtoZWlnaHRdPVwiMTdcIiBbd2lkdGhdPVwiMTdcIiBpY29uU3ZnPVwibW92ZVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4+e3sgJ0Bwcnkud2lkZ2V0LnRvb2x0aXAuY2hhbmdlU3BvdCcgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiIHJvbGU9XCJub25lXCIgKm5nSWY9XCJvcHRpb25zID09PSB0cnVlIHx8IG9wdGlvbnMhWydtYXhpbWl6ZSddID09PSB0cnVlXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIChjbGljayk9XCJtYXhpbWl6ZShfd2lkZ2V0SW5kZXgpXCJcbiAgICAgICAgICBjbGFzcz1cImEtYnRuXCJcbiAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwibWVudU9wZW4oKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LWljb24gW2hlaWdodF09XCIxN1wiIFt3aWR0aF09XCIxN1wiIGljb25Tdmc9XCJmdWxsc2NyZWVuXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICB7eyAnQHByeS53aWRnZXQudGFyZ2V0Lm1heGltaXplJyB8IGkxOG4gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIiByb2xlPVwibm9uZVwiICpuZ0lmPVwib3B0aW9ucyA9PT0gdHJ1ZSB8fCBvcHRpb25zIVsnYWRkVG9DYXRhbG9nJ10gPT09IHRydWVcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcm9sZT1cIm1lbnVpdGVtXCIgdGFiaW5kZXg9XCItMVwiIChjbGljayk9XCJ0b2dnbGVDYXRhbG9nKClcIiBjbGFzcz1cImEtYnRuXCI+XG4gICAgICAgICAgPHByeS1pY29uIFtoZWlnaHRdPVwiMTdcIiBbd2lkdGhdPVwiMTdcIiBpY29uU3ZnPVwibGlicmFyeV9hZGRcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LndpZGdldC50b29sdGlwLmNhdGFsb2dXaWRnZXQnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIiByb2xlPVwibm9uZVwiICpuZ0lmPVwib3B0aW9ucyA9PT0gdHJ1ZSB8fCBvcHRpb25zIVsnZGVsZXRlJ10gPT09IHRydWVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJtZW51aXRlbVwiXG4gICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJlbW92ZUNvbmZpcm0oJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0blwiXG4gICAgICAgICAgKGtleWRvd24udGFiKT1cIm1lbnVPcGVuKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIFtoZWlnaHRdPVwiMTdcIiBbd2lkdGhdPVwiMTdcIiBpY29uU3ZnPVwiZGVsZXRlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8c3Bhbj57eyAnQHByeS53aWRnZXQudG9vbHRpcC5kZWxldGVXaWRnZXQnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIiByb2xlPVwibm9uZVwiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYWRkaXRpb25hbE9wdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYS1idG5cIlxuICAgICAgICAgIHJvbGU9XCJtZW51aXRlbVwiXG4gICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgKGNsaWNrKT1cImV4ZWN1dGVBY3Rpb24ob3B0aW9uKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzQWN0aW9uRGlzYWJsZWQob3B0aW9uKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LWljb24gW2hlaWdodF09XCIxN1wiIFt3aWR0aF09XCIxN1wiIFtpY29uU3ZnXT1cIm9wdGlvbi5pY29uXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfCBpMThuIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVNb2RhbD5cbiAgPGRpdlxuICAgIGNsYXNzPVwiby1tb2RhbFwiXG4gICAgKGtleWRvd24uZXNjYXBlKT1cImNhbmNlbFJlbW92ZUNvbmZpcm0oKVwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZyBjb25maXJtIGRlbGV0ZSBwcmVzZW50YXRpb25cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fdGl0bGVcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiYS1oMlwiIGlkPVwiZGlhbG9nX3RpdGxlXCI+XG4gICAgICAgICAge3sgJ0Bwcnkud2lkZ2V0Lm1vZGFsVGl0bGUnIHwgaTE4biB9fVxuICAgICAgICA8L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX19jbG9zZVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiICNjcm9zcyAoY2xpY2spPVwiY2FuY2VsUmVtb3ZlQ29uZmlybSgpXCI+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiIFtoZWlnaHRdPVwiMzVcIiBbd2lkdGhdPVwiMzVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS50b29sYm94LmNsb3NlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsUmVtb3ZlQ29uZmlybSgpXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCI+XG4gICAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2xvc2UnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwiY29uZmlybVJlbW92ZSgpXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiIChrZXlkb3duLnRhYik9XCJmb2N1c0Nyb3NzRWxlbWVudCgpXCI+XG4gICAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QudmFsaWRhdGUnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgPHByeS1kYXRhc291cmNlLXNlbGVjdG9yXG4gICAgYmluZExhYmVsPVwibmFtZVwiXG4gICAgYmluZFZhbHVlPVwiaWRcIlxuICAgIHRyYW5zbGF0aW9uU3RyaW5nQmFzZT1cIkBwcnkuY29tcG9uZW50cy5jaGlwc1NlbGVjdG9yLmRhdGFzb3VyY2UuXCJcbiAgICAoY2FuY2VsKT1cInRvZ2dsZURhdGFzb3VyY2VTZWxlY3Rpb24oKVwiXG4gICAgKHZhbGlkYXRlZCk9XCJlbWl0TWFuaWZlc3QoKVwiXG4gICAgKG5leHRUYWIpPVwiZm9jdXNJbnB1dENhdGFsb2coKVwiXG4gICAgKHByZXZpb3VzVGFiKT1cImZvY3VzVmFsaWRhdGlvbigpXCJcbiAgICAoaXRlbXNDaGFuZ2VkKT1cImRhdGFzb3VyY2VzQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICBbdXNlZEl0ZW1zXT1cIih1c2VkRGF0YXNvdXJjZXMkIHwgYXN5bmMpID8/IFtdXCJcbiAgPjwvcHJ5LWRhdGFzb3VyY2Utc2VsZWN0b3I+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI292ZXJsYXlDYXRhbG9nPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJvLW1vZGFsXCJcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGlhbG9nX0NhdGFsb2dcIlxuICAgIChrZXlkb3duLmVzY2FwZSk9XCJ0b2dnbGVDYXRhbG9nKClcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fdGl0bGVcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiYS1oMlwiPlxuICAgICAgICAgIHt7ICdAcHJ5LndpZGdldC5kZWZpbmVDYXRhbG9nJyB8IGkxOG4gfX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fY2xvc2VcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiXG4gICAgICAgICAgKGtleWRvd24uc2hpZnQudGFiKT1cImZvY3VzVmFsaWRhdGlvbigpXCJcbiAgICAgICAgICAjY3Jvc3NDYXRhbG9nXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNhdGFsb2coKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2hlaWdodF09XCIzNVwiIFt3aWR0aF09XCIzNVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3guY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwibmFtZVwiPnt7ICdAcHJ5LnRvb2xib3guY2F0YWxvZy5sYWJlbCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cImNhdGFsb2dJbmZvLm5hbWVcIiBpZD1cIm5hbWVcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgcmVxdWlyZWQgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiZGVzY3JpcHRpb25cIj57eyAnQHByeS50b29sYm94LmNhdGFsb2cuZGVzY3JpcHRpb24nIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJjYXRhbG9nSW5mby5kZXNjcmlwdGlvblwiIGlkPVwiZGVzY3JpcHRpb25cIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgcmVxdWlyZWQgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICA8cHJ5LXNlbGVjdC1pbWFnZVxuICAgICAgICBbaWNvblVybF09XCJjYXRhbG9nSW5mby5pbWFnZVwiXG4gICAgICAgIChjaGFuZ2VkKT1cImNhdGFsb2dJbmZvLmltYWdlID0gJGV2ZW50XCJcbiAgICAgICAgW21vZGVdPVwidHlwZVwiXG4gICAgICA+PC9wcnktc2VsZWN0LWltYWdlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNhdGFsb2coKVwiXG4gICAgICAgICNjYW5jZWxcbiAgICAgICAgKGtleWRvd24udGFiKT1cImRpc2FibGVWYWxpZGF0aW9uKClcIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIlxuICAgICAgPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgI3ZhbGlkYXRlQ2F0YWxvZ1xuICAgICAgICAoY2xpY2spPVwiY29uZmlybUNhdGFsb2coKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhdG9vbGJveE1lbnVTZXJ2aWNlLmlzVmFsaWRGb3JDYXRhbG9nKGNhdGFsb2dJbmZvLm5hbWUpXCJcbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICAgIChrZXlkb3duLnRhYik9XCJmb2N1c0Nyb3NzRWxlbWVudCgpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC52YWxpZGF0ZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI292ZXJsYXlTcG90PlxuICA8ZGl2IGNsYXNzPVwiby1tb2RhbCAtcGxhY2VcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX190aXRsZVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJhLWgyXCI+XG4gICAgICAgICAge3sgJ0Bwcnkud2lkZ2V0LnRvb2x0aXAuY2hhbmdlU3BvdCcgfCBpMThuIH19XG4gICAgICAgIDwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX2Nsb3NlXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCIgKGNsaWNrKT1cInRvZ2dsZUNoYW5nZVNwb3QoKVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiY2xvc2VcIiBbaGVpZ2h0XT1cIjM1XCIgW3dpZHRoXT1cIjM1XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkudG9vbGJveC5jbG9zZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxwcnktZGFzaGJvYXJkXG4gICAgICBbc3RhdGljRGFzaGJvYXJkXT1cInRhcmdldE1hbmlmZXN0IVwiXG4gICAgICBbYnJlYWtwb2ludF09XCIxMFwiXG4gICAgICBbbm9CYWNrZ3JvdW5kXT1cInRydWVcIlxuICAgICAgW2ZvcmNlTW9kZUVkaXRpb25dPVwiZmFsc2VcIlxuICAgID48L3ByeS1kYXNoYm9hcmQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -82,13 +82,13 @@ export class SettingsComponent extends SubscriptionnerDirective {
|
|
|
82
82
|
this.openSub?.unsubscribe();
|
|
83
83
|
this.subscriptions.unsubscribe();
|
|
84
84
|
}
|
|
85
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
86
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
85
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SettingsComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
86
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: SettingsComponent, selector: "pry-settings", inputs: { widgetIndex: "widgetIndex", isDisable: "isDisable", headerPresent: "headerPresent", open$: "open$", header: "header" }, outputs: { triggerClick: "triggerClick", saveTriggered: "saveTriggered", changeTitle: "changeTitle" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "validate", first: true, predicate: ["validate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<button type=\"button\" (click)=\"toggle()\" class=\"a-btn a-btn--icon-text -settings\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n</button>\n\n<ng-template #template>\n <div class=\"o-settings__popup\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog_setting\">\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.widget.settings.title' | i18n }}</h2>\n <button\n type=\"button\"\n #cross\n (keydown.shift.tab)=\"focusElement(this.validate)\"\n (click)=\"toggle()\"\n class=\"a-btn a-btn--icon-only -close\"\n >\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n\n <div class=\"o-settings__popup__content\" (click)=\"this.triggerClick.next()\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"widget_title\">{{ '@pry.widget.settings.changeTitle' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"widget_title\"\n type=\"text\"\n [value]=\"manifest?.title ?? ''\"\n (input)=\"emitTitle($event)\"\n />\n </div>\n <ng-content></ng-content>\n </div>\n\n <div class=\"o-settings__popup__footer\">\n <button\n (click)=\"saveAndClose()\"\n [class.btn-primary__disable]=\"isDisable\"\n [disabled]=\"isDisable\"\n (keydown.tab)=\"focusElement(this.cross)\"\n class=\"a-btn a-btn--primary\"\n #validate\n >\n {{ '@pry.widget.settings.validateUpdating' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
|
|
87
87
|
}
|
|
88
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SettingsComponent, decorators: [{
|
|
89
89
|
type: Component,
|
|
90
90
|
args: [{ selector: 'pry-settings', template: "<button type=\"button\" (click)=\"toggle()\" class=\"a-btn a-btn--icon-text -settings\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n</button>\n\n<ng-template #template>\n <div class=\"o-settings__popup\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog_setting\">\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.widget.settings.title' | i18n }}</h2>\n <button\n type=\"button\"\n #cross\n (keydown.shift.tab)=\"focusElement(this.validate)\"\n (click)=\"toggle()\"\n class=\"a-btn a-btn--icon-only -close\"\n >\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n\n <div class=\"o-settings__popup__content\" (click)=\"this.triggerClick.next()\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"widget_title\">{{ '@pry.widget.settings.changeTitle' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"widget_title\"\n type=\"text\"\n [value]=\"manifest?.title ?? ''\"\n (input)=\"emitTitle($event)\"\n />\n </div>\n <ng-content></ng-content>\n </div>\n\n <div class=\"o-settings__popup__footer\">\n <button\n (click)=\"saveAndClose()\"\n [class.btn-primary__disable]=\"isDisable\"\n [disabled]=\"isDisable\"\n (keydown.tab)=\"focusElement(this.cross)\"\n class=\"a-btn a-btn--primary\"\n #validate\n >\n {{ '@pry.widget.settings.validateUpdating' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n" }]
|
|
91
|
-
}], ctorParameters:
|
|
91
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }], propDecorators: { triggerClick: [{
|
|
92
92
|
type: Output
|
|
93
93
|
}], widgetIndex: [{
|
|
94
94
|
type: Input
|
|
@@ -114,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
114
114
|
type: ViewChild,
|
|
115
115
|
args: ['validate']
|
|
116
116
|
}] } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL3dpZGdldHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL3dpZGdldHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBcUMsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7QUFNM0UsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHdCQUF3QjtJQU83RCxJQUFhLFdBQVcsQ0FBQyxXQUFtQjtRQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBTUQsSUFBYSxLQUFLLENBQUMsS0FBdUM7UUFDeEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMs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dGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbmZpZ0FjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2NvbmZpZy9jb25maWcuYWN0aW9ucyc7XG5pbXBvcnQgeyBQcnlXaWRnZXRIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9oZWFkZXIvd2lkZ2V0LWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2lkZ2V0TWFuaWZlc3QgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVsL21hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9kYXNoYm9hcmQuc2VsZWN0b3JzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3N1YnNjcmlwdGlvbm5lci5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktc2V0dGluZ3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBfd2lkZ2V0SW5kZXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBtYW5pZmVzdCQ/OiBPYnNlcnZhYmxlPFdpZGdldE1hbmlmZXN0PjtcbiAgbWFuaWZlc3Q/OiBXaWRnZXRNYW5pZmVzdDtcbiAgcHJpdmF0ZSBvcGVuU3ViPzogU3Vic2NyaXB0aW9uO1xuICBAT3V0cHV0KCkgdHJpZ2dlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBJbnB1dCgpIHNldCB3aWRnZXRJbmRleCh3aWRnZXRJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5fd2lkZ2V0SW5kZXgkLm5leHQod2lkZ2V0SW5kZXgpO1xuICB9XG5cbiAgQElucHV0KCkgaXNEaXNhYmxlPzogYm9vbGVhbjtcblxuICBASW5wdXQoKSBoZWFkZXJQcmVzZW50ITogYm9vbGVhbiB8IG51bGwgfCB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcblxuICBASW5wdXQoKSBzZXQgb3BlbiQob3BlbiQ6IE9ic2VydmFibGU8dm9pZD4gfCBTdWJqZWN0PHZvaWQ+KSB7XG4gICAgdGhpcy5vcGVuU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub3BlblN1YiA9IG9wZW4kLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgQElucHV0KCkgaGVhZGVyPzogUHJ5V2lkZ2V0SGVhZGVyQ29tcG9uZW50O1xuXG4gIEBPdXRwdXQoKSBzYXZlVHJpZ2dlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBvcGVuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIGNoYW5nZVRpdGxlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSBvdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnY3Jvc3MnKSBjcm9zcyE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd2YWxpZGF0ZScpIHZhbGlkYXRlITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PiwgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5tYW5pZmVzdCQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMud2lkZ2V0TWFuaWZlc3QodGhpcy5fd2lkZ2V0SW5kZXgkLnZhbHVlKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLm1hbmlmZXN0JC5zdWJzY3JpYmUoKG1hbmlmZXN0KSA9PiAodGhpcy5tYW5pZmVzdCA9IG1hbmlmZXN0KSkpO1xuICB9XG5cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgdGhpcy5vcGVuV2l0aFRlbXBsYXRlKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jcm9zcz8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfSwgMTApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgIGlmICghIXRoaXMuaGVhZGVyKSB7XG4gICAgICAgIHRoaXMuaGVhZGVyLm1lbnVPcGVuKHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNhdmVBbmRDbG9zZSgpIHtcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIHRoaXMuc2F2ZVRyaWdnZXJlZC5lbWl0KCk7XG4gIH1cblxuICBvcGVuV2l0aFRlbXBsYXRlKCkge1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBwYW5lbENsYXNzOiBbJ28tc2V0dGluZ3NfX3BvcHVwJ10sXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfSkpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnRvZ2dsZSgpKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgfVxuXG4gIGZvY3VzRWxlbWVudChlbGVtZW50OiBIVE1MQnV0dG9uRWxlbWVudCkge1xuICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuICBmb2N1c0Nyb3NzRWxlbWVudCgpIHtcbiAgICB0aGlzLmNyb3NzLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGZvY3VzVmFsaWRhdGlvbigpIHtcbiAgICB0aGlzLnZhbGlkYXRlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGVtaXRUaXRsZSgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMuY2hhbmdlVGl0bGUuZW1pdCgkZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZSB8fCB1bmRlZmluZWQpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidG9nZ2xlKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgLXNldHRpbmdzXCI+XG4gIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjIwXCIgW3dpZHRoXT1cIjIwXCIgaWNvblN2Zz1cImNvbnRyb2xcIj48L3ByeS1pY29uPlxuICA8c3Bhbj57eyAnQHByeS53aWRnZXQuc2V0dGluZ3MudGl0bGUnIHwgaTE4biB9fTwvc3Bhbj5cbjwvYnV0dG9uPlxuXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1tb2RhbD1cInRydWVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkaWFsb2dfc2V0dGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9faGVhZGVyXCI+XG4gICAgICA8aDIgY2xhc3M9XCJhLWgyXCI+e3sgJ0Bwcnkud2lkZ2V0LnNldHRpbmdzLnRpdGxlJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgI2Nyb3NzXG4gICAgICAgIChrZXlkb3duLnNoaWZ0LnRhYik9XCJmb2N1c0VsZW1lbnQodGhpcy52YWxpZGF0ZSlcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHkgLWNsb3NlXCJcbiAgICAgID5cbiAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiPjwvcHJ5LWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5hY3Rpb24uY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwX19jb250ZW50XCIgKGNsaWNrKT1cInRoaXMudHJpZ2dlckNsaWNrLm5leHQoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwid2lkZ2V0X3RpdGxlXCI+e3sgJ0Bwcnkud2lkZ2V0LnNldHRpbmdzLmNoYW5nZVRpdGxlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgaWQ9XCJ3aWRnZXRfdGl0bGVcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBbdmFsdWVdPVwibWFuaWZlc3Q/LnRpdGxlID8/ICcnXCJcbiAgICAgICAgICAoaW5wdXQpPVwiZW1pdFRpdGxlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2Zvb3RlclwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAoY2xpY2spPVwic2F2ZUFuZENsb3NlKClcIlxuICAgICAgICBbY2xhc3MuYnRuLXByaW1hcnlfX2Rpc2FibGVdPVwiaXNEaXNhYmxlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZVwiXG4gICAgICAgIChrZXlkb3duLnRhYik9XCJmb2N1c0VsZW1lbnQodGhpcy5jcm9zcylcIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCJcbiAgICAgICAgI3ZhbGlkYXRlXG4gICAgICA+XG4gICAgICAgIHt7ICdAcHJ5LndpZGdldC5zZXR0aW5ncy52YWxpZGF0ZVVwZGF0aW5nJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL3dpZGdldHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL3dpZGdldHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBcUMsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7QUFNM0UsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHdCQUF3QjtJQU83RCxJQUFhLFdBQVcsQ0FBQyxXQUFtQjtRQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBTUQsSUFBYSxLQUFLLENBQUMsS0FBdUM7UUFDeEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMs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QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbmZpZ0FjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2NvbmZpZy9jb25maWcuYWN0aW9ucyc7XG5pbXBvcnQgeyBQcnlXaWRnZXRIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9oZWFkZXIvd2lkZ2V0LWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2lkZ2V0TWFuaWZlc3QgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVsL21hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9kYXNoYm9hcmQuc2VsZWN0b3JzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3N1YnNjcmlwdGlvbm5lci5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktc2V0dGluZ3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBfd2lkZ2V0SW5kZXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBtYW5pZmVzdCQ/OiBPYnNlcnZhYmxlPFdpZGdldE1hbmlmZXN0PjtcbiAgbWFuaWZlc3Q/OiBXaWRnZXRNYW5pZmVzdDtcbiAgcHJpdmF0ZSBvcGVuU3ViPzogU3Vic2NyaXB0aW9uO1xuICBAT3V0cHV0KCkgdHJpZ2dlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBJbnB1dCgpIHNldCB3aWRnZXRJbmRleCh3aWRnZXRJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5fd2lkZ2V0SW5kZXgkLm5leHQod2lkZ2V0SW5kZXgpO1xuICB9XG5cbiAgQElucHV0KCkgaXNEaXNhYmxlPzogYm9vbGVhbjtcblxuICBASW5wdXQoKSBoZWFkZXJQcmVzZW50ITogYm9vbGVhbiB8IG51bGwgfCB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcblxuICBASW5wdXQoKSBzZXQgb3BlbiQob3BlbiQ6IE9ic2VydmFibGU8dm9pZD4gfCBTdWJqZWN0PHZvaWQ+KSB7XG4gICAgdGhpcy5vcGVuU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub3BlblN1YiA9IG9wZW4kLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgQElucHV0KCkgaGVhZGVyPzogUHJ5V2lkZ2V0SGVhZGVyQ29tcG9uZW50O1xuXG4gIEBPdXRwdXQoKSBzYXZlVHJpZ2dlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBvcGVuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIGNoYW5nZVRpdGxlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSBvdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnY3Jvc3MnKSBjcm9zcyE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd2YWxpZGF0ZScpIHZhbGlkYXRlITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PiwgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5tYW5pZmVzdCQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMud2lkZ2V0TWFuaWZlc3QodGhpcy5fd2lkZ2V0SW5kZXgkLnZhbHVlKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLm1hbmlmZXN0JC5zdWJzY3JpYmUoKG1hbmlmZXN0KSA9PiAodGhpcy5tYW5pZmVzdCA9IG1hbmlmZXN0KSkpO1xuICB9XG5cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgdGhpcy5vcGVuV2l0aFRlbXBsYXRlKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jcm9zcz8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfSwgMTApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgIGlmICghIXRoaXMuaGVhZGVyKSB7XG4gICAgICAgIHRoaXMuaGVhZGVyLm1lbnVPcGVuKHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNhdmVBbmRDbG9zZSgpIHtcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIHRoaXMuc2F2ZVRyaWdnZXJlZC5lbWl0KCk7XG4gIH1cblxuICBvcGVuV2l0aFRlbXBsYXRlKCkge1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBwYW5lbENsYXNzOiBbJ28tc2V0dGluZ3NfX3BvcHVwJ10sXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfSkpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnRvZ2dsZSgpKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgfVxuXG4gIGZvY3VzRWxlbWVudChlbGVtZW50OiBIVE1MQnV0dG9uRWxlbWVudCkge1xuICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuICBmb2N1c0Nyb3NzRWxlbWVudCgpIHtcbiAgICB0aGlzLmNyb3NzLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGZvY3VzVmFsaWRhdGlvbigpIHtcbiAgICB0aGlzLnZhbGlkYXRlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGVtaXRUaXRsZSgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMuY2hhbmdlVGl0bGUuZW1pdCgkZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZSB8fCB1bmRlZmluZWQpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidG9nZ2xlKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLXRleHQgLXNldHRpbmdzXCI+XG4gIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjIwXCIgW3dpZHRoXT1cIjIwXCIgaWNvblN2Zz1cImNvbnRyb2xcIj48L3ByeS1pY29uPlxuICA8c3Bhbj57eyAnQHByeS53aWRnZXQuc2V0dGluZ3MudGl0bGUnIHwgaTE4biB9fTwvc3Bhbj5cbjwvYnV0dG9uPlxuXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1tb2RhbD1cInRydWVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkaWFsb2dfc2V0dGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9faGVhZGVyXCI+XG4gICAgICA8aDIgY2xhc3M9XCJhLWgyXCI+e3sgJ0Bwcnkud2lkZ2V0LnNldHRpbmdzLnRpdGxlJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgI2Nyb3NzXG4gICAgICAgIChrZXlkb3duLnNoaWZ0LnRhYik9XCJmb2N1c0VsZW1lbnQodGhpcy52YWxpZGF0ZSlcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHkgLWNsb3NlXCJcbiAgICAgID5cbiAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiPjwvcHJ5LWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5hY3Rpb24uY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwX19jb250ZW50XCIgKGNsaWNrKT1cInRoaXMudHJpZ2dlckNsaWNrLm5leHQoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwid2lkZ2V0X3RpdGxlXCI+e3sgJ0Bwcnkud2lkZ2V0LnNldHRpbmdzLmNoYW5nZVRpdGxlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgaWQ9XCJ3aWRnZXRfdGl0bGVcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBbdmFsdWVdPVwibWFuaWZlc3Q/LnRpdGxlID8/ICcnXCJcbiAgICAgICAgICAoaW5wdXQpPVwiZW1pdFRpdGxlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2Zvb3RlclwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAoY2xpY2spPVwic2F2ZUFuZENsb3NlKClcIlxuICAgICAgICBbY2xhc3MuYnRuLXByaW1hcnlfX2Rpc2FibGVdPVwiaXNEaXNhYmxlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZVwiXG4gICAgICAgIChrZXlkb3duLnRhYik9XCJmb2N1c0VsZW1lbnQodGhpcy5jcm9zcylcIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCJcbiAgICAgICAgI3ZhbGlkYXRlXG4gICAgICA+XG4gICAgICAgIHt7ICdAcHJ5LndpZGdldC5zZXR0aW5ncy52YWxpZGF0ZVVwZGF0aW5nJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -35,11 +35,11 @@ export class WidgetFillerComponent extends BaseWidgetComponent {
|
|
|
35
35
|
this.store.dispatch(DashboardActions.updateDashboardManifest({ manifest: newWindowManifest }));
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
39
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetFillerComponent, deps: [{ token: i1.Store }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: WidgetFillerComponent, selector: "pry-widget-filler", usesInheritance: true, ngImport: i0, template: "<div class=\"filler-backdrop\" (click)=\"moveToPlace()\">\n <div class=\"a-indicator-block\">\n <p>{{ index === -1 ? '-' : index + 1 }}</p>\n </div>\n</div>\n" }); }
|
|
40
40
|
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetFillerComponent, decorators: [{
|
|
42
42
|
type: Component,
|
|
43
43
|
args: [{ selector: 'pry-widget-filler', template: "<div class=\"filler-backdrop\" (click)=\"moveToPlace()\">\n <div class=\"a-indicator-block\">\n <p>{{ index === -1 ? '-' : index + 1 }}</p>\n </div>\n</div>\n" }]
|
|
44
|
-
}], ctorParameters:
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i0.ElementRef }] });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWZpbGxlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL2NvbXBvbmVudHMvd2lkZ2V0cy93aWRnZXQtZmlsbGVyL3dpZGdldC1maWxsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL3dpZGdldHMvd2lkZ2V0LWZpbGxlci93aWRnZXQtZmlsbGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFHdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQU0vRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsbUJBQW1CO0lBQzVELFlBQVksS0FBaUIsRUFBRSxFQUFjO1FBQzNDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFdBQVc7UUFDVCxhQUFhO1FBQ2IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDO1FBQ3ZELGFBQWE7UUFDYixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUM7UUFDeEQsYUFBYTtRQUNiLElBQUksV0FBVyxJQUFJLFlBQVksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxjQUFjLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUMvRixhQUFhO1lBQ2IsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQXNCLENBQUM7WUFDakgsTUFBTSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUMzRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssWUFBWSxDQUFDLENBQUM7Z0JBQzdCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLFlBQVksQ0FBQyxDQUFDO2dCQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxZQUFZLENBQUMsS0FBSztnQkFDckMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLE1BQU0sQ0FDMUMsQ0FBQztZQUNGLE1BQU0sZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FDMUQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxDQUFDO2dCQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxXQUFXLENBQUMsQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUFDLEtBQUs7Z0JBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxNQUFNLENBQ3pDLENBQUM7WUFDRixJQUFJLGlCQUFpQixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7WUFDcEUsQ0FBQztZQUNELGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUM7WUFFbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakcsQ0FBQztJQUNILENBQUM7OEdBeENVLHFCQUFxQjtrR0FBckIscUJBQXFCLGdGQ1ZsQyxxS0FLQTs7MkZES2EscUJBQXFCO2tCQUpqQyxTQUFTOytCQUNFLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRNYW5pZmVzdCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IERhc2hib2FyZEFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9kYXNoYm9hcmQuYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS13aWRnZXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXdpZGdldC1maWxsZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LWZpbGxlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0RmlsbGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZVdpZGdldENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHN0b3JlOiBTdG9yZTxhbnk+LCBlbDogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKHN0b3JlLCBlbCk7XG4gIH1cblxuICBnZXQgaW5kZXgoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB0aGlzLm1hbmlmZXN0Lm9wdGlvbnM/LmluZGV4ID8/IDA7XG4gIH1cblxuICBtb3ZlVG9QbGFjZSgpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qgc3RhcnRMYXlvdXQgPSB0aGlzLm1hbmlmZXN0Lm9wdGlvbnM/LnNvdXJjZVBsYWNlO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB0YXJnZXRMYXlvdXQgPSB0aGlzLm1hbmlmZXN0Lm9wdGlvbnM/LnRhcmdldFBsYWNlO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoc3RhcnRMYXlvdXQgJiYgdGFyZ2V0TGF5b3V0ICYmIHRoaXMubWFuaWZlc3Qub3B0aW9ucz8ud2luZG93TWFuaWZlc3QgJiYgdGhpcy5pbmRleCAhPT0gJy0nKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBuZXdXaW5kb3dNYW5pZmVzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5tYW5pZmVzdC5vcHRpb25zPy53aW5kb3dNYW5pZmVzdCkpIGFzIERhc2hib2FyZE1hbmlmZXN0O1xuICAgICAgY29uc3QgdGFyZ2V0V2lkZ2V0SW5kZXggPSBuZXdXaW5kb3dNYW5pZmVzdC53aWRnZXRzLmZpbmRJbmRleChcbiAgICAgICAgKHcpID0+XG4gICAgICAgICAgdy5sYXlvdXQueCA9PT0gdGFyZ2V0TGF5b3V0LnggJiZcbiAgICAgICAgICB3LmxheW91dC55ID09PSB0YXJnZXRMYXlvdXQueSAmJlxuICAgICAgICAgIHcubGF5b3V0LndpZHRoID09PSB0YXJnZXRMYXlvdXQud2lkdGggJiZcbiAgICAgICAgICB3LmxheW91dC5oZWlnaHQgPT09IHRhcmdldExheW91dC5oZWlnaHRcbiAgICAgICk7XG4gICAgICBjb25zdCBzdGFydFdpZGdldEluZGV4ID0gbmV3V2luZG93TWFuaWZlc3Qud2lkZ2V0cy5maW5kSW5kZXgoXG4gICAgICAgICh3KSA9PlxuICAgICAgICAgIHcubGF5b3V0LnggPT09IHN0YXJ0TGF5b3V0LnggJiZcbiAgICAgICAgICB3LmxheW91dC55ID09PSBzdGFydExheW91dC55ICYmXG4gICAgICAgICAgdy5sYXlvdXQud2lkdGggPT09IHN0YXJ0TGF5b3V0LndpZHRoICYmXG4gICAgICAgICAgdy5sYXlvdXQuaGVpZ2h0ID09PSBzdGFydExheW91dC5oZWlnaHRcbiAgICAgICk7XG4gICAgICBpZiAodGFyZ2V0V2lkZ2V0SW5kZXggIT09IC0xKSB7XG4gICAgICAgIG5ld1dpbmRvd01hbmlmZXN0LndpZGdldHNbdGFyZ2V0V2lkZ2V0SW5kZXhdLmxheW91dCA9IHN0YXJ0TGF5b3V0O1xuICAgICAgfVxuICAgICAgbmV3V2luZG93TWFuaWZlc3Qud2lkZ2V0c1tzdGFydFdpZGdldEluZGV4XS5sYXlvdXQgPSB0YXJnZXRMYXlvdXQ7XG5cbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEYXNoYm9hcmRNYW5pZmVzdCh7IG1hbmlmZXN0OiBuZXdXaW5kb3dNYW5pZmVzdCB9KSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmlsbGVyLWJhY2tkcm9wXCIgKGNsaWNrKT1cIm1vdmVUb1BsYWNlKClcIj5cbiAgPGRpdiBjbGFzcz1cImEtaW5kaWNhdG9yLWJsb2NrXCI+XG4gICAgPHA+e3sgaW5kZXggPT09IC0xID8gJy0nIDogaW5kZXggKyAxIH19PC9wPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|