@mediusinc/mng-commons 5.5.0 → 6.0.0-rc.3
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/core/action/action-parameters.model.d.ts +4 -4
- package/core/data-providers/base.data-provider.d.ts +4 -7
- package/core/data-providers/lookup.data-provider.d.ts +2 -2
- package/core/descriptors/model.descriptor.d.ts +1 -7
- package/core/descriptors/tableview.descriptor.d.ts +5 -5
- package/core/helpers/notification.d.ts +17 -1
- package/core/helpers/route.d.ts +0 -1
- package/core/helpers/type-helpers.d.ts +8 -0
- package/core/i18n/i18n-error.d.ts +2 -3
- package/core/index.d.ts +0 -3
- package/core/models/menu.model.d.ts +0 -4
- package/core/router/route-builder.d.ts +1 -1
- package/core/services/commons.service.d.ts +0 -32
- package/core/services/tokens/module-config.token.d.ts +0 -28
- package/esm2022/core/action/action-parameters.model.mjs +1 -1
- package/esm2022/core/data-providers/base.data-provider.mjs +2 -4
- package/esm2022/core/data-providers/lookup.data-provider.mjs +1 -1
- package/esm2022/core/descriptors/model.descriptor.mjs +1 -1
- package/esm2022/core/descriptors/tableview.descriptor.mjs +1 -1
- package/esm2022/core/helpers/notification.mjs +19 -4
- package/esm2022/core/helpers/type-helpers.mjs +1 -1
- package/esm2022/core/i18n/i18n-error.mjs +10 -8
- package/esm2022/core/index.mjs +1 -4
- package/esm2022/core/models/menu.model.mjs +1 -1
- package/esm2022/core/router/route-builder.mjs +2 -2
- package/esm2022/core/services/commons.service.mjs +1 -34
- package/esm2022/core/services/tokens/module-config.token.mjs +1 -1
- package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +5 -86
- package/esm2022/filter/descriptors/filter.descriptor.mjs +7 -29
- package/esm2022/form/api/data-providers/lookup-data-provider.factory.mjs +14 -41
- package/esm2022/form/api/data-providers/lookup.data-provider.mjs +3 -3
- package/esm2022/form/api/descriptors/action-button.descriptor.mjs +5 -17
- package/esm2022/form/api/descriptors/button-style.builder.mjs +80 -101
- package/esm2022/form/api/index.mjs +2 -1
- package/esm2022/form/api/models/button.model.mjs +2 -0
- package/esm2022/model/class/data-providers/base-from-class-data-provider.factory.mjs +5 -0
- package/esm2022/model/class/descriptors/model-class.descriptor.mjs +28 -0
- package/esm2022/model/class/descriptors/type-class.descriptor.mjs +6 -0
- package/esm2022/model/class/helpers/model.mjs +53 -0
- package/esm2022/model/class/index.mjs +8 -0
- package/esm2022/model/class/mediusinc-mng-commons-model-class.mjs +5 -0
- package/esm2022/model/data-providers/base-from-type-data-provider.factory.mjs +11 -6
- package/esm2022/model/descriptors/model.descriptor.mjs +11 -54
- package/esm2022/model/descriptors/type.descriptor.mjs +2 -10
- package/esm2022/model/helpers/i18n.mjs +14 -9
- package/esm2022/model/index.mjs +1 -2
- package/esm2022/table/api/class/class-table-attribute-converter.mjs +80 -0
- package/esm2022/table/api/class/class-table-attribute.model.mjs +2 -0
- package/esm2022/table/api/class/class-table-data-provider.factory.mjs +5 -0
- package/esm2022/table/api/class/class-table-descriptor-helpers.mjs +99 -0
- package/esm2022/table/api/class/class-table-descriptor.factory.mjs +21 -0
- package/esm2022/table/api/class/index.mjs +6 -0
- package/esm2022/table/api/class/mediusinc-mng-commons-table-api-class.mjs +5 -0
- package/esm2022/table/api/data-providers/table-data-provider.factory.mjs +14 -41
- package/esm2022/table/api/data-providers/table.data-provider.mjs +3 -9
- package/esm2022/table/api/descriptors/column.descriptor.mjs +8 -3
- package/esm2022/table/api/descriptors/table-descriptor.factory.mjs +10 -77
- package/esm2022/table/api/descriptors/table.descriptor.mjs +3 -3
- package/esm2022/table/api/helpers/column-converter.mjs +25 -0
- package/esm2022/table/api/helpers/table-data-provider-descriptor-convert.mjs +4 -4
- package/esm2022/table/api/index.mjs +2 -4
- package/esm2022/table/api/models/table-columns.model.mjs +1 -1
- package/esm2022/table/components/column-value/column-value.component.mjs +7 -5
- package/esm2022/table/components/filter/filter-active-tag/filter-active-tag.component.mjs +3 -3
- package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +5 -5
- package/esm2022/table/components/table/table.component.mjs +17 -18
- package/esm2022/table/helpers/notification.mjs +19 -13
- package/esm2022/tableview/action/components/action/action.component.mjs +41 -37
- package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +22 -13
- package/esm2022/tableview/action/helpers/action-execution.mjs +1 -1
- package/esm2022/tableview/action/helpers/i18n.mjs +50 -30
- package/esm2022/tableview/action/helpers/notification.mjs +73 -12
- package/esm2022/tableview/action/helpers/styles.mjs +2 -2
- package/esm2022/tableview/action/models/execution/action-context.model.mjs +1 -1
- package/esm2022/tableview/action/models/execution/action-instance.model.mjs +1 -1
- package/esm2022/tableview/action/services/action-executor.service.mjs +92 -75
- package/esm2022/tableview/action/services/data-provider-executor.service.mjs +18 -3
- package/esm2022/tableview/api/action/descriptors/action-descriptor.factory.mjs +13 -104
- package/esm2022/tableview/api/action/descriptors/action-editor-descriptor.factory.mjs +15 -62
- package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +35 -82
- package/esm2022/tableview/api/action/descriptors/action-link-descriptor.factory.mjs +20 -33
- package/esm2022/tableview/api/action/descriptors/action-link.descriptor.mjs +1 -1
- package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +54 -95
- package/esm2022/tableview/api/action/descriptors/editor-action-descriptor.factory.mjs +21 -0
- package/esm2022/tableview/api/action/descriptors/editor-action-editor-descriptor.factory.mjs +21 -0
- package/esm2022/tableview/api/action/descriptors/table-action-descriptor.factory.mjs +37 -0
- package/esm2022/tableview/api/action/descriptors/table-action-editor-descriptor.factory.mjs +40 -0
- package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +25 -5
- package/esm2022/tableview/api/action/models/action-confirmation.model.mjs +2 -0
- package/esm2022/tableview/api/action/models/action-descriptor.types.mjs +1 -1
- package/esm2022/tableview/api/action/models/action-error.model.mjs +1 -1
- package/esm2022/tableview/api/action/models/execution/action-context-validation.model.mjs +1 -1
- package/esm2022/tableview/api/action/models/execution/action-context.model.mjs +1 -1
- package/esm2022/tableview/api/action/models/execution/action-instance.model.mjs +1 -1
- package/esm2022/tableview/api/action/models/tableview-action-default-categories.model.mjs +6 -6
- package/esm2022/tableview/api/action/services/data-provider-executor.service.mjs +3 -3
- package/esm2022/tableview/api/class/editor/class-editor-attribute-converter.mjs +85 -0
- package/esm2022/tableview/api/class/editor/class-editor-attribute.model.mjs +2 -0
- package/esm2022/tableview/api/class/editor/class-editor-data-provider.factory.mjs +5 -0
- package/esm2022/tableview/api/class/editor/class-editor-descriptor-helpers.mjs +95 -0
- package/esm2022/tableview/api/class/editor/class-editor-descriptor.factory.mjs +21 -0
- package/esm2022/tableview/api/class/index.mjs +13 -0
- package/esm2022/tableview/api/class/mediusinc-mng-commons-tableview-api-class.mjs +5 -0
- package/esm2022/tableview/api/class/tableview/class-tableview-attribute-converter.mjs +35 -0
- package/esm2022/tableview/api/class/tableview/class-tableview-attribute.model.mjs +2 -0
- package/esm2022/tableview/api/class/tableview/class-tableview-data-provider.factory.mjs +5 -0
- package/esm2022/tableview/api/class/tableview/class-tableview-descriptor-helpers.mjs +111 -0
- package/esm2022/tableview/api/class/tableview/class-tableview-descriptor.factory.mjs +26 -0
- package/esm2022/tableview/api/editor/data-providers/editor-data-provider.factory.mjs +14 -32
- package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +40 -7
- package/esm2022/tableview/api/editor/descriptors/editor-descriptor.factory.mjs +7 -73
- package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +49 -134
- package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +14 -8
- package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +11 -2
- package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +3 -5
- package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +2 -18
- package/esm2022/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.mjs +51 -0
- package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +1 -1
- package/esm2022/tableview/api/editor/models/form-editor.event.mjs +1 -1
- package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +1 -1
- package/esm2022/tableview/api/index.mjs +9 -9
- package/esm2022/tableview/api/tableview/data-providers/tableview-data-provider.factory.mjs +13 -51
- package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +19 -11
- package/esm2022/tableview/api/tableview/descriptors/tableview-descriptor.factory.mjs +19 -96
- package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +29 -182
- package/esm2022/tableview/api/tableview/helpers/tableview-create.mjs +8 -6
- package/esm2022/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.mjs +4 -4
- package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +154 -106
- package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +164 -7
- package/esm2022/tableview/api/tableview/models/tableview-descriptor-fields-manage-helper.type.mjs +2 -0
- package/esm2022/tableview/api/tableview/models/tableview-descriptor-helper.type.mjs +2 -0
- package/esm2022/tableview/api/tableview/models/tableview-input.model.mjs +1 -1
- package/esm2022/tableview/api/tableview/models/tableview-route.model.mjs +1 -1
- package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +5 -8
- package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +7 -5
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +34 -23
- package/esm2022/tableview/editor/helpers/editor-field.mjs +3 -3
- package/esm2022/tableview/editor/helpers/editor-formly.mjs +4 -4
- package/esm2022/tableview/editor/helpers/field-create.mjs +21 -0
- package/esm2022/tableview/index.mjs +3 -2
- package/esm2022/tableview/provide.mjs +44 -1
- package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +1 -1
- package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +3 -1
- package/fesm2022/mediusinc-mng-commons-core.mjs +715 -792
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-filter.mjs +10 -113
- package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form-api.mjs +144 -203
- package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-model-class.mjs +97 -0
- package/fesm2022/mediusinc-mng-commons-model-class.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-model.mjs +35 -144
- package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-api-class.mjs +204 -0
- package/fesm2022/mediusinc-mng-commons-table-api-class.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-table-api.mjs +55 -319
- package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table.mjs +45 -38
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api-class.mjs +367 -0
- package/fesm2022/mediusinc-mng-commons-tableview-api-class.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +850 -1483
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +421 -220
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/filter/descriptors/filter-lookup.descriptor.d.ts +1 -26
- package/filter/descriptors/filter.descriptor.d.ts +5 -12
- package/form/api/data-providers/lookup-data-provider.factory.d.ts +17 -20
- package/form/api/data-providers/lookup.data-provider.d.ts +3 -3
- package/form/api/descriptors/action-button.descriptor.d.ts +11 -13
- package/form/api/descriptors/button-style.builder.d.ts +30 -44
- package/form/api/index.d.ts +1 -0
- package/form/api/models/button.model.d.ts +19 -0
- package/i18n/sl.json +56 -6
- package/model/class/README.md +8 -0
- package/model/class/data-providers/base-from-class-data-provider.factory.d.ts +3 -0
- package/model/class/descriptors/model-class.descriptor.d.ts +12 -0
- package/model/class/descriptors/type-class.descriptor.d.ts +3 -0
- package/model/{helpers → class/helpers}/model.d.ts +1 -2
- package/model/class/index.d.ts +4 -0
- package/model/data-providers/base-from-type-data-provider.factory.d.ts +13 -6
- package/model/descriptors/model.descriptor.d.ts +12 -27
- package/model/descriptors/type.descriptor.d.ts +0 -5
- package/model/helpers/i18n.d.ts +8 -3
- package/model/index.d.ts +0 -1
- package/package.json +25 -7
- package/table/api/class/README.md +10 -0
- package/table/api/{helpers/class-attribute-converter.d.ts → class/class-table-attribute-converter.d.ts} +2 -9
- package/table/api/{models → class}/class-table-attribute.model.d.ts +1 -1
- package/table/api/class/class-table-data-provider.factory.d.ts +4 -0
- package/table/api/{helpers/table-descriptor-helpers.d.ts → class/class-table-descriptor-helpers.d.ts} +2 -4
- package/table/api/class/class-table-descriptor.factory.d.ts +11 -0
- package/table/api/class/index.d.ts +5 -0
- package/table/api/data-providers/table-data-provider.factory.d.ts +17 -20
- package/table/api/data-providers/table.data-provider.d.ts +4 -12
- package/table/api/descriptors/column.descriptor.d.ts +5 -2
- package/table/api/descriptors/table-descriptor.factory.d.ts +3 -39
- package/table/api/descriptors/table.descriptor.d.ts +3 -3
- package/table/api/helpers/column-converter.d.ts +7 -0
- package/table/api/helpers/table-data-provider-descriptor-convert.d.ts +3 -3
- package/table/api/index.d.ts +1 -3
- package/table/api/models/table-columns.model.d.ts +2 -2
- package/table/components/column-value/column-value.component.d.ts +2 -0
- package/table/components/filter/filter-active-tag/filter-active-tag.component.d.ts +1 -1
- package/table/components/filter/filter-form/filter-form.component.d.ts +1 -1
- package/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.d.ts +1 -1
- package/table/components/table/table.component.d.ts +0 -10
- package/table/helpers/notification.d.ts +10 -1
- package/tableview/action/components/action/action.component.d.ts +10 -13
- package/tableview/action/components/editor/action-editor.component.d.ts +1 -1
- package/tableview/action/components/editor/injector-context/action-editor-injector-context.component.d.ts +6 -5
- package/tableview/action/components/localization/data-language-dropdown.component.d.ts +3 -3
- package/tableview/action/components/table/action-table.component.d.ts +3 -3
- package/tableview/action/helpers/action-execution.d.ts +1 -1
- package/tableview/action/helpers/i18n.d.ts +36 -11
- package/tableview/action/helpers/notification.d.ts +37 -3
- package/tableview/action/models/execution/action-context.model.d.ts +3 -3
- package/tableview/action/models/execution/action-instance.model.d.ts +5 -5
- package/tableview/action/services/action-executor.service.d.ts +7 -7
- package/tableview/action/services/data-provider-executor.service.d.ts +16 -16
- package/tableview/action/services/view-container.service.d.ts +1 -1
- package/tableview/api/action/descriptors/action-descriptor.factory.d.ts +20 -31
- package/tableview/api/action/descriptors/action-editor-descriptor.factory.d.ts +18 -25
- package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +39 -47
- package/tableview/api/action/descriptors/action-link-descriptor.factory.d.ts +21 -13
- package/tableview/api/action/descriptors/action-link.descriptor.d.ts +3 -3
- package/tableview/api/action/descriptors/action.descriptor.d.ts +49 -60
- package/tableview/api/action/descriptors/editor-action-descriptor.factory.d.ts +21 -0
- package/tableview/api/action/descriptors/editor-action-editor-descriptor.factory.d.ts +21 -0
- package/tableview/api/action/descriptors/table-action-descriptor.factory.d.ts +36 -0
- package/tableview/api/action/descriptors/table-action-editor-descriptor.factory.d.ts +40 -0
- package/tableview/api/action/helpers/data-provider-executors.d.ts +13 -8
- package/tableview/api/action/models/action-confirmation.model.d.ts +14 -0
- package/tableview/api/action/models/action-descriptor.types.d.ts +6 -2
- package/tableview/api/action/models/action-error.model.d.ts +1 -1
- package/tableview/api/action/models/execution/action-context-validation.model.d.ts +2 -2
- package/tableview/api/action/models/execution/action-context.model.d.ts +2 -2
- package/tableview/api/action/models/execution/action-instance.model.d.ts +1 -1
- package/tableview/api/action/models/tableview-action-default-categories.model.d.ts +5 -5
- package/tableview/api/action/services/data-provider-executor.service.d.ts +26 -25
- package/tableview/api/class/README.md +13 -0
- package/tableview/api/{editor/helpers/class-attribute-converter.d.ts → class/editor/class-editor-attribute-converter.d.ts} +2 -2
- package/tableview/api/{editor/models/class-tableview-attribute.model.d.ts → class/editor/class-editor-attribute.model.d.ts} +1 -1
- package/tableview/api/class/editor/class-editor-data-provider.factory.d.ts +4 -0
- package/tableview/api/{editor/helpers/editor-descriptor-helpers.d.ts → class/editor/class-editor-descriptor-helpers.d.ts} +2 -5
- package/tableview/api/class/editor/class-editor-descriptor.factory.d.ts +11 -0
- package/tableview/api/class/index.d.ts +10 -0
- package/tableview/api/{tableview/helpers/class-attribute-converter.d.ts → class/tableview/class-tableview-attribute-converter.d.ts} +1 -1
- package/tableview/api/{tableview/models → class/tableview}/class-tableview-attribute.model.d.ts +2 -2
- package/tableview/api/class/tableview/class-tableview-data-provider.factory.d.ts +4 -0
- package/tableview/api/{tableview/helpers/tableview-descriptor-helpers.d.ts → class/tableview/class-tableview-descriptor-helpers.d.ts} +1 -2
- package/tableview/api/class/tableview/class-tableview-descriptor.factory.d.ts +12 -0
- package/tableview/api/editor/data-providers/editor-data-provider.factory.d.ts +17 -16
- package/tableview/api/editor/data-providers/editor.data-provider.d.ts +64 -29
- package/tableview/api/editor/descriptors/editor-descriptor.factory.d.ts +5 -38
- package/tableview/api/editor/descriptors/editor.descriptor.d.ts +48 -112
- package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +5 -5
- package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +8 -1
- package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +2 -3
- package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +3 -11
- package/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.d.ts +25 -0
- package/tableview/api/editor/models/editor-fields.model.d.ts +25 -21
- package/tableview/api/editor/models/form-editor.event.d.ts +0 -4
- package/tableview/api/index.d.ts +8 -7
- package/tableview/api/tableview/data-providers/tableview-data-provider.factory.d.ts +20 -25
- package/tableview/api/tableview/data-providers/tableview.data-provider.d.ts +22 -22
- package/tableview/api/tableview/descriptors/tableview-descriptor.factory.d.ts +20 -50
- package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +69 -163
- package/tableview/api/tableview/helpers/tableview-create.d.ts +18 -5
- package/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.d.ts +2 -2
- package/tableview/api/tableview/helpers/tableview-default-actions.d.ts +73 -20
- package/tableview/api/tableview/helpers/tableview-input-builder.d.ts +87 -9
- package/tableview/api/tableview/models/tableview-descriptor-fields-manage-helper.type.d.ts +9 -0
- package/tableview/api/tableview/models/tableview-descriptor-helper.type.d.ts +2 -0
- package/tableview/api/tableview/models/tableview-input.model.d.ts +1 -1
- package/tableview/api/tableview/models/tableview-route.model.d.ts +1 -1
- package/tableview/editor/helpers/field-create.d.ts +9 -0
- package/tableview/index.d.ts +2 -1
- package/tableview/provide.d.ts +7 -0
- package/tableview/tableview/components/route/tableview-route.component.d.ts +1 -1
- package/tableview/tableview/components/tableview/tableview.component.d.ts +6 -6
- package/version-info.json +6 -6
- package/core/components/pages/error/error.page.component.d.ts +0 -11
- package/core/components/pages/not-found/not-found.page.component.d.ts +0 -11
- package/core/data-providers/base-data-provider.factory.d.ts +0 -13
- package/esm2022/core/components/pages/error/error.page.component.mjs +0 -24
- package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +0 -24
- package/esm2022/core/data-providers/base-data-provider.factory.mjs +0 -28
- package/esm2022/model/helpers/model.mjs +0 -71
- package/esm2022/table/api/helpers/class-attribute-converter.mjs +0 -104
- package/esm2022/table/api/helpers/table-descriptor-helpers.mjs +0 -98
- package/esm2022/table/api/models/class-table-attribute.model.mjs +0 -2
- package/esm2022/tableview/api/action/descriptors/action-confirmation.descriptor.mjs +0 -88
- package/esm2022/tableview/api/editor/helpers/class-attribute-converter.mjs +0 -85
- package/esm2022/tableview/api/editor/helpers/editor-descriptor-helpers.mjs +0 -95
- package/esm2022/tableview/api/editor/models/class-tableview-attribute.model.mjs +0 -2
- package/esm2022/tableview/api/tableview/helpers/class-attribute-converter.mjs +0 -34
- package/esm2022/tableview/api/tableview/helpers/tableview-descriptor-helpers.mjs +0 -110
- package/esm2022/tableview/api/tableview/models/class-tableview-attribute.model.mjs +0 -2
- package/tableview/api/action/descriptors/action-confirmation.descriptor.d.ts +0 -37
package/esm2022/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TableviewDataProviderInst } from '../data-providers/tableview.data-provider';
|
|
2
|
-
export function
|
|
2
|
+
export function tableviewDataProviderFromDescriptor(descriptor, serviceType) {
|
|
3
3
|
return typeof serviceType !== 'undefined'
|
|
4
|
-
? new TableviewDataProviderInst(
|
|
5
|
-
: new TableviewDataProviderInst(undefined
|
|
4
|
+
? new TableviewDataProviderInst(serviceType)
|
|
5
|
+
: new TableviewDataProviderInst(undefined);
|
|
6
6
|
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRhdGEtcHJvdmlkZXItZGVzY3JpcHRvci1jb252ZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvdGFibGV2aWV3L2hlbHBlcnMvdGFibGV2aWV3LWRhdGEtcHJvdmlkZXItZGVzY3JpcHRvci1jb252ZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBd0NwRixNQUFNLFVBQVUsbUNBQW1DLENBU2pELFVBQTBHLEVBQUUsV0FBMEI7SUFDcEksT0FBTyxPQUFPLFdBQVcsS0FBSyxXQUFXO1FBQ3JDLENBQUMsQ0FBQyxJQUFJLHlCQUF5QixDQUFrRyxXQUF3QyxDQUFDO1FBQzFLLENBQUMsQ0FBQyxJQUFJLHlCQUF5QixDQUFvRixTQUFTLENBQUMsQ0FBQztBQUN0SSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge1RhYmxldmlld0RhdGFQcm92aWRlckluc3R9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGF0YSBwcm92aWRlciBmb3IgZnJvbSBkZXNjcmlwdG9yLiBETyBOT1QgdXNlIGlmIHRoZSBtb2RlbCBpcyBjbGFzcywgYmVjYXVzZSB0aGUgdHlwZSAoZnJvbSBtb2RlbCBkZXNjcmlwdG9yKSB3aWxsIG5vdCBiZSBzZXQgaW4gZGF0YSBwcm92aWRlci5cbiAqXG4gKiBAcGFyYW0ge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycz59IGRlc2NyaXB0b3IgLSBUaGUgdGFibGUgZGVzY3JpcHRvci5cbiAqXG4gKiBAcmV0dXJuIHtUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCB1bmRlZmluZWQsIFNvcnRzLCBGaWx0ZXJzLCB1bmRlZmluZWQsIHVuZGVmaW5lZD59IC0gVGhlIGRhdGEgcHJvdmlkZXIgZm9yIHRoZSB0YWJsZSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEYXRhUHJvdmlkZXJGcm9tRGVzY3JpcHRvcjxcbiAgICBNb2RlbCxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQ3JlYXRlTW9kZWwgPSBNb2RlbCxcbiAgICBVcGRhdGVNb2RlbCA9IE1vZGVsXG4+KFxuICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgYW55LCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWwsIGFueT5cbik6IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgU29ydHMsIEZpbHRlcnMsIHVuZGVmaW5lZCwgVGFibGVNb2RlbCwgQ3JlYXRlTW9kZWwsIFVwZGF0ZU1vZGVsPjtcbi8qKlxuICogQ3JlYXRlcyBhIGRhdGEgcHJvdmlkZXIgZm9yIGZyb20gZGVzY3JpcHRvci4gRE8gTk9UIHVzZSBpZiB0aGUgbW9kZWwgaXMgY2xhc3MsIGJlY2F1c2UgdGhlIHR5cGUgKGZyb20gbW9kZWwgZGVzY3JpcHRvcikgd2lsbCBub3QgYmUgc2V0IGluIGRhdGEgcHJvdmlkZXIuXG4gKlxuICogQHBhcmFtIHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+fSBkZXNjcmlwdG9yIC0gVGhlIHRhYmxlIGRlc2NyaXB0b3IuXG4gKiBAcGFyYW0ge1NlcnZpY2VDbGFzc1R5cGU8U2VydmljZT59IHNlcnZpY2VDbGFzcyAtIFRoZSBzZXJ2aWNlIGNsYXNzIHR5cGUuXG4gKlxuICogQHJldHVybiB7VGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIHVuZGVmaW5lZCwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj59IC0gVGhlIGRhdGEgcHJvdmlkZXIgZm9yIHRoZSB0YWJsZSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEYXRhUHJvdmlkZXJGcm9tRGVzY3JpcHRvcjxcbiAgICBNb2RlbCxcbiAgICBTZXJ2aWNlID0gYW55LFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGtleW9mIE1vZGVsLFxuICAgIFRhYmxlTW9kZWwgPSBNb2RlbCxcbiAgICBDcmVhdGVNb2RlbCA9IE1vZGVsLFxuICAgIFVwZGF0ZU1vZGVsID0gTW9kZWxcbj4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzLCBhbnksIFRhYmxlTW9kZWwsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbCwgYW55PixcbiAgICBzZXJ2aWNlQ2xhc3M6IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT5cbik6IFRhYmxldmlld0RhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzLCBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+LCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0RhdGFQcm92aWRlckZyb21EZXNjcmlwdG9yPFxuICAgIE1vZGVsLFxuICAgIFNlcnZpY2UgPSBhbnksXG4gICAgU29ydHMgPSBrZXlvZiBNb2RlbCxcbiAgICBGaWx0ZXJzIGV4dGVuZHMga2V5b2YgYW55ID0ga2V5b2YgTW9kZWwsXG4gICAgU2VydmljZUNsYXNzID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPixcbiAgICBUYWJsZU1vZGVsID0gTW9kZWwsXG4gICAgQ3JlYXRlTW9kZWwgPSBNb2RlbCxcbiAgICBVcGRhdGVNb2RlbCA9IE1vZGVsXG4+KGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTb3J0cywgRmlsdGVycywgYW55LCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWwsIGFueT4sIHNlcnZpY2VUeXBlPzogU2VydmljZUNsYXNzKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBzZXJ2aWNlVHlwZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyBuZXcgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMsIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4sIFRhYmxlTW9kZWwsIENyZWF0ZU1vZGVsLCBVcGRhdGVNb2RlbD4oc2VydmljZVR5cGUgYXMgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPilcbiAgICAgICAgOiBuZXcgVGFibGV2aWV3RGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCBTb3J0cywgRmlsdGVycywgdW5kZWZpbmVkLCBUYWJsZU1vZGVsLCBDcmVhdGVNb2RlbCwgVXBkYXRlTW9kZWw+KHVuZGVmaW5lZCk7XG59XG4iXX0=
|
|
@@ -4,13 +4,11 @@ import { TranslateService } from '@ngx-translate/core';
|
|
|
4
4
|
import { of, tap } from 'rxjs';
|
|
5
5
|
import { map } from 'rxjs/operators';
|
|
6
6
|
import { CommonsInternalError, StyleLevelEnum, StyleSizeEnum, copyDataListParams } from '@mediusinc/mng-commons/core';
|
|
7
|
-
import { ActionButtonDescriptor, ButtonStyleRoundedEnum } from '@mediusinc/mng-commons/form/api';
|
|
8
7
|
import { actionGetProviderCfgObj } from '../../action/descriptors/action-descriptor.factory';
|
|
9
8
|
import { actionEditorGetProviderCfgObj } from '../../action/descriptors/action-editor-descriptor.factory';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { ActionDeleteDescriptorInst, ActionDescriptorInst } from '../../action/descriptors/action.descriptor';
|
|
9
|
+
import { ActionEditorDescriptorInst, actionEditorCancel } from '../../action/descriptors/action-editor.descriptor';
|
|
10
|
+
import { actionLink } from '../../action/descriptors/action-link-descriptor.factory';
|
|
11
|
+
import { ActionDescriptorInst } from '../../action/descriptors/action.descriptor';
|
|
14
12
|
import { ActionPositionEnum } from '../../action/models/action.type';
|
|
15
13
|
import { TableviewActionDefaultCategories } from '../../action/models/tableview-action-default-categories.model';
|
|
16
14
|
import { DataProviderExecutor } from '../../action/services/data-provider-executor.service';
|
|
@@ -43,44 +41,42 @@ const tableviewDefaultActions = [
|
|
|
43
41
|
TableviewDefaultActionsEnum.ExportCsv,
|
|
44
42
|
TableviewDefaultActionsEnum.LocalizationLanguageSelect
|
|
45
43
|
];
|
|
46
|
-
export function
|
|
44
|
+
export function tableviewGetDefaultActions() {
|
|
47
45
|
return [...tableviewDefaultActions];
|
|
48
46
|
}
|
|
49
|
-
export function
|
|
50
|
-
return (defaultActions ??
|
|
51
|
-
.map(t =>
|
|
47
|
+
export function tableviewCreateDefaultActions(tableview, defaultActions, defaultActionsOverrides, injector) {
|
|
48
|
+
return (defaultActions ?? tableviewGetDefaultActions())
|
|
49
|
+
.map(t => tableviewCreateDefaultAction(t, tableview, defaultActions, defaultActionsOverrides, injector))
|
|
52
50
|
.filter(e => e != null);
|
|
53
51
|
}
|
|
54
|
-
export function
|
|
52
|
+
export function tableviewCreateDefaultAction(type, tableview, defaultActions, defaultActionsOverrides, injector) {
|
|
55
53
|
if (defaultActionsOverrides != null && defaultActionsOverrides[type] !== undefined) {
|
|
56
54
|
return defaultActionsOverrides[type];
|
|
57
55
|
}
|
|
58
56
|
switch (type) {
|
|
59
57
|
// table row actions
|
|
60
58
|
case TableviewDefaultActionsEnum.Details:
|
|
61
|
-
return
|
|
59
|
+
return tableviewActionDetailsOnTable(tableview.model, tableview.detailsEditor, { injector });
|
|
62
60
|
case TableviewDefaultActionsEnum.Edit:
|
|
63
|
-
return
|
|
61
|
+
return tableviewActionEditOnTable(tableview.model, tableview.editEditor, { table: tableview.table, injector });
|
|
64
62
|
case TableviewDefaultActionsEnum.Delete:
|
|
65
|
-
return
|
|
63
|
+
return tableviewActionDeleteOnTable(tableview.model, { table: tableview.table, injector });
|
|
66
64
|
// table toolbar actions
|
|
67
65
|
case TableviewDefaultActionsEnum.Add:
|
|
68
|
-
return
|
|
66
|
+
return tableviewActionAddOnTable(tableview.model, tableview.addEditor, { injector });
|
|
69
67
|
case TableviewDefaultActionsEnum.LocalizationLanguageSelect:
|
|
70
|
-
return
|
|
68
|
+
return tableviewActionLocalizationLangSelectOnTable(tableview);
|
|
71
69
|
case TableviewDefaultActionsEnum.Refresh:
|
|
72
|
-
return
|
|
70
|
+
return tableviewActionRefreshOnTable(tableview.model);
|
|
73
71
|
case TableviewDefaultActionsEnum.Export:
|
|
74
72
|
return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson) || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv)
|
|
75
|
-
?
|
|
73
|
+
? tableviewActionExportOnTable(tableview, { injector: injector, defaultActions: defaultActions })
|
|
76
74
|
: null;
|
|
77
75
|
//details actions
|
|
78
76
|
case TableviewDefaultActionsEnum.EditOnDetails:
|
|
79
|
-
return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Edit)
|
|
80
|
-
? tableviewEditOnDetailsAction(tableview.model, tableviewEditAction(tableview.editEditor, injector), injector)
|
|
81
|
-
: null;
|
|
77
|
+
return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Edit) ? tableviewActionEditOnDetails(tableview.model, { injector }) : null;
|
|
82
78
|
case TableviewDefaultActionsEnum.DeleteOnDetails:
|
|
83
|
-
return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Delete) ?
|
|
79
|
+
return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Delete) ? tableviewActionDeleteOnDetails(tableview.model, { injector }) : null;
|
|
84
80
|
// subactions
|
|
85
81
|
case TableviewDefaultActionsEnum.ExportJson:
|
|
86
82
|
case TableviewDefaultActionsEnum.ExportCsv:
|
|
@@ -95,81 +91,118 @@ function getInjector(injector) {
|
|
|
95
91
|
function getRouteData(injector) {
|
|
96
92
|
return getInjector(injector)?.get(ActivatedRoute)?.snapshot.data;
|
|
97
93
|
}
|
|
98
|
-
export
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
})
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const routeData = getRouteData(injector);
|
|
116
|
-
return !routeData?.tableviewActions || routeData.tableviewActions.hasAdd
|
|
117
|
-
? new ActionEditorAddDescriptorInst(descriptor, {
|
|
118
|
-
...actionEditorGetProviderCfgObj(serviceProvider)
|
|
119
|
-
})
|
|
120
|
-
: null;
|
|
94
|
+
export const tableviewActionEditorDetailsActionName = 'details';
|
|
95
|
+
export const tableviewActionEditorDetailsRoute = ':itemId';
|
|
96
|
+
export function tableviewActionDetailsOnTable(model, descriptor, opts) {
|
|
97
|
+
const routeData = getRouteData(opts?.injector);
|
|
98
|
+
if (!routeData?.tableviewActions || routeData.tableviewActions.hasDetails) {
|
|
99
|
+
const action = new ActionEditorDescriptorInst(descriptor, tableviewActionEditorDetailsActionName, {
|
|
100
|
+
...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts?.serviceProvider) : {}),
|
|
101
|
+
isTableviewMainEditor: true,
|
|
102
|
+
model: model
|
|
103
|
+
});
|
|
104
|
+
action.withPosition(opts?.position ?? ActionPositionEnum.RowClick);
|
|
105
|
+
action.withRouteTrigger(tableviewActionEditorDetailsRoute);
|
|
106
|
+
action.withEditorActions([actionEditorCancel(action)]);
|
|
107
|
+
action.withTableviewCategory(TableviewActionDefaultCategories.DETAILS);
|
|
108
|
+
return action;
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
121
111
|
}
|
|
122
|
-
export
|
|
123
|
-
|
|
124
|
-
|
|
112
|
+
export const tableviewActionEditorAddActionName = 'add';
|
|
113
|
+
export const tableviewActionEditorAddRoute = 'add';
|
|
114
|
+
export function tableviewActionAddOnTable(model, descriptor, opts) {
|
|
115
|
+
const routeData = getRouteData(opts?.injector);
|
|
116
|
+
if (!routeData?.tableviewActions || routeData.tableviewActions.hasAdd) {
|
|
117
|
+
const action = new ActionEditorDescriptorInst(descriptor, tableviewActionEditorAddActionName, {
|
|
118
|
+
...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {}),
|
|
119
|
+
isTableviewMainEditor: true,
|
|
120
|
+
model: model
|
|
121
|
+
});
|
|
122
|
+
action
|
|
123
|
+
.withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft)
|
|
124
|
+
.withRouteTrigger(tableviewActionEditorAddRoute)
|
|
125
|
+
.withButtonOpts({
|
|
126
|
+
icon: 'pi pi-plus'
|
|
127
|
+
});
|
|
128
|
+
action.withTableviewCategory(TableviewActionDefaultCategories.ADD);
|
|
129
|
+
action.withUnsavedChangesConfirmation();
|
|
130
|
+
return action;
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
125
133
|
}
|
|
126
|
-
export
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
134
|
+
export const tableviewActionEditorEditActionName = 'edit';
|
|
135
|
+
export const tableviewActionEditorEditRoute = ':itemId/edit';
|
|
136
|
+
export function tableviewActionEditOnTable(model, descriptor, opts) {
|
|
137
|
+
const routeData = getRouteData(opts?.injector);
|
|
138
|
+
if (!routeData?.tableviewActions || routeData.tableviewActions.hasEdit) {
|
|
139
|
+
const action = new ActionEditorDescriptorInst(descriptor, tableviewActionEditorEditActionName, {
|
|
140
|
+
...(opts?.serviceProvider ? actionEditorGetProviderCfgObj(opts.serviceProvider) : {}),
|
|
141
|
+
isTableviewMainEditor: true,
|
|
142
|
+
model: model
|
|
143
|
+
});
|
|
144
|
+
action
|
|
145
|
+
.withPosition(opts?.position ?? ActionPositionEnum.RowInline)
|
|
146
|
+
.withButtonOpts({
|
|
147
|
+
label: null,
|
|
148
|
+
icon: 'pi pi-pencil',
|
|
149
|
+
style: {
|
|
150
|
+
size: StyleSizeEnum.Small
|
|
151
|
+
}
|
|
131
152
|
})
|
|
132
|
-
|
|
153
|
+
.withRouteTrigger(tableviewActionEditorEditRoute)
|
|
154
|
+
.withTableviewCategory(TableviewActionDefaultCategories.EDIT)
|
|
155
|
+
.withUnsavedChangesConfirmation();
|
|
156
|
+
return action;
|
|
157
|
+
}
|
|
158
|
+
return null;
|
|
133
159
|
}
|
|
134
|
-
export function
|
|
135
|
-
const routeData = getRouteData(injector);
|
|
160
|
+
export function tableviewActionEditOnDetails(model, opts) {
|
|
161
|
+
const routeData = getRouteData(opts?.injector);
|
|
136
162
|
if (routeData?.tableviewActions && !routeData.tableviewActions.hasEdit) {
|
|
137
163
|
return null;
|
|
138
164
|
}
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
: new ActionLinkDescriptorInst(ActionEditorEditDescriptorInst.ACTION_NAME, {
|
|
142
|
-
model: descriptor
|
|
143
|
-
});
|
|
144
|
-
action
|
|
165
|
+
const linkAction = actionLink(tableviewActionEditorEditActionName, { model: model });
|
|
166
|
+
linkAction
|
|
145
167
|
.withTableviewCategory(TableviewActionDefaultCategories.EDIT)
|
|
146
168
|
.withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])
|
|
147
|
-
.withPosition(ActionPositionEnum.FooterLeft)
|
|
169
|
+
.withPosition(opts?.position ?? ActionPositionEnum.FooterLeft)
|
|
148
170
|
.withRouterLink('./edit')
|
|
149
|
-
.withQueryParams({}, 'merge')
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
return
|
|
157
|
-
}
|
|
158
|
-
export function tableviewDeleteAction(descriptor, injector) {
|
|
159
|
-
const routeData = getRouteData(injector);
|
|
160
|
-
return !routeData?.tableviewActions || routeData.tableviewActions.hasDelete ? new ActionDeleteDescriptorInst(descriptor) : null;
|
|
171
|
+
.withQueryParams({}, 'merge')
|
|
172
|
+
.withButtonOpts({
|
|
173
|
+
icon: 'pi pi-pencil',
|
|
174
|
+
style: {
|
|
175
|
+
level: StyleLevelEnum.Secondary
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
return linkAction;
|
|
161
179
|
}
|
|
162
|
-
export
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
180
|
+
export const tableviewActionDeleteActionName = 'delete';
|
|
181
|
+
export function tableviewActionDeleteOnTable(model, opts) {
|
|
182
|
+
const routeData = getRouteData(opts?.injector);
|
|
183
|
+
if (!routeData?.tableviewActions || routeData.tableviewActions.hasDelete) {
|
|
184
|
+
const action = new ActionDescriptorInst(tableviewActionDeleteActionName, {
|
|
185
|
+
...(opts?.serviceProvider ? actionGetProviderCfgObj(opts.serviceProvider) : {}),
|
|
186
|
+
model: model
|
|
167
187
|
})
|
|
168
|
-
|
|
188
|
+
.withButtonOpts({
|
|
189
|
+
label: null,
|
|
190
|
+
icon: 'pi pi-trash',
|
|
191
|
+
style: {
|
|
192
|
+
size: StyleSizeEnum.Small,
|
|
193
|
+
level: StyleLevelEnum.Danger
|
|
194
|
+
}
|
|
195
|
+
})
|
|
196
|
+
.withPosition(opts?.position ?? ActionPositionEnum.RowInline)
|
|
197
|
+
.withRunConfirmation()
|
|
198
|
+
.withTableviewCategory(TableviewActionDefaultCategories.DELETE);
|
|
199
|
+
return action;
|
|
200
|
+
}
|
|
201
|
+
return null;
|
|
169
202
|
}
|
|
170
|
-
export function
|
|
171
|
-
const action =
|
|
172
|
-
const dataProviderExecutor = getInjector(injector)?.get(DataProviderExecutor);
|
|
203
|
+
export function tableviewActionDeleteOnDetails(model, opts) {
|
|
204
|
+
const action = tableviewActionDeleteOnTable(model, opts);
|
|
205
|
+
const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);
|
|
173
206
|
if (action) {
|
|
174
207
|
action
|
|
175
208
|
.withTableviewCategory(TableviewActionDefaultCategories.DELETE)
|
|
@@ -180,29 +213,36 @@ export function tableviewDeleteOnDetailsAction(model, injector) {
|
|
|
180
213
|
ctx.viewContainer?.reloadTable({});
|
|
181
214
|
ctx.viewContainer?.closeEditor();
|
|
182
215
|
}))
|
|
183
|
-
: null)
|
|
184
|
-
|
|
185
|
-
|
|
216
|
+
: null)
|
|
217
|
+
.withButtonOpts({
|
|
218
|
+
...action.button,
|
|
219
|
+
label: undefined,
|
|
220
|
+
style: {
|
|
221
|
+
...action.button?.style,
|
|
222
|
+
size: StyleSizeEnum.Normal
|
|
223
|
+
}
|
|
224
|
+
});
|
|
186
225
|
return action;
|
|
187
226
|
}
|
|
188
227
|
return null;
|
|
189
228
|
}
|
|
190
|
-
export function
|
|
229
|
+
export function tableviewActionExportOnTable(descriptor, opts) {
|
|
191
230
|
const exportAction = new ActionDescriptorInst('export', {
|
|
192
231
|
model: descriptor.model
|
|
193
232
|
})
|
|
194
|
-
.
|
|
233
|
+
.withButton(undefined, 'pi pi-download')
|
|
195
234
|
.withSubactionsAsMenu();
|
|
196
235
|
const subactions = [];
|
|
197
|
-
if (defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson))
|
|
198
|
-
subactions.push(
|
|
199
|
-
if (defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv))
|
|
200
|
-
subactions.push(
|
|
236
|
+
if (opts?.defaultActions == null || opts?.defaultActions.includes(TableviewDefaultActionsEnum.ExportJson))
|
|
237
|
+
subactions.push(tableviewActionExportJsonOnTable(descriptor, opts));
|
|
238
|
+
if (opts?.defaultActions == null || opts?.defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv))
|
|
239
|
+
subactions.push(tableviewActionExportCsvOnTable(descriptor, opts));
|
|
201
240
|
exportAction.withSubactions(...subactions);
|
|
241
|
+
exportAction.withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);
|
|
202
242
|
return exportAction;
|
|
203
243
|
}
|
|
204
|
-
export function
|
|
205
|
-
const dataProviderExecutor = getInjector(injector)?.get(DataProviderExecutor);
|
|
244
|
+
export function tableviewActionExportJsonOnTable(descriptor, opts) {
|
|
245
|
+
const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);
|
|
206
246
|
return new ActionDescriptorInst('exportJson', {
|
|
207
247
|
model: descriptor.model
|
|
208
248
|
})
|
|
@@ -220,11 +260,12 @@ export function tableviewExportJsonAction(descriptor, injector) {
|
|
|
220
260
|
}))
|
|
221
261
|
: ctx.parameters.item;
|
|
222
262
|
})
|
|
223
|
-
.
|
|
224
|
-
.
|
|
263
|
+
.withNotifications({ runOnSuccess: false })
|
|
264
|
+
.withButton(undefined, 'pi pi-code')
|
|
265
|
+
.withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);
|
|
225
266
|
}
|
|
226
|
-
export function
|
|
227
|
-
const dataProviderExecutor = getInjector(injector)?.get(DataProviderExecutor);
|
|
267
|
+
export function tableviewActionExportCsvOnTable(descriptor, opts) {
|
|
268
|
+
const dataProviderExecutor = getInjector(opts?.injector)?.get(DataProviderExecutor);
|
|
228
269
|
return new ActionDescriptorInst('exportCsv', {
|
|
229
270
|
model: descriptor.model
|
|
230
271
|
})
|
|
@@ -247,30 +288,37 @@ export function tableviewExportCsvAction(descriptor, injector) {
|
|
|
247
288
|
}))
|
|
248
289
|
: ctx.parameters.item;
|
|
249
290
|
})
|
|
250
|
-
.
|
|
251
|
-
.
|
|
291
|
+
.withNotifications({ runOnSuccess: false })
|
|
292
|
+
.withButton(undefined, 'pi pi-file')
|
|
293
|
+
.withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight);
|
|
252
294
|
}
|
|
253
|
-
export function
|
|
295
|
+
export function tableviewActionRefreshOnTable(descriptor, opts) {
|
|
254
296
|
const action = new ActionDescriptorInst('refresh', {
|
|
255
297
|
model: descriptor
|
|
256
298
|
})
|
|
257
299
|
.withPosition(ActionPositionEnum.ToolbarRight)
|
|
258
300
|
.withTableviewCategory(TableviewActionDefaultCategories.READ)
|
|
259
|
-
.
|
|
301
|
+
.withNotifications({ runOnSuccess: false })
|
|
260
302
|
.withRunFunction(ctx => {
|
|
261
303
|
ctx.viewContainer?.reloadTable({});
|
|
262
304
|
return of(null);
|
|
305
|
+
})
|
|
306
|
+
.withPosition(opts?.position ?? ActionPositionEnum.ToolbarRight)
|
|
307
|
+
.withButtonOpts({
|
|
308
|
+
icon: 'pi pi-refresh',
|
|
309
|
+
style: {
|
|
310
|
+
level: StyleLevelEnum.Secondary
|
|
311
|
+
}
|
|
263
312
|
});
|
|
264
|
-
action.button.withIcon('pi pi-refresh').styleClass.withActionLevel(StyleLevelEnum.Secondary);
|
|
265
313
|
return action;
|
|
266
314
|
}
|
|
267
|
-
export function
|
|
315
|
+
export function tableviewActionLocalizationLangSelectOnTable(descriptor, opts) {
|
|
268
316
|
return descriptor.isLocalized()
|
|
269
317
|
? new ActionDescriptorInst('translator', {
|
|
270
318
|
model: descriptor.model
|
|
271
319
|
})
|
|
272
|
-
.withPosition(ActionPositionEnum.ToolbarLeft)
|
|
320
|
+
.withPosition(opts?.position ?? ActionPositionEnum.ToolbarLeft)
|
|
273
321
|
.withComponentFromDi(DATA_LANGUAGE_DROPDOWN_COMPONENT_IT)
|
|
274
322
|
: null;
|
|
275
323
|
}
|
|
276
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1kZWZhdWx0LWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BILE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRy9GLE9BQU8sRUFBcUIsdUJBQXVCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUMvRyxPQUFPLEVBQTJCLDZCQUE2QixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDbEksT0FBTyxFQUFDLDZCQUE2QixFQUFFLGlDQUFpQyxFQUFFLDhCQUE4QixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDbkssT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDN0YsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0saURBQWlELENBQUM7QUFDekYsT0FBTyxFQUFDLDBCQUEwQixFQUFFLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDNUcsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlD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LFVBQWtDO0lBQzVFLE1BQU0sTUFBTSxHQUFHLElBQUksb0JBQW9CLENBQW1CLFNBQVMsRUFBRTtRQUNqRSxLQUFLLEVBQUUsVUFBVTtLQUNwQixDQUFDO1NBQ0csWUFBWSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQztTQUM3QyxxQkFBcUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUM7U0FDNUQsMEJBQTBCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUM7U0FDdkQsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ25CLEdBQUcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0YsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sVUFBVSx5Q0FBeUMsQ0FBUSxVQUEwQztJQUN2RyxPQUFPLFVBQVUsQ0FBQyxXQUFXLEVBQUU7UUFDM0IsQ0FBQyxDQUFDLElBQUksb0JBQW9CLENBQW1CLFlBQVksRUFBRTtZQUNyRCxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7U0FDMUIsQ0FBQzthQUNHLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7YUFDNUMsbUJBQW1CLENBQUMsbUNBQW1DLENBQUM7UUFDL0QsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdG9yLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7b2YsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0NvbW1vbnNJbnRlcm5hbEVycm9yLCBTdHlsZUxldmVsRW51bSwgU3R5bGVTaXplRW51bSwgY29weURhdGFMaXN0UGFyYW1zfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtBY3Rpb25CdXR0b25EZXNjcmlwdG9yLCBCdXR0b25TdHlsZVJvdW5kZWRFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtBY3Rpb25Qcm92aWRlclR5cGUsIGFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqfSBmcm9tICcuLi8uLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5pbXBvcnQge0FjdGlvbkVkaXRvclByb3ZpZGVyVHlwZSwgYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZWRpdG9yLWRlc2NyaXB0b3IuZmFjdG9yeSc7XG5pbXBvcnQge0FjdGlvbkVkaXRvckFkZERlc2NyaXB0b3JJbnN0LCBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvckluc3QsIEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge2FjdGlvbkxpbmtGcm9tQWN0aW9ufSBmcm9tICcuLi8uLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWxpbmstZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLWxpbmsuZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvbkRlbGV0ZURlc2NyaXB0b3JJbnN0LCBBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uUG9zaXRpb25FbnVtfSBmcm9tICcuLi8uLi9hY3Rpb24vbW9kZWxzL2FjdGlvbi50eXBlJztcbmltcG9ydCB7VGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXN9IGZyb20gJy4uLy4uL2FjdGlvbi9tb2RlbHMvdGFibGV2aWV3LWFjdGlvbi1kZWZhdWx0LWNhdGVnb3JpZXMubW9kZWwnO1xuaW1wb3J0IHtEYXRhUHJvdmlkZXJFeGVjdXRvcn0gZnJvbSAnLi4vLi4vYWN0aW9uL3NlcnZpY2VzL2RhdGEtcHJvdmlkZXItZXhlY3V0b3Iuc2VydmljZSc7XG5pbXBvcnQge0RBVEFfTEFOR1VBR0VfRFJPUERPV05fQ09NUE9ORU5UX0lUfSBmcm9tICcuLi8uLi9hY3Rpb24vc2VydmljZXMvdG9rZW5zL2RhdGEtbGFuZ3VhZ2UtZHJvcGRvd24udG9rZW4nO1xuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcbmltcG9ydCB7VGFibGV2aWV3Um91dGVEYXRhfSBmcm9tICcuLi9tb2RlbHMvdGFibGV2aWV3LXJvdXRlLm1vZGVsJztcbmltcG9ydCB7Y29udmVydERhdGFUb1N0cmluZ1dpdGhEZWxpbWl0ZXIsIHNhdmVGaWxlQXN9IGZyb20gJy4vZmlsZXMtZXhwb3J0JztcblxuZXhwb3J0IGVudW0gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtIHtcbiAgICBEZXRhaWxzLFxuICAgIEFkZCxcbiAgICBFZGl0LFxuICAgIEVkaXRPbkRldGFpbHMsXG4gICAgRGVsZXRlLFxuICAgIERlbGV0ZU9uRGV0YWlscyxcbiAgICBSZWZyZXNoLFxuICAgIEV4cG9ydCxcbiAgICBFeHBvcnRKc29uLFxuICAgIEV4cG9ydENzdixcbiAgICBMb2NhbGl6YXRpb25MYW5ndWFnZVNlbGVjdFxufVxuXG5jb25zdCB0YWJsZXZpZXdEZWZhdWx0QWN0aW9ucyA9IFtcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGV0YWlscyxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uQWRkLFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FZGl0LFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FZGl0T25EZXRhaWxzLFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGUsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRlbGV0ZU9uRGV0YWlscyxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uUmVmcmVzaCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0LFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uLFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3YsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkxvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0XG5dO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFibGV2aWV3RGVmYXVsdEFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIFsuLi50YWJsZXZpZXdEZWZhdWx0QWN0aW9uc107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUYWJsZXZpZXdBY3Rpb25zKFxuICAgIHRhYmxldmlldzogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55LCBhbnksIGFueT4sXG4gICAgZGVmYXVsdEFjdGlvbnM/OiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXSxcbiAgICBkZWZhdWx0QWN0aW9uc092ZXJyaWRlcz86IFJlY29yZDxudW1iZXIsIEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+LFxuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsXG4pOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+PiB7XG4gICAgcmV0dXJuIChkZWZhdWx0QWN0aW9ucyA/PyBnZXRUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucygpKVxuICAgICAgICAubWFwKHQgPT4gY3JlYXRlVGFibGV2aWV3QWN0aW9uKHQsIHRhYmxldmlldywgZGVmYXVsdEFjdGlvbnMsIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzLCBpbmplY3RvcikpXG4gICAgICAgIC5maWx0ZXIoZSA9PiBlICE9IG51bGwpIGFzIEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFibGV2aWV3QWN0aW9uKFxuICAgIHR5cGU6IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bSxcbiAgICB0YWJsZXZpZXc6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PGFueSwgYW55LCBhbnk+LFxuICAgIGRlZmF1bHRBY3Rpb25zPzogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW10sXG4gICAgZGVmYXVsdEFjdGlvbnNPdmVycmlkZXM/OiBSZWNvcmQ8bnVtYmVyLCBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+PixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiB8IG51bGwge1xuICAgIGlmIChkZWZhdWx0QWN0aW9uc092ZXJyaWRlcyAhPSBudWxsICYmIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzW3R5cGVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzW3R5cGVdO1xuICAgIH1cblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAvLyB0YWJsZSByb3cgYWN0aW9uc1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZXRhaWxzOlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0RldGFpbHNBY3Rpb24odGFibGV2aWV3LmRldGFpbHNFZGl0b3IsIGluamVjdG9yKTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdFZGl0QWN0aW9uKHRhYmxldmlldy5lZGl0RWRpdG9yLCBpbmplY3Rvcik7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRlbGV0ZTpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdEZWxldGVBY3Rpb24odGFibGV2aWV3Lm1vZGVsLCBpbmplY3Rvcik7XG4gICAgICAgIC8vIHRhYmxlIHRvb2xiYXIgYWN0aW9uc1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5BZGQ6XG4gICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3QWRkQWN0aW9uKHRhYmxldmlldy5hZGRFZGl0b3IsIGluamVjdG9yKTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uTG9jYWxpemF0aW9uTGFuZ3VhZ2VTZWxlY3Q6XG4gICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3TG9jYWxpemF0aW9uTGFuZ3VhZ2VTZWxlY3RBY3Rpb24odGFibGV2aWV3KTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uUmVmcmVzaDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdSZWZyZXNoQWN0aW9uKHRhYmxldmlldy5tb2RlbCk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydDpcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uKSB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2KVxuICAgICAgICAgICAgICAgID8gdGFibGV2aWV3RXhwb3J0QWN0aW9uKHRhYmxldmlldywgaW5qZWN0b3IsIGRlZmF1bHRBY3Rpb25zKVxuICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgLy9kZXRhaWxzIGFjdGlvbnNcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdE9uRGV0YWlsczpcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FZGl0KVxuICAgICAgICAgICAgICAgID8gdGFibGV2aWV3RWRpdE9uRGV0YWlsc0FjdGlvbih0YWJsZXZpZXcubW9kZWwsIHRhYmxldmlld0VkaXRBY3Rpb24odGFibGV2aWV3LmVkaXRFZGl0b3IsIGluamVjdG9yKSwgaW5qZWN0b3IpXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGVPbkRldGFpbHM6XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlKSA/IHRhYmxldmlld0RlbGV0ZU9uRGV0YWlsc0FjdGlvbih0YWJsZXZpZXcubW9kZWwsIGluamVjdG9yKSA6IG51bGw7XG4gICAgICAgIC8vIHN1YmFjdGlvbnNcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0SnNvbjpcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2OlxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFRhYmxldmlldyBkZWZhdWx0IGFjdGlvbiBvZiB0eXBlICR7dHlwZX0gbm90IHN1cHBvcnRlZGApO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0SW5qZWN0b3IoaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGwpOiBJbmplY3RvciB8IG51bGwge1xuICAgIHJldHVybiBpbmplY3RvciA9PT0gdW5kZWZpbmVkID8gaW5qZWN0KEluamVjdG9yKSA6IGluamVjdG9yO1xufVxuXG5mdW5jdGlvbiBnZXRSb3V0ZURhdGEoaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGwpIHtcbiAgICByZXR1cm4gZ2V0SW5qZWN0b3IoaW5qZWN0b3IpPy5nZXQoQWN0aXZhdGVkUm91dGUpPy5zbmFwc2hvdC5kYXRhIGFzIFRhYmxldmlld1JvdXRlRGF0YSB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0RldGFpbHNBY3Rpb248TW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShpbmplY3Rvcik7XG4gICAgcmV0dXJuICFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzRGV0YWlscyA/IG5ldyBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KGRlc2NyaXB0b3IpIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0RldGFpbHNBY3Rpb25XaXRoUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+KFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBzZXJ2aWNlUHJvdmlkZXI6IEFjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFjdGlvbkVkaXRvckRldGFpbHNEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZT4gfCBudWxsIHtcbiAgICBjb25zdCByb3V0ZURhdGEgPSBnZXRSb3V0ZURhdGEoaW5qZWN0b3IpO1xuICAgIHJldHVybiAhcm91dGVEYXRhPy50YWJsZXZpZXdBY3Rpb25zIHx8IHJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0RldGFpbHNcbiAgICAgICAgPyBuZXcgQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPihkZXNjcmlwdG9yLCB7XG4gICAgICAgICAgICAgIC4uLmFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqKHNlcnZpY2VQcm92aWRlcilcbiAgICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdBZGRBY3Rpb248TW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKGluamVjdG9yKTtcbiAgICByZXR1cm4gIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNBZGQgPyBuZXcgQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KGRlc2NyaXB0b3IpIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FkZEFjdGlvbldpdGhQcm92aWRlcjxNb2RlbCwgU2VydmljZT4oXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIHNlcnZpY2VQcm92aWRlcjogQWN0aW9uRWRpdG9yUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKGluamVjdG9yKTtcbiAgICByZXR1cm4gIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNBZGRcbiAgICAgICAgPyBuZXcgQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KGRlc2NyaXB0b3IsIHtcbiAgICAgICAgICAgICAgLi4uYWN0aW9uRWRpdG9yR2V0UHJvdmlkZXJDZmdPYmooc2VydmljZVByb3ZpZGVyKVxuICAgICAgICAgIH0pXG4gICAgICAgIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0VkaXRBY3Rpb248TW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShpbmplY3Rvcik7XG4gICAgcmV0dXJuICFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzRWRpdCA/IG5ldyBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KGRlc2NyaXB0b3IpIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0VkaXRBY3Rpb25XaXRoUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+KFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBzZXJ2aWNlUHJvdmlkZXI6IEFjdGlvbkVkaXRvclByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZT4gfCBudWxsIHtcbiAgICBjb25zdCByb3V0ZURhdGEgPSBnZXRSb3V0ZURhdGEoaW5qZWN0b3IpO1xuICAgIHJldHVybiAhcm91dGVEYXRhPy50YWJsZXZpZXdBY3Rpb25zIHx8IHJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0VkaXRcbiAgICAgICAgPyBuZXcgQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPihkZXNjcmlwdG9yLCB7XG4gICAgICAgICAgICAgIC4uLmFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqKHNlcnZpY2VQcm92aWRlcilcbiAgICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdFZGl0T25EZXRhaWxzQWN0aW9uPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIGVkaXREZXNjcmlwdG9yOiBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgbnVsbCxcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShpbmplY3Rvcik7XG4gICAgaWYgKHJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyAmJiAhcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzRWRpdCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpb24gPSBlZGl0RGVzY3JpcHRvclxuICAgICAgICA/IGFjdGlvbkxpbmtGcm9tQWN0aW9uKGVkaXREZXNjcmlwdG9yKVxuICAgICAgICA6IG5ldyBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWw+KEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdC5BQ1RJT05fTkFNRSwge1xuICAgICAgICAgICAgICBtb2RlbDogZGVzY3JpcHRvclxuICAgICAgICAgIH0pO1xuICAgIGFjdGlvblxuICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkVESVQpXG4gICAgICAgIC53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdClcbiAgICAgICAgLndpdGhSb3V0ZXJMaW5rKCcuL2VkaXQnKVxuICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHt9LCAnbWVyZ2UnKTtcbiAgICBhY3Rpb24uYnV0dG9uLnN0eWxlQ2xhc3Mud2l0aEFjdGlvbkxldmVsKFN0eWxlTGV2ZWxFbnVtLlNlY29uZGFyeSk7XG4gICAgYWN0aW9uLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uTm9ybWFsKTtcbiAgICBhY3Rpb24uYnV0dG9uLnN0eWxlQ2xhc3Mud2l0aFJvdW5kZWRCdXR0b24oQnV0dG9uU3R5bGVSb3VuZGVkRW51bS5ERUZBVUxUKTtcbiAgICBhY3Rpb24uYnV0dG9uLndpdGhMYWJlbCgpO1xuICAgIGlmICghZWRpdERlc2NyaXB0b3IpIGFjdGlvbi5idXR0b24ud2l0aEljb24oJ3BpIHBpLXBlbmNpbCcpO1xuXG4gICAgcmV0dXJuIGFjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0RlbGV0ZUFjdGlvbjxNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgZGVzY3JpcHRvcjogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPixcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbFxuKTogQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKGluamVjdG9yKTtcbiAgICByZXR1cm4gIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZWxldGUgPyBuZXcgQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KGRlc2NyaXB0b3IpIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0RlbGV0ZUFjdGlvbldpdGhQcm92aWRlcjxNb2RlbCwgU2VydmljZT4oXG4gICAgZGVzY3JpcHRvcjogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPixcbiAgICBzZXJ2aWNlUHJvdmlkZXI6IEFjdGlvblByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFjdGlvbkRlbGV0ZURlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShpbmplY3Rvcik7XG4gICAgcmV0dXJuICFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzRGVsZXRlXG4gICAgICAgID8gbmV3IEFjdGlvbkRlbGV0ZURlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPihkZXNjcmlwdG9yLCB7XG4gICAgICAgICAgICAgIC4uLmFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqKHNlcnZpY2VQcm92aWRlcilcbiAgICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdEZWxldGVPbkRldGFpbHNBY3Rpb248TW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LCBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPiB8IG51bGwge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRhYmxldmlld0RlbGV0ZUFjdGlvbjxNb2RlbCwgU2VydmljZT4obW9kZWwsIGluamVjdG9yKTtcbiAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjdXRvciA9IGdldEluamVjdG9yKGluamVjdG9yKT8uZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgIGFjdGlvblxuICAgICAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERUxFVEUpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuREVUQUlMU10pXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0KVxuICAgICAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT5cbiAgICAgICAgICAgICAgICBkYXRhUHJvdmlkZXJFeGVjdXRvclxuICAgICAgICAgICAgICAgICAgICA/IGRhdGFQcm92aWRlckV4ZWN1dG9yLnJ1bkRlbGV0ZU9yRmFpbChjdHgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8ucmVsb2FkVGFibGUoe30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnZpZXdDb250YWluZXI/LmNsb3NlRWRpdG9yKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICk7XG4gICAgICAgIGFjdGlvbi5idXR0b24ud2l0aExhYmVsKHVuZGVmaW5lZCk7XG4gICAgICAgIGFjdGlvbi5idXR0b24uc3R5bGVDbGFzcy53aXRoU2l6ZShTdHlsZVNpemVFbnVtLk5vcm1hbCk7XG5cbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0V4cG9ydEFjdGlvbjxNb2RlbD4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsLFxuICAgIGRlZmF1bHRBY3Rpb25zPzogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW11cbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgIGNvbnN0IGV4cG9ydEFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkPignZXhwb3J0Jywge1xuICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgIH0pXG4gICAgICAgIC53aXRoQnV0dG9uRGVzY3JpcHRvcihuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhJY29uKCdwaSBwaS1kb3dubG9hZCcpKVxuICAgICAgICAud2l0aFN1YmFjdGlvbnNBc01lbnUoKTtcblxuICAgIGNvbnN0IHN1YmFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPltdID0gW107XG5cbiAgICBpZiAoZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0SnNvbikpIHN1YmFjdGlvbnMucHVzaCh0YWJsZXZpZXdFeHBvcnRKc29uQWN0aW9uKGRlc2NyaXB0b3IsIGluamVjdG9yKSk7XG4gICAgaWYgKGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydENzdikpIHN1YmFjdGlvbnMucHVzaCh0YWJsZXZpZXdFeHBvcnRDc3ZBY3Rpb24oZGVzY3JpcHRvciwgaW5qZWN0b3IpKTtcblxuICAgIGV4cG9ydEFjdGlvbi53aXRoU3ViYWN0aW9ucyguLi5zdWJhY3Rpb25zKTtcbiAgICByZXR1cm4gZXhwb3J0QWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3RXhwb3J0SnNvbkFjdGlvbjxNb2RlbD4oZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LCBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPiB7XG4gICAgY29uc3QgZGF0YVByb3ZpZGVyRXhlY3V0b3IgPSBnZXRJbmplY3RvcihpbmplY3Rvcik/LmdldChEYXRhUHJvdmlkZXJFeGVjdXRvcik7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkPignZXhwb3J0SnNvbicsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA/IGNvcHlEYXRhTGlzdFBhcmFtcyhjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcykgOiB7fTtcbiAgICAgICAgICAgIHBhcmFtcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgcGFyYW1zLmxpbWl0ID0gNTAwO1xuICAgICAgICAgICAgY3R4LnBhcmFtZXRlcnMuZGF0YUxpc3RQYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlY3V0b3JcbiAgICAgICAgICAgICAgICA/IGRhdGFQcm92aWRlckV4ZWN1dG9yLnJ1bkdldEFsbE9yRmFpbChjdHgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEsIHVuZGVmaW5lZCwgNCldLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOCd9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy5pMThuQmFzZUtleSA/PyAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGVBcyhibG9iLCBgJHt0eXBlTmFtZSA/IHR5cGVOYW1lICsgJ18nIDogJyd9JHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWV9Lmpzb25gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogY3R4LnBhcmFtZXRlcnMuaXRlbTtcbiAgICAgICAgfSlcbiAgICAgICAgLndpdGhCdXR0b25EZXNjcmlwdG9yKG5ldyBBY3Rpb25CdXR0b25EZXNjcmlwdG9yKCkud2l0aEljb24oJ3BpIHBpLWNvZGUnKSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0V4cG9ydENzdkFjdGlvbjxNb2RlbD4oZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LCBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPiB7XG4gICAgY29uc3QgZGF0YVByb3ZpZGVyRXhlY3V0b3IgPSBnZXRJbmplY3RvcihpbmplY3Rvcik/LmdldChEYXRhUHJvdmlkZXJFeGVjdXRvcik7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkPignZXhwb3J0Q3N2Jywge1xuICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgIH0pXG4gICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zID8gY29weURhdGFMaXN0UGFyYW1zKGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zKSA6IHt9O1xuICAgICAgICAgICAgcGFyYW1zLm9mZnNldCA9IDA7XG4gICAgICAgICAgICBwYXJhbXMubGltaXQgPSA1MDA7XG4gICAgICAgICAgICBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjdXRvclxuICAgICAgICAgICAgICAgID8gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuR2V0QWxsT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2NvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyKHJlcy5kYXRhLCAnLCcsIGRlc2NyaXB0b3IsIGN0eC5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkpXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IGN0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LmkxOG5CYXNlS2V5ID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZUFzKGJsb2IsIGAke3R5cGVOYW1lID8gdHlwZU5hbWUgKyAnXycgOiAnJ30ke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZX0uY3N2YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IGN0eC5wYXJhbWV0ZXJzLml0ZW07XG4gICAgICAgIH0pXG4gICAgICAgIC53aXRoQnV0dG9uRGVzY3JpcHRvcihuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhJY29uKCdwaSBwaS1maWxlJykpXG4gICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdSZWZyZXNoQWN0aW9uPE1vZGVsPihkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+KTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3QgYWN0aW9uID0gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQ+KCdyZWZyZXNoJywge1xuICAgICAgICBtb2RlbDogZGVzY3JpcHRvclxuICAgIH0pXG4gICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodClcbiAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5SRUFEKVxuICAgICAgICAud2l0aFJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3ModW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKVxuICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8ucmVsb2FkVGFibGUoe30pO1xuICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KTtcbiAgICBhY3Rpb24uYnV0dG9uLndpdGhJY29uKCdwaSBwaS1yZWZyZXNoJykuc3R5bGVDbGFzcy53aXRoQWN0aW9uTGV2ZWwoU3R5bGVMZXZlbEVudW0uU2Vjb25kYXJ5KTtcbiAgICByZXR1cm4gYWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3TG9jYWxpemF0aW9uTGFuZ3VhZ2VTZWxlY3RBY3Rpb248TW9kZWw+KGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsPik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgIHJldHVybiBkZXNjcmlwdG9yLmlzTG9jYWxpemVkKClcbiAgICAgICAgPyBuZXcgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZD4oJ3RyYW5zbGF0b3InLCB7XG4gICAgICAgICAgICAgIG1vZGVsOiBkZXNjcmlwdG9yLm1vZGVsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQpXG4gICAgICAgICAgICAgIC53aXRoQ29tcG9uZW50RnJvbURpKERBVEFfTEFOR1VBR0VfRFJPUERPV05fQ09NUE9ORU5UX0lUKVxuICAgICAgICA6IG51bGw7XG59XG4iXX0=
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL3RhYmxldmlldy9oZWxwZXJzL3RhYmxldmlldy1kZWZhdWx0LWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLGNBQWMsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUl0SSxPQUFPLEVBQXFCLHVCQUF1QixFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDL0csT0FBTyxFQUEyQiw2QkFBNkIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xJLE9BQU8sRUFBQywwQkFBMEIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ2pILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUVuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUMvRyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUMxRixPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFB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O2FBQzlELG1CQUFtQixDQUFDLG1DQUFtQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RvciwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge29mLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtDb21tb25zSW50ZXJuYWxFcnJvciwgU2VydmljZUNsYXNzVHlwZSwgU3R5bGVMZXZlbEVudW0sIFN0eWxlU2l6ZUVudW0sIGNvcHlEYXRhTGlzdFBhcmFtc30gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcbmltcG9ydCB7VGFibGVEZXNjcmlwdG9ySW5zdH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5pbXBvcnQge0FjdGlvblByb3ZpZGVyVHlwZSwgYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uRWRpdG9yUHJvdmlkZXJUeXBlLCBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09ian0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3ItZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3QsIGFjdGlvbkVkaXRvckNhbmNlbH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge2FjdGlvbkxpbmt9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay1kZXNjcmlwdG9yLmZhY3RvcnknO1xuaW1wb3J0IHtBY3Rpb25MaW5rRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24uZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvblBvc2l0aW9uRW51bX0gZnJvbSAnLi4vLi4vYWN0aW9uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzfSBmcm9tICcuLi8uLi9hY3Rpb24vbW9kZWxzL3RhYmxldmlldy1hY3Rpb24tZGVmYXVsdC1jYXRlZ29yaWVzLm1vZGVsJztcbmltcG9ydCB7RGF0YVByb3ZpZGVyRXhlY3V0b3J9IGZyb20gJy4uLy4uL2FjdGlvbi9zZXJ2aWNlcy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVH0gZnJvbSAnLi4vLi4vYWN0aW9uL3NlcnZpY2VzL3Rva2Vucy9kYXRhLWxhbmd1YWdlLWRyb3Bkb3duLnRva2VuJztcbmltcG9ydCB7SUVkaXRvckRhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vZWRpdG9yL2RhdGEtcHJvdmlkZXJzL2VkaXRvci5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7RWRpdG9yRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2VkaXRvci9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5pbXBvcnQge1RhYmxldmlld1JvdXRlRGF0YX0gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy1yb3V0ZS5tb2RlbCc7XG5pbXBvcnQge2NvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyLCBzYXZlRmlsZUFzfSBmcm9tICcuL2ZpbGVzLWV4cG9ydCc7XG5cbmV4cG9ydCBlbnVtIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bSB7XG4gICAgRGV0YWlscyxcbiAgICBBZGQsXG4gICAgRWRpdCxcbiAgICBFZGl0T25EZXRhaWxzLFxuICAgIERlbGV0ZSxcbiAgICBEZWxldGVPbkRldGFpbHMsXG4gICAgUmVmcmVzaCxcbiAgICBFeHBvcnQsXG4gICAgRXhwb3J0SnNvbixcbiAgICBFeHBvcnRDc3YsXG4gICAgTG9jYWxpemF0aW9uTGFuZ3VhZ2VTZWxlY3Rcbn1cblxuY29uc3QgdGFibGV2aWV3RGVmYXVsdEFjdGlvbnMgPSBbXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRldGFpbHMsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdE9uRGV0YWlscyxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlLFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGVPbkRldGFpbHMsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLlJlZnJlc2gsXG4gICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydCxcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0SnNvbixcbiAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2LFxuICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5Mb2NhbGl6YXRpb25MYW5ndWFnZVNlbGVjdFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0dldERlZmF1bHRBY3Rpb25zKCkge1xuICAgIHJldHVybiBbLi4udGFibGV2aWV3RGVmYXVsdEFjdGlvbnNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3Q3JlYXRlRGVmYXVsdEFjdGlvbnMoXG4gICAgdGFibGV2aWV3OiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgYW55PixcbiAgICBkZWZhdWx0QWN0aW9ucz86IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdLFxuICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+IHtcbiAgICByZXR1cm4gKGRlZmF1bHRBY3Rpb25zID8/IHRhYmxldmlld0dldERlZmF1bHRBY3Rpb25zKCkpXG4gICAgICAgIC5tYXAodCA9PiB0YWJsZXZpZXdDcmVhdGVEZWZhdWx0QWN0aW9uKHQsIHRhYmxldmlldywgZGVmYXVsdEFjdGlvbnMsIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzLCBpbmplY3RvcikpXG4gICAgICAgIC5maWx0ZXIoZSA9PiBlICE9IG51bGwpIGFzIEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3Q3JlYXRlRGVmYXVsdEFjdGlvbihcbiAgICB0eXBlOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0sXG4gICAgdGFibGV2aWV3OiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgYW55PixcbiAgICBkZWZhdWx0QWN0aW9ucz86IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdLFxuICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj4sXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGxcbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4gfCBudWxsIHtcbiAgICBpZiAoZGVmYXVsdEFjdGlvbnNPdmVycmlkZXMgIT0gbnVsbCAmJiBkZWZhdWx0QWN0aW9uc092ZXJyaWRlc1t0eXBlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0QWN0aW9uc092ZXJyaWRlc1t0eXBlXTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgLy8gdGFibGUgcm93IGFjdGlvbnNcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGV0YWlsczpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZSh0YWJsZXZpZXcubW9kZWwsIHRhYmxldmlldy5kZXRhaWxzRWRpdG9yLCB7aW5qZWN0b3J9KTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25FZGl0T25UYWJsZSh0YWJsZXZpZXcubW9kZWwsIHRhYmxldmlldy5lZGl0RWRpdG9yLCB7dGFibGU6IHRhYmxldmlldy50YWJsZSwgaW5qZWN0b3J9KTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlOlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uVGFibGUodGFibGV2aWV3Lm1vZGVsLCB7dGFibGU6IHRhYmxldmlldy50YWJsZSwgaW5qZWN0b3J9KTtcbiAgICAgICAgLy8gdGFibGUgdG9vbGJhciBhY3Rpb25zXG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZDpcbiAgICAgICAgICAgIHJldHVybiB0YWJsZXZpZXdBY3Rpb25BZGRPblRhYmxlKHRhYmxldmlldy5tb2RlbCwgdGFibGV2aWV3LmFkZEVkaXRvciwge2luamVjdG9yfSk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkxvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0OlxuICAgICAgICAgICAgcmV0dXJuIHRhYmxldmlld0FjdGlvbkxvY2FsaXphdGlvbkxhbmdTZWxlY3RPblRhYmxlKHRhYmxldmlldyk7XG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLlJlZnJlc2g6XG4gICAgICAgICAgICByZXR1cm4gdGFibGV2aWV3QWN0aW9uUmVmcmVzaE9uVGFibGUodGFibGV2aWV3Lm1vZGVsKTtcbiAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0OlxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydEpzb24pIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3YpXG4gICAgICAgICAgICAgICAgPyB0YWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlKHRhYmxldmlldywge2luamVjdG9yOiBpbmplY3RvciwgZGVmYXVsdEFjdGlvbnM6IGRlZmF1bHRBY3Rpb25zfSlcbiAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIC8vZGV0YWlscyBhY3Rpb25zXG4gICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXRPbkRldGFpbHM6XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdCkgPyB0YWJsZXZpZXdBY3Rpb25FZGl0T25EZXRhaWxzKHRhYmxldmlldy5tb2RlbCwge2luamVjdG9yfSkgOiBudWxsO1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5EZWxldGVPbkRldGFpbHM6XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlKSA/IHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uRGV0YWlscyh0YWJsZXZpZXcubW9kZWwsIHtpbmplY3Rvcn0pIDogbnVsbDtcbiAgICAgICAgLy8gc3ViYWN0aW9uc1xuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uOlxuICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3Y6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgVGFibGV2aWV3IGRlZmF1bHQgYWN0aW9uIG9mIHR5cGUgJHt0eXBlfSBub3Qgc3VwcG9ydGVkYCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXRJbmplY3RvcihpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCk6IEluamVjdG9yIHwgbnVsbCB7XG4gICAgcmV0dXJuIGluamVjdG9yID09PSB1bmRlZmluZWQgPyBpbmplY3QoSW5qZWN0b3IpIDogaW5qZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGdldFJvdXRlRGF0YShpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbCkge1xuICAgIHJldHVybiBnZXRJbmplY3RvcihpbmplY3Rvcik/LmdldChBY3RpdmF0ZWRSb3V0ZSk/LnNuYXBzaG90LmRhdGEgYXMgVGFibGV2aWV3Um91dGVEYXRhIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc0FjdGlvbk5hbWUgPSAnZGV0YWlscyc7XG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc1JvdXRlID0gJzppdGVtSWQnO1xuXG50eXBlIFRhYmxldmlld0FjdGlvbkRldGFpbHNPblRhYmxlT3B0c1R5cGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+ID0ge1xuICAgIHRhYmxlPzogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsPjtcbiAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsO1xuICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLlJvd0lubGluZSB8IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljaztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZTxNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25EZXRhaWxzT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPlxuKTogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsLCBUYWJsZU1vZGVsLCB1bmRlZmluZWQsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZXRhaWxzKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgTW9kZWwsIFRhYmxlTW9kZWwsIHVuZGVmaW5lZCwgVGFibGVNb2RlbD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yRGV0YWlsc0FjdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09iaihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIpIDoge30pLFxuICAgICAgICAgICAgaXNUYWJsZXZpZXdNYWluRWRpdG9yOiB0cnVlLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsXG4gICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24ud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayk7XG4gICAgICAgIGFjdGlvbi53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckRldGFpbHNSb3V0ZSk7XG4gICAgICAgIGFjdGlvbi53aXRoRWRpdG9yQWN0aW9ucyhbYWN0aW9uRWRpdG9yQ2FuY2VsKGFjdGlvbildKTtcbiAgICAgICAgYWN0aW9uLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JBZGRBY3Rpb25OYW1lID0gJ2FkZCc7XG5leHBvcnQgY29uc3QgdGFibGV2aWV3QWN0aW9uRWRpdG9yQWRkUm91dGUgPSAnYWRkJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRWRpdG9yUHJvdmlkZXJBZGRUeXBlPE1vZGVsLCBBZGRNb2RlbCwgU2VydmljZT4gPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+IHwgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZSwgYW55LCBBZGRNb2RlbCwgYW55PjtcblxudHlwZSBUYWJsZXZpZXdBY3Rpb25BZGRPblRhYmxlT3B0c1R5cGU8TW9kZWwsIEFkZE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlUHJvdmlkZXI/OiBBY3Rpb25FZGl0b3JQcm92aWRlckFkZFR5cGU8TW9kZWwsIEFkZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uQWRkT25UYWJsZTxNb2RlbCwgQWRkTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEFkZE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uQWRkT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBBZGRNb2RlbCwgU2VydmljZT5cbik6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBBZGRNb2RlbCwgdW5kZWZpbmVkLCBNb2RlbCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IHJvdXRlRGF0YSA9IGdldFJvdXRlRGF0YShvcHRzPy5pbmplY3Rvcik7XG4gICAgaWYgKCFyb3V0ZURhdGE/LnRhYmxldmlld0FjdGlvbnMgfHwgcm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzQWRkKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgQWRkTW9kZWwsIHVuZGVmaW5lZCwgTW9kZWwsIHVuZGVmaW5lZD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yQWRkQWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkVkaXRvckdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgICAgIGlzVGFibGV2aWV3TWFpbkVkaXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdClcbiAgICAgICAgICAgIC53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckFkZFJvdXRlKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktcGx1cydcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24ud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkFERCk7XG4gICAgICAgIGFjdGlvbi53aXRoVW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JFZGl0QWN0aW9uTmFtZSA9ICdlZGl0JztcbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25FZGl0b3JFZGl0Um91dGUgPSAnOml0ZW1JZC9lZGl0JztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRWRpdG9yUHJvdmlkZXJFZGl0VHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBTZXJ2aWNlPiA9IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4gfCBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBhbnksIGFueSwgRWRpdE1vZGVsPjtcblxudHlwZSBUYWJsZXZpZXdBY3Rpb25FZGl0T25UYWJsZU9wdHNUeXBlPE1vZGVsLCBFZGl0TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+ID0ge1xuICAgIHRhYmxlPzogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBhbnksIGFueT47XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uRWRpdG9yUHJvdmlkZXJFZGl0VHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayB8IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRWRpdE9uVGFibGU8TW9kZWwsIEVkaXRNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uRWRpdE9uVGFibGVPcHRzVHlwZTxNb2RlbCwgRWRpdE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPlxuKTogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIEVkaXRNb2RlbCwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNFZGl0KSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgRWRpdE1vZGVsLCBUYWJsZU1vZGVsLCBNb2RlbCwgVGFibGVNb2RlbD4oZGVzY3JpcHRvciwgdGFibGV2aWV3QWN0aW9uRWRpdG9yRWRpdEFjdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBhY3Rpb25FZGl0b3JHZXRQcm92aWRlckNmZ09iaihvcHRzLnNlcnZpY2VQcm92aWRlcikgOiB7fSksXG4gICAgICAgICAgICBpc1RhYmxldmlld01haW5FZGl0b3I6IHRydWUsXG4gICAgICAgICAgICBtb2RlbDogbW9kZWxcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGlvblxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktcGVuY2lsJyxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICBzaXplOiBTdHlsZVNpemVFbnVtLlNtYWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aXRoUm91dGVUcmlnZ2VyKHRhYmxldmlld0FjdGlvbkVkaXRvckVkaXRSb3V0ZSlcbiAgICAgICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuRURJVClcbiAgICAgICAgICAgIC53aXRoVW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbnR5cGUgVGFibGV2aWV3QWN0aW9uRWRpdE9uRGV0YWlsc09wdHNUeXBlID0ge1xuICAgIGluamVjdG9yPzogSW5qZWN0b3IgfCBudWxsO1xuICAgIHBvc2l0aW9uPzogQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRWRpdE9uRGV0YWlsczxNb2RlbD4obW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25FZGl0T25EZXRhaWxzT3B0c1R5cGUpOiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAocm91dGVEYXRhPy50YWJsZXZpZXdBY3Rpb25zICYmICFyb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNFZGl0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmtBY3Rpb24gPSBhY3Rpb25MaW5rKHRhYmxldmlld0FjdGlvbkVkaXRvckVkaXRBY3Rpb25OYW1lLCB7bW9kZWw6IG1vZGVsfSk7XG4gICAgbGlua0FjdGlvblxuICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkVESVQpXG4gICAgICAgIC53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdClcbiAgICAgICAgLndpdGhSb3V0ZXJMaW5rKCcuL2VkaXQnKVxuICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHt9LCAnbWVyZ2UnKVxuICAgICAgICAud2l0aEJ1dHRvbk9wdHMoe1xuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLXBlbmNpbCcsXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIGxldmVsOiBTdHlsZUxldmVsRW51bS5TZWNvbmRhcnlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgcmV0dXJuIGxpbmtBY3Rpb247XG59XG5cbmV4cG9ydCBjb25zdCB0YWJsZXZpZXdBY3Rpb25EZWxldGVBY3Rpb25OYW1lID0gJ2RlbGV0ZSc7XG5cbnR5cGUgVGFibGV2aWV3QWN0aW9uRGVsZXRlT25UYWJsZU9wdHNUeXBlPE1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBpbmplY3Rvcj86IEluamVjdG9yIHwgbnVsbDtcbiAgICB0YWJsZT86IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgYW55LCBhbnk+O1xuICAgIHNlcnZpY2VQcm92aWRlcj86IEFjdGlvblByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lIHwgQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvbkRlbGV0ZU9uVGFibGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25EZWxldGVPblRhYmxlT3B0c1R5cGU8TW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+XG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgVGFibGVNb2RlbCwgTW9kZWwsIFRhYmxlTW9kZWw+IHwgbnVsbCB7XG4gICAgY29uc3Qgcm91dGVEYXRhID0gZ2V0Um91dGVEYXRhKG9wdHM/LmluamVjdG9yKTtcbiAgICBpZiAoIXJvdXRlRGF0YT8udGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZWxldGUpIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlLCBUYWJsZU1vZGVsLCBNb2RlbCwgVGFibGVNb2RlbD4odGFibGV2aWV3QWN0aW9uRGVsZXRlQWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uKG9wdHM/LnNlcnZpY2VQcm92aWRlciA/IGFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KSxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbFxuICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICAgICAgICBpY29uOiAncGkgcGktdHJhc2gnLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHNpemU6IFN0eWxlU2l6ZUVudW0uU21hbGwsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBTdHlsZUxldmVsRW51bS5EYW5nZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKVxuICAgICAgICAgICAgLndpdGhSdW5Db25maXJtYXRpb24oKVxuICAgICAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERUxFVEUpO1xuICAgICAgICByZXR1cm4gYWN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cblxudHlwZSBUYWJsZXZpZXdBY3Rpb25EZWxldGVPbkRldGFpbHNPcHRzVHlwZTxNb2RlbCwgU2VydmljZT4gPSB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGw7XG4gICAgc2VydmljZVByb3ZpZGVyPzogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUgfCBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2s7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRGVsZXRlT25EZXRhaWxzPE1vZGVsLCBTZXJ2aWNlID0gdW5kZWZpbmVkPihcbiAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3QWN0aW9uRGVsZXRlT25EZXRhaWxzT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2U+XG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSwgTW9kZWwsIE1vZGVsLCBNb2RlbD4gfCBudWxsIHtcbiAgICBjb25zdCBhY3Rpb24gPSB0YWJsZXZpZXdBY3Rpb25EZWxldGVPblRhYmxlPE1vZGVsLCBNb2RlbCwgU2VydmljZT4obW9kZWwsIG9wdHMpIGFzIHVua25vd24gYXMgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsLCBNb2RlbCwgTW9kZWw+O1xuICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWN1dG9yID0gZ2V0SW5qZWN0b3Iob3B0cz8uaW5qZWN0b3IpPy5nZXQoRGF0YVByb3ZpZGVyRXhlY3V0b3IpO1xuICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFTEVURSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKFtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQpXG4gICAgICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PlxuICAgICAgICAgICAgICAgIGRhdGFQcm92aWRlckV4ZWN1dG9yXG4gICAgICAgICAgICAgICAgICAgID8gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuRGVsZXRlT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC52aWV3Q29udGFpbmVyPy5yZWxvYWRUYWJsZSh7fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8uY2xvc2VFZGl0b3IoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLndpdGhCdXR0b25PcHRzKHtcbiAgICAgICAgICAgICAgICAuLi5hY3Rpb24uYnV0dG9uLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYWN0aW9uLmJ1dHRvbj8uc3R5bGUsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IFN0eWxlU2l6ZUVudW0uTm9ybWFsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxudHlwZSBUYWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlT3B0c1R5cGUgPSB7XG4gICAgaW5qZWN0b3I/OiBJbmplY3RvciB8IG51bGw7XG4gICAgZGVmYXVsdEFjdGlvbnM/OiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXTtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZTxNb2RlbD4oXG4gICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25FeHBvcnRPblRhYmxlT3B0c1R5cGVcbik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IGV4cG9ydEFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD4oJ2V4cG9ydCcsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aEJ1dHRvbih1bmRlZmluZWQsICdwaSBwaS1kb3dubG9hZCcpXG4gICAgICAgIC53aXRoU3ViYWN0aW9uc0FzTWVudSgpO1xuXG4gICAgY29uc3Qgc3ViYWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+W10gPSBbXTtcblxuICAgIGlmIChvcHRzPy5kZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IG9wdHM/LmRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uKSkgc3ViYWN0aW9ucy5wdXNoKHRhYmxldmlld0FjdGlvbkV4cG9ydEpzb25PblRhYmxlKGRlc2NyaXB0b3IsIG9wdHMpKTtcbiAgICBpZiAob3B0cz8uZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBvcHRzPy5kZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2KSkgc3ViYWN0aW9ucy5wdXNoKHRhYmxldmlld0FjdGlvbkV4cG9ydENzdk9uVGFibGUoZGVzY3JpcHRvciwgb3B0cykpO1xuXG4gICAgZXhwb3J0QWN0aW9uLndpdGhTdWJhY3Rpb25zKC4uLnN1YmFjdGlvbnMpO1xuICAgIGV4cG9ydEFjdGlvbi53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCk7XG4gICAgcmV0dXJuIGV4cG9ydEFjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvbkV4cG9ydEpzb25PblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sXG4gICAgb3B0cz86IE9taXQ8VGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZU9wdHNUeXBlLCAnZGVmYXVsdEFjdGlvbnMnPlxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjdXRvciA9IGdldEluamVjdG9yKG9wdHM/LmluamVjdG9yKT8uZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPignZXhwb3J0SnNvbicsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3IubW9kZWxcbiAgICB9KVxuICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA/IGNvcHlEYXRhTGlzdFBhcmFtcyhjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcykgOiB7fTtcbiAgICAgICAgICAgIHBhcmFtcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgcGFyYW1zLmxpbWl0ID0gNTAwO1xuICAgICAgICAgICAgY3R4LnBhcmFtZXRlcnMuZGF0YUxpc3RQYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlY3V0b3JcbiAgICAgICAgICAgICAgICA/IGRhdGFQcm92aWRlckV4ZWN1dG9yLnJ1bkdldEFsbE9yRmFpbChjdHgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEsIHVuZGVmaW5lZCwgNCldLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOCd9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy5pMThuQmFzZUtleSA/PyAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGVBcyhibG9iLCBgJHt0eXBlTmFtZSA/IHR5cGVOYW1lICsgJ18nIDogJyd9JHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWV9Lmpzb25gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogY3R4LnBhcmFtZXRlcnMuaXRlbTtcbiAgICAgICAgfSlcbiAgICAgICAgLndpdGhOb3RpZmljYXRpb25zKHtydW5PblN1Y2Nlc3M6IGZhbHNlfSlcbiAgICAgICAgLndpdGhCdXR0b24odW5kZWZpbmVkLCAncGkgcGktY29kZScpXG4gICAgICAgIC53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdBY3Rpb25FeHBvcnRDc3ZPblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sXG4gICAgb3B0cz86IE9taXQ8VGFibGV2aWV3QWN0aW9uRXhwb3J0T25UYWJsZU9wdHNUeXBlLCAnZGVmYXVsdEFjdGlvbnMnPlxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjdXRvciA9IGdldEluamVjdG9yKG9wdHM/LmluamVjdG9yKT8uZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPignZXhwb3J0Q3N2Jywge1xuICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgIH0pXG4gICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zID8gY29weURhdGFMaXN0UGFyYW1zKGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zKSA6IHt9O1xuICAgICAgICAgICAgcGFyYW1zLm9mZnNldCA9IDA7XG4gICAgICAgICAgICBwYXJhbXMubGltaXQgPSA1MDA7XG4gICAgICAgICAgICBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjdXRvclxuICAgICAgICAgICAgICAgID8gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuR2V0QWxsT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2NvbnZlcnREYXRhVG9TdHJpbmdXaXRoRGVsaW1pdGVyKHJlcy5kYXRhLCAnLCcsIGRlc2NyaXB0b3IsIGN0eC5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkpXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IGN0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LmkxOG5CYXNlS2V5ID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZUFzKGJsb2IsIGAke3R5cGVOYW1lID8gdHlwZU5hbWUgKyAnXycgOiAnJ30ke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZX0uY3N2YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IGN0eC5wYXJhbWV0ZXJzLml0ZW07XG4gICAgICAgIH0pXG4gICAgICAgIC53aXRoTm90aWZpY2F0aW9ucyh7cnVuT25TdWNjZXNzOiBmYWxzZX0pXG4gICAgICAgIC53aXRoQnV0dG9uKHVuZGVmaW5lZCwgJ3BpIHBpLWZpbGUnKVxuICAgICAgICAud2l0aFBvc2l0aW9uKG9wdHM/LnBvc2l0aW9uID8/IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpO1xufVxuXG50eXBlIFRhYmxldmlld0FjdGlvblJlZnJlc2hPblRhYmxlT3B0c1R5cGUgPSB7XG4gICAgcG9zaXRpb24/OiBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQgfCBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxldmlld0FjdGlvblJlZnJlc2hPblRhYmxlPE1vZGVsPihcbiAgICBkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZXZpZXdBY3Rpb25SZWZyZXNoT25UYWJsZU9wdHNUeXBlXG4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB8IG51bGwge1xuICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPigncmVmcmVzaCcsIHtcbiAgICAgICAgbW9kZWw6IGRlc2NyaXB0b3JcbiAgICB9KVxuICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpXG4gICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRClcbiAgICAgICAgLndpdGhOb3RpZmljYXRpb25zKHtydW5PblN1Y2Nlc3M6IGZhbHNlfSlcbiAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgY3R4LnZpZXdDb250YWluZXI/LnJlbG9hZFRhYmxlKHt9KTtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgICAgLndpdGhQb3NpdGlvbihvcHRzPy5wb3NpdGlvbiA/PyBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0KVxuICAgICAgICAud2l0aEJ1dHRvbk9wdHMoe1xuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLXJlZnJlc2gnLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICBsZXZlbDogU3R5bGVMZXZlbEVudW0uU2Vjb25kYXJ5XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIHJldHVybiBhY3Rpb247XG59XG5cbnR5cGUgVGFibGV2aWV3TG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGVBY3Rpb25PcHRzVHlwZSA9IHtcbiAgICBwb3NpdGlvbj86IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCB8IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGV2aWV3QWN0aW9uTG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGU8TW9kZWw+KFxuICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1vZGVsPixcbiAgICBvcHRzPzogVGFibGV2aWV3TG9jYWxpemF0aW9uTGFuZ1NlbGVjdE9uVGFibGVBY3Rpb25PcHRzVHlwZVxuKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD4gfCBudWxsIHtcbiAgICByZXR1cm4gZGVzY3JpcHRvci5pc0xvY2FsaXplZCgpXG4gICAgICAgID8gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+KCd0cmFuc2xhdG9yJywge1xuICAgICAgICAgICAgICBtb2RlbDogZGVzY3JpcHRvci5tb2RlbFxuICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC53aXRoUG9zaXRpb24ob3B0cz8ucG9zaXRpb24gPz8gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0KVxuICAgICAgICAgICAgICAud2l0aENvbXBvbmVudEZyb21EaShEQVRBX0xBTkdVQUdFX0RST1BET1dOX0NPTVBPTkVOVF9JVClcbiAgICAgICAgOiBudWxsO1xufVxuIl19
|