@pega/angular-sdk-components 24.1.10 → 24.2.10
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/esm2022/lib/_bridge/angular-pconnect.mjs +3 -3
- package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +6 -13
- package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +4 -4
- package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +4 -4
- package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +5 -5
- package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +9 -6
- package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +4 -4
- package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +4 -4
- package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +9 -9
- package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +3 -3
- package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +12 -10
- package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +3 -3
- package/esm2022/lib/_components/field/check-box/check-box.component.mjs +11 -9
- package/esm2022/lib/_components/field/currency/currency.component.mjs +30 -17
- package/esm2022/lib/_components/field/date/date.component.mjs +19 -39
- package/esm2022/lib/_components/field/date-time/date-time.component.mjs +16 -14
- package/esm2022/lib/_components/field/decimal/decimal.component.mjs +22 -20
- package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +124 -24
- package/esm2022/lib/_components/field/email/email.component.mjs +14 -7
- package/esm2022/lib/_components/field/group/group.component.mjs +6 -6
- package/esm2022/lib/_components/field/integer/integer.component.mjs +14 -9
- package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +3 -3
- package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +13 -6
- package/esm2022/lib/_components/field/percentage/percentage.component.mjs +31 -23
- package/esm2022/lib/_components/field/phone/phone.component.mjs +11 -18
- package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +9 -11
- package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +8 -9
- package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +7 -8
- package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +3 -3
- package/esm2022/lib/_components/field/text/text.component.mjs +6 -4
- package/esm2022/lib/_components/field/text-area/text-area.component.mjs +14 -10
- package/esm2022/lib/_components/field/text-content/text-content.component.mjs +3 -3
- package/esm2022/lib/_components/field/text-input/text-input.component.mjs +14 -9
- package/esm2022/lib/_components/field/time/time.component.mjs +20 -11
- package/esm2022/lib/_components/field/url/url.component.mjs +14 -9
- package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +37 -17
- package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +10 -7
- package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +3 -3
- package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +4 -4
- package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +4 -4
- package/esm2022/lib/_components/infra/Containers/view-container/helper.mjs +22 -0
- package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +9 -16
- package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +3 -3
- package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +4 -5
- package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +3 -3
- package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +3 -3
- package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +7 -7
- package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +3 -3
- package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +3 -3
- package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +5 -5
- package/esm2022/lib/_components/infra/reference/reference.component.mjs +3 -3
- package/esm2022/lib/_components/infra/region/region.component.mjs +3 -3
- package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +4 -4
- package/esm2022/lib/_components/infra/stages/stages.component.mjs +5 -5
- package/esm2022/lib/_components/infra/view/view.component.mjs +22 -7
- package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +20 -4
- package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +3 -3
- package/esm2022/lib/_components/template/base/details-template-base.mjs +56 -0
- package/esm2022/lib/_components/template/base/form-template-base.mjs +13 -0
- package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +4 -4
- package/esm2022/lib/_components/template/case-view/case-view.component.mjs +11 -16
- package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +5 -5
- package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +13 -8
- package/esm2022/lib/_components/template/default-form/default-form.component.mjs +8 -20
- package/esm2022/lib/_components/template/details/details.component.mjs +12 -39
- package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +11 -38
- package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +12 -41
- package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +13 -40
- package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +12 -41
- package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +13 -42
- package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +12 -41
- package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +8 -7
- package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +3 -3
- package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +6 -8
- package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +5 -5
- package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +3 -3
- package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +5 -5
- package/esm2022/lib/_components/template/list-page/list-page.component.mjs +3 -3
- package/esm2022/lib/_components/template/list-view/list-view.component.mjs +24 -9
- package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +2 -2
- package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +3 -3
- package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +4 -4
- package/esm2022/lib/_components/template/one-column/one-column.component.mjs +6 -5
- package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +3 -3
- package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +4 -4
- package/esm2022/lib/_components/template/page/page.component.mjs +4 -4
- package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +4 -4
- package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +4 -4
- package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +3 -3
- package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +2 -2
- package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +9 -11
- package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +5 -5
- package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +3 -3
- package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +4 -4
- package/esm2022/lib/_components/template/three-column/three-column.component.mjs +6 -5
- package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +3 -3
- package/esm2022/lib/_components/template/two-column/two-column.component.mjs +6 -5
- package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +3 -3
- package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +4 -4
- package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +6 -5
- package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +4 -4
- package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +5 -5
- package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +3 -3
- package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +6 -8
- package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +3 -3
- package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +5 -5
- package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +4 -4
- package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +3 -3
- package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +3 -3
- package/esm2022/lib/_components/widget/todo/todo.component.mjs +77 -63
- package/esm2022/lib/_components/widget/utility/utility.component.mjs +3 -3
- package/esm2022/lib/_directives/thousand-seperator.directive.mjs +4 -4
- package/esm2022/lib/_helpers/createstage-utils.mjs +15 -0
- package/esm2022/lib/_helpers/field-group-utils.mjs +3 -3
- package/esm2022/lib/_helpers/filter-utils.mjs +1 -2
- package/esm2022/lib/_helpers/formatters/common.mjs +3 -5
- package/esm2022/lib/_helpers/formatters/date.mjs +4 -4
- package/esm2022/lib/_helpers/formatters/index.mjs +17 -3
- package/esm2022/lib/_helpers/template-utils.mjs +3 -3
- package/esm2022/lib/_helpers/utils.mjs +3 -3
- package/esm2022/lib/_messages/error-messages.service.mjs +4 -4
- package/esm2022/lib/_messages/progress-spinner.service.mjs +3 -3
- package/esm2022/lib/_messages/update-worklist.service.mjs +3 -3
- package/esm2022/lib/_services/case.service.mjs +3 -3
- package/esm2022/lib/_services/datapage.service.mjs +3 -3
- package/esm2022/lib/_services/endpoints.mjs +1 -2
- package/esm2022/lib/_services/server-config.service.mjs +3 -3
- package/esm2022/public-api.mjs +4 -4
- package/fesm2022/pega-angular-sdk-components.mjs +1286 -1274
- package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
- package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +1 -1
- package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +1 -1
- package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +2 -2
- package/lib/_components/field/auto-complete/auto-complete.component.d.ts +3 -2
- package/lib/_components/field/check-box/check-box.component.d.ts +2 -2
- package/lib/_components/field/currency/currency.component.d.ts +6 -3
- package/lib/_components/field/date/date.component.d.ts +17 -6
- package/lib/_components/field/date-time/date-time.component.d.ts +9 -2
- package/lib/_components/field/decimal/decimal.component.d.ts +3 -3
- package/lib/_components/field/dropdown/dropdown.component.d.ts +13 -2
- package/lib/_components/field/email/email.component.d.ts +2 -0
- package/lib/_components/field/integer/integer.component.d.ts +3 -1
- package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -1
- package/lib/_components/field/multiselect/multiselect.component.d.ts +3 -2
- package/lib/_components/field/percentage/percentage.component.d.ts +7 -3
- package/lib/_components/field/phone/phone.component.d.ts +3 -1
- package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +2 -1
- package/lib/_components/field/rich-text/rich-text.component.d.ts +2 -0
- package/lib/_components/field/text/text.component.d.ts +3 -1
- package/lib/_components/field/text-area/text-area.component.d.ts +3 -1
- package/lib/_components/field/text-input/text-input.component.d.ts +3 -1
- package/lib/_components/field/time/time.component.d.ts +4 -1
- package/lib/_components/field/url/url.component.d.ts +3 -1
- package/lib/_components/field/user-reference/user-reference.component.d.ts +7 -0
- package/lib/_components/infra/Containers/view-container/helper.d.ts +2 -0
- package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
- package/lib/_components/infra/defer-load/defer-load.component.d.ts +2 -2
- package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
- package/lib/_components/infra/navbar/navbar.component.d.ts +2 -2
- package/lib/_components/infra/view/view.component.d.ts +1 -0
- package/lib/_components/template/base/details-template-base.d.ts +22 -0
- package/lib/_components/template/base/form-template-base.d.ts +8 -0
- package/lib/_components/template/case-view/case-view.component.d.ts +1 -2
- package/lib/_components/template/default-form/default-form.component.d.ts +2 -5
- package/lib/_components/template/details/details.component.d.ts +3 -11
- package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +3 -11
- package/lib/_components/template/details-one-column/details-one-column.component.d.ts +3 -13
- package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +3 -13
- package/lib/_components/template/details-three-column/details-three-column.component.d.ts +3 -13
- package/lib/_components/template/details-two-column/details-two-column.component.d.ts +3 -13
- package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +3 -13
- package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +1 -0
- package/lib/_components/template/list-view/list-view.component.d.ts +6 -1
- package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -1
- package/lib/_components/template/one-column/one-column.component.d.ts +2 -1
- package/lib/_components/template/simple-table-manual/helpers.d.ts +1 -1
- package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +2 -0
- package/lib/_components/template/three-column/three-column.component.d.ts +2 -1
- package/lib/_components/template/two-column/two-column.component.d.ts +2 -1
- package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +2 -1
- package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +1 -1
- package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +3 -3
- package/lib/_components/widget/attachment/attachment.component.d.ts +3 -3
- package/lib/_components/widget/feed-container/feed-container.component.d.ts +2 -2
- package/lib/_components/widget/file-utility/file-utility.component.d.ts +1 -1
- package/lib/_components/widget/todo/todo.component.d.ts +9 -12
- package/lib/_helpers/common.d.ts +1 -1
- package/lib/_helpers/createstage-utils.d.ts +1 -0
- package/lib/_helpers/formatters/common.d.ts +2 -2
- package/lib/_messages/error-messages.service.d.ts +1 -1
- package/lib/_services/endpoints.d.ts +0 -1
- package/lib/doc/KeyReleaseUpdates.md +23 -6
- package/package.json +3 -3
- package/public-api.d.ts +3 -3
- package/esm2022/lib/_messages/get-login-status.service.mjs +0 -26
- package/esm2022/lib/_messages/oauth-response.service.mjs +0 -30
- package/esm2022/lib/_messages/reset-pconnect.service.mjs +0 -31
- package/lib/_messages/get-login-status.service.d.ts +0 -10
- package/lib/_messages/oauth-response.service.d.ts +0 -14
- package/lib/_messages/reset-pconnect.service.d.ts +0 -15
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const addContainerItem = pConnect => {
|
|
2
|
+
const containerManager = pConnect.getContainerManager();
|
|
3
|
+
const context = pConnect.getContextName();
|
|
4
|
+
containerManager.addContainerItem({
|
|
5
|
+
context,
|
|
6
|
+
semanticURL: ''
|
|
7
|
+
});
|
|
8
|
+
};
|
|
9
|
+
export const configureBrowserBookmark = pConnect => {
|
|
10
|
+
const context = pConnect.getContextName();
|
|
11
|
+
const containerName = pConnect.getContainerName();
|
|
12
|
+
const navPages = pConnect.getValue('pyPortal.pyPrimaryNavPages');
|
|
13
|
+
const defaultViewLabel = Array.isArray(navPages) && navPages[0] ? navPages[0].pyLabel : '';
|
|
14
|
+
PCore.configureForBrowserBookmark({
|
|
15
|
+
context,
|
|
16
|
+
containerName,
|
|
17
|
+
acName: containerName,
|
|
18
|
+
semanticURL: '',
|
|
19
|
+
defaultViewLabel
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvdmlldy1jb250YWluZXIvaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxFQUFFO0lBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDeEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1FBQ2hDLE9BQU87UUFDUCxXQUFXLEVBQUUsRUFBRTtLQUNoQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxRQUFRLENBQUMsRUFBRTtJQUNqRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDbEQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzRixLQUFLLENBQUMsMkJBQTJCLENBQUM7UUFDaEMsT0FBTztRQUNQLGFBQWE7UUFDYixNQUFNLEVBQUUsYUFBYTtRQUNyQixXQUFXLEVBQUUsRUFBRTtRQUNmLGdCQUFnQjtLQUNqQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYWRkQ29udGFpbmVySXRlbSA9IHBDb25uZWN0ID0+IHtcbiAgY29uc3QgY29udGFpbmVyTWFuYWdlciA9IHBDb25uZWN0LmdldENvbnRhaW5lck1hbmFnZXIoKTtcbiAgY29uc3QgY29udGV4dCA9IHBDb25uZWN0LmdldENvbnRleHROYW1lKCk7XG4gIGNvbnRhaW5lck1hbmFnZXIuYWRkQ29udGFpbmVySXRlbSh7XG4gICAgY29udGV4dCxcbiAgICBzZW1hbnRpY1VSTDogJydcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29uZmlndXJlQnJvd3NlckJvb2ttYXJrID0gcENvbm5lY3QgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gcENvbm5lY3QuZ2V0Q29udGV4dE5hbWUoKTtcbiAgY29uc3QgY29udGFpbmVyTmFtZSA9IHBDb25uZWN0LmdldENvbnRhaW5lck5hbWUoKTtcbiAgY29uc3QgbmF2UGFnZXMgPSBwQ29ubmVjdC5nZXRWYWx1ZSgncHlQb3J0YWwucHlQcmltYXJ5TmF2UGFnZXMnKTtcbiAgY29uc3QgZGVmYXVsdFZpZXdMYWJlbCA9IEFycmF5LmlzQXJyYXkobmF2UGFnZXMpICYmIG5hdlBhZ2VzWzBdID8gbmF2UGFnZXNbMF0ucHlMYWJlbCA6ICcnO1xuICBQQ29yZS5jb25maWd1cmVGb3JCcm93c2VyQm9va21hcmsoe1xuICAgIGNvbnRleHQsXG4gICAgY29udGFpbmVyTmFtZSxcbiAgICBhY05hbWU6IGNvbnRhaW5lck5hbWUsXG4gICAgc2VtYW50aWNVUkw6ICcnLFxuICAgIGRlZmF1bHRWaWV3TGFiZWxcbiAgfSk7XG59O1xuIl19
|
package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs
CHANGED
|
@@ -2,6 +2,7 @@ import { Component, Input, forwardRef } from '@angular/core';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { ReferenceComponent } from '../../reference/reference.component';
|
|
4
4
|
import { ComponentMapperComponent } from '../../../../_bridge/component-mapper/component-mapper.component';
|
|
5
|
+
import { configureBrowserBookmark } from './helper';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "../../../../_bridge/angular-pconnect";
|
|
7
8
|
import * as i2 from "../../../../_messages/progress-spinner.service";
|
|
@@ -41,16 +42,9 @@ export class ViewContainerComponent {
|
|
|
41
42
|
// And expose less via ui-bootstrap.js
|
|
42
43
|
this.state = {
|
|
43
44
|
dispatchObject: this.dispatchObject,
|
|
44
|
-
// PCore is defined in pxBootstrapShell - eventually will be exported in place of constellationCore
|
|
45
45
|
visible: !PCore.checkIfSemanticURL()
|
|
46
46
|
};
|
|
47
|
-
// here, to match Nebula/Constellation, the constructor of ViewContainer is only called once, and thus init/add container is only
|
|
48
|
-
// called once. Because of Angular creating and destroy components if the parent changes a lot, this component will be
|
|
49
|
-
// created and destroyed more than once. So the sessionStore "hasViewContainer" is set to false in rootContainer and then
|
|
50
|
-
// after first round is true here. Subsequent ViewContainer creation will not init/add more containers.
|
|
51
47
|
if (sessionStorage.getItem('hasViewContainer') == 'false') {
|
|
52
|
-
// unlike Nebula/Constellation, have to initializeContainer after we create a dispatcObject and state, otherwise, when calling
|
|
53
|
-
// initializeContainer before, code will get executed that needs state that wasn't defined.
|
|
54
48
|
containerMgr.initializeContainers({
|
|
55
49
|
type: mode === CONTAINER_TYPE.MULTIPLE ? CONTAINER_TYPE.MULTIPLE : CONTAINER_TYPE.SINGLE
|
|
56
50
|
});
|
|
@@ -58,11 +52,10 @@ export class ViewContainerComponent {
|
|
|
58
52
|
/* NOTE: setContainerLimit use is temporary. It is a non-public, unsupported API. */
|
|
59
53
|
PCore.getContainerUtils().setContainerLimit(`${APP.APP}/${name}`, limit);
|
|
60
54
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if (this.
|
|
64
|
-
|
|
65
|
-
}
|
|
55
|
+
if (!PCore.checkIfSemanticURL())
|
|
56
|
+
containerMgr.addContainerItem(this.pConn$);
|
|
57
|
+
if (!this.displayOnlyFA$)
|
|
58
|
+
configureBrowserBookmark(this.pConn$);
|
|
66
59
|
sessionStorage.setItem('hasViewContainer', 'true');
|
|
67
60
|
}
|
|
68
61
|
// cannot call checkAndUpdate becasue first time through, will call updateSelf and that is incorrect (causes issues).
|
|
@@ -202,10 +195,10 @@ export class ViewContainerComponent {
|
|
|
202
195
|
const sName = this.pConn$.getContainerName();
|
|
203
196
|
return `${sContext.toUpperCase()}/${sName.toUpperCase()}`;
|
|
204
197
|
}
|
|
205
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
206
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
198
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ViewContainerComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.ProgressSpinnerService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
199
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ViewContainerComponent, isStandalone: true, selector: "app-view-container", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", displayOnlyFA$: "displayOnlyFA$" }, ngImport: i0, template: "<div class=\"psdk-view-container-top\" id=\"{{ buildName$ }}\">\n <div *ngIf=\"isViewContainer$; else isReference\">\n <h3 *ngIf=\"title$ !== ''\">{{ title$ }}</h3>\n <div *ngIf=\"templateName$; else showChildren\">\n <component-mapper\n [name]=\"templateName$\"\n [props]=\"{\n pConn$: createdViewPConn$,\n formGroup$: formGroup$,\n displayOnlyFA$: displayOnlyFA$\n }\"\n errorMsg=\"View Container missing Template {{ templateName$ }}\"\n ></component-mapper>\n </div>\n <ng-template #showChildren>\n <div *ngFor=\"let kid of arChildren$\">\n <component-mapper\n [name]=\"kid.getPConnect().getComponentName()\"\n [props]=\"{\n pConn$: kid.getPConnect(),\n displayOnlyFA$: displayOnlyFA$\n }\"\n errorMsg=\"ViewContainer Missing (no template): {{ kid.getPConnect().getComponentName() }}\"\n ></component-mapper>\n </div>\n </ng-template>\n </div>\n <ng-template #isReference>\n <component-mapper name=\"View\" [props]=\"{ pConn$: viewPConn$, displayOnlyFA$ }\"></component-mapper>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i3.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
207
200
|
}
|
|
208
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
201
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ViewContainerComponent, decorators: [{
|
|
209
202
|
type: Component,
|
|
210
203
|
args: [{ selector: 'app-view-container', standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], template: "<div class=\"psdk-view-container-top\" id=\"{{ buildName$ }}\">\n <div *ngIf=\"isViewContainer$; else isReference\">\n <h3 *ngIf=\"title$ !== ''\">{{ title$ }}</h3>\n <div *ngIf=\"templateName$; else showChildren\">\n <component-mapper\n [name]=\"templateName$\"\n [props]=\"{\n pConn$: createdViewPConn$,\n formGroup$: formGroup$,\n displayOnlyFA$: displayOnlyFA$\n }\"\n errorMsg=\"View Container missing Template {{ templateName$ }}\"\n ></component-mapper>\n </div>\n <ng-template #showChildren>\n <div *ngFor=\"let kid of arChildren$\">\n <component-mapper\n [name]=\"kid.getPConnect().getComponentName()\"\n [props]=\"{\n pConn$: kid.getPConnect(),\n displayOnlyFA$: displayOnlyFA$\n }\"\n errorMsg=\"ViewContainer Missing (no template): {{ kid.getPConnect().getComponentName() }}\"\n ></component-mapper>\n </div>\n </ng-template>\n </div>\n <ng-template #isReference>\n <component-mapper name=\"View\" [props]=\"{ pConn$: viewPConn$, displayOnlyFA$ }\"></component-mapper>\n </ng-template>\n</div>\n" }]
|
|
211
204
|
}], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i2.ProgressSpinnerService }, { type: i0.NgZone }], propDecorators: { pConn$: [{
|
|
@@ -215,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
215
208
|
}], displayOnlyFA$: [{
|
|
216
209
|
type: Input
|
|
217
210
|
}] } });
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvdmlldy1jb250YWluZXIvdmlldy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvdmlldy1jb250YWluZXIvdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUkvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQzs7Ozs7QUEwQjNHLE1BQU0sT0FBTyxzQkFBc0I7SUF5QmpDLFlBQ1UsZUFBdUMsRUFDdkMsU0FBaUMsRUFDakMsTUFBYztRQUZkLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBdkJ4Qix1Q0FBdUM7UUFDdkMsd0JBQW1CLEdBQXdCLEVBQUUsQ0FBQztRQU85QyxXQUFNLEdBQUcsRUFBRSxDQUFDO1FBSVoscUJBQWdCLEdBQUcsSUFBSSxDQUFDO0lBWXJCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUM7UUFFRCxZQUFZO1FBRVosOEZBQThGO1FBQzlGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFeEcsOENBQThDO1FBRTlDLHVEQUF1RDtRQUN2RCxrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFckYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQXVCLENBQUM7UUFDdkcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDNUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckQsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUF1QixDQUFDO1FBRWpILElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFN0IsTUFBTSxZQUFZLEdBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRTVELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5FLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFbkQsK0VBQStFO1FBQy9FLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1gsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLG1HQUFtRztZQUVuRyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUU7U0FDckMsQ0FBQztRQUVGLGlJQUFpSTtRQUNqSSx1SEFBdUg7UUFDdkgsMEhBQTBIO1FBQzFILHdHQUF3RztRQUV4RyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUMxRCw4SEFBOEg7WUFDOUgsMkZBQTJGO1lBRTNGLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztnQkFDaEMsSUFBSSxFQUFFLElBQUksS0FBSyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTTthQUN6RixDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksS0FBSyxjQUFjLENBQUMsUUFBUSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUM5QyxvRkFBb0Y7Z0JBQ3BGLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzRSxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzFELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdkMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNyRCxDQUFDO1lBRUQsY0FBYyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBRUQscUhBQXFIO1FBQ3JILGtJQUFrSTtRQUNsSSwrRUFBK0U7UUFDL0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVELG1EQUFtRDtJQUNuRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjO1FBQ1osZ0VBQWdFO1FBQ2hFLDRCQUE0QjtRQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJFLHdEQUF3RDtRQUN4RCxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUiwrQ0FBK0M7UUFFL0MsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzdCLGtFQUFrRTtZQUNsRSxJQUFJLENBQUMsV0FBVyxHQUFHLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RixDQUFDO1FBRUQscUVBQXFFO1FBQ3JFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRS9FLElBQUksV0FBVyxDQUFDO1FBQ2hCLElBQUksQ0FBQztZQUNILGlHQUFpRztZQUNqRyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRTdDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ1osV0FBVztRQUNiLENBQUM7UUFFRCxzQ0FBc0M7UUFDdEMsTUFBTSxFQUFFLHdCQUF3QixFQUFFLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsTUFBTSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsR0FBRyxXQUFXLENBQUM7WUFDN0MsSUFBSSxhQUFhLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDL0IsNkRBQTZEO2dCQUM3RCxnQkFBZ0IsR0FBRyxPQUFPLElBQUksZ0JBQWdCLENBQUM7Z0JBQy9DLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUM3RSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzlCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ2pDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7b0JBQ3BELE1BQU0sTUFBTSxHQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO29CQUN2QyxNQUFNLENBQUMsT0FBTyxHQUFHO3dCQUNmLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTzt3QkFDM0IsYUFBYSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFO3dCQUN4RCxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTt3QkFDN0MsaUJBQWlCLEVBQUUsR0FBRzt3QkFDdEIsT0FBTyxFQUFFLFFBQVEsS0FBSyx3QkFBd0I7cUJBQy9DLENBQUM7b0JBQ0YsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFFbEQsaURBQWlEO29CQUNqRCw4Q0FBOEM7b0JBQzlDLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDM0Msa0RBQWtEO29CQUNsRCwwRUFBMEU7b0JBQzFFLHlFQUF5RTtvQkFDekUsc0VBQXNFO29CQUN0RSxzRUFBc0U7b0JBQ3RFLHVFQUF1RTtvQkFDdkUsOENBQThDO29CQUU5QyxpRUFBaUU7b0JBQ2pFLHFDQUFxQztvQkFDckMsc0VBQXNFO29CQUN0RSx3RUFBd0U7b0JBQ3hFLDBEQUEwRDtvQkFFMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO3dCQUNuQixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLFdBQVcsRUFBRSxDQUFDOzRCQUMvQyxtREFBbUQ7NEJBQ25ELHNEQUFzRDs0QkFDdEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQzs0QkFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7NEJBRTFCOzs7K0JBR0c7NEJBRUgsdURBQXVEOzRCQUN2RCwwREFBMEQ7NEJBQzFELG1DQUFtQzs0QkFFbkM7Ozs7Ozs7Ozs7Ozs4QkFZRTt3QkFDSixDQUFDOzZCQUFNLENBQUM7NEJBQ04sOENBQThDOzRCQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDOzRCQUU3QixPQUFPLENBQUMsS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7NEJBRXRFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUM7NEJBQ2pDLE1BQU0sY0FBYyxHQUFRLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQzs0QkFDckQsSUFBSSxDQUFDLGFBQWEsR0FBRyxjQUFjLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQzs0QkFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQzs0QkFDekMsMkNBQTJDOzRCQUMzQyxrRUFBa0U7NEJBQ2xFLElBQUksQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7d0JBQ25GLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pELDZGQUE2RjtRQUM3RixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLElBQUksU0FBUyxDQUFDO1FBRTNELE9BQU87WUFDTCxXQUFXLEVBQUUsRUFBRTtZQUNmLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLE1BQU07U0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzlDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUU3QyxPQUFPLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO0lBQzVELENBQUM7K0dBOVBVLHNCQUFzQjttR0FBdEIsc0JBQXNCLHdLQ2hDbkMsMHBDQStCQSw2RUREWSxZQUFZLCtUQUFtQix3QkFBd0I7OzRGQUV0RCxzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBR2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztxSkFHMUQsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogV0FSTklORzogIEl0IGlzIG5vdCBleHBlY3RlZCB0aGF0IHRoaXMgZmlsZSBzaG91bGQgYmUgbW9kaWZpZWQuICBJdCBpcyBwYXJ0IG9mIGluZnJhc3RydWN0dXJlIGNvZGUgdGhhdCB3b3JrcyB3aXRoXG4gKiBSZWR1eCBhbmQgY3JlYXRpb24vdXBkYXRlIG9mIFJlZHV4IGNvbnRhaW5lcnMgYW5kIFBDb25uZWN0LiAgTW9kaWZ5aW5nIHRoaXMgY29kZSBjb3VsZCBoYXZlIHVuZGVzaXJlYWJsZSByZXN1bHRzIGFuZFxuICogaXMgdG90YWxseSBhdCB5b3VyIG93biByaXNrLlxuICovXG5cbmludGVyZmFjZSBWaWV3Q29udGFpbmVyUHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoaXMgY29tcG9uZW50XG4gIG1vZGU/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGxpbWl0PzogbnVtYmVyO1xuICB0ZW1wbGF0ZT86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHJvdXRpbmdJbmZvOiBvYmplY3Q7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXZpZXctY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlldy1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBWaWV3Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBkaXNwbGF5T25seUZBJDogYm9vbGVhbjtcblxuICAvLyBGb3IgaW50ZXJhY3Rpb24gd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuICBjb25maWdQcm9wcyQ6IFZpZXdDb250YWluZXJQcm9wcztcblxuICBhckNoaWxkcmVuJDogYW55W107XG4gIHRlbXBsYXRlTmFtZSQ6IHN0cmluZztcbiAgYnVpbGROYW1lJDogc3RyaW5nO1xuICBjb250ZXh0JDogc3RyaW5nO1xuICB0aXRsZSQgPSAnJztcblxuICB2aWV3UENvbm4kOiBhbnk7XG5cbiAgaXNWaWV3Q29udGFpbmVyJCA9IHRydWU7XG5cbiAgLy8gSkEgLSBjcmVhdGVkIG9iamVjdCBpcyBub3cgYSBWaWV3IHdpdGggYSBUZW1wbGF0ZVxuICAvLyAgVXNlIGl0cyBQQ29ubmVjdCB0byByZW5kZXIgdGhlIENhc2VWaWV3OyBET04nVCByZXBsYWNlIHRoaXMucENvbm4kXG4gIGNyZWF0ZWRWaWV3UENvbm4kOiBhbnk7XG4gIHN0YXRlOiBhbnk7XG4gIGRpc3BhdGNoT2JqZWN0OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZGlzcGxheU9ubHlGQSQgPT0gbnVsbCkge1xuICAgICAgdGhpcy5kaXNwbGF5T25seUZBJCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGRlYnVnZ2VyO1xuXG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICAvLyBUaGVuLCBjb250aW51ZSBvbiB3aXRoIG90aGVyIGluaXRpYWxpemF0aW9uXG5cbiAgICAvLyAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCk7XG4gICAgLy8gY2hpbGRyZW4gbWF5IGhhdmUgYSAncmVmZXJlbmNlJyBzbyBub3JtYWxpemUgdGhlIGNoaWxkcmVuIGFycmF5XG4gICAgdGhpcy5hckNoaWxkcmVuJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KHRoaXMucENvbm4kLmdldENoaWxkcmVuKCkpO1xuXG4gICAgdGhpcy5idWlsZE5hbWUkID0gdGhpcy5idWlsZE5hbWUoKTtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBWaWV3Q29udGFpbmVyUHJvcHM7XG4gICAgdGhpcy50ZW1wbGF0ZU5hbWUkID0gdGhpcy5jb25maWdQcm9wcyQudGVtcGxhdGUgfHwgJyc7XG4gICAgdGhpcy50aXRsZSQgPSB0aGlzLmNvbmZpZ1Byb3BzJC50aXRsZSB8fCAnJztcbiAgICBjb25zdCB7IENPTlRBSU5FUl9UWVBFLCBBUFAgfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICAgIGNvbnN0IHsgbmFtZSwgbW9kZSwgbGltaXQgfSA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBWaWV3Q29udGFpbmVyUHJvcHM7XG5cbiAgICB0aGlzLnBDb25uJC5pc0JvdW5kVG9TdGF0ZSgpO1xuXG4gICAgY29uc3QgY29udGFpbmVyTWdyOiBhbnkgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJNYW5hZ2VyKCk7XG5cbiAgICB0aGlzLnByZXBhcmVEaXNwYXRjaE9iamVjdCA9IHRoaXMucHJlcGFyZURpc3BhdGNoT2JqZWN0LmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLmRpc3BhdGNoT2JqZWN0ID0gdGhpcy5wcmVwYXJlRGlzcGF0Y2hPYmplY3QoKTtcblxuICAgIC8vIFRPRE86IFBsYW4gaXMgdG8gcmVuYW1lIHdpbmRvdy5jb25zdGVsbGF0aW9uQ29yZSB0byB3aW5kb3cucGVnYSAob3Igc2ltaWxhcilcbiAgICAvLyAgICBBbmQgZXhwb3NlIGxlc3MgdmlhIHVpLWJvb3RzdHJhcC5qc1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBkaXNwYXRjaE9iamVjdDogdGhpcy5kaXNwYXRjaE9iamVjdCxcbiAgICAgIC8vIFBDb3JlIGlzIGRlZmluZWQgaW4gcHhCb290c3RyYXBTaGVsbCAtIGV2ZW50dWFsbHkgd2lsbCBiZSBleHBvcnRlZCBpbiBwbGFjZSBvZiBjb25zdGVsbGF0aW9uQ29yZVxuXG4gICAgICB2aXNpYmxlOiAhUENvcmUuY2hlY2tJZlNlbWFudGljVVJMKClcbiAgICB9O1xuXG4gICAgLy8gaGVyZSwgdG8gbWF0Y2ggTmVidWxhL0NvbnN0ZWxsYXRpb24sIHRoZSBjb25zdHJ1Y3RvciBvZiBWaWV3Q29udGFpbmVyIGlzIG9ubHkgY2FsbGVkIG9uY2UsIGFuZCB0aHVzIGluaXQvYWRkIGNvbnRhaW5lciBpcyBvbmx5XG4gICAgLy8gY2FsbGVkIG9uY2UuICBCZWNhdXNlIG9mIEFuZ3VsYXIgY3JlYXRpbmcgYW5kIGRlc3Ryb3kgY29tcG9uZW50cyBpZiB0aGUgcGFyZW50IGNoYW5nZXMgYSBsb3QsIHRoaXMgY29tcG9uZW50IHdpbGwgYmVcbiAgICAvLyBjcmVhdGVkIGFuZCBkZXN0cm95ZWQgbW9yZSB0aGFuIG9uY2UuICBTbyB0aGUgc2Vzc2lvblN0b3JlIFwiaGFzVmlld0NvbnRhaW5lclwiIGlzIHNldCB0byBmYWxzZSBpbiByb290Q29udGFpbmVyIGFuZCB0aGVuXG4gICAgLy8gYWZ0ZXIgZmlyc3Qgcm91bmQgaXMgdHJ1ZSBoZXJlLiAgU3Vic2VxdWVudCBWaWV3Q29udGFpbmVyIGNyZWF0aW9uIHdpbGwgbm90IGluaXQvYWRkIG1vcmUgY29udGFpbmVycy5cblxuICAgIGlmIChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdoYXNWaWV3Q29udGFpbmVyJykgPT0gJ2ZhbHNlJykge1xuICAgICAgLy8gdW5saWtlIE5lYnVsYS9Db25zdGVsbGF0aW9uLCBoYXZlIHRvIGluaXRpYWxpemVDb250YWluZXIgYWZ0ZXIgd2UgY3JlYXRlIGEgZGlzcGF0Y09iamVjdCBhbmQgc3RhdGUsIG90aGVyd2lzZSwgd2hlbiBjYWxsaW5nXG4gICAgICAvLyBpbml0aWFsaXplQ29udGFpbmVyIGJlZm9yZSwgY29kZSB3aWxsIGdldCBleGVjdXRlZCB0aGF0IG5lZWRzIHN0YXRlIHRoYXQgd2Fzbid0IGRlZmluZWQuXG5cbiAgICAgIGNvbnRhaW5lck1nci5pbml0aWFsaXplQ29udGFpbmVycyh7XG4gICAgICAgIHR5cGU6IG1vZGUgPT09IENPTlRBSU5FUl9UWVBFLk1VTFRJUExFID8gQ09OVEFJTkVSX1RZUEUuTVVMVElQTEUgOiBDT05UQUlORVJfVFlQRS5TSU5HTEVcbiAgICAgIH0pO1xuXG4gICAgICBpZiAobW9kZSA9PT0gQ09OVEFJTkVSX1RZUEUuTVVMVElQTEUgJiYgbGltaXQpIHtcbiAgICAgICAgLyogTk9URTogc2V0Q29udGFpbmVyTGltaXQgdXNlIGlzIHRlbXBvcmFyeS4gSXQgaXMgYSBub24tcHVibGljLCB1bnN1cHBvcnRlZCBBUEkuICovXG4gICAgICAgIFBDb3JlLmdldENvbnRhaW5lclV0aWxzKCkuc2V0Q29udGFpbmVyTGltaXQoYCR7QVBQLkFQUH0vJHtuYW1lfWAsIGxpbWl0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnaGFzVmlld0NvbnRhaW5lcicpID09ICdmYWxzZScpIHtcbiAgICAgIGlmICh0aGlzLnBDb25uJC5nZXRNZXRhZGF0YSgpLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnRhaW5lck1nci5hZGRDb250YWluZXJJdGVtKHRoaXMuZGlzcGF0Y2hPYmplY3QpO1xuICAgICAgfVxuXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdoYXNWaWV3Q29udGFpbmVyJywgJ3RydWUnKTtcbiAgICB9XG5cbiAgICAvLyBjYW5ub3QgY2FsbCBjaGVja0FuZFVwZGF0ZSBiZWNhc3VlIGZpcnN0IHRpbWUgdGhyb3VnaCwgd2lsbCBjYWxsIHVwZGF0ZVNlbGYgYW5kIHRoYXQgaXMgaW5jb3JyZWN0IChjYXVzZXMgaXNzdWVzKS5cbiAgICAvLyBob3dldmVyLCBuZWVkIGFuZ3VsYXJQQ29ubmVjdCB0byBiZSBpbml0aWFsaXplZCB3aXRoIGN1cnJlbnRQcm9wcyBmb3IgZnV0dXJlIHVwZGF0ZXMsIHNvIGNhbGxpbmcgc2hvdWxkQ29tcG9uZW50VXBkYXRlIGRpcmVjdGx5XG4gICAgLy8gd2l0aG91dCBjaGVja2luZyB0byB1cGRhdGUgaGVyZSBpbiBpbml0LCB3aWxsIGluaXRpYWxpemUgYW5kIHRoaXMgaXMgY29ycmVjdFxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gIH1cblxuICBjaGVja0FuZFVwZGF0ZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkXG4gICAgLy8gdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVNlbGYoKSB7XG4gICAgLy8gICAqKiogRE9OJ1QgY2FsbCB1cGRhdGVTZWxmIGluIG5nSW5pdCEhICAqKipcblxuICAgIGlmICh0aGlzLmFyQ2hpbGRyZW4kID09IG51bGwpIHtcbiAgICAgIC8vIGNoaWxkcmVuIG1heSBoYXZlIGEgJ3JlZmVyZW5jZScgc28gbm9ybWFsaXplIHRoZSBjaGlsZHJlbiBhcnJheVxuICAgICAgdGhpcy5hckNoaWxkcmVuJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KHRoaXMucENvbm4kLmdldENoaWxkcmVuKCkpO1xuICAgIH1cblxuICAgIC8vIHJvdXRpbmdJbmZvIHdhcyBhZGRlZCBhcyBjb21wb25lbnQgcHJvcCBpbiBwb3B1bGF0ZUFkZGl0aW9uYWxQcm9wc1xuICAgIGNvbnN0IHJvdXRpbmdJbmZvID0gdGhpcy5hbmd1bGFyUENvbm5lY3QuZ2V0Q29tcG9uZW50UHJvcCh0aGlzLCAncm91dGluZ0luZm8nKTtcblxuICAgIGxldCBsb2FkaW5nSW5mbztcbiAgICB0cnkge1xuICAgICAgLy8gQHRzLWlnbm9yZSAtIFByb3BlcnR5ICdnZXRMb2FkaW5nU3RhdHVzJyBpcyBwcml2YXRlIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIGNsYXNzICdDMTFuRW52J1xuICAgICAgbG9hZGluZ0luZm8gPSB0aGlzLnBDb25uJC5nZXRMb2FkaW5nU3RhdHVzKCk7XG5cbiAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGxvYWRpbmdJbmZvKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLyogZW1wdHkgKi9cbiAgICB9XG5cbiAgICAvLyBjb25zdCBidWlsZE5hbWUgPSB0aGlzLmJ1aWxkTmFtZSgpO1xuICAgIGNvbnN0IHsgQ1JFQVRFX0RFVEFJTFNfVklFV19OQU1FIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcbiAgICBpZiAocm91dGluZ0luZm8pIHtcbiAgICAgIGNvbnN0IHsgYWNjZXNzZWRPcmRlciwgaXRlbXMgfSA9IHJvdXRpbmdJbmZvO1xuICAgICAgaWYgKGFjY2Vzc2VkT3JkZXIgJiYgaXRlbXMpIHtcbiAgICAgICAgY29uc3Qga2V5ID0gYWNjZXNzZWRPcmRlclthY2Nlc3NlZE9yZGVyLmxlbmd0aCAtIDFdO1xuICAgICAgICBsZXQgY29tcG9uZW50VmlzaWJsZSA9IGFjY2Vzc2VkT3JkZXIubGVuZ3RoID4gMDtcbiAgICAgICAgY29uc3QgeyB2aXNpYmxlIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIGNvbXBvbmVudFZpc2libGUgPSB2aXNpYmxlIHx8IGNvbXBvbmVudFZpc2libGU7XG4gICAgICAgIGlmIChpdGVtc1trZXldICYmIGl0ZW1zW2tleV0udmlldyAmJiBPYmplY3Qua2V5cyhpdGVtc1trZXldLnZpZXcpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBsYXRlc3RJdGVtID0gaXRlbXNba2V5XTtcbiAgICAgICAgICBjb25zdCByb290VmlldyA9IGxhdGVzdEl0ZW0udmlldztcbiAgICAgICAgICBjb25zdCB7IGNvbnRleHQsIG5hbWU6IHZpZXdOYW1lIH0gPSByb290Vmlldy5jb25maWc7XG4gICAgICAgICAgY29uc3QgY29uZmlnOiBhbnkgPSB7IG1ldGE6IHJvb3RWaWV3IH07XG4gICAgICAgICAgY29uZmlnLm9wdGlvbnMgPSB7XG4gICAgICAgICAgICBjb250ZXh0OiBsYXRlc3RJdGVtLmNvbnRleHQsXG4gICAgICAgICAgICBwYWdlUmVmZXJlbmNlOiBjb250ZXh0IHx8IHRoaXMucENvbm4kLmdldFBhZ2VSZWZlcmVuY2UoKSxcbiAgICAgICAgICAgIGNvbnRhaW5lck5hbWU6IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKSxcbiAgICAgICAgICAgIGNvbnRhaW5lckl0ZW1OYW1lOiBrZXksXG4gICAgICAgICAgICBoYXNGb3JtOiB2aWV3TmFtZSA9PT0gQ1JFQVRFX0RFVEFJTFNfVklFV19OQU1FXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCBjb25maWdPYmplY3QgPSBQQ29yZS5jcmVhdGVQQ29ubmVjdChjb25maWcpO1xuXG4gICAgICAgICAgLy8gVEhJUyBpcyB3aGVyZSB0aGUgVmlld0NvbnRhaW5lciBjcmVhdGVzIGEgVmlld1xuICAgICAgICAgIC8vICAgIFRoZSBjb25maWcgaGFzIG1ldGEuY29uZmlnLnR5cGUgPSBcInZpZXdcIlxuICAgICAgICAgIGNvbnN0IG5ld0NvbXAgPSBjb25maWdPYmplY3QuZ2V0UENvbm5lY3QoKTtcbiAgICAgICAgICAvLyBjb25zdCBuZXdDb21wTmFtZSA9IG5ld0NvbXAuZ2V0Q29tcG9uZW50TmFtZSgpO1xuICAgICAgICAgIC8vIFRoZSBtZXRhZGF0YSBmb3IgcHlEZXRhaWxzIGNoYW5nZWQgc3VjaCB0aGF0IHRoZSBcInRlbXBsYXRlXCI6IFwiQ2FzZVZpZXdcIlxuICAgICAgICAgIC8vICBpcyBubyBsb25nZXIgYSBjaGlsZCBvZiB0aGUgY3JlYXRlZCBWaWV3IGJ1dCBpcyBpbiB0aGUgY3JlYXRlZCBWaWV3J3NcbiAgICAgICAgICAvLyAgY29uZmlnLiBTbywgd2UgRE9OJ1Qgd2FudCB0byByZXBsYWNlIHRoaXMucENvbm4kIHNpbmNlIHRoZSBjcmVhdGVkXG4gICAgICAgICAgLy8gIGNvbXBvbmVudCBpcyBhIFZpZXcgKGFuZCBub3QgYSBWaWV3Q29udGFpbmVyKS4gV2Ugbm93IGxvb2sgZm9yIHRoZVxuICAgICAgICAgIC8vICBcInRlbXBsYXRlXCIgdHlwZSBkaXJlY3RseSBpbiB0aGUgY3JlYXRlZCBjb21wb25lbnQgKG5ld0NvbXApIGFuZCBOT1RcbiAgICAgICAgICAvLyAgYXMgYSBjaGlsZCBvZiB0aGUgbmV3bHkgY3JlYXRlZCBjb21wb25lbnQuXG5cbiAgICAgICAgICAvLyBVc2UgdGhlIG5ld2x5IGNyZWF0ZWQgY29tcG9uZW50IChWaWV3KSBpbmZvIGJ1dCBETyBOT1QgcmVwbGFjZVxuICAgICAgICAgIC8vICB0aGlzIFZpZXdDb250YWluZXIncyBwQ29ubiQsIGV0Yy5cbiAgICAgICAgICAvLyAgTm90ZSB0aGF0IHdlJ3JlIG5vdyB1c2luZyB0aGUgbmV3bHkgY3JlYXRlZCBWaWV3J3MgUENvbm5lY3QgaW4gdGhlXG4gICAgICAgICAgLy8gIFZpZXdDb250YWluZXIgSFRNTCB0ZW1wbGF0ZSB0byBndWlkZSB3aGF0J3MgcmVuZGVyZWQgc2ltaWxhciB0byB3aGF0XG4gICAgICAgICAgLy8gIHRoZSBOZWJ1bGEvQ29uc3RlbGxhdGlvbiByZXR1cm4gb2YgUmVhY3QuRnJhZ21lbnQgZG9lc1xuXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChuZXdDb21wLmdldENvbXBvbmVudE5hbWUoKSA9PT0gJ3JlZmVyZW5jZScpIHtcbiAgICAgICAgICAgICAgLy8gaWYgYSByZWZlcm5lY2UsIGl0IHdpbGwgZGUgcmVmZXJlbmNlIHRvIGEgXCJ2aWV3XCJcbiAgICAgICAgICAgICAgLy8gc28gaGFuZCB0aGlzIG9mZiB0byB0aGUgXCJWaWV3XCIgY29tcG9uZW50IHRvIGRvIHRoYXRcbiAgICAgICAgICAgICAgdGhpcy5pc1ZpZXdDb250YWluZXIkID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMudmlld1BDb25uJCA9IG5ld0NvbXA7XG5cbiAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICoqKiAgdGhpcyBjb21tbWVudGVkIG91dCBjb2RlIHNob3VsZCBiZSByZW1vdmVkLCBvbmNlIHdlIHRlc3Qgb3V0IHRoYXRcbiAgICAgICAgICAgICAgICoqKiAgaGFuZGluZyBvZmYgcmVmZXJuY2UgdG8gVmlldyBjb21wb25lbnQgYWx3YXlzIHdvcmtzXG4gICAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICAgIC8vIFdoZW4gbmV3Q29tcCBpcyBhIHJlZmVyZW5jZSwgd2Ugd2FudCB0byBkZS1yZWZlcmVuY2VcbiAgICAgICAgICAgICAgLy8gIGl0ICh0byBnZXQgdGhlIFZpZXcpIGFuZCB0aGVuIHVzZSB0aGF0IFZpZXcgdG8gZ2V0IHRoZVxuICAgICAgICAgICAgICAvLyAgdGVtcGxhdGUsIHRpdGxlLCBjaGlsZHJlbiwgZXRjLlxuXG4gICAgICAgICAgICAgIC8qXG5cbiAgICAgICAgICAgICAgY29uc3QgdGhlRGVyZWZlcmVuY2VkVmlldyA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubihuZXdDb21wKTtcbiAgICAgICAgICAgICAgY29uc3QgbmV3Q29uZmlnUHJvcHMgPSB0aGVEZXJlZmVyZW5jZWRWaWV3LmdldENvbmZpZ1Byb3BzKCk7XG5cbiAgICAgICAgICAgICAgLy8gY2hpbGRyZW4gbWF5IGhhdmUgYSAncmVmZXJlbmNlJyBzbyBub3JtYWxpemUgdGhlIGNoaWxkcmVuIGFycmFcblxuICAgICAgICAgICAgICBjb25zdCB0aGVEZXJlZmVyZW5jZWRWaWV3Q2hpbGRyZW4gPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm5BcnJheSh0aGVEZXJlZmVyZW5jZWRWaWV3LmdldENoaWxkcmVuKCkpO1xuICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlTmFtZSQgPSAoJ3RlbXBsYXRlJyBpbiBuZXdDb25maWdQcm9wcykgPyBuZXdDb25maWdQcm9wc1tcInRlbXBsYXRlXCJdIDogXCJcIjtcbiAgICAgICAgICAgICAgdGhpcy50aXRsZSQgPSAoJ3RpdGxlJyBpbiBuZXdDb25maWdQcm9wcykgPyBuZXdDb25maWdQcm9wc1tcInRpdGxlXCJdIDogXCJcIjtcbiAgICAgICAgICAgICAgdGhpcy5hckNoaWxkcmVuJCA9IHRoZURlcmVmZXJlbmNlZFZpZXdDaGlsZHJlbjtcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVkVmlld1BDb25uJCA9IHRoZURlcmVmZXJlbmNlZFZpZXc7XG4gICAgICAgICAgICAgICovXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBvbGQgc3R5bGUgd2hlbiBuZXdDb21wIGlzIE5PVCBhICdyZWZlcmVuY2UnXG4gICAgICAgICAgICAgIHRoaXMuaXNWaWV3Q29udGFpbmVyJCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVmlld0NvbnRhaW5lciBoYXMgYSBuZXdDb21wIHRoYXQgaXMgTk9UIGEgcmVmZXJlbmNlIWApO1xuXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlZFZpZXdQQ29ubiQgPSBuZXdDb21wO1xuICAgICAgICAgICAgICBjb25zdCBuZXdDb25maWdQcm9wczogYW55ID0gbmV3Q29tcC5nZXRDb25maWdQcm9wcygpO1xuICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlTmFtZSQgPSBuZXdDb25maWdQcm9wcy50ZW1wbGF0ZSB8fCAnJztcbiAgICAgICAgICAgICAgdGhpcy50aXRsZSQgPSBuZXdDb25maWdQcm9wcy50aXRsZSB8fCAnJztcbiAgICAgICAgICAgICAgLy8gdXBkYXRlIGNoaWxkcmVuIHdpdGggbmV3IHZpZXcncyBjaGlsZHJlblxuICAgICAgICAgICAgICAvLyBjaGlsZHJlbiBtYXkgaGF2ZSBhICdyZWZlcmVuY2UnIHNvIG5vcm1hbGl6ZSB0aGUgY2hpbGRyZW4gYXJyYXlcbiAgICAgICAgICAgICAgdGhpcy5hckNoaWxkcmVuJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KG5ld0NvbXAuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcmVwYXJlRGlzcGF0Y2hPYmplY3QoKTogYW55IHtcbiAgICBjb25zdCBiYXNlQ29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgLy8gY29uc3QgeyBhY05hbWUgPSBcInByaW1hcnlcIiB9ID0gcENvbm4uZ2V0Q29udGFpbmVyTmFtZSgpOyAvLyBkb2Vzbid0IHdvcmsgd2l0aCA4LjIzIHR5cGluZ3NcbiAgICBjb25zdCBhY05hbWUgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJOYW1lKCkgfHwgJ3ByaW1hcnknO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbWFudGljVVJMOiAnJyxcbiAgICAgIGNvbnRleHQ6IGJhc2VDb250ZXh0LFxuICAgICAgYWNOYW1lXG4gICAgfTtcbiAgfVxuXG4gIGJ1aWxkTmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNDb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBjb25zdCBzTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcblxuICAgIHJldHVybiBgJHtzQ29udGV4dC50b1VwcGVyQ2FzZSgpfS8ke3NOYW1lLnRvVXBwZXJDYXNlKCl9YDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBzZGstdmlldy1jb250YWluZXItdG9wXCIgaWQ9XCJ7eyBidWlsZE5hbWUkIH19XCI+XG4gIDxkaXYgKm5nSWY9XCJpc1ZpZXdDb250YWluZXIkOyBlbHNlIGlzUmVmZXJlbmNlXCI+XG4gICAgPGgzICpuZ0lmPVwidGl0bGUkICE9PSAnJ1wiPnt7IHRpdGxlJCB9fTwvaDM+XG4gICAgPGRpdiAqbmdJZj1cInRlbXBsYXRlTmFtZSQ7IGVsc2Ugc2hvd0NoaWxkcmVuXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICBbbmFtZV09XCJ0ZW1wbGF0ZU5hbWUkXCJcbiAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICBwQ29ubiQ6IGNyZWF0ZWRWaWV3UENvbm4kLFxuICAgICAgICAgIGZvcm1Hcm91cCQ6IGZvcm1Hcm91cCQsXG4gICAgICAgICAgZGlzcGxheU9ubHlGQSQ6IGRpc3BsYXlPbmx5RkEkXG4gICAgICAgIH1cIlxuICAgICAgICBlcnJvck1zZz1cIlZpZXcgQ29udGFpbmVyIG1pc3NpbmcgVGVtcGxhdGUge3sgdGVtcGxhdGVOYW1lJCB9fVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0NoaWxkcmVuPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2lkIG9mIGFyQ2hpbGRyZW4kXCI+XG4gICAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICAgW25hbWVdPVwia2lkLmdldFBDb25uZWN0KCkuZ2V0Q29tcG9uZW50TmFtZSgpXCJcbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSxcbiAgICAgICAgICAgIGRpc3BsYXlPbmx5RkEkOiBkaXNwbGF5T25seUZBJFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIGVycm9yTXNnPVwiVmlld0NvbnRhaW5lciBNaXNzaW5nIChubyB0ZW1wbGF0ZSk6IHt7IGtpZC5nZXRQQ29ubmVjdCgpLmdldENvbXBvbmVudE5hbWUoKSB9fVwiXG4gICAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICNpc1JlZmVyZW5jZT5cbiAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiVmlld1wiIFtwcm9wc109XCJ7IHBDb25uJDogdmlld1BDb25uJCwgZGlzcGxheU9ubHlGQSQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvdmlldy1jb250YWluZXIvdmlldy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvdmlldy1jb250YWluZXIvdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUkvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7O0FBMEJwRCxNQUFNLE9BQU8sc0JBQXNCO0lBeUJqQyxZQUNVLGVBQXVDLEVBQ3ZDLFNBQWlDLEVBQ2pDLE1BQWM7UUFGZCxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXZCeEIsdUNBQXVDO1FBQ3ZDLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFPOUMsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUlaLHFCQUFnQixHQUFHLElBQUksQ0FBQztJQVlyQixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksSUFBSSxDQUFD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LFlBQVksRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztxSkFHMUQsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb25maWd1cmVCcm93c2VyQm9va21hcmsgfSBmcm9tICcuL2hlbHBlcic7XG5cbi8qKlxuICogV0FSTklORzogIEl0IGlzIG5vdCBleHBlY3RlZCB0aGF0IHRoaXMgZmlsZSBzaG91bGQgYmUgbW9kaWZpZWQuICBJdCBpcyBwYXJ0IG9mIGluZnJhc3RydWN0dXJlIGNvZGUgdGhhdCB3b3JrcyB3aXRoXG4gKiBSZWR1eCBhbmQgY3JlYXRpb24vdXBkYXRlIG9mIFJlZHV4IGNvbnRhaW5lcnMgYW5kIFBDb25uZWN0LiAgTW9kaWZ5aW5nIHRoaXMgY29kZSBjb3VsZCBoYXZlIHVuZGVzaXJlYWJsZSByZXN1bHRzIGFuZFxuICogaXMgdG90YWxseSBhdCB5b3VyIG93biByaXNrLlxuICovXG5cbmludGVyZmFjZSBWaWV3Q29udGFpbmVyUHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoaXMgY29tcG9uZW50XG4gIG1vZGU/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGxpbWl0PzogbnVtYmVyO1xuICB0ZW1wbGF0ZT86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHJvdXRpbmdJbmZvOiBvYmplY3Q7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXZpZXctY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlldy1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBWaWV3Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBkaXNwbGF5T25seUZBJDogYm9vbGVhbjtcblxuICAvLyBGb3IgaW50ZXJhY3Rpb24gd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuICBjb25maWdQcm9wcyQ6IFZpZXdDb250YWluZXJQcm9wcztcblxuICBhckNoaWxkcmVuJDogYW55W107XG4gIHRlbXBsYXRlTmFtZSQ6IHN0cmluZztcbiAgYnVpbGROYW1lJDogc3RyaW5nO1xuICBjb250ZXh0JDogc3RyaW5nO1xuICB0aXRsZSQgPSAnJztcblxuICB2aWV3UENvbm4kOiBhbnk7XG5cbiAgaXNWaWV3Q29udGFpbmVyJCA9IHRydWU7XG5cbiAgLy8gSkEgLSBjcmVhdGVkIG9iamVjdCBpcyBub3cgYSBWaWV3IHdpdGggYSBUZW1wbGF0ZVxuICAvLyAgVXNlIGl0cyBQQ29ubmVjdCB0byByZW5kZXIgdGhlIENhc2VWaWV3OyBET04nVCByZXBsYWNlIHRoaXMucENvbm4kXG4gIGNyZWF0ZWRWaWV3UENvbm4kOiBhbnk7XG4gIHN0YXRlOiBhbnk7XG4gIGRpc3BhdGNoT2JqZWN0OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZGlzcGxheU9ubHlGQSQgPT0gbnVsbCkge1xuICAgICAgdGhpcy5kaXNwbGF5T25seUZBJCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGRlYnVnZ2VyO1xuXG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICAvLyBUaGVuLCBjb250aW51ZSBvbiB3aXRoIG90aGVyIGluaXRpYWxpemF0aW9uXG5cbiAgICAvLyAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCk7XG4gICAgLy8gY2hpbGRyZW4gbWF5IGhhdmUgYSAncmVmZXJlbmNlJyBzbyBub3JtYWxpemUgdGhlIGNoaWxkcmVuIGFycmF5XG4gICAgdGhpcy5hckNoaWxkcmVuJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KHRoaXMucENvbm4kLmdldENoaWxkcmVuKCkpO1xuXG4gICAgdGhpcy5idWlsZE5hbWUkID0gdGhpcy5idWlsZE5hbWUoKTtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBWaWV3Q29udGFpbmVyUHJvcHM7XG4gICAgdGhpcy50ZW1wbGF0ZU5hbWUkID0gdGhpcy5jb25maWdQcm9wcyQudGVtcGxhdGUgfHwgJyc7XG4gICAgdGhpcy50aXRsZSQgPSB0aGlzLmNvbmZpZ1Byb3BzJC50aXRsZSB8fCAnJztcbiAgICBjb25zdCB7IENPTlRBSU5FUl9UWVBFLCBBUFAgfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICAgIGNvbnN0IHsgbmFtZSwgbW9kZSwgbGltaXQgfSA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBWaWV3Q29udGFpbmVyUHJvcHM7XG5cbiAgICB0aGlzLnBDb25uJC5pc0JvdW5kVG9TdGF0ZSgpO1xuXG4gICAgY29uc3QgY29udGFpbmVyTWdyID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTWFuYWdlcigpO1xuXG4gICAgdGhpcy5wcmVwYXJlRGlzcGF0Y2hPYmplY3QgPSB0aGlzLnByZXBhcmVEaXNwYXRjaE9iamVjdC5iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5kaXNwYXRjaE9iamVjdCA9IHRoaXMucHJlcGFyZURpc3BhdGNoT2JqZWN0KCk7XG5cbiAgICAvLyBUT0RPOiBQbGFuIGlzIHRvIHJlbmFtZSB3aW5kb3cuY29uc3RlbGxhdGlvbkNvcmUgdG8gd2luZG93LnBlZ2EgKG9yIHNpbWlsYXIpXG4gICAgLy8gICAgQW5kIGV4cG9zZSBsZXNzIHZpYSB1aS1ib290c3RyYXAuanNcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgZGlzcGF0Y2hPYmplY3Q6IHRoaXMuZGlzcGF0Y2hPYmplY3QsXG4gICAgICB2aXNpYmxlOiAhUENvcmUuY2hlY2tJZlNlbWFudGljVVJMKClcbiAgICB9O1xuXG4gICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2hhc1ZpZXdDb250YWluZXInKSA9PSAnZmFsc2UnKSB7XG4gICAgICBjb250YWluZXJNZ3IuaW5pdGlhbGl6ZUNvbnRhaW5lcnMoe1xuICAgICAgICB0eXBlOiBtb2RlID09PSBDT05UQUlORVJfVFlQRS5NVUxUSVBMRSA/IENPTlRBSU5FUl9UWVBFLk1VTFRJUExFIDogQ09OVEFJTkVSX1RZUEUuU0lOR0xFXG4gICAgICB9KTtcblxuICAgICAgaWYgKG1vZGUgPT09IENPTlRBSU5FUl9UWVBFLk1VTFRJUExFICYmIGxpbWl0KSB7XG4gICAgICAgIC8qIE5PVEU6IHNldENvbnRhaW5lckxpbWl0IHVzZSBpcyB0ZW1wb3JhcnkuIEl0IGlzIGEgbm9uLXB1YmxpYywgdW5zdXBwb3J0ZWQgQVBJLiAqL1xuICAgICAgICBQQ29yZS5nZXRDb250YWluZXJVdGlscygpLnNldENvbnRhaW5lckxpbWl0KGAke0FQUC5BUFB9LyR7bmFtZX1gLCBsaW1pdCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghUENvcmUuY2hlY2tJZlNlbWFudGljVVJMKCkpIGNvbnRhaW5lck1nci5hZGRDb250YWluZXJJdGVtKHRoaXMucENvbm4kIGFzIGFueSk7XG4gICAgICBpZiAoIXRoaXMuZGlzcGxheU9ubHlGQSQpIGNvbmZpZ3VyZUJyb3dzZXJCb29rbWFyayh0aGlzLnBDb25uJCk7XG5cbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2hhc1ZpZXdDb250YWluZXInLCAndHJ1ZScpO1xuICAgIH1cblxuICAgIC8vIGNhbm5vdCBjYWxsIGNoZWNrQW5kVXBkYXRlIGJlY2FzdWUgZmlyc3QgdGltZSB0aHJvdWdoLCB3aWxsIGNhbGwgdXBkYXRlU2VsZiBhbmQgdGhhdCBpcyBpbmNvcnJlY3QgKGNhdXNlcyBpc3N1ZXMpLlxuICAgIC8vIGhvd2V2ZXIsIG5lZWQgYW5ndWxhclBDb25uZWN0IHRvIGJlIGluaXRpYWxpemVkIHdpdGggY3VycmVudFByb3BzIGZvciBmdXR1cmUgdXBkYXRlcywgc28gY2FsbGluZyBzaG91bGRDb21wb25lbnRVcGRhdGUgZGlyZWN0bHlcbiAgICAvLyB3aXRob3V0IGNoZWNraW5nIHRvIHVwZGF0ZSBoZXJlIGluIGluaXQsIHdpbGwgaW5pdGlhbGl6ZSBhbmQgdGhpcyBpcyBjb3JyZWN0XG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZigpIHtcbiAgICAvLyAgICoqKiBET04nVCBjYWxsIHVwZGF0ZVNlbGYgaW4gbmdJbml0ISEgICoqKlxuXG4gICAgaWYgKHRoaXMuYXJDaGlsZHJlbiQgPT0gbnVsbCkge1xuICAgICAgLy8gY2hpbGRyZW4gbWF5IGhhdmUgYSAncmVmZXJlbmNlJyBzbyBub3JtYWxpemUgdGhlIGNoaWxkcmVuIGFycmF5XG4gICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uQXJyYXkodGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgfVxuXG4gICAgLy8gcm91dGluZ0luZm8gd2FzIGFkZGVkIGFzIGNvbXBvbmVudCBwcm9wIGluIHBvcHVsYXRlQWRkaXRpb25hbFByb3BzXG4gICAgY29uc3Qgcm91dGluZ0luZm8gPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDb21wb25lbnRQcm9wKHRoaXMsICdyb3V0aW5nSW5mbycpO1xuXG4gICAgbGV0IGxvYWRpbmdJbmZvO1xuICAgIHRyeSB7XG4gICAgICAvLyBAdHMtaWdub3JlIC0gUHJvcGVydHkgJ2dldExvYWRpbmdTdGF0dXMnIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gY2xhc3MgJ0MxMW5FbnYnXG4gICAgICBsb2FkaW5nSW5mbyA9IHRoaXMucENvbm4kLmdldExvYWRpbmdTdGF0dXMoKTtcblxuICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UobG9hZGluZ0luZm8pO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvKiBlbXB0eSAqL1xuICAgIH1cblxuICAgIC8vIGNvbnN0IGJ1aWxkTmFtZSA9IHRoaXMuYnVpbGROYW1lKCk7XG4gICAgY29uc3QgeyBDUkVBVEVfREVUQUlMU19WSUVXX05BTUUgfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICAgIGlmIChyb3V0aW5nSW5mbykge1xuICAgICAgY29uc3QgeyBhY2Nlc3NlZE9yZGVyLCBpdGVtcyB9ID0gcm91dGluZ0luZm87XG4gICAgICBpZiAoYWNjZXNzZWRPcmRlciAmJiBpdGVtcykge1xuICAgICAgICBjb25zdCBrZXkgPSBhY2Nlc3NlZE9yZGVyW2FjY2Vzc2VkT3JkZXIubGVuZ3RoIC0gMV07XG4gICAgICAgIGxldCBjb21wb25lbnRWaXNpYmxlID0gYWNjZXNzZWRPcmRlci5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCB7IHZpc2libGUgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgY29tcG9uZW50VmlzaWJsZSA9IHZpc2libGUgfHwgY29tcG9uZW50VmlzaWJsZTtcbiAgICAgICAgaWYgKGl0ZW1zW2tleV0gJiYgaXRlbXNba2V5XS52aWV3ICYmIE9iamVjdC5rZXlzKGl0ZW1zW2tleV0udmlldykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGxhdGVzdEl0ZW0gPSBpdGVtc1trZXldO1xuICAgICAgICAgIGNvbnN0IHJvb3RWaWV3ID0gbGF0ZXN0SXRlbS52aWV3O1xuICAgICAgICAgIGNvbnN0IHsgY29udGV4dCwgbmFtZTogdmlld05hbWUgfSA9IHJvb3RWaWV3LmNvbmZpZztcbiAgICAgICAgICBjb25zdCBjb25maWc6IGFueSA9IHsgbWV0YTogcm9vdFZpZXcgfTtcbiAgICAgICAgICBjb25maWcub3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGNvbnRleHQ6IGxhdGVzdEl0ZW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhZ2VSZWZlcmVuY2U6IGNvbnRleHQgfHwgdGhpcy5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpLFxuICAgICAgICAgICAgY29udGFpbmVyTmFtZTogdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpLFxuICAgICAgICAgICAgY29udGFpbmVySXRlbU5hbWU6IGtleSxcbiAgICAgICAgICAgIGhhc0Zvcm06IHZpZXdOYW1lID09PSBDUkVBVEVfREVUQUlMU19WSUVXX05BTUVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGNvbmZpZ09iamVjdCA9IFBDb3JlLmNyZWF0ZVBDb25uZWN0KGNvbmZpZyk7XG5cbiAgICAgICAgICAvLyBUSElTIGlzIHdoZXJlIHRoZSBWaWV3Q29udGFpbmVyIGNyZWF0ZXMgYSBWaWV3XG4gICAgICAgICAgLy8gICAgVGhlIGNvbmZpZyBoYXMgbWV0YS5jb25maWcudHlwZSA9IFwidmlld1wiXG4gICAgICAgICAgY29uc3QgbmV3Q29tcCA9IGNvbmZpZ09iamVjdC5nZXRQQ29ubmVjdCgpO1xuICAgICAgICAgIC8vIGNvbnN0IG5ld0NvbXBOYW1lID0gbmV3Q29tcC5nZXRDb21wb25lbnROYW1lKCk7XG4gICAgICAgICAgLy8gVGhlIG1ldGFkYXRhIGZvciBweURldGFpbHMgY2hhbmdlZCBzdWNoIHRoYXQgdGhlIFwidGVtcGxhdGVcIjogXCJDYXNlVmlld1wiXG4gICAgICAgICAgLy8gIGlzIG5vIGxvbmdlciBhIGNoaWxkIG9mIHRoZSBjcmVhdGVkIFZpZXcgYnV0IGlzIGluIHRoZSBjcmVhdGVkIFZpZXcnc1xuICAgICAgICAgIC8vICBjb25maWcuIFNvLCB3ZSBET04nVCB3YW50IHRvIHJlcGxhY2UgdGhpcy5wQ29ubiQgc2luY2UgdGhlIGNyZWF0ZWRcbiAgICAgICAgICAvLyAgY29tcG9uZW50IGlzIGEgVmlldyAoYW5kIG5vdCBhIFZpZXdDb250YWluZXIpLiBXZSBub3cgbG9vayBmb3IgdGhlXG4gICAgICAgICAgLy8gIFwidGVtcGxhdGVcIiB0eXBlIGRpcmVjdGx5IGluIHRoZSBjcmVhdGVkIGNvbXBvbmVudCAobmV3Q29tcCkgYW5kIE5PVFxuICAgICAgICAgIC8vICBhcyBhIGNoaWxkIG9mIHRoZSBuZXdseSBjcmVhdGVkIGNvbXBvbmVudC5cblxuICAgICAgICAgIC8vIFVzZSB0aGUgbmV3bHkgY3JlYXRlZCBjb21wb25lbnQgKFZpZXcpIGluZm8gYnV0IERPIE5PVCByZXBsYWNlXG4gICAgICAgICAgLy8gIHRoaXMgVmlld0NvbnRhaW5lcidzIHBDb25uJCwgZXRjLlxuICAgICAgICAgIC8vICBOb3RlIHRoYXQgd2UncmUgbm93IHVzaW5nIHRoZSBuZXdseSBjcmVhdGVkIFZpZXcncyBQQ29ubmVjdCBpbiB0aGVcbiAgICAgICAgICAvLyAgVmlld0NvbnRhaW5lciBIVE1MIHRlbXBsYXRlIHRvIGd1aWRlIHdoYXQncyByZW5kZXJlZCBzaW1pbGFyIHRvIHdoYXRcbiAgICAgICAgICAvLyAgdGhlIE5lYnVsYS9Db25zdGVsbGF0aW9uIHJldHVybiBvZiBSZWFjdC5GcmFnbWVudCBkb2VzXG5cbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKG5ld0NvbXAuZ2V0Q29tcG9uZW50TmFtZSgpID09PSAncmVmZXJlbmNlJykge1xuICAgICAgICAgICAgICAvLyBpZiBhIHJlZmVybmVjZSwgaXQgd2lsbCBkZSByZWZlcmVuY2UgdG8gYSBcInZpZXdcIlxuICAgICAgICAgICAgICAvLyBzbyBoYW5kIHRoaXMgb2ZmIHRvIHRoZSBcIlZpZXdcIiBjb21wb25lbnQgdG8gZG8gdGhhdFxuICAgICAgICAgICAgICB0aGlzLmlzVmlld0NvbnRhaW5lciQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy52aWV3UENvbm4kID0gbmV3Q29tcDtcblxuICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgKioqICB0aGlzIGNvbW1tZW50ZWQgb3V0IGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQsIG9uY2Ugd2UgdGVzdCBvdXQgdGhhdFxuICAgICAgICAgICAgICAgKioqICBoYW5kaW5nIG9mZiByZWZlcm5jZSB0byBWaWV3IGNvbXBvbmVudCBhbHdheXMgd29ya3NcbiAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICAgLy8gV2hlbiBuZXdDb21wIGlzIGEgcmVmZXJlbmNlLCB3ZSB3YW50IHRvIGRlLXJlZmVyZW5jZVxuICAgICAgICAgICAgICAvLyAgaXQgKHRvIGdldCB0aGUgVmlldykgYW5kIHRoZW4gdXNlIHRoYXQgVmlldyB0byBnZXQgdGhlXG4gICAgICAgICAgICAgIC8vICB0ZW1wbGF0ZSwgdGl0bGUsIGNoaWxkcmVuLCBldGMuXG5cbiAgICAgICAgICAgICAgLypcblxuICAgICAgICAgICAgICBjb25zdCB0aGVEZXJlZmVyZW5jZWRWaWV3ID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uKG5ld0NvbXApO1xuICAgICAgICAgICAgICBjb25zdCBuZXdDb25maWdQcm9wcyA9IHRoZURlcmVmZXJlbmNlZFZpZXcuZ2V0Q29uZmlnUHJvcHMoKTtcblxuICAgICAgICAgICAgICAvLyBjaGlsZHJlbiBtYXkgaGF2ZSBhICdyZWZlcmVuY2UnIHNvIG5vcm1hbGl6ZSB0aGUgY2hpbGRyZW4gYXJyYVxuXG4gICAgICAgICAgICAgIGNvbnN0IHRoZURlcmVmZXJlbmNlZFZpZXdDaGlsZHJlbiA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KHRoZURlcmVmZXJlbmNlZFZpZXcuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVOYW1lJCA9ICgndGVtcGxhdGUnIGluIG5ld0NvbmZpZ1Byb3BzKSA/IG5ld0NvbmZpZ1Byb3BzW1widGVtcGxhdGVcIl0gOiBcIlwiO1xuICAgICAgICAgICAgICB0aGlzLnRpdGxlJCA9ICgndGl0bGUnIGluIG5ld0NvbmZpZ1Byb3BzKSA/IG5ld0NvbmZpZ1Byb3BzW1widGl0bGVcIl0gOiBcIlwiO1xuICAgICAgICAgICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gdGhlRGVyZWZlcmVuY2VkVmlld0NoaWxkcmVuO1xuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZWRWaWV3UENvbm4kID0gdGhlRGVyZWZlcmVuY2VkVmlldztcbiAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIG9sZCBzdHlsZSB3aGVuIG5ld0NvbXAgaXMgTk9UIGEgJ3JlZmVyZW5jZSdcbiAgICAgICAgICAgICAgdGhpcy5pc1ZpZXdDb250YWluZXIkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBWaWV3Q29udGFpbmVyIGhhcyBhIG5ld0NvbXAgdGhhdCBpcyBOT1QgYSByZWZlcmVuY2UhYCk7XG5cbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVkVmlld1BDb25uJCA9IG5ld0NvbXA7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0NvbmZpZ1Byb3BzID0gbmV3Q29tcC5nZXRDb25maWdQcm9wcygpO1xuICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlTmFtZSQgPSBuZXdDb25maWdQcm9wcy50ZW1wbGF0ZSB8fCAnJztcbiAgICAgICAgICAgICAgdGhpcy50aXRsZSQgPSBuZXdDb25maWdQcm9wcy50aXRsZSB8fCAnJztcbiAgICAgICAgICAgICAgLy8gdXBkYXRlIGNoaWxkcmVuIHdpdGggbmV3IHZpZXcncyBjaGlsZHJlblxuICAgICAgICAgICAgICAvLyBjaGlsZHJlbiBtYXkgaGF2ZSBhICdyZWZlcmVuY2UnIHNvIG5vcm1hbGl6ZSB0aGUgY2hpbGRyZW4gYXJyYXlcbiAgICAgICAgICAgICAgdGhpcy5hckNoaWxkcmVuJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KG5ld0NvbXAuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcmVwYXJlRGlzcGF0Y2hPYmplY3QoKTogYW55IHtcbiAgICBjb25zdCBiYXNlQ29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgLy8gY29uc3QgeyBhY05hbWUgPSBcInByaW1hcnlcIiB9ID0gcENvbm4uZ2V0Q29udGFpbmVyTmFtZSgpOyAvLyBkb2Vzbid0IHdvcmsgd2l0aCA4LjIzIHR5cGluZ3NcbiAgICBjb25zdCBhY05hbWUgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJOYW1lKCkgfHwgJ3ByaW1hcnknO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbWFudGljVVJMOiAnJyxcbiAgICAgIGNvbnRleHQ6IGJhc2VDb250ZXh0LFxuICAgICAgYWNOYW1lXG4gICAgfTtcbiAgfVxuXG4gIGJ1aWxkTmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNDb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBjb25zdCBzTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcblxuICAgIHJldHVybiBgJHtzQ29udGV4dC50b1VwcGVyQ2FzZSgpfS8ke3NOYW1lLnRvVXBwZXJDYXNlKCl9YDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBzZGstdmlldy1jb250YWluZXItdG9wXCIgaWQ9XCJ7eyBidWlsZE5hbWUkIH19XCI+XG4gIDxkaXYgKm5nSWY9XCJpc1ZpZXdDb250YWluZXIkOyBlbHNlIGlzUmVmZXJlbmNlXCI+XG4gICAgPGgzICpuZ0lmPVwidGl0bGUkICE9PSAnJ1wiPnt7IHRpdGxlJCB9fTwvaDM+XG4gICAgPGRpdiAqbmdJZj1cInRlbXBsYXRlTmFtZSQ7IGVsc2Ugc2hvd0NoaWxkcmVuXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICBbbmFtZV09XCJ0ZW1wbGF0ZU5hbWUkXCJcbiAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICBwQ29ubiQ6IGNyZWF0ZWRWaWV3UENvbm4kLFxuICAgICAgICAgIGZvcm1Hcm91cCQ6IGZvcm1Hcm91cCQsXG4gICAgICAgICAgZGlzcGxheU9ubHlGQSQ6IGRpc3BsYXlPbmx5RkEkXG4gICAgICAgIH1cIlxuICAgICAgICBlcnJvck1zZz1cIlZpZXcgQ29udGFpbmVyIG1pc3NpbmcgVGVtcGxhdGUge3sgdGVtcGxhdGVOYW1lJCB9fVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0NoaWxkcmVuPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2lkIG9mIGFyQ2hpbGRyZW4kXCI+XG4gICAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICAgW25hbWVdPVwia2lkLmdldFBDb25uZWN0KCkuZ2V0Q29tcG9uZW50TmFtZSgpXCJcbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSxcbiAgICAgICAgICAgIGRpc3BsYXlPbmx5RkEkOiBkaXNwbGF5T25seUZBJFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIGVycm9yTXNnPVwiVmlld0NvbnRhaW5lciBNaXNzaW5nIChubyB0ZW1wbGF0ZSk6IHt7IGtpZC5nZXRQQ29ubmVjdCgpLmdldENvbXBvbmVudE5hbWUoKSB9fVwiXG4gICAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICNpc1JlZmVyZW5jZT5cbiAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiVmlld1wiIFtwcm9wc109XCJ7IHBDb25uJDogdmlld1BDb25uJCwgZGlzcGxheU9ubHlGQSQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
@@ -15,10 +15,10 @@ export class ActionButtonsComponent {
|
|
|
15
15
|
buttonClick(sAction, sButtonType) {
|
|
16
16
|
this.actionButtonClick.emit({ action: sAction, buttonType: sButtonType });
|
|
17
17
|
}
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
19
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ActionButtonsComponent, isStandalone: true, selector: "app-action-buttons", inputs: { arMainButtons$: "arMainButtons$", arSecondaryButtons$: "arSecondaryButtons$" }, outputs: { actionButtonClick: "actionButtonClick" }, ngImport: i0, template: "<mat-grid-list cols=\"2\" rowHeight=\"6.25rem\">\n <mat-grid-tile>\n <button *ngFor=\"let aButton of arSecondaryButtons$\" mat-raised-button color=\"secondary\" (click)=\"buttonClick(aButton.jsAction, 'secondary')\">\n {{ localizedVal(aButton.name, localeCategory) }}\n </button>\n </mat-grid-tile>\n <mat-grid-tile>\n <button *ngFor=\"let aButton of arMainButtons$\" mat-raised-button color=\"primary\" (click)=\"buttonClick(aButton.jsAction, 'primary')\">\n {{ localizedVal(aButton.name, localeCategory) }}\n </button>\n </mat-grid-tile>\n</mat-grid-list>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatGridListModule }, { kind: "component", type: i2.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { kind: "component", type: i2.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
20
20
|
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ActionButtonsComponent, decorators: [{
|
|
22
22
|
type: Component,
|
|
23
23
|
args: [{ selector: 'app-action-buttons', standalone: true, imports: [CommonModule, MatGridListModule, MatButtonModule], template: "<mat-grid-list cols=\"2\" rowHeight=\"6.25rem\">\n <mat-grid-tile>\n <button *ngFor=\"let aButton of arSecondaryButtons$\" mat-raised-button color=\"secondary\" (click)=\"buttonClick(aButton.jsAction, 'secondary')\">\n {{ localizedVal(aButton.name, localeCategory) }}\n </button>\n </mat-grid-tile>\n <mat-grid-tile>\n <button *ngFor=\"let aButton of arMainButtons$\" mat-raised-button color=\"primary\" (click)=\"buttonClick(aButton.jsAction, 'primary')\">\n {{ localizedVal(aButton.name, localeCategory) }}\n </button>\n </mat-grid-tile>\n</mat-grid-list>\n" }]
|
|
24
24
|
}], propDecorators: { arMainButtons$: [{
|
|
@@ -242,7 +242,6 @@ export class AssignmentComponent {
|
|
|
242
242
|
const savePromise = this.saveAssignment(this.itemKey$);
|
|
243
243
|
savePromise
|
|
244
244
|
.then(() => {
|
|
245
|
-
// @ts-ignore - Property 'c11nEnv' is private and only accessible within class 'CaseInfo'.
|
|
246
245
|
const caseType = this.pConn$.getCaseInfo().c11nEnv.getValue(PCore.getConstants().CASE_INFO.CASE_TYPE_ID);
|
|
247
246
|
PCore.getPubSubUtils().publish('cancelPressed');
|
|
248
247
|
this.onSaveActionSuccess({ caseType, caseID, assignmentID });
|
|
@@ -357,10 +356,10 @@ export class AssignmentComponent {
|
|
|
357
356
|
control.markAsTouched();
|
|
358
357
|
});
|
|
359
358
|
}
|
|
360
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
361
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
359
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: AssignmentComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.ProgressSpinnerService }, { token: i3.ErrorMessagesService }, { token: i0.NgZone }, { token: i4.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
360
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: AssignmentComponent, isStandalone: true, selector: "app-assignment", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", arChildren$: "arChildren$", itemKey$: "itemKey$", isCreateStage$: "isCreateStage$", updateToken$: "updateToken$", isInModal$: "isInModal$", banners: "banners" }, usesOnChanges: true, ngImport: i0, template: "<div>\n <div><component-mapper name=\"AlertBanner\" [props]=\"{ banners }\" [parent]=\"this\"></component-mapper></div>\n <div *ngIf=\"bHasNavigation$\" class=\"psdk-stepper\">\n <component-mapper\n name=\"MultiStep\"\n [props]=\"{\n pConn$: newPConn$,\n formGroup$,\n arChildren$,\n arMainButtons$,\n arSecondaryButtons$,\n bIsVertical$,\n arCurrentStepIndicies$,\n arNavigationSteps$\n }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!bHasNavigation$\">\n <component-mapper\n name=\"AssignmentCard\"\n [props]=\"{ pConn$: newPConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$, updateToken$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i5.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatSnackBarModule) }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
362
361
|
}
|
|
363
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
362
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: AssignmentComponent, decorators: [{
|
|
364
363
|
type: Component,
|
|
365
364
|
args: [{ selector: 'app-assignment', standalone: true, imports: [CommonModule, MatSnackBarModule, forwardRef(() => ComponentMapperComponent)], template: "<div>\n <div><component-mapper name=\"AlertBanner\" [props]=\"{ banners }\" [parent]=\"this\"></component-mapper></div>\n <div *ngIf=\"bHasNavigation$\" class=\"psdk-stepper\">\n <component-mapper\n name=\"MultiStep\"\n [props]=\"{\n pConn$: newPConn$,\n formGroup$,\n arChildren$,\n arMainButtons$,\n arSecondaryButtons$,\n bIsVertical$,\n arCurrentStepIndicies$,\n arNavigationSteps$\n }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!bHasNavigation$\">\n <component-mapper\n name=\"AssignmentCard\"\n [props]=\"{ pConn$: newPConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$, updateToken$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n" }]
|
|
366
365
|
}], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i2.ProgressSpinnerService }, { type: i3.ErrorMessagesService }, { type: i0.NgZone }, { type: i4.MatSnackBar }], propDecorators: { pConn$: [{
|
|
@@ -380,4 +379,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
380
379
|
}], banners: [{
|
|
381
380
|
type: Input
|
|
382
381
|
}] } });
|
|
383
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWdubWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvaW5mcmEvYXNzaWdubWVudC9hc3NpZ25tZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9hc3NpZ25tZW50L2Fzc2lnbm1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFVLFVBQVUsRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBSzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7O0FBY3hHLE1BQU0sT0FBTyxtQkFBbUI7SUFnRDlCLFlBQ1UsZUFBdUMsRUFDdkMsU0FBaUMsRUFDakMsU0FBK0IsRUFDL0IsTUFBYyxFQUNkLFFBQXFCO1FBSnJCLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUMvQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQTlDdEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUc1Qix1Q0FBdUM7UUFDdkMsd0JBQW1CLEdBQXdCLEVBQUUsQ0FBQztRQU05QyxpQkFBWSxHQUFHLEtBQUss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VUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY2FzZS1kZWNsYXJhdGlvbnMgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyTW9kdWxlLCBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IEVycm9yTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21lc3NhZ2VzL2Vycm9yLW1lc3NhZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXNzYWdlcy9wcm9ncmVzcy1zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVmZXJlbmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW5mcmEvcmVmZXJlbmNlL3JlZmVyZW5jZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIEFzc2lnbm1lbnRQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgdGVtcGxhdGU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFzc2lnbm1lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXNzaWdubWVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Fzc2lnbm1lbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0U25hY2tCYXJNb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgQXNzaWdubWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBhckNoaWxkcmVuJDogYW55W107XG4gIEBJbnB1dCgpIGl0ZW1LZXkkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzQ3JlYXRlU3RhZ2UkOiBib29sZWFuO1xuICBASW5wdXQoKSB1cGRhdGVUb2tlbiQ6IG51bWJlcjtcbiAgQElucHV0KCkgaXNJbk1vZGFsJCA9IGZhbHNlO1xuICBASW5wdXQoKSBiYW5uZXJzO1xuXG4gIC8vIEZvciBpbnRlcmFjdGlvbiB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIGNvbmZpZ1Byb3BzJDogQXNzaWdubWVudFByb3BzO1xuXG4gIG5ld1BDb25uJDogYW55O1xuICBjb250YWluZXJOYW1lJDogc3RyaW5nO1xuXG4gIGJJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIHRlbXBsYXRlTmFtZSQ6IHN0cmluZztcblxuICBhck1haW5CdXR0b25zJDogYW55W107XG4gIGFyU2Vjb25kYXJ5QnV0dG9ucyQ6IGFueVtdO1xuXG4gIGFjdGlvbnNBUEk6IGFueTtcblxuICBiSGFzTmF2aWdhdGlvbiQgPSBmYWxzZTtcbiAgYklzVmVydGljYWwkID0gZmFsc2U7XG4gIGFyQ3VycmVudFN0ZXBJbmRpY2llcyQ6IG51bWJlcltdID0gW107XG4gIGFyTmF2aWdhdGlvblN0ZXBzJDogYW55W10gPSBbXTtcblxuICBpbml0OiBib29sZWFuO1xuICBmaW5pc2hBc3NpZ25tZW50OiBhbnk7XG4gIG5hdmlnYXRlVG9TdGVwOiBhbnk7XG4gIHNhdmVBc3NpZ25tZW50OiBhbnk7XG4gIGNhbmNlbEFzc2lnbm1lbnQ6IGFueTtcbiAgY2FuY2VsQ3JlYXRlU3RhZ2VBc3NpZ25tZW50OiBhbnk7XG4gIHNob3dQYWdlOiBhbnk7XG4gIGFwcHJvdmVDYXNlOiBhbnk7XG4gIHJlamVjdENhc2U6IGFueTtcblxuICAvLyBpdGVtS2V5OiBzdHJpbmcgPSBcIlwiOyAgIC8vIEpBIC0gdGhpcyBpcyB3aGF0IE5lYnVsYS9Db25zdGVsbGF0aW9uIHVzZXMgdG8gcGFzcyB0byBmaW5pc2hBc3NpZ25tZW50LCBuYXZpZ2F0ZVRvU3RlcFxuXG4gIGJSZUluaXQgPSBmYWxzZTtcbiAgbG9jYWxpemVkVmFsO1xuICBsb2NhbGVDYXRlZ29yeSA9ICdBc3NpZ25tZW50JztcbiAgbG9jYWxlUmVmZXJlbmNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHNTZXJ2aWNlOiBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXJTZXJ2aWNlOiBFcnJvck1lc3NhZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcblxuICAgIHRoaXMuaW5pdENvbXBvbmVudCgpO1xuXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgdGhpcy5iSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIHRoaXMubG9jYWxpemVkVmFsID0gUENvcmUuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZTtcbiAgICB0aGlzLmxvY2FsZVJlZmVyZW5jZSA9IGAke3RoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0Q2xhc3NOYW1lKCl9IUNBU0UhJHt0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmdldE5hbWUoKX1gLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgY2hlY2tBbmRVcGRhdGUoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIC8vICAgIEFORCByZW1vdmluZyB0aGUgXCJnYXRlXCIgdGhhdCB3YXMgcHV0IHRoZXJlIHNpbmNlIHNob3VsZENvbXBvbmVudFVwZGF0ZVxuICAgIC8vICAgICAgc2hvdWxkIGJlIHRoZSByZWFsIFwiZ2F0ZVwiXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICBsZXQgbG9hZGluZ0luZm87XG4gICAgICB0cnkge1xuICAgICAgICAvLyBsb2FkaW5nSW5mbyA9IHRoaXMucENvbm4kLmdldExvYWRpbmdTdGF0dXMoKTtcbiAgICAgICAgbG9hZGluZ0luZm8gPSB0aGlzLm5ld1BDb25uJC5nZXRMb2FkaW5nU3RhdHVzKCk7XG5cbiAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UobG9hZGluZ0luZm8pO1xuICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgLyogZW1wdHkgKi9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5iSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNoYW5nZXMoKSB7XG4gICAgLy8gcENvbm4kIG1heSBiZSBhICdyZWZlcmVuY2UnIGNvbXBvbmVudCwgc28gbm9ybWFsaXplIGl0XG4gICAgdGhpcy5uZXdQQ29ubiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4odGhpcy5wQ29ubiQpO1xuXG4gICAgaWYgKHRoaXMuYXJDaGlsZHJlbiQpIHtcbiAgICAgIHRoaXMuY3JlYXRlQnV0dG9ucygpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRDb21wb25lbnQoKSB7XG4gICAgLy8gcENvbm4kIG1heSBiZSBhICdyZWZlcmVuY2UnIGNvbXBvbmVudCwgc28gbm9ybWFsaXplIGl0XG4gICAgLy8gdGhpcy5wQ29ubiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4odGhpcy5wQ29ubiQpO1xuICAgIHRoaXMubmV3UENvbm4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uKHRoaXMucENvbm4kKTtcblxuICAgIC8vIHByZXZlbnQgcmUtaW50aWFsaXppbmcgd2l0aCBmbG93Q29udGFpbmVyIHVwZGF0ZSB1bmxlc3MgYW4gYWN0aW9uIGlzIHRha2VuXG4gICAgdGhpcy5iUmVJbml0ID0gZmFsc2U7XG4gICAgdGhpcy5iSGFzTmF2aWdhdGlvbiQgPSBmYWxzZTtcblxuICAgIC8vIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpO1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5uZXdQQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMubmV3UENvbm4kLmdldENvbmZpZ1Byb3BzKCkpO1xuXG4gICAgdGhpcy50ZW1wbGF0ZU5hbWUkID0gdGhpcy5jb25maWdQcm9wcyQudGVtcGxhdGU7XG5cbiAgICAvLyBjcmVhdGUgcG9pbnRlcnMgdG8gZnVuY3Rpb25zXG4gICAgLypcbiAgICBsZXQgY29udGFpbmVyTWdyID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTWFuYWdlcigpO1xuICAgIGxldCBhY3Rpb25zQVBJID0gdGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpO1xuICAgIGxldCBiYXNlQ29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgbGV0IGFjTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcbiAgICAqL1xuXG4gICAgY29uc3QgYWN0aW9uc0FQSSA9IHRoaXMubmV3UENvbm4kLmdldEFjdGlvbnNBcGkoKTtcbiAgICBjb25zdCBiYXNlQ29udGV4dCA9IHRoaXMubmV3UENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgY29uc3QgYWNOYW1lID0gdGhpcy5uZXdQQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuXG4gICAgLy8gZm9yIG5vdywgaW4gZ2VuZXJhbCB0aGlzIHNob3VsZCBiZSBvdmVycmlkZGVuIGJ5IHVwZGF0ZVNlbGYoKSwgYW5kIG5vdCBiZSBibGFua1xuICAgIGlmICh0aGlzLml0ZW1LZXkkID09PSAnJykge1xuICAgICAgdGhpcy5pdGVtS2V5JCA9IGJhc2VDb250ZXh0LmNvbmNhdCgnLycpLmNvbmNhdChhY05hbWUpO1xuICAgIH1cblxuICAgIC8vIHRoaXMucENvbm4kLmlzQm91bmRUb1N0YXRlKCk7XG4gICAgdGhpcy5uZXdQQ29ubiQuaXNCb3VuZFRvU3RhdGUoKTtcblxuICAgIHRoaXMuaW5pdCA9IGZhbHNlO1xuXG4gICAgLy8gc3RvcmUgb2ZmIGJvdW5kIGZ1bmN0aW9ucyB0byBhYm92ZSBwb2ludGVyc1xuICAgIHRoaXMuZmluaXNoQXNzaWdubWVudCA9IGFjdGlvbnNBUEkuZmluaXNoQXNzaWdubWVudC5iaW5kKGFjdGlvbnNBUEkpO1xuICAgIHRoaXMubmF2aWdhdGVUb1N0ZXAgPSBhY3Rpb25zQVBJLm5hdmlnYXRlVG9TdGVwLmJpbmQoYWN0aW9uc0FQSSk7XG4gICAgdGhpcy5zYXZlQXNzaWdubWVudCA9IGFjdGlvbnNBUEkuc2F2ZUFzc2lnbm1lbnQuYmluZChhY3Rpb25zQVBJKTtcbiAgICB0aGlzLmNhbmNlbEFzc2lnbm1lbnQgPSBhY3Rpb25zQVBJLmNhbmNlbEFzc2lnbm1lbnQuYmluZChhY3Rpb25zQVBJKTtcbiAgICB0aGlzLnNob3dQYWdlID0gYWN0aW9uc0FQSS5zaG93UGFnZS5iaW5kKGFjdGlvbnNBUEkpO1xuXG4gICAgdGhpcy5jYW5jZWxDcmVhdGVTdGFnZUFzc2lnbm1lbnQgPSBhY3Rpb25zQVBJLmNhbmNlbENyZWF0ZVN0YWdlQXNzaWdubWVudC5iaW5kKGFjdGlvbnNBUEkpO1xuICAgIHRoaXMuYXBwcm92ZUNhc2UgPSBhY3Rpb25zQVBJLmFwcHJvdmVDYXNlPy5iaW5kKGFjdGlvbnNBUEkpO1xuICAgIHRoaXMucmVqZWN0Q2FzZSA9IGFjdGlvbnNBUEkucmVqZWN0Q2FzZT8uYmluZChhY3Rpb25zQVBJKTtcblxuICAgIGlmICh0aGlzLmFyQ2hpbGRyZW4kKSB7XG4gICAgICB0aGlzLmNyZWF0ZUJ1dHRvbnMoKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVCdXR0b25zKCkge1xuICAgIC8vIGxldCBvRGF0YSA9IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoKTtcbiAgICBjb25zdCBvRGF0YSA9IHRoaXMubmV3UENvbm4kLmdldERhdGFPYmplY3QoKTtcblxuICAgIC8vIGluc2lkZVxuICAgIC8vIGdldCBmaXN0IGtpZCwgZ2V0IHRoZSBuYW1lIGFuZCBkaXNwbGFcbiAgICAvLyBwYXNzIGZpcnN0IGtpZCB0byBhIHZpZXcgY29udGFpbmVyLCB3aGljaCB3aWxsIGRpc3BlcnNlIGl0IHRvIGEgdmlldyB3aGljaCB3aWxsIHVzZSBvbmUgY29sdW1uLCB0d28gY29sdW1uLCBldGMuXG4gICAgY29uc3Qgb1dvcmtJdGVtID0gdGhpcy5hckNoaWxkcmVuJFswXS5nZXRQQ29ubmVjdCgpO1xuICAgIGNvbnN0IG9Xb3JrRGF0YSA9IG9Xb3JrSXRlbS5nZXREYXRhT2JqZWN0KCk7XG5cbiAgICBpZiAob1dvcmtEYXRhKSB7XG4gICAgICB0aGlzLmFjdGlvbnNBUEkgPSBvV29ya0l0ZW0uZ2V0QWN0aW9uc0FwaSgpO1xuXG4gICAgICAvLyB0aGlzLmNvbnRhaW5lck5hbWUkID0gb1dvcmtNZXRhW1wibmFtZVwiXTtcblxuICAgICAgaWYgKG9Xb3JrRGF0YS5jYXNlSW5mbyAmJiBvV29ya0RhdGEuY2FzZUluZm8uYXNzaWdubWVudHMgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jb250YWluZXJOYW1lJCA9IG9Xb3JrRGF0YS5jYXNlSW5mby5hc3NpZ25tZW50cz8uWzBdLm5hbWU7XG5cbiAgICAgICAgLy8gZ2V0IGNhc2VJbmZvXG4gICAgICAgIGNvbnN0IG9DYXNlSW5mbyA9IG9EYXRhLmNhc2VJbmZvO1xuXG4gICAgICAgIGlmIChvQ2FzZUluZm8gJiYgb0Nhc2VJbmZvLmFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICB0aGlzLmFyTWFpbkJ1dHRvbnMkID0gb0Nhc2VJbmZvLmFjdGlvbkJ1dHRvbnMubWFpbjtcbiAgICAgICAgICB0aGlzLmFyU2Vjb25kYXJ5QnV0dG9ucyQgPSBvQ2FzZUluZm8uYWN0aW9uQnV0dG9ucy5zZWNvbmRhcnk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob0Nhc2VJbmZvLm5hdmlnYXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuY3JlYXRlQnV0dG9uc0Zvck11bHRpU3RlcEZvcm0ob0Nhc2VJbmZvKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmJIYXNOYXZpZ2F0aW9uJCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlQnV0dG9uc0Zvck11bHRpU3RlcEZvcm0ob0Nhc2VJbmZvKSB7XG4gICAgdGhpcy5iSGFzTmF2aWdhdGlvbiQgPSB0cnVlO1xuXG4gICAgaWYgKChvQ2FzZUluZm8ubmF2aWdhdGlvbi50ZW1wbGF0ZSAmJiBvQ2FzZUluZm8ubmF2aWdhdGlvbi50ZW1wbGF0ZS50b0xvd2VyQ2FzZSgpID09PSAnc3RhbmRhcmQnKSB8fCBvQ2FzZUluZm8/Lm5hdmlnYXRpb24/LnN0ZXBzPy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMuYkhhc05hdmlnYXRpb24kID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChvQ2FzZUluZm8ubmF2aWdhdGlvbi50ZW1wbGF0ZSAmJiBvQ2FzZUluZm8ubmF2aWdhdGlvbi50ZW1wbGF0ZS50b0xvd2VyQ2FzZSgpID09PSAndmVydGljYWwnKSB7XG4gICAgICB0aGlzLmJJc1ZlcnRpY2FsJCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYklzVmVydGljYWwkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gaXRlcmF0ZSB0aHJvdWdoIHN0ZXBzIHRvIGZpbmQgY3VycmVudCBvbmUocylcbiAgICAvLyBpbW11dGFibGUsIHNvIHdlIHdhbnQgdG8gY2hhbmdlIHRoZSBsb2NhbCBjb3B5LCBzbyBuZWVkIHRvIG1ha2UgYSBjb3B5XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIC8vIHdoYXQgY29tZXMgYmFjayBub3cgaW4gY29uZmlnT2JqZWN0IGlzIHRoZSBjaGlsZHJlbiBvZiB0aGUgZmxvd0NvbnRhaW5lclxuICAgICAgdGhpcy5hck5hdmlnYXRpb25TdGVwcyQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9DYXNlSW5mby5uYXZpZ2F0aW9uLnN0ZXBzKSk7XG4gICAgICB0aGlzLmFyTmF2aWdhdGlvblN0ZXBzJC5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgICAgICBpZiAoc3RlcC5uYW1lKSB7XG4gICAgICAgICAgc3RlcC5uYW1lID0gUENvcmUuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZShzdGVwLm5hbWUsIHVuZGVmaW5lZCwgdGhpcy5sb2NhbGVSZWZlcmVuY2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXJDdXJyZW50U3RlcEluZGljaWVzJCA9IFtdO1xuICAgICAgdGhpcy5hckN1cnJlbnRTdGVwSW5kaWNpZXMkID0gdGhpcy5maW5kQ3VycmVudEluZGljaWVzKHRoaXMuYXJOYXZpZ2F0aW9uU3RlcHMkLCB0aGlzLmFyQ3VycmVudFN0ZXBJbmRpY2llcyQsIDApO1xuICAgIH0pO1xuICB9XG5cbiAgZmluZEN1cnJlbnRJbmRpY2llcyhhclN0ZXBwZXJTdGVwczogYW55W10sIGFySW5kaWNpZXM6IG51bWJlcltdLCBkZXB0aDogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgYXJTdGVwcGVyU3RlcHMuZm9yRWFjaChzdGVwID0+IHtcbiAgICAgIGlmIChzdGVwLnZpc2l0ZWRfc3RhdHVzID09ICdjdXJyZW50Jykge1xuICAgICAgICBhckluZGljaWVzW2RlcHRoXSA9IGNvdW50O1xuXG4gICAgICAgIC8vIGFkZCBpblxuICAgICAgICBzdGVwLnN0ZXBfc3RhdHVzID0gJyc7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudmlzaXRlZF9zdGF0dXMgPT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICAgIHN0ZXAuc3RlcF9zdGF0dXMgPSAnY29tcGxldGVkJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICAgIHN0ZXAuc3RlcF9zdGF0dXMgPSAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXAuc3RlcHMpIHtcbiAgICAgICAgYXJJbmRpY2llcyA9IHRoaXMuZmluZEN1cnJlbnRJbmRpY2llcyhzdGVwLnN0ZXBzLCBhckluZGljaWVzLCBkZXB0aCArIDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFySW5kaWNpZXM7XG4gIH1cblxuICBvblNhdmVBY3Rpb25TdWNjZXNzKGRhdGEpIHtcbiAgICB0aGlzLmFjdGlvbnNBUEkuY2FuY2VsQXNzaWdubWVudCh0aGlzLml0ZW1LZXkkKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaChQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5DQVNFX0VWRU5UUy5DUkVBVEVfU1RBR0VfU0FWRUQsIGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgb25BY3Rpb25CdXR0b25DbGljayhvRGF0YTogYW55KSB7XG4gICAgdGhpcy5idXR0b25DbGljayhvRGF0YS5hY3Rpb24sIG9EYXRhLmJ1dHRvblR5cGUpO1xuICB9XG5cbiAgYnV0dG9uQ2xpY2soc0FjdGlvbiwgc0J1dHRvblR5cGUpIHtcbiAgICAvLyByaWdodCBub3csIGRvbmUgb24gYW4gaW5kaXZpZHVhbCBiYXNpcywgc2V0dGluZyBiUmVJbml0IHRvIHRydWVcbiAgICAvLyB1cG9uIHRoZSBuZXh0IGZsb3cgY29udGFpbmVyIHN0YXRlIGNoYW5nZSwgd2lsbCBjYXVzZSB0aGUgZmxvdyBjb250YWluZXJcbiAgICAvLyB0byByZS1pbml0aWFsaXplXG4gICAgLy8gdGhpcy5iUmVJbml0ID10cnVlO1xuXG4gICAgLypcbiAgICBsZXQgYmFzZUNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGxldCBhY05hbWUgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG4gICAgbGV0IGl0ZW1JRCA9IGJhc2VDb250ZXh0LmNvbmNhdChcIi9cIikuY29uY2F0KGFjTmFtZSk7XG4gICAgKi9cblxuICAgIC8vIGNvbnN0IGJhc2VDb250ZXh0ID0gdGhpcy5uZXdQQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICAvLyBjb25zdCBhY05hbWUgPSB0aGlzLm5ld1BDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG4gICAgLy8gY29uc3QgaXRlbUlEID0gYmFzZUNvbnRleHQuY29uY2F0KCcvJykuY29uY2F0KGFjTmFtZSk7XG5cbiAgICBpZiAoc0J1dHRvblR5cGUgPT0gJ3NlY29uZGFyeScpIHtcbiAgICAgIC8vIGNvbnN0IHN0ZXBJRCA9ICcnOyAvLyA/Pz9cblxuICAgICAgLy8gbmVlZCB0byBoYW5kbGUgY2FuY2VsIGFzIHRoaXMuY2FuY2VsKGRpc3BhdGNoSW5mbylcbiAgICAgIC8vIHRoaXMuYWN0aW9uc0FQSVtzQWN0aW9uXShkaXNwYXRjaEluZm8pO1xuICAgICAgc3dpdGNoIChzQWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ25hdmlnYXRlVG9TdGVwJzpcbiAgICAgICAgICB0aGlzLmVyU2VydmljZS5zZW5kTWVzc2FnZSgncHVibGlzaCcsICcnKTtcbiAgICAgICAgICBpZiAodGhpcy5mb3JtVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5iUmVJbml0ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCBuYXZpZ2F0ZVByb21pc2UgPSB0aGlzLm5hdmlnYXRlVG9TdGVwKCdwcmV2aW91cycsIHRoaXMuaXRlbUtleSQpO1xuICAgICAgICAgICAgbmF2aWdhdGVQcm9taXNlXG4gICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnTmF2aWdhdGlvbiBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzYXZlQXNzaWdubWVudCc6IHtcbiAgICAgICAgICBjb25zdCBjYXNlSUQgPSB0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmdldEtleSgpO1xuICAgICAgICAgIGNvbnN0IGFzc2lnbm1lbnRJRCA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0QXNzaWdubWVudElEKCk7XG4gICAgICAgICAgY29uc3Qgc2F2ZVByb21pc2UgPSB0aGlzLnNhdmVBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpO1xuXG4gICAgICAgICAgc2F2ZVByb21pc2VcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIFByb3BlcnR5ICdjMTFuRW52JyBpcyBwcml2YXRlIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIGNsYXNzICdDYXNlSW5mbycuXG4gICAgICAgICAgICAgIGNvbnN0IGNhc2VUeXBlID0gdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5jMTFuRW52LmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX1RZUEVfSUQpO1xuICAgICAgICAgICAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnB1Ymxpc2goJ2NhbmNlbFByZXNzZWQnKTtcbiAgICAgICAgICAgICAgdGhpcy5vblNhdmVBY3Rpb25TdWNjZXNzKHsgY2FzZVR5cGUsIGNhc2VJRCwgYXNzaWdubWVudElEIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGAke3RoaXMubG9jYWxpemVkVmFsKCdTYXZlIGZhaWxlZCcsIHRoaXMubG9jYWxlQ2F0ZWdvcnkpfWAsICdPaycpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ2NhbmNlbEFzc2lnbm1lbnQnOlxuICAgICAgICAgIHRoaXMuYlJlSW5pdCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5lclNlcnZpY2Uuc2VuZE1lc3NhZ2UoJ2Rpc21pc3MnLCAnJyk7XG4gICAgICAgICAgY29uc3QgaXNBc3NpZ25tZW50SW5DcmVhdGVTdGFnZSA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuaXNBc3NpZ25tZW50SW5DcmVhdGVTdGFnZSgpO1xuICAgICAgICAgIGNvbnN0IGlzTG9jYWxBY3Rpb24gPVxuICAgICAgICAgICAgdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5pc0xvY2FsQWN0aW9uKCkgfHxcbiAgICAgICAgICAgIChQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uSVNfTE9DQUxfQUNUSU9OICYmIHRoaXMucENvbm4kLmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5JU19MT0NBTF9BQ1RJT04pKTtcbiAgICAgICAgICAvLyBjaGVjayBpZiBjcmVhdGUgc3RhZ2UgKG1vZGFsKVxuICAgICAgICAgIGlmIChpc0Fzc2lnbm1lbnRJbkNyZWF0ZVN0YWdlICYmIHRoaXMuaXNJbk1vZGFsJCAmJiAhaXNMb2NhbEFjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHRoaXMuY2FuY2VsQ3JlYXRlU3RhZ2VBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpO1xuICAgICAgICAgICAgY2FuY2VsUHJvbWlzZVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIC8vIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaChcbiAgICAgICAgICAgICAgICAvLyAgIFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkVWRU5UX0NBTkNFTCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnQ2FuY2VsIGZhaWxlZCEnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KX1gLCAnT2snKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKHRydWUpO1xuXG4gICAgICAgICAgICAvLyBwdWJsaXNoIGJlZm9yZSBjYW5jZWwgcHJlc3NlZCwgYmVjYXVzZVxuICAgICAgICAgICAgLy8gY2FuY2VsIGFzc2lnbm1lbnQgaGFwcGVucyBcImFmdGVyXCIgY2FuY2VsIGFzc2lnbm1lbnQgaGFwcGVuc1xuICAgICAgICAgICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5wdWJsaXNoKCdjYW5jZWxQcmVzc2VkJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNhbmNlbFByb21pc2UgPSB0aGlzLmNhbmNlbEFzc2lnbm1lbnQodGhpcy5pdGVtS2V5JCk7XG4gICAgICAgICAgICBjYW5jZWxQcm9taXNlXG4gICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5wdWJsaXNoKFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkVWRU5UX0NBTkNFTCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnQ2FuY2VsIGZhaWxlZCEnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KX1gLCAnT2snKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlamVjdENhc2UnOiB7XG4gICAgICAgICAgY29uc3QgcmVqZWN0UHJvbWlzZSA9IHRoaXMucmVqZWN0Q2FzZSh0aGlzLml0ZW1LZXkkKTtcblxuICAgICAgICAgIHJlamVjdFByb21pc2VcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHt9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYCR7dGhpcy5sb2NhbGl6ZWRWYWwoJ1JlamVjdGlvbiBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNCdXR0b25UeXBlID09ICdwcmltYXJ5Jykge1xuICAgICAgc3dpdGNoIChzQWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2ZpbmlzaEFzc2lnbm1lbnQnOlxuICAgICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdwdWJsaXNoJywgJycpO1xuICAgICAgICAgIGlmICh0aGlzLmZvcm1WYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmJSZUluaXQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UodHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCBmaW5pc2hQcm9taXNlID0gdGhpcy5maW5pc2hBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpOyAvLyBKQSAtIHdhcyBpdGVtSUQgYnV0IE5lYnVsYS9Db25zdGVsbGF0aW9uIHVzZXMgaXRlbUtleVxuICAgICAgICAgICAgZmluaXNoUHJvbWlzZVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcygpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYCR7dGhpcy5sb2NhbGl6ZWRWYWwoJ1N1Ym1pdCBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBsZXQgc25hY2tCYXJSZWYgPSB0aGlzLnNuYWNrQmFyLm9wZW4oXCJQbGVhc2UgZml4IGVycm9ycyBvbiBmb3JtLlwiLCAgXCJPa1wiKTtcbiAgICAgICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdzaG93JywgdGhpcy5sb2NhbGl6ZWRWYWwoJ1BsZWFzZSBmaXggZXJyb3JzIG9uIGZvcm0uJywgdGhpcy5sb2NhbGVDYXRlZ29yeSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdhcHByb3ZlQ2FzZSc6IHtcbiAgICAgICAgICBjb25zdCBhcHByb3ZlUHJvbWlzZSA9IHRoaXMuYXBwcm92ZUNhc2UodGhpcy5pdGVtS2V5JCk7XG5cbiAgICAgICAgICBhcHByb3ZlUHJvbWlzZVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge30pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnQXBwcm92ZSBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9ybVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHRoaXMudG91Y2hBbGwoKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAkLnZhbGlkO1xuICB9XG5cbiAgdG91Y2hBbGwoKTogdm9pZCB7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm1Hcm91cCQuY29udHJvbHMpLmZvckVhY2goKGNvbnRyb2w6IGFueSkgPT4ge1xuICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9uby1pZGVudGljYWwtZnVuY3Rpb25zXG4gIHRvcFZpZXdSZWZyZXNoKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtR3JvdXAkLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sOiBhbnkpID0+IHtcbiAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8ZGl2Pjxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJBbGVydEJhbm5lclwiIFtwcm9wc109XCJ7IGJhbm5lcnMgfVwiIFtwYXJlbnRdPVwidGhpc1wiPjwvY29tcG9uZW50LW1hcHBlcj48L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImJIYXNOYXZpZ2F0aW9uJFwiIGNsYXNzPVwicHNkay1zdGVwcGVyXCI+XG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJNdWx0aVN0ZXBcIlxuICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgcENvbm4kOiBuZXdQQ29ubiQsXG4gICAgICAgIGZvcm1Hcm91cCQsXG4gICAgICAgIGFyQ2hpbGRyZW4kLFxuICAgICAgICBhck1haW5CdXR0b25zJCxcbiAgICAgICAgYXJTZWNvbmRhcnlCdXR0b25zJCxcbiAgICAgICAgYklzVmVydGljYWwkLFxuICAgICAgICBhckN1cnJlbnRTdGVwSW5kaWNpZXMkLFxuICAgICAgICBhck5hdmlnYXRpb25TdGVwcyRcbiAgICAgIH1cIlxuICAgICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICAgIFtvdXRwdXRFdmVudHNdPVwieyBhY3Rpb25CdXR0b25DbGljazogb25BY3Rpb25CdXR0b25DbGljayB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFiSGFzTmF2aWdhdGlvbiRcIj5cbiAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgbmFtZT1cIkFzc2lnbm1lbnRDYXJkXCJcbiAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogbmV3UENvbm4kLCBmb3JtR3JvdXAkLCBhckNoaWxkcmVuJCwgYXJNYWluQnV0dG9ucyQsIGFyU2Vjb25kYXJ5QnV0dG9ucyQsIHVwZGF0ZVRva2VuJCB9XCJcbiAgICAgIFtwYXJlbnRdPVwidGhpc1wiXG4gICAgICBbb3V0cHV0RXZlbnRzXT1cInsgYWN0aW9uQnV0dG9uQ2xpY2s6IG9uQWN0aW9uQnV0dG9uQ2xpY2sgfVwiXG4gICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
382
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWdubWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvaW5mcmEvYXNzaWdubWVudC9hc3NpZ25tZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9hc3NpZ25tZW50L2Fzc2lnbm1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFVLFVBQVUsRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBSzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7O0FBY3hHLE1BQU0sT0FBTyxtQkFBbUI7SUFnRDlCLFlBQ1UsZUFBdUMsRUFDdkMsU0FBaUMsRUFDakMsU0FBK0IsRUFDL0IsTUFBYyxFQUNkLFFBQXFCO1FBSnJCLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUMvQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQTlDdEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUc1Qix1Q0FBdUM7UUFDdkMsd0JBQW1CLEdBQXdCLEVBQUUsQ0FBQztRQU05QyxpQkFBWSxHQUFHLEtBQUss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QUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNhc2UtZGVjbGFyYXRpb25zICovXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE5nWm9uZSwgZm9yd2FyZFJlZiwgT25EZXN0cm95LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRTbmFja0Jhck1vZHVsZSwgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXNzYWdlcy9lcnJvci1tZXNzYWdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2luZnJhL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBBc3NpZ25tZW50UHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoaXMgY29tcG9uZW50XG4gIHRlbXBsYXRlOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hc3NpZ25tZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2lnbm1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hc3NpZ25tZW50LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdFNuYWNrQmFyTW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIEFzc2lnbm1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgYXJDaGlsZHJlbiQ6IGFueVtdO1xuICBASW5wdXQoKSBpdGVtS2V5JDogc3RyaW5nO1xuICBASW5wdXQoKSBpc0NyZWF0ZVN0YWdlJDogYm9vbGVhbjtcbiAgQElucHV0KCkgdXBkYXRlVG9rZW4kOiBudW1iZXI7XG4gIEBJbnB1dCgpIGlzSW5Nb2RhbCQgPSBmYWxzZTtcbiAgQElucHV0KCkgYmFubmVycztcblxuICAvLyBGb3IgaW50ZXJhY3Rpb24gd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuICBjb25maWdQcm9wcyQ6IEFzc2lnbm1lbnRQcm9wcztcblxuICBuZXdQQ29ubiQ6IGFueTtcbiAgY29udGFpbmVyTmFtZSQ6IHN0cmluZztcblxuICBiSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICB0ZW1wbGF0ZU5hbWUkOiBzdHJpbmc7XG5cbiAgYXJNYWluQnV0dG9ucyQ6IGFueVtdO1xuICBhclNlY29uZGFyeUJ1dHRvbnMkOiBhbnlbXTtcblxuICBhY3Rpb25zQVBJOiBhbnk7XG5cbiAgYkhhc05hdmlnYXRpb24kID0gZmFsc2U7XG4gIGJJc1ZlcnRpY2FsJCA9IGZhbHNlO1xuICBhckN1cnJlbnRTdGVwSW5kaWNpZXMkOiBudW1iZXJbXSA9IFtdO1xuICBhck5hdmlnYXRpb25TdGVwcyQ6IGFueVtdID0gW107XG5cbiAgaW5pdDogYm9vbGVhbjtcbiAgZmluaXNoQXNzaWdubWVudDogYW55O1xuICBuYXZpZ2F0ZVRvU3RlcDogYW55O1xuICBzYXZlQXNzaWdubWVudDogYW55O1xuICBjYW5jZWxBc3NpZ25tZW50OiBhbnk7XG4gIGNhbmNlbENyZWF0ZVN0YWdlQXNzaWdubWVudDogYW55O1xuICBzaG93UGFnZTogYW55O1xuICBhcHByb3ZlQ2FzZTogYW55O1xuICByZWplY3RDYXNlOiBhbnk7XG5cbiAgLy8gaXRlbUtleTogc3RyaW5nID0gXCJcIjsgICAvLyBKQSAtIHRoaXMgaXMgd2hhdCBOZWJ1bGEvQ29uc3RlbGxhdGlvbiB1c2VzIHRvIHBhc3MgdG8gZmluaXNoQXNzaWdubWVudCwgbmF2aWdhdGVUb1N0ZXBcblxuICBiUmVJbml0ID0gZmFsc2U7XG4gIGxvY2FsaXplZFZhbDtcbiAgbG9jYWxlQ2F0ZWdvcnkgPSAnQXNzaWdubWVudCc7XG4gIGxvY2FsZVJlZmVyZW5jZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFuZ3VsYXJQQ29ubmVjdDogQW5ndWxhclBDb25uZWN0U2VydmljZSxcbiAgICBwcml2YXRlIHBzU2VydmljZTogUHJvZ3Jlc3NTcGlubmVyU2VydmljZSxcbiAgICBwcml2YXRlIGVyU2VydmljZTogRXJyb3JNZXNzYWdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhclxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcblxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIHRoaXMuYkluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB0aGlzLmxvY2FsaXplZFZhbCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWU7XG4gICAgdGhpcy5sb2NhbGVSZWZlcmVuY2UgPSBgJHt0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmdldENsYXNzTmFtZSgpfSFDQVNFISR7dGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5nZXROYW1lKCl9YC50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICAvLyAgICBBTkQgcmVtb3ZpbmcgdGhlIFwiZ2F0ZVwiIHRoYXQgd2FzIHB1dCB0aGVyZSBzaW5jZSBzaG91bGRDb21wb25lbnRVcGRhdGVcbiAgICAvLyAgICAgIHNob3VsZCBiZSB0aGUgcmVhbCBcImdhdGVcIlxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgbGV0IGxvYWRpbmdJbmZvO1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gbG9hZGluZ0luZm8gPSB0aGlzLnBDb25uJC5nZXRMb2FkaW5nU3RhdHVzKCk7XG4gICAgICAgIGxvYWRpbmdJbmZvID0gdGhpcy5uZXdQQ29ubiQuZ2V0TG9hZGluZ1N0YXR1cygpO1xuXG4gICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGxvYWRpbmdJbmZvKTtcbiAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgIC8qIGVtcHR5ICovXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuYkluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDaGFuZ2VzKCkge1xuICAgIC8vIHBDb25uJCBtYXkgYmUgYSAncmVmZXJlbmNlJyBjb21wb25lbnQsIHNvIG5vcm1hbGl6ZSBpdFxuICAgIHRoaXMubmV3UENvbm4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uKHRoaXMucENvbm4kKTtcblxuICAgIGlmICh0aGlzLmFyQ2hpbGRyZW4kKSB7XG4gICAgICB0aGlzLmNyZWF0ZUJ1dHRvbnMoKTtcbiAgICB9XG4gIH1cblxuICBpbml0Q29tcG9uZW50KCkge1xuICAgIC8vIHBDb25uJCBtYXkgYmUgYSAncmVmZXJlbmNlJyBjb21wb25lbnQsIHNvIG5vcm1hbGl6ZSBpdFxuICAgIC8vIHRoaXMucENvbm4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uKHRoaXMucENvbm4kKTtcbiAgICB0aGlzLm5ld1BDb25uJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubih0aGlzLnBDb25uJCk7XG5cbiAgICAvLyBwcmV2ZW50IHJlLWludGlhbGl6aW5nIHdpdGggZmxvd0NvbnRhaW5lciB1cGRhdGUgdW5sZXNzIGFuIGFjdGlvbiBpcyB0YWtlblxuICAgIHRoaXMuYlJlSW5pdCA9IGZhbHNlO1xuICAgIHRoaXMuYkhhc05hdmlnYXRpb24kID0gZmFsc2U7XG5cbiAgICAvLyB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKTtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMubmV3UENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLm5ld1BDb25uJC5nZXRDb25maWdQcm9wcygpKTtcblxuICAgIHRoaXMudGVtcGxhdGVOYW1lJCA9IHRoaXMuY29uZmlnUHJvcHMkLnRlbXBsYXRlO1xuXG4gICAgLy8gY3JlYXRlIHBvaW50ZXJzIHRvIGZ1bmN0aW9uc1xuICAgIC8qXG4gICAgbGV0IGNvbnRhaW5lck1nciA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck1hbmFnZXIoKTtcbiAgICBsZXQgYWN0aW9uc0FQSSA9IHRoaXMucENvbm4kLmdldEFjdGlvbnNBcGkoKTtcbiAgICBsZXQgYmFzZUNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGxldCBhY05hbWUgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG4gICAgKi9cblxuICAgIGNvbnN0IGFjdGlvbnNBUEkgPSB0aGlzLm5ld1BDb25uJC5nZXRBY3Rpb25zQXBpKCk7XG4gICAgY29uc3QgYmFzZUNvbnRleHQgPSB0aGlzLm5ld1BDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGNvbnN0IGFjTmFtZSA9IHRoaXMubmV3UENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcblxuICAgIC8vIGZvciBub3csIGluIGdlbmVyYWwgdGhpcyBzaG91bGQgYmUgb3ZlcnJpZGRlbiBieSB1cGRhdGVTZWxmKCksIGFuZCBub3QgYmUgYmxhbmtcbiAgICBpZiAodGhpcy5pdGVtS2V5JCA9PT0gJycpIHtcbiAgICAgIHRoaXMuaXRlbUtleSQgPSBiYXNlQ29udGV4dC5jb25jYXQoJy8nKS5jb25jYXQoYWNOYW1lKTtcbiAgICB9XG5cbiAgICAvLyB0aGlzLnBDb25uJC5pc0JvdW5kVG9TdGF0ZSgpO1xuICAgIHRoaXMubmV3UENvbm4kLmlzQm91bmRUb1N0YXRlKCk7XG5cbiAgICB0aGlzLmluaXQgPSBmYWxzZTtcblxuICAgIC8vIHN0b3JlIG9mZiBib3VuZCBmdW5jdGlvbnMgdG8gYWJvdmUgcG9pbnRlcnNcbiAgICB0aGlzLmZpbmlzaEFzc2lnbm1lbnQgPSBhY3Rpb25zQVBJLmZpbmlzaEFzc2lnbm1lbnQuYmluZChhY3Rpb25zQVBJKTtcbiAgICB0aGlzLm5hdmlnYXRlVG9TdGVwID0gYWN0aW9uc0FQSS5uYXZpZ2F0ZVRvU3RlcC5iaW5kKGFjdGlvbnNBUEkpO1xuICAgIHRoaXMuc2F2ZUFzc2lnbm1lbnQgPSBhY3Rpb25zQVBJLnNhdmVBc3NpZ25tZW50LmJpbmQoYWN0aW9uc0FQSSk7XG4gICAgdGhpcy5jYW5jZWxBc3NpZ25tZW50ID0gYWN0aW9uc0FQSS5jYW5jZWxBc3NpZ25tZW50LmJpbmQoYWN0aW9uc0FQSSk7XG4gICAgdGhpcy5zaG93UGFnZSA9IGFjdGlvbnNBUEkuc2hvd1BhZ2UuYmluZChhY3Rpb25zQVBJKTtcblxuICAgIHRoaXMuY2FuY2VsQ3JlYXRlU3RhZ2VBc3NpZ25tZW50ID0gYWN0aW9uc0FQSS5jYW5jZWxDcmVhdGVTdGFnZUFzc2lnbm1lbnQuYmluZChhY3Rpb25zQVBJKTtcbiAgICB0aGlzLmFwcHJvdmVDYXNlID0gYWN0aW9uc0FQSS5hcHByb3ZlQ2FzZT8uYmluZChhY3Rpb25zQVBJKTtcbiAgICB0aGlzLnJlamVjdENhc2UgPSBhY3Rpb25zQVBJLnJlamVjdENhc2U/LmJpbmQoYWN0aW9uc0FQSSk7XG5cbiAgICBpZiAodGhpcy5hckNoaWxkcmVuJCkge1xuICAgICAgdGhpcy5jcmVhdGVCdXR0b25zKCk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlQnV0dG9ucygpIHtcbiAgICAvLyBsZXQgb0RhdGEgPSB0aGlzLnBDb25uJC5nZXREYXRhT2JqZWN0KCk7XG4gICAgY29uc3Qgb0RhdGEgPSB0aGlzLm5ld1BDb25uJC5nZXREYXRhT2JqZWN0KCk7XG5cbiAgICAvLyBpbnNpZGVcbiAgICAvLyBnZXQgZmlzdCBraWQsIGdldCB0aGUgbmFtZSBhbmQgZGlzcGxhXG4gICAgLy8gcGFzcyBmaXJzdCBraWQgdG8gYSB2aWV3IGNvbnRhaW5lciwgd2hpY2ggd2lsbCBkaXNwZXJzZSBpdCB0byBhIHZpZXcgd2hpY2ggd2lsbCB1c2Ugb25lIGNvbHVtbiwgdHdvIGNvbHVtbiwgZXRjLlxuICAgIGNvbnN0IG9Xb3JrSXRlbSA9IHRoaXMuYXJDaGlsZHJlbiRbMF0uZ2V0UENvbm5lY3QoKTtcbiAgICBjb25zdCBvV29ya0RhdGEgPSBvV29ya0l0ZW0uZ2V0RGF0YU9iamVjdCgpO1xuXG4gICAgaWYgKG9Xb3JrRGF0YSkge1xuICAgICAgdGhpcy5hY3Rpb25zQVBJID0gb1dvcmtJdGVtLmdldEFjdGlvbnNBcGkoKTtcblxuICAgICAgLy8gdGhpcy5jb250YWluZXJOYW1lJCA9IG9Xb3JrTWV0YVtcIm5hbWVcIl07XG5cbiAgICAgIGlmIChvV29ya0RhdGEuY2FzZUluZm8gJiYgb1dvcmtEYXRhLmNhc2VJbmZvLmFzc2lnbm1lbnRzICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyTmFtZSQgPSBvV29ya0RhdGEuY2FzZUluZm8uYXNzaWdubWVudHM/LlswXS5uYW1lO1xuXG4gICAgICAgIC8vIGdldCBjYXNlSW5mb1xuICAgICAgICBjb25zdCBvQ2FzZUluZm8gPSBvRGF0YS5jYXNlSW5mbztcblxuICAgICAgICBpZiAob0Nhc2VJbmZvICYmIG9DYXNlSW5mby5hY3Rpb25CdXR0b25zKSB7XG4gICAgICAgICAgdGhpcy5hck1haW5CdXR0b25zJCA9IG9DYXNlSW5mby5hY3Rpb25CdXR0b25zLm1haW47XG4gICAgICAgICAgdGhpcy5hclNlY29uZGFyeUJ1dHRvbnMkID0gb0Nhc2VJbmZvLmFjdGlvbkJ1dHRvbnMuc2Vjb25kYXJ5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9DYXNlSW5mby5uYXZpZ2F0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmNyZWF0ZUJ1dHRvbnNGb3JNdWx0aVN0ZXBGb3JtKG9DYXNlSW5mbyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5iSGFzTmF2aWdhdGlvbiQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUJ1dHRvbnNGb3JNdWx0aVN0ZXBGb3JtKG9DYXNlSW5mbykge1xuICAgIHRoaXMuYkhhc05hdmlnYXRpb24kID0gdHJ1ZTtcblxuICAgIGlmICgob0Nhc2VJbmZvLm5hdmlnYXRpb24udGVtcGxhdGUgJiYgb0Nhc2VJbmZvLm5hdmlnYXRpb24udGVtcGxhdGUudG9Mb3dlckNhc2UoKSA9PT0gJ3N0YW5kYXJkJykgfHwgb0Nhc2VJbmZvPy5uYXZpZ2F0aW9uPy5zdGVwcz8ubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLmJIYXNOYXZpZ2F0aW9uJCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAob0Nhc2VJbmZvLm5hdmlnYXRpb24udGVtcGxhdGUgJiYgb0Nhc2VJbmZvLm5hdmlnYXRpb24udGVtcGxhdGUudG9Mb3dlckNhc2UoKSA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgdGhpcy5iSXNWZXJ0aWNhbCQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJJc1ZlcnRpY2FsJCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGl0ZXJhdGUgdGhyb3VnaCBzdGVwcyB0byBmaW5kIGN1cnJlbnQgb25lKHMpXG4gICAgLy8gaW1tdXRhYmxlLCBzbyB3ZSB3YW50IHRvIGNoYW5nZSB0aGUgbG9jYWwgY29weSwgc28gbmVlZCB0byBtYWtlIGEgY29weVxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAvLyB3aGF0IGNvbWVzIGJhY2sgbm93IGluIGNvbmZpZ09iamVjdCBpcyB0aGUgY2hpbGRyZW4gb2YgdGhlIGZsb3dDb250YWluZXJcbiAgICAgIHRoaXMuYXJOYXZpZ2F0aW9uU3RlcHMkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvQ2FzZUluZm8ubmF2aWdhdGlvbi5zdGVwcykpO1xuICAgICAgdGhpcy5hck5hdmlnYXRpb25TdGVwcyQuZm9yRWFjaChzdGVwID0+IHtcbiAgICAgICAgaWYgKHN0ZXAubmFtZSkge1xuICAgICAgICAgIHN0ZXAubmFtZSA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWUoc3RlcC5uYW1lLCB1bmRlZmluZWQsIHRoaXMubG9jYWxlUmVmZXJlbmNlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmFyQ3VycmVudFN0ZXBJbmRpY2llcyQgPSBbXTtcbiAgICAgIHRoaXMuYXJDdXJyZW50U3RlcEluZGljaWVzJCA9IHRoaXMuZmluZEN1cnJlbnRJbmRpY2llcyh0aGlzLmFyTmF2aWdhdGlvblN0ZXBzJCwgdGhpcy5hckN1cnJlbnRTdGVwSW5kaWNpZXMkLCAwKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZpbmRDdXJyZW50SW5kaWNpZXMoYXJTdGVwcGVyU3RlcHM6IGFueVtdLCBhckluZGljaWVzOiBudW1iZXJbXSwgZGVwdGg6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGFyU3RlcHBlclN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICBpZiAoc3RlcC52aXNpdGVkX3N0YXR1cyA9PSAnY3VycmVudCcpIHtcbiAgICAgICAgYXJJbmRpY2llc1tkZXB0aF0gPSBjb3VudDtcblxuICAgICAgICAvLyBhZGQgaW5cbiAgICAgICAgc3RlcC5zdGVwX3N0YXR1cyA9ICcnO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLnZpc2l0ZWRfc3RhdHVzID09ICdzdWNjZXNzJykge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgICBzdGVwLnN0ZXBfc3RhdHVzID0gJ2NvbXBsZXRlZCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgICBzdGVwLnN0ZXBfc3RhdHVzID0gJyc7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGVwLnN0ZXBzKSB7XG4gICAgICAgIGFySW5kaWNpZXMgPSB0aGlzLmZpbmRDdXJyZW50SW5kaWNpZXMoc3RlcC5zdGVwcywgYXJJbmRpY2llcywgZGVwdGggKyAxKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhckluZGljaWVzO1xuICB9XG5cbiAgb25TYXZlQWN0aW9uU3VjY2VzcyhkYXRhKSB7XG4gICAgdGhpcy5hY3Rpb25zQVBJLmNhbmNlbEFzc2lnbm1lbnQodGhpcy5pdGVtS2V5JCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnB1Ymxpc2goUENvcmUuZ2V0Q29uc3RhbnRzKCkuUFVCX1NVQl9FVkVOVFMuQ0FTRV9FVkVOVFMuQ1JFQVRFX1NUQUdFX1NBVkVELCBkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uQWN0aW9uQnV0dG9uQ2xpY2sob0RhdGE6IGFueSkge1xuICAgIHRoaXMuYnV0dG9uQ2xpY2sob0RhdGEuYWN0aW9uLCBvRGF0YS5idXR0b25UeXBlKTtcbiAgfVxuXG4gIGJ1dHRvbkNsaWNrKHNBY3Rpb24sIHNCdXR0b25UeXBlKSB7XG4gICAgLy8gcmlnaHQgbm93LCBkb25lIG9uIGFuIGluZGl2aWR1YWwgYmFzaXMsIHNldHRpbmcgYlJlSW5pdCB0byB0cnVlXG4gICAgLy8gdXBvbiB0aGUgbmV4dCBmbG93IGNvbnRhaW5lciBzdGF0ZSBjaGFuZ2UsIHdpbGwgY2F1c2UgdGhlIGZsb3cgY29udGFpbmVyXG4gICAgLy8gdG8gcmUtaW5pdGlhbGl6ZVxuICAgIC8vIHRoaXMuYlJlSW5pdCA9dHJ1ZTtcblxuICAgIC8qXG4gICAgbGV0IGJhc2VDb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBsZXQgYWNOYW1lID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuICAgIGxldCBpdGVtSUQgPSBiYXNlQ29udGV4dC5jb25jYXQoXCIvXCIpLmNvbmNhdChhY05hbWUpO1xuICAgICovXG5cbiAgICAvLyBjb25zdCBiYXNlQ29udGV4dCA9IHRoaXMubmV3UENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgLy8gY29uc3QgYWNOYW1lID0gdGhpcy5uZXdQQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuICAgIC8vIGNvbnN0IGl0ZW1JRCA9IGJhc2VDb250ZXh0LmNvbmNhdCgnLycpLmNvbmNhdChhY05hbWUpO1xuXG4gICAgaWYgKHNCdXR0b25UeXBlID09ICdzZWNvbmRhcnknKSB7XG4gICAgICAvLyBjb25zdCBzdGVwSUQgPSAnJzsgLy8gPz8/XG5cbiAgICAgIC8vIG5lZWQgdG8gaGFuZGxlIGNhbmNlbCBhcyB0aGlzLmNhbmNlbChkaXNwYXRjaEluZm8pXG4gICAgICAvLyB0aGlzLmFjdGlvbnNBUElbc0FjdGlvbl0oZGlzcGF0Y2hJbmZvKTtcbiAgICAgIHN3aXRjaCAoc0FjdGlvbikge1xuICAgICAgICBjYXNlICduYXZpZ2F0ZVRvU3RlcCc6XG4gICAgICAgICAgdGhpcy5lclNlcnZpY2Uuc2VuZE1lc3NhZ2UoJ3B1Ymxpc2gnLCAnJyk7XG4gICAgICAgICAgaWYgKHRoaXMuZm9ybVZhbGlkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuYlJlSW5pdCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZSh0cnVlKTtcblxuICAgICAgICAgICAgY29uc3QgbmF2aWdhdGVQcm9taXNlID0gdGhpcy5uYXZpZ2F0ZVRvU3RlcCgncHJldmlvdXMnLCB0aGlzLml0ZW1LZXkkKTtcbiAgICAgICAgICAgIG5hdmlnYXRlUHJvbWlzZVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYCR7dGhpcy5sb2NhbGl6ZWRWYWwoJ05hdmlnYXRpb24gZmFpbGVkIScsIHRoaXMubG9jYWxlQ2F0ZWdvcnkpfWAsICdPaycpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnc2F2ZUFzc2lnbm1lbnQnOiB7XG4gICAgICAgICAgY29uc3QgY2FzZUlEID0gdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5nZXRLZXkoKTtcbiAgICAgICAgICBjb25zdCBhc3NpZ25tZW50SUQgPSB0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmdldEFzc2lnbm1lbnRJRCgpO1xuICAgICAgICAgIGNvbnN0IHNhdmVQcm9taXNlID0gdGhpcy5zYXZlQXNzaWdubWVudCh0aGlzLml0ZW1LZXkkKTtcblxuICAgICAgICAgIHNhdmVQcm9taXNlXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNhc2VUeXBlID0gdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5jMTFuRW52LmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX1RZUEVfSUQpO1xuICAgICAgICAgICAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnB1Ymxpc2goJ2NhbmNlbFByZXNzZWQnKTtcbiAgICAgICAgICAgICAgdGhpcy5vblNhdmVBY3Rpb25TdWNjZXNzKHsgY2FzZVR5cGUsIGNhc2VJRCwgYXNzaWdubWVudElEIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGAke3RoaXMubG9jYWxpemVkVmFsKCdTYXZlIGZhaWxlZCcsIHRoaXMubG9jYWxlQ2F0ZWdvcnkpfWAsICdPaycpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ2NhbmNlbEFzc2lnbm1lbnQnOlxuICAgICAgICAgIHRoaXMuYlJlSW5pdCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5lclNlcnZpY2Uuc2VuZE1lc3NhZ2UoJ2Rpc21pc3MnLCAnJyk7XG4gICAgICAgICAgY29uc3QgaXNBc3NpZ25tZW50SW5DcmVhdGVTdGFnZSA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuaXNBc3NpZ25tZW50SW5DcmVhdGVTdGFnZSgpO1xuICAgICAgICAgIGNvbnN0IGlzTG9jYWxBY3Rpb24gPVxuICAgICAgICAgICAgdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5pc0xvY2FsQWN0aW9uKCkgfHxcbiAgICAgICAgICAgIChQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uSVNfTE9DQUxfQUNUSU9OICYmIHRoaXMucENvbm4kLmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5JU19MT0NBTF9BQ1RJT04pKTtcbiAgICAgICAgICAvLyBjaGVjayBpZiBjcmVhdGUgc3RhZ2UgKG1vZGFsKVxuICAgICAgICAgIGlmIChpc0Fzc2lnbm1lbnRJbkNyZWF0ZVN0YWdlICYmIHRoaXMuaXNJbk1vZGFsJCAmJiAhaXNMb2NhbEFjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHRoaXMuY2FuY2VsQ3JlYXRlU3RhZ2VBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpO1xuICAgICAgICAgICAgY2FuY2VsUHJvbWlzZVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIC8vIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaChcbiAgICAgICAgICAgICAgICAvLyAgIFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkVWRU5UX0NBTkNFTCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnQ2FuY2VsIGZhaWxlZCEnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KX1gLCAnT2snKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKHRydWUpO1xuXG4gICAgICAgICAgICAvLyBwdWJsaXNoIGJlZm9yZSBjYW5jZWwgcHJlc3NlZCwgYmVjYXVzZVxuICAgICAgICAgICAgLy8gY2FuY2VsIGFzc2lnbm1lbnQgaGFwcGVucyBcImFmdGVyXCIgY2FuY2VsIGFzc2lnbm1lbnQgaGFwcGVuc1xuICAgICAgICAgICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5wdWJsaXNoKCdjYW5jZWxQcmVzc2VkJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNhbmNlbFByb21pc2UgPSB0aGlzLmNhbmNlbEFzc2lnbm1lbnQodGhpcy5pdGVtS2V5JCk7XG4gICAgICAgICAgICBjYW5jZWxQcm9taXNlXG4gICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5wdWJsaXNoKFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkVWRU5UX0NBTkNFTCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnQ2FuY2VsIGZhaWxlZCEnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KX1gLCAnT2snKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlamVjdENhc2UnOiB7XG4gICAgICAgICAgY29uc3QgcmVqZWN0UHJvbWlzZSA9IHRoaXMucmVqZWN0Q2FzZSh0aGlzLml0ZW1LZXkkKTtcblxuICAgICAgICAgIHJlamVjdFByb21pc2VcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHt9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYCR7dGhpcy5sb2NhbGl6ZWRWYWwoJ1JlamVjdGlvbiBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNCdXR0b25UeXBlID09ICdwcmltYXJ5Jykge1xuICAgICAgc3dpdGNoIChzQWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2ZpbmlzaEFzc2lnbm1lbnQnOlxuICAgICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdwdWJsaXNoJywgJycpO1xuICAgICAgICAgIGlmICh0aGlzLmZvcm1WYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmJSZUluaXQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UodHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCBmaW5pc2hQcm9taXNlID0gdGhpcy5maW5pc2hBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpOyAvLyBKQSAtIHdhcyBpdGVtSUQgYnV0IE5lYnVsYS9Db25zdGVsbGF0aW9uIHVzZXMgaXRlbUtleVxuICAgICAgICAgICAgZmluaXNoUHJvbWlzZVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcygpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYCR7dGhpcy5sb2NhbGl6ZWRWYWwoJ1N1Ym1pdCBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBsZXQgc25hY2tCYXJSZWYgPSB0aGlzLnNuYWNrQmFyLm9wZW4oXCJQbGVhc2UgZml4IGVycm9ycyBvbiBmb3JtLlwiLCAgXCJPa1wiKTtcbiAgICAgICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdzaG93JywgdGhpcy5sb2NhbGl6ZWRWYWwoJ1BsZWFzZSBmaXggZXJyb3JzIG9uIGZvcm0uJywgdGhpcy5sb2NhbGVDYXRlZ29yeSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdhcHByb3ZlQ2FzZSc6IHtcbiAgICAgICAgICBjb25zdCBhcHByb3ZlUHJvbWlzZSA9IHRoaXMuYXBwcm92ZUNhc2UodGhpcy5pdGVtS2V5JCk7XG5cbiAgICAgICAgICBhcHByb3ZlUHJvbWlzZVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge30pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnQXBwcm92ZSBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9ybVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHRoaXMudG91Y2hBbGwoKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAkLnZhbGlkO1xuICB9XG5cbiAgdG91Y2hBbGwoKTogdm9pZCB7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm1Hcm91cCQuY29udHJvbHMpLmZvckVhY2goKGNvbnRyb2w6IGFueSkgPT4ge1xuICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9uby1pZGVudGljYWwtZnVuY3Rpb25zXG4gIHRvcFZpZXdSZWZyZXNoKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtR3JvdXAkLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sOiBhbnkpID0+IHtcbiAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8ZGl2Pjxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJBbGVydEJhbm5lclwiIFtwcm9wc109XCJ7IGJhbm5lcnMgfVwiIFtwYXJlbnRdPVwidGhpc1wiPjwvY29tcG9uZW50LW1hcHBlcj48L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImJIYXNOYXZpZ2F0aW9uJFwiIGNsYXNzPVwicHNkay1zdGVwcGVyXCI+XG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJNdWx0aVN0ZXBcIlxuICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgcENvbm4kOiBuZXdQQ29ubiQsXG4gICAgICAgIGZvcm1Hcm91cCQsXG4gICAgICAgIGFyQ2hpbGRyZW4kLFxuICAgICAgICBhck1haW5CdXR0b25zJCxcbiAgICAgICAgYXJTZWNvbmRhcnlCdXR0b25zJCxcbiAgICAgICAgYklzVmVydGljYWwkLFxuICAgICAgICBhckN1cnJlbnRTdGVwSW5kaWNpZXMkLFxuICAgICAgICBhck5hdmlnYXRpb25TdGVwcyRcbiAgICAgIH1cIlxuICAgICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICAgIFtvdXRwdXRFdmVudHNdPVwieyBhY3Rpb25CdXR0b25DbGljazogb25BY3Rpb25CdXR0b25DbGljayB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFiSGFzTmF2aWdhdGlvbiRcIj5cbiAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgbmFtZT1cIkFzc2lnbm1lbnRDYXJkXCJcbiAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogbmV3UENvbm4kLCBmb3JtR3JvdXAkLCBhckNoaWxkcmVuJCwgYXJNYWluQnV0dG9ucyQsIGFyU2Vjb25kYXJ5QnV0dG9ucyQsIHVwZGF0ZVRva2VuJCB9XCJcbiAgICAgIFtwYXJlbnRdPVwidGhpc1wiXG4gICAgICBbb3V0cHV0RXZlbnRzXT1cInsgYWN0aW9uQnV0dG9uQ2xpY2s6IG9uQWN0aW9uQnV0dG9uQ2xpY2sgfVwiXG4gICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -23,10 +23,10 @@ export class AssignmentCardComponent {
|
|
|
23
23
|
onActionButtonClick(oData) {
|
|
24
24
|
this.actionButtonClick.emit(oData);
|
|
25
25
|
}
|
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
27
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: AssignmentCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: AssignmentCardComponent, isStandalone: true, selector: "app-assignment-card", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", arMainButtons$: "arMainButtons$", arSecondaryButtons$: "arSecondaryButtons$", arChildren$: "arChildren$", updateToken$: "updateToken$" }, outputs: { actionButtonClick: "actionButtonClick" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"formGroup$\" name=\"flowContainer\" class=\"psdk-flow-container\">\n <div *ngFor=\"let kid of arChildren$\">\n <div [ngSwitch]=\"kid.getPConnect().getComponentName()\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <component-mapper\n *ngSwitchCase=\"'CaseCreateStage'\"\n name=\"CaseCreateStage\"\n [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"\n ></component-mapper>\n <component-mapper *ngSwitchCase=\"'Region'\" name=\"Region\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <div *ngSwitchDefault>Assignment Card wants component not yet available: {{ kid.getPConnect().getComponentName() }}</div>\n </div>\n </div>\n</form>\n\n<div>\n <br />\n <div class=\"psdk-case-view-divider\"></div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$, arSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n</div>\n", styles: [".psdk-case-view-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-flow-container{padding:0rem 1rem}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgSwitch), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgSwitchCase), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgSwitchDefault), selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: i0.forwardRef(() => ReactiveFormsModule) }, { kind: "directive", type: i0.forwardRef(() => i2.ɵNgNoValidate), selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i0.forwardRef(() => i2.NgControlStatusGroup), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i0.forwardRef(() => i2.FormGroupDirective), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
28
28
|
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: AssignmentCardComponent, decorators: [{
|
|
30
30
|
type: Component,
|
|
31
31
|
args: [{ selector: 'app-assignment-card', standalone: true, imports: [CommonModule, ReactiveFormsModule, forwardRef(() => ComponentMapperComponent)], template: "<form [formGroup]=\"formGroup$\" name=\"flowContainer\" class=\"psdk-flow-container\">\n <div *ngFor=\"let kid of arChildren$\">\n <div [ngSwitch]=\"kid.getPConnect().getComponentName()\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <component-mapper\n *ngSwitchCase=\"'CaseCreateStage'\"\n name=\"CaseCreateStage\"\n [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"\n ></component-mapper>\n <component-mapper *ngSwitchCase=\"'Region'\" name=\"Region\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <div *ngSwitchDefault>Assignment Card wants component not yet available: {{ kid.getPConnect().getComponentName() }}</div>\n </div>\n </div>\n</form>\n\n<div>\n <br />\n <div class=\"psdk-case-view-divider\"></div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$, arSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n</div>\n", styles: [".psdk-case-view-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-flow-container{padding:0rem 1rem}\n"] }]
|
|
32
32
|
}], propDecorators: { pConn$: [{
|
|
@@ -61,10 +61,10 @@ export class DashboardFilterComponent {
|
|
|
61
61
|
};
|
|
62
62
|
PCore.getPubSubUtils().publish(PCore.getConstants().PUB_SUB_EVENTS.EVENT_DASHBOARD_FILTER_CHANGE, filterData);
|
|
63
63
|
}
|
|
64
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
65
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
64
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DashboardFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
65
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: DashboardFilterComponent, isStandalone: true, selector: "app-dashboard-filter", inputs: { pConn$: "pConn$", filtersFormGroup$: "filtersFormGroup$", inlineProps: "inlineProps", children: "children" }, ngImport: i0, template: "<div\n [ngClass]=\"{\n 'psdk-block-style': inlineProps.filterPosition === 'block-start'\n }\"\n>\n <div *ngFor=\"let kid of children\">\n <div *ngIf=\"kid.type === 'DateTime'\" [formGroup]=\"filtersFormGroup$\">\n <mat-form-field class=\"psdk-full-width\">\n <mat-label>{{ kid.label }}</mat-label>\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate placeholder=\"Start date\" formControlName=\"start\" />\n <input matEndDate placeholder=\"End date\" formControlName=\"end\" (dateChange)=\"dateRangeChangeHandler(kid)\" />\n </mat-date-range-input>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n </mat-form-field>\n </div>\n <div *ngIf=\"kid.c11nEnv\">\n <span (input)=\"updateTmpData({ event: $event, field: kid })\">\n <component-mapper\n [name]=\"kid.c11nEnv.getPConnect().getComponentName()\"\n [props]=\"{\n pConn$: kid.c11nEnv.getPConnect(),\n formGroup$: filtersFormGroup$\n }\"\n errorMsg=\"Dashboard filter wants component not yet available: {{ kid.c11nEnv.getPConnect().getComponentName() }}\"\n >\n </component-mapper>\n </span>\n </div>\n </div>\n <div>\n <button mat-button color=\"primary\" (click)=\"clearFilters()\">Clear All</button>\n </div>\n</div>\n", styles: [".psdk-full-width{width:100%}.psdk-block-style{display:grid;direction:column-reverse;gap:1rem;grid-template-columns:repeat(7,1fr)}::ng-deep .mat-mdc-form-field-subscript-wrapper{height:0}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatFormFieldModule) }, { kind: "component", type: i0.forwardRef(() => i2.MatFormField), selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i0.forwardRef(() => i2.MatLabel), selector: "mat-label" }, { kind: "directive", type: i0.forwardRef(() => i2.MatSuffix), selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: i0.forwardRef(() => ReactiveFormsModule) }, { kind: "directive", type: i0.forwardRef(() => i3.DefaultValueAccessor), selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i0.forwardRef(() => i3.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i3.NgControlStatusGroup), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i0.forwardRef(() => i3.FormGroupDirective), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i0.forwardRef(() => i3.FormControlName), selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatDatepickerModule) }, { kind: "component", type: i0.forwardRef(() => i4.MatDatepickerToggle), selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i0.forwardRef(() => i4.MatDateRangeInput), selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i0.forwardRef(() => i4.MatStartDate), selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i0.forwardRef(() => i4.MatEndDate), selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i0.forwardRef(() => i4.MatDateRangePicker), selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatButtonModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatButton), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatNativeDateModule) }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
66
66
|
}
|
|
67
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DashboardFilterComponent, decorators: [{
|
|
68
68
|
type: Component,
|
|
69
69
|
args: [{ selector: 'app-dashboard-filter', standalone: true, imports: [
|
|
70
70
|
CommonModule,
|