@eo-sdk/client 10.0.0-beta.4 → 10.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/app/eo-client/about-state/about-state.component.d.ts +0 -5
- package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/dashboard.component.d.ts +25 -33
- package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts +19 -0
- package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.d.ts +24 -0
- package/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts +20 -0
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.d.ts +19 -0
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox.model.d.ts +4 -0
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox.model.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts +25 -0
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.d.ts +20 -0
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray.model.d.ts +4 -0
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray.model.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts +28 -0
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts +44 -0
- package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts.map +1 -0
- package/app/eo-client/eo-client.module.d.ts +24 -13
- package/app/eo-client/eo-client.module.d.ts.map +1 -1
- package/app/eo-client/favorite-state/favorite-state.component.d.ts +7 -8
- package/app/eo-client/favorite-state/favorite-state.component.d.ts.map +1 -1
- package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts +8 -10
- package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
- package/app/eo-client/login/login.component.d.ts +12 -5
- package/app/eo-client/login/login.component.d.ts.map +1 -1
- package/app/eo-client/notifications-state/notifications-state.component.d.ts +9 -11
- package/app/eo-client/notifications-state/notifications-state.component.d.ts.map +1 -1
- package/app/eo-client/object-state/object-state/object-state.component.d.ts +10 -11
- package/app/eo-client/object-state/object-state/object-state.component.d.ts.map +1 -1
- package/app/eo-client/prepare-state/prepare-state/prepare-state.component.d.ts +8 -9
- package/app/eo-client/prepare-state/prepare-state/prepare-state.component.d.ts.map +1 -1
- package/app/eo-client/process-state/process-state.component.d.ts +8 -10
- package/app/eo-client/process-state/process-state.component.d.ts.map +1 -1
- package/app/eo-client/recyclebin-state/recyclebin-state.component.d.ts +5 -6
- package/app/eo-client/recyclebin-state/recyclebin-state.component.d.ts.map +1 -1
- package/app/eo-client/result-state/result-state.component.d.ts +3 -5
- package/app/eo-client/result-state/result-state.component.d.ts.map +1 -1
- package/app/eo-client/settings/settings.component.d.ts +6 -7
- package/app/eo-client/settings/settings.component.d.ts.map +1 -1
- package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts +8 -10
- package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts.map +1 -1
- package/app/eo-client/version-state/version-state.component.d.ts +5 -7
- package/app/eo-client/version-state/version-state.component.d.ts.map +1 -1
- package/app/eo-framework/accordion/accordion.module.d.ts +1 -2
- package/app/eo-framework/accordion/accordion.module.d.ts.map +1 -1
- package/app/eo-framework/actions/action-menu/action-menu.component.d.ts +4 -5
- package/app/eo-framework/actions/action-menu/action-menu.component.d.ts.map +1 -1
- package/app/eo-framework/actions/action.module.d.ts +11 -10
- package/app/eo-framework/actions/action.module.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.d.ts +3 -2
- package/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.d.ts +9 -13
- package/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.d.ts.map +1 -1
- package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts +3 -4
- package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts.map +1 -1
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
- package/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.d.ts +1 -2
- package/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.d.ts.map +1 -1
- package/app/eo-framework/app-shell/app-shell.module.d.ts +18 -20
- package/app/eo-framework/app-shell/app-shell.module.d.ts.map +1 -1
- package/app/eo-framework/app-shell/index.d.ts +0 -1
- package/app/eo-framework/app-shell/index.d.ts.map +1 -1
- package/app/eo-framework/eo-framework.module.d.ts +37 -38
- package/app/eo-framework/eo-framework.module.d.ts.map +1 -1
- package/app/eo-framework/form-elements/date/date.component.d.ts +0 -2
- package/app/eo-framework/form-elements/date/date.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/form-elements.module.d.ts +9 -18
- package/app/eo-framework/form-elements/form-elements.module.d.ts.map +1 -1
- package/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.d.ts +1 -0
- package/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.d.ts.map +1 -1
- package/app/eo-framework/grid/filters/datetime-filter.component.d.ts +0 -2
- package/app/eo-framework/grid/filters/datetime-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/grid.component.d.ts +7 -8
- package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
- package/app/eo-framework/grid/grid.module.d.ts +7 -8
- package/app/eo-framework/grid/grid.module.d.ts.map +1 -1
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts +1 -2
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
- package/app/eo-framework/index.d.ts +0 -4
- package/app/eo-framework/index.d.ts.map +1 -1
- package/app/eo-framework/media/media.component.d.ts +4 -3
- package/app/eo-framework/media/media.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/favorite-icon/favorite-icon.component.d.ts +2 -3
- package/app/eo-framework/object-details/favorite-icon/favorite-icon.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-details.component.d.ts +14 -6
- package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-details.module.d.ts +2 -1
- package/app/eo-framework/object-details/object-details.module.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-history/object-history.component.d.ts +2 -3
- package/app/eo-framework/object-details/object-history/object-history.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.d.ts +10 -0
- package/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.d.ts.map +1 -0
- package/app/eo-framework/object-form/object-form/form-element/form-element.component.d.ts +8 -3
- package/app/eo-framework/object-form/object-form/form-element/form-element.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +1 -2
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element.interface.d.ts +7 -2
- package/app/eo-framework/object-form/object-form/form-element-table/form-element.interface.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +28 -11
- package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/object-form.component.d.ts +1 -2
- package/app/eo-framework/object-form/object-form/object-form.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form.module.d.ts +9 -9
- package/app/eo-framework/object-state-details/object-state-details.component.d.ts +1 -2
- package/app/eo-framework/object-state-details/object-state-details.component.d.ts.map +1 -1
- package/app/eo-framework/prepare-details/prepare-details.component.d.ts +8 -9
- package/app/eo-framework/prepare-details/prepare-details.component.d.ts.map +1 -1
- package/app/eo-framework/process/details/process-details.component.d.ts +7 -8
- package/app/eo-framework/process/details/process-details.component.d.ts.map +1 -1
- package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts +9 -11
- package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts.map +1 -1
- package/app/eo-framework/result-list/result-list.component.d.ts +5 -6
- package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
- package/app/eo-framework/settings/settings.module.d.ts +3 -4
- package/app/eo-framework/settings/settings.module.d.ts.map +1 -1
- package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts +4 -5
- package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts.map +1 -1
- package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +2 -3
- package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts.map +1 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts +1 -0
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts.map +1 -1
- package/app/eo-framework/ui/outside-click/outside-click.directive.d.ts +1 -2
- package/app/eo-framework/ui/outside-click/outside-click.directive.d.ts.map +1 -1
- package/app/eo-framework/ui/signature-tab/signature-tab.component.d.ts +0 -1
- package/app/eo-framework/ui/signature-tab/signature-tab.component.d.ts.map +1 -1
- package/app/eo-framework/util/index.d.ts +0 -1
- package/app/eo-framework/util/index.d.ts.map +1 -1
- package/app/eo-framework/util/util.module.d.ts +0 -1
- package/app/eo-framework/util/util.module.d.ts.map +1 -1
- package/app/eo-framework-core/layout/layout.service.d.ts +2 -26
- package/app/eo-framework-core/layout/layout.service.d.ts.map +1 -1
- package/app/eo-framework-core/pipes/locale-number.pipe.d.ts +2 -3
- package/app/eo-framework-core/pipes/locale-number.pipe.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +32 -2
- package/assets/_default/i18n/en.json +37 -7
- package/assets/_default/svg/ic_add_document_file_as_new_version.svg +1 -0
- package/assets/_default/svg/ic_create_document.svg +1 -0
- package/assets/_default/svg/ic_create_document_in_folder.svg +1 -0
- package/assets/_default/svg/ic_noUrl.svg +1 -0
- package/assets/dashboard.json +47 -0
- package/esm2020/app/eo-client/about-state/about-state.component.mjs +5 -11
- package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +143 -98
- package/esm2020/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +59 -0
- package/esm2020/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.mjs +39 -0
- package/esm2020/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.mjs +53 -0
- package/esm2020/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +42 -0
- package/esm2020/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox.model.mjs +2 -0
- package/esm2020/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +65 -0
- package/esm2020/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.mjs +43 -0
- package/esm2020/app/eo-client/dashboard/widgets/info-intray-widget/info-intray.model.mjs +2 -0
- package/esm2020/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +117 -0
- package/esm2020/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +115 -0
- package/esm2020/app/eo-client/eo-client.module.mjs +44 -6
- package/esm2020/app/eo-client/favorite-state/favorite-state.component.mjs +15 -14
- package/esm2020/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +14 -11
- package/esm2020/app/eo-client/login/login.component.mjs +33 -13
- package/esm2020/app/eo-client/notifications-state/notifications-state.component.mjs +16 -12
- package/esm2020/app/eo-client/object-state/object-state/object-state.component.mjs +27 -23
- package/esm2020/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +12 -9
- package/esm2020/app/eo-client/process-state/process-state.component.mjs +6 -9
- package/esm2020/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +14 -11
- package/esm2020/app/eo-client/result-state/result-state.component.mjs +11 -8
- package/esm2020/app/eo-client/settings/settings.component.mjs +16 -12
- package/esm2020/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +16 -13
- package/esm2020/app/eo-client/version-state/version-state.component.mjs +13 -10
- package/esm2020/app/eo-framework/accordion/accordion.module.mjs +3 -7
- package/esm2020/app/eo-framework/accordion/simple-accordion/simple-accordion.component.mjs +3 -3
- package/esm2020/app/eo-framework/actions/action-menu/action-menu.component.mjs +15 -11
- package/esm2020/app/eo-framework/actions/action.module.mjs +5 -2
- package/esm2020/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +5 -7
- package/esm2020/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +3 -3
- package/esm2020/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +2 -2
- package/esm2020/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.mjs +43 -48
- package/esm2020/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +2 -2
- package/esm2020/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +2 -2
- package/esm2020/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +16 -14
- package/esm2020/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +8 -3
- package/esm2020/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.mjs +4 -6
- package/esm2020/app/eo-framework/app-shell/app-shell.module.mjs +1 -8
- package/esm2020/app/eo-framework/app-shell/index.mjs +1 -2
- package/esm2020/app/eo-framework/eo-framework.module.mjs +35 -43
- package/esm2020/app/eo-framework/form-elements/date/date.component.mjs +2 -12
- package/esm2020/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +3 -3
- package/esm2020/app/eo-framework/form-elements/form-elements.module.mjs +28 -37
- package/esm2020/app/eo-framework/form-elements/form-input/form-input.component.mjs +3 -3
- package/esm2020/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +10 -6
- package/esm2020/app/eo-framework/form-elements/organization/organization.component.mjs +3 -3
- package/esm2020/app/eo-framework/form-elements/reference/reference.component.mjs +5 -6
- package/esm2020/app/eo-framework/form-elements/string/string.component.mjs +2 -2
- package/esm2020/app/eo-framework/frame/frame.component.mjs +2 -2
- package/esm2020/app/eo-framework/grid/filters/datetime-filter.component.mjs +2 -6
- package/esm2020/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +3 -3
- package/esm2020/app/eo-framework/grid/filters/organization-filter.component.mjs +3 -3
- package/esm2020/app/eo-framework/grid/grid.component.mjs +16 -12
- package/esm2020/app/eo-framework/grid/grid.module.mjs +1 -5
- package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +16 -11
- package/esm2020/app/eo-framework/index.mjs +1 -5
- package/esm2020/app/eo-framework/media/media.component.mjs +31 -12
- package/esm2020/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +13 -10
- package/esm2020/app/eo-framework/object-details/object-details.component.mjs +64 -38
- package/esm2020/app/eo-framework/object-details/object-details.module.mjs +7 -3
- package/esm2020/app/eo-framework/object-details/object-history/object-history.component.mjs +13 -9
- package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.mjs +18 -0
- package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +20 -6
- package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +21 -22
- package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element.interface.mjs +1 -1
- package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +94 -32
- package/esm2020/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +6 -4
- package/esm2020/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +2 -3
- package/esm2020/app/eo-framework/object-form/object-form/object-form.component.mjs +3 -5
- package/esm2020/app/eo-framework/object-form/object-form-helper.service.mjs +2 -2
- package/esm2020/app/eo-framework/object-form/object-form.module.mjs +9 -10
- package/esm2020/app/eo-framework/object-state-details/object-state-details.component.mjs +15 -13
- package/esm2020/app/eo-framework/prepare-details/prepare-details.component.mjs +16 -14
- package/esm2020/app/eo-framework/process/details/process-details.component.mjs +16 -12
- package/esm2020/app/eo-framework/process-form/process-form.component.mjs +2 -2
- package/esm2020/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +25 -17
- package/esm2020/app/eo-framework/result-list/result-list.component.mjs +21 -15
- package/esm2020/app/eo-framework/settings/settings.module.mjs +1 -5
- package/esm2020/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +17 -13
- package/esm2020/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +12 -8
- package/esm2020/app/eo-framework/ui/eo-icon/eo-icon.component.mjs +2 -2
- package/esm2020/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +20 -12
- package/esm2020/app/eo-framework/ui/outside-click/outside-click.directive.mjs +11 -8
- package/esm2020/app/eo-framework/ui/signature-tab/signature-tab.component.mjs +3 -6
- package/esm2020/app/eo-framework/upload-overlay/upload-overlay.component.mjs +3 -3
- package/esm2020/app/eo-framework/util/index.mjs +1 -2
- package/esm2020/app/eo-framework/util/util.module.mjs +2 -3
- package/esm2020/app/eo-framework-core/layout/layout.service.mjs +61 -63
- package/esm2020/app/eo-framework-core/pipes/locale-number.pipe.mjs +11 -8
- package/esm2020/projects/eo-sdk/core/lib/eo-core.module.mjs +8 -8
- package/esm2020/projects/eo-sdk/core/lib/model/inbox-item.model.mjs +2 -6
- package/esm2020/projects/eo-sdk/core/lib/service/auth/auth.service.mjs +24 -30
- package/esm2020/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.mjs +1 -1
- package/esm2020/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.mjs +8 -6
- package/esm2020/projects/eo-sdk/core/lib/service/config/config.service.mjs +1 -1
- package/esm2020/projects/eo-sdk/core/lib/service/dms/dms.service.mjs +14 -16
- package/esm2020/projects/eo-sdk/core/lib/service/prepare/prepare.service.mjs +15 -12
- package/esm2020/projects/eo-sdk/core/lib/service/signing/signing.service.mjs +12 -6
- package/esm2020/projects/eo-sdk/core/lib/service/system/system.service.mjs +2 -6
- package/esm2020/projects/eo-sdk/core/lib/service/user/user.service.mjs +11 -1
- package/esm2020/projects/eo-sdk/core/lib/util/utils.mjs +3 -3
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +1069 -1066
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
- package/fesm2015/eo-sdk-client.mjs +14808 -15012
- package/fesm2015/eo-sdk-client.mjs.map +1 -1
- package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +1069 -1066
- package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
- package/fesm2020/eo-sdk-client.mjs +16587 -16787
- package/fesm2020/eo-sdk-client.mjs.map +1 -1
- package/package.json +5 -5
- package/projects/eo-sdk/core/lib/eo-core.module.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts +14 -20
- package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts +4 -0
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.d.ts +3 -1
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/service/config/config.service.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +10 -8
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts +1 -0
- package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts +4 -1
- package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/service/system/system.service.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/service/user/user.service.d.ts +6 -0
- package/projects/eo-sdk/core/lib/service/user/user.service.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/util/utils.d.ts +3 -4
- package/projects/eo-sdk/core/lib/util/utils.d.ts.map +1 -1
- package/scss/_eo-variables.scss +1 -0
- package/scss/_main.scss +1 -1
- package/scss/_mixins.scss +6 -6
- package/styles.css +2 -1
- package/app/eo-framework/app-shell/app-bar/app-layout/app-layout.component.d.ts +0 -24
- package/app/eo-framework/app-shell/app-bar/app-layout/app-layout.component.d.ts.map +0 -1
- package/app/eo-framework/split/index.d.ts +0 -5
- package/app/eo-framework/split/index.d.ts.map +0 -1
- package/app/eo-framework/split/split/split.component.d.ts +0 -83
- package/app/eo-framework/split/split/split.component.d.ts.map +0 -1
- package/app/eo-framework/split/split-area/split-area.component.d.ts +0 -37
- package/app/eo-framework/split/split-area/split-area.component.d.ts.map +0 -1
- package/app/eo-framework/split/split-gutter/split-gutter.directive.d.ts +0 -21
- package/app/eo-framework/split/split-gutter/split-gutter.directive.d.ts.map +0 -1
- package/app/eo-framework/split/split.module.d.ts +0 -12
- package/app/eo-framework/split/split.module.d.ts.map +0 -1
- package/app/eo-framework/undock-split/undock-split.component.d.ts +0 -28
- package/app/eo-framework/undock-split/undock-split.component.d.ts.map +0 -1
- package/app/eo-framework/undock-split/undock-split.service.d.ts +0 -43
- package/app/eo-framework/undock-split/undock-split.service.d.ts.map +0 -1
- package/app/eo-framework/undock-split/undock-state.interface.d.ts +0 -6
- package/app/eo-framework/undock-split/undock-state.interface.d.ts.map +0 -1
- package/app/eo-framework/util/unsubscribe/unsubscribe.component.d.ts +0 -11
- package/app/eo-framework/util/unsubscribe/unsubscribe.component.d.ts.map +0 -1
- package/esm2020/app/eo-framework/app-shell/app-bar/app-layout/app-layout.component.mjs +0 -67
- package/esm2020/app/eo-framework/split/index.mjs +0 -5
- package/esm2020/app/eo-framework/split/split/split.component.mjs +0 -373
- package/esm2020/app/eo-framework/split/split-area/split-area.component.mjs +0 -131
- package/esm2020/app/eo-framework/split/split-gutter/split-gutter.directive.mjs +0 -73
- package/esm2020/app/eo-framework/split/split.module.mjs +0 -28
- package/esm2020/app/eo-framework/undock-split/undock-split.component.mjs +0 -89
- package/esm2020/app/eo-framework/undock-split/undock-split.service.mjs +0 -135
- package/esm2020/app/eo-framework/undock-split/undock-state.interface.mjs +0 -2
- package/esm2020/app/eo-framework/util/unsubscribe/unsubscribe.component.mjs +0 -23
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, ViewChildren } from '@angular/core';
|
|
2
3
|
import { EnaioEvent, SubscriptionMode, UploadTarget, Utils, } from '@eo-sdk/core';
|
|
3
4
|
import { of } from 'rxjs';
|
|
4
|
-
import { map
|
|
5
|
+
import { map } from 'rxjs/operators';
|
|
6
|
+
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
|
5
7
|
import { EmptyStateService } from '../../eo-framework-core/empty-state/empty-state.service';
|
|
6
8
|
import { LocaleDatePipe } from '../../eo-framework-core/pipes/locale-date.pipe';
|
|
7
9
|
import { ContentPreviewService } from '../media/content-preview.service';
|
|
8
10
|
import { Shortcut } from '../shortcuts/shortcut.interface';
|
|
9
|
-
import {
|
|
11
|
+
import { Tabs } from '@yuuvis/components/tabs';
|
|
10
12
|
import * as i0 from "@angular/core";
|
|
11
13
|
import * as i1 from "@angular/router";
|
|
12
14
|
import * as i2 from "@eo-sdk/core";
|
|
@@ -27,11 +29,20 @@ import * as i16 from "../ui/error-message/error-message.component";
|
|
|
27
29
|
import * as i17 from "../ui/signature-tab/signature-tab.component";
|
|
28
30
|
import * as i18 from "@yuuvis/components/tabs";
|
|
29
31
|
import * as i19 from "@yuuvis/components/split-tabs";
|
|
30
|
-
import * as i20 from "
|
|
31
|
-
import * as i21 from "./object-
|
|
32
|
-
import * as i22 from "./
|
|
33
|
-
import * as i23 from "./
|
|
34
|
-
|
|
32
|
+
import * as i20 from "@yuuvis/components/split-view";
|
|
33
|
+
import * as i21 from "./object-history/object-history.component";
|
|
34
|
+
import * as i22 from "./object-links/object-links.component";
|
|
35
|
+
import * as i23 from "./favorite-icon/favorite-icon.component";
|
|
36
|
+
import * as i24 from "./edit-icon/edit-icon.component";
|
|
37
|
+
import * as i25 from "../../eo-framework-core/pipes/locale-date.pipe";
|
|
38
|
+
let ObjectDetailsComponent = class ObjectDetailsComponent {
|
|
39
|
+
set panelOrder(po) {
|
|
40
|
+
this._panelOrder = po;
|
|
41
|
+
this._checkCapabilities();
|
|
42
|
+
}
|
|
43
|
+
get panelOrder() {
|
|
44
|
+
return this._panelOrder;
|
|
45
|
+
}
|
|
35
46
|
set reference(isRef) {
|
|
36
47
|
this.isReference = isRef;
|
|
37
48
|
}
|
|
@@ -55,13 +66,14 @@ export class ObjectDetailsComponent extends UnsubscribeOnDestroy {
|
|
|
55
66
|
}, Utils.throw(() => this.onHasError(true, true, false)));
|
|
56
67
|
}
|
|
57
68
|
set dmsObject(v) {
|
|
69
|
+
const isDifferent = this.item?.id !== v?.id;
|
|
58
70
|
this.item = v;
|
|
59
71
|
this.onHasError();
|
|
60
72
|
// prepare indexdata preview
|
|
61
73
|
this.onIndexDataSaved(null, this.item);
|
|
62
74
|
this.eventService.trigger(EnaioEvent.DMS_OBJECT_LOADED, this.item);
|
|
63
75
|
if (this.item) {
|
|
64
|
-
if (this.item.isActiveVersion && !this.enableCompare) {
|
|
76
|
+
if (isDifferent && this.item.isActiveVersion && !this.enableCompare) {
|
|
65
77
|
this.uploadTarget.referenceObject = this.item;
|
|
66
78
|
this.uploadTarget.onUploadSuccess = () => this.dmsParams = { id: v.id, type: v.typeName };
|
|
67
79
|
this.uploadRegistry.register(this.uploadTarget);
|
|
@@ -80,15 +92,15 @@ export class ObjectDetailsComponent extends UnsubscribeOnDestroy {
|
|
|
80
92
|
}
|
|
81
93
|
}
|
|
82
94
|
set dmsObject2(v) {
|
|
83
|
-
this.item2 = v;
|
|
95
|
+
this.item2 = structuredClone(v);
|
|
84
96
|
this.onHasError();
|
|
85
97
|
this.onIndexDataSaved(null, this.item2);
|
|
86
98
|
}
|
|
87
99
|
get dataType() {
|
|
88
100
|
return this.item ? this.item.typeName : 'none';
|
|
89
101
|
}
|
|
102
|
+
// undockWinActive = false;
|
|
90
103
|
constructor(router, route, system, empty, agentService, backend, dmsService, selection, actionService, capabilityService, uploadRegistry, eventService, configService, translate) {
|
|
91
|
-
super();
|
|
92
104
|
this.router = router;
|
|
93
105
|
this.route = route;
|
|
94
106
|
this.system = system;
|
|
@@ -108,7 +120,7 @@ export class ObjectDetailsComponent extends UnsubscribeOnDestroy {
|
|
|
108
120
|
this.hasError = false;
|
|
109
121
|
this.nodmsobject = false;
|
|
110
122
|
this.showLoader = false;
|
|
111
|
-
this.
|
|
123
|
+
this._panelOrder = { 'master': ['summary', 'indexdata', 'history', 'links', 'signature'], 'slave': ['preview'] };
|
|
112
124
|
this.agentIsConnected$ = this.agentService.isConnected$;
|
|
113
125
|
this.split = false;
|
|
114
126
|
this.enableCompare = false;
|
|
@@ -116,10 +128,6 @@ export class ObjectDetailsComponent extends UnsubscribeOnDestroy {
|
|
|
116
128
|
this.enableDiff = true;
|
|
117
129
|
this.enableSync = true;
|
|
118
130
|
this._emptyState = { icon: 'ic_no-file.svg', text: '', className: '' };
|
|
119
|
-
// externalPanels = new QueryList<TabPanelComponent>();
|
|
120
|
-
// @ContentChildren(TabPanelComponent) tabPanels: QueryList<TabPanelComponent>;
|
|
121
|
-
// @ContentChildren(TabPluginComponent)
|
|
122
|
-
// tabPlugins: QueryList<TabPluginComponent>;
|
|
123
131
|
this.preventClickThrough = false;
|
|
124
132
|
// shortcut actions
|
|
125
133
|
this.shortcuts = {
|
|
@@ -153,23 +161,13 @@ export class ObjectDetailsComponent extends UnsubscribeOnDestroy {
|
|
|
153
161
|
};
|
|
154
162
|
this.parseDmsParams = this.getDmsParams;
|
|
155
163
|
this.hasContent = new EventEmitter();
|
|
156
|
-
this.undockWinActive = false;
|
|
157
164
|
this.panelOrder = this.configService.getRaw('objectDetailsTabs') || this.panelOrder;
|
|
158
|
-
this.undockWinActive = ContentPreviewService.undockWinActive();
|
|
159
165
|
this.agentService.setAgentStatus(this.route.snapshot.queryParams['connectagent']).subscribe((hasStatus) => {
|
|
160
166
|
if (hasStatus) {
|
|
161
167
|
this.router.navigate([], { queryParams: { connectagent: null }, queryParamsHandling: 'merge' });
|
|
162
168
|
}
|
|
163
169
|
});
|
|
164
170
|
}
|
|
165
|
-
// onTabSplit(e: TabSplitEvent) {
|
|
166
|
-
// this.splitTabContainer?.addTab(e.tab, true, e.view);
|
|
167
|
-
// this.split = !!this.splitTabContainer.tabs?.length;
|
|
168
|
-
// }
|
|
169
|
-
// onTabRemove(e: TabSplitEvent) {
|
|
170
|
-
// this.firstTabContainer?.addTab(e.tab, true, e.view);
|
|
171
|
-
// this.split = !!this.splitTabContainer.tabs?.length;
|
|
172
|
-
// }
|
|
173
171
|
getDmsParams(data) {
|
|
174
172
|
return data ? { ...data, type: data.typeName || data.type } : null;
|
|
175
173
|
}
|
|
@@ -179,7 +177,7 @@ export class ObjectDetailsComponent extends UnsubscribeOnDestroy {
|
|
|
179
177
|
this.selection
|
|
180
178
|
.find(this.applySelection.in)
|
|
181
179
|
.selection$
|
|
182
|
-
.pipe(
|
|
180
|
+
.pipe(untilDestroyed(this))
|
|
183
181
|
.subscribe((res) => {
|
|
184
182
|
this.dmsParams = this.parseDmsParams(res[0]);
|
|
185
183
|
this.dmsParams2 = this.parseDmsParams(res[1]);
|
|
@@ -190,7 +188,7 @@ export class ObjectDetailsComponent extends UnsubscribeOnDestroy {
|
|
|
190
188
|
this.selection
|
|
191
189
|
.find(this.applySelection.in)
|
|
192
190
|
.focus$
|
|
193
|
-
.pipe(
|
|
191
|
+
.pipe(untilDestroyed(this))
|
|
194
192
|
.subscribe(res => {
|
|
195
193
|
this.showLoader = true;
|
|
196
194
|
this.loadDmsObject(this.parseDmsParams(res)).subscribe((res) => {
|
|
@@ -293,15 +291,21 @@ export class ObjectDetailsComponent extends UnsubscribeOnDestroy {
|
|
|
293
291
|
});
|
|
294
292
|
}
|
|
295
293
|
}
|
|
294
|
+
onCompareTabChange(event) {
|
|
295
|
+
if (this.enableSync) {
|
|
296
|
+
this.tabContainers.forEach(t => {
|
|
297
|
+
if (t.selectedTab !== event) {
|
|
298
|
+
t.selectById(event);
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
}
|
|
296
303
|
get referenceTitle() {
|
|
297
304
|
return this.item.contextFolder ? this.item.contextFolder.title : this.item.title;
|
|
298
305
|
}
|
|
299
306
|
isJournalObject(item) {
|
|
300
307
|
return item.type.supertypes.find(sT => sT === 'sysjournalobject');
|
|
301
308
|
}
|
|
302
|
-
hasSigningObjectType() {
|
|
303
|
-
return !!this.system.getObjectTypes().find(objectType => objectType.supertypes.includes('yuvsigning'));
|
|
304
|
-
}
|
|
305
309
|
createSubscriptionIconTooltip(item) {
|
|
306
310
|
let tooltip = '';
|
|
307
311
|
const modes = this.item.subscriptions.map(subscription => subscription.mode);
|
|
@@ -319,14 +323,29 @@ export class ObjectDetailsComponent extends UnsubscribeOnDestroy {
|
|
|
319
323
|
}
|
|
320
324
|
return tooltip;
|
|
321
325
|
}
|
|
326
|
+
_checkCapabilities() {
|
|
327
|
+
if (!this.capabilities)
|
|
328
|
+
return;
|
|
329
|
+
if (!this.capabilities.signing) {
|
|
330
|
+
this._panelOrder.master = this._panelOrder?.master?.length ?
|
|
331
|
+
this._panelOrder.master.filter(id => id !== 'signature') : [];
|
|
332
|
+
this._panelOrder.slave = this._panelOrder?.slave?.length ?
|
|
333
|
+
this._panelOrder.slave.filter(id => id !== 'signature') : [];
|
|
334
|
+
}
|
|
335
|
+
this.splitTabConfig = structuredClone({
|
|
336
|
+
primary: this._panelOrder?.master?.length ? { tabs: this._panelOrder.master, active: this._panelOrder.master[0] } : undefined,
|
|
337
|
+
secondary: this._panelOrder?.slave?.length ? { tabs: this._panelOrder.slave, active: this._panelOrder.slave[0] } : undefined,
|
|
338
|
+
});
|
|
339
|
+
}
|
|
322
340
|
ngOnInit() {
|
|
323
341
|
this.capabilities = this.capabilityService.getCapabilities();
|
|
342
|
+
this._checkCapabilities();
|
|
324
343
|
this.updateContent();
|
|
325
344
|
this.eventService
|
|
326
345
|
.on(EnaioEvent.DMS_OBJECT_UPDATED)
|
|
327
|
-
.pipe(
|
|
346
|
+
.pipe(untilDestroyed(this))
|
|
328
347
|
.subscribe(event => {
|
|
329
|
-
if (event.data && this.item.id === event.data.id) {
|
|
348
|
+
if (event.data && this.item && this.item.id === event.data.id) {
|
|
330
349
|
this.dmsObject = this.dmsService.createLocalCopyOfDMSObject(event.data);
|
|
331
350
|
if (this.preview) {
|
|
332
351
|
this.preview.refresh();
|
|
@@ -335,7 +354,7 @@ export class ObjectDetailsComponent extends UnsubscribeOnDestroy {
|
|
|
335
354
|
});
|
|
336
355
|
this.eventService
|
|
337
356
|
.on(EnaioEvent.INBOX_ITEM_CONFIRMED)
|
|
338
|
-
.pipe(
|
|
357
|
+
.pipe(untilDestroyed(this))
|
|
339
358
|
.subscribe(event => {
|
|
340
359
|
if (this.item && this.item.id === event.data.target.id) {
|
|
341
360
|
this.dmsParams = null;
|
|
@@ -350,15 +369,22 @@ export class ObjectDetailsComponent extends UnsubscribeOnDestroy {
|
|
|
350
369
|
ngOnDestroy() {
|
|
351
370
|
this.uploadRegistry.unregister(this.uploadTarget.id);
|
|
352
371
|
}
|
|
353
|
-
}
|
|
372
|
+
};
|
|
354
373
|
ObjectDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObjectDetailsComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.SystemService }, { token: i3.EmptyStateService }, { token: i4.AgentService }, { token: i2.BackendService }, { token: i2.DmsService }, { token: i5.SelectionService }, { token: i6.ActionService }, { token: i2.CapabilitiesService }, { token: i2.UploadRegistryService }, { token: i2.EventService }, { token: i2.Config }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
355
|
-
ObjectDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: { reference: "reference", searchTerm: "searchTerm", enableCompare: "enableCompare", recyclebinTabs: "recyclebinTabs", enableDiff: "enableDiff", enableSync: "enableSync", cacheLayout: "cacheLayout", emptyState: "emptyState", dmsParams: ["params", "dmsParams"], dmsParams2: ["params2", "dmsParams2"], dmsObject: ["item", "dmsObject"], dmsObject2: ["item2", "dmsObject2"], applySelection: "applySelection", parseDmsParams: "parseDmsParams" }, outputs: { hasContent: "hasContent" }, host: { properties: { "class.reference": "this.isReference", "attr.data-type": "this.dataType" } }, providers: [ContentPreviewService], viewQueries: [{ propertyName: "preview", first: true, predicate: ["viewer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container *ngIf=\"!isReference; else tplHeadReference\">\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n [iconTitle]=\"('eo.list.refresh' | translate)\" [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\" [ngClass]=\"{'enabled': enableSync}\"\n [iconSrc]=\"'assets/_default/svg/ic_link.svg'\" [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\"\n (click)=\"enableSync = !enableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\" *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"!enableCompare && item.content\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\" *ngIf=\"!enableCompare && !recyclebinTabs && item.content && item.rights.edit && (agentIsConnected$ | async) && !item.isFinalized\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n <ng-template #tplHeadReference>\n <a class=\"button reference primary\"\n [title]=\"('eo.object.reference.tooltip' | translate:{title:referenceTitle})\"\n [routerLink]=\"['/object', item.id]\"\n [queryParams]=\"{type: item.typeName}\">{{'eo.object.reference.open'|translate}}</a>\n </ng-template>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"cacheLayout\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\"\n [searchTerm]=\"searchTerm\" #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n </yvc-split-tabs>\n \n \n \n \n \n \n \n <!-- <yvc-split-view [layoutSettingsID]=\"'yvc.spltview.test.one'\">\n <ng-template yvcSplitArea [size]=\"50\">\n <yvc-tabs #firstTabContainer (tabSplit)=\"onTabSplit($event)\"\n [tabSplitEnabled]=\"firstTabContainer.tabs.length > 1\" [cacheViews]=\"cacheViews\">\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\"\n [searchTerm]=\"searchTerm\" #viewer></eo-media>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n </yvc-tabs>\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\" [visible]=\"split\">\n <yvc-tabs #splitTabContainer (tabRemove)=\"onTabRemove($event)\"></yvc-tabs>\n </ng-template>\n </yvc-split-view> -->\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;-moz-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .eo-header-status-icons>eo-icon.lock.myLock{background:var(--state-orange)!important}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: ["formDisabled", "dmsObject"], outputs: ["indexDataSaved"] }, { kind: "component", type: i9.MediaComponent, selector: "eo-media", inputs: ["undockDisabled", "enableCloseBtn", "useVersion", "attachments", "searchTerm", "previewUri", "previewFile", "dmsObject"] }, { kind: "directive", type: i10.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "directive", type: i11.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i12.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i13.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "component", type: i14.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i15.IndexdataSummaryComponent, selector: "eo-indexdata-summary", inputs: ["indexdata", "dmsObject", "baseparams", "enableVersions", "diff"] }, { kind: "component", type: i16.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i17.SignatureTabComponent, selector: "eo-signature-tab", inputs: ["dmsObject"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i18.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: i19.SplitTabsComponent, selector: "yvc-split-tabs", inputs: ["layoutSettingsID", "config"], outputs: ["layoutSettingsChange"] }, { kind: "component", type: i20.ObjectHistoryComponent, selector: "eo-object-history", inputs: ["params"] }, { kind: "component", type: i21.ObjectLinksComponent, selector: "eo-object-links", inputs: ["dmsObject"] }, { kind: "component", type: i22.FavoriteIconComponent, selector: "eo-favorite-icon", inputs: ["item"] }, { kind: "component", type: i23.EditIconComponent, selector: "eo-edit-icon", inputs: ["item"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] });
|
|
374
|
+
ObjectDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: { reference: "reference", searchTerm: "searchTerm", enableCompare: "enableCompare", recyclebinTabs: "recyclebinTabs", enableDiff: "enableDiff", enableSync: "enableSync", cacheLayout: "cacheLayout", emptyState: "emptyState", dmsParams: ["params", "dmsParams"], dmsParams2: ["params2", "dmsParams2"], dmsObject: ["item", "dmsObject"], dmsObject2: ["item2", "dmsObject2"], applySelection: "applySelection", parseDmsParams: "parseDmsParams" }, outputs: { hasContent: "hasContent" }, host: { properties: { "class.reference": "this.isReference", "attr.data-type": "this.dataType" } }, providers: [ContentPreviewService], viewQueries: [{ propertyName: "preview", first: true, predicate: ["viewer"], descendants: true }, { propertyName: "tabContainers", predicate: Tabs, descendants: true }], ngImport: i0, template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container *ngIf=\"!isReference; else tplHeadReference\">\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"\n [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\"\n [ngClass]=\"{'enabled': enableSync}\" [iconSrc]=\"'assets/_default/svg/ic_link.svg'\"\n [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\" (click)=\"enableSync = !enableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"!enableCompare && item.content\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && item.content && item.rights.edit && (agentIsConnected$ | async) && !item.isFinalized\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n <ng-template #tplHeadReference>\n <a class=\"button reference primary\"\n [title]=\"('eo.object.reference.tooltip' | translate:{title:referenceTitle})\"\n [routerLink]=\"['/object', item.id]\"\n [queryParams]=\"{type: item.typeName}\">{{'eo.object.reference.open'|translate}}</a>\n </ng-template>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate: {due: item.resubmissions[0].due | localeDate, info: item.resubmissions[0].info}\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon stopped\" *ngIf=\"item.data.yuvsigstatus === 'canceled'\n || item.data.yuvsigstatus === 'revised' || item.data.yuvsigstatus === 'error' || item.data.yuvsigstatus === 'expired'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.stopped' | translate\"></eo-icon>\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [config]=\"splitTabConfig\" [layoutSettingsID]=\"cacheLayout\" *ngIf=\"!item2; else tplCompare\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n </yvc-split-tabs>\n\n <ng-template #tplCompare>\n <yvc-split-view>\n <ng-template yvcSplitArea [size]=\"50\">\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item, indexDataPreview, baseparams, enableCompare: false, searchTerm, isReference}\"></ng-container>\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\">\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item2, indexDataPreview: indexDataPreview2, baseparams: baseparams2, enableCompare: false, searchTerm, isReference}\"></ng-container>\n </ng-template>\n </yvc-split-view>\n </ng-template>\n\n <ng-template #tplTabs let-item=\"item\" let-indexDataPreview=\"indexDataPreview\" let-baseparams=\"baseparams\"\n let-enableCompare=\"enableCompare\" let-searchTerm=\"searchTerm\" let-isReference=\"isReference\">\n <yvc-tabs (tabChange)=\"onCompareTabChange($event)\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\"\n [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"true\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n </yvc-tabs>\n </ng-template>\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;-moz-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body yvc-split-view,:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.stopped{background-color:var(--color-error)}:host .eo-header-status-icons>eo-icon.lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .eo-header-status-icons>eo-icon.lock.myLock{background:var(--state-orange)!important}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: ["formDisabled", "dmsObject"], outputs: ["indexDataSaved"] }, { kind: "component", type: i9.MediaComponent, selector: "eo-media", inputs: ["undockDisabled", "enableCloseBtn", "useVersion", "attachments", "searchTerm", "previewUri", "previewFile", "dmsObject"] }, { kind: "directive", type: i10.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "directive", type: i11.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i12.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i13.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "component", type: i14.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i15.IndexdataSummaryComponent, selector: "eo-indexdata-summary", inputs: ["indexdata", "dmsObject", "baseparams", "enableVersions", "diff"] }, { kind: "component", type: i16.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i17.SignatureTabComponent, selector: "eo-signature-tab", inputs: ["dmsObject"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i18.Tabs, selector: "yvc-tabs", inputs: ["tabs", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i18.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: i19.SplitTabsComponent, selector: "yvc-split-tabs", inputs: ["layoutSettingsID", "config", "panelOrder"], outputs: ["layoutSettingsChange"] }, { kind: "component", type: i20.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i20.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "component", type: i21.ObjectHistoryComponent, selector: "eo-object-history", inputs: ["params"] }, { kind: "component", type: i22.ObjectLinksComponent, selector: "eo-object-links", inputs: ["dmsObject"] }, { kind: "component", type: i23.FavoriteIconComponent, selector: "eo-favorite-icon", inputs: ["item"] }, { kind: "component", type: i24.EditIconComponent, selector: "eo-edit-icon", inputs: ["item"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }, { kind: "pipe", type: i25.LocaleDatePipe, name: "localeDate" }] });
|
|
375
|
+
ObjectDetailsComponent = __decorate([
|
|
376
|
+
UntilDestroy()
|
|
377
|
+
], ObjectDetailsComponent);
|
|
378
|
+
export { ObjectDetailsComponent };
|
|
356
379
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObjectDetailsComponent, decorators: [{
|
|
357
380
|
type: Component,
|
|
358
|
-
args: [{ selector: 'eo-object-details', providers: [ContentPreviewService], template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container *ngIf=\"!isReference; else tplHeadReference\">\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n [iconTitle]=\"('eo.list.refresh' | translate)\" [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\" [ngClass]=\"{'enabled': enableSync}\"\n [iconSrc]=\"'assets/_default/svg/ic_link.svg'\" [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\"\n (click)=\"enableSync = !enableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\" *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"!enableCompare && item.content\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\" *ngIf=\"!enableCompare && !recyclebinTabs && item.content && item.rights.edit && (agentIsConnected$ | async) && !item.isFinalized\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n <ng-template #tplHeadReference>\n <a class=\"button reference primary\"\n [title]=\"('eo.object.reference.tooltip' | translate:{title:referenceTitle})\"\n [routerLink]=\"['/object', item.id]\"\n [queryParams]=\"{type: item.typeName}\">{{'eo.object.reference.open'|translate}}</a>\n </ng-template>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"cacheLayout\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\"\n [searchTerm]=\"searchTerm\" #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n </yvc-split-tabs>\n \n \n \n \n \n \n \n <!-- <yvc-split-view [layoutSettingsID]=\"'yvc.spltview.test.one'\">\n <ng-template yvcSplitArea [size]=\"50\">\n <yvc-tabs #firstTabContainer (tabSplit)=\"onTabSplit($event)\"\n [tabSplitEnabled]=\"firstTabContainer.tabs.length > 1\" [cacheViews]=\"cacheViews\">\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\"\n [searchTerm]=\"searchTerm\" #viewer></eo-media>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n </yvc-tabs>\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\" [visible]=\"split\">\n <yvc-tabs #splitTabContainer (tabRemove)=\"onTabRemove($event)\"></yvc-tabs>\n </ng-template>\n </yvc-split-view> -->\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;-moz-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .eo-header-status-icons>eo-icon.lock.myLock{background:var(--state-orange)!important}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"] }]
|
|
381
|
+
args: [{ selector: 'eo-object-details', providers: [ContentPreviewService], template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container *ngIf=\"!isReference; else tplHeadReference\">\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"\n [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\"\n [ngClass]=\"{'enabled': enableSync}\" [iconSrc]=\"'assets/_default/svg/ic_link.svg'\"\n [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\" (click)=\"enableSync = !enableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"!enableCompare && item.content\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && item.content && item.rights.edit && (agentIsConnected$ | async) && !item.isFinalized\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n <ng-template #tplHeadReference>\n <a class=\"button reference primary\"\n [title]=\"('eo.object.reference.tooltip' | translate:{title:referenceTitle})\"\n [routerLink]=\"['/object', item.id]\"\n [queryParams]=\"{type: item.typeName}\">{{'eo.object.reference.open'|translate}}</a>\n </ng-template>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate: {due: item.resubmissions[0].due | localeDate, info: item.resubmissions[0].info}\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon stopped\" *ngIf=\"item.data.yuvsigstatus === 'canceled'\n || item.data.yuvsigstatus === 'revised' || item.data.yuvsigstatus === 'error' || item.data.yuvsigstatus === 'expired'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.stopped' | translate\"></eo-icon>\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [config]=\"splitTabConfig\" [layoutSettingsID]=\"cacheLayout\" *ngIf=\"!item2; else tplCompare\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n </yvc-split-tabs>\n\n <ng-template #tplCompare>\n <yvc-split-view>\n <ng-template yvcSplitArea [size]=\"50\">\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item, indexDataPreview, baseparams, enableCompare: false, searchTerm, isReference}\"></ng-container>\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\">\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item2, indexDataPreview: indexDataPreview2, baseparams: baseparams2, enableCompare: false, searchTerm, isReference}\"></ng-container>\n </ng-template>\n </yvc-split-view>\n </ng-template>\n\n <ng-template #tplTabs let-item=\"item\" let-indexDataPreview=\"indexDataPreview\" let-baseparams=\"baseparams\"\n let-enableCompare=\"enableCompare\" let-searchTerm=\"searchTerm\" let-isReference=\"isReference\">\n <yvc-tabs (tabChange)=\"onCompareTabChange($event)\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\"\n [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"true\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n </yvc-tabs>\n </ng-template>\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;-moz-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body yvc-split-view,:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.stopped{background-color:var(--color-error)}:host .eo-header-status-icons>eo-icon.lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .eo-header-status-icons>eo-icon.lock.myLock{background:var(--state-orange)!important}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"] }]
|
|
359
382
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.SystemService }, { type: i3.EmptyStateService }, { type: i4.AgentService }, { type: i2.BackendService }, { type: i2.DmsService }, { type: i5.SelectionService }, { type: i6.ActionService }, { type: i2.CapabilitiesService }, { type: i2.UploadRegistryService }, { type: i2.EventService }, { type: i2.Config }, { type: i2.TranslateService }]; }, propDecorators: { preview: [{
|
|
360
383
|
type: ViewChild,
|
|
361
384
|
args: ['viewer']
|
|
385
|
+
}], tabContainers: [{
|
|
386
|
+
type: ViewChildren,
|
|
387
|
+
args: [Tabs]
|
|
362
388
|
}], isReference: [{
|
|
363
389
|
type: HostBinding,
|
|
364
390
|
args: ['class.reference']
|
|
@@ -400,4 +426,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
400
426
|
type: HostBinding,
|
|
401
427
|
args: ['attr.data-type']
|
|
402
428
|
}] } });
|
|
403
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFTTCxVQUFVLEVBRVYsZ0JBQWdCLEVBSWhCLFlBQVksRUFDWixLQUFLLEdBQ04sTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUdoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUl6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRakYsTUFBTSxPQUFPLHNCQUF1QixTQUFRLG9CQUFvQjtJQW1COUQsSUFBYSxTQUFTLENBQUMsS0FBYztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBWUQsSUFDSSxV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WVgsVUFBVTtzQkFEYixLQUFLO3VCQUFDLFNBQVM7Z0JBU1osU0FBUztzQkFEWixLQUFLO3VCQUFDLE1BQU07Z0JBOEJULFVBQVU7c0JBRGIsS0FBSzt1QkFBQyxPQUFPO2dCQThDTCxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFFNEIsUUFBUTtzQkFBMUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQmFja2VuZFNlcnZpY2UsXG4gIEJhc2VQYXJhbXMsXG4gIENhcGFiaWxpdGllcyxcbiAgQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgQ29uZmlnLFxuICBEbXNPYmplY3QsXG4gIERtc1BhcmFtcyxcbiAgRG1zU2VydmljZSxcbiAgRW5haW9FdmVudCxcbiAgRXZlbnRTZXJ2aWNlLFxuICBTdWJzY3JpcHRpb25Nb2RlLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVcGxvYWRSZWdpc3RyeVNlcnZpY2UsXG4gIFVwbG9hZFRhcmdldCxcbiAgVXRpbHMsXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEFnZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FnZW50L2FnZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZSB9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxlRGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9waXBlcy9sb2NhbGUtZGF0ZS5waXBlJztcbmltcG9ydCB7IFNlbGVjdGlvbkNvbmZpZywgU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYWN0aW9ucy9hY3Rpb24tc2VydmljZS9hY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZW50UHJldmlld1NlcnZpY2UgfSBmcm9tICcuLi9tZWRpYS9jb250ZW50LXByZXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBNZWRpYUNvbXBvbmVudCB9IGZyb20gJy4uL21lZGlhL21lZGlhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJQbHVnaW5Db21wb25lbnQgfSBmcm9tICcuLi9wbHVnaW5zL3BsdWdpbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2xvYmFsU2hvcnRjdXRDb21wb25lbnQgfSBmcm9tICcuLi9zaG9ydGN1dHMvZ2xvYmFsLXNob3J0Y3V0LWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2hvcnRjdXQgfSBmcm9tICcuLi9zaG9ydGN1dHMvc2hvcnRjdXQuaW50ZXJmYWNlJztcbi8vIGltcG9ydCB7IFRhYlBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFiLWNvbnRhaW5lci90YWItcGFuZWwvdGFiLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmRleERhdGEgfSBmcm9tICcuLi91aS9pbmRleGRhdGEtc3VtbWFyeS9pbmRleGRhdGEtc3VtbWFyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVW5zdWJzY3JpYmVPbkRlc3Ryb3kgfSBmcm9tICcuLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb2JqZWN0LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQ29udGVudFByZXZpZXdTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3REZXRhaWxzQ29tcG9uZW50IGV4dGVuZHMgVW5zdWJzY3JpYmVPbkRlc3Ryb3lcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZCgndmlld2VyJykgcHJldmlldzogTWVkaWFDb21wb25lbnQ7XG4gIC8vIGdlbmVyYXRlIHVuaXF1ZSBpZCB0byBwYXNzIHRvIHVwbG9hZCByZWdpc3RyeVxuICBwcml2YXRlIHVwbG9hZFRhcmdldCA9IG5ldyBVcGxvYWRUYXJnZXQoVXRpbHMudXVpZCgpLCBVcGxvYWRUYXJnZXQuT0JKRUNUKTtcbiAgaXRlbTogRG1zT2JqZWN0O1xuICBpbmRleERhdGFQcmV2aWV3OiBJbmRleERhdGE7XG4gIGJhc2VwYXJhbXM6IEJhc2VQYXJhbXM7XG4gIGhhc0Vycm9yID0gZmFsc2U7XG4gIGxvY2tUb29sdGlwOiBzdHJpbmc7XG4gIG5vZG1zb2JqZWN0ID0gZmFsc2U7XG4gIHNob3dMb2FkZXIgPSBmYWxzZTtcbiAgcGFuZWxPcmRlciA9IHsnbWFzdGVyJzogWydzdW1tYXJ5JywgJ2luZGV4ZGF0YScsICdoaXN0b3J5JywgJ2xpbmtzJywgJ3NpZ25hdHVyZSddLCAnc2xhdmUnOiBbJ3ByZXZpZXcnXX07XG4gIGFnZW50SXNDb25uZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQkO1xuICBzdWJzY3JpcHRpb25JY29uVG9vbHRpcDogc3RyaW5nO1xuICBzcGxpdDogYm9vbGVhbiA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJlZmVyZW5jZScpIGlzUmVmZXJlbmNlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHNldCByZWZlcmVuY2UoaXNSZWY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzUmVmZXJlbmNlID0gaXNSZWY7XG4gIH1cbiAgQElucHV0KCkgc2VhcmNoVGVybTogc3RyaW5nO1xuICBASW5wdXQoKSBlbmFibGVDb21wYXJlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlY3ljbGViaW5UYWJzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZURpZmYgPSB0cnVlO1xuICBASW5wdXQoKSBlbmFibGVTeW5jID0gdHJ1ZTtcbiAgQElucHV0KCkgY2FjaGVMYXlvdXQ6IGFueTtcbiAgaXRlbTI6IERtc09iamVjdDtcbiAgaW5kZXhEYXRhUHJldmlldzI6IEluZGV4RGF0YTtcbiAgYmFzZXBhcmFtczI6IEJhc2VQYXJhbXM7XG4gIHByaXZhdGUgX2VtcHR5U3RhdGU6IEVtcHR5U3RhdGUgPSB7aWNvbjogJ2ljX25vLWZpbGUuc3ZnJywgdGV4dDogJycsIGNsYXNzTmFtZTogJyd9O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBlbXB0eVN0YXRlKGU6IEVtcHR5U3RhdGUpIHtcbiAgICB0aGlzLl9lbXB0eVN0YXRlID0gZSB8fCBFbXB0eVN0YXRlU2VydmljZS5kZWZhdWx0RW1wdHlTdGF0ZSgpO1xuICB9XG5cbiAgZ2V0IGVtcHR5U3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VtcHR5U3RhdGU7XG4gIH1cblxuICBASW5wdXQoJ3BhcmFtcycpXG4gIHNldCBkbXNQYXJhbXMocGFyYW1zOiBEbXNQYXJhbXMpIHtcbiAgICB0aGlzLnNob3dMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMubG9hZERtc09iamVjdChwYXJhbXMpLnN1YnNjcmliZSgocmVzOiBEbXNPYmplY3QpID0+IHtcbiAgICAgIHRoaXMuZG1zT2JqZWN0ID0gcmVzO1xuICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgfSxcbiAgICAgIFV0aWxzLnRocm93KCgpID0+IHRoaXMub25IYXNFcnJvcih0cnVlLCB0cnVlLCBmYWxzZSkpXG4gICAgKTtcbiAgfVxuXG4gIEBJbnB1dCgncGFyYW1zMicpXG4gIHNldCBkbXNQYXJhbXMyKHBhcmFtczogRG1zUGFyYW1zKSB7XG4gICAgdGhpcy5sb2FkRG1zT2JqZWN0KHBhcmFtcylcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMuZG1zT2JqZWN0MiA9IHJlcztcbiAgICAgIH0sIFV0aWxzLnRocm93KCgpID0+IHRoaXMub25IYXNFcnJvcih0cnVlLCB0cnVlLCBmYWxzZSkpKTtcbiAgfVxuXG4gIEBJbnB1dCgnaXRlbScpXG4gIHNldCBkbXNPYmplY3QodjogRG1zT2JqZWN0KSB7XG4gICAgdGhpcy5pdGVtID0gdjtcbiAgICB0aGlzLm9uSGFzRXJyb3IoKTtcbiAgICAvLyBwcmVwYXJlIGluZGV4ZGF0YSBwcmV2aWV3XG4gICAgdGhpcy5vbkluZGV4RGF0YVNhdmVkKG51bGwsIHRoaXMuaXRlbSk7XG4gICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfTE9BREVELCB0aGlzLml0ZW0pO1xuXG4gICAgaWYgKHRoaXMuaXRlbSkge1xuICAgICAgaWYgKHRoaXMuaXRlbS5pc0FjdGl2ZVZlcnNpb24gJiYgIXRoaXMuZW5hYmxlQ29tcGFyZSkge1xuICAgICAgICB0aGlzLnVwbG9hZFRhcmdldC5yZWZlcmVuY2VPYmplY3QgPSB0aGlzLml0ZW07XG4gICAgICAgIHRoaXMudXBsb2FkVGFyZ2V0Lm9uVXBsb2FkU3VjY2VzcyA9ICgpID0+IHRoaXMuZG1zUGFyYW1zID0ge2lkOiB2LmlkLCB0eXBlOiB2LnR5cGVOYW1lfTtcbiAgICAgICAgdGhpcy51cGxvYWRSZWdpc3RyeS5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLml0ZW0ubG9jaykge1xuICAgICAgICB0aGlzLmxvY2tUb29sdGlwID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LmxvY2snKSArICcgJ1xuICAgICAgICAgICsgKG5ldyBMb2NhbGVEYXRlUGlwZSh0aGlzLnRyYW5zbGF0ZSkudHJhbnNmb3JtKHRoaXMuaXRlbS5sb2NrLm9uKSlcbiAgICAgICAgICArICcsICcgKyB0aGlzLml0ZW0ubG9jay5ieS5sYWJlbCArICcgKCcgKyB0aGlzLml0ZW0ubG9jay5ieS5uYW1lICsgJyknO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVtcHR5U3RhdGUgPSB0aGlzLmVtcHR5LmdldEVtcHR5U3RhdGUoMCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXRlbT8uc3Vic2NyaXB0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWNvblRvb2x0aXAgPSB0aGlzLmNyZWF0ZVN1YnNjcmlwdGlvbkljb25Ub29sdGlwKHRoaXMuaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCdpdGVtMicpXG4gIHNldCBkbXNPYmplY3QyKHY6IERtc09iamVjdCkge1xuICAgIHRoaXMuaXRlbTIgPSB2O1xuICAgIHRoaXMub25IYXNFcnJvcigpO1xuICAgIHRoaXMub25JbmRleERhdGFTYXZlZChudWxsLCB0aGlzLml0ZW0yKTtcbiAgfVxuXG4gIGNhcGFiaWxpdGllczogQ2FwYWJpbGl0aWVzO1xuICAvLyBleHRlcm5hbFBhbmVscyA9IG5ldyBRdWVyeUxpc3Q8VGFiUGFuZWxDb21wb25lbnQ+KCk7XG5cbiAgLy8gQENvbnRlbnRDaGlsZHJlbihUYWJQYW5lbENvbXBvbmVudCkgdGFiUGFuZWxzOiBRdWVyeUxpc3Q8VGFiUGFuZWxDb21wb25lbnQ+O1xuICAvLyBAQ29udGVudENoaWxkcmVuKFRhYlBsdWdpbkNvbXBvbmVudClcbiAgLy8gdGFiUGx1Z2luczogUXVlcnlMaXN0PFRhYlBsdWdpbkNvbXBvbmVudD47XG4gIHByZXZlbnRDbGlja1Rocm91Z2ggPSBmYWxzZTtcblxuICAvLyBzaG9ydGN1dCBhY3Rpb25zXG4gIHNob3J0Y3V0czogR2xvYmFsU2hvcnRjdXRDb21wb25lbnQgPSB7XG4gICAgaWQ6ICdlby5vYmplY3QtZGV0YWlscycsXG4gICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5lby1vYmplY3QtZGV0YWlscy50aXRsZScpLFxuICAgIGxhYmVsS2V5OiAnZW8uc2hvcnRjdXRzLmVvLW9iamVjdC1kZXRhaWxzLnRpdGxlJyxcbiAgICBhY3Rpb25zOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5hY3Rpb24ub3Blbi5jb250ZXh0JyksXG4gICAgICAgIG5hbWVLZXk6ICdlby5zaG9ydGN1dHMuYWN0aW9uLm9wZW4uY29udGV4dCcsXG4gICAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ08nLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgICB0aGlzLm9wZW5PYmplY3QodGhpcy5pdGVtLmlkLCB0aGlzLml0ZW0udHlwZU5hbWUpO1xuICAgICAgICB9LFxuICAgICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LmRldGFpbHMuYWN0aW9ucy50aXRsZScpLFxuICAgICAgICBuYW1lS2V5OiAnZW8ub2JqZWN0LmRldGFpbHMuYWN0aW9ucy50aXRsZScsXG4gICAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ0EnLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNob3dBY3Rpb25zKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIEBJbnB1dCgpIGFwcGx5U2VsZWN0aW9uOiBTZWxlY3Rpb25Db25maWc7XG4gIEBJbnB1dCgpIHBhcnNlRG1zUGFyYW1zOiAoZGF0YSkgPT4ge30gPSB0aGlzLmdldERtc1BhcmFtcztcbiAgQE91dHB1dCgpIGhhc0NvbnRlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10eXBlJykgZ2V0IGRhdGFUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW0gPyB0aGlzLml0ZW0udHlwZU5hbWUgOiAnbm9uZSc7XG4gIH1cblxuICB1bmRvY2tXaW5BY3RpdmUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1wdHk6IEVtcHR5U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWdlbnRTZXJ2aWNlOiBBZ2VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIGRtc1NlcnZpY2U6IERtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWxlY3Rpb246IFNlbGVjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBBY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FwYWJpbGl0eVNlcnZpY2U6IENhcGFiaWxpdGllc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1cGxvYWRSZWdpc3RyeTogVXBsb2FkUmVnaXN0cnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWcsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5wYW5lbE9yZGVyID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldFJhdygnb2JqZWN0RGV0YWlsc1RhYnMnKSB8fCB0aGlzLnBhbmVsT3JkZXI7XG4gICAgdGhpcy51bmRvY2tXaW5BY3RpdmUgPSBDb250ZW50UHJldmlld1NlcnZpY2UudW5kb2NrV2luQWN0aXZlKCk7XG5cbiAgICB0aGlzLmFnZW50U2VydmljZS5zZXRBZ2VudFN0YXR1cyh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydjb25uZWN0YWdlbnQnXSkuc3Vic2NyaWJlKChoYXNTdGF0dXM6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChoYXNTdGF0dXMpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtxdWVyeVBhcmFtczoge2Nvbm5lY3RhZ2VudDogbnVsbH0sIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSd9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cbiAgLy8gb25UYWJTcGxpdChlOiBUYWJTcGxpdEV2ZW50KSB7XG4gIC8vICAgdGhpcy5zcGxpdFRhYkNvbnRhaW5lcj8uYWRkVGFiKGUudGFiLCB0cnVlLCBlLnZpZXcpO1xuICAvLyAgIHRoaXMuc3BsaXQgPSAhIXRoaXMuc3BsaXRUYWJDb250YWluZXIudGFicz8ubGVuZ3RoO1xuICAvLyB9XG4gIC8vIG9uVGFiUmVtb3ZlKGU6IFRhYlNwbGl0RXZlbnQpIHtcbiAgLy8gICB0aGlzLmZpcnN0VGFiQ29udGFpbmVyPy5hZGRUYWIoZS50YWIsIHRydWUsIGUudmlldyk7XG4gIC8vICAgdGhpcy5zcGxpdCA9ICEhdGhpcy5zcGxpdFRhYkNvbnRhaW5lci50YWJzPy5sZW5ndGg7XG4gIC8vIH1cblxuICBwcml2YXRlIGdldERtc1BhcmFtcyhkYXRhOiBhbnkpOiBEbXNQYXJhbXMge1xuICAgIHJldHVybiBkYXRhID8gey4uLmRhdGEsIHR5cGU6IGRhdGEudHlwZU5hbWUgfHwgZGF0YS50eXBlfSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbnRlbnQoKSB7XG5cbiAgICBpZiAodGhpcy5hcHBseVNlbGVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuZW5hYmxlQ29tcGFyZSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvblxuICAgICAgICAgIC5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24uaW4pXG4gICAgICAgICAgLnNlbGVjdGlvbiRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55W10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZG1zUGFyYW1zID0gdGhpcy5wYXJzZURtc1BhcmFtcyhyZXNbMF0pIGFzIERtc1BhcmFtcztcbiAgICAgICAgICAgIHRoaXMuZG1zUGFyYW1zMiA9IHRoaXMucGFyc2VEbXNQYXJhbXMocmVzWzFdKSBhcyBEbXNQYXJhbXM7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAgICAgLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5pbilcbiAgICAgICAgICAuZm9jdXMkXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKVxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5sb2FkRG1zT2JqZWN0KHRoaXMucGFyc2VEbXNQYXJhbXMocmVzKSBhcyBEbXNQYXJhbXMpLnN1YnNjcmliZSgocmVzOiBEbXNPYmplY3QpID0+IHtcbiAgICAgICAgICAgICAgLy8gcmVmcmVzaGluZyBvYmplY3QgZGV0YWlscyBtYXkgcmVzdWx0IGluIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgb2JqZWN0XG4gICAgICAgICAgICAgIC8vIHNvIHdlJ2xsIHVzZSB0aGlzIHRyaWdnZXIgdG8gYWxzbyBlbWl0dCB0aG9zZSBjaGFuZ2VzIHRvIG90aGVyIGxpc3RlbmluZyBjb21wb25lbnRzXG4gICAgICAgICAgICAgIGlmICh0aGlzLml0ZW0gJiYgcmVzICYmICh0aGlzLml0ZW0uaWQgPT09IHJlcy5pZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVELCByZXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuZG1zT2JqZWN0ID0gcmVzO1xuICAgICAgICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFV0aWxzLnRocm93KChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkUmVnaXN0cnkudW5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldC5pZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub25IYXNFcnJvcih0cnVlLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaENvbnRlbnQoKSB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRDbGlja1Rocm91Z2gpIHtcbiAgICAgIHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IHRydWU7XG4gICAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSBmYWxzZTtcbiAgICB9LCA1MDAwKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZUluZGV4RGF0YVByZXZpZXcoaXRlbTogRG1zT2JqZWN0LCBmb3JtRGF0YT86IGFueSkge1xuICAgIGNvbnN0IHtpZCwgZGF0YSwgdHlwZSwgY3JlYXRlZCwgbW9kaWZpZWQsIGNvbnRlbnQsIGNvbnRlbnRGaWxlTmFtZSwgY29udGVudEZpbGVTaXplLCB2ZXJzaW9ufSA9IGl0ZW07XG5cbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1cbiAgICAgIC5nZXRPYmplY3RUeXBlRm9ybSh0eXBlLm5hbWUsICdFRElUJylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoZm9ybSA9PiB7XG4gICAgICAgICAgbGV0IGluZGV4RGF0YVByZXZpZXcgPSB7XG4gICAgICAgICAgICBmb3JtLFxuICAgICAgICAgICAgZGF0YTogZm9ybURhdGEgfHwgZGF0YVxuICAgICAgICAgIH07XG4gICAgICAgICAgbGV0IGJhc2VwYXJhbXM6IEJhc2VQYXJhbXMgPSB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIHR5cGU6IHR5cGUubmFtZSxcbiAgICAgICAgICAgIGNyZWF0ZWRPbjogbmV3IERhdGUoY3JlYXRlZC5vbiksXG4gICAgICAgICAgICBtb2RpZmllZE9uOiBuZXcgRGF0ZShtb2RpZmllZC5vbiksXG4gICAgICAgICAgICBjcmVhdGVkQnk6IGAke2NyZWF0ZWQuYnkudGl0bGV9ICgke2NyZWF0ZWQuYnkubmFtZX0pYCxcbiAgICAgICAgICAgIG1vZGlmaWVkQnk6IGAke21vZGlmaWVkLmJ5LnRpdGxlfSAoJHttb2RpZmllZC5ieS5uYW1lfSlgLFxuICAgICAgICAgICAgY29udGVudEZpbGVOYW1lOiBjb250ZW50RmlsZU5hbWUgPyBjb250ZW50RmlsZU5hbWUgOiBudWxsLFxuICAgICAgICAgICAgY29udGVudEZpbGVTaXplOiBjb250ZW50RmlsZVNpemUgPyBOdW1iZXIoY29udGVudEZpbGVTaXplKSA6IG51bGwsXG4gICAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uIHx8IDAsXG4gICAgICAgICAgICBtaW1lR3JvdXA6IGNvbnRlbnQgPyBjb250ZW50LmNvbnRlbnRzID8gY29udGVudC5jb250ZW50c1swXS5taW1lZ3JvdXAgOiBudWxsIDogbnVsbCxcbiAgICAgICAgICAgIGRpZ2VzdDogY29udGVudCA/IGNvbnRlbnQuY29udGVudHMgPyBjb250ZW50LmNvbnRlbnRzWzBdLmRpZ2VzdCA6IG51bGwgOiBudWxsLFxuICAgICAgICAgICAgY29udGVudElkOiBjb250ZW50ID8gY29udGVudC5jb250ZW50cyA/IGNvbnRlbnQuaWQgOiBudWxsIDogbnVsbCxcbiAgICAgICAgICAgIG1pbWVUeXBlOiBjb250ZW50ID8gY29udGVudC5jb250ZW50cyA/IGNvbnRlbnQuY29udGVudHNbMF0ubWltZXR5cGUgOiBudWxsIDogbnVsbCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiB7aW5kZXhEYXRhUHJldmlldywgYmFzZXBhcmFtc307XG4gICAgICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgb25IYXNFcnJvcihoYXNFcnJvciA9IGZhbHNlLCBub2Rtc29iamVjdCA9IGZhbHNlLCBzaG93TG9hZGVyID0gZmFsc2UpIHtcbiAgICB0aGlzLmhhc0Vycm9yID0gaGFzRXJyb3I7XG4gICAgdGhpcy5ub2Rtc29iamVjdCA9IG5vZG1zb2JqZWN0O1xuICAgIHRoaXMuc2hvd0xvYWRlciA9IHNob3dMb2FkZXI7XG4gICAgdGhpcy5oYXNDb250ZW50LmVtaXQoIWhhc0Vycm9yKTtcbiAgfVxuXG4gIGxvYWREbXNPYmplY3QocGFyYW1zOiBEbXNQYXJhbXMpIHtcbiAgICBpZiAoIXRoaXMuZW5hYmxlQ29tcGFyZSAmJiBwYXJhbXMpIHtcbiAgICAgIGRlbGV0ZSBwYXJhbXMudmVyc2lvbjtcbiAgICB9XG4gICAgLy8gY2hlY2sgZm9yIHZhbGlkIGlkXG4gICAgcmV0dXJuIHBhcmFtcz8uaWQ/Lmxlbmd0aCA9PT0gMzIgPyB0aGlzLmRtc1NlcnZpY2UuZ2V0RG1zT2JqZWN0QnlQYXJhbXMocGFyYW1zKSA6IG9mKG51bGwpO1xuICB9XG5cbiAgZG93bmxvYWRPcmlnaW5hbENvbnRlbnQoKSB7XG4gICAgdGhpcy5iYWNrZW5kLmRvd25sb2FkQ29udGVudChbdGhpcy5pdGVtXSk7XG4gIH1cblxuICBzaG93QWN0aW9ucygpIHtcbiAgICBjb25zdCBhY3Rpb25zID0gW3RoaXMuaXRlbSwgdGhpcy5pdGVtMl0uZmlsdGVyKHYgPT4gdik7XG4gICAgdGhpcy5hY3Rpb25TZXJ2aWNlLnNob3dBY3Rpb25zKGFjdGlvbnMsICdETVNfT0JKRUNUJyk7XG4gIH1cblxuICBvcGVuT2JqZWN0KGlkLCBfdHlwZT8pIHtcbiAgICBjb25zdCBxdWVyeVBhcmFtczogTmF2aWdhdGlvbkV4dHJhcyA9IHtxdWVyeVBhcmFtczogeyd0eXBlJzogX3R5cGV9fTtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvb2JqZWN0JywgaWRdLCBxdWVyeVBhcmFtcyk7XG4gIH1cblxuICAvLyBleGVjdXRlZCB3aGVuIHRoZSBkbXMgb2JqZWN0IGNoYW5nZWQgZHVlIHRvIHNhdmluZyBpdHMgaW5kZXhkYXRhXG4gIG9uSW5kZXhEYXRhU2F2ZWQoZm9ybURhdGEsIGl0ZW0pIHtcbiAgICBpZiAoIXRoaXMuaXRlbSkge1xuICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3ID0gbnVsbDtcbiAgICAgIHRoaXMuYmFzZXBhcmFtcyA9IG51bGw7XG4gICAgfVxuICAgIGlmICghdGhpcy5pdGVtMikge1xuICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3MiA9IG51bGw7XG4gICAgICB0aGlzLmJhc2VwYXJhbXMyID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHRoaXMucHJlcGFyZUluZGV4RGF0YVByZXZpZXcoaXRlbSwgZm9ybURhdGEpXG4gICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0gPT09IHRoaXMuaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3ID0gZGF0YS5pbmRleERhdGFQcmV2aWV3O1xuICAgICAgICAgICAgdGhpcy5iYXNlcGFyYW1zID0gZGF0YS5iYXNlcGFyYW1zO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluZGV4RGF0YVByZXZpZXcyID0gZGF0YS5pbmRleERhdGFQcmV2aWV3O1xuICAgICAgICAgICAgdGhpcy5iYXNlcGFyYW1zMiA9IGRhdGEuYmFzZXBhcmFtcztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCByZWZlcmVuY2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLml0ZW0uY29udGV4dEZvbGRlciA/IHRoaXMuaXRlbS5jb250ZXh0Rm9sZGVyLnRpdGxlIDogdGhpcy5pdGVtLnRpdGxlO1xuICB9XG5cbiAgaXNKb3VybmFsT2JqZWN0KGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS50eXBlLnN1cGVydHlwZXMuZmluZChzVCA9PiBzVCA9PT0gJ3N5c2pvdXJuYWxvYmplY3QnKTtcbiAgfVxuXG4gIGhhc1NpZ25pbmdPYmplY3RUeXBlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuc3lzdGVtLmdldE9iamVjdFR5cGVzKCkuZmluZChvYmplY3RUeXBlID0+IG9iamVjdFR5cGUuc3VwZXJ0eXBlcy5pbmNsdWRlcygneXV2c2lnbmluZycpKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3Vic2NyaXB0aW9uSWNvblRvb2x0aXAoaXRlbTogRG1zT2JqZWN0KTogc3RyaW5nIHtcbiAgICBsZXQgdG9vbHRpcCA9ICcnO1xuICAgIGNvbnN0IG1vZGVzID0gdGhpcy5pdGVtLnN1YnNjcmlwdGlvbnMubWFwKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24ubW9kZSk7XG4gICAgY29uc3Qgc3Vic2NyaWJlZFRvQWxsQ2hhbmdlcyA9IG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuRE1TX09CSkVDVF9DSEFOR0VEKSB8fCAobW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRCkgJiYgbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0lOREVYX0RBVEFfQ0hBTkdFRCkpO1xuICAgIGNvbnN0IHN1YnNjcmliZWRUb01ldGFDaGFuZ2VzT25seSA9IG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuT05MWV9JTkRFWF9EQVRBX0NIQU5HRUQpICYmICFtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLk9OTFlfRE9DVU1FTlRfQ09OVEVOVF9DSEFOR0VEKSAmJiAhbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5ETVNfT0JKRUNUX0NIQU5HRUQpO1xuICAgIGNvbnN0IHN1YnNjcmliZWRUb0NvbnRlbnRDaGFuZ2VzT25seSA9IG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuT05MWV9ET0NVTUVOVF9DT05URU5UX0NIQU5HRUQpICYmICFtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLk9OTFlfSU5ERVhfREFUQV9DSEFOR0VEKSAmJiAhbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5ETVNfT0JKRUNUX0NIQU5HRUQpO1xuICAgIGlmIChzdWJzY3JpYmVkVG9BbGxDaGFuZ2VzKSB7XG4gICAgICB0b29sdGlwID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LnN1YnNjcmlwdGlvbi5pY29uLnRvb2x0aXAuYWxsQ2hhbmdlcycpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzdWJzY3JpYmVkVG9NZXRhQ2hhbmdlc09ubHkpIHtcbiAgICAgIHRvb2x0aXAgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5vYmplY3Quc3Vic2NyaXB0aW9uLmljb24udG9vbHRpcC5tZXRhJyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHN1YnNjcmliZWRUb0NvbnRlbnRDaGFuZ2VzT25seSkge1xuICAgICAgdG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5zdWJzY3JpcHRpb24uaWNvbi50b29sdGlwLmNvbnRlbnQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRvb2x0aXA7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0eVNlcnZpY2UuZ2V0Q2FwYWJpbGl0aWVzKCk7XG5cbiAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcblxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBpZiAoZXZlbnQuZGF0YSAmJiB0aGlzLml0ZW0uaWQgPT09IGV2ZW50LmRhdGEuaWQpIHtcbiAgICAgICAgICB0aGlzLmRtc09iamVjdCA9IHRoaXMuZG1zU2VydmljZS5jcmVhdGVMb2NhbENvcHlPZkRNU09iamVjdChldmVudC5kYXRhKTtcbiAgICAgICAgICBpZiAodGhpcy5wcmV2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcucmVmcmVzaCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuSU5CT1hfSVRFTV9DT05GSVJNRUQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBpZiAodGhpcy5pdGVtICYmIHRoaXMuaXRlbS5pZCA9PT0gZXZlbnQuZGF0YS50YXJnZXQuaWQpIHtcbiAgICAgICAgICB0aGlzLmRtc1BhcmFtcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8vIGxldCBwYW5lbHMgPSB0aGlzLnRhYlBhbmVscy50b0FycmF5KCk7XG4gICAgLy8gdGhpcy50YWJQbHVnaW5zLmZvckVhY2gocCA9PiBwYW5lbHMgPSBwYW5lbHMuY29uY2F0KHAudGFiUGFuZWxzLnRvQXJyYXkoKSkpO1xuICAgIC8vIHRoaXMuZXh0ZXJuYWxQYW5lbHMucmVzZXQocGFuZWxzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudXBsb2FkUmVnaXN0cnkudW5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldC5pZCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsb2FkZXItb3ZlcmxheV9fbWFza1wiICpuZ0lmPVwic2hvd0xvYWRlclwiPlxuICA8ZW8tbG9hZGluZy1zcGlubmVyIGNsYXNzPVwib2JqZWN0LWRldGFpbF9fbG9hZGVyXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtICYmICFoYXNFcnJvcjsgZWxzZSBub0l0ZW1cIj5cblxuICA8ZGl2IGNsYXNzPVwiZW8taGVhZCBlby1oZWFkLXRhYnNcIiBbZW9TaG9ydGN1dHNdPVwic2hvcnRjdXRzXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImVvLWhlYWRlclwiPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJlby1oZWFkZXItaWNvblwiIFtvYmplY3RUeXBlXT1cIml0ZW0udHlwZVwiIFtpY29uVGl0bGVdPVwiaXRlbS50eXBlLmxhYmVsXCI+PC9lby1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1pbmZvXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImVvLWhlYWRlci10aXRsZVwiPnt7aXRlbS50aXRsZX19PC9oMj5cbiAgICAgICAgPGgzIGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlXCI+e3tpdGVtLmRlc2NyaXB0aW9ufX08L2gzPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1JlZmVyZW5jZTsgZWxzZSB0cGxIZWFkUmVmZXJlbmNlXCI+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiByZWZyZXNoLWJ1dHRvblwiICpuZ0lmPVwiIXJlY3ljbGViaW5UYWJzXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfcmVmcmVzaC5zdmcnXCJcbiAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmxpc3QucmVmcmVzaCcgfCB0cmFuc2xhdGUpXCIgW25nQ2xhc3NdPVwieydkaXNhYmxlLXJlZnJlc2gnOiBwcmV2ZW50Q2xpY2tUaHJvdWdofVwiIChjbGljayk9XCJyZWZyZXNoQ29udGVudCgpXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gc3luYy10YWItYnRuXCIgKm5nSWY9XCJlbmFibGVDb21wYXJlICYmICFyZWN5Y2xlYmluVGFic1wiIFtuZ0NsYXNzXT1cInsnZW5hYmxlZCc6IGVuYWJsZVN5bmN9XCJcbiAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbGluay5zdmcnXCIgW2ljb25UaXRsZV09XCInZW8udmVyc2lvbnMuZGV0YWlsLmdsdWUudG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZW5hYmxlU3luYyA9ICFlbmFibGVTeW5jXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgPGVvLWZhdm9yaXRlLWljb24gW2l0ZW1dPVwiaXRlbVwiICpuZ0lmPVwiIWVuYWJsZUNvbXBhcmUgJiYgIXJlY3ljbGViaW5UYWJzICYmIGNhcGFiaWxpdGllcy5mYXZvcml0ZXMgJiYgIWlzSm91cm5hbE9iamVjdChpdGVtKVwiPlxuICAgICAgICAgICAgPC9lby1mYXZvcml0ZS1pY29uPlxuICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gb2MtYnV0dG9uXCIgKm5nSWY9XCIhZW5hYmxlQ29tcGFyZSAmJiBpdGVtLmNvbnRlbnRcIiAoY2xpY2spPVwiZG93bmxvYWRPcmlnaW5hbENvbnRlbnQoKVwiXG4gICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5hY3Rpb24uZG93bmxvYWQuZG1zLm9iamVjdC5jb250ZW50LmxhYmVsJyB8IHRyYW5zbGF0ZSlcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jb250ZW50LWRvd25sb2FkLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICA8ZW8tZWRpdC1pY29uIFtpdGVtXT1cIml0ZW1cIiAqbmdJZj1cIiFlbmFibGVDb21wYXJlICYmICFyZWN5Y2xlYmluVGFicyAmJiBpdGVtLmNvbnRlbnQgJiYgaXRlbS5yaWdodHMuZWRpdCAmJiAoYWdlbnRJc0Nvbm5lY3RlZCQgfCBhc3luYykgJiYgIWl0ZW0uaXNGaW5hbGl6ZWRcIj5cbiAgICAgICAgICAgIDwvZW8tZWRpdC1pY29uPlxuICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gYW0tYnV0dG9uXCIgKm5nSWY9XCIhcmVjeWNsZWJpblRhYnNcIiAoY2xpY2spPVwic2hvd0FjdGlvbnMoKVwiXG4gICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5vYmplY3QuZGV0YWlscy5hY3Rpb25zLnRpdGxlJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19tb3JlLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3RwbEhlYWRSZWZlcmVuY2U+XG4gICAgICAgICAgICA8YSBjbGFzcz1cImJ1dHRvbiByZWZlcmVuY2UgcHJpbWFyeVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCIoJ2VvLm9iamVjdC5yZWZlcmVuY2UudG9vbHRpcCcgfCB0cmFuc2xhdGU6e3RpdGxlOnJlZmVyZW5jZVRpdGxlfSlcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9vYmplY3QnLCBpdGVtLmlkXVwiXG4gICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7dHlwZTogaXRlbS50eXBlTmFtZX1cIj57eydlby5vYmplY3QucmVmZXJlbmNlLm9wZW4nfHRyYW5zbGF0ZX19PC9hPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1zdGF0dXMtaWNvbnNcIj5cbiAgICAgICAgICA8YSBjbGFzcz1cImNvbnRlbnQtbGlua1wiIFt0aXRsZV09XCInZW8ub2JqZWN0LmNvbnRlbnRsaW5rLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCIgKm5nSWY9XCJpdGVtLmNvbnRlbnQ/LmxpbmtlZFwiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCInL29iamVjdC8nICsgaXRlbS5jb250ZW50LmlkXCIgW3F1ZXJ5UGFyYW1zXT1cInt0eXBlOiBpdGVtLmNvbnRlbnQudHlwZX1cIj5cbiAgICAgICAgICAgIDxzcGFuPnt7J2VvLm9iamVjdC5jb250ZW50bGluaycgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzdWJzY3JpcHRpb24taWNvblwiICpuZ0lmPVwiaXRlbS5zdWJzY3JpcHRpb25zLmxlbmd0aFwiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zdWJzY3JpcHRpb24uc3ZnJ1wiIFtpY29uVGl0bGVdPVwic3Vic2NyaXB0aW9uSWNvblRvb2x0aXBcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJyZXN1Ym1pc3Npb24taWNvblwiICpuZ0lmPVwiaXRlbS5yZXN1Ym1pc3Npb25zLmxlbmd0aFwiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZXN1Ym1pc3Npb24uc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3QucmVzdWJtaXNzaW9uLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2hhcmVkLWljb25cIiAqbmdJZj1cIml0ZW0uYWRkaXRpb25hbHZpc2liaWxpdHkubGVuZ3RoICYmICFyZWN5Y2xlYmluVGFic1wiXG4gICAgICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2hhcmUuc3ZnJ1wiXG4gICAgICAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LnNoYXJlZC50b29sdGlwJyB8IHRyYW5zbGF0ZVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImxvY2tcIiBbbmdDbGFzc109XCJ7J215TG9jayc6IGl0ZW0ubG9jay5ieS5tZX1cIiAqbmdJZj1cIml0ZW0ubG9ja1wiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19sb2NrLnN2ZydcIiBbaWNvblRpdGxlXT1cImxvY2tUb29sdGlwXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiZmluYWxpemVkLWljb25cIiAqbmdJZj1cIml0ZW0uaXNGaW5hbGl6ZWRcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19maW5hbGl6ZWQuc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3QuZmluYWxpemVkLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2lnbmVkLWljb24gaW5wcm9jZXNzXCIgKm5nSWY9XCJpdGVtLmRhdGEueXV2c2lnc3RhdHVzID09PSAnaW5wcm9jZXNzJ1wiXG4gICAgICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2lnbmF0dXJlLnN2ZydcIlxuICAgICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5zaWduYXR1cmUudG9vbHRpcC5pbnByb2Nlc3MnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2lnbmVkLWljb24gc2lnbmVkXCIgKm5nSWY9XCJpdGVtLmRhdGEueXV2c2lnc3RhdHVzID09PSAnc2lnbmVkJ1wiXG4gICAgICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2lnbmF0dXJlLnN2ZydcIlxuICAgICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5zaWduYXR1cmUudG9vbHRpcC5zaWduZWQnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaGVhZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImVvLWJvZHlcIj5cblxuICAgIDx5dmMtc3BsaXQtdGFicyBbbGF5b3V0U2V0dGluZ3NJRF09XCJjYWNoZUxheW91dFwiPlxuICAgICAgPCEtLSBzdW1tYXJ5IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnc3VtbWFyeScsIGxhYmVsOiAnZW8ub2JqZWN0LnN1bW1hcnkudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8taW5kZXhkYXRhLXN1bW1hcnkgW2luZGV4ZGF0YV09XCJpbmRleERhdGFQcmV2aWV3XCIgW2Jhc2VwYXJhbXNdPVwiYmFzZXBhcmFtc1wiIFtkbXNPYmplY3RdPVwiaXRlbVwiXG4gICAgICAgICAgW2VuYWJsZVZlcnNpb25zXT1cIiFlbmFibGVDb21wYXJlXCI+PC9lby1pbmRleGRhdGEtc3VtbWFyeT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8IS0tIG1ldGFkYXRhIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnaW5kZXhkYXRhJywgbGFiZWw6ICdlby5vYmplY3QuaW5kZXhkYXRhLnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLW9iamVjdC1mb3JtLWVkaXQgW2Rtc09iamVjdF09XCJpdGVtXCIgKGluZGV4RGF0YVNhdmVkKT1cIm9uSW5kZXhEYXRhU2F2ZWQoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgW2Zvcm1EaXNhYmxlZF09XCJlbmFibGVDb21wYXJlIHx8IGlzUmVmZXJlbmNlXCI+PC9lby1vYmplY3QtZm9ybS1lZGl0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gcHJldmlldyAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3ByZXZpZXcnLCBsYWJlbDogJ2VvLm9iamVjdC5jb250ZW50LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLW1lZGlhIFtkbXNPYmplY3RdPVwiaXRlbVwiIFt1c2VWZXJzaW9uXT1cIml0ZW0uaWQgPT09IGl0ZW0uY29udGVudD8uaWRcIlxuICAgICAgICAgIFtzZWFyY2hUZXJtXT1cInNlYXJjaFRlcm1cIiAjdmlld2VyPjwvZW8tbWVkaWE+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSBoaXN0b3J5IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnaGlzdG9yeScsIGxhYmVsOiAnZW8ub2JqZWN0Lmhpc3RvcnkudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tb2JqZWN0LWhpc3RvcnkgW3BhcmFtc109XCJ7aWQ6IGl0ZW0uaWQsIHR5cGU6IGl0ZW0udHlwZT8ucW5hbWV9XCI+XG4gICAgICAgIDwvZW8tb2JqZWN0LWhpc3Rvcnk+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSBsaW5rcyAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2xpbmtzJywgbGFiZWw6ICdlby5vYmplY3QubGlua3MudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tb2JqZWN0LWxpbmtzIFtkbXNPYmplY3RdPVwiaXRlbVwiPjwvZW8tb2JqZWN0LWxpbmtzPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gc2lnbmF0dXJlIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnc2lnbmF0dXJlJywgbGFiZWw6ICdlby5vYmplY3Quc2lnbmF0dXJlLXRhYi50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1zaWduYXR1cmUtdGFiIFtkbXNPYmplY3RdPVwiaXRlbVwiPjwvZW8tc2lnbmF0dXJlLXRhYj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC95dmMtc3BsaXQtdGFicz5cbiAgICBcbiAgICBcbiAgICBcbiAgICBcbiAgICBcbiAgICBcbiAgICBcbiAgICA8IS0tIDx5dmMtc3BsaXQtdmlldyBbbGF5b3V0U2V0dGluZ3NJRF09XCIneXZjLnNwbHR2aWV3LnRlc3Qub25lJ1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI1MFwiPlxuICAgICAgICA8eXZjLXRhYnMgI2ZpcnN0VGFiQ29udGFpbmVyICh0YWJTcGxpdCk9XCJvblRhYlNwbGl0KCRldmVudClcIlxuICAgICAgICAgIFt0YWJTcGxpdEVuYWJsZWRdPVwiZmlyc3RUYWJDb250YWluZXIudGFicy5sZW5ndGggPiAxXCIgW2NhY2hlVmlld3NdPVwiY2FjaGVWaWV3c1wiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3N1bW1hcnknLCBsYWJlbDogJ2VvLm9iamVjdC5zdW1tYXJ5LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgICAgIDxlby1pbmRleGRhdGEtc3VtbWFyeSBbaW5kZXhkYXRhXT1cImluZGV4RGF0YVByZXZpZXdcIiBbYmFzZXBhcmFtc109XCJiYXNlcGFyYW1zXCIgW2Rtc09iamVjdF09XCJpdGVtXCJcbiAgICAgICAgICAgICAgW2VuYWJsZVZlcnNpb25zXT1cIiFlbmFibGVDb21wYXJlXCI+PC9lby1pbmRleGRhdGEtc3VtbWFyeT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2luZGV4ZGF0YScsIGxhYmVsOiAnZW8ub2JqZWN0LmluZGV4ZGF0YS50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgICAgICA8ZW8tb2JqZWN0LWZvcm0tZWRpdCBbZG1zT2JqZWN0XT1cIml0ZW1cIiAoaW5kZXhEYXRhU2F2ZWQpPVwib25JbmRleERhdGFTYXZlZCgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgW2Zvcm1EaXNhYmxlZF09XCJlbmFibGVDb21wYXJlIHx8IGlzUmVmZXJlbmNlXCI+PC9lby1vYmplY3QtZm9ybS1lZGl0PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAncHJldmlldycsIGxhYmVsOiAnZW8ub2JqZWN0LmNvbnRlbnQudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgICAgPGVvLW1lZGlhIFtkbXNPYmplY3RdPVwiaXRlbVwiIFt1c2VWZXJzaW9uXT1cIml0ZW0uaWQgPT09IGl0ZW0uY29udGVudD8uaWRcIlxuICAgICAgICAgICAgICBbc2VhcmNoVGVybV09XCJzZWFyY2hUZXJtXCIgI3ZpZXdlcj48L2VvLW1lZGlhPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnaGlzdG9yeScsIGxhYmVsOiAnZW8ub2JqZWN0Lmhpc3RvcnkudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgICAgPGVvLW9iamVjdC1oaXN0b3J5IFtwYXJhbXNdPVwie2lkOiBpdGVtLmlkLCB0eXBlOiBpdGVtLnR5cGU/LnFuYW1lfVwiPlxuICAgICAgICAgICAgPC9lby1vYmplY3QtaGlzdG9yeT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2xpbmtzJywgbGFiZWw6ICdlby5vYmplY3QubGlua3MudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgICAgPGVvLW9iamVjdC1saW5rcyBbZG1zT2JqZWN0XT1cIml0ZW1cIj48L2VvLW9iamVjdC1saW5rcz5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3NpZ25hdHVyZScsIGxhYmVsOiAnZW8ub2JqZWN0LnNpZ25hdHVyZS10YWIudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgICAgPGVvLXNpZ25hdHVyZS10YWIgW2Rtc09iamVjdF09XCJpdGVtXCI+PC9lby1zaWduYXR1cmUtdGFiPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwveXZjLXRhYnM+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI1MFwiIFt2aXNpYmxlXT1cInNwbGl0XCI+XG4gICAgICAgIDx5dmMtdGFicyAjc3BsaXRUYWJDb250YWluZXIgKHRhYlJlbW92ZSk9XCJvblRhYlJlbW92ZSgkZXZlbnQpXCI+PC95dmMtdGFicz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC95dmMtc3BsaXQtdmlldz4gLS0+XG5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNub0l0ZW0+XG4gIDxzcGFuIGNsYXNzPVwibm90LWZvdW5kXCIgKm5nSWY9XCJub2Rtc29iamVjdFwiIHRyYW5zbGF0ZT5lby5icG0ubm9kbXNvYmplY3Q8L3NwYW4+XG4gIDxlby1lcnJvci1tZXNzYWdlICpuZ0lmPVwiIXNob3dMb2FkZXJcIlxuICAgIFtlbXB0eVN0YXRlXT1cIntpY29uOiBlbXB0eVN0YXRlLmljb24sIHRleHQ6IGVtcHR5U3RhdGUudGV4dCwgY2xhc3NOYW1lOiBlbXB0eVN0YXRlLmNsYXNzTmFtZX1cIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCIuZXJyb3JcIj48L25nLWNvbnRlbnQ+XG4gIDwvZW8tZXJyb3ItbWVzc2FnZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
429
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQVNMLFVBQVUsRUFFVixnQkFBZ0IsRUFJaEIsWUFBWSxFQUNaLEtBQUssR0FDTixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBR25FLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUc5RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUd2RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFekQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVdEMsSUFBTSxzQkFBc0IsR0FBNUIsTUFBTSxzQkFBc0I7SUFnQmpDLElBQUksVUFBVSxDQUFDLEVBQXVDO1FB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YUFBYTtzQkFBaEMsWUFBWTt1QkFBQyxJQUFJO2dCQXlCYyxXQUFXO3NCQUExQyxXQUFXO3VCQUFDLGlCQUFpQjtnQkFFakIsU0FBUztzQkFBckIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFPRixVQUFVO3NCQURiLEtBQUs7Z0JBVUYsU0FBUztzQkFEWixLQUFLO3VCQUFDLFFBQVE7Z0JBWVgsVUFBVTtzQkFEYixLQUFLO3VCQUFDLFNBQVM7Z0JBU1osU0FBUztzQkFEWixLQUFLO3VCQUFDLE1BQU07Z0JBK0JULFVBQVU7c0JBRGIsS0FBSzt1QkFBQyxPQUFPO2dCQXlDTCxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFFNEIsUUFBUTtzQkFBMUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQmFja2VuZFNlcnZpY2UsXG4gIEJhc2VQYXJhbXMsXG4gIENhcGFiaWxpdGllcyxcbiAgQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgQ29uZmlnLFxuICBEbXNPYmplY3QsXG4gIERtc1BhcmFtcyxcbiAgRG1zU2VydmljZSxcbiAgRW5haW9FdmVudCxcbiAgRXZlbnRTZXJ2aWNlLFxuICBTdWJzY3JpcHRpb25Nb2RlLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVcGxvYWRSZWdpc3RyeVNlcnZpY2UsXG4gIFVwbG9hZFRhcmdldCxcbiAgVXRpbHMsXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7QWdlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9hZ2VudC9hZ2VudC5zZXJ2aWNlJztcbmltcG9ydCB7RW1wdHlTdGF0ZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7RW1wdHlTdGF0ZVNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2NhbGVEYXRlUGlwZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGlwZXMvbG9jYWxlLWRhdGUucGlwZSc7XG5pbXBvcnQge1NlbGVjdGlvbkNvbmZpZywgU2VsZWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7QWN0aW9uU2VydmljZX0gZnJvbSAnLi4vYWN0aW9ucy9hY3Rpb24tc2VydmljZS9hY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge0NvbnRlbnRQcmV2aWV3U2VydmljZX0gZnJvbSAnLi4vbWVkaWEvY29udGVudC1wcmV2aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHtNZWRpYUNvbXBvbmVudH0gZnJvbSAnLi4vbWVkaWEvbWVkaWEuY29tcG9uZW50JztcbmltcG9ydCB7R2xvYmFsU2hvcnRjdXRDb21wb25lbnR9IGZyb20gJy4uL3Nob3J0Y3V0cy9nbG9iYWwtc2hvcnRjdXQtY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQge1Nob3J0Y3V0fSBmcm9tICcuLi9zaG9ydGN1dHMvc2hvcnRjdXQuaW50ZXJmYWNlJztcbmltcG9ydCB7SW5kZXhEYXRhfSBmcm9tICcuLi91aS9pbmRleGRhdGEtc3VtbWFyeS9pbmRleGRhdGEtc3VtbWFyeS5jb21wb25lbnQnO1xuaW1wb3J0IHtUYWJzfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQge1NwbGl0VGFic0xheW91dFNldHRpbmdzfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvc3BsaXQtdGFicyc7XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tb2JqZWN0LWRldGFpbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QtZGV0YWlscy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtDb250ZW50UHJldmlld1NlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdERldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZCgndmlld2VyJykgcHJldmlldzogTWVkaWFDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGRyZW4oVGFicykgdGFiQ29udGFpbmVyczogUXVlcnlMaXN0PFRhYnM+O1xuXG4gIC8vIGdlbmVyYXRlIHVuaXF1ZSBpZCB0byBwYXNzIHRvIHVwbG9hZCByZWdpc3RyeVxuICBwcml2YXRlIHVwbG9hZFRhcmdldCA9IG5ldyBVcGxvYWRUYXJnZXQoVXRpbHMudXVpZCgpLCBVcGxvYWRUYXJnZXQuT0JKRUNUKTtcbiAgaXRlbTogRG1zT2JqZWN0O1xuICBpbmRleERhdGFQcmV2aWV3OiBJbmRleERhdGE7XG4gIGJhc2VwYXJhbXM6IEJhc2VQYXJhbXM7XG4gIGhhc0Vycm9yID0gZmFsc2U7XG4gIGxvY2tUb29sdGlwOiBzdHJpbmc7XG4gIG5vZG1zb2JqZWN0ID0gZmFsc2U7XG4gIHNob3dMb2FkZXIgPSBmYWxzZTtcblxuICBwcml2YXRlIF9wYW5lbE9yZGVyID0geydtYXN0ZXInOiBbJ3N1bW1hcnknLCAnaW5kZXhkYXRhJywgJ2hpc3RvcnknLCAnbGlua3MnLCAnc2lnbmF0dXJlJ10sICdzbGF2ZSc6IFsncHJldmlldyddfTtcbiAgc2V0IHBhbmVsT3JkZXIocG86IHttYXN0ZXI6IHN0cmluZ1tdLCBzbGF2ZTogc3RyaW5nW119KSB7XG4gICAgdGhpcy5fcGFuZWxPcmRlciA9IHBvO1xuICAgIHRoaXMuX2NoZWNrQ2FwYWJpbGl0aWVzKCk7XG4gIH1cbiAgZ2V0IHBhbmVsT3JkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhbmVsT3JkZXI7XG4gIH1cblxuICBhZ2VudElzQ29ubmVjdGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYWdlbnRTZXJ2aWNlLmlzQ29ubmVjdGVkJDtcbiAgc3Vic2NyaXB0aW9uSWNvblRvb2x0aXA6IHN0cmluZztcbiAgc3BsaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc3BsaXRUYWJDb25maWc6IFNwbGl0VGFic0xheW91dFNldHRpbmdzO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJlZmVyZW5jZScpIGlzUmVmZXJlbmNlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHNldCByZWZlcmVuY2UoaXNSZWY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzUmVmZXJlbmNlID0gaXNSZWY7XG4gIH1cbiAgQElucHV0KCkgc2VhcmNoVGVybTogc3RyaW5nO1xuICBASW5wdXQoKSBlbmFibGVDb21wYXJlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlY3ljbGViaW5UYWJzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZURpZmYgPSB0cnVlO1xuICBASW5wdXQoKSBlbmFibGVTeW5jID0gdHJ1ZTtcbiAgQElucHV0KCkgY2FjaGVMYXlvdXQ6IGFueTtcbiAgaXRlbTI6IERtc09iamVjdDtcbiAgaW5kZXhEYXRhUHJldmlldzI6IEluZGV4RGF0YTtcbiAgYmFzZXBhcmFtczI6IEJhc2VQYXJhbXM7XG4gIHByaXZhdGUgX2VtcHR5U3RhdGU6IEVtcHR5U3RhdGUgPSB7aWNvbjogJ2ljX25vLWZpbGUuc3ZnJywgdGV4dDogJycsIGNsYXNzTmFtZTogJyd9O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBlbXB0eVN0YXRlKGU6IEVtcHR5U3RhdGUpIHtcbiAgICB0aGlzLl9lbXB0eVN0YXRlID0gZSB8fCBFbXB0eVN0YXRlU2VydmljZS5kZWZhdWx0RW1wdHlTdGF0ZSgpO1xuICB9XG5cbiAgZ2V0IGVtcHR5U3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VtcHR5U3RhdGU7XG4gIH1cblxuICBASW5wdXQoJ3BhcmFtcycpXG4gIHNldCBkbXNQYXJhbXMocGFyYW1zOiBEbXNQYXJhbXMpIHtcbiAgICB0aGlzLnNob3dMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMubG9hZERtc09iamVjdChwYXJhbXMpLnN1YnNjcmliZSgocmVzOiBEbXNPYmplY3QpID0+IHtcbiAgICAgIHRoaXMuZG1zT2JqZWN0ID0gcmVzO1xuICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgfSxcbiAgICAgIFV0aWxzLnRocm93KCgpID0+IHRoaXMub25IYXNFcnJvcih0cnVlLCB0cnVlLCBmYWxzZSkpXG4gICAgKTtcbiAgfVxuXG4gIEBJbnB1dCgncGFyYW1zMicpXG4gIHNldCBkbXNQYXJhbXMyKHBhcmFtczogRG1zUGFyYW1zKSB7XG4gICAgdGhpcy5sb2FkRG1zT2JqZWN0KHBhcmFtcylcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMuZG1zT2JqZWN0MiA9IHJlcztcbiAgICAgIH0sIFV0aWxzLnRocm93KCgpID0+IHRoaXMub25IYXNFcnJvcih0cnVlLCB0cnVlLCBmYWxzZSkpKTtcbiAgfVxuXG4gIEBJbnB1dCgnaXRlbScpXG4gIHNldCBkbXNPYmplY3QodjogRG1zT2JqZWN0KSB7XG4gICAgY29uc3QgaXNEaWZmZXJlbnQgPSB0aGlzLml0ZW0/LmlkICE9PSB2Py5pZDtcbiAgICB0aGlzLml0ZW0gPSB2O1xuICAgIHRoaXMub25IYXNFcnJvcigpO1xuICAgIC8vIHByZXBhcmUgaW5kZXhkYXRhIHByZXZpZXdcbiAgICB0aGlzLm9uSW5kZXhEYXRhU2F2ZWQobnVsbCwgdGhpcy5pdGVtKTtcbiAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9MT0FERUQsIHRoaXMuaXRlbSk7XG5cbiAgICBpZiAodGhpcy5pdGVtKSB7XG4gICAgICBpZiAoaXNEaWZmZXJlbnQgJiYgdGhpcy5pdGVtLmlzQWN0aXZlVmVyc2lvbiAmJiAhdGhpcy5lbmFibGVDb21wYXJlKSB7XG4gICAgICAgIHRoaXMudXBsb2FkVGFyZ2V0LnJlZmVyZW5jZU9iamVjdCA9IHRoaXMuaXRlbTtcbiAgICAgICAgdGhpcy51cGxvYWRUYXJnZXQub25VcGxvYWRTdWNjZXNzID0gKCkgPT4gdGhpcy5kbXNQYXJhbXMgPSB7aWQ6IHYuaWQsIHR5cGU6IHYudHlwZU5hbWV9O1xuICAgICAgICB0aGlzLnVwbG9hZFJlZ2lzdHJ5LnJlZ2lzdGVyKHRoaXMudXBsb2FkVGFyZ2V0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaXRlbS5sb2NrKSB7XG4gICAgICAgIHRoaXMubG9ja1Rvb2x0aXAgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5vYmplY3QubG9jaycpICsgJyAnXG4gICAgICAgICAgKyAobmV3IExvY2FsZURhdGVQaXBlKHRoaXMudHJhbnNsYXRlKS50cmFuc2Zvcm0odGhpcy5pdGVtLmxvY2sub24pKVxuICAgICAgICAgICsgJywgJyArIHRoaXMuaXRlbS5sb2NrLmJ5LmxhYmVsICsgJyAoJyArIHRoaXMuaXRlbS5sb2NrLmJ5Lm5hbWUgKyAnKSc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW1wdHlTdGF0ZSA9IHRoaXMuZW1wdHkuZ2V0RW1wdHlTdGF0ZSgwKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pdGVtPy5zdWJzY3JpcHRpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25JY29uVG9vbHRpcCA9IHRoaXMuY3JlYXRlU3Vic2NyaXB0aW9uSWNvblRvb2x0aXAodGhpcy5pdGVtKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoJ2l0ZW0yJylcbiAgc2V0IGRtc09iamVjdDIodjogRG1zT2JqZWN0KSB7XG4gICAgdGhpcy5pdGVtMiA9IHN0cnVjdHVyZWRDbG9uZSh2KTtcbiAgICB0aGlzLm9uSGFzRXJyb3IoKTtcbiAgICB0aGlzLm9uSW5kZXhEYXRhU2F2ZWQobnVsbCwgdGhpcy5pdGVtMik7XG4gIH1cblxuICBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllcztcbiAgcHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlO1xuXG4gIC8vIHNob3J0Y3V0IGFjdGlvbnNcbiAgc2hvcnRjdXRzOiBHbG9iYWxTaG9ydGN1dENvbXBvbmVudCA9IHtcbiAgICBpZDogJ2VvLm9iamVjdC1kZXRhaWxzJyxcbiAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmVvLW9iamVjdC1kZXRhaWxzLnRpdGxlJyksXG4gICAgbGFiZWxLZXk6ICdlby5zaG9ydGN1dHMuZW8tb2JqZWN0LWRldGFpbHMudGl0bGUnLFxuICAgIGFjdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmFjdGlvbi5vcGVuLmNvbnRleHQnKSxcbiAgICAgICAgbmFtZUtleTogJ2VvLnNob3J0Y3V0cy5hY3Rpb24ub3Blbi5jb250ZXh0JyxcbiAgICAgICAgc2hvcnRjdXQ6IG5ldyBTaG9ydGN1dCgnTycsIGZhbHNlLCBmYWxzZSksXG4gICAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMub3Blbk9iamVjdCh0aGlzLml0ZW0uaWQsIHRoaXMuaXRlbS50eXBlTmFtZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5vYmplY3QuZGV0YWlscy5hY3Rpb25zLnRpdGxlJyksXG4gICAgICAgIG5hbWVLZXk6ICdlby5vYmplY3QuZGV0YWlscy5hY3Rpb25zLnRpdGxlJyxcbiAgICAgICAgc2hvcnRjdXQ6IG5ldyBTaG9ydGN1dCgnQScsIGZhbHNlLCBmYWxzZSksXG4gICAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvd0FjdGlvbnMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgaXNIaWRkZW46ICgpID0+IHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgQElucHV0KCkgYXBwbHlTZWxlY3Rpb246IFNlbGVjdGlvbkNvbmZpZztcbiAgQElucHV0KCkgcGFyc2VEbXNQYXJhbXM6IChkYXRhKSA9PiB7fSA9IHRoaXMuZ2V0RG1zUGFyYW1zO1xuICBAT3V0cHV0KCkgaGFzQ29udGVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXR5cGUnKSBnZXQgZGF0YVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbSA/IHRoaXMuaXRlbS50eXBlTmFtZSA6ICdub25lJztcbiAgfVxuXG4gIC8vIHVuZG9ja1dpbkFjdGl2ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBzeXN0ZW06IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbXB0eTogRW1wdHlTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcbiAgICBwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvblNlcnZpY2U6IEFjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYXBhYmlsaXR5U2VydmljZTogQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgICBwcml2YXRlIHVwbG9hZFJlZ2lzdHJ5OiBVcGxvYWRSZWdpc3RyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZyxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuXG4gICAgdGhpcy5wYW5lbE9yZGVyID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldFJhdygnb2JqZWN0RGV0YWlsc1RhYnMnKSB8fCB0aGlzLnBhbmVsT3JkZXI7XG5cbiAgICB0aGlzLmFnZW50U2VydmljZS5zZXRBZ2VudFN0YXR1cyh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydjb25uZWN0YWdlbnQnXSkuc3Vic2NyaWJlKChoYXNTdGF0dXM6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChoYXNTdGF0dXMpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtxdWVyeVBhcmFtczoge2Nvbm5lY3RhZ2VudDogbnVsbH0sIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSd9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG1zUGFyYW1zKGRhdGE6IGFueSk6IERtc1BhcmFtcyB7XG4gICAgcmV0dXJuIGRhdGEgPyB7Li4uZGF0YSwgdHlwZTogZGF0YS50eXBlTmFtZSB8fCBkYXRhLnR5cGV9IDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29udGVudCgpIHtcblxuICAgIGlmICh0aGlzLmFwcGx5U2VsZWN0aW9uKSB7XG4gICAgICBpZiAodGhpcy5lbmFibGVDb21wYXJlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAgICAgLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5pbilcbiAgICAgICAgICAuc2VsZWN0aW9uJFxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kbXNQYXJhbXMgPSB0aGlzLnBhcnNlRG1zUGFyYW1zKHJlc1swXSkgYXMgRG1zUGFyYW1zO1xuICAgICAgICAgICAgdGhpcy5kbXNQYXJhbXMyID0gdGhpcy5wYXJzZURtc1BhcmFtcyhyZXNbMV0pIGFzIERtc1BhcmFtcztcbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25cbiAgICAgICAgICAuZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLmluKVxuICAgICAgICAgIC5mb2N1cyRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmxvYWREbXNPYmplY3QodGhpcy5wYXJzZURtc1BhcmFtcyhyZXMpIGFzIERtc1BhcmFtcykuc3Vic2NyaWJlKChyZXM6IERtc09iamVjdCkgPT4ge1xuICAgICAgICAgICAgICAvLyByZWZyZXNoaW5nIG9iamVjdCBkZXRhaWxzIG1heSByZXN1bHQgaW4gYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBvYmplY3RcbiAgICAgICAgICAgICAgLy8gc28gd2UnbGwgdXNlIHRoaXMgdHJpZ2dlciB0byBhbHNvIGVtaXR0IHRob3NlIGNoYW5nZXMgdG8gb3RoZXIgbGlzdGVuaW5nIGNvbXBvbmVudHNcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbSAmJiByZXMgJiYgKHRoaXMuaXRlbS5pZCA9PT0gcmVzLmlkKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQsIHJlcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5kbXNPYmplY3QgPSByZXM7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgVXRpbHMudGhyb3coKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRSZWdpc3RyeS51bnJlZ2lzdGVyKHRoaXMudXBsb2FkVGFyZ2V0LmlkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vbkhhc0Vycm9yKHRydWUsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZWZyZXNoQ29udGVudCgpIHtcbiAgICBpZiAoIXRoaXMucHJldmVudENsaWNrVGhyb3VnaCkge1xuICAgICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gdHJ1ZTtcbiAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlO1xuICAgIH0sIDUwMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVwYXJlSW5kZXhEYXRhUHJldmlldyhpdGVtOiBEbXNPYmplY3QsIGZvcm1EYXRhPzogYW55KSB7XG4gICAgY29uc3Qge2lkLCBkYXRhLCB0eXBlLCBjcmVhdGVkLCBtb2RpZmllZCwgY29udGVudCwgY29udGVudEZpbGVOYW1lLCBjb250ZW50RmlsZVNpemUsIHZlcnNpb259ID0gaXRlbTtcblxuICAgIHJldHVybiB0aGlzLnN5c3RlbVxuICAgICAgLmdldE9iamVjdFR5cGVGb3JtKHR5cGUubmFtZSwgJ0VESVQnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChmb3JtID0+IHtcbiAgICAgICAgICBsZXQgaW5kZXhEYXRhUHJldmlldyA9IHtcbiAgICAgICAgICAgIGZvcm0sXG4gICAgICAgICAgICBkYXRhOiBmb3JtRGF0YSB8fCBkYXRhXG4gICAgICAgICAgfTtcbiAgICAgICAgICBsZXQgYmFzZXBhcmFtczogQmFzZVBhcmFtcyA9IHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgdHlwZTogdHlwZS5uYW1lLFxuICAgICAgICAgICAgY3JlYXRlZE9uOiBuZXcgRGF0ZShjcmVhdGVkLm9uKSxcbiAgICAgICAgICAgIG1vZGlmaWVkT246IG5ldyBEYXRlKG1vZGlmaWVkLm9uKSxcbiAgICAgICAgICAgIGNyZWF0ZWRCeTogYCR7Y3JlYXRlZC5ieS50aXRsZX0gKCR7Y3JlYXRlZC5ieS5uYW1lfSlgLFxuICAgICAgICAgICAgbW9kaWZpZWRCeTogYCR7bW9kaWZpZWQuYnkudGl0bGV9ICgke21vZGlmaWVkLmJ5Lm5hbWV9KWAsXG4gICAgICAgICAgICBjb250ZW50RmlsZU5hbWU6IGNvbnRlbnRGaWxlTmFtZSA/IGNvbnRlbnRGaWxlTmFtZSA6IG51bGwsXG4gICAgICAgICAgICBjb250ZW50RmlsZVNpemU6IGNvbnRlbnRGaWxlU2l6ZSA/IE51bWJlcihjb250ZW50RmlsZVNpemUpIDogbnVsbCxcbiAgICAgICAgICAgIHZlcnNpb246IHZlcnNpb24gfHwgMCxcbiAgICAgICAgICAgIG1pbWVHcm91cDogY29udGVudCA/IGNvbnRlbnQuY29udGVudHMgPyBjb250ZW50LmNvbnRlbnRzWzBdLm1pbWVncm91cCA6IG51bGwgOiBudWxsLFxuICAgICAgICAgICAgZGlnZXN0OiBjb250ZW50ID8gY29udGVudC5jb250ZW50cyA/IGNvbnRlbnQuY29udGVudHNbMF0uZGlnZXN0IDogbnVsbCA6IG51bGwsXG4gICAgICAgICAgICBjb250ZW50SWQ6IGNvbnRlbnQgPyBjb250ZW50LmNvbnRlbnRzID8gY29udGVudC5pZCA6IG51bGwgOiBudWxsLFxuICAgICAgICAgICAgbWltZVR5cGU6IGNvbnRlbnQgPyBjb250ZW50LmNvbnRlbnRzID8gY29udGVudC5jb250ZW50c1swXS5taW1ldHlwZSA6IG51bGwgOiBudWxsLFxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHtpbmRleERhdGFQcmV2aWV3LCBiYXNlcGFyYW1zfTtcbiAgICAgICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkhhc0Vycm9yKGhhc0Vycm9yID0gZmFsc2UsIG5vZG1zb2JqZWN0ID0gZmFsc2UsIHNob3dMb2FkZXIgPSBmYWxzZSkge1xuICAgIHRoaXMuaGFzRXJyb3IgPSBoYXNFcnJvcjtcbiAgICB0aGlzLm5vZG1zb2JqZWN0ID0gbm9kbXNvYmplY3Q7XG4gICAgdGhpcy5zaG93TG9hZGVyID0gc2hvd0xvYWRlcjtcbiAgICB0aGlzLmhhc0NvbnRlbnQuZW1pdCghaGFzRXJyb3IpO1xuICB9XG5cbiAgbG9hZERtc09iamVjdChwYXJhbXM6IERtc1BhcmFtcykge1xuICAgIGlmICghdGhpcy5lbmFibGVDb21wYXJlICYmIHBhcmFtcykge1xuICAgICAgZGVsZXRlIHBhcmFtcy52ZXJzaW9uO1xuICAgIH1cbiAgICAvLyBjaGVjayBmb3IgdmFsaWQgaWRcbiAgICByZXR1cm4gcGFyYW1zPy5pZD8ubGVuZ3RoID09PSAzMiA/IHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3RCeVBhcmFtcyhwYXJhbXMpIDogb2YobnVsbCk7XG4gIH1cblxuICBkb3dubG9hZE9yaWdpbmFsQ29udGVudCgpIHtcbiAgICB0aGlzLmJhY2tlbmQuZG93bmxvYWRDb250ZW50KFt0aGlzLml0ZW1dKTtcbiAgfVxuXG4gIHNob3dBY3Rpb25zKCkge1xuICAgIGNvbnN0IGFjdGlvbnMgPSBbdGhpcy5pdGVtLCB0aGlzLml0ZW0yXS5maWx0ZXIodiA9PiB2KTtcbiAgICB0aGlzLmFjdGlvblNlcnZpY2Uuc2hvd0FjdGlvbnMoYWN0aW9ucywgJ0RNU19PQkpFQ1QnKTtcbiAgfVxuXG4gIG9wZW5PYmplY3QoaWQsIF90eXBlPykge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7J3R5cGUnOiBfdHlwZX19O1xuICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9vYmplY3QnLCBpZF0sIHF1ZXJ5UGFyYW1zKTtcbiAgfVxuXG4gIC8vIGV4ZWN1dGVkIHdoZW4gdGhlIGRtcyBvYmplY3QgY2hhbmdlZCBkdWUgdG8gc2F2aW5nIGl0cyBpbmRleGRhdGFcbiAgb25JbmRleERhdGFTYXZlZChmb3JtRGF0YSwgaXRlbSkge1xuICAgIGlmICghdGhpcy5pdGVtKSB7XG4gICAgICB0aGlzLmluZGV4RGF0YVByZXZpZXcgPSBudWxsO1xuICAgICAgdGhpcy5iYXNlcGFyYW1zID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLml0ZW0yKSB7XG4gICAgICB0aGlzLmluZGV4RGF0YVByZXZpZXcyID0gbnVsbDtcbiAgICAgIHRoaXMuYmFzZXBhcmFtczIgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoaXRlbSkge1xuICAgICAgdGhpcy5wcmVwYXJlSW5kZXhEYXRhUHJldmlldyhpdGVtLCBmb3JtRGF0YSlcbiAgICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICBpZiAoaXRlbSA9PT0gdGhpcy5pdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmluZGV4RGF0YVByZXZpZXcgPSBkYXRhLmluZGV4RGF0YVByZXZpZXc7XG4gICAgICAgICAgICB0aGlzLmJhc2VwYXJhbXMgPSBkYXRhLmJhc2VwYXJhbXM7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5kZXhEYXRhUHJldmlldzIgPSBkYXRhLmluZGV4RGF0YVByZXZpZXc7XG4gICAgICAgICAgICB0aGlzLmJhc2VwYXJhbXMyID0gZGF0YS5iYXNlcGFyYW1zO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25Db21wYXJlVGFiQ2hhbmdlKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZW5hYmxlU3luYykge1xuICAgICAgdGhpcy50YWJDb250YWluZXJzLmZvckVhY2godCA9PiB7XG4gICAgICAgIGlmICh0LnNlbGVjdGVkVGFiICE9PSBldmVudCkge1xuICAgICAgICAgIHQuc2VsZWN0QnlJZChldmVudClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBnZXQgcmVmZXJlbmNlVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtLmNvbnRleHRGb2xkZXIgPyB0aGlzLml0ZW0uY29udGV4dEZvbGRlci50aXRsZSA6IHRoaXMuaXRlbS50aXRsZTtcbiAgfVxuXG4gIGlzSm91cm5hbE9iamVjdChpdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0udHlwZS5zdXBlcnR5cGVzLmZpbmQoc1QgPT4gc1QgPT09ICdzeXNqb3VybmFsb2JqZWN0Jyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN1YnNjcmlwdGlvbkljb25Ub29sdGlwKGl0ZW06IERtc09iamVjdCk6IHN0cmluZyB7XG4gICAgbGV0IHRvb2x0aXAgPSAnJztcbiAgICBjb25zdCBtb2RlcyA9IHRoaXMuaXRlbS5zdWJzY3JpcHRpb25zLm1hcChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLm1vZGUpO1xuICAgIGNvbnN0IHN1YnNjcmliZWRUb0FsbENoYW5nZXMgPSBtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLkRNU19PQkpFQ1RfQ0hBTkdFRCkgfHwgKG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuT05MWV9ET0NVTUVOVF9DT05URU5UX0NIQU5HRUQpICYmIG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuT05MWV9JTkRFWF9EQVRBX0NIQU5HRUQpKTtcbiAgICBjb25zdCBzdWJzY3JpYmVkVG9NZXRhQ2hhbmdlc09ubHkgPSBtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLk9OTFlfSU5ERVhfREFUQV9DSEFOR0VEKSAmJiAhbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRCkgJiYgIW1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuRE1TX09CSkVDVF9DSEFOR0VEKTtcbiAgICBjb25zdCBzdWJzY3JpYmVkVG9Db250ZW50Q2hhbmdlc09ubHkgPSBtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLk9OTFlfRE9DVU1FTlRfQ09OVEVOVF9DSEFOR0VEKSAmJiAhbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0lOREVYX0RBVEFfQ0hBTkdFRCkgJiYgIW1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuRE1TX09CSkVDVF9DSEFOR0VEKTtcbiAgICBpZiAoc3Vic2NyaWJlZFRvQWxsQ2hhbmdlcykge1xuICAgICAgdG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5zdWJzY3JpcHRpb24uaWNvbi50b29sdGlwLmFsbENoYW5nZXMnKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoc3Vic2NyaWJlZFRvTWV0YUNoYW5nZXNPbmx5KSB7XG4gICAgICB0b29sdGlwID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LnN1YnNjcmlwdGlvbi5pY29uLnRvb2x0aXAubWV0YScpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzdWJzY3JpYmVkVG9Db250ZW50Q2hhbmdlc09ubHkpIHtcbiAgICAgIHRvb2x0aXAgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5vYmplY3Quc3Vic2NyaXB0aW9uLmljb24udG9vbHRpcC5jb250ZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiB0b29sdGlwO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tDYXBhYmlsaXRpZXMoKSB7XG4gICAgaWYgKCF0aGlzLmNhcGFiaWxpdGllcykgcmV0dXJuO1xuICAgIGlmICghdGhpcy5jYXBhYmlsaXRpZXMuc2lnbmluZykge1xuICAgICAgdGhpcy5fcGFuZWxPcmRlci5tYXN0ZXIgPSB0aGlzLl9wYW5lbE9yZGVyPy5tYXN0ZXI/Lmxlbmd0aCA/XG4gICAgICAgIHRoaXMuX3BhbmVsT3JkZXIubWFzdGVyLmZpbHRlcihpZCA9PiBpZCAhPT0gJ3NpZ25hdHVyZScpIDogW107XG5cbiAgICAgIHRoaXMuX3BhbmVsT3JkZXIuc2xhdmUgPSB0aGlzLl9wYW5lbE9yZGVyPy5zbGF2ZT8ubGVuZ3RoID9cbiAgICAgICAgdGhpcy5fcGFuZWxPcmRlci5zbGF2ZS5maWx0ZXIoaWQgPT4gaWQgIT09ICdzaWduYXR1cmUnKSA6IFtdO1xuICAgIH1cblxuICAgIHRoaXMuc3BsaXRUYWJDb25maWcgPSBzdHJ1Y3R1cmVkQ2xvbmUoe1xuICAgICAgcHJpbWFyeTogdGhpcy5fcGFuZWxPcmRlcj8ubWFzdGVyPy5sZW5ndGggPyB7dGFiczogdGhpcy5fcGFuZWxPcmRlci5tYXN0ZXIsIGFjdGl2ZTogdGhpcy5fcGFuZWxPcmRlci5tYXN0ZXJbMF19IDogdW5kZWZpbmVkLFxuICAgICAgc2Vjb25kYXJ5OiB0aGlzLl9wYW5lbE9yZGVyPy5zbGF2ZT8ubGVuZ3RoID8ge3RhYnM6IHRoaXMuX3BhbmVsT3JkZXIuc2xhdmUsIGFjdGl2ZTogdGhpcy5fcGFuZWxPcmRlci5zbGF2ZVswXX0gOiB1bmRlZmluZWQsXG4gICAgfSlcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2FwYWJpbGl0aWVzID0gdGhpcy5jYXBhYmlsaXR5U2VydmljZS5nZXRDYXBhYmlsaXRpZXMoKTtcbiAgICB0aGlzLl9jaGVja0NhcGFiaWxpdGllcygpO1xuICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5vbihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfVVBEQVRFRClcbiAgICAgIC5waXBlKFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudC5kYXRhICYmIHRoaXMuaXRlbSAmJiB0aGlzLml0ZW0uaWQgPT09IGV2ZW50LmRhdGEuaWQpIHtcbiAgICAgICAgICB0aGlzLmRtc09iamVjdCA9IHRoaXMuZG1zU2VydmljZS5jcmVhdGVMb2NhbENvcHlPZkRNU09iamVjdChldmVudC5kYXRhKTtcbiAgICAgICAgICBpZiAodGhpcy5wcmV2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcucmVmcmVzaCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuSU5CT1hfSVRFTV9DT05GSVJNRUQpXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBpZiAodGhpcy5pdGVtICYmIHRoaXMuaXRlbS5pZCA9PT0gZXZlbnQuZGF0YS50YXJnZXQuaWQpIHtcbiAgICAgICAgICB0aGlzLmRtc1BhcmFtcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8vIGxldCBwYW5lbHMgPSB0aGlzLnRhYlBhbmVscy50b0FycmF5KCk7XG4gICAgLy8gdGhpcy50YWJQbHVnaW5zLmZvckVhY2gocCA9PiBwYW5lbHMgPSBwYW5lbHMuY29uY2F0KHAudGFiUGFuZWxzLnRvQXJyYXkoKSkpO1xuICAgIC8vIHRoaXMuZXh0ZXJuYWxQYW5lbHMucmVzZXQocGFuZWxzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudXBsb2FkUmVnaXN0cnkudW5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldC5pZCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsb2FkZXItb3ZlcmxheV9fbWFza1wiICpuZ0lmPVwic2hvd0xvYWRlclwiPlxuICA8ZW8tbG9hZGluZy1zcGlubmVyIGNsYXNzPVwib2JqZWN0LWRldGFpbF9fbG9hZGVyXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtICYmICFoYXNFcnJvcjsgZWxzZSBub0l0ZW1cIj5cblxuICA8ZGl2IGNsYXNzPVwiZW8taGVhZCBlby1oZWFkLXRhYnNcIiBbZW9TaG9ydGN1dHNdPVwic2hvcnRjdXRzXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImVvLWhlYWRlclwiPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJlby1oZWFkZXItaWNvblwiIFtvYmplY3RUeXBlXT1cIml0ZW0udHlwZVwiIFtpY29uVGl0bGVdPVwiaXRlbS50eXBlLmxhYmVsXCI+PC9lby1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1pbmZvXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImVvLWhlYWRlci10aXRsZVwiPnt7aXRlbS50aXRsZX19PC9oMj5cbiAgICAgICAgPGgzIGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlXCI+e3tpdGVtLmRlc2NyaXB0aW9ufX08L2gzPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1JlZmVyZW5jZTsgZWxzZSB0cGxIZWFkUmVmZXJlbmNlXCI+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiByZWZyZXNoLWJ1dHRvblwiICpuZ0lmPVwiIXJlY3ljbGViaW5UYWJzXCJcbiAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfcmVmcmVzaC5zdmcnXCIgW2ljb25UaXRsZV09XCIoJ2VvLmxpc3QucmVmcmVzaCcgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlLXJlZnJlc2gnOiBwcmV2ZW50Q2xpY2tUaHJvdWdofVwiIChjbGljayk9XCJyZWZyZXNoQ29udGVudCgpXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gc3luYy10YWItYnRuXCIgKm5nSWY9XCJlbmFibGVDb21wYXJlICYmICFyZWN5Y2xlYmluVGFic1wiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZW5hYmxlZCc6IGVuYWJsZVN5bmN9XCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbGluay5zdmcnXCJcbiAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8udmVyc2lvbnMuZGV0YWlsLmdsdWUudG9vbHRpcCcgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiZW5hYmxlU3luYyA9ICFlbmFibGVTeW5jXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgPGVvLWZhdm9yaXRlLWljb24gW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWVuYWJsZUNvbXBhcmUgJiYgIXJlY3ljbGViaW5UYWJzICYmIGNhcGFiaWxpdGllcy5mYXZvcml0ZXMgJiYgIWlzSm91cm5hbE9iamVjdChpdGVtKVwiPlxuICAgICAgICAgICAgPC9lby1mYXZvcml0ZS1pY29uPlxuICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gb2MtYnV0dG9uXCIgKm5nSWY9XCIhZW5hYmxlQ29tcGFyZSAmJiBpdGVtLmNvbnRlbnRcIiAoY2xpY2spPVwiZG93bmxvYWRPcmlnaW5hbENvbnRlbnQoKVwiXG4gICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5hY3Rpb24uZG93bmxvYWQuZG1zLm9iamVjdC5jb250ZW50LmxhYmVsJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jb250ZW50LWRvd25sb2FkLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICA8ZW8tZWRpdC1pY29uIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFlbmFibGVDb21wYXJlICYmICFyZWN5Y2xlYmluVGFicyAmJiBpdGVtLmNvbnRlbnQgJiYgaXRlbS5yaWdodHMuZWRpdCAmJiAoYWdlbnRJc0Nvbm5lY3RlZCQgfCBhc3luYykgJiYgIWl0ZW0uaXNGaW5hbGl6ZWRcIj5cbiAgICAgICAgICAgIDwvZW8tZWRpdC1pY29uPlxuICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gYW0tYnV0dG9uXCIgKm5nSWY9XCIhcmVjeWNsZWJpblRhYnNcIiAoY2xpY2spPVwic2hvd0FjdGlvbnMoKVwiXG4gICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5vYmplY3QuZGV0YWlscy5hY3Rpb25zLnRpdGxlJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19tb3JlLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3RwbEhlYWRSZWZlcmVuY2U+XG4gICAgICAgICAgICA8YSBjbGFzcz1cImJ1dHRvbiByZWZlcmVuY2UgcHJpbWFyeVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCIoJ2VvLm9iamVjdC5yZWZlcmVuY2UudG9vbHRpcCcgfCB0cmFuc2xhdGU6e3RpdGxlOnJlZmVyZW5jZVRpdGxlfSlcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9vYmplY3QnLCBpdGVtLmlkXVwiXG4gICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7dHlwZTogaXRlbS50eXBlTmFtZX1cIj57eydlby5vYmplY3QucmVmZXJlbmNlLm9wZW4nfHRyYW5zbGF0ZX19PC9hPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1zdGF0dXMtaWNvbnNcIj5cbiAgICAgICAgICA8YSBjbGFzcz1cImNvbnRlbnQtbGlua1wiIFt0aXRsZV09XCInZW8ub2JqZWN0LmNvbnRlbnRsaW5rLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCIgKm5nSWY9XCJpdGVtLmNvbnRlbnQ/LmxpbmtlZFwiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCInL29iamVjdC8nICsgaXRlbS5jb250ZW50LmlkXCIgW3F1ZXJ5UGFyYW1zXT1cInt0eXBlOiBpdGVtLmNvbnRlbnQudHlwZX1cIj5cbiAgICAgICAgICAgIDxzcGFuPnt7J2VvLm9iamVjdC5jb250ZW50bGluaycgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzdWJzY3JpcHRpb24taWNvblwiICpuZ0lmPVwiaXRlbS5zdWJzY3JpcHRpb25zLmxlbmd0aFwiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zdWJzY3JpcHRpb24uc3ZnJ1wiIFtpY29uVGl0bGVdPVwic3Vic2NyaXB0aW9uSWNvblRvb2x0aXBcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJyZXN1Ym1pc3Npb24taWNvblwiICpuZ0lmPVwiaXRlbS5yZXN1Ym1pc3Npb25zLmxlbmd0aFwiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZXN1Ym1pc3Npb24uc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3QucmVzdWJtaXNzaW9uLnRvb2x0aXAnIHwgdHJhbnNsYXRlOiB7ZHVlOiBpdGVtLnJlc3VibWlzc2lvbnNbMF0uZHVlIHwgbG9jYWxlRGF0ZSwgaW5mbzogaXRlbS5yZXN1Ym1pc3Npb25zWzBdLmluZm99XCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2hhcmVkLWljb25cIiAqbmdJZj1cIml0ZW0uYWRkaXRpb25hbHZpc2liaWxpdHkubGVuZ3RoICYmICFyZWN5Y2xlYmluVGFic1wiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaGFyZS5zdmcnXCJcbiAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5zaGFyZWQudG9vbHRpcCcgfCB0cmFuc2xhdGVcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJsb2NrXCIgW25nQ2xhc3NdPVwieydteUxvY2snOiBpdGVtLmxvY2suYnkubWV9XCIgKm5nSWY9XCJpdGVtLmxvY2tcIlxuICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbG9jay5zdmcnXCIgW2ljb25UaXRsZV09XCJsb2NrVG9vbHRpcFwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImZpbmFsaXplZC1pY29uXCIgKm5nSWY9XCJpdGVtLmlzRmluYWxpemVkXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZmluYWxpemVkLnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LmZpbmFsaXplZC50b29sdGlwJyB8IHRyYW5zbGF0ZVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInNpZ25lZC1pY29uIGlucHJvY2Vzc1wiICpuZ0lmPVwiaXRlbS5kYXRhLnl1dnNpZ3N0YXR1cyA9PT0gJ2lucHJvY2VzcydcIlxuICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2lnbmF0dXJlLnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LnNpZ25hdHVyZS50b29sdGlwLmlucHJvY2VzcycgfCB0cmFuc2xhdGVcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzaWduZWQtaWNvbiBzaWduZWRcIiAqbmdJZj1cIml0ZW0uZGF0YS55dXZzaWdzdGF0dXMgPT09ICdzaWduZWQnXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NpZ25hdHVyZS5zdmcnXCJcbiAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5zaWduYXR1cmUudG9vbHRpcC5zaWduZWQnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2lnbmVkLWljb24gc3RvcHBlZFwiICpuZ0lmPVwiaXRlbS5kYXRhLnl1dnNpZ3N0YXR1cyA9PT0gJ2NhbmNlbGVkJ1xuICAgICAgICAgICAgICAgICAgICB8fCBpdGVtLmRhdGEueXV2c2lnc3RhdHVzID09PSAncmV2aXNlZCcgfHwgaXRlbS5kYXRhLnl1dnNpZ3N0YXR1cyA9PT0gJ2Vycm9yJyB8fCBpdGVtLmRhdGEueXV2c2lnc3RhdHVzID09PSAnZXhwaXJlZCdcIlxuICAgICAgICAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NpZ25hdHVyZS5zdmcnXCJcbiAgICAgICAgICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3Quc2lnbmF0dXJlLnRvb2x0aXAuc3RvcHBlZCcgfCB0cmFuc2xhdGVcIj48L2VvLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9oZWFkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiPlxuXG4gICAgPHl2Yy1zcGxpdC10YWJzIFtjb25maWddPVwic3BsaXRUYWJDb25maWdcIiBbbGF5b3V0U2V0dGluZ3NJRF09XCJjYWNoZUxheW91dFwiICpuZ0lmPVwiIWl0ZW0yOyBlbHNlIHRwbENvbXBhcmVcIj5cbiAgICAgIDwhLS0gc3VtbWFyeSAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3N1bW1hcnknLCBsYWJlbDogJ2VvLm9iamVjdC5zdW1tYXJ5LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLWluZGV4ZGF0YS1zdW1tYXJ5IFtpbmRleGRhdGFdPVwiaW5kZXhEYXRhUHJldmlld1wiIFtiYXNlcGFyYW1zXT1cImJhc2VwYXJhbXNcIiBbZG1zT2JqZWN0XT1cIml0ZW1cIlxuICAgICAgICAgIFtlbmFibGVWZXJzaW9uc109XCIhZW5hYmxlQ29tcGFyZVwiPjwvZW8taW5kZXhkYXRhLXN1bW1hcnk+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSBtZXRhZGF0YSAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2luZGV4ZGF0YScsIGxhYmVsOiAnZW8ub2JqZWN0LmluZGV4ZGF0YS50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1vYmplY3QtZm9ybS1lZGl0IFtkbXNPYmplY3RdPVwiaXRlbVwiIChpbmRleERhdGFTYXZlZCk9XCJvbkluZGV4RGF0YVNhdmVkKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgIFtmb3JtRGlzYWJsZWRdPVwiZW5hYmxlQ29tcGFyZSB8fCBpc1JlZmVyZW5jZVwiPjwvZW8tb2JqZWN0LWZvcm0tZWRpdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8IS0tIHByZXZpZXcgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdwcmV2aWV3JywgbGFiZWw6ICdlby5vYmplY3QuY29udGVudC50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1tZWRpYSBbZG1zT2JqZWN0XT1cIml0ZW1cIiBbdXNlVmVyc2lvbl09XCJpdGVtLmlkID09PSBpdGVtLmNvbnRlbnQ/LmlkXCIgW3NlYXJjaFRlcm1dPVwic2VhcmNoVGVybVwiXG4gICAgICAgICAgI3ZpZXdlcj48L2VvLW1lZGlhPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gaGlzdG9yeSAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2hpc3RvcnknLCBsYWJlbDogJ2VvLm9iamVjdC5oaXN0b3J5LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLW9iamVjdC1oaXN0b3J5IFtwYXJhbXNdPVwie2lkOiBpdGVtLmlkLCB0eXBlOiBpdGVtLnR5cGU/LnFuYW1lfVwiPlxuICAgICAgICA8L2VvLW9iamVjdC1oaXN0b3J5PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gbGlua3MgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdsaW5rcycsIGxhYmVsOiAnZW8ub2JqZWN0LmxpbmtzLnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLW9iamVjdC1saW5rcyBbZG1zT2JqZWN0XT1cIml0ZW1cIj48L2VvLW9iamVjdC1saW5rcz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8IS0tIHNpZ25hdHVyZSAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3NpZ25hdHVyZScsIGxhYmVsOiAnZW8ub2JqZWN0LnNpZ25hdHVyZS10YWIudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tc2lnbmF0dXJlLXRhYiBbZG1zT2JqZWN0XT1cIml0ZW1cIj48L2VvLXNpZ25hdHVyZS10YWI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwveXZjLXNwbGl0LXRhYnM+XG5cbiAgICA8bmctdGVtcGxhdGUgI3RwbENvbXBhcmU+XG4gICAgICA8eXZjLXNwbGl0LXZpZXc+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNTBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFRhYnM7IGNvbnRleHQ6IHtpdGVtOiBpdGVtLCBpbmRleERhdGFQcmV2aWV3LCBiYXNlcGFyYW1zLCBlbmFibGVDb21wYXJlOiBmYWxzZSwgc2VhcmNoVGVybSwgaXNSZWZlcmVuY2V9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNTBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFRhYnM7IGNvbnRleHQ6IHtpdGVtOiBpdGVtMiwgaW5kZXhEYXRhUHJldmlldzogaW5kZXhEYXRhUHJldmlldzIsIGJhc2VwYXJhbXM6IGJhc2VwYXJhbXMyLCBlbmFibGVDb21wYXJlOiBmYWxzZSwgc2VhcmNoVGVybSwgaXNSZWZlcmVuY2V9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3l2Yy1zcGxpdC12aWV3PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI3RwbFRhYnMgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWluZGV4RGF0YVByZXZpZXc9XCJpbmRleERhdGFQcmV2aWV3XCIgbGV0LWJhc2VwYXJhbXM9XCJiYXNlcGFyYW1zXCJcbiAgICAgIGxldC1lbmFibGVDb21wYXJlPVwiZW5hYmxlQ29tcGFyZVwiIGxldC1zZWFyY2hUZXJtPVwic2VhcmNoVGVybVwiIGxldC1pc1JlZmVyZW5jZT1cImlzUmVmZXJlbmNlXCI+XG4gICAgICA8eXZjLXRhYnMgKHRhYkNoYW5nZSk9XCJvbkNvbXBhcmVUYWJDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICA8IS0tIHN1bW1hcnkgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3N1bW1hcnknLCBsYWJlbDogJ2VvLm9iamVjdC5zdW1tYXJ5LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgICA8ZW8taW5kZXhkYXRhLXN1bW1hcnkgW2luZGV4ZGF0YV09XCJpbmRleERhdGFQcmV2aWV3XCIgW2Jhc2VwYXJhbXNdPVwiYmFzZXBhcmFtc1wiXG4gICAgICAgICAgICBbZG1zT2JqZWN0XT1cIml0ZW1cIj48L2VvLWluZGV4ZGF0YS1zdW1tYXJ5PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8IS0tIG1ldGFkYXRhIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdpbmRleGRhdGEnLCBsYWJlbDogJ2VvLm9iamVjdC5pbmRleGRhdGEudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgIDxlby1vYmplY3QtZm9ybS1lZGl0IFtkbXNPYmplY3RdPVwiaXRlbVwiIChpbmRleERhdGFTYXZlZCk9XCJvbkluZGV4RGF0YVNhdmVkKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgW2Zvcm1EaXNhYmxlZF09XCJ0cnVlXCI+PC9lby1vYmplY3QtZm9ybS1lZGl0PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8IS0tIHByZXZpZXcgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3ByZXZpZXcnLCBsYWJlbDogJ2VvLm9iamVjdC5jb250ZW50LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgICA8ZW8tbWVkaWEgW2Rtc09iamVjdF09XCJpdGVtXCIgW3VzZVZlcnNpb25dPVwiaXRlbS5pZCA9PT0gaXRlbS5jb250ZW50Py5pZFwiIFtzZWFyY2hUZXJtXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgICAgI3ZpZXdlcj48L2VvLW1lZGlhPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8IS0tIGhpc3RvcnkgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2hpc3RvcnknLCBsYWJlbDogJ2VvLm9iamVjdC5oaXN0b3J5LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgICA8ZW8tb2JqZWN0LWhpc3RvcnkgW3BhcmFtc109XCJ7aWQ6IGl0ZW0uaWQsIHR5cGU6IGl0ZW0udHlwZT8ucW5hbWV9XCI+XG4gICAgICAgICAgPC9lby1vYmplY3QtaGlzdG9yeT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPCEtLSBsaW5rcyAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnbGlua3MnLCBsYWJlbDogJ2VvLm9iamVjdC5saW5rcy50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgICAgPGVvLW9iamVjdC1saW5rcyBbZG1zT2JqZWN0XT1cIml0ZW1cIj48L2VvLW9iamVjdC1saW5rcz5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPCEtLSBzaWduYXR1cmUgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3NpZ25hdHVyZScsIGxhYmVsOiAnZW8ub2JqZWN0LnNpZ25hdHVyZS10YWIudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgIDxlby1zaWduYXR1cmUtdGFiIFtkbXNPYmplY3RdPVwiaXRlbVwiPjwvZW8tc2lnbmF0dXJlLXRhYj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwveXZjLXRhYnM+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI25vSXRlbT5cbiAgPHNwYW4gY2xhc3M9XCJub3QtZm91bmRcIiAqbmdJZj1cIm5vZG1zb2JqZWN0XCIgdHJhbnNsYXRlPmVvLmJwbS5ub2Rtc29iamVjdDwvc3Bhbj5cbiAgPGVvLWVycm9yLW1lc3NhZ2UgKm5nSWY9XCIhc2hvd0xvYWRlclwiXG4gICAgW2VtcHR5U3RhdGVdPVwie2ljb246IGVtcHR5U3RhdGUuaWNvbiwgdGV4dDogZW1wdHlTdGF0ZS50ZXh0LCBjbGFzc05hbWU6IGVtcHR5U3RhdGUuY2xhc3NOYW1lfVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIi5lcnJvclwiPjwvbmctY29udGVudD5cbiAgPC9lby1lcnJvci1tZXNzYWdlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|