@sapui5/sap.fe.macros 1.141.2 → 1.143.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +4 -10
- package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
- package/src/sap/fe/macros/Chart.js +34 -23
- package/src/sap/fe/macros/Chart.tsx +25 -11
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +47 -36
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +50 -31
- package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
- package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
- package/src/sap/fe/macros/CommonHelper.js +14 -24
- package/src/sap/fe/macros/CommonHelper.ts +18 -25
- package/src/sap/fe/macros/ConditionalSwitch.js +1 -2
- package/src/sap/fe/macros/ConditionalSwitch.tsx +0 -1
- package/src/sap/fe/macros/ConditionalSwitchProperty.js +1 -3
- package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +0 -2
- package/src/sap/fe/macros/Field.js +34 -17
- package/src/sap/fe/macros/Field.ts +64 -32
- package/src/sap/fe/macros/FooterContent.js +7 -3
- package/src/sap/fe/macros/FooterContent.tsx +8 -13
- package/src/sap/fe/macros/KPITag.js +6 -6
- package/src/sap/fe/macros/KPITag.tsx +8 -6
- package/src/sap/fe/macros/MacroAPI.js +4 -3
- package/src/sap/fe/macros/MacroAPI.ts +3 -3
- package/src/sap/fe/macros/MessageButton.js +4 -3
- package/src/sap/fe/macros/MessageButton.tsx +7 -3
- package/src/sap/fe/macros/MicroChart.js +12 -7
- package/src/sap/fe/macros/MicroChart.tsx +9 -3
- package/src/sap/fe/macros/MultiValueField.js +22 -36
- package/src/sap/fe/macros/MultiValueField.tsx +34 -66
- package/src/sap/fe/macros/RichTextEditor.js +3 -4
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
- package/src/sap/fe/macros/Share.js +7 -7
- package/src/sap/fe/macros/Share.tsx +9 -6
- package/src/sap/fe/macros/Status.js +39 -11
- package/src/sap/fe/macros/Status.tsx +25 -5
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
- package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
- package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
- package/src/sap/fe/macros/chart/Action.js +25 -2
- package/src/sap/fe/macros/chart/Action.ts +13 -0
- package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
- package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/chart/ChartDelegate.js +29 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +46 -14
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +58 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +75 -13
- package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
- package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +7 -7
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +3 -2
- package/src/sap/fe/macros/controls/FileWrapper.js +11 -5
- package/src/sap/fe/macros/controls/FileWrapper.ts +10 -4
- package/src/sap/fe/macros/controls/FilterBar.js +39 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +3 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -0
- package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
- package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
- package/src/sap/fe/macros/coreUI/CreateDialog.js +3 -3
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +2 -2
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +40 -12
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -9
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +4 -4
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +2 -2
- package/src/sap/fe/macros/field/FieldHelper.js +4 -3
- package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +44 -9
- package/src/sap/fe/macros/field/FieldRuntime.ts +72 -8
- package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
- package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
- package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +130 -40
- package/src/sap/fe/macros/filter/FilterUtils.ts +167 -45
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +15 -9
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +36 -17
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +21 -10
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +81 -63
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.js +376 -0
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.ts +463 -0
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/form/Form.block.js +27 -2
- package/src/sap/fe/macros/form/Form.block.ts +31 -11
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +110 -63
- package/src/sap/fe/macros/form/FormContainer.block.ts +121 -64
- package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
- package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
- package/src/sap/fe/macros/insights/InsightsService.js +3 -2
- package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
- package/src/sap/fe/macros/internal/DataPoint.js +7 -8
- package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
- package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
- package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
- package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +2 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +2 -1
- package/src/sap/fe/macros/library.js +5 -6
- package/src/sap/fe/macros/{library.ts → library.tsx} +3 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/messagebundle.properties +13 -5
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
- package/src/sap/fe/macros/messagebundle_da.properties +12 -3
- package/src/sap/fe/macros/messagebundle_de.properties +16 -7
- package/src/sap/fe/macros/messagebundle_el.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_es.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
- package/src/sap/fe/macros/messagebundle_et.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
- package/src/sap/fe/macros/messagebundle_id.properties +18 -9
- package/src/sap/fe/macros/messagebundle_it.properties +12 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
- package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_no.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
- package/src/sap/fe/macros/messages/MessageButton.js +21 -12
- package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +7 -3
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +8 -2
- package/src/sap/fe/macros/quickView/QuickView.js +5 -4
- package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
- package/src/sap/fe/macros/table/Action.js +21 -5
- package/src/sap/fe/macros/table/Action.ts +14 -4
- package/src/sap/fe/macros/table/ActionGroup.js +15 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
- package/src/sap/fe/macros/table/Column.js +3 -2
- package/src/sap/fe/macros/table/Column.ts +1 -1
- package/src/sap/fe/macros/table/MdcTableTemplate.js +96 -18
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +136 -17
- package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
- package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
- package/src/sap/fe/macros/table/Table.block.js +74 -30
- package/src/sap/fe/macros/table/Table.block.tsx +77 -14
- package/src/sap/fe/macros/table/TableAPI.js +175 -132
- package/src/sap/fe/macros/table/TableAPI.ts +67 -30
- package/src/sap/fe/macros/table/TableDefinition.js +20 -3
- package/src/sap/fe/macros/table/TableDefinition.ts +18 -2
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -3
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +12 -9
- package/src/sap/fe/macros/table/TableHelper.js +5 -2
- package/src/sap/fe/macros/table/TableHelper.ts +5 -2
- package/src/sap/fe/macros/table/TableRuntime.js +25 -13
- package/src/sap/fe/macros/table/TableRuntime.ts +31 -17
- package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
- package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
- package/src/sap/fe/macros/table/Utils.js +9 -3
- package/src/sap/fe/macros/table/Utils.ts +14 -8
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +72 -29
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +114 -123
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +15 -6
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +14 -5
- package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -3
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +3 -2
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +42 -14
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +49 -19
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
- package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
- package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +3 -4
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +2 -3
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.js +5 -4
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.ts +6 -3
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +17 -10
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +24 -9
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
|
@@ -95,7 +95,8 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
95
95
|
}), _dec6 = property({
|
|
96
96
|
type: "string"
|
|
97
97
|
}), _dec7 = property({
|
|
98
|
-
type: "string"
|
|
98
|
+
type: "string",
|
|
99
|
+
allowedValues: ["XS", "S", "M", "L"]
|
|
99
100
|
}), _dec8 = property({
|
|
100
101
|
type: "boolean"
|
|
101
102
|
}), _dec9 = property({
|
|
@@ -169,15 +170,20 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
169
170
|
_initializerDefineProperty(_this, "isAnalytics", _descriptor18, _this);
|
|
170
171
|
return _this;
|
|
171
172
|
}
|
|
173
|
+
_exports = MicroChart;
|
|
174
|
+
_inheritsLoose(MicroChart, _BuildingBlock);
|
|
175
|
+
var _proto = MicroChart.prototype;
|
|
176
|
+
_proto.applySettings = function applySettings(mSettings, oScope) {
|
|
177
|
+
this._doNotCreateOnNullContext = true;
|
|
178
|
+
this._visibilityCheck = true;
|
|
179
|
+
return _BuildingBlock.prototype.applySettings.call(this, mSettings, oScope);
|
|
180
|
+
}
|
|
172
181
|
|
|
173
182
|
/**
|
|
174
183
|
* Gets the sortOrder for the microChart as mentioned in the PresentationVariant.
|
|
175
184
|
* @param sortingProps Sorters from PresentationVariant.
|
|
176
185
|
* @returns SortOrder
|
|
177
|
-
|
|
178
|
-
_exports = MicroChart;
|
|
179
|
-
_inheritsLoose(MicroChart, _BuildingBlock);
|
|
180
|
-
var _proto = MicroChart.prototype;
|
|
186
|
+
*/;
|
|
181
187
|
_proto.getSortOrder = function getSortOrder(sortingProps) {
|
|
182
188
|
return sortingProps.map(sortingProp => {
|
|
183
189
|
return {
|
|
@@ -215,7 +221,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
215
221
|
*
|
|
216
222
|
* Clone is a UI5 core Control method, which is not async and is called in a sync manner throughout UI5.
|
|
217
223
|
* Hence we need to create the chart in a fire and forget fashion.
|
|
218
|
-
*
|
|
219
224
|
* @param idSuffix A suffix to be appended to the cloned element id
|
|
220
225
|
* @param localIds An array of local IDs within the cloned hierarchy (internally used)
|
|
221
226
|
* @returns The reference to the newly create clone
|
|
@@ -595,4 +600,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
595
600
|
_exports = MicroChart;
|
|
596
601
|
return _exports;
|
|
597
602
|
}, false);
|
|
598
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZpZ2F0aW9uVHlwZSIsIk1pY3JvQ2hhcnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJyZXR1cm5UeXBlcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJyZXF1aXJlZCIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsImV2ZW50IiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiX2RlYzE2IiwiX2RlYzE3IiwiX2RlYzE4IiwiX2RlYzE5IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwic2V0dGluZ3MiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFNvcnRPcmRlciIsInNvcnRpbmdQcm9wcyIsIm1hcCIsInNvcnRpbmdQcm9wIiwiUHJvcGVydHkiLCJ2YWx1ZSIsIkRlc2NlbmRpbmciLCJmdWxseVF1YWxpZmllZE5hbWUiLCIkVHlwZSIsInNldFByb3BlcnR5Iiwia2V5Iiwic3VwcHJlc3NJbnZhbGlkYXRlIiwiX2FwcGx5aW5nU2V0dGluZ3MiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0TWV0YWRhdGEiLCJnZXRQcm9wZXJ0aWVzIiwiaW5jbHVkZXMiLCJjb250ZW50IiwiZGVzdHJveSIsImNyZWF0ZUNvbnRlbnQiLCJjcmVhdGVNaWNyb0NoYXJ0IiwiY2xvbmUiLCJpZFN1ZmZpeCIsImxvY2FsSWRzIiwiY2xvbmVkTWljcm9DaGFydCIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJvd25lciIsIl9nZXRPd25lciIsImNvbnRleHRQYXRoIiwicHJlcHJvY2Vzc29yQ29udGV4dCIsImZ1bGxDb250ZXh0UGF0aCIsIm9kYXRhTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsInRhcmdldE9iamVjdCIsInRlcm0iLCJTb3J0T3JkZXIiLCJsZW5ndGgiLCJfc29ydE9yZGVyIiwiVmlzdWFsaXphdGlvbnMiLCJnZXRUYXJnZXROYXZpZ2F0aW9uUGF0aCIsIl9jaGFydFRhcmdldCIsIl9tZWFzdXJlRGF0YVBhdGgiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsIk1lYXN1cmVzIiwiTWljcm9DaGFydEhlbHBlciIsInNob3VsZFJlbmRlck1pY3JvQ2hhcnQiLCJfZGF0YVBvaW50IiwiTWVhc3VyZUF0dHJpYnV0ZXMiLCJEYXRhUG9pbnQiLCIkdGFyZ2V0IiwiX3RhcmdldE5hdmlnYXRpb25QYXRoIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJzaG93T25seUNoYXJ0IiwibG9nV2FybmluZyIsImNoYXJ0TWFwIiwidHlwZTEiLCJDaGFydFR5cGUiLCJDaGFydENvbXBvbmVudCIsIl9fdWk1X3JlcXVpcmVfYXN5bmMiLCJkZWZhdWx0IiwibWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldE1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJpc0FuYWx5dGljcyIsImdldEFnZ3JlZ2F0aW9uIiwic2V0QWdncmVnYXRpb24iLCJfanN4IiwiZ2V0TWljcm9DaGFydFByb3BlcnRpZXMiLCJjaGlsZHJlbiIsImVycm9yT2JqZWN0IiwiVmFsdWUiLCJtaWNyb0NoYXJ0UHJvcGVydGllcyIsInNpemUiLCJoaWRlT25Ob0RhdGEiLCJkYXRhUG9pbnRQYXRoIiwiZ2V0QWdncmVnYXRpb25Gb3JNaWNyb2NoYXJ0IiwiZ2V0T2JqZWN0IiwiRGltZW5zaW9ucyIsImdldEJ1bGxldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzIiwiZ2V0UmFkaWFsTWljcm9DaGFydFByb3BlcnRpZXMiLCJnZXRIYXJ2ZXlNaWNyb0NoYXJ0UHJvcGVydGllcyIsImJhcnMiLCJjb2x1bW5zIiwibWF4VmFsdWUiLCJNYXhpbXVtVmFsdWUiLCJjb21waWxlRXhwcmVzc2lvbiIsImNvbnN0YW50IiwidmFsdWVPZiIsIm1pblZhbHVlIiwiTWluaW11bVZhbHVlIiwiY29sb3JQYWxldHRlIiwiZ2V0Q29sb3JQYWxldHRlRm9yTWljcm9DaGFydCIsImRhdGEiLCJzaG93VGhyZXNob2xkTGluZSIsImNyaXRpY2FsaXR5RXhwcmVzc2lvbkZvck1pY3JvY2hhcnQiLCJDcml0aWNhbGl0eSIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0IiwiZ2V0QnVsbGV0TWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldFN0YWNrTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldEhhcnZleU1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJnZXRDb21wYXJpc29uTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldEFyZWFNaWNyb0NoYXJ0QWdncmVnYXRpb25zIiwiZ2V0Q29sdW1uTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldExpbmVNaWNyb0NoYXJ0QWdncmFnYXRpb25zIiwiY3JlYXRlTWljcm9DaGFydElkIiwiY2hhcnRUeXBlIiwiY2hhcnRJRFByZWZpeCIsImNyZWF0ZUlkIiwiZ2V0TWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMiLCJtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcyIsImNoYXJ0VGl0bGUiLCJ0aXRsZSIsIlRpdGxlIiwiY2hhcnREZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwiRGVzY3JpcHRpb24iLCJfYmluZGluZyIsImdldEJpbmRpbmdFeHByZXNzaW9uRm9yTWljcm9jaGFydCIsInVvbVBhdGgiLCJnZXRVT01QYXRoRm9yTWljcm9jaGFydCIsImlkIiwiY2hhcnRzV2l0aFZpc2libGVQcm9wZXJ0eSIsInZpc2libGUiLCJub3QiLCJpZkVsc2UiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJhbm5vdGF0aW9ucyIsIlVJIiwiSGlkZGVuIiwiZGF0YVBvaW50UXVhbGlmaWVycyIsImdldERhdGFQb2ludFF1YWxpZmllcnNGb3JNaWNyb0NoYXJ0IiwibWVhc3VyZXMiLCJuYW1lIiwiZ2V0TWVhc3VyZVByb3BlcnR5UGF0aHMiLCJ0YXJnZXRFbnRpdHlUeXBlIiwiZ2V0RGF0YVBvaW50UXVhbGlmaWVyc0Zvck1lYXN1cmVzIiwiZGltZW5zaW9uRGF0YVBhdGgiLCJkaW1lbnNpb24iLCJDb21tb24iLCJUZXh0IiwicGF0aCIsIm1lYXN1cmVQcmVjaXNpb24iLCJwcmVjaXNpb24iLCJtZWFzdXJlU2NhbGUiLCJnZXRNZWFzdXJlU2NhbGVGb3JNaWNyb0NoYXJ0IiwiZGltZW5zaW9uUHJlY2lzaW9uIiwiY2FsZW5kYXJQYXR0ZXJuIiwiZ2V0Q2FsZW5kYXJQYXR0ZXJuIiwiY3JlYXRlVGl0bGUiLCJ0aXRsZVRleHQiLCJsb2NhbExlZ2FjeVRpdGxlSWQiLCJJRCIsImdlbmVyYXRlIiwicXVhbGlmaWVyIiwidmlld0lkIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJnZXRWaWV3IiwiZ2V0SWQiLCJsZWdhY3lUaXRsZUlkIiwidGl0bGVMaW5rUHJvcGVydGllcyIsInRleHQiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwibmF2aWdhdGlvblR5cGUiLCJhcmlhVHJhbnNsYXRlZFRleHQiLCJnZXRUZXh0Iiwic2hvd0FzTGluayIsImxpbmtBcmlhVGV4dCIsInNob3dMaW5rIiwiQ29tbW9uSGVscGVyIiwiZ2V0SGVhZGVyRGF0YVBvaW50TGlua1Zpc2liaWxpdHkiLCJUaXRsZUxpbmsiLCJsaW5rUHJlc3MiLCJwcmVzc0V2ZW50IiwiZmlyZUV2ZW50IiwiaXNWYWxpZENoYXJ0VHlwZSIsIkNvbmRpdGlvbmFsV3JhcHBlciIsImNvbmRpdGlvbiIsIm9yIiwicGF0aEluTW9kZWwiLCJlcXVhbCIsImdldEV4cHJlc3Npb25Gb3JNZWFzdXJlVW5pdCIsImNvbnRlbnRUcnVlIiwiY3JlYXRlQ2hhcnRDb250ZW50IiwiY29udGVudEZhbHNlIiwiYmluZGluZyIsIk1pY3JvQ2hhcnRDb250YWluZXIiLCJtaWNyb0NoYXJ0VGl0bGUiLCJCdWlsZGluZ0Jsb2NrIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIiwiTm9uZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTWljcm9DaGFydC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sIFByb3BlcnR5LCBQcm9wZXJ0eVBhdGggfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgTWVhc3VyZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQW5hbHl0aWNzXCI7XG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlclR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IHsgQ29tbW9uQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlBbm5vdGF0aW9ucyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvRWRtX1R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFQb2ludCwgRGF0YVBvaW50VHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IENoYXJ0VHlwZSwgVUlBbm5vdGF0aW9uVGVybXMsIHR5cGUgQ2hhcnQsIHR5cGUgUHJlc2VudGF0aW9uVmFyaWFudCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBjb25zdGFudCwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgaWZFbHNlLCBub3QsIG9yLCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0ICogYXMgSUQgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBlbmhhbmNlRGF0YU1vZGVsUGF0aCwgZ2V0VGFyZ2V0TmF2aWdhdGlvblBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRFeHByZXNzaW9uRm9yTWVhc3VyZVVuaXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgdHlwZSB7ICRDb2x1bW5NaWNyb0NoYXJ0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQ29sdW1uTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29tcGFyaXNvbk1pY3JvQ2hhcnRTZXR0aW5ncyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9Db21wYXJpc29uTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyAkTGluZU1pY3JvQ2hhcnRTZXR0aW5ncyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9MaW5lTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyAkU3RhY2tlZEJhck1pY3JvQ2hhcnRTZXR0aW5ncyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9TdGFja2VkQmFyTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyBBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCIuL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IENvbmRpdGlvbmFsV3JhcHBlciBmcm9tIFwiLi9jb250cm9scy9Db25kaXRpb25hbFdyYXBwZXJcIjtcbmltcG9ydCBUaXRsZUxpbmsgZnJvbSBcIi4vaW50ZXJuYWwvVGl0bGVMaW5rXCI7XG5pbXBvcnQgTWljcm9DaGFydENvbnRhaW5lciBmcm9tIFwiLi9taWNyb2NoYXJ0L01pY3JvQ2hhcnRDb250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgTWljcm9DaGFydEFnZ3JlZ2F0aW9uLCBNaWNyb0NoYXJ0U2V0dGluZ3MgfSBmcm9tIFwiLi9taWNyb2NoYXJ0L01pY3JvQ2hhcnRIZWxwZXJcIjtcbmltcG9ydCBNaWNyb0NoYXJ0SGVscGVyIGZyb20gXCIuL21pY3JvY2hhcnQvTWljcm9DaGFydEhlbHBlclwiO1xuXG50eXBlIEVycm9yT2JqZWN0VHlwZSA9IHtcblx0RGF0YVBvaW50X1ZhbHVlPzogdW5rbm93bjtcbn07XG5cbmVudW0gTmF2aWdhdGlvblR5cGUge1xuXHQvKipcblx0ICogRm9yIEV4dGVybmFsIE5hdmlnYXRpb25cblx0ICovXG5cdEV4dGVybmFsID0gXCJFeHRlcm5hbFwiLFxuXG5cdC8qKlxuXHQgKiBGb3IgSW4tUGFnZSBOYXZpZ2F0aW9uXG5cdCAqL1xuXHRJblBhZ2UgPSBcIkluUGFnZVwiLFxuXG5cdC8qKlxuXHQgKiBGb3IgTm8gTmF2aWdhdGlvblxuXHQgKi9cblx0Tm9uZSA9IFwiTm9uZVwiXG59XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSBNaWNyb0NoYXJ0IGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2J1aWxkaW5nQmxvY2tzL21pY3JvY2hhcnQvIE92ZXJ2aWV3IG9mIE1pY3JvIENoYXJ0IEJ1aWxkaW5nIEJsb2NrfVxuICogPGJyPlxuICogVXN1YWxseSwgYSBjb250ZXh0UGF0aCBhbmQgbWV0YVBhdGggaXMgZXhwZWN0ZWQuXG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpNaWNyb0NoYXJ0IGlkPVwiTXlNaWNyb0NoYXJ0XCIgY29udGV4dFBhdGg9XCIvUm9vdEVudGl0eVwiIG1ldGFQYXRoPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCIgLyZndDtcbiAqIDwvcHJlPlxuICogIDxwcmU+XG4gKiBzYXAudWkucmVxdWlyZShbXCJzYXAvZmUvbWFjcm9zL01pY3JvQ2hhcnRcIl0sIGZ1bmN0aW9uKE1pY3JvQ2hhcnQpIHtcbiAqIFx0IC4uLlxuICogXHQgbmV3IE1pY3JvQ2hhcnQoXCJteU1pY3JvQ2hhcnRcIiwge21ldGFQYXRoOlwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCJ9KVxuICogfSlcbiAqIDwvcHJlPlxuICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuTWljcm9DaGFydFxuICogQHVpNS1tZXRhbW9kZWxcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjkzLjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5NaWNyb0NoYXJ0XCIsIHtcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MubWljcm9jaGFydC5NaWNyb0NoYXJ0Q29udGFpbmVyXCIsIFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5Db25kaXRpb25hbFdyYXBwZXJcIl1cbn0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNaWNyb0NoYXJ0IGV4dGVuZHMgQnVpbGRpbmdCbG9jazxNaWNyb0NoYXJ0Q29udGFpbmVyPiB7XG5cdC8qKlxuXHQgKiBUbyBjb250cm9sIHRoZSByZW5kZXJpbmcgb2YgVGl0bGUsIFN1YnRpdGxlIGFuZCBDdXJyZW5jeSBMYWJlbHMuIFdoZW4gdGhlIHNpemUgaXMgeHMgdGhlbiB3ZSBkb1xuXHQgKiBub3Qgc2VlIHRoZSBpbm5lciBsYWJlbHMgb2YgdGhlIE1pY3JvQ2hhcnQgYXMgd2VsbC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRwdWJsaWMgc2hvd09ubHlDaGFydCA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBNZXRhZGF0YSBwYXRoIHRvIHRoZSAgTWljcm9DaGFydC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBtZXRhUGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogY29udGV4dCBwYXRoIHRvIHRoZSBNaWNyb0NoYXJ0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUeXBlIG9mIG5hdmlnYXRpb24sIHRoYXQgaXMsIEV4dGVybmFsIG9yIEluUGFnZVxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdG5hdmlnYXRpb25UeXBlPzogTmF2aWdhdGlvblR5cGUgPSBOYXZpZ2F0aW9uVHlwZS5Ob25lO1xuXG5cdC8qKlxuXHQgKiBCYXRjaCBncm91cCBJRCBhbG9uZyB3aXRoIHdoaWNoIHRoaXMgY2FsbCBzaG91bGQgYmUgZ3JvdXBlZC5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YmF0Y2hHcm91cElkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTaXplIG9mIHRoZSBNaWNyb0NoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0c2l6ZT86IHN0cmluZztcblxuXHQvKipcblx0ICogU2hvdyBibGFuayBzcGFjZSBpbiBjYXNlIHRoZXJlIGlzIG5vIGRhdGEgaW4gdGhlIGNoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGhpZGVPbk5vRGF0YT86IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHRpdGxlID0gXCJcIjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGRlc2NyaXB0aW9uID0gXCJcIjtcblxuXHRAZXZlbnQoKVxuXHR0aXRsZVByZXNzITogRnVuY3Rpb247XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfY2hhcnRUYXJnZXQhOiBDaGFydDtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdF9kYXRhUG9pbnQhOiBEYXRhUG9pbnQ7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfdGFyZ2V0TmF2aWdhdGlvblBhdGghOiBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0X21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoITogRGF0YU1vZGVsT2JqZWN0UGF0aDxDaGFydCB8IFByZXNlbnRhdGlvblZhcmlhbnQ+IHwgdW5kZWZpbmVkO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0X2JpbmRpbmchOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfc29ydE9yZGVyPzogU29ydE9yZGVyVHlwZVtdO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0X21lYXN1cmVEYXRhUGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGg8TWVhc3VyZT47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0aXNBbmFseXRpY3M/OiBib29sZWFuO1xuXG5cdGNvbnN0cnVjdG9yKHNldHRpbmdzPzogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxNaWNyb0NoYXJ0Piwgb3RoZXJzPzogUHJvcGVydGllc09mPE1pY3JvQ2hhcnQ+KSB7XG5cdFx0c3VwZXIoc2V0dGluZ3MsIG90aGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgc29ydE9yZGVyIGZvciB0aGUgbWljcm9DaGFydCBhcyBtZW50aW9uZWQgaW4gdGhlIFByZXNlbnRhdGlvblZhcmlhbnQuXG5cdCAqIEBwYXJhbSBzb3J0aW5nUHJvcHMgU29ydGVycyBmcm9tIFByZXNlbnRhdGlvblZhcmlhbnQuXG5cdCAqIEByZXR1cm5zIFNvcnRPcmRlclxuXHQgKi9cblx0Z2V0U29ydE9yZGVyKHNvcnRpbmdQcm9wczogU29ydE9yZGVyVHlwZVtdKTogU29ydE9yZGVyVHlwZVtdIHtcblx0XHRyZXR1cm4gc29ydGluZ1Byb3BzLm1hcCgoc29ydGluZ1Byb3A6IFNvcnRPcmRlclR5cGUpID0+IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFByb3BlcnR5OiBzb3J0aW5nUHJvcC5Qcm9wZXJ0eT8udmFsdWUgYXMgdW5rbm93biBhcyBQcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdERlc2NlbmRpbmc6IHNvcnRpbmdQcm9wLkRlc2NlbmRpbmcgYXMgYm9vbGVhbiB8IHVuZGVmaW5lZCxcblx0XHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBcIlwiLFxuXHRcdFx0XHQkVHlwZTogQ29tbW9uQW5ub3RhdGlvblR5cGVzLlNvcnRPcmRlclR5cGVcblx0XHRcdH07XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUga2V5IHdpdGggdGhlIGdpdmVuIHZhbHVlIGZvciBNaWNyb0NoYXJ0LlxuXHQgKiBAcGFyYW0ga2V5IFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXRcblx0ICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQgdGhlIHByb3BlcnR5IHRvXG5cdCAqIEBwYXJhbSBzdXBwcmVzc0ludmFsaWRhdGUgIElmIHRydWUsIHRoZSBtYW5hZ2VkIG9iamVjdCBpcyBub3QgbWFya2VkIGFzIGNoYW5nZWRcblx0ICogQHJldHVybnMgTWljcm9DaGFydFxuXHQgKi9cblx0c2V0UHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBib29sZWFuLCBzdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9hcHBseWluZ1NldHRpbmdzICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXModGhpcy5nZXRNZXRhZGF0YSgpLmdldFByb3BlcnRpZXMoKSkuaW5jbHVkZXMoa2V5KSkge1xuXHRcdFx0c3VwZXIuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSwgdHJ1ZSk7XG5cdFx0XHRpZiAodGhpcy5jb250ZW50KSB7XG5cdFx0XHRcdHRoaXMuY29udGVudC5kZXN0cm95KCk7XG5cdFx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdFx0XHR0aGlzLmNyZWF0ZU1pY3JvQ2hhcnQoKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSwgc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogT3ZlcnJpZGVzIHRoZSBjbG9uZSBtZXRob2Qgb2YgdGhlIFVJNSBjb250cm9sIHRvIGVuc3VyZSB0aGF0IHRoZSBzdWl0ZSBtaWNybyBjaGFydCBpcyBjcmVhdGVkIGFzeW5jaHJvbm91c2x5IG9uIHRoZSBjbG9uZS5cblx0ICpcblx0ICogQ2xvbmUgaXMgYSBVSTUgY29yZSBDb250cm9sIG1ldGhvZCwgd2hpY2ggaXMgbm90IGFzeW5jIGFuZCBpcyBjYWxsZWQgaW4gYSBzeW5jIG1hbm5lciB0aHJvdWdob3V0IFVJNS5cblx0ICogSGVuY2Ugd2UgbmVlZCB0byBjcmVhdGUgdGhlIGNoYXJ0IGluIGEgZmlyZSBhbmQgZm9yZ2V0IGZhc2hpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSBpZFN1ZmZpeCBBIHN1ZmZpeCB0byBiZSBhcHBlbmRlZCB0byB0aGUgY2xvbmVkIGVsZW1lbnQgaWRcblx0ICogQHBhcmFtIGxvY2FsSWRzIEFuIGFycmF5IG9mIGxvY2FsIElEcyB3aXRoaW4gdGhlIGNsb25lZCBoaWVyYXJjaHkgKGludGVybmFsbHkgdXNlZClcblx0ICogQHJldHVybnMgVGhlIHJlZmVyZW5jZSB0byB0aGUgbmV3bHkgY3JlYXRlIGNsb25lXG5cdCAqL1xuXHRjbG9uZShpZFN1ZmZpeD86IHN0cmluZyB8IHVuZGVmaW5lZCwgbG9jYWxJZHM/OiBzdHJpbmdbXSk6IHRoaXMge1xuXHRcdGNvbnN0IGNsb25lZE1pY3JvQ2hhcnQgPSBzdXBlci5jbG9uZShpZFN1ZmZpeCwgbG9jYWxJZHMpO1xuXHRcdGNsb25lZE1pY3JvQ2hhcnQuY3JlYXRlTWljcm9DaGFydCgpO1xuXHRcdHJldHVybiBjbG9uZWRNaWNyb0NoYXJ0O1xuXHR9XG5cdHB1YmxpYyBhc3luYyBvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdFx0dGhpcy5jb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGggPz8gb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/LmZ1bGxDb250ZXh0UGF0aDtcblx0XHRcdGNvbnN0IG9kYXRhTWV0YU1vZGVsID0gb3duZXI/LmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPENoYXJ0IHwgUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0XHRcdHRoaXMubWV0YVBhdGgsXG5cdFx0XHRcdHRoaXMuY29udGV4dFBhdGhcblx0XHRcdCk7XG5cdFx0XHRpZiAodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldE9iamVjdD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudCkge1xuXHRcdFx0XHRpZiAoKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5Tb3J0T3JkZXIgYXMgdW5rbm93biBhcyBTb3J0T3JkZXJUeXBlW10gfCB1bmRlZmluZWQpPy5sZW5ndGgpIHtcblx0XHRcdFx0XHR0aGlzLl9zb3J0T3JkZXIgPSB0aGlzLmdldFNvcnRPcmRlcih0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuU29ydE9yZGVyKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8Q2hhcnQ+KFxuXHRcdFx0XHRcdGAke3RoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5WaXN1YWxpemF0aW9uc1swXS52YWx1ZX1gLFxuXHRcdFx0XHRcdGdldFRhcmdldE5hdmlnYXRpb25QYXRoKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoKSArIFwiL1wiXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgpIHtcblx0XHRcdFx0aWYgKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudCkge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdCh0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuU29ydE9yZGVyIGFzIHVua25vd24gYXMgU29ydE9yZGVyVHlwZVtdIHwgdW5kZWZpbmVkKT8ubGVuZ3RoICE9XG5cdFx0XHRcdFx0XHRudWxsXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9zb3J0T3JkZXIgPSB0aGlzLmdldFNvcnRPcmRlcih0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuU29ydE9yZGVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQgPSB0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgQ2hhcnQ7XG5cdFx0XHRcdHRoaXMuX21lYXN1cmVEYXRhUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPE1lYXN1cmU+KFxuXHRcdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Lk1lYXN1cmVzWzBdLnZhbHVlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChNaWNyb0NoYXJ0SGVscGVyLnNob3VsZFJlbmRlck1pY3JvQ2hhcnQodGhpcy5fY2hhcnRUYXJnZXQpKSB7XG5cdFx0XHRcdFx0dGhpcy5fZGF0YVBvaW50ID0gdGhpcy5fY2hhcnRUYXJnZXQ/Lk1lYXN1cmVBdHRyaWJ1dGVzWzBdPy5EYXRhUG9pbnQ/LiR0YXJnZXQgYXMgRGF0YVBvaW50O1xuXHRcdFx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KFxuXHRcdFx0XHRcdFx0Z2V0VGFyZ2V0TmF2aWdhdGlvblBhdGgodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgpXG5cdFx0XHRcdFx0KSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXG5cdFx0XHRcdFx0dGhpcy5zaG93T25seUNoYXJ0ID0gdHlwZW9mIHRoaXMuc2hvd09ubHlDaGFydCA9PT0gXCJzdHJpbmdcIiA/IHRoaXMuc2hvd09ubHlDaGFydCA9PT0gXCJ0cnVlXCIgOiB0aGlzLnNob3dPbmx5Q2hhcnQ7XG5cdFx0XHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5jcmVhdGVNaWNyb0NoYXJ0KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5sb2dXYXJuaW5nKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRhc3luYyBjcmVhdGVNaWNyb0NoYXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGNoYXJ0TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuXHRcdFx0XCJVSS5DaGFydFR5cGUvQnVsbGV0XCI6IGBzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9CdWxsZXRNaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0RvbnV0XCI6IGBzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9SYWRpYWxNaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL1BpZVwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvSGFydmV5QmFsbE1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQmFyU3RhY2tlZFwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvU3RhY2tlZEJhck1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQ29sdW1uXCI6IGBzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9Db2x1bW5NaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0JhclwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQ29tcGFyaXNvbk1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvTGluZVwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvTGluZU1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQXJlYVwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQXJlYU1pY3JvQ2hhcnRgXG5cdFx0fTtcblxuXHRcdGNvbnN0IHR5cGUxID0gdGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlO1xuXHRcdGlmIChPYmplY3Qua2V5cyhjaGFydE1hcCkuaW5jbHVkZXModHlwZTEpKSB7XG5cdFx0XHRjb25zdCBDaGFydENvbXBvbmVudCA9IChhd2FpdCBpbXBvcnQoY2hhcnRNYXBbdHlwZTFdKSkuZGVmYXVsdDtcblx0XHRcdGNvbnN0IG1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMgPSBhd2FpdCB0aGlzLmdldE1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMoKTtcblx0XHRcdGlmICh0aGlzLmlzQW5hbHl0aWNzKSB7XG5cdFx0XHRcdCh0aGlzLmNvbnRlbnQ/LmdldEFnZ3JlZ2F0aW9uKFwiY29udGVudFRydWVcIikgYXMgTWljcm9DaGFydENvbnRhaW5lcikuc2V0QWdncmVnYXRpb24oXG5cdFx0XHRcdFx0XCJtaWNyb0NoYXJ0XCIsXG5cdFx0XHRcdFx0PENoYXJ0Q29tcG9uZW50IHsuLi50aGlzLmdldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKCl9PnttaWNyb0NoYXJ0QWdncmVnYXRpb25zfTwvQ2hhcnRDb21wb25lbnQ+XG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQodGhpcy5jb250ZW50IGFzIE1pY3JvQ2hhcnRDb250YWluZXIpLnNldEFnZ3JlZ2F0aW9uKFxuXHRcdFx0XHRcdFwibWljcm9DaGFydFwiLFxuXHRcdFx0XHRcdDxDaGFydENvbXBvbmVudCB7Li4udGhpcy5nZXRNaWNyb0NoYXJ0UHJvcGVydGllcygpfT57bWljcm9DaGFydEFnZ3JlZ2F0aW9uc308L0NoYXJ0Q29tcG9uZW50PlxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGxvZ1dhcm5pbmcoKTogdm9pZCB7XG5cdFx0Y29uc3QgZXJyb3JPYmplY3Q6IEVycm9yT2JqZWN0VHlwZSA9IHt9O1xuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5CdWxsZXQpIHtcblx0XHRcdGVycm9yT2JqZWN0W1wiRGF0YVBvaW50X1ZhbHVlXCJdID0gdGhpcy5fZGF0YVBvaW50Py5WYWx1ZSB8fCB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdE1pY3JvQ2hhcnRIZWxwZXIubG9nV2FybmluZyh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsIGVycm9yT2JqZWN0KTtcblx0fVxuXG5cdGdldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKCk6IFBhcnRpYWw8UHJvcGVydGllc09mPE1pY3JvQ2hhcnRTZXR0aW5ncz4+IHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgbWljcm9DaGFydFByb3BlcnRpZXM6IE1pY3JvQ2hhcnRTZXR0aW5ncyA9IHtcblx0XHRcdHNpemU6IHRoaXMuc2l6ZSxcblx0XHRcdGhpZGVPbk5vRGF0YTogdGhpcy5oaWRlT25Ob0RhdGFcblx0XHR9O1xuXG5cdFx0Y29uc3QgZGF0YVBvaW50UGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPERhdGFQb2ludFR5cGU+KFxuXHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPixcblx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5NZWFzdXJlQXR0cmlidXRlc1swXT8uRGF0YVBvaW50Py52YWx1ZVxuXHRcdCk7XG5cblx0XHRjb25zdCBtaWNyb0NoYXJ0QWdncmVnYXRpb25zID0gTWljcm9DaGFydEhlbHBlci5nZXRBZ2dyZWdhdGlvbkZvck1pY3JvY2hhcnQoXG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsXG5cdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KCksXG5cdFx0XHRkYXRhUG9pbnRQYXRoLFxuXHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8TWVhc3VyZT4sXG5cdFx0XHR0aGlzLl9zb3J0T3JkZXIgYXMgU29ydE9yZGVyVHlwZVtdLFxuXHRcdFx0KHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3QgYXMgQ2hhcnQpPy5EaW1lbnNpb25zPy5bMF0/LnZhbHVlLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cblx0XHRzd2l0Y2ggKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSkge1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CdWxsZXRcIjpcblx0XHRcdFx0bWljcm9DaGFydFByb3BlcnRpZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldEJ1bGxldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKG1pY3JvQ2hhcnRQcm9wZXJ0aWVzLCB0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvRG9udXRcIjpcblx0XHRcdFx0bWljcm9DaGFydFByb3BlcnRpZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldFJhZGlhbE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKG1pY3JvQ2hhcnRQcm9wZXJ0aWVzLCB0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9QaWVcIjpcblx0XHRcdFx0bWljcm9DaGFydFByb3BlcnRpZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldEhhcnZleU1pY3JvQ2hhcnRQcm9wZXJ0aWVzKG1pY3JvQ2hhcnRQcm9wZXJ0aWVzLCB0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CYXJTdGFja2VkXCI6XG5cdFx0XHRcdChtaWNyb0NoYXJ0UHJvcGVydGllcyBhcyAkU3RhY2tlZEJhck1pY3JvQ2hhcnRTZXR0aW5ncykuYmFycyA9IG1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMgYXMgdW5rbm93biBhcyBBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9Db2x1bW5cIjpcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRDb2x1bW5NaWNyb0NoYXJ0U2V0dGluZ3MpLmNvbHVtbnMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldEFnZ3JlZ2F0aW9uRm9yTWljcm9jaGFydChcblx0XHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsXG5cdFx0XHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdCgpLFxuXHRcdFx0XHRcdGRhdGFQb2ludFBhdGgsXG5cdFx0XHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpLFxuXHRcdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5EaW1lbnNpb25zPy5bMF0sXG5cdFx0XHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8TWVhc3VyZT4sXG5cdFx0XHRcdFx0dGhpcy5fc29ydE9yZGVyIGFzIFNvcnRPcmRlclR5cGVbXSxcblx0XHRcdFx0XHQodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldE9iamVjdCBhcyBDaGFydCk/LkRpbWVuc2lvbnM/LlswXT8udmFsdWUsXG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpIGFzIEFnZ3JlZ2F0aW9uQmluZGluZ0luZm87XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL0JhclwiOlxuXHRcdFx0XHQobWljcm9DaGFydFByb3BlcnRpZXMgYXMgJENvbXBhcmlzb25NaWNyb0NoYXJ0U2V0dGluZ3MpLm1heFZhbHVlID0gdGhpcy5fZGF0YVBvaW50Lk1heGltdW1WYWx1ZVxuXHRcdFx0XHRcdD8gY29tcGlsZUV4cHJlc3Npb24oY29uc3RhbnQodGhpcy5fZGF0YVBvaW50Lk1heGltdW1WYWx1ZT8udmFsdWVPZigpKSlcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRDb21wYXJpc29uTWljcm9DaGFydFNldHRpbmdzKS5taW5WYWx1ZSA9IHRoaXMuX2RhdGFQb2ludC5NaW5pbXVtVmFsdWVcblx0XHRcdFx0XHQ/IGNvbXBpbGVFeHByZXNzaW9uKGNvbnN0YW50KHRoaXMuX2RhdGFQb2ludC5NaW5pbXVtVmFsdWU/LnZhbHVlT2YoKSkpXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRcdChtaWNyb0NoYXJ0UHJvcGVydGllcyBhcyAkQ29tcGFyaXNvbk1pY3JvQ2hhcnRTZXR0aW5ncykuY29sb3JQYWxldHRlID0gTWljcm9DaGFydEhlbHBlci5nZXRDb2xvclBhbGV0dGVGb3JNaWNyb0NoYXJ0KFxuXHRcdFx0XHRcdHRoaXMuX2RhdGFQb2ludFxuXHRcdFx0XHQpO1xuXHRcdFx0XHQobWljcm9DaGFydFByb3BlcnRpZXMgYXMgJENvbXBhcmlzb25NaWNyb0NoYXJ0U2V0dGluZ3MpLmRhdGEgPSBtaWNyb0NoYXJ0QWdncmVnYXRpb25zIGFzIHVua25vd24gYXMgQWdncmVnYXRpb25CaW5kaW5nSW5mbztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL0xpbmVcIjpcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRMaW5lTWljcm9DaGFydFNldHRpbmdzKS5zaG93VGhyZXNob2xkTGluZSA9IGZhbHNlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gbWljcm9DaGFydFByb3BlcnRpZXM7XG5cdH1cblxuXHRhc3luYyBnZXRNaWNyb0NoYXJ0QWdncmVnYXRpb25zKCk6IFByb21pc2U8TWljcm9DaGFydEFnZ3JlZ2F0aW9uIHwgdW5kZWZpbmVkPiB7XG5cdFx0Y29uc3QgY3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydCA9IHRoaXMuX2RhdGFQb2ludC5Dcml0aWNhbGl0eVxuXHRcdFx0PyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCh0aGlzLl9kYXRhUG9pbnQpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQnVsbGV0KSB7XG5cdFx0XHRyZXR1cm4gTWljcm9DaGFydEhlbHBlci5nZXRCdWxsZXRNaWNyb0NoYXJ0QWdncmVnYXRpb25zKHRoaXMuX2RhdGFQb2ludCwgY3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5CYXJTdGFja2VkKSB7XG5cdFx0XHRyZXR1cm4gTWljcm9DaGFydEhlbHBlci5nZXRTdGFja01pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMoXG5cdFx0XHRcdHRoaXMuX2RhdGFQb2ludCxcblx0XHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoLFxuXHRcdFx0XHRjcml0aWNhbGl0eUV4cHJlc3Npb25Gb3JNaWNyb2NoYXJ0XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuUGllKSB7XG5cdFx0XHRyZXR1cm4gTWljcm9DaGFydEhlbHBlci5nZXRIYXJ2ZXlNaWNyb0NoYXJ0QWdncmVnYXRpb25zKHRoaXMuX2RhdGFQb2ludCwgY3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5CYXIpIHtcblx0XHRcdHJldHVybiBNaWNyb0NoYXJ0SGVscGVyLmdldENvbXBhcmlzb25NaWNyb0NoYXJ0QWdncmVnYXRpb25zKFxuXHRcdFx0XHR0aGlzLl9kYXRhUG9pbnQsXG5cdFx0XHRcdGNyaXRpY2FsaXR5RXhwcmVzc2lvbkZvck1pY3JvY2hhcnQsXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQXJlYSkge1xuXHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0QXJlYU1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0LFxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPENoYXJ0IHwgUHJlc2VudGF0aW9uVmFyaWFudD4sXG5cdFx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoIGFzIENvbnRleHQsXG5cdFx0XHRcdHRoaXMuc2hvd09ubHlDaGFydFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkNvbHVtbikge1xuXHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0Q29sdW1uTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyhcblx0XHRcdFx0dGhpcy5fZGF0YVBvaW50LFxuXHRcdFx0XHRjcml0aWNhbGl0eUV4cHJlc3Npb25Gb3JNaWNyb2NoYXJ0LFxuXHRcdFx0XHR0aGlzLnNob3dPbmx5Q2hhcnRcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5MaW5lKSB7XG5cdFx0XHRpZiAodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggJiYgdGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGgpIHtcblx0XHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0TGluZU1pY3JvQ2hhcnRBZ2dyYWdhdGlvbnMoXG5cdFx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQsXG5cdFx0XHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGhcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y3JlYXRlTWljcm9DaGFydElkKGNoYXJ0VHlwZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgY2hhcnRJRFByZWZpeDtcblx0XHRzd2l0Y2ggKGNoYXJ0VHlwZSkge1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CdWxsZXRcIjpcblx0XHRcdFx0Y2hhcnRJRFByZWZpeCA9IFwiQnVsbGV0TWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvRG9udXRcIjpcblx0XHRcdFx0Y2hhcnRJRFByZWZpeCA9IFwiUmFkaWFsTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvUGllXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkhhcnZleUJhbGxNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CYXJTdGFja2VkXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIlN0YWNrZWRCYXJNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9BcmVhXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkFyZWFNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9Db2x1bW5cIjpcblx0XHRcdFx0Y2hhcnRJRFByZWZpeCA9IFwiQ29sdW1uTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQmFyXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkNvbXBhcmlzb25NaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9MaW5lXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkxpbmVNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5jcmVhdGVJZChjaGFydElEUHJlZml4KTtcblx0fVxuXG5cdGdldE1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzKCk6IFByb3BlcnRpZXNPZjxNaWNyb0NoYXJ0Q29udGFpbmVyPiB7XG5cdFx0Y29uc3QgbWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXM6IFByb3BlcnRpZXNPZjxNaWNyb0NoYXJ0Q29udGFpbmVyPiA9IHtcblx0XHRcdGNoYXJ0VGl0bGU6IHRoaXMudGl0bGUgfHwgKHRoaXMuX2NoYXJ0VGFyZ2V0LlRpdGxlPy52YWx1ZU9mKCkgYXMgc3RyaW5nKSB8fCB1bmRlZmluZWRcblx0XHR9O1xuXHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLnNob3dPbmx5Q2hhcnQgPSB0aGlzLnNob3dPbmx5Q2hhcnQ7XG5cdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuY2hhcnRUaXRsZSA9ICh0aGlzLl9jaGFydFRhcmdldC5UaXRsZSBhcyBzdHJpbmcpIHx8IHVuZGVmaW5lZDtcblx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5jaGFydERlc2NyaXB0aW9uID1cblx0XHRcdHRoaXMuZGVzY3JpcHRpb24gfHwgKHRoaXMuX2NoYXJ0VGFyZ2V0LkRlc2NyaXB0aW9uPy52YWx1ZU9mKCkgYXMgc3RyaW5nKSB8fCB1bmRlZmluZWQ7XG5cblx0XHR0aGlzLl9iaW5kaW5nID0gTWljcm9DaGFydEhlbHBlci5nZXRCaW5kaW5nRXhwcmVzc2lvbkZvck1pY3JvY2hhcnQoXG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsXG5cdFx0XHR0aGlzLl9tZWFzdXJlRGF0YVBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxNZWFzdXJlPixcblx0XHRcdHRoaXMsXG5cdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KCksXG5cdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIilcblx0XHQpO1xuXG5cdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMudW9tUGF0aCA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0VU9NUGF0aEZvck1pY3JvY2hhcnQoXG5cdFx0XHR0aGlzLnNob3dPbmx5Q2hhcnQsXG5cdFx0XHR0aGlzLl9tZWFzdXJlRGF0YVBhdGgsXG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGVcblx0XHQpO1xuXG5cdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuaWQgPSB0aGlzLmNyZWF0ZU1pY3JvQ2hhcnRJZCh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUpO1xuXG5cdFx0Y29uc3QgY2hhcnRzV2l0aFZpc2libGVQcm9wZXJ0eSA9IFtcIlVJLkNoYXJ0VHlwZS9CdWxsZXRcIiwgXCJVSS5DaGFydFR5cGUvUGllXCIsIFwiVUkuQ2hhcnRUeXBlL1JhZGlhbFwiXTtcblx0XHRpZiAoY2hhcnRzV2l0aFZpc2libGVQcm9wZXJ0eS5pbmNsdWRlcyh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUpKSB7XG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy52aXNpYmxlID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdG5vdChcblx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24odGhpcy5fY2hhcnRUYXJnZXQuTWVhc3VyZXNbMF0uJHRhcmdldD8uYW5ub3RhdGlvbnMuVUk/LkhpZGRlbiksXG5cdFx0XHRcdFx0XHRjb25zdGFudCh0cnVlKSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KGZhbHNlKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMudmlzaWJsZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQmFyU3RhY2tlZCkge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGF0YVBvaW50UXVhbGlmaWVycyA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0RGF0YVBvaW50UXVhbGlmaWVyc0Zvck1pY3JvQ2hhcnQoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5NZWFzdXJlQXR0cmlidXRlc1swXT8uRGF0YVBvaW50Py52YWx1ZSBhcyBzdHJpbmdcblx0XHRcdCkgYXMgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5BcmVhIHx8IHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkNvbHVtbikge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGF0YVBvaW50UXVhbGlmaWVycyA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0RGF0YVBvaW50UXVhbGlmaWVyc0Zvck1pY3JvQ2hhcnQoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5NZWFzdXJlQXR0cmlidXRlc1swXT8uRGF0YVBvaW50Py52YWx1ZSBhcyBzdHJpbmdcblx0XHRcdCkgYXMgdW5rbm93biBhcyBzdHJpbmdbXTtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLm1lYXN1cmVzID0gW1xuXHRcdFx0XHQodGhpcy5fbWVhc3VyZURhdGFQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KT8udGFyZ2V0T2JqZWN0Py5uYW1lIGFzIHN0cmluZ1xuXHRcdFx0XTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuTGluZSkge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMubWVhc3VyZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldE1lYXN1cmVQcm9wZXJ0eVBhdGhzKFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldCxcblx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMsXG5cdFx0XHRcdFwiTGluZVwiLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpIGFzIHN0cmluZ1tdO1xuXG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5kYXRhUG9pbnRRdWFsaWZpZXJzID0gTWljcm9DaGFydEhlbHBlci5nZXREYXRhUG9pbnRRdWFsaWZpZXJzRm9yTWVhc3VyZXMoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0LFxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aD8udGFyZ2V0RW50aXR5VHlwZS5hbm5vdGF0aW9ucyxcblx0XHRcdFx0XCJMaW5lXCIsXG5cdFx0XHRcdHRydWVcblx0XHRcdCkgYXMgc3RyaW5nW107XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQXJlYSB8fFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQ29sdW1uIHx8XG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5MaW5lXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBkaW1lbnNpb25EYXRhUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5Pihcblx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxDaGFydCB8IFByZXNlbnRhdGlvblZhcmlhbnQ+LFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldC5EaW1lbnNpb25zWzBdLnZhbHVlXG5cdFx0XHQpO1xuXG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5kaW1lbnNpb24gPSBkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0XG5cdFx0XHRcdD8gKGRpbWVuc2lvbkRhdGFQYXRoPy50YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5Db21tb24/LlRleHQgYXMgdW5rbm93biBhcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPik/LnBhdGhcblx0XHRcdFx0OiBkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py5uYW1lO1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMubWVhc3VyZVByZWNpc2lvbiA9IHRoaXMuX2RhdGFQb2ludD8uVmFsdWU/LiR0YXJnZXQ/LnByZWNpc2lvbjtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLm1lYXN1cmVTY2FsZSA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0TWVhc3VyZVNjYWxlRm9yTWljcm9DaGFydCh0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGltZW5zaW9uUHJlY2lzaW9uID0gZGltZW5zaW9uRGF0YVBhdGg/LnRhcmdldE9iamVjdD8ucHJlY2lzaW9uO1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuY2FsZW5kYXJQYXR0ZXJuID0gTWljcm9DaGFydEhlbHBlci5nZXRDYWxlbmRhclBhdHRlcm4oXG5cdFx0XHRcdGRpbWVuc2lvbkRhdGFQYXRoPy50YXJnZXRPYmplY3Q/LnR5cGUgYXMgc3RyaW5nLFxuXHRcdFx0XHRkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucyBhcyBQcm9wZXJ0eUFubm90YXRpb25zLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gbWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXM7XG5cdH1cblxuXHRjcmVhdGVUaXRsZSh0aXRsZVRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFRpdGxlTGluayB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRpdGxlVGV4dCkge1xuXHRcdFx0Ly8gVGhlIHRpdGxlIGhhZCB0aGlzIGlkIGluIHRlbXBsYXRlIHRpbWUgYW5kIHdlIG5lZWQgdG8gbWFpbnRhaW4gdGhlIHNhbWUgaWQuXG5cdFx0XHRjb25zdCBsb2NhbExlZ2FjeVRpdGxlSWQgPSBJRC5nZW5lcmF0ZShbXG5cdFx0XHRcdFwiZmVcIixcblx0XHRcdFx0XCJNaWNyb0NoYXJ0TGlua1wiLFxuXHRcdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIiksXG5cdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3Q/LnRlcm0sXG5cdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3Q/LnF1YWxpZmllclxuXHRcdFx0XSk7XG5cdFx0XHRjb25zdCB2aWV3SWQgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmdldFZpZXcoKS5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbGVnYWN5VGl0bGVJZCA9IGAke3ZpZXdJZH0tLSR7bG9jYWxMZWdhY3lUaXRsZUlkfWA7XG5cblx0XHRcdGNvbnN0IHRpdGxlTGlua1Byb3BlcnRpZXM6IFByb3BlcnRpZXNPZjxUaXRsZUxpbms+ID0ge1xuXHRcdFx0XHRpZDogbGVnYWN5VGl0bGVJZCxcblx0XHRcdFx0dGV4dDogdGl0bGVUZXh0XG5cdFx0XHR9O1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpO1xuXHRcdFx0aWYgKHRoaXMubmF2aWdhdGlvblR5cGUgPT09IFwiSW5QYWdlXCIpIHtcblx0XHRcdFx0Y29uc3QgYXJpYVRyYW5zbGF0ZWRUZXh0ID0gcmVzb3VyY2VCdW5kbGU/LmdldFRleHQoXCJUX0NPTU1PTl9IRUFERVJEUF9USVRMRV9MSU5LX0lOUEFHRV9BUklBXCIpO1xuXHRcdFx0XHR0aXRsZUxpbmtQcm9wZXJ0aWVzLnNob3dBc0xpbmsgPSB0cnVlO1xuXHRcdFx0XHR0aXRsZUxpbmtQcm9wZXJ0aWVzLmxpbmtBcmlhVGV4dCA9IGFyaWFUcmFuc2xhdGVkVGV4dDtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5uYXZpZ2F0aW9uVHlwZSA9PT0gXCJFeHRlcm5hbFwiKSB7XG5cdFx0XHRcdGNvbnN0IHNob3dMaW5rID0gQ29tbW9uSGVscGVyLmdldEhlYWRlckRhdGFQb2ludExpbmtWaXNpYmlsaXR5KGxvY2FsTGVnYWN5VGl0bGVJZCwgdHJ1ZSk7XG5cdFx0XHRcdGNvbnN0IGFyaWFUcmFuc2xhdGVkVGV4dCA9IHJlc291cmNlQnVuZGxlPy5nZXRUZXh0KFwiTV9NSUNST0NIQVJUX1RJVExFX0ZSQUdNRU5UX0hFQURFUl9NSUNST0NIQVJUX0xJTktfQVJJQVwiKTtcblx0XHRcdFx0dGl0bGVMaW5rUHJvcGVydGllcy5zaG93QXNMaW5rID0gc2hvd0xpbms7XG5cdFx0XHRcdHRpdGxlTGlua1Byb3BlcnRpZXMubGlua0FyaWFUZXh0ID0gYXJpYVRyYW5zbGF0ZWRUZXh0O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PFRpdGxlTGlua1xuXHRcdFx0XHRcdHsuLi50aXRsZUxpbmtQcm9wZXJ0aWVzfVxuXHRcdFx0XHRcdGxpbmtQcmVzcz17KHByZXNzRXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInRpdGxlUHJlc3NcIiwgcHJlc3NFdmVudCk7XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgbWljcm9jaGFydCBjb250ZW50LlxuXHQgKiBAcmV0dXJucyBNaWNyb0NoYXJ0Q29udGFpbmVyIHdoaWNoIHdpbGwgY29udGFpbiBUaXRsZSBhbmQgbWljcm8gY2hhcnQgY29udGVudCBmb3IgZWFjaCBvZiB0aGUgbWljcm9jaGFydC5cblx0ICovXG5cdGNyZWF0ZUNvbnRlbnQoKTogTWljcm9DaGFydENvbnRhaW5lciB7XG5cdFx0Y29uc3QgaXNWYWxpZENoYXJ0VHlwZSA9IFtcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0J1bGxldFwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvRG9udXRcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL1BpZVwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQmFyU3RhY2tlZFwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQXJlYVwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQ29sdW1uXCIsXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9CYXJcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0xpbmVcIlxuXHRcdF0uaW5jbHVkZXModGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlKTtcblx0XHRpZiAoIWlzVmFsaWRDaGFydFR5cGUpIHtcblx0XHRcdHJldHVybiA8VGV4dCB0ZXh0PVwiVGhpcyBjaGFydCB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQuIE90aGVyIFR5cGVzIHlldCB0byBiZSBpbXBsZW1lbnRlZC4uXCIgLz47XG5cdFx0fSBlbHNlIGlmICh0aGlzLmlzQW5hbHl0aWNzKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8Q29uZGl0aW9uYWxXcmFwcGVyXG5cdFx0XHRcdFx0Y29uZGl0aW9uPXtjb21waWxlRXhwcmVzc2lvbihvcihub3QocGF0aEluTW9kZWwoXCJAJHVpNS5ub2RlLmlzRXhwYW5kZWRcIikpLCBlcXVhbChwYXRoSW5Nb2RlbChcIkAkdWk1Lm5vZGUubGV2ZWxcIiksIDApKSl9XG5cdFx0XHRcdFx0dmlzaWJsZT17Z2V0RXhwcmVzc2lvbkZvck1lYXN1cmVVbml0KHRoaXMuX2RhdGFQb2ludC5WYWx1ZS4kdGFyZ2V0KX1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRjb250ZW50VHJ1ZTogdGhpcy5jcmVhdGVDaGFydENvbnRlbnQoKSxcblx0XHRcdFx0XHRcdGNvbnRlbnRGYWxzZTogPFRleHQgdGV4dD1cIipcIj48L1RleHQ+XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9Db25kaXRpb25hbFdyYXBwZXI+XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jcmVhdGVDaGFydENvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVDaGFydENvbnRlbnQoKTogTWljcm9DaGFydENvbnRhaW5lciB7XG5cdFx0Y29uc3QgbWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMgPSB7XG5cdFx0XHQuLi50aGlzLmdldE1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzKCksXG5cdFx0XHRiaW5kaW5nOiB0aGlzLl9iaW5kaW5nXG5cdFx0fTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PE1pY3JvQ2hhcnRDb250YWluZXIgey4uLm1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzfT5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRtaWNyb0NoYXJ0VGl0bGU6ICF0aGlzLnNob3dPbmx5Q2hhcnQgPyB0aGlzLmNyZWF0ZVRpdGxlKG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmNoYXJ0VGl0bGUpIDogdW5kZWZpbmVkXG5cdFx0XHRcdH19XG5cdFx0XHQ8L01pY3JvQ2hhcnRDb250YWluZXI+XG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BcUNLQSxjQUFjLDBCQUFkQSxjQUFjO0lBQ2xCO0FBQ0Q7QUFDQTtJQUhLQSxjQUFjO0lBTWxCO0FBQ0Q7QUFDQTtJQVJLQSxjQUFjO0lBV2xCO0FBQ0Q7QUFDQTtJQWJLQSxjQUFjO0lBQUEsT0FBZEEsY0FBYztFQUFBLEVBQWRBLGNBQWM7RUFpQm5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBckJBLElBeUJxQkMsVUFBVSxJQUFBQyxJQUFBLEdBSDlCQyxjQUFjLENBQUMsMEJBQTBCLEVBQUU7SUFDM0NDLFdBQVcsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLDJDQUEyQztFQUMxRyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU9BQyxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FPREYsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRSxRQUFRO0lBQ2RFLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBT0RKLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQUksS0FBQSxHQU1ETCxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFLLEtBQUEsR0FNRE4sUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBTSxLQUFBLEdBTzVCUCxRQUFR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
|
|
603
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZpZ2F0aW9uVHlwZSIsIk1pY3JvQ2hhcnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJyZXR1cm5UeXBlcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJyZXF1aXJlZCIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiYWxsb3dlZFZhbHVlcyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJldmVudCIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsInNldHRpbmdzIiwib3RoZXJzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseVNldHRpbmdzIiwibVNldHRpbmdzIiwib1Njb3BlIiwiX2RvTm90Q3JlYXRlT25OdWxsQ29udGV4dCIsIl92aXNpYmlsaXR5Q2hlY2siLCJnZXRTb3J0T3JkZXIiLCJzb3J0aW5nUHJvcHMiLCJtYXAiLCJzb3J0aW5nUHJvcCIsIlByb3BlcnR5IiwidmFsdWUiLCJEZXNjZW5kaW5nIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiJFR5cGUiLCJzZXRQcm9wZXJ0eSIsImtleSIsInN1cHByZXNzSW52YWxpZGF0ZSIsIl9hcHBseWluZ1NldHRpbmdzIiwidW5kZWZpbmVkIiwiT2JqZWN0Iiwia2V5cyIsImdldE1ldGFkYXRhIiwiZ2V0UHJvcGVydGllcyIsImluY2x1ZGVzIiwiY29udGVudCIsImRlc3Ryb3kiLCJjcmVhdGVDb250ZW50IiwiY3JlYXRlTWljcm9DaGFydCIsImNsb25lIiwiaWRTdWZmaXgiLCJsb2NhbElkcyIsImNsb25lZE1pY3JvQ2hhcnQiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiX293bmVyQ29tcG9uZW50Iiwib3duZXIiLCJfZ2V0T3duZXIiLCJjb250ZXh0UGF0aCIsInByZXByb2Nlc3NvckNvbnRleHQiLCJmdWxsQ29udGV4dFBhdGgiLCJvZGF0YU1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsIl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoIiwibWV0YVBhdGgiLCJ0YXJnZXRPYmplY3QiLCJ0ZXJtIiwiU29ydE9yZGVyIiwibGVuZ3RoIiwiX3NvcnRPcmRlciIsIlZpc3VhbGl6YXRpb25zIiwiZ2V0VGFyZ2V0TmF2aWdhdGlvblBhdGgiLCJfY2hhcnRUYXJnZXQiLCJfbWVhc3VyZURhdGFQYXRoIiwiZW5oYW5jZURhdGFNb2RlbFBhdGgiLCJNZWFzdXJlcyIsIk1pY3JvQ2hhcnRIZWxwZXIiLCJzaG91bGRSZW5kZXJNaWNyb0NoYXJ0IiwiX2RhdGFQb2ludCIsIk1lYXN1cmVBdHRyaWJ1dGVzIiwiRGF0YVBvaW50IiwiJHRhcmdldCIsIl90YXJnZXROYXZpZ2F0aW9uUGF0aCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0Iiwic2hvd09ubHlDaGFydCIsImxvZ1dhcm5pbmciLCJjaGFydE1hcCIsInR5cGUxIiwiQ2hhcnRUeXBlIiwiQ2hhcnRDb21wb25lbnQiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwiZGVmYXVsdCIsIm1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJnZXRNaWNyb0NoYXJ0QWdncmVnYXRpb25zIiwiaXNBbmFseXRpY3MiLCJnZXRBZ2dyZWdhdGlvbiIsInNldEFnZ3JlZ2F0aW9uIiwiX2pzeCIsImdldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzIiwiY2hpbGRyZW4iLCJlcnJvck9iamVjdCIsIlZhbHVlIiwibWljcm9DaGFydFByb3BlcnRpZXMiLCJzaXplIiwiaGlkZU9uTm9EYXRhIiwiZGF0YVBvaW50UGF0aCIsImdldEFnZ3JlZ2F0aW9uRm9yTWljcm9jaGFydCIsImdldE9iamVjdCIsIkRpbWVuc2lvbnMiLCJnZXRCdWxsZXRNaWNyb0NoYXJ0UHJvcGVydGllcyIsImdldFJhZGlhbE1pY3JvQ2hhcnRQcm9wZXJ0aWVzIiwiZ2V0SGFydmV5TWljcm9DaGFydFByb3BlcnRpZXMiLCJiYXJzIiwiY29sdW1ucyIsIm1heFZhbHVlIiwiTWF4aW11bVZhbHVlIiwiY29tcGlsZUV4cHJlc3Npb24iLCJjb25zdGFudCIsInZhbHVlT2YiLCJtaW5WYWx1ZSIsIk1pbmltdW1WYWx1ZSIsImNvbG9yUGFsZXR0ZSIsImdldENvbG9yUGFsZXR0ZUZvck1pY3JvQ2hhcnQiLCJkYXRhIiwic2hvd1RocmVzaG9sZExpbmUiLCJjcml0aWNhbGl0eUV4cHJlc3Npb25Gb3JNaWNyb2NoYXJ0IiwiQ3JpdGljYWxpdHkiLCJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCIsImdldEJ1bGxldE1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJnZXRTdGFja01pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJnZXRIYXJ2ZXlNaWNyb0NoYXJ0QWdncmVnYXRpb25zIiwiZ2V0Q29tcGFyaXNvbk1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJnZXRBcmVhTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldENvbHVtbk1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJnZXRMaW5lTWljcm9DaGFydEFnZ3JhZ2F0aW9ucyIsImNyZWF0ZU1pY3JvQ2hhcnRJZCIsImNoYXJ0VHlwZSIsImNoYXJ0SURQcmVmaXgiLCJjcmVhdGVJZCIsImdldE1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzIiwibWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMiLCJjaGFydFRpdGxlIiwidGl0bGUiLCJUaXRsZSIsImNoYXJ0RGVzY3JpcHRpb24iLCJkZXNjcmlwdGlvbiIsIkRlc2NyaXB0aW9uIiwiX2JpbmRpbmciLCJnZXRCaW5kaW5nRXhwcmVzc2lvbkZvck1pY3JvY2hhcnQiLCJ1b21QYXRoIiwiZ2V0VU9NUGF0aEZvck1pY3JvY2hhcnQiLCJpZCIsImNoYXJ0c1dpdGhWaXNpYmxlUHJvcGVydHkiLCJ2aXNpYmxlIiwibm90IiwiaWZFbHNlIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiYW5ub3RhdGlvbnMiLCJVSSIsIkhpZGRlbiIsImRhdGFQb2ludFF1YWxpZmllcnMiLCJnZXREYXRhUG9pbnRRdWFsaWZpZXJzRm9yTWljcm9DaGFydCIsIm1lYXN1cmVzIiwibmFtZSIsImdldE1lYXN1cmVQcm9wZXJ0eVBhdGhzIiwidGFyZ2V0RW50aXR5VHlwZSIsImdldERhdGFQb2ludFF1YWxpZmllcnNGb3JNZWFzdXJlcyIsImRpbWVuc2lvbkRhdGFQYXRoIiwiZGltZW5zaW9uIiwiQ29tbW9uIiwiVGV4dCIsInBhdGgiLCJtZWFzdXJlUHJlY2lzaW9uIiwicHJlY2lzaW9uIiwibWVhc3VyZVNjYWxlIiwiZ2V0TWVhc3VyZVNjYWxlRm9yTWljcm9DaGFydCIsImRpbWVuc2lvblByZWNpc2lvbiIsImNhbGVuZGFyUGF0dGVybiIsImdldENhbGVuZGFyUGF0dGVybiIsImNyZWF0ZVRpdGxlIiwidGl0bGVUZXh0IiwibG9jYWxMZWdhY3lUaXRsZUlkIiwiSUQiLCJnZW5lcmF0ZSIsInF1YWxpZmllciIsInZpZXdJZCIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0VmlldyIsImdldElkIiwibGVnYWN5VGl0bGVJZCIsInRpdGxlTGlua1Byb3BlcnRpZXMiLCJ0ZXh0IiwicmVzb3VyY2VCdW5kbGUiLCJMaWIiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsIm5hdmlnYXRpb25UeXBlIiwiYXJpYVRyYW5zbGF0ZWRUZXh0IiwiZ2V0VGV4dCIsInNob3dBc0xpbmsiLCJsaW5rQXJpYVRleHQiLCJzaG93TGluayIsIkNvbW1vbkhlbHBlciIsImdldEhlYWRlckRhdGFQb2ludExpbmtWaXNpYmlsaXR5IiwiVGl0bGVMaW5rIiwibGlua1ByZXNzIiwicHJlc3NFdmVudCIsImZpcmVFdmVudCIsImlzVmFsaWRDaGFydFR5cGUiLCJDb25kaXRpb25hbFdyYXBwZXIiLCJjb25kaXRpb24iLCJvciIsInBhdGhJbk1vZGVsIiwiZXF1YWwiLCJnZXRFeHByZXNzaW9uRm9yTWVhc3VyZVVuaXQiLCJjb250ZW50VHJ1ZSIsImNyZWF0ZUNoYXJ0Q29udGVudCIsImNvbnRlbnRGYWxzZSIsImJpbmRpbmciLCJNaWNyb0NoYXJ0Q29udGFpbmVyIiwibWljcm9DaGFydFRpdGxlIiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsIk5vbmUiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1pY3JvQ2hhcnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBQcm9wZXJ0eSwgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IE1lYXN1cmUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0FuYWx5dGljc1wiO1xuaW1wb3J0IHR5cGUgeyBTb3J0T3JkZXJUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCB7IENvbW1vbkFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5QW5ub3RhdGlvbnMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0VkbV9UeXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhUG9pbnQsIERhdGFQb2ludFR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBDaGFydFR5cGUsIFVJQW5ub3RhdGlvblRlcm1zLCB0eXBlIENoYXJ0LCB0eXBlIFByZXNlbnRhdGlvblZhcmlhbnQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgY29uc3RhbnQsIGVxdWFsLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIGlmRWxzZSwgbm90LCBvciwgcGF0aEluTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2sgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tcIjtcbmltcG9ydCAqIGFzIElEIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0NyaXRpY2FsaXR5Rm9ybWF0dGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZW5oYW5jZURhdGFNb2RlbFBhdGgsIGdldFRhcmdldE5hdmlnYXRpb25QYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0RXhwcmVzc2lvbkZvck1lYXN1cmVVbml0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29sdW1uTWljcm9DaGFydFNldHRpbmdzIH0gZnJvbSBcInNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0NvbHVtbk1pY3JvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbXBhcmlzb25NaWNyb0NoYXJ0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQ29tcGFyaXNvbk1pY3JvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgJExpbmVNaWNyb0NoYXJ0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvTGluZU1pY3JvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgJFN0YWNrZWRCYXJNaWNyb0NoYXJ0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvU3RhY2tlZEJhck1pY3JvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgJE1hbmFnZWRPYmplY3RTZXR0aW5ncywgQWdncmVnYXRpb25CaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwiLi9Db21tb25IZWxwZXJcIjtcbmltcG9ydCBDb25kaXRpb25hbFdyYXBwZXIgZnJvbSBcIi4vY29udHJvbHMvQ29uZGl0aW9uYWxXcmFwcGVyXCI7XG5pbXBvcnQgVGl0bGVMaW5rIGZyb20gXCIuL2ludGVybmFsL1RpdGxlTGlua1wiO1xuaW1wb3J0IE1pY3JvQ2hhcnRDb250YWluZXIgZnJvbSBcIi4vbWljcm9jaGFydC9NaWNyb0NoYXJ0Q29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSB7IE1pY3JvQ2hhcnRBZ2dyZWdhdGlvbiwgTWljcm9DaGFydFNldHRpbmdzIH0gZnJvbSBcIi4vbWljcm9jaGFydC9NaWNyb0NoYXJ0SGVscGVyXCI7XG5pbXBvcnQgTWljcm9DaGFydEhlbHBlciBmcm9tIFwiLi9taWNyb2NoYXJ0L01pY3JvQ2hhcnRIZWxwZXJcIjtcblxudHlwZSBFcnJvck9iamVjdFR5cGUgPSB7XG5cdERhdGFQb2ludF9WYWx1ZT86IHVua25vd247XG59O1xuXG5lbnVtIE5hdmlnYXRpb25UeXBlIHtcblx0LyoqXG5cdCAqIEZvciBFeHRlcm5hbCBOYXZpZ2F0aW9uXG5cdCAqL1xuXHRFeHRlcm5hbCA9IFwiRXh0ZXJuYWxcIixcblxuXHQvKipcblx0ICogRm9yIEluLVBhZ2UgTmF2aWdhdGlvblxuXHQgKi9cblx0SW5QYWdlID0gXCJJblBhZ2VcIixcblxuXHQvKipcblx0ICogRm9yIE5vIE5hdmlnYXRpb25cblx0ICovXG5cdE5vbmUgPSBcIk5vbmVcIlxufVxuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIGEgTWljcm9DaGFydCBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9idWlsZGluZ0Jsb2Nrcy9taWNyb2NoYXJ0LyBPdmVydmlldyBvZiBNaWNybyBDaGFydCBCdWlsZGluZyBCbG9ja31cbiAqIDxicj5cbiAqIFVzdWFsbHksIGEgY29udGV4dFBhdGggYW5kIG1ldGFQYXRoIGlzIGV4cGVjdGVkLlxuICpcbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6TWljcm9DaGFydCBpZD1cIk15TWljcm9DaGFydFwiIGNvbnRleHRQYXRoPVwiL1Jvb3RFbnRpdHlcIiBtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqICA8cHJlPlxuICogc2FwLnVpLnJlcXVpcmUoW1wic2FwL2ZlL21hY3Jvcy9NaWNyb0NoYXJ0XCJdLCBmdW5jdGlvbihNaWNyb0NoYXJ0KSB7XG4gKiBcdCAuLi5cbiAqIFx0IG5ldyBNaWNyb0NoYXJ0KFwibXlNaWNyb0NoYXJ0XCIsIHttZXRhUGF0aDpcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwifSlcbiAqIH0pXG4gKiA8L3ByZT5cbiAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLk1pY3JvQ2hhcnRcbiAqIEB1aTUtbWV0YW1vZGVsXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS45My4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuTWljcm9DaGFydFwiLCB7XG5cdHJldHVyblR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLm1pY3JvY2hhcnQuTWljcm9DaGFydENvbnRhaW5lclwiLCBcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuQ29uZGl0aW9uYWxXcmFwcGVyXCJdXG59KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWljcm9DaGFydCBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8TWljcm9DaGFydENvbnRhaW5lcj4ge1xuXHQvKipcblx0ICogVG8gY29udHJvbCB0aGUgcmVuZGVyaW5nIG9mIFRpdGxlLCBTdWJ0aXRsZSBhbmQgQ3VycmVuY3kgTGFiZWxzLiBXaGVuIHRoZSBzaXplIGlzIHhzIHRoZW4gd2UgZG9cblx0ICogbm90IHNlZSB0aGUgaW5uZXIgbGFiZWxzIG9mIHRoZSBNaWNyb0NoYXJ0IGFzIHdlbGwuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0cHVibGljIHNob3dPbmx5Q2hhcnQgPSBmYWxzZTtcblxuXHQvKipcblx0ICogTWV0YWRhdGEgcGF0aCB0byB0aGUgIE1pY3JvQ2hhcnQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRwdWJsaWMgbWV0YVBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIGNvbnRleHQgcGF0aCB0byB0aGUgTWljcm9DaGFydC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogVHlwZSBvZiBuYXZpZ2F0aW9uLCB0aGF0IGlzLCBFeHRlcm5hbCBvciBJblBhZ2Vcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRuYXZpZ2F0aW9uVHlwZT86IE5hdmlnYXRpb25UeXBlID0gTmF2aWdhdGlvblR5cGUuTm9uZTtcblxuXHQvKipcblx0ICogQmF0Y2ggZ3JvdXAgSUQgYWxvbmcgd2l0aCB3aGljaCB0aGlzIGNhbGwgc2hvdWxkIGJlIGdyb3VwZWQuXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGJhdGNoR3JvdXBJZD86IHN0cmluZztcblxuXHQvKipcblx0ICogU2l6ZSBvZiB0aGUgTWljcm9DaGFydFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJYU1wiLCBcIlNcIiwgXCJNXCIsIFwiTFwiXSB9KVxuXHRzaXplPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTaG93IGJsYW5rIHNwYWNlIGluIGNhc2UgdGhlcmUgaXMgbm8gZGF0YSBpbiB0aGUgY2hhcnRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0aGlkZU9uTm9EYXRhPzogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dGl0bGUgPSBcIlwiO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZGVzY3JpcHRpb24gPSBcIlwiO1xuXG5cdEBldmVudCgpXG5cdHRpdGxlUHJlc3MhOiBGdW5jdGlvbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdF9jaGFydFRhcmdldCE6IENoYXJ0O1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0X2RhdGFQb2ludCE6IERhdGFQb2ludDtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdF90YXJnZXROYXZpZ2F0aW9uUGF0aCE6IENvbnRleHQgfCB1bmRlZmluZWQ7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGghOiBEYXRhTW9kZWxPYmplY3RQYXRoPENoYXJ0IHwgUHJlc2VudGF0aW9uVmFyaWFudD4gfCB1bmRlZmluZWQ7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRfYmluZGluZyE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdF9zb3J0T3JkZXI/OiBTb3J0T3JkZXJUeXBlW107XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfbWVhc3VyZURhdGFQYXRoPzogRGF0YU1vZGVsT2JqZWN0UGF0aDxNZWFzdXJlPjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRpc0FuYWx5dGljcz86IGJvb2xlYW47XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiAkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPE1pY3JvQ2hhcnQ+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8TWljcm9DaGFydD4pIHtcblx0XHRzdXBlcihzZXR0aW5ncywgb3RoZXJzKTtcblx0fVxuXG5cdG92ZXJyaWRlIGFwcGx5U2V0dGluZ3MobVNldHRpbmdzOiAkTWFuYWdlZE9iamVjdFNldHRpbmdzLCBvU2NvcGU/OiBvYmplY3QpOiB0aGlzIHtcblx0XHR0aGlzLl9kb05vdENyZWF0ZU9uTnVsbENvbnRleHQgPSB0cnVlO1xuXHRcdHRoaXMuX3Zpc2liaWxpdHlDaGVjayA9IHRydWU7XG5cdFx0cmV0dXJuIHN1cGVyLmFwcGx5U2V0dGluZ3MobVNldHRpbmdzLCBvU2NvcGUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHNvcnRPcmRlciBmb3IgdGhlIG1pY3JvQ2hhcnQgYXMgbWVudGlvbmVkIGluIHRoZSBQcmVzZW50YXRpb25WYXJpYW50LlxuXHQgKiBAcGFyYW0gc29ydGluZ1Byb3BzIFNvcnRlcnMgZnJvbSBQcmVzZW50YXRpb25WYXJpYW50LlxuXHQgKiBAcmV0dXJucyBTb3J0T3JkZXJcblx0ICovXG5cdGdldFNvcnRPcmRlcihzb3J0aW5nUHJvcHM6IFNvcnRPcmRlclR5cGVbXSk6IFNvcnRPcmRlclR5cGVbXSB7XG5cdFx0cmV0dXJuIHNvcnRpbmdQcm9wcy5tYXAoKHNvcnRpbmdQcm9wOiBTb3J0T3JkZXJUeXBlKSA9PiB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRQcm9wZXJ0eTogc29ydGluZ1Byb3AuUHJvcGVydHk/LnZhbHVlIGFzIHVua25vd24gYXMgUHJvcGVydHlQYXRoLFxuXHRcdFx0XHREZXNjZW5kaW5nOiBzb3J0aW5nUHJvcC5EZXNjZW5kaW5nIGFzIGJvb2xlYW4gfCB1bmRlZmluZWQsXG5cdFx0XHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogXCJcIixcblx0XHRcdFx0JFR5cGU6IENvbW1vbkFubm90YXRpb25UeXBlcy5Tb3J0T3JkZXJUeXBlXG5cdFx0XHR9O1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGtleSB3aXRoIHRoZSBnaXZlbiB2YWx1ZSBmb3IgTWljcm9DaGFydC5cblx0ICogQHBhcmFtIGtleSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gc2V0XG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0IHRoZSBwcm9wZXJ0eSB0b1xuXHQgKiBAcGFyYW0gc3VwcHJlc3NJbnZhbGlkYXRlICBJZiB0cnVlLCB0aGUgbWFuYWdlZCBvYmplY3QgaXMgbm90IG1hcmtlZCBhcyBjaGFuZ2VkXG5cdCAqIEByZXR1cm5zIE1pY3JvQ2hhcnRcblx0ICovXG5cdHNldFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgYm9vbGVhbiwgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmICghdGhpcy5fYXBwbHlpbmdTZXR0aW5ncyAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIE9iamVjdC5rZXlzKHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRQcm9wZXJ0aWVzKCkpLmluY2x1ZGVzKGtleSkpIHtcblx0XHRcdHN1cGVyLnNldFByb3BlcnR5KGtleSwgdmFsdWUsIHRydWUpO1xuXHRcdFx0aWYgKHRoaXMuY29udGVudCkge1xuXHRcdFx0XHR0aGlzLmNvbnRlbnQuZGVzdHJveSgpO1xuXHRcdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHRcdFx0dGhpcy5jcmVhdGVNaWNyb0NoYXJ0KCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLnNldFByb3BlcnR5KGtleSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIE92ZXJyaWRlcyB0aGUgY2xvbmUgbWV0aG9kIG9mIHRoZSBVSTUgY29udHJvbCB0byBlbnN1cmUgdGhhdCB0aGUgc3VpdGUgbWljcm8gY2hhcnQgaXMgY3JlYXRlZCBhc3luY2hyb25vdXNseSBvbiB0aGUgY2xvbmUuXG5cdCAqXG5cdCAqIENsb25lIGlzIGEgVUk1IGNvcmUgQ29udHJvbCBtZXRob2QsIHdoaWNoIGlzIG5vdCBhc3luYyBhbmQgaXMgY2FsbGVkIGluIGEgc3luYyBtYW5uZXIgdGhyb3VnaG91dCBVSTUuXG5cdCAqIEhlbmNlIHdlIG5lZWQgdG8gY3JlYXRlIHRoZSBjaGFydCBpbiBhIGZpcmUgYW5kIGZvcmdldCBmYXNoaW9uLlxuXHQgKiBAcGFyYW0gaWRTdWZmaXggQSBzdWZmaXggdG8gYmUgYXBwZW5kZWQgdG8gdGhlIGNsb25lZCBlbGVtZW50IGlkXG5cdCAqIEBwYXJhbSBsb2NhbElkcyBBbiBhcnJheSBvZiBsb2NhbCBJRHMgd2l0aGluIHRoZSBjbG9uZWQgaGllcmFyY2h5IChpbnRlcm5hbGx5IHVzZWQpXG5cdCAqIEByZXR1cm5zIFRoZSByZWZlcmVuY2UgdG8gdGhlIG5ld2x5IGNyZWF0ZSBjbG9uZVxuXHQgKi9cblx0Y2xvbmUoaWRTdWZmaXg/OiBzdHJpbmcgfCB1bmRlZmluZWQsIGxvY2FsSWRzPzogc3RyaW5nW10pOiB0aGlzIHtcblx0XHRjb25zdCBjbG9uZWRNaWNyb0NoYXJ0ID0gc3VwZXIuY2xvbmUoaWRTdWZmaXgsIGxvY2FsSWRzKTtcblx0XHRjbG9uZWRNaWNyb0NoYXJ0LmNyZWF0ZU1pY3JvQ2hhcnQoKTtcblx0XHRyZXR1cm4gY2xvbmVkTWljcm9DaGFydDtcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdFx0dGhpcy5jb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGggPz8gb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/LmZ1bGxDb250ZXh0UGF0aDtcblx0XHRcdGNvbnN0IG9kYXRhTWV0YU1vZGVsID0gb3duZXI/LmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPENoYXJ0IHwgUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0XHRcdHRoaXMubWV0YVBhdGgsXG5cdFx0XHRcdHRoaXMuY29udGV4dFBhdGhcblx0XHRcdCk7XG5cdFx0XHRpZiAodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldE9iamVjdD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudCkge1xuXHRcdFx0XHRpZiAoKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5Tb3J0T3JkZXIgYXMgdW5rbm93biBhcyBTb3J0T3JkZXJUeXBlW10gfCB1bmRlZmluZWQpPy5sZW5ndGgpIHtcblx0XHRcdFx0XHR0aGlzLl9zb3J0T3JkZXIgPSB0aGlzLmdldFNvcnRPcmRlcih0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuU29ydE9yZGVyKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8Q2hhcnQ+KFxuXHRcdFx0XHRcdGAke3RoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5WaXN1YWxpemF0aW9uc1swXS52YWx1ZX1gLFxuXHRcdFx0XHRcdGdldFRhcmdldE5hdmlnYXRpb25QYXRoKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoKSArIFwiL1wiXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgpIHtcblx0XHRcdFx0aWYgKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudCkge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdCh0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuU29ydE9yZGVyIGFzIHVua25vd24gYXMgU29ydE9yZGVyVHlwZVtdIHwgdW5kZWZpbmVkKT8ubGVuZ3RoICE9XG5cdFx0XHRcdFx0XHRudWxsXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9zb3J0T3JkZXIgPSB0aGlzLmdldFNvcnRPcmRlcih0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuU29ydE9yZGVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQgPSB0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgQ2hhcnQ7XG5cdFx0XHRcdHRoaXMuX21lYXN1cmVEYXRhUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPE1lYXN1cmU+KFxuXHRcdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Lk1lYXN1cmVzWzBdLnZhbHVlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChNaWNyb0NoYXJ0SGVscGVyLnNob3VsZFJlbmRlck1pY3JvQ2hhcnQodGhpcy5fY2hhcnRUYXJnZXQpKSB7XG5cdFx0XHRcdFx0dGhpcy5fZGF0YVBvaW50ID0gdGhpcy5fY2hhcnRUYXJnZXQ/Lk1lYXN1cmVBdHRyaWJ1dGVzWzBdPy5EYXRhUG9pbnQ/LiR0YXJnZXQgYXMgRGF0YVBvaW50O1xuXHRcdFx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KFxuXHRcdFx0XHRcdFx0Z2V0VGFyZ2V0TmF2aWdhdGlvblBhdGgodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgpXG5cdFx0XHRcdFx0KSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXG5cdFx0XHRcdFx0dGhpcy5zaG93T25seUNoYXJ0ID0gdHlwZW9mIHRoaXMuc2hvd09ubHlDaGFydCA9PT0gXCJzdHJpbmdcIiA/IHRoaXMuc2hvd09ubHlDaGFydCA9PT0gXCJ0cnVlXCIgOiB0aGlzLnNob3dPbmx5Q2hhcnQ7XG5cdFx0XHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5jcmVhdGVNaWNyb0NoYXJ0KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5sb2dXYXJuaW5nKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRhc3luYyBjcmVhdGVNaWNyb0NoYXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGNoYXJ0TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuXHRcdFx0XCJVSS5DaGFydFR5cGUvQnVsbGV0XCI6IGBzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9CdWxsZXRNaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0RvbnV0XCI6IGBzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9SYWRpYWxNaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL1BpZVwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvSGFydmV5QmFsbE1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQmFyU3RhY2tlZFwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvU3RhY2tlZEJhck1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQ29sdW1uXCI6IGBzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9Db2x1bW5NaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0JhclwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQ29tcGFyaXNvbk1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvTGluZVwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvTGluZU1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQXJlYVwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQXJlYU1pY3JvQ2hhcnRgXG5cdFx0fTtcblxuXHRcdGNvbnN0IHR5cGUxID0gdGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlO1xuXHRcdGlmIChPYmplY3Qua2V5cyhjaGFydE1hcCkuaW5jbHVkZXModHlwZTEpKSB7XG5cdFx0XHRjb25zdCBDaGFydENvbXBvbmVudCA9IChhd2FpdCBpbXBvcnQoY2hhcnRNYXBbdHlwZTFdKSkuZGVmYXVsdDtcblx0XHRcdGNvbnN0IG1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMgPSBhd2FpdCB0aGlzLmdldE1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMoKTtcblx0XHRcdGlmICh0aGlzLmlzQW5hbHl0aWNzKSB7XG5cdFx0XHRcdCh0aGlzLmNvbnRlbnQ/LmdldEFnZ3JlZ2F0aW9uKFwiY29udGVudFRydWVcIikgYXMgTWljcm9DaGFydENvbnRhaW5lcikuc2V0QWdncmVnYXRpb24oXG5cdFx0XHRcdFx0XCJtaWNyb0NoYXJ0XCIsXG5cdFx0XHRcdFx0PENoYXJ0Q29tcG9uZW50IHsuLi50aGlzLmdldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKCl9PnttaWNyb0NoYXJ0QWdncmVnYXRpb25zfTwvQ2hhcnRDb21wb25lbnQ+XG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQodGhpcy5jb250ZW50IGFzIE1pY3JvQ2hhcnRDb250YWluZXIpLnNldEFnZ3JlZ2F0aW9uKFxuXHRcdFx0XHRcdFwibWljcm9DaGFydFwiLFxuXHRcdFx0XHRcdDxDaGFydENvbXBvbmVudCB7Li4udGhpcy5nZXRNaWNyb0NoYXJ0UHJvcGVydGllcygpfT57bWljcm9DaGFydEFnZ3JlZ2F0aW9uc308L0NoYXJ0Q29tcG9uZW50PlxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGxvZ1dhcm5pbmcoKTogdm9pZCB7XG5cdFx0Y29uc3QgZXJyb3JPYmplY3Q6IEVycm9yT2JqZWN0VHlwZSA9IHt9O1xuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5CdWxsZXQpIHtcblx0XHRcdGVycm9yT2JqZWN0W1wiRGF0YVBvaW50X1ZhbHVlXCJdID0gdGhpcy5fZGF0YVBvaW50Py5WYWx1ZSB8fCB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdE1pY3JvQ2hhcnRIZWxwZXIubG9nV2FybmluZyh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsIGVycm9yT2JqZWN0KTtcblx0fVxuXG5cdGdldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKCk6IFBhcnRpYWw8UHJvcGVydGllc09mPE1pY3JvQ2hhcnRTZXR0aW5ncz4+IHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgbWljcm9DaGFydFByb3BlcnRpZXM6IE1pY3JvQ2hhcnRTZXR0aW5ncyA9IHtcblx0XHRcdHNpemU6IHRoaXMuc2l6ZSxcblx0XHRcdGhpZGVPbk5vRGF0YTogdGhpcy5oaWRlT25Ob0RhdGFcblx0XHR9O1xuXG5cdFx0Y29uc3QgZGF0YVBvaW50UGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPERhdGFQb2ludFR5cGU+KFxuXHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPixcblx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5NZWFzdXJlQXR0cmlidXRlc1swXT8uRGF0YVBvaW50Py52YWx1ZVxuXHRcdCk7XG5cblx0XHRjb25zdCBtaWNyb0NoYXJ0QWdncmVnYXRpb25zID0gTWljcm9DaGFydEhlbHBlci5nZXRBZ2dyZWdhdGlvbkZvck1pY3JvY2hhcnQoXG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsXG5cdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KCksXG5cdFx0XHRkYXRhUG9pbnRQYXRoLFxuXHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8TWVhc3VyZT4sXG5cdFx0XHR0aGlzLl9zb3J0T3JkZXIgYXMgU29ydE9yZGVyVHlwZVtdLFxuXHRcdFx0KHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3QgYXMgQ2hhcnQpPy5EaW1lbnNpb25zPy5bMF0/LnZhbHVlLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cblx0XHRzd2l0Y2ggKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSkge1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CdWxsZXRcIjpcblx0XHRcdFx0bWljcm9DaGFydFByb3BlcnRpZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldEJ1bGxldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKG1pY3JvQ2hhcnRQcm9wZXJ0aWVzLCB0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvRG9udXRcIjpcblx0XHRcdFx0bWljcm9DaGFydFByb3BlcnRpZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldFJhZGlhbE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKG1pY3JvQ2hhcnRQcm9wZXJ0aWVzLCB0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9QaWVcIjpcblx0XHRcdFx0bWljcm9DaGFydFByb3BlcnRpZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldEhhcnZleU1pY3JvQ2hhcnRQcm9wZXJ0aWVzKG1pY3JvQ2hhcnRQcm9wZXJ0aWVzLCB0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CYXJTdGFja2VkXCI6XG5cdFx0XHRcdChtaWNyb0NoYXJ0UHJvcGVydGllcyBhcyAkU3RhY2tlZEJhck1pY3JvQ2hhcnRTZXR0aW5ncykuYmFycyA9IG1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMgYXMgdW5rbm93biBhcyBBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9Db2x1bW5cIjpcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRDb2x1bW5NaWNyb0NoYXJ0U2V0dGluZ3MpLmNvbHVtbnMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldEFnZ3JlZ2F0aW9uRm9yTWljcm9jaGFydChcblx0XHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsXG5cdFx0XHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdCgpLFxuXHRcdFx0XHRcdGRhdGFQb2ludFBhdGgsXG5cdFx0XHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpLFxuXHRcdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5EaW1lbnNpb25zPy5bMF0sXG5cdFx0XHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8TWVhc3VyZT4sXG5cdFx0XHRcdFx0dGhpcy5fc29ydE9yZGVyIGFzIFNvcnRPcmRlclR5cGVbXSxcblx0XHRcdFx0XHQodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldE9iamVjdCBhcyBDaGFydCk/LkRpbWVuc2lvbnM/LlswXT8udmFsdWUsXG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpIGFzIEFnZ3JlZ2F0aW9uQmluZGluZ0luZm87XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL0JhclwiOlxuXHRcdFx0XHQobWljcm9DaGFydFByb3BlcnRpZXMgYXMgJENvbXBhcmlzb25NaWNyb0NoYXJ0U2V0dGluZ3MpLm1heFZhbHVlID0gdGhpcy5fZGF0YVBvaW50Lk1heGltdW1WYWx1ZVxuXHRcdFx0XHRcdD8gY29tcGlsZUV4cHJlc3Npb24oY29uc3RhbnQodGhpcy5fZGF0YVBvaW50Lk1heGltdW1WYWx1ZT8udmFsdWVPZigpKSlcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRDb21wYXJpc29uTWljcm9DaGFydFNldHRpbmdzKS5taW5WYWx1ZSA9IHRoaXMuX2RhdGFQb2ludC5NaW5pbXVtVmFsdWVcblx0XHRcdFx0XHQ/IGNvbXBpbGVFeHByZXNzaW9uKGNvbnN0YW50KHRoaXMuX2RhdGFQb2ludC5NaW5pbXVtVmFsdWU/LnZhbHVlT2YoKSkpXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRcdChtaWNyb0NoYXJ0UHJvcGVydGllcyBhcyAkQ29tcGFyaXNvbk1pY3JvQ2hhcnRTZXR0aW5ncykuY29sb3JQYWxldHRlID0gTWljcm9DaGFydEhlbHBlci5nZXRDb2xvclBhbGV0dGVGb3JNaWNyb0NoYXJ0KFxuXHRcdFx0XHRcdHRoaXMuX2RhdGFQb2ludFxuXHRcdFx0XHQpO1xuXHRcdFx0XHQobWljcm9DaGFydFByb3BlcnRpZXMgYXMgJENvbXBhcmlzb25NaWNyb0NoYXJ0U2V0dGluZ3MpLmRhdGEgPSBtaWNyb0NoYXJ0QWdncmVnYXRpb25zIGFzIHVua25vd24gYXMgQWdncmVnYXRpb25CaW5kaW5nSW5mbztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL0xpbmVcIjpcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRMaW5lTWljcm9DaGFydFNldHRpbmdzKS5zaG93VGhyZXNob2xkTGluZSA9IGZhbHNlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gbWljcm9DaGFydFByb3BlcnRpZXM7XG5cdH1cblxuXHRhc3luYyBnZXRNaWNyb0NoYXJ0QWdncmVnYXRpb25zKCk6IFByb21pc2U8TWljcm9DaGFydEFnZ3JlZ2F0aW9uIHwgdW5kZWZpbmVkPiB7XG5cdFx0Y29uc3QgY3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydCA9IHRoaXMuX2RhdGFQb2ludC5Dcml0aWNhbGl0eVxuXHRcdFx0PyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCh0aGlzLl9kYXRhUG9pbnQpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQnVsbGV0KSB7XG5cdFx0XHRyZXR1cm4gTWljcm9DaGFydEhlbHBlci5nZXRCdWxsZXRNaWNyb0NoYXJ0QWdncmVnYXRpb25zKHRoaXMuX2RhdGFQb2ludCwgY3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5CYXJTdGFja2VkKSB7XG5cdFx0XHRyZXR1cm4gTWljcm9DaGFydEhlbHBlci5nZXRTdGFja01pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMoXG5cdFx0XHRcdHRoaXMuX2RhdGFQb2ludCxcblx0XHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoLFxuXHRcdFx0XHRjcml0aWNhbGl0eUV4cHJlc3Npb25Gb3JNaWNyb2NoYXJ0XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuUGllKSB7XG5cdFx0XHRyZXR1cm4gTWljcm9DaGFydEhlbHBlci5nZXRIYXJ2ZXlNaWNyb0NoYXJ0QWdncmVnYXRpb25zKHRoaXMuX2RhdGFQb2ludCwgY3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5CYXIpIHtcblx0XHRcdHJldHVybiBNaWNyb0NoYXJ0SGVscGVyLmdldENvbXBhcmlzb25NaWNyb0NoYXJ0QWdncmVnYXRpb25zKFxuXHRcdFx0XHR0aGlzLl9kYXRhUG9pbnQsXG5cdFx0XHRcdGNyaXRpY2FsaXR5RXhwcmVzc2lvbkZvck1pY3JvY2hhcnQsXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQXJlYSkge1xuXHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0QXJlYU1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0LFxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPENoYXJ0IHwgUHJlc2VudGF0aW9uVmFyaWFudD4sXG5cdFx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoIGFzIENvbnRleHQsXG5cdFx0XHRcdHRoaXMuc2hvd09ubHlDaGFydFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkNvbHVtbikge1xuXHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0Q29sdW1uTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyhcblx0XHRcdFx0dGhpcy5fZGF0YVBvaW50LFxuXHRcdFx0XHRjcml0aWNhbGl0eUV4cHJlc3Npb25Gb3JNaWNyb2NoYXJ0LFxuXHRcdFx0XHR0aGlzLnNob3dPbmx5Q2hhcnRcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5MaW5lKSB7XG5cdFx0XHRpZiAodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggJiYgdGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGgpIHtcblx0XHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0TGluZU1pY3JvQ2hhcnRBZ2dyYWdhdGlvbnMoXG5cdFx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQsXG5cdFx0XHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGhcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y3JlYXRlTWljcm9DaGFydElkKGNoYXJ0VHlwZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgY2hhcnRJRFByZWZpeDtcblx0XHRzd2l0Y2ggKGNoYXJ0VHlwZSkge1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CdWxsZXRcIjpcblx0XHRcdFx0Y2hhcnRJRFByZWZpeCA9IFwiQnVsbGV0TWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvRG9udXRcIjpcblx0XHRcdFx0Y2hhcnRJRFByZWZpeCA9IFwiUmFkaWFsTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvUGllXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkhhcnZleUJhbGxNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CYXJTdGFja2VkXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIlN0YWNrZWRCYXJNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9BcmVhXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkFyZWFNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9Db2x1bW5cIjpcblx0XHRcdFx0Y2hhcnRJRFByZWZpeCA9IFwiQ29sdW1uTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQmFyXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkNvbXBhcmlzb25NaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9MaW5lXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkxpbmVNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5jcmVhdGVJZChjaGFydElEUHJlZml4KTtcblx0fVxuXG5cdGdldE1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzKCk6IFByb3BlcnRpZXNPZjxNaWNyb0NoYXJ0Q29udGFpbmVyPiB7XG5cdFx0Y29uc3QgbWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXM6IFByb3BlcnRpZXNPZjxNaWNyb0NoYXJ0Q29udGFpbmVyPiA9IHtcblx0XHRcdGNoYXJ0VGl0bGU6IHRoaXMudGl0bGUgfHwgKHRoaXMuX2NoYXJ0VGFyZ2V0LlRpdGxlPy52YWx1ZU9mKCkgYXMgc3RyaW5nKSB8fCB1bmRlZmluZWRcblx0XHR9O1xuXHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLnNob3dPbmx5Q2hhcnQgPSB0aGlzLnNob3dPbmx5Q2hhcnQ7XG5cdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuY2hhcnRUaXRsZSA9ICh0aGlzLl9jaGFydFRhcmdldC5UaXRsZSBhcyBzdHJpbmcpIHx8IHVuZGVmaW5lZDtcblx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5jaGFydERlc2NyaXB0aW9uID1cblx0XHRcdHRoaXMuZGVzY3JpcHRpb24gfHwgKHRoaXMuX2NoYXJ0VGFyZ2V0LkRlc2NyaXB0aW9uPy52YWx1ZU9mKCkgYXMgc3RyaW5nKSB8fCB1bmRlZmluZWQ7XG5cblx0XHR0aGlzLl9iaW5kaW5nID0gTWljcm9DaGFydEhlbHBlci5nZXRCaW5kaW5nRXhwcmVzc2lvbkZvck1pY3JvY2hhcnQoXG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsXG5cdFx0XHR0aGlzLl9tZWFzdXJlRGF0YVBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxNZWFzdXJlPixcblx0XHRcdHRoaXMsXG5cdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KCksXG5cdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIilcblx0XHQpO1xuXG5cdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMudW9tUGF0aCA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0VU9NUGF0aEZvck1pY3JvY2hhcnQoXG5cdFx0XHR0aGlzLnNob3dPbmx5Q2hhcnQsXG5cdFx0XHR0aGlzLl9tZWFzdXJlRGF0YVBhdGgsXG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGVcblx0XHQpO1xuXG5cdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuaWQgPSB0aGlzLmNyZWF0ZU1pY3JvQ2hhcnRJZCh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUpO1xuXG5cdFx0Y29uc3QgY2hhcnRzV2l0aFZpc2libGVQcm9wZXJ0eSA9IFtcIlVJLkNoYXJ0VHlwZS9CdWxsZXRcIiwgXCJVSS5DaGFydFR5cGUvUGllXCIsIFwiVUkuQ2hhcnRUeXBlL1JhZGlhbFwiXTtcblx0XHRpZiAoY2hhcnRzV2l0aFZpc2libGVQcm9wZXJ0eS5pbmNsdWRlcyh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUpKSB7XG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy52aXNpYmxlID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdG5vdChcblx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24odGhpcy5fY2hhcnRUYXJnZXQuTWVhc3VyZXNbMF0uJHRhcmdldD8uYW5ub3RhdGlvbnMuVUk/LkhpZGRlbiksXG5cdFx0XHRcdFx0XHRjb25zdGFudCh0cnVlKSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KGZhbHNlKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMudmlzaWJsZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQmFyU3RhY2tlZCkge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGF0YVBvaW50UXVhbGlmaWVycyA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0RGF0YVBvaW50UXVhbGlmaWVyc0Zvck1pY3JvQ2hhcnQoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5NZWFzdXJlQXR0cmlidXRlc1swXT8uRGF0YVBvaW50Py52YWx1ZSBhcyBzdHJpbmdcblx0XHRcdCkgYXMgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5BcmVhIHx8IHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkNvbHVtbikge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGF0YVBvaW50UXVhbGlmaWVycyA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0RGF0YVBvaW50UXVhbGlmaWVyc0Zvck1pY3JvQ2hhcnQoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5NZWFzdXJlQXR0cmlidXRlc1swXT8uRGF0YVBvaW50Py52YWx1ZSBhcyBzdHJpbmdcblx0XHRcdCkgYXMgdW5rbm93biBhcyBzdHJpbmdbXTtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLm1lYXN1cmVzID0gW1xuXHRcdFx0XHQodGhpcy5fbWVhc3VyZURhdGFQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KT8udGFyZ2V0T2JqZWN0Py5uYW1lIGFzIHN0cmluZ1xuXHRcdFx0XTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuTGluZSkge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMubWVhc3VyZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldE1lYXN1cmVQcm9wZXJ0eVBhdGhzKFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldCxcblx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMsXG5cdFx0XHRcdFwiTGluZVwiLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpIGFzIHN0cmluZ1tdO1xuXG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5kYXRhUG9pbnRRdWFsaWZpZXJzID0gTWljcm9DaGFydEhlbHBlci5nZXREYXRhUG9pbnRRdWFsaWZpZXJzRm9yTWVhc3VyZXMoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0LFxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aD8udGFyZ2V0RW50aXR5VHlwZS5hbm5vdGF0aW9ucyxcblx0XHRcdFx0XCJMaW5lXCIsXG5cdFx0XHRcdHRydWVcblx0XHRcdCkgYXMgc3RyaW5nW107XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQXJlYSB8fFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQ29sdW1uIHx8XG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5MaW5lXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBkaW1lbnNpb25EYXRhUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5Pihcblx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxDaGFydCB8IFByZXNlbnRhdGlvblZhcmlhbnQ+LFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldC5EaW1lbnNpb25zWzBdLnZhbHVlXG5cdFx0XHQpO1xuXG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5kaW1lbnNpb24gPSBkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0XG5cdFx0XHRcdD8gKGRpbWVuc2lvbkRhdGFQYXRoPy50YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5Db21tb24/LlRleHQgYXMgdW5rbm93biBhcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPik/LnBhdGhcblx0XHRcdFx0OiBkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py5uYW1lO1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMubWVhc3VyZVByZWNpc2lvbiA9IHRoaXMuX2RhdGFQb2ludD8uVmFsdWU/LiR0YXJnZXQ/LnByZWNpc2lvbjtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLm1lYXN1cmVTY2FsZSA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0TWVhc3VyZVNjYWxlRm9yTWljcm9DaGFydCh0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGltZW5zaW9uUHJlY2lzaW9uID0gZGltZW5zaW9uRGF0YVBhdGg/LnRhcmdldE9iamVjdD8ucHJlY2lzaW9uO1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuY2FsZW5kYXJQYXR0ZXJuID0gTWljcm9DaGFydEhlbHBlci5nZXRDYWxlbmRhclBhdHRlcm4oXG5cdFx0XHRcdGRpbWVuc2lvbkRhdGFQYXRoPy50YXJnZXRPYmplY3Q/LnR5cGUgYXMgc3RyaW5nLFxuXHRcdFx0XHRkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucyBhcyBQcm9wZXJ0eUFubm90YXRpb25zLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gbWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXM7XG5cdH1cblxuXHRjcmVhdGVUaXRsZSh0aXRsZVRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFRpdGxlTGluayB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRpdGxlVGV4dCkge1xuXHRcdFx0Ly8gVGhlIHRpdGxlIGhhZCB0aGlzIGlkIGluIHRlbXBsYXRlIHRpbWUgYW5kIHdlIG5lZWQgdG8gbWFpbnRhaW4gdGhlIHNhbWUgaWQuXG5cdFx0XHRjb25zdCBsb2NhbExlZ2FjeVRpdGxlSWQgPSBJRC5nZW5lcmF0ZShbXG5cdFx0XHRcdFwiZmVcIixcblx0XHRcdFx0XCJNaWNyb0NoYXJ0TGlua1wiLFxuXHRcdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIiksXG5cdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3Q/LnRlcm0sXG5cdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3Q/LnF1YWxpZmllclxuXHRcdFx0XSk7XG5cdFx0XHRjb25zdCB2aWV3SWQgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmdldFZpZXcoKS5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbGVnYWN5VGl0bGVJZCA9IGAke3ZpZXdJZH0tLSR7bG9jYWxMZWdhY3lUaXRsZUlkfWA7XG5cblx0XHRcdGNvbnN0IHRpdGxlTGlua1Byb3BlcnRpZXM6IFByb3BlcnRpZXNPZjxUaXRsZUxpbms+ID0ge1xuXHRcdFx0XHRpZDogbGVnYWN5VGl0bGVJZCxcblx0XHRcdFx0dGV4dDogdGl0bGVUZXh0XG5cdFx0XHR9O1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpO1xuXHRcdFx0aWYgKHRoaXMubmF2aWdhdGlvblR5cGUgPT09IFwiSW5QYWdlXCIpIHtcblx0XHRcdFx0Y29uc3QgYXJpYVRyYW5zbGF0ZWRUZXh0ID0gcmVzb3VyY2VCdW5kbGU/LmdldFRleHQoXCJUX0NPTU1PTl9IRUFERVJEUF9USVRMRV9MSU5LX0lOUEFHRV9BUklBXCIpO1xuXHRcdFx0XHR0aXRsZUxpbmtQcm9wZXJ0aWVzLnNob3dBc0xpbmsgPSB0cnVlO1xuXHRcdFx0XHR0aXRsZUxpbmtQcm9wZXJ0aWVzLmxpbmtBcmlhVGV4dCA9IGFyaWFUcmFuc2xhdGVkVGV4dDtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5uYXZpZ2F0aW9uVHlwZSA9PT0gXCJFeHRlcm5hbFwiKSB7XG5cdFx0XHRcdGNvbnN0IHNob3dMaW5rID0gQ29tbW9uSGVscGVyLmdldEhlYWRlckRhdGFQb2ludExpbmtWaXNpYmlsaXR5KGxvY2FsTGVnYWN5VGl0bGVJZCwgdHJ1ZSk7XG5cdFx0XHRcdGNvbnN0IGFyaWFUcmFuc2xhdGVkVGV4dCA9IHJlc291cmNlQnVuZGxlPy5nZXRUZXh0KFwiTV9NSUNST0NIQVJUX1RJVExFX0ZSQUdNRU5UX0hFQURFUl9NSUNST0NIQVJUX0xJTktfQVJJQVwiKTtcblx0XHRcdFx0dGl0bGVMaW5rUHJvcGVydGllcy5zaG93QXNMaW5rID0gc2hvd0xpbms7XG5cdFx0XHRcdHRpdGxlTGlua1Byb3BlcnRpZXMubGlua0FyaWFUZXh0ID0gYXJpYVRyYW5zbGF0ZWRUZXh0O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PFRpdGxlTGlua1xuXHRcdFx0XHRcdHsuLi50aXRsZUxpbmtQcm9wZXJ0aWVzfVxuXHRcdFx0XHRcdGxpbmtQcmVzcz17KHByZXNzRXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInRpdGxlUHJlc3NcIiwgcHJlc3NFdmVudCk7XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgbWljcm9jaGFydCBjb250ZW50LlxuXHQgKiBAcmV0dXJucyBNaWNyb0NoYXJ0Q29udGFpbmVyIHdoaWNoIHdpbGwgY29udGFpbiBUaXRsZSBhbmQgbWljcm8gY2hhcnQgY29udGVudCBmb3IgZWFjaCBvZiB0aGUgbWljcm9jaGFydC5cblx0ICovXG5cdGNyZWF0ZUNvbnRlbnQoKTogTWljcm9DaGFydENvbnRhaW5lciB7XG5cdFx0Y29uc3QgaXNWYWxpZENoYXJ0VHlwZSA9IFtcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0J1bGxldFwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvRG9udXRcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL1BpZVwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQmFyU3RhY2tlZFwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQXJlYVwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQ29sdW1uXCIsXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9CYXJcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0xpbmVcIlxuXHRcdF0uaW5jbHVkZXModGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlKTtcblx0XHRpZiAoIWlzVmFsaWRDaGFydFR5cGUpIHtcblx0XHRcdHJldHVybiA8VGV4dCB0ZXh0PVwiVGhpcyBjaGFydCB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQuIE90aGVyIFR5cGVzIHlldCB0byBiZSBpbXBsZW1lbnRlZC4uXCIgLz47XG5cdFx0fSBlbHNlIGlmICh0aGlzLmlzQW5hbHl0aWNzKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8Q29uZGl0aW9uYWxXcmFwcGVyXG5cdFx0XHRcdFx0Y29uZGl0aW9uPXtjb21waWxlRXhwcmVzc2lvbihvcihub3QocGF0aEluTW9kZWwoXCJAJHVpNS5ub2RlLmlzRXhwYW5kZWRcIikpLCBlcXVhbChwYXRoSW5Nb2RlbChcIkAkdWk1Lm5vZGUubGV2ZWxcIiksIDApKSl9XG5cdFx0XHRcdFx0dmlzaWJsZT17Z2V0RXhwcmVzc2lvbkZvck1lYXN1cmVVbml0KHRoaXMuX2RhdGFQb2ludC5WYWx1ZS4kdGFyZ2V0KX1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRjb250ZW50VHJ1ZTogdGhpcy5jcmVhdGVDaGFydENvbnRlbnQoKSxcblx0XHRcdFx0XHRcdGNvbnRlbnRGYWxzZTogPFRleHQgdGV4dD1cIipcIj48L1RleHQ+XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9Db25kaXRpb25hbFdyYXBwZXI+XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jcmVhdGVDaGFydENvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVDaGFydENvbnRlbnQoKTogTWljcm9DaGFydENvbnRhaW5lciB7XG5cdFx0Y29uc3QgbWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMgPSB7XG5cdFx0XHQuLi50aGlzLmdldE1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzKCksXG5cdFx0XHRiaW5kaW5nOiB0aGlzLl9iaW5kaW5nXG5cdFx0fTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PE1pY3JvQ2hhcnRDb250YWluZXIgey4uLm1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzfT5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRtaWNyb0NoYXJ0VGl0bGU6ICF0aGlzLnNob3dPbmx5Q2hhcnQgPyB0aGlzLmNyZWF0ZVRpdGxlKG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmNoYXJ0VGl0bGUpIDogdW5kZWZpbmVkXG5cdFx0XHRcdH19XG5cdFx0XHQ8L01pY3JvQ2hhcnRDb250YWluZXI+XG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BcUNLQSxjQUFjLDBCQUFkQSxjQUFjO0lBQ2xCO0FBQ0Q7QUFDQTtJQUhLQSxjQUFjO0lBTWxCO0FBQ0Q7QUFDQTtJQVJLQSxjQUFjO0lBV2xCO0FBQ0Q7QUFDQTtJQWJLQSxjQUFjO0lBQUEsT0FBZEEsY0FBYztFQUFBLEVBQWRBLGNBQWM7RUFpQm5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBckJBLElBeUJxQkMsVUFBVSxJQUFBQyxJQUFBLEdBSDlCQyxjQUFjLENBQUMsMEJBQTBCLEVBQUU7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
|
|
@@ -20,7 +20,7 @@ import type { $ColumnMicroChartSettings } from "sap/suite/ui/microchart/ColumnMi
|
|
|
20
20
|
import type { $ComparisonMicroChartSettings } from "sap/suite/ui/microchart/ComparisonMicroChart";
|
|
21
21
|
import type { $LineMicroChartSettings } from "sap/suite/ui/microchart/LineMicroChart";
|
|
22
22
|
import type { $StackedBarMicroChartSettings } from "sap/suite/ui/microchart/StackedBarMicroChart";
|
|
23
|
-
import type { AggregationBindingInfo } from "sap/ui/base/ManagedObject";
|
|
23
|
+
import type { $ManagedObjectSettings, AggregationBindingInfo } from "sap/ui/base/ManagedObject";
|
|
24
24
|
import type { $ControlSettings } from "sap/ui/core/Control";
|
|
25
25
|
import Lib from "sap/ui/core/Lib";
|
|
26
26
|
import type Context from "sap/ui/model/odata/v4/Context";
|
|
@@ -125,7 +125,7 @@ export default class MicroChart extends BuildingBlock<MicroChartContainer> {
|
|
|
125
125
|
* Size of the MicroChart
|
|
126
126
|
* @public
|
|
127
127
|
*/
|
|
128
|
-
@property({ type: "string" })
|
|
128
|
+
@property({ type: "string", allowedValues: ["XS", "S", "M", "L"] })
|
|
129
129
|
size?: string;
|
|
130
130
|
|
|
131
131
|
/**
|
|
@@ -172,6 +172,12 @@ export default class MicroChart extends BuildingBlock<MicroChartContainer> {
|
|
|
172
172
|
super(settings, others);
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
+
override applySettings(mSettings: $ManagedObjectSettings, oScope?: object): this {
|
|
176
|
+
this._doNotCreateOnNullContext = true;
|
|
177
|
+
this._visibilityCheck = true;
|
|
178
|
+
return super.applySettings(mSettings, oScope);
|
|
179
|
+
}
|
|
180
|
+
|
|
175
181
|
/**
|
|
176
182
|
* Gets the sortOrder for the microChart as mentioned in the PresentationVariant.
|
|
177
183
|
* @param sortingProps Sorters from PresentationVariant.
|
|
@@ -214,7 +220,6 @@ export default class MicroChart extends BuildingBlock<MicroChartContainer> {
|
|
|
214
220
|
*
|
|
215
221
|
* Clone is a UI5 core Control method, which is not async and is called in a sync manner throughout UI5.
|
|
216
222
|
* Hence we need to create the chart in a fire and forget fashion.
|
|
217
|
-
*
|
|
218
223
|
* @param idSuffix A suffix to be appended to the cloned element id
|
|
219
224
|
* @param localIds An array of local IDs within the cloned hierarchy (internally used)
|
|
220
225
|
* @returns The reference to the newly create clone
|
|
@@ -224,6 +229,7 @@ export default class MicroChart extends BuildingBlock<MicroChartContainer> {
|
|
|
224
229
|
clonedMicroChart.createMicroChart();
|
|
225
230
|
return clonedMicroChart;
|
|
226
231
|
}
|
|
232
|
+
|
|
227
233
|
public async onMetadataAvailable(_ownerComponent: TemplateComponent): Promise<void> {
|
|
228
234
|
if (!this.content) {
|
|
229
235
|
const owner = this._getOwner();
|