@fundamental-ngx/platform 0.49.0-rc.8 → 0.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/approval-flow/approval-flow.component.d.ts +7 -1
- package/button/button.component.d.ts +1 -4
- package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +4 -4
- package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +4 -4
- package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +4 -4
- package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow.component.mjs +27 -5
- package/esm2022/approval-flow/approval-flow.module.mjs +4 -4
- package/esm2022/approval-flow/services/approval-flow-add-node-view.service.mjs +3 -3
- package/esm2022/button/button.component.mjs +4 -6
- package/esm2022/button/button.module.mjs +4 -4
- package/esm2022/dynamic-page/directives/dynamic-page-header-subtitle.directive.mjs +3 -3
- package/esm2022/dynamic-page/directives/dynamic-page-header-title.directive.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content-host.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/actions/global-actions/dynamic-page-global-actions.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/actions/layout-actions/dynamic-page-layout-actions.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/key-info/dynamic-page-key-info.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title-image.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page.component.mjs +6 -6
- package/esm2022/dynamic-page/dynamic-page.config.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page.module.mjs +4 -4
- package/esm2022/feed-input/feed-input.component.mjs +5 -5
- package/esm2022/feed-input/feed-input.module.mjs +4 -4
- package/esm2022/form/auto-complete/auto-complete.directive.mjs +3 -3
- package/esm2022/form/auto-complete/auto-complete.module.mjs +4 -4
- package/esm2022/form/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/form/checkbox/checkbox.module.mjs +4 -4
- package/esm2022/form/checkbox-group/checkbox-group.component.mjs +3 -3
- package/esm2022/form/checkbox-group/checkbox-group.module.mjs +4 -4
- package/esm2022/form/combobox/combobox/combobox.component.mjs +5 -5
- package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +4 -4
- package/esm2022/form/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
- package/esm2022/form/combobox/combobox.config.mjs +11 -11
- package/esm2022/form/combobox/combobox.module.mjs +4 -4
- package/esm2022/form/combobox/commons/base-combobox.mjs +5 -8
- package/esm2022/form/combobox/directives/combobox-item.directive.mjs +15 -15
- package/esm2022/form/date-picker/date-picker.component.mjs +3 -3
- package/esm2022/form/date-picker/date-picker.module.mjs +4 -4
- package/esm2022/form/datetime-picker/datetime-picker.component.mjs +3 -3
- package/esm2022/form/datetime-picker/datetime-picker.module.mjs +4 -4
- package/esm2022/form/form-generator/base-dynamic-form-generator-control.mjs +3 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.mjs +3 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +3 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +3 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +3 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +3 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +3 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +3 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +3 -3
- package/esm2022/form/form-generator/dynamic-form-control-field.directive.mjs +3 -3
- package/esm2022/form/form-generator/dynamic-form-control.directive.mjs +3 -3
- package/esm2022/form/form-generator/dynamic-form-control.mjs +1 -1
- package/esm2022/form/form-generator/fdp-form-generator.module.mjs +4 -4
- package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +3 -3
- package/esm2022/form/form-generator/form-generator-components-accessor.service.mjs +3 -3
- package/esm2022/form/form-generator/form-generator-field/form-generator-field.component.mjs +3 -3
- package/esm2022/form/form-generator/form-generator.service.mjs +3 -3
- package/esm2022/form/form-generator/pipes/get-hint-options.pipe.mjs +3 -3
- package/esm2022/form/form-generator/pipes/get-ordered-form-controls.pipe.mjs +3 -3
- package/esm2022/form/form-group/fdp-form.module.mjs +4 -4
- package/esm2022/form/form-group/form-field/form-field.component.mjs +5 -5
- package/esm2022/form/form-group/form-field-error/form-field-error-description.directive.mjs +3 -3
- package/esm2022/form/form-group/form-field-error/form-field-error-heading.directive.mjs +3 -3
- package/esm2022/form/form-group/form-field-error/form-field-error.directive.mjs +3 -3
- package/esm2022/form/form-group/form-field-extras/form-field-extras.component.mjs +3 -3
- package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +4 -4
- package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +3 -3
- package/esm2022/form/form-group/form-group.component.mjs +5 -5
- package/esm2022/form/form-group/pipes/field-group-row-value.pipe.mjs +3 -3
- package/esm2022/form/form-group/services/form-field-layout.service.mjs +3 -3
- package/esm2022/form/input/fdp-input.module.mjs +4 -4
- package/esm2022/form/input/input.component.mjs +4 -4
- package/esm2022/form/input-group/addon-body.component.mjs +3 -3
- package/esm2022/form/input-group/addon.component.mjs +3 -3
- package/esm2022/form/input-group/input-group.component.mjs +3 -3
- package/esm2022/form/input-group/input-group.config.mjs +3 -3
- package/esm2022/form/input-group/input-group.module.mjs +4 -4
- package/esm2022/form/input-group/input.component.mjs +3 -3
- package/esm2022/form/input-message-group-with-template/input-message-group-with-template.component.mjs +4 -4
- package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +3 -3
- package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +6 -6
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +4 -4
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.mjs +4 -4
- package/esm2022/form/multi-combobox/multi-combobox.config.mjs +3 -3
- package/esm2022/form/multi-combobox/multi-combobox.module.mjs +4 -4
- package/esm2022/form/multi-input/base-multi-input.mjs +11 -5
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +3 -3
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
- package/esm2022/form/multi-input/multi-input.component.mjs +5 -5
- package/esm2022/form/multi-input/multi-input.config.mjs +3 -3
- package/esm2022/form/multi-input/multi-input.module.mjs +4 -4
- package/esm2022/form/radio-group/radio/radio.component.mjs +3 -3
- package/esm2022/form/radio-group/radio-group.component.mjs +3 -3
- package/esm2022/form/radio-group/radio-group.module.mjs +4 -4
- package/esm2022/form/select/commons/base-select.mjs +4 -4
- package/esm2022/form/select/select/select.component.mjs +5 -5
- package/esm2022/form/select/select.config.mjs +3 -3
- package/esm2022/form/select/select.module.mjs +4 -4
- package/esm2022/form/step-input/base.step-input.mjs +3 -3
- package/esm2022/form/step-input/number/number-step-input.component.mjs +6 -6
- package/esm2022/form/step-input/step-input-action-button.mjs +3 -3
- package/esm2022/form/step-input/step-input-control.directive.mjs +3 -3
- package/esm2022/form/step-input/step-input-decrement.directive.mjs +3 -3
- package/esm2022/form/step-input/step-input-increment.directive.mjs +3 -3
- package/esm2022/form/step-input/step-input.config.mjs +3 -3
- package/esm2022/form/step-input/step-input.module.mjs +4 -4
- package/esm2022/form/switch/switch/switch.component.mjs +4 -4
- package/esm2022/form/switch/switch/switch.config.mjs +3 -3
- package/esm2022/form/switch/switch.module.mjs +4 -4
- package/esm2022/form/text-area/text-area.component.mjs +4 -6
- package/esm2022/form/text-area/text-area.config.mjs +3 -3
- package/esm2022/form/text-area/text-area.module.mjs +4 -4
- package/esm2022/form/time-picker/time-picker.component.mjs +4 -4
- package/esm2022/form/time-picker/time-picker.module.mjs +4 -4
- package/esm2022/fundamental-ngx-platform.mjs +1 -1
- package/esm2022/fundamental-ngx.module.mjs +5 -5
- package/esm2022/icon-tab-bar/components/closable-icon-tab-bar.class.mjs +3 -3
- package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +6 -7
- package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +3 -3
- package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +3 -3
- package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +3 -3
- package/esm2022/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.mjs +6 -6
- package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +3 -3
- package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +4 -4
- package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.mjs +3 -3
- package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +4 -4
- package/esm2022/icon-tab-bar/components/text-type-tab-item/icon-tab-bar-text-type-tab-item.component.mjs +3 -3
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +3 -3
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +3 -3
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +3 -3
- package/esm2022/icon-tab-bar/directives/icon-tab-bar-free-content.directive.mjs +3 -3
- package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +6 -6
- package/esm2022/icon-tab-bar/icon-tab-bar.module.mjs +4 -4
- package/esm2022/index.mjs +1 -1
- package/esm2022/info-label/info-label.component.mjs +3 -3
- package/esm2022/info-label/info-label.module.mjs +4 -4
- package/esm2022/link/link.component.mjs +7 -7
- package/esm2022/link/link.module.mjs +4 -4
- package/esm2022/list/action-list-item/action-list-item.component.mjs +3 -3
- package/esm2022/list/action-list-item/action-list-item.module.mjs +4 -4
- package/esm2022/list/base-list-item.mjs +6 -6
- package/esm2022/list/display-list-item/display-list-item.component.mjs +4 -4
- package/esm2022/list/display-list-item/display-list-item.module.mjs +4 -4
- package/esm2022/list/free-content-list-item/free-content-list-item.component.mjs +3 -3
- package/esm2022/list/list-group-footer.component.mjs +3 -3
- package/esm2022/list/list-group-header.component.mjs +3 -3
- package/esm2022/list/list.component.mjs +6 -6
- package/esm2022/list/list.config.mjs +3 -3
- package/esm2022/list/list.module.mjs +4 -4
- package/esm2022/list/load-more-content.directive.mjs +3 -3
- package/esm2022/list/object-list-item/object-list-item-row.component.mjs +6 -6
- package/esm2022/list/object-list-item/object-list-item.component.mjs +5 -5
- package/esm2022/list/object-list-item/object-list-item.module.mjs +4 -4
- package/esm2022/list/standard-list-item/standard-list-item.component.mjs +4 -4
- package/esm2022/list/standard-list-item/standard-list-item.module.mjs +4 -4
- package/esm2022/menu/menu-item.component.mjs +5 -5
- package/esm2022/menu/menu-trigger.directive.mjs +3 -3
- package/esm2022/menu/menu.component.mjs +4 -4
- package/esm2022/menu/menu.module.mjs +4 -4
- package/esm2022/menu-button/menu-button.component.mjs +3 -3
- package/esm2022/menu-button/menu-button.module.mjs +4 -4
- package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +3 -3
- package/esm2022/message-popover/components/message-view/message-view.component.mjs +3 -3
- package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +3 -3
- package/esm2022/message-popover/message-popover.component.mjs +5 -5
- package/esm2022/message-popover/platform-message-popover.module.mjs +4 -4
- package/esm2022/object-marker/object-marker.component.mjs +3 -3
- package/esm2022/object-marker/object-marker.module.mjs +4 -4
- package/esm2022/object-status/object-status.component.mjs +6 -6
- package/esm2022/object-status/object-status.module.mjs +4 -4
- package/esm2022/page-footer/page-footer.component.mjs +5 -5
- package/esm2022/page-footer/page-footer.module.mjs +4 -4
- package/esm2022/panel/panel-actions.component.mjs +3 -3
- package/esm2022/panel/panel-content/panel-content.component.mjs +3 -3
- package/esm2022/panel/panel.component.mjs +4 -4
- package/esm2022/panel/panel.config.mjs +3 -3
- package/esm2022/panel/panel.module.mjs +4 -4
- package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +4 -4
- package/esm2022/search-field/search-field.component.mjs +33 -94
- package/esm2022/search-field/search-field.module.mjs +4 -4
- package/esm2022/settings-generator/controls/theme-selector-list/theme-selector-list.component.mjs +6 -6
- package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +3 -3
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +3 -3
- package/esm2022/settings-generator/settings-generator-content/settings-generator-content.component.mjs +4 -4
- package/esm2022/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.mjs +3 -3
- package/esm2022/settings-generator/settings-generator-layout-accessor.service.mjs +3 -3
- package/esm2022/settings-generator/settings-generator.component.mjs +3 -3
- package/esm2022/settings-generator/settings-generator.module.mjs +4 -4
- package/esm2022/settings-generator/settings-generator.service.mjs +3 -3
- package/esm2022/shared/base.mjs +3 -3
- package/esm2022/shared/form/base.input.mjs +4 -4
- package/esm2022/shared/form/collection-base.input.mjs +3 -3
- package/esm2022/shared/form/form-field.mjs +1 -1
- package/esm2022/shared/form/inline-layout-collection-base.input.mjs +9 -9
- package/esm2022/shared/pipes/convert-bytes/convert-bytes.pipe.mjs +3 -3
- package/esm2022/shared/pipes/pipe.module.mjs +4 -4
- package/esm2022/shared/platform.config.mjs +3 -3
- package/esm2022/slider/slider.component.mjs +3 -3
- package/esm2022/slider/slider.module.mjs +4 -4
- package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.mjs +3 -3
- package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +3 -3
- package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +4 -4
- package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +4 -4
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.mjs +3 -3
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-subject.directive.mjs +3 -3
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.mjs +3 -3
- package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +3 -3
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +14 -10
- package/esm2022/smart-filter-bar/smart-filter-bar.module.mjs +4 -4
- package/esm2022/smart-filter-bar/smart-filter-bar.service.mjs +3 -3
- package/esm2022/split-menu-button/split-menu-button.component.mjs +4 -4
- package/esm2022/split-menu-button/split-menu-button.module.mjs +4 -4
- package/esm2022/table/components/growing-button/table-growing-button.component.mjs +31 -0
- package/esm2022/table/components/no-data-wrapper/no-data-wrapper.component.mjs +3 -3
- package/esm2022/table/components/reset-button/reset-button.component.mjs +3 -3
- package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +4 -4
- package/esm2022/table/components/table-column/table-column.component.mjs +3 -3
- package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +3 -3
- package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +3 -3
- package/esm2022/table/components/table-group-row/table-group-row.component.mjs +3 -3
- package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +3 -3
- package/esm2022/table/components/table-header-row/table-header-row.component.mjs +6 -6
- package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +8 -7
- package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +11 -7
- package/esm2022/table/components/table-p13-dialog/filtering/filtering.model.mjs +1 -1
- package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +5 -5
- package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +8 -8
- package/esm2022/table/components/table-p13-dialog/table-p13-columns.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-dialog.component.mjs +9 -6
- package/esm2022/table/components/table-p13-dialog/table-p13-filter.component.mjs +8 -7
- package/esm2022/table/components/table-p13-dialog/table-p13-group.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-sort.component.mjs +3 -3
- package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +3 -3
- package/esm2022/table/components/table-row/table-row.component.mjs +10 -9
- package/esm2022/table/components/table-toolbar/table-toolbar-actions.component.mjs +3 -3
- package/esm2022/table/components/table-toolbar/table-toolbar-left-actions.component.mjs +3 -3
- package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +10 -11
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-custom.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-single-select.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +4 -4
- package/esm2022/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +4 -4
- package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +4 -4
- package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +4 -4
- package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +4 -4
- package/esm2022/table/components/table-view-settings-dialog/table-view-settings-dialog.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/table-view-settings-filter.component.mjs +3 -3
- package/esm2022/table/index.mjs +2 -1
- package/esm2022/table/table.component.mjs +38 -12
- package/esm2022/table/table.module.mjs +14 -9
- package/esm2022/table-helpers/directives/index.mjs +1 -2
- package/esm2022/table-helpers/directives/platform-table-column-responsive.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-cell.directive.mjs +12 -12
- package/esm2022/table-helpers/directives/table-data-source.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-draggable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-header.directive.mjs +6 -6
- package/esm2022/table-helpers/directives/table-initial-state.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +3 -3
- package/esm2022/table-helpers/pipes/cell-styles.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/column-resizable-side.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/column-sorting-direction.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/row-classes.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/selection-cell-styles.pipe.mjs +3 -3
- package/esm2022/table-helpers/services/table-column-resize.service.mjs +3 -3
- package/esm2022/table-helpers/services/table-responsive.service.mjs +3 -3
- package/esm2022/table-helpers/services/table-row.service.mjs +3 -3
- package/esm2022/table-helpers/services/table-scroll-dispatcher.service.mjs +3 -3
- package/esm2022/table-helpers/services/table.service.mjs +28 -5
- package/esm2022/table-helpers/table-helpers.module.mjs +6 -9
- package/esm2022/table-helpers/table.mjs +1 -1
- package/esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.mjs +3 -3
- package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +7 -6
- package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +4 -4
- package/esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +3 -3
- package/esm2022/value-help-dialog/directives/condition-count-message.directive.mjs +3 -3
- package/esm2022/value-help-dialog/directives/value-help-column-def.directive.mjs +3 -3
- package/esm2022/value-help-dialog/directives/value-help-filter-def.directive.mjs +6 -6
- package/esm2022/value-help-dialog/models/vhd-filter.model.mjs +1 -1
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +6 -6
- package/esm2022/value-help-dialog/value-help-dialog.module.mjs +4 -4
- package/esm2022/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +4 -4
- package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +4 -4
- package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +3 -3
- package/esm2022/variant-management/directives/variant-management-dirty-label.directive.mjs +3 -3
- package/esm2022/variant-management/variant-management.component.mjs +6 -6
- package/esm2022/variant-management/variant-management.module.mjs +4 -4
- package/esm2022/wizard-generator/base-wizard-generator.mjs +3 -3
- package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +4 -4
- package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +3 -3
- package/esm2022/wizard-generator/components/wizard-generator/wizard-generator.component.mjs +3 -3
- package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +4 -4
- package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +4 -4
- package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-finish-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-go-next-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-review-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-summary-step.directive.mjs +3 -3
- package/esm2022/wizard-generator/wizard-dialog-generator.service.mjs +3 -3
- package/esm2022/wizard-generator/wizard-generator.module.mjs +4 -4
- package/esm2022/wizard-generator/wizard-generator.service.mjs +3 -3
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +63 -41
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-button.mjs +7 -9
- package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +45 -45
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +331 -330
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +60 -60
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-info-label.mjs +7 -7
- package/fesm2022/fundamental-ngx-platform-link.mjs +10 -10
- package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +64 -64
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs +7 -7
- package/fesm2022/fundamental-ngx-platform-menu.mjs +15 -15
- package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +17 -17
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs +7 -7
- package/fesm2022/fundamental-ngx-platform-object-status.mjs +10 -10
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-panel.mjs +16 -16
- package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-search-field.mjs +40 -100
- package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +34 -34
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-shared.mjs +28 -28
- package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-slider.mjs +7 -7
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +42 -37
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +8 -8
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +110 -122
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +213 -150
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +34 -33
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +21 -21
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +43 -43
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform.mjs +4 -4
- package/fesm2022/fundamental-ngx-platform.mjs.map +1 -1
- package/form/combobox/combobox.config.d.ts +2 -2
- package/form/combobox/commons/base-combobox.d.ts +2 -4
- package/form/multi-input/base-multi-input.d.ts +4 -1
- package/form/text-area/text-area.component.d.ts +1 -5
- package/form/time-picker/time-picker.component.d.ts +1 -1
- package/link/link.component.d.ts +2 -2
- package/package.json +4 -4
- package/panel/panel.component.d.ts +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/schematics/utils/package-utils.d.ts +9 -1
- package/schematics/utils/package-utils.js +15 -17
- package/schematics/utils/package-utils.js.map +1 -1
- package/search-field/search-field.component.d.ts +5 -16
- package/shared/form/base.input.d.ts +0 -2
- package/shared/form/form-field.d.ts +1 -11
- package/smart-filter-bar/smart-filter-bar.component.d.ts +6 -3
- package/table/components/growing-button/table-growing-button.component.d.ts +16 -0
- package/table/components/table-p13-dialog/filtering/filtering.model.d.ts +1 -0
- package/table/components/table-p13-dialog/table-p13-dialog.component.d.ts +2 -2
- package/table/components/table-p13-dialog/table-p13-filter.component.d.ts +6 -2
- package/table/components/table-row/table-row.component.d.ts +1 -1
- package/table/components/table-toolbar/table-toolbar.component.d.ts +2 -3
- package/table/index.d.ts +1 -0
- package/table/table.component.d.ts +15 -2
- package/table/table.module.d.ts +3 -2
- package/table-helpers/directives/index.d.ts +0 -1
- package/table-helpers/services/table.service.d.ts +3 -1
- package/table-helpers/table-helpers.module.d.ts +10 -11
- package/table-helpers/table.d.ts +2 -1
- package/value-help-dialog/directives/value-help-filter-def.directive.d.ts +3 -7
- package/value-help-dialog/models/vhd-filter.model.d.ts +8 -2
- package/approval-flow/README.md +0 -25
- package/button/README.md +0 -25
- package/dynamic-page/README.md +0 -25
- package/esm2022/table-helpers/directives/table-cell-selectable.directive.mjs +0 -36
- package/feed-input/README.md +0 -25
- package/form/README.md +0 -25
- package/fundamental-ngx-platform-v0.49.0-rc.8.tgz +0 -0
- package/icon-tab-bar/README.md +0 -25
- package/info-label/README.md +0 -25
- package/link/README.md +0 -25
- package/list/README.md +0 -25
- package/menu/README.md +0 -25
- package/menu-button/README.md +0 -25
- package/message-popover/README.md +0 -7
- package/object-marker/README.md +0 -25
- package/object-status/README.md +0 -25
- package/page-footer/README.md +0 -25
- package/panel/README.md +0 -25
- package/search-field/README.md +0 -25
- package/settings-generator/README.md +0 -7
- package/shared/README.md +0 -25
- package/slider/README.md +0 -25
- package/smart-filter-bar/README.md +0 -29
- package/split-menu-button/README.md +0 -25
- package/table/README.md +0 -25
- package/table-helpers/README.md +0 -3
- package/table-helpers/directives/table-cell-selectable.directive.d.ts +0 -9
- package/value-help-dialog/README.md +0 -25
- package/variant-management/README.md +0 -7
- package/wizard-generator/README.md +0 -25
|
@@ -5,7 +5,7 @@ import { FormsModule } from '@angular/forms';
|
|
|
5
5
|
import { ButtonComponent } from '@fundamental-ngx/core/button';
|
|
6
6
|
import { FormControlComponent, FormInputMessageGroupComponent, FormLabelComponent, FormMessageComponent } from '@fundamental-ngx/core/form';
|
|
7
7
|
import { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';
|
|
8
|
-
import { ListGroupHeaderDirective } from '@fundamental-ngx/core/list';
|
|
8
|
+
import { ListGroupHeaderDirective, ListTitleDirective } from '@fundamental-ngx/core/list';
|
|
9
9
|
import { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';
|
|
10
10
|
import { TitleComponent } from '@fundamental-ngx/core/title';
|
|
11
11
|
import { FdTranslatePipe } from '@fundamental-ngx/i18n';
|
|
@@ -128,10 +128,10 @@ export class DefineTabComponent extends VhdBaseTab {
|
|
|
128
128
|
this.addEmptyCondition();
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0
|
|
132
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: DefineTabComponent, isStandalone: true, selector: "fdp-define-tab", inputs: { titleId: "titleId", selectedId: "selectedId", conditions: "conditions", strategyLabels: "strategyLabels" }, outputs: { includeChange: "includeChange", excludeChange: "excludeChange", conditionChange: "conditionChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<h5 [id]=\"titleId\" role=\"heading\" aria-level=\"5\" fd-title class=\"define-condition-title\">\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\n</h5>\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\n <fd-layout-grid class=\"condition-row\" [noGap]=\"true\">\n <div fdLayoutGridRow>\n <div [fdLayoutGridCol]=\"5\">\n <label id=\"CONDITIONPANEL_OPERATOR_LABEL\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n CONDITIONPANEL_OPERATOR_LABEL\n </label>\n <label [id]=\"selectedId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\n | fdTranslate: { value: item.strategy }\n }}</label\n >\n <fd-select\n class=\"vhd-condition-filters\"\n fdLayoutGridCol\n colGrow\n [class.fd-select-custom-class]=\"false\"\n #sttr\n [controlTemplate]=\"customSelectTemplate\"\n [name]=\"uid + '-' + type + '-strategy-' + item.id\"\n [(ngModel)]=\"item.strategy\"\n (valueChange)=\"_filterChanged()\"\n role=\"combobox\"\n aria-roledescription=\"select\"\n aria-haspopup=\"listbox\"\n [ariaLabelledBy]=\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\"\n >\n @if (_includeStrategy.length) {\n <li fd-list-group-header>\n {{ 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate }}\n </li>\n @for (strategy of _includeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.include, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n @if (_excludeStrategy.length) {\n <li fd-list-group-header>\n {{ 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate }}\n </li>\n @for (strategy of _excludeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.exclude, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n </fd-select>\n </div>\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow>\n @if (item.strategy === _strategyIncludeValues.between) {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\"\n placeholder=\"from\"\n required\n [state]=\"fromModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-from-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #fromModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\"\n required\n [state]=\"toModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-to-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #toModel=\"ngModel\"\n [(ngModel)]=\"item.valueTo\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n } @else {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group>\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\"\n [state]=\"valueModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-value-' + item.id\"\n (blur)=\"_validateConditionValue(item, !!valueModel.valid)\"\n #valueModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n @if (valueModel.invalid) {\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n }\n </fd-form-input-message-group>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"action-col\" fdLayoutGridCol colGrow>\n <button\n fd-button\n [ariaLabel]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n glyph=\"decline\"\n [title]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n (click)=\"removeCondition(i)\"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n}\n<fd-layout-grid class=\"condition-row new-condition-row\" [noGap]=\"true\">\n <div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow> </div>\n <div fdLayoutGridCol class=\"action-col\">\n <button\n fd-button\n [attr.aria-label]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n [label]=\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\"\n [title]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n (click)=\"addEmptyCondition()\"\n ></button>\n </div>\n </div>\n</fd-layout-grid>\n<ng-template #conditionStrategyOption let-type=\"type\" let-strategy=\"strategy\">\n @switch (strategy.key) {\n @case ('contains') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\n }\n @case ('equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\n }\n @case ('between') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\n }\n @case ('startsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\n }\n @case ('endsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\n }\n @case ('lessThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\n }\n @case ('lessThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\n }\n @case ('greaterThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\n }\n @case ('greaterThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\n }\n @case ('empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\n }\n @case ('not_equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\n }\n @case ('not_empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\n }\n }\n</ng-template>\n<ng-template #countError let-count>\n @if (count && count > 7) {\n <fd-form-message type=\"error\">\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #customSelectTemplate let-textValue>\n {{ textValue }}\n</ng-template>\n", styles: [".fdp-value-help-dialog .fd-row{min-width:100%!important;margin:0!important}.fdp-value-help-dialog .condition-row>.fd-col{padding:0 .5rem .5rem 0}.fdp-value-help-dialog .condition-row>.fd-col:last-child{padding-right:0}.fdp-value-help-dialog .condition-row .fd-input{margin:0}.fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .fd-container--no-gap{margin:0!important}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row .fd-input{margin-top:0}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:2.5rem}\n"], dependencies: [{ kind: "component", type: TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title], span[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "directive", type: LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "glyphFont", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "component", type: OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen"], outputs: ["isOpenChange"] }, { kind: "component", type: FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: ConditionCountMessageDirective, selector: "[fdp-condition-count-message]", inputs: ["maxCharacters"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
131
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DefineTabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
132
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: DefineTabComponent, isStandalone: true, selector: "fdp-define-tab", inputs: { titleId: "titleId", selectedId: "selectedId", conditions: "conditions", strategyLabels: "strategyLabels" }, outputs: { includeChange: "includeChange", excludeChange: "excludeChange", conditionChange: "conditionChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<h5 [id]=\"titleId\" role=\"heading\" aria-level=\"5\" fd-title class=\"define-condition-title\">\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\n</h5>\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\n <fd-layout-grid class=\"condition-row\">\n <div fdLayoutGridRow>\n <div [fdLayoutGridCol]=\"4\">\n <label id=\"CONDITIONPANEL_OPERATOR_LABEL\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n CONDITIONPANEL_OPERATOR_LABEL\n </label>\n <label [id]=\"selectedId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\n | fdTranslate: { value: item.strategy }\n }}</label\n >\n <fd-select\n class=\"vhd-condition-filters\"\n fdLayoutGridCol\n colGrow\n [class.fd-select-custom-class]=\"false\"\n #sttr\n [controlTemplate]=\"customSelectTemplate\"\n [name]=\"uid + '-' + type + '-strategy-' + item.id\"\n [(ngModel)]=\"item.strategy\"\n (valueChange)=\"_filterChanged()\"\n role=\"combobox\"\n aria-roledescription=\"select\"\n aria-haspopup=\"listbox\"\n [inline]=\"false\"\n [ariaLabelledBy]=\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\"\n >\n @if (_includeStrategy.length) {\n <li fd-list-group-header>\n <span fd-list-title>{{\n 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate\n }}</span>\n </li>\n @for (strategy of _includeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.include, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n @if (_excludeStrategy.length) {\n <li fd-list-group-header>\n <span fd-list-title>{{\n 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate\n }}</span>\n </li>\n @for (strategy of _excludeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.exclude, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n </fd-select>\n </div>\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow>\n @if (item.strategy === _strategyIncludeValues.between) {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\"\n placeholder=\"from\"\n required\n [state]=\"fromModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-from-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #fromModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\"\n required\n [state]=\"toModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-to-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #toModel=\"ngModel\"\n [(ngModel)]=\"item.valueTo\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n } @else {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group>\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\"\n [state]=\"valueModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-value-' + item.id\"\n (blur)=\"_validateConditionValue(item, !!valueModel.valid)\"\n #valueModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n @if (valueModel.invalid) {\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n }\n </fd-form-input-message-group>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"action-col\" fdLayoutGridCol colGrow>\n <button\n fd-button\n [ariaLabel]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n glyph=\"decline\"\n [title]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n (click)=\"removeCondition(i)\"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n}\n<fd-layout-grid class=\"condition-row new-condition-row\" [noGap]=\"true\">\n <div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow> </div>\n <div fdLayoutGridCol class=\"action-col\">\n <button\n fd-button\n [attr.aria-label]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n [label]=\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\"\n [title]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n (click)=\"addEmptyCondition()\"\n ></button>\n </div>\n </div>\n</fd-layout-grid>\n<ng-template #conditionStrategyOption let-type=\"type\" let-strategy=\"strategy\">\n @switch (strategy.key) {\n @case ('contains') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\n }\n @case ('equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\n }\n @case ('between') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\n }\n @case ('startsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\n }\n @case ('endsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\n }\n @case ('lessThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\n }\n @case ('lessThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\n }\n @case ('greaterThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\n }\n @case ('greaterThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\n }\n @case ('empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\n }\n @case ('not_equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\n }\n @case ('not_empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\n }\n }\n</ng-template>\n<ng-template #countError let-count>\n @if (count && count > 7) {\n <fd-form-message type=\"error\">\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #customSelectTemplate let-textValue>\n {{ textValue }}\n</ng-template>\n", styles: [".fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .condition-row{padding:0}.fdp-value-help-dialog fdp-define-tab .condition-row .fd-col{padding-top:0;padding-bottom:0}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{display:flex;align-items:center;min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:2.5rem}.fd-list--dropdown .fd-list__item.fd-list__group-header{border-bottom:var(--sapList_BorderWidth) solid var(--sapList_GroupHeaderBorderColor)}\n"], dependencies: [{ kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "directive", type: LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "glyphFont", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen", "preventSpaceKeyScroll"], outputs: ["isOpenChange"] }, { kind: "component", type: FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: ConditionCountMessageDirective, selector: "[fdp-condition-count-message]", inputs: ["maxCharacters"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
133
133
|
}
|
|
134
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0
|
|
134
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DefineTabComponent, decorators: [{
|
|
135
135
|
type: Component,
|
|
136
136
|
args: [{ selector: 'fdp-define-tab', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
137
137
|
TitleComponent,
|
|
@@ -142,6 +142,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
142
142
|
SelectComponent,
|
|
143
143
|
FormsModule,
|
|
144
144
|
ListGroupHeaderDirective,
|
|
145
|
+
ListTitleDirective,
|
|
145
146
|
OptionComponent,
|
|
146
147
|
NgTemplateOutlet,
|
|
147
148
|
FormInputMessageGroupComponent,
|
|
@@ -150,7 +151,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
150
151
|
ButtonComponent,
|
|
151
152
|
FormMessageComponent,
|
|
152
153
|
FdTranslatePipe
|
|
153
|
-
], template: "<h5 [id]=\"titleId\" role=\"heading\" aria-level=\"5\" fd-title class=\"define-condition-title\">\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\n</h5>\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\n <fd-layout-grid class=\"condition-row\" [noGap]=\"true\">\n <div fdLayoutGridRow>\n <div [fdLayoutGridCol]=\"5\">\n <label id=\"CONDITIONPANEL_OPERATOR_LABEL\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n CONDITIONPANEL_OPERATOR_LABEL\n </label>\n <label [id]=\"selectedId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\n | fdTranslate: { value: item.strategy }\n }}</label\n >\n <fd-select\n class=\"vhd-condition-filters\"\n fdLayoutGridCol\n colGrow\n [class.fd-select-custom-class]=\"false\"\n #sttr\n [controlTemplate]=\"customSelectTemplate\"\n [name]=\"uid + '-' + type + '-strategy-' + item.id\"\n [(ngModel)]=\"item.strategy\"\n (valueChange)=\"_filterChanged()\"\n role=\"combobox\"\n aria-roledescription=\"select\"\n aria-haspopup=\"listbox\"\n [ariaLabelledBy]=\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\"\n >\n @if (_includeStrategy.length) {\n <li fd-list-group-header>\n {{ 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate }}\n </li>\n @for (strategy of _includeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.include, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n @if (_excludeStrategy.length) {\n <li fd-list-group-header>\n {{ 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate }}\n </li>\n @for (strategy of _excludeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.exclude, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n </fd-select>\n </div>\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow>\n @if (item.strategy === _strategyIncludeValues.between) {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\"\n placeholder=\"from\"\n required\n [state]=\"fromModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-from-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #fromModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\"\n required\n [state]=\"toModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-to-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #toModel=\"ngModel\"\n [(ngModel)]=\"item.valueTo\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n } @else {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group>\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\"\n [state]=\"valueModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-value-' + item.id\"\n (blur)=\"_validateConditionValue(item, !!valueModel.valid)\"\n #valueModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n @if (valueModel.invalid) {\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n }\n </fd-form-input-message-group>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"action-col\" fdLayoutGridCol colGrow>\n <button\n fd-button\n [ariaLabel]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n glyph=\"decline\"\n [title]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n (click)=\"removeCondition(i)\"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n}\n<fd-layout-grid class=\"condition-row new-condition-row\" [noGap]=\"true\">\n <div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow> </div>\n <div fdLayoutGridCol class=\"action-col\">\n <button\n fd-button\n [attr.aria-label]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n [label]=\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\"\n [title]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n (click)=\"addEmptyCondition()\"\n ></button>\n </div>\n </div>\n</fd-layout-grid>\n<ng-template #conditionStrategyOption let-type=\"type\" let-strategy=\"strategy\">\n @switch (strategy.key) {\n @case ('contains') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\n }\n @case ('equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\n }\n @case ('between') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\n }\n @case ('startsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\n }\n @case ('endsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\n }\n @case ('lessThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\n }\n @case ('lessThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\n }\n @case ('greaterThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\n }\n @case ('greaterThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\n }\n @case ('empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\n }\n @case ('not_equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\n }\n @case ('not_empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\n }\n }\n</ng-template>\n<ng-template #countError let-count>\n @if (count && count > 7) {\n <fd-form-message type=\"error\">\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #customSelectTemplate let-textValue>\n {{ textValue }}\n</ng-template>\n", styles: [".fdp-value-help-dialog .fd-row{min-width:100%!important;margin:0!important}.fdp-value-help-dialog .condition-row>.fd-col{padding:0 .5rem .5rem 0}.fdp-value-help-dialog .condition-row>.fd-col:last-child{padding-right:0}.fdp-value-help-dialog .condition-row .fd-input{margin:0}.fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .fd-container--no-gap{margin:0!important}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row .fd-input{margin-top:0}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:2.5rem}\n"] }]
|
|
154
|
+
], template: "<h5 [id]=\"titleId\" role=\"heading\" aria-level=\"5\" fd-title class=\"define-condition-title\">\n {{ 'platformVHD.defineConditionTitle' | fdTranslate }}\n</h5>\n@for (item of _conditions; track _trackByKeyAndType(i, item); let i = $index) {\n <fd-layout-grid class=\"condition-row\">\n <div fdLayoutGridRow>\n <div [fdLayoutGridCol]=\"4\">\n <label id=\"CONDITIONPANEL_OPERATOR_LABEL\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n CONDITIONPANEL_OPERATOR_LABEL\n </label>\n <label [id]=\"selectedId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.defineConditionSelectedValueHiddenA11yLabel'\n | fdTranslate: { value: item.strategy }\n }}</label\n >\n <fd-select\n class=\"vhd-condition-filters\"\n fdLayoutGridCol\n colGrow\n [class.fd-select-custom-class]=\"false\"\n #sttr\n [controlTemplate]=\"customSelectTemplate\"\n [name]=\"uid + '-' + type + '-strategy-' + item.id\"\n [(ngModel)]=\"item.strategy\"\n (valueChange)=\"_filterChanged()\"\n role=\"combobox\"\n aria-roledescription=\"select\"\n aria-haspopup=\"listbox\"\n [inline]=\"false\"\n [ariaLabelledBy]=\"titleId + ' ' + 'CONDITIONPANEL_OPERATOR_LABEL' + ' ' + selectedId\"\n >\n @if (_includeStrategy.length) {\n <li fd-list-group-header>\n <span fd-list-title>{{\n 'platformVHD.defineConditionConditionsGroupHeaderInclude' | fdTranslate\n }}</span>\n </li>\n @for (strategy of _includeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.include, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n @if (_excludeStrategy.length) {\n <li fd-list-group-header>\n <span fd-list-title>{{\n 'platformVHD.defineConditionConditionsGroupHeaderExclude' | fdTranslate\n }}</span>\n </li>\n @for (strategy of _excludeStrategy; track strategy) {\n <li fd-option [value]=\"strategy.key\">\n <ng-template\n [ngTemplateOutlet]=\"conditionStrategyOption\"\n [ngTemplateOutletContext]=\"{ type: _defineTypes.exclude, strategy: strategy }\"\n ></ng-template>\n </li>\n }\n }\n </fd-select>\n </div>\n @if (item.strategy !== _strategyIncludeValues.empty && item.strategy !== _strategyExcludeValues.not_empty) {\n <div fdLayoutGridCol colGrow>\n <div fdLayoutGridRow>\n @if (item.strategy === _strategyIncludeValues.between) {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionFromPlaceholder' | fdTranslate\"\n placeholder=\"from\"\n required\n [state]=\"fromModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-from-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #fromModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group [triggers]=\"['focusin', 'focusout']\">\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionToPlaceholder' | fdTranslate\"\n required\n [state]=\"toModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-to-' + item.id\"\n (blur)=\"_validateConditionValue(item, [!!fromModel.valid, !!toModel.valid])\"\n #toModel=\"ngModel\"\n [(ngModel)]=\"item.valueTo\"\n />\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n </fd-form-input-message-group>\n </div>\n } @else {\n <div fdLayoutGridCol colGrow>\n <fd-form-input-message-group>\n <input\n fd-form-control\n fdp-condition-count-message\n [maxCharacters]=\"_rules.maxCharactersHintCount\"\n type=\"text\"\n [placeholder]=\"'platformVHD.defineConditionValuePlaceholder' | fdTranslate\"\n [state]=\"valueModel.invalid ? 'error' : null\"\n [name]=\"uid + '-' + type + '-value-' + item.id\"\n (blur)=\"_validateConditionValue(item, !!valueModel.valid)\"\n #valueModel=\"ngModel\"\n [(ngModel)]=\"item.value\"\n />\n @if (valueModel.invalid) {\n <ng-template\n [ngTemplateOutlet]=\"countError\"\n [ngTemplateOutletContext]=\"{ $implicit: item.value && item.value.length }\"\n ></ng-template>\n }\n </fd-form-input-message-group>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"action-col\" fdLayoutGridCol colGrow>\n <button\n fd-button\n [ariaLabel]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n fdType=\"transparent\"\n glyph=\"decline\"\n [title]=\"'platformVHD.defineConditionRemoveConditionButtonTitle' | fdTranslate\"\n (click)=\"removeCondition(i)\"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n}\n<fd-layout-grid class=\"condition-row new-condition-row\" [noGap]=\"true\">\n <div fdLayoutGridRow>\n <div fdLayoutGridCol colGrow> </div>\n <div fdLayoutGridCol class=\"action-col\">\n <button\n fd-button\n [attr.aria-label]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n [label]=\"'platformVHD.defineConditionAddConditionButtonLabel' | fdTranslate\"\n [title]=\"'platformVHD.defineConditionAddConditionButtonTitle' | fdTranslate\"\n (click)=\"addEmptyCondition()\"\n ></button>\n </div>\n </div>\n</fd-layout-grid>\n<ng-template #conditionStrategyOption let-type=\"type\" let-strategy=\"strategy\">\n @switch (strategy.key) {\n @case ('contains') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelContains' | fdTranslate }}\n }\n @case ('equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEqualTo' | fdTranslate }}\n }\n @case ('between') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelBetween' | fdTranslate }}\n }\n @case ('startsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelStartsWith' | fdTranslate }}\n }\n @case ('endsWith') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEndsWith' | fdTranslate }}\n }\n @case ('lessThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThan' | fdTranslate }}\n }\n @case ('lessThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelLessThanEqual' | fdTranslate }}\n }\n @case ('greaterThan') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThan' | fdTranslate }}\n }\n @case ('greaterThanEqual') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual' | fdTranslate }}\n }\n @case ('empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelEmpty' | fdTranslate }}\n }\n @case ('not_equalTo') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEqualTo' | fdTranslate }}\n }\n @case ('not_empty') {\n {{ 'platformVHD.defineConditionConditionStrategyLabelNotEmpty' | fdTranslate }}\n }\n }\n</ng-template>\n<ng-template #countError let-count>\n @if (count && count > 7) {\n <fd-form-message type=\"error\">\n {{ 'platformVHD.defineConditionMaxCountError' | fdTranslate: { count: 7 } }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #customSelectTemplate let-textValue>\n {{ textValue }}\n</ng-template>\n", styles: [".fdp-value-help-dialog fdp-define-tab{height:100%;overflow:auto}.fdp-value-help-dialog fdp-define-tab .define-condition-title{padding:.625rem 0 0}.fdp-value-help-dialog fdp-define-tab .condition-row{padding:0}.fdp-value-help-dialog fdp-define-tab .condition-row .fd-col{padding-top:0;padding-bottom:0}.fdp-value-help-dialog .vhd-condition-filters fd-popover{width:100%}.fdp-value-help-dialog .condition-row{align-items:center}.fdp-value-help-dialog .condition-row .main-col{min-width:auto;flex:1 1 auto}.fdp-value-help-dialog .condition-row .action-col{display:flex;align-items:center;min-width:auto;flex:0 0 auto}.fdp-value-help-dialog .condition-row.new-condition-row{padding-top:.5rem}.fdp-value-help-dialog .condition-row.new-condition-row .fd-button{margin-right:2.5rem}.fd-list--dropdown .fd-list__item.fd-list__group-header{border-bottom:var(--sapList_BorderWidth) solid var(--sapList_GroupHeaderBorderColor)}\n"] }]
|
|
154
155
|
}], propDecorators: { titleId: [{
|
|
155
156
|
type: Input
|
|
156
157
|
}], selectedId: [{
|
|
@@ -166,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
166
167
|
}], conditionChange: [{
|
|
167
168
|
type: Output
|
|
168
169
|
}] } });
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL2NvbXBvbmVudHMvZGVmaW5lLXRhYi9kZWZpbmUtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy9kZWZpbmUtdGFiL2RlZmluZS10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsOEJBQThCLEVBQzlCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDdkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3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c0JBRFosTUFBTTtnQkFLUCxlQUFlO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7XG4gICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXG4gICAgRm9ybUlucHV0TWVzc2FnZUdyb3VwQ29tcG9uZW50LFxuICAgIEZvcm1MYWJlbENvbXBvbmVudCxcbiAgICBGb3JtTWVzc2FnZUNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBMYXlvdXRHcmlkQ29sRGlyZWN0aXZlLCBMYXlvdXRHcmlkQ29tcG9uZW50LCBMYXlvdXRHcmlkUm93RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xheW91dC1ncmlkJztcbmltcG9ydCB7IExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCwgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NlbGVjdCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgTUFYX0NIQVJBQ1RFUl9ISU5UX0NPVU5UIH0gZnJvbSAnLi4vLi4vY29uc3RhbnMnO1xuaW1wb3J0IHsgQ29uZGl0aW9uQ291bnRNZXNzYWdlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb25kaXRpb24tY291bnQtbWVzc2FnZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgICBCYXNlRW50aXR5LFxuICAgIFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneSxcbiAgICBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3ksXG4gICAgVmhkRGVmaW5lVHlwZSxcbiAgICBWaGRFeGNsdWRlZEVudGl0eSxcbiAgICBWaGRJbmNsdWRlZEVudGl0eVxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVmhkQmFzZVRhYiB9IGZyb20gJy4uL2Jhc2UtdGFiL3ZoZC1iYXNlLXRhYi5jb21wb25lbnQnO1xuXG5jbGFzcyBFeHRlbmRlZEJhc2VFbnRpdHkgZXh0ZW5kcyBCYXNlRW50aXR5IHtcbiAgICBpZD86IG51bWJlcjtcbn1cblxuY2xhc3MgRXh0ZW5kZWRJbmNsdWRlZEVudGl0eSBleHRlbmRzIFZoZEluY2x1ZGVkRW50aXR5IHtcbiAgICBpZD86IG51bWJlcjtcbn1cblxuY2xhc3MgRXh0ZW5kZWRFeGNsdWRlZEVudGl0eSBleHRlbmRzIFZoZEV4Y2x1ZGVkRW50aXR5IHtcbiAgICBpZD86IG51bWJlcjtcbn1cblxubGV0IHRpdGxlVW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1kZWZpbmUtdGFiJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGVmaW5lLXRhYi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2RlZmluZS10YWIuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkUm93RGlyZWN0aXZlLFxuICAgICAgICBMYXlvdXRHcmlkQ29sRGlyZWN0aXZlLFxuICAgICAgICBGb3JtTGFiZWxDb21wb25lbnQsXG4gICAgICAgIFNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgT3B0aW9uQ29tcG9uZW50LFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBGb3JtSW5wdXRNZXNzYWdlR3JvdXBDb21wb25lbnQsXG4gICAgICAgIEZvcm1Db250cm9sQ29tcG9uZW50LFxuICAgICAgICBDb25kaXRpb25Db3VudE1lc3NhZ2VEaXJlY3RpdmUsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgRm9ybU1lc3NhZ2VDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGVmaW5lVGFiQ29tcG9uZW50IGV4dGVuZHMgVmhkQmFzZVRhYiBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgZGVmYXVsdElkID0gYGZkLXRpdGxlLWlkLSR7dGl0bGVVbmlxdWVJZCsrfWA7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgZGVmYXVsdFNlbGVjdElkID0gYGZkLXNlbGVjdC10aXRsZS1pZC0ke3RpdGxlVW5pcXVlSWQrK31gO1xuXG4gICAgLyoqIHRpdGxlIGlkIGZvciB0aGUgdGFibGUgICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZUlkOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRJZDtcblxuICAgIC8qKiBzZWVsY3RlZCB2YWx1ZSBpZCBmb3IgdGhlIHRhYmxlICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0ZWRJZDogc3RyaW5nID0gdGhpcy5kZWZhdWx0U2VsZWN0SWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29uZGl0aW9uczogRXh0ZW5kZWRCYXNlRW50aXR5W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBzdHJhdGVneUxhYmVsczogeyBba2V5IGluIGtleW9mICh0eXBlb2YgVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5IHwgdHlwZW9mIFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneSldPzogc3RyaW5nIH0gPVxuICAgICAgICB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQE91dHB1dCgpXG4gICAgaW5jbHVkZUNoYW5nZTogRXZlbnRFbWl0dGVyPEV4dGVuZGVkSW5jbHVkZWRFbnRpdHlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEV4dGVuZGVkSW5jbHVkZWRFbnRpdHlbXT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQE91dHB1dCgpXG4gICAgZXhjbHVkZUNoYW5nZTogRXZlbnRFbWl0dGVyPEV4dGVuZGVkRXhjbHVkZWRFbnRpdHlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEV4dGVuZGVkRXhjbHVkZWRFbnRpdHlbXT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQE91dHB1dCgpXG4gICAgY29uZGl0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QmFzZUVudGl0eVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8QmFzZUVudGl0eVtdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29uZGl0aW9uczogRXh0ZW5kZWRCYXNlRW50aXR5W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2RlZmluZVBhbmVsU3RhdGUgPSB7XG4gICAgICAgIGluY2x1ZGVkOiBmYWxzZSxcbiAgICAgICAgZXhjbHVkZWQ6IGZhbHNlXG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3J1bGVzID0ge1xuICAgICAgICBtYXhDaGFyYWN0ZXJzSGludENvdW50OiBNQVhfQ0hBUkFDVEVSX0hJTlRfQ09VTlRcbiAgICB9O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3N0cmF0ZWd5SW5jbHVkZVZhbHVlcyA9IFZoZERlZmluZUluY2x1ZGVTdHJhdGVneTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3N0cmF0ZWd5RXhjbHVkZVZhbHVlcyA9IFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2RlZmluZVR5cGVzID0gVmhkRGVmaW5lVHlwZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luY2x1ZGVTdHJhdGVneTogU3RhdGVneUl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhjbHVkZVN0cmF0ZWd5OiBTdGF0ZWd5SXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCdjb25kaXRpb25zJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9jb25kaXRpb25zID0gKHRoaXMuY29uZGl0aW9ucyBhcyBFeHRlbmRlZEluY2x1ZGVkRW50aXR5W10pIHx8IFtdO1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUNvbmRpdGlvbnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZWZyZXNoU3RyYXRlZ2llcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFRyYWNrIGZ1bmN0aW9uIGZvciBtYWluIGRhdGEgKi9cbiAgICBfdHJhY2tCeUtleUFuZFR5cGUoXG4gICAgICAgIF9pbmRleDogbnVtYmVyLFxuICAgICAgICBpdGVtOiBFeHRlbmRlZEluY2x1ZGVkRW50aXR5IHwgRXh0ZW5kZWRFeGNsdWRlZEVudGl0eVxuICAgICk6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5pZCArIGl0ZW0ua2V5ICsgaXRlbS50eXBlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vblNlbGVjdFN0cmF0ZWd5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9maWx0ZXJDaGFuZ2VkKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZmlsdGVyQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb25kaXRpb25DaGFuZ2UuZW1pdCh0aGlzLl9jb25kaXRpb25zKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhZGRFbXB0eUNvbmRpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IG5ldyBFeHRlbmRlZEJhc2VFbnRpdHkoKTtcbiAgICAgICAgaXRlbS52YWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLl9jb25kaXRpb25zLnB1c2goaXRlbSk7XG4gICAgICAgIHRoaXMuX2ZpbHRlckNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlbW92ZUNvbmRpdGlvbihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbmRpdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUNvbmRpdGlvbnMoKTtcbiAgICAgICAgdGhpcy5fZmlsdGVyQ2hhbmdlZCgpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF92YWxpZGF0ZUNvbmRpdGlvblZhbHVlKGl0ZW06IEV4dGVuZGVkSW5jbHVkZWRFbnRpdHkgfCBFeHRlbmRlZEV4Y2x1ZGVkRW50aXR5LCB2YWxpZDogYm9vbGVhbiB8IGJvb2xlYW5bXSk6IHZvaWQge1xuICAgICAgICBpdGVtLnZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWxpZCkgPyB2YWxpZC5ldmVyeShCb29sZWFuKSA6ICEhdmFsaWQ7XG4gICAgICAgIHRoaXMuX2ZpbHRlckNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hTdHJhdGVnaWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbmNsdWRlU3RyYXRlZ3kgPSBPYmplY3Qua2V5cyhWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kpLm1hcCgoa2V5KSA9PiAoe1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdHlwZTogVmhkRGVmaW5lVHlwZS5pbmNsdWRlXG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5fZXhjbHVkZVN0cmF0ZWd5ID0gT2JqZWN0LmtleXMoVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5KS5tYXAoKGtleSkgPT4gKHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIHR5cGU6IFZoZERlZmluZVR5cGUuZXhjbHVkZVxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplQ29uZGl0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbmRpdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEVtcHR5Q29uZGl0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmludGVyZmFjZSBTdGF0ZWd5SXRlbSB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdHlwZTogVmhkRGVmaW5lVHlwZTtcbn1cbiIsIjxoNSBbaWRdPVwidGl0bGVJZFwiIHJvbGU9XCJoZWFkaW5nXCIgYXJpYS1sZXZlbD1cIjVcIiBmZC10aXRsZSBjbGFzcz1cImRlZmluZS1jb25kaXRpb24tdGl0bGVcIj5cbiAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uVGl0bGUnIHwgZmRUcmFuc2xhdGUgfX1cbjwvaDU+XG5AZm9yIChpdGVtIG9mIF9jb25kaXRpb25zOyB0cmFjayBfdHJhY2tCeUtleUFuZFR5cGUoaSwgaXRlbSk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgPGZkLWxheW91dC1ncmlkIGNsYXNzPVwiY29uZGl0aW9uLXJvd1wiIFtub0dhcF09XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjVcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9XCJDT05ESVRJT05QQU5FTF9PUEVSQVRPUl9MQUJFTFwiIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2hpZGRlbl9sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICBDT05ESVRJT05QQU5FTF9PUEVSQVRPUl9MQUJFTFxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGxhYmVsIFtpZF09XCJzZWxlY3RlZElkXCIgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19faGlkZGVuX2xhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uU2VsZWN0ZWRWYWx1ZUhpZGRlbkExMXlMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IHZhbHVlOiBpdGVtLnN0cmF0ZWd5IH1cbiAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2aGQtY29uZGl0aW9uLWZpbHRlcnNcIlxuICAgICAgICAgICAgICAgICAgICBmZExheW91dEdyaWRDb2xcbiAgICAgICAgICAgICAgICAgICAgY29sR3Jvd1xuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtc2VsZWN0LWN1c3RvbS1jbGFzc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICNzdHRyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sVGVtcGxhdGVdPVwiY3VzdG9tU2VsZWN0VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy1zdHJhdGVneS0nICsgaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5zdHJhdGVneVwiXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJfZmlsdGVyQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1yb2xlZGVzY3JpcHRpb249XCJzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJ0aXRsZUlkICsgJyAnICsgJ0NPTkRJVElPTlBBTkVMX09QRVJBVE9SX0xBQkVMJyArICcgJyArIHNlbGVjdGVkSWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChfaW5jbHVkZVN0cmF0ZWd5Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtZ3JvdXAtaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25zR3JvdXBIZWFkZXJJbmNsdWRlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc3RyYXRlZ3kgb2YgX2luY2x1ZGVTdHJhdGVneTsgdHJhY2sgc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJzdHJhdGVneS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25kaXRpb25TdHJhdGVneU9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0eXBlOiBfZGVmaW5lVHlwZXMuaW5jbHVkZSwgc3RyYXRlZ3k6IHN0cmF0ZWd5IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoX2V4Y2x1ZGVTdHJhdGVneS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uc0dyb3VwSGVhZGVyRXhjbHVkZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHN0cmF0ZWd5IG9mIF9leGNsdWRlU3RyYXRlZ3k7IHRyYWNrIHN0cmF0ZWd5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiBbdmFsdWVdPVwic3RyYXRlZ3kua2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29uZGl0aW9uU3RyYXRlZ3lPcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgdHlwZTogX2RlZmluZVR5cGVzLmV4Y2x1ZGUsIHN0cmF0ZWd5OiBzdHJhdGVneSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZmQtc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGl0ZW0uc3RyYXRlZ3kgIT09IF9zdHJhdGVneUluY2x1ZGVWYWx1ZXMuZW1wdHkgJiYgaXRlbS5zdHJhdGVneSAhPT0gX3N0cmF0ZWd5RXhjbHVkZVZhbHVlcy5ub3RfZW1wdHkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjb2xHcm93PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZFJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5zdHJhdGVneSA9PT0gX3N0cmF0ZWd5SW5jbHVkZVZhbHVlcy5iZXR3ZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZExheW91dEdyaWRDb2wgY29sR3Jvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cCBbdHJpZ2dlcnNdPVwiWydmb2N1c2luJywgJ2ZvY3Vzb3V0J11cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkcC1jb25kaXRpb24tY291bnQtbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhDaGFyYWN0ZXJzXT1cIl9ydWxlcy5tYXhDaGFyYWN0ZXJzSGludENvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Gcm9tUGxhY2Vob2xkZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZnJvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwiZnJvbU1vZGVsLmludmFsaWQgPyAnZXJyb3InIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwidWlkICsgJy0nICsgdHlwZSArICctZnJvbS0nICsgaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiX3ZhbGlkYXRlQ29uZGl0aW9uVmFsdWUoaXRlbSwgWyEhZnJvbU1vZGVsLnZhbGlkLCAhIXRvTW9kZWwudmFsaWRdKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2Zyb21Nb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY291bnRFcnJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLnZhbHVlICYmIGl0ZW0udmFsdWUubGVuZ3RoIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXAgW3RyaWdnZXJzXT1cIlsnZm9jdXNpbicsICdmb2N1c291dCddXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1mb3JtLWNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHAtY29uZGl0aW9uLWNvdW50LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4Q2hhcmFjdGVyc109XCJfcnVsZXMubWF4Q2hhcmFjdGVyc0hpbnRDb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uVG9QbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwidG9Nb2RlbC5pbnZhbGlkID8gJ2Vycm9yJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInVpZCArICctJyArIHR5cGUgKyAnLXRvLScgKyBpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJfdmFsaWRhdGVDb25kaXRpb25WYWx1ZShpdGVtLCBbISFmcm9tTW9kZWwudmFsaWQsICEhdG9Nb2RlbC52YWxpZF0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdG9Nb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb3VudEVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZS5sZW5ndGggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjb2xHcm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtZm9ybS1jb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRwLWNvbmRpdGlvbi1jb3VudC1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heENoYXJhY3RlcnNdPVwiX3J1bGVzLm1heENoYXJhY3RlcnNIaW50Q291bnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvblZhbHVlUGxhY2Vob2xkZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJ2YWx1ZU1vZGVsLmludmFsaWQgPyAnZXJyb3InIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwidWlkICsgJy0nICsgdHlwZSArICctdmFsdWUtJyArIGl0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIl92YWxpZGF0ZUNvbmRpdGlvblZhbHVlKGl0ZW0sICEhdmFsdWVNb2RlbC52YWxpZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN2YWx1ZU1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHZhbHVlTW9kZWwuaW52YWxpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb3VudEVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLnZhbHVlICYmIGl0ZW0udmFsdWUubGVuZ3RoIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWNvbFwiIGZkTGF5b3V0R3JpZENvbCBjb2xHcm93PlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvblJlbW92ZUNvbmRpdGlvbkJ1dHRvblRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBnbHlwaD1cImRlY2xpbmVcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvblJlbW92ZUNvbmRpdGlvbkJ1dHRvblRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNvbmRpdGlvbihpKVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZmQtbGF5b3V0LWdyaWQ+XG59XG48ZmQtbGF5b3V0LWdyaWQgY2xhc3M9XCJjb25kaXRpb24tcm93IG5ldy1jb25kaXRpb24tcm93XCIgW25vR2FwXT1cInRydWVcIj5cbiAgICA8ZGl2IGZkTGF5b3V0R3JpZFJvdz5cbiAgICAgICAgPGRpdiBmZExheW91dEdyaWRDb2wgY29sR3Jvdz4mbmJzcDs8L2Rpdj5cbiAgICAgICAgPGRpdiBmZExheW91dEdyaWRDb2wgY2xhc3M9XCJhY3Rpb24tY29sXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQWRkQ29uZGl0aW9uQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQWRkQ29uZGl0aW9uQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQWRkQ29uZGl0aW9uQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRFbXB0eUNvbmRpdGlvbigpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2ZkLWxheW91dC1ncmlkPlxuPG5nLXRlbXBsYXRlICNjb25kaXRpb25TdHJhdGVneU9wdGlvbiBsZXQtdHlwZT1cInR5cGVcIiBsZXQtc3RyYXRlZ3k9XCJzdHJhdGVneVwiPlxuICAgIEBzd2l0Y2ggKHN0cmF0ZWd5LmtleSkge1xuICAgICAgICBAY2FzZSAoJ2NvbnRhaW5zJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxDb250YWlucycgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZXF1YWxUbycpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsRXF1YWxUbycgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnYmV0d2VlbicpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsQmV0d2VlbicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnc3RhcnRzV2l0aCcpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsU3RhcnRzV2l0aCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZW5kc1dpdGgnKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbEVuZHNXaXRoJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdsZXNzVGhhbicpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsTGVzc1RoYW4nIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2xlc3NUaGFuRXF1YWwnKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbExlc3NUaGFuRXF1YWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2dyZWF0ZXJUaGFuJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxHcmVhdGVyVGhhbicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZ3JlYXRlclRoYW5FcXVhbCcpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsR3JlYXRlclRoYW5FcXVhbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZW1wdHknKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbEVtcHR5JyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdub3RfZXF1YWxUbycpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsTm90RXF1YWxUbycgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnbm90X2VtcHR5Jykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxOb3RFbXB0eScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjY291bnRFcnJvciBsZXQtY291bnQ+XG4gICAgQGlmIChjb3VudCAmJiBjb3VudCA+IDcpIHtcbiAgICAgICAgPGZkLWZvcm0tbWVzc2FnZSB0eXBlPVwiZXJyb3JcIj5cbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25NYXhDb3VudEVycm9yJyB8IGZkVHJhbnNsYXRlOiB7IGNvdW50OiA3IH0gfX1cbiAgICAgICAgPC9mZC1mb3JtLW1lc3NhZ2U+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjY3VzdG9tU2VsZWN0VGVtcGxhdGUgbGV0LXRleHRWYWx1ZT5cbiAgICB7eyB0ZXh0VmFsdWUgfX1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL2NvbXBvbmVudHMvZGVmaW5lLXRhYi9kZWZpbmUtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy9kZWZpbmUtdGFiL2RlZmluZS10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsOEJBQThCLEVBQzlCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDdkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FB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YixLQUFLO2dCQU1OLGFBQWE7c0JBRFosTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBS1AsZUFBZTtzQkFEZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZyAqL1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQge1xuICAgIEZvcm1Db250cm9sQ29tcG9uZW50LFxuICAgIEZvcm1JbnB1dE1lc3NhZ2VHcm91cENvbXBvbmVudCxcbiAgICBGb3JtTGFiZWxDb21wb25lbnQsXG4gICAgRm9ybU1lc3NhZ2VDb21wb25lbnRcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHsgTGF5b3V0R3JpZENvbERpcmVjdGl2ZSwgTGF5b3V0R3JpZENvbXBvbmVudCwgTGF5b3V0R3JpZFJvd0RpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9sYXlvdXQtZ3JpZCc7XG5pbXBvcnQgeyBMaXN0R3JvdXBIZWFkZXJEaXJlY3RpdmUsIExpc3RUaXRsZURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCwgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NlbGVjdCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgTUFYX0NIQVJBQ1RFUl9ISU5UX0NPVU5UIH0gZnJvbSAnLi4vLi4vY29uc3RhbnMnO1xuaW1wb3J0IHsgQ29uZGl0aW9uQ291bnRNZXNzYWdlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb25kaXRpb24tY291bnQtbWVzc2FnZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgICBCYXNlRW50aXR5LFxuICAgIFZoZERlZmluZUV4Y2x1ZGVTdHJhdGVneSxcbiAgICBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3ksXG4gICAgVmhkRGVmaW5lVHlwZSxcbiAgICBWaGRFeGNsdWRlZEVudGl0eSxcbiAgICBWaGRJbmNsdWRlZEVudGl0eVxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVmhkQmFzZVRhYiB9IGZyb20gJy4uL2Jhc2UtdGFiL3ZoZC1iYXNlLXRhYi5jb21wb25lbnQnO1xuXG5jbGFzcyBFeHRlbmRlZEJhc2VFbnRpdHkgZXh0ZW5kcyBCYXNlRW50aXR5IHtcbiAgICBpZD86IG51bWJlcjtcbn1cblxuY2xhc3MgRXh0ZW5kZWRJbmNsdWRlZEVudGl0eSBleHRlbmRzIFZoZEluY2x1ZGVkRW50aXR5IHtcbiAgICBpZD86IG51bWJlcjtcbn1cblxuY2xhc3MgRXh0ZW5kZWRFeGNsdWRlZEVudGl0eSBleHRlbmRzIFZoZEV4Y2x1ZGVkRW50aXR5IHtcbiAgICBpZD86IG51bWJlcjtcbn1cblxubGV0IHRpdGxlVW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1kZWZpbmUtdGFiJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGVmaW5lLXRhYi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2RlZmluZS10YWIuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkUm93RGlyZWN0aXZlLFxuICAgICAgICBMYXlvdXRHcmlkQ29sRGlyZWN0aXZlLFxuICAgICAgICBGb3JtTGFiZWxDb21wb25lbnQsXG4gICAgICAgIFNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgTGlzdFRpdGxlRGlyZWN0aXZlLFxuICAgICAgICBPcHRpb25Db21wb25lbnQsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIEZvcm1JbnB1dE1lc3NhZ2VHcm91cENvbXBvbmVudCxcbiAgICAgICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXG4gICAgICAgIENvbmRpdGlvbkNvdW50TWVzc2FnZURpcmVjdGl2ZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBGb3JtTWVzc2FnZUNvbXBvbmVudCxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZWZpbmVUYWJDb21wb25lbnQgZXh0ZW5kcyBWaGRCYXNlVGFiIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBkZWZhdWx0SWQgPSBgZmQtdGl0bGUtaWQtJHt0aXRsZVVuaXF1ZUlkKyt9YDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBkZWZhdWx0U2VsZWN0SWQgPSBgZmQtc2VsZWN0LXRpdGxlLWlkLSR7dGl0bGVVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogdGl0bGUgaWQgZm9yIHRoZSB0YWJsZSAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlSWQ6IHN0cmluZyA9IHRoaXMuZGVmYXVsdElkO1xuXG4gICAgLyoqIHNlZWxjdGVkIHZhbHVlIGlkIGZvciB0aGUgdGFibGUgICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZElkOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRTZWxlY3RJZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBjb25kaXRpb25zOiBFeHRlbmRlZEJhc2VFbnRpdHlbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIHN0cmF0ZWd5TGFiZWxzOiB7IFtrZXkgaW4ga2V5b2YgKHR5cGVvZiBWaGREZWZpbmVJbmNsdWRlU3RyYXRlZ3kgfCB0eXBlb2YgVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5KV0/OiBzdHJpbmcgfSA9XG4gICAgICAgIHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBpbmNsdWRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRJbmNsdWRlZEVudGl0eVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRJbmNsdWRlZEVudGl0eVtdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBleGNsdWRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRFeGNsdWRlZEVudGl0eVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RXh0ZW5kZWRFeGNsdWRlZEVudGl0eVtdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBjb25kaXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxCYXNlRW50aXR5W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxCYXNlRW50aXR5W10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb25kaXRpb25zOiBFeHRlbmRlZEJhc2VFbnRpdHlbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGVmaW5lUGFuZWxTdGF0ZSA9IHtcbiAgICAgICAgaW5jbHVkZWQ6IGZhbHNlLFxuICAgICAgICBleGNsdWRlZDogZmFsc2VcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcnVsZXMgPSB7XG4gICAgICAgIG1heENoYXJhY3RlcnNIaW50Q291bnQ6IE1BWF9DSEFSQUNURVJfSElOVF9DT1VOVFxuICAgIH07XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3RyYXRlZ3lJbmNsdWRlVmFsdWVzID0gVmhkRGVmaW5lSW5jbHVkZVN0cmF0ZWd5O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3RyYXRlZ3lFeGNsdWRlVmFsdWVzID0gVmhkRGVmaW5lRXhjbHVkZVN0cmF0ZWd5O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGVmaW5lVHlwZXMgPSBWaGREZWZpbmVUeXBlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5jbHVkZVN0cmF0ZWd5OiBTdGF0ZWd5SXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leGNsdWRlU3RyYXRlZ3k6IFN0YXRlZ3lJdGVtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoJ2NvbmRpdGlvbnMnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmRpdGlvbnMgPSAodGhpcy5jb25kaXRpb25zIGFzIEV4dGVuZGVkSW5jbHVkZWRFbnRpdHlbXSkgfHwgW107XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplQ29uZGl0aW9ucygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hTdHJhdGVnaWVzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gVHJhY2sgZnVuY3Rpb24gZm9yIG1haW4gZGF0YSAqL1xuICAgIF90cmFja0J5S2V5QW5kVHlwZShcbiAgICAgICAgX2luZGV4OiBudW1iZXIsXG4gICAgICAgIGl0ZW06IEV4dGVuZGVkSW5jbHVkZWRFbnRpdHkgfCBFeHRlbmRlZEV4Y2x1ZGVkRW50aXR5XG4gICAgKTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLmlkICsgaXRlbS5rZXkgKyBpdGVtLnR5cGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VsZWN0U3RyYXRlZ3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZpbHRlckNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9maWx0ZXJDaGFuZ2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmRpdGlvbkNoYW5nZS5lbWl0KHRoaXMuX2NvbmRpdGlvbnMpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFkZEVtcHR5Q29uZGl0aW9uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtID0gbmV3IEV4dGVuZGVkQmFzZUVudGl0eSgpO1xuICAgICAgICBpdGVtLnZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuX2NvbmRpdGlvbnMucHVzaChpdGVtKTtcbiAgICAgICAgdGhpcy5fZmlsdGVyQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVtb3ZlQ29uZGl0aW9uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29uZGl0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplQ29uZGl0aW9ucygpO1xuICAgICAgICB0aGlzLl9maWx0ZXJDaGFuZ2VkKCk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZhbGlkYXRlQ29uZGl0aW9uVmFsdWUoaXRlbTogRXh0ZW5kZWRJbmNsdWRlZEVudGl0eSB8IEV4dGVuZGVkRXhjbHVkZWRFbnRpdHksIHZhbGlkOiBib29sZWFuIHwgYm9vbGVhbltdKTogdm9pZCB7XG4gICAgICAgIGl0ZW0udmFsaWQgPSBBcnJheS5pc0FycmF5KHZhbGlkKSA/IHZhbGlkLmV2ZXJ5KEJvb2xlYW4pIDogISF2YWxpZDtcbiAgICAgICAgdGhpcy5fZmlsdGVyQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaFN0cmF0ZWdpZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luY2x1ZGVTdHJhdGVneSA9IE9iamVjdC5rZXlzKFZoZERlZmluZUluY2x1ZGVTdHJhdGVneSkubWFwKChrZXkpID0+ICh7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICB0eXBlOiBWaGREZWZpbmVUeXBlLmluY2x1ZGVcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLl9leGNsdWRlU3RyYXRlZ3kgPSBPYmplY3Qua2V5cyhWaGREZWZpbmVFeGNsdWRlU3RyYXRlZ3kpLm1hcCgoa2V5KSA9PiAoe1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdHlwZTogVmhkRGVmaW5lVHlwZS5leGNsdWRlXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVDb25kaXRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY29uZGl0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkRW1wdHlDb25kaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuaW50ZXJmYWNlIFN0YXRlZ3lJdGVtIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB0eXBlOiBWaGREZWZpbmVUeXBlO1xufVxuIiwiPGg1IFtpZF09XCJ0aXRsZUlkXCIgcm9sZT1cImhlYWRpbmdcIiBhcmlhLWxldmVsPVwiNVwiIGZkLXRpdGxlIGNsYXNzPVwiZGVmaW5lLWNvbmRpdGlvbi10aXRsZVwiPlxuICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25UaXRsZScgfCBmZFRyYW5zbGF0ZSB9fVxuPC9oNT5cbkBmb3IgKGl0ZW0gb2YgX2NvbmRpdGlvbnM7IHRyYWNrIF90cmFja0J5S2V5QW5kVHlwZShpLCBpdGVtKTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8ZmQtbGF5b3V0LWdyaWQgY2xhc3M9XCJjb25kaXRpb24tcm93XCI+XG4gICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9XCJDT05ESVRJT05QQU5FTF9PUEVSQVRPUl9MQUJFTFwiIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZHAtdmFsdWUtaGVscC1kaWFsb2dfX2hpZGRlbl9sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICBDT05ESVRJT05QQU5FTF9PUEVSQVRPUl9MQUJFTFxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGxhYmVsIFtpZF09XCJzZWxlY3RlZElkXCIgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19faGlkZGVuX2xhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uU2VsZWN0ZWRWYWx1ZUhpZGRlbkExMXlMYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IHZhbHVlOiBpdGVtLnN0cmF0ZWd5IH1cbiAgICAgICAgICAgICAgICAgICAgfX08L2xhYmVsXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2aGQtY29uZGl0aW9uLWZpbHRlcnNcIlxuICAgICAgICAgICAgICAgICAgICBmZExheW91dEdyaWRDb2xcbiAgICAgICAgICAgICAgICAgICAgY29sR3Jvd1xuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtc2VsZWN0LWN1c3RvbS1jbGFzc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICNzdHRyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sVGVtcGxhdGVdPVwiY3VzdG9tU2VsZWN0VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy1zdHJhdGVneS0nICsgaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5zdHJhdGVneVwiXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJfZmlsdGVyQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1yb2xlZGVzY3JpcHRpb249XCJzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwidGl0bGVJZCArICcgJyArICdDT05ESVRJT05QQU5FTF9PUEVSQVRPUl9MQUJFTCcgKyAnICcgKyBzZWxlY3RlZElkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoX2luY2x1ZGVTdHJhdGVneS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25zR3JvdXBIZWFkZXJJbmNsdWRlJyB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc3RyYXRlZ3kgb2YgX2luY2x1ZGVTdHJhdGVneTsgdHJhY2sgc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJzdHJhdGVneS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25kaXRpb25TdHJhdGVneU9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0eXBlOiBfZGVmaW5lVHlwZXMuaW5jbHVkZSwgc3RyYXRlZ3k6IHN0cmF0ZWd5IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoX2V4Y2x1ZGVTdHJhdGVneS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25zR3JvdXBIZWFkZXJFeGNsdWRlJyB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc3RyYXRlZ3kgb2YgX2V4Y2x1ZGVTdHJhdGVneTsgdHJhY2sgc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJzdHJhdGVneS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25kaXRpb25TdHJhdGVneU9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0eXBlOiBfZGVmaW5lVHlwZXMuZXhjbHVkZSwgc3RyYXRlZ3k6IHN0cmF0ZWd5IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9mZC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5zdHJhdGVneSAhPT0gX3N0cmF0ZWd5SW5jbHVkZVZhbHVlcy5lbXB0eSAmJiBpdGVtLnN0cmF0ZWd5ICE9PSBfc3RyYXRlZ3lFeGNsdWRlVmFsdWVzLm5vdF9lbXB0eSkge1xuICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnN0cmF0ZWd5ID09PSBfc3RyYXRlZ3lJbmNsdWRlVmFsdWVzLmJldHdlZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjb2xHcm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwIFt0cmlnZ2Vyc109XCJbJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtZm9ybS1jb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRwLWNvbmRpdGlvbi1jb3VudC1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heENoYXJhY3RlcnNdPVwiX3J1bGVzLm1heENoYXJhY3RlcnNIaW50Q291bnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkZyb21QbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmcm9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJmcm9tTW9kZWwuaW52YWxpZCA/ICdlcnJvcicgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy1mcm9tLScgKyBpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJfdmFsaWRhdGVDb25kaXRpb25WYWx1ZShpdGVtLCBbISFmcm9tTW9kZWwudmFsaWQsICEhdG9Nb2RlbC52YWxpZF0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZnJvbU1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb3VudEVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZS5sZW5ndGggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZExheW91dEdyaWRDb2wgY29sR3Jvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cCBbdHJpZ2dlcnNdPVwiWydmb2N1c2luJywgJ2ZvY3Vzb3V0J11cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkcC1jb25kaXRpb24tY291bnQtbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhDaGFyYWN0ZXJzXT1cIl9ydWxlcy5tYXhDaGFyYWN0ZXJzSGludENvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Ub1BsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJ0b01vZGVsLmludmFsaWQgPyAnZXJyb3InIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwidWlkICsgJy0nICsgdHlwZSArICctdG8tJyArIGl0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIl92YWxpZGF0ZUNvbmRpdGlvblZhbHVlKGl0ZW0sIFshIWZyb21Nb2RlbC52YWxpZCwgISF0b01vZGVsLnZhbGlkXSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0b01vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlVG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvdW50RXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS52YWx1ZSAmJiBpdGVtLnZhbHVlLmxlbmd0aCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1mb3JtLWNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHAtY29uZGl0aW9uLWNvdW50LW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4Q2hhcmFjdGVyc109XCJfcnVsZXMubWF4Q2hhcmFjdGVyc0hpbnRDb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uVmFsdWVQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cInZhbHVlTW9kZWwuaW52YWxpZCA/ICdlcnJvcicgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLScgKyB0eXBlICsgJy12YWx1ZS0nICsgaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiX3ZhbGlkYXRlQ29uZGl0aW9uVmFsdWUoaXRlbSwgISF2YWx1ZU1vZGVsLnZhbGlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZhbHVlTW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodmFsdWVNb2RlbC5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvdW50RXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZS5sZW5ndGggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tY29sXCIgZmRMYXlvdXRHcmlkQ29sIGNvbEdyb3c+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uUmVtb3ZlQ29uZGl0aW9uQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIGdseXBoPVwiZGVjbGluZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uUmVtb3ZlQ29uZGl0aW9uQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ29uZGl0aW9uKGkpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mZC1sYXlvdXQtZ3JpZD5cbn1cbjxmZC1sYXlvdXQtZ3JpZCBjbGFzcz1cImNvbmRpdGlvbi1yb3cgbmV3LWNvbmRpdGlvbi1yb3dcIiBbbm9HYXBdPVwidHJ1ZVwiPlxuICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjb2xHcm93PiZuYnNwOzwvZGl2PlxuICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZENvbCBjbGFzcz1cImFjdGlvbi1jb2xcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25BZGRDb25kaXRpb25CdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEVtcHR5Q29uZGl0aW9uKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZmQtbGF5b3V0LWdyaWQ+XG48bmctdGVtcGxhdGUgI2NvbmRpdGlvblN0cmF0ZWd5T3B0aW9uIGxldC10eXBlPVwidHlwZVwiIGxldC1zdHJhdGVneT1cInN0cmF0ZWd5XCI+XG4gICAgQHN3aXRjaCAoc3RyYXRlZ3kua2V5KSB7XG4gICAgICAgIEBjYXNlICgnY29udGFpbnMnKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbENvbnRhaW5zJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlcXVhbFRvJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxFcXVhbFRvJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdiZXR3ZWVuJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxCZXR3ZWVuJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdzdGFydHNXaXRoJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxTdGFydHNXaXRoJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlbmRzV2l0aCcpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsRW5kc1dpdGgnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2xlc3NUaGFuJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxMZXNzVGhhbicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnbGVzc1RoYW5FcXVhbCcpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsTGVzc1RoYW5FcXVhbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZ3JlYXRlclRoYW4nKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbEdyZWF0ZXJUaGFuJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdncmVhdGVyVGhhbkVxdWFsJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxHcmVhdGVyVGhhbkVxdWFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdlbXB0eScpIHtcbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5kZWZpbmVDb25kaXRpb25Db25kaXRpb25TdHJhdGVneUxhYmVsRW1wdHknIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ25vdF9lcXVhbFRvJykge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbkNvbmRpdGlvblN0cmF0ZWd5TGFiZWxOb3RFcXVhbFRvJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdub3RfZW1wdHknKSB7XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuZGVmaW5lQ29uZGl0aW9uQ29uZGl0aW9uU3RyYXRlZ3lMYWJlbE5vdEVtcHR5JyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIH1cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjb3VudEVycm9yIGxldC1jb3VudD5cbiAgICBAaWYgKGNvdW50ICYmIGNvdW50ID4gNykge1xuICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlIHR5cGU9XCJlcnJvclwiPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVkhELmRlZmluZUNvbmRpdGlvbk1heENvdW50RXJyb3InIHwgZmRUcmFuc2xhdGU6IHsgY291bnQ6IDcgfSB9fVxuICAgICAgICA8L2ZkLWZvcm0tbWVzc2FnZT5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjdXN0b21TZWxlY3RUZW1wbGF0ZSBsZXQtdGV4dFZhbHVlPlxuICAgIHt7IHRleHRWYWx1ZSB9fVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|