@sapui5/sap.fe.macros 1.138.0 → 1.140.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 +269 -0
- package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
- package/src/sap/fe/macros/CommonHelper.js +2 -2
- package/src/sap/fe/macros/CommonHelper.ts +1 -1
- package/src/sap/fe/macros/Field.js +85 -58
- package/src/sap/fe/macros/Field.ts +104 -60
- package/src/sap/fe/macros/FooterContent.js +44 -11
- package/src/sap/fe/macros/FooterContent.tsx +48 -9
- package/src/sap/fe/macros/FormElement.js +2 -2
- package/src/sap/fe/macros/FormElement.ts +1 -2
- package/src/sap/fe/macros/MessageButton.js +1 -2
- package/src/sap/fe/macros/MessageButton.tsx +0 -1
- package/src/sap/fe/macros/MultiValueField.js +17 -6
- package/src/sap/fe/macros/MultiValueField.tsx +7 -4
- package/src/sap/fe/macros/RichTextEditor.js +30 -5
- package/src/sap/fe/macros/RichTextEditor.tsx +34 -6
- package/src/sap/fe/macros/Share.js +85 -40
- package/src/sap/fe/macros/Share.tsx +42 -1
- package/src/sap/fe/macros/Status.js +226 -0
- package/src/sap/fe/macros/Status.tsx +192 -0
- package/src/sap/fe/macros/ValueHelp.js +4 -29
- package/src/sap/fe/macros/ValueHelp.tsx +2 -43
- package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
- package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
- package/src/sap/fe/macros/ai/EasyFilterBar.js +123 -114
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +140 -124
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
- package/src/sap/fe/macros/ai/SummarizationButton.js +2 -2
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +1 -1
- package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
- package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
- package/src/sap/fe/macros/chart/ChartHelper.js +1 -2
- package/src/sap/fe/macros/chart/ChartHelper.ts +0 -1
- package/src/sap/fe/macros/chart/ChartRuntime.js +1 -2
- package/src/sap/fe/macros/chart/ChartRuntime.ts +0 -1
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +20 -6
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +16 -8
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +3 -1
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +2 -0
- package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
- package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
- package/src/sap/fe/macros/controls/FilterBar.js +49 -2
- package/src/sap/fe/macros/controls/FilterBar.ts +55 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +2 -2
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -2
- package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
- package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
- package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
- package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
- package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
- package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
- package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
- package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +43 -4
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -1
- package/src/sap/fe/macros/designtime/Designtime.helper.js +39 -2
- package/src/sap/fe/macros/designtime/Designtime.helper.ts +39 -0
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +15 -4
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +5 -0
- package/src/sap/fe/macros/field/FieldBaseDelegate.js +20 -8
- package/src/sap/fe/macros/field/FieldBaseDelegate.ts +34 -9
- package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
- package/src/sap/fe/macros/field/FieldRuntime.js +1 -2
- package/src/sap/fe/macros/field/FieldRuntime.ts +0 -1
- package/src/sap/fe/macros/filter/FilterUtils.js +3 -5
- package/src/sap/fe/macros/filter/FilterUtils.ts +2 -4
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
- package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
- package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
- package/src/sap/fe/macros/form/Form.js +1 -4
- package/src/sap/fe/macros/form/Form.tsx +0 -3
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
- package/src/sap/fe/macros/form/FormContainer.block.js +1 -2
- package/src/sap/fe/macros/form/FormContainer.block.ts +0 -1
- package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
- package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
- package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
- package/src/sap/fe/macros/form/FormDelegate.js +20 -1
- package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
- package/src/sap/fe/macros/form/FormHelper.js +1 -2
- package/src/sap/fe/macros/form/FormHelper.ts +0 -1
- package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
- package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
- package/src/sap/fe/macros/fpm/CustomFragment.block.js +1 -2
- package/src/sap/fe/macros/fpm/CustomFragment.block.ts +0 -1
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
- package/src/sap/fe/macros/internal/ActionCommand.block.js +1 -2
- package/src/sap/fe/macros/internal/ActionCommand.block.ts +0 -1
- package/src/sap/fe/macros/internal/DataPoint.js +2 -1
- package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
- package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
- package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
- package/src/sap/fe/macros/internal/FilterField.block.js +10 -2
- package/src/sap/fe/macros/internal/FilterField.block.ts +11 -1
- package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +51 -13
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +53 -6
- package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +11 -0
- package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
- package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +46 -8
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +60 -6
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +38 -2
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +37 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +2 -1
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +16 -5
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +21 -9
- package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +7 -2
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +7 -3
- package/src/sap/fe/macros/messagebundle.properties +42 -32
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -4
- package/src/sap/fe/macros/messagebundle_bg.properties +11 -3
- package/src/sap/fe/macros/messagebundle_ca.properties +15 -7
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -4
- package/src/sap/fe/macros/messagebundle_cs.properties +10 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -4
- package/src/sap/fe/macros/messagebundle_da.properties +11 -3
- package/src/sap/fe/macros/messagebundle_de.properties +18 -10
- package/src/sap/fe/macros/messagebundle_el.properties +13 -5
- package/src/sap/fe/macros/messagebundle_en.properties +16 -8
- package/src/sap/fe/macros/messagebundle_en_GB.properties +16 -8
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +16 -8
- package/src/sap/fe/macros/messagebundle_es.properties +13 -5
- package/src/sap/fe/macros/messagebundle_es_MX.properties +14 -6
- package/src/sap/fe/macros/messagebundle_et.properties +13 -5
- package/src/sap/fe/macros/messagebundle_fi.properties +14 -6
- package/src/sap/fe/macros/messagebundle_fr.properties +14 -6
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +15 -7
- package/src/sap/fe/macros/messagebundle_hi.properties +11 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +11 -3
- package/src/sap/fe/macros/messagebundle_hu.properties +10 -2
- package/src/sap/fe/macros/messagebundle_id.properties +18 -10
- package/src/sap/fe/macros/messagebundle_it.properties +10 -2
- package/src/sap/fe/macros/messagebundle_iw.properties +10 -2
- package/src/sap/fe/macros/messagebundle_ja.properties +13 -5
- package/src/sap/fe/macros/messagebundle_kk.properties +15 -7
- package/src/sap/fe/macros/messagebundle_ko.properties +10 -2
- package/src/sap/fe/macros/messagebundle_lt.properties +11 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -4
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -4
- package/src/sap/fe/macros/messagebundle_ms.properties +14 -6
- package/src/sap/fe/macros/messagebundle_nl.properties +13 -5
- package/src/sap/fe/macros/messagebundle_no.properties +12 -4
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -4
- package/src/sap/fe/macros/messagebundle_pt.properties +13 -5
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -4
- package/src/sap/fe/macros/messagebundle_ro.properties +12 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +13 -5
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -4
- package/src/sap/fe/macros/messagebundle_sk.properties +11 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +12 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -4
- package/src/sap/fe/macros/messagebundle_sv.properties +11 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -3
- package/src/sap/fe/macros/messagebundle_tr.properties +10 -2
- package/src/sap/fe/macros/messagebundle_uk.properties +17 -9
- package/src/sap/fe/macros/messagebundle_vi.properties +12 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +11 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -4
- package/src/sap/fe/macros/messages/MessageButton.js +55 -36
- package/src/sap/fe/macros/messages/MessageButton.ts +64 -39
- package/src/sap/fe/macros/messages/MessagePopover.js +2 -2
- package/src/sap/fe/macros/messages/MessagePopover.ts +4 -4
- package/src/sap/fe/macros/microchart/MicroChartContainer.js +1 -2
- package/src/sap/fe/macros/microchart/MicroChartContainer.ts +1 -2
- package/src/sap/fe/macros/microchart/MicroChartHelper.js +1 -2
- package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +0 -1
- package/src/sap/fe/macros/share/ShareAPI.js +4 -29
- package/src/sap/fe/macros/share/ShareAPI.ts +1 -32
- package/src/sap/fe/macros/situations/SituationsPopover.js +3 -1
- package/src/sap/fe/macros/situations/SituationsPopover.ts +2 -0
- package/src/sap/fe/macros/table/Action.js +24 -2
- package/src/sap/fe/macros/table/Action.ts +13 -0
- package/src/sap/fe/macros/table/ActionGroup.js +24 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
- package/src/sap/fe/macros/table/ActionOverride.js +24 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
- package/src/sap/fe/macros/table/Column.js +3 -3
- package/src/sap/fe/macros/table/Column.ts +2 -2
- package/src/sap/fe/macros/table/MdcTableTemplate.js +20 -8
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +36 -7
- package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
- package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
- package/src/sap/fe/macros/table/Table.block.js +137 -108
- package/src/sap/fe/macros/table/Table.block.tsx +29 -2
- package/src/sap/fe/macros/table/TableAPI.js +143 -133
- package/src/sap/fe/macros/table/TableAPI.ts +5 -1
- package/src/sap/fe/macros/table/TableDefinition.js +4 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
- package/src/sap/fe/macros/table/TableHelper.js +1 -2
- package/src/sap/fe/macros/table/TableHelper.ts +0 -1
- package/src/sap/fe/macros/table/TableRuntime.js +26 -7
- package/src/sap/fe/macros/table/TableRuntime.ts +33 -5
- package/src/sap/fe/macros/table/Utils.js +6 -2
- package/src/sap/fe/macros/table/Utils.ts +5 -1
- package/src/sap/fe/macros/table/delegates/ALPTableDelegate.js +1 -2
- package/src/sap/fe/macros/table/delegates/ALPTableDelegate.ts +0 -1
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +25 -20
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +25 -24
- package/src/sap/fe/macros/table/delegates/TreeTableDelegate.js +1 -2
- package/src/sap/fe/macros/table/delegates/TreeTableDelegate.ts +0 -1
- package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
- package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
- package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
- package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +8 -1
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +10 -0
- package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
- package/src/sap/fe/macros/table/mixin/TableSharing.ts +9 -1
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +20 -6
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +36 -14
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -7
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +16 -5
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +18 -4
|
@@ -65,7 +65,6 @@ export default class FormElementControl extends FormElement {
|
|
|
65
65
|
*/
|
|
66
66
|
constructor(properties: string | ($ControlSettings & PropertiesOf<FormElementControl>), others?: $ControlSettings) {
|
|
67
67
|
super(properties as string, others);
|
|
68
|
-
|
|
69
68
|
this.ensureDefaultField();
|
|
70
69
|
this.attachModelContextChange(this.onModelContextChange.bind(this));
|
|
71
70
|
}
|
|
@@ -94,7 +93,7 @@ export default class FormElementControl extends FormElement {
|
|
|
94
93
|
const source = evt.getSource() as unknown as FormElementControl;
|
|
95
94
|
const owner = Component.getOwnerComponentFor(source) as EnhanceWithUI5<TemplateComponent>;
|
|
96
95
|
const metaModel = owner?.getMetaModel();
|
|
97
|
-
const contextPath = owner?.getFullContextPath();
|
|
96
|
+
const contextPath = source.contextPath ? source.contextPath + "/" : owner?.getFullContextPath();
|
|
98
97
|
const metaPathContext = metaModel?.createBindingContext(contextPath + source.metaPath) as Context;
|
|
99
98
|
let oContextObjectPath: DataModelObjectPath<ServiceObject> | undefined;
|
|
100
99
|
try {
|
|
@@ -26,7 +26,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/building
|
|
|
26
26
|
* <macros:MessageButton visibilityChange=".handler.onMessageButtonVisibilityChange" />
|
|
27
27
|
* </pre>
|
|
28
28
|
* @public
|
|
29
|
-
* @experimental
|
|
30
29
|
*/
|
|
31
30
|
let MessageButton = (_dec = defineUI5Class("sap.fe.macros.MessageButton"), _dec2 = event(), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlock) {
|
|
32
31
|
function MessageButton(idOrSettings, settings) {
|
|
@@ -260,4 +259,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/building
|
|
|
260
259
|
_exports = MessageButton;
|
|
261
260
|
return _exports;
|
|
262
261
|
}, false);
|
|
263
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlQnV0dG9uIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJldmVudCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsImlkT3JTZXR0aW5ncyIsInNldHRpbmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXAiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiX21lc3NhZ2VNb2RlbCIsIk1lc3NhZ2luZyIsImdldE1lc3NhZ2VNb2RlbCIsIl9tbVByb3BlcnR5QmluZGluZyIsImJpbmRQcm9wZXJ0eSIsImF0dGFjaENoYW5nZSIsInByb2Nlc3NNZXNzYWdlcyIsImV2ZW50RGVsZWdhdGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwibWVzc2FnZXMiLCJnZXREYXRhIiwibWVzc2FnZURldGFpbHMiLCJyZWR1Y2UiLCJyZWR1Y2VkTWVzc2FnZXMiLCJtZXNzYWdlIiwiaXNCb3VuZCIsImdldFRhcmdldHMiLCJsZW5ndGgiLCJpc01lc3NhZ2VUZWNobmljYWwiLCJnZXRUZWNobmljYWwiLCJwdXNoIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJtZXNzYWdlSGFuZGxlciIsImJlZm9yZVNob3dNZXNzYWdlQnV0dG9uIiwiYWRqdXN0TWVzc2FnZUJ1dHRvblByb3BlcnRpZXMiLCJtZXNzYWdlUHJpb3JpdHlNYXAiLCJFcnJvciIsIldhcm5pbmciLCJTdWNjZXNzIiwiSW5mb3JtYXRpb24iLCJOb25lIiwiYXZhaWxhYmxlSGlnaGVzdFByaW9yaXR5IiwiZXJyb3JDb3VudCIsIm1lc3NhZ2VJdGVtcyIsIm1lc3NhZ2VEZXRhaWwiLCJtZXNzYWdlVHlwZSIsImdldFR5cGUiLCJtZXNzYWdlUHJpb3JpdHkiLCJNZXNzYWdlVHlwZSIsImNyZWF0ZU1lc3NhZ2VJdGVtIiwiZ2V0Q29udGVudCIsInNldFRleHQiLCJ0b1N0cmluZyIsInByaW9yaXRpemVkQnV0dG9uVHlwZSIsIkJ1dHRvblR5cGUiLCJOZWdhdGl2ZSIsIkNyaXRpY2FsIiwiTmV1dHJhbCIsIkRlZmF1bHQiLCJzZXRUeXBlIiwicHJpb3JpdGl6ZWRUb29sVGlwS2V5IiwidG9vbHRpcEtleSIsInRvb2x0aXBUZXh0IiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJzZXRUb29sdGlwIiwiZ2V0VmlzaWJsZSIsInNldFZpc2libGUiLCJmaXJlRXZlbnQiLCJ2aXNpYmxlIiwiY3JlYXRlTWVzc2FnZVBvcG92ZXIiLCJtZXNzYWdlSXRlbSIsIl9qc3giLCJNZXNzYWdlSXRlbSIsInRpdGxlIiwiZ2V0TWVzc2FnZSIsImRlc2NyaXB0aW9uIiwiZ2V0RGVzY3JpcHRpb24iLCJ0eXBlIiwibWFya3VwRGVzY3JpcHRpb24iLCJsb25ndGV4dFVybCIsImdldERlc2NyaXB0aW9uVXJsIiwic3VidGl0bGUiLCJnZXRBZGRpdGlvbmFsVGV4dCIsImdyb3VwTmFtZSIsImFjdGl2ZVRpdGxlIiwiZ2V0Q29udHJvbElkcyIsImFjdGl2ZVRpdGxlSGFuZGxlciIsImdldElkIiwiX21lc3NhZ2VQb3BvdmVyIiwiZGVzdHJveSIsIk1lc3NhZ2VQb3BvdmVyIiwiZ3JvdXBJdGVtcyIsImFjdGl2ZVRpdGxlUHJlc3MiLCJwcmVzc0V2ZW50IiwiZ2V0UGFyYW1ldGVyIiwiaGFuZGxlQWN0aXZlVGl0bGVQcmVzcyIsImNoaWxkcmVuIiwiaXRlbXMiLCJhZGREZXBlbmRlbnQiLCJzZXRUaW1lb3V0Iiwib3BlbkJ5IiwiY29udHJvbElkIiwiZ2V0Q29udHJvbElkIiwiY29udHJvbCIsIlVJNUVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImZvY3VzIiwiTG9nIiwiZXJyb3IiLCJ0b2dnbGVNZXNzYWdlUG9wb3ZlciIsInRvZ2dsZSIsIkJ1dHRvbiIsInByZXNzIiwiYmluZCIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1lc3NhZ2VCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXZlbnQgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlRGV0YWlsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBNZXNzYWdlSXRlbSBmcm9tIFwic2FwL20vTWVzc2FnZUl0ZW1cIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZVBvcG92ZXIkQWN0aXZlVGl0bGVQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL01lc3NhZ2VQb3BvdmVyXCI7XG5pbXBvcnQgTWVzc2FnZVBvcG92ZXIgZnJvbSBcInNhcC9tL01lc3NhZ2VQb3BvdmVyXCI7XG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgTWVzc2FnaW5nIGZyb20gXCJzYXAvdWkvY29yZS9NZXNzYWdpbmdcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgdHlwZSBQcm9wZXJ0eUJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9Qcm9wZXJ0eUJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2VNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL21lc3NhZ2UvTWVzc2FnZU1vZGVsXCI7XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBzaG93IGJvdW5kIG1lc3NhZ2VzLlxuICpcbiAqIFRoZSBNZXNzYWdlIEJ1dHRvbiBCdWlsZGluZyBCbG9jayBnZXRzIHRoZSBib3VuZCBtZXNzYWdlcyBmcm9tIHRoZSBNZXNzYWdlTW9kZWwuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqXG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpNZXNzYWdlQnV0dG9uIHZpc2liaWxpdHlDaGFuZ2U9XCIuaGFuZGxlci5vbk1lc3NhZ2VCdXR0b25WaXNpYmlsaXR5Q2hhbmdlXCIgLyZndDtcbiAqIDwvcHJlPlxuICogQHB1YmxpY1xuICogQGV4cGVyaW1lbnRhbFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLk1lc3NhZ2VCdXR0b25cIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lc3NhZ2VCdXR0b24gZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrPEJ1dHRvbj4ge1xuXHQvKipcblx0ICogVGhlIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBtZXNzYWdlIGJ1dHRvbidzIHZpc2liaWxpdHkgY2hhbmdlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGV2ZW50KClcblx0dmlzaWJpbGl0eUNoYW5nZSE6IEZ1bmN0aW9uO1xuXG5cdF9tZXNzYWdlTW9kZWwhOiBNZXNzYWdlTW9kZWw7XG5cblx0X21lc3NhZ2VQb3BvdmVyITogTWVzc2FnZVBvcG92ZXI7XG5cblx0X21tUHJvcGVydHlCaW5kaW5nITogUHJvcGVydHlCaW5kaW5nO1xuXG5cdF9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXA6IFJlY29yZDxzdHJpbmcsIE1lc3NhZ2VEZXRhaWw+ID0ge307XG5cblx0Y29uc3RydWN0b3IoaWRPclNldHRpbmdzPzogc3RyaW5nIHwgUHJvcGVydGllc09mPE1lc3NhZ2VCdXR0b24+LCBzZXR0aW5ncz86IFByb3BlcnRpZXNPZjxNZXNzYWdlQnV0dG9uPikge1xuXHRcdHN1cGVyKGlkT3JTZXR0aW5ncywgc2V0dGluZ3MpO1xuXHR9XG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25NZXRhZGF0YUF2YWlsYWJsZSBldmVudC5cblx0ICovXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0XHQvLyBnZXQgdGhlIG1lc3NhZ2UgbW9kZWwgYW5kIGF0dGFjaCB0byBpdCdzIGNoYW5nZSBldmVudC5cblx0XHR0aGlzLl9tZXNzYWdlTW9kZWwgPSBNZXNzYWdpbmcuZ2V0TWVzc2FnZU1vZGVsKCk7XG5cdFx0dGhpcy5fbW1Qcm9wZXJ0eUJpbmRpbmcgPSB0aGlzLl9tZXNzYWdlTW9kZWwuYmluZFByb3BlcnR5KFwiL1wiKTtcblx0XHR0aGlzLl9tbVByb3BlcnR5QmluZGluZy5hdHRhY2hDaGFuZ2UodGhpcy5wcm9jZXNzTWVzc2FnZXMsIHRoaXMpO1xuXHRcdGNvbnN0IGV2ZW50RGVsZWdhdGUgPSB7XG5cdFx0XHRvbkJlZm9yZVJlbmRlcmluZzogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLnByb2Nlc3NNZXNzYWdlcygpO1xuXHRcdFx0XHR0aGlzLnJlbW92ZUV2ZW50RGVsZWdhdGUoZXZlbnREZWxlZ2F0ZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHR0aGlzLmFkZEV2ZW50RGVsZWdhdGUoZXZlbnREZWxlZ2F0ZSk7XG5cdH1cblxuXHQvKipcblx0ICogUHJvY2Vzc2VzIG1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIG1vZGVsLlxuXHQgKlxuXHQgKiBGaWx0ZXJzIG91dCB0aGUgYm91bmQgYW5kIG5vbiB0ZWNobmljYWwgbWVzc2FnZXMgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbFxuXHQgKiBBbmQgY2FsbHMgdGhlIE1lc3NhZ2VIYW5kbGVyLmJlZm9yZVNob3dNZXNzYWdlQnV0dG9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGFsbG93IGNvbnN1bWVycyB0byBhZGFwdCB0aGUgbWVzc2FnZXMgdGhhdCB3aWxsIGJlIHNob3duLlxuXHQgKlxuXHQgKiBBZGRpdGlvbmFsbHksIGl0IGFkanVzdHMgdGhlIG1lc3NhZ2UgYnV0dG9uJ3MgcHJvZXBydGllcyBiYXNlZCBvbiB0aGUgbWVzc2FnZXMgdG8gYmUgc2hvd24uXG5cdCAqXG5cdCAqL1xuXHRhc3luYyBwcm9jZXNzTWVzc2FnZXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgbWVzc2FnZXM6IE1lc3NhZ2VbXSA9IHRoaXMuX21lc3NhZ2VNb2RlbD8uZ2V0RGF0YSgpO1xuXG5cdFx0Ly8gZ2V0IGJvdW5kIG1lc3NhZ2VzLlxuXHRcdGNvbnN0IG1lc3NhZ2VEZXRhaWxzID0gbWVzc2FnZXMucmVkdWNlKChyZWR1Y2VkTWVzc2FnZXM6IE1lc3NhZ2VEZXRhaWxbXSwgbWVzc2FnZSk6IE1lc3NhZ2VEZXRhaWxbXSA9PiB7XG5cdFx0XHRjb25zdCBpc0JvdW5kID0gbWVzc2FnZS5nZXRUYXJnZXRzKCkubGVuZ3RoID4gMDtcblx0XHRcdGNvbnN0IGlzTWVzc2FnZVRlY2huaWNhbCA9IG1lc3NhZ2UuZ2V0VGVjaG5pY2FsKCk7XG5cdFx0XHRpZiAoaXNCb3VuZCAmJiAhaXNNZXNzYWdlVGVjaG5pY2FsKSB7XG5cdFx0XHRcdHJlZHVjZWRNZXNzYWdlcy5wdXNoKHsgbWVzc2FnZSB9KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZWR1Y2VkTWVzc2FnZXM7XG5cdFx0fSwgW10pO1xuXG5cdFx0aWYgKG1lc3NhZ2VEZXRhaWxzICYmIG1lc3NhZ2VEZXRhaWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdGF3YWl0IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5tZXNzYWdlSGFuZGxlci5iZWZvcmVTaG93TWVzc2FnZUJ1dHRvbihtZXNzYWdlRGV0YWlscyk7XG5cdFx0fVxuXHRcdHRoaXMuYWRqdXN0TWVzc2FnZUJ1dHRvblByb3BlcnRpZXMobWVzc2FnZURldGFpbHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkanVzdHMgdGhlIG1lc3NhZ2UgYnV0dG9uIHByb3BlcnRpZXMgYW5kIGNyZWF0ZXMgYSBtZXNzYWdlIHBvcG92ZXIgdG8gc2hvdyB0aGUgbWVzc2FnZXMuXG5cdCAqXG5cdCAqIFNldHMgdGhlIG1lc3NhZ2VzIGJ1dHRvbnMgcHJvcGVydGllcyBvbiB0aGUgYmFzaXMgb2YgbWVzc2FnZXMgdG8gYmUgc2hvd24uXG5cdCAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBtZXNzYWdlcyBidXR0b24gaXMgZGV0ZXJtaW5lZCBvbiB0aGUgYmFzaXMgb2YgdGhlIHByaW9yaXR5IG9mIG1lc3NhZ2VzIHRvIGJlIHNob3duLlxuXHQgKlxuXHQgKiBBZGRpdGlvbmFsbHksIGNyZWF0ZXMgYSBtZXNzYWdlIHBvcG92ZXIgdG8gc2hvdyB0aGUgbWVzc2FnZXMuXG5cdCAqIEBwYXJhbSBtZXNzYWdlRGV0YWlscyBNZXNzYWdlIGRldGFpbHMgdXNlZCB0byByZW5kZXIgZWFjaCBtZXNzYWdlIGl0ZW0uXG5cdCAqL1xuXHRhZGp1c3RNZXNzYWdlQnV0dG9uUHJvcGVydGllcyhtZXNzYWdlRGV0YWlsczogTWVzc2FnZURldGFpbFtdKTogdm9pZCB7XG5cdFx0dGhpcy5fbWVzc2FnZUl0ZW1NZXNzYWdlRGV0YWlsTWFwID0ge307XG5cdFx0aWYgKG1lc3NhZ2VEZXRhaWxzICYmIG1lc3NhZ2VEZXRhaWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2VQcmlvcml0eU1hcCA9IHtcblx0XHRcdFx0RXJyb3I6IDAsXG5cdFx0XHRcdFdhcm5pbmc6IDEsXG5cdFx0XHRcdFN1Y2Nlc3M6IDIsXG5cdFx0XHRcdEluZm9ybWF0aW9uOiAzLFxuXHRcdFx0XHROb25lOiA0XG5cdFx0XHR9O1xuXG5cdFx0XHRsZXQgYXZhaWxhYmxlSGlnaGVzdFByaW9yaXR5ID0gbWVzc2FnZVByaW9yaXR5TWFwLk5vbmU7IC8vIHdlIHN0YXJ0IGZyb20gdGhlIGxvd2VzdFxuXHRcdFx0bGV0IGVycm9yQ291bnQgPSAwO1xuXHRcdFx0Y29uc3QgbWVzc2FnZUl0ZW1zOiBNZXNzYWdlSXRlbVtdID0gW107XG5cdFx0XHRmb3IgKGNvbnN0IG1lc3NhZ2VEZXRhaWwgb2YgbWVzc2FnZURldGFpbHMpIHtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VEZXRhaWwubWVzc2FnZTtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZVR5cGUgPSBtZXNzYWdlLmdldFR5cGUoKTtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZVByaW9yaXR5ID0gbWVzc2FnZVByaW9yaXR5TWFwW21lc3NhZ2VUeXBlXTtcblx0XHRcdFx0aWYgKG1lc3NhZ2VQcmlvcml0eSA8IGF2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eSkge1xuXHRcdFx0XHRcdGF2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eSA9IG1lc3NhZ2VQcmlvcml0eTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAobWVzc2FnZVR5cGUgPT09IE1lc3NhZ2VUeXBlLkVycm9yKSB7XG5cdFx0XHRcdFx0ZXJyb3JDb3VudCsrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1lc3NhZ2VJdGVtcy5wdXNoKHRoaXMuY3JlYXRlTWVzc2FnZUl0ZW0obWVzc2FnZURldGFpbCkpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBzZXQgcHJvcGVydGllcyBvbiB0aGUgbWVzc2FnZSBidXR0b25zXG5cblx0XHRcdC8vIHNldFRleHRcblx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRUZXh0KG1lc3NhZ2VEZXRhaWxzLmxlbmd0aC50b1N0cmluZygpKTtcblxuXHRcdFx0Ly8gc2V0VHlwZVxuXHRcdFx0Y29uc3QgcHJpb3JpdGl6ZWRCdXR0b25UeXBlID0gW1xuXHRcdFx0XHRCdXR0b25UeXBlLk5lZ2F0aXZlLFxuXHRcdFx0XHRCdXR0b25UeXBlLkNyaXRpY2FsLFxuXHRcdFx0XHRCdXR0b25UeXBlLlN1Y2Nlc3MsXG5cdFx0XHRcdEJ1dHRvblR5cGUuTmV1dHJhbCxcblx0XHRcdFx0QnV0dG9uVHlwZS5EZWZhdWx0XG5cdFx0XHRdO1xuXHRcdFx0dGhpcy5nZXRDb250ZW50KCk/LnNldFR5cGUocHJpb3JpdGl6ZWRCdXR0b25UeXBlW2F2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eV0pO1xuXG5cdFx0XHQvLyBzZXRUb29sdGlwXG5cdFx0XHRjb25zdCBwcmlvcml0aXplZFRvb2xUaXBLZXkgPSBbXG5cdFx0XHRcdFwiQ19DT01NT05fU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9USVRMRV9FUlJPUlwiLFxuXHRcdFx0XHRcIkNfQ09NTU9OX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfV0FSTklOR19UT09MVElQXCIsXG5cdFx0XHRcdFwiQ19NRVNTQUdFX0hBTkRMSU5HX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfVElUTEVfU1VDQ0VTU1wiLFxuXHRcdFx0XHRcIkNfTUVTU0FHRV9IQU5ETElOR19TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1RJVExFX0lORk9cIixcblx0XHRcdFx0XCJcIlxuXHRcdFx0XTtcblx0XHRcdGNvbnN0IHRvb2x0aXBLZXkgPVxuXHRcdFx0XHRlcnJvckNvdW50ID4gMVxuXHRcdFx0XHRcdD8gXCJDX0NPTU1PTl9TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX01VTFRJUExFX0VSUk9SX1RPT0xUSVBcIlxuXHRcdFx0XHRcdDogcHJpb3JpdGl6ZWRUb29sVGlwS2V5W2F2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eV07XG5cdFx0XHRsZXQgdG9vbHRpcFRleHQgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KHRvb2x0aXBLZXkpO1xuXHRcdFx0aWYgKGVycm9yQ291bnQgPiAxKSB7XG5cdFx0XHRcdHRvb2x0aXBUZXh0ID0gYCR7ZXJyb3JDb3VudH0gICR7dG9vbHRpcFRleHR9YDtcblx0XHRcdH1cblx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRUb29sdGlwKHRvb2x0aXBUZXh0KTtcblxuXHRcdFx0Ly8gc2V0VmlzaWJsZVxuXHRcdFx0aWYgKCF0aGlzLmdldENvbnRlbnQoKT8uZ2V0VmlzaWJsZSgpKSB7XG5cdFx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRWaXNpYmxlKHRydWUpO1xuXHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInZpc2liaWxpdHlDaGFuZ2VcIiwgeyB2aXNpYmxlOiB0aGlzLmdldENvbnRlbnQoKT8uZ2V0VmlzaWJsZSgpIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBhbHNvIHNob3cgdGhlIG1lc3NhZ2UgcG9wb3ZlclxuXHRcdFx0dGhpcy5jcmVhdGVNZXNzYWdlUG9wb3ZlcihtZXNzYWdlSXRlbXMpO1xuXHRcdH1cblxuXHRcdGlmIChtZXNzYWdlRGV0YWlscy5sZW5ndGggPT09IDApIHtcblx0XHRcdGlmICh0aGlzLmdldENvbnRlbnQoKT8uZ2V0VmlzaWJsZSgpKSB7XG5cdFx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJ2aXNpYmlsaXR5Q2hhbmdlXCIsIHsgdmlzaWJsZTogdGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSB9KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG1lc3NhZ2UgSXRlbS5cblx0ICogQHBhcmFtIG1lc3NhZ2VEZXRhaWwgTWVzc2FnZSBkZXRhaWwgcmVsZXZhbnQgZm9yIGNyZWF0aW5nIHRoZSBtZXNzYWdlIGl0ZW0uXG5cdCAqIEByZXR1cm5zIE1lc3NhZ2VJdGVtIGNyZWF0ZWQgZnJvbSBNZXNzYWdlIERldGFpbFxuXHQgKi9cblx0Y3JlYXRlTWVzc2FnZUl0ZW0obWVzc2FnZURldGFpbDogTWVzc2FnZURldGFpbCk6IE1lc3NhZ2VJdGVtIHtcblx0XHRjb25zdCBtZXNzYWdlID0gbWVzc2FnZURldGFpbC5tZXNzYWdlO1xuXHRcdGNvbnN0IG1lc3NhZ2VJdGVtID0gKFxuXHRcdFx0PE1lc3NhZ2VJdGVtXG5cdFx0XHRcdHRpdGxlPXttZXNzYWdlLmdldE1lc3NhZ2UoKX1cblx0XHRcdFx0ZGVzY3JpcHRpb249e21lc3NhZ2UuZ2V0RGVzY3JpcHRpb24oKX1cblx0XHRcdFx0dHlwZT17bWVzc2FnZS5nZXRUeXBlKCl9XG5cdFx0XHRcdG1hcmt1cERlc2NyaXB0aW9uPXt0cnVlfVxuXHRcdFx0XHRsb25ndGV4dFVybD17bWVzc2FnZS5nZXREZXNjcmlwdGlvblVybCgpfVxuXHRcdFx0XHRzdWJ0aXRsZT17bWVzc2FnZS5nZXRBZGRpdGlvbmFsVGV4dCgpfVxuXHRcdFx0XHRncm91cE5hbWU9e21lc3NhZ2VEZXRhaWwuZ3JvdXBOYW1lIHx8IHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX01FU1NBR0VfQlVUVE9OX1NBUEZFX01FU1NBR0VfR1JPVVBfR0VORVJBTFwiKX1cblx0XHRcdFx0YWN0aXZlVGl0bGU9e21lc3NhZ2UuZ2V0Q29udHJvbElkcygpLmxlbmd0aCA+IDAgfHwgdHlwZW9mIG1lc3NhZ2VEZXRhaWwuYWN0aXZlVGl0bGVIYW5kbGVyID09PSBcImZ1bmN0aW9uXCJ9XG5cdFx0XHQvPlxuXHRcdCkgYXMgTWVzc2FnZUl0ZW07XG5cdFx0dGhpcy5fbWVzc2FnZUl0ZW1NZXNzYWdlRGV0YWlsTWFwW21lc3NhZ2VJdGVtLmdldElkKCldID0gbWVzc2FnZURldGFpbDtcblx0XHRyZXR1cm4gbWVzc2FnZUl0ZW07XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG1lc3NhZ2UgUG9wb3Zlci5cblx0ICogQHBhcmFtIG1lc3NhZ2VJdGVtc1xuXHQgKi9cblx0Y3JlYXRlTWVzc2FnZVBvcG92ZXIobWVzc2FnZUl0ZW1zOiBNZXNzYWdlSXRlbVtdKTogdm9pZCB7XG5cdFx0dGhpcy5fbWVzc2FnZVBvcG92ZXI/LmRlc3Ryb3koKTtcblx0XHR0aGlzLl9tZXNzYWdlUG9wb3ZlciA9IChcblx0XHRcdDxNZXNzYWdlUG9wb3ZlclxuXHRcdFx0XHRncm91cEl0ZW1zPXt0cnVlfVxuXHRcdFx0XHRhY3RpdmVUaXRsZVByZXNzPXsocHJlc3NFdmVudDogTWVzc2FnZVBvcG92ZXIkQWN0aXZlVGl0bGVQcmVzc0V2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZUl0ZW0gPSBwcmVzc0V2ZW50LmdldFBhcmFtZXRlcihcIml0ZW1cIik7XG5cdFx0XHRcdFx0dGhpcy5oYW5kbGVBY3RpdmVUaXRsZVByZXNzKG1lc3NhZ2VJdGVtKTtcblx0XHRcdFx0fX1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRpdGVtczogbWVzc2FnZUl0ZW1zXG5cdFx0XHRcdH19XG5cdFx0XHQ8L01lc3NhZ2VQb3BvdmVyPlxuXHRcdCkgYXMgTWVzc2FnZVBvcG92ZXI7XG5cdFx0dGhpcy5nZXRDb250ZW50KCk/LmFkZERlcGVuZGVudCh0aGlzLl9tZXNzYWdlUG9wb3Zlcik7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLl9tZXNzYWdlUG9wb3Zlci5vcGVuQnkodGhpcy5nZXRDb250ZW50KCkgYXMgQnV0dG9uKTtcblx0XHR9LCAwKTtcblx0fVxuXHQvKipcblx0ICogSGFuZGxlcyBhY3RpdmUgdGl0bGUgcHJlc3MuXG5cdCAqXG5cdCAqIElmIGFuIGFjdGl2ZVRpdGxlSGFuZGxlciBpcyBwcm92aWRlZCBieSB0aGUgY29uc3VtZXIgdmlhIHRoZSBjb250cm9sbGVyIGV4dGVuc2lvbiB0aGVuIGl0IGlzIGNhbGxlZC5cblx0ICogT3RoZXJ3aXNlLCB3ZSB0cnkgdG8gZm9jdXMgb24gdGhlIGNvbnRyb2wgaWYgYSBjb250cm9sIElkIGluIHRoZSBtZXNzYWdlIGlzIGF2YWlsYWJsZS5cblx0ICogQHBhcmFtIG1lc3NhZ2VJdGVtXG5cdCAqL1xuXHRoYW5kbGVBY3RpdmVUaXRsZVByZXNzKG1lc3NhZ2VJdGVtPzogTWVzc2FnZUl0ZW0pOiB2b2lkIHtcblx0XHRpZiAobWVzc2FnZUl0ZW0pIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2VEZXRhaWwgPSB0aGlzLl9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXBbbWVzc2FnZUl0ZW0/LmdldElkKCldO1xuXHRcdFx0aWYgKG1lc3NhZ2VEZXRhaWwuYWN0aXZlVGl0bGVIYW5kbGVyKSB7XG5cdFx0XHRcdG1lc3NhZ2VEZXRhaWwuYWN0aXZlVGl0bGVIYW5kbGVyKG1lc3NhZ2VEZXRhaWwubWVzc2FnZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBjb250cm9sSWQgPSBtZXNzYWdlRGV0YWlsLm1lc3NhZ2UuZ2V0Q29udHJvbElkKCk7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2wgPSBVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRyb2xJZCk7XG5cdFx0XHRcdGlmIChjb250cm9sKSB7XG5cdFx0XHRcdFx0Y29udHJvbC5mb2N1cygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy5lcnJvcihcIm1lc3NhZ2UgaXRlbSBub3QgZm91bmQhXCIpO1xuXHRcdH1cblx0fVxuXG5cdGRlc3Ryb3koKTogdm9pZCB7XG5cdFx0dGhpcy5fbW1Qcm9wZXJ0eUJpbmRpbmcuZGVzdHJveSgpO1xuXHR9XG5cdC8qKlxuXHQgKiBUb2dnbGUgaGFuZGxlciBmb3IgdGhlIG1lc3NhZ2UgcG9wb3Zlci5cblx0ICovXG5cdHRvZ2dsZU1lc3NhZ2VQb3BvdmVyKCk6IHZvaWQge1xuXHRcdHRoaXMuX21lc3NhZ2VQb3BvdmVyLnRvZ2dsZSh0aGlzLmNvbnRlbnQgYXMgQnV0dG9uKTtcblx0fVxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgY29udGVudCBmb3IgdGhlIGJ1aWxkaW5nIGJsb2NrLlxuXHQgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBjb250ZW50IGNvbnRyb2wuXG5cdCAqL1xuXHRjcmVhdGVDb250ZW50KCk6IEJ1dHRvbiB7XG5cdFx0cmV0dXJuIDxCdXR0b24gdmlzaWJsZT1cImZhbHNlXCIgcHJlc3M9e3RoaXMudG9nZ2xlTWVzc2FnZVBvcG92ZXIuYmluZCh0aGlzKX0gLz47XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFaQSxJQWNxQkEsYUFBYSxJQUFBQyxJQUFBLEdBRGpDQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsRUFBQUMsS0FBQSxHQU01Q0MsS0FBSyxDQUFDLENBQUMsRUFBQUgsSUFBQSxDQUFBSSxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLGNBQUE7SUFXUixTQUFBUCxjQUFZUSxZQUFtRCxFQUFFQyxRQUFzQyxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUN4R0EsS0FBQSxHQUFBSCxjQUFBLENBQUFJLElBQUEsT0FBTUgsWUFBWSxFQUFFQyxRQUFRLENBQUM7TUFoQjlCO0FBQ0Q7QUFDQTtBQUNBO01BSENHLDBCQUFBLENBQUFGLEtBQUEsc0JBQUFHLFdBQUEsRUFBQUgsS0FBQTtNQUFBQSxLQUFBLENBYUFJLDRCQUE0QixHQUFrQyxDQUFDLENBQUM7TUFBQSxPQUFBSixLQUFBO0lBSWhFO0lBQ0E7QUFDRDtBQUNBO0lBRkNLLFFBQUEsR0FBQWYsYUFBQTtJQUFBZ0IsY0FBQSxDQUFBaEIsYUFBQSxFQUFBTyxjQUFBO0lBQUEsSUFBQVUsTUFBQSxHQUFBakIsYUFBQSxDQUFBa0IsU0FBQTtJQUFBRCxNQUFBLENBR0FFLG1CQUFtQixHQUFuQixTQUFBQSxtQkFBbUJBLENBQUEsRUFBUztNQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDQyxPQUFPLEVBQUU7UUFDbEIs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
|
|
262
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlQnV0dG9uIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJldmVudCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsImlkT3JTZXR0aW5ncyIsInNldHRpbmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXAiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiX21lc3NhZ2VNb2RlbCIsIk1lc3NhZ2luZyIsImdldE1lc3NhZ2VNb2RlbCIsIl9tbVByb3BlcnR5QmluZGluZyIsImJpbmRQcm9wZXJ0eSIsImF0dGFjaENoYW5nZSIsInByb2Nlc3NNZXNzYWdlcyIsImV2ZW50RGVsZWdhdGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwibWVzc2FnZXMiLCJnZXREYXRhIiwibWVzc2FnZURldGFpbHMiLCJyZWR1Y2UiLCJyZWR1Y2VkTWVzc2FnZXMiLCJtZXNzYWdlIiwiaXNCb3VuZCIsImdldFRhcmdldHMiLCJsZW5ndGgiLCJpc01lc3NhZ2VUZWNobmljYWwiLCJnZXRUZWNobmljYWwiLCJwdXNoIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJtZXNzYWdlSGFuZGxlciIsImJlZm9yZVNob3dNZXNzYWdlQnV0dG9uIiwiYWRqdXN0TWVzc2FnZUJ1dHRvblByb3BlcnRpZXMiLCJtZXNzYWdlUHJpb3JpdHlNYXAiLCJFcnJvciIsIldhcm5pbmciLCJTdWNjZXNzIiwiSW5mb3JtYXRpb24iLCJOb25lIiwiYXZhaWxhYmxlSGlnaGVzdFByaW9yaXR5IiwiZXJyb3JDb3VudCIsIm1lc3NhZ2VJdGVtcyIsIm1lc3NhZ2VEZXRhaWwiLCJtZXNzYWdlVHlwZSIsImdldFR5cGUiLCJtZXNzYWdlUHJpb3JpdHkiLCJNZXNzYWdlVHlwZSIsImNyZWF0ZU1lc3NhZ2VJdGVtIiwiZ2V0Q29udGVudCIsInNldFRleHQiLCJ0b1N0cmluZyIsInByaW9yaXRpemVkQnV0dG9uVHlwZSIsIkJ1dHRvblR5cGUiLCJOZWdhdGl2ZSIsIkNyaXRpY2FsIiwiTmV1dHJhbCIsIkRlZmF1bHQiLCJzZXRUeXBlIiwicHJpb3JpdGl6ZWRUb29sVGlwS2V5IiwidG9vbHRpcEtleSIsInRvb2x0aXBUZXh0IiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJzZXRUb29sdGlwIiwiZ2V0VmlzaWJsZSIsInNldFZpc2libGUiLCJmaXJlRXZlbnQiLCJ2aXNpYmxlIiwiY3JlYXRlTWVzc2FnZVBvcG92ZXIiLCJtZXNzYWdlSXRlbSIsIl9qc3giLCJNZXNzYWdlSXRlbSIsInRpdGxlIiwiZ2V0TWVzc2FnZSIsImRlc2NyaXB0aW9uIiwiZ2V0RGVzY3JpcHRpb24iLCJ0eXBlIiwibWFya3VwRGVzY3JpcHRpb24iLCJsb25ndGV4dFVybCIsImdldERlc2NyaXB0aW9uVXJsIiwic3VidGl0bGUiLCJnZXRBZGRpdGlvbmFsVGV4dCIsImdyb3VwTmFtZSIsImFjdGl2ZVRpdGxlIiwiZ2V0Q29udHJvbElkcyIsImFjdGl2ZVRpdGxlSGFuZGxlciIsImdldElkIiwiX21lc3NhZ2VQb3BvdmVyIiwiZGVzdHJveSIsIk1lc3NhZ2VQb3BvdmVyIiwiZ3JvdXBJdGVtcyIsImFjdGl2ZVRpdGxlUHJlc3MiLCJwcmVzc0V2ZW50IiwiZ2V0UGFyYW1ldGVyIiwiaGFuZGxlQWN0aXZlVGl0bGVQcmVzcyIsImNoaWxkcmVuIiwiaXRlbXMiLCJhZGREZXBlbmRlbnQiLCJzZXRUaW1lb3V0Iiwib3BlbkJ5IiwiY29udHJvbElkIiwiZ2V0Q29udHJvbElkIiwiY29udHJvbCIsIlVJNUVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImZvY3VzIiwiTG9nIiwiZXJyb3IiLCJ0b2dnbGVNZXNzYWdlUG9wb3ZlciIsInRvZ2dsZSIsIkJ1dHRvbiIsInByZXNzIiwiYmluZCIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1lc3NhZ2VCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXZlbnQgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlRGV0YWlsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBNZXNzYWdlSXRlbSBmcm9tIFwic2FwL20vTWVzc2FnZUl0ZW1cIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZVBvcG92ZXIkQWN0aXZlVGl0bGVQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL01lc3NhZ2VQb3BvdmVyXCI7XG5pbXBvcnQgTWVzc2FnZVBvcG92ZXIgZnJvbSBcInNhcC9tL01lc3NhZ2VQb3BvdmVyXCI7XG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgTWVzc2FnaW5nIGZyb20gXCJzYXAvdWkvY29yZS9NZXNzYWdpbmdcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgdHlwZSBQcm9wZXJ0eUJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9Qcm9wZXJ0eUJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2VNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL21lc3NhZ2UvTWVzc2FnZU1vZGVsXCI7XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBzaG93IGJvdW5kIG1lc3NhZ2VzLlxuICpcbiAqIFRoZSBNZXNzYWdlIEJ1dHRvbiBCdWlsZGluZyBCbG9jayBnZXRzIHRoZSBib3VuZCBtZXNzYWdlcyBmcm9tIHRoZSBNZXNzYWdlTW9kZWwuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqXG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpNZXNzYWdlQnV0dG9uIHZpc2liaWxpdHlDaGFuZ2U9XCIuaGFuZGxlci5vbk1lc3NhZ2VCdXR0b25WaXNpYmlsaXR5Q2hhbmdlXCIgLyZndDtcbiAqIDwvcHJlPlxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLk1lc3NhZ2VCdXR0b25cIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lc3NhZ2VCdXR0b24gZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrPEJ1dHRvbj4ge1xuXHQvKipcblx0ICogVGhlIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBtZXNzYWdlIGJ1dHRvbidzIHZpc2liaWxpdHkgY2hhbmdlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGV2ZW50KClcblx0dmlzaWJpbGl0eUNoYW5nZSE6IEZ1bmN0aW9uO1xuXG5cdF9tZXNzYWdlTW9kZWwhOiBNZXNzYWdlTW9kZWw7XG5cblx0X21lc3NhZ2VQb3BvdmVyITogTWVzc2FnZVBvcG92ZXI7XG5cblx0X21tUHJvcGVydHlCaW5kaW5nITogUHJvcGVydHlCaW5kaW5nO1xuXG5cdF9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXA6IFJlY29yZDxzdHJpbmcsIE1lc3NhZ2VEZXRhaWw+ID0ge307XG5cblx0Y29uc3RydWN0b3IoaWRPclNldHRpbmdzPzogc3RyaW5nIHwgUHJvcGVydGllc09mPE1lc3NhZ2VCdXR0b24+LCBzZXR0aW5ncz86IFByb3BlcnRpZXNPZjxNZXNzYWdlQnV0dG9uPikge1xuXHRcdHN1cGVyKGlkT3JTZXR0aW5ncywgc2V0dGluZ3MpO1xuXHR9XG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25NZXRhZGF0YUF2YWlsYWJsZSBldmVudC5cblx0ICovXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0XHQvLyBnZXQgdGhlIG1lc3NhZ2UgbW9kZWwgYW5kIGF0dGFjaCB0byBpdCdzIGNoYW5nZSBldmVudC5cblx0XHR0aGlzLl9tZXNzYWdlTW9kZWwgPSBNZXNzYWdpbmcuZ2V0TWVzc2FnZU1vZGVsKCk7XG5cdFx0dGhpcy5fbW1Qcm9wZXJ0eUJpbmRpbmcgPSB0aGlzLl9tZXNzYWdlTW9kZWwuYmluZFByb3BlcnR5KFwiL1wiKTtcblx0XHR0aGlzLl9tbVByb3BlcnR5QmluZGluZy5hdHRhY2hDaGFuZ2UodGhpcy5wcm9jZXNzTWVzc2FnZXMsIHRoaXMpO1xuXHRcdGNvbnN0IGV2ZW50RGVsZWdhdGUgPSB7XG5cdFx0XHRvbkJlZm9yZVJlbmRlcmluZzogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLnByb2Nlc3NNZXNzYWdlcygpO1xuXHRcdFx0XHR0aGlzLnJlbW92ZUV2ZW50RGVsZWdhdGUoZXZlbnREZWxlZ2F0ZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHR0aGlzLmFkZEV2ZW50RGVsZWdhdGUoZXZlbnREZWxlZ2F0ZSk7XG5cdH1cblxuXHQvKipcblx0ICogUHJvY2Vzc2VzIG1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIG1vZGVsLlxuXHQgKlxuXHQgKiBGaWx0ZXJzIG91dCB0aGUgYm91bmQgYW5kIG5vbiB0ZWNobmljYWwgbWVzc2FnZXMgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbFxuXHQgKiBBbmQgY2FsbHMgdGhlIE1lc3NhZ2VIYW5kbGVyLmJlZm9yZVNob3dNZXNzYWdlQnV0dG9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGFsbG93IGNvbnN1bWVycyB0byBhZGFwdCB0aGUgbWVzc2FnZXMgdGhhdCB3aWxsIGJlIHNob3duLlxuXHQgKlxuXHQgKiBBZGRpdGlvbmFsbHksIGl0IGFkanVzdHMgdGhlIG1lc3NhZ2UgYnV0dG9uJ3MgcHJvZXBydGllcyBiYXNlZCBvbiB0aGUgbWVzc2FnZXMgdG8gYmUgc2hvd24uXG5cdCAqXG5cdCAqL1xuXHRhc3luYyBwcm9jZXNzTWVzc2FnZXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgbWVzc2FnZXM6IE1lc3NhZ2VbXSA9IHRoaXMuX21lc3NhZ2VNb2RlbD8uZ2V0RGF0YSgpO1xuXG5cdFx0Ly8gZ2V0IGJvdW5kIG1lc3NhZ2VzLlxuXHRcdGNvbnN0IG1lc3NhZ2VEZXRhaWxzID0gbWVzc2FnZXMucmVkdWNlKChyZWR1Y2VkTWVzc2FnZXM6IE1lc3NhZ2VEZXRhaWxbXSwgbWVzc2FnZSk6IE1lc3NhZ2VEZXRhaWxbXSA9PiB7XG5cdFx0XHRjb25zdCBpc0JvdW5kID0gbWVzc2FnZS5nZXRUYXJnZXRzKCkubGVuZ3RoID4gMDtcblx0XHRcdGNvbnN0IGlzTWVzc2FnZVRlY2huaWNhbCA9IG1lc3NhZ2UuZ2V0VGVjaG5pY2FsKCk7XG5cdFx0XHRpZiAoaXNCb3VuZCAmJiAhaXNNZXNzYWdlVGVjaG5pY2FsKSB7XG5cdFx0XHRcdHJlZHVjZWRNZXNzYWdlcy5wdXNoKHsgbWVzc2FnZSB9KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZWR1Y2VkTWVzc2FnZXM7XG5cdFx0fSwgW10pO1xuXG5cdFx0aWYgKG1lc3NhZ2VEZXRhaWxzICYmIG1lc3NhZ2VEZXRhaWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdGF3YWl0IHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKS5tZXNzYWdlSGFuZGxlci5iZWZvcmVTaG93TWVzc2FnZUJ1dHRvbihtZXNzYWdlRGV0YWlscyk7XG5cdFx0fVxuXHRcdHRoaXMuYWRqdXN0TWVzc2FnZUJ1dHRvblByb3BlcnRpZXMobWVzc2FnZURldGFpbHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkanVzdHMgdGhlIG1lc3NhZ2UgYnV0dG9uIHByb3BlcnRpZXMgYW5kIGNyZWF0ZXMgYSBtZXNzYWdlIHBvcG92ZXIgdG8gc2hvdyB0aGUgbWVzc2FnZXMuXG5cdCAqXG5cdCAqIFNldHMgdGhlIG1lc3NhZ2VzIGJ1dHRvbnMgcHJvcGVydGllcyBvbiB0aGUgYmFzaXMgb2YgbWVzc2FnZXMgdG8gYmUgc2hvd24uXG5cdCAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBtZXNzYWdlcyBidXR0b24gaXMgZGV0ZXJtaW5lZCBvbiB0aGUgYmFzaXMgb2YgdGhlIHByaW9yaXR5IG9mIG1lc3NhZ2VzIHRvIGJlIHNob3duLlxuXHQgKlxuXHQgKiBBZGRpdGlvbmFsbHksIGNyZWF0ZXMgYSBtZXNzYWdlIHBvcG92ZXIgdG8gc2hvdyB0aGUgbWVzc2FnZXMuXG5cdCAqIEBwYXJhbSBtZXNzYWdlRGV0YWlscyBNZXNzYWdlIGRldGFpbHMgdXNlZCB0byByZW5kZXIgZWFjaCBtZXNzYWdlIGl0ZW0uXG5cdCAqL1xuXHRhZGp1c3RNZXNzYWdlQnV0dG9uUHJvcGVydGllcyhtZXNzYWdlRGV0YWlsczogTWVzc2FnZURldGFpbFtdKTogdm9pZCB7XG5cdFx0dGhpcy5fbWVzc2FnZUl0ZW1NZXNzYWdlRGV0YWlsTWFwID0ge307XG5cdFx0aWYgKG1lc3NhZ2VEZXRhaWxzICYmIG1lc3NhZ2VEZXRhaWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2VQcmlvcml0eU1hcCA9IHtcblx0XHRcdFx0RXJyb3I6IDAsXG5cdFx0XHRcdFdhcm5pbmc6IDEsXG5cdFx0XHRcdFN1Y2Nlc3M6IDIsXG5cdFx0XHRcdEluZm9ybWF0aW9uOiAzLFxuXHRcdFx0XHROb25lOiA0XG5cdFx0XHR9O1xuXG5cdFx0XHRsZXQgYXZhaWxhYmxlSGlnaGVzdFByaW9yaXR5ID0gbWVzc2FnZVByaW9yaXR5TWFwLk5vbmU7IC8vIHdlIHN0YXJ0IGZyb20gdGhlIGxvd2VzdFxuXHRcdFx0bGV0IGVycm9yQ291bnQgPSAwO1xuXHRcdFx0Y29uc3QgbWVzc2FnZUl0ZW1zOiBNZXNzYWdlSXRlbVtdID0gW107XG5cdFx0XHRmb3IgKGNvbnN0IG1lc3NhZ2VEZXRhaWwgb2YgbWVzc2FnZURldGFpbHMpIHtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VEZXRhaWwubWVzc2FnZTtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZVR5cGUgPSBtZXNzYWdlLmdldFR5cGUoKTtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZVByaW9yaXR5ID0gbWVzc2FnZVByaW9yaXR5TWFwW21lc3NhZ2VUeXBlXTtcblx0XHRcdFx0aWYgKG1lc3NhZ2VQcmlvcml0eSA8IGF2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eSkge1xuXHRcdFx0XHRcdGF2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eSA9IG1lc3NhZ2VQcmlvcml0eTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAobWVzc2FnZVR5cGUgPT09IE1lc3NhZ2VUeXBlLkVycm9yKSB7XG5cdFx0XHRcdFx0ZXJyb3JDb3VudCsrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1lc3NhZ2VJdGVtcy5wdXNoKHRoaXMuY3JlYXRlTWVzc2FnZUl0ZW0obWVzc2FnZURldGFpbCkpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBzZXQgcHJvcGVydGllcyBvbiB0aGUgbWVzc2FnZSBidXR0b25zXG5cblx0XHRcdC8vIHNldFRleHRcblx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRUZXh0KG1lc3NhZ2VEZXRhaWxzLmxlbmd0aC50b1N0cmluZygpKTtcblxuXHRcdFx0Ly8gc2V0VHlwZVxuXHRcdFx0Y29uc3QgcHJpb3JpdGl6ZWRCdXR0b25UeXBlID0gW1xuXHRcdFx0XHRCdXR0b25UeXBlLk5lZ2F0aXZlLFxuXHRcdFx0XHRCdXR0b25UeXBlLkNyaXRpY2FsLFxuXHRcdFx0XHRCdXR0b25UeXBlLlN1Y2Nlc3MsXG5cdFx0XHRcdEJ1dHRvblR5cGUuTmV1dHJhbCxcblx0XHRcdFx0QnV0dG9uVHlwZS5EZWZhdWx0XG5cdFx0XHRdO1xuXHRcdFx0dGhpcy5nZXRDb250ZW50KCk/LnNldFR5cGUocHJpb3JpdGl6ZWRCdXR0b25UeXBlW2F2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eV0pO1xuXG5cdFx0XHQvLyBzZXRUb29sdGlwXG5cdFx0XHRjb25zdCBwcmlvcml0aXplZFRvb2xUaXBLZXkgPSBbXG5cdFx0XHRcdFwiQ19DT01NT05fU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9USVRMRV9FUlJPUlwiLFxuXHRcdFx0XHRcIkNfQ09NTU9OX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfV0FSTklOR19UT09MVElQXCIsXG5cdFx0XHRcdFwiQ19NRVNTQUdFX0hBTkRMSU5HX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfVElUTEVfU1VDQ0VTU1wiLFxuXHRcdFx0XHRcIkNfTUVTU0FHRV9IQU5ETElOR19TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1RJVExFX0lORk9cIixcblx0XHRcdFx0XCJcIlxuXHRcdFx0XTtcblx0XHRcdGNvbnN0IHRvb2x0aXBLZXkgPVxuXHRcdFx0XHRlcnJvckNvdW50ID4gMVxuXHRcdFx0XHRcdD8gXCJDX0NPTU1PTl9TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX01VTFRJUExFX0VSUk9SX1RPT0xUSVBcIlxuXHRcdFx0XHRcdDogcHJpb3JpdGl6ZWRUb29sVGlwS2V5W2F2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eV07XG5cdFx0XHRsZXQgdG9vbHRpcFRleHQgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KHRvb2x0aXBLZXkpO1xuXHRcdFx0aWYgKGVycm9yQ291bnQgPiAxKSB7XG5cdFx0XHRcdHRvb2x0aXBUZXh0ID0gYCR7ZXJyb3JDb3VudH0gICR7dG9vbHRpcFRleHR9YDtcblx0XHRcdH1cblx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRUb29sdGlwKHRvb2x0aXBUZXh0KTtcblxuXHRcdFx0Ly8gc2V0VmlzaWJsZVxuXHRcdFx0aWYgKCF0aGlzLmdldENvbnRlbnQoKT8uZ2V0VmlzaWJsZSgpKSB7XG5cdFx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRWaXNpYmxlKHRydWUpO1xuXHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInZpc2liaWxpdHlDaGFuZ2VcIiwgeyB2aXNpYmxlOiB0aGlzLmdldENvbnRlbnQoKT8uZ2V0VmlzaWJsZSgpIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBhbHNvIHNob3cgdGhlIG1lc3NhZ2UgcG9wb3ZlclxuXHRcdFx0dGhpcy5jcmVhdGVNZXNzYWdlUG9wb3ZlcihtZXNzYWdlSXRlbXMpO1xuXHRcdH1cblxuXHRcdGlmIChtZXNzYWdlRGV0YWlscy5sZW5ndGggPT09IDApIHtcblx0XHRcdGlmICh0aGlzLmdldENvbnRlbnQoKT8uZ2V0VmlzaWJsZSgpKSB7XG5cdFx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJ2aXNpYmlsaXR5Q2hhbmdlXCIsIHsgdmlzaWJsZTogdGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSB9KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG1lc3NhZ2UgSXRlbS5cblx0ICogQHBhcmFtIG1lc3NhZ2VEZXRhaWwgTWVzc2FnZSBkZXRhaWwgcmVsZXZhbnQgZm9yIGNyZWF0aW5nIHRoZSBtZXNzYWdlIGl0ZW0uXG5cdCAqIEByZXR1cm5zIE1lc3NhZ2VJdGVtIGNyZWF0ZWQgZnJvbSBNZXNzYWdlIERldGFpbFxuXHQgKi9cblx0Y3JlYXRlTWVzc2FnZUl0ZW0obWVzc2FnZURldGFpbDogTWVzc2FnZURldGFpbCk6IE1lc3NhZ2VJdGVtIHtcblx0XHRjb25zdCBtZXNzYWdlID0gbWVzc2FnZURldGFpbC5tZXNzYWdlO1xuXHRcdGNvbnN0IG1lc3NhZ2VJdGVtID0gKFxuXHRcdFx0PE1lc3NhZ2VJdGVtXG5cdFx0XHRcdHRpdGxlPXttZXNzYWdlLmdldE1lc3NhZ2UoKX1cblx0XHRcdFx0ZGVzY3JpcHRpb249e21lc3NhZ2UuZ2V0RGVzY3JpcHRpb24oKX1cblx0XHRcdFx0dHlwZT17bWVzc2FnZS5nZXRUeXBlKCl9XG5cdFx0XHRcdG1hcmt1cERlc2NyaXB0aW9uPXt0cnVlfVxuXHRcdFx0XHRsb25ndGV4dFVybD17bWVzc2FnZS5nZXREZXNjcmlwdGlvblVybCgpfVxuXHRcdFx0XHRzdWJ0aXRsZT17bWVzc2FnZS5nZXRBZGRpdGlvbmFsVGV4dCgpfVxuXHRcdFx0XHRncm91cE5hbWU9e21lc3NhZ2VEZXRhaWwuZ3JvdXBOYW1lIHx8IHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX01FU1NBR0VfQlVUVE9OX1NBUEZFX01FU1NBR0VfR1JPVVBfR0VORVJBTFwiKX1cblx0XHRcdFx0YWN0aXZlVGl0bGU9e21lc3NhZ2UuZ2V0Q29udHJvbElkcygpLmxlbmd0aCA+IDAgfHwgdHlwZW9mIG1lc3NhZ2VEZXRhaWwuYWN0aXZlVGl0bGVIYW5kbGVyID09PSBcImZ1bmN0aW9uXCJ9XG5cdFx0XHQvPlxuXHRcdCkgYXMgTWVzc2FnZUl0ZW07XG5cdFx0dGhpcy5fbWVzc2FnZUl0ZW1NZXNzYWdlRGV0YWlsTWFwW21lc3NhZ2VJdGVtLmdldElkKCldID0gbWVzc2FnZURldGFpbDtcblx0XHRyZXR1cm4gbWVzc2FnZUl0ZW07XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG1lc3NhZ2UgUG9wb3Zlci5cblx0ICogQHBhcmFtIG1lc3NhZ2VJdGVtc1xuXHQgKi9cblx0Y3JlYXRlTWVzc2FnZVBvcG92ZXIobWVzc2FnZUl0ZW1zOiBNZXNzYWdlSXRlbVtdKTogdm9pZCB7XG5cdFx0dGhpcy5fbWVzc2FnZVBvcG92ZXI/LmRlc3Ryb3koKTtcblx0XHR0aGlzLl9tZXNzYWdlUG9wb3ZlciA9IChcblx0XHRcdDxNZXNzYWdlUG9wb3ZlclxuXHRcdFx0XHRncm91cEl0ZW1zPXt0cnVlfVxuXHRcdFx0XHRhY3RpdmVUaXRsZVByZXNzPXsocHJlc3NFdmVudDogTWVzc2FnZVBvcG92ZXIkQWN0aXZlVGl0bGVQcmVzc0V2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZUl0ZW0gPSBwcmVzc0V2ZW50LmdldFBhcmFtZXRlcihcIml0ZW1cIik7XG5cdFx0XHRcdFx0dGhpcy5oYW5kbGVBY3RpdmVUaXRsZVByZXNzKG1lc3NhZ2VJdGVtKTtcblx0XHRcdFx0fX1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRpdGVtczogbWVzc2FnZUl0ZW1zXG5cdFx0XHRcdH19XG5cdFx0XHQ8L01lc3NhZ2VQb3BvdmVyPlxuXHRcdCkgYXMgTWVzc2FnZVBvcG92ZXI7XG5cdFx0dGhpcy5nZXRDb250ZW50KCk/LmFkZERlcGVuZGVudCh0aGlzLl9tZXNzYWdlUG9wb3Zlcik7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLl9tZXNzYWdlUG9wb3Zlci5vcGVuQnkodGhpcy5nZXRDb250ZW50KCkgYXMgQnV0dG9uKTtcblx0XHR9LCAwKTtcblx0fVxuXHQvKipcblx0ICogSGFuZGxlcyBhY3RpdmUgdGl0bGUgcHJlc3MuXG5cdCAqXG5cdCAqIElmIGFuIGFjdGl2ZVRpdGxlSGFuZGxlciBpcyBwcm92aWRlZCBieSB0aGUgY29uc3VtZXIgdmlhIHRoZSBjb250cm9sbGVyIGV4dGVuc2lvbiB0aGVuIGl0IGlzIGNhbGxlZC5cblx0ICogT3RoZXJ3aXNlLCB3ZSB0cnkgdG8gZm9jdXMgb24gdGhlIGNvbnRyb2wgaWYgYSBjb250cm9sIElkIGluIHRoZSBtZXNzYWdlIGlzIGF2YWlsYWJsZS5cblx0ICogQHBhcmFtIG1lc3NhZ2VJdGVtXG5cdCAqL1xuXHRoYW5kbGVBY3RpdmVUaXRsZVByZXNzKG1lc3NhZ2VJdGVtPzogTWVzc2FnZUl0ZW0pOiB2b2lkIHtcblx0XHRpZiAobWVzc2FnZUl0ZW0pIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2VEZXRhaWwgPSB0aGlzLl9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXBbbWVzc2FnZUl0ZW0/LmdldElkKCldO1xuXHRcdFx0aWYgKG1lc3NhZ2VEZXRhaWwuYWN0aXZlVGl0bGVIYW5kbGVyKSB7XG5cdFx0XHRcdG1lc3NhZ2VEZXRhaWwuYWN0aXZlVGl0bGVIYW5kbGVyKG1lc3NhZ2VEZXRhaWwubWVzc2FnZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBjb250cm9sSWQgPSBtZXNzYWdlRGV0YWlsLm1lc3NhZ2UuZ2V0Q29udHJvbElkKCk7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2wgPSBVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRyb2xJZCk7XG5cdFx0XHRcdGlmIChjb250cm9sKSB7XG5cdFx0XHRcdFx0Y29udHJvbC5mb2N1cygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy5lcnJvcihcIm1lc3NhZ2UgaXRlbSBub3QgZm91bmQhXCIpO1xuXHRcdH1cblx0fVxuXG5cdGRlc3Ryb3koKTogdm9pZCB7XG5cdFx0dGhpcy5fbW1Qcm9wZXJ0eUJpbmRpbmcuZGVzdHJveSgpO1xuXHR9XG5cdC8qKlxuXHQgKiBUb2dnbGUgaGFuZGxlciBmb3IgdGhlIG1lc3NhZ2UgcG9wb3Zlci5cblx0ICovXG5cdHRvZ2dsZU1lc3NhZ2VQb3BvdmVyKCk6IHZvaWQge1xuXHRcdHRoaXMuX21lc3NhZ2VQb3BvdmVyLnRvZ2dsZSh0aGlzLmNvbnRlbnQgYXMgQnV0dG9uKTtcblx0fVxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgY29udGVudCBmb3IgdGhlIGJ1aWxkaW5nIGJsb2NrLlxuXHQgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBjb250ZW50IGNvbnRyb2wuXG5cdCAqL1xuXHRjcmVhdGVDb250ZW50KCk6IEJ1dHRvbiB7XG5cdFx0cmV0dXJuIDxCdXR0b24gdmlzaWJsZT1cImZhbHNlXCIgcHJlc3M9e3RoaXMudG9nZ2xlTWVzc2FnZVBvcG92ZXIuYmluZCh0aGlzKX0gLz47XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBWEEsSUFhcUJBLGFBQWEsSUFBQUMsSUFBQSxHQURqQ0MsY0FBYyxDQUFDLDZCQUE2QixDQUFDLEVBQUFDLEtBQUEsR0FNNUNDLEtBQUssQ0FBQyxDQUFDLEVBQUFILElBQUEsQ0FBQUksTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxjQUFBO0lBV1IsU0FBQVAsY0FBWVEsWUFBbUQsRUFBRUMsUUFBc0MsRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDeEdBLEtBQUEsR0FBQUgsY0FBQSxDQUFBSSxJQUFBLE9BQU1ILFlBQVksRUFBRUMsUUFBUSxDQUFDO01BaEI5QjtBQUNEO0FBQ0E7QUFDQTtNQUhDRywwQkFBQSxDQUFBRixLQUFBLHNCQUFBRyxXQUFBLEVBQUFILEtBQUE7TUFBQUEsS0FBQSxDQWFBSSw0QkFBNEIsR0FBa0MsQ0FBQyxDQUFDO01BQUEsT0FBQUosS0FBQTtJQUloRTtJQUNBO0FBQ0Q7QUFDQTtJQUZDSyxRQUFBLEdBQUFmLGFBQUE7SUFBQWdCLGNBQUEsQ0FBQWhCLGFBQUEsRUFBQU8sY0FBQTtJQUFBLElBQUFVLE1BQUEsR0FBQWpCLGFBQUEsQ0FBQWtCLFNBQUE7SUFBQUQsTUFBQSxDQUdBRSxtQkFBbUIsR0FBbkIsU0FBQUEsbUJBQW1CQSxDQUFBLEVBQVM7TUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQ0MsT0FBTyxFQUFFO1FBQ2xCLElBQUksQ0FBQ0EsT0FBTyxHQUFHLElBQUksQ0FBQ0MsYUFBYSxDQUFDLENBQUM7TUFDcEM7TUFDQTtNQUNBLElBQUksQ0FBQ0MsYUFBYSxHQUFHQyxTQUFTLENBQUNDLGVBQWUsQ0FBQyxDQUFDO01BQ2hELElBQUksQ0FBQ0Msa0JBQWtCLEdBQUcsSUFBSSxDQUFDSCxhQUFhLENBQUNJLFlBQVksQ0FBQyxHQUFHLENBQUM7TUFDOUQsSUFBSSxDQUFDRCxrQkFBa0IsQ0FBQ0UsWUFBWSxDQUFDLElBQUksQ0FBQ0MsZUFBZSxFQUFFLElBQUksQ0FBQztNQUNoRSxNQUFNQyxhQUFhLEdBQUc7UUFDckJDLGlCQUFpQixFQUFFQSxDQUFBLEtBQVk7VUFDOUIsSUFBSSxDQUFDRixlQUFlLENBQUMsQ0FBQztVQUN0QixJQUFJLENBQUNHLG1CQUFtQixDQUFDRixhQUFhLENBQUM7UUFDeEM7TUFDRCxDQUFDO01BQ0QsSUFBSSxDQUFDRyxnQkFBZ0IsQ0FBQ0gsYUFBYSxDQUFDO0lBQ3JDOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQVJDO0lBQUFaLE1BQUEsQ0FTTVcsZUFBZSxHQUFyQixlQUFNQSxlQUFlQSxDQUFBLEVBQWtCO01BQ3RDLE1BQU1LLFFBQW1CLEdBQUcsSUFBSSxDQUFDWCxhQUFhLEVBQUVZLE9BQU8sQ0FBQyxDQUFDOztNQUV6RDtNQUNBLE1BQU1DLGNBQWMsR0FBR0YsUUFBUSxDQUFDRyxNQUFNLENBQUMsQ0FBQ0MsZUFBZ0MsRUFBRUMsT0FBTyxLQUFzQjtRQUN0RyxNQUFNQyxPQUFPLEdBQUdELE9BQU8sQ0FBQ0UsVUFBVSxDQUFDLENBQUMsQ0FBQ0MsTUFBTSxHQUFHLENBQUM7UUFDL0MsTUFBTUMsa0JBQWtCLEdBQUdKLE9BQU8sQ0FBQ0ssWUFBWSxDQUFDLENBQUM7UUFDakQsSUFBSUosT0FBTyxJQUFJLENBQUNHLGtCQUFrQixFQUFFO1VBQ25DTCxlQUFlLENBQUNPLElBQUksQ0FBQztZQUFFTjtVQUFRLENBQUMsQ0FBQztRQUNsQztRQUNBLE9BQU9ELGVBQWU7TUFDdkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQztNQUVOLElBQUlGLGNBQWMsSUFBSUEsY0FBYyxDQUFDTSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2hELE1BQU0sSUFBSSxDQUFDSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUNDLGNBQWMsQ0FBQ0MsdUJBQXVCLENBQUNaLGNBQWMsQ0FBQztNQUN0RjtNQUNBLElBQUksQ0FBQ2EsNkJBQTZCLENBQUNiLGNBQWMsQ0FBQztJQUNuRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FSQztJQUFBbEIsTUFBQSxDQVNBK0IsNkJBQTZCLEdBQTdCLFNBQUFBLDZCQUE2QkEsQ0FBQ2IsY0FBK0IsRUFBUTtNQUNwRSxJQUFJLENBQUNyQiw0QkFBNEIsR0FBRyxDQUFDLENBQUM7TUFDdEMsSUFBSXFCLGNBQWMsSUFBSUEsY0FBYyxDQUFDTSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2hELE1BQU1RLGtCQUFrQixHQUFHO1VBQzFCQyxLQUFLLEVBQUUsQ0FBQztVQUNSQyxPQUFPLEVBQUUsQ0FBQztVQUNWQyxPQUFPLEVBQUUsQ0FBQztVQUNWQyxXQUFXLEVBQUUsQ0FBQztVQUNkQyxJQUFJLEVBQUU7UUFDUCxDQUFDO1FBRUQsSUFBSUMsd0JBQXdCLEdBQUdOLGtCQUFrQixDQUFDSyxJQUFJLENBQUMsQ0FBQztRQUN4RCxJQUFJRSxVQUFVLEdBQUcsQ0FBQztRQUNsQixNQUFNQyxZQUEyQixHQUFHLEVBQUU7UUFDdEMsS0FBSyxNQUFNQyxhQUFhLElBQUl2QixjQUFjLEVBQUU7VUFDM0MsTUFBTUcsT0FBTyxHQUFHb0IsYUFBYSxDQUFDcEIsT0FBTztVQUNyQyxNQUFNcUIsV0FBVyxHQUFHckIsT0FBTyxDQUFDc0IsT0FBTyxDQUFDLENBQUM7VUFDckMsTUFBTUMsZUFBZSxHQUFHWixrQkFBa0IsQ0FBQ1UsV0FBVyxDQUFDO1VBQ3ZELElBQUlFLGVBQWUsR0FBR04sd0JBQXdCLEVBQUU7WUFDL0NBLHdCQUF3QixHQUFHTSxlQUFlO1VBQzNDO1VBQ0EsSUFBSUYsV0FBVyxLQUFLRyxXQUFXLENBQUNaLEtBQUssRUFBRTtZQUN0Q00sVUFBVSxFQUFFO1VBQ2I7VUFDQUMsWUFBWSxDQUFDYixJQUFJLENBQUMsSUFBSSxDQUFDbUIsaUJBQWlCLENBQUNMLGFBQWEsQ0FBQyxDQUFDO1FBQ3pEOztRQUVBOztRQUVBO1FBQ0EsSUFBSSxDQUFDTSxVQUFVLENBQUMsQ0FBQyxFQUFFQyxPQUFPLENBQUM5QixjQUFjLENBQUNNLE1BQU0sQ0FBQ3lCLFFBQVEsQ0FBQyxDQUFDLENBQUM7O1FBRTVEO1FBQ0EsTUFBTUMscUJBQXFCLEdBQUcsQ0FDN0JDLFVBQVUsQ0FBQ0MsUUFBUSxFQUNuQkQsVUFBVSxDQUFDRSxRQUFRLEVBQ25CRixVQUFVLENBQUNoQixPQUFPLEVBQ2xCZ0IsVUFBVSxDQUFDRyxPQUFPLEVBQ2xCSCxVQUFVLENBQUNJLE9BQU8sQ0FDbEI7UUFDRCxJQUFJLENBQUNSLFVBQVUsQ0FBQyxDQUFDLEVBQUVTLE9BQU8sQ0FBQ04scUJBQXFCLENBQUNaLHdCQUF3QixDQUFDLENBQUM7O1FBRTNFO1FBQ0EsTUFBTW1CLHFCQUFxQixHQUFHLENBQzdCLGdEQUFnRCxFQUNoRCxvREFBb0QsRUFDcEQsNERBQTRELEVBQzVELHlEQUF5RCxFQUN6RCxFQUFFLENBQ0Y7UUFDRCxNQUFNQyxVQUFVLEdBQ2ZuQixVQUFVLEdBQUcsQ0FBQyxHQUNYLDJEQUEyRCxHQUMzRGtCLHFCQUFxQixDQUFDbkIsd0JBQXdCLENBQUM7UUFDbkQsSUFBSXFCLFdBQVcsR0FBRyxJQUFJLENBQUNDLGlCQUFpQixDQUFDRixVQUFVLENBQUM7UUFDcEQsSUFBSW5CLFVBQVUsR0FBRyxDQUFDLEVBQUU7VUFDbkJvQixXQUFXLEdBQUcsR0FBR3BCLFVBQVUsS0FBS29CLFdBQVcsRUFBRTtRQUM5QztRQUNBLElBQUksQ0FBQ1osVUFBVSxDQUFDLENBQUMsRUFBRWMsVUFBVSxDQUFDRixXQUFXLENBQUM7O1FBRTFDO1FBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQ1osVUFBVSxDQUFDLENBQUMsRUFBRWUsVUFBVSxDQUFDLENBQUMsRUFBRTtVQUNyQyxJQUFJLENBQUNmLFVBQVUsQ0FBQyxDQUFDLEVBQUVnQixVQUFVLENBQUMsSUFBSSxDQUFDO1VBQ25DLElBQUksQ0FBQ0MsU0FBUyxDQUFDLGtCQUFrQixFQUFFO1lBQUVDLE9BQU8sRUFBRSxJQUFJLENBQUNsQixVQUFVLENBQUMsQ0FBQyxFQUFFZSxVQUFVLENBQUM7VUFBRSxDQUFDLENBQUM7UUFDakY7O1FBRUE7UUFDQSxJQUFJLENBQUNJLG9CQUFvQixDQUFDMUIsWUFBWSxDQUFDO01BQ3hDO01BRUEsSUFBSXRCLGNBQWMsQ0FBQ00sTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNoQyxJQUFJLElBQUksQ0FBQ3VCLFVBQVUsQ0FBQyxDQUFDLEVBQUVlLFVBQVUsQ0FBQyxDQUFDLEVBQUU7VUFDcEMsSUFBSSxDQUFDZixVQUFVLENBQUMsQ0FBQyxFQUFFZ0IsVUFBVSxDQUFDLEtBQUssQ0FBQztVQUNwQyxJQUFJLENBQUNDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRTtZQUFFQyxPQUFPLEVBQUUsSUFBSSxDQUFDbEIsVUFBVSxDQUFDLENBQUMsRUFBRWUsVUFBVSxDQUFDO1VBQUUsQ0FBQyxDQUFDO1FBQ2pGO01BQ0Q7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQTlELE1BQUEsQ0FLQThDLGlCQUFpQixHQUFqQixTQUFBQSxpQkFBaUJBLENBQUNMLGFBQTRCLEVBQWU7TUFDNUQsTUFBTXBCLE9BQU8sR0FBR29CLGFBQWEsQ0FBQ3BCLE9BQU87TUFDckMsTUFBTThDLFdBQVcsR0FDaEJDLElBQUEsQ0FBQ0MsV0FBVztRQUNYQyxLQUFLLEVBQUVqRCxPQUFPLENBQUNrRCxVQUFVLENBQUMsQ0FBRTtRQUM1QkMsV0FBVyxFQUFFbkQsT0FBTyxDQUFDb0QsY0FBYyxDQUFDLENBQUU7UUFDdENDLElBQUksRUFBRXJELE9BQU8sQ0FBQ3NCLE9BQU8sQ0FBQyxDQUFFO1FBQ3hCZ0MsaUJBQWlCLEVBQUUsSUFBSztRQUN4QkMsV0FBVyxFQUFFdkQsT0FBTyxDQUFDd0QsaUJBQWlCLENBQUMsQ0FBRTtRQUN6Q0MsUUFBUSxFQUFFekQsT0FBTyxDQUFDMEQsaUJBQWlCLENBQUMsQ0FBRTtRQUN0Q0MsU0FBUyxFQUFFdkMsYUFBYSxDQUFDdUMsU0FBUyxJQUFJLElBQUksQ0FBQ3BCLGlCQUFpQixDQUFDLDhDQUE4QyxDQUFFO1FBQzdHcUIsV0FBVyxFQUFFNUQsT0FBTyxDQUFDNkQsYUFBYSxDQUFDLENBQUMsQ0FBQzFELE1BQU0sR0FBRyxDQUFDLElBQUksT0FBT2lCLGFBQWEsQ0FBQzBDLGtCQUFrQixLQUFLO01BQVcsQ0FDMUcsQ0FDYztNQUNoQixJQUFJLENBQUN0Riw0QkFBNEIsQ0FBQ3NFLFdBQVcsQ0FBQ2lCLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRzNDLGFBQWE7TUFDdEUsT0FBTzBCLFdBQVc7SUFDbkI7O0lBRUE7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBbkUsTUFBQSxDQUlBa0Usb0JBQW9CLEdBQXBCLFNBQUFBLG9CQUFvQkEsQ0FBQzFCLFlBQTJCLEVBQVE7TUFDdkQsSUFBSSxDQUFDNkMsZUFBZSxFQUFFQyxPQUFPLENBQUMsQ0FBQztNQUMvQixJQUFJLENBQUNELGVBQWUsR0FDbkJqQixJQUFBLENBQUNtQixjQUFjO1FBQ2RDLFVBQVUsRUFBRSxJQUFLO1FBQ2pCQyxnQkFBZ0IsRUFBR0MsVUFBZ0QsSUFBVztVQUM3RSxNQUFNdkIsV0FBVyxHQUFHdUIsVUFBVSxDQUFDQyxZQUFZLENBQUMsTUFBTSxDQUFDO1VBQ25ELElBQUksQ0FBQ0Msc0JBQXNCLENBQUN6QixXQUFXLENBQUM7UUFDekMsQ0FBRTtRQUFBMEIsUUFBQSxFQUVEO1VBQ0FDLEtBQUssRUFBRXREO1FBQ1I7TUFBQyxDQUNjLENBQ0U7TUFDbkIsSUFBSSxDQUFDTyxVQUFVLENBQUMsQ0FBQyxFQUFFZ0QsWUFBWSxDQUFDLElBQUksQ0FBQ1YsZUFBZSxDQUFDO01BQ3JEVyxVQUFVLENBQUMsTUFBTTtRQUNoQixJQUFJLENBQUNYLGVBQWUsQ0FBQ1ksTUFBTSxDQUFDLElBQUksQ0FBQ2xELFVBQVUsQ0FBQyxDQUFXLENBQUM7TUFDekQsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNOO0lBQ0E7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQztJQUFBL0MsTUFBQSxDQU9BNEYsc0JBQXNCLEdBQXRCLFNBQUFBLHNCQUFzQkEsQ0FBQ3pCLFdBQXlCLEVBQVE7TUFDdkQsSUFBSUEsV0FBVyxFQUFFO1FBQ2hCLE1BQU0xQixhQUFhLEdBQUcsSUFBSSxDQUFDNUMsNEJBQTRCLENBQUNzRSxXQUFXLEVBQUVpQixLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzdFLElBQUkzQyxhQUFhLENBQUMwQyxrQkFBa0IsRUFBRTtVQUNyQzFDLGFBQWEsQ0FBQzBDLGtCQUFrQixDQUFDMUMsYUFBYSxDQUFDcEIsT0FBTyxDQUFDO1FBQ3hELENBQUMsTUFBTTtVQUNOLE1BQU02RSxTQUFTLEdBQUd6RCxhQUFhLENBQUNwQixPQUFPLENBQUM4RSxZQUFZLENBQUMsQ0FBQztVQUN0RCxNQUFNQyxPQUFPLEdBQUdDLFVBQVUsQ0FBQ0MsY0FBYyxDQUFDSixTQUFTLENBQUM7VUFDcEQsSUFBSUUsT0FBTyxFQUFFO1lBQ1pBLE9BQU8sQ0FBQ0csS0FBSyxDQUFDLENBQUM7VUFDaEI7UUFDRDtNQUNELENBQUMsTUFBTTtRQUNOQyxHQUFHLENBQUNDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQztNQUNyQztJQUNELENBQUM7SUFBQXpHLE1BQUEsQ0FFRHNGLE9BQU8sR0FBUCxTQUFBQSxPQUFPQSxDQUFBLEVBQVM7TUFDZixJQUFJLENBQUM5RSxrQkFBa0IsQ0FBQzhFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDO0lBQ0E7QUFDRDtBQUNBLE9BRkM7SUFBQXRGLE1BQUEsQ0FHQTBHLG9CQUFvQixHQUFwQixTQUFBQSxvQkFBb0JBLENBQUEsRUFBUztNQUM1QixJQUFJLENBQUNyQixlQUFlLENBQUNzQixNQUFNLENBQUMsSUFBSSxDQUFDeEcsT0FBaUIsQ0FBQztJQUNwRDtJQUNBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQUgsTUFBQSxDQUlBSSxhQUFhLEdBQWIsU0FBQUEsYUFBYUEsQ0FBQSxFQUFXO01BQ3ZCLE9BQU9nRSxJQUFBLENBQUN3QyxNQUFNO1FBQUMzQyxPQUFPLEVBQUMsT0FBTztRQUFDNEMsS0FBSyxFQUFFLElBQUksQ0FBQ0gsb0JBQW9CLENBQUNJLElBQUksQ0FBQyxJQUFJO01BQUUsQ0FBRSxDQUFDO0lBQy9FLENBQUM7SUFBQSxPQUFBL0gsYUFBQTtFQUFBLEVBaFB5Q2dJLGFBQWEsR0FBQW5ILFdBQUEsR0FBQW9ILHlCQUFBLENBQUEzSCxPQUFBLENBQUFZLFNBQUEsdUJBQUFmLEtBQUE7SUFBQStILFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBL0gsT0FBQSxNQUFBRCxNQUFBO0VBQUFVLFFBQUEsR0FBQWYsYUFBQTtFQUFBLE9BQUFlLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -26,7 +26,6 @@ import type MessageModel from "sap/ui/model/message/MessageModel";
|
|
|
26
26
|
* <macros:MessageButton visibilityChange=".handler.onMessageButtonVisibilityChange" />
|
|
27
27
|
* </pre>
|
|
28
28
|
* @public
|
|
29
|
-
* @experimental
|
|
30
29
|
*/
|
|
31
30
|
@defineUI5Class("sap.fe.macros.MessageButton")
|
|
32
31
|
export default class MessageButton extends BuildingBlock<Button> {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/core/helpers/BindingHelper", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/UIFormatters", "sap/fe/macros/field/FieldHelper", "sap/fe/macros/field/FieldTemplating", "sap/ui/core/CustomData", "sap/ui/mdc/MultiValueField", "sap/ui/mdc/field/MultiValueFieldItem", "sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/controllerextensions/collaboration/CollaborationCommon", "sap/fe/core/controls/FormElementWrapper", "sap/fe/core/formatters/CollaborationFormatter", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/templating/FieldControlHelper", "sap/fe/macros/field/FieldRuntime", "sap/fe/macros/multivaluefield/FormatOptions", "sap/fe/macros/multivaluefield/MultiValueFieldRuntime", "sap/m/Avatar", "sap/m/HBox", "sap/ui/base/Event", "sap/ui/core/Element", "./ValueHelp", "./field/FieldRuntimeHelper", "sap/fe/base/jsx-runtime/jsx"], function (BindingToolkit, ClassSupport, BindingHelper, ID, TypeGuards, DataModelPathHelper, UIFormatters, FieldHelper, FieldTemplating, CustomData, MultiValueField, MultiValueFieldItem, BuildingBlock, CollaborationCommon, FormElementWrapper, CollaborationFormatters, ModelHelper, FieldControlHelper, FieldRuntime, FormatOptions, MultiValueFieldRuntime, Avatar, HBox, UI5Event, Element, ValueHelp, FieldRuntimeHelper, _jsx) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10;
|
|
8
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11;
|
|
9
9
|
var _exports = {};
|
|
10
10
|
var isRequiredExpression = FieldControlHelper.isRequiredExpression;
|
|
11
11
|
var isReadOnlyExpression = FieldControlHelper.isReadOnlyExpression;
|
|
@@ -60,7 +60,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
60
60
|
* @alias sap.fe.macros.MultiValueField
|
|
61
61
|
* @public
|
|
62
62
|
* @since 1.118.0
|
|
63
|
-
* @experimental
|
|
64
63
|
*/
|
|
65
64
|
let MultiValueFieldBlock = (_dec = defineUI5Class("sap.fe.macros.MultiValueField"), _dec2 = implementInterface("sap.ui.core.IFormContent"), _dec3 = property({
|
|
66
65
|
type: "string"
|
|
@@ -85,11 +84,13 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
85
84
|
defaultClass: FormatOptions
|
|
86
85
|
}), _dec11 = property({
|
|
87
86
|
type: "boolean"
|
|
87
|
+
}), _dec12 = property({
|
|
88
|
+
type: "boolean"
|
|
88
89
|
}), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlock) {
|
|
89
90
|
// Computed properties
|
|
90
91
|
|
|
91
92
|
/**
|
|
92
|
-
* Pointed at dataField
|
|
93
|
+
* Pointed at a dataField. This can be DataFieldDefault from a property.
|
|
93
94
|
*/
|
|
94
95
|
|
|
95
96
|
/**
|
|
@@ -153,7 +154,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
153
154
|
_initializerDefineProperty(_this, "contextPath", _descriptor7, _this);
|
|
154
155
|
/**
|
|
155
156
|
* Property added to be able to add data / items to the multi-input field using a different model
|
|
156
|
-
* @experimental
|
|
157
157
|
* @public
|
|
158
158
|
*/
|
|
159
159
|
_initializerDefineProperty(_this, "items", _descriptor8, _this);
|
|
@@ -163,6 +163,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
163
163
|
*/
|
|
164
164
|
_initializerDefineProperty(_this, "formatOptions", _descriptor9, _this);
|
|
165
165
|
_initializerDefineProperty(_this, "_isInEditMode", _descriptor10, _this);
|
|
166
|
+
_initializerDefineProperty(_this, "useParentBindingCache", _descriptor11, _this);
|
|
166
167
|
return _this;
|
|
167
168
|
}
|
|
168
169
|
|
|
@@ -213,7 +214,10 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
213
214
|
collectionPath,
|
|
214
215
|
itemDataModelObjectPath
|
|
215
216
|
} = MultiValueFieldBlock._getPathStructure(propertyDataModelObjectPath);
|
|
216
|
-
const collectionBinding = {
|
|
217
|
+
const collectionBinding = this.useParentBindingCache ? {
|
|
218
|
+
path: collectionPath,
|
|
219
|
+
templateShareable: false
|
|
220
|
+
} : {
|
|
217
221
|
path: collectionPath,
|
|
218
222
|
parameters: {
|
|
219
223
|
$$ownRequest: true
|
|
@@ -632,8 +636,15 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
632
636
|
initializer: function () {
|
|
633
637
|
return false;
|
|
634
638
|
}
|
|
639
|
+
}), _descriptor11 = _applyDecoratedDescriptor(_class2.prototype, "useParentBindingCache", [_dec12], {
|
|
640
|
+
configurable: true,
|
|
641
|
+
enumerable: true,
|
|
642
|
+
writable: true,
|
|
643
|
+
initializer: function () {
|
|
644
|
+
return false;
|
|
645
|
+
}
|
|
635
646
|
}), _class2)) || _class);
|
|
636
647
|
_exports = MultiValueFieldBlock;
|
|
637
648
|
return _exports;
|
|
638
649
|
}, false);
|
|
639
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNdWx0aVZhbHVlRmllbGRCbG9jayIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzMiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjNCIsImFzc29jaWF0aW9uIiwiX2RlYzUiLCJfZGVjNiIsInJlcXVpcmVkIiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiaXNCaW5kaW5nSW5mbyIsIl9kZWMxMCIsImFnZ3JlZ2F0aW9uIiwibXVsdGlwbGUiLCJkZWZhdWx0Q2xhc3MiLCJGb3JtYXRPcHRpb25zIiwiX2RlYzExIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcHMiLCJvdGhlcnMiLCJfdGhpcyIsIl9pc0luRWRpdE1vZGUiLCJjb21waWxlRXhwcmVzc2lvbiIsIlVJIiwiSXNFZGl0YWJsZSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJfb3ZlcnJpZGVWYWx1ZSIsImNvbGxlY3Rpb25CaW5kaW5nIiwiaXRlbURhdGFNb2RlbE9iamVjdFBhdGgiLCJ0ZXh0RXhwcmVzc2lvbiIsImtleSIsIml0ZW1zIiwibW9kZWwiLCJtb2RlbE5hbWUiLCJwYXRoIiwiY29tbW9uVGFyZ2V0T2JqZWN0UHJvcGVydHkiLCJ0YXJnZXRPYmplY3QiLCJjb21tb25Qcm9wZXJ0eVBhdGgiLCJuYW1lIiwiaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24iLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIlRleHQiLCJkZXNjcmlwdGlvbiIsIl9nZXRNdWx0aUlucHV0U2V0dGluZ3MiLCJwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgiLCJmb3JtYXRPcHRpb25zIiwiY29sbGVjdGlvblBhdGgiLCJfZ2V0UGF0aFN0cnVjdHVyZSIsInBhcmFtZXRlcnMiLCIkJG93blJlcXVlc3QiLCJ0ZW1wbGF0ZVNoYXJlYWJsZSIsInByb3BlcnR5UGF0aE9yUHJvcGVydHkiLCJwcm9wZXJ0eURlZmluaXRpb24iLCJpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24iLCIkdGFyZ2V0IiwiY29tbW9uVGV4dCIsInJlbGF0aXZlTG9jYXRpb24iLCJnZXRSZWxhdGl2ZVBhdGhzIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiZ2V0VmFsdWVCaW5kaW5nIiwiZGlzcGxheU9ubHkiLCJsZW5ndGgiLCJkYXRhTW9kZWxPYmplY3RQYXRoIiwiZmlyc3RDb2xsZWN0aW9uUGF0aCIsImN1cnJlbnRFbnRpdHlTZXQiLCJjb250ZXh0TG9jYXRpb24iLCJ0YXJnZXRFbnRpdHlTZXQiLCJzdGFydGluZ0VudGl0eVNldCIsIm5hdmlnYXRlZFBhdGhzIiwiY29udGV4dE5hdnNGb3JJdGVtIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJuYXZQcm9wIiwidW5kZWZpbmVkIiwic29tZSIsImNvbnRleHROYXZQcm9wIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwicHVzaCIsIm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJoYXNPd25Qcm9wZXJ0eSIsImlzTXVsdGlwbGVOYXZpZ2F0aW9uUHJvcGVydHkiLCJqb2luIiwiT2JqZWN0IiwiYXNzaWduIiwiY29tcHV0ZUZpZWxkR3JvdXBJZHMiLCJhcHBDb21wb25lbnQiLCJzaWRlRWZmZWN0U2VydmljZSIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsImZpZWxkR3JvdXBJZHMiLCJkYXRhTW9kZWxQYXRoIiwidGFyZ2V0RW50aXR5VHlwZSIsImNvbGxhYm9yYXRpb25FbmFibGVkIiwiY29sbGFib3JhdGlvbkZpZWxkR3JvdXAiLCJDb2xsYWJvcmF0aW9uRmllbGRHcm91cFByZWZpeCIsImRhdGFTb3VyY2VQYXRoIiwicmVzdWx0IiwiaW5pdGlhbGl6ZSIsIm1ldGFDb250ZXh0UGF0aCIsIm93bmVyIiwiX2dldE93bmVyIiwiY29udGV4dFBhdGgiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZnVsbENvbnRleHRQYXRoIiwib2RhdGFNZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJtZXRhQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0UGF0aCIsIm1ldGFQYXRoT2JqZWN0IiwiZ2V0VGFyZ2V0IiwiaXNQcm9wZXJ0eSIsIkRhdGFGaWVsZERlZmF1bHQiLCJlbmhhbmNlZE1ldGFQYXRoIiwiZGF0YUZpZWxkRGF0YU1vZGVsUGF0aCIsImdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoIiwiY29udmVydGVkRGF0YUZpZWxkIiwiZW5oYW5jZURhdGFNb2RlbFBhdGgiLCJWYWx1ZSIsImdldFRhcmdldE9iamVjdFBhdGgiLCJpbnNlcnRhYmxlIiwiaXNQYXRoSW5zZXJ0YWJsZSIsImRlbGV0ZU5hdmlnYXRpb25SZXN0cmljdGlvbiIsImlzUGF0aERlbGV0YWJsZSIsImlnbm9yZVRhcmdldENvbGxlY3Rpb24iLCJhdXRob3JpemVVbnJlc29sdmFibGUiLCJkZWxldGVQYXRoIiwiZGVsZXRhYmxlIiwiaWZFbHNlIiwiX3R5cGUiLCJvciIsIm5vdCIsImlzQ29uc3RhbnQiLCJjb25zdGFudCIsInJlYWRPbmx5IiwidmlzaWJsZSIsImdldFZpc2libGVFeHByZXNzaW9uIiwiaW5zZXJ0YWJsZUFuZERlbGV0YWJsZSIsImFuZCIsImNvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiY29tcHV0ZUNvbGxhYm9yYXRpb25Qcm9wZXJ0aWVzIiwiaXNQcm9wZXJ0eUluaXRpYWwiLCJlZGl0TW9kZSIsImVxdWFsIiwiaXNSZWFkT25seUV4cHJlc3Npb24iLCJkaXNwbGF5TW9kZSIsImdldERpc3BsYXlNb2RlIiwibG9jYWxEYXRhTW9kZWxQYXRoIiwiaXRlbSIsImNvbGxlY3Rpb24iLCJnZXRBcHBDb21wb25lbnQiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiY29udGVudCIsImNyZWF0ZUNvbnRlbnQiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsIk1vZGVsSGVscGVyIiwiVUlGb3JtYXR0ZXJzIiwiZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24iLCJDb2xsYWJvcmF0aW9uRm9ybWF0dGVycyIsImhhc0NvbGxhYm9yYXRpb25BY3Rpdml0eSIsImNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb24iLCJnZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlJbml0aWFscyIsImNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24iLCJnZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlDb2xvciIsImdldFJlcXVpcmVkIiwiZ2V0TXVsdGlWYWx1ZUZpZWxkIiwiZ2V0SXRlbXMiLCJnZXRNZXRhUGF0aE9iamVjdCIsIm1ldGFQYXRoIiwiaWQiLCJ2aElkUHJlZml4IiwiSUQiLCJnZW5lcmF0ZSIsImdldElkIiwiY3JlYXRlSWQiLCJjb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2xsZXIiLCJ2aWV3IiwiZ2V0VmlldyIsImNvbnRleHQiLCJnZXRDb250ZXh0UGF0aCIsIml0ZW1zQWdncmVnYXRpb24iLCJjdXN0b21BZ2dyZWdhdGlvbkxlbmd0aCIsImdldE1hbmlmZXN0RW50cnkiLCJtYWNyb3MiLCJtdWx0aVZhbHVlRmllbGQiLCJpdGVtc1NpemVMaW1pdCIsImxhYmVsIiwiRmllbGRIZWxwZXIiLCJjb21wdXRlTGFiZWxUZXh0IiwidmhDb250cm9sIiwiVmFsdWVIZWxwIiwiZ2V0VmFsdWVIZWxwRm9yTWV0YVBhdGgiLCJnZXRQYWdlQ29udHJvbGxlciIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJnZXRPd25lckNvbnRleHRQYXRoIiwidmFsdWVIZWxwIiwiZ2V0Q29udGVudCIsIl9qc3giLCJNdWx0aVZhbHVlRmllbGQiLCJkZWxlZ2F0ZSIsImRpc3BsYXkiLCJ3aWR0aCIsImFyaWFMYWJlbGxlZEJ5Iiwic2hvd0VtcHR5SW5kaWNhdG9yIiwiaXNSZXF1aXJlZEV4cHJlc3Npb24iLCJjaGFuZ2UiLCJNdWx0aVZhbHVlRmllbGRSdW50aW1lIiwiaGFuZGxlQ2hhbmdlIiwiYmluZCIsInZhbGlkYXRlRmllbGRHcm91cCIsIkZpZWxkUnVudGltZSIsIm9uVmFsaWRhdGVGaWVsZEdyb3VwIiwiY2hpbGRyZW4iLCJNdWx0aVZhbHVlRmllbGRJdGVtIiwiY3VzdG9tRGF0YSIsIkN1c3RvbURhdGEiLCJ2YWx1ZSIsImZvcm13cmFwcGVyIiwiYXZhdGFyIiwiQXZhdGFyIiwiaW5pdGlhbHMiLCJkaXNwbGF5U2l6ZSIsImN1c3RvbURpc3BsYXlTaXplIiwiY3VzdG9tRm9udFNpemUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmVzcyIsIkZpZWxkUnVudGltZUhlbHBlciIsInNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXIiLCJGb3JtRWxlbWVudFdyYXBwZXIiLCJIQm94IiwicmVuZGVyVHlwZSIsImFsaWduSXRlbXMiLCJhZGRFdmVudERlbGVnYXRlIiwib25mb2N1c2luIiwiZXZ0IiwiY3VycmVudE11bHRpVmFsdWVGaWVsZCIsInNyY0NvbnRyb2wiLCJnZXRQYXJlbnQiLCJjb2xsYWJvcmF0aXZlRHJhZnQiLCJoYW5kbGVDb250ZW50Rm9jdXNJbiIsInZhbHVlSGVscENvbnRyb2wiLCJnZXREb21SZWYiLCJhdHRhY2hFdmVudE9uY2UiLCJmb2N1cyIsIm9uZm9jdXNvdXQiLCJpc0EiLCJldmVudCIsIlVJNUV2ZW50IiwiZ2V0RmllbGRHcm91cElkcyIsImhhbmRsZUNvbnRlbnRGb2N1c091dCIsIkVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImdldFZhbHVlSGVscCIsImF0dGFjaE9wZW5lZCIsImdldFNvdXJjZSIsImdldENvbnRyb2wiLCJhZGRDdXN0b21EYXRhIiwic2V0UmVhZE9ubHkiLCJzZXRQcm9wZXJ0eSIsInVwZGF0ZUVkaXRNb2RlIiwic2V0X2lzSW5FZGl0TW9kZSIsImluRWRpdE1vZGUiLCJtdWx0aXZhbHVlRmllbGQiLCJkYXRhIiwic2V0RWRpdE1vZGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsImFBcmlhTGFiZWxsZWRCeSIsImdldEFyaWFMYWJlbGxlZEJ5Iiwic0lkIiwiYUFyaWFMYWJlbGxlZEJ5cyIsImluY2x1ZGVzIiwiYWRkQXJpYUxhYmVsbGVkQnkiLCJCdWlsZGluZ0Jsb2NrIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJNdWx0aVZhbHVlRmllbGQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBQcm9wZXJ0eVBhdGggfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFGaWVsZCwgRGF0YUZpZWxkVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UZXJtcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHtcblx0YW5kLFxuXHRjb21waWxlRXhwcmVzc2lvbixcblx0Y29uc3RhbnQsXG5cdGVxdWFsLFxuXHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sXG5cdGlmRWxzZSxcblx0aXNDb25zdGFudCxcblx0bm90LFxuXHRvclxufSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7XG5cdGFnZ3JlZ2F0aW9uLFxuXHRhc3NvY2lhdGlvbixcblx0ZGVmaW5lVUk1Q2xhc3MsXG5cdGltcGxlbWVudEludGVyZmFjZSxcblx0cHJvcGVydHksXG5cdHR5cGUgRW5oYW5jZVdpdGhVSTUsXG5cdHR5cGUgUHJvcGVydGllc09mXG59IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgeyBVSSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCAqIGFzIElEIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQge1xuXHRpc011bHRpcGxlTmF2aWdhdGlvblByb3BlcnR5LFxuXHRpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0aXNQcm9wZXJ0eSxcblx0aXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7XG5cdGVuaGFuY2VEYXRhTW9kZWxQYXRoLFxuXHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLFxuXHRnZXRSZWxhdGl2ZVBhdGhzLFxuXHRnZXRUYXJnZXRPYmplY3RQYXRoLFxuXHRpc1BhdGhEZWxldGFibGUsXG5cdGlzUGF0aEluc2VydGFibGVcbn0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEaXNwbGF5TW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHsgZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24sIGdldERpc3BsYXlNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgRmllbGRIZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRIZWxwZXJcIjtcbmltcG9ydCB7IGdldFZhbHVlQmluZGluZywgZ2V0VmlzaWJsZUV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCB0eXBlIFRva2VuaXplciBmcm9tIFwic2FwL20vVG9rZW5pemVyXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5QmluZGluZ0luZm8gfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCBNdWx0aVZhbHVlRmllbGQgZnJvbSBcInNhcC91aS9tZGMvTXVsdGlWYWx1ZUZpZWxkXCI7XG5pbXBvcnQgdHlwZSBGaWVsZEVkaXRNb2RlIGZyb20gXCJzYXAvdWkvbWRjL2VudW1zL0ZpZWxkRWRpdE1vZGVcIjtcbmltcG9ydCBNdWx0aVZhbHVlRmllbGRJdGVtIGZyb20gXCJzYXAvdWkvbWRjL2ZpZWxkL011bHRpVmFsdWVGaWVsZEl0ZW1cIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5cbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2sgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tcIjtcbmltcG9ydCB7IENvbGxhYm9yYXRpb25GaWVsZEdyb3VwUHJlZml4IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IEZvcm1FbGVtZW50V3JhcHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvRm9ybUVsZW1lbnRXcmFwcGVyXCI7XG5pbXBvcnQgKiBhcyBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9Db2xsYWJvcmF0aW9uRm9ybWF0dGVyXCI7XG5pbXBvcnQgdHlwZSBNZXRhUGF0aCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9NZXRhUGF0aFwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBpc1JlYWRPbmx5RXhwcmVzc2lvbiwgaXNSZXF1aXJlZEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9GaWVsZENvbnRyb2xIZWxwZXJcIjtcbmltcG9ydCAqIGFzIFVJRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCBGaWVsZFJ1bnRpbWUgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRSdW50aW1lXCI7XG5pbXBvcnQgRm9ybWF0T3B0aW9ucyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tdWx0aXZhbHVlZmllbGQvRm9ybWF0T3B0aW9uc1wiO1xuaW1wb3J0IE11bHRpVmFsdWVGaWVsZFJ1bnRpbWUgZnJvbSBcInNhcC9mZS9tYWNyb3MvbXVsdGl2YWx1ZWZpZWxkL011bHRpVmFsdWVGaWVsZFJ1bnRpbWVcIjtcbmltcG9ydCBBdmF0YXIgZnJvbSBcInNhcC9tL0F2YXRhclwiO1xuaW1wb3J0IEhCb3ggZnJvbSBcInNhcC9tL0hCb3hcIjtcbmltcG9ydCBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgRWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE1kY1ZhbHVlSGVscCwgVmFsdWVIZWxwJE9wZW5lZEV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvVmFsdWVIZWxwXCI7XG5pbXBvcnQgdHlwZSB7IE1ldGFNb2RlbFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvbWV0YW1vZGVsX3R5cGVzXCI7XG5pbXBvcnQgVmFsdWVIZWxwIGZyb20gXCIuL1ZhbHVlSGVscFwiO1xuaW1wb3J0IEZpZWxkUnVudGltZUhlbHBlciBmcm9tIFwiLi9maWVsZC9GaWVsZFJ1bnRpbWVIZWxwZXJcIjtcblxudHlwZSBNdWx0aUlucHV0U2V0dGluZ3MgPSB7XG5cdGRlc2NyaXB0aW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRjb2xsZWN0aW9uQmluZGluZzogUHJvcGVydHlCaW5kaW5nSW5mbztcblx0a2V5OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRkaXNwbGF5T25seT86IGJvb2xlYW47XG59O1xuXG50eXBlIE11bHRpVmFsdWVGaWVsZFBhdGhTdHJ1Y3R1cmUgPSB7XG5cdGNvbGxlY3Rpb25QYXRoOiBzdHJpbmc7XG5cdGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pjtcbn07XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgTXVsdGlWYWx1ZUZpZWxkIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqIDxicj5cbiAqIFRoZSBNdWx0aVZhbHVlRmllbGQgY2FuIGJlIHVzZWQgdG8gZGlzcGxheSBlaXRoZXIgYSBEYXRhRmllbGQgb3IgUHJvcGVydHkgZGlyZWN0bHkuIEl0IGhhcyB0byBwb2ludCB0byBhIGNvbGxlY3Rpb24gcHJvcGVydHkuXG4gKiA8YnI+XG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNybzpNdWx0aVZhbHVlRmllbGRcbiAqIGlkPVwiU29tZVVuaXF1ZUlkZW50aWZpZXJcIlxuICogY29udGV4dFBhdGg9XCJ7ZW50aXR5U2V0Jmd0O31cIlxuICogbWV0YVBhdGg9XCJ7ZGF0YUZpZWxkJmd0O31cIlxuICogLyZndDtcbiAqIDwvcHJlPlxuICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuTXVsdGlWYWx1ZUZpZWxkXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS4xMTguMFxuICogQGV4cGVyaW1lbnRhbFxuICovXG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuTXVsdGlWYWx1ZUZpZWxkXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNdWx0aVZhbHVlRmllbGRCbG9jayBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8Q29udHJvbD4ge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUZvcm1Db250ZW50XCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfSUZvcm1Db250ZW50ID0gdHJ1ZTtcblxuXHQvKipcblx0ICogVGhlICdpZCcgcHJvcGVydHlcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwdWJsaWMgaWQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFByZWZpeCBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIElEIG9mIHRoZSBmaWVsZCAtIG9ubHkgaWYgbm8gaWQgaXMgcHJvdmlkZWRcblx0ICovXG5cdEBhc3NvY2lhdGlvbih7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRpZFByZWZpeD86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJlZml4IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgSUQgb2YgdGhlIHZhbHVlIGhlbHAgdXNlZCBmb3IgdGhlIGZpZWxkXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0dmhJZFByZWZpeCE6IHN0cmluZztcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVsYXRpdmUgTWV0YWRhdGEgcGF0aCB0byB0aGUgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKiBUaGUgbWV0YVBhdGggc2hvdWxkIHBvaW50IHRvIGEgUHJvcGVydHkgb3IgRGF0YUZpZWxkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0cHVibGljIG1ldGFQYXRoITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGUgcmVhZE9ubHkgZmxhZ1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgcmVxdWlyZWQ6IGZhbHNlIH0pXG5cdHB1YmxpYyByZWFkT25seT86IGJvb2xlYW4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHQvKipcblx0ICogVGhlIGNvbnRleHQgcGF0aCBwcm92aWRlZCBmb3IgdGhlIE11bHRpVmFsdWVGaWVsZFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSBhZGRlZCB0byBiZSBhYmxlIHRvIGFkZCBkYXRhIC8gaXRlbXMgdG8gdGhlIG11bHRpLWlucHV0IGZpZWxkIHVzaW5nIGEgZGlmZmVyZW50IG1vZGVsXG5cdCAqIEBleHBlcmltZW50YWxcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImFueVwiLFxuXHRcdGlzQmluZGluZ0luZm86IHRydWVcblx0fSlcblx0cHVibGljIGl0ZW1zPzogUHJvcGVydHlCaW5kaW5nSW5mbztcblxuXHQvKipcblx0ICogVGhlIG9iamVjdCB3aXRoIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcblx0ICpcblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5tdWx0aXZhbHVlZmllbGQuRm9ybWF0T3B0aW9uc1wiLCBtdWx0aXBsZTogZmFsc2UsIGRlZmF1bHRDbGFzczogRm9ybWF0T3B0aW9ucyB9KVxuXHRmb3JtYXRPcHRpb25zPzogRm9ybWF0T3B0aW9ucztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRfaXNJbkVkaXRNb2RlOiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gPSBmYWxzZTtcblxuXHQvLyBDb21wdXRlZCBwcm9wZXJ0aWVzXG5cblx0cHJpdmF0ZSBpdGVtITogTXVsdGlJbnB1dFNldHRpbmdzO1xuXG5cdC8qKlxuXHQgKiBQb2ludGVkIGF0IGRhdGFGaWVsZCwgY2FuIGJlIERhdGFGaWVsZERlZmF1bHQgZnJvbSBhIHByb3BlcnR5LlxuXHQgKi9cblx0cHJpdmF0ZSBjb252ZXJ0ZWREYXRhRmllbGQhOiBEYXRhRmllbGQ7XG5cblx0LyoqXG5cdCAqIERhdGFNb2RlbFBhdGggZm9yIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGRpc3BsYXllZC5cblx0ICovXG5cdHByaXZhdGUgZGF0YU1vZGVsUGF0aCE6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+O1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSB0byBiZSBkaXNwbGF5ZWRcblx0ICovXG5cdHByaXZhdGUgcHJvcGVydHkhOiBQcm9wZXJ0eTtcblxuXHQvKipcblx0ICogRWRpdCBNb2RlIG9mIHRoZSBmaWVsZC5cblx0ICogSWYgdGhlIGVkaXRNb2RlIGlzIHVuZGVmaW5lZCB0aGVuIHdlIGNvbXB1dGUgaXQgYmFzZWQgb24gdGhlIG1ldGFkYXRhXG5cdCAqIE90aGVyd2lzZSB3ZSB1c2UgdGhlIHZhbHVlIHByb3ZpZGVkIGhlcmUuXG5cdCAqL1xuXHRwcml2YXRlIGVkaXRNb2RlITogRmllbGRFZGl0TW9kZSB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdC8qKlxuXHQgKiBUaGUgZGlzcGxheSBtb2RlIGFkZGVkIHRvIHRoZSBjb2xsZWN0aW9uIGZpZWxkXG5cdCAqL1xuXHRwcml2YXRlIGRpc3BsYXlNb2RlITogRGlzcGxheU1vZGU7XG5cblx0LyoqXG5cdCAqIFRoZSBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB0aGF0IGlzIGNhbGN1bGF0ZWQgaW50ZXJuYWxseVxuXHQgKi9cblx0cHJpdmF0ZSBjb2xsZWN0aW9uITogUHJvcGVydHlCaW5kaW5nSW5mbztcblxuXHRwcml2YXRlIHZpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdHByaXZhdGUgZmllbGRHcm91cElkcz86IHN0cmluZztcblxuXHRwcml2YXRlIGVuaGFuY2VkTWV0YVBhdGghOiBDb250ZXh0O1xuXG5cdHByaXZhdGUgZW5hYmxlRXhwcmVzc2lvbjogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0cHJpdmF0ZSBjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiE6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb24hOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24hOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25FbmFibGVkITogYm9vbGVhbjtcblxuXHRwcml2YXRlIGRhdGFTb3VyY2VQYXRoITogc3RyaW5nO1xuXG5cdHByaXZhdGUgaW5zZXJ0YWJsZUFuZERlbGV0YWJsZSE6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogc3RyaW5nIHwgKCRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8TXVsdGlWYWx1ZUZpZWxkQmxvY2s+KSwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdGlmICh0eXBlb2YgcHJvcHMgIT09IFwic3RyaW5nXCIpIHtcblx0XHRcdC8vIHR5cGUgb2YgcHJvcHMgY2FuIGJlIGEgc3RyaW5nIGlmIHdlIGFyZSBjbG9uaW5nIHRoZSBNdWx0aVZhbHVlRmllbGQgaW5zaWRlIGFuIGFnZ3JlZ2F0aW9uXG5cdFx0XHQvLyBpbiB0aGF0IGNhc2UgX2lzSW5FZGl0TW9kZSBoYXMgYWxyZWFkeSBiZWVuIGNvbXB1dGVkIG9uIHRoZSBvbmUgd2UgY2xvbmVcblx0XHRcdHByb3BzLl9pc0luRWRpdE1vZGUgPSBjb21waWxlRXhwcmVzc2lvbihVSS5Jc0VkaXRhYmxlKTtcblx0XHR9XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogSW4gY2FzZSBhbiBleHRlcm5hbCB2YWx1ZSBpcyBzZXQgKGUuZy4gZm9yIHByb3ZpZGluZyBkYXRhIGluIGEganNvbiBtb2RlbCkgd2UgbmVlZCB0byBvdmVycmlkZSB0aGUgYmluZGluZyBzdHJpbmdzIGZvciB0aGUgaXRlbS5cblx0ICogQHBhcmFtIGNvbGxlY3Rpb25CaW5kaW5nXG5cdCAqIEBwYXJhbSBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aFxuXHQgKiBAcGFyYW0gdGV4dEV4cHJlc3Npb25cblx0ICogQHBhcmFtIGtleVxuXHQgKiBAcmV0dXJucyBNdWx0aUlucHV0U2V0dGluZ3Ncblx0ICovXG5cdHByaXZhdGUgX292ZXJyaWRlVmFsdWUoXG5cdFx0Y29sbGVjdGlvbkJpbmRpbmc6IFByb3BlcnR5QmluZGluZ0luZm8gJiB7IHBhcmFtZXRlcnM/OiBvYmplY3QgfSxcblx0XHRpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eVBhdGggfCBQcm9wZXJ0eT4sXG5cdFx0dGV4dEV4cHJlc3Npb246IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLFxuXHRcdGtleTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb25cblx0KTogTXVsdGlJbnB1dFNldHRpbmdzIHtcblx0XHRpZiAodGhpcy5pdGVtcykge1xuXHRcdFx0Y29uc3QgbW9kZWwgPSB0aGlzLml0ZW1zLm1vZGVsID8/IHRoaXMuaXRlbXMubW9kZWxOYW1lO1xuXHRcdFx0Y29sbGVjdGlvbkJpbmRpbmcgPSB7IHBhdGg6IGAke21vZGVsfT4ke3RoaXMuaXRlbXMucGF0aH1gIH07XG5cdFx0XHRjb25zdCBjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eSA9IGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eTtcblx0XHRcdGNvbnN0IGNvbW1vblByb3BlcnR5UGF0aCA9IGB7JHttb2RlbH0+JHtjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eS5uYW1lfX1gO1xuXG5cdFx0XHQvLyBUZXh0IGFycmFuZ2VtZW50IHVzZSBjYXNlXG5cdFx0XHRpZiAoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPihjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24/LlRleHQpKSB7XG5cdFx0XHRcdHRleHRFeHByZXNzaW9uID0gYHske21vZGVsfT4ke2NvbW1vblRhcmdldE9iamVjdFByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbj8uVGV4dD8ucGF0aH19YDtcblx0XHRcdFx0Ly8gbm9uIHRleHQgYXJyYW5nZW1lbnQgdXNlIGNhc2Vcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRleHRFeHByZXNzaW9uID0gY29tbW9uUHJvcGVydHlQYXRoO1xuXHRcdFx0fVxuXHRcdFx0a2V5ID0gY29tbW9uUHJvcGVydHlQYXRoO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0ZGVzY3JpcHRpb246IHRleHRFeHByZXNzaW9uLFxuXHRcdFx0Y29sbGVjdGlvbkJpbmRpbmcsXG5cdFx0XHRrZXk6IGtleVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogRnVuY3Rpb24gdG8gZ2V0IHRoZSBjb3JyZWN0IHNldHRpbmdzIGZvciB0aGUgbXVsdGkgaW5wdXQuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGggVGhlIGNvcnJlc3BvbmRpbmcgRGF0YU1vZGVsT2JqZWN0UGF0aC5cblx0ICogQHBhcmFtIGZvcm1hdE9wdGlvbnMgVGhlIGZvcm1hdCBvcHRpb25zIHRvIGNhbGN1bGF0ZSB0aGUgcmVzdWx0XG5cdCAqIEByZXR1cm5zIE11bHRpSW5wdXRTZXR0aW5nc1xuXHQgKi9cblx0cHJpdmF0ZSBfZ2V0TXVsdGlJbnB1dFNldHRpbmdzKFxuXHRcdHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4sXG5cdFx0Zm9ybWF0T3B0aW9uczogRm9ybWF0T3B0aW9ucyB8IHVuZGVmaW5lZFxuXHQpOiBNdWx0aUlucHV0U2V0dGluZ3Mge1xuXHRcdGNvbnN0IHsgY29sbGVjdGlvblBhdGgsIGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIH0gPSBNdWx0aVZhbHVlRmllbGRCbG9jay5fZ2V0UGF0aFN0cnVjdHVyZShwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRcdGNvbnN0IGNvbGxlY3Rpb25CaW5kaW5nID0geyBwYXRoOiBjb2xsZWN0aW9uUGF0aCwgcGFyYW1ldGVyczogeyAkJG93blJlcXVlc3Q6IHRydWUgfSwgdGVtcGxhdGVTaGFyZWFibGU6IGZhbHNlIH07XG5cblx0XHRjb25zdCBwcm9wZXJ0eVBhdGhPclByb3BlcnR5ID0gcHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eVBhdGggfCBQcm9wZXJ0eTtcblx0XHRjb25zdCBwcm9wZXJ0eURlZmluaXRpb24gPSBpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoT3JQcm9wZXJ0eSlcblx0XHRcdD8gcHJvcGVydHlQYXRoT3JQcm9wZXJ0eS4kdGFyZ2V0XG5cdFx0XHQ6IHByb3BlcnR5UGF0aE9yUHJvcGVydHk7XG5cdFx0Y29uc3QgY29tbW9uVGV4dCA9IHByb3BlcnR5RGVmaW5pdGlvbj8uYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0O1xuXHRcdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRSZWxhdGl2ZVBhdGhzKHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cblx0XHRjb25zdCB0ZXh0RXhwcmVzc2lvbiA9IGNvbW1vblRleHRcblx0XHRcdD8gY29tcGlsZUV4cHJlc3Npb24oZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pKVxuXHRcdFx0OiBnZXRWYWx1ZUJpbmRpbmcoaXRlbURhdGFNb2RlbE9iamVjdFBhdGgsIGZvcm1hdE9wdGlvbnMgPz8ge30sIHRydWUpO1xuXG5cdFx0Y29uc3Qga2V5ID0gZ2V0VmFsdWVCaW5kaW5nKGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLCBmb3JtYXRPcHRpb25zID8/IHt9LCB0cnVlKTtcblx0XHRsZXQgZGlzcGxheU9ubHkgPSBmYWxzZTtcblx0XHRpZiAoZ2V0UmVsYXRpdmVQYXRocyhpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCkubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gaWYgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIHZhbHVlIGNvbnRhaW5zIGEgbmF2aWdhdGlvbiwgY3JlYXRlIHdpbGwgbm90IGJlIHBvc3NpYmxlIGluIHRoZSBkZWxlZ2F0ZSwgc28gd2UgZm9yY2UgdGhlIGRpc3BsYXkgTW9kZVxuXHRcdFx0ZGlzcGxheU9ubHkgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0ZGlzcGxheU9ubHksXG5cdFx0XHQuLi50aGlzLl9vdmVycmlkZVZhbHVlKGNvbGxlY3Rpb25CaW5kaW5nLCBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCwgdGV4dEV4cHJlc3Npb24sIGtleSlcblx0XHR9O1xuXHR9XG5cblx0Ly8gUHJvY2VzcyB0aGUgZGF0YU1vZGVsUGF0aCB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGFuZCB0aGUgcmVsYXRpdmUgRGF0YU1vZGVsUGF0aCBmb3IgdGhlIGl0ZW0uXG5cdHByaXZhdGUgc3RhdGljIF9nZXRQYXRoU3RydWN0dXJlKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KTogTXVsdGlWYWx1ZUZpZWxkUGF0aFN0cnVjdHVyZSB7XG5cdFx0bGV0IGZpcnN0Q29sbGVjdGlvblBhdGggPSBcIlwiO1xuXHRcdGNvbnN0IGN1cnJlbnRFbnRpdHlTZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbj8udGFyZ2V0RW50aXR5U2V0XG5cdFx0XHQ/IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLnRhcmdldEVudGl0eVNldFxuXHRcdFx0OiBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0O1xuXHRcdGNvbnN0IG5hdmlnYXRlZFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGNvbnN0IGNvbnRleHROYXZzRm9ySXRlbSA9IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uPy5uYXZpZ2F0aW9uUHJvcGVydGllcyB8fCBbXTtcblx0XHRmb3IgKGNvbnN0IG5hdlByb3Agb2YgZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcykge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbiA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0XHRcdCFkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbi5uYXZpZ2F0aW9uUHJvcGVydGllcy5zb21lKFxuXHRcdFx0XHRcdChjb250ZXh0TmF2UHJvcCkgPT4gY29udGV4dE5hdlByb3AuZnVsbHlRdWFsaWZpZWROYW1lID09PSBuYXZQcm9wLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gaW4gY2FzZSBvZiByZWxhdGl2ZSBlbnRpdHlTZXRQYXRoIHdlIGRvbid0IGNvbnNpZGVyIG5hdmlnYXRpb25QYXRoIHRoYXQgYXJlIGFscmVhZHkgaW4gdGhlIGNvbnRleHRcblx0XHRcdFx0bmF2aWdhdGVkUGF0aHMucHVzaChuYXZQcm9wLm5hbWUpO1xuXHRcdFx0XHRjb250ZXh0TmF2c0Zvckl0ZW0ucHVzaChuYXZQcm9wKTtcblx0XHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZQcm9wLm5hbWUpKSB7XG5cdFx0XHRcdFx0aWYgKGlzTXVsdGlwbGVOYXZpZ2F0aW9uUHJvcGVydHkobmF2UHJvcCkpIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRmaXJzdENvbGxlY3Rpb25QYXRoID0gYCR7bmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIil9YDtcblx0XHRjb25zdCBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4gPSBPYmplY3QuYXNzaWduKHt9LCBkYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0XHRpZiAoaXRlbURhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uKSB7XG5cdFx0XHRpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24ubmF2aWdhdGlvblByb3BlcnRpZXMgPSBjb250ZXh0TmF2c0Zvckl0ZW07IC8vIHRoaXMgY2hhbmdlcyB0aGUgY3JlYXRpb24gb2YgdGhlIHZhbHVlSGVscCBJRCAuLi5cblx0XHR9XG5cblx0XHRyZXR1cm4geyBjb2xsZWN0aW9uUGF0aDogZmlyc3RDb2xsZWN0aW9uUGF0aCwgaXRlbURhdGFNb2RlbE9iamVjdFBhdGg6IGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIH07XG5cdH1cblxuXHQvKipcblx0ICogQ2FsY3VsYXRlIHRoZSBmaWVsZEdyb3VwSWRzIGZvciB0aGUgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50XG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBmb3IgdGhlIGZpZWxkR3JvdXBJZHNcblx0ICovXG5cdHByaXZhdGUgY29tcHV0ZUZpZWxkR3JvdXBJZHMoYXBwQ29tcG9uZW50PzogQXBwQ29tcG9uZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIWFwcENvbXBvbmVudCkge1xuXHRcdFx0Ly9mb3IgVmFsdWVIZWxwIC8gTWFzcyBlZGl0IFRlbXBsYXRpbmcgdGhlIGFwcENvbXBvbmVudCBpcyBub3QgcGFzc2VkIHRvIHRoZSB0ZW1wbGF0aW5nXG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9XG5cdFx0Y29uc3Qgc2lkZUVmZmVjdFNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cdFx0Y29uc3QgZmllbGRHcm91cElkcyA9IHNpZGVFZmZlY3RTZXJ2aWNlLmNvbXB1dGVGaWVsZEdyb3VwSWRzKFxuXHRcdFx0dGhpcy5kYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0KHRoaXMuZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHkpLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdCk7XG5cdFx0aWYgKHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpb25GaWVsZEdyb3VwID0gYCR7Q29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXh9JHt0aGlzLmRhdGFTb3VyY2VQYXRofWA7XG5cdFx0XHRmaWVsZEdyb3VwSWRzLnB1c2goY29sbGFib3JhdGlvbkZpZWxkR3JvdXApO1xuXHRcdH1cblx0XHR0aGlzLmZpZWxkR3JvdXBJZHMgPSBmaWVsZEdyb3VwSWRzLmxlbmd0aCA/IGZpZWxkR3JvdXBJZHMuam9pbihcIixcIikgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZmllbGRHcm91cElkcy5qb2luKFwiLFwiKTtcblx0XHRyZXR1cm4gcmVzdWx0ID09PSBcIlwiID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuXHR9XG5cblx0aW5pdGlhbGl6ZShtZXRhQ29udGV4dFBhdGg6IE1ldGFQYXRoPHVua25vd24+KTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXG5cdFx0dGhpcy5jb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGggPz8gb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/LmZ1bGxDb250ZXh0UGF0aDtcblx0XHRjb25zdCBvZGF0YU1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblxuXHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1ldGFDb250ZXh0UGF0aC5nZXRQYXRoKCkpIGFzIENvbnRleHQgfCB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBtZXRhUGF0aE9iamVjdCA9IG1ldGFDb250ZXh0UGF0aD8uZ2V0VGFyZ2V0KCk7XG5cblx0XHQvLyBJZiB0aGUgdGFyZ2V0IGlzIGEgcHJvcGVydHkgd2l0aCBhIERhdGFGaWVsZERlZmF1bHQsIHVzZSB0aGlzIGFzIGRhdGEgZmllbGRcblx0XHRpZiAoaXNQcm9wZXJ0eShtZXRhUGF0aE9iamVjdCkgJiYgbWV0YVBhdGhPYmplY3QuYW5ub3RhdGlvbnMuVUk/LkRhdGFGaWVsZERlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5lbmhhbmNlZE1ldGFQYXRoID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KGBAJHtVSUFubm90YXRpb25UZXJtcy5EYXRhRmllbGREZWZhdWx0fWAsIG1ldGFDb250ZXh0KSBhcyBDb250ZXh0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVuaGFuY2VkTWV0YVBhdGggPSBtZXRhQ29udGV4dCBhcyBDb250ZXh0O1xuXHRcdH1cblx0XHRjb25zdCBkYXRhRmllbGREYXRhTW9kZWxQYXRoID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCh0aGlzLmVuaGFuY2VkTWV0YVBhdGguZ2V0UGF0aCgpLCB0aGlzLmNvbnRleHRQYXRoKSE7XG5cblx0XHR0aGlzLmNvbnZlcnRlZERhdGFGaWVsZCA9IGRhdGFGaWVsZERhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIERhdGFGaWVsZDtcblxuXHRcdHRoaXMuZGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5Pihcblx0XHRcdGRhdGFGaWVsZERhdGFNb2RlbFBhdGgsXG5cdFx0XHQodGhpcy5jb252ZXJ0ZWREYXRhRmllbGQuVmFsdWUgYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4pLnBhdGhcblx0XHQpO1xuXHRcdHRoaXMuZGF0YVNvdXJjZVBhdGggPSBnZXRUYXJnZXRPYmplY3RQYXRoKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cdFx0dGhpcy5wcm9wZXJ0eSA9IHRoaXMuZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cblx0XHRsZXQgaW5zZXJ0YWJsZSA9IGlzUGF0aEluc2VydGFibGUodGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHRjb25zdCBkZWxldGVOYXZpZ2F0aW9uUmVzdHJpY3Rpb24gPSBpc1BhdGhEZWxldGFibGUodGhpcy5kYXRhTW9kZWxQYXRoLCB7XG5cdFx0XHRpZ25vcmVUYXJnZXRDb2xsZWN0aW9uOiB0cnVlLFxuXHRcdFx0YXV0aG9yaXplVW5yZXNvbHZhYmxlOiB0cnVlXG5cdFx0fSk7XG5cdFx0Y29uc3QgZGVsZXRlUGF0aCA9IGlzUGF0aERlbGV0YWJsZSh0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXG5cdFx0Ly8gZGVsZXRhYmxlOlxuXHRcdC8vXHRcdGlmIHJlc3RyaWN0aW9ucyBjb21lIGZyb20gTmF2aWdhdGlvbiB3ZSBhcHBseSBpdFxuXHRcdC8vXHRcdG90aGVyd2lzZSB3ZSBhcHBseSByZXN0cmljdGlvbnMgZGVmaW5lZCBvbiB0YXJnZXQgY29sbGVjdGlvbiBvbmx5IGlmIGl0J3MgYSBjb25zdGFudFxuXHRcdC8vICAgICAgb3RoZXJ3aXNlIGl0J3MgdHJ1ZSFcblx0XHRsZXQgZGVsZXRhYmxlID0gaWZFbHNlKFxuXHRcdFx0ZGVsZXRlTmF2aWdhdGlvblJlc3RyaWN0aW9uLl90eXBlID09PSBcIlVucmVzb2x2YWJsZVwiLFxuXHRcdFx0b3Iobm90KGlzQ29uc3RhbnQoZGVsZXRlUGF0aCkpLCBkZWxldGVQYXRoKSxcblx0XHRcdGRlbGV0ZVBhdGhcblx0XHQpO1xuXG5cdFx0aWYgKHRoaXMuaXRlbXMpIHtcblx0XHRcdGluc2VydGFibGUgPSBkZWxldGFibGUgPSBjb25zdGFudCghdGhpcy5yZWFkT25seSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMudmlzaWJsZSA9IGdldFZpc2libGVFeHByZXNzaW9uKHRoaXMuZGF0YU1vZGVsUGF0aCwgdGhpcy5mb3JtYXRPcHRpb25zKTtcblx0XHR9XG5cblx0XHR0aGlzLmluc2VydGFibGVBbmREZWxldGFibGUgPSBhbmQoaW5zZXJ0YWJsZSwgZGVsZXRhYmxlKTtcblx0XHR0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uID0gY29uc3RhbnQoZmFsc2UpO1xuXHRcdHRoaXMuY29tcHV0ZUNvbGxhYm9yYXRpb25Qcm9wZXJ0aWVzKCk7XG5cdFx0Y29uc3QgcmVhZE9ubHkgPSB0aGlzLmlzUHJvcGVydHlJbml0aWFsKFwicmVhZE9ubHlcIikgPyB1bmRlZmluZWQgOiB0aGlzLnJlYWRPbmx5O1xuXHRcdGlmICh0aGlzLmZvcm1hdE9wdGlvbnM/LmRpc3BsYXlPbmx5ID09PSB0cnVlIHx8IHJlYWRPbmx5ID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0fSBlbHNlIGlmICh0aGlzLnJlYWRPbmx5ID09PSBmYWxzZSkge1xuXHRcdFx0dGhpcy5lZGl0TW9kZSA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0YW5kKGluc2VydGFibGUsIGRlbGV0YWJsZSksXG5cdFx0XHRcdFx0aWZFbHNlKHRoaXMuY29sbGFib3JhdGlvbkV4cHJlc3Npb24sIGNvbnN0YW50KFwiUmVhZE9ubHlcIiksIGNvbnN0YW50KFwiRWRpdGFibGVcIikpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwiRGlzcGxheVwiKVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRhbmQoaW5zZXJ0YWJsZSwgZGVsZXRhYmxlLCBVSS5Jc0VkaXRhYmxlLCBub3QoZXF1YWwodHJ1ZSwgaXNSZWFkT25seUV4cHJlc3Npb24odGhpcy5jb252ZXJ0ZWREYXRhRmllbGQpKSkpLFxuXHRcdFx0XHRcdGlmRWxzZSh0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uLCBjb25zdGFudChcIlJlYWRPbmx5XCIpLCBjb25zdGFudChcIkVkaXRhYmxlXCIpKSxcblx0XHRcdFx0XHRjb25zdGFudChcIkRpc3BsYXlcIilcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR0aGlzLmRpc3BsYXlNb2RlID0gZ2V0RGlzcGxheU1vZGUodGhpcy5kYXRhTW9kZWxQYXRoKTtcblxuXHRcdGNvbnN0IGxvY2FsRGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5Pihcblx0XHRcdHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgodGhpcy5lbmhhbmNlZE1ldGFQYXRoLmdldFBhdGgoKSwgdGhpcy5jb250ZXh0UGF0aCkhLFxuXHRcdFx0KHRoaXMuY29udmVydGVkRGF0YUZpZWxkLlZhbHVlIGFzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KS5wYXRoXG5cdFx0KTtcblxuXHRcdHRoaXMuaXRlbSA9IHRoaXMuX2dldE11bHRpSW5wdXRTZXR0aW5ncyhsb2NhbERhdGFNb2RlbFBhdGgsIHRoaXMuZm9ybWF0T3B0aW9ucyk7IC8vIHRoaXMgZnVuY3Rpb24gcmV3cml0ZXMgZGF0YU1vZGVsUGF0aCwgdGhlcmVmb3JlLCBmb3Igbm93IGEgY2xlYW4gb2JqZWN0IGlzIHBhc3NlZFxuXHRcdGlmICh0aGlzLml0ZW0uZGlzcGxheU9ubHkpIHtcblx0XHRcdHRoaXMuZWRpdE1vZGUgPSBcIkRpc3BsYXlcIjtcblx0XHR9XG5cdFx0dGhpcy5jb2xsZWN0aW9uID0gdGhpcy5pdGVtLmNvbGxlY3Rpb25CaW5kaW5nO1xuXG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKTtcblx0XHR0aGlzLmZpZWxkR3JvdXBJZHMgPSB0aGlzLmNvbXB1dGVGaWVsZEdyb3VwSWRzKGFwcENvbXBvbmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uTWV0YWRhdGFBdmFpbGFibGUgZXZlbnQuXG5cdCAqL1xuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBpcyBzdXBwb3J0ZWQuXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGNvbGxhYm9yYXRpb24gZHJhZnQgaXMgc3VwcG9ydGVkLlxuXHQgKi9cblx0aXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGNvbnN0IG9kYXRhTWV0YU1vZGVsID0gb3duZXI/LmdldE1ldGFNb2RlbCgpO1xuXHRcdHJldHVybiBNb2RlbEhlbHBlci5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZChvZGF0YU1ldGFNb2RlbCEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgaGVscGVyIGNvbXB1dGVzIHRoZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5lZWRlZCBmb3IgdGhlIGNvbGxhYm9yYXRpb24gYXZhdGFyLlxuXHQgKi9cblx0Y29tcHV0ZUNvbGxhYm9yYXRpb25Qcm9wZXJ0aWVzKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKCkgJiYgdGhpcy5lZGl0TW9kZSAhPT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQgPSB0cnVlO1xuXHRcdFx0dGhpcy5jb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiA9IFVJRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbihcblx0XHRcdFx0dGhpcy5kYXRhTW9kZWxQYXRoLFxuXHRcdFx0XHRDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5oYXNDb2xsYWJvcmF0aW9uQWN0aXZpdHlcblx0XHRcdCk7XG5cblx0XHRcdHRoaXMuY29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRnZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbih0aGlzLmRhdGFNb2RlbFBhdGgsIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25BY3Rpdml0eUluaXRpYWxzKVxuXHRcdFx0KTtcblx0XHRcdHRoaXMuY29sbGFib3JhdGlvbkNvbG9yRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRnZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbih0aGlzLmRhdGFNb2RlbFBhdGgsIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25BY3Rpdml0eUNvbG9yKVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRnZXRSZXF1aXJlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNdWx0aVZhbHVlRmllbGQoKS5nZXRSZXF1aXJlZCgpO1xuXHR9XG5cblx0Z2V0SXRlbXMoKTogTXVsdGlWYWx1ZUZpZWxkSXRlbVtdIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNdWx0aVZhbHVlRmllbGQoKS5nZXRJdGVtcygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIGNvbnRlbnQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZW50IG9mIHRoZSBidWlsZGluZyBibG9jay5cblx0ICovXG5cdGNyZWF0ZUNvbnRlbnQoKTogQ29udHJvbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgbWV0YUNvbnRleHRQYXRoID0gdGhpcy5nZXRNZXRhUGF0aE9iamVjdCh0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRpZiAobWV0YUNvbnRleHRQYXRoKSB7XG5cdFx0XHR0aGlzLmluaXRpYWxpemUobWV0YUNvbnRleHRQYXRoKTtcblxuXHRcdFx0Ly8gQnVpbGRpbmdCbG9jayB3aXRoIHNldCBJRCBzY2VuYXJpb1xuXHRcdFx0aWYgKHRoaXMuaWQpIHtcblx0XHRcdFx0dGhpcy52aElkUHJlZml4ID0gSUQuZ2VuZXJhdGUoW3RoaXMuZ2V0SWQoKSwgdGhpcy52aElkUHJlZml4ID8/IFwiRmllbGRWYWx1ZUhlbHBcIl0pOyAvLyBVc2UgZ2V0SWQgdG8gcmV0cmlldmUgSUQsIG5vdCB0aGlzLmlkXG5cdFx0XHR9IGVsc2UgaWYgKCF0aGlzLnZoSWRQcmVmaXgpIHtcblx0XHRcdFx0Ly8gTWF5YmUgbm90IGVudGVyZWRcblx0XHRcdFx0dGhpcy52aElkUHJlZml4ID0gdGhpcy5jcmVhdGVJZChcIkZpZWxkVmFsdWVIZWxwXCIpITtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdFx0Y29uc3QgdmlldyA9IGNvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdFx0Y29uc3Qgb2RhdGFNZXRhTW9kZWwgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1ldGFDb250ZXh0UGF0aC5nZXRQYXRoKCkpO1xuXHRcdFx0Y29uc3QgY29udGV4dCA9IG9kYXRhTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhQ29udGV4dFBhdGguZ2V0Q29udGV4dFBhdGgoKSk7XG5cdFx0XHRpZiAoIW1ldGFDb250ZXh0IHx8ICFjb250ZXh0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly9jcmVhdGUgYSBuZXcgYmluZGluZyBjb250ZXh0IGZvciB0aGUgdmFsdWUgaGVscFxuXG5cdFx0XHRjb25zdCBpdGVtc0FnZ3JlZ2F0aW9uID0gdGhpcy5jb2xsZWN0aW9uO1xuXHRcdFx0Y29uc3QgY3VzdG9tQWdncmVnYXRpb25MZW5ndGggPSB0aGlzLmdldEFwcENvbXBvbmVudCgpPy5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmZlXCIpPy5tYWNyb3M/Lm11bHRpVmFsdWVGaWVsZD8uaXRlbXNTaXplTGltaXQ7XG5cdFx0XHRpZiAoY3VzdG9tQWdncmVnYXRpb25MZW5ndGggIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRpdGVtc0FnZ3JlZ2F0aW9uLmxlbmd0aCA9IGN1c3RvbUFnZ3JlZ2F0aW9uTGVuZ3RoO1xuXHRcdFx0fVxuXG5cdFx0XHQvL2NvbXB1dGUgdGhlIGNvcnJlY3QgbGFiZWxcblx0XHRcdGNvbnN0IGxhYmVsID0gRmllbGRIZWxwZXIuY29tcHV0ZUxhYmVsVGV4dCh0aGlzLmNvbnZlcnRlZERhdGFGaWVsZC5WYWx1ZSBhcyBNZXRhTW9kZWxUeXBlPERhdGFGaWVsZFR5cGVzPiwge1xuXHRcdFx0XHRjb250ZXh0OiBtZXRhQ29udGV4dFxuXHRcdFx0fSkgYXMgc3RyaW5nO1xuXG5cdFx0XHRjb25zdCB2aENvbnRyb2wgPSBWYWx1ZUhlbHAuZ2V0VmFsdWVIZWxwRm9yTWV0YVBhdGgoXG5cdFx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSxcblx0XHRcdFx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCh0aGlzLmRhdGFNb2RlbFBhdGgpISxcblx0XHRcdFx0dGhpcy5jb250ZXh0UGF0aCA/PyB0aGlzLmdldE93bmVyQ29udGV4dFBhdGgoKSEsXG5cdFx0XHRcdHRoaXMuX2dldE93bmVyKCk/LmdldE1ldGFNb2RlbCgpXG5cdFx0XHQpO1xuXHRcdFx0bGV0IHZhbHVlSGVscDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0aWYgKHZoQ29udHJvbCAmJiB2aENvbnRyb2wuZ2V0Q29udGVudCgpKSB7XG5cdFx0XHRcdHZhbHVlSGVscCA9IHZoQ29udHJvbC5nZXRDb250ZW50KCkhLmdldElkKCk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBtdWx0aVZhbHVlRmllbGQgPSAoXG5cdFx0XHRcdDxNdWx0aVZhbHVlRmllbGRcblx0XHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIl9tdmZcIil9XG5cdFx0XHRcdFx0ZGVsZWdhdGU9e3sgbmFtZTogXCJzYXAvZmUvbWFjcm9zL211bHRpdmFsdWVmaWVsZC9NdWx0aVZhbHVlRmllbGREZWxlZ2F0ZVwiIH19XG5cdFx0XHRcdFx0aXRlbXM9e2l0ZW1zQWdncmVnYXRpb259XG5cdFx0XHRcdFx0ZGlzcGxheT17dGhpcy5kaXNwbGF5TW9kZX1cblx0XHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRcdGVkaXRNb2RlPXt0aGlzLmVkaXRNb2RlfVxuXHRcdFx0XHRcdHZhbHVlSGVscD17dmFsdWVIZWxwfVxuXHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXt0aGlzLmFyaWFMYWJlbGxlZEJ5ID8gdGhpcy5hcmlhTGFiZWxsZWRCeSA6IFtdfVxuXHRcdFx0XHRcdHNob3dFbXB0eUluZGljYXRvcj17dGhpcy5mb3JtYXRPcHRpb25zPy5zaG93RW1wdHlJbmRpY2F0b3J9XG5cdFx0XHRcdFx0bGFiZWw9e2xhYmVsfVxuXHRcdFx0XHRcdHJlcXVpcmVkPXtjb21waWxlRXhwcmVzc2lvbihhbmQoVUkuSXNFZGl0YWJsZSwgaXNSZXF1aXJlZEV4cHJlc3Npb24odGhpcy5jb252ZXJ0ZWREYXRhRmllbGQpKSl9XG5cdFx0XHRcdFx0Y2hhbmdlPXsoTXVsdGlWYWx1ZUZpZWxkUnVudGltZS5oYW5kbGVDaGFuZ2UgYXMgdW5rbm93biBhcyBGdW5jdGlvbikuYmluZChNdWx0aVZhbHVlRmllbGRSdW50aW1lLCBjb250cm9sbGVyKX1cblx0XHRcdFx0XHRmaWVsZEdyb3VwSWRzPXt0aGlzLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwPXtGaWVsZFJ1bnRpbWUub25WYWxpZGF0ZUZpZWxkR3JvdXB9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0aXRlbXM6IDxNdWx0aVZhbHVlRmllbGRJdGVtIGtleT17dGhpcy5pdGVtLmtleX0gZGVzY3JpcHRpb249e3RoaXMuaXRlbS5kZXNjcmlwdGlvbn0gLz4sXG5cdFx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJpbnNlcnRhYmxlQW5kRGVsZXRhYmxlXCIgdmFsdWU9e3RoaXMuaW5zZXJ0YWJsZUFuZERlbGV0YWJsZX0gLz5cblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L011bHRpVmFsdWVGaWVsZD5cblx0XHRcdCk7XG5cblx0XHRcdGxldCBmb3Jtd3JhcHBlciA9IG51bGw7XG5cdFx0XHRpZiAodGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0XHRjb25zdCBhdmF0YXIgPSAoXG5cdFx0XHRcdFx0PEF2YXRhclxuXHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5jb2xsYWJvcmF0aW9uRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRcdGluaXRpYWxzPXt0aGlzLmNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb259XG5cdFx0XHRcdFx0XHRkaXNwbGF5U2l6ZT1cIkN1c3RvbVwiXG5cdFx0XHRcdFx0XHRjdXN0b21EaXNwbGF5U2l6ZT1cIjEuNXJlbVwiXG5cdFx0XHRcdFx0XHRjdXN0b21Gb250U2l6ZT1cIjAuOHJlbVwiXG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I9e3RoaXMuY29sbGFib3JhdGlvbkNvbG9yRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdEZpZWxkUnVudGltZUhlbHBlci5zaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyKGF2YXRhciwgdmlldyk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdCk7XG5cdFx0XHRcdGZvcm13cmFwcGVyID0gKFxuXHRcdFx0XHRcdDxGb3JtRWxlbWVudFdyYXBwZXI+XG5cdFx0XHRcdFx0XHQ8SEJveCB3aWR0aD1cIjEwMCVcIiByZW5kZXJUeXBlPVwiQmFyZVwiIGFsaWduSXRlbXM9XCJFbmRcIj5cblx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRpdGVtczogW211bHRpVmFsdWVGaWVsZCwgYXZhdGFyXVxuXHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdDwvRm9ybUVsZW1lbnRXcmFwcGVyPlxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdG11bHRpVmFsdWVGaWVsZD8uYWRkRXZlbnREZWxlZ2F0ZShcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRvbmZvY3VzaW46IChldnQ6IGpRdWVyeS5FdmVudCAmIHsgc3JjQ29udHJvbDogQ29udHJvbCB9KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQgPSBldnQuc3JjQ29udHJvbC5nZXRQYXJlbnQoKSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0XHRcdFx0XHRcdGNvbnRyb2xsZXIuY29sbGFib3JhdGl2ZURyYWZ0Py5oYW5kbGVDb250ZW50Rm9jdXNJbihjdXJyZW50TXVsdGlWYWx1ZUZpZWxkKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAodmFsdWVIZWxwQ29udHJvbD8uZ2V0RG9tUmVmKCkpIHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZUhlbHBDb250cm9sLmF0dGFjaEV2ZW50T25jZShcImNsb3NlZFwiLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50TXVsdGlWYWx1ZUZpZWxkPy5mb2N1cygpO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25mb2N1c291dDogKGV2dDogalF1ZXJ5LkV2ZW50ICYgeyBzcmNDb250cm9sOiBDb250cm9sIH0pID0+IHtcblx0XHRcdFx0XHRcdFx0bGV0IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQgPSBldnQuc3JjQ29udHJvbC5nZXRQYXJlbnQoKSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJyZW50TXVsdGlWYWx1ZUZpZWxkPy5pc0E8VG9rZW5pemVyPihcInNhcC5tLlRva2VuaXplclwiKSkge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRNdWx0aVZhbHVlRmllbGQgPSBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkLmdldFBhcmVudCgpPy5nZXRQYXJlbnQoKSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Y29uc3QgZXZlbnQgPSBuZXcgVUk1RXZlbnQoXCJcIiwgY3VycmVudE11bHRpVmFsdWVGaWVsZCwge1xuXHRcdFx0XHRcdFx0XHRcdGZpZWxkR3JvdXBJZHM6IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQuZ2V0RmllbGRHcm91cElkcygpXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRjb250cm9sbGVyLmNvbGxhYm9yYXRpdmVEcmFmdC5oYW5kbGVDb250ZW50Rm9jdXNPdXQoZXZlbnQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dGhpc1xuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnN0IHZhbHVlSGVscENvbnRyb2wgPSBFbGVtZW50LmdldEVsZW1lbnRCeUlkKG11bHRpVmFsdWVGaWVsZC5nZXRWYWx1ZUhlbHAoKSkgYXMgTWRjVmFsdWVIZWxwO1xuXG5cdFx0XHRcdHZhbHVlSGVscENvbnRyb2w/LmF0dGFjaE9wZW5lZCgoZXZ0OiBWYWx1ZUhlbHAkT3BlbmVkRXZlbnQpID0+IHtcblx0XHRcdFx0XHRjb25zdCBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkID0gZXZ0LmdldFNvdXJjZSgpLmdldENvbnRyb2woKSE7XG5cdFx0XHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuaGFuZGxlQ29udGVudEZvY3VzSW4oY3VycmVudE11bHRpVmFsdWVGaWVsZCBhcyBNdWx0aVZhbHVlRmllbGQpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdG11bHRpVmFsdWVGaWVsZC5hZGRDdXN0b21EYXRhKG5ldyBDdXN0b21EYXRhKHsga2V5OiBcImZvcndhcmRlZEl0ZW1zQmluZGluZ1wiLCB2YWx1ZTogdGhpcy5pdGVtcyB9KSk7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCA/IGZvcm13cmFwcGVyIDogbXVsdGlWYWx1ZUZpZWxkO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXR0ZXIgZm9yIHRoZSByZWFkT25seSBwcm9wZXJ0eS5cblx0ICogQHBhcmFtIHJlYWRPbmx5XG5cdCAqL1xuXHRzZXRSZWFkT25seShyZWFkT25seTogYm9vbGVhbik6IHZvaWQge1xuXHRcdHN1cGVyLnNldFByb3BlcnR5KFwicmVhZE9ubHlcIiwgcmVhZE9ubHkpO1xuXHRcdHRoaXMudXBkYXRlRWRpdE1vZGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXR0ZXIgZm9yIHRoZSBfaXNJbkVkaXRNb2RlIHByb3BlcnR5LlxuXHQgKiBAcGFyYW0gaW5FZGl0TW9kZVxuXHQgKi9cblx0c2V0X2lzSW5FZGl0TW9kZShpbkVkaXRNb2RlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0c3VwZXIuc2V0UHJvcGVydHkoXCJfaXNJbkVkaXRNb2RlXCIsIGluRWRpdE1vZGUpO1xuXHRcdHRoaXMudXBkYXRlRWRpdE1vZGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKiBAcmV0dXJucyBUaGUgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKi9cblx0Z2V0TXVsdGlWYWx1ZUZpZWxkKCk6IE11bHRpVmFsdWVGaWVsZCB7XG5cdFx0aWYgKHRoaXMuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQoKSkge1xuXHRcdFx0cmV0dXJuICgodGhpcy5jb250ZW50IGFzIEZvcm1FbGVtZW50V3JhcHBlcikuY29udGVudCBhcyBIQm94KS5nZXRJdGVtcygpWzBdIGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuY29udGVudCBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZSB0aGUgZWRpdCBtb2RlIGJhc2VkIG9uIHRoZSByZWFkT25seSBhbmQgX2lzSW5FZGl0TW9kZSBwcm9wZXJ0aWVzLlxuXHQgKi9cblx0dXBkYXRlRWRpdE1vZGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgbXVsdGl2YWx1ZUZpZWxkID0gdGhpcy5nZXRNdWx0aVZhbHVlRmllbGQoKTtcblx0XHRjb25zdCBpbnNlcnRhYmxlQW5kRGVsZXRhYmxlID0gbXVsdGl2YWx1ZUZpZWxkLmRhdGEoXCJpbnNlcnRhYmxlQW5kRGVsZXRhYmxlXCIpO1xuXHRcdGlmICh0aGlzLnJlYWRPbmx5ID09PSB0cnVlIHx8ICFpbnNlcnRhYmxlQW5kRGVsZXRhYmxlKSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0XHRtdWx0aXZhbHVlRmllbGQuc2V0RWRpdE1vZGUoXCJEaXNwbGF5XCIpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5yZWFkT25seSA9PT0gZmFsc2UgJiYgaW5zZXJ0YWJsZUFuZERlbGV0YWJsZSkge1xuXHRcdFx0Ly9yZWFkT25seSBmYWxzZSBjYW4gb25seSBoYXZlIGltcGFjdCBpZiBpdGVtcyBhcmUgcHJvdmlkZWRcblx0XHRcdGlmICh0aGlzLl9pc0luRWRpdE1vZGUpIHtcblx0XHRcdFx0dGhpcy5lZGl0TW9kZSA9IFwiRWRpdGFibGVcIjtcblx0XHRcdFx0bXVsdGl2YWx1ZUZpZWxkLnNldEVkaXRNb2RlKFwiRWRpdGFibGVcIik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0XHRcdG11bHRpdmFsdWVGaWVsZC5zZXRFZGl0TW9kZShcIkRpc3BsYXlcIik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIGlmIHJlYWRPbmx5IGlzIG5vdCBleHBsaWNpdGx5IHNldCB3ZSBrZWVwIHRlaCBzdGFuZGFyZCBiZWhhdmlvclxuXHR9XG5cblx0LyoqXG5cdCAqIE9uIEJlZm9yZSByZW5kZXJpbmcgZnJvd2FyZCB0aGUgYXJpYUxhYmVsbGVkQnkgdG8gdGhlIG1kYyBNdWx0aVZhbHVlRmllbGQuXG5cdCAqL1xuXHRvbkJlZm9yZVJlbmRlcmluZygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5jb250ZW50KSB7XG5cdFx0XHRjb25zdCBtdWx0aVZhbHVlRmllbGQgPSB0aGlzLmdldE11bHRpVmFsdWVGaWVsZCgpO1xuXHRcdFx0Y29uc3QgYUFyaWFMYWJlbGxlZEJ5ID0gKHRoaXMgYXMgdW5rbm93biBhcyBFbmhhbmNlV2l0aFVJNTxNdWx0aVZhbHVlRmllbGRCbG9jaz4pLmdldEFyaWFMYWJlbGxlZEJ5KCk7XG5cblx0XHRcdGZvciAoY29uc3Qgc0lkIG9mIGFBcmlhTGFiZWxsZWRCeSkge1xuXHRcdFx0XHRjb25zdCBhQXJpYUxhYmVsbGVkQnlzID0gbXVsdGlWYWx1ZUZpZWxkLmdldEFyaWFMYWJlbGxlZEJ5KCk7XG5cdFx0XHRcdGlmICghYUFyaWFMYWJlbGxlZEJ5cy5pbmNsdWRlcyhzSWQpKSB7XG5cdFx0XHRcdFx0bXVsdGlWYWx1ZUZpZWxkLmFkZEFyaWFMYWJlbGxlZEJ5KHNJZCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTBGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFqQkEsSUFvQnFCQSxvQkFBb0IsSUFBQUMsSUFBQSxHQUR4Q0MsY0FBYyxDQUFDLCtCQUErQixDQUFDLEVBQUFDLEtBQUEsR0FFOUNDLGtCQUFrQixDQUFDLDBCQUEwQixDQUFDLEVBQUFDLEtBQUEsR0FNOUNDLFFB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
|
|
650
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNdWx0aVZhbHVlRmllbGRCbG9jayIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzMiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjNCIsImFzc29jaWF0aW9uIiwiX2RlYzUiLCJfZGVjNiIsInJlcXVpcmVkIiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiaXNCaW5kaW5nSW5mbyIsIl9kZWMxMCIsImFnZ3JlZ2F0aW9uIiwibXVsdGlwbGUiLCJkZWZhdWx0Q2xhc3MiLCJGb3JtYXRPcHRpb25zIiwiX2RlYzExIiwiX2RlYzEyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcHMiLCJvdGhlcnMiLCJfdGhpcyIsIl9pc0luRWRpdE1vZGUiLCJjb21waWxlRXhwcmVzc2lvbiIsIlVJIiwiSXNFZGl0YWJsZSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiX292ZXJyaWRlVmFsdWUiLCJjb2xsZWN0aW9uQmluZGluZyIsIml0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIiwidGV4dEV4cHJlc3Npb24iLCJrZXkiLCJpdGVtcyIsIm1vZGVsIiwibW9kZWxOYW1lIiwicGF0aCIsImNvbW1vblRhcmdldE9iamVjdFByb3BlcnR5IiwidGFyZ2V0T2JqZWN0IiwiY29tbW9uUHJvcGVydHlQYXRoIiwibmFtZSIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwiZGVzY3JpcHRpb24iLCJfZ2V0TXVsdGlJbnB1dFNldHRpbmdzIiwicHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwiZm9ybWF0T3B0aW9ucyIsImNvbGxlY3Rpb25QYXRoIiwiX2dldFBhdGhTdHJ1Y3R1cmUiLCJ1c2VQYXJlbnRCaW5kaW5nQ2FjaGUiLCJ0ZW1wbGF0ZVNoYXJlYWJsZSIsInBhcmFtZXRlcnMiLCIkJG93blJlcXVlc3QiLCJwcm9wZXJ0eVBhdGhPclByb3BlcnR5IiwicHJvcGVydHlEZWZpbml0aW9uIiwiaXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uIiwiJHRhcmdldCIsImNvbW1vblRleHQiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UmVsYXRpdmVQYXRocyIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImdldFZhbHVlQmluZGluZyIsImRpc3BsYXlPbmx5IiwibGVuZ3RoIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsImZpcnN0Q29sbGVjdGlvblBhdGgiLCJjdXJyZW50RW50aXR5U2V0IiwiY29udGV4dExvY2F0aW9uIiwidGFyZ2V0RW50aXR5U2V0Iiwic3RhcnRpbmdFbnRpdHlTZXQiLCJuYXZpZ2F0ZWRQYXRocyIsImNvbnRleHROYXZzRm9ySXRlbSIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibmF2UHJvcCIsInVuZGVmaW5lZCIsInNvbWUiLCJjb250ZXh0TmF2UHJvcCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInB1c2giLCJuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIiwiaGFzT3duUHJvcGVydHkiLCJpc011bHRpcGxlTmF2aWdhdGlvblByb3BlcnR5Iiwiam9pbiIsIk9iamVjdCIsImFzc2lnbiIsImNvbXB1dGVGaWVsZEdyb3VwSWRzIiwiYXBwQ29tcG9uZW50Iiwic2lkZUVmZmVjdFNlcnZpY2UiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJmaWVsZEdyb3VwSWRzIiwiZGF0YU1vZGVsUGF0aCIsInRhcmdldEVudGl0eVR5cGUiLCJjb2xsYWJvcmF0aW9uRW5hYmxlZCIsImNvbGxhYm9yYXRpb25GaWVsZEdyb3VwIiwiQ29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXgiLCJkYXRhU291cmNlUGF0aCIsInJlc3VsdCIsImluaXRpYWxpemUiLCJtZXRhQ29udGV4dFBhdGgiLCJvd25lciIsIl9nZXRPd25lciIsImNvbnRleHRQYXRoIiwicHJlcHJvY2Vzc29yQ29udGV4dCIsImZ1bGxDb250ZXh0UGF0aCIsIm9kYXRhTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibWV0YUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImdldFBhdGgiLCJtZXRhUGF0aE9iamVjdCIsImdldFRhcmdldCIsImlzUHJvcGVydHkiLCJEYXRhRmllbGREZWZhdWx0IiwiZW5oYW5jZWRNZXRhUGF0aCIsImRhdGFGaWVsZERhdGFNb2RlbFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCIsImNvbnZlcnRlZERhdGFGaWVsZCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwiVmFsdWUiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiaW5zZXJ0YWJsZSIsImlzUGF0aEluc2VydGFibGUiLCJkZWxldGVOYXZpZ2F0aW9uUmVzdHJpY3Rpb24iLCJpc1BhdGhEZWxldGFibGUiLCJpZ25vcmVUYXJnZXRDb2xsZWN0aW9uIiwiYXV0aG9yaXplVW5yZXNvbHZhYmxlIiwiZGVsZXRlUGF0aCIsImRlbGV0YWJsZSIsImlmRWxzZSIsIl90eXBlIiwib3IiLCJub3QiLCJpc0NvbnN0YW50IiwiY29uc3RhbnQiLCJyZWFkT25seSIsInZpc2libGUiLCJnZXRWaXNpYmxlRXhwcmVzc2lvbiIsImluc2VydGFibGVBbmREZWxldGFibGUiLCJhbmQiLCJjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiIsImNvbXB1dGVDb2xsYWJvcmF0aW9uUHJvcGVydGllcyIsImlzUHJvcGVydHlJbml0aWFsIiwiZWRpdE1vZGUiLCJlcXVhbCIsImlzUmVhZE9ubHlFeHByZXNzaW9uIiwiZGlzcGxheU1vZGUiLCJnZXREaXNwbGF5TW9kZSIsImxvY2FsRGF0YU1vZGVsUGF0aCIsIml0ZW0iLCJjb2xsZWN0aW9uIiwiZ2V0QXBwQ29tcG9uZW50Iiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCJNb2RlbEhlbHBlciIsIlVJRm9ybWF0dGVycyIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMiLCJoYXNDb2xsYWJvcmF0aW9uQWN0aXZpdHkiLCJjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMiLCJjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IiLCJnZXRSZXF1aXJlZCIsImdldE11bHRpVmFsdWVGaWVsZCIsImdldEl0ZW1zIiwiZ2V0TWV0YVBhdGhPYmplY3QiLCJtZXRhUGF0aCIsImlkIiwidmhJZFByZWZpeCIsIklEIiwiZ2VuZXJhdGUiLCJnZXRJZCIsImNyZWF0ZUlkIiwiY29udHJvbGxlciIsImdldFJvb3RDb250cm9sbGVyIiwidmlldyIsImdldFZpZXciLCJjb250ZXh0IiwiZ2V0Q29udGV4dFBhdGgiLCJpdGVtc0FnZ3JlZ2F0aW9uIiwiY3VzdG9tQWdncmVnYXRpb25MZW5ndGgiLCJnZXRNYW5pZmVzdEVudHJ5IiwibWFjcm9zIiwibXVsdGlWYWx1ZUZpZWxkIiwiaXRlbXNTaXplTGltaXQiLCJsYWJlbCIsIkZpZWxkSGVscGVyIiwiY29tcHV0ZUxhYmVsVGV4dCIsInZoQ29udHJvbCIsIlZhbHVlSGVscCIsImdldFZhbHVlSGVscEZvck1ldGFQYXRoIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiZ2V0T3duZXJDb250ZXh0UGF0aCIsInZhbHVlSGVscCIsImdldENvbnRlbnQiLCJfanN4IiwiTXVsdGlWYWx1ZUZpZWxkIiwiZGVsZWdhdGUiLCJkaXNwbGF5Iiwid2lkdGgiLCJhcmlhTGFiZWxsZWRCeSIsInNob3dFbXB0eUluZGljYXRvciIsImlzUmVxdWlyZWRFeHByZXNzaW9uIiwiY2hhbmdlIiwiTXVsdGlWYWx1ZUZpZWxkUnVudGltZSIsImhhbmRsZUNoYW5nZSIsImJpbmQiLCJ2YWxpZGF0ZUZpZWxkR3JvdXAiLCJGaWVsZFJ1bnRpbWUiLCJvblZhbGlkYXRlRmllbGRHcm91cCIsImNoaWxkcmVuIiwiTXVsdGlWYWx1ZUZpZWxkSXRlbSIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwidmFsdWUiLCJmb3Jtd3JhcHBlciIsImF2YXRhciIsIkF2YXRhciIsImluaXRpYWxzIiwiZGlzcGxheVNpemUiLCJjdXN0b21EaXNwbGF5U2l6ZSIsImN1c3RvbUZvbnRTaXplIiwiYmFja2dyb3VuZENvbG9yIiwicHJlc3MiLCJGaWVsZFJ1bnRpbWVIZWxwZXIiLCJzaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyIiwiRm9ybUVsZW1lbnRXcmFwcGVyIiwiSEJveCIsInJlbmRlclR5cGUiLCJhbGlnbkl0ZW1zIiwiYWRkRXZlbnREZWxlZ2F0ZSIsIm9uZm9jdXNpbiIsImV2dCIsImN1cnJlbnRNdWx0aVZhbHVlRmllbGQiLCJzcmNDb250cm9sIiwiZ2V0UGFyZW50IiwiY29sbGFib3JhdGl2ZURyYWZ0IiwiaGFuZGxlQ29udGVudEZvY3VzSW4iLCJ2YWx1ZUhlbHBDb250cm9sIiwiZ2V0RG9tUmVmIiwiYXR0YWNoRXZlbnRPbmNlIiwiZm9jdXMiLCJvbmZvY3Vzb3V0IiwiaXNBIiwiZXZlbnQiLCJVSTVFdmVudCIsImdldEZpZWxkR3JvdXBJZHMiLCJoYW5kbGVDb250ZW50Rm9jdXNPdXQiLCJFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRWYWx1ZUhlbHAiLCJhdHRhY2hPcGVuZWQiLCJnZXRTb3VyY2UiLCJnZXRDb250cm9sIiwiYWRkQ3VzdG9tRGF0YSIsInNldFJlYWRPbmx5Iiwic2V0UHJvcGVydHkiLCJ1cGRhdGVFZGl0TW9kZSIsInNldF9pc0luRWRpdE1vZGUiLCJpbkVkaXRNb2RlIiwibXVsdGl2YWx1ZUZpZWxkIiwiZGF0YSIsInNldEVkaXRNb2RlIiwib25CZWZvcmVSZW5kZXJpbmciLCJhQXJpYUxhYmVsbGVkQnkiLCJnZXRBcmlhTGFiZWxsZWRCeSIsInNJZCIsImFBcmlhTGFiZWxsZWRCeXMiLCJpbmNsdWRlcyIsImFkZEFyaWFMYWJlbGxlZEJ5IiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTXVsdGlWYWx1ZUZpZWxkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiwgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGQsIERhdGFGaWVsZFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7XG5cdGFuZCxcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGNvbnN0YW50LFxuXHRlcXVhbCxcblx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLFxuXHRpZkVsc2UsXG5cdGlzQ29uc3RhbnQsXG5cdG5vdCxcblx0b3Jcbn0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRhZ2dyZWdhdGlvbixcblx0YXNzb2NpYXRpb24sXG5cdGRlZmluZVVJNUNsYXNzLFxuXHRpbXBsZW1lbnRJbnRlcmZhY2UsXG5cdHByb3BlcnR5LFxuXHR0eXBlIEVuaGFuY2VXaXRoVUk1LFxuXHR0eXBlIFByb3BlcnRpZXNPZlxufSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHsgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgKiBhcyBJRCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHtcblx0aXNNdWx0aXBsZU5hdmlnYXRpb25Qcm9wZXJ0eSxcblx0aXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sXG5cdGlzUHJvcGVydHksXG5cdGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQge1xuXHRlbmhhbmNlRGF0YU1vZGVsUGF0aCxcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0UmVsYXRpdmVQYXRocyxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aCxcblx0aXNQYXRoRGVsZXRhYmxlLFxuXHRpc1BhdGhJbnNlcnRhYmxlXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRGlzcGxheU1vZGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB7IGdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uLCBnZXREaXNwbGF5TW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IEZpZWxkSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRWYWx1ZUJpbmRpbmcsIGdldFZpc2libGVFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgdHlwZSBUb2tlbml6ZXIgZnJvbSBcInNhcC9tL1Rva2VuaXplclwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgTXVsdGlWYWx1ZUZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL011bHRpVmFsdWVGaWVsZFwiO1xuaW1wb3J0IHR5cGUgRmllbGRFZGl0TW9kZSBmcm9tIFwic2FwL3VpL21kYy9lbnVtcy9GaWVsZEVkaXRNb2RlXCI7XG5pbXBvcnQgTXVsdGlWYWx1ZUZpZWxkSXRlbSBmcm9tIFwic2FwL3VpL21kYy9maWVsZC9NdWx0aVZhbHVlRmllbGRJdGVtXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuXG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgeyBDb2xsYWJvcmF0aW9uRmllbGRHcm91cFByZWZpeCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCBGb3JtRWxlbWVudFdyYXBwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0Zvcm1FbGVtZW50V3JhcHBlclwiO1xuaW1wb3J0ICogYXMgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvQ29sbGFib3JhdGlvbkZvcm1hdHRlclwiO1xuaW1wb3J0IHR5cGUgTWV0YVBhdGggZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWV0YVBhdGhcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgaXNSZWFkT25seUV4cHJlc3Npb24sIGlzUmVxdWlyZWRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRmllbGRDb250cm9sSGVscGVyXCI7XG5pbXBvcnQgKiBhcyBVSUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgRmllbGRSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkUnVudGltZVwiO1xuaW1wb3J0IEZvcm1hdE9wdGlvbnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvbXVsdGl2YWx1ZWZpZWxkL0Zvcm1hdE9wdGlvbnNcIjtcbmltcG9ydCBNdWx0aVZhbHVlRmllbGRSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL211bHRpdmFsdWVmaWVsZC9NdWx0aVZhbHVlRmllbGRSdW50aW1lXCI7XG5pbXBvcnQgQXZhdGFyIGZyb20gXCJzYXAvbS9BdmF0YXJcIjtcbmltcG9ydCBIQm94IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBNZGNWYWx1ZUhlbHAsIFZhbHVlSGVscCRPcGVuZWRFdmVudCB9IGZyb20gXCJzYXAvdWkvbWRjL1ZhbHVlSGVscFwiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxUeXBlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuaW1wb3J0IFZhbHVlSGVscCBmcm9tIFwiLi9WYWx1ZUhlbHBcIjtcbmltcG9ydCBGaWVsZFJ1bnRpbWVIZWxwZXIgZnJvbSBcIi4vZmllbGQvRmllbGRSdW50aW1lSGVscGVyXCI7XG5cbnR5cGUgTXVsdGlJbnB1dFNldHRpbmdzID0ge1xuXHRkZXNjcmlwdGlvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0Y29sbGVjdGlvbkJpbmRpbmc6IFByb3BlcnR5QmluZGluZ0luZm87XG5cdGtleTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0ZGlzcGxheU9ubHk/OiBib29sZWFuO1xufTtcblxudHlwZSBNdWx0aVZhbHVlRmllbGRQYXRoU3RydWN0dXJlID0ge1xuXHRjb2xsZWN0aW9uUGF0aDogc3RyaW5nO1xuXHRpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT47XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIE11bHRpVmFsdWVGaWVsZCBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBUaGUgTXVsdGlWYWx1ZUZpZWxkIGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgZWl0aGVyIGEgRGF0YUZpZWxkIG9yIFByb3BlcnR5IGRpcmVjdGx5LiBJdCBoYXMgdG8gcG9pbnQgdG8gYSBjb2xsZWN0aW9uIHByb3BlcnR5LlxuICogPGJyPlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm86TXVsdGlWYWx1ZUZpZWxkXG4gKiBpZD1cIlNvbWVVbmlxdWVJZGVudGlmaWVyXCJcbiAqIGNvbnRleHRQYXRoPVwie2VudGl0eVNldCZndDt9XCJcbiAqIG1ldGFQYXRoPVwie2RhdGFGaWVsZCZndDt9XCJcbiAqIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLk11bHRpVmFsdWVGaWVsZFxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuMTE4LjBcbiAqL1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLk11bHRpVmFsdWVGaWVsZFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTXVsdGlWYWx1ZUZpZWxkQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrPENvbnRyb2w+IHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC51aS5jb3JlLklGb3JtQ29udGVudFwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lGb3JtQ29udGVudCA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFRoZSAnaWQnIHByb3BlcnR5XG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGlkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQcmVmaXggYWRkZWQgdG8gdGhlIGdlbmVyYXRlZCBJRCBvZiB0aGUgZmllbGQgLSBvbmx5IGlmIG5vIGlkIGlzIHByb3ZpZGVkXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFByZWZpeCBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIElEIG9mIHRoZSB2YWx1ZSBoZWxwIHVzZWQgZm9yIHRoZSBmaWVsZFxuXHQgKi9cblx0QGFzc29jaWF0aW9uKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHZoSWRQcmVmaXghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHJlbGF0aXZlIE1ldGFkYXRhIHBhdGggdG8gdGhlIE11bHRpVmFsdWVGaWVsZC5cblx0ICogVGhlIG1ldGFQYXRoIHNob3VsZCBwb2ludCB0byBhIFByb3BlcnR5IG9yIERhdGFGaWVsZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBtZXRhUGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogVGhlIHJlYWRPbmx5IGZsYWdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIHJlcXVpcmVkOiBmYWxzZSB9KVxuXHRwdWJsaWMgcmVhZE9ubHk/OiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0LyoqXG5cdCAqIFRoZSBjb250ZXh0IHBhdGggcHJvdmlkZWQgZm9yIHRoZSBNdWx0aVZhbHVlRmllbGRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkgYWRkZWQgdG8gYmUgYWJsZSB0byBhZGQgZGF0YSAvIGl0ZW1zIHRvIHRoZSBtdWx0aS1pbnB1dCBmaWVsZCB1c2luZyBhIGRpZmZlcmVudCBtb2RlbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYW55XCIsXG5cdFx0aXNCaW5kaW5nSW5mbzogdHJ1ZVxuXHR9KVxuXHRwdWJsaWMgaXRlbXM/OiBQcm9wZXJ0eUJpbmRpbmdJbmZvO1xuXG5cdC8qKlxuXHQgKiBUaGUgb2JqZWN0IHdpdGggdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuXHQgKlxuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLm11bHRpdmFsdWVmaWVsZC5Gb3JtYXRPcHRpb25zXCIsIG11bHRpcGxlOiBmYWxzZSwgZGVmYXVsdENsYXNzOiBGb3JtYXRPcHRpb25zIH0pXG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdF9pc0luRWRpdE1vZGU6IGJvb2xlYW4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiA9IGZhbHNlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHVzZVBhcmVudEJpbmRpbmdDYWNoZSA9IGZhbHNlO1xuXG5cdC8vIENvbXB1dGVkIHByb3BlcnRpZXNcblxuXHRwcml2YXRlIGl0ZW0hOiBNdWx0aUlucHV0U2V0dGluZ3M7XG5cblx0LyoqXG5cdCAqIFBvaW50ZWQgYXQgYSBkYXRhRmllbGQuIFRoaXMgY2FuIGJlIERhdGFGaWVsZERlZmF1bHQgZnJvbSBhIHByb3BlcnR5LlxuXHQgKi9cblx0cHJpdmF0ZSBjb252ZXJ0ZWREYXRhRmllbGQhOiBEYXRhRmllbGQ7XG5cblx0LyoqXG5cdCAqIERhdGFNb2RlbFBhdGggZm9yIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGRpc3BsYXllZC5cblx0ICovXG5cdHByaXZhdGUgZGF0YU1vZGVsUGF0aCE6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+O1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSB0byBiZSBkaXNwbGF5ZWRcblx0ICovXG5cdHByaXZhdGUgcHJvcGVydHkhOiBQcm9wZXJ0eTtcblxuXHQvKipcblx0ICogRWRpdCBNb2RlIG9mIHRoZSBmaWVsZC5cblx0ICogSWYgdGhlIGVkaXRNb2RlIGlzIHVuZGVmaW5lZCB0aGVuIHdlIGNvbXB1dGUgaXQgYmFzZWQgb24gdGhlIG1ldGFkYXRhXG5cdCAqIE90aGVyd2lzZSB3ZSB1c2UgdGhlIHZhbHVlIHByb3ZpZGVkIGhlcmUuXG5cdCAqL1xuXHRwcml2YXRlIGVkaXRNb2RlITogRmllbGRFZGl0TW9kZSB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdC8qKlxuXHQgKiBUaGUgZGlzcGxheSBtb2RlIGFkZGVkIHRvIHRoZSBjb2xsZWN0aW9uIGZpZWxkXG5cdCAqL1xuXHRwcml2YXRlIGRpc3BsYXlNb2RlITogRGlzcGxheU1vZGU7XG5cblx0LyoqXG5cdCAqIFRoZSBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB0aGF0IGlzIGNhbGN1bGF0ZWQgaW50ZXJuYWxseVxuXHQgKi9cblx0cHJpdmF0ZSBjb2xsZWN0aW9uITogUHJvcGVydHlCaW5kaW5nSW5mbztcblxuXHRwcml2YXRlIHZpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdHByaXZhdGUgZmllbGRHcm91cElkcz86IHN0cmluZztcblxuXHRwcml2YXRlIGVuaGFuY2VkTWV0YVBhdGghOiBDb250ZXh0O1xuXG5cdHByaXZhdGUgZW5hYmxlRXhwcmVzc2lvbjogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0cHJpdmF0ZSBjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiE6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb24hOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24hOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25FbmFibGVkITogYm9vbGVhbjtcblxuXHRwcml2YXRlIGRhdGFTb3VyY2VQYXRoITogc3RyaW5nO1xuXG5cdHByaXZhdGUgaW5zZXJ0YWJsZUFuZERlbGV0YWJsZSE6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogc3RyaW5nIHwgKCRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8TXVsdGlWYWx1ZUZpZWxkQmxvY2s+KSwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdGlmICh0eXBlb2YgcHJvcHMgIT09IFwic3RyaW5nXCIpIHtcblx0XHRcdC8vIHR5cGUgb2YgcHJvcHMgY2FuIGJlIGEgc3RyaW5nIGlmIHdlIGFyZSBjbG9uaW5nIHRoZSBNdWx0aVZhbHVlRmllbGQgaW5zaWRlIGFuIGFnZ3JlZ2F0aW9uXG5cdFx0XHQvLyBpbiB0aGF0IGNhc2UgX2lzSW5FZGl0TW9kZSBoYXMgYWxyZWFkeSBiZWVuIGNvbXB1dGVkIG9uIHRoZSBvbmUgd2UgY2xvbmVcblx0XHRcdHByb3BzLl9pc0luRWRpdE1vZGUgPSBjb21waWxlRXhwcmVzc2lvbihVSS5Jc0VkaXRhYmxlKTtcblx0XHR9XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogSW4gY2FzZSBhbiBleHRlcm5hbCB2YWx1ZSBpcyBzZXQgKGUuZy4gZm9yIHByb3ZpZGluZyBkYXRhIGluIGEganNvbiBtb2RlbCkgd2UgbmVlZCB0byBvdmVycmlkZSB0aGUgYmluZGluZyBzdHJpbmdzIGZvciB0aGUgaXRlbS5cblx0ICogQHBhcmFtIGNvbGxlY3Rpb25CaW5kaW5nXG5cdCAqIEBwYXJhbSBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aFxuXHQgKiBAcGFyYW0gdGV4dEV4cHJlc3Npb25cblx0ICogQHBhcmFtIGtleVxuXHQgKiBAcmV0dXJucyBNdWx0aUlucHV0U2V0dGluZ3Ncblx0ICovXG5cdHByaXZhdGUgX292ZXJyaWRlVmFsdWUoXG5cdFx0Y29sbGVjdGlvbkJpbmRpbmc6IFByb3BlcnR5QmluZGluZ0luZm8gJiB7IHBhcmFtZXRlcnM/OiBvYmplY3QgfSxcblx0XHRpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eVBhdGggfCBQcm9wZXJ0eT4sXG5cdFx0dGV4dEV4cHJlc3Npb246IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLFxuXHRcdGtleTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb25cblx0KTogTXVsdGlJbnB1dFNldHRpbmdzIHtcblx0XHRpZiAodGhpcy5pdGVtcykge1xuXHRcdFx0Y29uc3QgbW9kZWwgPSB0aGlzLml0ZW1zLm1vZGVsID8/IHRoaXMuaXRlbXMubW9kZWxOYW1lO1xuXHRcdFx0Y29sbGVjdGlvbkJpbmRpbmcgPSB7IHBhdGg6IGAke21vZGVsfT4ke3RoaXMuaXRlbXMucGF0aH1gIH07XG5cdFx0XHRjb25zdCBjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eSA9IGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eTtcblx0XHRcdGNvbnN0IGNvbW1vblByb3BlcnR5UGF0aCA9IGB7JHttb2RlbH0+JHtjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eS5uYW1lfX1gO1xuXG5cdFx0XHQvLyBUZXh0IGFycmFuZ2VtZW50IHVzZSBjYXNlXG5cdFx0XHRpZiAoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPihjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24/LlRleHQpKSB7XG5cdFx0XHRcdHRleHRFeHByZXNzaW9uID0gYHske21vZGVsfT4ke2NvbW1vblRhcmdldE9iamVjdFByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbj8uVGV4dD8ucGF0aH19YDtcblx0XHRcdFx0Ly8gbm9uIHRleHQgYXJyYW5nZW1lbnQgdXNlIGNhc2Vcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRleHRFeHByZXNzaW9uID0gY29tbW9uUHJvcGVydHlQYXRoO1xuXHRcdFx0fVxuXHRcdFx0a2V5ID0gY29tbW9uUHJvcGVydHlQYXRoO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0ZGVzY3JpcHRpb246IHRleHRFeHByZXNzaW9uLFxuXHRcdFx0Y29sbGVjdGlvbkJpbmRpbmcsXG5cdFx0XHRrZXk6IGtleVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogRnVuY3Rpb24gdG8gZ2V0IHRoZSBjb3JyZWN0IHNldHRpbmdzIGZvciB0aGUgbXVsdGkgaW5wdXQuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGggVGhlIGNvcnJlc3BvbmRpbmcgRGF0YU1vZGVsT2JqZWN0UGF0aC5cblx0ICogQHBhcmFtIGZvcm1hdE9wdGlvbnMgVGhlIGZvcm1hdCBvcHRpb25zIHRvIGNhbGN1bGF0ZSB0aGUgcmVzdWx0XG5cdCAqIEByZXR1cm5zIE11bHRpSW5wdXRTZXR0aW5nc1xuXHQgKi9cblx0cHJpdmF0ZSBfZ2V0TXVsdGlJbnB1dFNldHRpbmdzKFxuXHRcdHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4sXG5cdFx0Zm9ybWF0T3B0aW9uczogRm9ybWF0T3B0aW9ucyB8IHVuZGVmaW5lZFxuXHQpOiBNdWx0aUlucHV0U2V0dGluZ3Mge1xuXHRcdGNvbnN0IHsgY29sbGVjdGlvblBhdGgsIGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIH0gPSBNdWx0aVZhbHVlRmllbGRCbG9jay5fZ2V0UGF0aFN0cnVjdHVyZShwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRcdGNvbnN0IGNvbGxlY3Rpb25CaW5kaW5nID0gdGhpcy51c2VQYXJlbnRCaW5kaW5nQ2FjaGVcblx0XHRcdD8geyBwYXRoOiBjb2xsZWN0aW9uUGF0aCwgdGVtcGxhdGVTaGFyZWFibGU6IGZhbHNlIH1cblx0XHRcdDogeyBwYXRoOiBjb2xsZWN0aW9uUGF0aCwgcGFyYW1ldGVyczogeyAkJG93blJlcXVlc3Q6IHRydWUgfSwgdGVtcGxhdGVTaGFyZWFibGU6IGZhbHNlIH07XG5cblx0XHRjb25zdCBwcm9wZXJ0eVBhdGhPclByb3BlcnR5ID0gcHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eVBhdGggfCBQcm9wZXJ0eTtcblx0XHRjb25zdCBwcm9wZXJ0eURlZmluaXRpb24gPSBpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoT3JQcm9wZXJ0eSlcblx0XHRcdD8gcHJvcGVydHlQYXRoT3JQcm9wZXJ0eS4kdGFyZ2V0XG5cdFx0XHQ6IHByb3BlcnR5UGF0aE9yUHJvcGVydHk7XG5cdFx0Y29uc3QgY29tbW9uVGV4dCA9IHByb3BlcnR5RGVmaW5pdGlvbj8uYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0O1xuXHRcdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRSZWxhdGl2ZVBhdGhzKHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cblx0XHRjb25zdCB0ZXh0RXhwcmVzc2lvbiA9IGNvbW1vblRleHRcblx0XHRcdD8gY29tcGlsZUV4cHJlc3Npb24oZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pKVxuXHRcdFx0OiBnZXRWYWx1ZUJpbmRpbmcoaXRlbURhdGFNb2RlbE9iamVjdFBhdGgsIGZvcm1hdE9wdGlvbnMgPz8ge30sIHRydWUpO1xuXG5cdFx0Y29uc3Qga2V5ID0gZ2V0VmFsdWVCaW5kaW5nKGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLCBmb3JtYXRPcHRpb25zID8/IHt9LCB0cnVlKTtcblx0XHRsZXQgZGlzcGxheU9ubHkgPSBmYWxzZTtcblx0XHRpZiAoZ2V0UmVsYXRpdmVQYXRocyhpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCkubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gaWYgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIHZhbHVlIGNvbnRhaW5zIGEgbmF2aWdhdGlvbiwgY3JlYXRlIHdpbGwgbm90IGJlIHBvc3NpYmxlIGluIHRoZSBkZWxlZ2F0ZSwgc28gd2UgZm9yY2UgdGhlIGRpc3BsYXkgTW9kZVxuXHRcdFx0ZGlzcGxheU9ubHkgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0ZGlzcGxheU9ubHksXG5cdFx0XHQuLi50aGlzLl9vdmVycmlkZVZhbHVlKGNvbGxlY3Rpb25CaW5kaW5nLCBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCwgdGV4dEV4cHJlc3Npb24sIGtleSlcblx0XHR9O1xuXHR9XG5cblx0Ly8gUHJvY2VzcyB0aGUgZGF0YU1vZGVsUGF0aCB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGFuZCB0aGUgcmVsYXRpdmUgRGF0YU1vZGVsUGF0aCBmb3IgdGhlIGl0ZW0uXG5cdHByaXZhdGUgc3RhdGljIF9nZXRQYXRoU3RydWN0dXJlKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KTogTXVsdGlWYWx1ZUZpZWxkUGF0aFN0cnVjdHVyZSB7XG5cdFx0bGV0IGZpcnN0Q29sbGVjdGlvblBhdGggPSBcIlwiO1xuXHRcdGNvbnN0IGN1cnJlbnRFbnRpdHlTZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbj8udGFyZ2V0RW50aXR5U2V0XG5cdFx0XHQ/IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLnRhcmdldEVudGl0eVNldFxuXHRcdFx0OiBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0O1xuXHRcdGNvbnN0IG5hdmlnYXRlZFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGNvbnN0IGNvbnRleHROYXZzRm9ySXRlbSA9IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uPy5uYXZpZ2F0aW9uUHJvcGVydGllcyB8fCBbXTtcblx0XHRmb3IgKGNvbnN0IG5hdlByb3Agb2YgZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcykge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbiA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0XHRcdCFkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbi5uYXZpZ2F0aW9uUHJvcGVydGllcy5zb21lKFxuXHRcdFx0XHRcdChjb250ZXh0TmF2UHJvcCkgPT4gY29udGV4dE5hdlByb3AuZnVsbHlRdWFsaWZpZWROYW1lID09PSBuYXZQcm9wLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gaW4gY2FzZSBvZiByZWxhdGl2ZSBlbnRpdHlTZXRQYXRoIHdlIGRvbid0IGNvbnNpZGVyIG5hdmlnYXRpb25QYXRoIHRoYXQgYXJlIGFscmVhZHkgaW4gdGhlIGNvbnRleHRcblx0XHRcdFx0bmF2aWdhdGVkUGF0aHMucHVzaChuYXZQcm9wLm5hbWUpO1xuXHRcdFx0XHRjb250ZXh0TmF2c0Zvckl0ZW0ucHVzaChuYXZQcm9wKTtcblx0XHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZQcm9wLm5hbWUpKSB7XG5cdFx0XHRcdFx0aWYgKGlzTXVsdGlwbGVOYXZpZ2F0aW9uUHJvcGVydHkobmF2UHJvcCkpIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRmaXJzdENvbGxlY3Rpb25QYXRoID0gYCR7bmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIil9YDtcblx0XHRjb25zdCBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4gPSBPYmplY3QuYXNzaWduKHt9LCBkYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0XHRpZiAoaXRlbURhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uKSB7XG5cdFx0XHRpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24ubmF2aWdhdGlvblByb3BlcnRpZXMgPSBjb250ZXh0TmF2c0Zvckl0ZW07IC8vIHRoaXMgY2hhbmdlcyB0aGUgY3JlYXRpb24gb2YgdGhlIHZhbHVlSGVscCBJRCAuLi5cblx0XHR9XG5cblx0XHRyZXR1cm4geyBjb2xsZWN0aW9uUGF0aDogZmlyc3RDb2xsZWN0aW9uUGF0aCwgaXRlbURhdGFNb2RlbE9iamVjdFBhdGg6IGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIH07XG5cdH1cblxuXHQvKipcblx0ICogQ2FsY3VsYXRlIHRoZSBmaWVsZEdyb3VwSWRzIGZvciB0aGUgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50XG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBmb3IgdGhlIGZpZWxkR3JvdXBJZHNcblx0ICovXG5cdHByaXZhdGUgY29tcHV0ZUZpZWxkR3JvdXBJZHMoYXBwQ29tcG9uZW50PzogQXBwQ29tcG9uZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIWFwcENvbXBvbmVudCkge1xuXHRcdFx0Ly9mb3IgVmFsdWVIZWxwIC8gTWFzcyBlZGl0IFRlbXBsYXRpbmcgdGhlIGFwcENvbXBvbmVudCBpcyBub3QgcGFzc2VkIHRvIHRoZSB0ZW1wbGF0aW5nXG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9XG5cdFx0Y29uc3Qgc2lkZUVmZmVjdFNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cdFx0Y29uc3QgZmllbGRHcm91cElkcyA9IHNpZGVFZmZlY3RTZXJ2aWNlLmNvbXB1dGVGaWVsZEdyb3VwSWRzKFxuXHRcdFx0dGhpcy5kYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0KHRoaXMuZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHkpLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdCk7XG5cdFx0aWYgKHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpb25GaWVsZEdyb3VwID0gYCR7Q29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXh9JHt0aGlzLmRhdGFTb3VyY2VQYXRofWA7XG5cdFx0XHRmaWVsZEdyb3VwSWRzLnB1c2goY29sbGFib3JhdGlvbkZpZWxkR3JvdXApO1xuXHRcdH1cblx0XHR0aGlzLmZpZWxkR3JvdXBJZHMgPSBmaWVsZEdyb3VwSWRzLmxlbmd0aCA/IGZpZWxkR3JvdXBJZHMuam9pbihcIixcIikgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZmllbGRHcm91cElkcy5qb2luKFwiLFwiKTtcblx0XHRyZXR1cm4gcmVzdWx0ID09PSBcIlwiID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuXHR9XG5cblx0aW5pdGlhbGl6ZShtZXRhQ29udGV4dFBhdGg6IE1ldGFQYXRoPHVua25vd24+KTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXG5cdFx0dGhpcy5jb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGggPz8gb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/LmZ1bGxDb250ZXh0UGF0aDtcblx0XHRjb25zdCBvZGF0YU1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblxuXHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1ldGFDb250ZXh0UGF0aC5nZXRQYXRoKCkpIGFzIENvbnRleHQgfCB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBtZXRhUGF0aE9iamVjdCA9IG1ldGFDb250ZXh0UGF0aD8uZ2V0VGFyZ2V0KCk7XG5cblx0XHQvLyBJZiB0aGUgdGFyZ2V0IGlzIGEgcHJvcGVydHkgd2l0aCBhIERhdGFGaWVsZERlZmF1bHQsIHVzZSB0aGlzIGFzIGRhdGEgZmllbGRcblx0XHRpZiAoaXNQcm9wZXJ0eShtZXRhUGF0aE9iamVjdCkgJiYgbWV0YVBhdGhPYmplY3QuYW5ub3RhdGlvbnMuVUk/LkRhdGFGaWVsZERlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5lbmhhbmNlZE1ldGFQYXRoID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KGBAJHtVSUFubm90YXRpb25UZXJtcy5EYXRhRmllbGREZWZhdWx0fWAsIG1ldGFDb250ZXh0KSBhcyBDb250ZXh0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVuaGFuY2VkTWV0YVBhdGggPSBtZXRhQ29udGV4dCBhcyBDb250ZXh0O1xuXHRcdH1cblx0XHRjb25zdCBkYXRhRmllbGREYXRhTW9kZWxQYXRoID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCh0aGlzLmVuaGFuY2VkTWV0YVBhdGguZ2V0UGF0aCgpLCB0aGlzLmNvbnRleHRQYXRoKSE7XG5cblx0XHR0aGlzLmNvbnZlcnRlZERhdGFGaWVsZCA9IGRhdGFGaWVsZERhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIERhdGFGaWVsZDtcblxuXHRcdHRoaXMuZGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5Pihcblx0XHRcdGRhdGFGaWVsZERhdGFNb2RlbFBhdGgsXG5cdFx0XHQodGhpcy5jb252ZXJ0ZWREYXRhRmllbGQuVmFsdWUgYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4pLnBhdGhcblx0XHQpO1xuXHRcdHRoaXMuZGF0YVNvdXJjZVBhdGggPSBnZXRUYXJnZXRPYmplY3RQYXRoKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cdFx0dGhpcy5wcm9wZXJ0eSA9IHRoaXMuZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cblx0XHRsZXQgaW5zZXJ0YWJsZSA9IGlzUGF0aEluc2VydGFibGUodGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHRjb25zdCBkZWxldGVOYXZpZ2F0aW9uUmVzdHJpY3Rpb24gPSBpc1BhdGhEZWxldGFibGUodGhpcy5kYXRhTW9kZWxQYXRoLCB7XG5cdFx0XHRpZ25vcmVUYXJnZXRDb2xsZWN0aW9uOiB0cnVlLFxuXHRcdFx0YXV0aG9yaXplVW5yZXNvbHZhYmxlOiB0cnVlXG5cdFx0fSk7XG5cdFx0Y29uc3QgZGVsZXRlUGF0aCA9IGlzUGF0aERlbGV0YWJsZSh0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXG5cdFx0Ly8gZGVsZXRhYmxlOlxuXHRcdC8vXHRcdGlmIHJlc3RyaWN0aW9ucyBjb21lIGZyb20gTmF2aWdhdGlvbiB3ZSBhcHBseSBpdFxuXHRcdC8vXHRcdG90aGVyd2lzZSB3ZSBhcHBseSByZXN0cmljdGlvbnMgZGVmaW5lZCBvbiB0YXJnZXQgY29sbGVjdGlvbiBvbmx5IGlmIGl0J3MgYSBjb25zdGFudFxuXHRcdC8vICAgICAgb3RoZXJ3aXNlIGl0J3MgdHJ1ZSFcblx0XHRsZXQgZGVsZXRhYmxlID0gaWZFbHNlKFxuXHRcdFx0ZGVsZXRlTmF2aWdhdGlvblJlc3RyaWN0aW9uLl90eXBlID09PSBcIlVucmVzb2x2YWJsZVwiLFxuXHRcdFx0b3Iobm90KGlzQ29uc3RhbnQoZGVsZXRlUGF0aCkpLCBkZWxldGVQYXRoKSxcblx0XHRcdGRlbGV0ZVBhdGhcblx0XHQpO1xuXG5cdFx0aWYgKHRoaXMuaXRlbXMpIHtcblx0XHRcdGluc2VydGFibGUgPSBkZWxldGFibGUgPSBjb25zdGFudCghdGhpcy5yZWFkT25seSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMudmlzaWJsZSA9IGdldFZpc2libGVFeHByZXNzaW9uKHRoaXMuZGF0YU1vZGVsUGF0aCwgdGhpcy5mb3JtYXRPcHRpb25zKTtcblx0XHR9XG5cblx0XHR0aGlzLmluc2VydGFibGVBbmREZWxldGFibGUgPSBhbmQoaW5zZXJ0YWJsZSwgZGVsZXRhYmxlKTtcblx0XHR0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uID0gY29uc3RhbnQoZmFsc2UpO1xuXHRcdHRoaXMuY29tcHV0ZUNvbGxhYm9yYXRpb25Qcm9wZXJ0aWVzKCk7XG5cdFx0Y29uc3QgcmVhZE9ubHkgPSB0aGlzLmlzUHJvcGVydHlJbml0aWFsKFwicmVhZE9ubHlcIikgPyB1bmRlZmluZWQgOiB0aGlzLnJlYWRPbmx5O1xuXHRcdGlmICh0aGlzLmZvcm1hdE9wdGlvbnM/LmRpc3BsYXlPbmx5ID09PSB0cnVlIHx8IHJlYWRPbmx5ID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0fSBlbHNlIGlmICh0aGlzLnJlYWRPbmx5ID09PSBmYWxzZSkge1xuXHRcdFx0dGhpcy5lZGl0TW9kZSA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0YW5kKGluc2VydGFibGUsIGRlbGV0YWJsZSksXG5cdFx0XHRcdFx0aWZFbHNlKHRoaXMuY29sbGFib3JhdGlvbkV4cHJlc3Npb24sIGNvbnN0YW50KFwiUmVhZE9ubHlcIiksIGNvbnN0YW50KFwiRWRpdGFibGVcIikpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwiRGlzcGxheVwiKVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRhbmQoaW5zZXJ0YWJsZSwgZGVsZXRhYmxlLCBVSS5Jc0VkaXRhYmxlLCBub3QoZXF1YWwodHJ1ZSwgaXNSZWFkT25seUV4cHJlc3Npb24odGhpcy5jb252ZXJ0ZWREYXRhRmllbGQpKSkpLFxuXHRcdFx0XHRcdGlmRWxzZSh0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uLCBjb25zdGFudChcIlJlYWRPbmx5XCIpLCBjb25zdGFudChcIkVkaXRhYmxlXCIpKSxcblx0XHRcdFx0XHRjb25zdGFudChcIkRpc3BsYXlcIilcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR0aGlzLmRpc3BsYXlNb2RlID0gZ2V0RGlzcGxheU1vZGUodGhpcy5kYXRhTW9kZWxQYXRoKTtcblxuXHRcdGNvbnN0IGxvY2FsRGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5Pihcblx0XHRcdHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgodGhpcy5lbmhhbmNlZE1ldGFQYXRoLmdldFBhdGgoKSwgdGhpcy5jb250ZXh0UGF0aCkhLFxuXHRcdFx0KHRoaXMuY29udmVydGVkRGF0YUZpZWxkLlZhbHVlIGFzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KS5wYXRoXG5cdFx0KTtcblxuXHRcdHRoaXMuaXRlbSA9IHRoaXMuX2dldE11bHRpSW5wdXRTZXR0aW5ncyhsb2NhbERhdGFNb2RlbFBhdGgsIHRoaXMuZm9ybWF0T3B0aW9ucyk7IC8vIHRoaXMgZnVuY3Rpb24gcmV3cml0ZXMgZGF0YU1vZGVsUGF0aCwgdGhlcmVmb3JlLCBmb3Igbm93IGEgY2xlYW4gb2JqZWN0IGlzIHBhc3NlZFxuXHRcdGlmICh0aGlzLml0ZW0uZGlzcGxheU9ubHkpIHtcblx0XHRcdHRoaXMuZWRpdE1vZGUgPSBcIkRpc3BsYXlcIjtcblx0XHR9XG5cdFx0dGhpcy5jb2xsZWN0aW9uID0gdGhpcy5pdGVtLmNvbGxlY3Rpb25CaW5kaW5nO1xuXG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKTtcblx0XHR0aGlzLmZpZWxkR3JvdXBJZHMgPSB0aGlzLmNvbXB1dGVGaWVsZEdyb3VwSWRzKGFwcENvbXBvbmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uTWV0YWRhdGFBdmFpbGFibGUgZXZlbnQuXG5cdCAqL1xuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBpcyBzdXBwb3J0ZWQuXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGNvbGxhYm9yYXRpb24gZHJhZnQgaXMgc3VwcG9ydGVkLlxuXHQgKi9cblx0aXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGNvbnN0IG9kYXRhTWV0YU1vZGVsID0gb3duZXI/LmdldE1ldGFNb2RlbCgpO1xuXHRcdHJldHVybiBNb2RlbEhlbHBlci5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZChvZGF0YU1ldGFNb2RlbCEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgaGVscGVyIGNvbXB1dGVzIHRoZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5lZWRlZCBmb3IgdGhlIGNvbGxhYm9yYXRpb24gYXZhdGFyLlxuXHQgKi9cblx0Y29tcHV0ZUNvbGxhYm9yYXRpb25Qcm9wZXJ0aWVzKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKCkgJiYgdGhpcy5lZGl0TW9kZSAhPT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQgPSB0cnVlO1xuXHRcdFx0dGhpcy5jb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiA9IFVJRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbihcblx0XHRcdFx0dGhpcy5kYXRhTW9kZWxQYXRoLFxuXHRcdFx0XHRDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5oYXNDb2xsYWJvcmF0aW9uQWN0aXZpdHlcblx0XHRcdCk7XG5cblx0XHRcdHRoaXMuY29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRnZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbih0aGlzLmRhdGFNb2RlbFBhdGgsIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25BY3Rpdml0eUluaXRpYWxzKVxuXHRcdFx0KTtcblx0XHRcdHRoaXMuY29sbGFib3JhdGlvbkNvbG9yRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRnZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbih0aGlzLmRhdGFNb2RlbFBhdGgsIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25BY3Rpdml0eUNvbG9yKVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRnZXRSZXF1aXJlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNdWx0aVZhbHVlRmllbGQoKS5nZXRSZXF1aXJlZCgpO1xuXHR9XG5cblx0Z2V0SXRlbXMoKTogTXVsdGlWYWx1ZUZpZWxkSXRlbVtdIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNdWx0aVZhbHVlRmllbGQoKS5nZXRJdGVtcygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIGNvbnRlbnQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZW50IG9mIHRoZSBidWlsZGluZyBibG9jay5cblx0ICovXG5cdGNyZWF0ZUNvbnRlbnQoKTogQ29udHJvbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgbWV0YUNvbnRleHRQYXRoID0gdGhpcy5nZXRNZXRhUGF0aE9iamVjdCh0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRpZiAobWV0YUNvbnRleHRQYXRoKSB7XG5cdFx0XHR0aGlzLmluaXRpYWxpemUobWV0YUNvbnRleHRQYXRoKTtcblxuXHRcdFx0Ly8gQnVpbGRpbmdCbG9jayB3aXRoIHNldCBJRCBzY2VuYXJpb1xuXHRcdFx0aWYgKHRoaXMuaWQpIHtcblx0XHRcdFx0dGhpcy52aElkUHJlZml4ID0gSUQuZ2VuZXJhdGUoW3RoaXMuZ2V0SWQoKSwgdGhpcy52aElkUHJlZml4ID8/IFwiRmllbGRWYWx1ZUhlbHBcIl0pOyAvLyBVc2UgZ2V0SWQgdG8gcmV0cmlldmUgSUQsIG5vdCB0aGlzLmlkXG5cdFx0XHR9IGVsc2UgaWYgKCF0aGlzLnZoSWRQcmVmaXgpIHtcblx0XHRcdFx0Ly8gTWF5YmUgbm90IGVudGVyZWRcblx0XHRcdFx0dGhpcy52aElkUHJlZml4ID0gdGhpcy5jcmVhdGVJZChcIkZpZWxkVmFsdWVIZWxwXCIpITtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdFx0Y29uc3QgdmlldyA9IGNvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdFx0Y29uc3Qgb2RhdGFNZXRhTW9kZWwgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1ldGFDb250ZXh0UGF0aC5nZXRQYXRoKCkpO1xuXHRcdFx0Y29uc3QgY29udGV4dCA9IG9kYXRhTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhQ29udGV4dFBhdGguZ2V0Q29udGV4dFBhdGgoKSk7XG5cdFx0XHRpZiAoIW1ldGFDb250ZXh0IHx8ICFjb250ZXh0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly9jcmVhdGUgYSBuZXcgYmluZGluZyBjb250ZXh0IGZvciB0aGUgdmFsdWUgaGVscFxuXG5cdFx0XHRjb25zdCBpdGVtc0FnZ3JlZ2F0aW9uID0gdGhpcy5jb2xsZWN0aW9uO1xuXHRcdFx0Y29uc3QgY3VzdG9tQWdncmVnYXRpb25MZW5ndGggPSB0aGlzLmdldEFwcENvbXBvbmVudCgpPy5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmZlXCIpPy5tYWNyb3M/Lm11bHRpVmFsdWVGaWVsZD8uaXRlbXNTaXplTGltaXQ7XG5cdFx0XHRpZiAoY3VzdG9tQWdncmVnYXRpb25MZW5ndGggIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRpdGVtc0FnZ3JlZ2F0aW9uLmxlbmd0aCA9IGN1c3RvbUFnZ3JlZ2F0aW9uTGVuZ3RoO1xuXHRcdFx0fVxuXG5cdFx0XHQvL2NvbXB1dGUgdGhlIGNvcnJlY3QgbGFiZWxcblx0XHRcdGNvbnN0IGxhYmVsID0gRmllbGRIZWxwZXIuY29tcHV0ZUxhYmVsVGV4dCh0aGlzLmNvbnZlcnRlZERhdGFGaWVsZC5WYWx1ZSBhcyBNZXRhTW9kZWxUeXBlPERhdGFGaWVsZFR5cGVzPiwge1xuXHRcdFx0XHRjb250ZXh0OiBtZXRhQ29udGV4dFxuXHRcdFx0fSkgYXMgc3RyaW5nO1xuXG5cdFx0XHRjb25zdCB2aENvbnRyb2wgPSBWYWx1ZUhlbHAuZ2V0VmFsdWVIZWxwRm9yTWV0YVBhdGgoXG5cdFx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSxcblx0XHRcdFx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCh0aGlzLmRhdGFNb2RlbFBhdGgpISxcblx0XHRcdFx0dGhpcy5jb250ZXh0UGF0aCA/PyB0aGlzLmdldE93bmVyQ29udGV4dFBhdGgoKSEsXG5cdFx0XHRcdHRoaXMuX2dldE93bmVyKCk/LmdldE1ldGFNb2RlbCgpXG5cdFx0XHQpO1xuXHRcdFx0bGV0IHZhbHVlSGVscDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0aWYgKHZoQ29udHJvbCAmJiB2aENvbnRyb2wuZ2V0Q29udGVudCgpKSB7XG5cdFx0XHRcdHZhbHVlSGVscCA9IHZoQ29udHJvbC5nZXRDb250ZW50KCkhLmdldElkKCk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBtdWx0aVZhbHVlRmllbGQgPSAoXG5cdFx0XHRcdDxNdWx0aVZhbHVlRmllbGRcblx0XHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIl9tdmZcIil9XG5cdFx0XHRcdFx0ZGVsZWdhdGU9e3sgbmFtZTogXCJzYXAvZmUvbWFjcm9zL211bHRpdmFsdWVmaWVsZC9NdWx0aVZhbHVlRmllbGREZWxlZ2F0ZVwiIH19XG5cdFx0XHRcdFx0aXRlbXM9e2l0ZW1zQWdncmVnYXRpb259XG5cdFx0XHRcdFx0ZGlzcGxheT17dGhpcy5kaXNwbGF5TW9kZX1cblx0XHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRcdGVkaXRNb2RlPXt0aGlzLmVkaXRNb2RlfVxuXHRcdFx0XHRcdHZhbHVlSGVscD17dmFsdWVIZWxwfVxuXHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXt0aGlzLmFyaWFMYWJlbGxlZEJ5ID8gdGhpcy5hcmlhTGFiZWxsZWRCeSA6IFtdfVxuXHRcdFx0XHRcdHNob3dFbXB0eUluZGljYXRvcj17dGhpcy5mb3JtYXRPcHRpb25zPy5zaG93RW1wdHlJbmRpY2F0b3J9XG5cdFx0XHRcdFx0bGFiZWw9e2xhYmVsfVxuXHRcdFx0XHRcdHJlcXVpcmVkPXtjb21waWxlRXhwcmVzc2lvbihhbmQoVUkuSXNFZGl0YWJsZSwgaXNSZXF1aXJlZEV4cHJlc3Npb24odGhpcy5jb252ZXJ0ZWREYXRhRmllbGQpKSl9XG5cdFx0XHRcdFx0Y2hhbmdlPXsoTXVsdGlWYWx1ZUZpZWxkUnVudGltZS5oYW5kbGVDaGFuZ2UgYXMgdW5rbm93biBhcyBGdW5jdGlvbikuYmluZChNdWx0aVZhbHVlRmllbGRSdW50aW1lLCBjb250cm9sbGVyKX1cblx0XHRcdFx0XHRmaWVsZEdyb3VwSWRzPXt0aGlzLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwPXtGaWVsZFJ1bnRpbWUub25WYWxpZGF0ZUZpZWxkR3JvdXB9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0aXRlbXM6IDxNdWx0aVZhbHVlRmllbGRJdGVtIGtleT17dGhpcy5pdGVtLmtleX0gZGVzY3JpcHRpb249e3RoaXMuaXRlbS5kZXNjcmlwdGlvbn0gLz4sXG5cdFx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJpbnNlcnRhYmxlQW5kRGVsZXRhYmxlXCIgdmFsdWU9e3RoaXMuaW5zZXJ0YWJsZUFuZERlbGV0YWJsZX0gLz5cblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L011bHRpVmFsdWVGaWVsZD5cblx0XHRcdCk7XG5cblx0XHRcdGxldCBmb3Jtd3JhcHBlciA9IG51bGw7XG5cdFx0XHRpZiAodGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0XHRjb25zdCBhdmF0YXIgPSAoXG5cdFx0XHRcdFx0PEF2YXRhclxuXHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5jb2xsYWJvcmF0aW9uRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRcdGluaXRpYWxzPXt0aGlzLmNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb259XG5cdFx0XHRcdFx0XHRkaXNwbGF5U2l6ZT1cIkN1c3RvbVwiXG5cdFx0XHRcdFx0XHRjdXN0b21EaXNwbGF5U2l6ZT1cIjEuNXJlbVwiXG5cdFx0XHRcdFx0XHRjdXN0b21Gb250U2l6ZT1cIjAuOHJlbVwiXG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I9e3RoaXMuY29sbGFib3JhdGlvbkNvbG9yRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdEZpZWxkUnVudGltZUhlbHBlci5zaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyKGF2YXRhciwgdmlldyk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdCk7XG5cdFx0XHRcdGZvcm13cmFwcGVyID0gKFxuXHRcdFx0XHRcdDxGb3JtRWxlbWVudFdyYXBwZXI+XG5cdFx0XHRcdFx0XHQ8SEJveCB3aWR0aD1cIjEwMCVcIiByZW5kZXJUeXBlPVwiQmFyZVwiIGFsaWduSXRlbXM9XCJFbmRcIj5cblx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRpdGVtczogW211bHRpVmFsdWVGaWVsZCwgYXZhdGFyXVxuXHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdDwvRm9ybUVsZW1lbnRXcmFwcGVyPlxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdG11bHRpVmFsdWVGaWVsZD8uYWRkRXZlbnREZWxlZ2F0ZShcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRvbmZvY3VzaW46IChldnQ6IGpRdWVyeS5FdmVudCAmIHsgc3JjQ29udHJvbDogQ29udHJvbCB9KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQgPSBldnQuc3JjQ29udHJvbC5nZXRQYXJlbnQoKSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0XHRcdFx0XHRcdGNvbnRyb2xsZXIuY29sbGFib3JhdGl2ZURyYWZ0Py5oYW5kbGVDb250ZW50Rm9jdXNJbihjdXJyZW50TXVsdGlWYWx1ZUZpZWxkKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAodmFsdWVIZWxwQ29udHJvbD8uZ2V0RG9tUmVmKCkpIHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZUhlbHBDb250cm9sLmF0dGFjaEV2ZW50T25jZShcImNsb3NlZFwiLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50TXVsdGlWYWx1ZUZpZWxkPy5mb2N1cygpO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25mb2N1c291dDogKGV2dDogalF1ZXJ5LkV2ZW50ICYgeyBzcmNDb250cm9sOiBDb250cm9sIH0pID0+IHtcblx0XHRcdFx0XHRcdFx0bGV0IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQgPSBldnQuc3JjQ29udHJvbC5nZXRQYXJlbnQoKSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJyZW50TXVsdGlWYWx1ZUZpZWxkPy5pc0E8VG9rZW5pemVyPihcInNhcC5tLlRva2VuaXplclwiKSkge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRNdWx0aVZhbHVlRmllbGQgPSBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkLmdldFBhcmVudCgpPy5nZXRQYXJlbnQoKSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Y29uc3QgZXZlbnQgPSBuZXcgVUk1RXZlbnQoXCJcIiwgY3VycmVudE11bHRpVmFsdWVGaWVsZCwge1xuXHRcdFx0XHRcdFx0XHRcdGZpZWxkR3JvdXBJZHM6IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQuZ2V0RmllbGRHcm91cElkcygpXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRjb250cm9sbGVyLmNvbGxhYm9yYXRpdmVEcmFmdC5oYW5kbGVDb250ZW50Rm9jdXNPdXQoZXZlbnQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dGhpc1xuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnN0IHZhbHVlSGVscENvbnRyb2wgPSBFbGVtZW50LmdldEVsZW1lbnRCeUlkKG11bHRpVmFsdWVGaWVsZC5nZXRWYWx1ZUhlbHAoKSkgYXMgTWRjVmFsdWVIZWxwO1xuXG5cdFx0XHRcdHZhbHVlSGVscENvbnRyb2w/LmF0dGFjaE9wZW5lZCgoZXZ0OiBWYWx1ZUhlbHAkT3BlbmVkRXZlbnQpID0+IHtcblx0XHRcdFx0XHRjb25zdCBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkID0gZXZ0LmdldFNvdXJjZSgpLmdldENvbnRyb2woKSE7XG5cdFx0XHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuaGFuZGxlQ29udGVudEZvY3VzSW4oY3VycmVudE11bHRpVmFsdWVGaWVsZCBhcyBNdWx0aVZhbHVlRmllbGQpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdG11bHRpVmFsdWVGaWVsZC5hZGRDdXN0b21EYXRhKG5ldyBDdXN0b21EYXRhKHsga2V5OiBcImZvcndhcmRlZEl0ZW1zQmluZGluZ1wiLCB2YWx1ZTogdGhpcy5pdGVtcyB9KSk7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCA/IGZvcm13cmFwcGVyIDogbXVsdGlWYWx1ZUZpZWxkO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXR0ZXIgZm9yIHRoZSByZWFkT25seSBwcm9wZXJ0eS5cblx0ICogQHBhcmFtIHJlYWRPbmx5XG5cdCAqL1xuXHRzZXRSZWFkT25seShyZWFkT25seTogYm9vbGVhbik6IHZvaWQge1xuXHRcdHN1cGVyLnNldFByb3BlcnR5KFwicmVhZE9ubHlcIiwgcmVhZE9ubHkpO1xuXHRcdHRoaXMudXBkYXRlRWRpdE1vZGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXR0ZXIgZm9yIHRoZSBfaXNJbkVkaXRNb2RlIHByb3BlcnR5LlxuXHQgKiBAcGFyYW0gaW5FZGl0TW9kZVxuXHQgKi9cblx0c2V0X2lzSW5FZGl0TW9kZShpbkVkaXRNb2RlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0c3VwZXIuc2V0UHJvcGVydHkoXCJfaXNJbkVkaXRNb2RlXCIsIGluRWRpdE1vZGUpO1xuXHRcdHRoaXMudXBkYXRlRWRpdE1vZGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKiBAcmV0dXJucyBUaGUgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKi9cblx0Z2V0TXVsdGlWYWx1ZUZpZWxkKCk6IE11bHRpVmFsdWVGaWVsZCB7XG5cdFx0aWYgKHRoaXMuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQoKSkge1xuXHRcdFx0cmV0dXJuICgodGhpcy5jb250ZW50IGFzIEZvcm1FbGVtZW50V3JhcHBlcikuY29udGVudCBhcyBIQm94KS5nZXRJdGVtcygpWzBdIGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuY29udGVudCBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZSB0aGUgZWRpdCBtb2RlIGJhc2VkIG9uIHRoZSByZWFkT25seSBhbmQgX2lzSW5FZGl0TW9kZSBwcm9wZXJ0aWVzLlxuXHQgKi9cblx0dXBkYXRlRWRpdE1vZGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgbXVsdGl2YWx1ZUZpZWxkID0gdGhpcy5nZXRNdWx0aVZhbHVlRmllbGQoKTtcblx0XHRjb25zdCBpbnNlcnRhYmxlQW5kRGVsZXRhYmxlID0gbXVsdGl2YWx1ZUZpZWxkLmRhdGEoXCJpbnNlcnRhYmxlQW5kRGVsZXRhYmxlXCIpO1xuXHRcdGlmICh0aGlzLnJlYWRPbmx5ID09PSB0cnVlIHx8ICFpbnNlcnRhYmxlQW5kRGVsZXRhYmxlKSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0XHRtdWx0aXZhbHVlRmllbGQuc2V0RWRpdE1vZGUoXCJEaXNwbGF5XCIpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5yZWFkT25seSA9PT0gZmFsc2UgJiYgaW5zZXJ0YWJsZUFuZERlbGV0YWJsZSkge1xuXHRcdFx0Ly9yZWFkT25seSBmYWxzZSBjYW4gb25seSBoYXZlIGltcGFjdCBpZiBpdGVtcyBhcmUgcHJvdmlkZWRcblx0XHRcdGlmICh0aGlzLl9pc0luRWRpdE1vZGUpIHtcblx0XHRcdFx0dGhpcy5lZGl0TW9kZSA9IFwiRWRpdGFibGVcIjtcblx0XHRcdFx0bXVsdGl2YWx1ZUZpZWxkLnNldEVkaXRNb2RlKFwiRWRpdGFibGVcIik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0XHRcdG11bHRpdmFsdWVGaWVsZC5zZXRFZGl0TW9kZShcIkRpc3BsYXlcIik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIGlmIHJlYWRPbmx5IGlzIG5vdCBleHBsaWNpdGx5IHNldCB3ZSBrZWVwIHRlaCBzdGFuZGFyZCBiZWhhdmlvclxuXHR9XG5cblx0LyoqXG5cdCAqIE9uIEJlZm9yZSByZW5kZXJpbmcgZnJvd2FyZCB0aGUgYXJpYUxhYmVsbGVkQnkgdG8gdGhlIG1kYyBNdWx0aVZhbHVlRmllbGQuXG5cdCAqL1xuXHRvbkJlZm9yZVJlbmRlcmluZygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5jb250ZW50KSB7XG5cdFx0XHRjb25zdCBtdWx0aVZhbHVlRmllbGQgPSB0aGlzLmdldE11bHRpVmFsdWVGaWVsZCgpO1xuXHRcdFx0Y29uc3QgYUFyaWFMYWJlbGxlZEJ5ID0gKHRoaXMgYXMgdW5rbm93biBhcyBFbmhhbmNlV2l0aFVJNTxNdWx0aVZhbHVlRmllbGRCbG9jaz4pLmdldEFyaWFMYWJlbGxlZEJ5KCk7XG5cblx0XHRcdGZvciAoY29uc3Qgc0lkIG9mIGFBcmlhTGFiZWxsZWRCeSkge1xuXHRcdFx0XHRjb25zdCBhQXJpYUxhYmVsbGVkQnlzID0gbXVsdGlWYWx1ZUZpZWxkLmdldEFyaWFMYWJlbGxlZEJ5KCk7XG5cdFx0XHRcdGlmICghYUFyaWFMYWJlbGxlZEJ5cy5pbmNsdWRlcyhzSWQpKSB7XG5cdFx0XHRcdFx0bXVsdGlWYWx1ZUZpZWxkLmFkZEFyaWFMYWJlbGxlZEJ5KHNJZCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTBGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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
|
|
@@ -104,7 +104,6 @@ type MultiValueFieldPathStructure = {
|
|
|
104
104
|
* @alias sap.fe.macros.MultiValueField
|
|
105
105
|
* @public
|
|
106
106
|
* @since 1.118.0
|
|
107
|
-
* @experimental
|
|
108
107
|
*/
|
|
109
108
|
|
|
110
109
|
@defineUI5Class("sap.fe.macros.MultiValueField")
|
|
@@ -165,7 +164,6 @@ export default class MultiValueFieldBlock extends BuildingBlock<Control> {
|
|
|
165
164
|
|
|
166
165
|
/**
|
|
167
166
|
* Property added to be able to add data / items to the multi-input field using a different model
|
|
168
|
-
* @experimental
|
|
169
167
|
* @public
|
|
170
168
|
*/
|
|
171
169
|
@property({
|
|
@@ -184,12 +182,15 @@ export default class MultiValueFieldBlock extends BuildingBlock<Control> {
|
|
|
184
182
|
@property({ type: "boolean" })
|
|
185
183
|
_isInEditMode: boolean | CompiledBindingToolkitExpression = false;
|
|
186
184
|
|
|
185
|
+
@property({ type: "boolean" })
|
|
186
|
+
useParentBindingCache = false;
|
|
187
|
+
|
|
187
188
|
// Computed properties
|
|
188
189
|
|
|
189
190
|
private item!: MultiInputSettings;
|
|
190
191
|
|
|
191
192
|
/**
|
|
192
|
-
* Pointed at dataField
|
|
193
|
+
* Pointed at a dataField. This can be DataFieldDefault from a property.
|
|
193
194
|
*/
|
|
194
195
|
private convertedDataField!: DataField;
|
|
195
196
|
|
|
@@ -296,7 +297,9 @@ export default class MultiValueFieldBlock extends BuildingBlock<Control> {
|
|
|
296
297
|
formatOptions: FormatOptions | undefined
|
|
297
298
|
): MultiInputSettings {
|
|
298
299
|
const { collectionPath, itemDataModelObjectPath } = MultiValueFieldBlock._getPathStructure(propertyDataModelObjectPath);
|
|
299
|
-
const collectionBinding =
|
|
300
|
+
const collectionBinding = this.useParentBindingCache
|
|
301
|
+
? { path: collectionPath, templateShareable: false }
|
|
302
|
+
: { path: collectionPath, parameters: { $$ownRequest: true }, templateShareable: false };
|
|
300
303
|
|
|
301
304
|
const propertyPathOrProperty = propertyDataModelObjectPath.targetObject as PropertyPath | Property;
|
|
302
305
|
const propertyDefinition = isPropertyPathExpression(propertyPathOrProperty)
|