@sapui5/sap.fe.macros 1.141.2 → 1.142.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +4 -10
- package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
- package/src/sap/fe/macros/Chart.js +34 -23
- package/src/sap/fe/macros/Chart.tsx +25 -11
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +48 -31
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +51 -26
- package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
- package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
- package/src/sap/fe/macros/CommonHelper.js +14 -24
- package/src/sap/fe/macros/CommonHelper.ts +18 -25
- package/src/sap/fe/macros/Field.js +34 -17
- package/src/sap/fe/macros/Field.ts +64 -32
- package/src/sap/fe/macros/FooterContent.js +7 -3
- package/src/sap/fe/macros/FooterContent.tsx +8 -13
- package/src/sap/fe/macros/KPITag.js +1 -1
- package/src/sap/fe/macros/KPITag.tsx +3 -1
- package/src/sap/fe/macros/MacroAPI.js +3 -2
- package/src/sap/fe/macros/MacroAPI.ts +2 -2
- package/src/sap/fe/macros/MessageButton.js +4 -3
- package/src/sap/fe/macros/MessageButton.tsx +7 -3
- package/src/sap/fe/macros/MicroChart.js +10 -6
- package/src/sap/fe/macros/MicroChart.tsx +8 -2
- package/src/sap/fe/macros/MultiValueField.js +22 -36
- package/src/sap/fe/macros/MultiValueField.tsx +34 -66
- package/src/sap/fe/macros/Page.js +8 -4
- package/src/sap/fe/macros/Page.tsx +13 -4
- package/src/sap/fe/macros/RichTextEditor.js +14 -17
- package/src/sap/fe/macros/RichTextEditor.tsx +12 -16
- package/src/sap/fe/macros/Status.js +35 -8
- package/src/sap/fe/macros/Status.tsx +23 -2
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
- package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
- package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
- package/src/sap/fe/macros/chart/Action.js +37 -2
- package/src/sap/fe/macros/chart/Action.ts +21 -0
- package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
- package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/chart/ChartDelegate.js +19 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +36 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +59 -14
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +81 -31
- package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
- package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
- package/src/sap/fe/macros/controls/FilterBar.js +39 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +50 -2
- package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
- package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
- package/src/sap/fe/macros/controls/TextLink.js +15 -1
- package/src/sap/fe/macros/controls/TextLink.tsx +19 -0
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +46 -13
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +51 -10
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +3 -3
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
- package/src/sap/fe/macros/field/FieldHelper.js +4 -3
- package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
- package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
- package/src/sap/fe/macros/field/FieldRuntimeHelper.js +6 -35
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +35 -60
- package/src/sap/fe/macros/field/FieldTemplating.js +10 -4
- package/src/sap/fe/macros/field/FieldTemplating.ts +12 -5
- package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +100 -36
- package/src/sap/fe/macros/filter/FilterUtils.ts +127 -39
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +13 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +29 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +10 -7
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +31 -16
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/form/Form.block.js +27 -2
- package/src/sap/fe/macros/form/Form.block.ts +31 -11
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +104 -72
- package/src/sap/fe/macros/form/FormContainer.block.ts +114 -72
- package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
- package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
- package/src/sap/fe/macros/insights/InsightsService.js +3 -2
- package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
- package/src/sap/fe/macros/internal/DataPoint.js +7 -8
- package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
- package/src/sap/fe/macros/internal/field/EditStyle.js +18 -24
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +24 -44
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
- package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
- package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +44 -12
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +42 -11
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +54 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +59 -0
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
- package/src/sap/fe/macros/library.js +5 -6
- package/src/sap/fe/macros/{library.ts → library.tsx} +3 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/messagebundle.properties +13 -5
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
- package/src/sap/fe/macros/messagebundle_da.properties +12 -3
- package/src/sap/fe/macros/messagebundle_de.properties +16 -7
- package/src/sap/fe/macros/messagebundle_el.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
- package/src/sap/fe/macros/messagebundle_et.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
- package/src/sap/fe/macros/messagebundle_id.properties +18 -9
- package/src/sap/fe/macros/messagebundle_it.properties +12 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
- package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_no.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
- package/src/sap/fe/macros/messages/MessageButton.js +21 -12
- package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +4 -3
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +5 -2
- package/src/sap/fe/macros/quickView/QuickView.js +5 -4
- package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
- package/src/sap/fe/macros/table/Action.js +15 -2
- package/src/sap/fe/macros/table/Action.ts +11 -1
- package/src/sap/fe/macros/table/ActionGroup.js +15 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +21 -6
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +19 -4
- package/src/sap/fe/macros/table/MdcTableTemplate.js +113 -15
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +162 -14
- package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
- package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
- package/src/sap/fe/macros/table/Table.block.js +72 -29
- package/src/sap/fe/macros/table/Table.block.tsx +71 -15
- package/src/sap/fe/macros/table/TableAPI.js +213 -154
- package/src/sap/fe/macros/table/TableAPI.ts +116 -60
- package/src/sap/fe/macros/table/TableDefinition.js +19 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +17 -1
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +8 -5
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +14 -12
- package/src/sap/fe/macros/table/TableHelper.js +5 -2
- package/src/sap/fe/macros/table/TableHelper.ts +5 -2
- package/src/sap/fe/macros/table/TableRuntime.js +2 -2
- package/src/sap/fe/macros/table/TableRuntime.ts +4 -6
- package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
- package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +69 -28
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +111 -122
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +2 -2
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +6 -5
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +10 -4
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
- package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
- package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +6 -6
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +5 -5
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +5 -3
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +7 -4
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/collaboration/CollaborationCommon", "sap/fe/core/controllerextensions/editFlow/draft", "sap/fe/core/helpers/KeepAliveHelper", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/ResourceModelHelper", "sap/m/IllustratedMessage", "sap/m/IllustratedMessageSize", "sap/m/IllustratedMessageType", "sap/m/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/collaboration/CollaborationCommon", "sap/fe/core/controllerextensions/editFlow/draft", "sap/fe/core/helpers/KeepAliveHelper", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/ResourceModelHelper", "sap/m/IllustratedMessage", "sap/m/IllustratedMessageSize", "sap/m/IllustratedMessageType", "sap/m/MessageBox", "sap/m/ResponsivePopover", "sap/m/library", "sap/ui/Device", "sap/ui/core/IconPool", "sap/ui/util/openWindow", "../controls/FieldWrapper", "../internal/helpers/Upload"], function (Log, CommonUtils, CollaborationCommon, draft, KeepAliveHelper, ModelHelper, ResourceModelHelper, IllustratedMessage, IllustratedMessageSize, IllustratedMessageType, MessageBox, ResponsivePopover, mobilelibrary, Device, IconPool, openWindow, FieldWrapper, Upload) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var showTypeMismatchDialog = Upload.showTypeMismatchDialog;
|
|
@@ -10,7 +10,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
10
10
|
var setHeaderFields = Upload.setHeaderFields;
|
|
11
11
|
var displayMessageForFailedUpload = Upload.displayMessageForFailedUpload;
|
|
12
12
|
var getResourceModel = ResourceModelHelper.getResourceModel;
|
|
13
|
-
var getActivityKeyFromPath = CollaborationCommon.getActivityKeyFromPath;
|
|
14
13
|
var Activity = CollaborationCommon.Activity;
|
|
15
14
|
const FieldRuntimeHelper = {
|
|
16
15
|
uploadPromises: {},
|
|
@@ -75,7 +74,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
75
74
|
if (oSourceField.isA(FieldWrapper.getMetadata().getName()) && oSourceField.getEditMode() === "Editable") {
|
|
76
75
|
oSourceField = oSourceField.getContentEdit()[0];
|
|
77
76
|
}
|
|
78
|
-
if (oSourceField
|
|
77
|
+
if (oSourceField?.isA("sap.ui.mdc.Field")) {
|
|
79
78
|
let bIsValid = oEvent.getParameter("valid") || oEvent.getParameter("isValid");
|
|
80
79
|
if (bIsValid === undefined) {
|
|
81
80
|
if (oSourceField.getMaxConditions() === 1) {
|
|
@@ -469,8 +468,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
469
468
|
const viewData = view.getViewData();
|
|
470
469
|
const draftRootPath = ModelHelper.getDraftRootPath(bindingContext) ?? bindingContext.getPath();
|
|
471
470
|
let urlNavigation = await controller._routing.getHashForNavigation(bindingContext, navPath);
|
|
471
|
+
const isStickyMode = ModelHelper.isStickySessionSupported(bindingContext.getModel().getMetaModel()),
|
|
472
|
+
isHiddenDraftEnabled = controller.getAppComponent().getEnvironmentCapabilities().getCapabilities().HiddenDraft?.enabled || false;
|
|
472
473
|
const navigateFn = () => {
|
|
473
|
-
controller.getAppComponent().getRouterProxy().navToHash(urlNavigation, true, false, false,
|
|
474
|
+
controller.getAppComponent().getRouterProxy().navToHash(urlNavigation, true, false, false, isStickyMode || isHiddenDraftEnabled);
|
|
474
475
|
};
|
|
475
476
|
|
|
476
477
|
// To know if we're navigating on the same OP Entity
|
|
@@ -488,38 +489,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
488
489
|
} else {
|
|
489
490
|
Log.error("FieldRuntime: No routing listener controller extension found. Internal navigation aborted.", "sap.fe.macros.field.FieldRuntime", "onDataFieldWithNavigationPath");
|
|
490
491
|
}
|
|
491
|
-
},
|
|
492
|
-
/**
|
|
493
|
-
* Event handler to create and show who is editing the field popover.
|
|
494
|
-
* @param source The avatar which is next to the field locked
|
|
495
|
-
* @param view Current view
|
|
496
|
-
*/
|
|
497
|
-
showCollaborationEditUser: function (source, view) {
|
|
498
|
-
const resourceModel = ResourceModelHelper.getResourceModel(view);
|
|
499
|
-
let popover = Element.getElementById(`manageCollaborationDraft--editUser`);
|
|
500
|
-
if (!popover) {
|
|
501
|
-
popover = new ResponsivePopover("manageCollaborationDraft--editUser", {
|
|
502
|
-
showHeader: false,
|
|
503
|
-
placement: "Bottom"
|
|
504
|
-
});
|
|
505
|
-
popover.addStyleClass("sapUiContentPadding");
|
|
506
|
-
view.addDependent(popover);
|
|
507
|
-
}
|
|
508
|
-
const bindingPath = source.getBinding("initials")?.getBindings().find(binding => binding?.getPath()?.startsWith("/collaboration/activities")).getPath();
|
|
509
|
-
const activities = source.getBindingContext("internal")?.getObject(bindingPath);
|
|
510
|
-
let editingActivity;
|
|
511
|
-
if (activities && activities.length > 0) {
|
|
512
|
-
editingActivity = activities.find(activity => {
|
|
513
|
-
return activity.key === getActivityKeyFromPath(source.getBindingContext().getPath());
|
|
514
|
-
});
|
|
515
|
-
}
|
|
516
|
-
popover.destroyContent();
|
|
517
|
-
popover.addContent(new Label({
|
|
518
|
-
text: resourceModel.getText("C_COLLABORATIONAVATAR_USER_EDIT_FIELD", [`${editingActivity?.name}`])
|
|
519
|
-
}));
|
|
520
|
-
popover.openBy(source);
|
|
521
492
|
}
|
|
522
493
|
};
|
|
523
494
|
return FieldRuntimeHelper;
|
|
524
495
|
}, false);
|
|
525
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZFJ1bnRpbWVIZWxwZXIiLCJ1cGxvYWRQcm9taXNlcyIsImNyZWF0aW5nSW5hY3RpdmVSb3ciLCJmZXRjaFJlY29tbWVuZGF0aW9ucyIsImZpZWxkIiwiY29udHJvbGxlciIsInZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJmaWVsZEJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJyZWNvbW1lbmRhdGlvbnNDb250ZXh0IiwiZmllbGRCaW5kaW5nIiwiZ2V0QmluZGluZyIsImlzQSIsImZlQ29udHJvbGxlciIsImdldEV4dGVuc2lvbkNvbnRyb2xsZXIiLCJ2YWx1ZUhlbHBJZCIsImdldFZhbHVlSGVscCIsIm1ldGFQYXRoIiwiTW9kZWxIZWxwZXIiLCJnZXRNZXRhUGF0aEZvckNvbnRleHQiLCJwcm9wZXJ0eVBhdGgiLCJkYXRhIiwicmVwbGFjZSIsImZpZWxkUGF0aCIsImdldFBhdGgiLCJzZWxlY3RlZFZhbHVlIiwiZ2V0VmFsdWUiLCJyZWNvbW1lbmRhdGlvbnMiLCJ1cGRhdGVUZWxlbWV0cnlEYXRhQmFzZWRPblVzZXJTZWxlY3Rpb24iLCJpbmNsdWRlcyIsInRhYmxlSWQiLCJzdWJzdHJpbmciLCJpbmRleE9mIiwidGFibGUiLCJieUlkIiwiY29udGV4dElkZW50aWZpZXIiLCJnZXRQYXJlbnQiLCJnZXRJZGVudGlmaWVyQ29sdW1uIiwiZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9uc09uRmllbGRDaGFuZ2UiLCJjb250ZXh0Iiwib0NvbnRyb2xsZXIiLCJfY29udHJvbGxlciIsImdldEZpZWxkU3RhdGVPbkNoYW5nZSIsIm9FdmVudCIsIm9Tb3VyY2VGaWVsZCIsImdldFNvdXJjZSIsIm1GaWVsZFN0YXRlIiwiX2lzQmluZGluZ1N0YXRlTWVzc2FnZXMiLCJvQmluZGluZyIsImdldERhdGFTdGF0ZSIsImdldEludmFsaWRWYWx1ZSIsInVuZGVmaW5lZCIsImdldENvbnRlbnQiLCJGaWVsZFdyYXBwZXIiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJnZXRFZGl0TW9kZSIsImdldENvbnRlbnRFZGl0IiwiYklzVmFsaWQiLCJnZXRQYXJhbWV0ZXIiLCJnZXRNYXhDb25kaXRpb25zIiwib1ZhbHVlQmluZGluZ0luZm8iLCJnZXRCaW5kaW5nSW5mbyIsImJpbmRpbmciLCJnZXRQcm9wZXJ0eSIsImZpZWxkVmFsdWUiLCJ2YWxpZGl0eSIsInN0YXRlIiwicHJlc3NMaW5rIiwib1NvdXJjZSIsInNhcG1MaW5rIiwiZmluZEVsZW1lbnRzIiwiZWxlbSIsImdldERlcGVuZGVudHMiLCJsZW5ndGgiLCJvRmllbGRJbmZvIiwib3BlbkxpbmsiLCJtZGNMaW5rIiwiaFJlZiIsImdldFRyaWdnZXJIcmVmIiwiX3VzZURlbGVnYXRlSXRlbXMiLCJsaW5rSXRlbXMiLCJyZXRyaWV2ZUxpbmtJdGVtcyIsImdldFBheWxvYWQiLCJoYXNRdWlja1ZpZXdGYWNldHMiLCJwb3BvdmVyIiwiY3JlYXRlUG9wb3ZlcldpdGhOb1RhcmdldHMiLCJhZGREZXBlbmRlbnQiLCJvcGVuQnkiLCJvcGVuIiwiZXJyb3IiLCJMb2ciLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJzaGVsbFNlcnZpY2UiLCJnZXRTaGVsbFNlcnZpY2VzIiwic2hlbGxIYXNoIiwicGFyc2VTaGVsbEhhc2giLCJuYXZBcmdzIiwidGFyZ2V0Iiwic2VtYW50aWNPYmplY3QiLCJhY3Rpb24iLCJwYXJhbXMiLCJLZWVwQWxpdmVIZWxwZXIiLCJzdG9yZUNvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JIYXNoIiwiaXNTdGlja3lFZGl0TW9kZSIsIm5hdmlnYXRlIiwibmV3SHJlZiIsImhyZWZGb3JFeHRlcm5hbCIsIm9wZW5XaW5kb3ciLCJtZGNMaW5rSWQiLCJnZXRJZCIsImlsbHVzdHJhdGVkTWVzc2FnZVNldHRpbmdzIiwidGl0bGUiLCJnZXRSZXNvdXJjZU1vZGVsIiwiZ2V0VGV4dCIsImRlc2NyaXB0aW9uIiwiZW5hYmxlRm9ybWF0dGVkVGV4dCIsImlsbHVzdHJhdGlvblNpemUiLCJJbGx1c3RyYXRlZE1lc3NhZ2VTaXplIiwiRXh0cmFTbWFsbCIsImlsbHVzdHJhdGlvblR5cGUiLCJJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlIiwiTm9EYXRhIiwiaWxsdXN0cmF0ZWRNZXNzYWdlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwicG9wb3ZlclNldHRpbmdzIiwiaG9yaXpvbnRhbFNjcm9sbGluZyIsInNob3dIZWFkZXIiLCJEZXZpY2UiLCJzeXN0ZW0iLCJwaG9uZSIsInBsYWNlbWVudCIsIm1vYmlsZWxpYnJhcnkiLCJQbGFjZW1lbnRUeXBlIiwiQXV0byIsImNvbnRlbnQiLCJhZnRlckNsb3NlIiwiZXZlbnQiLCJkZXN0cm95IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJoYW5kbGVUeXBlTWlzc21hdGNoIiwiZmlsZVVwbG9hZGVyIiwiZ2l2ZW5UeXBlIiwiYWNjZXB0ZWRUeXBlcyIsImdldE1pbWVUeXBlIiwic2hvd1R5cGVNaXNtYXRjaERpYWxvZyIsImhhbmRsZUZpbGVTaXplRXhjZWVkIiwic2hvd0ZpbGVTaXplRXhjZWVkRGlhbG9nIiwiZ2V0TWF4aW11bUZpbGVTaXplIiwidG9GaXhlZCIsImhhbmRsZVVwbG9hZENvbXBsZXRlIiwicHJvcGVydHlGaWxlTmFtZSIsInN0YXR1cyIsIk51bWJlciIsImZpbGVXcmFwcGVyIiwic2V0VUlCdXN5IiwiZGlzcGxheU1lc3NhZ2VGb3JGYWlsZWRVcGxvYWQiLCJyZWplY3QiLCJuZXdFVGFnIiwiZXRhZyIsInNldFByb3BlcnR5IiwicGF0aCIsImF2YXRhciIsInJlZnJlc2hBdmF0YXJDYWNoZUJ1c3RpbmciLCJfY2FsbFNpZGVFZmZlY3RzRm9yU3RyZWFtIiwicmVzb2x2ZSIsImZpcmVFdmVudCIsImlzQ29sbGFib3JhdGlvbkVuYWJsZWQiLCJjb2xsYWJvcmF0aXZlRHJhZnQiLCJpc0Nvbm5lY3RlZCIsIm5vdGlmaWNhdGlvbkRhdGEiLCJwdXNoIiwib1ZpZXciLCJoYXNQZW5kaW5nQ2hhbmdlcyIsImF0dGFjaEV2ZW50T25jZSIsInNlbmQiLCJBY3Rpdml0eSIsIkNoYW5nZSIsIlVubG9jayIsInJlbW92ZVN0cmVhbSIsImRlbGV0ZUJ1dHRvbiIsImJDb2xsYWJvcmF0aW9uRW5hYmxlZCIsIkxvY2siLCJvQ29udHJvbCIsIm9GRUNvbnRyb2xsZXIiLCJpc1RyYW5zaWVudCIsIl9zaWRlRWZmZWN0cyIsImhhbmRsZUZpZWxkQ2hhbmdlIiwidXBsb2FkU3RyZWFtIiwiRkVDb250cm9sbGVyIiwidXBsb2FkVXJsIiwiZ2V0VXBsb2FkVXJsIiwic2V0VXBsb2FkVXJsIiwiZmlsZXMiLCJmaWxlVHlwZSIsInR5cGUiLCJzZXRIZWFkZXJGaWVsZHMiLCJ1cGxvYWRQcm9taXNlIiwiUHJvbWlzZSIsInVwbG9hZCIsImVkaXRGbG93Iiwic3luY1Rhc2siLCJNZXNzYWdlQm94IiwiaGFuZGxlT3BlblVwbG9hZGVyIiwiX3NlbmRDb2xsYWJvcmF0aW9uTWVzc2FnZUZvckZpbGVVcGxvYWRlciIsImdldENvbnRyb2xsZXIiLCJiaW5kaW5nUGF0aCIsImZ1bGxQYXRoIiwiaGFuZGxlQ2xvc2VVcGxvYWRlciIsIm9wZW5FeHRlcm5hbExpbmsiLCJzb3VyY2UiLCJnZXRJY29uRm9yTWltZVR5cGUiLCJtaW1lVHlwZSIsIkljb25Qb29sIiwib25EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGgiLCJuYXZQYXRoIiwiX3JvdXRpbmciLCJiaW5kaW5nQ29udGV4dCIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwidmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsImRyYWZ0Um9vdFBhdGgiLCJnZXREcmFmdFJvb3RQYXRoIiwidXJsTmF2aWdhdGlvbiIsImdldEhhc2hGb3JOYXZpZ2F0aW9uIiwibmF2aWdhdGVGbiIsImdldFJvdXRlclByb3h5IiwibmF2VG9IYXNoIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwic3RhcnRzV2l0aCIsInNhbWVPUE5hdmlnYXRpb24iLCJjb252ZXJ0ZXJUeXBlIiwiZHJhZnQiLCJwcm9jZXNzRGF0YUxvc3NPckRyYWZ0RGlzY2FyZENvbmZpcm1hdGlvbiIsIkZ1bmN0aW9uIiwicHJvdG90eXBlIiwiTmF2aWdhdGlvblR5cGUiLCJGb3J3YXJkTmF2aWdhdGlvbiIsInNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXIiLCJyZXNvdXJjZU1vZGVsIiwiUmVzb3VyY2VNb2RlbEhlbHBlciIsIkVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImFkZFN0eWxlQ2xhc3MiLCJnZXRCaW5kaW5ncyIsImZpbmQiLCJhY3Rpdml0aWVzIiwiZ2V0T2JqZWN0IiwiZWRpdGluZ0FjdGl2aXR5IiwiYWN0aXZpdHkiLCJrZXkiLCJnZXRBY3Rpdml0eUtleUZyb21QYXRoIiwiZGVzdHJveUNvbnRlbnQiLCJhZGRDb250ZW50IiwiTGFiZWwiLCJ0ZXh0IiwibmFtZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmllbGRSdW50aW1lSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEV4dGVuc2lvbkFQSSBmcm9tIFwic2FwL2ZlL2NvcmUvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgVXNlckFjdGl2aXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IHsgQWN0aXZpdHksIGdldEFjdGl2aXR5S2V5RnJvbVBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uQ29tbW9uXCI7XG5pbXBvcnQgZHJhZnQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2VkaXRGbG93L2RyYWZ0XCI7XG5pbXBvcnQgS2VlcEFsaXZlSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0tlZXBBbGl2ZUhlbHBlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgUmVzb3VyY2VNb2RlbEhlbHBlciwgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVGV4dExpbmsgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvVGV4dExpbmtcIjtcbmltcG9ydCB0eXBlIHsgTGlua0RlbGVnYXRlUGF5bG9hZCB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3F1aWNrVmlldy9RdWlja1ZpZXdEZWxlZ2F0ZVwiO1xuaW1wb3J0IHR5cGUgQXZhdGFyIGZyb20gXCJzYXAvbS9BdmF0YXJcIjtcbmltcG9ydCB0eXBlIHsgQnV0dG9uJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSB7ICRJbGx1c3RyYXRlZE1lc3NhZ2VTZXR0aW5ncyB9IGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2UgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVwiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZVNpemUgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVNpemVcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgdHlwZSBMaW5rIGZyb20gXCJzYXAvbS9MaW5rXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IHR5cGUgT2JqZWN0SWRlbnRpZmllciBmcm9tIFwic2FwL20vT2JqZWN0SWRlbnRpZmllclwiO1xuaW1wb3J0IHR5cGUgeyAkUmVzcG9uc2l2ZVBvcG92ZXJTZXR0aW5ncyB9IGZyb20gXCJzYXAvbS9SZXNwb25zaXZlUG9wb3ZlclwiO1xuaW1wb3J0IFJlc3BvbnNpdmVQb3BvdmVyIGZyb20gXCJzYXAvbS9SZXNwb25zaXZlUG9wb3ZlclwiO1xuaW1wb3J0IG1vYmlsZWxpYnJhcnkgZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCBEZXZpY2UgZnJvbSBcInNhcC91aS9EZXZpY2VcIjtcbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCBJY29uUG9vbCBmcm9tIFwic2FwL3VpL2NvcmUvSWNvblBvb2xcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkJENoYW5nZUV2ZW50LCBkZWZhdWx0IGFzIG1kY0ZpZWxkIH0gZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCB0eXBlIE1kY0xpbmsgZnJvbSBcInNhcC91aS9tZGMvTGlua1wiO1xuaW1wb3J0IHR5cGUgQ29tcG9zaXRlQmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL0NvbXBvc2l0ZUJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIERhdGFTdGF0ZSBmcm9tIFwic2FwL3VpL21vZGVsL0RhdGFTdGF0ZVwiO1xuaW1wb3J0IHR5cGUgUHJvcGVydHlCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvUHJvcGVydHlCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgRmlsZVVwbG9hZGVyIGZyb20gXCJzYXAvdWkvdW5pZmllZC9GaWxlVXBsb2FkZXJcIjtcbmltcG9ydCB0eXBlIHtcblx0RmlsZVVwbG9hZGVyJENoYW5nZUV2ZW50LFxuXHRGaWxlVXBsb2FkZXIkRmlsZVNpemVFeGNlZWRFdmVudCxcblx0RmlsZVVwbG9hZGVyJFR5cGVNaXNzbWF0Y2hFdmVudCxcblx0RmlsZVVwbG9hZGVyJFVwbG9hZENvbXBsZXRlRXZlbnRcbn0gZnJvbSBcInNhcC91aS91bmlmaWVkL0ZpbGVVcGxvYWRlclwiO1xuaW1wb3J0IG9wZW5XaW5kb3cgZnJvbSBcInNhcC91aS91dGlsL29wZW5XaW5kb3dcIjtcbmltcG9ydCB0eXBlIEZpZWxkIGZyb20gXCIuLi9GaWVsZFwiO1xuaW1wb3J0IEZpZWxkV3JhcHBlciBmcm9tIFwiLi4vY29udHJvbHMvRmllbGRXcmFwcGVyXCI7XG5pbXBvcnQgdHlwZSBGaWxlV3JhcHBlciBmcm9tIFwiLi4vY29udHJvbHMvRmlsZVdyYXBwZXJcIjtcbmltcG9ydCB7XG5cdGRpc3BsYXlNZXNzYWdlRm9yRmFpbGVkVXBsb2FkLFxuXHRzZXRIZWFkZXJGaWVsZHMsXG5cdHNob3dGaWxlU2l6ZUV4Y2VlZERpYWxvZyxcblx0c2hvd1R5cGVNaXNtYXRjaERpYWxvZ1xufSBmcm9tIFwiLi4vaW50ZXJuYWwvaGVscGVycy9VcGxvYWRcIjtcbmltcG9ydCB0eXBlIFRhYmxlQVBJIGZyb20gXCIuLi90YWJsZS9UYWJsZUFQSVwiO1xuXG50eXBlIEZpbGUgPSB7XG5cdHR5cGU6IHN0cmluZztcbn07XG5cbmNvbnN0IEZpZWxkUnVudGltZUhlbHBlciA9IHtcblx0dXBsb2FkUHJvbWlzZXM6IHt9IGFzIFJlY29yZDxzdHJpbmcsIHsgcmVzb2x2ZTogRnVuY3Rpb247IHJlamVjdDogRnVuY3Rpb24gfT4sXG5cdGNyZWF0aW5nSW5hY3RpdmVSb3c6IGZhbHNlLFxuXG5cdGZldGNoUmVjb21tZW5kYXRpb25zOiBmdW5jdGlvbiAoZmllbGQ6IENvbnRyb2wsIGNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyIHwgRXh0ZW5zaW9uQVBJKTogdm9pZCB7XG5cdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoZmllbGQpO1xuXHRcdGNvbnN0IGZpZWxkQmluZGluZ0NvbnRleHQgPSBmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGxldCByZWNvbW1lbmRhdGlvbnNDb250ZXh0OiBDb250ZXh0O1xuXG5cdFx0Ly8gZGV0ZXJtaW5lIHJlY29tbWVuZGF0aW9uIGNvbnRleHQgdG8gdXNlXG5cdFx0Y29uc3QgZmllbGRCaW5kaW5nID0gKGZpZWxkQmluZGluZ0NvbnRleHQgYXMgQ29udGV4dCk/LmdldEJpbmRpbmcoKTtcblxuXHRcdGlmIChmaWVsZEJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdC8vIGluc2lkZSBhIHRhYmxlLCB1c2UgdGhlIHJvd1xuXHRcdFx0cmVjb21tZW5kYXRpb25zQ29udGV4dCA9IGZpZWxkQmluZGluZ0NvbnRleHQgYXMgQ29udGV4dDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gaW5zaWRlIGEgZm9ybSBub3dcblx0XHRcdC8vIGNhbiBoYXZlIDEtMSBuYXZpZ2F0aW9uIHByb3BlcnR5L2RpcmVjdCBwcm9wZXJ0eSAtIHVzZSB2aWV3IGNvbnRleHRcblx0XHRcdHJlY29tbWVuZGF0aW9uc0NvbnRleHQgPSB2aWV3LmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0fVxuXHRcdGNvbnN0IGZlQ29udHJvbGxlciA9IEZpZWxkUnVudGltZUhlbHBlci5nZXRFeHRlbnNpb25Db250cm9sbGVyKGNvbnRyb2xsZXIpO1xuXHRcdGNvbnN0IHZhbHVlSGVscElkID0gZmllbGQuaXNBPG1kY0ZpZWxkPihcInNhcC51aS5tZGMuRmllbGRcIikgJiYgZmllbGQuZ2V0VmFsdWVIZWxwKCk7XG5cdFx0Ly8gdXBkYXRlIHRlbGVtZXRyeSBkYXRhIGFzIHBlciB1c2VyIHNlbGVjdGlvblxuXHRcdGNvbnN0IG1ldGFQYXRoID0gTW9kZWxIZWxwZXIuZ2V0TWV0YVBhdGhGb3JDb250ZXh0KGZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCk7XG5cdFx0Y29uc3QgcHJvcGVydHlQYXRoID0gZmllbGQuZGF0YShcInNvdXJjZVBhdGhcIikucmVwbGFjZShtZXRhUGF0aCwgXCJcIik7XG5cdFx0Y29uc3QgZmllbGRQYXRoID0gYCR7ZmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpfSR7cHJvcGVydHlQYXRofWA7XG5cdFx0Y29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IGZpZWxkLmlzQTxtZGNGaWVsZD4oXCJzYXAudWkubWRjLkZpZWxkXCIpICYmIGZpZWxkLmdldFZhbHVlKCk7XG5cdFx0ZmVDb250cm9sbGVyLnJlY29tbWVuZGF0aW9ucy51cGRhdGVUZWxlbWV0cnlEYXRhQmFzZWRPblVzZXJTZWxlY3Rpb24oZmllbGRQYXRoLCBzZWxlY3RlZFZhbHVlKTtcblxuXHRcdGlmICh2YWx1ZUhlbHBJZCAmJiB2YWx1ZUhlbHBJZC5pbmNsdWRlcyhcIjo6VGFibGVWYWx1ZUhlbHA6OlwiKSkge1xuXHRcdFx0Y29uc3QgdGFibGVJZCA9IHZhbHVlSGVscElkLnN1YnN0cmluZygwLCB2YWx1ZUhlbHBJZC5pbmRleE9mKFwiOjpUYWJsZVZhbHVlSGVscDo6XCIpKTtcblx0XHRcdGNvbnN0IHRhYmxlID0gdmlldy5ieUlkKHRhYmxlSWQpO1xuXHRcdFx0Y29uc3QgY29udGV4dElkZW50aWZpZXIgPSAodGFibGU/LmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKT8uZ2V0SWRlbnRpZmllckNvbHVtbigpIGFzIHN0cmluZ1tdO1xuXHRcdFx0ZmVDb250cm9sbGVyLnJlY29tbWVuZGF0aW9ucy5mZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zT25GaWVsZENoYW5nZShmaWVsZCwge1xuXHRcdFx0XHRjb250ZXh0OiByZWNvbW1lbmRhdGlvbnNDb250ZXh0LFxuXHRcdFx0XHRjb250ZXh0SWRlbnRpZmllclxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZlQ29udHJvbGxlci5yZWNvbW1lbmRhdGlvbnMuZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9uc09uRmllbGRDaGFuZ2UoZmllbGQsIHsgY29udGV4dDogcmVjb21tZW5kYXRpb25zQ29udGV4dCB9KTtcblx0XHR9XG5cdH0sXG5cblx0Z2V0RXh0ZW5zaW9uQ29udHJvbGxlcjogZnVuY3Rpb24gKG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlciB8IEV4dGVuc2lvbkFQSSk6IFBhZ2VDb250cm9sbGVyIHtcblx0XHRyZXR1cm4gb0NvbnRyb2xsZXIuaXNBPEV4dGVuc2lvbkFQST4oXCJzYXAuZmUuY29yZS5FeHRlbnNpb25BUElcIikgPyBvQ29udHJvbGxlci5fY29udHJvbGxlciA6IG9Db250cm9sbGVyO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBmaWVsZCB2YWx1ZSBhbmQgdmFsaWRpdHkgb24gYSBjaGFuZ2UgZXZlbnQuXG5cdCAqIEBwYXJhbSBvRXZlbnQgVGhlIGV2ZW50IG9iamVjdCBwYXNzZWQgYnkgdGhlIGNoYW5nZSBldmVudFxuXHQgKiBAcmV0dXJucyBGaWVsZCB2YWx1ZSBhbmQgdmFsaWRpdHlcblx0ICovXG5cdGdldEZpZWxkU3RhdGVPbkNoYW5nZTogZnVuY3Rpb24gKG9FdmVudDogRmllbGQkQ2hhbmdlRXZlbnQgJiBFdmVudDx7IGlzVmFsaWQ6IGJvb2xlYW4gfSwgQ29udHJvbD4pOiB7XG5cdFx0ZmllbGQ6IG1kY0ZpZWxkO1xuXHRcdHN0YXRlOiB7XG5cdFx0XHRmaWVsZFZhbHVlPzogdW5rbm93bjtcblx0XHRcdHZhbGlkaXR5OiBib29sZWFuO1xuXHRcdH07XG5cdH0ge1xuXHRcdGxldCBvU291cmNlRmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCksXG5cdFx0XHRtRmllbGRTdGF0ZToge1xuXHRcdFx0XHRmaWVsZFZhbHVlPzogdW5rbm93bjtcblx0XHRcdFx0dmFsaWRpdHk6IGJvb2xlYW47XG5cdFx0XHR9O1xuXHRcdGNvbnN0IF9pc0JpbmRpbmdTdGF0ZU1lc3NhZ2VzID0gZnVuY3Rpb24gKG9CaW5kaW5nOiBQcm9wZXJ0eUJpbmRpbmcgJiB7IGdldERhdGFTdGF0ZTogKCkgPT4gRGF0YVN0YXRlIH0pOiBib29sZWFuIHtcblx0XHRcdHJldHVybiBvQmluZGluZyAmJiBvQmluZGluZy5nZXREYXRhU3RhdGUoKSA/IG9CaW5kaW5nLmdldERhdGFTdGF0ZSgpLmdldEludmFsaWRWYWx1ZSgpID09PSB1bmRlZmluZWQgOiB0cnVlO1xuXHRcdH07XG5cdFx0aWYgKG9Tb3VyY2VGaWVsZC5pc0E8bWRjRmllbGQ+KFwic2FwLmZlLm1hY3Jvcy5maWVsZC5GaWVsZFwiKSkge1xuXHRcdFx0b1NvdXJjZUZpZWxkID0gb1NvdXJjZUZpZWxkLmdldENvbnRlbnQoKSBhcyBtZGNGaWVsZDtcblx0XHR9XG5cdFx0aWYgKG9Tb3VyY2VGaWVsZC5pc0E8RW5oYW5jZVdpdGhVSTU8RmllbGQ+PihcInNhcC5mZS5tYWNyb3MuRmllbGRcIikpIHtcblx0XHRcdG9Tb3VyY2VGaWVsZCA9IG9Tb3VyY2VGaWVsZC5nZXRDb250ZW50KCkgYXMgbWRjRmllbGQ7XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0b1NvdXJjZUZpZWxkLmlzQTxFbmhhbmNlV2l0aFVJNTxGaWVsZFdyYXBwZXI+PihGaWVsZFdyYXBwZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCkpICYmXG5cdFx0XHRvU291cmNlRmllbGQuZ2V0RWRpdE1vZGUoKSA9PT0gXCJFZGl0YWJsZVwiXG5cdFx0KSB7XG5cdFx0XHRvU291cmNlRmllbGQgPSAob1NvdXJjZUZpZWxkIGFzIEVuaGFuY2VXaXRoVUk1PEZpZWxkV3JhcHBlcj4pLmdldENvbnRlbnRFZGl0KClbMF0gYXMgbWRjRmllbGQ7XG5cdFx0fVxuXG5cdFx0aWYgKG9Tb3VyY2VGaWVsZC5pc0E8bWRjRmllbGQ+KFwic2FwLnVpLm1kYy5GaWVsZFwiKSkge1xuXHRcdFx0bGV0IGJJc1ZhbGlkID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInZhbGlkXCIpIHx8IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJpc1ZhbGlkXCIpO1xuXHRcdFx0aWYgKGJJc1ZhbGlkID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0aWYgKG9Tb3VyY2VGaWVsZC5nZXRNYXhDb25kaXRpb25zKCkgPT09IDEpIHtcblx0XHRcdFx0XHRjb25zdCBvVmFsdWVCaW5kaW5nSW5mbyA9IG9Tb3VyY2VGaWVsZC5nZXRCaW5kaW5nSW5mbyhcInZhbHVlXCIpO1xuXHRcdFx0XHRcdGJJc1ZhbGlkID0gX2lzQmluZGluZ1N0YXRlTWVzc2FnZXMob1ZhbHVlQmluZGluZ0luZm8gJiYgb1ZhbHVlQmluZGluZ0luZm8uYmluZGluZyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG9Tb3VyY2VGaWVsZC5nZXRWYWx1ZSgpID09PSBcIlwiICYmICFvU291cmNlRmllbGQuZ2V0UHJvcGVydHkoXCJyZXF1aXJlZFwiKSkge1xuXHRcdFx0XHRcdGJJc1ZhbGlkID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0bUZpZWxkU3RhdGUgPSB7XG5cdFx0XHRcdGZpZWxkVmFsdWU6IG9Tb3VyY2VGaWVsZC5nZXRWYWx1ZSgpLFxuXHRcdFx0XHR2YWxpZGl0eTogISFiSXNWYWxpZFxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gb1NvdXJjZUZpZWxkIGV4dGVuZHMgZnJvbSBhIEZpbGVVcGxvYWRlciB8fCBJbnB1dCB8fCBpcyBhIENoZWNrQm94XG5cdFx0XHRjb25zdCBvQmluZGluZyA9XG5cdFx0XHRcdChvU291cmNlRmllbGQgYXMgQ29udHJvbCkuZ2V0QmluZGluZyhcInVwbG9hZFVybFwiKSB8fFxuXHRcdFx0XHQob1NvdXJjZUZpZWxkIGFzIENvbnRyb2wpLmdldEJpbmRpbmcoXCJ2YWx1ZVwiKSB8fFxuXHRcdFx0XHQob1NvdXJjZUZpZWxkIGFzIENvbnRyb2wpLmdldEJpbmRpbmcoXCJzZWxlY3RlZFwiKTtcblx0XHRcdG1GaWVsZFN0YXRlID0ge1xuXHRcdFx0XHRmaWVsZFZhbHVlOiBvQmluZGluZyAmJiAob0JpbmRpbmcgYXMgUHJvcGVydHlCaW5kaW5nKS5nZXRWYWx1ZSgpLFxuXHRcdFx0XHR2YWxpZGl0eTogX2lzQmluZGluZ1N0YXRlTWVzc2FnZXMob0JpbmRpbmcgYXMgUHJvcGVydHlCaW5kaW5nICYgeyBnZXREYXRhU3RhdGU6ICgpID0+IERhdGFTdGF0ZSB9KVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdGZpZWxkOiBvU291cmNlRmllbGQsXG5cdFx0XHRzdGF0ZTogbUZpZWxkU3RhdGVcblx0XHR9O1xuXHR9LFxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgcHJlc3MgZXZlbnQgZm9yIGEgbGluay5cblx0ICogQHBhcmFtIG9FdmVudCBUaGUgcHJlc3MgZXZlbnRcblx0ICogQHJldHVybnMgVGhlIHByZXNzZWQgbGlua1xuXHQgKi9cblx0cHJlc3NMaW5rOiBhc3luYyBmdW5jdGlvbiAob0V2ZW50OiBCdXR0b24kUHJlc3NFdmVudCk6IFByb21pc2U8TGluaz4ge1xuXHRcdGNvbnN0IG9Tb3VyY2UgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0bGV0IHNhcG1MaW5rID0gb1NvdXJjZS5pc0E8T2JqZWN0SWRlbnRpZmllcj4oXCJzYXAubS5PYmplY3RJZGVudGlmaWVyXCIpXG5cdFx0XHQ/IG9Tb3VyY2UuZmluZEVsZW1lbnRzKGZhbHNlLCAoZWxlbTogRWxlbWVudCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBlbGVtLmlzQTxMaW5rPihcInNhcC5tLkxpbmtcIik7XG5cdFx0XHQgIH0pWzBdXG5cdFx0XHQ6IG9Tb3VyY2U7XG5cdFx0aWYgKG9Tb3VyY2U/LmlzQTxUZXh0TGluaz4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLlRleHRMaW5rXCIpKSB7XG5cdFx0XHQvL3doZW4gdGhlIGxpbmsgaXMgaW5zaWRlIGEgVGV4dExpbmsgY29udHJvbCwgdGhlIGRlcGVuZGVudCB3aWxsIGJlIG9uIHRoZSBUZXh0TGlua1xuXHRcdFx0c2FwbUxpbmsgPSBvU291cmNlLmdldENvbnRlbnQoKSBhcyBMaW5rO1xuXHRcdH1cblxuXHRcdGlmIChvU291cmNlLmdldERlcGVuZGVudHMoKSAmJiBvU291cmNlLmdldERlcGVuZGVudHMoKS5sZW5ndGggPiAwICYmIHNhcG1MaW5rLmdldFByb3BlcnR5KFwidGV4dFwiKSAhPT0gXCJcIikge1xuXHRcdFx0Y29uc3Qgb0ZpZWxkSW5mbyA9IG9Tb3VyY2UuZ2V0RGVwZW5kZW50cygpWzBdO1xuXHRcdFx0aWYgKG9GaWVsZEluZm8gJiYgb0ZpZWxkSW5mby5pc0E8TWRjTGluaz4oXCJzYXAudWkubWRjLkxpbmtcIikpIHtcblx0XHRcdFx0YXdhaXQgRmllbGRSdW50aW1lSGVscGVyLm9wZW5MaW5rKG9GaWVsZEluZm8sIHNhcG1MaW5rIGFzIExpbmspO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc2FwbUxpbmsgYXMgTGluaztcblx0fSxcblxuXHRvcGVuTGluazogYXN5bmMgZnVuY3Rpb24gKG1kY0xpbms6IE1kY0xpbmssIHNhcG1MaW5rOiBMaW5rKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGhSZWYgPSBhd2FpdCBtZGNMaW5rLmdldFRyaWdnZXJIcmVmKCk7XG5cdFx0XHRpZiAoIWhSZWYpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRhd2FpdCAobWRjTGluayBhcyB1bmtub3duIGFzIHsgX3VzZURlbGVnYXRlSXRlbXM6IEZ1bmN0aW9uIH0pLl91c2VEZWxlZ2F0ZUl0ZW1zKCk7XG5cdFx0XHRcdFx0Y29uc3QgbGlua0l0ZW1zID0gYXdhaXQgbWRjTGluay5yZXRyaWV2ZUxpbmtJdGVtcygpO1xuXHRcdFx0XHRcdGlmIChsaW5rSXRlbXM/Lmxlbmd0aCA9PT0gMCAmJiAobWRjTGluay5nZXRQYXlsb2FkKCkgYXMgTGlua0RlbGVnYXRlUGF5bG9hZCkuaGFzUXVpY2tWaWV3RmFjZXRzID09PSBcImZhbHNlXCIpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHBvcG92ZXI6IFJlc3BvbnNpdmVQb3BvdmVyID0gRmllbGRSdW50aW1lSGVscGVyLmNyZWF0ZVBvcG92ZXJXaXRoTm9UYXJnZXRzKG1kY0xpbmspO1xuXHRcdFx0XHRcdFx0bWRjTGluay5hZGREZXBlbmRlbnQocG9wb3Zlcik7XG5cdFx0XHRcdFx0XHRwb3BvdmVyLm9wZW5CeShzYXBtTGluayBhcyB1bmtub3duIGFzIENvbnRyb2wpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0XHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdFx0XHRhd2FpdCBtZGNMaW5rLm9wZW4oc2FwbUxpbmsgYXMgdW5rbm93biBhcyBDb250cm9sKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGBDYW5ub3QgcmV0cmlldmUgdGhlIFF1aWNrVmlldyBQb3BvdmVyIGRpYWxvZzogJHtlcnJvcn1gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoc2FwbUxpbmspO1xuXHRcdFx0XHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodmlldyk7XG5cdFx0XHRcdGNvbnN0IHNoZWxsU2VydmljZSA9IGFwcENvbXBvbmVudC5nZXRTaGVsbFNlcnZpY2VzKCk7XG5cdFx0XHRcdGNvbnN0IHNoZWxsSGFzaCA9IHNoZWxsU2VydmljZS5wYXJzZVNoZWxsSGFzaChoUmVmKTtcblx0XHRcdFx0Y29uc3QgbmF2QXJncyA9IHtcblx0XHRcdFx0XHR0YXJnZXQ6IHtcblx0XHRcdFx0XHRcdHNlbWFudGljT2JqZWN0OiBzaGVsbEhhc2guc2VtYW50aWNPYmplY3QsXG5cdFx0XHRcdFx0XHRhY3Rpb246IHNoZWxsSGFzaC5hY3Rpb25cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHBhcmFtczogc2hlbGxIYXNoLnBhcmFtc1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRLZWVwQWxpdmVIZWxwZXIuc3RvcmVDb250cm9sUmVmcmVzaFN0cmF0ZWd5Rm9ySGFzaCh2aWV3LCBzaGVsbEhhc2gpO1xuXHRcdFx0XHRpZiAoQ29tbW9uVXRpbHMuaXNTdGlja3lFZGl0TW9kZShzYXBtTGluayBhcyB1bmtub3duIGFzIENvbnRyb2wpICE9PSB0cnVlKSB7XG5cdFx0XHRcdFx0Ly9VUkwgcGFyYW1zIGFuZCB4YXBwU3RhdGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGVhcmxpZXIgaGVuY2UgdXNpbmcgbmF2aWdhdGVcblx0XHRcdFx0XHRhd2FpdCBzaGVsbFNlcnZpY2UubmF2aWdhdGUobmF2QXJncywgYXBwQ29tcG9uZW50KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0Y29uc3QgbmV3SHJlZiA9IGF3YWl0IHNoZWxsU2VydmljZS5ocmVmRm9yRXh0ZXJuYWwobmF2QXJncywgYXBwQ29tcG9uZW50KTtcblx0XHRcdFx0XHRcdG9wZW5XaW5kb3cobmV3SHJlZik7XG5cdFx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0XHRcdExvZy5lcnJvcihgRXJyb3Igd2hpbGUgcmV0aXJldmluZyBocmVmRm9yRXh0ZXJuYWwgOiAke2Vycm9yfWApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoYEVycm9yIHRyaWdnZXJpbmcgbGluayBIcmVmOiAke2Vycm9yfWApO1xuXHRcdH1cblx0fSxcblxuXHRjcmVhdGVQb3BvdmVyV2l0aE5vVGFyZ2V0czogZnVuY3Rpb24gKG1kY0xpbms6IE1kY0xpbmspOiBSZXNwb25zaXZlUG9wb3ZlciB7XG5cdFx0Y29uc3QgbWRjTGlua0lkID0gbWRjTGluay5nZXRJZCgpO1xuXHRcdGNvbnN0IGlsbHVzdHJhdGVkTWVzc2FnZVNldHRpbmdzOiAkSWxsdXN0cmF0ZWRNZXNzYWdlU2V0dGluZ3MgPSB7XG5cdFx0XHR0aXRsZTogZ2V0UmVzb3VyY2VNb2RlbChtZGNMaW5rIGFzIHVua25vd24gYXMgQ29udHJvbCkuZ2V0VGV4dChcIk1fSUxMVVNUUkFURURNRVNTQUdFX1RJVExFXCIpLFxuXHRcdFx0ZGVzY3JpcHRpb246IGdldFJlc291cmNlTW9kZWwobWRjTGluayBhcyB1bmtub3duIGFzIENvbnRyb2wpLmdldFRleHQoXCJNX0lMTFVTVFJBVEVETUVTU0FHRV9ERVNDUklQVElPTlwiKSxcblx0XHRcdGVuYWJsZUZvcm1hdHRlZFRleHQ6IHRydWUsXG5cdFx0XHRpbGx1c3RyYXRpb25TaXplOiBJbGx1c3RyYXRlZE1lc3NhZ2VTaXplLkV4dHJhU21hbGwsXG5cdFx0XHRpbGx1c3RyYXRpb25UeXBlOiBJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlLk5vRGF0YVxuXHRcdH07XG5cdFx0Y29uc3QgaWxsdXN0cmF0ZWRNZXNzYWdlID0gbmV3IElsbHVzdHJhdGVkTWVzc2FnZShgJHttZGNMaW5rSWR9LWlsbHVzdHJhdGVkbWVzc2FnZWAsIGlsbHVzdHJhdGVkTWVzc2FnZVNldHRpbmdzKTtcblx0XHRjb25zdCBwb3BvdmVyU2V0dGluZ3M6ICRSZXNwb25zaXZlUG9wb3ZlclNldHRpbmdzID0ge1xuXHRcdFx0aG9yaXpvbnRhbFNjcm9sbGluZzogZmFsc2UsXG5cdFx0XHRzaG93SGVhZGVyOiBEZXZpY2Uuc3lzdGVtLnBob25lLFxuXHRcdFx0cGxhY2VtZW50OiBtb2JpbGVsaWJyYXJ5LlBsYWNlbWVudFR5cGUuQXV0byxcblx0XHRcdGNvbnRlbnQ6IFtpbGx1c3RyYXRlZE1lc3NhZ2VdLFxuXHRcdFx0YWZ0ZXJDbG9zZTogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdFx0XHRcdGlmIChldmVudC5nZXRTb3VyY2UoKSkge1xuXHRcdFx0XHRcdGV2ZW50LmdldFNvdXJjZSgpLmRlc3Ryb3koKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdFx0cmV0dXJuIG5ldyBSZXNwb25zaXZlUG9wb3ZlcihgJHttZGNMaW5rSWR9LXBvcG92ZXJgLCBwb3BvdmVyU2V0dGluZ3MpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSB0eXBlIG1pc21hdGNoIGV2ZW50IGZvciBhIGZpbGUgdXBsb2FkZXIuXG5cdCAqXG5cdCAqIERpc3BsYXlzIGEgZGlhbG9nIHRvIGluZm9ybSB0aGUgdXNlciBhYm91dCB0aGUgdHlwZSBtaXNtYXRjaC5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHRoZSB0eXBlIG1pc21hdGNoXG5cdCAqL1xuXHRoYW5kbGVUeXBlTWlzc21hdGNoOiBmdW5jdGlvbiAoZXZlbnQ6IEZpbGVVcGxvYWRlciRUeXBlTWlzc21hdGNoRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBmaWxlVXBsb2FkZXIgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBnaXZlblR5cGUgPSBldmVudC5nZXRQYXJhbWV0ZXIoXCJtaW1lVHlwZVwiKTtcblx0XHRjb25zdCBhY2NlcHRlZFR5cGVzID0gZmlsZVVwbG9hZGVyLmdldE1pbWVUeXBlKCk7XG5cdFx0aWYgKGdpdmVuVHlwZSkge1xuXHRcdFx0c2hvd1R5cGVNaXNtYXRjaERpYWxvZyhmaWxlVXBsb2FkZXIsIGdpdmVuVHlwZSwgYWNjZXB0ZWRUeXBlcyk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBmaWxlIHNpemUgZXhjZWVkIGV2ZW50IGZvciBhIGZpbGUgdXBsb2FkZXIuXG5cdCAqXG5cdCAqIERpc3BsYXlzIGEgZGlhbG9nIHRvIGluZm9ybSB0aGUgdXNlciBhYm91dCB0aGUgZmlsZSBzaXplIGV4Y2VlZC5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHRoZSBmaWxlIHNpemUgZXhjZWVkXG5cdCAqL1xuXHRoYW5kbGVGaWxlU2l6ZUV4Y2VlZDogZnVuY3Rpb24gKGV2ZW50OiBGaWxlVXBsb2FkZXIkRmlsZVNpemVFeGNlZWRFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGZpbGVVcGxvYWRlciA9IGV2ZW50LmdldFNvdXJjZSgpO1xuXHRcdHNob3dGaWxlU2l6ZUV4Y2VlZERpYWxvZyhmaWxlVXBsb2FkZXIsIGZpbGVVcGxvYWRlci5nZXRNYXhpbXVtRmlsZVNpemUoKS50b0ZpeGVkKDMpKTtcblx0fSxcblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgdXBsb2FkIGNvbXBsZXRlIGV2ZW50IGZvciBhIGZpbGUgdXBsb2FkZXIuXG5cdCAqXG5cdCAqIERpc3BsYXlzIGEgbWVzc2FnZSBmb3IgYSBmYWlsZWQgdXBsb2FkIGFuZCByZXNvbHZlcyBvciByZWplY3RzIHRoZSB1cGxvYWQgcHJvbWlzZS5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHRoZSB1cGxvYWRcblx0ICogQHBhcmFtIHByb3BlcnR5RmlsZU5hbWUgVGhlIHByb3BlcnR5IG5hbWUgZm9yIHRoZSBmaWxlIG5hbWVcblx0ICogQHBhcmFtIHByb3BlcnR5UGF0aCBUaGUgcHJvcGVydHkgcGF0aCBmb3IgdGhlIGZpbGVcblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgVGhlIHBhZ2UgY29udHJvbGxlclxuXHQgKi9cblx0aGFuZGxlVXBsb2FkQ29tcGxldGU6IGZ1bmN0aW9uIChcblx0XHRldmVudDogRmlsZVVwbG9hZGVyJFVwbG9hZENvbXBsZXRlRXZlbnQsXG5cdFx0cHJvcGVydHlGaWxlTmFtZTogeyBwYXRoOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCxcblx0XHRwcm9wZXJ0eVBhdGg6IHN0cmluZyxcblx0XHRjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlclxuXHQpOiB2b2lkIHtcblx0XHRjb25zdCBzdGF0dXMgPSBOdW1iZXIoZXZlbnQuZ2V0UGFyYW1ldGVyKFwic3RhdHVzXCIpKSxcblx0XHRcdGZpbGVVcGxvYWRlciA9IGV2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0ZmlsZVdyYXBwZXIgPSBmaWxlVXBsb2FkZXIuZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyBGaWxlV3JhcHBlcixcblx0XHRcdGZpZWxkID0gZmlsZVdyYXBwZXIuZ2V0UGFyZW50KCk7XG5cdFx0ZmlsZVdyYXBwZXIuc2V0VUlCdXN5KGZhbHNlKTtcblxuXHRcdGNvbnN0IGNvbnRleHQgPSBmaWxlVXBsb2FkZXIuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkIHwgbnVsbDtcblx0XHRpZiAoc3RhdHVzID09PSAwIHx8IHN0YXR1cyA+PSA0MDApIHtcblx0XHRcdGNvbnN0IGVycm9yID0gKGV2ZW50LmdldFBhcmFtZXRlcihcInJlc3BvbnNlUmF3XCIpIHx8IGV2ZW50LmdldFBhcmFtZXRlcihcInJlc3BvbnNlXCIpKSBhcyBzdHJpbmc7XG5cdFx0XHRkaXNwbGF5TWVzc2FnZUZvckZhaWxlZFVwbG9hZChmaWxlVXBsb2FkZXIsIGVycm9yKTtcblx0XHRcdEZpZWxkUnVudGltZUhlbHBlci51cGxvYWRQcm9taXNlc1tmaWxlVXBsb2FkZXIuZ2V0SWQoKV0ucmVqZWN0KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IG5ld0VUYWcgPSAoZXZlbnQuZ2V0UGFyYW1ldGVyKFwiaGVhZGVyc1wiKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik/LmV0YWc7XG5cblx0XHRcdGlmIChuZXdFVGFnKSB7XG5cdFx0XHRcdC8vIHNldCBuZXcgZXRhZyBmb3IgZmlsZW5hbWUgdXBkYXRlLCBidXQgd2l0aG91dCBzZW5kaW5nIHBhdGNoIHJlcXVlc3Rcblx0XHRcdFx0Y29udGV4dD8uc2V0UHJvcGVydHkoXCJAb2RhdGEuZXRhZ1wiLCBuZXdFVGFnLCBudWxsIGFzIHVua25vd24gYXMgc3RyaW5nKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gc2V0IGZpbGVuYW1lIGZvciBsaW5rIHRleHRcblx0XHRcdGlmIChwcm9wZXJ0eUZpbGVOYW1lPy5wYXRoKSB7XG5cdFx0XHRcdGNvbnRleHQ/LnNldFByb3BlcnR5KHByb3BlcnR5RmlsZU5hbWUucGF0aCwgZmlsZVVwbG9hZGVyLmdldFZhbHVlKCkpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBkZWxldGUgdGhlIGF2YXRhciBjYWNoZSB0aGF0IG5vdCBnZXRzIHVwZGF0ZWQgb3RoZXJ3aXNlXG5cdFx0XHRmaWxlV3JhcHBlci5hdmF0YXI/LnJlZnJlc2hBdmF0YXJDYWNoZUJ1c3RpbmcoKTtcblxuXHRcdFx0RmllbGRSdW50aW1lSGVscGVyLl9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW0oXG5cdFx0XHRcdGV2ZW50IGFzIHVua25vd24gYXMgRmllbGQkQ2hhbmdlRXZlbnQgJiBFdmVudDx7IGlzVmFsaWQ6IGJvb2xlYW4gfT4sXG5cdFx0XHRcdGZpbGVXcmFwcGVyLFxuXHRcdFx0XHRjb250cm9sbGVyXG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLnVwbG9hZFByb21pc2VzW2ZpbGVVcGxvYWRlci5nZXRJZCgpXS5yZXNvbHZlKCk7XG5cdFx0XHRmaWVsZD8uZmlyZUV2ZW50KFwiY2hhbmdlXCIsIGV2ZW50KTtcblx0XHR9XG5cblx0XHRkZWxldGUgdGhpcy51cGxvYWRQcm9taXNlc1tmaWxlVXBsb2FkZXIuZ2V0SWQoKV07XG5cblx0XHQvLyBDb2xsYWJvcmF0aW9uIERyYWZ0IEFjdGl2aXR5IFN5bmNcblx0XHRjb25zdCBpc0NvbGxhYm9yYXRpb25FbmFibGVkID0gY29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQ/LmlzQ29ubmVjdGVkKCk7XG5cdFx0aWYgKCFpc0NvbGxhYm9yYXRpb25FbmFibGVkIHx8ICFjb250ZXh0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3Qgbm90aWZpY2F0aW9uRGF0YSA9IFtgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eVBhdGh9YF07XG5cdFx0aWYgKHByb3BlcnR5RmlsZU5hbWU/LnBhdGgpIHtcblx0XHRcdG5vdGlmaWNhdGlvbkRhdGEucHVzaChgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eUZpbGVOYW1lLnBhdGh9YCk7XG5cdFx0fVxuXG5cdFx0bGV0IGJpbmRpbmcgPSBjb250ZXh0LmdldEJpbmRpbmcoKTtcblx0XHRpZiAoIWJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhmaWxlVXBsb2FkZXIpO1xuXHRcdFx0YmluZGluZyA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCkuZ2V0QmluZGluZygpO1xuXHRcdH1cblx0XHRpZiAoYmluZGluZy5oYXNQZW5kaW5nQ2hhbmdlcygpKSB7XG5cdFx0XHRiaW5kaW5nLmF0dGFjaEV2ZW50T25jZShcInBhdGNoQ29tcGxldGVkXCIsICgpID0+IHtcblx0XHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuc2VuZCh7IGFjdGlvbjogQWN0aXZpdHkuQ2hhbmdlLCBjb250ZW50OiBub3RpZmljYXRpb25EYXRhIH0pO1xuXHRcdFx0XHRjb250cm9sbGVyLmNvbGxhYm9yYXRpdmVEcmFmdC5zZW5kKHsgYWN0aW9uOiBBY3Rpdml0eS5VbmxvY2ssIGNvbnRlbnQ6IG5vdGlmaWNhdGlvbkRhdGEgfSk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuc2VuZCh7IGFjdGlvbjogQWN0aXZpdHkuQ2hhbmdlLCBjb250ZW50OiBub3RpZmljYXRpb25EYXRhIH0pO1xuXHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuc2VuZCh7IGFjdGlvbjogQWN0aXZpdHkuVW5sb2NrLCBjb250ZW50OiBub3RpZmljYXRpb25EYXRhIH0pO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIHN0cmVhbSBmcm9tIGEgZmlsZSBwcm9wZXJ0eS5cblx0ICpcblx0ICogU2V0cyB0aGUgcHJvcGVydHkgdG8gbnVsbCBhbmQgdGhlbiB1bmRlZmluZWQgdG8gcmVjcmVhdGUgdGhlIHVwbG9hZCBVUkwuXG5cdCAqIEhhbmRsZXMgY29sbGFib3JhdGlvbiBkcmFmdCBhY3Rpdml0eSBzeW5jIGlmIGVuYWJsZWQuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgY2hhbmdlIGV2ZW50IG9iamVjdFxuXHQgKiBAcGFyYW0gIHByb3BlcnR5RmlsZU5hbWUgVGhlIHByb3BlcnR5IG5hbWUgZm9yIHRoZSBmaWxlIG5hbWUuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eVBhdGggVGhlIHByb3BlcnR5IHBhdGggZm9yIHRoZSBmaWxlLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBUaGUgcGFnZSBjb250cm9sbGVyLlxuXHQgKi9cblx0cmVtb3ZlU3RyZWFtOiBmdW5jdGlvbiAoXG5cdFx0ZXZlbnQ6IEZpZWxkJENoYW5nZUV2ZW50ICYgRXZlbnQ8eyBpc1ZhbGlkOiBib29sZWFuIH0+LFxuXHRcdHByb3BlcnR5RmlsZU5hbWU6IHsgcGF0aDogc3RyaW5nIH0gfCB1bmRlZmluZWQsXG5cdFx0cHJvcGVydHlQYXRoOiBzdHJpbmcsXG5cdFx0Y29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXJcblx0KTogdm9pZCB7XG5cdFx0Y29uc3QgZGVsZXRlQnV0dG9uID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgZmlsZVdyYXBwZXIgPSBkZWxldGVCdXR0b24uZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyBGaWxlV3JhcHBlcjtcblx0XHRjb25zdCBjb250ZXh0ID0gZmlsZVdyYXBwZXIuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IGZpZWxkID0gZmlsZVdyYXBwZXIuZ2V0UGFyZW50KCk7XG5cblx0XHQvLyBzdHJlYW1zIGFyZSByZW1vdmVkIGJ5IGFzc2lnbmluZyB0aGUgbnVsbCB2YWx1ZVxuXHRcdGNvbnRleHQuc2V0UHJvcGVydHkocHJvcGVydHlQYXRoLCBudWxsKTtcblx0XHQvLyBXaGVuIHNldHRpbmcgdGhlIHByb3BlcnR5IHRvIG51bGwsIHRoZSB1cGxvYWRVcmwgKEBATU9ERUwuZm9ybWF0KSBpcyBzZXQgdG8gXCJcIiBieSB0aGUgbW9kZWxcblx0XHQvL1x0d2l0aCB0aGF0IGFub3RoZXIgdXBsb2FkIGlzIG5vdCBwb3NzaWJsZSBiZWZvcmUgcmVmcmVzaGluZyB0aGUgcGFnZVxuXHRcdC8vIChyZWZyZXNoaW5nIHRoZSBwYWdlIHdvdWxkIHJlY3JlYXRlIHRoZSBVUkwpXG5cdFx0Ly9cdFRoaXMgaXMgdGhlIHdvcmthcm91bmQ6XG5cdFx0Ly9cdFdlIHNldCB0aGUgcHJvcGVydHkgdG8gdW5kZWZpbmVkIG9ubHkgb24gdGhlIGZyb250ZW5kIHdoaWNoIHdpbGwgcmVjcmVhdGUgdGhlIHVwbG9hZFVybFxuXHRcdGNvbnRleHQuc2V0UHJvcGVydHkocHJvcGVydHlQYXRoLCB1bmRlZmluZWQsIG51bGwgYXMgdW5rbm93biBhcyBzdHJpbmcpO1xuXG5cdFx0RmllbGRSdW50aW1lSGVscGVyLl9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW0oZXZlbnQsIGZpbGVXcmFwcGVyLCBjb250cm9sbGVyKTtcblxuXHRcdC8vIENvbGxhYm9yYXRpb24gRHJhZnQgQWN0aXZpdHkgU3luY1xuXHRcdGNvbnN0IGJDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IGNvbnRyb2xsZXIuY29sbGFib3JhdGl2ZURyYWZ0Py5pc0Nvbm5lY3RlZCgpO1xuXHRcdGlmIChiQ29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGxldCBiaW5kaW5nID0gY29udGV4dC5nZXRCaW5kaW5nKCk7XG5cdFx0XHRpZiAoIWJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGRlbGV0ZUJ1dHRvbik7XG5cdFx0XHRcdGJpbmRpbmcgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpLmdldEJpbmRpbmcoKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZGF0YSA9IFtgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eVBhdGh9YF07XG5cdFx0XHRpZiAocHJvcGVydHlGaWxlTmFtZT8ucGF0aCkge1xuXHRcdFx0XHRkYXRhLnB1c2goYCR7Y29udGV4dC5nZXRQYXRoKCl9LyR7cHJvcGVydHlGaWxlTmFtZS5wYXRofWApO1xuXHRcdFx0fVxuXHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuc2VuZCh7IGFjdGlvbjogQWN0aXZpdHkuTG9jaywgY29udGVudDogZGF0YSB9KTtcblxuXHRcdFx0YmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJwYXRjaENvbXBsZXRlZFwiLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdGNvbnRyb2xsZXIuY29sbGFib3JhdGl2ZURyYWZ0LnNlbmQoeyBhY3Rpb246IEFjdGl2aXR5LkNoYW5nZSwgY29udGVudDogZGF0YSB9KTtcblx0XHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuc2VuZCh7IGFjdGlvbjogQWN0aXZpdHkuVW5sb2NrLCBjb250ZW50OiBkYXRhIH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGZpZWxkPy5maXJlRXZlbnQoXCJjaGFuZ2VcIiwgZXZlbnQpO1xuXHR9LFxuXG5cdF9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW06IGZ1bmN0aW9uIChcblx0XHRvRXZlbnQ6IEZpZWxkJENoYW5nZUV2ZW50ICYgRXZlbnQ8eyBpc1ZhbGlkOiBib29sZWFuIH0+LFxuXHRcdG9Db250cm9sOiBDb250cm9sLFxuXHRcdG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlclxuXHQpOiB2b2lkIHtcblx0XHRjb25zdCBvRkVDb250cm9sbGVyID0gRmllbGRSdW50aW1lSGVscGVyLmdldEV4dGVuc2lvbkNvbnRyb2xsZXIob0NvbnRyb2xsZXIpO1xuXHRcdGlmIChvQ29udHJvbCAmJiAob0NvbnRyb2wuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyB1bmtub3duIGFzIHsgaXNUcmFuc2llbnQ6IEZ1bmN0aW9uIH0pLmlzVHJhbnNpZW50KCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sKSB7XG5cdFx0XHQob0V2ZW50IGFzIHVua25vd24gYXMgeyBvU291cmNlOiBDb250cm9sIH0pLm9Tb3VyY2UgPSBvQ29udHJvbDtcblx0XHR9XG5cdFx0b0ZFQ29udHJvbGxlci5fc2lkZUVmZmVjdHMuaGFuZGxlRmllbGRDaGFuZ2Uob0V2ZW50LCBGaWVsZFJ1bnRpbWVIZWxwZXIuZ2V0RmllbGRTdGF0ZU9uQ2hhbmdlKG9FdmVudCkuc3RhdGVbXCJ2YWxpZGl0eVwiXSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFVwbG9hZHMgYSBzdHJlYW0gdXNpbmcgdGhlIGZpbGUgdXBsb2FkZXIuXG5cdCAqXG5cdCAqIFNldHMgdGhlIHVwbG9hZCBVUkwsIHN5bmNocm9uaXplcyB0aGUgdXBsb2FkIHdpdGggb3RoZXIgcmVxdWVzdHMsIGFuZCBoYW5kbGVzIGNvbGxhYm9yYXRpb24gZHJhZnQgYWN0aXZpdHkgc3luYyBpZiBlbmFibGVkLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBUaGUgcGFnZSBjb250cm9sbGVyLlxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIGNoYW5nZSBldmVudCBvYmplY3Qgb2YgdGhlIGZpbGUgdXBsb2FkZXIuXG5cdCAqL1xuXHR1cGxvYWRTdHJlYW06IGZ1bmN0aW9uIChjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgZXZlbnQ6IEZpbGVVcGxvYWRlciRDaGFuZ2VFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGZpbGVVcGxvYWRlciA9IGV2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0RkVDb250cm9sbGVyID0gRmllbGRSdW50aW1lSGVscGVyLmdldEV4dGVuc2lvbkNvbnRyb2xsZXIoY29udHJvbGxlciksXG5cdFx0XHRmaWxlV3JhcHBlciA9IGZpbGVVcGxvYWRlci5nZXRQYXJlbnQoKSBhcyB1bmtub3duIGFzIEZpbGVXcmFwcGVyLFxuXHRcdFx0dXBsb2FkVXJsID0gZmlsZVdyYXBwZXIuZ2V0VXBsb2FkVXJsKCk7XG5cblx0XHRpZiAodXBsb2FkVXJsICE9PSBcIlwiKSB7XG5cdFx0XHRmaWxlV3JhcHBlci5zZXRVSUJ1c3kodHJ1ZSk7XG5cblx0XHRcdC8vIHVzZSB1cGxvYWRVcmwgZnJvbSBGaWxlV3JhcHBlciB3aGljaCByZXR1cm5zIGEgY2Fub25pY2FsIFVSTFxuXHRcdFx0ZmlsZVVwbG9hZGVyLnNldFVwbG9hZFVybCh1cGxvYWRVcmwpO1xuXG5cdFx0XHQvLyBzZXQgdGhlIHJlcXVlc3QgaGVhZGVyIGZvciB0aGUgdXBsb2FkXG5cdFx0XHRjb25zdCBmaWxlcyA9IGV2ZW50LmdldFBhcmFtZXRlcihcImZpbGVzXCIpO1xuXHRcdFx0Ly8gdGhlcmUgaXMgb25seSBvbmUgZmlsZSBhcyB3ZSBhbGxvdyBzZWxlY3Rpbmcgb25seSBvbmVcblx0XHRcdGNvbnN0IGZpbGVUeXBlID0gKGZpbGVzICYmIChmaWxlc1swXSBhcyBGaWxlKS50eXBlKSBhcyBzdHJpbmc7XG5cdFx0XHRzZXRIZWFkZXJGaWVsZHMoZmlsZVVwbG9hZGVyLCBmaWxlVHlwZSk7XG5cblx0XHRcdC8vIHN5bmNocm9uaXplIHVwbG9hZCB3aXRoIG90aGVyIHJlcXVlc3RzXG5cdFx0XHRjb25zdCB1cGxvYWRQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XG5cdFx0XHRcdHRoaXMudXBsb2FkUHJvbWlzZXMgPSB0aGlzLnVwbG9hZFByb21pc2VzIHx8IHt9O1xuXHRcdFx0XHR0aGlzLnVwbG9hZFByb21pc2VzW2ZpbGVVcGxvYWRlci5nZXRJZCgpXSA9IHtcblx0XHRcdFx0XHRyZXNvbHZlOiByZXNvbHZlLFxuXHRcdFx0XHRcdHJlamVjdDogcmVqZWN0XG5cdFx0XHRcdH07XG5cdFx0XHRcdGZpbGVVcGxvYWRlci51cGxvYWQoKTtcblx0XHRcdH0pO1xuXHRcdFx0RkVDb250cm9sbGVyLmVkaXRGbG93LnN5bmNUYXNrKHVwbG9hZFByb21pc2UpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNZXNzYWdlQm94LmVycm9yKGdldFJlc291cmNlTW9kZWwoY29udHJvbGxlcikuZ2V0VGV4dChcIk1fRklFTERfRklMRVVQTE9BREVSX0FCT1JURURfVEVYVFwiKSk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIHdoZW4gYSBGaWxlVXBsb2FkIGRpYWxvZyBpcyBvcGVuZWQuXG5cdCAqIEBwYXJhbSBldmVudFxuXHQgKi9cblx0aGFuZGxlT3BlblVwbG9hZGVyOiBmdW5jdGlvbiAoZXZlbnQ6IEV2ZW50PHt9LCBGaWxlVXBsb2FkZXI+KTogdm9pZCB7XG5cdFx0Y29uc3QgZmlsZVVwbG9hZGVyID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0RmllbGRSdW50aW1lSGVscGVyLl9zZW5kQ29sbGFib3JhdGlvbk1lc3NhZ2VGb3JGaWxlVXBsb2FkZXIoZmlsZVVwbG9hZGVyLCBBY3Rpdml0eS5Mb2NrKTtcblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHRvIHNlbmQgY29sbGFib3JhdGlvbiBtZXNzYWdlcyBmcm9tIGEgRmlsZVVwbG9hZGVyLlxuXHQgKiBAcGFyYW0gZmlsZVVwbG9hZGVyXG5cdCAqIEBwYXJhbSBhY3Rpb25cblx0ICovXG5cdF9zZW5kQ29sbGFib3JhdGlvbk1lc3NhZ2VGb3JGaWxlVXBsb2FkZXIoZmlsZVVwbG9hZGVyOiBGaWxlVXBsb2FkZXIsIGFjdGlvbjogQWN0aXZpdHkpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhmaWxlVXBsb2FkZXIpO1xuXHRcdGNvbnN0IGNvbGxhYm9yYXRpdmVEcmFmdCA9IHZpZXcuZ2V0Q29udHJvbGxlcigpLmNvbGxhYm9yYXRpdmVEcmFmdDtcblx0XHRpZiAoY29sbGFib3JhdGl2ZURyYWZ0LmlzQ29ubmVjdGVkKCkpIHtcblx0XHRcdGNvbnN0IGJpbmRpbmdQYXRoID0gZmlsZVVwbG9hZGVyLmdldFBhcmVudCgpPy5nZXRQcm9wZXJ0eShcInByb3BlcnR5UGF0aFwiKTtcblx0XHRcdGNvbnN0IGZ1bGxQYXRoID0gYCR7ZmlsZVVwbG9hZGVyLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKX0vJHtiaW5kaW5nUGF0aH1gO1xuXHRcdFx0Y29sbGFib3JhdGl2ZURyYWZ0LnNlbmQoeyBhY3Rpb24sIGNvbnRlbnQ6IGZ1bGxQYXRoIH0pO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogSGFuZGxlciB3aGVuIGEgRmlsZVVwbG9hZCBkaWFsb2cgaXMgY2xvc2VkLlxuXHQgKiBAcGFyYW0gZXZlbnRcblx0ICovXG5cdGhhbmRsZUNsb3NlVXBsb2FkZXI6IGZ1bmN0aW9uIChldmVudDogRXZlbnQ8e30sIEZpbGVVcGxvYWRlcj4pOiB2b2lkIHtcblx0XHRjb25zdCBmaWxlVXBsb2FkZXIgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRGaWVsZFJ1bnRpbWVIZWxwZXIuX3NlbmRDb2xsYWJvcmF0aW9uTWVzc2FnZUZvckZpbGVVcGxvYWRlcihmaWxlVXBsb2FkZXIsIEFjdGl2aXR5LlVubG9jayk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE9wZW5zIGFuIGV4dGVybmFsIGxpbmsgaW4gdGhlIHNhbWUgdGFiLlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgVVJMIGZyb20gdGhlIGxpbmsncyBkYXRhIGFuZCBvcGVucyBpdCBpbiB0aGUgc2FtZSB0YWIuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCB0aGUgbGluayBjbGljay5cblx0ICovXG5cdG9wZW5FeHRlcm5hbExpbms6IGZ1bmN0aW9uIChldmVudDogRXZlbnQ8e30sIExpbms+KTogdm9pZCB7XG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0aWYgKHNvdXJjZS5kYXRhKFwidXJsXCIpICYmIHNvdXJjZS5nZXRQcm9wZXJ0eShcInRleHRcIikgIT09IFwiXCIpIHtcblx0XHRcdC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgaW4gdGhlIHNhbWUgdGFiIGFzIHRoZSBsaW5rLiBJdCB3YXMgZG9uZSB0byBiZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciB0eXBlIG9mIGxpbmtzLlxuXHRcdFx0b3BlbldpbmRvdyhzb3VyY2UuZGF0YShcInVybFwiKSwgXCJfc2VsZlwiKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgaWNvbiBmb3IgYSBnaXZlbiBNSU1FIHR5cGUuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYEljb25Qb29sYCB0byBnZXQgdGhlIGFwcHJvcHJpYXRlIGljb24gZm9yIHRoZSBzcGVjaWZpZWQgTUlNRSB0eXBlLlxuXHQgKiBAcGFyYW0gbWltZVR5cGUgVGhlIE1JTUUgdHlwZSBmb3Igd2hpY2ggdGhlIGljb24gaXMgdG8gYmUgcmV0cmlldmVkXG5cdCAqIEByZXR1cm5zIFRoZSBpY29uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIE1JTUUgdHlwZVxuXHQgKi9cblx0Z2V0SWNvbkZvck1pbWVUeXBlOiBmdW5jdGlvbiAobWltZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIEljb25Qb29sLmdldEljb25Gb3JNaW1lVHlwZShtaW1lVHlwZSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFRyaWdnZXJzIGFuIGludGVybmFsIG5hdmlnYXRpb24gb24gdGhlIGxpbmsgcGVydGFpbmluZyB0byBEYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGguXG5cdCAqIEBwYXJhbSBzb3VyY2UgU291cmNlIG9mIHRoZSBwcmVzcyBldmVudFxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBJbnN0YW5jZSBvZiB0aGUgY29udHJvbGxlclxuXHQgKiBAcGFyYW0gbmF2UGF0aCBUaGUgbmF2aWdhdGlvbiBwYXRoXG5cdCAqL1xuXHRvbkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDogYXN5bmMgZnVuY3Rpb24gKHNvdXJjZTogQ29udHJvbCwgY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIG5hdlBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmIChjb250cm9sbGVyLl9yb3V0aW5nKSB7XG5cdFx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cblx0XHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHNvdXJjZSksXG5cdFx0XHRcdG1ldGFNb2RlbCA9IGJpbmRpbmdDb250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKTtcblxuXHRcdFx0Y29uc3QgZHJhZnRSb290UGF0aCA9IE1vZGVsSGVscGVyLmdldERyYWZ0Um9vdFBhdGgoYmluZGluZ0NvbnRleHQpID8/IGJpbmRpbmdDb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdGxldCB1cmxOYXZpZ2F0aW9uID0gYXdhaXQgY29udHJvbGxlci5fcm91dGluZy5nZXRIYXNoRm9yTmF2aWdhdGlvbihiaW5kaW5nQ29udGV4dCwgbmF2UGF0aCk7XG5cdFx0XHRjb25zdCBuYXZpZ2F0ZUZuID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRjb250cm9sbGVyXG5cdFx0XHRcdFx0LmdldEFwcENvbXBvbmVudCgpXG5cdFx0XHRcdFx0LmdldFJvdXRlclByb3h5KClcblx0XHRcdFx0XHQubmF2VG9IYXNoKFxuXHRcdFx0XHRcdFx0dXJsTmF2aWdhdGlvbixcblx0XHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdFx0IU1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChiaW5kaW5nQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHR9O1xuXG5cdFx0XHQvLyBUbyBrbm93IGlmIHdlJ3JlIG5hdmlnYXRpbmcgb24gdGhlIHNhbWUgT1AgRW50aXR5XG5cdFx0XHRpZiAoIXVybE5hdmlnYXRpb24/LnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRcdHVybE5hdmlnYXRpb24gPSBgLyR7dXJsTmF2aWdhdGlvbn1gO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgc2FtZU9QTmF2aWdhdGlvbiA9IHVybE5hdmlnYXRpb24uc3RhcnRzV2l0aChkcmFmdFJvb3RQYXRoKTtcblxuXHRcdFx0Ly8gU2hvdyBkcmFmdCBsb3NzIGNvbmZpcm1hdGlvbiBkaWFsb2cgaW4gY2FzZSBvZiBPYmplY3QgcGFnZVxuXHRcdFx0aWYgKHZpZXdEYXRhLmNvbnZlcnRlclR5cGUgPT09IFwiT2JqZWN0UGFnZVwiICYmICFNb2RlbEhlbHBlci5pc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQobWV0YU1vZGVsKSAmJiAhc2FtZU9QTmF2aWdhdGlvbikge1xuXHRcdFx0XHRkcmFmdC5wcm9jZXNzRGF0YUxvc3NPckRyYWZ0RGlzY2FyZENvbmZpcm1hdGlvbihcblx0XHRcdFx0XHRuYXZpZ2F0ZUZuLFxuXHRcdFx0XHRcdEZ1bmN0aW9uLnByb3RvdHlwZSxcblx0XHRcdFx0XHRiaW5kaW5nQ29udGV4dCxcblx0XHRcdFx0XHR2aWV3LmdldENvbnRyb2xsZXIoKSxcblx0XHRcdFx0XHR0cnVlLFxuXHRcdFx0XHRcdGRyYWZ0Lk5hdmlnYXRpb25UeXBlLkZvcndhcmROYXZpZ2F0aW9uXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRuYXZpZ2F0ZUZuKCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy5lcnJvcihcblx0XHRcdFx0XCJGaWVsZFJ1bnRpbWU6IE5vIHJvdXRpbmcgbGlzdGVuZXIgY29udHJvbGxlciBleHRlbnNpb24gZm91bmQuIEludGVybmFsIG5hdmlnYXRpb24gYWJvcnRlZC5cIixcblx0XHRcdFx0XCJzYXAuZmUubWFjcm9zLmZpZWxkLkZpZWxkUnVudGltZVwiLFxuXHRcdFx0XHRcIm9uRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoXCJcblx0XHRcdCk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgc2hvdyB3aG8gaXMgZWRpdGluZyB0aGUgZmllbGQgcG9wb3Zlci5cblx0ICogQHBhcmFtIHNvdXJjZSBUaGUgYXZhdGFyIHdoaWNoIGlzIG5leHQgdG8gdGhlIGZpZWxkIGxvY2tlZFxuXHQgKiBAcGFyYW0gdmlldyBDdXJyZW50IHZpZXdcblx0ICovXG5cdHNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXI6IGZ1bmN0aW9uIChzb3VyY2U6IEF2YXRhciwgdmlldzogVmlldyk6IHZvaWQge1xuXHRcdGNvbnN0IHJlc291cmNlTW9kZWwgPSBSZXNvdXJjZU1vZGVsSGVscGVyLmdldFJlc291cmNlTW9kZWwodmlldyk7XG5cdFx0bGV0IHBvcG92ZXIgPSBFbGVtZW50LmdldEVsZW1lbnRCeUlkKGBtYW5hZ2VDb2xsYWJvcmF0aW9uRHJhZnQtLWVkaXRVc2VyYCkgYXMgUmVzcG9uc2l2ZVBvcG92ZXI7XG5cblx0XHRpZiAoIXBvcG92ZXIpIHtcblx0XHRcdHBvcG92ZXIgPSBuZXcgUmVzcG9uc2l2ZVBvcG92ZXIoXCJtYW5hZ2VDb2xsYWJvcmF0aW9uRHJhZnQtLWVkaXRVc2VyXCIsIHtcblx0XHRcdFx0c2hvd0hlYWRlcjogZmFsc2UsXG5cdFx0XHRcdHBsYWNlbWVudDogXCJCb3R0b21cIlxuXHRcdFx0fSk7XG5cdFx0XHRwb3BvdmVyLmFkZFN0eWxlQ2xhc3MoXCJzYXBVaUNvbnRlbnRQYWRkaW5nXCIpO1xuXHRcdFx0dmlldy5hZGREZXBlbmRlbnQocG9wb3Zlcik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYmluZGluZ1BhdGggPSAoc291cmNlLmdldEJpbmRpbmcoXCJpbml0aWFsc1wiKSBhcyBDb21wb3NpdGVCaW5kaW5nIHwgdW5kZWZpbmVkKVxuXHRcdFx0Py5nZXRCaW5kaW5ncygpXG5cdFx0XHQuZmluZCgoYmluZGluZykgPT4gYmluZGluZz8uZ2V0UGF0aCgpPy5zdGFydHNXaXRoKFwiL2NvbGxhYm9yYXRpb24vYWN0aXZpdGllc1wiKSlcblx0XHRcdC5nZXRQYXRoKCk7XG5cdFx0Y29uc3QgYWN0aXZpdGllcyA9IHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpPy5nZXRPYmplY3QoYmluZGluZ1BhdGgpO1xuXG5cdFx0bGV0IGVkaXRpbmdBY3Rpdml0eTogVXNlckFjdGl2aXR5IHwgdW5kZWZpbmVkO1xuXHRcdGlmIChhY3Rpdml0aWVzICYmIGFjdGl2aXRpZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0ZWRpdGluZ0FjdGl2aXR5ID0gYWN0aXZpdGllcy5maW5kKChhY3Rpdml0eTogVXNlckFjdGl2aXR5KSA9PiB7XG5cdFx0XHRcdHJldHVybiBhY3Rpdml0eS5rZXkgPT09IGdldEFjdGl2aXR5S2V5RnJvbVBhdGgoc291cmNlLmdldEJpbmRpbmdDb250ZXh0KCkhLmdldFBhdGgoKSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cG9wb3Zlci5kZXN0cm95Q29udGVudCgpO1xuXHRcdHBvcG92ZXIuYWRkQ29udGVudChcblx0XHRcdG5ldyBMYWJlbCh7XG5cdFx0XHRcdHRleHQ6IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfQ09MTEFCT1JBVElPTkFWQVRBUl9VU0VSX0VESVRfRklFTERcIiwgW2Ake2VkaXRpbmdBY3Rpdml0eT8ubmFtZX1gXSlcblx0XHRcdH0pXG5cdFx0KTtcblx0XHRwb3BvdmVyLm9wZW5CeShzb3VyY2UpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWVsZFJ1bnRpbWVIZWxwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0VBNkRBLE1BQU1BLGtCQUFrQixHQUFHO0lBQzFCQyxjQUFjLEVBQUUsQ0FBQyxDQUE0RDtJQUM3RUMsbUJBQW1CLEVBQUUsS0FBSztJQUUxQkMsb0JBQW9CLEVBQUUsU0FBQUEsQ0FBVUMsS0FBYyxFQUFFQyxVQUF5QyxFQUFRO01BQ2hHLE1BQU1DLElBQUksR0FBR0MsV0FBVyxDQUFDQyxhQUFhLENBQUNKLEtBQUssQ0FBQztNQUM3QyxNQUFNSyxtQkFBbUIsR0FBR0wsS0FBSyxDQUFDTSxpQkFBaUIsQ0FBQyxDQUFDO01BQ3JELElBQUlDLHNCQUErQjs7TUFFbkM7TUFDQSxNQUFNQyxZQUFZLEdBQUlILG1CQUFtQixFQUFjSSxVQUFVLENBQUMsQ0FBQztNQUVuRSxJQUFJRCxZQUFZLENBQUNFLEdBQUcsQ0FBQyx3Q0FBd0MsQ0FBQyxFQUFFO1FBQy9EO1FBQ0FILHNCQUFzQixHQUFHRixtQkFBOEI7TUFDeEQsQ0FBQyxNQUFNO1FBQ047UUFDQTtRQUNBRSxzQkFBc0IsR0FBR0wsSUFBSSxDQUFDSSxpQkFBaUIsQ0FBQyxDQUFDO01BQ2xEO01BQ0EsTUFBTUssWUFBWSxHQUFHZixrQkFBa0IsQ0FBQ2dCLHNCQUFzQixDQUFDWCxVQUFVLENBQUM7TUFDMUUsTUFBTVksV0FBVyxHQUFHYixLQUFLLENBQUNVLEdBQUcsQ0FBVyxrQkFBa0IsQ0FBQyxJQUFJVixLQUFLLENBQUNjLFlBQVksQ0FBQyxDQUFDO01BQ25GO01BQ0EsTUFBTUMsUUFBUSxHQUFHQyxXQUFXLENBQUNDLHFCQUFxQixDQUFDakIsS0FBSyxDQUFDTSxpQkFBaUIsQ0FBQyxD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
|
|
496
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZFJ1bnRpbWVIZWxwZXIiLCJ1cGxvYWRQcm9taXNlcyIsImNyZWF0aW5nSW5hY3RpdmVSb3ciLCJmZXRjaFJlY29tbWVuZGF0aW9ucyIsImZpZWxkIiwiY29udHJvbGxlciIsInZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJmaWVsZEJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJyZWNvbW1lbmRhdGlvbnNDb250ZXh0IiwiZmllbGRCaW5kaW5nIiwiZ2V0QmluZGluZyIsImlzQSIsImZlQ29udHJvbGxlciIsImdldEV4dGVuc2lvbkNvbnRyb2xsZXIiLCJ2YWx1ZUhlbHBJZCIsImdldFZhbHVlSGVscCIsIm1ldGFQYXRoIiwiTW9kZWxIZWxwZXIiLCJnZXRNZXRhUGF0aEZvckNvbnRleHQiLCJwcm9wZXJ0eVBhdGgiLCJkYXRhIiwicmVwbGFjZSIsImZpZWxkUGF0aCIsImdldFBhdGgiLCJzZWxlY3RlZFZhbHVlIiwiZ2V0VmFsdWUiLCJyZWNvbW1lbmRhdGlvbnMiLCJ1cGRhdGVUZWxlbWV0cnlEYXRhQmFzZWRPblVzZXJTZWxlY3Rpb24iLCJpbmNsdWRlcyIsInRhYmxlSWQiLCJzdWJzdHJpbmciLCJpbmRleE9mIiwidGFibGUiLCJieUlkIiwiY29udGV4dElkZW50aWZpZXIiLCJnZXRQYXJlbnQiLCJnZXRJZGVudGlmaWVyQ29sdW1uIiwiZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9uc09uRmllbGRDaGFuZ2UiLCJjb250ZXh0Iiwib0NvbnRyb2xsZXIiLCJfY29udHJvbGxlciIsImdldEZpZWxkU3RhdGVPbkNoYW5nZSIsIm9FdmVudCIsIm9Tb3VyY2VGaWVsZCIsImdldFNvdXJjZSIsIm1GaWVsZFN0YXRlIiwiX2lzQmluZGluZ1N0YXRlTWVzc2FnZXMiLCJvQmluZGluZyIsImdldERhdGFTdGF0ZSIsImdldEludmFsaWRWYWx1ZSIsInVuZGVmaW5lZCIsImdldENvbnRlbnQiLCJGaWVsZFdyYXBwZXIiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJnZXRFZGl0TW9kZSIsImdldENvbnRlbnRFZGl0IiwiYklzVmFsaWQiLCJnZXRQYXJhbWV0ZXIiLCJnZXRNYXhDb25kaXRpb25zIiwib1ZhbHVlQmluZGluZ0luZm8iLCJnZXRCaW5kaW5nSW5mbyIsImJpbmRpbmciLCJnZXRQcm9wZXJ0eSIsImZpZWxkVmFsdWUiLCJ2YWxpZGl0eSIsInN0YXRlIiwicHJlc3NMaW5rIiwib1NvdXJjZSIsInNhcG1MaW5rIiwiZmluZEVsZW1lbnRzIiwiZWxlbSIsImdldERlcGVuZGVudHMiLCJsZW5ndGgiLCJvRmllbGRJbmZvIiwib3BlbkxpbmsiLCJtZGNMaW5rIiwiaFJlZiIsImdldFRyaWdnZXJIcmVmIiwiX3VzZURlbGVnYXRlSXRlbXMiLCJsaW5rSXRlbXMiLCJyZXRyaWV2ZUxpbmtJdGVtcyIsImdldFBheWxvYWQiLCJoYXNRdWlja1ZpZXdGYWNldHMiLCJwb3BvdmVyIiwiY3JlYXRlUG9wb3ZlcldpdGhOb1RhcmdldHMiLCJhZGREZXBlbmRlbnQiLCJvcGVuQnkiLCJvcGVuIiwiZXJyb3IiLCJMb2ciLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJzaGVsbFNlcnZpY2UiLCJnZXRTaGVsbFNlcnZpY2VzIiwic2hlbGxIYXNoIiwicGFyc2VTaGVsbEhhc2giLCJuYXZBcmdzIiwidGFyZ2V0Iiwic2VtYW50aWNPYmplY3QiLCJhY3Rpb24iLCJwYXJhbXMiLCJLZWVwQWxpdmVIZWxwZXIiLCJzdG9yZUNvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JIYXNoIiwiaXNTdGlja3lFZGl0TW9kZSIsIm5hdmlnYXRlIiwibmV3SHJlZiIsImhyZWZGb3JFeHRlcm5hbCIsIm9wZW5XaW5kb3ciLCJtZGNMaW5rSWQiLCJnZXRJZCIsImlsbHVzdHJhdGVkTWVzc2FnZVNldHRpbmdzIiwidGl0bGUiLCJnZXRSZXNvdXJjZU1vZGVsIiwiZ2V0VGV4dCIsImRlc2NyaXB0aW9uIiwiZW5hYmxlRm9ybWF0dGVkVGV4dCIsImlsbHVzdHJhdGlvblNpemUiLCJJbGx1c3RyYXRlZE1lc3NhZ2VTaXplIiwiRXh0cmFTbWFsbCIsImlsbHVzdHJhdGlvblR5cGUiLCJJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlIiwiTm9EYXRhIiwiaWxsdXN0cmF0ZWRNZXNzYWdlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwicG9wb3ZlclNldHRpbmdzIiwiaG9yaXpvbnRhbFNjcm9sbGluZyIsInNob3dIZWFkZXIiLCJEZXZpY2UiLCJzeXN0ZW0iLCJwaG9uZSIsInBsYWNlbWVudCIsIm1vYmlsZWxpYnJhcnkiLCJQbGFjZW1lbnRUeXBlIiwiQXV0byIsImNvbnRlbnQiLCJhZnRlckNsb3NlIiwiZXZlbnQiLCJkZXN0cm95IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJoYW5kbGVUeXBlTWlzc21hdGNoIiwiZmlsZVVwbG9hZGVyIiwiZ2l2ZW5UeXBlIiwiYWNjZXB0ZWRUeXBlcyIsImdldE1pbWVUeXBlIiwic2hvd1R5cGVNaXNtYXRjaERpYWxvZyIsImhhbmRsZUZpbGVTaXplRXhjZWVkIiwic2hvd0ZpbGVTaXplRXhjZWVkRGlhbG9nIiwiZ2V0TWF4aW11bUZpbGVTaXplIiwidG9GaXhlZCIsImhhbmRsZVVwbG9hZENvbXBsZXRlIiwicHJvcGVydHlGaWxlTmFtZSIsInN0YXR1cyIsIk51bWJlciIsImZpbGVXcmFwcGVyIiwic2V0VUlCdXN5IiwiZGlzcGxheU1lc3NhZ2VGb3JGYWlsZWRVcGxvYWQiLCJyZWplY3QiLCJuZXdFVGFnIiwiZXRhZyIsInNldFByb3BlcnR5IiwicGF0aCIsImF2YXRhciIsInJlZnJlc2hBdmF0YXJDYWNoZUJ1c3RpbmciLCJfY2FsbFNpZGVFZmZlY3RzRm9yU3RyZWFtIiwicmVzb2x2ZSIsImZpcmVFdmVudCIsImlzQ29sbGFib3JhdGlvbkVuYWJsZWQiLCJjb2xsYWJvcmF0aXZlRHJhZnQiLCJpc0Nvbm5lY3RlZCIsIm5vdGlmaWNhdGlvbkRhdGEiLCJwdXNoIiwib1ZpZXciLCJoYXNQZW5kaW5nQ2hhbmdlcyIsImF0dGFjaEV2ZW50T25jZSIsInNlbmQiLCJBY3Rpdml0eSIsIkNoYW5nZSIsIlVubG9jayIsInJlbW92ZVN0cmVhbSIsImRlbGV0ZUJ1dHRvbiIsImJDb2xsYWJvcmF0aW9uRW5hYmxlZCIsIkxvY2siLCJvQ29udHJvbCIsIm9GRUNvbnRyb2xsZXIiLCJpc1RyYW5zaWVudCIsIl9zaWRlRWZmZWN0cyIsImhhbmRsZUZpZWxkQ2hhbmdlIiwidXBsb2FkU3RyZWFtIiwiRkVDb250cm9sbGVyIiwidXBsb2FkVXJsIiwiZ2V0VXBsb2FkVXJsIiwic2V0VXBsb2FkVXJsIiwiZmlsZXMiLCJmaWxlVHlwZSIsInR5cGUiLCJzZXRIZWFkZXJGaWVsZHMiLCJ1cGxvYWRQcm9taXNlIiwiUHJvbWlzZSIsInVwbG9hZCIsImVkaXRGbG93Iiwic3luY1Rhc2siLCJNZXNzYWdlQm94IiwiaGFuZGxlT3BlblVwbG9hZGVyIiwiX3NlbmRDb2xsYWJvcmF0aW9uTWVzc2FnZUZvckZpbGVVcGxvYWRlciIsImdldENvbnRyb2xsZXIiLCJiaW5kaW5nUGF0aCIsImZ1bGxQYXRoIiwiaGFuZGxlQ2xvc2VVcGxvYWRlciIsIm9wZW5FeHRlcm5hbExpbmsiLCJzb3VyY2UiLCJnZXRJY29uRm9yTWltZVR5cGUiLCJtaW1lVHlwZSIsIkljb25Qb29sIiwib25EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGgiLCJuYXZQYXRoIiwiX3JvdXRpbmciLCJiaW5kaW5nQ29udGV4dCIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwidmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsImRyYWZ0Um9vdFBhdGgiLCJnZXREcmFmdFJvb3RQYXRoIiwidXJsTmF2aWdhdGlvbiIsImdldEhhc2hGb3JOYXZpZ2F0aW9uIiwiaXNTdGlja3lNb2RlIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiaXNIaWRkZW5EcmFmdEVuYWJsZWQiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldENhcGFiaWxpdGllcyIsIkhpZGRlbkRyYWZ0IiwiZW5hYmxlZCIsIm5hdmlnYXRlRm4iLCJnZXRSb3V0ZXJQcm94eSIsIm5hdlRvSGFzaCIsInN0YXJ0c1dpdGgiLCJzYW1lT1BOYXZpZ2F0aW9uIiwiY29udmVydGVyVHlwZSIsImRyYWZ0IiwicHJvY2Vzc0RhdGFMb3NzT3JEcmFmdERpc2NhcmRDb25maXJtYXRpb24iLCJGdW5jdGlvbiIsInByb3RvdHlwZSIsIk5hdmlnYXRpb25UeXBlIiwiRm9yd2FyZE5hdmlnYXRpb24iXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpZWxkUnVudGltZUhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgRW5oYW5jZVdpdGhVSTUgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBFeHRlbnNpb25BUEkgZnJvbSBcInNhcC9mZS9jb3JlL0V4dGVuc2lvbkFQSVwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCBkcmFmdCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvZWRpdEZsb3cvZHJhZnRcIjtcbmltcG9ydCBLZWVwQWxpdmVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvS2VlcEFsaXZlSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGdldFJlc291cmNlTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBUZXh0TGluayBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9UZXh0TGlua1wiO1xuaW1wb3J0IHR5cGUgeyBMaW5rRGVsZWdhdGVQYXlsb2FkIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvcXVpY2tWaWV3L1F1aWNrVmlld0RlbGVnYXRlXCI7XG5pbXBvcnQgdHlwZSB7IEJ1dHRvbiRQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuXG5pbXBvcnQgdHlwZSBDaGVja0JveCBmcm9tIFwic2FwL20vQ2hlY2tCb3hcIjtcbmltcG9ydCB0eXBlIHsgQ2hlY2tCb3gkU2VsZWN0RXZlbnRQYXJhbWV0ZXJzIH0gZnJvbSBcInNhcC9tL0NoZWNrQm94XCI7XG5pbXBvcnQgdHlwZSB7ICRJbGx1c3RyYXRlZE1lc3NhZ2VTZXR0aW5ncyB9IGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2UgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVwiO1xuXG5pbXBvcnQgdHlwZSB7IEhpZGRlbkRyYWZ0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZVNpemUgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVNpemVcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgdHlwZSBJbnB1dEJhc2UgZnJvbSBcInNhcC9tL0lucHV0QmFzZVwiO1xuaW1wb3J0IHR5cGUgeyBJbnB1dEJhc2UkQ2hhbmdlRXZlbnRQYXJhbWV0ZXJzIH0gZnJvbSBcInNhcC9tL0lucHV0QmFzZVwiO1xuaW1wb3J0IHR5cGUgTGluayBmcm9tIFwic2FwL20vTGlua1wiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCB0eXBlIE9iamVjdElkZW50aWZpZXIgZnJvbSBcInNhcC9tL09iamVjdElkZW50aWZpZXJcIjtcbmltcG9ydCB0eXBlIFJhdGluZ0luZGljYXRvciBmcm9tIFwic2FwL20vUmF0aW5nSW5kaWNhdG9yXCI7XG5pbXBvcnQgdHlwZSB7IFJhdGluZ0luZGljYXRvciRDaGFuZ2VFdmVudFBhcmFtZXRlcnMgfSBmcm9tIFwic2FwL20vUmF0aW5nSW5kaWNhdG9yXCI7XG5pbXBvcnQgdHlwZSB7ICRSZXNwb25zaXZlUG9wb3ZlclNldHRpbmdzIH0gZnJvbSBcInNhcC9tL1Jlc3BvbnNpdmVQb3BvdmVyXCI7XG5pbXBvcnQgUmVzcG9uc2l2ZVBvcG92ZXIgZnJvbSBcInNhcC9tL1Jlc3BvbnNpdmVQb3BvdmVyXCI7XG5pbXBvcnQgbW9iaWxlbGlicmFyeSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIEV2ZW50LCBkZWZhdWx0IGFzIFVJNUV2ZW50IH0gZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgSWNvblBvb2wgZnJvbSBcInNhcC91aS9jb3JlL0ljb25Qb29sXCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkJENoYW5nZUV2ZW50LCBGaWVsZCRDaGFuZ2VFdmVudFBhcmFtZXRlcnMsIGRlZmF1bHQgYXMgbWRjRmllbGQgfSBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IHR5cGUgTWRjTGluayBmcm9tIFwic2FwL3VpL21kYy9MaW5rXCI7XG5pbXBvcnQgdHlwZSBEYXRhU3RhdGUgZnJvbSBcInNhcC91aS9tb2RlbC9EYXRhU3RhdGVcIjtcbmltcG9ydCB0eXBlIFByb3BlcnR5QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL1Byb3BlcnR5QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIEZpbGVVcGxvYWRlciBmcm9tIFwic2FwL3VpL3VuaWZpZWQvRmlsZVVwbG9hZGVyXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEZpbGVVcGxvYWRlciRDaGFuZ2VFdmVudCxcblx0RmlsZVVwbG9hZGVyJEZpbGVTaXplRXhjZWVkRXZlbnQsXG5cdEZpbGVVcGxvYWRlciRUeXBlTWlzc21hdGNoRXZlbnQsXG5cdEZpbGVVcGxvYWRlciRVcGxvYWRDb21wbGV0ZUV2ZW50XG59IGZyb20gXCJzYXAvdWkvdW5pZmllZC9GaWxlVXBsb2FkZXJcIjtcbmltcG9ydCBvcGVuV2luZG93IGZyb20gXCJzYXAvdWkvdXRpbC9vcGVuV2luZG93XCI7XG5pbXBvcnQgdHlwZSBGaWVsZCBmcm9tIFwiLi4vRmllbGRcIjtcbmltcG9ydCBGaWVsZFdyYXBwZXIgZnJvbSBcIi4uL2NvbnRyb2xzL0ZpZWxkV3JhcHBlclwiO1xuaW1wb3J0IHR5cGUgRmlsZVdyYXBwZXIgZnJvbSBcIi4uL2NvbnRyb2xzL0ZpbGVXcmFwcGVyXCI7XG5pbXBvcnQge1xuXHRkaXNwbGF5TWVzc2FnZUZvckZhaWxlZFVwbG9hZCxcblx0c2V0SGVhZGVyRmllbGRzLFxuXHRzaG93RmlsZVNpemVFeGNlZWREaWFsb2csXG5cdHNob3dUeXBlTWlzbWF0Y2hEaWFsb2dcbn0gZnJvbSBcIi4uL2ludGVybmFsL2hlbHBlcnMvVXBsb2FkXCI7XG5pbXBvcnQgdHlwZSBUYWJsZUFQSSBmcm9tIFwiLi4vdGFibGUvVGFibGVBUElcIjtcblxudHlwZSBGaWxlID0ge1xuXHR0eXBlOiBzdHJpbmc7XG59O1xuXG5jb25zdCBGaWVsZFJ1bnRpbWVIZWxwZXIgPSB7XG5cdHVwbG9hZFByb21pc2VzOiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB7IHJlc29sdmU6IEZ1bmN0aW9uOyByZWplY3Q6IEZ1bmN0aW9uIH0+LFxuXHRjcmVhdGluZ0luYWN0aXZlUm93OiBmYWxzZSxcblxuXHRmZXRjaFJlY29tbWVuZGF0aW9uczogZnVuY3Rpb24gKGZpZWxkOiBDb250cm9sLCBjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciB8IEV4dGVuc2lvbkFQSSk6IHZvaWQge1xuXHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGZpZWxkKTtcblx0XHRjb25zdCBmaWVsZEJpbmRpbmdDb250ZXh0ID0gZmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRsZXQgcmVjb21tZW5kYXRpb25zQ29udGV4dDogQ29udGV4dDtcblxuXHRcdC8vIGRldGVybWluZSByZWNvbW1lbmRhdGlvbiBjb250ZXh0IHRvIHVzZVxuXHRcdGNvbnN0IGZpZWxkQmluZGluZyA9IChmaWVsZEJpbmRpbmdDb250ZXh0IGFzIENvbnRleHQpPy5nZXRCaW5kaW5nKCk7XG5cblx0XHRpZiAoZmllbGRCaW5kaW5nLmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpKSB7XG5cdFx0XHQvLyBpbnNpZGUgYSB0YWJsZSwgdXNlIHRoZSByb3dcblx0XHRcdHJlY29tbWVuZGF0aW9uc0NvbnRleHQgPSBmaWVsZEJpbmRpbmdDb250ZXh0IGFzIENvbnRleHQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGluc2lkZSBhIGZvcm0gbm93XG5cdFx0XHQvLyBjYW4gaGF2ZSAxLTEgbmF2aWdhdGlvbiBwcm9wZXJ0eS9kaXJlY3QgcHJvcGVydHkgLSB1c2UgdmlldyBjb250ZXh0XG5cdFx0XHRyZWNvbW1lbmRhdGlvbnNDb250ZXh0ID0gdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdH1cblx0XHRjb25zdCBmZUNvbnRyb2xsZXIgPSBGaWVsZFJ1bnRpbWVIZWxwZXIuZ2V0RXh0ZW5zaW9uQ29udHJvbGxlcihjb250cm9sbGVyKTtcblx0XHRjb25zdCB2YWx1ZUhlbHBJZCA9IGZpZWxkLmlzQTxtZGNGaWVsZD4oXCJzYXAudWkubWRjLkZpZWxkXCIpICYmIGZpZWxkLmdldFZhbHVlSGVscCgpO1xuXHRcdC8vIHVwZGF0ZSB0ZWxlbWV0cnkgZGF0YSBhcyBwZXIgdXNlciBzZWxlY3Rpb25cblx0XHRjb25zdCBtZXRhUGF0aCA9IE1vZGVsSGVscGVyLmdldE1ldGFQYXRoRm9yQ29udGV4dChmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQpO1xuXHRcdGNvbnN0IHByb3BlcnR5UGF0aCA9IGZpZWxkLmRhdGEoXCJzb3VyY2VQYXRoXCIpLnJlcGxhY2UobWV0YVBhdGgsIFwiXCIpO1xuXHRcdGNvbnN0IGZpZWxkUGF0aCA9IGAke2ZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKX0ke3Byb3BlcnR5UGF0aH1gO1xuXHRcdGNvbnN0IHNlbGVjdGVkVmFsdWUgPSBmaWVsZC5pc0E8bWRjRmllbGQ+KFwic2FwLnVpLm1kYy5GaWVsZFwiKSAmJiBmaWVsZC5nZXRWYWx1ZSgpO1xuXHRcdGZlQ29udHJvbGxlci5yZWNvbW1lbmRhdGlvbnMudXBkYXRlVGVsZW1ldHJ5RGF0YUJhc2VkT25Vc2VyU2VsZWN0aW9uKGZpZWxkUGF0aCwgc2VsZWN0ZWRWYWx1ZSk7XG5cblx0XHRpZiAodmFsdWVIZWxwSWQgJiYgdmFsdWVIZWxwSWQuaW5jbHVkZXMoXCI6OlRhYmxlVmFsdWVIZWxwOjpcIikpIHtcblx0XHRcdGNvbnN0IHRhYmxlSWQgPSB2YWx1ZUhlbHBJZC5zdWJzdHJpbmcoMCwgdmFsdWVIZWxwSWQuaW5kZXhPZihcIjo6VGFibGVWYWx1ZUhlbHA6OlwiKSk7XG5cdFx0XHRjb25zdCB0YWJsZSA9IHZpZXcuYnlJZCh0YWJsZUlkKTtcblx0XHRcdGNvbnN0IGNvbnRleHRJZGVudGlmaWVyID0gKHRhYmxlPy5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSk/LmdldElkZW50aWZpZXJDb2x1bW4oKSBhcyBzdHJpbmdbXTtcblx0XHRcdGZlQ29udHJvbGxlci5yZWNvbW1lbmRhdGlvbnMuZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9uc09uRmllbGRDaGFuZ2UoZmllbGQsIHtcblx0XHRcdFx0Y29udGV4dDogcmVjb21tZW5kYXRpb25zQ29udGV4dCxcblx0XHRcdFx0Y29udGV4dElkZW50aWZpZXJcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmZUNvbnRyb2xsZXIucmVjb21tZW5kYXRpb25zLmZldGNoQW5kQXBwbHlSZWNvbW1lbmRhdGlvbnNPbkZpZWxkQ2hhbmdlKGZpZWxkLCB7IGNvbnRleHQ6IHJlY29tbWVuZGF0aW9uc0NvbnRleHQgfSk7XG5cdFx0fVxuXHR9LFxuXG5cdGdldEV4dGVuc2lvbkNvbnRyb2xsZXI6IGZ1bmN0aW9uIChvQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIgfCBFeHRlbnNpb25BUEkpOiBQYWdlQ29udHJvbGxlciB7XG5cdFx0cmV0dXJuIG9Db250cm9sbGVyLmlzQTxFeHRlbnNpb25BUEk+KFwic2FwLmZlLmNvcmUuRXh0ZW5zaW9uQVBJXCIpID8gb0NvbnRyb2xsZXIuX2NvbnRyb2xsZXIgOiBvQ29udHJvbGxlcjtcblx0fSxcblxuXHQvKipcblx0ICogR2V0cyB0aGUgZmllbGQgdmFsdWUgYW5kIHZhbGlkaXR5IG9uIGEgY2hhbmdlIGV2ZW50LlxuXHQgKiBAcGFyYW0gb0V2ZW50IFRoZSBldmVudCBvYmplY3QgcGFzc2VkIGJ5IHRoZSBjaGFuZ2UgZXZlbnRcblx0ICogQHJldHVybnMgRmllbGQgdmFsdWUgYW5kIHZhbGlkaXR5XG5cdCAqL1xuXHRnZXRGaWVsZFN0YXRlT25DaGFuZ2U6IGZ1bmN0aW9uIChcblx0XHRvRXZlbnQ6IFVJNUV2ZW50PFxuXHRcdFx0fCB7IHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkOyBpc1ZhbGlkOiBib29sZWFuIH1cblx0XHRcdHwgQ2hlY2tCb3gkU2VsZWN0RXZlbnRQYXJhbWV0ZXJzXG5cdFx0XHR8IElucHV0QmFzZSRDaGFuZ2VFdmVudFBhcmFtZXRlcnNcblx0XHRcdHwgRmllbGQkQ2hhbmdlRXZlbnRQYXJhbWV0ZXJzXG5cdFx0XHR8IFJhdGluZ0luZGljYXRvciRDaGFuZ2VFdmVudFBhcmFtZXRlcnMsXG5cdFx0XHRDaGVja0JveCB8IElucHV0QmFzZSB8IG1kY0ZpZWxkIHwgUmF0aW5nSW5kaWNhdG9yIHwgRmllbGRcblx0XHQ+XG5cdCk6IHtcblx0XHRmaWVsZDogQ29udHJvbDtcblx0XHRzdGF0ZToge1xuXHRcdFx0ZmllbGRWYWx1ZT86IHVua25vd247XG5cdFx0XHR2YWxpZGl0eTogYm9vbGVhbjtcblx0XHR9O1xuXHR9IHtcblx0XHRsZXQgb1NvdXJjZUZpZWxkID0gb0V2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0bUZpZWxkU3RhdGU6IHtcblx0XHRcdFx0ZmllbGRWYWx1ZT86IHVua25vd247XG5cdFx0XHRcdHZhbGlkaXR5OiBib29sZWFuO1xuXHRcdFx0fTtcblx0XHRjb25zdCBfaXNCaW5kaW5nU3RhdGVNZXNzYWdlcyA9IGZ1bmN0aW9uIChvQmluZGluZzogUHJvcGVydHlCaW5kaW5nICYgeyBnZXREYXRhU3RhdGU6ICgpID0+IERhdGFTdGF0ZSB9KTogYm9vbGVhbiB7XG5cdFx0XHRyZXR1cm4gb0JpbmRpbmcgJiYgb0JpbmRpbmcuZ2V0RGF0YVN0YXRlKCkgPyBvQmluZGluZy5nZXREYXRhU3RhdGUoKS5nZXRJbnZhbGlkVmFsdWUoKSA9PT0gdW5kZWZpbmVkIDogdHJ1ZTtcblx0XHR9O1xuXHRcdGlmIChvU291cmNlRmllbGQuaXNBPG1kY0ZpZWxkPihcInNhcC5mZS5tYWNyb3MuZmllbGQuRmllbGRcIikpIHtcblx0XHRcdG9Tb3VyY2VGaWVsZCA9IG9Tb3VyY2VGaWVsZC5nZXRDb250ZW50KCkgYXMgbWRjRmllbGQ7XG5cdFx0fVxuXHRcdGlmIChvU291cmNlRmllbGQuaXNBPEVuaGFuY2VXaXRoVUk1PEZpZWxkPj4oXCJzYXAuZmUubWFjcm9zLkZpZWxkXCIpKSB7XG5cdFx0XHRvU291cmNlRmllbGQgPSBvU291cmNlRmllbGQuZ2V0Q29udGVudCgpIGFzIG1kY0ZpZWxkO1xuXHRcdH1cblxuXHRcdGlmIChcblx0XHRcdG9Tb3VyY2VGaWVsZC5pc0E8RW5oYW5jZVdpdGhVSTU8RmllbGRXcmFwcGVyPj4oRmllbGRXcmFwcGVyLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpKSAmJlxuXHRcdFx0b1NvdXJjZUZpZWxkLmdldEVkaXRNb2RlKCkgPT09IFwiRWRpdGFibGVcIlxuXHRcdCkge1xuXHRcdFx0b1NvdXJjZUZpZWxkID0gKG9Tb3VyY2VGaWVsZCBhcyBFbmhhbmNlV2l0aFVJNTxGaWVsZFdyYXBwZXI+KS5nZXRDb250ZW50RWRpdCgpWzBdIGFzIG1kY0ZpZWxkO1xuXHRcdH1cblxuXHRcdGlmIChvU291cmNlRmllbGQ/LmlzQTxtZGNGaWVsZD4oXCJzYXAudWkubWRjLkZpZWxkXCIpKSB7XG5cdFx0XHRsZXQgYklzVmFsaWQ6IGJvb2xlYW4gPVxuXHRcdFx0XHQob0V2ZW50IGFzIEZpZWxkJENoYW5nZUV2ZW50KS5nZXRQYXJhbWV0ZXIoXCJ2YWxpZFwiKSB8fFxuXHRcdFx0XHQob0V2ZW50IGFzIFVJNUV2ZW50PHsgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQ7IGlzVmFsaWQ6IGJvb2xlYW4gfSwgbWRjRmllbGQ+KS5nZXRQYXJhbWV0ZXIoXCJpc1ZhbGlkXCIpO1xuXHRcdFx0aWYgKGJJc1ZhbGlkID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0aWYgKG9Tb3VyY2VGaWVsZC5nZXRNYXhDb25kaXRpb25zKCkgPT09IDEpIHtcblx0XHRcdFx0XHRjb25zdCBvVmFsdWVCaW5kaW5nSW5mbyA9IG9Tb3VyY2VGaWVsZC5nZXRCaW5kaW5nSW5mbyhcInZhbHVlXCIpO1xuXHRcdFx0XHRcdGJJc1ZhbGlkID0gX2lzQmluZGluZ1N0YXRlTWVzc2FnZXMob1ZhbHVlQmluZGluZ0luZm8gJiYgb1ZhbHVlQmluZGluZ0luZm8uYmluZGluZyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG9Tb3VyY2VGaWVsZC5nZXRWYWx1ZSgpID09PSBcIlwiICYmICFvU291cmNlRmllbGQuZ2V0UHJvcGVydHkoXCJyZXF1aXJlZFwiKSkge1xuXHRcdFx0XHRcdGJJc1ZhbGlkID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0bUZpZWxkU3RhdGUgPSB7XG5cdFx0XHRcdGZpZWxkVmFsdWU6IG9Tb3VyY2VGaWVsZC5nZXRWYWx1ZSgpLFxuXHRcdFx0XHR2YWxpZGl0eTogISFiSXNWYWxpZFxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gb1NvdXJjZUZpZWxkIGV4dGVuZHMgZnJvbSBhIEZpbGVVcGxvYWRlciB8fCBJbnB1dCB8fCBpcyBhIENoZWNrQm94XG5cdFx0XHRjb25zdCBvQmluZGluZyA9XG5cdFx0XHRcdChvU291cmNlRmllbGQgYXMgQ29udHJvbCkuZ2V0QmluZGluZyhcInVwbG9hZFVybFwiKSB8fFxuXHRcdFx0XHQob1NvdXJjZUZpZWxkIGFzIENvbnRyb2wpLmdldEJpbmRpbmcoXCJ2YWx1ZVwiKSB8fFxuXHRcdFx0XHQob1NvdXJjZUZpZWxkIGFzIENvbnRyb2wpLmdldEJpbmRpbmcoXCJzZWxlY3RlZFwiKTtcblx0XHRcdG1GaWVsZFN0YXRlID0ge1xuXHRcdFx0XHRmaWVsZFZhbHVlOiBvQmluZGluZyAmJiAob0JpbmRpbmcgYXMgUHJvcGVydHlCaW5kaW5nKS5nZXRWYWx1ZSgpLFxuXHRcdFx0XHR2YWxpZGl0eTogX2lzQmluZGluZ1N0YXRlTWVzc2FnZXMob0JpbmRpbmcgYXMgUHJvcGVydHlCaW5kaW5nICYgeyBnZXREYXRhU3RhdGU6ICgpID0+IERhdGFTdGF0ZSB9KVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdGZpZWxkOiBvU291cmNlRmllbGQsXG5cdFx0XHRzdGF0ZTogbUZpZWxkU3RhdGVcblx0XHR9O1xuXHR9LFxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgcHJlc3MgZXZlbnQgZm9yIGEgbGluay5cblx0ICogQHBhcmFtIG9FdmVudCBUaGUgcHJlc3MgZXZlbnRcblx0ICogQHJldHVybnMgVGhlIHByZXNzZWQgbGlua1xuXHQgKi9cblx0cHJlc3NMaW5rOiBhc3luYyBmdW5jdGlvbiAob0V2ZW50OiBCdXR0b24kUHJlc3NFdmVudCk6IFByb21pc2U8TGluaz4ge1xuXHRcdGNvbnN0IG9Tb3VyY2UgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0bGV0IHNhcG1MaW5rID0gb1NvdXJjZS5pc0E8T2JqZWN0SWRlbnRpZmllcj4oXCJzYXAubS5PYmplY3RJZGVudGlmaWVyXCIpXG5cdFx0XHQ/IG9Tb3VyY2UuZmluZEVsZW1lbnRzKGZhbHNlLCAoZWxlbTogRWxlbWVudCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBlbGVtLmlzQTxMaW5rPihcInNhcC5tLkxpbmtcIik7XG5cdFx0XHQgIH0pWzBdXG5cdFx0XHQ6IG9Tb3VyY2U7XG5cdFx0aWYgKG9Tb3VyY2U/LmlzQTxUZXh0TGluaz4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLlRleHRMaW5rXCIpKSB7XG5cdFx0XHQvL3doZW4gdGhlIGxpbmsgaXMgaW5zaWRlIGEgVGV4dExpbmsgY29udHJvbCwgdGhlIGRlcGVuZGVudCB3aWxsIGJlIG9uIHRoZSBUZXh0TGlua1xuXHRcdFx0c2FwbUxpbmsgPSBvU291cmNlLmdldENvbnRlbnQoKSBhcyBMaW5rO1xuXHRcdH1cblxuXHRcdGlmIChvU291cmNlLmdldERlcGVuZGVudHMoKSAmJiBvU291cmNlLmdldERlcGVuZGVudHMoKS5sZW5ndGggPiAwICYmIHNhcG1MaW5rLmdldFByb3BlcnR5KFwidGV4dFwiKSAhPT0gXCJcIikge1xuXHRcdFx0Y29uc3Qgb0ZpZWxkSW5mbyA9IG9Tb3VyY2UuZ2V0RGVwZW5kZW50cygpWzBdO1xuXHRcdFx0aWYgKG9GaWVsZEluZm8gJiYgb0ZpZWxkSW5mby5pc0E8TWRjTGluaz4oXCJzYXAudWkubWRjLkxpbmtcIikpIHtcblx0XHRcdFx0YXdhaXQgRmllbGRSdW50aW1lSGVscGVyLm9wZW5MaW5rKG9GaWVsZEluZm8sIHNhcG1MaW5rIGFzIExpbmspO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc2FwbUxpbmsgYXMgTGluaztcblx0fSxcblxuXHRvcGVuTGluazogYXN5bmMgZnVuY3Rpb24gKG1kY0xpbms6IE1kY0xpbmssIHNhcG1MaW5rOiBMaW5rKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGhSZWYgPSBhd2FpdCBtZGNMaW5rLmdldFRyaWdnZXJIcmVmKCk7XG5cdFx0XHRpZiAoIWhSZWYpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRhd2FpdCAobWRjTGluayBhcyB1bmtub3duIGFzIHsgX3VzZURlbGVnYXRlSXRlbXM6IEZ1bmN0aW9uIH0pLl91c2VEZWxlZ2F0ZUl0ZW1zKCk7XG5cdFx0XHRcdFx0Y29uc3QgbGlua0l0ZW1zID0gYXdhaXQgbWRjTGluay5yZXRyaWV2ZUxpbmtJdGVtcygpO1xuXHRcdFx0XHRcdGlmIChsaW5rSXRlbXM/Lmxlbmd0aCA9PT0gMCAmJiAobWRjTGluay5nZXRQYXlsb2FkKCkgYXMgTGlua0RlbGVnYXRlUGF5bG9hZCkuaGFzUXVpY2tWaWV3RmFjZXRzID09PSBcImZhbHNlXCIpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHBvcG92ZXI6IFJlc3BvbnNpdmVQb3BvdmVyID0gRmllbGRSdW50aW1lSGVscGVyLmNyZWF0ZVBvcG92ZXJXaXRoTm9UYXJnZXRzKG1kY0xpbmspO1xuXHRcdFx0XHRcdFx0bWRjTGluay5hZGREZXBlbmRlbnQocG9wb3Zlcik7XG5cdFx0XHRcdFx0XHRwb3BvdmVyLm9wZW5CeShzYXBtTGluayBhcyB1bmtub3duIGFzIENvbnRyb2wpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0XHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdFx0XHRhd2FpdCBtZGNMaW5rLm9wZW4oc2FwbUxpbmsgYXMgdW5rbm93biBhcyBDb250cm9sKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGBDYW5ub3QgcmV0cmlldmUgdGhlIFF1aWNrVmlldyBQb3BvdmVyIGRpYWxvZzogJHtlcnJvcn1gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoc2FwbUxpbmspO1xuXHRcdFx0XHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodmlldyk7XG5cdFx0XHRcdGNvbnN0IHNoZWxsU2VydmljZSA9IGFwcENvbXBvbmVudC5nZXRTaGVsbFNlcnZpY2VzKCk7XG5cdFx0XHRcdGNvbnN0IHNoZWxsSGFzaCA9IHNoZWxsU2VydmljZS5wYXJzZVNoZWxsSGFzaChoUmVmKTtcblx0XHRcdFx0Y29uc3QgbmF2QXJncyA9IHtcblx0XHRcdFx0XHR0YXJnZXQ6IHtcblx0XHRcdFx0XHRcdHNlbWFudGljT2JqZWN0OiBzaGVsbEhhc2guc2VtYW50aWNPYmplY3QsXG5cdFx0XHRcdFx0XHRhY3Rpb246IHNoZWxsSGFzaC5hY3Rpb25cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHBhcmFtczogc2hlbGxIYXNoLnBhcmFtc1xuXHRcdFx0XHR9O1xuXHRcdFx0XHRLZWVwQWxpdmVIZWxwZXIuc3RvcmVDb250cm9sUmVmcmVzaFN0cmF0ZWd5Rm9ySGFzaCh2aWV3LCBzaGVsbEhhc2gpO1xuXHRcdFx0XHRpZiAoQ29tbW9uVXRpbHMuaXNTdGlja3lFZGl0TW9kZShzYXBtTGluayBhcyB1bmtub3duIGFzIENvbnRyb2wpICE9PSB0cnVlKSB7XG5cdFx0XHRcdFx0Ly9VUkwgcGFyYW1zIGFuZCB4YXBwU3RhdGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGVhcmxpZXIgaGVuY2UgdXNpbmcgbmF2aWdhdGVcblx0XHRcdFx0XHRhd2FpdCBzaGVsbFNlcnZpY2UubmF2aWdhdGUobmF2QXJncywgYXBwQ29tcG9uZW50KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0Y29uc3QgbmV3SHJlZiA9IGF3YWl0IHNoZWxsU2VydmljZS5ocmVmRm9yRXh0ZXJuYWwobmF2QXJncywgYXBwQ29tcG9uZW50KTtcblx0XHRcdFx0XHRcdG9wZW5XaW5kb3cobmV3SHJlZik7XG5cdFx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0XHRcdExvZy5lcnJvcihgRXJyb3Igd2hpbGUgcmV0aXJldmluZyBocmVmRm9yRXh0ZXJuYWwgOiAke2Vycm9yfWApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoYEVycm9yIHRyaWdnZXJpbmcgbGluayBIcmVmOiAke2Vycm9yfWApO1xuXHRcdH1cblx0fSxcblxuXHRjcmVhdGVQb3BvdmVyV2l0aE5vVGFyZ2V0czogZnVuY3Rpb24gKG1kY0xpbms6IE1kY0xpbmspOiBSZXNwb25zaXZlUG9wb3ZlciB7XG5cdFx0Y29uc3QgbWRjTGlua0lkID0gbWRjTGluay5nZXRJZCgpO1xuXHRcdGNvbnN0IGlsbHVzdHJhdGVkTWVzc2FnZVNldHRpbmdzOiAkSWxsdXN0cmF0ZWRNZXNzYWdlU2V0dGluZ3MgPSB7XG5cdFx0XHR0aXRsZTogZ2V0UmVzb3VyY2VNb2RlbChtZGNMaW5rIGFzIHVua25vd24gYXMgQ29udHJvbCkuZ2V0VGV4dChcIk1fSUxMVVNUUkFURURNRVNTQUdFX1RJVExFXCIpLFxuXHRcdFx0ZGVzY3JpcHRpb246IGdldFJlc291cmNlTW9kZWwobWRjTGluayBhcyB1bmtub3duIGFzIENvbnRyb2wpLmdldFRleHQoXCJNX0lMTFVTVFJBVEVETUVTU0FHRV9ERVNDUklQVElPTlwiKSxcblx0XHRcdGVuYWJsZUZvcm1hdHRlZFRleHQ6IHRydWUsXG5cdFx0XHRpbGx1c3RyYXRpb25TaXplOiBJbGx1c3RyYXRlZE1lc3NhZ2VTaXplLkV4dHJhU21hbGwsXG5cdFx0XHRpbGx1c3RyYXRpb25UeXBlOiBJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlLk5vRGF0YVxuXHRcdH07XG5cdFx0Y29uc3QgaWxsdXN0cmF0ZWRNZXNzYWdlID0gbmV3IElsbHVzdHJhdGVkTWVzc2FnZShgJHttZGNMaW5rSWR9LWlsbHVzdHJhdGVkbWVzc2FnZWAsIGlsbHVzdHJhdGVkTWVzc2FnZVNldHRpbmdzKTtcblx0XHRjb25zdCBwb3BvdmVyU2V0dGluZ3M6ICRSZXNwb25zaXZlUG9wb3ZlclNldHRpbmdzID0ge1xuXHRcdFx0aG9yaXpvbnRhbFNjcm9sbGluZzogZmFsc2UsXG5cdFx0XHRzaG93SGVhZGVyOiBEZXZpY2Uuc3lzdGVtLnBob25lLFxuXHRcdFx0cGxhY2VtZW50OiBtb2JpbGVsaWJyYXJ5LlBsYWNlbWVudFR5cGUuQXV0byxcblx0XHRcdGNvbnRlbnQ6IFtpbGx1c3RyYXRlZE1lc3NhZ2VdLFxuXHRcdFx0YWZ0ZXJDbG9zZTogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdFx0XHRcdGlmIChldmVudC5nZXRTb3VyY2UoKSkge1xuXHRcdFx0XHRcdGV2ZW50LmdldFNvdXJjZSgpLmRlc3Ryb3koKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdFx0cmV0dXJuIG5ldyBSZXNwb25zaXZlUG9wb3ZlcihgJHttZGNMaW5rSWR9LXBvcG92ZXJgLCBwb3BvdmVyU2V0dGluZ3MpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSB0eXBlIG1pc21hdGNoIGV2ZW50IGZvciBhIGZpbGUgdXBsb2FkZXIuXG5cdCAqXG5cdCAqIERpc3BsYXlzIGEgZGlhbG9nIHRvIGluZm9ybSB0aGUgdXNlciBhYm91dCB0aGUgdHlwZSBtaXNtYXRjaC5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHRoZSB0eXBlIG1pc21hdGNoXG5cdCAqL1xuXHRoYW5kbGVUeXBlTWlzc21hdGNoOiBmdW5jdGlvbiAoZXZlbnQ6IEZpbGVVcGxvYWRlciRUeXBlTWlzc21hdGNoRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBmaWxlVXBsb2FkZXIgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBnaXZlblR5cGUgPSBldmVudC5nZXRQYXJhbWV0ZXIoXCJtaW1lVHlwZVwiKTtcblx0XHRjb25zdCBhY2NlcHRlZFR5cGVzID0gZmlsZVVwbG9hZGVyLmdldE1pbWVUeXBlKCk7XG5cdFx0aWYgKGdpdmVuVHlwZSkge1xuXHRcdFx0c2hvd1R5cGVNaXNtYXRjaERpYWxvZyhmaWxlVXBsb2FkZXIsIGdpdmVuVHlwZSwgYWNjZXB0ZWRUeXBlcyk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBmaWxlIHNpemUgZXhjZWVkIGV2ZW50IGZvciBhIGZpbGUgdXBsb2FkZXIuXG5cdCAqXG5cdCAqIERpc3BsYXlzIGEgZGlhbG9nIHRvIGluZm9ybSB0aGUgdXNlciBhYm91dCB0aGUgZmlsZSBzaXplIGV4Y2VlZC5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHRoZSBmaWxlIHNpemUgZXhjZWVkXG5cdCAqL1xuXHRoYW5kbGVGaWxlU2l6ZUV4Y2VlZDogZnVuY3Rpb24gKGV2ZW50OiBGaWxlVXBsb2FkZXIkRmlsZVNpemVFeGNlZWRFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGZpbGVVcGxvYWRlciA9IGV2ZW50LmdldFNvdXJjZSgpO1xuXHRcdHNob3dGaWxlU2l6ZUV4Y2VlZERpYWxvZyhmaWxlVXBsb2FkZXIsIGZpbGVVcGxvYWRlci5nZXRNYXhpbXVtRmlsZVNpemUoKS50b0ZpeGVkKDMpKTtcblx0fSxcblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgdXBsb2FkIGNvbXBsZXRlIGV2ZW50IGZvciBhIGZpbGUgdXBsb2FkZXIuXG5cdCAqXG5cdCAqIERpc3BsYXlzIGEgbWVzc2FnZSBmb3IgYSBmYWlsZWQgdXBsb2FkIGFuZCByZXNvbHZlcyBvciByZWplY3RzIHRoZSB1cGxvYWQgcHJvbWlzZS5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHRoZSB1cGxvYWRcblx0ICogQHBhcmFtIHByb3BlcnR5RmlsZU5hbWUgVGhlIHByb3BlcnR5IG5hbWUgZm9yIHRoZSBmaWxlIG5hbWVcblx0ICogQHBhcmFtIHByb3BlcnR5UGF0aCBUaGUgcHJvcGVydHkgcGF0aCBmb3IgdGhlIGZpbGVcblx0ICogQHBhcmFtIGNvbnRyb2xsZXIgVGhlIHBhZ2UgY29udHJvbGxlclxuXHQgKi9cblx0aGFuZGxlVXBsb2FkQ29tcGxldGU6IGZ1bmN0aW9uIChcblx0XHRldmVudDogRmlsZVVwbG9hZGVyJFVwbG9hZENvbXBsZXRlRXZlbnQsXG5cdFx0cHJvcGVydHlGaWxlTmFtZTogeyBwYXRoOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCxcblx0XHRwcm9wZXJ0eVBhdGg6IHN0cmluZyxcblx0XHRjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlclxuXHQpOiB2b2lkIHtcblx0XHRjb25zdCBzdGF0dXMgPSBOdW1iZXIoZXZlbnQuZ2V0UGFyYW1ldGVyKFwic3RhdHVzXCIpKSxcblx0XHRcdGZpbGVVcGxvYWRlciA9IGV2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0ZmlsZVdyYXBwZXIgPSBmaWxlVXBsb2FkZXIuZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyBGaWxlV3JhcHBlcixcblx0XHRcdGZpZWxkID0gZmlsZVdyYXBwZXIuZ2V0UGFyZW50KCk7XG5cdFx0ZmlsZVdyYXBwZXIuc2V0VUlCdXN5KGZhbHNlKTtcblxuXHRcdGNvbnN0IGNvbnRleHQgPSBmaWxlVXBsb2FkZXIuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkIHwgbnVsbDtcblx0XHRpZiAoc3RhdHVzID09PSAwIHx8IHN0YXR1cyA+PSA0MDApIHtcblx0XHRcdGNvbnN0IGVycm9yID0gKGV2ZW50LmdldFBhcmFtZXRlcihcInJlc3BvbnNlUmF3XCIpIHx8IGV2ZW50LmdldFBhcmFtZXRlcihcInJlc3BvbnNlXCIpKSBhcyBzdHJpbmc7XG5cdFx0XHRkaXNwbGF5TWVzc2FnZUZvckZhaWxlZFVwbG9hZChmaWxlVXBsb2FkZXIsIGVycm9yKTtcblx0XHRcdEZpZWxkUnVudGltZUhlbHBlci51cGxvYWRQcm9taXNlc1tmaWxlVXBsb2FkZXIuZ2V0SWQoKV0ucmVqZWN0KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IG5ld0VUYWcgPSAoZXZlbnQuZ2V0UGFyYW1ldGVyKFwiaGVhZGVyc1wiKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik/LmV0YWc7XG5cblx0XHRcdGlmIChuZXdFVGFnKSB7XG5cdFx0XHRcdC8vIHNldCBuZXcgZXRhZyBmb3IgZmlsZW5hbWUgdXBkYXRlLCBidXQgd2l0aG91dCBzZW5kaW5nIHBhdGNoIHJlcXVlc3Rcblx0XHRcdFx0Y29udGV4dD8uc2V0UHJvcGVydHkoXCJAb2RhdGEuZXRhZ1wiLCBuZXdFVGFnLCBudWxsIGFzIHVua25vd24gYXMgc3RyaW5nKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gc2V0IGZpbGVuYW1lIGZvciBsaW5rIHRleHRcblx0XHRcdGlmIChwcm9wZXJ0eUZpbGVOYW1lPy5wYXRoKSB7XG5cdFx0XHRcdGNvbnRleHQ/LnNldFByb3BlcnR5KHByb3BlcnR5RmlsZU5hbWUucGF0aCwgZmlsZVVwbG9hZGVyLmdldFZhbHVlKCkpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBkZWxldGUgdGhlIGF2YXRhciBjYWNoZSB0aGF0IG5vdCBnZXRzIHVwZGF0ZWQgb3RoZXJ3aXNlXG5cdFx0XHRmaWxlV3JhcHBlci5hdmF0YXI/LnJlZnJlc2hBdmF0YXJDYWNoZUJ1c3RpbmcoKTtcblxuXHRcdFx0RmllbGRSdW50aW1lSGVscGVyLl9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW0oXG5cdFx0XHRcdGV2ZW50IGFzIHVua25vd24gYXMgRmllbGQkQ2hhbmdlRXZlbnQgJiBFdmVudDx7IGlzVmFsaWQ6IGJvb2xlYW4gfT4sXG5cdFx0XHRcdGZpbGVXcmFwcGVyLFxuXHRcdFx0XHRjb250cm9sbGVyXG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLnVwbG9hZFByb21pc2VzW2ZpbGVVcGxvYWRlci5nZXRJZCgpXS5yZXNvbHZlKCk7XG5cdFx0XHRmaWVsZD8uZmlyZUV2ZW50KFwiY2hhbmdlXCIsIGV2ZW50KTtcblx0XHR9XG5cblx0XHRkZWxldGUgdGhpcy51cGxvYWRQcm9taXNlc1tmaWxlVXBsb2FkZXIuZ2V0SWQoKV07XG5cblx0XHQvLyBDb2xsYWJvcmF0aW9uIERyYWZ0IEFjdGl2aXR5IFN5bmNcblx0XHRjb25zdCBpc0NvbGxhYm9yYXRpb25FbmFibGVkID0gY29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQ/LmlzQ29ubmVjdGVkKCk7XG5cdFx0aWYgKCFpc0NvbGxhYm9yYXRpb25FbmFibGVkIHx8ICFjb250ZXh0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3Qgbm90aWZpY2F0aW9uRGF0YSA9IFtgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eVBhdGh9YF07XG5cdFx0aWYgKHByb3BlcnR5RmlsZU5hbWU/LnBhdGgpIHtcblx0XHRcdG5vdGlmaWNhdGlvbkRhdGEucHVzaChgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eUZpbGVOYW1lLnBhdGh9YCk7XG5cdFx0fVxuXG5cdFx0bGV0IGJpbmRpbmcgPSBjb250ZXh0LmdldEJpbmRpbmcoKTtcblx0XHRpZiAoIWJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhmaWxlVXBsb2FkZXIpO1xuXHRcdFx0YmluZGluZyA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCkuZ2V0QmluZGluZygpO1xuXHRcdH1cblx0XHRpZiAoYmluZGluZy5oYXNQZW5kaW5nQ2hhbmdlcygpKSB7XG5cdFx0XHRiaW5kaW5nLmF0dGFjaEV2ZW50T25jZShcInBhdGNoQ29tcGxldGVkXCIsICgpID0+IHtcblx0XHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuc2VuZCh7IGFjdGlvbjogQWN0aXZpdHkuQ2hhbmdlLCBjb250ZW50OiBub3RpZmljYXRpb25EYXRhIH0pO1xuXHRcdFx0XHRjb250cm9sbGVyLmNvbGxhYm9yYXRpdmVEcmFmdC5zZW5kKHsgYWN0aW9uOiBBY3Rpdml0eS5VbmxvY2ssIGNvbnRlbnQ6IG5vdGlmaWNhdGlvbkRhdGEgfSk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuc2VuZCh7IGFjdGlvbjogQWN0aXZpdHkuQ2hhbmdlLCBjb250ZW50OiBub3RpZmljYXRpb25EYXRhIH0pO1xuXHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuc2VuZCh7IGFjdGlvbjogQWN0aXZpdHkuVW5sb2NrLCBjb250ZW50OiBub3RpZmljYXRpb25EYXRhIH0pO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIHN0cmVhbSBmcm9tIGEgZmlsZSBwcm9wZXJ0eS5cblx0ICpcblx0ICogU2V0cyB0aGUgcHJvcGVydHkgdG8gbnVsbCBhbmQgdGhlbiB1bmRlZmluZWQgdG8gcmVjcmVhdGUgdGhlIHVwbG9hZCBVUkwuXG5cdCAqIEhhbmRsZXMgY29sbGFib3JhdGlvbiBkcmFmdCBhY3Rpdml0eSBzeW5jIGlmIGVuYWJsZWQuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgY2hhbmdlIGV2ZW50IG9iamVjdFxuXHQgKiBAcGFyYW0gIHByb3BlcnR5RmlsZU5hbWUgVGhlIHByb3BlcnR5IG5hbWUgZm9yIHRoZSBmaWxlIG5hbWUuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eVBhdGggVGhlIHByb3BlcnR5IHBhdGggZm9yIHRoZSBmaWxlLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBUaGUgcGFnZSBjb250cm9sbGVyLlxuXHQgKi9cblx0cmVtb3ZlU3RyZWFtOiBmdW5jdGlvbiAoXG5cdFx0ZXZlbnQ6IEZpZWxkJENoYW5nZUV2ZW50ICYgRXZlbnQ8eyBpc1ZhbGlkOiBib29sZWFuIH0+LFxuXHRcdHByb3BlcnR5RmlsZU5hbWU6IHsgcGF0aDogc3RyaW5nIH0gfCB1bmRlZmluZWQsXG5cdFx0cHJvcGVydHlQYXRoOiBzdHJpbmcsXG5cdFx0Y29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXJcblx0KTogdm9pZCB7XG5cdFx0Y29uc3QgZGVsZXRlQnV0dG9uID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgZmlsZVdyYXBwZXIgPSBkZWxldGVCdXR0b24uZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyBGaWxlV3JhcHBlcjtcblx0XHRjb25zdCBjb250ZXh0ID0gZmlsZVdyYXBwZXIuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IGZpZWxkID0gZmlsZVdyYXBwZXIuZ2V0UGFyZW50KCk7XG5cblx0XHQvLyBzdHJlYW1zIGFyZSByZW1vdmVkIGJ5IGFzc2lnbmluZyB0aGUgbnVsbCB2YWx1ZVxuXHRcdGNvbnRleHQuc2V0UHJvcGVydHkocHJvcGVydHlQYXRoLCBudWxsKTtcblx0XHQvLyBXaGVuIHNldHRpbmcgdGhlIHByb3BlcnR5IHRvIG51bGwsIHRoZSB1cGxvYWRVcmwgKEBATU9ERUwuZm9ybWF0KSBpcyBzZXQgdG8gXCJcIiBieSB0aGUgbW9kZWxcblx0XHQvL1x0d2l0aCB0aGF0IGFub3RoZXIgdXBsb2FkIGlzIG5vdCBwb3NzaWJsZSBiZWZvcmUgcmVmcmVzaGluZyB0aGUgcGFnZVxuXHRcdC8vIChyZWZyZXNoaW5nIHRoZSBwYWdlIHdvdWxkIHJlY3JlYXRlIHRoZSBVUkwpXG5cdFx0Ly9cdFRoaXMgaXMgdGhlIHdvcmthcm91bmQ6XG5cdFx0Ly9cdFdlIHNldCB0aGUgcHJvcGVydHkgdG8gdW5kZWZpbmVkIG9ubHkgb24gdGhlIGZyb250ZW5kIHdoaWNoIHdpbGwgcmVjcmVhdGUgdGhlIHVwbG9hZFVybFxuXHRcdGNvbnRleHQuc2V0UHJvcGVydHkocHJvcGVydHlQYXRoLCB1bmRlZmluZWQsIG51bGwgYXMgdW5rbm93biBhcyBzdHJpbmcpO1xuXG5cdFx0RmllbGRSdW50aW1lSGVscGVyLl9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW0oZXZlbnQsIGZpbGVXcmFwcGVyLCBjb250cm9sbGVyKTtcblxuXHRcdC8vIENvbGxhYm9yYXRpb24gRHJhZnQgQWN0aXZpdHkgU3luY1xuXHRcdGNvbnN0IGJDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IGNvbnRyb2xsZXIuY29sbGFib3JhdGl2ZURyYWZ0Py5pc0Nvbm5lY3RlZCgpO1xuXHRcdGlmIChiQ29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGxldCBiaW5kaW5nID0gY29udGV4dC5nZXRCaW5kaW5nKCk7XG5cdFx0XHRpZiAoIWJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGRlbGV0ZUJ1dHRvbik7XG5cdFx0XHRcdGJpbmRpbmcgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpLmdldEJpbmRpbmcoKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZGF0YSA9IFtgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eVBhdGh9YF07XG5cdFx0XHRpZiAocHJvcGVydHlGaWxlTmFtZT8ucGF0aCkge1xuXHRcdFx0XHRkYXRhLnB1c2goYCR7Y29udGV4dC5nZXRQYXRoKCl9LyR7cHJvcGVydHlGaWxlTmFtZS5wYXRofWApO1xuXHRcdFx0fVxuXHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuc2VuZCh7IGFjdGlvbjogQWN0aXZpdHkuTG9jaywgY29udGVudDogZGF0YSB9KTtcblxuXHRcdFx0YmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJwYXRjaENvbXBsZXRlZFwiLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdGNvbnRyb2xsZXIuY29sbGFib3JhdGl2ZURyYWZ0LnNlbmQoeyBhY3Rpb246IEFjdGl2aXR5LkNoYW5nZSwgY29udGVudDogZGF0YSB9KTtcblx0XHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuc2VuZCh7IGFjdGlvbjogQWN0aXZpdHkuVW5sb2NrLCBjb250ZW50OiBkYXRhIH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGZpZWxkPy5maXJlRXZlbnQoXCJjaGFuZ2VcIiwgZXZlbnQpO1xuXHR9LFxuXG5cdF9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW06IGZ1bmN0aW9uIChcblx0XHRvRXZlbnQ6IEZpZWxkJENoYW5nZUV2ZW50ICYgRXZlbnQ8eyBpc1ZhbGlkOiBib29sZWFuIH0+LFxuXHRcdG9Db250cm9sOiBDb250cm9sLFxuXHRcdG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlclxuXHQpOiB2b2lkIHtcblx0XHRjb25zdCBvRkVDb250cm9sbGVyID0gRmllbGRSdW50aW1lSGVscGVyLmdldEV4dGVuc2lvbkNvbnRyb2xsZXIob0NvbnRyb2xsZXIpO1xuXHRcdGlmIChvQ29udHJvbCAmJiAob0NvbnRyb2wuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyB1bmtub3duIGFzIHsgaXNUcmFuc2llbnQ6IEZ1bmN0aW9uIH0pLmlzVHJhbnNpZW50KCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sKSB7XG5cdFx0XHQob0V2ZW50IGFzIHVua25vd24gYXMgeyBvU291cmNlOiBDb250cm9sIH0pLm9Tb3VyY2UgPSBvQ29udHJvbDtcblx0XHR9XG5cdFx0b0ZFQ29udHJvbGxlci5fc2lkZUVmZmVjdHMuaGFuZGxlRmllbGRDaGFuZ2Uob0V2ZW50LCBGaWVsZFJ1bnRpbWVIZWxwZXIuZ2V0RmllbGRTdGF0ZU9uQ2hhbmdlKG9FdmVudCkuc3RhdGVbXCJ2YWxpZGl0eVwiXSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFVwbG9hZHMgYSBzdHJlYW0gdXNpbmcgdGhlIGZpbGUgdXBsb2FkZXIuXG5cdCAqXG5cdCAqIFNldHMgdGhlIHVwbG9hZCBVUkwsIHN5bmNocm9uaXplcyB0aGUgdXBsb2FkIHdpdGggb3RoZXIgcmVxdWVzdHMsIGFuZCBoYW5kbGVzIGNvbGxhYm9yYXRpb24gZHJhZnQgYWN0aXZpdHkgc3luYyBpZiBlbmFibGVkLlxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBUaGUgcGFnZSBjb250cm9sbGVyLlxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIGNoYW5nZSBldmVudCBvYmplY3Qgb2YgdGhlIGZpbGUgdXBsb2FkZXIuXG5cdCAqL1xuXHR1cGxvYWRTdHJlYW06IGZ1bmN0aW9uIChjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgZXZlbnQ6IEZpbGVVcGxvYWRlciRDaGFuZ2VFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGZpbGVVcGxvYWRlciA9IGV2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0RkVDb250cm9sbGVyID0gRmllbGRSdW50aW1lSGVscGVyLmdldEV4dGVuc2lvbkNvbnRyb2xsZXIoY29udHJvbGxlciksXG5cdFx0XHRmaWxlV3JhcHBlciA9IGZpbGVVcGxvYWRlci5nZXRQYXJlbnQoKSBhcyB1bmtub3duIGFzIEZpbGVXcmFwcGVyLFxuXHRcdFx0dXBsb2FkVXJsID0gZmlsZVdyYXBwZXIuZ2V0VXBsb2FkVXJsKCk7XG5cblx0XHRpZiAodXBsb2FkVXJsICE9PSBcIlwiKSB7XG5cdFx0XHRmaWxlV3JhcHBlci5zZXRVSUJ1c3kodHJ1ZSk7XG5cblx0XHRcdC8vIHVzZSB1cGxvYWRVcmwgZnJvbSBGaWxlV3JhcHBlciB3aGljaCByZXR1cm5zIGEgY2Fub25pY2FsIFVSTFxuXHRcdFx0ZmlsZVVwbG9hZGVyLnNldFVwbG9hZFVybCh1cGxvYWRVcmwpO1xuXG5cdFx0XHQvLyBzZXQgdGhlIHJlcXVlc3QgaGVhZGVyIGZvciB0aGUgdXBsb2FkXG5cdFx0XHRjb25zdCBmaWxlcyA9IGV2ZW50LmdldFBhcmFtZXRlcihcImZpbGVzXCIpO1xuXHRcdFx0Ly8gdGhlcmUgaXMgb25seSBvbmUgZmlsZSBhcyB3ZSBhbGxvdyBzZWxlY3Rpbmcgb25seSBvbmVcblx0XHRcdGNvbnN0IGZpbGVUeXBlID0gKGZpbGVzICYmIChmaWxlc1swXSBhcyBGaWxlKS50eXBlKSBhcyBzdHJpbmc7XG5cdFx0XHRzZXRIZWFkZXJGaWVsZHMoZmlsZVVwbG9hZGVyLCBmaWxlVHlwZSk7XG5cblx0XHRcdC8vIHN5bmNocm9uaXplIHVwbG9hZCB3aXRoIG90aGVyIHJlcXVlc3RzXG5cdFx0XHRjb25zdCB1cGxvYWRQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XG5cdFx0XHRcdHRoaXMudXBsb2FkUHJvbWlzZXMgPSB0aGlzLnVwbG9hZFByb21pc2VzIHx8IHt9O1xuXHRcdFx0XHR0aGlzLnVwbG9hZFByb21pc2VzW2ZpbGVVcGxvYWRlci5nZXRJZCgpXSA9IHtcblx0XHRcdFx0XHRyZXNvbHZlOiByZXNvbHZlLFxuXHRcdFx0XHRcdHJlamVjdDogcmVqZWN0XG5cdFx0XHRcdH07XG5cdFx0XHRcdGZpbGVVcGxvYWRlci51cGxvYWQoKTtcblx0XHRcdH0pO1xuXHRcdFx0RkVDb250cm9sbGVyLmVkaXRGbG93LnN5bmNUYXNrKHVwbG9hZFByb21pc2UpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNZXNzYWdlQm94LmVycm9yKGdldFJlc291cmNlTW9kZWwoY29udHJvbGxlcikuZ2V0VGV4dChcIk1fRklFTERfRklMRVVQTE9BREVSX0FCT1JURURfVEVYVFwiKSk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIHdoZW4gYSBGaWxlVXBsb2FkIGRpYWxvZyBpcyBvcGVuZWQuXG5cdCAqIEBwYXJhbSBldmVudFxuXHQgKi9cblx0aGFuZGxlT3BlblVwbG9hZGVyOiBmdW5jdGlvbiAoZXZlbnQ6IEV2ZW50PHt9LCBGaWxlVXBsb2FkZXI+KTogdm9pZCB7XG5cdFx0Y29uc3QgZmlsZVVwbG9hZGVyID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0RmllbGRSdW50aW1lSGVscGVyLl9zZW5kQ29sbGFib3JhdGlvbk1lc3NhZ2VGb3JGaWxlVXBsb2FkZXIoZmlsZVVwbG9hZGVyLCBBY3Rpdml0eS5Mb2NrKTtcblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHRvIHNlbmQgY29sbGFib3JhdGlvbiBtZXNzYWdlcyBmcm9tIGEgRmlsZVVwbG9hZGVyLlxuXHQgKiBAcGFyYW0gZmlsZVVwbG9hZGVyXG5cdCAqIEBwYXJhbSBhY3Rpb25cblx0ICovXG5cdF9zZW5kQ29sbGFib3JhdGlvbk1lc3NhZ2VGb3JGaWxlVXBsb2FkZXIoZmlsZVVwbG9hZGVyOiBGaWxlVXBsb2FkZXIsIGFjdGlvbjogQWN0aXZpdHkpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhmaWxlVXBsb2FkZXIpO1xuXHRcdGNvbnN0IGNvbGxhYm9yYXRpdmVEcmFmdCA9IHZpZXcuZ2V0Q29udHJvbGxlcigpLmNvbGxhYm9yYXRpdmVEcmFmdDtcblx0XHRpZiAoY29sbGFib3JhdGl2ZURyYWZ0LmlzQ29ubmVjdGVkKCkpIHtcblx0XHRcdGNvbnN0IGJpbmRpbmdQYXRoID0gZmlsZVVwbG9hZGVyLmdldFBhcmVudCgpPy5nZXRQcm9wZXJ0eShcInByb3BlcnR5UGF0aFwiKTtcblx0XHRcdGNvbnN0IGZ1bGxQYXRoID0gYCR7ZmlsZVVwbG9hZGVyLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKX0vJHtiaW5kaW5nUGF0aH1gO1xuXHRcdFx0Y29sbGFib3JhdGl2ZURyYWZ0LnNlbmQoeyBhY3Rpb24sIGNvbnRlbnQ6IGZ1bGxQYXRoIH0pO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogSGFuZGxlciB3aGVuIGEgRmlsZVVwbG9hZCBkaWFsb2cgaXMgY2xvc2VkLlxuXHQgKiBAcGFyYW0gZXZlbnRcblx0ICovXG5cdGhhbmRsZUNsb3NlVXBsb2FkZXI6IGZ1bmN0aW9uIChldmVudDogRXZlbnQ8e30sIEZpbGVVcGxvYWRlcj4pOiB2b2lkIHtcblx0XHRjb25zdCBmaWxlVXBsb2FkZXIgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRGaWVsZFJ1bnRpbWVIZWxwZXIuX3NlbmRDb2xsYWJvcmF0aW9uTWVzc2FnZUZvckZpbGVVcGxvYWRlcihmaWxlVXBsb2FkZXIsIEFjdGl2aXR5LlVubG9jayk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE9wZW5zIGFuIGV4dGVybmFsIGxpbmsgaW4gdGhlIHNhbWUgdGFiLlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgVVJMIGZyb20gdGhlIGxpbmsncyBkYXRhIGFuZCBvcGVucyBpdCBpbiB0aGUgc2FtZSB0YWIuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCB0aGUgbGluayBjbGljay5cblx0ICovXG5cdG9wZW5FeHRlcm5hbExpbms6IGZ1bmN0aW9uIChldmVudDogRXZlbnQ8e30sIExpbms+KTogdm9pZCB7XG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0aWYgKHNvdXJjZS5kYXRhKFwidXJsXCIpICYmIHNvdXJjZS5nZXRQcm9wZXJ0eShcInRleHRcIikgIT09IFwiXCIpIHtcblx0XHRcdC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgaW4gdGhlIHNhbWUgdGFiIGFzIHRoZSBsaW5rLiBJdCB3YXMgZG9uZSB0byBiZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciB0eXBlIG9mIGxpbmtzLlxuXHRcdFx0b3BlbldpbmRvdyhzb3VyY2UuZGF0YShcInVybFwiKSwgXCJfc2VsZlwiKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgaWNvbiBmb3IgYSBnaXZlbiBNSU1FIHR5cGUuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYEljb25Qb29sYCB0byBnZXQgdGhlIGFwcHJvcHJpYXRlIGljb24gZm9yIHRoZSBzcGVjaWZpZWQgTUlNRSB0eXBlLlxuXHQgKiBAcGFyYW0gbWltZVR5cGUgVGhlIE1JTUUgdHlwZSBmb3Igd2hpY2ggdGhlIGljb24gaXMgdG8gYmUgcmV0cmlldmVkXG5cdCAqIEByZXR1cm5zIFRoZSBpY29uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIE1JTUUgdHlwZVxuXHQgKi9cblx0Z2V0SWNvbkZvck1pbWVUeXBlOiBmdW5jdGlvbiAobWltZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIEljb25Qb29sLmdldEljb25Gb3JNaW1lVHlwZShtaW1lVHlwZSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFRyaWdnZXJzIGFuIGludGVybmFsIG5hdmlnYXRpb24gb24gdGhlIGxpbmsgcGVydGFpbmluZyB0byBEYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGguXG5cdCAqIEBwYXJhbSBzb3VyY2UgU291cmNlIG9mIHRoZSBwcmVzcyBldmVudFxuXHQgKiBAcGFyYW0gY29udHJvbGxlciBJbnN0YW5jZSBvZiB0aGUgY29udHJvbGxlclxuXHQgKiBAcGFyYW0gbmF2UGF0aCBUaGUgbmF2aWdhdGlvbiBwYXRoXG5cdCAqL1xuXHRvbkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDogYXN5bmMgZnVuY3Rpb24gKHNvdXJjZTogQ29udHJvbCwgY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIG5hdlBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmIChjb250cm9sbGVyLl9yb3V0aW5nKSB7XG5cdFx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cblx0XHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHNvdXJjZSksXG5cdFx0XHRcdG1ldGFNb2RlbCA9IGJpbmRpbmdDb250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKTtcblxuXHRcdFx0Y29uc3QgZHJhZnRSb290UGF0aCA9IE1vZGVsSGVscGVyLmdldERyYWZ0Um9vdFBhdGgoYmluZGluZ0NvbnRleHQpID8/IGJpbmRpbmdDb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdGxldCB1cmxOYXZpZ2F0aW9uID0gYXdhaXQgY29udHJvbGxlci5fcm91dGluZy5nZXRIYXNoRm9yTmF2aWdhdGlvbihiaW5kaW5nQ29udGV4dCwgbmF2UGF0aCk7XG5cdFx0XHRjb25zdCBpc1N0aWNreU1vZGUgPSBNb2RlbEhlbHBlci5pc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQoYmluZGluZ0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSksXG5cdFx0XHRcdGlzSGlkZGVuRHJhZnRFbmFibGVkID1cblx0XHRcdFx0XHQoY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKS5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkhpZGRlbkRyYWZ0IGFzIEhpZGRlbkRyYWZ0KT8uZW5hYmxlZCB8fFxuXHRcdFx0XHRcdGZhbHNlO1xuXG5cdFx0XHRjb25zdCBuYXZpZ2F0ZUZuID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRjb250cm9sbGVyXG5cdFx0XHRcdFx0LmdldEFwcENvbXBvbmVudCgpXG5cdFx0XHRcdFx0LmdldFJvdXRlclByb3h5KClcblx0XHRcdFx0XHQubmF2VG9IYXNoKHVybE5hdmlnYXRpb24sIHRydWUsIGZhbHNlLCBmYWxzZSwgaXNTdGlja3lNb2RlIHx8IGlzSGlkZGVuRHJhZnRFbmFibGVkKTtcblx0XHRcdH07XG5cblx0XHRcdC8vIFRvIGtub3cgaWYgd2UncmUgbmF2aWdhdGluZyBvbiB0aGUgc2FtZSBPUCBFbnRpdHlcblx0XHRcdGlmICghdXJsTmF2aWdhdGlvbj8uc3RhcnRzV2l0aChcIi9cIikpIHtcblx0XHRcdFx0dXJsTmF2aWdhdGlvbiA9IGAvJHt1cmxOYXZpZ2F0aW9ufWA7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBzYW1lT1BOYXZpZ2F0aW9uID0gdXJsTmF2aWdhdGlvbi5zdGFydHNXaXRoKGRyYWZ0Um9vdFBhdGgpO1xuXG5cdFx0XHQvLyBTaG93IGRyYWZ0IGxvc3MgY29uZmlybWF0aW9uIGRpYWxvZyBpbiBjYXNlIG9mIE9iamVjdCBwYWdlXG5cdFx0XHRpZiAodmlld0RhdGEuY29udmVydGVyVHlwZSA9PT0gXCJPYmplY3RQYWdlXCIgJiYgIU1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChtZXRhTW9kZWwpICYmICFzYW1lT1BOYXZpZ2F0aW9uKSB7XG5cdFx0XHRcdGRyYWZ0LnByb2Nlc3NEYXRhTG9zc09yRHJhZnREaXNjYXJkQ29uZmlybWF0aW9uKFxuXHRcdFx0XHRcdG5hdmlnYXRlRm4sXG5cdFx0XHRcdFx0RnVuY3Rpb24ucHJvdG90eXBlLFxuXHRcdFx0XHRcdGJpbmRpbmdDb250ZXh0LFxuXHRcdFx0XHRcdHZpZXcuZ2V0Q29udHJvbGxlcigpLFxuXHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0ZHJhZnQuTmF2aWdhdGlvblR5cGUuRm9yd2FyZE5hdmlnYXRpb25cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG5hdmlnYXRlRm4oKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmVycm9yKFxuXHRcdFx0XHRcIkZpZWxkUnVudGltZTogTm8gcm91dGluZyBsaXN0ZW5lciBjb250cm9sbGVyIGV4dGVuc2lvbiBmb3VuZC4gSW50ZXJuYWwgbmF2aWdhdGlvbiBhYm9ydGVkLlwiLFxuXHRcdFx0XHRcInNhcC5mZS5tYWNyb3MuZmllbGQuRmllbGRSdW50aW1lXCIsXG5cdFx0XHRcdFwib25EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcIlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpZWxkUnVudGltZUhlbHBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztFQWlFQSxNQUFNQSxrQkFBa0IsR0FBRztJQUMxQkMsY0FBYyxFQUFFLENBQUMsQ0FBNEQ7SUFDN0VDLG1CQUFtQixFQUFFLEtBQUs7SUFFMUJDLG9CQUFvQixFQUFFLFNBQUFBLENBQVVDLEtBQWMsRUFBRUMsVUFBeUMsRUFBUTtNQUNoRyxNQUFNQyxJQUFJLEdBQUdDLFdBQVcsQ0FBQ0MsYUFBYSxDQUFDSixLQUFLLENBQUM7TUFDN0MsTUFBTUssbUJBQW1CLEdBQUdMLEtBQUssQ0FBQ00saUJBQWlCLENBQUMsQ0FBQztNQUNyRCxJQUFJQyxzQkFBK0I7O01BRW5DO01BQ0EsTUFBTUMsWUFBWSxHQUFJSCxtQkFBbUIsRUFBY0ksVUFBVSxDQUFDLENBQUM7TUFFbkUsSUFBSUQsWUFBWSxDQUFDRSxHQUFHLENBQUMsd0NBQXdDLENBQUMsRUFBRTtRQUMvRDtRQUNBSCxzQkFBc0IsR0FBR0YsbUJBQThCO01BQ3hELENBQUMsTUFBTTtRQUNOO1FBQ0E7UUFDQUUsc0JBQXNCLEdBQUdMLElBQUksQ0FBQ0ksaUJBQWlCLENBQUMsQ0FBQztNQUNsRDtNQUNBLE1BQU1LLFlBQVksR0FBR2Ysa0JBQWtCLENBQUNnQixzQkFBc0IsQ0FBQ1gsVUFBVSxDQUFDO01BQzFFLE1BQU1ZLFdBQVcsR0FBR2IsS0FBSyxDQUFDVSxHQUFHLENBQVcsa0JBQWtCLENBQUMsSUFBSVYsS0FBSyxDQUFDYyxZQUFZLENBQUMsQ0FBQztNQUNuRjtNQUNBLE1BQU1DLFFBQVEsR0FBR0MsV0FBVyxDQUFDQyxxQkFBcUIsQ0FBQ2pCLEtBQUssQ0FBQ00saUJBQWlCLENBQUMsQ0FBWSxDQUFDO01BQ3hGLE1BQU1Z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
|
|
@@ -3,36 +3,40 @@ import type { EnhanceWithUI5 } from "sap/fe/base/ClassSupport";
|
|
|
3
3
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
4
4
|
import type ExtensionAPI from "sap/fe/core/ExtensionAPI";
|
|
5
5
|
import type PageController from "sap/fe/core/PageController";
|
|
6
|
-
import
|
|
7
|
-
import { Activity, getActivityKeyFromPath } from "sap/fe/core/controllerextensions/collaboration/CollaborationCommon";
|
|
6
|
+
import { Activity } from "sap/fe/core/controllerextensions/collaboration/CollaborationCommon";
|
|
8
7
|
import draft from "sap/fe/core/controllerextensions/editFlow/draft";
|
|
9
8
|
import KeepAliveHelper from "sap/fe/core/helpers/KeepAliveHelper";
|
|
10
9
|
import ModelHelper from "sap/fe/core/helpers/ModelHelper";
|
|
11
|
-
import
|
|
10
|
+
import { getResourceModel } from "sap/fe/core/helpers/ResourceModelHelper";
|
|
12
11
|
import type TextLink from "sap/fe/macros/controls/TextLink";
|
|
13
12
|
import type { LinkDelegatePayload } from "sap/fe/macros/quickView/QuickViewDelegate";
|
|
14
|
-
import type Avatar from "sap/m/Avatar";
|
|
15
13
|
import type { Button$PressEvent } from "sap/m/Button";
|
|
14
|
+
|
|
15
|
+
import type CheckBox from "sap/m/CheckBox";
|
|
16
|
+
import type { CheckBox$SelectEventParameters } from "sap/m/CheckBox";
|
|
16
17
|
import type { $IllustratedMessageSettings } from "sap/m/IllustratedMessage";
|
|
17
18
|
import IllustratedMessage from "sap/m/IllustratedMessage";
|
|
19
|
+
|
|
20
|
+
import type { HiddenDraft } from "sap/fe/core/converters/ManifestSettings";
|
|
18
21
|
import IllustratedMessageSize from "sap/m/IllustratedMessageSize";
|
|
19
22
|
import IllustratedMessageType from "sap/m/IllustratedMessageType";
|
|
20
|
-
import
|
|
23
|
+
import type InputBase from "sap/m/InputBase";
|
|
24
|
+
import type { InputBase$ChangeEventParameters } from "sap/m/InputBase";
|
|
21
25
|
import type Link from "sap/m/Link";
|
|
22
26
|
import MessageBox from "sap/m/MessageBox";
|
|
23
27
|
import type ObjectIdentifier from "sap/m/ObjectIdentifier";
|
|
28
|
+
import type RatingIndicator from "sap/m/RatingIndicator";
|
|
29
|
+
import type { RatingIndicator$ChangeEventParameters } from "sap/m/RatingIndicator";
|
|
24
30
|
import type { $ResponsivePopoverSettings } from "sap/m/ResponsivePopover";
|
|
25
31
|
import ResponsivePopover from "sap/m/ResponsivePopover";
|
|
26
32
|
import mobilelibrary from "sap/m/library";
|
|
27
33
|
import Device from "sap/ui/Device";
|
|
28
|
-
import type Event from "sap/ui/base/Event";
|
|
34
|
+
import type { default as Event, default as UI5Event } from "sap/ui/base/Event";
|
|
29
35
|
import type Control from "sap/ui/core/Control";
|
|
30
|
-
import Element from "sap/ui/core/Element";
|
|
36
|
+
import type Element from "sap/ui/core/Element";
|
|
31
37
|
import IconPool from "sap/ui/core/IconPool";
|
|
32
|
-
import type
|
|
33
|
-
import type { Field$ChangeEvent, default as mdcField } from "sap/ui/mdc/Field";
|
|
38
|
+
import type { Field$ChangeEvent, Field$ChangeEventParameters, default as mdcField } from "sap/ui/mdc/Field";
|
|
34
39
|
import type MdcLink from "sap/ui/mdc/Link";
|
|
35
|
-
import type CompositeBinding from "sap/ui/model/CompositeBinding";
|
|
36
40
|
import type DataState from "sap/ui/model/DataState";
|
|
37
41
|
import type PropertyBinding from "sap/ui/model/PropertyBinding";
|
|
38
42
|
import type Context from "sap/ui/model/odata/v4/Context";
|
|
@@ -110,8 +114,17 @@ const FieldRuntimeHelper = {
|
|
|
110
114
|
* @param oEvent The event object passed by the change event
|
|
111
115
|
* @returns Field value and validity
|
|
112
116
|
*/
|
|
113
|
-
getFieldStateOnChange: function (
|
|
114
|
-
|
|
117
|
+
getFieldStateOnChange: function (
|
|
118
|
+
oEvent: UI5Event<
|
|
119
|
+
| { value: string | number | boolean | undefined; isValid: boolean }
|
|
120
|
+
| CheckBox$SelectEventParameters
|
|
121
|
+
| InputBase$ChangeEventParameters
|
|
122
|
+
| Field$ChangeEventParameters
|
|
123
|
+
| RatingIndicator$ChangeEventParameters,
|
|
124
|
+
CheckBox | InputBase | mdcField | RatingIndicator | Field
|
|
125
|
+
>
|
|
126
|
+
): {
|
|
127
|
+
field: Control;
|
|
115
128
|
state: {
|
|
116
129
|
fieldValue?: unknown;
|
|
117
130
|
validity: boolean;
|
|
@@ -139,8 +152,10 @@ const FieldRuntimeHelper = {
|
|
|
139
152
|
oSourceField = (oSourceField as EnhanceWithUI5<FieldWrapper>).getContentEdit()[0] as mdcField;
|
|
140
153
|
}
|
|
141
154
|
|
|
142
|
-
if (oSourceField
|
|
143
|
-
let bIsValid =
|
|
155
|
+
if (oSourceField?.isA<mdcField>("sap.ui.mdc.Field")) {
|
|
156
|
+
let bIsValid: boolean =
|
|
157
|
+
(oEvent as Field$ChangeEvent).getParameter("valid") ||
|
|
158
|
+
(oEvent as UI5Event<{ value: string | number | boolean | undefined; isValid: boolean }, mdcField>).getParameter("isValid");
|
|
144
159
|
if (bIsValid === undefined) {
|
|
145
160
|
if (oSourceField.getMaxConditions() === 1) {
|
|
146
161
|
const oValueBindingInfo = oSourceField.getBindingInfo("value");
|
|
@@ -560,17 +575,16 @@ const FieldRuntimeHelper = {
|
|
|
560
575
|
|
|
561
576
|
const draftRootPath = ModelHelper.getDraftRootPath(bindingContext) ?? bindingContext.getPath();
|
|
562
577
|
let urlNavigation = await controller._routing.getHashForNavigation(bindingContext, navPath);
|
|
578
|
+
const isStickyMode = ModelHelper.isStickySessionSupported(bindingContext.getModel().getMetaModel()),
|
|
579
|
+
isHiddenDraftEnabled =
|
|
580
|
+
(controller.getAppComponent().getEnvironmentCapabilities().getCapabilities().HiddenDraft as HiddenDraft)?.enabled ||
|
|
581
|
+
false;
|
|
582
|
+
|
|
563
583
|
const navigateFn = (): void => {
|
|
564
584
|
controller
|
|
565
585
|
.getAppComponent()
|
|
566
586
|
.getRouterProxy()
|
|
567
|
-
.navToHash(
|
|
568
|
-
urlNavigation,
|
|
569
|
-
true,
|
|
570
|
-
false,
|
|
571
|
-
false,
|
|
572
|
-
!ModelHelper.isStickySessionSupported(bindingContext.getModel().getMetaModel())
|
|
573
|
-
);
|
|
587
|
+
.navToHash(urlNavigation, true, false, false, isStickyMode || isHiddenDraftEnabled);
|
|
574
588
|
};
|
|
575
589
|
|
|
576
590
|
// To know if we're navigating on the same OP Entity
|
|
@@ -599,45 +613,6 @@ const FieldRuntimeHelper = {
|
|
|
599
613
|
"onDataFieldWithNavigationPath"
|
|
600
614
|
);
|
|
601
615
|
}
|
|
602
|
-
},
|
|
603
|
-
|
|
604
|
-
/**
|
|
605
|
-
* Event handler to create and show who is editing the field popover.
|
|
606
|
-
* @param source The avatar which is next to the field locked
|
|
607
|
-
* @param view Current view
|
|
608
|
-
*/
|
|
609
|
-
showCollaborationEditUser: function (source: Avatar, view: View): void {
|
|
610
|
-
const resourceModel = ResourceModelHelper.getResourceModel(view);
|
|
611
|
-
let popover = Element.getElementById(`manageCollaborationDraft--editUser`) as ResponsivePopover;
|
|
612
|
-
|
|
613
|
-
if (!popover) {
|
|
614
|
-
popover = new ResponsivePopover("manageCollaborationDraft--editUser", {
|
|
615
|
-
showHeader: false,
|
|
616
|
-
placement: "Bottom"
|
|
617
|
-
});
|
|
618
|
-
popover.addStyleClass("sapUiContentPadding");
|
|
619
|
-
view.addDependent(popover);
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
const bindingPath = (source.getBinding("initials") as CompositeBinding | undefined)
|
|
623
|
-
?.getBindings()
|
|
624
|
-
.find((binding) => binding?.getPath()?.startsWith("/collaboration/activities"))
|
|
625
|
-
.getPath();
|
|
626
|
-
const activities = source.getBindingContext("internal")?.getObject(bindingPath);
|
|
627
|
-
|
|
628
|
-
let editingActivity: UserActivity | undefined;
|
|
629
|
-
if (activities && activities.length > 0) {
|
|
630
|
-
editingActivity = activities.find((activity: UserActivity) => {
|
|
631
|
-
return activity.key === getActivityKeyFromPath(source.getBindingContext()!.getPath());
|
|
632
|
-
});
|
|
633
|
-
}
|
|
634
|
-
popover.destroyContent();
|
|
635
|
-
popover.addContent(
|
|
636
|
-
new Label({
|
|
637
|
-
text: resourceModel.getText("C_COLLABORATIONAVATAR_USER_EDIT_FIELD", [`${editingActivity?.name}`])
|
|
638
|
-
})
|
|
639
|
-
);
|
|
640
|
-
popover.openBy(source);
|
|
641
616
|
}
|
|
642
617
|
};
|
|
643
618
|
|