@mediusinc/mng-commons 3.6.0 → 4.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -5
- package/esm2022/index.mjs +6 -3
- package/esm2022/lib/api/models/filter-param.model.mjs +1 -1
- package/esm2022/lib/api/models/index.mjs +1 -3
- package/esm2022/lib/api/models/query-param.model.mjs +1 -1
- package/esm2022/lib/api/models/query-result.model.mjs +12 -1
- package/esm2022/lib/api/services/api.abstract.service.mjs +2 -2
- package/esm2022/lib/api/services/get-all-api.abstract.service.mjs +1 -1
- package/esm2022/lib/api/utils/index.mjs +2 -2
- package/esm2022/lib/api/utils/object-serializer.util.mjs +53 -137
- package/esm2022/lib/components/action/action.component.mjs +17 -16
- package/esm2022/lib/components/action/editor/action-editor.component.mjs +12 -12
- package/esm2022/lib/components/action/localization/data-language-dropdown.component.mjs +7 -7
- package/esm2022/lib/components/action/models/action-component.model.mjs +1 -1
- package/esm2022/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
- package/esm2022/lib/components/action/models/action-execution.model.mjs +5 -5
- package/esm2022/lib/components/action/route/action-route.component.mjs +6 -6
- package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +74 -65
- package/esm2022/lib/components/form/date-range/date-range.component.mjs +6 -7
- package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +39 -39
- package/esm2022/lib/components/form/editor/form-editor.component.mjs +14 -16
- package/esm2022/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +6 -6
- package/esm2022/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +5 -5
- package/esm2022/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.mjs +3 -3
- package/esm2022/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.mjs +3 -3
- package/esm2022/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +5 -5
- package/esm2022/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +5 -6
- package/esm2022/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +10 -13
- package/esm2022/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +3 -3
- package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +13 -13
- package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +26 -15
- package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +14 -14
- package/esm2022/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +5 -6
- package/esm2022/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +5 -6
- package/esm2022/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +39 -18
- package/esm2022/lib/components/layout/breadcrumb.component.mjs +4 -4
- package/esm2022/lib/components/layout/footer.component.mjs +4 -4
- package/esm2022/lib/components/layout/main-layout.component.mjs +8 -8
- package/esm2022/lib/components/layout/menu-item.component.mjs +8 -8
- package/esm2022/lib/components/layout/menu.component.mjs +7 -7
- package/esm2022/lib/components/layout/services/main-layout.component.service.mjs +4 -4
- package/esm2022/lib/components/layout/topbar-user.component.mjs +9 -9
- package/esm2022/lib/components/layout/topbar.component.mjs +8 -8
- package/esm2022/lib/components/layout/version.component.mjs +11 -11
- package/esm2022/lib/components/layoutV2/breadcrumb.component.mjs +6 -6
- package/esm2022/lib/components/layoutV2/footer.component.mjs +3 -3
- package/esm2022/lib/components/layoutV2/main-layout.component.mjs +14 -11
- package/esm2022/lib/components/layoutV2/menu-item.component.mjs +12 -9
- package/esm2022/lib/components/layoutV2/menu.component.mjs +5 -6
- package/esm2022/lib/components/layoutV2/model/layout-state.model.mjs +1 -1
- package/esm2022/lib/components/layoutV2/services/main-layout.component.service.mjs +30 -21
- package/esm2022/lib/components/layoutV2/services/menu.service.mjs +3 -3
- package/esm2022/lib/components/layoutV2/sidebar.component.mjs +18 -9
- package/esm2022/lib/components/layoutV2/topbar-user.component.mjs +6 -6
- package/esm2022/lib/components/layoutV2/topbar.component.mjs +6 -7
- package/esm2022/lib/components/layoutV2/version.component.mjs +11 -11
- package/esm2022/lib/components/pages/error/error.page.component.mjs +4 -4
- package/esm2022/lib/components/pages/not-found/not-found.page.component.mjs +4 -4
- package/esm2022/lib/components/tableview/index.mjs +1 -2
- package/esm2022/lib/components/tableview/models/table.event.mjs +1 -1
- package/esm2022/lib/components/tableview/route/tableview-route.abstract.component.mjs +18 -18
- package/esm2022/lib/components/tableview/route/tableview-route.component.mjs +5 -5
- package/esm2022/lib/components/tableview/table/column-filter-full/column-filter-full.component.mjs +8 -12
- package/esm2022/lib/components/tableview/table/column-value/column-value.component.mjs +9 -32
- package/esm2022/lib/components/tableview/table/table.component.mjs +20 -25
- package/esm2022/lib/components/tableview/tableview.component.mjs +8 -10
- package/esm2022/lib/data-providers/base.data-provider.mjs +43 -12
- package/esm2022/lib/data-providers/editor.data-provider.mjs +82 -14
- package/esm2022/lib/data-providers/lookup.data-provider.mjs +38 -9
- package/esm2022/lib/data-providers/table.data-provider.mjs +41 -14
- package/esm2022/lib/data-providers/tableview-crud.data-provider.mjs +14 -6
- package/esm2022/lib/data-providers/tableview.data-provider.mjs +89 -29
- package/esm2022/lib/descriptors/action/action-confirmation.descriptor.mjs +2 -2
- package/esm2022/lib/descriptors/action/action-editor.descriptor.mjs +262 -0
- package/esm2022/lib/descriptors/action/action-link.descriptor.mjs +90 -0
- package/esm2022/lib/descriptors/action/action.descriptor.mjs +91 -352
- package/esm2022/lib/descriptors/action/index.mjs +3 -1
- package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +215 -102
- package/esm2022/lib/descriptors/editor/field-action.descriptor.mjs +50 -0
- package/esm2022/lib/descriptors/editor/field-base.descriptor.mjs +293 -0
- package/esm2022/lib/descriptors/editor/field-group.descriptor.mjs +97 -0
- package/esm2022/lib/descriptors/editor/field-lookup.descriptor.mjs +211 -0
- package/esm2022/lib/descriptors/editor/field-many.descriptor.mjs +153 -0
- package/esm2022/lib/descriptors/editor/field.descriptor.mjs +81 -852
- package/esm2022/lib/descriptors/editor/index.mjs +6 -1
- package/esm2022/lib/descriptors/editor/internal/editor-fields.model.mjs +2 -0
- package/esm2022/lib/descriptors/editor/internal/editor.model.mjs +2 -0
- package/esm2022/lib/descriptors/filter/filter-lookup.descriptor.mjs +210 -0
- package/esm2022/lib/descriptors/filter/filter.descriptor.mjs +2 -208
- package/esm2022/lib/descriptors/filter/index.mjs +2 -1
- package/esm2022/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +1 -1
- package/esm2022/lib/descriptors/model/index.mjs +2 -0
- package/esm2022/lib/descriptors/model/model.descriptor.mjs +70 -0
- package/esm2022/lib/descriptors/table/column.descriptor.mjs +38 -49
- package/esm2022/lib/descriptors/table/internal/table-columns.model.mjs +2 -0
- package/esm2022/lib/descriptors/table/internal/table.model.mjs +2 -0
- package/esm2022/lib/descriptors/table/table.descriptor.mjs +143 -124
- package/esm2022/lib/descriptors/tableview/internal/tableview.model.mjs +2 -0
- package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +240 -131
- package/esm2022/lib/directives/component.directive.mjs +11 -11
- package/esm2022/lib/directives/dialog-keydown-handler.directive.mjs +3 -3
- package/esm2022/lib/directives/template.directive.mjs +9 -9
- package/esm2022/lib/helpers/coercion.mjs +45 -0
- package/esm2022/lib/models/class.model.mjs +2 -0
- package/esm2022/lib/models/enum.model.mjs +1 -1
- package/esm2022/lib/models/index.mjs +4 -1
- package/esm2022/lib/models/radio.model.mjs +2 -0
- package/esm2022/lib/models/tableview-attr.model.mjs +1 -1
- package/esm2022/lib/models/type-registry.model.mjs +2 -0
- package/esm2022/lib/models/view-container.model.mjs +1 -1
- package/esm2022/lib/pipes/boolean.pipe.mjs +3 -3
- package/esm2022/lib/pipes/class-map.pipe.mjs +3 -3
- package/esm2022/lib/pipes/enum.pipe.mjs +6 -6
- package/esm2022/lib/pipes/enumerate-async.pipe.mjs +5 -5
- package/esm2022/lib/pipes/enumerate.pipe.mjs +5 -5
- package/esm2022/lib/pipes/getter.pipe.mjs +5 -5
- package/esm2022/lib/pipes/i18n-property.pipe.mjs +4 -4
- package/esm2022/lib/pipes/json-path.pipe.mjs +3 -3
- package/esm2022/lib/pipes/locale-default-row-class.pipe.mjs +5 -5
- package/esm2022/lib/pipes/parametrize.pipe.mjs +3 -3
- package/esm2022/lib/pipes/template.pipe.mjs +4 -4
- package/esm2022/lib/provide-commons.mjs +4 -4
- package/esm2022/lib/registry/type.registry.mjs +114 -0
- package/esm2022/lib/router/models/router.model.mjs +1 -1
- package/esm2022/lib/router/tableview-route-builder.mjs +5 -5
- package/esm2022/lib/security/authorization.service.mjs +9 -11
- package/esm2022/lib/services/action-executor.service.mjs +14 -12
- package/esm2022/lib/services/commons-init.service.mjs +3 -3
- package/esm2022/lib/services/commons.service.mjs +6 -5
- package/esm2022/lib/services/mng-localstorage-config.service.mjs +4 -4
- package/esm2022/lib/services/navigation.service.mjs +5 -5
- package/esm2022/lib/services/router.service.mjs +4 -4
- package/esm2022/lib/services/version.service.mjs +5 -5
- package/esm2022/lib/services/view-container.component.service.mjs +5 -5
- package/esm2022/lib/styles/styles.util.mjs +1 -1
- package/esm2022/lib/types/action-descriptor.types.mjs +2 -0
- package/esm2022/lib/types/data-provider.types.mjs +2 -0
- package/esm2022/lib/types/getter.type.mjs +2 -0
- package/esm2022/lib/types/index.mjs +5 -2
- package/esm2022/lib/types/localstorage-config-value.type.mjs +2 -0
- package/esm2022/lib/types/type.decorator.mjs +4 -14
- package/esm2022/lib/types/type.model.mjs +1 -1
- package/esm2022/lib/utils/action-data-provider.util.mjs +14 -8
- package/esm2022/lib/utils/decorator-metadata.util.mjs +61 -0
- package/esm2022/lib/utils/editor-formly.util.mjs +6 -5
- package/esm2022/lib/utils/enum.util.mjs +1 -1
- package/esm2022/lib/utils/export.util.mjs +5 -4
- package/esm2022/lib/utils/i18n.util.mjs +22 -22
- package/esm2022/lib/utils/index.mjs +2 -3
- package/esm2022/lib/utils/model.util.mjs +40 -36
- package/esm2022/lib/utils/notification.util.mjs +1 -1
- package/esm2022/lib/utils/tableview.util.mjs +17 -17
- package/fesm2022/mediusinc-mng-commons.mjs +11491 -11384
- package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
- package/index.d.ts +3 -2
- package/lib/api/models/filter-param.model.d.ts +3 -3
- package/lib/api/models/index.d.ts +0 -2
- package/lib/api/models/query-param.model.d.ts +3 -3
- package/lib/api/models/query-result.model.d.ts +3 -3
- package/lib/api/services/api.abstract.service.d.ts +1 -1
- package/lib/api/utils/index.d.ts +1 -1
- package/lib/api/utils/object-serializer.util.d.ts +3 -19
- package/lib/components/action/action.component.d.ts +5 -5
- package/lib/components/action/editor/action-editor.component.d.ts +7 -7
- package/lib/components/action/localization/data-language-dropdown.component.d.ts +6 -6
- package/lib/components/action/models/action-component.model.d.ts +4 -4
- package/lib/components/action/models/action-confirmation-service.model.d.ts +2 -2
- package/lib/components/action/models/action-execution.model.d.ts +14 -14
- package/lib/components/action/route/action-route.component.d.ts +2 -2
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +15 -18
- package/lib/components/form/dropdown/dropdown.component.d.ts +9 -9
- package/lib/components/form/editor/form-editor.component.d.ts +8 -11
- package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +4 -0
- package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +4 -4
- package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +3 -2
- package/lib/components/layout/topbar-user.component.d.ts +2 -2
- package/lib/components/layout/version.component.d.ts +2 -2
- package/lib/components/layoutV2/model/layout-state.model.d.ts +8 -9
- package/lib/components/layoutV2/services/main-layout.component.service.d.ts +1 -1
- package/lib/components/layoutV2/version.component.d.ts +2 -2
- package/lib/components/tableview/index.d.ts +0 -1
- package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +20 -20
- package/lib/components/tableview/route/tableview-route.component.d.ts +7 -7
- package/lib/components/tableview/table/table.component.d.ts +9 -9
- package/lib/components/tableview/tableview.component.d.ts +8 -8
- package/lib/data-providers/base.data-provider.d.ts +30 -12
- package/lib/data-providers/editor.data-provider.d.ts +86 -23
- package/lib/data-providers/lookup.data-provider.d.ts +24 -11
- package/lib/data-providers/table.data-provider.d.ts +30 -17
- package/lib/data-providers/tableview-crud.data-provider.d.ts +8 -4
- package/lib/data-providers/tableview.data-provider.d.ts +41 -29
- package/lib/descriptors/action/action-confirmation.descriptor.d.ts +3 -3
- package/lib/descriptors/action/action-editor.descriptor.d.ts +115 -0
- package/lib/descriptors/action/action-link.descriptor.d.ts +34 -0
- package/lib/descriptors/action/action.descriptor.d.ts +74 -160
- package/lib/descriptors/action/index.d.ts +2 -0
- package/lib/descriptors/editor/editor.descriptor.d.ts +131 -79
- package/lib/descriptors/editor/field-action.descriptor.d.ts +23 -0
- package/lib/descriptors/editor/field-base.descriptor.d.ts +126 -0
- package/lib/descriptors/editor/field-group.descriptor.d.ts +42 -0
- package/lib/descriptors/editor/field-lookup.descriptor.d.ts +80 -0
- package/lib/descriptors/editor/field-many.descriptor.d.ts +63 -0
- package/lib/descriptors/editor/field.descriptor.d.ts +100 -326
- package/lib/descriptors/editor/index.d.ts +5 -0
- package/lib/descriptors/editor/internal/editor-fields.model.d.ts +32 -0
- package/lib/descriptors/editor/internal/editor.model.d.ts +15 -0
- package/lib/descriptors/filter/filter-lookup.descriptor.d.ts +69 -0
- package/lib/descriptors/filter/filter.descriptor.d.ts +9 -67
- package/lib/descriptors/filter/index.d.ts +1 -0
- package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +11 -16
- package/lib/descriptors/model/model.descriptor.d.ts +22 -0
- package/lib/descriptors/table/column.descriptor.d.ts +45 -33
- package/lib/descriptors/table/internal/table-columns.model.d.ts +11 -0
- package/lib/descriptors/table/internal/table.model.d.ts +9 -0
- package/lib/descriptors/table/table.descriptor.d.ts +82 -71
- package/lib/descriptors/tableview/internal/tableview.model.d.ts +11 -0
- package/lib/descriptors/tableview/tableview.descriptor.d.ts +106 -74
- package/lib/directives/component.directive.d.ts +5 -6
- package/lib/directives/template.directive.d.ts +2 -3
- package/lib/helpers/coercion.d.ts +9 -0
- package/lib/models/class.model.d.ts +6 -0
- package/lib/models/enum.model.d.ts +3 -2
- package/lib/models/index.d.ts +3 -0
- package/lib/models/radio.model.d.ts +6 -0
- package/lib/models/tableview-attr.model.d.ts +2 -2
- package/lib/models/type-registry.model.d.ts +7 -0
- package/lib/models/view-container.model.d.ts +6 -6
- package/lib/pipes/getter.pipe.d.ts +2 -1
- package/lib/pipes/i18n-property.pipe.d.ts +1 -1
- package/lib/pipes/locale-default-row-class.pipe.d.ts +2 -2
- package/lib/registry/type.registry.d.ts +25 -0
- package/lib/router/models/router.model.d.ts +5 -5
- package/lib/router/tableview-route-builder.d.ts +6 -6
- package/lib/security/authorization.service.d.ts +4 -7
- package/lib/services/action-executor.service.d.ts +7 -7
- package/lib/services/mng-localstorage-config.service.d.ts +3 -3
- package/lib/services/view-container.component.service.d.ts +3 -3
- package/lib/styles/styles.util.d.ts +5 -5
- package/lib/types/action-descriptor.types.d.ts +4 -0
- package/lib/types/data-provider.types.d.ts +3 -0
- package/lib/types/getter.type.d.ts +2 -0
- package/lib/types/index.d.ts +4 -1
- package/lib/types/localstorage-config-value.type.d.ts +1 -0
- package/lib/types/type.decorator.d.ts +0 -2
- package/lib/types/type.model.d.ts +12 -2
- package/lib/utils/action-data-provider.util.d.ts +6 -5
- package/lib/utils/{type.util.d.ts → decorator-metadata.util.d.ts} +2 -26
- package/lib/utils/editor-formly.util.d.ts +2 -2
- package/lib/utils/enum.util.d.ts +2 -2
- package/lib/utils/export.util.d.ts +2 -2
- package/lib/utils/i18n.util.d.ts +10 -11
- package/lib/utils/index.d.ts +1 -2
- package/lib/utils/model.util.d.ts +5 -3
- package/lib/utils/notification.util.d.ts +4 -4
- package/lib/utils/tableview.util.d.ts +6 -6
- package/openapi/templates/model.mustache +15 -2
- package/openapi/templates/models.mustache +0 -44
- package/package.json +10 -10
- package/scss/mng-commons-dark-v2.scss +2 -2
- package/scss/mng-commons-light-v2.scss +1 -1
- package/scss/v2/theme/{theme-base/components/data → extensions}/_fullcalendar.scss +14 -15
- package/scss/v2/theme/theme-base/_colors.scss +11 -12
- package/scss/v2/theme/theme-base/_common.scss +8 -5
- package/scss/v2/theme/theme-base/_components.scss +93 -89
- package/scss/v2/theme/theme-base/_mixins.scss +205 -71
- package/scss/v2/theme/theme-base/components/button/_button.scss +80 -68
- package/scss/v2/theme/theme-base/components/button/_speeddial.scss +11 -1
- package/scss/v2/theme/theme-base/components/button/_splitbutton.scss +128 -161
- package/scss/v2/theme/theme-base/components/data/_carousel.scss +1 -1
- package/scss/v2/theme/theme-base/components/data/_datatable.scss +3 -3
- package/scss/v2/theme/theme-base/components/data/_dataview.scss +0 -9
- package/scss/v2/theme/theme-base/components/data/_filter.scss +5 -6
- package/scss/v2/theme/theme-base/components/data/_orderlist.scss +15 -4
- package/scss/v2/theme/theme-base/components/data/_organizationchart.scss +1 -1
- package/scss/v2/theme/theme-base/components/data/_picklist.scss +14 -3
- package/scss/v2/theme/theme-base/components/data/_timeline.scss +3 -6
- package/scss/v2/theme/theme-base/components/data/_tree.scss +7 -6
- package/scss/v2/theme/theme-base/components/data/_treetable.scss +3 -4
- package/scss/v2/theme/theme-base/components/file/_fileupload.scss +6 -0
- package/scss/v2/theme/theme-base/components/input/_autocomplete.scss +43 -24
- package/scss/v2/theme/theme-base/components/input/_calendar.scss +9 -5
- package/scss/v2/theme/theme-base/components/input/_cascadeselect.scss +25 -20
- package/scss/v2/theme/theme-base/components/input/_checkbox.scss +9 -5
- package/scss/v2/theme/theme-base/components/input/_chips.scss +24 -13
- package/scss/v2/theme/theme-base/components/input/_dropdown.scss +29 -13
- package/scss/v2/theme/theme-base/components/input/_editor.scss +7 -7
- package/scss/v2/theme/theme-base/components/input/_inputgroup.scss +1 -2
- package/scss/v2/theme/theme-base/components/input/_inputmask.scss +2 -2
- package/scss/v2/theme/theme-base/components/input/_inputnumber.scss +7 -7
- package/scss/v2/theme/theme-base/components/input/_inputswitch.scss +3 -3
- package/scss/v2/theme/theme-base/components/input/_inputtext.scss +4 -3
- package/scss/v2/theme/theme-base/components/input/_listbox.scss +23 -8
- package/scss/v2/theme/theme-base/components/input/_multiselect.scss +31 -27
- package/scss/v2/theme/theme-base/components/input/_radiobutton.scss +2 -2
- package/scss/v2/theme/theme-base/components/input/_rating.scss +33 -28
- package/scss/v2/theme/theme-base/components/input/_treeselect.scss +6 -6
- package/scss/v2/theme/theme-base/components/menu/_breadcrumb.scss +3 -3
- package/scss/v2/theme/theme-base/components/menu/_contextmenu.scss +8 -30
- package/scss/v2/theme/theme-base/components/menu/_dock.scss +11 -2
- package/scss/v2/theme/theme-base/components/menu/_megamenu.scss +14 -65
- package/scss/v2/theme/theme-base/components/menu/_menu.scss +5 -13
- package/scss/v2/theme/theme-base/components/menu/_menubar.scss +32 -80
- package/scss/v2/theme/theme-base/components/menu/_panelmenu.scss +52 -39
- package/scss/v2/theme/theme-base/components/menu/_slidemenu.scss +15 -20
- package/scss/v2/theme/theme-base/components/menu/_steps.scss +2 -2
- package/scss/v2/theme/theme-base/components/menu/_tabmenu.scss +1 -2
- package/scss/v2/theme/theme-base/components/menu/_tieredmenu.scss +10 -32
- package/scss/v2/theme/theme-base/components/messages/_message.scss +2 -2
- package/scss/v2/theme/theme-base/components/messages/_toast.scss +2 -3
- package/scss/v2/theme/theme-base/components/misc/_chip.scss +7 -3
- package/scss/v2/theme/theme-base/components/misc/_inplace.scss +0 -1
- package/scss/v2/theme/theme-base/components/misc/_terminal.scss +9 -8
- package/scss/v2/theme/theme-base/components/multimedia/_galleria.scss +6 -0
- package/scss/v2/theme/theme-base/components/overlay/_confirmpopup.scss +3 -5
- package/scss/v2/theme/theme-base/components/panel/_accordion.scss +4 -4
- package/scss/v2/theme/theme-base/components/panel/_fieldset.scss +1 -1
- package/scss/v2/theme/theme-base/components/panel/_panel.scss +10 -5
- package/scss/v2/theme/theme-base/components/panel/_tabview.scss +6 -2
- package/scss/v2/theme/theme-dark/_variables.scss +756 -765
- package/scss/v2/theme/theme-dark/blue/theme.scss +1 -0
- package/scss/v2/theme/theme-light/_variables.scss +81 -94
- package/scss/v2/theme/theme-light/blue/theme.scss +1 -0
- package/esm2022/lib/api/models/mappers.mjs +0 -13
- package/esm2022/lib/api/models/serialization.model.mjs +0 -2
- package/esm2022/lib/components/tableview/table/column-filter/column-filter.component.mjs +0 -121
- package/esm2022/lib/descriptors/index.mjs +0 -2
- package/esm2022/lib/descriptors/model.descriptor.mjs +0 -45
- package/esm2022/lib/mng-commons.module.mjs +0 -472
- package/esm2022/lib/types/mng-localstorage-config-value.type.mjs +0 -2
- package/esm2022/lib/utils/coercion.util.mjs +0 -6
- package/esm2022/lib/utils/type.util.mjs +0 -94
- package/lib/api/models/mappers.d.ts +0 -6
- package/lib/api/models/serialization.model.d.ts +0 -9
- package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +0 -37
- package/lib/descriptors/model.descriptor.d.ts +0 -18
- package/lib/mng-commons.module.d.ts +0 -105
- package/lib/types/mng-localstorage-config-value.type.d.ts +0 -1
- package/lib/utils/coercion.util.d.ts +0 -2
- package/openapi/templates/serializer-registration/model.mustache +0 -97
- package/openapi/templates/serializer-registration/models.mustache +0 -6
- /package/lib/descriptors/{index.d.ts → model/index.d.ts} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { of } from 'rxjs';
|
|
2
2
|
import { map, mergeMap } from 'rxjs/operators';
|
|
3
|
+
import { DecoratorMetadataUtil } from './decorator-metadata.util';
|
|
3
4
|
import { ErrorUtil } from './error.util';
|
|
4
|
-
import { TypeUtil } from './type.util';
|
|
5
5
|
export var I18nUtils;
|
|
6
6
|
(function (I18nUtils) {
|
|
7
7
|
class Common {
|
|
@@ -31,12 +31,12 @@ export var I18nUtils;
|
|
|
31
31
|
I18nUtils.Common = Common;
|
|
32
32
|
class Type {
|
|
33
33
|
static getClassNameAsync(translate, classType, singular) {
|
|
34
|
-
const typeName =
|
|
35
|
-
return I18nUtils.Type.getNameAsync(translate, typeName, singular);
|
|
34
|
+
const typeName = DecoratorMetadataUtil.findTypeName(classType);
|
|
35
|
+
return I18nUtils.Type.getNameAsync(translate, typeName ?? '', singular);
|
|
36
36
|
}
|
|
37
37
|
static getClassName(translate, classType, singular) {
|
|
38
|
-
const typeName =
|
|
39
|
-
return I18nUtils.Type.getName(translate, typeName, singular);
|
|
38
|
+
const typeName = DecoratorMetadataUtil.findTypeName(classType);
|
|
39
|
+
return I18nUtils.Type.getName(translate, typeName ?? '', singular);
|
|
40
40
|
}
|
|
41
41
|
static getNameAsync(translate, typeName, singular) {
|
|
42
42
|
const keys = I18nUtils.Type.getNameKeys(typeName, singular);
|
|
@@ -47,44 +47,44 @@ export var I18nUtils;
|
|
|
47
47
|
return I18nUtils.Common.get(translate, undefined, ...keys);
|
|
48
48
|
}
|
|
49
49
|
static getClassTabKey(classType, tab) {
|
|
50
|
-
const typeName =
|
|
51
|
-
return I18nUtils.Type.getTabKey(typeName, tab);
|
|
50
|
+
const typeName = DecoratorMetadataUtil.findTypeName(classType);
|
|
51
|
+
return I18nUtils.Type.getTabKey(typeName ?? '', tab);
|
|
52
52
|
}
|
|
53
53
|
static getTabKey(typeName, tab) {
|
|
54
54
|
return I18nUtils.Type.getPath(typeName, 'tabs', tab);
|
|
55
55
|
}
|
|
56
56
|
static getClassGroupKey(classType, group) {
|
|
57
|
-
const typeName =
|
|
58
|
-
return I18nUtils.Type.getGroupKey(typeName, group);
|
|
57
|
+
const typeName = DecoratorMetadataUtil.findTypeName(classType);
|
|
58
|
+
return I18nUtils.Type.getGroupKey(typeName ?? '', group);
|
|
59
59
|
}
|
|
60
60
|
static getGroupKey(typeName, group) {
|
|
61
61
|
return I18nUtils.Type.getPath(typeName, 'groups', group);
|
|
62
62
|
}
|
|
63
63
|
static getClassPropertyKey(classType, property) {
|
|
64
|
-
const typeName =
|
|
65
|
-
return I18nUtils.Type.getPropertyKey(typeName, property);
|
|
64
|
+
const typeName = DecoratorMetadataUtil.findTypeName(classType);
|
|
65
|
+
return I18nUtils.Type.getPropertyKey(typeName ?? '', property);
|
|
66
66
|
}
|
|
67
67
|
static getPropertyKey(typeName, property) {
|
|
68
68
|
return I18nUtils.Type.getPath(typeName, 'properties', property);
|
|
69
69
|
}
|
|
70
70
|
static getClassPath(classType, ...path) {
|
|
71
|
-
const typeName =
|
|
72
|
-
return I18nUtils.Type.getPath(typeName, ...path);
|
|
71
|
+
const typeName = DecoratorMetadataUtil.findTypeName(classType);
|
|
72
|
+
return I18nUtils.Type.getPath(typeName ?? '', ...path);
|
|
73
73
|
}
|
|
74
74
|
static getPath(typeName, ...path) {
|
|
75
|
-
return `${typeName}
|
|
75
|
+
return `${typeName.length ? `${typeName}.` : ''}${path.join('.')}`;
|
|
76
76
|
}
|
|
77
77
|
static getClassParams(translate, classType, item, params = {}) {
|
|
78
|
-
const typeName =
|
|
79
|
-
return I18nUtils.Type.getParams(translate, typeName, item, params);
|
|
78
|
+
const typeName = DecoratorMetadataUtil.findTypeName(classType);
|
|
79
|
+
return I18nUtils.Type.getParams(translate, typeName ?? undefined, item, params);
|
|
80
80
|
}
|
|
81
81
|
static getParams(translate, typeName, item, params = {}) {
|
|
82
82
|
const i18nTypeName = typeName ? I18nUtils.Type.getName(translate, typeName, true) : null;
|
|
83
83
|
return I18nUtils.Type.populateParams(i18nTypeName ?? undefined, item, params);
|
|
84
84
|
}
|
|
85
85
|
static getClassParamsAsync(translate, classType, item, params = {}) {
|
|
86
|
-
const typeName =
|
|
87
|
-
return I18nUtils.Type.getParamsAsync(translate, typeName, item, params);
|
|
86
|
+
const typeName = DecoratorMetadataUtil.findTypeName(classType);
|
|
87
|
+
return I18nUtils.Type.getParamsAsync(translate, typeName ?? undefined, item, params);
|
|
88
88
|
}
|
|
89
89
|
static getParamsAsync(translate, typeName, item, params = {}) {
|
|
90
90
|
return (typeName ? I18nUtils.Type.getNameAsync(translate, typeName, true) : of(null)).pipe(map(i18nTypeName => I18nUtils.Type.populateParams(i18nTypeName ?? undefined, item, params)));
|
|
@@ -101,7 +101,7 @@ export var I18nUtils;
|
|
|
101
101
|
if (typeof singular !== 'undefined') {
|
|
102
102
|
keys.push(singular ? `${typeName}.nameSingular` : `${typeName}.namePlural`);
|
|
103
103
|
}
|
|
104
|
-
keys.push(`${typeName}
|
|
104
|
+
keys.push(`${typeName.length ? `${typeName}.` : ''}name`);
|
|
105
105
|
return keys;
|
|
106
106
|
}
|
|
107
107
|
}
|
|
@@ -120,10 +120,10 @@ export var I18nUtils;
|
|
|
120
120
|
}
|
|
121
121
|
static getParams(translate, model, item, params = {}) {
|
|
122
122
|
const i18nParams = I18nUtils.Type.getParams(translate, model?.i18nBaseKey, item, params);
|
|
123
|
-
return I18nUtils.Model.populateParams(model?.
|
|
123
|
+
return I18nUtils.Model.populateParams(model?.idProperty, model?.titleProperty, item, i18nParams);
|
|
124
124
|
}
|
|
125
125
|
static getParamsAsync(translate, model, item, params = {}) {
|
|
126
|
-
return I18nUtils.Type.getParamsAsync(translate, model?.i18nBaseKey, item, params).pipe(map(i18nParams => I18nUtils.Model.populateParams(model?.
|
|
126
|
+
return I18nUtils.Type.getParamsAsync(translate, model?.i18nBaseKey, item, params).pipe(map(i18nParams => I18nUtils.Model.populateParams(model?.idProperty, model?.titleProperty, item, i18nParams)));
|
|
127
127
|
}
|
|
128
128
|
static populateParams(idProperty, titleProperty, item, params = {}) {
|
|
129
129
|
const paramsRes = { ...params, itemId: '', itemTitle: '' };
|
|
@@ -271,4 +271,4 @@ export var I18nUtils;
|
|
|
271
271
|
}
|
|
272
272
|
I18nUtils.Error = Error;
|
|
273
273
|
})(I18nUtils || (I18nUtils = {}));
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi91dGlscy9pMThuLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFhLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUMsR0FBRyxFQUFFLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBTzdDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUVyQyxNQUFNLEtBQVcsU0FBUyxDQW1WekI7QUFuVkQsV0FBaUIsU0FBUztJQUN0QixNQUFhLE1BQU07UUFDUixNQUFNLENBQUMsUUFBUSxDQUFDLFNBQTJCLEVBQUUsTUFBWSxFQUFFLEdBQUcsSUFBbUI7WUFDcEYsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRyxDQUFDO1FBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUEyQixFQUFFLE1BQVksRUFBRSxHQUFHLElBQW1CO1lBQy9FLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFTSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQVUsRUFBRSxTQUFjLEVBQUU7WUFDckQsTUFBTSxTQUFTLEdBQUcsRUFBQyxHQUFHLE1BQU0sRUFBQyxDQUFDO1lBQzlCLElBQUksSUFBSSxF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QU0sQ0FBQyxTQUFTLENBQUMsS0FBZ0IsRUFBRSxTQUFjLEVBQUU7WUFDdEQsTUFBTSxTQUFTLEdBQUcsRUFBQyxHQUFHLE1BQU0sRUFBQyxDQUFDO1lBQzlCLFNBQVMsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBRTVCLElBQUksU0FBUyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hELFNBQVMsQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLE1BQU0sQ0FBQztnQkFDMUMsU0FBUyxDQUFDLFlBQVksR0FBRyxTQUFTLEVBQUUsT0FBTyxDQUFDO2dCQUM1QyxTQUFTLENBQUMsc0JBQXNCLEdBQUcsU0FBUyxFQUFFLFVBQVUsQ0FBQzthQUM1RDtZQUVELFNBQVMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7S0FDSjtJQTVCWSxlQUFLLFFBNEJqQixDQUFBO0FBQ0wsQ0FBQyxFQW5WZ0IsU0FBUyxLQUFULFNBQVMsUUFtVnpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIG1lcmdlTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICcuLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3IsIEFjdGlvbkVkaXRvckRlc2NyaXB0b3J9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL2FjdGlvbic7XG5pbXBvcnQge0lNbmdFcnJvcn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7Q2xhc3NUeXBlfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0kxOG5UeXBlfSBmcm9tICcuLi90eXBlcy9pMThuLnR5cGUnO1xuaW1wb3J0IHtFcnJvclV0aWx9IGZyb20gJy4vZXJyb3IudXRpbCc7XG5pbXBvcnQge1R5cGVVdGlsfSBmcm9tICcuL3R5cGUudXRpbCc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgSTE4blV0aWxzIHtcbiAgICBleHBvcnQgY2xhc3MgQ29tbW9uIHtcbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHBhcmFtcz86IGFueSwgLi4ua2V5czogQXJyYXk8c3RyaW5nPik6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5zdHJlYW0oa2V5cywgcGFyYW1zKS5waXBlKG1hcChpMThuID0+IEkxOG5VdGlscy5Db21tb24uc2VsZWN0STE4bihrZXlzLCBpMThuKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXQodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwYXJhbXM/OiBhbnksIC4uLmtleXM6IEFycmF5PHN0cmluZz4pOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgICAgIGNvbnN0IGkxOG4gPSB0cmFuc2xhdGUuaW5zdGFudChrZXlzLCBwYXJhbXMpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5Db21tb24uc2VsZWN0STE4bihrZXlzLCBpMThuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcG9wdWxhdGVQYXJhbXMoaXRlbT86IGFueSwgcGFyYW1zOiBhbnkgPSB7fSkge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zUmVzID0gey4uLnBhcmFtc307XG4gICAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIHBhcmFtc1Jlcy5pdGVtID0gaXRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJhbXNSZXM7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIHNlbGVjdEkxOG4oa2V5czogc3RyaW5nW10sIGkxOG46IGFueSk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgIT09IGkxOG5ba2V5XSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTE4bltrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhwb3J0IGNsYXNzIFR5cGUge1xuICAgICAgICBwdWJsaWMgc3RhdGljIGdldENsYXNzTmFtZUFzeW5jKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgY2xhc3NUeXBlOiBDbGFzc1R5cGU8YW55Piwgc2luZ3VsYXI/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IFR5cGVVdGlsLmZpbmRUeXBlTmFtZShjbGFzc1R5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldE5hbWVBc3luYyh0cmFuc2xhdGUsIHR5cGVOYW1lLCBzaW5ndWxhcik7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldENsYXNzTmFtZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGNsYXNzVHlwZTogQ2xhc3NUeXBlPGFueT4sIHNpbmd1bGFyPzogYm9vbGVhbik6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBUeXBlVXRpbC5maW5kVHlwZU5hbWUoY2xhc3NUeXBlKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuVHlwZS5nZXROYW1lKHRyYW5zbGF0ZSwgdHlwZU5hbWUsIHNpbmd1bGFyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0TmFtZUFzeW5jKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgdHlwZU5hbWU6IHN0cmluZywgc2luZ3VsYXI/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gSTE4blV0aWxzLlR5cGUuZ2V0TmFtZUtleXModHlwZU5hbWUsIHNpbmd1bGFyKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuQ29tbW9uLmdldEFzeW5jKHRyYW5zbGF0ZSwgdW5kZWZpbmVkLCAuLi5rZXlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0TmFtZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHR5cGVOYW1lOiBzdHJpbmcsIHNpbmd1bGFyPzogYm9vbGVhbik6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IEkxOG5VdGlscy5UeXBlLmdldE5hbWVLZXlzKHR5cGVOYW1lLCBzaW5ndWxhcik7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLkNvbW1vbi5nZXQodHJhbnNsYXRlLCB1bmRlZmluZWQsIC4uLmtleXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRDbGFzc1RhYktleShjbGFzc1R5cGU6IENsYXNzVHlwZTxhbnk+LCB0YWI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IFR5cGVVdGlsLmZpbmRUeXBlTmFtZShjbGFzc1R5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldFRhYktleSh0eXBlTmFtZSwgdGFiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0VGFiS2V5KHR5cGVOYW1lOiBzdHJpbmcsIHRhYjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuVHlwZS5nZXRQYXRoKHR5cGVOYW1lLCAndGFicycsIHRhYik7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldENsYXNzR3JvdXBLZXkoY2xhc3NUeXBlOiBDbGFzc1R5cGU8YW55PiwgZ3JvdXA6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IFR5cGVVdGlsLmZpbmRUeXBlTmFtZShjbGFzc1R5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldEdyb3VwS2V5KHR5cGVOYW1lLCBncm91cCk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldEdyb3VwS2V5KHR5cGVOYW1lOiBzdHJpbmcsIGdyb3VwOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldFBhdGgodHlwZU5hbWUsICdncm91cHMnLCBncm91cCk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldENsYXNzUHJvcGVydHlLZXkoY2xhc3NUeXBlOiBDbGFzc1R5cGU8YW55PiwgcHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IFR5cGVVdGlsLmZpbmRUeXBlTmFtZShjbGFzc1R5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldFByb3BlcnR5S2V5KHR5cGVOYW1lLCBwcm9wZXJ0eSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldFByb3BlcnR5S2V5KHR5cGVOYW1lOiBzdHJpbmcsIHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldFBhdGgodHlwZU5hbWUsICdwcm9wZXJ0aWVzJywgcHJvcGVydHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRDbGFzc1BhdGgoY2xhc3NUeXBlOiBDbGFzc1R5cGU8YW55PiwgLi4ucGF0aDogQXJyYXk8c3RyaW5nPik6IHN0cmluZyB7XG4gICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IFR5cGVVdGlsLmZpbmRUeXBlTmFtZShjbGFzc1R5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldFBhdGgodHlwZU5hbWUsIC4uLnBhdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRQYXRoKHR5cGVOYW1lOiBzdHJpbmcsIC4uLnBhdGg6IEFycmF5PHN0cmluZz4pOiBzdHJpbmcge1xuICAgICAgICAgICAgcmV0dXJuIGAke3R5cGVOYW1lfS4ke3BhdGguam9pbignLicpfWA7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldENsYXNzUGFyYW1zKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgY2xhc3NUeXBlOiBDbGFzc1R5cGU8YW55PiwgaXRlbTogYW55LCBwYXJhbXM6IGFueSA9IHt9KTogYW55IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVOYW1lID0gVHlwZVV0aWwuZmluZFR5cGVOYW1lKGNsYXNzVHlwZSk7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLlR5cGUuZ2V0UGFyYW1zKHRyYW5zbGF0ZSwgdHlwZU5hbWUsIGl0ZW0sIHBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldFBhcmFtcyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHR5cGVOYW1lPzogc3RyaW5nLCBpdGVtPzogYW55LCBwYXJhbXM6IGFueSA9IHt9KTogYW55IHtcbiAgICAgICAgICAgIGNvbnN0IGkxOG5UeXBlTmFtZSA9IHR5cGVOYW1lID8gSTE4blV0aWxzLlR5cGUuZ2V0TmFtZSh0cmFuc2xhdGUsIHR5cGVOYW1lLCB0cnVlKSA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLlR5cGUucG9wdWxhdGVQYXJhbXMoaTE4blR5cGVOYW1lID8/IHVuZGVmaW5lZCwgaXRlbSwgcGFyYW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q2xhc3NQYXJhbXNBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGNsYXNzVHlwZTogQ2xhc3NUeXBlPGFueT4sIGl0ZW0/OiBhbnksIHBhcmFtczogYW55ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBUeXBlVXRpbC5maW5kVHlwZU5hbWUoY2xhc3NUeXBlKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuVHlwZS5nZXRQYXJhbXNBc3luYyh0cmFuc2xhdGUsIHR5cGVOYW1lLCBpdGVtLCBwYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRQYXJhbXNBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHR5cGVOYW1lPzogc3RyaW5nLCBpdGVtPzogYW55LCBwYXJhbXM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICAgIHJldHVybiAodHlwZU5hbWUgPyBJMThuVXRpbHMuVHlwZS5nZXROYW1lQXN5bmModHJhbnNsYXRlLCB0eXBlTmFtZSwgdHJ1ZSkgOiBvZihudWxsKSkucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoaTE4blR5cGVOYW1lID0+IEkxOG5VdGlscy5UeXBlLnBvcHVsYXRlUGFyYW1zKGkxOG5UeXBlTmFtZSA/PyB1bmRlZmluZWQsIGl0ZW0sIHBhcmFtcykpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBwb3B1bGF0ZVBhcmFtcyhpMThuVHlwZU5hbWU/OiBzdHJpbmcsIGl0ZW0/OiBhbnksIHBhcmFtczogYW55ID0ge30pOiBhbnkge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zUmVzID0gey4uLnBhcmFtc307XG4gICAgICAgICAgICBpZiAoaTE4blR5cGVOYW1lKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zUmVzLnR5cGVOYW1lID0gaTE4blR5cGVOYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5Db21tb24ucG9wdWxhdGVQYXJhbXMoaXRlbSwgcGFyYW1zUmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaXZhdGUgc3RhdGljIGdldE5hbWVLZXlzKHR5cGVOYW1lOiBzdHJpbmcsIHNpbmd1bGFyPzogYm9vbGVhbik6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IFtdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzaW5ndWxhciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBrZXlzLnB1c2goc2luZ3VsYXIgPyBgJHt0eXBlTmFtZX0ubmFtZVNpbmd1bGFyYCA6IGAke3R5cGVOYW1lfS5uYW1lUGx1cmFsYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrZXlzLnB1c2goYCR7dHlwZU5hbWV9Lm5hbWVgKTtcbiAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhwb3J0IGNsYXNzIE1vZGVsIHtcbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXQoXG4gICAgICAgICAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4sXG4gICAgICAgICAgICBrZXlQYXRoOiBzdHJpbmcsXG4gICAgICAgICAgICBjdXN0b21LZXk/OiBzdHJpbmcsXG4gICAgICAgICAgICBpdGVtPzogYW55LFxuICAgICAgICAgICAgZmFsbGJhY2tLZXk/OiBzdHJpbmcsXG4gICAgICAgICAgICBwYXJhbXM/OiBhbnlcbiAgICAgICAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gSTE4blV0aWxzLk1vZGVsLmdldEtleXNCeVByaW9yaXR5KG1vZGVsLCBrZXlQYXRoLCBjdXN0b21LZXksIGZhbGxiYWNrS2V5KTtcbiAgICAgICAgICAgIGNvbnN0IGkxOG5QYXJhbXMgPSBJMThuVXRpbHMuTW9kZWwuZ2V0UGFyYW1zKHRyYW5zbGF0ZSwgbW9kZWwsIGl0ZW0sIHBhcmFtcyk7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLkNvbW1vbi5nZXQodHJhbnNsYXRlLCBpMThuUGFyYW1zLCAuLi5rZXlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0TmFtZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55Piwgc2luZ3VsYXI/OiBib29sZWFuKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLlR5cGUuZ2V0TmFtZSh0cmFuc2xhdGUsIG1vZGVsLmkxOG5CYXNlS2V5LCBzaW5ndWxhcik7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldE5hbWVBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55Piwgc2luZ3VsYXI/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLlR5cGUuZ2V0TmFtZUFzeW5jKHRyYW5zbGF0ZSwgbW9kZWwuaTE4bkJhc2VLZXksIHNpbmd1bGFyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0UGFyYW1zKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8YW55PiwgaXRlbT86IGFueSwgcGFyYW1zOiBhbnkgPSB7fSk6IGFueSB7XG4gICAgICAgICAgICBjb25zdCBpMThuUGFyYW1zID0gSTE4blV0aWxzLlR5cGUuZ2V0UGFyYW1zKHRyYW5zbGF0ZSwgbW9kZWw/LmkxOG5CYXNlS2V5LCBpdGVtLCBwYXJhbXMpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5Nb2RlbC5wb3B1bGF0ZVBhcmFtcyhtb2RlbD8uaWRQcm9wZXJ0eU5hbWUsIG1vZGVsPy50aXRsZVByb3BlcnR5TmFtZSwgaXRlbSwgaTE4blBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldFBhcmFtc0FzeW5jKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8YW55PiwgaXRlbT86IGFueSwgcGFyYW1zOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLlR5cGUuZ2V0UGFyYW1zQXN5bmModHJhbnNsYXRlLCBtb2RlbD8uaTE4bkJhc2VLZXksIGl0ZW0sIHBhcmFtcykucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoaTE4blBhcmFtcyA9PiBJMThuVXRpbHMuTW9kZWwucG9wdWxhdGVQYXJhbXMobW9kZWw/LmlkUHJvcGVydHlOYW1lLCBtb2RlbD8udGl0bGVQcm9wZXJ0eU5hbWUsIGl0ZW0sIGkxOG5QYXJhbXMpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcG9wdWxhdGVQYXJhbXMoaWRQcm9wZXJ0eT86IHN0cmluZywgdGl0bGVQcm9wZXJ0eT86IHN0cmluZywgaXRlbT86IGFueSwgcGFyYW1zOiBhbnkgPSB7fSk6IGFueSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXNSZXMgPSB7Li4ucGFyYW1zLCBpdGVtSWQ6ICcnLCBpdGVtVGl0bGU6ICcnfTtcbiAgICAgICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlkUHJvcGVydHkgJiYgaXRlbVtpZFByb3BlcnR5XSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXNSZXMuaXRlbUlkID0gaXRlbVtpZFByb3BlcnR5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRpdGxlUHJvcGVydHkgJiYgaXRlbVt0aXRsZVByb3BlcnR5XSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXNSZXMuaXRlbVRpdGxlID0gaXRlbVt0aXRsZVByb3BlcnR5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyYW1zUmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZ2V0S2V5c0J5UHJpb3JpdHkobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxhbnk+LCBrZXlQYXRoOiBzdHJpbmcsIGN1c3RvbUtleT86IHN0cmluZywgZmFsbGJhY2tLZXk/OiBzdHJpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBbXTtcbiAgICAgICAgICAgIGlmIChjdXN0b21LZXkpIHtcbiAgICAgICAgICAgICAgICBrZXlzLnB1c2goY3VzdG9tS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1vZGVsQWN0aW9uS2V5ID0gSTE4blV0aWxzLlR5cGUuZ2V0UGF0aChtb2RlbC5pMThuQmFzZUtleSwgLi4ua2V5UGF0aCk7XG4gICAgICAgICAgICBrZXlzLnB1c2gobW9kZWxBY3Rpb25LZXkpO1xuICAgICAgICAgICAgaWYgKGZhbGxiYWNrS2V5KSB7XG4gICAgICAgICAgICAgICAga2V5cy5wdXNoKGZhbGxiYWNrS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhwb3J0IGNsYXNzIEFjdGlvbiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXR1cm5zIHRyYW5zbGF0aW9uIGZvciBhY3Rpb24gd2l0aCBnaXZlbiBrZXlzIGFuZCBwYXJhbXNcbiAgICAgICAgICogQHBhcmFtIHRyYW5zbGF0ZSBUcmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgICAqIEBwYXJhbSBhY3Rpb24gYWN0aW9uIGRlc2NyaXB0b3JcbiAgICAgICAgICogQHBhcmFtIGFjdGlvblBhdGhLZXlzIGFjdGlvbiBwYXRoIGtleXNcbiAgICAgICAgICogQHBhcmFtIGN1c3RvbUtleSBjdXN0b20ga2V5XG4gICAgICAgICAqIEBwYXJhbSBpdGVtXG4gICAgICAgICAqIEBwYXJhbSBmYWxsYmFja0tleSBmYWxsYmFjayBrZXlcbiAgICAgICAgICogQHBhcmFtIHBhcmFtcyBhZGRpdGlvbmFsIHBhcmFtcyBmb3IgdHJhbnNsYXRpb25cbiAgICAgICAgICogQHBhcmFtIG1pc3NpbmdUcmFuc2xhdGlvblN0cmF0ZWd5IHN0cmF0ZWd5IHdoZW4gbm8gdHJhbnNsYXRpb24gaXMgZm91bmRcbiAgICAgICAgICovXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0KFxuICAgICAgICAgICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPGFueT4sXG4gICAgICAgICAgICBhY3Rpb25QYXRoS2V5czogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPixcbiAgICAgICAgICAgIGN1c3RvbUtleT86IHN0cmluZyxcbiAgICAgICAgICAgIGl0ZW0/OiBhbnksXG4gICAgICAgICAgICBmYWxsYmFja0tleT86IHN0cmluZyxcbiAgICAgICAgICAgIHBhcmFtcz86IGFueSxcbiAgICAgICAgICAgIG1pc3NpbmdUcmFuc2xhdGlvblN0cmF0ZWd5OiBJMThuVHlwZSA9ICdyZXR1cm5GaXJzdEtleSdcbiAgICAgICAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gSTE4blV0aWxzLkFjdGlvbi5nZXRLZXlzQnlQcmlvcml0eShhY3Rpb24sIGFjdGlvblBhdGhLZXlzLCBjdXN0b21LZXksIGZhbGxiYWNrS2V5KTtcbiAgICAgICAgICAgIGNvbnN0IGkxOG5QYXJhbXMgPSBJMThuVXRpbHMuQWN0aW9uLmdldFBhcmFtcyh0cmFuc2xhdGUsIGFjdGlvbiwgaXRlbSwgcGFyYW1zKTtcbiAgICAgICAgICAgIGNvbnN0IGkxOG5WYWx1ZSA9IEkxOG5VdGlscy5Db21tb24uZ2V0KHRyYW5zbGF0ZSwgaTE4blBhcmFtcywgLi4ua2V5cyk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGlvbkRlcGVuZGluZ09uU3RyYXRlZ3kobWlzc2luZ1RyYW5zbGF0aW9uU3RyYXRlZ3ksIHtpMThuVmFsdWUsIGZpcnN0S2V5OiBrZXlzWzBdLCBmYWxsYmFja0tleX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJldHVybnMgYXN5bmMgdHJhbnNsYXRpb24gZm9yIGdpdmVuIGtleXMgd2l0aCBnaXZlbiBwYXJhbXMuXG4gICAgICAgICAqIEBwYXJhbSB0cmFuc2xhdGUgVHJhbnNsYXRlU2VydmljZVxuICAgICAgICAgKiBAcGFyYW0gYWN0aW9uIGFjdGlvbiBkZXNjcmlwdG9yXG4gICAgICAgICAqIEBwYXJhbSBhY3Rpb25QYXRoS2V5cyBhY3Rpb24gcGF0aCBrZXlzXG4gICAgICAgICAqIEBwYXJhbSBjdXN0b21LZXkgY3VzdG9tIGtleVxuICAgICAgICAgKiBAcGFyYW0gaXRlbSBpdGVtXG4gICAgICAgICAqIEBwYXJhbSBmYWxsYmFja0tleSBmYWxsYmFjayBrZXksIHVzZWQgYXMgZmFsbGJhY2sga2V5XG4gICAgICAgICAqIEBwYXJhbSBwYXJhbXMgYWRkaXRpb25hbCBwYXJhbXMgZm9yIHRyYW5zbGF0aW9uXG4gICAgICAgICAqIEBwYXJhbSBtaXNzaW5nVHJhbnNsYXRpb25TdHJhdGVneSBzdHJhdGVneSB3aGVuIG5vIHRyYW5zbGF0aW9uIGlzIGZvdW5kXG4gICAgICAgICAqL1xuICAgICAgICBwdWJsaWMgc3RhdGljIGdldEFzeW5jKFxuICAgICAgICAgICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPGFueT4sXG4gICAgICAgICAgICBhY3Rpb25QYXRoS2V5czogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPixcbiAgICAgICAgICAgIGN1c3RvbUtleT86IHN0cmluZyxcbiAgICAgICAgICAgIGl0ZW0/OiBhbnksXG4gICAgICAgICAgICBmYWxsYmFja0tleT86IHN0cmluZyxcbiAgICAgICAgICAgIHBhcmFtcz86IGFueSxcbiAgICAgICAgICAgIG1pc3NpbmdUcmFuc2xhdGlvblN0cmF0ZWd5OiBJMThuVHlwZSA9ICdyZXR1cm5GaXJzdEtleSdcbiAgICAgICAgKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLkFjdGlvbi5nZXRQYXJhbXNBc3luYyh0cmFuc2xhdGUsIGFjdGlvbiwgaXRlbSwgcGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKGkxOG5QYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gSTE4blV0aWxzLkFjdGlvbi5nZXRLZXlzQnlQcmlvcml0eShhY3Rpb24sIGFjdGlvblBhdGhLZXlzLCBjdXN0b21LZXksIGZhbGxiYWNrS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5Db21tb24uZ2V0QXN5bmModHJhbnNsYXRlLCBpMThuUGFyYW1zLCAuLi5rZXlzKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKGkxOG5WYWx1ZSA9PiB0aGlzLmdldFRyYW5zbGF0aW9uRGVwZW5kaW5nT25TdHJhdGVneShtaXNzaW5nVHJhbnNsYXRpb25TdHJhdGVneSwge2kxOG5WYWx1ZSwgZmlyc3RLZXk6IGtleXNbMF0sIGZhbGxiYWNrS2V5fSkpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0dXJucyB0cmFuc2xhdGlvbiBkZXBlbmRpbmcgb24gbWlzc2luZ1RyYW5zbGF0aW9uU3RyYXRlZ3lcbiAgICAgICAgICogQHBhcmFtIG1pc3NpbmdUcmFuc2xhdGlvblN0cmF0ZWd5IHN0cmF0ZWd5IHdoZW4gbm8gdHJhbnNsYXRpb24gaXMgZm91bmRcbiAgICAgICAgICogQHBhcmFtIHZhbHVlcyBvYmplY3Qgd2l0aCB2YWx1ZXMsIGkxOG5WYWx1ZSBpcyB0cmFuc2xhdGlvbiwgZmlyc3RLZXkgaXMgZmlyc3Qga2V5IGluIGFycmF5IG9mIGtleXMsIGZhbGxiYWNrS2V5IGlzIGZhbGxiYWNrIGtleVxuICAgICAgICAgKi9cbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZ2V0VHJhbnNsYXRpb25EZXBlbmRpbmdPblN0cmF0ZWd5KFxuICAgICAgICAgICAgbWlzc2luZ1RyYW5zbGF0aW9uU3RyYXRlZ3k6IEkxOG5UeXBlLFxuICAgICAgICAgICAge2kxOG5WYWx1ZSwgZmlyc3RLZXksIGZhbGxiYWNrS2V5fToge2kxOG5WYWx1ZTogc3RyaW5nIHwgbnVsbDsgZmlyc3RLZXk/OiBzdHJpbmc7IGZhbGxiYWNrS2V5Pzogc3RyaW5nfVxuICAgICAgICApOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgICAgIGlmIChpMThuVmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTE4blZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG1pc3NpbmdUcmFuc2xhdGlvblN0cmF0ZWd5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JldHVybk51bGwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JldHVybkZhbGxiYWNrS2V5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxsYmFja0tleSA/PyBudWxsO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXR1cm5GaXJzdEtleSc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3RLZXkgPz8gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldFRpdGxlQXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55PiwgaXRlbT86IGFueSk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5BY3Rpb24uZ2V0QXN5bmModHJhbnNsYXRlLCBhY3Rpb24sICd0aXRsZScsIHVuZGVmaW5lZCwgaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldEVkaXRvclRpdGxlQXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBhY3Rpb246IEFjdGlvbkVkaXRvckRlc2NyaXB0b3I8YW55PiwgaXRlbT86IGFueSk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5BY3Rpb24uZ2V0QXN5bmModHJhbnNsYXRlLCBhY3Rpb24sIFsnZWRpdG9yLnRpdGxlJywgJ3RpdGxlJ10sIGFjdGlvbi5lZGl0b3JUaXRsZSA/PyB1bmRlZmluZWQsIGl0ZW0sIHVuZGVmaW5lZCwgYWN0aW9uLmVkaXRvclRpdGxlUGFyYW1zID8/IHVuZGVmaW5lZCk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldFBhcmFtcyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LCBpdGVtPzogYW55LCBwYXJhbXM6IGFueSA9IHt9KTogYW55IHtcbiAgICAgICAgICAgIGNvbnN0IGkxOG5QYXJhbXMgPSBJMThuVXRpbHMuTW9kZWwuZ2V0UGFyYW1zKHRyYW5zbGF0ZSwgYWN0aW9uLm1vZGVsID8/IHVuZGVmaW5lZCwgaXRlbSwgcGFyYW1zKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuQWN0aW9uLnBvcHVsYXRlUGFyYW1zKGkxOG5QYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRQYXJhbXNBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LCBpdGVtPzogYW55LCBwYXJhbXM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuTW9kZWwuZ2V0UGFyYW1zQXN5bmModHJhbnNsYXRlLCBhY3Rpb24ubW9kZWwgPz8gdW5kZWZpbmVkLCBpdGVtLCBwYXJhbXMpLnBpcGUobWFwKGkxOG5QYXJhbXMgPT4gSTE4blV0aWxzLkFjdGlvbi5wb3B1bGF0ZVBhcmFtcyhpMThuUGFyYW1zKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBwb3B1bGF0ZVBhcmFtcyhwYXJhbXM6IGFueSA9IHt9KTogYW55IHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHsuLi5wYXJhbXN9O1xuICAgICAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICAgICAgfVxuXG4gICAgICAgIHByaXZhdGUgc3RhdGljIGdldEtleXNCeVByaW9yaXR5KGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LCBhY3Rpb25QYXRoS2V5czogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPiwgY3VzdG9tS2V5Pzogc3RyaW5nLCBmYWxsYmFja0tleT86IHN0cmluZykge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IFtdO1xuICAgICAgICAgICAgaWYgKGN1c3RvbUtleSkge1xuICAgICAgICAgICAgICAgIGtleXMucHVzaChjdXN0b21LZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFjdGlvblBhdGhLZXlzKSkge1xuICAgICAgICAgICAgICAgIGFjdGlvblBhdGhLZXlzID0gW2FjdGlvblBhdGhLZXlzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGlvblBhdGhLZXlzLmZvckVhY2goayA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9kZWxBY3Rpb25LZXkgPSBgJHthY3Rpb24uaTE4bk1vZGVsQWN0aW9uQmFzZUtleX0uJHtrfWA7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uS2V5ID0gYCR7YWN0aW9uLmFjdGlvbk5hbWV9LiR7a31gO1xuICAgICAgICAgICAgICAgIGtleXMucHVzaChtb2RlbEFjdGlvbktleSwgYWN0aW9uS2V5KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGZhbGxiYWNrS2V5KSB7XG4gICAgICAgICAgICAgICAga2V5cy5wdXNoKGZhbGxiYWNrS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhwb3J0IGNsYXNzIEVycm9yIHtcbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXQodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBlcnJvcjogSU1uZ0Vycm9yLCBwYXJhbXM6IGFueSA9IHt9KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgICAgICBjb25zdCBpMThuUGFyYW1zID0gSTE4blV0aWxzLkVycm9yLmdldFBhcmFtcyhlcnJvciwgcGFyYW1zKTtcbiAgICAgICAgICAgIGlmIChlcnJvci5tZXNzYWdlQ29kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleXMgPSBbYGVycm9ycy4ke2Vycm9yLm1lc3NhZ2VDb2RlfWAsIGBtZXNzYWdlcy4ke2Vycm9yLm1lc3NhZ2VDb2RlfWBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGkxOG4gPSBJMThuVXRpbHMuQ29tbW9uLmdldCh0cmFuc2xhdGUsIGkxOG5QYXJhbXMsIC4uLmtleXMpO1xuICAgICAgICAgICAgICAgIGlmIChpMThuKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpMThuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuQ29tbW9uLmdldCh0cmFuc2xhdGUsIGkxOG5QYXJhbXMsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRQYXJhbXMoZXJyb3I6IElNbmdFcnJvciwgcGFyYW1zOiBhbnkgPSB7fSkge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zUmVzID0gey4uLnBhcmFtc307XG4gICAgICAgICAgICBwYXJhbXNSZXMuZXJyb3JTdGF0dXMgPSAnJztcbiAgICAgICAgICAgIHBhcmFtc1Jlcy5lcnJvck1lc3NhZ2UgPSAnJztcblxuICAgICAgICAgICAgaWYgKEVycm9yVXRpbC5pc0h0dHBFcnJvclJlc3BvbnNlKGVycm9yKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGh0dHBFcnJvciA9IEVycm9yVXRpbC5nZXRIdHRwRXJyb3JSZXNwb25zZShlcnJvcik7XG4gICAgICAgICAgICAgICAgcGFyYW1zUmVzLmVycm9yU3RhdHVzID0gaHR0cEVycm9yPy5zdGF0dXM7XG4gICAgICAgICAgICAgICAgcGFyYW1zUmVzLmVycm9yTWVzc2FnZSA9IGh0dHBFcnJvcj8ubWVzc2FnZTtcbiAgICAgICAgICAgICAgICBwYXJhbXNSZXMuZXJyb3JTdGF0dXNEZXNjcmlwdGlvbiA9IGh0dHBFcnJvcj8uc3RhdHVzVGV4dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyYW1zUmVzLmVycm9yID0gZXJyb3I7XG4gICAgICAgICAgICByZXR1cm4gcGFyYW1zUmVzO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
274
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi91dGlscy9pMThuLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFhLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUMsR0FBRyxFQUFFLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBTTdDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFdkMsTUFBTSxLQUFXLFNBQVMsQ0FtVnpCO0FBblZELFdBQWlCLFNBQVM7SUFDdEIsTUFBYSxNQUFNO1FBQ1IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUEyQixFQUFFLE1BQVksRUFBRSxHQUFHLElBQW1CO1lBQ3BGLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckcsQ0FBQztRQUVNLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBMkIsRUFBRSxNQUFZLEVBQUUsR0FBRyxJQUFtQjtZQUMvRSxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM3QyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFVLEVBQUUsU0FBYyxFQUFFO1lBQ3JELE1BQU0sU0FBUyxHQUFHLEVBQUMsR0FBRyxNQUFNLEVBQUMsQ0FBQztZQUM5QixJQUFJLElB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QUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxJQUFJLEVBQUU7b0JBQ04sT0FBTyxJQUFJLENBQUM7aUJBQ2Y7YUFDSjtZQUNELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVNLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBZ0IsRUFBRSxTQUFjLEVBQUU7WUFDdEQsTUFBTSxTQUFTLEdBQUcsRUFBQyxHQUFHLE1BQU0sRUFBQyxDQUFDO1lBQzlCLFNBQVMsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBRTVCLElBQUksU0FBUyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hELFNBQVMsQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLE1BQU0sQ0FBQztnQkFDMUMsU0FBUyxDQUFDLFlBQVksR0FBRyxTQUFTLEVBQUUsT0FBTyxDQUFDO2dCQUM1QyxTQUFTLENBQUMsc0JBQXNCLEdBQUcsU0FBUyxFQUFFLFVBQVUsQ0FBQzthQUM1RDtZQUVELFNBQVMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7S0FDSjtJQTVCWSxlQUFLLFFBNEJqQixDQUFBO0FBQ0wsQ0FBQyxFQW5WZ0IsU0FBUyxLQUFULFNBQVMsUUFtVnpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIG1lcmdlTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvckluc3QsIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi9kZXNjcmlwdG9ycy9hY3Rpb24nO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL21vZGVsJztcbmltcG9ydCB7SU1uZ0Vycm9yfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtDbGFzc1R5cGUsIEkxOG5UeXBlLCBLZXlPZlR5cGV9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7RGVjb3JhdG9yTWV0YWRhdGFVdGlsfSBmcm9tICcuL2RlY29yYXRvci1tZXRhZGF0YS51dGlsJztcbmltcG9ydCB7RXJyb3JVdGlsfSBmcm9tICcuL2Vycm9yLnV0aWwnO1xuXG5leHBvcnQgbmFtZXNwYWNlIEkxOG5VdGlscyB7XG4gICAgZXhwb3J0IGNsYXNzIENvbW1vbiB7XG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0QXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwYXJhbXM/OiBhbnksIC4uLmtleXM6IEFycmF5PHN0cmluZz4pOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGUuc3RyZWFtKGtleXMsIHBhcmFtcykucGlwZShtYXAoaTE4biA9PiBJMThuVXRpbHMuQ29tbW9uLnNlbGVjdEkxOG4oa2V5cywgaTE4bikpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0KHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcGFyYW1zPzogYW55LCAuLi5rZXlzOiBBcnJheTxzdHJpbmc+KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgICAgICBjb25zdCBpMThuID0gdHJhbnNsYXRlLmluc3RhbnQoa2V5cywgcGFyYW1zKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuQ29tbW9uLnNlbGVjdEkxOG4oa2V5cywgaTE4bik7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIHBvcHVsYXRlUGFyYW1zKGl0ZW0/OiBhbnksIHBhcmFtczogYW55ID0ge30pIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtc1JlcyA9IHsuLi5wYXJhbXN9O1xuICAgICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBwYXJhbXNSZXMuaXRlbSA9IGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyYW1zUmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBzZWxlY3RJMThuKGtleXM6IHN0cmluZ1tdLCBpMThuOiBhbnkpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSBpMThuW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkxOG5ba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4cG9ydCBjbGFzcyBUeXBlIHtcbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRDbGFzc05hbWVBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGNsYXNzVHlwZTogQ2xhc3NUeXBlPGFueT4sIHNpbmd1bGFyPzogYm9vbGVhbik6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBEZWNvcmF0b3JNZXRhZGF0YVV0aWwuZmluZFR5cGVOYW1lKGNsYXNzVHlwZSk7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLlR5cGUuZ2V0TmFtZUFzeW5jKHRyYW5zbGF0ZSwgdHlwZU5hbWUgPz8gJycsIHNpbmd1bGFyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q2xhc3NOYW1lKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgY2xhc3NUeXBlOiBDbGFzc1R5cGU8YW55Piwgc2luZ3VsYXI/OiBib29sZWFuKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IERlY29yYXRvck1ldGFkYXRhVXRpbC5maW5kVHlwZU5hbWUoY2xhc3NUeXBlKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuVHlwZS5nZXROYW1lKHRyYW5zbGF0ZSwgdHlwZU5hbWUgPz8gJycsIHNpbmd1bGFyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0TmFtZUFzeW5jKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgdHlwZU5hbWU6IHN0cmluZywgc2luZ3VsYXI/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gSTE4blV0aWxzLlR5cGUuZ2V0TmFtZUtleXModHlwZU5hbWUsIHNpbmd1bGFyKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuQ29tbW9uLmdldEFzeW5jKHRyYW5zbGF0ZSwgdW5kZWZpbmVkLCAuLi5rZXlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0TmFtZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHR5cGVOYW1lOiBzdHJpbmcsIHNpbmd1bGFyPzogYm9vbGVhbik6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IEkxOG5VdGlscy5UeXBlLmdldE5hbWVLZXlzKHR5cGVOYW1lLCBzaW5ndWxhcik7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLkNvbW1vbi5nZXQodHJhbnNsYXRlLCB1bmRlZmluZWQsIC4uLmtleXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRDbGFzc1RhYktleShjbGFzc1R5cGU6IENsYXNzVHlwZTxhbnk+LCB0YWI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IERlY29yYXRvck1ldGFkYXRhVXRpbC5maW5kVHlwZU5hbWUoY2xhc3NUeXBlKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuVHlwZS5nZXRUYWJLZXkodHlwZU5hbWUgPz8gJycsIHRhYik7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldFRhYktleSh0eXBlTmFtZTogc3RyaW5nLCB0YWI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLlR5cGUuZ2V0UGF0aCh0eXBlTmFtZSwgJ3RhYnMnLCB0YWIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRDbGFzc0dyb3VwS2V5KGNsYXNzVHlwZTogQ2xhc3NUeXBlPGFueT4sIGdyb3VwOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBEZWNvcmF0b3JNZXRhZGF0YVV0aWwuZmluZFR5cGVOYW1lKGNsYXNzVHlwZSk7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLlR5cGUuZ2V0R3JvdXBLZXkodHlwZU5hbWUgPz8gJycsIGdyb3VwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0R3JvdXBLZXkodHlwZU5hbWU6IHN0cmluZywgZ3JvdXA6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLlR5cGUuZ2V0UGF0aCh0eXBlTmFtZSwgJ2dyb3VwcycsIGdyb3VwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q2xhc3NQcm9wZXJ0eUtleShjbGFzc1R5cGU6IENsYXNzVHlwZTxhbnk+LCBwcm9wZXJ0eTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVOYW1lID0gRGVjb3JhdG9yTWV0YWRhdGFVdGlsLmZpbmRUeXBlTmFtZShjbGFzc1R5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldFByb3BlcnR5S2V5KHR5cGVOYW1lID8/ICcnLCBwcm9wZXJ0eSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldFByb3BlcnR5S2V5KHR5cGVOYW1lOiBzdHJpbmcsIHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldFBhdGgodHlwZU5hbWUsICdwcm9wZXJ0aWVzJywgcHJvcGVydHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRDbGFzc1BhdGgoY2xhc3NUeXBlOiBDbGFzc1R5cGU8YW55PiwgLi4ucGF0aDogQXJyYXk8c3RyaW5nPik6IHN0cmluZyB7XG4gICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IERlY29yYXRvck1ldGFkYXRhVXRpbC5maW5kVHlwZU5hbWUoY2xhc3NUeXBlKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuVHlwZS5nZXRQYXRoKHR5cGVOYW1lID8/ICcnLCAuLi5wYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0UGF0aCh0eXBlTmFtZTogc3RyaW5nLCAuLi5wYXRoOiBBcnJheTxzdHJpbmc+KTogc3RyaW5nIHtcbiAgICAgICAgICAgIHJldHVybiBgJHt0eXBlTmFtZS5sZW5ndGggPyBgJHt0eXBlTmFtZX0uYCA6ICcnfSR7cGF0aC5qb2luKCcuJyl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q2xhc3NQYXJhbXModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBjbGFzc1R5cGU6IENsYXNzVHlwZTxhbnk+LCBpdGVtOiBhbnksIHBhcmFtczogYW55ID0ge30pOiBhbnkge1xuICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBEZWNvcmF0b3JNZXRhZGF0YVV0aWwuZmluZFR5cGVOYW1lKGNsYXNzVHlwZSk7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLlR5cGUuZ2V0UGFyYW1zKHRyYW5zbGF0ZSwgdHlwZU5hbWUgPz8gdW5kZWZpbmVkLCBpdGVtLCBwYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRQYXJhbXModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCB0eXBlTmFtZT86IHN0cmluZywgaXRlbT86IGFueSwgcGFyYW1zOiBhbnkgPSB7fSk6IGFueSB7XG4gICAgICAgICAgICBjb25zdCBpMThuVHlwZU5hbWUgPSB0eXBlTmFtZSA/IEkxOG5VdGlscy5UeXBlLmdldE5hbWUodHJhbnNsYXRlLCB0eXBlTmFtZSwgdHJ1ZSkgOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLnBvcHVsYXRlUGFyYW1zKGkxOG5UeXBlTmFtZSA/PyB1bmRlZmluZWQsIGl0ZW0sIHBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldENsYXNzUGFyYW1zQXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBjbGFzc1R5cGU6IENsYXNzVHlwZTxhbnk+LCBpdGVtPzogYW55LCBwYXJhbXM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVOYW1lID0gRGVjb3JhdG9yTWV0YWRhdGFVdGlsLmZpbmRUeXBlTmFtZShjbGFzc1R5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldFBhcmFtc0FzeW5jKHRyYW5zbGF0ZSwgdHlwZU5hbWUgPz8gdW5kZWZpbmVkLCBpdGVtLCBwYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRQYXJhbXNBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHR5cGVOYW1lPzogc3RyaW5nLCBpdGVtPzogYW55LCBwYXJhbXM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICAgIHJldHVybiAodHlwZU5hbWUgPyBJMThuVXRpbHMuVHlwZS5nZXROYW1lQXN5bmModHJhbnNsYXRlLCB0eXBlTmFtZSwgdHJ1ZSkgOiBvZihudWxsKSkucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoaTE4blR5cGVOYW1lID0+IEkxOG5VdGlscy5UeXBlLnBvcHVsYXRlUGFyYW1zKGkxOG5UeXBlTmFtZSA/PyB1bmRlZmluZWQsIGl0ZW0sIHBhcmFtcykpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBwb3B1bGF0ZVBhcmFtcyhpMThuVHlwZU5hbWU/OiBzdHJpbmcsIGl0ZW0/OiBhbnksIHBhcmFtczogYW55ID0ge30pOiBhbnkge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zUmVzID0gey4uLnBhcmFtc307XG4gICAgICAgICAgICBpZiAoaTE4blR5cGVOYW1lKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zUmVzLnR5cGVOYW1lID0gaTE4blR5cGVOYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5Db21tb24ucG9wdWxhdGVQYXJhbXMoaXRlbSwgcGFyYW1zUmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaXZhdGUgc3RhdGljIGdldE5hbWVLZXlzKHR5cGVOYW1lOiBzdHJpbmcsIHNpbmd1bGFyPzogYm9vbGVhbik6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IFtdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzaW5ndWxhciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBrZXlzLnB1c2goc2luZ3VsYXIgPyBgJHt0eXBlTmFtZX0ubmFtZVNpbmd1bGFyYCA6IGAke3R5cGVOYW1lfS5uYW1lUGx1cmFsYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrZXlzLnB1c2goYCR7dHlwZU5hbWUubGVuZ3RoID8gYCR7dHlwZU5hbWV9LmAgOiAnJ31uYW1lYCk7XG4gICAgICAgICAgICByZXR1cm4ga2V5cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4cG9ydCBjbGFzcyBNb2RlbCB7XG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0KFxuICAgICAgICAgICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxhbnk+LFxuICAgICAgICAgICAga2V5UGF0aDogc3RyaW5nLFxuICAgICAgICAgICAgY3VzdG9tS2V5Pzogc3RyaW5nLFxuICAgICAgICAgICAgaXRlbT86IGFueSxcbiAgICAgICAgICAgIGZhbGxiYWNrS2V5Pzogc3RyaW5nLFxuICAgICAgICAgICAgcGFyYW1zPzogYW55XG4gICAgICAgICk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IEkxOG5VdGlscy5Nb2RlbC5nZXRLZXlzQnlQcmlvcml0eShtb2RlbCwga2V5UGF0aCwgY3VzdG9tS2V5LCBmYWxsYmFja0tleSk7XG4gICAgICAgICAgICBjb25zdCBpMThuUGFyYW1zID0gSTE4blV0aWxzLk1vZGVsLmdldFBhcmFtcyh0cmFuc2xhdGUsIG1vZGVsLCBpdGVtLCBwYXJhbXMpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5Db21tb24uZ2V0KHRyYW5zbGF0ZSwgaTE4blBhcmFtcywgLi4ua2V5cyk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldE5hbWUodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4sIHNpbmd1bGFyPzogYm9vbGVhbik6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldE5hbWUodHJhbnNsYXRlLCBtb2RlbC5pMThuQmFzZUtleSwgc2luZ3VsYXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXROYW1lQXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4sIHNpbmd1bGFyPzogYm9vbGVhbik6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldE5hbWVBc3luYyh0cmFuc2xhdGUsIG1vZGVsLmkxOG5CYXNlS2V5LCBzaW5ndWxhcik7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldFBhcmFtcyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPGFueT4sIGl0ZW0/OiBhbnksIHBhcmFtczogYW55ID0ge30pOiBhbnkge1xuICAgICAgICAgICAgY29uc3QgaTE4blBhcmFtcyA9IEkxOG5VdGlscy5UeXBlLmdldFBhcmFtcyh0cmFuc2xhdGUsIG1vZGVsPy5pMThuQmFzZUtleSwgaXRlbSwgcGFyYW1zKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuTW9kZWwucG9wdWxhdGVQYXJhbXMobW9kZWw/LmlkUHJvcGVydHksIG1vZGVsPy50aXRsZVByb3BlcnR5LCBpdGVtLCBpMThuUGFyYW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0UGFyYW1zQXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxhbnk+LCBpdGVtPzogYW55LCBwYXJhbXM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuVHlwZS5nZXRQYXJhbXNBc3luYyh0cmFuc2xhdGUsIG1vZGVsPy5pMThuQmFzZUtleSwgaXRlbSwgcGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChpMThuUGFyYW1zID0+IEkxOG5VdGlscy5Nb2RlbC5wb3B1bGF0ZVBhcmFtcyhtb2RlbD8uaWRQcm9wZXJ0eSwgbW9kZWw/LnRpdGxlUHJvcGVydHksIGl0ZW0sIGkxOG5QYXJhbXMpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcG9wdWxhdGVQYXJhbXMoaWRQcm9wZXJ0eT86IEtleU9mVHlwZSwgdGl0bGVQcm9wZXJ0eT86IEtleU9mVHlwZSwgaXRlbT86IGFueSwgcGFyYW1zOiBhbnkgPSB7fSk6IGFueSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXNSZXMgPSB7Li4ucGFyYW1zLCBpdGVtSWQ6ICcnLCBpdGVtVGl0bGU6ICcnfTtcbiAgICAgICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlkUHJvcGVydHkgJiYgaXRlbVtpZFByb3BlcnR5XSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXNSZXMuaXRlbUlkID0gaXRlbVtpZFByb3BlcnR5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRpdGxlUHJvcGVydHkgJiYgaXRlbVt0aXRsZVByb3BlcnR5XSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXNSZXMuaXRlbVRpdGxlID0gaXRlbVt0aXRsZVByb3BlcnR5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyYW1zUmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZ2V0S2V5c0J5UHJpb3JpdHkobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxhbnk+LCBrZXlQYXRoOiBzdHJpbmcsIGN1c3RvbUtleT86IHN0cmluZywgZmFsbGJhY2tLZXk/OiBzdHJpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBbXTtcbiAgICAgICAgICAgIGlmIChjdXN0b21LZXkpIHtcbiAgICAgICAgICAgICAgICBrZXlzLnB1c2goY3VzdG9tS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1vZGVsQWN0aW9uS2V5ID0gSTE4blV0aWxzLlR5cGUuZ2V0UGF0aChtb2RlbC5pMThuQmFzZUtleSwgLi4ua2V5UGF0aCk7XG4gICAgICAgICAgICBrZXlzLnB1c2gobW9kZWxBY3Rpb25LZXkpO1xuICAgICAgICAgICAgaWYgKGZhbGxiYWNrS2V5KSB7XG4gICAgICAgICAgICAgICAga2V5cy5wdXNoKGZhbGxiYWNrS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhwb3J0IGNsYXNzIEFjdGlvbiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXR1cm5zIHRyYW5zbGF0aW9uIGZvciBhY3Rpb24gd2l0aCBnaXZlbiBrZXlzIGFuZCBwYXJhbXNcbiAgICAgICAgICogQHBhcmFtIHRyYW5zbGF0ZSBUcmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgICAqIEBwYXJhbSBhY3Rpb24gYWN0aW9uIGRlc2NyaXB0b3JcbiAgICAgICAgICogQHBhcmFtIGFjdGlvblBhdGhLZXlzIGFjdGlvbiBwYXRoIGtleXNcbiAgICAgICAgICogQHBhcmFtIGN1c3RvbUtleSBjdXN0b20ga2V5XG4gICAgICAgICAqIEBwYXJhbSBpdGVtXG4gICAgICAgICAqIEBwYXJhbSBmYWxsYmFja0tleSBmYWxsYmFjayBrZXlcbiAgICAgICAgICogQHBhcmFtIHBhcmFtcyBhZGRpdGlvbmFsIHBhcmFtcyBmb3IgdHJhbnNsYXRpb25cbiAgICAgICAgICogQHBhcmFtIG1pc3NpbmdUcmFuc2xhdGlvblN0cmF0ZWd5IHN0cmF0ZWd5IHdoZW4gbm8gdHJhbnNsYXRpb24gaXMgZm91bmRcbiAgICAgICAgICovXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0KFxuICAgICAgICAgICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+LFxuICAgICAgICAgICAgYWN0aW9uUGF0aEtleXM6IHN0cmluZyB8IEFycmF5PHN0cmluZz4sXG4gICAgICAgICAgICBjdXN0b21LZXk/OiBzdHJpbmcsXG4gICAgICAgICAgICBpdGVtPzogYW55LFxuICAgICAgICAgICAgZmFsbGJhY2tLZXk/OiBzdHJpbmcsXG4gICAgICAgICAgICBwYXJhbXM/OiBhbnksXG4gICAgICAgICAgICBtaXNzaW5nVHJhbnNsYXRpb25TdHJhdGVneTogSTE4blR5cGUgPSAncmV0dXJuRmlyc3RLZXknXG4gICAgICAgICk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IEkxOG5VdGlscy5BY3Rpb24uZ2V0S2V5c0J5UHJpb3JpdHkoYWN0aW9uLCBhY3Rpb25QYXRoS2V5cywgY3VzdG9tS2V5LCBmYWxsYmFja0tleSk7XG4gICAgICAgICAgICBjb25zdCBpMThuUGFyYW1zID0gSTE4blV0aWxzLkFjdGlvbi5nZXRQYXJhbXModHJhbnNsYXRlLCBhY3Rpb24sIGl0ZW0sIHBhcmFtcyk7XG4gICAgICAgICAgICBjb25zdCBpMThuVmFsdWUgPSBJMThuVXRpbHMuQ29tbW9uLmdldCh0cmFuc2xhdGUsIGkxOG5QYXJhbXMsIC4uLmtleXMpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRpb25EZXBlbmRpbmdPblN0cmF0ZWd5KG1pc3NpbmdUcmFuc2xhdGlvblN0cmF0ZWd5LCB7aTE4blZhbHVlLCBmaXJzdEtleToga2V5c1swXSwgZmFsbGJhY2tLZXl9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXR1cm5zIGFzeW5jIHRyYW5zbGF0aW9uIGZvciBnaXZlbiBrZXlzIHdpdGggZ2l2ZW4gcGFyYW1zLlxuICAgICAgICAgKiBAcGFyYW0gdHJhbnNsYXRlIFRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgICogQHBhcmFtIGFjdGlvbiBhY3Rpb24gZGVzY3JpcHRvclxuICAgICAgICAgKiBAcGFyYW0gYWN0aW9uUGF0aEtleXMgYWN0aW9uIHBhdGgga2V5c1xuICAgICAgICAgKiBAcGFyYW0gY3VzdG9tS2V5IGN1c3RvbSBrZXlcbiAgICAgICAgICogQHBhcmFtIGl0ZW0gaXRlbVxuICAgICAgICAgKiBAcGFyYW0gZmFsbGJhY2tLZXkgZmFsbGJhY2sga2V5LCB1c2VkIGFzIGZhbGxiYWNrIGtleVxuICAgICAgICAgKiBAcGFyYW0gcGFyYW1zIGFkZGl0aW9uYWwgcGFyYW1zIGZvciB0cmFuc2xhdGlvblxuICAgICAgICAgKiBAcGFyYW0gbWlzc2luZ1RyYW5zbGF0aW9uU3RyYXRlZ3kgc3RyYXRlZ3kgd2hlbiBubyB0cmFuc2xhdGlvbiBpcyBmb3VuZFxuICAgICAgICAgKi9cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRBc3luYyhcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PixcbiAgICAgICAgICAgIGFjdGlvblBhdGhLZXlzOiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgY3VzdG9tS2V5Pzogc3RyaW5nLFxuICAgICAgICAgICAgaXRlbT86IGFueSxcbiAgICAgICAgICAgIGZhbGxiYWNrS2V5Pzogc3RyaW5nLFxuICAgICAgICAgICAgcGFyYW1zPzogYW55LFxuICAgICAgICAgICAgbWlzc2luZ1RyYW5zbGF0aW9uU3RyYXRlZ3k6IEkxOG5UeXBlID0gJ3JldHVybkZpcnN0S2V5J1xuICAgICAgICApOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuQWN0aW9uLmdldFBhcmFtc0FzeW5jKHRyYW5zbGF0ZSwgYWN0aW9uLCBpdGVtLCBwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoaTE4blBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleXMgPSBJMThuVXRpbHMuQWN0aW9uLmdldEtleXNCeVByaW9yaXR5KGFjdGlvbiwgYWN0aW9uUGF0aEtleXMsIGN1c3RvbUtleSwgZmFsbGJhY2tLZXkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLkNvbW1vbi5nZXRBc3luYyh0cmFuc2xhdGUsIGkxOG5QYXJhbXMsIC4uLmtleXMpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoaTE4blZhbHVlID0+IHRoaXMuZ2V0VHJhbnNsYXRpb25EZXBlbmRpbmdPblN0cmF0ZWd5KG1pc3NpbmdUcmFuc2xhdGlvblN0cmF0ZWd5LCB7aTE4blZhbHVlLCBmaXJzdEtleToga2V5c1swXSwgZmFsbGJhY2tLZXl9KSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXR1cm5zIHRyYW5zbGF0aW9uIGRlcGVuZGluZyBvbiBtaXNzaW5nVHJhbnNsYXRpb25TdHJhdGVneVxuICAgICAgICAgKiBAcGFyYW0gbWlzc2luZ1RyYW5zbGF0aW9uU3RyYXRlZ3kgc3RyYXRlZ3kgd2hlbiBubyB0cmFuc2xhdGlvbiBpcyBmb3VuZFxuICAgICAgICAgKiBAcGFyYW0gdmFsdWVzIG9iamVjdCB3aXRoIHZhbHVlcywgaTE4blZhbHVlIGlzIHRyYW5zbGF0aW9uLCBmaXJzdEtleSBpcyBmaXJzdCBrZXkgaW4gYXJyYXkgb2Yga2V5cywgZmFsbGJhY2tLZXkgaXMgZmFsbGJhY2sga2V5XG4gICAgICAgICAqL1xuICAgICAgICBwcml2YXRlIHN0YXRpYyBnZXRUcmFuc2xhdGlvbkRlcGVuZGluZ09uU3RyYXRlZ3koXG4gICAgICAgICAgICBtaXNzaW5nVHJhbnNsYXRpb25TdHJhdGVneTogSTE4blR5cGUsXG4gICAgICAgICAgICB7aTE4blZhbHVlLCBmaXJzdEtleSwgZmFsbGJhY2tLZXl9OiB7aTE4blZhbHVlOiBzdHJpbmcgfCBudWxsOyBmaXJzdEtleT86IHN0cmluZzsgZmFsbGJhY2tLZXk/OiBzdHJpbmd9XG4gICAgICAgICk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAgICAgaWYgKGkxOG5WYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpMThuVmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAobWlzc2luZ1RyYW5zbGF0aW9uU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmV0dXJuTnVsbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmV0dXJuRmFsbGJhY2tLZXknOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrS2V5ID8/IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JldHVybkZpcnN0S2V5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdEtleSA/PyBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0VGl0bGVBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiwgaXRlbT86IGFueSk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5BY3Rpb24uZ2V0QXN5bmModHJhbnNsYXRlLCBhY3Rpb24sICd0aXRsZScsIHVuZGVmaW5lZCwgaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldEVkaXRvclRpdGxlQXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBhY3Rpb246IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PGFueT4sIGl0ZW0/OiBhbnkpOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuQWN0aW9uLmdldEFzeW5jKHRyYW5zbGF0ZSwgYWN0aW9uLCBbJ2VkaXRvci50aXRsZScsICd0aXRsZSddLCBhY3Rpb24uZWRpdG9yVGl0bGUgPz8gdW5kZWZpbmVkLCBpdGVtLCB1bmRlZmluZWQsIGFjdGlvbi5lZGl0b3JUaXRsZVBhcmFtcyA/PyB1bmRlZmluZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRQYXJhbXModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4sIGl0ZW0/OiBhbnksIHBhcmFtczogYW55ID0ge30pOiBhbnkge1xuICAgICAgICAgICAgY29uc3QgaTE4blBhcmFtcyA9IEkxOG5VdGlscy5Nb2RlbC5nZXRQYXJhbXModHJhbnNsYXRlLCBhY3Rpb24ubW9kZWwgPz8gdW5kZWZpbmVkLCBpdGVtLCBwYXJhbXMpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5BY3Rpb24ucG9wdWxhdGVQYXJhbXMoaTE4blBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldFBhcmFtc0FzeW5jKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+LCBpdGVtPzogYW55LCBwYXJhbXM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuTW9kZWwuZ2V0UGFyYW1zQXN5bmModHJhbnNsYXRlLCBhY3Rpb24ubW9kZWwgPz8gdW5kZWZpbmVkLCBpdGVtLCBwYXJhbXMpLnBpcGUobWFwKGkxOG5QYXJhbXMgPT4gSTE4blV0aWxzLkFjdGlvbi5wb3B1bGF0ZVBhcmFtcyhpMThuUGFyYW1zKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBwb3B1bGF0ZVBhcmFtcyhwYXJhbXM6IGFueSA9IHt9KTogYW55IHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHsuLi5wYXJhbXN9O1xuICAgICAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICAgICAgfVxuXG4gICAgICAgIHByaXZhdGUgc3RhdGljIGdldEtleXNCeVByaW9yaXR5KGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiwgYWN0aW9uUGF0aEtleXM6IHN0cmluZyB8IEFycmF5PHN0cmluZz4sIGN1c3RvbUtleT86IHN0cmluZywgZmFsbGJhY2tLZXk/OiBzdHJpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBbXTtcbiAgICAgICAgICAgIGlmIChjdXN0b21LZXkpIHtcbiAgICAgICAgICAgICAgICBrZXlzLnB1c2goY3VzdG9tS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhY3Rpb25QYXRoS2V5cykpIHtcbiAgICAgICAgICAgICAgICBhY3Rpb25QYXRoS2V5cyA9IFthY3Rpb25QYXRoS2V5c107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3Rpb25QYXRoS2V5cy5mb3JFYWNoKGsgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsQWN0aW9uS2V5ID0gYCR7YWN0aW9uLmkxOG5Nb2RlbEFjdGlvbkJhc2VLZXl9LiR7a31gO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbktleSA9IGAke2FjdGlvbi5hY3Rpb25OYW1lfS4ke2t9YDtcbiAgICAgICAgICAgICAgICBrZXlzLnB1c2gobW9kZWxBY3Rpb25LZXksIGFjdGlvbktleSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChmYWxsYmFja0tleSkge1xuICAgICAgICAgICAgICAgIGtleXMucHVzaChmYWxsYmFja0tleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ga2V5cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4cG9ydCBjbGFzcyBFcnJvciB7XG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0KHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgZXJyb3I6IElNbmdFcnJvciwgcGFyYW1zOiBhbnkgPSB7fSk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAgICAgY29uc3QgaTE4blBhcmFtcyA9IEkxOG5VdGlscy5FcnJvci5nZXRQYXJhbXMoZXJyb3IsIHBhcmFtcyk7XG4gICAgICAgICAgICBpZiAoZXJyb3IubWVzc2FnZUNvZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gW2BlcnJvcnMuJHtlcnJvci5tZXNzYWdlQ29kZX1gLCBgbWVzc2FnZXMuJHtlcnJvci5tZXNzYWdlQ29kZX1gXTtcbiAgICAgICAgICAgICAgICBjb25zdCBpMThuID0gSTE4blV0aWxzLkNvbW1vbi5nZXQodHJhbnNsYXRlLCBpMThuUGFyYW1zLCAuLi5rZXlzKTtcbiAgICAgICAgICAgICAgICBpZiAoaTE4bikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTE4bjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLkNvbW1vbi5nZXQodHJhbnNsYXRlLCBpMThuUGFyYW1zLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0UGFyYW1zKGVycm9yOiBJTW5nRXJyb3IsIHBhcmFtczogYW55ID0ge30pIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtc1JlcyA9IHsuLi5wYXJhbXN9O1xuICAgICAgICAgICAgcGFyYW1zUmVzLmVycm9yU3RhdHVzID0gJyc7XG4gICAgICAgICAgICBwYXJhbXNSZXMuZXJyb3JNZXNzYWdlID0gJyc7XG5cbiAgICAgICAgICAgIGlmIChFcnJvclV0aWwuaXNIdHRwRXJyb3JSZXNwb25zZShlcnJvcikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBodHRwRXJyb3IgPSBFcnJvclV0aWwuZ2V0SHR0cEVycm9yUmVzcG9uc2UoZXJyb3IpO1xuICAgICAgICAgICAgICAgIHBhcmFtc1Jlcy5lcnJvclN0YXR1cyA9IGh0dHBFcnJvcj8uc3RhdHVzO1xuICAgICAgICAgICAgICAgIHBhcmFtc1Jlcy5lcnJvck1lc3NhZ2UgPSBodHRwRXJyb3I/Lm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgcGFyYW1zUmVzLmVycm9yU3RhdHVzRGVzY3JpcHRpb24gPSBodHRwRXJyb3I/LnN0YXR1c1RleHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcmFtc1Jlcy5lcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgcmV0dXJuIHBhcmFtc1JlcztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -7,9 +7,8 @@ export * from './model.util';
|
|
|
7
7
|
export * from './notification.util';
|
|
8
8
|
export * from './object.util';
|
|
9
9
|
export * from './string.util';
|
|
10
|
-
export * from './
|
|
10
|
+
export * from './decorator-metadata.util';
|
|
11
11
|
export * from './export.util';
|
|
12
12
|
export * from './file.util';
|
|
13
13
|
export * from './error.util';
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FjdGlvbi1kYXRhLXByb3ZpZGVyLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3ItZm9ybWx5LnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lbnVtLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9pMThuLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9uLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9vYmplY3QudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmluZy51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vZXhwb3J0LnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvci51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vY29lcmNpb24udXRpbCc7XG4iXX0=
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FjdGlvbi1kYXRhLXByb3ZpZGVyLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3ItZm9ybWx5LnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lbnVtLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9pMThuLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9uLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9vYmplY3QudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmluZy51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9yLW1ldGFkYXRhLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9leHBvcnQudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9yLnV0aWwnO1xuIl19
|
|
@@ -1,69 +1,73 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TypeUtil } from './type.util';
|
|
1
|
+
import { TypeRegistry } from '../registry/type.registry';
|
|
3
2
|
export class ModelUtil {
|
|
4
3
|
static findIdAttribute(classType) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const objSerializer = ObjectSerializer.get();
|
|
10
|
-
const attributes = objSerializer.findAttributesDefinitionByClassType(classType);
|
|
11
|
-
if (!attributes) {
|
|
4
|
+
if (!classType)
|
|
5
|
+
return null;
|
|
6
|
+
const attrDef = ModelUtil.getAttributeDef(classType);
|
|
7
|
+
if (!attrDef) {
|
|
12
8
|
return null;
|
|
13
9
|
}
|
|
14
|
-
let idAttribute = ModelUtil.findAttributeByTypeAndName(
|
|
10
|
+
let idAttribute = ModelUtil.findAttributeByTypeAndName(attrDef, ['string', 'number'], 'id', 'uuid', 'code', 'sifra');
|
|
15
11
|
if (!idAttribute) {
|
|
16
12
|
// if no id or code, take the first attribute
|
|
17
|
-
idAttribute =
|
|
13
|
+
idAttribute = attrDef[0];
|
|
18
14
|
}
|
|
19
15
|
return idAttribute?.name ?? null;
|
|
20
16
|
}
|
|
21
17
|
static findTitleAttribute(classType) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const objSerializer = ObjectSerializer.get();
|
|
27
|
-
const attributes = objSerializer.findAttributesDefinitionByClassType(classType);
|
|
28
|
-
if (!attributes) {
|
|
18
|
+
if (!classType)
|
|
19
|
+
return null;
|
|
20
|
+
const attrDef = ModelUtil.getAttributeDef(classType);
|
|
21
|
+
if (!attrDef) {
|
|
29
22
|
return null;
|
|
30
23
|
}
|
|
31
|
-
let titleAttribute = ModelUtil.findAttributeByTypeAndName(
|
|
24
|
+
let titleAttribute = ModelUtil.findAttributeByTypeAndName(attrDef, ['string'], 'name', 'ime', 'title', 'naziv');
|
|
32
25
|
if (!titleAttribute) {
|
|
33
26
|
// if no name or title, take the first attribute
|
|
34
|
-
titleAttribute =
|
|
27
|
+
titleAttribute = attrDef[0];
|
|
35
28
|
}
|
|
36
29
|
return titleAttribute?.name ?? null;
|
|
37
30
|
}
|
|
38
|
-
static
|
|
31
|
+
static getAttributeDef(classType) {
|
|
32
|
+
if (!classType)
|
|
33
|
+
return null;
|
|
34
|
+
const attrDefByFn = classType.getAttributeTypeMap?.();
|
|
35
|
+
if (attrDefByFn)
|
|
36
|
+
return attrDefByFn;
|
|
37
|
+
const attrDefByProp = classType.attributeTypeMap;
|
|
38
|
+
if (attrDefByProp)
|
|
39
|
+
return attrDefByProp;
|
|
40
|
+
const attrByObjSer = TypeRegistry.get().findAttributesDefinitionByClassType(classType);
|
|
41
|
+
if (attrByObjSer)
|
|
42
|
+
return attrByObjSer;
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
static findAttributeByTypeAndName(attributes, types, ...names) {
|
|
39
46
|
for (const name of names) {
|
|
40
|
-
const attribute = attributes.find(a =>
|
|
47
|
+
const attribute = attributes.find(a => types.some(t => t === a.type) && a.name === name);
|
|
41
48
|
if (attribute) {
|
|
42
49
|
return attribute;
|
|
43
50
|
}
|
|
44
51
|
}
|
|
45
52
|
return null;
|
|
46
53
|
}
|
|
47
|
-
static trySetLookupItemsProperties(lookup,
|
|
48
|
-
if (lookup.
|
|
49
|
-
if (!lookup.
|
|
50
|
-
const idProperty = ModelUtil.findIdAttribute(lookup.
|
|
51
|
-
if (idProperty && !lookup.
|
|
52
|
-
if (
|
|
53
|
-
lookup.
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
lookup.withItemsValueProperty(idProperty);
|
|
54
|
+
static trySetLookupItemsProperties(lookup, idAsTrack = true) {
|
|
55
|
+
if (lookup.dataProvider.classType) {
|
|
56
|
+
if (!lookup.optionsValueProperty && !lookup.optionsTrackProperty) {
|
|
57
|
+
const idProperty = ModelUtil.findIdAttribute(lookup.dataProvider.classType) ?? undefined;
|
|
58
|
+
if (idProperty && !lookup.optionsValueProperty && !lookup.optionsTrackProperty) {
|
|
59
|
+
if (idAsTrack) {
|
|
60
|
+
lookup.withOptionsTrackPropertyUnsafe(idProperty);
|
|
57
61
|
}
|
|
58
62
|
}
|
|
59
63
|
}
|
|
60
|
-
if (!lookup.
|
|
61
|
-
const labelProperty = ModelUtil.findTitleAttribute(lookup.
|
|
64
|
+
if (!lookup.optionsLabelProperty) {
|
|
65
|
+
const labelProperty = ModelUtil.findTitleAttribute(lookup.dataProvider.classType);
|
|
62
66
|
if (labelProperty) {
|
|
63
|
-
lookup.
|
|
67
|
+
lookup.withOptionsLabelPropertyUnsafe(labelProperty);
|
|
64
68
|
}
|
|
65
69
|
}
|
|
66
70
|
}
|
|
67
71
|
}
|
|
68
72
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdXRpbHMvbW9kZWwudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFHdkQsTUFBTSxPQUFPLFNBQVM7SUFDWCxNQUFNLENBQUMsZUFBZSxDQUFJLFNBQXdCO1FBQ3JELElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFNUIsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELElBQUksV0FBVyxHQUFHLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckgsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNkLDZDQUE2QztZQUM3QyxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBRUQsT0FBTyxXQUFXLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBRU0sTUFBTSxDQUFDLGtCQUFrQixDQUFJLFNBQXdCO1FBQ3hELElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFNUIsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELElBQUksY0FBYyxHQUFHLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2pCLGdEQUFnRDtZQUNoRCxjQUFjLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9CO1FBRUQsT0FBTyxjQUFjLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQztJQUN4QyxDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWUsQ0FBSSxTQUF3QjtRQUNyRCxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzVCLE1BQU0sV0FBVyxHQUFJLFNBQWlCLENBQUMsbUJBQW1CLEVBQUUsRUFBMEMsQ0FBQztRQUN2RyxJQUFJLFdBQVc7WUFBRSxPQUFPLFdBQVcsQ0FBQztRQUNwQyxNQUFNLGFBQWEsR0FBSSxTQUFpQixDQUFDLGdCQUF3RCxDQUFDO1FBQ2xHLElBQUksYUFBYTtZQUFFLE9BQU8sYUFBYSxDQUFDO1FBQ3hDLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RixJQUFJLFlBQVk7WUFBRSxPQUFPLFlBQVksQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU8sTUFBTSxDQUFDLDBCQUEwQixDQUFDLFVBQStCLEVBQUUsS0FBZSxFQUFFLEdBQUcsS0FBZTtRQUMxRyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtZQUN0QixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztZQUN6RixJQUFJLFNBQVMsRUFBRTtnQkFDWCxPQUFPLFNBQVMsQ0FBQzthQUNwQjtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLE1BQU0sQ0FBQywyQkFBMkIsQ0FBSSxNQUE0QixFQUFFLFNBQVMsR0FBRyxJQUFJO1FBQ3ZGLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUU7WUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRTtnQkFDOUQsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztnQkFDekYsSUFBSSxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUU7b0JBQzVFLElBQUksU0FBUyxFQUFFO3dCQUNYLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDckQ7aUJBQ0o7YUFDSjtZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzlCLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsRixJQUFJLGFBQWEsRUFBRTtvQkFDZixNQUFNLENBQUMsOEJBQThCLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ3hEO2FBQ0o7U0FDSjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SUxvb2t1cERlc2NyaXB0b3J9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtDbGFzc0F0dHJpYnV0ZURlZn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7VHlwZVJlZ2lzdHJ5fSBmcm9tICcuLi9yZWdpc3RyeS90eXBlLnJlZ2lzdHJ5JztcbmltcG9ydCB7Q2xhc3NUeXBlfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBNb2RlbFV0aWwge1xuICAgIHB1YmxpYyBzdGF0aWMgZmluZElkQXR0cmlidXRlPFQ+KGNsYXNzVHlwZT86IENsYXNzVHlwZTxUPik6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoIWNsYXNzVHlwZSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgY29uc3QgYXR0ckRlZiA9IE1vZGVsVXRpbC5nZXRBdHRyaWJ1dGVEZWYoY2xhc3NUeXBlKTtcbiAgICAgICAgaWYgKCFhdHRyRGVmKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpZEF0dHJpYnV0ZSA9IE1vZGVsVXRpbC5maW5kQXR0cmlidXRlQnlUeXBlQW5kTmFtZShhdHRyRGVmLCBbJ3N0cmluZycsICdudW1iZXInXSwgJ2lkJywgJ3V1aWQnLCAnY29kZScsICdzaWZyYScpO1xuICAgICAgICBpZiAoIWlkQXR0cmlidXRlKSB7XG4gICAgICAgICAgICAvLyBpZiBubyBpZCBvciBjb2RlLCB0YWtlIHRoZSBmaXJzdCBhdHRyaWJ1dGVcbiAgICAgICAgICAgIGlkQXR0cmlidXRlID0gYXR0ckRlZlswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpZEF0dHJpYnV0ZT8ubmFtZSA/PyBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmluZFRpdGxlQXR0cmlidXRlPFQ+KGNsYXNzVHlwZT86IENsYXNzVHlwZTxUPik6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoIWNsYXNzVHlwZSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgY29uc3QgYXR0ckRlZiA9IE1vZGVsVXRpbC5nZXRBdHRyaWJ1dGVEZWYoY2xhc3NUeXBlKTtcbiAgICAgICAgaWYgKCFhdHRyRGVmKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0aXRsZUF0dHJpYnV0ZSA9IE1vZGVsVXRpbC5maW5kQXR0cmlidXRlQnlUeXBlQW5kTmFtZShhdHRyRGVmLCBbJ3N0cmluZyddLCAnbmFtZScsICdpbWUnLCAndGl0bGUnLCAnbmF6aXYnKTtcbiAgICAgICAgaWYgKCF0aXRsZUF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgLy8gaWYgbm8gbmFtZSBvciB0aXRsZSwgdGFrZSB0aGUgZmlyc3QgYXR0cmlidXRlXG4gICAgICAgICAgICB0aXRsZUF0dHJpYnV0ZSA9IGF0dHJEZWZbMF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGl0bGVBdHRyaWJ1dGU/Lm5hbWUgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEF0dHJpYnV0ZURlZjxUPihjbGFzc1R5cGU/OiBDbGFzc1R5cGU8VD4pIHtcbiAgICAgICAgaWYgKCFjbGFzc1R5cGUpIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBhdHRyRGVmQnlGbiA9IChjbGFzc1R5cGUgYXMgYW55KS5nZXRBdHRyaWJ1dGVUeXBlTWFwPy4oKSBhcyBBcnJheTxDbGFzc0F0dHJpYnV0ZURlZj4gfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChhdHRyRGVmQnlGbikgcmV0dXJuIGF0dHJEZWZCeUZuO1xuICAgICAgICBjb25zdCBhdHRyRGVmQnlQcm9wID0gKGNsYXNzVHlwZSBhcyBhbnkpLmF0dHJpYnV0ZVR5cGVNYXAgYXMgQXJyYXk8Q2xhc3NBdHRyaWJ1dGVEZWY+IHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAoYXR0ckRlZkJ5UHJvcCkgcmV0dXJuIGF0dHJEZWZCeVByb3A7XG4gICAgICAgIGNvbnN0IGF0dHJCeU9ialNlciA9IFR5cGVSZWdpc3RyeS5nZXQoKS5maW5kQXR0cmlidXRlc0RlZmluaXRpb25CeUNsYXNzVHlwZShjbGFzc1R5cGUpO1xuICAgICAgICBpZiAoYXR0ckJ5T2JqU2VyKSByZXR1cm4gYXR0ckJ5T2JqU2VyO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBmaW5kQXR0cmlidXRlQnlUeXBlQW5kTmFtZShhdHRyaWJ1dGVzOiBDbGFzc0F0dHJpYnV0ZURlZltdLCB0eXBlczogc3RyaW5nW10sIC4uLm5hbWVzOiBzdHJpbmdbXSk6IENsYXNzQXR0cmlidXRlRGVmIHwgbnVsbCB7XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBuYW1lcykge1xuICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlID0gYXR0cmlidXRlcy5maW5kKGEgPT4gdHlwZXMuc29tZSh0ID0+IHQgPT09IGEudHlwZSkgJiYgYS5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdHJ5U2V0TG9va3VwSXRlbXNQcm9wZXJ0aWVzPFQ+KGxvb2t1cDogSUxvb2t1cERlc2NyaXB0b3I8VD4sIGlkQXNUcmFjayA9IHRydWUpIHtcbiAgICAgICAgaWYgKGxvb2t1cC5kYXRhUHJvdmlkZXIuY2xhc3NUeXBlKSB7XG4gICAgICAgICAgICBpZiAoIWxvb2t1cC5vcHRpb25zVmFsdWVQcm9wZXJ0eSAmJiAhbG9va3VwLm9wdGlvbnNUcmFja1Byb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRQcm9wZXJ0eSA9IE1vZGVsVXRpbC5maW5kSWRBdHRyaWJ1dGUobG9va3VwLmRhdGFQcm92aWRlci5jbGFzc1R5cGUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBpZiAoaWRQcm9wZXJ0eSAmJiAhbG9va3VwLm9wdGlvbnNWYWx1ZVByb3BlcnR5ICYmICFsb29rdXAub3B0aW9uc1RyYWNrUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkQXNUcmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwLndpdGhPcHRpb25zVHJhY2tQcm9wZXJ0eVVuc2FmZShpZFByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9va3VwLm9wdGlvbnNMYWJlbFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFiZWxQcm9wZXJ0eSA9IE1vZGVsVXRpbC5maW5kVGl0bGVBdHRyaWJ1dGUobG9va3VwLmRhdGFQcm92aWRlci5jbGFzc1R5cGUpO1xuICAgICAgICAgICAgICAgIGlmIChsYWJlbFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGxvb2t1cC53aXRoT3B0aW9uc0xhYmVsUHJvcGVydHlVbnNhZmUobGFiZWxQcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -49,4 +49,4 @@ export class NotificationUtil {
|
|
|
49
49
|
return { severity: 'warn', summary: actionErrorTitle, detail: actionErrorMessage };
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL25vdGlmaWNhdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRXRDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDbEIsTUFBTSxDQUFDLFlBQVksQ0FDdEIsYUFBd0MsRUFDeEMsS0FBYyxFQUNkLE9BQWdCLEVBQ2hCLFdBQXlDLFNBQVMsRUFDbEQsSUFBYTtRQUViLE1BQU0sY0FBYyxHQUFHLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO1FBQzFELE1BQU0sWUFBWSxHQUFZLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztRQUUzSSxJQUFJLGNBQWMsRUFBRTtZQUNoQixjQUFjLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3BDO2FBQU07WUFDSCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0ZBQXdGLENBQUMsQ0FBQztTQUN6SDtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsU0FBMkIsRUFBRSxLQUEyQixFQUFFLEtBQVUsRUFBRSxhQUF3QztRQUMvSSxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFDdkIsSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsS0FBSyxLQUFLLENBQUMsT0FB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LENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUMzRSxPQUFPLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFDLENBQUM7SUFDckYsQ0FBQztJQUVNLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxTQUEyQixFQUFFLEtBQWEsRUFBRSxPQUFlO1FBQ2pHLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUM7UUFDL0QsTUFBTSxrQkFBa0IsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUNuRSxPQUFPLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFDLENBQUM7SUFDckYsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7TWVzc2FnZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3J9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL2FjdGlvbic7XG5pbXBvcnQge1RhYmxlRGVzY3JpcHRvcn0gZnJvbSAnLi4vZGVzY3JpcHRvcnMvdGFibGUnO1xuaW1wb3J0IHtJTW5nRXJyb3IsIElWaWV3Q29udGFpbmVyfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0kxOG5VdGlsc30gZnJvbSAnLi9pMThuLnV0aWwnO1xuXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uVXRpbCB7XG4gICAgcHVibGljIHN0YXRpYyBub3RpZmljYXRpb24oXG4gICAgICAgIHZpZXdDb250YWluZXI/OiBJVmlld0NvbnRhaW5lcjxhbnksIGFueT4sXG4gICAgICAgIHRpdGxlPzogc3RyaW5nLFxuICAgICAgICBtZXNzYWdlPzogc3RyaW5nLFxuICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnIHwgJ3dhcm4nIHwgJ2Vycm9yJyA9ICdzdWNjZXNzJyxcbiAgICAgICAgaWNvbj86IHN0cmluZ1xuICAgICk6IE1lc3NhZ2Uge1xuICAgICAgICBjb25zdCBtZXNzYWdlU2VydmljZSA9IHZpZXdDb250YWluZXI/LmdldE1lc3NhZ2VTZXJ2aWNlKCk7XG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbjogTWVzc2FnZSA9IHtzZXZlcml0eTogc2V2ZXJpdHksIHN1bW1hcnk6IHRpdGxlLCBkZXRhaWw6IG1lc3NhZ2UsIGxpZmU6IHNldmVyaXR5ID09PSAnZXJyb3InID8gMTAwMDAgOiA1MDAwLCBpY29uOiBpY29ufTtcblxuICAgICAgICBpZiAobWVzc2FnZVNlcnZpY2UpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VTZXJ2aWNlLmFkZChub3RpZmljYXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5nZXQoKS53YXJuKGBObyBtZXNzYWdlIHNlcnZpY2Ugd2FzIHByb3ZpZGVkIHRocm91Z2ggdmlldyBjb250YWluZXIsIG1lc3NhZ2Ugd2lsbCBub3QgYmUgZGlzcGxheWVkLmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub3RpZmljYXRpb247XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB0YWJsZU5vdGlmaWNhdGlvbkVycm9yKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgdGFibGU6IFRhYmxlRGVzY3JpcHRvcjxhbnk+LCBlcnJvcjogYW55LCB2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8YW55LCBhbnk+KTogTWVzc2FnZSB7XG4gICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge307XG4gICAgICAgIGlmIChlcnJvcj8ubWVzc2FnZSkge1xuICAgICAgICAgICAgcGFyYW1zLmVycm9yTWVzc2FnZSA9IGA6ICR7ZXJyb3IubWVzc2FnZX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zLmVycm9yTWVzc2FnZSA9ICcuJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YWJsZUVycm9yVGl0bGUgPSBJMThuVXRpbHMuTW9kZWwuZ2V0KHRyYW5zbGF0ZSwgdGFibGUubW9kZWwsICd0YWJsZS5lcnJvci50aXRsZScsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAnZ2VuZXJhbC5lcnJvcicsIHBhcmFtcykgPz8gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCB0YWJsZUVycm9yTWVzc2FnZSA9IEkxOG5VdGlscy5Nb2RlbC5nZXQodHJhbnNsYXRlLCB0YWJsZS5tb2RlbCwgJ3RhYmxlLmVycm9yLm1lc3NhZ2UnLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgJ2dlbmVyYWwuZXJyb3JNZXNzYWdlJywgcGFyYW1zKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBOb3RpZmljYXRpb25VdGlsLm5vdGlmaWNhdGlvbih2aWV3Q29udGFpbmVyLCB0YWJsZUVycm9yVGl0bGUsIHRhYmxlRXJyb3JNZXNzYWdlLCAnZXJyb3InLCAncGktZXhjbGFtYXRpb24tdHJpYW5nbGUnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFjdGlvbk5vdGlmaWNhdGlvblN1Y2Nlc3MoXG4gICAgICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPGFueT4sXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjdXN0b21UaXRsZUtleT86IHN0cmluZyxcbiAgICAgICAgY3VzdG9tTWVzc2FnZUtleT86IHN0cmluZyxcbiAgICAgICAgdmlld0NvbnRhaW5lcj86IElWaWV3Q29udGFpbmVyPGFueSwgYW55PixcbiAgICAgICAgaXRlbT86IGFueVxuICAgICk6IE1lc3NhZ2Uge1xuICAgICAgICBjb25zdCBhY3Rpb25TdWNjZXNzVGl0bGUgPSBJMThuVXRpbHMuQWN0aW9uLmdldCh0cmFuc2xhdGUsIGFjdGlvbiwgJ3N1Y2Nlc3MudGl0bGUnLCBjdXN0b21UaXRsZUtleSwgaXRlbSwgJ2dlbmVyYWwuc3VjY2VzcycsIGZ1bmN0aW9uTmFtZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBhY3Rpb25TdWNjZXNzTWVzc2FnZSA9IEkxOG5VdGlscy5BY3Rpb24uZ2V0KHRyYW5zbGF0ZSwgYWN0aW9uLCAnc3VjY2Vzcy5tZXNzYWdlJywgY3VzdG9tTWVzc2FnZUtleSwgaXRlbSwgJ2dlbmVyYWwuc3VjY2Vzc01lc3NhZ2UnLCBmdW5jdGlvbk5hbWUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvblV0aWwubm90aWZpY2F0aW9uKHZpZXdDb250YWluZXIsIGFjdGlvblN1Y2Nlc3NUaXRsZSwgYWN0aW9uU3VjY2Vzc01lc3NhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aW9uTm90aWZpY2F0aW9uRXJyb3IoXG4gICAgICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPGFueT4sXG4gICAgICAgIGVycm9yOiBJTW5nRXJyb3IsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICB2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8YW55LCBhbnk+LFxuICAgICAgICBpdGVtPzogYW55LFxuICAgICAgICBzZXZlcml0eTogJ3dhcm4nIHwgJ2Vycm9yJyA9ICdlcnJvcidcbiAgICApOiBNZXNzYWdlIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBJMThuVXRpbHMuRXJyb3IuZ2V0KHRyYW5zbGF0ZSwgZXJyb3IpID8/IGVycm9yLm1lc3NhZ2VcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYWN0aW9uRXJyb3JUaXRsZSA9XG4gICAgICAgICAgICBJMThuVXRpbHMuQWN0aW9uLmdldCh0cmFuc2xhdGUsIGFjdGlvbiwgW2BlcnJvci4ke2Z1bmN0aW9uTmFtZX0udGl0bGVgLCAnZXJyb3IudGl0bGUnXSwgYWN0aW9uLnJ1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGUsIGl0ZW0sICdnZW5lcmFsLmVycm9yJywgcGFyYW1zKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGFjdGlvbkVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgICBJMThuVXRpbHMuQWN0aW9uLmdldCh0cmFuc2xhdGUsIGFjdGlvbiwgW2BlcnJvci4ke2Z1bmN0aW9uTmFtZX0ubWVzc2FnZWAsICdlcnJvci5tZXNzYWdlJ10sIGFjdGlvbi5ydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2UsIGl0ZW0sICdnZW5lcmFsLmVycm9yTWVzc2FnZScsIHBhcmFtcykgPz9cbiAgICAgICAgICAgIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvblV0aWwubm90aWZpY2F0aW9uKHZpZXdDb250YWluZXIsIGFjdGlvbkVycm9yVGl0bGUsIGFjdGlvbkVycm9yTWVzc2FnZSwgc2V2ZXJpdHksICdwaS1leGNsYW1hdGlvbi10cmlhbmdsZScpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Rm9ybUVkaXRvckluZm9NZXNzYWdlKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgdGl0bGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnkpOiBNZXNzYWdlIHtcbiAgICAgICAgY29uc3QgYWN0aW9uRXJyb3JUaXRsZSA9IHRyYW5zbGF0ZS5pbnN0YW50KHRpdGxlKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGFjdGlvbkVycm9yTWVzc2FnZSA9IHRyYW5zbGF0ZS5pbnN0YW50KG1lc3NhZ2UsIHBhcmFtcykgPz8gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4ge3NldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6IGFjdGlvbkVycm9yVGl0bGUsIGRldGFpbDogYWN0aW9uRXJyb3JNZXNzYWdlfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEZvcm1FZGl0b3JXYXJuaW5nTWVzc2FnZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IE1lc3NhZ2Uge1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvclRpdGxlID0gdHJhbnNsYXRlLmluc3RhbnQodGl0bGUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYWN0aW9uRXJyb3JNZXNzYWdlID0gdHJhbnNsYXRlLmluc3RhbnQobWVzc2FnZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4ge3NldmVyaXR5OiAnd2FybicsIHN1bW1hcnk6IGFjdGlvbkVycm9yVGl0bGUsIGRldGFpbDogYWN0aW9uRXJyb3JNZXNzYWdlfTtcbiAgICB9XG59XG4iXX0=
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL25vdGlmaWNhdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRXRDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDbEIsTUFBTSxDQUFDLFlBQVksQ0FDdEIsYUFBd0MsRUFDeEMsS0FBYyxFQUNkLE9BQWdCLEVBQ2hCLFdBQXlDLFNBQVMsRUFDbEQsSUFBYTtRQUViLE1BQU0sY0FBYyxHQUFHLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO1FBQzFELE1BQU0sWUFBWSxHQUFZLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztRQUUzSSxJQUFJLGNBQWMsRUFBRTtZQUNoQixjQUFjLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3BDO2FBQU07WUFDSCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0ZBQXdGLENBQUMsQ0FBQztTQUN6SDtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsU0FBMkIsRUFBRSxLQUErQixFQUFFLEtBQVUsRUFBRSxhQUF3QztRQUNuSixNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFDdkIsSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsS0FBSyxLQUFLLENBQUMsT0FB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LENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUMzRSxPQUFPLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFDLENBQUM7SUFDckYsQ0FBQztJQUVNLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxTQUEyQixFQUFFLEtBQWEsRUFBRSxPQUFlO1FBQ2pHLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUM7UUFDL0QsTUFBTSxrQkFBa0IsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUNuRSxPQUFPLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFDLENBQUM7SUFDckYsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7TWVzc2FnZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3J9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL2FjdGlvbic7XG5pbXBvcnQge1RhYmxlRGVzY3JpcHRvckluc3R9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL3RhYmxlJztcbmltcG9ydCB7SU1uZ0Vycm9yLCBJVmlld0NvbnRhaW5lcn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7TW5nTG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHtJMThuVXRpbHN9IGZyb20gJy4vaTE4bi51dGlsJztcblxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblV0aWwge1xuICAgIHB1YmxpYyBzdGF0aWMgbm90aWZpY2F0aW9uKFxuICAgICAgICB2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8YW55LCBhbnk+LFxuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyB8ICd3YXJuJyB8ICdlcnJvcicgPSAnc3VjY2VzcycsXG4gICAgICAgIGljb24/OiBzdHJpbmdcbiAgICApOiBNZXNzYWdlIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZVNlcnZpY2UgPSB2aWV3Q29udGFpbmVyPy5nZXRNZXNzYWdlU2VydmljZSgpO1xuICAgICAgICBjb25zdCBub3RpZmljYXRpb246IE1lc3NhZ2UgPSB7c2V2ZXJpdHk6IHNldmVyaXR5LCBzdW1tYXJ5OiB0aXRsZSwgZGV0YWlsOiBtZXNzYWdlLCBsaWZlOiBzZXZlcml0eSA9PT0gJ2Vycm9yJyA/IDEwMDAwIDogNTAwMCwgaWNvbjogaWNvbn07XG5cbiAgICAgICAgaWYgKG1lc3NhZ2VTZXJ2aWNlKSB7XG4gICAgICAgICAgICBtZXNzYWdlU2VydmljZS5hZGQobm90aWZpY2F0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIE1uZ0xvZ2dlclNlcnZpY2UuZ2V0KCkud2FybihgTm8gbWVzc2FnZSBzZXJ2aWNlIHdhcyBwcm92aWRlZCB0aHJvdWdoIHZpZXcgY29udGFpbmVyLCBtZXNzYWdlIHdpbGwgbm90IGJlIGRpc3BsYXllZC5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm90aWZpY2F0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdGFibGVOb3RpZmljYXRpb25FcnJvcih0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHRhYmxlOiBUYWJsZURlc2NyaXB0b3JJbnN0PGFueT4sIGVycm9yOiBhbnksIHZpZXdDb250YWluZXI/OiBJVmlld0NvbnRhaW5lcjxhbnksIGFueT4pOiBNZXNzYWdlIHtcbiAgICAgICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7fTtcbiAgICAgICAgaWYgKGVycm9yPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICBwYXJhbXMuZXJyb3JNZXNzYWdlID0gYDogJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuZXJyb3JNZXNzYWdlID0gJy4nO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhYmxlRXJyb3JUaXRsZSA9IEkxOG5VdGlscy5Nb2RlbC5nZXQodHJhbnNsYXRlLCB0YWJsZS5tb2RlbCwgJ3RhYmxlLmVycm9yLnRpdGxlJywgdW5kZWZpbmVkLCB1bmRlZmluZWQsICdnZW5lcmFsLmVycm9yJywgcGFyYW1zKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHRhYmxlRXJyb3JNZXNzYWdlID0gSTE4blV0aWxzLk1vZGVsLmdldCh0cmFuc2xhdGUsIHRhYmxlLm1vZGVsLCAndGFibGUuZXJyb3IubWVzc2FnZScsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAnZ2VuZXJhbC5lcnJvck1lc3NhZ2UnLCBwYXJhbXMpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvblV0aWwubm90aWZpY2F0aW9uKHZpZXdDb250YWluZXIsIHRhYmxlRXJyb3JUaXRsZSwgdGFibGVFcnJvck1lc3NhZ2UsICdlcnJvcicsICdwaS1leGNsYW1hdGlvbi10cmlhbmdsZScpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aW9uTm90aWZpY2F0aW9uU3VjY2VzcyhcbiAgICAgICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3IsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjdXN0b21UaXRsZUtleT86IHN0cmluZyxcbiAgICAgICAgY3VzdG9tTWVzc2FnZUtleT86IHN0cmluZyxcbiAgICAgICAgdmlld0NvbnRhaW5lcj86IElWaWV3Q29udGFpbmVyPGFueSwgYW55PixcbiAgICAgICAgaXRlbT86IGFueVxuICAgICk6IE1lc3NhZ2Uge1xuICAgICAgICBjb25zdCBhY3Rpb25TdWNjZXNzVGl0bGUgPSBJMThuVXRpbHMuQWN0aW9uLmdldCh0cmFuc2xhdGUsIGFjdGlvbiwgJ3N1Y2Nlc3MudGl0bGUnLCBjdXN0b21UaXRsZUtleSwgaXRlbSwgJ2dlbmVyYWwuc3VjY2VzcycsIGZ1bmN0aW9uTmFtZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBhY3Rpb25TdWNjZXNzTWVzc2FnZSA9IEkxOG5VdGlscy5BY3Rpb24uZ2V0KHRyYW5zbGF0ZSwgYWN0aW9uLCAnc3VjY2Vzcy5tZXNzYWdlJywgY3VzdG9tTWVzc2FnZUtleSwgaXRlbSwgJ2dlbmVyYWwuc3VjY2Vzc01lc3NhZ2UnLCBmdW5jdGlvbk5hbWUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvblV0aWwubm90aWZpY2F0aW9uKHZpZXdDb250YWluZXIsIGFjdGlvblN1Y2Nlc3NUaXRsZSwgYWN0aW9uU3VjY2Vzc01lc3NhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aW9uTm90aWZpY2F0aW9uRXJyb3IoXG4gICAgICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yLFxuICAgICAgICBlcnJvcjogSU1uZ0Vycm9yLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgdmlld0NvbnRhaW5lcj86IElWaWV3Q29udGFpbmVyPGFueSwgYW55PixcbiAgICAgICAgaXRlbT86IGFueSxcbiAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyB8ICdlcnJvcicgPSAnZXJyb3InXG4gICAgKTogTWVzc2FnZSB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogSTE4blV0aWxzLkVycm9yLmdldCh0cmFuc2xhdGUsIGVycm9yKSA/PyBlcnJvci5tZXNzYWdlXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGFjdGlvbkVycm9yVGl0bGUgPVxuICAgICAgICAgICAgSTE4blV0aWxzLkFjdGlvbi5nZXQodHJhbnNsYXRlLCBhY3Rpb24sIFtgZXJyb3IuJHtmdW5jdGlvbk5hbWV9LnRpdGxlYCwgJ2Vycm9yLnRpdGxlJ10sIGFjdGlvbi5ydW5Ob3RpZmljYXRpb25FcnJvclRpdGxlLCBpdGVtLCAnZ2VuZXJhbC5lcnJvcicsIHBhcmFtcykgPz8gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgSTE4blV0aWxzLkFjdGlvbi5nZXQodHJhbnNsYXRlLCBhY3Rpb24sIFtgZXJyb3IuJHtmdW5jdGlvbk5hbWV9Lm1lc3NhZ2VgLCAnZXJyb3IubWVzc2FnZSddLCBhY3Rpb24ucnVuTm90aWZpY2F0aW9uRXJyb3JNZXNzYWdlLCBpdGVtLCAnZ2VuZXJhbC5lcnJvck1lc3NhZ2UnLCBwYXJhbXMpID8/XG4gICAgICAgICAgICB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBOb3RpZmljYXRpb25VdGlsLm5vdGlmaWNhdGlvbih2aWV3Q29udGFpbmVyLCBhY3Rpb25FcnJvclRpdGxlLCBhY3Rpb25FcnJvck1lc3NhZ2UsIHNldmVyaXR5LCAncGktZXhjbGFtYXRpb24tdHJpYW5nbGUnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEZvcm1FZGl0b3JJbmZvTWVzc2FnZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zPzogYW55KTogTWVzc2FnZSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbkVycm9yVGl0bGUgPSB0cmFuc2xhdGUuaW5zdGFudCh0aXRsZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvck1lc3NhZ2UgPSB0cmFuc2xhdGUuaW5zdGFudChtZXNzYWdlLCBwYXJhbXMpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHtzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiBhY3Rpb25FcnJvclRpdGxlLCBkZXRhaWw6IGFjdGlvbkVycm9yTWVzc2FnZX07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRGb3JtRWRpdG9yV2FybmluZ01lc3NhZ2UodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCB0aXRsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiBNZXNzYWdlIHtcbiAgICAgICAgY29uc3QgYWN0aW9uRXJyb3JUaXRsZSA9IHRyYW5zbGF0ZS5pbnN0YW50KHRpdGxlKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGFjdGlvbkVycm9yTWVzc2FnZSA9IHRyYW5zbGF0ZS5pbnN0YW50KG1lc3NhZ2UpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHtzZXZlcml0eTogJ3dhcm4nLCBzdW1tYXJ5OiBhY3Rpb25FcnJvclRpdGxlLCBkZXRhaWw6IGFjdGlvbkVycm9yTWVzc2FnZX07XG4gICAgfVxufVxuIl19
|