@sapui5/sap.fe.core 1.92.0 → 1.93.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -3
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AnnotationHelper.js +2 -2
- package/src/sap/fe/core/AppComponent.js +21 -1
- package/src/sap/fe/core/CommonUtils.js +130 -48
- package/src/sap/fe/core/ExtensionAPI.js +238 -226
- package/src/sap/fe/core/PageController.js +5 -2
- package/src/sap/fe/core/TemplateComponent.js +1 -0
- package/src/sap/fe/core/TransactionHelper.js +35 -8
- package/src/sap/fe/core/actions/draft.js +1 -1
- package/src/sap/fe/core/actions/messageHandling.js +18 -6
- package/src/sap/fe/core/actions/operations.js +17 -41
- package/src/sap/fe/core/controllerextensions/EditFlow.js +127 -43
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +11 -11
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +417 -0
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +399 -0
- package/src/sap/fe/core/controllerextensions/PageReady.js +2 -3
- package/src/sap/fe/core/controllerextensions/PageReady.ts +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +102 -66
- package/src/sap/fe/core/controllerextensions/SideEffects.js +60 -14
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +53 -12
- package/src/sap/fe/core/controllerextensions/ViewState.js +18 -18
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +13 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +68 -2
- package/src/sap/fe/core/converters/ConverterContext.js +15 -1
- package/src/sap/fe/core/converters/ConverterContext.ts +11 -0
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +14 -2
- package/src/sap/fe/core/converters/ManifestWrapper.js +14 -14
- package/src/sap/fe/core/converters/ManifestWrapper.ts +13 -12
- package/src/sap/fe/core/converters/MetaModelConverter.js +32 -2
- package/src/sap/fe/core/converters/MetaModelConverter.ts +39 -2
- package/src/sap/fe/core/converters/annotations/DataField.js +10 -6
- package/src/sap/fe/core/converters/annotations/DataField.ts +9 -5
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +14 -4
- package/src/sap/fe/core/converters/controls/Common/Action.js +25 -15
- package/src/sap/fe/core/converters/controls/Common/Action.ts +33 -19
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +50 -0
- package/src/sap/fe/core/converters/controls/Common/Criticality.ts +33 -0
- package/src/sap/fe/core/converters/controls/Common/Form.js +2 -3
- package/src/sap/fe/core/converters/controls/Common/Form.ts +1 -2
- package/src/sap/fe/core/converters/controls/Common/KPI.js +181 -0
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +220 -0
- package/src/sap/fe/core/converters/controls/Common/Table.js +121 -59
- package/src/sap/fe/core/converters/controls/Common/Table.ts +130 -62
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +5 -4
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +9 -3
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +62 -7
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +58 -6
- package/src/sap/fe/core/converters/helpers/Aggregation.js +86 -11
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +79 -8
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +44 -2
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +43 -2
- package/src/sap/fe/core/converters/helpers/ID.js +3 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
- package/src/sap/fe/core/converters/helpers/IssueManager.js +8 -2
- package/src/sap/fe/core/converters/helpers/IssueManager.ts +7 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +93 -0
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +92 -0
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +102 -23
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +111 -17
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +44 -5
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +39 -2
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +41 -30
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +47 -30
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -1
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +77 -0
- package/src/sap/fe/core/formatters/CriticalityFormatter.ts +58 -0
- package/src/sap/fe/core/formatters/KPIFormatter.js +103 -0
- package/src/sap/fe/core/formatters/KPIFormatter.ts +88 -0
- package/src/sap/fe/core/fpm/manifest.json +1 -3
- package/src/sap/fe/core/helpers/BindingExpression.js +161 -97
- package/src/sap/fe/core/helpers/BindingExpression.ts +188 -117
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/messagebundle.properties +45 -1
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +3 -1
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -0
- package/src/sap/fe/core/services/RoutingServiceFactory.js +30 -8
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +16 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +13 -3
- package/src/sap/fe/core/templating/DataModelPathHelper.js +7 -3
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +7 -2
- package/src/sap/fe/core/templating/UIFormatters.js +1 -5
- package/src/sap/fe/core/templating/UIFormatters.ts +0 -3
|
@@ -147,7 +147,7 @@ sap.ui.define(
|
|
|
147
147
|
retrieve: function(oView) {
|
|
148
148
|
var oController = oView.getController();
|
|
149
149
|
if (oController && oController.viewState) {
|
|
150
|
-
return oController.viewState.retrieveViewState();
|
|
150
|
+
return oController.viewState.retrieveViewState(oController.viewState);
|
|
151
151
|
}
|
|
152
152
|
return {};
|
|
153
153
|
},
|
|
@@ -190,38 +190,38 @@ sap.ui.define(
|
|
|
190
190
|
methods: {
|
|
191
191
|
collectResults: { "public": false, "final": true },
|
|
192
192
|
adaptControlStateHandler: {
|
|
193
|
-
"public":
|
|
193
|
+
"public": true,
|
|
194
194
|
"final": false,
|
|
195
195
|
overrideExecution: OverrideExecution.After
|
|
196
196
|
},
|
|
197
197
|
getControlStateHandler: { "public": false, "final": true },
|
|
198
198
|
adaptStateControls: {
|
|
199
|
-
"public":
|
|
199
|
+
"public": true,
|
|
200
200
|
"final": false,
|
|
201
201
|
overrideExecution: OverrideExecution.After
|
|
202
202
|
},
|
|
203
203
|
retrieveAdditionalStates: {
|
|
204
|
-
"public":
|
|
204
|
+
"public": true,
|
|
205
205
|
"final": false,
|
|
206
206
|
overrideExecution: OverrideExecution.After
|
|
207
207
|
},
|
|
208
208
|
retrieveViewState: { "public": true, "final": true },
|
|
209
209
|
retrieveControlState: { "public": false, "final": true },
|
|
210
210
|
applyInitialStateOnly: {
|
|
211
|
-
"public":
|
|
211
|
+
"public": true,
|
|
212
212
|
"final": false,
|
|
213
213
|
overrideExecution: OverrideExecution.Instead
|
|
214
214
|
},
|
|
215
215
|
applyViewState: { "public": true, "final": true },
|
|
216
216
|
applyControlState: { "public": false, "final": true },
|
|
217
217
|
applyAdditionalStates: {
|
|
218
|
-
"public":
|
|
218
|
+
"public": true,
|
|
219
219
|
"final": false,
|
|
220
220
|
overrideExecution: OverrideExecution.After
|
|
221
221
|
},
|
|
222
|
-
applyNavigationParameters: { "public":
|
|
223
|
-
onBeforeStateApplied: { "public":
|
|
224
|
-
onAfterStateApplied: { "public":
|
|
222
|
+
applyNavigationParameters: { "public": true, "final": false, overrideExecution: OverrideExecution.After },
|
|
223
|
+
onBeforeStateApplied: { "public": true, "final": false, overrideExecution: OverrideExecution.After },
|
|
224
|
+
onAfterStateApplied: { "public": true, "final": false, overrideExecution: OverrideExecution.After }
|
|
225
225
|
}
|
|
226
226
|
},
|
|
227
227
|
|
|
@@ -307,7 +307,7 @@ sap.ui.define(
|
|
|
307
307
|
}
|
|
308
308
|
}
|
|
309
309
|
}
|
|
310
|
-
this.adaptControlStateHandler(oControl, aCustomControlStateHandler);
|
|
310
|
+
this.base.viewState.adaptControlStateHandler(oControl, aCustomControlStateHandler);
|
|
311
311
|
return aInternalControlStateHandler.concat(aCustomControlStateHandler);
|
|
312
312
|
},
|
|
313
313
|
|
|
@@ -350,7 +350,7 @@ sap.ui.define(
|
|
|
350
350
|
++that._iRetrievingStateCounter;
|
|
351
351
|
return that._pInitialStateApplied
|
|
352
352
|
.then(function() {
|
|
353
|
-
return that.collectResults(that.adaptStateControls);
|
|
353
|
+
return that.collectResults(that.base.viewState.adaptStateControls);
|
|
354
354
|
})
|
|
355
355
|
.then(function(aControls) {
|
|
356
356
|
return Promise.all(
|
|
@@ -413,7 +413,7 @@ sap.ui.define(
|
|
|
413
413
|
*/
|
|
414
414
|
_retrieveAdditionalStates: function() {
|
|
415
415
|
var mAdditionalStates = {};
|
|
416
|
-
this.retrieveAdditionalStates(mAdditionalStates);
|
|
416
|
+
this.base.viewState.retrieveAdditionalStates(mAdditionalStates);
|
|
417
417
|
return mAdditionalStates;
|
|
418
418
|
},
|
|
419
419
|
|
|
@@ -477,12 +477,12 @@ sap.ui.define(
|
|
|
477
477
|
*/
|
|
478
478
|
applyViewState: function(oViewState, oNavParameter) {
|
|
479
479
|
var that = this;
|
|
480
|
-
if (this.applyInitialStateOnly() && this._getInitialStateApplied()) {
|
|
480
|
+
if (this.base.viewState.applyInitialStateOnly() && this._getInitialStateApplied()) {
|
|
481
481
|
return Promise.resolve();
|
|
482
482
|
}
|
|
483
|
-
return this.collectResults(this.onBeforeStateApplied)
|
|
483
|
+
return this.collectResults(this.base.viewState.onBeforeStateApplied)
|
|
484
484
|
.then(function() {
|
|
485
|
-
return that.collectResults(that.adaptStateControls);
|
|
485
|
+
return that.collectResults(that.base.viewState.adaptStateControls);
|
|
486
486
|
})
|
|
487
487
|
.then(function(aControls) {
|
|
488
488
|
var oPromiseChain = Promise.resolve();
|
|
@@ -501,15 +501,15 @@ sap.ui.define(
|
|
|
501
501
|
.then(function() {
|
|
502
502
|
if (oNavParameter.navigationType === NavType.iAppState) {
|
|
503
503
|
return that.collectResults(
|
|
504
|
-
that.applyAdditionalStates,
|
|
504
|
+
that.base.viewState.applyAdditionalStates,
|
|
505
505
|
oViewState ? oViewState[ADDITIONAL_STATES_KEY] : undefined
|
|
506
506
|
);
|
|
507
507
|
} else {
|
|
508
|
-
return that.collectResults(that.applyNavigationParameters, oNavParameter);
|
|
508
|
+
return that.collectResults(that.base.viewState.applyNavigationParameters, oNavParameter);
|
|
509
509
|
}
|
|
510
510
|
})
|
|
511
511
|
.finally(function() {
|
|
512
|
-
return that.collectResults(that.onAfterStateApplied).then(that._setInitialStateApplied.bind(that));
|
|
512
|
+
return that.collectResults(that.base.viewState.onAfterStateApplied).then(that._setInitialStateApplied.bind(that));
|
|
513
513
|
});
|
|
514
514
|
},
|
|
515
515
|
|
|
@@ -22,6 +22,19 @@ sap.ui.define(["sap/ui/mdc/filterbar/aligned/FilterContainer"], function(MdcFilt
|
|
|
22
22
|
MdcFilterContainer.prototype.init.apply(this, arguments);
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
+
FilterContainer.prototype.exit = function() {
|
|
26
|
+
// destroy layout
|
|
27
|
+
var that = this;
|
|
28
|
+
MdcFilterContainer.prototype.exit.apply(this, arguments);
|
|
29
|
+
// destroy all filter fields which are not in the layout
|
|
30
|
+
this.aAllFilterFields.forEach(function(oFilterField) {
|
|
31
|
+
oFilterField.destroy();
|
|
32
|
+
});
|
|
33
|
+
Object.keys(this.aAllVisualFilters).forEach(function(sKey) {
|
|
34
|
+
that.aAllVisualFilters[sKey].destroy();
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
|
|
25
38
|
FilterContainer.prototype.insertFilterField = function(oControl) {
|
|
26
39
|
var oFilterItemLayoutEventDelegate = {
|
|
27
40
|
onBeforeRendering: function() {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
// Provides control sap.fe.core.controls.filterbar.VisualFilter.
|
|
7
|
-
sap.ui.define(["sap/m/VBox", "sap/m/VBoxRenderer"], function(VBox, VBoxRenderer) {
|
|
7
|
+
sap.ui.define(["sap/m/VBox", "sap/m/VBoxRenderer", "sap/fe/macros/CommonHelper"], function(VBox, VBoxRenderer, CommonHelper) {
|
|
8
8
|
"use strict";
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -36,9 +36,75 @@ sap.ui.define(["sap/m/VBox", "sap/m/VBoxRenderer"], function(VBox, VBoxRenderer)
|
|
|
36
36
|
var oInteractiveChart = this.getItems()[1].getItems()[0];
|
|
37
37
|
var oInteractiveChartListBinding =
|
|
38
38
|
oInteractiveChart.getBinding("segments") || oInteractiveChart.getBinding("bars") || oInteractiveChart.getBinding("points");
|
|
39
|
+
var oInternalModelContext = oInteractiveChart.getBindingContext("internal");
|
|
40
|
+
var sId = oInteractiveChart.getId().split("fe::VisualFilter");
|
|
41
|
+
var sChartId = "fe::VisualFilter" + sId[1];
|
|
42
|
+
var oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.macros");
|
|
43
|
+
var bShowOverLayInitially = oInteractiveChart.data("showOverlayInitially");
|
|
44
|
+
var oSelectionVariantAnnotation = CommonHelper.parseCustomData(oInteractiveChart.data("selectionVariantAnnotation"));
|
|
45
|
+
var aRequiredProperties = CommonHelper.parseCustomData(oInteractiveChart.data("requiredProperties"));
|
|
46
|
+
var oMetaModel = oInteractiveChart.getModel().getMetaModel();
|
|
47
|
+
var sEntitySetPath = oInteractiveChartListBinding.getPath();
|
|
48
|
+
if (bShowOverLayInitially === "true") {
|
|
49
|
+
if (!Object.keys(oSelectionVariantAnnotation).length) {
|
|
50
|
+
if (aRequiredProperties.length > 1) {
|
|
51
|
+
oInternalModelContext.setProperty(sChartId, {
|
|
52
|
+
"VFOverLayMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_MULTIPLEVF"),
|
|
53
|
+
"showOverLayForVF": true
|
|
54
|
+
});
|
|
55
|
+
} else {
|
|
56
|
+
var sLabel =
|
|
57
|
+
oMetaModel.getObject(sEntitySetPath + "/" + aRequiredProperties[0] + "@com.sap.vocabularies.Common.v1.Label") ||
|
|
58
|
+
aRequiredProperties[0];
|
|
59
|
+
oInternalModelContext.setProperty(sChartId, {
|
|
60
|
+
"VFOverLayMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_SINGLEVF", sLabel),
|
|
61
|
+
"showOverLayForVF": true
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
var aSelectOptions = [];
|
|
66
|
+
var aNotMatchedConditions = [];
|
|
67
|
+
oSelectionVariantAnnotation.SelectOptions.forEach(function(oSelectOption) {
|
|
68
|
+
aSelectOptions.push(oSelectOption.PropertyName.$PropertyPath);
|
|
69
|
+
});
|
|
70
|
+
aRequiredProperties.forEach(function(sPath) {
|
|
71
|
+
if (aSelectOptions.indexOf(sPath) === -1) {
|
|
72
|
+
aNotMatchedConditions.push(sPath);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
if (aNotMatchedConditions.length > 1) {
|
|
76
|
+
oInternalModelContext.setProperty(sChartId, {
|
|
77
|
+
"VFOverLayMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_MULTIPLEVF"),
|
|
78
|
+
"showOverLayForVF": true
|
|
79
|
+
});
|
|
80
|
+
} else {
|
|
81
|
+
var sLabel =
|
|
82
|
+
oMetaModel.getObject(sEntitySetPath + "/" + aNotMatchedConditions[0] + "@com.sap.vocabularies.Common.v1.Label") ||
|
|
83
|
+
aNotMatchedConditions[0];
|
|
84
|
+
oInternalModelContext.setProperty(sChartId, {
|
|
85
|
+
"VFOverLayMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_SINGLEVF", sLabel),
|
|
86
|
+
"showOverLayForVF": true
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
aNotMatchedConditions.length > 1
|
|
90
|
+
? oInternalModelContext.setProperty(sChartId, {
|
|
91
|
+
"VFOverLayMessage": oResourceBundle.getText("M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_MULTIPLEVF"),
|
|
92
|
+
"showOverLayForVF": true
|
|
93
|
+
})
|
|
94
|
+
: oInternalModelContext.setProperty(sChartId, {
|
|
95
|
+
"VFOverLayMessage": oResourceBundle.getText(
|
|
96
|
+
"M_VISUAL_FILTERS_PROVIDE_FILTER_VAL_SINGLEVF",
|
|
97
|
+
aNotMatchedConditions[0]
|
|
98
|
+
),
|
|
99
|
+
"showOverLayForVF": true
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
var bShowOverlay = oInternalModelContext.getProperty(sChartId) && oInternalModelContext.getProperty(sChartId).showOverLayForVF;
|
|
39
105
|
// resume binding for only those visual filters that do not have a in parameter attached.
|
|
40
106
|
// Bindings of visual filters with inParameters will be resumed later after considering in parameters.
|
|
41
|
-
if (oInteractiveChartListBinding && oInteractiveChartListBinding.isSuspended()) {
|
|
107
|
+
if (oInteractiveChartListBinding && oInteractiveChartListBinding.isSuspended() && !bShowOverlay) {
|
|
42
108
|
oInteractiveChartListBinding.resume();
|
|
43
109
|
}
|
|
44
110
|
};
|
|
@@ -246,6 +246,20 @@ sap.ui.define(["sap/fe/core/converters/MetaModelConverter", "sap/fe/core/templat
|
|
|
246
246
|
value: function getEntityType() {
|
|
247
247
|
return this.targetDataModelPath.targetEntityType;
|
|
248
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* Get a singleton based on fully qualified name.
|
|
251
|
+
*
|
|
252
|
+
* @param {string} fullyQualifiedName The fully qualified name of the singleton
|
|
253
|
+
* @returns {Singleton | undefined} The singleton instance.
|
|
254
|
+
*/
|
|
255
|
+
|
|
256
|
+
}, {
|
|
257
|
+
key: "getSingleton",
|
|
258
|
+
value: function getSingleton(fullyQualifiedName) {
|
|
259
|
+
return this.convertedTypes.singletons.find(function (singleton) {
|
|
260
|
+
return singleton.fullyQualifiedName === fullyQualifiedName;
|
|
261
|
+
});
|
|
262
|
+
}
|
|
249
263
|
/**
|
|
250
264
|
* Retrieve an annotation from an EntityType based on an annotation path.
|
|
251
265
|
*
|
|
@@ -483,4 +497,4 @@ sap.ui.define(["sap/fe/core/converters/MetaModelConverter", "sap/fe/core/templat
|
|
|
483
497
|
|
|
484
498
|
return ConverterContext;
|
|
485
499
|
}, false);
|
|
486
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnZlcnRlckNvbnRleHQudHMiXSwibmFtZXMiOlsiaXNBbm5vdGF0aW9uVGVybSIsInZBbm5vdGF0aW9uUGF0aCIsImlzU2VydmljZU9iamVjdCIsIm9iamVjdFBhcnQiLCJoYXNPd25Qcm9wZXJ0eSIsImdldERhdGFNb2RlbFBhdGhGb3JFbnRpdHlTZXQiLCJyZXNvbHZlZE1ldGFQYXRoIiwicm9vdEVudGl0eVNldCIsImN1cnJlbnRFbnRpdHlTZXQiLCJwcmV2aW91c0VudGl0eVNldCIsImN1cnJlbnRFbnRpdHlUeXBlIiwibmF2aWdhdGVkUGF0aHMiLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsIm9iamVjdFBhdGgiLCJmb3JFYWNoIiwiX3R5cGUiLCJwdXNoIiwibmFtZSIsInRhcmdldFR5cGUiLCJuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIiwiam9pbiIsInVuZGVmaW5lZCIsImVudGl0eVR5cGUiLCJkYXRhTW9kZWxQYXRoIiwic3RhcnRpbmdFbnRpdHlTZXQiLCJ0YXJnZXRFbnRpdHlUeXBlIiwidGFyZ2V0RW50aXR5U2V0IiwiY29udGV4dExvY2F0aW9uIiwidGFyZ2V0T2JqZWN0IiwidGFyZ2V0IiwiQ29udmVydGVyQ29udGV4dCIsImNvbnZlcnRlZFR5cGVzIiwibWFuaWZlc3RTZXR0aW5ncyIsImRpYWdub3N0aWNzIiwibWVyZ2VGbiIsInRhcmdldERhdGFNb2RlbFBhdGgiLCJtYW5pZmVzdFdyYXBwZXIiLCJNYW5pZmVzdFdyYXBwZXIiLCJiYXNlQ29udGV4dFBhdGgiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZW50aXR5VHlwZXMiLCJmaW5kIiwic3RhcnRzV2l0aCIsInJlcGxhY2VBbm5vdGF0aW9uIiwicmVwbGFjZSIsImFubm90YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsIl9nZXRFbnRpdHlUeXBlRnJvbUZ1bGx5UXVhbGlmaWVkTmFtZSIsIkVycm9yIiwiZ2V0Q29udHJvbENvbmZpZ3VyYXRpb24iLCJzQW5ub3RhdGlvblBhdGgiLCJlbnRpdHlDb250YWluZXIiLCJpbmRleE9mIiwicmVzb2x2ZVBhdGgiLCJzdGFydGluZ0VudGl0eVR5cGUiLCJjb25jYXQiLCJpIiwiY3VycmVudE9iamVjdCIsInZpc2l0ZWRPYmplY3RzIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJSZXN1bHRDb250ZXh0IiwibmF2T2JqZWN0IiwibGVuZ3RoIiwibmF2UGF0aCIsIm91dERhdGFNb2RlbFBhdGgiLCJjb252ZXJ0ZXJDb250ZXh0IiwiZ2V0VGVtcGxhdGVUeXBlIiwiZW50aXR5VHlwZUZRTiIsIm1hdGNoIiwicmVwbGFjZWRBbm5vdGF0aW9uUGF0aCIsInN1YnN0ciIsImNvbnRleHRQYXRoIiwidGFyZ2V0UGF0aCIsInZvY2FidWxhcnlOYW1lIiwiYW5ub3RhdGlvblRlcm0iLCJhbm5vdGF0aW9uU291cmNlcyIsImdldEVudGl0eVR5cGUiLCJvdXRBbm5vdGF0aW9ucyIsImFubm90YXRpb25Tb3VyY2UiLCJPYmplY3QiLCJrZXlzIiwiZmlsdGVyIiwidGVybSIsInJlZHVjZSIsInByZXZpb3VzVmFsdWUiLCJrZXkiLCJzUGF0aCIsImVuaGFuY2VkUGF0aCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsInNFbnRpdHlTZXROYW1lIiwib01ldGFNb2RlbENvbnRleHQiLCJvTWV0YU1vZGVsIiwiaXNBIiwiZ2V0TW9kZWwiLCJvQ29udmVydGVyT3V0cHV0IiwiY29udmVydFR5cGVzIiwiZW50aXR5U2V0cyIsImVudGl0eVNldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBOEJBOzs7Ozs7QUFNQSxNQUFNQSxnQkFBZ0IsR0FBRyxVQUFTQyxlQUFULEVBQWdHO0FBQ3hILFdBQU8sT0FBT0EsZUFBUCxLQUEyQixRQUFsQztBQUNBLEdBRkQ7O0FBSUEsV0FBU0MsZUFBVCxDQUF5QkMsVUFBekIsRUFBOEY7QUFDN0YsV0FBT0EsVUFBVSxJ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LFlBQUFBLFlBQVksRUFBRUY7QUFMTyxXQUF0QjtBQU9BOztBQUNELGVBQU8sSUFBSUksZ0JBQUosQ0FBcUJtRSxnQkFBckIsRUFBdUNqRSxnQkFBdkMsRUFBeURDLFdBQXpELEVBQXNFQyxPQUF0RSxFQUErRUMsbUJBQS9FLENBQVA7QUFDQTs7Ozs7O1NBR2FMLGdCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbm5vdGF0aW9uVGVybSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHtcblx0QW55QW5ub3RhdGlvbixcblx0Q29udmVydGVyT3V0cHV0LFxuXHRFbnRpdHlTZXQsXG5cdEVudGl0eVR5cGUsXG5cdEVudGl0eUNvbnRhaW5lcixcblx0TmF2aWdhdGlvblByb3BlcnR5LFxuXHRTZXJ2aWNlT2JqZWN0LFxuXHRSZXNvbHV0aW9uVGFyZ2V0LFxuXHRTZXJ2aWNlT2JqZWN0QW5kQW5ub3RhdGlvblxufSBmcm9tIFwiQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlclwiO1xuaW1wb3J0IHsgQmFzZU1hbmlmZXN0U2V0dGluZ3MsIFRlbXBsYXRlVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IENvbnRleHQsIE9EYXRhTWV0YU1vZGVsIH0gZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NFwiO1xuaW1wb3J0IHsgY29udmVydFR5cGVzLCBSZXNvbHZlZFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgSURpYWdub3N0aWNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB7XG5cdERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGVuaGFuY2VEYXRhTW9kZWxQYXRoLFxuXHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLFxuXHRnZXRUYXJnZXRPYmplY3RQYXRoXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IEVudGl0eVR5cGVBbm5vdGF0aW9ucyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy90eXBlcy9nZW5lcmF0ZWQvRWRtX1R5cGVzXCI7XG5pbXBvcnQgTWFuaWZlc3RXcmFwcGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0V3JhcHBlclwiO1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlZEFubm90YXRpb25Db250ZXh0ID0ge1xuXHRhbm5vdGF0aW9uOiBBbnlBbm5vdGF0aW9uO1xuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0O1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiBvYmplY3QgaXMgYW4gYW5ub3RhdGlvbiB0ZXJtLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfEFubm90YXRpb25UZXJtPG9iamVjdD59IHZBbm5vdGF0aW9uUGF0aFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmNvbnN0IGlzQW5ub3RhdGlvblRlcm0gPSBmdW5jdGlvbih2QW5ub3RhdGlvblBhdGg6IHN0cmluZyB8IEFubm90YXRpb25UZXJtPGFueT4pOiB2QW5ub3RhdGlvblBhdGggaXMgQW5ub3RhdGlvblRlcm08YW55PiB7XG5cdHJldHVybiB0eXBlb2YgdkFubm90YXRpb25QYXRoID09PSBcIm9iamVjdFwiO1xufTtcblxuZnVuY3Rpb24gaXNTZXJ2aWNlT2JqZWN0KG9iamVjdFBhcnQ6IFNlcnZpY2VPYmplY3RBbmRBbm5vdGF0aW9uKTogb2JqZWN0UGFydCBpcyBTZXJ2aWNlT2JqZWN0IHtcblx0cmV0dXJuIG9iamVjdFBhcnQgJiYgb2JqZWN0UGFydC5oYXNPd25Qcm9wZXJ0eShcIl90eXBlXCIpO1xufVxuXG5jb25zdCBnZXREYXRhTW9kZWxQYXRoRm9yRW50aXR5U2V0ID0gZnVuY3Rpb24ocmVzb2x2ZWRNZXRhUGF0aDogUmVzb2x1dGlvblRhcmdldDxhbnk+KTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdGxldCByb290RW50aXR5U2V0OiBFbnRpdHlTZXQgfCB1bmRlZmluZWQ7XG5cdGxldCBjdXJyZW50RW50aXR5U2V0OiBFbnRpdHlTZXQgfCB1bmRlZmluZWQ7XG5cdGxldCBwcmV2aW91c0VudGl0eVNldDogRW50aXR5U2V0IHwgdW5kZWZpbmVkO1xuXHRsZXQgY3VycmVudEVudGl0eVR5cGU6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQ7XG5cdGxldCBuYXZpZ2F0ZWRQYXRoczogc3RyaW5nW10gPSBbXTtcblx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW107XG5cdHJlc29sdmVkTWV0YVBhdGgub2JqZWN0UGF0aC5mb3JFYWNoKChvYmplY3RQYXJ0OiBTZXJ2aWNlT2JqZWN0QW5kQW5ub3RhdGlvbikgPT4ge1xuXHRcdGlmIChpc1NlcnZpY2VPYmplY3Qob2JqZWN0UGFydCkpIHtcblx0XHRcdHN3aXRjaCAob2JqZWN0UGFydC5fdHlwZSkge1xuXHRcdFx0XHRjYXNlIFwiTmF2aWdhdGlvblByb3BlcnR5XCI6XG5cdFx0XHRcdFx0bmF2aWdhdGVkUGF0aHMucHVzaChvYmplY3RQYXJ0Lm5hbWUpO1xuXHRcdFx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2gob2JqZWN0UGFydCk7XG5cdFx0XHRcdFx0Y3VycmVudEVudGl0eVR5cGUgPSBvYmplY3RQYXJ0LnRhcmdldFR5cGU7XG5cdFx0XHRcdFx0aWYgKHByZXZpb3VzRW50aXR5U2V0ICYmIHByZXZpb3VzRW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcuaGFzT3duUHJvcGVydHkobmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIikpKSB7XG5cdFx0XHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gcHJldmlvdXNFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKV07XG5cdFx0XHRcdFx0XHRwcmV2aW91c0VudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdFx0XHRcdFx0XHRuYXZpZ2F0ZWRQYXRocyA9IFtdO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBcIkVudGl0eVNldFwiOlxuXHRcdFx0XHRcdGlmIChyb290RW50aXR5U2V0ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdHJvb3RFbnRpdHlTZXQgPSBvYmplY3RQYXJ0O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gb2JqZWN0UGFydDtcblx0XHRcdFx0XHRwcmV2aW91c0VudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdFx0XHRcdFx0Y3VycmVudEVudGl0eVR5cGUgPSBjdXJyZW50RW50aXR5U2V0Py5lbnRpdHlUeXBlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cdGNvbnN0IGRhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggPSB7XG5cdFx0c3RhcnRpbmdFbnRpdHlTZXQ6IHJvb3RFbnRpdHlTZXQgYXMgRW50aXR5U2V0LFxuXHRcdHRhcmdldEVudGl0eVR5cGU6IGN1cnJlbnRFbnRpdHlUeXBlIGFzIEVudGl0eVR5cGUsXG5cdFx0dGFyZ2V0RW50aXR5U2V0OiBjdXJyZW50RW50aXR5U2V0LFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBuYXZpZ2F0aW9uUHJvcGVydGllcyxcblx0XHRjb250ZXh0TG9jYXRpb246IHVuZGVmaW5lZCxcblx0XHR0YXJnZXRPYmplY3Q6IHJlc29sdmVkTWV0YVBhdGgudGFyZ2V0XG5cdH07XG5cdGRhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uID0gZGF0YU1vZGVsUGF0aDtcblx0cmV0dXJuIGRhdGFNb2RlbFBhdGg7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIENvbnZlcnRlckNvbnRleHQgb2JqZWN0IHRoYXQgd2lsbCBiZSB1c2VkIHdpdGhpbiB0aGUgY29udmVydGVycy5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlck91dHB1dH0gb0NvbnZlcnRlZFR5cGVzIFRoZSBjb252ZXJ0ZWQgYW5ub3RhdGlvbiBhbmQgc2VydmljZSB0eXBlc1xuICogQHBhcmFtIHtCYXNlTWFuaWZlc3RTZXR0aW5nc30gb01hbmlmZXN0U2V0dGluZ3MgVGhlIG1hbmlmZXN0U2V0dGluZ3MgdGhhdCBhcHBsaWVzIHRvIHRoaXMgcGFnZVxuICogQHBhcmFtIHtUZW1wbGF0ZVR5cGV9IHRlbXBsYXRlVHlwZSBUaGUgdHlwZSBvZiB0ZW1wbGF0ZSB3ZSdyZSBsb29raW5nIGF0IHJpZ2h0IG5vd1xuICogQHBhcmFtIHtJU2hlbGxTZXJ2aWNlc1Byb3h5fSBzaGVsbFNlcnZpY2VzIFRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBzaGVsbHNlcnZpY2VcbiAqIEBwYXJhbSB7SURpYWdub3N0aWNzfSBkaWFnbm9zdGljcyBUaGUgZGlhZ25vc3RpY3Mgc2hpbVxuICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGbiBUaGUgZnVuY3Rpb24gdG8gYmUgdXNlZCB0byBwZXJmb20gc29tZSBkZWVwIG1lcmdlcyBiZXR3ZWVuIG9iamVjdFxuICogQHBhcmFtIHtEYXRhTW9kZWxPYmplY3RQYXRofSB0YXJnZXREYXRhTW9kZWxQYXRoIFRoZSBnbG9iYWwgcGF0aCB0byByZWFjaCB0aGUgZW50aXR5U2V0XG4gKlxuICogQHJldHVybnMge0NvbnZlcnRlckNvbnRleHR9IEEgY29udmVydGVyIGNvbnRleHQgZm9yIHRoZSBjb252ZXJ0ZXJzXG4gKi9cbmNsYXNzIENvbnZlcnRlckNvbnRleHQge1xuXHRwcml2YXRlIG1hbmlmZXN0V3JhcHBlcjogTWFuaWZlc3RXcmFwcGVyO1xuXHRwcml2YXRlIGJhc2VDb250ZXh0UGF0aDogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgY29udmVydGVkVHlwZXM6IENvbnZlcnRlck91dHB1dCxcblx0XHRwcml2YXRlIG1hbmlmZXN0U2V0dGluZ3M6IEJhc2VNYW5pZmVzdFNldHRpbmdzLFxuXHRcdHByaXZhdGUgZGlhZ25vc3RpY3M6IElEaWFnbm9zdGljcyxcblx0XHRwcml2YXRlIG1lcmdlRm46IEZ1bmN0aW9uLFxuXHRcdHByaXZhdGUgdGFyZ2V0RGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aFxuXHQpIHtcblx0XHR0aGlzLm1hbmlmZXN0V3JhcHBlciA9IG5ldyBNYW5pZmVzdFdyYXBwZXIodGhpcy5tYW5pZmVzdFNldHRpbmdzLCBtZXJnZUZuKTtcblx0XHR0aGlzLmJhc2VDb250ZXh0UGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgodGhpcy50YXJnZXREYXRhTW9kZWxQYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSB0aGUgcHJvcGVydHkgYmFzZWQgb24gdGhlIHBhdGguXG5cdCAqXG5cdCAqIEBwYXJhbSBmdWxseVF1YWxpZmllZE5hbWUgVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lXG5cdCAqIEByZXR1cm5zIHtQcm9wZXJ0eX0gVGhlIHByb3BlcnR5IEVudGl0eVR5cGUgYmFzZWRcblx0ICovXG5cdHByaXZhdGUgX2dldEVudGl0eVR5cGVGcm9tRnVsbHlRdWFsaWZpZWROYW1lKGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogRW50aXR5VHlwZSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgdGFyZ2V0RW50aXR5VHlwZSA9IHRoaXMuY29udmVydGVkVHlwZXMuZW50aXR5VHlwZXMuZmluZChlbnRpdHlUeXBlID0+IHtcblx0XHRcdGlmIChmdWxseVF1YWxpZmllZE5hbWUuc3RhcnRzV2l0aChlbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSkpIHtcblx0XHRcdFx0Y29uc3QgcmVwbGFjZUFubm90YXRpb24gPSBmdWxseVF1YWxpZmllZE5hbWUucmVwbGFjZShlbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSwgXCJcIik7XG5cdFx0XHRcdHJldHVybiByZXBsYWNlQW5ub3RhdGlvbi5zdGFydHNXaXRoKFwiL1wiKSB8fCByZXBsYWNlQW5ub3RhdGlvbi5zdGFydHNXaXRoKFwiQFwiKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9KTtcblx0XHRyZXR1cm4gdGFyZ2V0RW50aXR5VHlwZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSB0aGUgZW50aXR5VHlwZSBhc3NvY2lhdGVkIHdpdGggYW4gYW5ub3RhdGlvbiBvYmplY3QuXG5cdCAqXG5cdCAqIEBwYXJhbSBhbm5vdGF0aW9uIFRoZSBhbm5vdGF0aW9uIG9iamVjdCBmb3Igd2hpY2ggd2Ugd2FudCB0byBmaW5kIHRoZSBlbnRpdHlUeXBlXG5cdCAqIEByZXR1cm5zIHtFbnRpdHlUeXBlfSBUaGUgRW50aXR5VHlwZSB0aGUgYW5ub3RhdGlvbiByZWZlcnMgdG9cblx0ICovXG5cdGdldEFubm90YXRpb25FbnRpdHlUeXBlKGFubm90YXRpb24/OiBBbm5vdGF0aW9uVGVybTxhbnk+KTogRW50aXR5VHlwZSB7XG5cdFx0aWYgKGFubm90YXRpb24pIHtcblx0XHRcdGNvbnN0IGFubm90YXRpb25QYXRoID0gYW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWU7XG5cdFx0XHRjb25zdCB0YXJnZXRFbnRpdHlUeXBlID0gdGhpcy5fZ2V0RW50aXR5VHlwZUZyb21GdWxseVF1YWxpZmllZE5hbWUoYW5ub3RhdGlvblBhdGgpO1xuXHRcdFx0aWYgKCF0YXJnZXRFbnRpdHlUeXBlKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIEVudGl0eSBUeXBlIGZvciBcIiArIGFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0YXJnZXRFbnRpdHlUeXBlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlIHRoZSBtYW5pZmVzdCBzZXR0aW5ncyBkZWZpbmVkIGZvciBhIHNwZWNpZmljIGNvbnRyb2wgd2l0aGluIGNvbnRyb2xDb25maWd1cmF0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0gdkFubm90YXRpb25QYXRoIFRoZSBhbm5vdGF0aW9uIHBhdGggb3Igb2JqZWN0IHRvIGV2YWx1YXRlXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIGNvbmZpZ3VyYXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgYW5udG9hdGlvbiBwYXRoIGlmIGl0IGV4aXN0c1xuXHQgKi9cblx0Z2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbih2QW5ub3RhdGlvblBhdGg6IHN0cmluZyB8IEFubm90YXRpb25UZXJtPGFueT4pOiBhbnkge1xuXHRcdGlmIChpc0Fubm90YXRpb25UZXJtKHZBbm5vdGF0aW9uUGF0aCkpIHtcblx0XHRcdHJldHVybiB0aGlzLm1hbmlmZXN0V3JhcHBlci5nZXRDb250cm9sQ29uZmlndXJhdGlvbihcblx0XHRcdFx0dkFubm90YXRpb25QYXRoLmZ1bGx5UXVhbGlmaWVkTmFtZS5yZXBsYWNlKHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSwgXCJcIilcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLm1hbmlmZXN0V3JhcHBlci5nZXRDb250cm9sQ29uZmlndXJhdGlvbih2QW5ub3RhdGlvblBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZSBhbiBhYnNvbHV0ZSBhbm5vdGF0aW9uIHBhdGggYmFzZWQgb24gdGhlIGN1cnJlbnQgbWV0YSBtb2RlbCBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0gc0Fubm90YXRpb25QYXRoIFRoZSByZWxhdGl2ZSBhbm5vdGF0aW9uIHBhdGhcblx0ICogQHJldHVybnMgVGhlIGNvcnJlY3QgYW5ub3RhdGlvbiBwYXRoIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbnRleHRcblx0ICovXG5cdGdldEFic29sdXRlQW5ub3RhdGlvblBhdGgoc0Fubm90YXRpb25QYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGlmICghc0Fubm90YXRpb25QYXRoKSB7XG5cdFx0XHRyZXR1cm4gc0Fubm90YXRpb25QYXRoO1xuXHRcdH1cblx0XHRpZiAoc0Fubm90YXRpb25QYXRoWzBdID09PSBcIi9cIikge1xuXHRcdFx0cmV0dXJuIHNBbm5vdGF0aW9uUGF0aDtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuYmFzZUNvbnRleHRQYXRoICsgXCIvXCIgKyBzQW5ub3RhdGlvblBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmUgdGhlIGN1cnJlbnQgZW50aXR5U2V0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCBFbnRpdHlTZXQgaWYgaXQgZXhpc3RzLlxuXHQgKi9cblx0Z2V0RW50aXR5U2V0KCk6IEVudGl0eVNldCB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQ7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmUgdGhlIGNvbnRleHQgcGF0aC5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGNvbnRleHQgcGF0aCBvZiB0aGUgY29udmVydGVyLlxuXHQgKi9cblx0Z2V0Q29udGV4dFBhdGgoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5iYXNlQ29udGV4dFBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmUgdGhlIGN1cnJlbnQgZGF0YSBtb2RlbCBvYmplY3QgcGF0aC5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgZGF0YSBtb2RlbCBvYmplY3QgcGF0aFxuXHQgKi9cblx0Z2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpOiBEYXRhTW9kZWxPYmplY3RQYXRoIHtcblx0XHRyZXR1cm4gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgRW50aXR5Q29udGFpbmVyLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCBzZXJ2aWNlIEVudGl0eUNvbnRhaW5lclxuXHQgKi9cblx0Z2V0RW50aXR5Q29udGFpbmVyKCk6IEVudGl0eUNvbnRhaW5lciB7XG5cdFx0cmV0dXJuIHRoaXMuY29udmVydGVkVHlwZXMuZW50aXR5Q29udGFpbmVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgRW50aXR5VHlwZSBiYXNlZCBvbiB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBjdXJyZW50IEVudGl0eVR5cGUuXG5cdCAqL1xuXHRnZXRFbnRpdHlUeXBlKCk6IEVudGl0eVR5cGUge1xuXHRcdHJldHVybiB0aGlzLnRhcmdldERhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSBhbiBhbm5vdGF0aW9uIGZyb20gYW4gRW50aXR5VHlwZSBiYXNlZCBvbiBhbiBhbm5vdGF0aW9uIHBhdGguXG5cdCAqXG5cdCAqIEBwYXJhbSBhbm5vdGF0aW9uUGF0aCBUaGUgYW5ub3RhdGlvbiBwYXRoIHRvIGV2YWx1YXRlXG5cdCAqIEByZXR1cm5zIFRoZSB0YXJnZXQgYW5ub3RhdGlvbiBwYXRoIGFzIHdlbGwgYXMgYSBjb252ZXJ0ZXIgY29udGV4dCB0byBnbyB3aXRoIGl0XG5cdCAqL1xuXHRnZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihhbm5vdGF0aW9uUGF0aDogc3RyaW5nKTogUmVzb2x2ZWRBbm5vdGF0aW9uQ29udGV4dCB7XG5cdFx0aWYgKGFubm90YXRpb25QYXRoLmluZGV4T2YoXCJAXCIpID09PSAtMSkge1xuXHRcdFx0YW5ub3RhdGlvblBhdGggPSBcIkBcIiArIGFubm90YXRpb25QYXRoO1xuXHRcdH1cblx0XHRjb25zdCB0YXJnZXRPYmplY3Q6IFJlc29sdmVkVGFyZ2V0ID0gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUucmVzb2x2ZVBhdGgoYW5ub3RhdGlvblBhdGgsIHRydWUpO1xuXG5cdFx0bGV0IHJvb3RFbnRpdHlTZXQgPSB0aGlzLnRhcmdldERhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0O1xuXHRcdGxldCBjdXJyZW50RW50aXR5VHlwZSA9IHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlUeXBlO1xuXHRcdGNvbnN0IHN0YXJ0aW5nRW50aXR5VHlwZSA9IHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aC5zdGFydGluZ0VudGl0eVNldC5lbnRpdHlUeXBlO1xuXHRcdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmNvbmNhdCgpO1xuXHRcdGxldCBpID0gMTtcblx0XHRsZXQgY3VycmVudE9iamVjdDtcblx0XHRsZXQgbmF2aWdhdGVkUGF0aHMgPSBbXTtcblx0XHRjb25zdCB2aXNpdGVkT2JqZWN0cyA9IHRhcmdldE9iamVjdC52aXNpdGVkT2JqZWN0cztcblx0XHQvLyBJbiBjYXNlIG9mIHBhcmFtZXRlcml6ZWQgc2VydmljZVxuXHRcdGlmICghcm9vdEVudGl0eVNldCAmJiBzdGFydGluZ0VudGl0eVR5cGUuYW5ub3RhdGlvbnMuQ29tbW9uPy5SZXN1bHRDb250ZXh0KSB7XG5cdFx0XHRyb290RW50aXR5U2V0ID0gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLnN0YXJ0aW5nRW50aXR5U2V0O1xuXHRcdFx0dGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24obmF2T2JqZWN0KSB7XG5cdFx0XHRcdG5hdmlnYXRlZFBhdGhzLnB1c2gobmF2T2JqZWN0Lm5hbWUpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHdoaWxlIChpIDwgdmlzaXRlZE9iamVjdHMubGVuZ3RoKSB7XG5cdFx0XHRjdXJyZW50T2JqZWN0ID0gdmlzaXRlZE9iamVjdHNbaSsrXTtcblx0XHRcdGlmIChjdXJyZW50T2JqZWN0Ll90eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiKSB7XG5cdFx0XHRcdG5hdmlnYXRlZFBhdGhzLnB1c2goY3VycmVudE9iamVjdC5uYW1lKTtcblx0XHRcdFx0bmF2aWdhdGlvblByb3BlcnRpZXMucHVzaChjdXJyZW50T2JqZWN0IGFzIE5hdmlnYXRpb25Qcm9wZXJ0eSk7XG5cdFx0XHRcdGN1cnJlbnRFbnRpdHlUeXBlID0gKGN1cnJlbnRPYmplY3QgYXMgTmF2aWdhdGlvblByb3BlcnR5KS50YXJnZXRUeXBlO1xuXHRcdFx0XHRpZiAocm9vdEVudGl0eVNldCAmJiByb290RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcuaGFzT3duUHJvcGVydHkobmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIikpKSB7XG5cdFx0XHRcdFx0Y29uc3QgbmF2UGF0aCA9IG5hdmlnYXRlZFBhdGhzLmpvaW4oXCIvXCIpO1xuXHRcdFx0XHRcdHJvb3RFbnRpdHlTZXQgPVxuXHRcdFx0XHRcdFx0cm9vdEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW2N1cnJlbnRPYmplY3QubmFtZV0gfHwgcm9vdEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW25hdlBhdGhdO1xuXHRcdFx0XHRcdG5hdmlnYXRlZFBhdGhzID0gW107XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cm9vdEVudGl0eVNldCA9IHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGN1cnJlbnRPYmplY3QuX3R5cGUgPT09IFwiRW50aXR5U2V0XCIpIHtcblx0XHRcdFx0cm9vdEVudGl0eVNldCA9IGN1cnJlbnRPYmplY3QgYXMgRW50aXR5U2V0O1xuXHRcdFx0XHRjdXJyZW50RW50aXR5VHlwZSA9IHJvb3RFbnRpdHlTZXQuZW50aXR5VHlwZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3Qgb3V0RGF0YU1vZGVsUGF0aCA9IHtcblx0XHRcdHN0YXJ0aW5nRW50aXR5U2V0OiB0aGlzLnRhcmdldERhdGFNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQsXG5cdFx0XHR0YXJnZXRFbnRpdHlTZXQ6IHJvb3RFbnRpdHlTZXQsXG5cdFx0XHR0YXJnZXRFbnRpdHlUeXBlOiBjdXJyZW50RW50aXR5VHlwZSxcblx0XHRcdHRhcmdldE9iamVjdDogbmF2aWdhdGlvblByb3BlcnRpZXNbbmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoIC0gMV0sXG5cdFx0XHRuYXZpZ2F0aW9uUHJvcGVydGllcyxcblx0XHRcdGNvbnRleHRMb2NhdGlvbjogdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvblxuXHRcdH07XG5cdFx0cmV0dXJuIHtcblx0XHRcdGFubm90YXRpb246IHRhcmdldE9iamVjdC50YXJnZXQgYXMgQW55QW5ub3RhdGlvbixcblx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IG5ldyBDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0XHR0aGlzLmNvbnZlcnRlZFR5cGVzLFxuXHRcdFx0XHR0aGlzLm1hbmlmZXN0U2V0dGluZ3MsXG5cdFx0XHRcdHRoaXMuZGlhZ25vc3RpY3MsXG5cdFx0XHRcdHRoaXMubWVyZ2VGbixcblx0XHRcdFx0b3V0RGF0YU1vZGVsUGF0aFxuXHRcdFx0KVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmUgdGhlIHR5cGUgb2YgdGVtcGxhdGUgd2UncmUgd29ya2luZyBvbiAoZS5nLiBMaXN0UmVwb3J0IC8gT2JqZWN0UGFnZSAvIC4uLikuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHRlbnBsYXRlIHR5cGVcblx0ICovXG5cdGdldFRlbXBsYXRlVHlwZSgpOiBUZW1wbGF0ZVR5cGUge1xuXHRcdHJldHVybiB0aGlzLm1hbmlmZXN0V3JhcHBlci5nZXRUZW1wbGF0ZVR5cGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSBhIHJlbGF0aXZlIGFubm90YXRpb24gcGF0aCBiZXR3ZWVuIGFuIGFubm90YXRpb24gcGF0aCBhbmQgYW4gZW50aXR5IHR5cGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBhbm5vdGF0aW9uUGF0aFxuXHQgKiBAcGFyYW0gZW50aXR5VHlwZVxuXHQgKiBAcmV0dXJucyBUaGUgcmVsYXRpdmUgYW5udG90YXRpb24gcGF0aC5cblx0ICovXG5cdGdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoYW5ub3RhdGlvblBhdGg6IHN0cmluZywgZW50aXR5VHlwZTogRW50aXR5VHlwZSk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGFubm90YXRpb25QYXRoLnJlcGxhY2UoZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyYW5zZm9ybSBhbiBlbnRpdHlUeXBlIGJhc2VkIHBhdGggdG8gYW4gZW50aXR5U2V0IGJhc2VkIG9uZSAodWk1IHRlbXBsYXRpbmcgZ2VuZXJhbGx5IGV4cGVjdCBhbiBlbnRpdHlTZXRCYXNlZFBhdGgpLlxuXHQgKlxuXHQgKiBAcGFyYW0gYW5ub3RhdGlvblBhdGhcblx0ICogQHJldHVybnMgVGhlIEVudGl0eVNldCBiYXNlZCBhbm5vdGF0aW9uIHBhdGhcblx0ICovXG5cdGdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoYW5ub3RhdGlvblBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKCFhbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25QYXRoO1xuXHRcdH1cblx0XHRjb25zdCBlbnRpdHlUeXBlRlFOID0gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lO1xuXHRcdGlmIChcblx0XHRcdHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQgfHxcblx0XHRcdCgodGhpcy5iYXNlQ29udGV4dFBhdGguc3RhcnRzV2l0aChcIi9cIikgJiYgdGhpcy5iYXNlQ29udGV4dFBhdGgubWF0Y2goL1xcLy9nKSkgfHwgW10pLmxlbmd0aCA+IDFcblx0XHQpIHtcblx0XHRcdGxldCByZXBsYWNlZEFubm90YXRpb25QYXRoID0gYW5ub3RhdGlvblBhdGgucmVwbGFjZShlbnRpdHlUeXBlRlFOLCBcIi9cIik7XG5cdFx0XHRpZiAocmVwbGFjZWRBbm5vdGF0aW9uUGF0aC5sZW5ndGggPiAyICYmIHJlcGxhY2VkQW5ub3RhdGlvblBhdGhbMF0gPT09IFwiL1wiICYmIHJlcGxhY2VkQW5ub3RhdGlvblBhdGhbMV0gPT09IFwiL1wiKSB7XG5cdFx0XHRcdHJlcGxhY2VkQW5ub3RhdGlvblBhdGggPSByZXBsYWNlZEFubm90YXRpb25QYXRoLnN1YnN0cigxKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLmJhc2VDb250ZXh0UGF0aCArIHJlcGxhY2VkQW5ub3RhdGlvblBhdGg7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBcIi9cIiArIGFubm90YXRpb25QYXRoO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSB0aGUgbWFuaWZlc3Qgd3JhcHBlciBmb3IgdGhlIGN1cnJlbnQgY29udGV4dC5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgbWFuaWZlc3Qgd3JhcHBlclxuXHQgKi9cblx0Z2V0TWFuaWZlc3RXcmFwcGVyKCk6IE1hbmlmZXN0V3JhcHBlciB7XG5cdFx0cmV0dXJuIHRoaXMubWFuaWZlc3RXcmFwcGVyO1xuXHR9XG5cblx0Z2V0RGlhZ25vc3RpY3MoKTogSURpYWdub3N0aWNzIHtcblx0XHRyZXR1cm4gdGhpcy5kaWFnbm9zdGljcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSBhIG5ldyBjb252ZXJ0ZXIgY29udGV4dCwgc2NvcGVkIGZvciBhIGRpZmZlcmVudCBjb250ZXh0IHBhdGguXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0UGF0aCBUaGUgcGF0aCB3ZSB3YW50IHRvIG9yY2hlc3RyYXRlIHRoZSBjb252ZXJ0ZXIgY29udGV4dCBhcm91bmRcblx0ICogQHJldHVybnMge0NvbnZlcnRlckNvbnRleHR9XG5cdCAqL1xuXHRnZXRDb252ZXJ0ZXJDb250ZXh0Rm9yPFQ+KGNvbnRleHRQYXRoOiBzdHJpbmcpOiBDb252ZXJ0ZXJDb250ZXh0IHtcblx0XHRjb25zdCByZXNvbHZlZE1ldGFQYXRoOiBSZXNvbHV0aW9uVGFyZ2V0PFQ+ID0gdGhpcy5jb252ZXJ0ZWRUeXBlcy5yZXNvbHZlUGF0aChjb250ZXh0UGF0aCk7XG5cdFx0Y29uc3QgdGFyZ2V0UGF0aCA9IGdldERhdGFNb2RlbFBhdGhGb3JFbnRpdHlTZXQocmVzb2x2ZWRNZXRhUGF0aCk7XG5cdFx0cmV0dXJuIG5ldyBDb252ZXJ0ZXJDb250ZXh0KHRoaXMuY29udmVydGVkVHlwZXMsIHRoaXMubWFuaWZlc3RTZXR0aW5ncywgdGhpcy5kaWFnbm9zdGljcywgdGhpcy5tZXJnZUZuLCB0YXJnZXRQYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYWxsIGFubm90YXRpb25zIG9mIGEgZ2l2ZW4gdGVybSBhbmQgdm9jYWJ1bGFyeSBvbiBhbiBlbnRpdHkgdHlwZVxuXHQgKiAob3Igb24gdGhlIGN1cnJlbnQgZW50aXR5IHR5cGUgaWYgZW50aXR5VHlwZSBpc24ndCBzcGVjaWZpZWQpLlxuXHQgKlxuXHQgKiBAcGFyYW0gdm9jYWJ1bGFyeU5hbWVcblx0ICogQHBhcmFtIGFubm90YXRpb25UZXJtXG5cdCAqIEBwYXJhbSBbYW5ub3RhdGlvblNvdXJjZXNdXG5cdCAqIEByZXR1cm5zIEFsbCB0aGUgYW5ub3RhdGlvbiBmb3IgYSBzcGVjaWZpYyB0ZXJtIGFuZCB2b2NhYnVsYXJ5IGZyb20gYW4gZW50aXR5IHR5cGVcblx0ICovXG5cdGdldEFubm90YXRpb25zQnlUZXJtKFxuXHRcdHZvY2FidWxhcnlOYW1lOiBrZXlvZiBFbnRpdHlUeXBlQW5ub3RhdGlvbnMsXG5cdFx0YW5ub3RhdGlvblRlcm06IHN0cmluZyxcblx0XHRhbm5vdGF0aW9uU291cmNlczogKFNlcnZpY2VPYmplY3QgfCB1bmRlZmluZWQpW10gPSBbdGhpcy5nZXRFbnRpdHlUeXBlKCldXG5cdCk6IEFubm90YXRpb25UZXJtPGFueT5bXSB7XG5cdFx0bGV0IG91dEFubm90YXRpb25zOiBBbm5vdGF0aW9uVGVybTxhbnk+W10gPSBbXTtcblx0XHRhbm5vdGF0aW9uU291cmNlcy5mb3JFYWNoKGFubm90YXRpb25Tb3VyY2UgPT4ge1xuXHRcdFx0aWYgKGFubm90YXRpb25Tb3VyY2UpIHtcblx0XHRcdFx0Y29uc3QgYW5ub3RhdGlvbnM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25UZXJtPGFueT4+ID0gYW5ub3RhdGlvblNvdXJjZT8uYW5ub3RhdGlvbnNbdm9jYWJ1bGFyeU5hbWVdIHx8IHt9O1xuXHRcdFx0XHRpZiAoYW5ub3RhdGlvbnMpIHtcblx0XHRcdFx0XHRvdXRBbm5vdGF0aW9ucyA9IE9iamVjdC5rZXlzKGFubm90YXRpb25zKVxuXHRcdFx0XHRcdFx0LmZpbHRlcihhbm5vdGF0aW9uID0+IGFubm90YXRpb25zW2Fubm90YXRpb25dLnRlcm0gPT09IGFubm90YXRpb25UZXJtKVxuXHRcdFx0XHRcdFx0LnJlZHVjZSgocHJldmlvdXNWYWx1ZTogQW5ub3RhdGlvblRlcm08YW55PltdLCBrZXk6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdFx0XHRwcmV2aW91c1ZhbHVlLnB1c2goYW5ub3RhdGlvbnNba2V5XSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBwcmV2aW91c1ZhbHVlO1xuXHRcdFx0XHRcdFx0fSwgb3V0QW5ub3RhdGlvbnMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG91dEFubm90YXRpb25zO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgcmVsYXRpdmUgbW9kZWwgcGF0aCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0IHBhdGguXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBUaGUgcmVsYXRpdmUgbW9kZWwgcGF0aCBvciB1bmRlZmluZWQgaWYgdGhlIHBhdGggaXMgbm90IHJlc29sdmVhYmxlXG5cdCAqL1xuXHRnZXRSZWxhdGl2ZU1vZGVsUGF0aEZ1bmN0aW9uKCk6IEZ1bmN0aW9uIHtcblx0XHRjb25zdCB0YXJnZXREYXRhTW9kZWxQYXRoID0gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoO1xuXHRcdHJldHVybiBmdW5jdGlvbihzUGF0aDogc3RyaW5nKSB7XG5cdFx0XHRjb25zdCBlbmhhbmNlZFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aCh0YXJnZXREYXRhTW9kZWxQYXRoLCBzUGF0aCk7XG5cdFx0XHRyZXR1cm4gZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChlbmhhbmNlZFBhdGgsIHRydWUpO1xuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIHRoZSBjb252ZXJ0ZXIgY29udGV4dCBuZWNlc3NhcnkgZm9yIGEgbWFjcm8gYmFzZWQgb24gYSBtZXRhbW9kZWwgY29udGV4dC5cblx0ICogQHBhcmFtIHNFbnRpdHlTZXROYW1lXG5cdCAqIEBwYXJhbSBvTWV0YU1vZGVsQ29udGV4dFxuXHQgKiBAcGFyYW0gZGlhZ25vc3RpY3Ncblx0ICogQHBhcmFtIG1lcmdlRm5cblx0ICogQHBhcmFtIHRhcmdldERhdGFNb2RlbFBhdGhcblx0ICogQHBhcmFtIG1hbmlmZXN0U2V0dGluZ3Ncblx0ICogQHJldHVybnMge0NvbnZlcnRlckNvbnRleHR9IFRoZSBjdXJyZW50IGNvbnZlcnRlciBjb250ZXh0XG5cdCAqL1xuXHRzdGF0aWMgY3JlYXRlQ29udmVydGVyQ29udGV4dEZvck1hY3JvKFxuXHRcdHNFbnRpdHlTZXROYW1lOiBzdHJpbmcsXG5cdFx0b01ldGFNb2RlbENvbnRleHQ6IENvbnRleHQgfCBPRGF0YU1ldGFNb2RlbCxcblx0XHRkaWFnbm9zdGljczogSURpYWdub3N0aWNzLFxuXHRcdG1lcmdlRm46IEZ1bmN0aW9uLFxuXHRcdHRhcmdldERhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggfCB1bmRlZmluZWQsXG5cdFx0bWFuaWZlc3RTZXR0aW5nczogQmFzZU1hbmlmZXN0U2V0dGluZ3MgPSB7fSBhcyBCYXNlTWFuaWZlc3RTZXR0aW5nc1xuXHQpOiBDb252ZXJ0ZXJDb250ZXh0IHtcblx0XHRjb25zdCBvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCA9IG9NZXRhTW9kZWxDb250ZXh0LmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YU1ldGFNb2RlbFwiKVxuXHRcdFx0PyAob01ldGFNb2RlbENvbnRleHQgYXMgT0RhdGFNZXRhTW9kZWwpXG5cdFx0XHQ6ICgoKG9NZXRhTW9kZWxDb250ZXh0IGFzIENvbnRleHQpLmdldE1vZGVsKCkgYXMgdW5rbm93bikgYXMgT0RhdGFNZXRhTW9kZWwpO1xuXHRcdGNvbnN0IG9Db252ZXJ0ZXJPdXRwdXQgPSBjb252ZXJ0VHlwZXMob01ldGFNb2RlbCk7XG5cdFx0Y29uc3QgdGFyZ2V0RW50aXR5U2V0ID0gb0NvbnZlcnRlck91dHB1dC5lbnRpdHlTZXRzLmZpbmQoZW50aXR5U2V0ID0+IGVudGl0eVNldC5uYW1lID09PSBzRW50aXR5U2V0TmFtZSkgYXMgRW50aXR5U2V0O1xuXHRcdGlmICghdGFyZ2V0RGF0YU1vZGVsUGF0aCkge1xuXHRcdFx0dGFyZ2V0RGF0YU1vZGVsUGF0aCA9IHtcblx0XHRcdFx0c3RhcnRpbmdFbnRpdHlTZXQ6IHRhcmdldEVudGl0eVNldCxcblx0XHRcdFx0bmF2aWdhdGlvblByb3BlcnRpZXM6IFtdLFxuXHRcdFx0XHR0YXJnZXRFbnRpdHlTZXQ6IHRhcmdldEVudGl0eVNldCxcblx0XHRcdFx0dGFyZ2V0RW50aXR5VHlwZTogdGFyZ2V0RW50aXR5U2V0LmVudGl0eVR5cGUsXG5cdFx0XHRcdHRhcmdldE9iamVjdDogdGFyZ2V0RW50aXR5U2V0XG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IENvbnZlcnRlckNvbnRleHQob0NvbnZlcnRlck91dHB1dCwgbWFuaWZlc3RTZXR0aW5ncywgZGlhZ25vc3RpY3MsIG1lcmdlRm4sIHRhcmdldERhdGFNb2RlbFBhdGgpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbnZlcnRlckNvbnRleHQ7XG4iXX0=
|
|
500
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnZlcnRlckNvbnRleHQudHMiXSwibmFtZXMiOlsiaXNBbm5vdGF0aW9uVGVybSIsInZBbm5vdGF0aW9uUGF0aCIsImlzU2VydmljZU9iamVjdCIsIm9iamVjdFBhcnQiLCJoYXNPd25Qcm9wZXJ0eSIsImdldERhdGFNb2RlbFBhdGhGb3JFbnRpdHlTZXQiLCJyZXNvbHZlZE1ldGFQYXRoIiwicm9vdEVudGl0eVNldCIsImN1cnJlbnRFbnRpdHlTZXQiLCJwcmV2aW91c0VudGl0eVNldCIsImN1cnJlbnRFbnRpdHlUeXBlIiwibmF2aWdhdGVkUGF0aHMiLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsIm9iamVjdFBhdGgiLCJmb3JFYWNoIiwiX3R5cGUiLCJwdXNoIiwibmFtZSIsInRhcmdldFR5cGUiLCJuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIiwiam9pbiIsInVuZGVmaW5lZCIsImVudGl0eVR5cGUiLCJkYXRhTW9kZWxQYXRoIiwic3RhcnRpbmdFbnRpdHlTZXQiLCJ0YXJnZXRFbnRpdHlUeXBlIiwidGFyZ2V0RW50aXR5U2V0IiwiY29udGV4dExvY2F0aW9uIiwidGFyZ2V0T2JqZWN0IiwidGFyZ2V0IiwiQ29udmVydGVyQ29udGV4dCIsImNvbnZlcnRlZFR5cGVzIiwibWFuaWZlc3RTZXR0aW5ncyIsImRpYWdub3N0aWNzIiwibWVyZ2VGbiIsInRhcmdldERhdGFNb2RlbFBhdGgiLCJtYW5pZmVzdFdyYXBwZXIiLCJNYW5pZmVzdFdyYXBwZXIiLCJiYXNlQ29udGV4dFBhdGgiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZW50aXR5VHlwZXMiLCJmaW5kIiwic3RhcnRzV2l0aCIsInJlcGxhY2VBbm5vdGF0aW9uIiwicmVwbGFjZSIsImFubm90YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsIl9nZXRFbnRpdHlUeXBlRnJvbUZ1bGx5UXVhbGlmaWVkTmFtZSIsIkVycm9yIiwiZ2V0Q29udHJvbENvbmZpZ3VyYXRpb24iLCJzQW5ub3RhdGlvblBhdGgiLCJlbnRpdHlDb250YWluZXIiLCJzaW5nbGV0b25zIiwic2luZ2xldG9uIiwiaW5kZXhPZiIsInJlc29sdmVQYXRoIiwic3RhcnRpbmdFbnRpdHlUeXBlIiwiY29uY2F0IiwiaSIsImN1cnJlbnRPYmplY3QiLCJ2aXNpdGVkT2JqZWN0cyIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiUmVzdWx0Q29udGV4dCIsIm5hdk9iamVjdCIsImxlbmd0aCIsIm5hdlBhdGgiLCJvdXREYXRhTW9kZWxQYXRoIiwiY29udmVydGVyQ29udGV4dCIsImdldFRlbXBsYXRlVHlwZSIsImVudGl0eVR5cGVGUU4iLCJtYXRjaCIsInJlcGxhY2VkQW5ub3RhdGlvblBhdGgiLCJzdWJzdHIiLCJjb250ZXh0UGF0aCIsInRhcmdldFBhdGgiLCJ2b2NhYnVsYXJ5TmFtZSIsImFubm90YXRpb25UZXJtIiwiYW5ub3RhdGlvblNvdXJjZXMiLCJnZXRFbnRpdHlUeXBlIiwib3V0QW5ub3RhdGlvbnMiLCJhbm5vdGF0aW9uU291cmNlIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsInRlcm0iLCJyZWR1Y2UiLCJwcmV2aW91c1ZhbHVlIiwia2V5Iiwic1BhdGgiLCJlbmhhbmNlZFBhdGgiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJzRW50aXR5U2V0TmFtZSIsIm9NZXRhTW9kZWxDb250ZXh0Iiwib01ldGFNb2RlbCIsImlzQSIsImdldE1vZGVsIiwib0NvbnZlcnRlck91dHB1dCIsImNvbnZlcnRUeXBlcyIsImVudGl0eVNldHMiLCJlbnRpdHlTZXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStCQTs7Ozs7O0FBTUEsTUFBTUEsZ0JBQWdCLEdBQUcsVUFBU0MsZUFBVCxFQUFnRztBQUN4SCxXQUFPLE9BQU9BLGVBQVAsS0FBMkIsUUFBbEM7QUFDQSxHQUZEOztBQUlBLFdBQVNDLGVBQVQsQ0FBeUJDLFVBQXpC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QUksQ0FBQzNELG1CQUFMLEVBQTBCO0FBQ3pCQSxVQUFBQSxtQkFBbUIsR0FBRztBQUNyQlgsWUFBQUEsaUJBQWlCLEVBQUVFLGVBREU7QUFFckJkLFlBQUFBLG9CQUFvQixFQUFFLEVBRkQ7QUFHckJjLFlBQUFBLGVBQWUsRUFBRUEsZUFISTtBQUlyQkQsWUFBQUEsZ0JBQWdCLEVBQUVDLGVBQWUsQ0FBQ0osVUFKYjtBQUtyQk0sWUFBQUEsWUFBWSxFQUFFRjtBQUxPLFdBQXRCO0FBT0E7O0FBQ0QsZUFBTyxJQUFJSSxnQkFBSixDQUFxQnFFLGdCQUFyQixFQUF1Q25FLGdCQUF2QyxFQUF5REMsV0FBekQsRUFBc0VDLE9BQXRFLEVBQStFQyxtQkFBL0UsQ0FBUDtBQUNBOzs7Ozs7U0FHYUwsZ0IiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFubm90YXRpb25UZXJtIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQge1xuXHRBbnlBbm5vdGF0aW9uLFxuXHRDb252ZXJ0ZXJPdXRwdXQsXG5cdEVudGl0eVNldCxcblx0RW50aXR5VHlwZSxcblx0RW50aXR5Q29udGFpbmVyLFxuXHROYXZpZ2F0aW9uUHJvcGVydHksXG5cdFNlcnZpY2VPYmplY3QsXG5cdFNpbmdsZXRvbixcblx0UmVzb2x1dGlvblRhcmdldCxcblx0U2VydmljZU9iamVjdEFuZEFubm90YXRpb25cbn0gZnJvbSBcIkBzYXAtdXgvYW5ub3RhdGlvbi1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7IEJhc2VNYW5pZmVzdFNldHRpbmdzLCBUZW1wbGF0ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBDb250ZXh0LCBPRGF0YU1ldGFNb2RlbCB9IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjRcIjtcbmltcG9ydCB7IGNvbnZlcnRUeXBlcywgUmVzb2x2ZWRUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IElEaWFnbm9zdGljcyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQge1xuXHREYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRlbmhhbmNlRGF0YU1vZGVsUGF0aCxcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBFbnRpdHlUeXBlQW5ub3RhdGlvbnMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdHlwZXMvZ2VuZXJhdGVkL0VkbV9UeXBlc1wiO1xuaW1wb3J0IE1hbmlmZXN0V3JhcHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFdyYXBwZXJcIjtcblxuZXhwb3J0IHR5cGUgUmVzb2x2ZWRBbm5vdGF0aW9uQ29udGV4dCA9IHtcblx0YW5ub3RhdGlvbjogQW55QW5ub3RhdGlvbjtcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYW4gb2JqZWN0IGlzIGFuIGFubm90YXRpb24gdGVybS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xBbm5vdGF0aW9uVGVybTxvYmplY3Q+fSB2QW5ub3RhdGlvblBhdGhcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5jb25zdCBpc0Fubm90YXRpb25UZXJtID0gZnVuY3Rpb24odkFubm90YXRpb25QYXRoOiBzdHJpbmcgfCBBbm5vdGF0aW9uVGVybTxhbnk+KTogdkFubm90YXRpb25QYXRoIGlzIEFubm90YXRpb25UZXJtPGFueT4ge1xuXHRyZXR1cm4gdHlwZW9mIHZBbm5vdGF0aW9uUGF0aCA9PT0gXCJvYmplY3RcIjtcbn07XG5cbmZ1bmN0aW9uIGlzU2VydmljZU9iamVjdChvYmplY3RQYXJ0OiBTZXJ2aWNlT2JqZWN0QW5kQW5ub3RhdGlvbik6IG9iamVjdFBhcnQgaXMgU2VydmljZU9iamVjdCB7XG5cdHJldHVybiBvYmplY3RQYXJ0ICYmIG9iamVjdFBhcnQuaGFzT3duUHJvcGVydHkoXCJfdHlwZVwiKTtcbn1cblxuY29uc3QgZ2V0RGF0YU1vZGVsUGF0aEZvckVudGl0eVNldCA9IGZ1bmN0aW9uKHJlc29sdmVkTWV0YVBhdGg6IFJlc29sdXRpb25UYXJnZXQ8YW55Pik6IERhdGFNb2RlbE9iamVjdFBhdGgge1xuXHRsZXQgcm9vdEVudGl0eVNldDogRW50aXR5U2V0IHwgdW5kZWZpbmVkO1xuXHRsZXQgY3VycmVudEVudGl0eVNldDogRW50aXR5U2V0IHwgdW5kZWZpbmVkO1xuXHRsZXQgcHJldmlvdXNFbnRpdHlTZXQ6IEVudGl0eVNldCB8IHVuZGVmaW5lZDtcblx0bGV0IGN1cnJlbnRFbnRpdHlUeXBlOiBFbnRpdHlUeXBlIHwgdW5kZWZpbmVkO1xuXHRsZXQgbmF2aWdhdGVkUGF0aHM6IHN0cmluZ1tdID0gW107XG5cdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBOYXZpZ2F0aW9uUHJvcGVydHlbXSA9IFtdO1xuXHRyZXNvbHZlZE1ldGFQYXRoLm9iamVjdFBhdGguZm9yRWFjaCgob2JqZWN0UGFydDogU2VydmljZU9iamVjdEFuZEFubm90YXRpb24pID0+IHtcblx0XHRpZiAoaXNTZXJ2aWNlT2JqZWN0KG9iamVjdFBhcnQpKSB7XG5cdFx0XHRzd2l0Y2ggKG9iamVjdFBhcnQuX3R5cGUpIHtcblx0XHRcdFx0Y2FzZSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiOlxuXHRcdFx0XHRcdG5hdmlnYXRlZFBhdGhzLnB1c2gob2JqZWN0UGFydC5uYW1lKTtcblx0XHRcdFx0XHRuYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKG9iamVjdFBhcnQpO1xuXHRcdFx0XHRcdGN1cnJlbnRFbnRpdHlUeXBlID0gb2JqZWN0UGFydC50YXJnZXRUeXBlO1xuXHRcdFx0XHRcdGlmIChwcmV2aW91c0VudGl0eVNldCAmJiBwcmV2aW91c0VudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KG5hdmlnYXRlZFBhdGhzLmpvaW4oXCIvXCIpKSkge1xuXHRcdFx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IHByZXZpb3VzRW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbbmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIildO1xuXHRcdFx0XHRcdFx0cHJldmlvdXNFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHRcdFx0bmF2aWdhdGVkUGF0aHMgPSBbXTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgXCJFbnRpdHlTZXRcIjpcblx0XHRcdFx0XHRpZiAocm9vdEVudGl0eVNldCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRyb290RW50aXR5U2V0ID0gb2JqZWN0UGFydDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IG9iamVjdFBhcnQ7XG5cdFx0XHRcdFx0cHJldmlvdXNFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHRcdGN1cnJlbnRFbnRpdHlUeXBlID0gY3VycmVudEVudGl0eVNldD8uZW50aXR5VHlwZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXHRjb25zdCBkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoID0ge1xuXHRcdHN0YXJ0aW5nRW50aXR5U2V0OiByb290RW50aXR5U2V0IGFzIEVudGl0eVNldCxcblx0XHR0YXJnZXRFbnRpdHlUeXBlOiBjdXJyZW50RW50aXR5VHlwZSBhcyBFbnRpdHlUeXBlLFxuXHRcdHRhcmdldEVudGl0eVNldDogY3VycmVudEVudGl0eVNldCxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogbmF2aWdhdGlvblByb3BlcnRpZXMsXG5cdFx0Y29udGV4dExvY2F0aW9uOiB1bmRlZmluZWQsXG5cdFx0dGFyZ2V0T2JqZWN0OiByZXNvbHZlZE1ldGFQYXRoLnRhcmdldFxuXHR9O1xuXHRkYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvbiA9IGRhdGFNb2RlbFBhdGg7XG5cdHJldHVybiBkYXRhTW9kZWxQYXRoO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBDb252ZXJ0ZXJDb250ZXh0IG9iamVjdCB0aGF0IHdpbGwgYmUgdXNlZCB3aXRoaW4gdGhlIGNvbnZlcnRlcnMuXG4gKlxuICogQHBhcmFtIHtDb252ZXJ0ZXJPdXRwdXR9IG9Db252ZXJ0ZWRUeXBlcyBUaGUgY29udmVydGVkIGFubm90YXRpb24gYW5kIHNlcnZpY2UgdHlwZXNcbiAqIEBwYXJhbSB7QmFzZU1hbmlmZXN0U2V0dGluZ3N9IG9NYW5pZmVzdFNldHRpbmdzIFRoZSBtYW5pZmVzdFNldHRpbmdzIHRoYXQgYXBwbGllcyB0byB0aGlzIHBhZ2VcbiAqIEBwYXJhbSB7VGVtcGxhdGVUeXBlfSB0ZW1wbGF0ZVR5cGUgVGhlIHR5cGUgb2YgdGVtcGxhdGUgd2UncmUgbG9va2luZyBhdCByaWdodCBub3dcbiAqIEBwYXJhbSB7SVNoZWxsU2VydmljZXNQcm94eX0gc2hlbGxTZXJ2aWNlcyBUaGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgc2hlbGxzZXJ2aWNlXG4gKiBAcGFyYW0ge0lEaWFnbm9zdGljc30gZGlhZ25vc3RpY3MgVGhlIGRpYWdub3N0aWNzIHNoaW1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG1lcmdlRm4gVGhlIGZ1bmN0aW9uIHRvIGJlIHVzZWQgdG8gcGVyZm9tIHNvbWUgZGVlcCBtZXJnZXMgYmV0d2VlbiBvYmplY3RcbiAqIEBwYXJhbSB7RGF0YU1vZGVsT2JqZWN0UGF0aH0gdGFyZ2V0RGF0YU1vZGVsUGF0aCBUaGUgZ2xvYmFsIHBhdGggdG8gcmVhY2ggdGhlIGVudGl0eVNldFxuICpcbiAqIEByZXR1cm5zIHtDb252ZXJ0ZXJDb250ZXh0fSBBIGNvbnZlcnRlciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyc1xuICovXG5jbGFzcyBDb252ZXJ0ZXJDb250ZXh0IHtcblx0cHJpdmF0ZSBtYW5pZmVzdFdyYXBwZXI6IE1hbmlmZXN0V3JhcHBlcjtcblx0cHJpdmF0ZSBiYXNlQ29udGV4dFBhdGg6IHN0cmluZztcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIGNvbnZlcnRlZFR5cGVzOiBDb252ZXJ0ZXJPdXRwdXQsXG5cdFx0cHJpdmF0ZSBtYW5pZmVzdFNldHRpbmdzOiBCYXNlTWFuaWZlc3RTZXR0aW5ncyxcblx0XHRwcml2YXRlIGRpYWdub3N0aWNzOiBJRGlhZ25vc3RpY3MsXG5cdFx0cHJpdmF0ZSBtZXJnZUZuOiBGdW5jdGlvbixcblx0XHRwcml2YXRlIHRhcmdldERhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGhcblx0KSB7XG5cdFx0dGhpcy5tYW5pZmVzdFdyYXBwZXIgPSBuZXcgTWFuaWZlc3RXcmFwcGVyKHRoaXMubWFuaWZlc3RTZXR0aW5ncywgbWVyZ2VGbik7XG5cdFx0dGhpcy5iYXNlQ29udGV4dFBhdGggPSBnZXRUYXJnZXRPYmplY3RQYXRoKHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmUgdGhlIHByb3BlcnR5IGJhc2VkIG9uIHRoZSBwYXRoLlxuXHQgKlxuXHQgKiBAcGFyYW0gZnVsbHlRdWFsaWZpZWROYW1lIFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZVxuXHQgKiBAcmV0dXJucyB7UHJvcGVydHl9IFRoZSBwcm9wZXJ0eSBFbnRpdHlUeXBlIGJhc2VkXG5cdCAqL1xuXHRwcml2YXRlIF9nZXRFbnRpdHlUeXBlRnJvbUZ1bGx5UXVhbGlmaWVkTmFtZShmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHRhcmdldEVudGl0eVR5cGUgPSB0aGlzLmNvbnZlcnRlZFR5cGVzLmVudGl0eVR5cGVzLmZpbmQoZW50aXR5VHlwZSA9PiB7XG5cdFx0XHRpZiAoZnVsbHlRdWFsaWZpZWROYW1lLnN0YXJ0c1dpdGgoZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUpKSB7XG5cdFx0XHRcdGNvbnN0IHJlcGxhY2VBbm5vdGF0aW9uID0gZnVsbHlRdWFsaWZpZWROYW1lLnJlcGxhY2UoZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsIFwiXCIpO1xuXHRcdFx0XHRyZXR1cm4gcmVwbGFjZUFubm90YXRpb24uc3RhcnRzV2l0aChcIi9cIikgfHwgcmVwbGFjZUFubm90YXRpb24uc3RhcnRzV2l0aChcIkBcIik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRhcmdldEVudGl0eVR5cGU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmUgdGhlIGVudGl0eVR5cGUgYXNzb2NpYXRlZCB3aXRoIGFuIGFubm90YXRpb24gb2JqZWN0LlxuXHQgKlxuXHQgKiBAcGFyYW0gYW5ub3RhdGlvbiBUaGUgYW5ub3RhdGlvbiBvYmplY3QgZm9yIHdoaWNoIHdlIHdhbnQgdG8gZmluZCB0aGUgZW50aXR5VHlwZVxuXHQgKiBAcmV0dXJucyB7RW50aXR5VHlwZX0gVGhlIEVudGl0eVR5cGUgdGhlIGFubm90YXRpb24gcmVmZXJzIHRvXG5cdCAqL1xuXHRnZXRBbm5vdGF0aW9uRW50aXR5VHlwZShhbm5vdGF0aW9uPzogQW5ub3RhdGlvblRlcm08YW55Pik6IEVudGl0eVR5cGUge1xuXHRcdGlmIChhbm5vdGF0aW9uKSB7XG5cdFx0XHRjb25zdCBhbm5vdGF0aW9uUGF0aCA9IGFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lO1xuXHRcdFx0Y29uc3QgdGFyZ2V0RW50aXR5VHlwZSA9IHRoaXMuX2dldEVudGl0eVR5cGVGcm9tRnVsbHlRdWFsaWZpZWROYW1lKGFubm90YXRpb25QYXRoKTtcblx0XHRcdGlmICghdGFyZ2V0RW50aXR5VHlwZSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBFbnRpdHkgVHlwZSBmb3IgXCIgKyBhbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGFyZ2V0RW50aXR5VHlwZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlUeXBlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSB0aGUgbWFuaWZlc3Qgc2V0dGluZ3MgZGVmaW5lZCBmb3IgYSBzcGVjaWZpYyBjb250cm9sIHdpdGhpbiBjb250cm9sQ29uZmlndXJhdGlvbi5cblx0ICpcblx0ICogQHBhcmFtIHZBbm5vdGF0aW9uUGF0aCBUaGUgYW5ub3RhdGlvbiBwYXRoIG9yIG9iamVjdCB0byBldmFsdWF0ZVxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCBjb25maWd1cmF0aW9uIGZvciB0aGF0IHNwZWNpZmljIGFubnRvYXRpb24gcGF0aCBpZiBpdCBleGlzdHNcblx0ICovXG5cdGdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24odkFubm90YXRpb25QYXRoOiBzdHJpbmcgfCBBbm5vdGF0aW9uVGVybTxhbnk+KTogYW55IHtcblx0XHRpZiAoaXNBbm5vdGF0aW9uVGVybSh2QW5ub3RhdGlvblBhdGgpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5tYW5pZmVzdFdyYXBwZXIuZ2V0Q29udHJvbENvbmZpZ3VyYXRpb24oXG5cdFx0XHRcdHZBbm5vdGF0aW9uUGF0aC5mdWxseVF1YWxpZmllZE5hbWUucmVwbGFjZSh0aGlzLnRhcmdldERhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsIFwiXCIpXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5tYW5pZmVzdFdyYXBwZXIuZ2V0Q29udHJvbENvbmZpZ3VyYXRpb24odkFubm90YXRpb25QYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGUgYW4gYWJzb2x1dGUgYW5ub3RhdGlvbiBwYXRoIGJhc2VkIG9uIHRoZSBjdXJyZW50IG1ldGEgbW9kZWwgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHNBbm5vdGF0aW9uUGF0aCBUaGUgcmVsYXRpdmUgYW5ub3RhdGlvbiBwYXRoXG5cdCAqIEByZXR1cm5zIFRoZSBjb3JyZWN0IGFubm90YXRpb24gcGF0aCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0XG5cdCAqL1xuXHRnZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKHNBbm5vdGF0aW9uUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRpZiAoIXNBbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0cmV0dXJuIHNBbm5vdGF0aW9uUGF0aDtcblx0XHR9XG5cdFx0aWYgKHNBbm5vdGF0aW9uUGF0aFswXSA9PT0gXCIvXCIpIHtcblx0XHRcdHJldHVybiBzQW5ub3RhdGlvblBhdGg7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmJhc2VDb250ZXh0UGF0aCArIFwiL1wiICsgc0Fubm90YXRpb25QYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlIHRoZSBjdXJyZW50IGVudGl0eVNldC5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgRW50aXR5U2V0IGlmIGl0IGV4aXN0cy5cblx0ICovXG5cdGdldEVudGl0eVNldCgpOiBFbnRpdHlTZXQgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLnRhcmdldERhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlIHRoZSBjb250ZXh0IHBhdGguXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGggb2YgdGhlIGNvbnZlcnRlci5cblx0ICovXG5cdGdldENvbnRleHRQYXRoKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuYmFzZUNvbnRleHRQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlIHRoZSBjdXJyZW50IGRhdGEgbW9kZWwgb2JqZWN0IHBhdGguXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGRhdGEgbW9kZWwgb2JqZWN0IHBhdGhcblx0ICovXG5cdGdldERhdGFNb2RlbE9iamVjdFBhdGgoKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdFx0cmV0dXJuIHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIEVudGl0eUNvbnRhaW5lci5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgc2VydmljZSBFbnRpdHlDb250YWluZXJcblx0ICovXG5cdGdldEVudGl0eUNvbnRhaW5lcigpOiBFbnRpdHlDb250YWluZXIge1xuXHRcdHJldHVybiB0aGlzLmNvbnZlcnRlZFR5cGVzLmVudGl0eUNvbnRhaW5lcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIEVudGl0eVR5cGUgYmFzZWQgb24gdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCBFbnRpdHlUeXBlLlxuXHQgKi9cblx0Z2V0RW50aXR5VHlwZSgpOiBFbnRpdHlUeXBlIHtcblx0XHRyZXR1cm4gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGEgc2luZ2xldG9uIGJhc2VkIG9uIGZ1bGx5IHF1YWxpZmllZCBuYW1lLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZnVsbHlRdWFsaWZpZWROYW1lIFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgc2luZ2xldG9uXG5cdCAqIEByZXR1cm5zIHtTaW5nbGV0b24gfCB1bmRlZmluZWR9IFRoZSBzaW5nbGV0b24gaW5zdGFuY2UuXG5cdCAqL1xuXHRnZXRTaW5nbGV0b24oZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcpOiBTaW5nbGV0b24gfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmNvbnZlcnRlZFR5cGVzLnNpbmdsZXRvbnMuZmluZChzaW5nbGV0b24gPT4gc2luZ2xldG9uLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSBhbiBhbm5vdGF0aW9uIGZyb20gYW4gRW50aXR5VHlwZSBiYXNlZCBvbiBhbiBhbm5vdGF0aW9uIHBhdGguXG5cdCAqXG5cdCAqIEBwYXJhbSBhbm5vdGF0aW9uUGF0aCBUaGUgYW5ub3RhdGlvbiBwYXRoIHRvIGV2YWx1YXRlXG5cdCAqIEByZXR1cm5zIFRoZSB0YXJnZXQgYW5ub3RhdGlvbiBwYXRoIGFzIHdlbGwgYXMgYSBjb252ZXJ0ZXIgY29udGV4dCB0byBnbyB3aXRoIGl0XG5cdCAqL1xuXHRnZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihhbm5vdGF0aW9uUGF0aDogc3RyaW5nKTogUmVzb2x2ZWRBbm5vdGF0aW9uQ29udGV4dCB7XG5cdFx0aWYgKGFubm90YXRpb25QYXRoLmluZGV4T2YoXCJAXCIpID09PSAtMSkge1xuXHRcdFx0YW5ub3RhdGlvblBhdGggPSBcIkBcIiArIGFubm90YXRpb25QYXRoO1xuXHRcdH1cblx0XHRjb25zdCB0YXJnZXRPYmplY3Q6IFJlc29sdmVkVGFyZ2V0ID0gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUucmVzb2x2ZVBhdGgoYW5ub3RhdGlvblBhdGgsIHRydWUpO1xuXG5cdFx0bGV0IHJvb3RFbnRpdHlTZXQgPSB0aGlzLnRhcmdldERhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0O1xuXHRcdGxldCBjdXJyZW50RW50aXR5VHlwZSA9IHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlUeXBlO1xuXHRcdGNvbnN0IHN0YXJ0aW5nRW50aXR5VHlwZSA9IHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aC5zdGFydGluZ0VudGl0eVNldC5lbnRpdHlUeXBlO1xuXHRcdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmNvbmNhdCgpO1xuXHRcdGxldCBpID0gMTtcblx0XHRsZXQgY3VycmVudE9iamVjdDtcblx0XHRsZXQgbmF2aWdhdGVkUGF0aHMgPSBbXTtcblx0XHRjb25zdCB2aXNpdGVkT2JqZWN0cyA9IHRhcmdldE9iamVjdC52aXNpdGVkT2JqZWN0cztcblx0XHQvLyBJbiBjYXNlIG9mIHBhcmFtZXRlcml6ZWQgc2VydmljZVxuXHRcdGlmICghcm9vdEVudGl0eVNldCAmJiBzdGFydGluZ0VudGl0eVR5cGUuYW5ub3RhdGlvbnMuQ29tbW9uPy5SZXN1bHRDb250ZXh0KSB7XG5cdFx0XHRyb290RW50aXR5U2V0ID0gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLnN0YXJ0aW5nRW50aXR5U2V0O1xuXHRcdFx0dGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24obmF2T2JqZWN0KSB7XG5cdFx0XHRcdG5hdmlnYXRlZFBhdGhzLnB1c2gobmF2T2JqZWN0Lm5hbWUpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHdoaWxlIChpIDwgdmlzaXRlZE9iamVjdHMubGVuZ3RoKSB7XG5cdFx0XHRjdXJyZW50T2JqZWN0ID0gdmlzaXRlZE9iamVjdHNbaSsrXTtcblx0XHRcdGlmIChjdXJyZW50T2JqZWN0Ll90eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiKSB7XG5cdFx0XHRcdG5hdmlnYXRlZFBhdGhzLnB1c2goY3VycmVudE9iamVjdC5uYW1lKTtcblx0XHRcdFx0bmF2aWdhdGlvblByb3BlcnRpZXMucHVzaChjdXJyZW50T2JqZWN0IGFzIE5hdmlnYXRpb25Qcm9wZXJ0eSk7XG5cdFx0XHRcdGN1cnJlbnRFbnRpdHlUeXBlID0gKGN1cnJlbnRPYmplY3QgYXMgTmF2aWdhdGlvblByb3BlcnR5KS50YXJnZXRUeXBlO1xuXHRcdFx0XHRpZiAocm9vdEVudGl0eVNldCAmJiByb290RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcuaGFzT3duUHJvcGVydHkobmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIikpKSB7XG5cdFx0XHRcdFx0Y29uc3QgbmF2UGF0aCA9IG5hdmlnYXRlZFBhdGhzLmpvaW4oXCIvXCIpO1xuXHRcdFx0XHRcdHJvb3RFbnRpdHlTZXQgPVxuXHRcdFx0XHRcdFx0cm9vdEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW2N1cnJlbnRPYmplY3QubmFtZV0gfHwgcm9vdEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW25hdlBhdGhdO1xuXHRcdFx0XHRcdG5hdmlnYXRlZFBhdGhzID0gW107XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cm9vdEVudGl0eVNldCA9IHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGN1cnJlbnRPYmplY3QuX3R5cGUgPT09IFwiRW50aXR5U2V0XCIpIHtcblx0XHRcdFx0cm9vdEVudGl0eVNldCA9IGN1cnJlbnRPYmplY3QgYXMgRW50aXR5U2V0O1xuXHRcdFx0XHRjdXJyZW50RW50aXR5VHlwZSA9IHJvb3RFbnRpdHlTZXQuZW50aXR5VHlwZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3Qgb3V0RGF0YU1vZGVsUGF0aCA9IHtcblx0XHRcdHN0YXJ0aW5nRW50aXR5U2V0OiB0aGlzLnRhcmdldERhdGFNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQsXG5cdFx0XHR0YXJnZXRFbnRpdHlTZXQ6IHJvb3RFbnRpdHlTZXQsXG5cdFx0XHR0YXJnZXRFbnRpdHlUeXBlOiBjdXJyZW50RW50aXR5VHlwZSxcblx0XHRcdHRhcmdldE9iamVjdDogbmF2aWdhdGlvblByb3BlcnRpZXNbbmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoIC0gMV0sXG5cdFx0XHRuYXZpZ2F0aW9uUHJvcGVydGllcyxcblx0XHRcdGNvbnRleHRMb2NhdGlvbjogdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvblxuXHRcdH07XG5cdFx0cmV0dXJuIHtcblx0XHRcdGFubm90YXRpb246IHRhcmdldE9iamVjdC50YXJnZXQgYXMgQW55QW5ub3RhdGlvbixcblx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IG5ldyBDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0XHR0aGlzLmNvbnZlcnRlZFR5cGVzLFxuXHRcdFx0XHR0aGlzLm1hbmlmZXN0U2V0dGluZ3MsXG5cdFx0XHRcdHRoaXMuZGlhZ25vc3RpY3MsXG5cdFx0XHRcdHRoaXMubWVyZ2VGbixcblx0XHRcdFx0b3V0RGF0YU1vZGVsUGF0aFxuXHRcdFx0KVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmUgdGhlIHR5cGUgb2YgdGVtcGxhdGUgd2UncmUgd29ya2luZyBvbiAoZS5nLiBMaXN0UmVwb3J0IC8gT2JqZWN0UGFnZSAvIC4uLikuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHRlbnBsYXRlIHR5cGVcblx0ICovXG5cdGdldFRlbXBsYXRlVHlwZSgpOiBUZW1wbGF0ZVR5cGUge1xuXHRcdHJldHVybiB0aGlzLm1hbmlmZXN0V3JhcHBlci5nZXRUZW1wbGF0ZVR5cGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSBhIHJlbGF0aXZlIGFubm90YXRpb24gcGF0aCBiZXR3ZWVuIGFuIGFubm90YXRpb24gcGF0aCBhbmQgYW4gZW50aXR5IHR5cGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBhbm5vdGF0aW9uUGF0aFxuXHQgKiBAcGFyYW0gZW50aXR5VHlwZVxuXHQgKiBAcmV0dXJucyBUaGUgcmVsYXRpdmUgYW5udG90YXRpb24gcGF0aC5cblx0ICovXG5cdGdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoYW5ub3RhdGlvblBhdGg6IHN0cmluZywgZW50aXR5VHlwZTogRW50aXR5VHlwZSk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGFubm90YXRpb25QYXRoLnJlcGxhY2UoZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyYW5zZm9ybSBhbiBlbnRpdHlUeXBlIGJhc2VkIHBhdGggdG8gYW4gZW50aXR5U2V0IGJhc2VkIG9uZSAodWk1IHRlbXBsYXRpbmcgZ2VuZXJhbGx5IGV4cGVjdCBhbiBlbnRpdHlTZXRCYXNlZFBhdGgpLlxuXHQgKlxuXHQgKiBAcGFyYW0gYW5ub3RhdGlvblBhdGhcblx0ICogQHJldHVybnMgVGhlIEVudGl0eVNldCBiYXNlZCBhbm5vdGF0aW9uIHBhdGhcblx0ICovXG5cdGdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoYW5ub3RhdGlvblBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0aWYgKCFhbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25QYXRoO1xuXHRcdH1cblx0XHRjb25zdCBlbnRpdHlUeXBlRlFOID0gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lO1xuXHRcdGlmIChcblx0XHRcdHRoaXMudGFyZ2V0RGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQgfHxcblx0XHRcdCgodGhpcy5iYXNlQ29udGV4dFBhdGguc3RhcnRzV2l0aChcIi9cIikgJiYgdGhpcy5iYXNlQ29udGV4dFBhdGgubWF0Y2goL1xcLy9nKSkgfHwgW10pLmxlbmd0aCA+IDFcblx0XHQpIHtcblx0XHRcdGxldCByZXBsYWNlZEFubm90YXRpb25QYXRoID0gYW5ub3RhdGlvblBhdGgucmVwbGFjZShlbnRpdHlUeXBlRlFOLCBcIi9cIik7XG5cdFx0XHRpZiAocmVwbGFjZWRBbm5vdGF0aW9uUGF0aC5sZW5ndGggPiAyICYmIHJlcGxhY2VkQW5ub3RhdGlvblBhdGhbMF0gPT09IFwiL1wiICYmIHJlcGxhY2VkQW5ub3RhdGlvblBhdGhbMV0gPT09IFwiL1wiKSB7XG5cdFx0XHRcdHJlcGxhY2VkQW5ub3RhdGlvblBhdGggPSByZXBsYWNlZEFubm90YXRpb25QYXRoLnN1YnN0cigxKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLmJhc2VDb250ZXh0UGF0aCArIHJlcGxhY2VkQW5ub3RhdGlvblBhdGg7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBcIi9cIiArIGFubm90YXRpb25QYXRoO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSB0aGUgbWFuaWZlc3Qgd3JhcHBlciBmb3IgdGhlIGN1cnJlbnQgY29udGV4dC5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgbWFuaWZlc3Qgd3JhcHBlclxuXHQgKi9cblx0Z2V0TWFuaWZlc3RXcmFwcGVyKCk6IE1hbmlmZXN0V3JhcHBlciB7XG5cdFx0cmV0dXJuIHRoaXMubWFuaWZlc3RXcmFwcGVyO1xuXHR9XG5cblx0Z2V0RGlhZ25vc3RpY3MoKTogSURpYWdub3N0aWNzIHtcblx0XHRyZXR1cm4gdGhpcy5kaWFnbm9zdGljcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSBhIG5ldyBjb252ZXJ0ZXIgY29udGV4dCwgc2NvcGVkIGZvciBhIGRpZmZlcmVudCBjb250ZXh0IHBhdGguXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0UGF0aCBUaGUgcGF0aCB3ZSB3YW50IHRvIG9yY2hlc3RyYXRlIHRoZSBjb252ZXJ0ZXIgY29udGV4dCBhcm91bmRcblx0ICogQHJldHVybnMge0NvbnZlcnRlckNvbnRleHR9XG5cdCAqL1xuXHRnZXRDb252ZXJ0ZXJDb250ZXh0Rm9yPFQ+KGNvbnRleHRQYXRoOiBzdHJpbmcpOiBDb252ZXJ0ZXJDb250ZXh0IHtcblx0XHRjb25zdCByZXNvbHZlZE1ldGFQYXRoOiBSZXNvbHV0aW9uVGFyZ2V0PFQ+ID0gdGhpcy5jb252ZXJ0ZWRUeXBlcy5yZXNvbHZlUGF0aChjb250ZXh0UGF0aCk7XG5cdFx0Y29uc3QgdGFyZ2V0UGF0aCA9IGdldERhdGFNb2RlbFBhdGhGb3JFbnRpdHlTZXQocmVzb2x2ZWRNZXRhUGF0aCk7XG5cdFx0cmV0dXJuIG5ldyBDb252ZXJ0ZXJDb250ZXh0KHRoaXMuY29udmVydGVkVHlwZXMsIHRoaXMubWFuaWZlc3RTZXR0aW5ncywgdGhpcy5kaWFnbm9zdGljcywgdGhpcy5tZXJnZUZuLCB0YXJnZXRQYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYWxsIGFubm90YXRpb25zIG9mIGEgZ2l2ZW4gdGVybSBhbmQgdm9jYWJ1bGFyeSBvbiBhbiBlbnRpdHkgdHlwZVxuXHQgKiAob3Igb24gdGhlIGN1cnJlbnQgZW50aXR5IHR5cGUgaWYgZW50aXR5VHlwZSBpc24ndCBzcGVjaWZpZWQpLlxuXHQgKlxuXHQgKiBAcGFyYW0gdm9jYWJ1bGFyeU5hbWVcblx0ICogQHBhcmFtIGFubm90YXRpb25UZXJtXG5cdCAqIEBwYXJhbSBbYW5ub3RhdGlvblNvdXJjZXNdXG5cdCAqIEByZXR1cm5zIEFsbCB0aGUgYW5ub3RhdGlvbiBmb3IgYSBzcGVjaWZpYyB0ZXJtIGFuZCB2b2NhYnVsYXJ5IGZyb20gYW4gZW50aXR5IHR5cGVcblx0ICovXG5cdGdldEFubm90YXRpb25zQnlUZXJtKFxuXHRcdHZvY2FidWxhcnlOYW1lOiBrZXlvZiBFbnRpdHlUeXBlQW5ub3RhdGlvbnMsXG5cdFx0YW5ub3RhdGlvblRlcm06IHN0cmluZyxcblx0XHRhbm5vdGF0aW9uU291cmNlczogKFNlcnZpY2VPYmplY3QgfCB1bmRlZmluZWQpW10gPSBbdGhpcy5nZXRFbnRpdHlUeXBlKCldXG5cdCk6IEFubm90YXRpb25UZXJtPGFueT5bXSB7XG5cdFx0bGV0IG91dEFubm90YXRpb25zOiBBbm5vdGF0aW9uVGVybTxhbnk+W10gPSBbXTtcblx0XHRhbm5vdGF0aW9uU291cmNlcy5mb3JFYWNoKGFubm90YXRpb25Tb3VyY2UgPT4ge1xuXHRcdFx0aWYgKGFubm90YXRpb25Tb3VyY2UpIHtcblx0XHRcdFx0Y29uc3QgYW5ub3RhdGlvbnM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25UZXJtPGFueT4+ID0gYW5ub3RhdGlvblNvdXJjZT8uYW5ub3RhdGlvbnNbdm9jYWJ1bGFyeU5hbWVdIHx8IHt9O1xuXHRcdFx0XHRpZiAoYW5ub3RhdGlvbnMpIHtcblx0XHRcdFx0XHRvdXRBbm5vdGF0aW9ucyA9IE9iamVjdC5rZXlzKGFubm90YXRpb25zKVxuXHRcdFx0XHRcdFx0LmZpbHRlcihhbm5vdGF0aW9uID0+IGFubm90YXRpb25zW2Fubm90YXRpb25dLnRlcm0gPT09IGFubm90YXRpb25UZXJtKVxuXHRcdFx0XHRcdFx0LnJlZHVjZSgocHJldmlvdXNWYWx1ZTogQW5ub3RhdGlvblRlcm08YW55PltdLCBrZXk6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdFx0XHRwcmV2aW91c1ZhbHVlLnB1c2goYW5ub3RhdGlvbnNba2V5XSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBwcmV2aW91c1ZhbHVlO1xuXHRcdFx0XHRcdFx0fSwgb3V0QW5ub3RhdGlvbnMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG91dEFubm90YXRpb25zO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgcmVsYXRpdmUgbW9kZWwgcGF0aCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0IHBhdGguXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBUaGUgcmVsYXRpdmUgbW9kZWwgcGF0aCBvciB1bmRlZmluZWQgaWYgdGhlIHBhdGggaXMgbm90IHJlc29sdmVhYmxlXG5cdCAqL1xuXHRnZXRSZWxhdGl2ZU1vZGVsUGF0aEZ1bmN0aW9uKCk6IEZ1bmN0aW9uIHtcblx0XHRjb25zdCB0YXJnZXREYXRhTW9kZWxQYXRoID0gdGhpcy50YXJnZXREYXRhTW9kZWxQYXRoO1xuXHRcdHJldHVybiBmdW5jdGlvbihzUGF0aDogc3RyaW5nKSB7XG5cdFx0XHRjb25zdCBlbmhhbmNlZFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aCh0YXJnZXREYXRhTW9kZWxQYXRoLCBzUGF0aCk7XG5cdFx0XHRyZXR1cm4gZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChlbmhhbmNlZFBhdGgsIHRydWUpO1xuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIHRoZSBjb252ZXJ0ZXIgY29udGV4dCBuZWNlc3NhcnkgZm9yIGEgbWFjcm8gYmFzZWQgb24gYSBtZXRhbW9kZWwgY29udGV4dC5cblx0ICogQHBhcmFtIHNFbnRpdHlTZXROYW1lXG5cdCAqIEBwYXJhbSBvTWV0YU1vZGVsQ29udGV4dFxuXHQgKiBAcGFyYW0gZGlhZ25vc3RpY3Ncblx0ICogQHBhcmFtIG1lcmdlRm5cblx0ICogQHBhcmFtIHRhcmdldERhdGFNb2RlbFBhdGhcblx0ICogQHBhcmFtIG1hbmlmZXN0U2V0dGluZ3Ncblx0ICogQHJldHVybnMge0NvbnZlcnRlckNvbnRleHR9IFRoZSBjdXJyZW50IGNvbnZlcnRlciBjb250ZXh0XG5cdCAqL1xuXHRzdGF0aWMgY3JlYXRlQ29udmVydGVyQ29udGV4dEZvck1hY3JvKFxuXHRcdHNFbnRpdHlTZXROYW1lOiBzdHJpbmcsXG5cdFx0b01ldGFNb2RlbENvbnRleHQ6IENvbnRleHQgfCBPRGF0YU1ldGFNb2RlbCxcblx0XHRkaWFnbm9zdGljczogSURpYWdub3N0aWNzLFxuXHRcdG1lcmdlRm46IEZ1bmN0aW9uLFxuXHRcdHRhcmdldERhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggfCB1bmRlZmluZWQsXG5cdFx0bWFuaWZlc3RTZXR0aW5nczogQmFzZU1hbmlmZXN0U2V0dGluZ3MgPSB7fSBhcyBCYXNlTWFuaWZlc3RTZXR0aW5nc1xuXHQpOiBDb252ZXJ0ZXJDb250ZXh0IHtcblx0XHRjb25zdCBvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCA9IG9NZXRhTW9kZWxDb250ZXh0LmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YU1ldGFNb2RlbFwiKVxuXHRcdFx0PyAob01ldGFNb2RlbENvbnRleHQgYXMgT0RhdGFNZXRhTW9kZWwpXG5cdFx0XHQ6ICgoKG9NZXRhTW9kZWxDb250ZXh0IGFzIENvbnRleHQpLmdldE1vZGVsKCkgYXMgdW5rbm93bikgYXMgT0RhdGFNZXRhTW9kZWwpO1xuXHRcdGNvbnN0IG9Db252ZXJ0ZXJPdXRwdXQgPSBjb252ZXJ0VHlwZXMob01ldGFNb2RlbCk7XG5cdFx0Y29uc3QgdGFyZ2V0RW50aXR5U2V0ID0gb0NvbnZlcnRlck91dHB1dC5lbnRpdHlTZXRzLmZpbmQoZW50aXR5U2V0ID0+IGVudGl0eVNldC5uYW1lID09PSBzRW50aXR5U2V0TmFtZSkgYXMgRW50aXR5U2V0O1xuXHRcdGlmICghdGFyZ2V0RGF0YU1vZGVsUGF0aCkge1xuXHRcdFx0dGFyZ2V0RGF0YU1vZGVsUGF0aCA9IHtcblx0XHRcdFx0c3RhcnRpbmdFbnRpdHlTZXQ6IHRhcmdldEVudGl0eVNldCxcblx0XHRcdFx0bmF2aWdhdGlvblByb3BlcnRpZXM6IFtdLFxuXHRcdFx0XHR0YXJnZXRFbnRpdHlTZXQ6IHRhcmdldEVudGl0eVNldCxcblx0XHRcdFx0dGFyZ2V0RW50aXR5VHlwZTogdGFyZ2V0RW50aXR5U2V0LmVudGl0eVR5cGUsXG5cdFx0XHRcdHRhcmdldE9iamVjdDogdGFyZ2V0RW50aXR5U2V0XG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IENvbnZlcnRlckNvbnRleHQob0NvbnZlcnRlck91dHB1dCwgbWFuaWZlc3RTZXR0aW5ncywgZGlhZ25vc3RpY3MsIG1lcmdlRm4sIHRhcmdldERhdGFNb2RlbFBhdGgpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbnZlcnRlckNvbnRleHQ7XG4iXX0=
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
EntityContainer,
|
|
8
8
|
NavigationProperty,
|
|
9
9
|
ServiceObject,
|
|
10
|
+
Singleton,
|
|
10
11
|
ResolutionTarget,
|
|
11
12
|
ServiceObjectAndAnnotation
|
|
12
13
|
} from "@sap-ux/annotation-converter";
|
|
@@ -229,6 +230,16 @@ class ConverterContext {
|
|
|
229
230
|
return this.targetDataModelPath.targetEntityType;
|
|
230
231
|
}
|
|
231
232
|
|
|
233
|
+
/**
|
|
234
|
+
* Get a singleton based on fully qualified name.
|
|
235
|
+
*
|
|
236
|
+
* @param {string} fullyQualifiedName The fully qualified name of the singleton
|
|
237
|
+
* @returns {Singleton | undefined} The singleton instance.
|
|
238
|
+
*/
|
|
239
|
+
getSingleton(fullyQualifiedName: string): Singleton | undefined {
|
|
240
|
+
return this.convertedTypes.singletons.find(singleton => singleton.fullyQualifiedName === fullyQualifiedName);
|
|
241
|
+
}
|
|
242
|
+
|
|
232
243
|
/**
|
|
233
244
|
* Retrieve an annotation from an EntityType based on an annotation path.
|
|
234
245
|
*
|
|
@@ -87,4 +87,4 @@ sap.ui.define([], function () {
|
|
|
87
87
|
_exports.SelectionMode = SelectionMode;
|
|
88
88
|
return _exports;
|
|
89
89
|
}, false);
|
|
90
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hbmlmZXN0U2V0dGluZ3MudHMiXSwibmFtZXMiOlsiVGVtcGxhdGVUeXBlIiwiQWN0aW9uVHlwZSIsIlZpc3VhbGl6YXRpb25UeXBlIiwiVmFyaWFudE1hbmFnZW1lbnRUeXBlIiwiQ3JlYXRpb25Nb2RlIiwiQXZhaWxhYmlsaXR5VHlwZSIsIkhvcml6b250YWxBbGlnbiIsIlNlbGVjdGlvbk1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztNQUtZQSxZOzthQUFBQSxZO0FBQUFBLElBQUFBLFk7QUFBQUEsSUFBQUEsWTtBQUFBQSxJQUFBQSxZO0tBQUFBLFksS0FBQUEsWTs7O01BTUFDLFU7O2FBQUFBLFU7QUFBQUEsSUFBQUEsVTtBQUFBQSxJQUFBQSxVO0FBQUFBLElBQUFBLFU7QUFBQUEsSUFBQUEsVTtBQUFBQSxJQUFBQSxVO0FBQUFBLElBQUFBLFU7QUFBQUEsSUFBQUEsVTtBQUFBQSxJQUFBQSxVO0FBQUFBLElBQUFBLFU7S0FBQUEsVSxLQUFBQSxVOzs7TUFnQkFDLGlCOzthQUFBQSxpQjtBQUFBQSxJQUFBQSxpQjtBQUFBQSxJQUFBQSxpQjtLQUFBQSxpQixLQUFBQSxpQjs7O01BS0FDLHFCOzthQUFBQSxxQjtBQUFBQSxJQUFBQSxxQjtBQUFBQSxJQUFBQSxxQjtBQUFBQSxJQUFBQSxxQjtLQUFBQSxxQixLQUFBQSxxQjs7O01BV0FDLFk7O2FBQUFBLFk7QUFBQUEsSUFBQUEsWTtBQUFBQSxJQUFBQSxZO0FBQUFBLElBQUFBLFk7S0FBQUEsWSxLQUFBQSxZOzs7TUFNQUMsZ0I7O2FBQUFBLGdCO0FBQUFBLElBQUFBLGdCO0FBQUFBLElBQUFBLGdCO0FBQUFBLElBQUFBLGdCO0tBQUFBLGdCLEtBQUFBLGdCOzs7TUFNQUMsZTs7YUFBQUEsZTtBQUFBQSxJQUFBQSxlO0FBQUFBLElBQUFBLGU7QUFBQUEsSUFBQUEsZTtLQUFBQSxlLEtBQUFBLGU7OztNQXFUQUMsYTs7YUFBQUEsYTtBQUFBQSxJQUFBQSxhO0FBQUFBLElBQUFBLGE7QUFBQUEsSUFBQUEsYTtBQUFBQSxJQUFBQSxhO0tBQUFBLGEsS0FBQUEsYSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlndXJhYmxlUmVjb3JkLCBQb3NpdGlvbiwgUG9zaXRpb25hYmxlIH0gZnJvbSBcIi4vaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IEZsZXhTZXR0aW5ncywgSGVhZGVyRmFjZXRUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvT2JqZWN0UGFnZS9IZWFkZXJGYWNldFwiO1xuaW1wb3J0IHsgQmluZGluZ0V4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgVGFibGVUeXBlIH0gZnJvbSBcIi4vY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5cbmV4cG9ydCBlbnVtIFRlbXBsYXRlVHlwZSB7XG5cdExpc3RSZXBvcnQgPSBcIkxpc3RSZXBvcnRcIixcblx0T2JqZWN0UGFnZSA9IFwiT2JqZWN0UGFnZVwiLFxuXHRBbmFseXRpY2FsTGlzdFBhZ2UgPSBcIkFuYWx5dGljYWxMaXN0UGFnZVwiXG59XG5cbmV4cG9ydCBlbnVtIEFjdGlvblR5cGUge1xuXHREYXRhRmllbGRGb3JBY3Rpb24gPSBcIkZvckFjdGlvblwiLFxuXHREYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24gPSBcIkZvck5hdmlnYXRpb25cIixcblx0RGVmYXVsdCA9IFwiRGVmYXVsdFwiLFxuXHRQcmltYXJ5ID0gXCJQcmltYXJ5XCIsXG5cdFNlY29uZGFyeSA9IFwiU2Vjb25kYXJ5XCIsXG5cdFN3aXRjaFRvQWN0aXZlT2JqZWN0ID0gXCJTd2l0Y2hUb0FjdGl2ZU9iamVjdFwiLFxuXHRTd2l0Y2hUb0RyYWZ0T2JqZWN0ID0gXCJTd2l0Y2hUb0RyYWZ0T2JqZWN0XCIsXG5cdERlZmF1bHRBcHBseSA9IFwiRGVmYXVsdEFwcGx5XCIsXG5cdE1lbnUgPSBcIk1lbnVcIlxufVxuXG5leHBvcnQgdHlwZSBNYW5pZmVzdFNpZGVDb250ZW50ID0ge1xuXHR0ZW1wbGF0ZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGVudW0gVmlzdWFsaXphdGlvblR5cGUge1xuXHRUYWJsZSA9IFwiVGFibGVcIixcblx0Q2hhcnQgPSBcIkNoYXJ0XCJcbn1cblxuZXhwb3J0IGVudW0gVmFyaWFudE1hbmFnZW1lbnRUeXBlIHtcblx0UGFnZSA9IFwiUGFnZVwiLFxuXHRDb250cm9sID0gXCJDb250cm9sXCIsXG5cdE5vbmUgPSBcIk5vbmVcIlxufVxuXG5leHBvcnQgdHlwZSBDb250ZW50RGVuc2l0aWVzVHlwZSA9IHtcblx0Y29tcGFjdD86IGJvb2xlYW47XG5cdGNvenk/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGVudW0gQ3JlYXRpb25Nb2RlIHtcblx0TmV3UGFnZSA9IFwiTmV3UGFnZVwiLFxuXHRJbmxpbmUgPSBcIklubGluZVwiLFxuXHRDcmVhdGlvblJvdyA9IFwiQ3JlYXRpb25Sb3dcIlxufVxuXG5leHBvcnQgZW51bSBBdmFpbGFiaWxpdHlUeXBlIHtcblx0RGVmYXVsdCA9IFwiRGVmYXVsdFwiLFxuXHRBZGFwdGF0aW9uID0gXCJBZGFwdGF0aW9uXCIsXG5cdEhpZGRlbiA9IFwiSGlkZGVuXCJcbn1cblxuZXhwb3J0IGVudW0gSG9yaXpvbnRhbEFsaWduIHtcblx0RW5kID0gXCJFbmRcIixcblx0QmVnaW4gPSBcIkJlZ2luXCIsXG5cdENlbnRlciA9IFwiQ2VudGVyXCJcbn1cblxuZXhwb3J0IHR5cGUgVGFibGVDb2x1bW5TZXR0aW5ncyA9IHtcblx0bWljcm9DaGFydFNpemU/OiBzdHJpbmc7XG5cdHNob3dNaWNyb0NoYXJ0TGFiZWw/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIGZvcm1hdCBvcHRpb25zIGZvciBtdWx0aWxpbmUgdGV4dCBmaWVsZHMgb24gYSBmb3JtIG9yIGluIGEgdGFibGVcbiAqL1xuZXhwb3J0IHR5cGUgRm9ybWF0T3B0aW9uc1R5cGUgPSB7XG5cdHRleHRMaW5lc0Rpc3BsYXk6IG51bWJlcjtcblx0dGV4dExpbmVzRWRpdDogbnVtYmVyO1xuXHR0ZXh0TWF4TGluZXM6IG51bWJlcjtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYgQmFzZU1hbmlmZXN0U2V0dGluZ3NcbiAqL1xuZXhwb3J0IHR5cGUgQmFzZU1hbmlmZXN0U2V0dGluZ3MgPSB7XG5cdGNvbnRlbnQ/OiB7XG5cdFx0aGVhZGVyPzoge1xuXHRcdFx0ZmFjZXRzPzogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0SGVhZGVyRmFjZXQ+O1xuXHRcdFx0YWN0aW9ucz86IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEFjdGlvbj47XG5cdFx0fTtcblx0XHRmb290ZXI/OiB7XG5cdFx0XHRhY3Rpb25zPzogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPjtcblx0XHR9O1xuXHR9O1xuXHRjb250cm9sQ29uZmlndXJhdGlvbj86IHtcblx0XHRbYW5ub3RhdGlvblBhdGg6IHN0cmluZ106IENvbnRyb2xNYW5pZmVzdENvbmZpZ3VyYXRpb247XG5cdH0gJiB7XG5cdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIj86IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uO1xuXHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZhY2V0c1wiPzogRmFjZXRzQ29udHJvbENvbmZpZ3VyYXRpb247XG5cdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVyRmFjZXRzXCI/OiBIZWFkZXJGYWNldHNDb250cm9sQ29uZmlndXJhdGlvbjtcblx0XHRcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIj86IEZpbHRlck1hbmlmZXN0Q29uZmlndXJhdGlvbjtcblx0fTtcblx0Y29udmVydGVyVHlwZTogVGVtcGxhdGVUeXBlO1xuXHRlbnRpdHlTZXQ6IHN0cmluZztcblx0bmF2aWdhdGlvbj86IHtcblx0XHRbbmF2aWdhdGlvblBhdGg6IHN0cmluZ106IE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb247XG5cdH07XG5cdHZpZXdMZXZlbD86IG51bWJlcjtcblx0ZmNsRW5hYmxlZD86IGJvb2xlYW47XG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXHR2YXJpYW50TWFuYWdlbWVudD86IFZhcmlhbnRNYW5hZ2VtZW50VHlwZTtcblx0ZGVmYXVsdFRlbXBsYXRlQW5ub3RhdGlvblBhdGg/OiBzdHJpbmc7XG5cdGNvbnRlbnREZW5zaXRpZXM/OiBDb250ZW50RGVuc2l0aWVzVHlwZTtcblx0c2hlbGxDb250ZW50RGVuc2l0eT86IHN0cmluZztcblx0aXNEZXNrdG9wPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25UYXJnZXRDb25maWd1cmF0aW9uID0ge1xuXHRvdXRib3VuZD86IHN0cmluZztcblx0b3V0Ym91bmREZXRhaWw/OiB7XG5cdFx0c2VtYW50aWNPYmplY3Q6IHN0cmluZztcblx0XHRhY3Rpb246IHN0cmluZztcblx0XHRwYXJhbWV0ZXJzPzogYW55O1xuXHR9O1xuXHRyb3V0ZT86IHN0cmluZztcbn07XG5cbi8qKlxuICogQHR5cGVkZWYgTmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uID0ge1xuXHRjcmVhdGU/OiBOYXZpZ2F0aW9uVGFyZ2V0Q29uZmlndXJhdGlvbjtcblx0ZGV0YWlsPzogTmF2aWdhdGlvblRhcmdldENvbmZpZ3VyYXRpb247XG5cdGRpc3BsYXk/OiB7XG5cdFx0b3V0Ym91bmQ/OiBzdHJpbmc7XG5cdFx0dGFyZ2V0Pzogc3RyaW5nOyAvLyBmb3IgY29tcGF0aWJpbGl0eVxuXHRcdHJvdXRlPzogc3RyaW5nO1xuXHR9O1xufTtcblxudHlwZSBIZWFkZXJGYWNldHNDb250cm9sQ29uZmlndXJhdGlvbiA9IHtcblx0ZmFjZXRzOiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RIZWFkZXJGYWNldD47XG59O1xuXG50eXBlIEZhY2V0c0NvbnRyb2xDb25maWd1cmF0aW9uID0ge1xuXHRzZWN0aW9uczogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0U2VjdGlvbj47XG59O1xuXG50eXBlIE1hbmlmZXN0Rm9ybUVsZW1lbnQgPSBQb3NpdGlvbmFibGUgJiB7XG5cdHRlbXBsYXRlOiBzdHJpbmc7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHRmb3JtYXRPcHRpb25zPzogRm9ybWF0T3B0aW9uc1R5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9uID0ge1xuXHRmaWVsZHM6IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEZvcm1FbGVtZW50Pjtcbn07XG5cbmV4cG9ydCB0eXBlIENvbnRyb2xNYW5pZmVzdENvbmZpZ3VyYXRpb24gPVxuXHR8IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uXG5cdHwgQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb25cblx0fCBGYWNldHNDb250cm9sQ29uZmlndXJhdGlvblxuXHR8IEhlYWRlckZhY2V0c0NvbnRyb2xDb25maWd1cmF0aW9uXG5cdHwgRm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvblxuXHR8IEZpbHRlck1hbmlmZXN0Q29uZmlndXJhdGlvbjtcblxuLyoqIE9iamVjdCBQYWdlICoqL1xuXG5leHBvcnQgdHlwZSBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncyA9IEJhc2VNYW5pZmVzdFNldHRpbmdzICYge1xuXHRjb250ZW50Pzoge1xuXHRcdGhlYWRlcj86IHtcblx0XHRcdHZpc2libGU/OiBib29sZWFuO1xuXHRcdFx0YW5jaG9yQmFyVmlzaWJsZT86IGJvb2xlYW47XG5cdFx0XHRmYWNldHM/OiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RIZWFkZXJGYWNldD47XG5cdFx0fTtcblx0XHRib2R5Pzoge1xuXHRcdFx0c2VjdGlvbnM/OiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RTZWN0aW9uPjtcblx0XHR9O1xuXHR9O1xuXHRlZGl0YWJsZUhlYWRlckNvbnRlbnQ6IGJvb2xlYW47XG5cdHNob3dEcmFmdFRvZ2dsZTogYm9vbGVhbjtcblx0c2VjdGlvbkxheW91dDogXCJUYWJzXCIgfCBcIlBhZ2VcIjtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYgTWFuaWZlc3RIZWFkZXJGYWNldFxuICovXG5leHBvcnQgdHlwZSBNYW5pZmVzdEhlYWRlckZhY2V0ID0ge1xuXHR0eXBlPzogSGVhZGVyRmFjZXRUeXBlO1xuXHRuYW1lPzogc3RyaW5nO1xuXHRwb3NpdGlvbj86IFBvc2l0aW9uO1xuXHR2aXNpYmxlPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRzdWJUaXRsZT86IHN0cmluZztcblx0c3Rhc2hlZD86IGJvb2xlYW47XG5cdGZsZXhTZXR0aW5ncz86IEZsZXhTZXR0aW5ncztcblx0cmVxdWVzdEdyb3VwSWQ/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIE1hbmlmZXN0U2VjdGlvblxuICovXG5leHBvcnQgdHlwZSBNYW5pZmVzdFNlY3Rpb24gPSB7XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRpZD86IHN0cmluZztcblx0bmFtZT86IHN0cmluZztcblx0dmlzaWJsZT86IEJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRwb3NpdGlvbj86IFBvc2l0aW9uO1xuXHR0ZW1wbGF0ZT86IHN0cmluZztcblx0c3ViU2VjdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdFN1YlNlY3Rpb24+O1xuXHRhY3Rpb25zPzogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RBY3Rpb24+O1xufTtcblxuZXhwb3J0IHR5cGUgTWFuaWZlc3RTdWJTZWN0aW9uID0ge1xuXHRpZD86IHN0cmluZztcblx0bmFtZT86IHN0cmluZztcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRwb3NpdGlvbj86IFBvc2l0aW9uO1xuXHR2aXNpYmxlPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdGFjdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdEFjdGlvbj47XG5cdHNpZGVDb250ZW50PzogTWFuaWZlc3RTaWRlQ29udGVudDtcbn07XG5cbi8qKiBMaXN0IFJlcG9ydCAqKi9cblxuZXhwb3J0IHR5cGUgTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MgPSBCYXNlTWFuaWZlc3RTZXR0aW5ncyAmIHtcblx0aW5pdGlhbExvYWQ/OiBib29sZWFuO1xuXHR2aWV3cz86IE11bHRpcGxlVmlld3NDb25maWd1cmF0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgVmlld1BhdGhDb25maWd1cmF0aW9uID0gU2luZ2xlVmlld1BhdGhDb25maWd1cmF0aW9uIHwgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb247XG5cbmV4cG9ydCB0eXBlIFZpZXdDb25maWd1cmF0aW9uID0gVmlld1BhdGhDb25maWd1cmF0aW9uIHwgQ3VzdG9tVmlld1RlbXBsYXRlQ29uZmlndXJhdGlvbjtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tVmlld1RlbXBsYXRlQ29uZmlndXJhdGlvbiA9IHtcblx0a2V5Pzogc3RyaW5nO1xuXHRsYWJlbDogc3RyaW5nO1xuXHR0ZW1wbGF0ZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgU2luZ2xlVmlld1BhdGhDb25maWd1cmF0aW9uID0ge1xuXHRrZWVwUHJldmlvdXNQcmVzb25hbGl6YXRpb24/OiBib29sZWFuO1xuXHRrZXk/OiBzdHJpbmc7XG5cdGVudGl0eVNldD86IHN0cmluZztcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0Y29udGV4dFBhdGg/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbiA9IHtcblx0cHJpbWFyeTogU2luZ2xlVmlld1BhdGhDb25maWd1cmF0aW9uW107XG5cdHNlY29uZGFyeTogU2luZ2xlVmlld1BhdGhDb25maWd1cmF0aW9uW107XG5cdGRlZmF1bHRQYXRoPzogXCJib3RoXCIgfCBcInByaW1hcnlcIiB8IFwic2Vjb25kYXJ5XCI7XG5cdGtleT86IHN0cmluZztcbn07XG5cbi8qKlxuICogQHR5cGVkZWYgTXVsdGlwbGVWaWV3c0NvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgTXVsdGlwbGVWaWV3c0NvbmZpZ3VyYXRpb24gPSB7XG5cdHBhdGhzOiBWaWV3Q29uZmlndXJhdGlvbltdO1xuXHRzaG93Q291bnRzPzogYm9vbGVhbjtcbn07XG5cbi8qKiBGaWx0ZXIgQ29uZmlndXJhdGlvbiAqKi9cblxuLyoqIEB0eXBlZGVmIEZpbHRlck1hbmlmZXN0Q29uZmlndXJhdGlvbiAqKi9cbmV4cG9ydCB0eXBlIEZpbHRlck1hbmlmZXN0Q29uZmlndXJhdGlvbiA9IHtcblx0ZmlsdGVyRmllbGRzPzogUmVjb3JkPHN0cmluZywgRmlsdGVyRmllbGRNYW5pZmVzdENvbmZpZ3VyYXRpb24+O1xuXHRuYXZpZ2F0aW9uUHJvcGVydGllcz86IHN0cmluZ1tdO1xuXHR1c2VTZW1hbnRpY0RhdGVSYW5nZT86IGJvb2xlYW47XG5cdGluaXRpYWxMYXlvdXQ/OiBzdHJpbmc7XG5cdGxheW91dD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEZpbHRlckZpZWxkTWFuaWZlc3RDb25maWd1cmF0aW9uID0gUG9zaXRpb25hYmxlICYge1xuXHRsYWJlbD86IHN0cmluZztcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdGF2YWlsYWJpbGl0eT86IEF2YWlsYWJpbGl0eVR5cGU7XG5cdHNldHRpbmdzPzogRmlsdGVyU2V0dGluZ3M7XG5cdHZpc3VhbEZpbHRlcj86IHZpc3VhbEZpbHRlckNvbmZpZ3VyYXRpb247XG59O1xuXG5leHBvcnQgdHlwZSB2aXN1YWxGaWx0ZXJDb25maWd1cmF0aW9uID0ge1xuXHR2YWx1ZUxpc3Q/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBPcGVyYXRvckNvbmZpZ3VyYXRpb24gPSB7XG5cdHBhdGg6IHN0cmluZztcblx0ZXF1YWxzPzogc3RyaW5nO1xuXHRjb250YWlucz86IHN0cmluZztcblx0ZXhjbHVkZTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRPcGVyYXRvciA9IHtcblx0b3BlcmF0b3I6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEZpbHRlclNldHRpbmdzID0ge1xuXHRvcGVyYXRvckNvbmZpZ3VyYXRpb24/OiBPcGVyYXRvckNvbmZpZ3VyYXRpb25bXTtcblx0ZGVmYXVsdFZhbHVlcz86IERlZmF1bHRPcGVyYXRvcltdO1xufTtcblxuLyoqIENoYXJ0IENvbmZpZ3VyYXRpb24gKiovXG5cbmV4cG9ydCB0eXBlIENoYXJ0UGVyc29uYWxpemF0aW9uTWFuaWZlc3RTZXR0aW5ncyA9XG5cdHwgYm9vbGVhblxuXHR8IHtcblx0XHRcdHNvcnQ6IGJvb2xlYW47XG5cdFx0XHR0eXBlOiBib29sZWFuO1xuXHRcdFx0aXRlbTogYm9vbGVhbjtcblx0ICB9O1xuXG5leHBvcnQgdHlwZSBDaGFydE1hbmlmZXN0Q29uZmlndXJhdGlvbiA9IHtcblx0Y2hhcnRTZXR0aW5nczoge1xuXHRcdHBlcnNvbmFsaXphdGlvbjogQ2hhcnRQZXJzb25hbGl6YXRpb25NYW5pZmVzdFNldHRpbmdzO1xuXHR9O1xufTtcblxuZXhwb3J0IHR5cGUgQWN0aW9uQWZ0ZXJFeGVjdXRpb25Db25maWd1cmF0aW9uID0ge1xuXHRuYXZpZ2F0ZVRvSW5zdGFuY2U/OiBib29sZWFuO1xuXHRlbmFibGVBdXRvU2Nyb2xsPzogYm9vbGVhbjtcbn07XG5cbi8qKiBUYWJsZSBDb25maWd1cmF0aW9uICoqL1xuXG4vKipcbiAqIEB0eXBlZGVmIE1hbmlmZXN0QWN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIE1hbmlmZXN0QWN0aW9uID0ge1xuXHRtZW51Pzogc3RyaW5nW107XG5cdHZpc2libGU/OiBzdHJpbmc7XG5cdGVuYWJsZWQ/OiBzdHJpbmc7XG5cdHBvc2l0aW9uPzogUG9zaXRpb247XG5cdHByZXNzPzogc3RyaW5nO1xuXHR0ZXh0Pzogc3RyaW5nO1xuXHRfX25vV3JhcD86IGJvb2xlYW47XG5cdGVuYWJsZU9uU2VsZWN0Pzogc3RyaW5nO1xuXHRkZWZhdWx0VmFsdWVzRnVuY3Rpb24/OiBzdHJpbmc7XG5cdHJlcXVpcmVzU2VsZWN0aW9uPzogYm9vbGVhbjtcblx0YWZ0ZXJFeGVjdXRpb24/OiBBY3Rpb25BZnRlckV4ZWN1dGlvbkNvbmZpZ3VyYXRpb247XG59O1xuXG5leHBvcnQgdHlwZSBNYW5pZmVzdFRhYmxlQ29sdW1uT3ZlcnJpZGUgPSBQb3NpdGlvbmFibGUgJiB7XG5cdHdpZHRoPzogc3RyaW5nO1xuXHRob3Jpem9udGFsQWxpZ24/OiBIb3Jpem9udGFsQWxpZ247XG5cdGFmdGVyRXhlY3V0aW9uPzogQWN0aW9uQWZ0ZXJFeGVjdXRpb25Db25maWd1cmF0aW9uO1xuXHRzZXR0aW5ncz86IFRhYmxlQ29sdW1uU2V0dGluZ3M7XG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIE1hbmlmZXN0VGFibGVDb2x1bW4gPSBQb3NpdGlvbmFibGUgJiB7XG5cdGhlYWRlcjogc3RyaW5nO1xuXHR3aWR0aD86IHN0cmluZztcblx0dHlwZT86IHN0cmluZztcblx0aG9yaXpvbnRhbEFsaWduPzogSG9yaXpvbnRhbEFsaWduO1xuXHR0ZW1wbGF0ZTogc3RyaW5nO1xuXHRhZnRlckV4ZWN1dGlvbj86IEFjdGlvbkFmdGVyRXhlY3V0aW9uQ29uZmlndXJhdGlvbjtcblx0YXZhaWxhYmlsaXR5PzogQXZhaWxhYmlsaXR5VHlwZTtcblx0c2V0dGluZ3M/OiBUYWJsZUNvbHVtblNldHRpbmdzO1xuXHRmb3JtYXRPcHRpb25zPzogRm9ybWF0T3B0aW9uc1R5cGU7XG5cdHByb3BlcnRpZXM/OiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uID0ge1xuXHR0YWJsZVNldHRpbmdzPzogVGFibGVNYW5pZmVzdFNldHRpbmdzQ29uZmlndXJhdGlvbjtcblx0YWN0aW9ucz86IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPjtcblx0Y29sdW1ucz86IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0VGFibGVDb2x1bW4gfCBNYW5pZmVzdFRhYmxlQ29sdW1uT3ZlcnJpZGU+O1xufTtcblxuZXhwb3J0IGVudW0gU2VsZWN0aW9uTW9kZSB7XG5cdEF1dG8gPSBcIkF1dG9cIixcblx0Tm9uZSA9IFwiTm9uZVwiLFxuXHRNdWx0aSA9IFwiTXVsdGlcIixcblx0U2luZ2xlID0gXCJTaW5nbGVcIlxufVxuXG5leHBvcnQgdHlwZSBUYWJsZVBlcnNvbmFsaXphdGlvbkNvbmZpZ3VyYXRpb24gPVxuXHR8IGJvb2xlYW5cblx0fCB7XG5cdFx0XHRzb3J0OiBib29sZWFuO1xuXHRcdFx0Y29sdW1uOiBib29sZWFuO1xuXHRcdFx0ZmlsdGVyOiBib29sZWFuO1xuXHRcdFx0Z3JvdXA6IGJvb2xlYW47XG5cdFx0XHRhZ2dyZWdhdGU6IGJvb2xlYW47XG5cdCAgfTtcblxuZXhwb3J0IHR5cGUgVGFibGVNYW5pZmVzdFNldHRpbmdzQ29uZmlndXJhdGlvbiA9IHtcblx0Y3JlYXRpb25Nb2RlPzoge1xuXHRcdGRpc2FibGVBZGRSb3dCdXR0b25Gb3JFbXB0eURhdGE/OiBib29sZWFuO1xuXHRcdGN1c3RvbVZhbGlkYXRpb25GdW5jdGlvbj86IHN0cmluZztcblx0XHRjcmVhdGVBdEVuZD86IGJvb2xlYW47XG5cdFx0bmFtZT86IENyZWF0aW9uTW9kZTtcblx0fTtcblx0ZW5hYmxlRXhwb3J0PzogYm9vbGVhbjtcblx0cXVpY2tWYXJpYW50U2VsZWN0aW9uPzoge1xuXHRcdHBhdGhzOiBbXG5cdFx0XHR7XG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBzdHJpbmc7XG5cdFx0XHR9XG5cdFx0XTtcblx0XHRoaWRlVGFibGVUaXRsZT86IGJvb2xlYW47XG5cdFx0c2hvd0NvdW50cz86IGJvb2xlYW47XG5cdH07XG5cdHBlcnNvbmFsaXphdGlvbj86IFRhYmxlUGVyc29uYWxpemF0aW9uQ29uZmlndXJhdGlvbjtcblx0LyoqXG5cdCAqIERlZmluZXMgaG93IG1hbnkgaXRlbXMgaW4gYSB0YWJsZSBjYW4gYmUgc2VsZWN0ZWQuIFlvdSBoYXZlIHRoZSBmb2xsb3dpbmcgb3B0aW9uczpcblx0ICogPT4gYnkgZGVmaW5pbmcgJ05vbmUnIHlvdSBjYW4gZnVsbHkgZGlzYWJsZSB0aGUgbGlzdCBzZWxlY3Rpb25cblx0ICogPT4gYnkgZGVmaW5pbmcgJ1NpbmdsZScgeW91IGFsbG93IG9ubHkgb25lIGl0ZW0gdG8gYmUgc2VsZWN0ZWRcblx0ICogPT4gYnkgZGVmaW5pbmcgJ011bHRpJyB5b3UgYWxsb3cgc2V2ZXJhbCBpdGVtcyB0byBiZSBzZWxlY3RlZFxuXHQgKiA9PiBieSB1c2luZyAnQXV0bycgeW91IGxlYXZlIHRoZSBkZWZhdWx0IGRlZmluaXRpb24gJ05vbmUnLCBleGNlcHQgaWYgdGhlcmUgaXMgYW4gYWN0aW9uIHRoYXQgcmVxdWlyZXMgYSBzZWxlY3Rpb24gKHN1Y2ggYXMgZGVsZXRpbmcsIG9yIElCTilcblx0ICovXG5cdHNlbGVjdGlvbk1vZGU/OiBTZWxlY3Rpb25Nb2RlO1xuXHR0eXBlPzogVGFibGVUeXBlO1xuXHRjb25kZW5zZWRUYWJsZUxheW91dD86IGJvb2xlYW47XG5cdHNlbGVjdEFsbD86IGJvb2xlYW47XG5cdHNlbGVjdGlvbkxpbWl0PzogbnVtYmVyO1xuXHRlbmFibGVQYXN0ZT86IGJvb2xlYW47XG5cdGVuYWJsZUZ1bGxTY3JlZW4/OiBib29sZWFuO1xuXHRlbmFibGVNYXNzRWRpdD86IGJvb2xlYW47XG59O1xuIl19
|
|
90
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hbmlmZXN0U2V0dGluZ3MudHMiXSwibmFtZXMiOlsiVGVtcGxhdGVUeXBlIiwiQWN0aW9uVHlwZSIsIlZpc3VhbGl6YXRpb25UeXBlIiwiVmFyaWFudE1hbmFnZW1lbnRUeXBlIiwiQ3JlYXRpb25Nb2RlIiwiQXZhaWxhYmlsaXR5VHlwZSIsIkhvcml6b250YWxBbGlnbiIsIlNlbGVjdGlvbk1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztNQUtZQSxZOzthQUFBQSxZO0FBQUFBLElBQUFBLFk7QUFBQUEsSUFBQUEsWTtBQUFBQSxJQUFBQSxZO0tBQUFBLFksS0FBQUEsWTs7O01BTUFDLFU7O2FBQUFBLFU7QUFBQUEsSUFBQUEsVTtBQUFBQSxJQUFBQSxVO0FBQUFBLElBQUFBLFU7QUFBQUEsSUFBQUEsVTtBQUFBQSxJQUFBQSxVO0FBQUFBLElBQUFBLFU7QUFBQUEsSUFBQUEsVTtBQUFBQSxJQUFBQSxVO0FBQUFBLElBQUFBLFU7S0FBQUEsVSxLQUFBQSxVOzs7TUFnQkFDLGlCOzthQUFBQSxpQjtBQUFBQSxJQUFBQSxpQjtBQUFBQSxJQUFBQSxpQjtLQUFBQSxpQixLQUFBQSxpQjs7O01BS0FDLHFCOzthQUFBQSxxQjtBQUFBQSxJQUFBQSxxQjtBQUFBQSxJQUFBQSxxQjtBQUFBQSxJQUFBQSxxQjtLQUFBQSxxQixLQUFBQSxxQjs7O01BV0FDLFk7O2FBQUFBLFk7QUFBQUEsSUFBQUEsWTtBQUFBQSxJQUFBQSxZO0FBQUFBLElBQUFBLFk7S0FBQUEsWSxLQUFBQSxZOzs7TUFNQUMsZ0I7O2FBQUFBLGdCO0FBQUFBLElBQUFBLGdCO0FBQUFBLElBQUFBLGdCO0FBQUFBLElBQUFBLGdCO0tBQUFBLGdCLEtBQUFBLGdCOzs7TUFNQUMsZTs7YUFBQUEsZTtBQUFBQSxJQUFBQSxlO0FBQUFBLElBQUFBLGU7QUFBQUEsSUFBQUEsZTtLQUFBQSxlLEtBQUFBLGU7OztNQWlVQUMsYTs7YUFBQUEsYTtBQUFBQSxJQUFBQSxhO0FBQUFBLElBQUFBLGE7QUFBQUEsSUFBQUEsYTtBQUFBQSxJQUFBQSxhO0tBQUFBLGEsS0FBQUEsYSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlndXJhYmxlUmVjb3JkLCBQb3NpdGlvbiwgUG9zaXRpb25hYmxlIH0gZnJvbSBcIi4vaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IEZsZXhTZXR0aW5ncywgSGVhZGVyRmFjZXRUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvT2JqZWN0UGFnZS9IZWFkZXJGYWNldFwiO1xuaW1wb3J0IHsgQmluZGluZ0V4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgVGFibGVUeXBlIH0gZnJvbSBcIi4vY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5cbmV4cG9ydCBlbnVtIFRlbXBsYXRlVHlwZSB7XG5cdExpc3RSZXBvcnQgPSBcIkxpc3RSZXBvcnRcIixcblx0T2JqZWN0UGFnZSA9IFwiT2JqZWN0UGFnZVwiLFxuXHRBbmFseXRpY2FsTGlzdFBhZ2UgPSBcIkFuYWx5dGljYWxMaXN0UGFnZVwiXG59XG5cbmV4cG9ydCBlbnVtIEFjdGlvblR5cGUge1xuXHREYXRhRmllbGRGb3JBY3Rpb24gPSBcIkZvckFjdGlvblwiLFxuXHREYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24gPSBcIkZvck5hdmlnYXRpb25cIixcblx0RGVmYXVsdCA9IFwiRGVmYXVsdFwiLFxuXHRQcmltYXJ5ID0gXCJQcmltYXJ5XCIsXG5cdFNlY29uZGFyeSA9IFwiU2Vjb25kYXJ5XCIsXG5cdFN3aXRjaFRvQWN0aXZlT2JqZWN0ID0gXCJTd2l0Y2hUb0FjdGl2ZU9iamVjdFwiLFxuXHRTd2l0Y2hUb0RyYWZ0T2JqZWN0ID0gXCJTd2l0Y2hUb0RyYWZ0T2JqZWN0XCIsXG5cdERlZmF1bHRBcHBseSA9IFwiRGVmYXVsdEFwcGx5XCIsXG5cdE1lbnUgPSBcIk1lbnVcIlxufVxuXG5leHBvcnQgdHlwZSBNYW5pZmVzdFNpZGVDb250ZW50ID0ge1xuXHR0ZW1wbGF0ZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGVudW0gVmlzdWFsaXphdGlvblR5cGUge1xuXHRUYWJsZSA9IFwiVGFibGVcIixcblx0Q2hhcnQgPSBcIkNoYXJ0XCJcbn1cblxuZXhwb3J0IGVudW0gVmFyaWFudE1hbmFnZW1lbnRUeXBlIHtcblx0UGFnZSA9IFwiUGFnZVwiLFxuXHRDb250cm9sID0gXCJDb250cm9sXCIsXG5cdE5vbmUgPSBcIk5vbmVcIlxufVxuXG5leHBvcnQgdHlwZSBDb250ZW50RGVuc2l0aWVzVHlwZSA9IHtcblx0Y29tcGFjdD86IGJvb2xlYW47XG5cdGNvenk/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGVudW0gQ3JlYXRpb25Nb2RlIHtcblx0TmV3UGFnZSA9IFwiTmV3UGFnZVwiLFxuXHRJbmxpbmUgPSBcIklubGluZVwiLFxuXHRDcmVhdGlvblJvdyA9IFwiQ3JlYXRpb25Sb3dcIlxufVxuXG5leHBvcnQgZW51bSBBdmFpbGFiaWxpdHlUeXBlIHtcblx0RGVmYXVsdCA9IFwiRGVmYXVsdFwiLFxuXHRBZGFwdGF0aW9uID0gXCJBZGFwdGF0aW9uXCIsXG5cdEhpZGRlbiA9IFwiSGlkZGVuXCJcbn1cblxuZXhwb3J0IGVudW0gSG9yaXpvbnRhbEFsaWduIHtcblx0RW5kID0gXCJFbmRcIixcblx0QmVnaW4gPSBcIkJlZ2luXCIsXG5cdENlbnRlciA9IFwiQ2VudGVyXCJcbn1cblxuZXhwb3J0IHR5cGUgVGFibGVDb2x1bW5TZXR0aW5ncyA9IHtcblx0bWljcm9DaGFydFNpemU/OiBzdHJpbmc7XG5cdHNob3dNaWNyb0NoYXJ0TGFiZWw/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIGZvcm1hdCBvcHRpb25zIGZvciBtdWx0aWxpbmUgdGV4dCBmaWVsZHMgb24gYSBmb3JtIG9yIGluIGEgdGFibGVcbiAqL1xuZXhwb3J0IHR5cGUgRm9ybWF0T3B0aW9uc1R5cGUgPSB7XG5cdHRleHRMaW5lc0Rpc3BsYXk6IG51bWJlcjtcblx0dGV4dExpbmVzRWRpdDogbnVtYmVyO1xufTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9mIGEgS1BJIGluIHRoZSBtYW5pZmVzdFxuICovXG5leHBvcnQgdHlwZSBLUElDb25maWd1cmF0aW9uID0ge1xuXHRtb2RlbD86IHN0cmluZztcblx0ZW50aXR5U2V0OiBzdHJpbmc7XG5cdHF1YWxpZmllcjogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiBCYXNlTWFuaWZlc3RTZXR0aW5nc1xuICovXG5leHBvcnQgdHlwZSBCYXNlTWFuaWZlc3RTZXR0aW5ncyA9IHtcblx0Y29udGVudD86IHtcblx0XHRoZWFkZXI/OiB7XG5cdFx0XHRmYWNldHM/OiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RIZWFkZXJGYWNldD47XG5cdFx0XHRhY3Rpb25zPzogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPjtcblx0XHR9O1xuXHRcdGZvb3Rlcj86IHtcblx0XHRcdGFjdGlvbnM/OiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RBY3Rpb24+O1xuXHRcdH07XG5cdH07XG5cdGNvbnRyb2xDb25maWd1cmF0aW9uPzoge1xuXHRcdFthbm5vdGF0aW9uUGF0aDogc3RyaW5nXTogQ29udHJvbE1hbmlmZXN0Q29uZmlndXJhdGlvbjtcblx0fSAmIHtcblx0XHRcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiPzogVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb247XG5cdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmFjZXRzXCI/OiBGYWNldHNDb250cm9sQ29uZmlndXJhdGlvbjtcblx0XHRcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IZWFkZXJGYWNldHNcIj86IEhlYWRlckZhY2V0c0NvbnRyb2xDb25maWd1cmF0aW9uO1xuXHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvbkZpZWxkc1wiPzogRmlsdGVyTWFuaWZlc3RDb25maWd1cmF0aW9uO1xuXHR9O1xuXHRjb252ZXJ0ZXJUeXBlOiBUZW1wbGF0ZVR5cGU7XG5cdGVudGl0eVNldDogc3RyaW5nO1xuXHRuYXZpZ2F0aW9uPzoge1xuXHRcdFtuYXZpZ2F0aW9uUGF0aDogc3RyaW5nXTogTmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvbjtcblx0fTtcblx0dmlld0xldmVsPzogbnVtYmVyO1xuXHRmY2xFbmFibGVkPzogYm9vbGVhbjtcblx0Y29udGV4dFBhdGg/OiBzdHJpbmc7XG5cdHZhcmlhbnRNYW5hZ2VtZW50PzogVmFyaWFudE1hbmFnZW1lbnRUeXBlO1xuXHRkZWZhdWx0VGVtcGxhdGVBbm5vdGF0aW9uUGF0aD86IHN0cmluZztcblx0Y29udGVudERlbnNpdGllcz86IENvbnRlbnREZW5zaXRpZXNUeXBlO1xuXHRzaGVsbENvbnRlbnREZW5zaXR5Pzogc3RyaW5nO1xuXHRpc0Rlc2t0b3A/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgTmF2aWdhdGlvblRhcmdldENvbmZpZ3VyYXRpb24gPSB7XG5cdG91dGJvdW5kPzogc3RyaW5nO1xuXHRvdXRib3VuZERldGFpbD86IHtcblx0XHRzZW1hbnRpY09iamVjdDogc3RyaW5nO1xuXHRcdGFjdGlvbjogc3RyaW5nO1xuXHRcdHBhcmFtZXRlcnM/OiBhbnk7XG5cdH07XG5cdHJvdXRlPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiBOYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb24gPSB7XG5cdGNyZWF0ZT86IE5hdmlnYXRpb25UYXJnZXRDb25maWd1cmF0aW9uO1xuXHRkZXRhaWw/OiBOYXZpZ2F0aW9uVGFyZ2V0Q29uZmlndXJhdGlvbjtcblx0ZGlzcGxheT86IHtcblx0XHRvdXRib3VuZD86IHN0cmluZztcblx0XHR0YXJnZXQ/OiBzdHJpbmc7IC8vIGZvciBjb21wYXRpYmlsaXR5XG5cdFx0cm91dGU/OiBzdHJpbmc7XG5cdH07XG59O1xuXG50eXBlIEhlYWRlckZhY2V0c0NvbnRyb2xDb25maWd1cmF0aW9uID0ge1xuXHRmYWNldHM6IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEhlYWRlckZhY2V0Pjtcbn07XG5cbnR5cGUgRmFjZXRzQ29udHJvbENvbmZpZ3VyYXRpb24gPSB7XG5cdHNlY3Rpb25zOiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RTZWN0aW9uPjtcbn07XG5cbnR5cGUgTWFuaWZlc3RGb3JtRWxlbWVudCA9IFBvc2l0aW9uYWJsZSAmIHtcblx0dGVtcGxhdGU6IHN0cmluZztcblx0bGFiZWw/OiBzdHJpbmc7XG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdGZpZWxkczogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0Rm9ybUVsZW1lbnQ+O1xufTtcblxuZXhwb3J0IHR5cGUgQ29udHJvbE1hbmlmZXN0Q29uZmlndXJhdGlvbiA9XG5cdHwgVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb25cblx0fCBDaGFydE1hbmlmZXN0Q29uZmlndXJhdGlvblxuXHR8IEZhY2V0c0NvbnRyb2xDb25maWd1cmF0aW9uXG5cdHwgSGVhZGVyRmFjZXRzQ29udHJvbENvbmZpZ3VyYXRpb25cblx0fCBGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9uXG5cdHwgRmlsdGVyTWFuaWZlc3RDb25maWd1cmF0aW9uO1xuXG4vKiogT2JqZWN0IFBhZ2UgKiovXG5cbmV4cG9ydCB0eXBlIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzID0gQmFzZU1hbmlmZXN0U2V0dGluZ3MgJiB7XG5cdGNvbnRlbnQ/OiB7XG5cdFx0aGVhZGVyPzoge1xuXHRcdFx0dmlzaWJsZT86IGJvb2xlYW47XG5cdFx0XHRhbmNob3JCYXJWaXNpYmxlPzogYm9vbGVhbjtcblx0XHRcdGZhY2V0cz86IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEhlYWRlckZhY2V0Pjtcblx0XHR9O1xuXHRcdGJvZHk/OiB7XG5cdFx0XHRzZWN0aW9ucz86IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdFNlY3Rpb24+O1xuXHRcdH07XG5cdH07XG5cdGVkaXRhYmxlSGVhZGVyQ29udGVudDogYm9vbGVhbjtcblx0c2VjdGlvbkxheW91dDogXCJUYWJzXCIgfCBcIlBhZ2VcIjtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYgTWFuaWZlc3RIZWFkZXJGYWNldFxuICovXG5leHBvcnQgdHlwZSBNYW5pZmVzdEhlYWRlckZhY2V0ID0ge1xuXHR0eXBlPzogSGVhZGVyRmFjZXRUeXBlO1xuXHRuYW1lPzogc3RyaW5nO1xuXHR0ZW1wbGF0ZT86IHN0cmluZztcblx0cG9zaXRpb24/OiBQb3NpdGlvbjtcblx0dmlzaWJsZT86IEJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHR0aXRsZT86IHN0cmluZztcblx0c3ViVGl0bGU/OiBzdHJpbmc7XG5cdHN0YXNoZWQ/OiBib29sZWFuO1xuXHRmbGV4U2V0dGluZ3M/OiBGbGV4U2V0dGluZ3M7XG5cdHJlcXVlc3RHcm91cElkPzogc3RyaW5nO1xuXHR0ZW1wbGF0ZUVkaXQ/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIE1hbmlmZXN0U2VjdGlvblxuICovXG5leHBvcnQgdHlwZSBNYW5pZmVzdFNlY3Rpb24gPSB7XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRpZD86IHN0cmluZztcblx0bmFtZT86IHN0cmluZztcblx0dmlzaWJsZT86IEJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRwb3NpdGlvbj86IFBvc2l0aW9uO1xuXHR0ZW1wbGF0ZT86IHN0cmluZztcblx0c3ViU2VjdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdFN1YlNlY3Rpb24+O1xuXHRhY3Rpb25zPzogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RBY3Rpb24+O1xufTtcblxuZXhwb3J0IHR5cGUgTWFuaWZlc3RTdWJTZWN0aW9uID0ge1xuXHRpZD86IHN0cmluZztcblx0bmFtZT86IHN0cmluZztcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRwb3NpdGlvbj86IFBvc2l0aW9uO1xuXHR2aXNpYmxlPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdGFjdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdEFjdGlvbj47XG5cdHNpZGVDb250ZW50PzogTWFuaWZlc3RTaWRlQ29udGVudDtcbn07XG5cbi8qKiBMaXN0IFJlcG9ydCAqKi9cblxuZXhwb3J0IHR5cGUgTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MgPSBCYXNlTWFuaWZlc3RTZXR0aW5ncyAmIHtcblx0aW5pdGlhbExvYWQ/OiBib29sZWFuO1xuXHR2aWV3cz86IE11bHRpcGxlVmlld3NDb25maWd1cmF0aW9uO1xuXHRrZXlQZXJmb3JtYW5jZUluZGljYXRvcnM/OiB7XG5cdFx0W2twaU5hbWU6IHN0cmluZ106IEtQSUNvbmZpZ3VyYXRpb247XG5cdH07XG59O1xuXG5leHBvcnQgdHlwZSBWaWV3UGF0aENvbmZpZ3VyYXRpb24gPSBTaW5nbGVWaWV3UGF0aENvbmZpZ3VyYXRpb24gfCBDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbjtcblxuZXhwb3J0IHR5cGUgVmlld0NvbmZpZ3VyYXRpb24gPSBWaWV3UGF0aENvbmZpZ3VyYXRpb24gfCBDdXN0b21WaWV3VGVtcGxhdGVDb25maWd1cmF0aW9uO1xuXG5leHBvcnQgdHlwZSBDdXN0b21WaWV3VGVtcGxhdGVDb25maWd1cmF0aW9uID0ge1xuXHRrZXk/OiBzdHJpbmc7XG5cdGxhYmVsOiBzdHJpbmc7XG5cdHRlbXBsYXRlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBTaW5nbGVWaWV3UGF0aENvbmZpZ3VyYXRpb24gPSB7XG5cdGtlZXBQcmV2aW91c1ByZXNvbmFsaXphdGlvbj86IGJvb2xlYW47XG5cdGtleT86IHN0cmluZztcblx0ZW50aXR5U2V0Pzogc3RyaW5nO1xuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRjb250ZXh0UGF0aD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uID0ge1xuXHRwcmltYXJ5OiBTaW5nbGVWaWV3UGF0aENvbmZpZ3VyYXRpb25bXTtcblx0c2Vjb25kYXJ5OiBTaW5nbGVWaWV3UGF0aENvbmZpZ3VyYXRpb25bXTtcblx0ZGVmYXVsdFBhdGg/OiBcImJvdGhcIiB8IFwicHJpbWFyeVwiIHwgXCJzZWNvbmRhcnlcIjtcblx0a2V5Pzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiBNdWx0aXBsZVZpZXdzQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgdHlwZSBNdWx0aXBsZVZpZXdzQ29uZmlndXJhdGlvbiA9IHtcblx0cGF0aHM6IFZpZXdDb25maWd1cmF0aW9uW107XG5cdHNob3dDb3VudHM/OiBib29sZWFuO1xufTtcblxuLyoqIEZpbHRlciBDb25maWd1cmF0aW9uICoqL1xuXG4vKiogQHR5cGVkZWYgRmlsdGVyTWFuaWZlc3RDb25maWd1cmF0aW9uICoqL1xuZXhwb3J0IHR5cGUgRmlsdGVyTWFuaWZlc3RDb25maWd1cmF0aW9uID0ge1xuXHRmaWx0ZXJGaWVsZHM/OiBSZWNvcmQ8c3RyaW5nLCBGaWx0ZXJGaWVsZE1hbmlmZXN0Q29uZmlndXJhdGlvbj47XG5cdG5hdmlnYXRpb25Qcm9wZXJ0aWVzPzogc3RyaW5nW107XG5cdHVzZVNlbWFudGljRGF0ZVJhbmdlPzogYm9vbGVhbjtcblx0aW5pdGlhbExheW91dD86IHN0cmluZztcblx0bGF5b3V0Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyRmllbGRNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBQb3NpdGlvbmFibGUgJiB7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHR0ZW1wbGF0ZT86IHN0cmluZztcblx0YXZhaWxhYmlsaXR5PzogQXZhaWxhYmlsaXR5VHlwZTtcblx0c2V0dGluZ3M/OiBGaWx0ZXJTZXR0aW5ncztcblx0dmlzdWFsRmlsdGVyPzogdmlzdWFsRmlsdGVyQ29uZmlndXJhdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIHZpc3VhbEZpbHRlckNvbmZpZ3VyYXRpb24gPSB7XG5cdHZhbHVlTGlzdD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE9wZXJhdG9yQ29uZmlndXJhdGlvbiA9IHtcblx0cGF0aDogc3RyaW5nO1xuXHRlcXVhbHM/OiBzdHJpbmc7XG5cdGNvbnRhaW5zPzogc3RyaW5nO1xuXHRleGNsdWRlOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdE9wZXJhdG9yID0ge1xuXHRvcGVyYXRvcjogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyU2V0dGluZ3MgPSB7XG5cdG9wZXJhdG9yQ29uZmlndXJhdGlvbj86IE9wZXJhdG9yQ29uZmlndXJhdGlvbltdO1xuXHRkZWZhdWx0VmFsdWVzPzogRGVmYXVsdE9wZXJhdG9yW107XG59O1xuXG4vKiogQ2hhcnQgQ29uZmlndXJhdGlvbiAqKi9cblxuZXhwb3J0IHR5cGUgQ2hhcnRQZXJzb25hbGl6YXRpb25NYW5pZmVzdFNldHRpbmdzID1cblx0fCBib29sZWFuXG5cdHwge1xuXHRcdFx0c29ydDogYm9vbGVhbjtcblx0XHRcdHR5cGU6IGJvb2xlYW47XG5cdFx0XHRpdGVtOiBib29sZWFuO1xuXHQgIH07XG5cbmV4cG9ydCB0eXBlIENoYXJ0TWFuaWZlc3RDb25maWd1cmF0aW9uID0ge1xuXHRjaGFydFNldHRpbmdzOiB7XG5cdFx0cGVyc29uYWxpemF0aW9uOiBDaGFydFBlcnNvbmFsaXphdGlvbk1hbmlmZXN0U2V0dGluZ3M7XG5cdH07XG59O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25BZnRlckV4ZWN1dGlvbkNvbmZpZ3VyYXRpb24gPSB7XG5cdG5hdmlnYXRlVG9JbnN0YW5jZT86IGJvb2xlYW47XG5cdGVuYWJsZUF1dG9TY3JvbGw/OiBib29sZWFuO1xufTtcblxuLyoqIFRhYmxlIENvbmZpZ3VyYXRpb24gKiovXG5cbi8qKlxuICogQHR5cGVkZWYgTWFuaWZlc3RBY3Rpb25cbiAqL1xuZXhwb3J0IHR5cGUgTWFuaWZlc3RBY3Rpb24gPSB7XG5cdG1lbnU/OiBzdHJpbmdbXTtcblx0dmlzaWJsZT86IHN0cmluZztcblx0ZW5hYmxlZD86IHN0cmluZztcblx0cG9zaXRpb24/OiBQb3NpdGlvbjtcblx0cHJlc3M/OiBzdHJpbmc7XG5cdHRleHQ/OiBzdHJpbmc7XG5cdF9fbm9XcmFwPzogYm9vbGVhbjtcblx0ZW5hYmxlT25TZWxlY3Q/OiBzdHJpbmc7XG5cdGRlZmF1bHRWYWx1ZXNGdW5jdGlvbj86IHN0cmluZztcblx0cmVxdWlyZXNTZWxlY3Rpb24/OiBib29sZWFuO1xuXHRhZnRlckV4ZWN1dGlvbj86IEFjdGlvbkFmdGVyRXhlY3V0aW9uQ29uZmlndXJhdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIE1hbmlmZXN0VGFibGVDb2x1bW5PdmVycmlkZSA9IFBvc2l0aW9uYWJsZSAmIHtcblx0d2lkdGg/OiBzdHJpbmc7XG5cdGhvcml6b250YWxBbGlnbj86IEhvcml6b250YWxBbGlnbjtcblx0YWZ0ZXJFeGVjdXRpb24/OiBBY3Rpb25BZnRlckV4ZWN1dGlvbkNvbmZpZ3VyYXRpb247XG5cdHNldHRpbmdzPzogVGFibGVDb2x1bW5TZXR0aW5ncztcblx0Zm9ybWF0T3B0aW9ucz86IEZvcm1hdE9wdGlvbnNUeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgTWFuaWZlc3RUYWJsZUNvbHVtbiA9IFBvc2l0aW9uYWJsZSAmIHtcblx0aGVhZGVyOiBzdHJpbmc7XG5cdHdpZHRoPzogc3RyaW5nO1xuXHR0eXBlPzogc3RyaW5nO1xuXHRob3Jpem9udGFsQWxpZ24/OiBIb3Jpem9udGFsQWxpZ247XG5cdHRlbXBsYXRlOiBzdHJpbmc7XG5cdGFmdGVyRXhlY3V0aW9uPzogQWN0aW9uQWZ0ZXJFeGVjdXRpb25Db25maWd1cmF0aW9uO1xuXHRhdmFpbGFiaWxpdHk/OiBBdmFpbGFiaWxpdHlUeXBlO1xuXHRzZXR0aW5ncz86IFRhYmxlQ29sdW1uU2V0dGluZ3M7XG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zVHlwZTtcblx0cHJvcGVydGllcz86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdHRhYmxlU2V0dGluZ3M/OiBUYWJsZU1hbmlmZXN0U2V0dGluZ3NDb25maWd1cmF0aW9uO1xuXHRhY3Rpb25zPzogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RBY3Rpb24+O1xuXHRjb2x1bW5zPzogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RUYWJsZUNvbHVtbiB8IE1hbmlmZXN0VGFibGVDb2x1bW5PdmVycmlkZT47XG59O1xuXG5leHBvcnQgZW51bSBTZWxlY3Rpb25Nb2RlIHtcblx0QXV0byA9IFwiQXV0b1wiLFxuXHROb25lID0gXCJOb25lXCIsXG5cdE11bHRpID0gXCJNdWx0aVwiLFxuXHRTaW5nbGUgPSBcIlNpbmdsZVwiXG59XG5cbmV4cG9ydCB0eXBlIFRhYmxlUGVyc29uYWxpemF0aW9uQ29uZmlndXJhdGlvbiA9XG5cdHwgYm9vbGVhblxuXHR8IHtcblx0XHRcdHNvcnQ6IGJvb2xlYW47XG5cdFx0XHRjb2x1bW46IGJvb2xlYW47XG5cdFx0XHRmaWx0ZXI6IGJvb2xlYW47XG5cdFx0XHRncm91cDogYm9vbGVhbjtcblx0XHRcdGFnZ3JlZ2F0ZTogYm9vbGVhbjtcblx0ICB9O1xuXG5leHBvcnQgdHlwZSBUYWJsZU1hbmlmZXN0U2V0dGluZ3NDb25maWd1cmF0aW9uID0ge1xuXHRjcmVhdGlvbk1vZGU/OiB7XG5cdFx0ZGlzYWJsZUFkZFJvd0J1dHRvbkZvckVtcHR5RGF0YT86IGJvb2xlYW47XG5cdFx0Y3VzdG9tVmFsaWRhdGlvbkZ1bmN0aW9uPzogc3RyaW5nO1xuXHRcdGNyZWF0ZUF0RW5kPzogYm9vbGVhbjtcblx0XHRuYW1lPzogQ3JlYXRpb25Nb2RlO1xuXHR9O1xuXHRlbmFibGVFeHBvcnQ/OiBib29sZWFuO1xuXHRxdWlja1ZhcmlhbnRTZWxlY3Rpb24/OiB7XG5cdFx0cGF0aHM6IFtcblx0XHRcdHtcblx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0XHRcdH1cblx0XHRdO1xuXHRcdGhpZGVUYWJsZVRpdGxlPzogYm9vbGVhbjtcblx0XHRzaG93Q291bnRzPzogYm9vbGVhbjtcblx0fTtcblx0cGVyc29uYWxpemF0aW9uPzogVGFibGVQZXJzb25hbGl6YXRpb25Db25maWd1cmF0aW9uO1xuXHQvKipcblx0ICogRGVmaW5lcyBob3cgbWFueSBpdGVtcyBpbiBhIHRhYmxlIGNhbiBiZSBzZWxlY3RlZC4gWW91IGhhdmUgdGhlIGZvbGxvd2luZyBvcHRpb25zOlxuXHQgKiA9PiBieSBkZWZpbmluZyAnTm9uZScgeW91IGNhbiBmdWxseSBkaXNhYmxlIHRoZSBsaXN0IHNlbGVjdGlvblxuXHQgKiA9PiBieSBkZWZpbmluZyAnU2luZ2xlJyB5b3UgYWxsb3cgb25seSBvbmUgaXRlbSB0byBiZSBzZWxlY3RlZFxuXHQgKiA9PiBieSBkZWZpbmluZyAnTXVsdGknIHlvdSBhbGxvdyBzZXZlcmFsIGl0ZW1zIHRvIGJlIHNlbGVjdGVkXG5cdCAqID0+IGJ5IHVzaW5nICdBdXRvJyB5b3UgbGVhdmUgdGhlIGRlZmF1bHQgZGVmaW5pdGlvbiAnTm9uZScsIGV4Y2VwdCBpZiB0aGVyZSBpcyBhbiBhY3Rpb24gdGhhdCByZXF1aXJlcyBhIHNlbGVjdGlvbiAoc3VjaCBhcyBkZWxldGluZywgb3IgSUJOKVxuXHQgKi9cblx0c2VsZWN0aW9uTW9kZT86IFNlbGVjdGlvbk1vZGU7XG5cdHR5cGU/OiBUYWJsZVR5cGU7XG5cdGNvbmRlbnNlZFRhYmxlTGF5b3V0PzogYm9vbGVhbjtcblx0c2VsZWN0QWxsPzogYm9vbGVhbjtcblx0c2VsZWN0aW9uTGltaXQ/OiBudW1iZXI7XG5cdGVuYWJsZVBhc3RlPzogYm9vbGVhbjtcblx0ZW5hYmxlRnVsbFNjcmVlbj86IGJvb2xlYW47XG5cdGVuYWJsZU1hc3NFZGl0PzogYm9vbGVhbjtcbn07XG4iXX0=
|
|
@@ -70,7 +70,15 @@ export type TableColumnSettings = {
|
|
|
70
70
|
export type FormatOptionsType = {
|
|
71
71
|
textLinesDisplay: number;
|
|
72
72
|
textLinesEdit: number;
|
|
73
|
-
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Configuration of a KPI in the manifest
|
|
77
|
+
*/
|
|
78
|
+
export type KPIConfiguration = {
|
|
79
|
+
model?: string;
|
|
80
|
+
entitySet: string;
|
|
81
|
+
qualifier: string;
|
|
74
82
|
};
|
|
75
83
|
|
|
76
84
|
/**
|
|
@@ -172,7 +180,6 @@ export type ObjectPageManifestSettings = BaseManifestSettings & {
|
|
|
172
180
|
};
|
|
173
181
|
};
|
|
174
182
|
editableHeaderContent: boolean;
|
|
175
|
-
showDraftToggle: boolean;
|
|
176
183
|
sectionLayout: "Tabs" | "Page";
|
|
177
184
|
};
|
|
178
185
|
|
|
@@ -182,6 +189,7 @@ export type ObjectPageManifestSettings = BaseManifestSettings & {
|
|
|
182
189
|
export type ManifestHeaderFacet = {
|
|
183
190
|
type?: HeaderFacetType;
|
|
184
191
|
name?: string;
|
|
192
|
+
template?: string;
|
|
185
193
|
position?: Position;
|
|
186
194
|
visible?: BindingExpression<boolean>;
|
|
187
195
|
title?: string;
|
|
@@ -189,6 +197,7 @@ export type ManifestHeaderFacet = {
|
|
|
189
197
|
stashed?: boolean;
|
|
190
198
|
flexSettings?: FlexSettings;
|
|
191
199
|
requestGroupId?: string;
|
|
200
|
+
templateEdit?: string;
|
|
192
201
|
};
|
|
193
202
|
|
|
194
203
|
/**
|
|
@@ -221,6 +230,9 @@ export type ManifestSubSection = {
|
|
|
221
230
|
export type ListReportManifestSettings = BaseManifestSettings & {
|
|
222
231
|
initialLoad?: boolean;
|
|
223
232
|
views?: MultipleViewsConfiguration;
|
|
233
|
+
keyPerformanceIndicators?: {
|
|
234
|
+
[kpiName: string]: KPIConfiguration;
|
|
235
|
+
};
|
|
224
236
|
};
|
|
225
237
|
|
|
226
238
|
export type ViewPathConfiguration = SingleViewPathConfiguration | CombinedViewPathConfiguration;
|