@sapui5/sap.fe.macros 1.141.2 → 1.143.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +4 -10
- package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
- package/src/sap/fe/macros/Chart.js +34 -23
- package/src/sap/fe/macros/Chart.tsx +25 -11
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +47 -36
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +50 -31
- package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
- package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
- package/src/sap/fe/macros/CommonHelper.js +14 -24
- package/src/sap/fe/macros/CommonHelper.ts +18 -25
- package/src/sap/fe/macros/ConditionalSwitch.js +1 -2
- package/src/sap/fe/macros/ConditionalSwitch.tsx +0 -1
- package/src/sap/fe/macros/ConditionalSwitchProperty.js +1 -3
- package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +0 -2
- package/src/sap/fe/macros/Field.js +34 -17
- package/src/sap/fe/macros/Field.ts +64 -32
- package/src/sap/fe/macros/FooterContent.js +7 -3
- package/src/sap/fe/macros/FooterContent.tsx +8 -13
- package/src/sap/fe/macros/KPITag.js +6 -6
- package/src/sap/fe/macros/KPITag.tsx +8 -6
- package/src/sap/fe/macros/MacroAPI.js +4 -3
- package/src/sap/fe/macros/MacroAPI.ts +3 -3
- package/src/sap/fe/macros/MessageButton.js +4 -3
- package/src/sap/fe/macros/MessageButton.tsx +7 -3
- package/src/sap/fe/macros/MicroChart.js +12 -7
- package/src/sap/fe/macros/MicroChart.tsx +9 -3
- package/src/sap/fe/macros/MultiValueField.js +22 -36
- package/src/sap/fe/macros/MultiValueField.tsx +34 -66
- package/src/sap/fe/macros/RichTextEditor.js +3 -4
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
- package/src/sap/fe/macros/Share.js +7 -7
- package/src/sap/fe/macros/Share.tsx +9 -6
- package/src/sap/fe/macros/Status.js +39 -11
- package/src/sap/fe/macros/Status.tsx +25 -5
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
- package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
- package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
- package/src/sap/fe/macros/chart/Action.js +25 -2
- package/src/sap/fe/macros/chart/Action.ts +13 -0
- package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
- package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/chart/ChartDelegate.js +29 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +46 -14
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +58 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +75 -13
- package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
- package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +7 -7
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +3 -2
- package/src/sap/fe/macros/controls/FileWrapper.js +11 -5
- package/src/sap/fe/macros/controls/FileWrapper.ts +10 -4
- package/src/sap/fe/macros/controls/FilterBar.js +39 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +3 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -0
- package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
- package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
- package/src/sap/fe/macros/coreUI/CreateDialog.js +3 -3
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +2 -2
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +40 -12
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -9
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +4 -4
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +2 -2
- package/src/sap/fe/macros/field/FieldHelper.js +4 -3
- package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +44 -9
- package/src/sap/fe/macros/field/FieldRuntime.ts +72 -8
- package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
- package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
- package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +130 -40
- package/src/sap/fe/macros/filter/FilterUtils.ts +167 -45
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +15 -9
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +36 -17
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +21 -10
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +81 -63
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.js +376 -0
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.ts +463 -0
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/form/Form.block.js +27 -2
- package/src/sap/fe/macros/form/Form.block.ts +31 -11
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +110 -63
- package/src/sap/fe/macros/form/FormContainer.block.ts +121 -64
- package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
- package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
- package/src/sap/fe/macros/insights/InsightsService.js +3 -2
- package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
- package/src/sap/fe/macros/internal/DataPoint.js +7 -8
- package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
- package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
- package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
- package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +2 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +2 -1
- package/src/sap/fe/macros/library.js +5 -6
- package/src/sap/fe/macros/{library.ts → library.tsx} +3 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/messagebundle.properties +13 -5
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
- package/src/sap/fe/macros/messagebundle_da.properties +12 -3
- package/src/sap/fe/macros/messagebundle_de.properties +16 -7
- package/src/sap/fe/macros/messagebundle_el.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_es.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
- package/src/sap/fe/macros/messagebundle_et.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
- package/src/sap/fe/macros/messagebundle_id.properties +18 -9
- package/src/sap/fe/macros/messagebundle_it.properties +12 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
- package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_no.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
- package/src/sap/fe/macros/messages/MessageButton.js +21 -12
- package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +7 -3
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +8 -2
- package/src/sap/fe/macros/quickView/QuickView.js +5 -4
- package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
- package/src/sap/fe/macros/table/Action.js +21 -5
- package/src/sap/fe/macros/table/Action.ts +14 -4
- package/src/sap/fe/macros/table/ActionGroup.js +15 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
- package/src/sap/fe/macros/table/Column.js +3 -2
- package/src/sap/fe/macros/table/Column.ts +1 -1
- package/src/sap/fe/macros/table/MdcTableTemplate.js +96 -18
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +136 -17
- package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
- package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
- package/src/sap/fe/macros/table/Table.block.js +74 -30
- package/src/sap/fe/macros/table/Table.block.tsx +77 -14
- package/src/sap/fe/macros/table/TableAPI.js +175 -132
- package/src/sap/fe/macros/table/TableAPI.ts +67 -30
- package/src/sap/fe/macros/table/TableDefinition.js +20 -3
- package/src/sap/fe/macros/table/TableDefinition.ts +18 -2
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -3
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +12 -9
- package/src/sap/fe/macros/table/TableHelper.js +5 -2
- package/src/sap/fe/macros/table/TableHelper.ts +5 -2
- package/src/sap/fe/macros/table/TableRuntime.js +25 -13
- package/src/sap/fe/macros/table/TableRuntime.ts +31 -17
- package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
- package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
- package/src/sap/fe/macros/table/Utils.js +9 -3
- package/src/sap/fe/macros/table/Utils.ts +14 -8
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +72 -29
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +114 -123
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +15 -6
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +14 -5
- package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -3
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +3 -2
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +42 -14
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +49 -19
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
- package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
- package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +3 -4
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +2 -3
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.js +5 -4
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.ts +6 -3
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +17 -10
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +24 -9
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBlockSupport", "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/DataVisualization", "sap/fe/core/converters/controls/Common/table/StandardActions", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/macros/MacroAPI", "sap/fe/macros/table/MdcTableTemplate", "sap/fe/macros/table/TableAPI", "sap/fe/macros/table/TableCreationOptions", "
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/core/buildingBlocks/templating/BuildingBlockSupport", "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/DataVisualization", "sap/fe/core/converters/controls/Common/table/StandardActions", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/macros/MacroAPI", "sap/fe/macros/table/MdcTableTemplate", "sap/fe/macros/table/TableAPI", "sap/fe/macros/table/TableCreationOptions", "./TableEventHandlerProvider", "sap/fe/base/jsx-runtime/jsx"], function (Log, merge, BuildingBlockSupport, BuildingBlockTemplatingBase, ManifestSettings, MetaModelConverter, DataVisualization, StandardActions, StableIdHelper, TypeGuards, DataModelPathHelper, MacroAPI, MdcTableTemplate, TableAPI, TableCreationOptions, TableEventHandlerProvider, _jsx) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _dec60, _dec61, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34, _descriptor35, _descriptor36, _descriptor37, _descriptor38, _descriptor39, _descriptor40, _descriptor41, _descriptor42, _descriptor43, _descriptor44, _descriptor45, _descriptor46, _descriptor47, _descriptor48, _descriptor49, _descriptor50, _descriptor51, _descriptor52, _descriptor53, _descriptor54, _descriptor55, _descriptor56, _descriptor57, _descriptor58, _descriptor59, _descriptor60, _TableBlock;
|
|
8
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _dec60, _dec61, _dec62, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34, _descriptor35, _descriptor36, _descriptor37, _descriptor38, _descriptor39, _descriptor40, _descriptor41, _descriptor42, _descriptor43, _descriptor44, _descriptor45, _descriptor46, _descriptor47, _descriptor48, _descriptor49, _descriptor50, _descriptor51, _descriptor52, _descriptor53, _descriptor54, _descriptor55, _descriptor56, _descriptor57, _descriptor58, _descriptor59, _descriptor60, _descriptor61, _TableBlock;
|
|
9
9
|
var _exports = {};
|
|
10
|
-
var createCustomData = TSXUtils.createCustomData;
|
|
11
10
|
var getMDCTableTemplate = MdcTableTemplate.getMDCTableTemplate;
|
|
12
11
|
var getContextRelativeTargetObjectPath = DataModelPathHelper.getContextRelativeTargetObjectPath;
|
|
13
12
|
var isAnnotationOfTerm = TypeGuards.isAnnotationOfTerm;
|
|
@@ -111,6 +110,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
111
110
|
if (actionNode?.getAttribute("group")) {
|
|
112
111
|
action["group"] = Number.parseInt(safeGetAttribute(actionNode, "group") ?? "", 10);
|
|
113
112
|
}
|
|
113
|
+
if (actionNode?.getAttribute("overflowGroup")) {
|
|
114
|
+
action["overflowGroup"] = Number.parseInt(safeGetAttribute(actionNode, "overflowGroup") ?? "", 10);
|
|
115
|
+
}
|
|
114
116
|
return action;
|
|
115
117
|
}
|
|
116
118
|
|
|
@@ -158,6 +160,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
158
160
|
showCounts: quickVariantSelection.getAttribute("showCounts") === "true"
|
|
159
161
|
};
|
|
160
162
|
};
|
|
163
|
+
const setCustomActionOverflowGroupProperties = function (overFlowGroup) {
|
|
164
|
+
return {
|
|
165
|
+
key: overFlowGroup.getAttribute("key").replace("InlineXML_", ""),
|
|
166
|
+
overflowGroup: Number.parseInt(overFlowGroup.getAttribute("overflowGroup"), 10),
|
|
167
|
+
showSeparator: overFlowGroup.getAttribute("showSeparator") === "true"
|
|
168
|
+
};
|
|
169
|
+
};
|
|
161
170
|
|
|
162
171
|
/**
|
|
163
172
|
* Parses the common custom properties of the action groups from the XML node.
|
|
@@ -506,7 +515,15 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
506
515
|
skipKey: true,
|
|
507
516
|
multiple: false,
|
|
508
517
|
processAggregations: setQuickVariantSelection
|
|
509
|
-
}), _dec54 =
|
|
518
|
+
}), _dec54 = blockAggregation({
|
|
519
|
+
type: "sap.fe.macros.table.OverflowGroup",
|
|
520
|
+
isPublic: true,
|
|
521
|
+
multiple: true,
|
|
522
|
+
hasVirtualNode: true,
|
|
523
|
+
skipKey: true,
|
|
524
|
+
reallySkipKey: true,
|
|
525
|
+
processAggregations: setCustomActionOverflowGroupProperties
|
|
526
|
+
}), _dec55 = blockEvent(), _dec56 = blockEvent(), _dec57 = blockEvent(), _dec58 = blockEvent(), _dec59 = blockEvent(), _dec60 = blockEvent(), _dec61 = blockEvent(), _dec62 = blockAttribute({
|
|
510
527
|
type: "boolean",
|
|
511
528
|
isPublic: true
|
|
512
529
|
}), _dec(_class = (_class2 = (_TableBlock = /*#__PURE__*/function (_BuildingBlockTemplat) {
|
|
@@ -790,6 +807,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
790
807
|
* @public
|
|
791
808
|
*/
|
|
792
809
|
_initializerDefineProperty(_this, "quickVariantSelection", _descriptor52, _this);
|
|
810
|
+
/**
|
|
811
|
+
* Aggregate overflowGroups of the table.
|
|
812
|
+
* @public
|
|
813
|
+
*/
|
|
814
|
+
_initializerDefineProperty(_this, "actionOverflowGroups", _descriptor53, _this);
|
|
793
815
|
/**
|
|
794
816
|
* Before a table rebind, an event is triggered that contains information about the binding.
|
|
795
817
|
*
|
|
@@ -800,32 +822,32 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
800
822
|
* You can use this event to add selects, and add or read the sorters and filters.
|
|
801
823
|
* @public
|
|
802
824
|
*/
|
|
803
|
-
_initializerDefineProperty(_this, "beforeRebindTable",
|
|
825
|
+
_initializerDefineProperty(_this, "beforeRebindTable", _descriptor54, _this);
|
|
804
826
|
/**
|
|
805
|
-
* An event is triggered when the user chooses a row
|
|
827
|
+
* An event is triggered when the user chooses a row. The event contains information about which row is chosen.
|
|
806
828
|
*
|
|
807
|
-
* You can set this
|
|
829
|
+
* You can set this to handle the navigation manually.
|
|
808
830
|
* @public
|
|
809
831
|
*/
|
|
810
|
-
_initializerDefineProperty(_this, "rowPress",
|
|
832
|
+
_initializerDefineProperty(_this, "rowPress", _descriptor55, _this);
|
|
811
833
|
/**
|
|
812
834
|
* Event handler to react to the change event of the table's list binding.
|
|
813
835
|
*
|
|
814
836
|
* Internal only
|
|
815
837
|
*/
|
|
816
|
-
_initializerDefineProperty(_this, "listBindingChange",
|
|
838
|
+
_initializerDefineProperty(_this, "listBindingChange", _descriptor56, _this);
|
|
817
839
|
/**
|
|
818
840
|
* Event handler called when the user chooses an option of the segmented button in the ALP View
|
|
819
841
|
*/
|
|
820
|
-
_initializerDefineProperty(_this, "segmentedButtonPress",
|
|
821
|
-
_initializerDefineProperty(_this, "variantSaved",
|
|
842
|
+
_initializerDefineProperty(_this, "segmentedButtonPress", _descriptor57, _this);
|
|
843
|
+
_initializerDefineProperty(_this, "variantSaved", _descriptor58, _this);
|
|
822
844
|
/**
|
|
823
845
|
* An event triggered when the selection in the table changes.
|
|
824
846
|
* @public
|
|
825
847
|
*/
|
|
826
|
-
_initializerDefineProperty(_this, "selectionChange",
|
|
827
|
-
_initializerDefineProperty(_this, "variantSelected",
|
|
828
|
-
_initializerDefineProperty(_this, "initialLoad",
|
|
848
|
+
_initializerDefineProperty(_this, "selectionChange", _descriptor59, _this);
|
|
849
|
+
_initializerDefineProperty(_this, "variantSelected", _descriptor60, _this);
|
|
850
|
+
_initializerDefineProperty(_this, "initialLoad", _descriptor61, _this);
|
|
829
851
|
const contextObjectPath = getInvolvedDataModelObjects(_this.metaPath, _this.contextPath);
|
|
830
852
|
_this.contextObjectPath = contextObjectPath;
|
|
831
853
|
_this.tableDefinition = TableBlock.createTableDefinition(_this, templateProcessorSettings);
|
|
@@ -971,13 +993,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
971
993
|
const visualizationPath = TableBlock.getVisualizationPath(table.contextObjectPath, initialConverterContext);
|
|
972
994
|
const tableSettings = table.getTableSettings();
|
|
973
995
|
const extraManifestSettings = {
|
|
996
|
+
overflowGroups: TableBlock.createActionOverflowGroups(table),
|
|
974
997
|
actions: TableBlock.createActionsFromManifest(table),
|
|
975
998
|
columns: TableBlock.createColumnsForManifest(table),
|
|
976
999
|
tableSettings
|
|
977
1000
|
};
|
|
978
1001
|
const extraParams = {};
|
|
979
1002
|
extraParams[visualizationPath] = extraManifestSettings;
|
|
980
|
-
const converterContext = table.getConverterContext(table.contextObjectPath, table.contextPath?.getPath(), templateProcessorSettings, extraParams
|
|
1003
|
+
const converterContext = table.getConverterContext(table.contextObjectPath, table.contextPath?.getPath(), templateProcessorSettings, extraParams, viewData => {
|
|
1004
|
+
viewData.controlConfiguration[visualizationPath].columns = merge({}, viewData.controlConfiguration[visualizationPath].columns ?? {}, extraParams[visualizationPath]?.columns ?? {});
|
|
1005
|
+
});
|
|
981
1006
|
let associatedSelectionVariant;
|
|
982
1007
|
if (table.associatedSelectionVariantPath) {
|
|
983
1008
|
const svObjectPath = getInvolvedDataModelObjects(table.associatedSelectionVariantPath, table.contextPath);
|
|
@@ -1013,7 +1038,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
1013
1038
|
enabled: action.enabled,
|
|
1014
1039
|
isAIOperation: action.isAIOperation,
|
|
1015
1040
|
priority: action.priority,
|
|
1016
|
-
group: action.group
|
|
1041
|
+
group: action.group,
|
|
1042
|
+
overflowGroup: action.overflowGroup
|
|
1017
1043
|
};
|
|
1018
1044
|
if (action._type === "Action") {
|
|
1019
1045
|
actionsSettings[key] = {
|
|
@@ -1067,10 +1093,27 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
1067
1093
|
return actionsSettings;
|
|
1068
1094
|
}
|
|
1069
1095
|
|
|
1096
|
+
/**
|
|
1097
|
+
* Creates the manifest overflowGroups for the table.
|
|
1098
|
+
* @param table The table block
|
|
1099
|
+
* @returns The manifest overflowGroups for the table
|
|
1100
|
+
*/;
|
|
1101
|
+
TableBlock.createActionOverflowGroups = function createActionOverflowGroups(table) {
|
|
1102
|
+
const overflowGroupsSettings = {};
|
|
1103
|
+
if (table.actionOverflowGroups) {
|
|
1104
|
+
Object.values(table.actionOverflowGroups).forEach(overFlowGroup => {
|
|
1105
|
+
overflowGroupsSettings[overFlowGroup.overflowGroup] = {
|
|
1106
|
+
showSeparator: overFlowGroup.showSeparator
|
|
1107
|
+
};
|
|
1108
|
+
});
|
|
1109
|
+
}
|
|
1110
|
+
return overflowGroupsSettings;
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1070
1113
|
/**
|
|
1071
1114
|
* Creates the manifest columns for the table.
|
|
1072
1115
|
* @param table The table block
|
|
1073
|
-
* @returns The manifest
|
|
1116
|
+
* @returns The manifest columns for the table
|
|
1074
1117
|
*/;
|
|
1075
1118
|
TableBlock.createColumnsForManifest = function createColumnsForManifest(table) {
|
|
1076
1119
|
const isBlockColumn = block => {
|
|
@@ -1223,11 +1266,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
1223
1266
|
selectionLimit: this.selectionLimit,
|
|
1224
1267
|
condensedTableLayout: this.condensedTableLayout,
|
|
1225
1268
|
children: {
|
|
1226
|
-
customData: createCustomData("tableAPILocalId", this._apiId),
|
|
1227
1269
|
creationMode,
|
|
1228
|
-
layoutData: _jsx(FlexItemData, {
|
|
1229
|
-
maxWidth: "100%"
|
|
1230
|
-
}),
|
|
1231
1270
|
content: getMDCTableTemplate(tableProps, {
|
|
1232
1271
|
metaPath: this.metaPath,
|
|
1233
1272
|
convertedMetadata: this.convertedMetadata,
|
|
@@ -1515,42 +1554,47 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
1515
1554
|
enumerable: true,
|
|
1516
1555
|
writable: true,
|
|
1517
1556
|
initializer: null
|
|
1518
|
-
}), _descriptor53 = _applyDecoratedDescriptor(_class2.prototype, "
|
|
1557
|
+
}), _descriptor53 = _applyDecoratedDescriptor(_class2.prototype, "actionOverflowGroups", [_dec54], {
|
|
1558
|
+
configurable: true,
|
|
1559
|
+
enumerable: true,
|
|
1560
|
+
writable: true,
|
|
1561
|
+
initializer: null
|
|
1562
|
+
}), _descriptor54 = _applyDecoratedDescriptor(_class2.prototype, "beforeRebindTable", [_dec55], {
|
|
1519
1563
|
configurable: true,
|
|
1520
1564
|
enumerable: true,
|
|
1521
1565
|
writable: true,
|
|
1522
1566
|
initializer: null
|
|
1523
|
-
}),
|
|
1567
|
+
}), _descriptor55 = _applyDecoratedDescriptor(_class2.prototype, "rowPress", [_dec56], {
|
|
1524
1568
|
configurable: true,
|
|
1525
1569
|
enumerable: true,
|
|
1526
1570
|
writable: true,
|
|
1527
1571
|
initializer: null
|
|
1528
|
-
}),
|
|
1572
|
+
}), _descriptor56 = _applyDecoratedDescriptor(_class2.prototype, "listBindingChange", [_dec57], {
|
|
1529
1573
|
configurable: true,
|
|
1530
1574
|
enumerable: true,
|
|
1531
1575
|
writable: true,
|
|
1532
1576
|
initializer: null
|
|
1533
|
-
}),
|
|
1577
|
+
}), _descriptor57 = _applyDecoratedDescriptor(_class2.prototype, "segmentedButtonPress", [_dec58], {
|
|
1534
1578
|
configurable: true,
|
|
1535
1579
|
enumerable: true,
|
|
1536
1580
|
writable: true,
|
|
1537
1581
|
initializer: null
|
|
1538
|
-
}),
|
|
1582
|
+
}), _descriptor58 = _applyDecoratedDescriptor(_class2.prototype, "variantSaved", [_dec59], {
|
|
1539
1583
|
configurable: true,
|
|
1540
1584
|
enumerable: true,
|
|
1541
1585
|
writable: true,
|
|
1542
1586
|
initializer: null
|
|
1543
|
-
}),
|
|
1587
|
+
}), _descriptor59 = _applyDecoratedDescriptor(_class2.prototype, "selectionChange", [_dec60], {
|
|
1544
1588
|
configurable: true,
|
|
1545
1589
|
enumerable: true,
|
|
1546
1590
|
writable: true,
|
|
1547
1591
|
initializer: null
|
|
1548
|
-
}),
|
|
1592
|
+
}), _descriptor60 = _applyDecoratedDescriptor(_class2.prototype, "variantSelected", [_dec61], {
|
|
1549
1593
|
configurable: true,
|
|
1550
1594
|
enumerable: true,
|
|
1551
1595
|
writable: true,
|
|
1552
1596
|
initializer: null
|
|
1553
|
-
}),
|
|
1597
|
+
}), _descriptor61 = _applyDecoratedDescriptor(_class2.prototype, "initialLoad", [_dec62], {
|
|
1554
1598
|
configurable: true,
|
|
1555
1599
|
enumerable: true,
|
|
1556
1600
|
writable: true,
|
|
@@ -1559,4 +1603,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
1559
1603
|
_exports = TableBlock;
|
|
1560
1604
|
return _exports;
|
|
1561
1605
|
}, false);
|
|
1562
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzYWZlR2V0QXR0cmlidXRlIiwibm9kZSIsIm5hbWUiLCJnZXRBdHRyaWJ1dGUiLCJ1bmRlZmluZWQiLCJnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUiLCJlbmFibGVtZW50QXR0ciIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInBhcnNlQWN0aW9uRnJvbUVsZW1lbnQiLCJhY3Rpb25Ob2RlIiwiY29tbW9uUHJvcGVydGllcyIsImdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMiLCJsb2NhbE5hbWUiLCJ0ZXh0IiwicHJlc3MiLCJyZXF1aXJlc1NlbGVjdGlvbiIsImVuYWJsZUF1dG9TY3JvbGwiLCJuYXZpZ2F0ZVRvSW5zdGFuY2UiLCJkZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJhY3Rpb24iLCJyZXBsYWNlIiwiZW5hYmxlZCIsInZpc2libGUiLCJjb21tYW5kIiwiZW5hYmxlT25TZWxlY3QiLCJwbGFjZW1lbnQiLCJhbmNob3IiLCJfdHlwZSIsIk51bWJlciIsInBhcnNlSW50Iiwic2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25PYmplY3QiLCJpbmNsdWRlcyIsImdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMiLCJkZWZhdWx0QWN0aW9uIiwic2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzIiwiZWxlbWVudCIsImN1c3RvbUNvbnRlbnQiLCJjaGlsZHJlbiIsIm91dGVySFRNTCIsInZpc2libGVGaWVsZHMiLCJzcGxpdCIsImlnbm9yZWRGaWVsZHMiLCJvcGVyYXRpb25Hcm91cGluZ01vZGUiLCJzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJxdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJwYXRocyIsInNob3dDb3VudHMiLCJhY3Rpb25zSW5NZW51IiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImFwcGx5IiwibWFwIiwic3ViQWN0aW9uIiwic2V0QXR0cmlidXRlIiwiYWN0aW9ucyIsImdldENvbW1vbkN1c3RvbUNvbHVtbnNQcm9wZXJ0aWVzIiwiY2hpbGRDb2x1bW4iLCJ3aWR0aCIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwiaW1wb3J0YW5jZSIsImhvcml6b250YWxBbGlnbiIsImF2YWlsYWJpbGl0eSIsImRpc2FibGVFeHBvcnQiLCJleHBvcnRTZXR0aW5ncyIsInBhcnNlRXhwb3J0U2V0dGluZ3MiLCJzZXRDdXN0b21Db2x1bW5Qcm9wZXJ0aWVzIiwiaGVhZGVyIiwidG9vbHRpcCIsInRlbXBsYXRlIiwiZ2V0Q29sdW1uVGVtcGxhdGUiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJwYXJzZVNpbXBsZUFnZ3JlZ2F0aW9uIiwid3JhcCIsInR5cGUiLCJwcm9wZXJ0eSIsInRleHRBbGlnbiIsImxhYmVsIiwidHJ1ZVZhbHVlIiwiZmFsc2VWYWx1ZSIsInZhbHVlTWFwIiwiYWdncmVnYXRpb24iLCJnZXRBZ2dyZWdhdGlvbiIsImkiLCJsZW5ndGgiLCJjaGlsZCIsIml0ZW0iLCJub2RlTmFtZSIsImVuZHNXaXRoIiwiYWdncmVnYXRpb25OYW1lIiwicmVzdWx0IiwiZ2V0QXR0cmlidXRlTmFtZXMiLCJ2YWx1ZSIsIlRhYmxlQmxvY2siLCJfZGVjIiwiZGVmaW5lQnVpbGRpbmdCbG9jayIsIm5hbWVzcGFjZSIsInB1YmxpY05hbWVzcGFjZSIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJibG9ja0F0dHJpYnV0ZSIsInVuZGVybHlpbmdUeXBlIiwiZXhwZWN0ZWRUeXBlcyIsImV4cGVjdGVkQW5ub3RhdGlvbnMiLCJpc1B1YmxpYyIsIl9kZWMzIiwiYmluZGFibGUiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzE4IiwiX2RlYzE5IiwiX2RlYzIwIiwiX2RlYzIxIiwiX2RlYzIyIiwiX2RlYzIzIiwiX2RlYzI0IiwiaXNBc3NvY2lhdGlvbiIsIl9kZWMyNSIsIl9kZWMyNiIsIl9kZWMyNyIsIl9kZWMyOCIsIl9kZWMyOSIsIl9kZWMzMCIsIl9kZWMzMSIsIl9kZWMzMiIsIl9kZWMzMyIsIl9kZWMzNCIsIl9kZWMzNSIsIl9kZWMzNiIsIl9kZWMzNyIsIl9kZWMzOCIsIl9kZWMzOSIsIl9kZWM0MCIsIl9kZWM0MSIsIl9kZWM0MiIsIl9kZWM0MyIsIl9kZWM0NCIsIl9kZWM0NSIsIl9kZWM0NiIsIl9kZWM0NyIsIl9kZWM0OCIsInZhbGlkYXRlIiwiY3JlYXRpb25PcHRpb25zSW5wdXQiLCJFcnJvciIsIl9kZWM0OSIsImFuYWx5dGljYWxDb25maWd1cmF0aW9uIiwiYWdncmVnYXRpb25PbkxlYWZMZXZlbCIsIl9kZWM1MCIsImJsb2NrQWdncmVnYXRpb24iLCJhbHRUeXBlcyIsImhhc1ZpcnR1YWxOb2RlIiwibXVsdGlwbGUiLCJwcm9jZXNzQWdncmVnYXRpb25zIiwiX2RlYzUxIiwic2tpcEtleSIsIl9kZWM1MiIsImlzRGVmYXVsdCIsIl9kZWM1MyIsIl9kZWM1NCIsImJsb2NrRXZlbnQiLCJfZGVjNTUiLCJfZGVjNTYiLCJfZGVjNTciLCJfZGVjNTgiLCJfZGVjNTkiLCJfZGVjNjAiLCJfZGVjNjEiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX1RhYmxlQmxvY2siLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwidGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIl9kZXNjcmlwdG9yMTUiLCJfZGVzY3JpcHRvcjE2IiwiX2Rlc2NyaXB0b3IxNyIsIl9kZXNjcmlwdG9yMTgiLCJfZGVzY3JpcHRvcjE5IiwiX2Rlc2NyaXB0b3IyMCIsIl9kZXNjcmlwdG9yMjEiLCJfZGVzY3JpcHRvcjIyIiwiX2Rlc2NyaXB0b3IyMyIsIl9kZXNjcmlwdG9yMjQiLCJfZGVzY3JpcHRvcjI1IiwiX2Rlc2NyaXB0b3IyNiIsIl9kZXNjcmlwdG9yMjciLCJfZGVzY3JpcHRvcjI4IiwiX2Rlc2NyaXB0b3IyOSIsIl9kZXNjcmlwdG9yMzAiLCJfZGVzY3JpcHRvcjMxIiwiX2Rlc2NyaXB0b3IzMiIsIl9kZXNjcmlwdG9yMzMiLCJfZGVzY3JpcHRvcjM0IiwiX2Rlc2NyaXB0b3IzNSIsIl9kZXNjcmlwdG9yMzYiLCJfZGVzY3JpcHRvcjM3IiwiX2Rlc2NyaXB0b3IzOCIsIl9kZXNjcmlwdG9yMzkiLCJfZGVzY3JpcHRvcjQwIiwiX2Rlc2NyaXB0b3I0MSIsIl9kZXNjcmlwdG9yNDIiLCJfZGVzY3JpcHRvcjQzIiwiX2Rlc2NyaXB0b3I0NCIsIl9kZXNjcmlwdG9yNDUiLCJfZGVzY3JpcHRvcjQ2IiwiX2Rlc2NyaXB0b3I0NyIsIl9kZXNjcmlwdG9yNDgiLCJfZGVzY3JpcHRvcjQ5IiwiX2Rlc2NyaXB0b3I1MCIsIl9kZXNjcmlwdG9yNTEiLCJfZGVzY3JpcHRvcjUyIiwiX2Rlc2NyaXB0b3I1MyIsIl9kZXNjcmlwdG9yNTQiLCJfZGVzY3JpcHRvcjU1IiwiX2Rlc2NyaXB0b3I1NiIsIl9kZXNjcmlwdG9yNTciLCJfZGVzY3JpcHRvcjU4IiwiX2Rlc2NyaXB0b3I1OSIsIl9kZXNjcmlwdG9yNjAiLCJjb250ZXh0T2JqZWN0UGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJ0YWJsZURlZmluaXRpb24iLCJjcmVhdGVUYWJsZURlZmluaXRpb24iLCJ0YWJsZURlZmluaXRpb25Db250ZXh0IiwiTWFjcm9BUEkiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImNvbnZlcnRlZE1ldGFkYXRhIiwiY29udmVydGVkVHlwZXMiLCJtZXRhTW9kZWwiLCJtb2RlbHMiLCJjb2xsZWN0aW9uRW50aXR5IiwicmVzb2x2ZVBhdGgiLCJhbm5vdGF0aW9uIiwiY29sbGVjdGlvbiIsInRhcmdldCIsImFwcENvbXBvbmVudCIsInNldFVwSWQiLCJjcmVhdGlvbk1vZGUiLCJjcmVhdGUiLCJtb2RlIiwiY3JlYXRlQXRFbmQiLCJhcHBlbmQiLCJyZWFkT25seSIsImRpc3BsYXlNb2RlIiwiY29udHJvbCIsIlRhYmxlQVBJIiwidXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkiLCJ1c2VCYXNpY1NlYXJjaCIsImZpbHRlckJhciIsImdlbmVyYXRlIiwiY29udGVudElkIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsImdldFZpc3VhbGl6YXRpb25QYXRoIiwiY29udmVydGVyQ29udGV4dCIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJMb2ciLCJlcnJvciIsImlzQW5ub3RhdGlvbk9mVGVybSIsInRhcmdldE9iamVjdCIsInJlc29sdmVkVGFyZ2V0IiwiZ2V0RW50aXR5VHlwZUFubm90YXRpb24iLCJ2aXN1YWxpemF0aW9ucyIsImdldFZpc3VhbGl6YXRpb25zRnJvbUFubm90YXRpb24iLCJ0ZXJtIiwibGluZUl0ZW1WaXoiLCJmaW5kIiwidml6IiwidmlzdWFsaXphdGlvbiIsImFubm90YXRpb25QYXRoIiwiX3Byb3RvIiwiZ2V0VGFibGVTZXR0aW5ncyIsInRhYmxlU2V0dGluZ3MiLCJhZGRTZXR0aW5nIiwiZW5hYmxlRXhwb3J0IiwiZXhwb3J0RmlsZU5hbWUiLCJleHBvcnRTaGVldE5hbWUiLCJzZWxlY3Rpb25MaW1pdCIsImNvbmRlbnNlZFRhYmxlTGF5b3V0IiwiZXhwb3J0UmVxdWVzdFNpemUiLCJmcm96ZW5Db2x1bW5Db3VudCIsImRpc2FibGVDb2x1bW5GcmVlemUiLCJyb3dDb3VudE1vZGUiLCJyb3dDb3VudCIsImVuYWJsZUZ1bGxTY3JlZW4iLCJlbmFibGVTZWxlY3RBbGwiLCJlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXMiLCJlbmFibGVQYXN0ZSIsImRpc2FibGVDb3B5VG9DbGlwYm9hcmQiLCJzY3JvbGxUaHJlc2hvbGQiLCJ0aHJlc2hvbGQiLCJwb3BpbkxheW91dCIsInNlbGVjdGlvbk1vZGUiLCJxdWlja0ZpbHRlcnMiLCJwYXRoIiwiY3JlYXRpb25GaWVsZHMiLCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlIiwib3V0Ym91bmQiLCJlbnRyaWVzIiwibWFzc0VkaXQiLCJlbmFibGVNYXNzRWRpdCIsImNvbmZpZ3VyYXRpb24iLCJqb2luIiwidGFibGUiLCJpbml0aWFsQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHQiLCJnZXRQYXRoIiwidmlzdWFsaXphdGlvblBhdGgiLCJleHRyYU1hbmlmZXN0U2V0dGluZ3MiLCJjcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0IiwiY29sdW1ucyIsImNyZWF0ZUNvbHVtbnNGb3JNYW5pZmVzdCIsImV4dHJhUGFyYW1zIiwiYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgiLCJzdk9iamVjdFBhdGgiLCJ2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiIsImdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiIsImluTXVsdGlWaWV3IiwiZ2V0UmVsYXRpdmVBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImdldEVudGl0eVR5cGUiLCJpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50IiwidXNlQ29uZGVuc2VkTGF5b3V0IiwiaXNNYWNyb09yTXVsdGlwbGVWaWV3IiwiVmlzdWFsaXphdGlvblR5cGUiLCJUYWJsZSIsImFjdGlvbnNTZXR0aW5ncyIsImFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCIsInBvc2l0aW9uIiwiaXNBSU9wZXJhdGlvbiIsInByaW9yaXR5IiwiZ3JvdXAiLCJfX25vV3JhcCIsImFmdGVyRXhlY3V0aW9uIiwidmFsdWVzIiwibWVudSIsImlzQmxvY2tDb2x1bW4iLCJibG9jayIsImNvbHVtblNldHRpbmdzIiwiY29sdW1uIiwiY3VzdG9tQ29sdW1uRGVmaW5pdGlvbiIsImlkIiwiX2FwaUlkIiwiZ2V0Q29udGVudElkIiwiYXBpSWQiLCJfZ2V0RW50aXR5VHlwZSIsImVudGl0eVR5cGUiLCJ0YXJnZXRUeXBlIiwiZ2V0RW1wdHlSb3dzRW5hYmxlZCIsIkNyZWF0aW9uTW9kZSIsIklubGluZUNyZWF0aW9uUm93cyIsImEiLCJTdGFuZGFyZEFjdGlvbktleXMiLCJDcmVhdGUiLCJnZXRUZW1wbGF0ZSIsInRhYmxlUHJvcHMiLCJvdmVycmlkZVJvd1ByZXNzIiwicm93UHJlc3MiLCJoYW5kbGVyUHJvdmlkZXIiLCJUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyIiwiZ2V0TW9kZWwiLCJfanN4IiwiVGFibGVDcmVhdGlvbk9wdGlvbnMiLCJiaW5kaW5nIiwiaGVhZGVyTGV2ZWwiLCJoZWFkZXJTdHlsZSIsImhlYWRlclZpc2libGUiLCJ0YWJUaXRsZSIsImlzU2VhcmNoYWJsZSIsImJ1c3kiLCJpbml0aWFsTG9hZCIsImlzQWxwIiwiZmllbGRNb2RlIiwicGVyc29uYWxpemF0aW9uIiwidmFyaWFudFNhdmVkIiwidmFyaWFudFNlbGVjdGVkIiwic2VnbWVudGVkQnV0dG9uUHJlc3MiLCJ2YXJpYW50TWFuYWdlbWVudCIsImVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWUiLCJzZWxlY3Rpb25DaGFuZ2UiLCJsaXN0QmluZGluZ0NoYW5nZSIsImVtcHR5Um93c0VuYWJsZWQiLCJlbmFibGVBdXRvQ29sdW1uV2lkdGgiLCJiZWZvcmVSZWJpbmRUYWJsZSIsIm1vZGVGb3JOb0RhdGFNZXNzYWdlIiwiZGlzcGxheVNlZ21lbnRlZEJ1dHRvbiIsImN1c3RvbURhdGEiLCJjcmVhdGVDdXN0b21EYXRhIiwibGF5b3V0RGF0YSIsIkZsZXhJdGVtRGF0YSIsIm1heFdpZHRoIiwiY29udGVudCIsImdldE1EQ1RhYmxlVGVtcGxhdGUiLCJCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlLmJsb2NrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnZlcnRlZE1ldGFkYXRhLCBFbnRpdHlTZXQsIEVudGl0eVR5cGUsIE5hdmlnYXRpb25Qcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRMaW5lSXRlbSxcblx0UHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IHR5cGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB7XG5cdGJsb2NrQWdncmVnYXRpb24sXG5cdGJsb2NrQXR0cmlidXRlLFxuXHRibG9ja0V2ZW50LFxuXHRkZWZpbmVCdWlsZGluZ0Jsb2NrXG59IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHtcblx0QXZhaWxhYmlsaXR5VHlwZSxcblx0Q3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uLFxuXHRDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZSxcblx0SG9yaXpvbnRhbEFsaWduLFxuXHRJbXBvcnRhbmNlLFxuXHRNYW5pZmVzdEFjdGlvbixcblx0VGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb25cbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgQ3JlYXRpb25Nb2RlLCBWaXN1YWxpemF0aW9uVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBQYWdlQ29udGV4dFBhdGhUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydFZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgVmlzdWFsaXphdGlvbkFuZFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vRGF0YVZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB7XG5cdGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbixcblx0Z2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vRGF0YVZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB0eXBlIHsgQ3JlYXRlQmVoYXZpb3IsIFRhYmxlVHlwZSwgVGFibGVWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5pbXBvcnQgeyBTdGFuZGFyZEFjdGlvbktleXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vdGFibGUvU3RhbmRhcmRBY3Rpb25zXCI7XG5pbXBvcnQgeyB0eXBlIFBsYWNlbWVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBpc0Fubm90YXRpb25PZlRlcm0gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL01hY3JvQVBJXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb24gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cCBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25Hcm91cFwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0NvbHVtblwiO1xuaW1wb3J0IHR5cGUgeyBUYWJsZUJsb2NrUHJvcGVydGllcyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL01kY1RhYmxlVGVtcGxhdGVcIjtcbmltcG9ydCB7IGdldE1EQ1RhYmxlVGVtcGxhdGUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9NZGNUYWJsZVRlbXBsYXRlXCI7XG5pbXBvcnQgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVBUElcIjtcbmltcG9ydCBUYWJsZUNyZWF0aW9uT3B0aW9ucyBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUNyZWF0aW9uT3B0aW9uc1wiO1xuaW1wb3J0IEZsZXhJdGVtRGF0YSBmcm9tIFwic2FwL20vRmxleEl0ZW1EYXRhXCI7XG5pbXBvcnQgdHlwZSB7IE92ZXJmbG93VG9vbGJhclByaW9yaXR5IH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB7IHR5cGUgVGl0bGVMZXZlbCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEV4cG9ydFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeyBjcmVhdGVDdXN0b21EYXRhIH0gZnJvbSBcIi4uL1RTWFV0aWxzXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cE92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBbmFseXRpY2FsQ29uZmlndXJhdGlvbiBmcm9tIFwiLi9BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uT3ZlcnJpZGUgZnJvbSBcIi4vQ29sdW1uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIE1hc3NFZGl0IGZyb20gXCIuL01hc3NFZGl0XCI7XG5pbXBvcnQgdHlwZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSBcIi4vUXVpY2tWYXJpYW50U2VsZWN0aW9uXCI7XG5pbXBvcnQgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciBmcm9tIFwiLi9UYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyXCI7XG5cbnR5cGUgQmxvY2tDb2x1bW4gPSBQYXJ0aWFsPE9taXQ8Q29sdW1uLCBcInRlbXBsYXRlXCIgfCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdGV4cG9ydFNldHRpbmdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgb2JqZWN0PiB8IG51bGw7XG5cdF90eXBlOiBcIkNvbHVtblwiO1xufTtcblxudHlwZSBCbG9ja0NvbHVtbk92ZXJyaWRlID0gUGFydGlhbDxPbWl0PENvbHVtbk92ZXJyaWRlLCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0ZXhwb3J0U2V0dGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgbnVsbDtcblx0X3R5cGU6IFwiQ29sdW1uT3ZlcnJpZGVcIjtcbn07XG50eXBlIEJsb2NrTWFzc0VkaXQgPSBQYXJ0aWFsPE9taXQ8TWFzc0VkaXQsIFwiY3VzdG9tQ29udGVudFwiPj4gJiB7IGN1c3RvbUNvbnRlbnQ/OiBzdHJpbmc7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uID0gUHJvcGVydGllc09mPFF1aWNrVmFyaWFudFNlbGVjdGlvbj4gJiB7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrQWN0aW9uID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uLCBcInByZXNzXCI+PiAmIHsgX3R5cGU6IFwiQWN0aW9uXCI7IHByZXNzOiBzdHJpbmcgfTtcbnR5cGUgQmxvY2tBY3Rpb25Hcm91cCA9IFByb3BlcnRpZXNPZjxPbWl0PEFjdGlvbkdyb3VwLCBcImFjdGlvbnNcIj4+ICYge1xuXHRfdHlwZTogXCJBY3Rpb25Hcm91cFwiO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xufTtcbnR5cGUgQmxvY2tBY3Rpb25PdmVycmlkZSA9IFByb3BlcnRpZXNPZjxBY3Rpb25PdmVycmlkZT4gJiB7IF90eXBlOiBcIkFjdGlvbk92ZXJyaWRlXCIgfTtcbnR5cGUgQmxvY2tBY3Rpb25Hcm91cE92ZXJyaWRlID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uR3JvdXBPdmVycmlkZSwgXCJhY3Rpb25zXCI+PiAmIHtcblx0X3R5cGU6IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xufTtcbnR5cGUgQ29tbW9uQ3VzdG9tQWN0aW9uID0ge1xuXHRrZXk6IHN0cmluZztcblx0ZW5hYmxlZDogYm9vbGVhbjtcblx0dmlzaWJsZTogYm9vbGVhbjtcblx0Y29tbWFuZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRlbmFibGVPblNlbGVjdDogXCJzaW5nbGVcIiB8IFwibXVsdGlcIiB8IHVuZGVmaW5lZDtcblx0cGxhY2VtZW50OiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgdW5kZWZpbmVkO1xuXHRhbmNob3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0aXNBSU9wZXJhdGlvbj86IGJvb2xlYW47XG5cdHByaW9yaXR5PzogT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHk7XG5cdGdyb3VwPzogbnVtYmVyO1xuXHRfdHlwZTogXCJBY3Rpb25cIiB8IFwiQWN0aW9uT3ZlcnJpZGVcIjtcbn07XG5mdW5jdGlvbiBzYWZlR2V0QXR0cmlidXRlKG5vZGU6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBub2RlLmdldEF0dHJpYnV0ZShuYW1lKSA/PyB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZHluYW1pYyBCb29sZWFuIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSBub2RlIFRoZSBub2RlIHRvIGdldCB0aGUgYXR0cmlidXRlIGZyb21cbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIFRoZSBCb29sZWFuIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAqL1xuZnVuY3Rpb24gZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKG5vZGU6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRjb25zdCBlbmFibGVtZW50QXR0ciA9IG5vZGUuZ2V0QXR0cmlidXRlKG5hbWUpO1xuXHRzd2l0Y2ggKGVuYWJsZW1lbnRBdHRyKSB7XG5cdFx0Y2FzZSBudWxsOlxuXHRcdGNhc2UgXCJ0cnVlXCI6XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRjYXNlIFwiZmFsc2VcIjpcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIGVuYWJsZW1lbnRBdHRyIGFzIHVua25vd24gYXMgYm9vbGVhbjsgLy8gVG8gbWFuYWdlIGJpbmRpbmcgZXhwcmVzc2lvbnNcblx0fVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgd2l0aCB0aGUgdmFsdWUgb2YgdW5kZWZpbmVkIGZyb20gdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIHVuZGVmaW5lZCBwcm9wZXJ0aWVzIGZyb21cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG5cdE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0aWYgKG9ialtrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBvYmpba2V5XTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGFjdGlvbiBwcm9wZXJ0aWVzIGZyb20gYW4gWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIG5vZGVcbiAqIEByZXR1cm5zIFRoZSBhY3Rpb24gcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBwYXJzZUFjdGlvbkZyb21FbGVtZW50KGFjdGlvbk5vZGU6IEVsZW1lbnQpOiBCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUge1xuXHRjb25zdCBjb21tb25Qcm9wZXJ0aWVzID0gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uUHJvcGVydGllcyhhY3Rpb25Ob2RlKTtcblx0aWYgKGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvblwiKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRleHQ6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwidGV4dFwiKSA/PyBjb21tb25Qcm9wZXJ0aWVzLmtleSxcblx0XHRcdHByZXNzOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicHJlc3NcIiksXG5cdFx0XHRyZXF1aXJlc1NlbGVjdGlvbjogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlc1NlbGVjdGlvblwiKSA9PT0gXCJ0cnVlXCIsXG5cdFx0XHQuLi5jb21tb25Qcm9wZXJ0aWVzXG5cdFx0fSBhcyBCbG9ja0FjdGlvbjtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdGVuYWJsZUF1dG9TY3JvbGw6IGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImVuYWJsZUF1dG9TY3JvbGxcIiksXG5cdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIiksXG5cdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXCIpLFxuXHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0fSBhcyBCbG9ja0FjdGlvbk92ZXJyaWRlO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbW9uIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSBhY3Rpb24gZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIGdyb3VwIG5vZGVcbiAqIEByZXR1cm5zIFRoZSBjb2x1bW4gcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uUHJvcGVydGllcyhhY3Rpb25Ob2RlOiBFbGVtZW50KTogQ29tbW9uQ3VzdG9tQWN0aW9uIHtcblx0Y29uc3QgYWN0aW9uOiBDb21tb25DdXN0b21BY3Rpb24gPSB7XG5cdFx0a2V5OiBhY3Rpb25Ob2RlLmdldEF0dHJpYnV0ZShcImtleVwiKSEucmVwbGFjZShcIklubGluZVhNTF9cIiwgXCJcIiksXG5cdFx0ZW5hYmxlZDogZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlZFwiKSxcblx0XHR2aXNpYmxlOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJ2aXNpYmxlXCIpLFxuXHRcdGNvbW1hbmQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJjb21tYW5kXCIpLFxuXHRcdGVuYWJsZU9uU2VsZWN0OiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlT25TZWxlY3RcIikgYXMgXCJzaW5nbGVcIiB8IFwibXVsdGlcIiB8IHVuZGVmaW5lZCxcblx0XHRwbGFjZW1lbnQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwbGFjZW1lbnRcIikgYXMgXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZCxcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJhbmNob3JcIiksXG5cdFx0X3R5cGU6IGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvblwiID8gXCJBY3Rpb25cIiA6IFwiQWN0aW9uT3ZlcnJpZGVcIlxuXHR9O1xuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwiaXNBSU9wZXJhdGlvblwiKSkge1xuXHRcdGFjdGlvbltcImlzQUlPcGVyYXRpb25cIl0gPSBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJpc0FJT3BlcmF0aW9uXCIpO1xuXHR9XG5cblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcInByaW9yaXR5XCIpKSB7XG5cdFx0YWN0aW9uW1wicHJpb3JpdHlcIl0gPSBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicHJpb3JpdHlcIikgYXMgT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHk7XG5cdH1cblxuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwiZ3JvdXBcIikpIHtcblx0XHRhY3Rpb25bXCJncm91cFwiXSA9IE51bWJlci5wYXJzZUludChzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZ3JvdXBcIikgPz8gXCJcIiwgMTApO1xuXHR9XG5cblx0cmV0dXJuIGFjdGlvbjtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGFjdGlvbnMgYW5kIGFjdGlvbiBncm91cHMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZVxuICogQHBhcmFtIGFnZ3JlZ2F0aW9uT2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgYWN0aW9uIG9yIGFjdGlvbiBncm91cCBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBzZXRDdXN0b21BY3Rpb25Hcm91cFByb3BlcnRpZXMoXG5cdGFjdGlvbk5vZGU6IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBBY3Rpb24gfCBBY3Rpb25PdmVycmlkZSB8IEFjdGlvbkdyb3VwIHwgQWN0aW9uR3JvdXBPdmVycmlkZVxuKTogQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbkdyb3VwIHwgQmxvY2tBY3Rpb25PdmVycmlkZSB8IEJsb2NrQWN0aW9uR3JvdXBPdmVycmlkZSB7XG5cdGlmIChbXCJBY3Rpb25Hcm91cFwiLCBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIl0uaW5jbHVkZXMoYWN0aW9uTm9kZS5sb2NhbE5hbWUpKSB7XG5cdFx0Y29uc3QgY29tbW9uUHJvcGVydGllcyA9IGdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMoYWN0aW9uTm9kZSwgYWdncmVnYXRpb25PYmplY3QgYXMgQWN0aW9uR3JvdXAgfCBBY3Rpb25Hcm91cE92ZXJyaWRlKTtcblx0XHRpZiAoYWN0aW9uTm9kZS5sb2NhbE5hbWUgPT09IFwiQWN0aW9uR3JvdXBcIikge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dGV4dDogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJ0ZXh0XCIpID8/IGNvbW1vblByb3BlcnRpZXMua2V5LFxuXHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZGVmYXVsdEFjdGlvblwiKSxcblx0XHRcdFx0Li4uY29tbW9uUHJvcGVydGllc1xuXHRcdFx0fSBhcyBCbG9ja0FjdGlvbkdyb3VwO1xuXHRcdH1cblx0XHRyZXR1cm4gY29tbW9uUHJvcGVydGllcyBhcyBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGU7XG5cdH1cblxuXHQvL0FjdGlvbiBvciBBY3Rpb25PdmVycmlkZVxuXHRyZXR1cm4gcGFyc2VBY3Rpb25Gcm9tRWxlbWVudChhY3Rpb25Ob2RlKTtcbn1cblxuY29uc3Qgc2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGVsZW1lbnQ6IEVsZW1lbnQpOiBCbG9ja01hc3NFZGl0IHtcblx0cmV0dXJuIHtcblx0XHRrZXk6IFwiY29uZmlndXJhdGlvblwiLFxuXHRcdGN1c3RvbUNvbnRlbnQ6IGVsZW1lbnQuY2hpbGRyZW5bMF0/Lm91dGVySFRNTCxcblx0XHR2aXNpYmxlRmllbGRzOiBlbGVtZW50LmdldEF0dHJpYnV0ZShcInZpc2libGVGaWVsZHNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRpZ25vcmVkRmllbGRzOiBlbGVtZW50LmdldEF0dHJpYnV0ZShcImlnbm9yZWRGaWVsZHNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRvcGVyYXRpb25Hcm91cGluZ01vZGU6IChlbGVtZW50LmdldEF0dHJpYnV0ZShcIm9wZXJhdGlvbkdyb3VwaW5nTW9kZVwiKSA/PyB1bmRlZmluZWQpIGFzIFwiQ2hhbmdlU2V0XCIgfCBcIklzb2xhdGVkXCIgfCB1bmRlZmluZWRcblx0fTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBxdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gcXVpY2tWYXJpYW50U2VsZWN0aW9uIFRoZSBYTUwgbm9kZSBjb250YWluaW5nIHRoZSBxdWlja1ZhcmlhbnRTZWxlY3Rpb25cbiAqIEByZXR1cm5zIFRoZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmNvbnN0IHNldFF1aWNrVmFyaWFudFNlbGVjdGlvbiA9IGZ1bmN0aW9uIChxdWlja1ZhcmlhbnRTZWxlY3Rpb246IEVsZW1lbnQpOiBCbG9ja1F1aWNrVmFyaWFudFNlbGVjdGlvbiB7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBcInF1aWNrRmlsdGVyc1wiLFxuXHRcdHBhdGhzOiBxdWlja1ZhcmlhbnRTZWxlY3Rpb24uZ2V0QXR0cmlidXRlKFwicGF0aHNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRzaG93Q291bnRzOiBxdWlja1ZhcmlhbnRTZWxlY3Rpb24uZ2V0QXR0cmlidXRlKFwic2hvd0NvdW50c1wiKSA9PT0gXCJ0cnVlXCJcblx0fTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tb24gY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIGFjdGlvbiBncm91cHMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIGdyb3VwIG5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdCBUaGUgYWdncmVnYXRpb24gb2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIGdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMoXG5cdGFjdGlvbk5vZGU6IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBBY3Rpb25Hcm91cCB8IEFjdGlvbkdyb3VwT3ZlcnJpZGVcbik6IHtcblx0a2V5OiBzdHJpbmc7XG5cdGFjdGlvbnM6IChCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpW107XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdF90eXBlOiBcIkFjdGlvbkdyb3VwXCIgfCBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbn0ge1xuXHRjb25zdCBhY3Rpb25zSW5NZW51ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFjdGlvbk5vZGUuY2hpbGRyZW4pLm1hcCgoc3ViQWN0aW9uOiBFbGVtZW50KSA9PiB7XG5cdFx0cmV0dXJuIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoc3ViQWN0aW9uKTtcblx0fSk7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSA9IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0YWN0aW9uTm9kZS5zZXRBdHRyaWJ1dGUoXCJrZXlcIiwgYWdncmVnYXRpb25PYmplY3Qua2V5KTtcblx0cmV0dXJuIHtcblx0XHRrZXk6IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSxcblx0XHRhY3Rpb25zOiBhY3Rpb25zSW5NZW51LFxuXHRcdGFuY2hvcjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImFuY2hvclwiKSxcblx0XHRwbGFjZW1lbnQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwbGFjZW1lbnRcIikgYXMgXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZCxcblx0XHRfdHlwZTogYWN0aW9uTm9kZS5sb2NhbE5hbWUgPT09IFwiQWN0aW9uR3JvdXBcIiA/IFwiQWN0aW9uR3JvdXBcIiA6IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiXG5cdH07XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tb24gY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIGNvbHVtbnMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gY2hpbGRDb2x1bW4gVGhlIGNvbHVtbiBub2RlXG4gKiBAcGFyYW0gYWdncmVnYXRpb25PYmplY3QgVGhlIGFnZ3JlZ2F0aW9uIG9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBnZXRDb21tb25DdXN0b21Db2x1bW5zUHJvcGVydGllcyhcblx0Y2hpbGRDb2x1bW46IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBCbG9ja0NvbHVtbiB8IEJsb2NrQ29sdW1uT3ZlcnJpZGVcbik6IHtcblx0a2V5OiBzdHJpbmc7XG5cdHdpZHRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRpbXBvcnRhbmNlOiBJbXBvcnRhbmNlIHwgdW5kZWZpbmVkO1xuXHRob3Jpem9udGFsQWxpZ246IEhvcml6b250YWxBbGlnbiB8IHVuZGVmaW5lZDtcblx0YXZhaWxhYmlsaXR5OiBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRleHBvcnRTZXR0aW5nczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgb2JqZWN0PiB8IHVuZGVmaW5lZCB8IG51bGw7XG5cdGRpc2FibGVFeHBvcnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59IHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBhZ2dyZWdhdGlvbk9iamVjdC5rZXksXG5cdFx0d2lkdGg6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwid2lkdGhcIiksXG5cdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpXG5cdFx0XHQ/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpID09PSBcInRydWVcIlxuXHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0aW1wb3J0YW5jZTogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJpbXBvcnRhbmNlXCIpIGFzIEltcG9ydGFuY2UgfCB1bmRlZmluZWQsXG5cdFx0aG9yaXpvbnRhbEFsaWduOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImhvcml6b250YWxBbGlnblwiKSBhcyBIb3Jpem9udGFsQWxpZ24gfCB1bmRlZmluZWQsXG5cdFx0YXZhaWxhYmlsaXR5OiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImF2YWlsYWJpbGl0eVwiKSBhcyBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkLFxuXHRcdHBsYWNlbWVudDogKHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicGxhY2VtZW50XCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25QbGFjZW1lbnRcIikpIGFzXG5cdFx0XHR8IFwiQmVmb3JlXCJcblx0XHRcdHwgXCJBZnRlclwiXG5cdFx0XHR8IHVuZGVmaW5lZCwgLy8gcG9zaXRpb25QbGFjZW1lbnQgaXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwiYW5jaG9yXCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25BbmNob3JcIiksIC8vIHBvc2l0aW9uQW5jaG9yIGlzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cdFx0ZGlzYWJsZUV4cG9ydDogY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwiZGlzYWJsZUV4cG9ydFwiKSA/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcImRpc2FibGVFeHBvcnRcIikgPT09IFwidHJ1ZVwiIDogdW5kZWZpbmVkLFxuXHRcdGV4cG9ydFNldHRpbmdzOiBwYXJzZUV4cG9ydFNldHRpbmdzKGNoaWxkQ29sdW1uKVxuXHR9O1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY3VzdG9tIGNvbHVtbnMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gY2hpbGRDb2x1bW5cbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBzZXRDdXN0b21Db2x1bW5Qcm9wZXJ0aWVzKFxuXHRjaGlsZENvbHVtbjogRWxlbWVudCxcblx0YWdncmVnYXRpb25PYmplY3Q6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZVxuKTogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlIHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdGlmIChjaGlsZENvbHVtbi5sb2NhbE5hbWUgPT09IFwiQ29sdW1uXCIpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4uZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMoY2hpbGRDb2x1bW4sIGFnZ3JlZ2F0aW9uT2JqZWN0KSxcblx0XHRcdGhlYWRlcjogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJoZWFkZXJcIiksXG5cdFx0XHR0b29sdGlwOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcInRvb2x0aXBcIiksXG5cdFx0XHR0ZW1wbGF0ZTogZ2V0Q29sdW1uVGVtcGxhdGUoY2hpbGRDb2x1bW4pLFxuXHRcdFx0cHJvcGVydGllczogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJwcm9wZXJ0aWVzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0XHRyZXF1aXJlZDogY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwicmVxdWlyZWRcIikgPyBjaGlsZENvbHVtbi5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKSA9PT0gXCJ0cnVlXCIgOiB1bmRlZmluZWQsXG5cdFx0XHRfdHlwZTogY2hpbGRDb2x1bW4ubG9jYWxOYW1lXG5cdFx0fTtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdC4uLmdldENvbW1vbkN1c3RvbUNvbHVtbnNQcm9wZXJ0aWVzKGNoaWxkQ29sdW1uLCBhZ2dyZWdhdGlvbk9iamVjdCksXG5cdFx0X3R5cGU6IFwiQ29sdW1uT3ZlcnJpZGVcIlxuXHR9O1xufVxuXG5jb25zdCBwYXJzZUV4cG9ydFNldHRpbmdzID0gKGVsZW1lbnQ6IEVsZW1lbnQpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3QgZXhwb3J0U2V0dGluZ3MgPSBwYXJzZVNpbXBsZUFnZ3JlZ2F0aW9uKGVsZW1lbnQsIFwiZXhwb3J0U2V0dGluZ3NcIik7XG5cdGlmICghZXhwb3J0U2V0dGluZ3MpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdHJldHVybiB7XG5cdFx0dGVtcGxhdGU6IGV4cG9ydFNldHRpbmdzLnRlbXBsYXRlLFxuXHRcdHdyYXA6IGV4cG9ydFNldHRpbmdzLndyYXAgPT09IFwidHJ1ZVwiLFxuXHRcdHR5cGU6IGV4cG9ydFNldHRpbmdzLnR5cGUsXG5cdFx0cHJvcGVydHk6IGV4cG9ydFNldHRpbmdzLnByb3BlcnR5Py5zcGxpdChcIixcIiksXG5cdFx0d2lkdGg6IGV4cG9ydFNldHRpbmdzLndpZHRoLFxuXHRcdHRleHRBbGlnbjogZXhwb3J0U2V0dGluZ3MudGV4dEFsaWduLFxuXHRcdGxhYmVsOiBleHBvcnRTZXR0aW5ncy5sYWJlbCxcblx0XHR0cnVlVmFsdWU6IGV4cG9ydFNldHRpbmdzLnRydWVWYWx1ZSxcblx0XHRmYWxzZVZhbHVlOiBleHBvcnRTZXR0aW5ncy5mYWxzZVZhbHVlLFxuXHRcdHZhbHVlTWFwOiBleHBvcnRTZXR0aW5ncy52YWx1ZU1hcFxuXHR9O1xufTtcblxuY29uc3QgZ2V0Q29sdW1uVGVtcGxhdGUgPSAoZWxlbWVudDogRWxlbWVudCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBhZ2dyZWdhdGlvbiA9IGdldEFnZ3JlZ2F0aW9uKGVsZW1lbnQsIFwidGVtcGxhdGVcIik7XG5cdGlmICghYWdncmVnYXRpb24pIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGNoaWxkID0gZWxlbWVudC5jaGlsZHJlbi5pdGVtKGkpO1xuXHRcdFx0aWYgKGNoaWxkICYmICFjaGlsZC5ub2RlTmFtZS5lbmRzV2l0aChcImV4cG9ydFNldHRpbmdzXCIpKSB7XG5cdFx0XHRcdGFnZ3JlZ2F0aW9uID0gY2hpbGQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gYWdncmVnYXRpb24/Lm91dGVySFRNTCA/PyBlbGVtZW50LmdldEF0dHJpYnV0ZShcInRlbXBsYXRlXCIpID8/IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IHBhcnNlU2ltcGxlQWdncmVnYXRpb24gPSAoZWxlbWVudDogRWxlbWVudCwgYWdncmVnYXRpb25OYW1lOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3QgYWdncmVnYXRpb24gPSBnZXRBZ2dyZWdhdGlvbihlbGVtZW50LCBhZ2dyZWdhdGlvbk5hbWUpO1xuXHRjb25zdCBjaGlsZCA9IGFnZ3JlZ2F0aW9uPy5jaGlsZHJlblswXTtcblx0Y29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cdGlmICghY2hpbGQpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGZvciAoY29uc3QgbmFtZSBvZiBjaGlsZC5nZXRBdHRyaWJ1dGVOYW1lcygpKSB7XG5cdFx0Y29uc3QgdmFsdWUgPSBjaGlsZC5nZXRBdHRyaWJ1dGUobmFtZSk7XG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRyZXN1bHRbbmFtZV0gPSB2YWx1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IGdldEFnZ3JlZ2F0aW9uID0gKGVsZW1lbnQ6IEVsZW1lbnQsIGFnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nKTogRWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBhZ2dyZWdhdGlvbjogRWxlbWVudCB8IHVuZGVmaW5lZDtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgY2hpbGQgPSBlbGVtZW50LmNoaWxkcmVuLml0ZW0oaSk7XG5cdFx0aWYgKGNoaWxkPy5ub2RlTmFtZS5lbmRzV2l0aChhZ2dyZWdhdGlvbk5hbWUpID09PSB0cnVlKSB7XG5cdFx0XHRhZ2dyZWdhdGlvbiA9IGNoaWxkO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhZ2dyZWdhdGlvbjtcbn07XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSB0YWJsZSBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBVc3VhbGx5LCBhIExpbmVJdGVtLCBQcmVzZW50YXRpb25WYXJpYW50LCBvciBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IGFubm90YXRpb24gaXMgZXhwZWN0ZWQsIGJ1dCB0aGUgVGFibGUgYnVpbGRpbmcgYmxvY2sgY2FuIGFsc28gYmUgdXNlZCB0byBkaXNwbGF5IGFuIEVudGl0eVNldC5cbiAqIDxicj5cbiAqIElmIGEgUHJlc2VudGF0aW9uVmFyaWFudCBpcyBzcGVjaWZpZWQsIHRoZW4gaXQgbXVzdCBoYXZlIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKiA8YnI+XG4gKiBJZiBhIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgY29udGFpbiBhIHZhbGlkIFByZXNlbnRhdGlvblZhcmlhbnQgdGhhdCBhbHNvIGhhcyBhIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOlRhYmxlIGlkPVwiTXlUYWJsZVwiIG1ldGFQYXRoPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIgLyZndDtcbiAqIDwvcHJlPlxuICoge0BsaW5rIGRlbW86c2FwL2ZlL2NvcmUvZnBtRXhwbG9yZXIvaW5kZXguaHRtbCMvYnVpbGRpbmdCbG9ja3MvdGFibGUvdGFibGVEZWZhdWx0IE92ZXJ2aWV3IG9mIFRhYmxlIEJ1aWxkaW5nIEJsb2Nrc31cbiAqIEBtaXhlcyBzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQVBJXG4gKiBAYXVnbWVudHMgc2FwLmZlLm1hY3Jvcy5NYWNyb0FQSVxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lQnVpbGRpbmdCbG9jayh7XG5cdG5hbWU6IFwiVGFibGVcIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIixcblx0cHVibGljTmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3NcIixcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuVGFibGVBUElcIl1cbn0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYWJsZUJsb2NrIGV4dGVuZHMgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIHtcblx0Ly8gICoqKioqKioqKioqKioqKiBQdWJsaWMgJiBSZXF1aXJlZCBBdHRyaWJ1dGVzICoqKioqKioqKioqKioqKioqKioqXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSByZWxhdGl2ZSBwYXRoIHRvIGEgTGluZUl0ZW0sIFByZXNlbnRhdGlvblZhcmlhbnQgb3IgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCBpbiB0aGUgbWV0YW1vZGVsLCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0UGF0aC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic3RyaW5nXCIsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXSxcblx0XHRleHBlY3RlZEFubm90YXRpb25zOiBbXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRcIixcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFwiXG5cdFx0XSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRtZXRhUGF0aCE6IENvbnRleHQ7XG5cblx0Ly8gICoqKioqKioqKioqKioqKiBQdWJsaWMgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHQvKipcblx0ICogQW4gZXhwcmVzc2lvbiB0aGF0IGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgJ2J1c3knIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlLCBiaW5kYWJsZTogdHJ1ZSB9KVxuXHRidXN5PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcGF0aCBvZiB0aGUgY29udGV4dCB1c2VkIGluIHRoZSBjdXJyZW50IHBhZ2Ugb3IgYmxvY2suXG5cdCAqIFRoaXMgc2V0dGluZyBpcyBkZWZpbmVkIGJ5IHRoZSBmcmFtZXdvcmsuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdHVuZGVybHlpbmdUeXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0Y29udGV4dFBhdGg/OiBDb250ZXh0O1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRhYmxlIGFkYXB0cyB0byB0aGUgY29uZGVuc2VkIGxheW91dC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHB1YmxpYyByZWFkb25seSBjb25kZW5zZWRUYWJsZUxheW91dD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHRhYmxlIGNhbiBiZSBvcGVuZWQgaW4gZnVsbHNjcmVlbiBtb2RlIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHB1YmxpYyByZWFkb25seSBlbmFibGVGdWxsU2NyZWVuPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRhdGEgY29waWVkIHRvIHRoZSBjb21wdXRlZCBjb2x1bW5zIGlzIHNlbnQgdG8gdGhlIGJhY2sgZW5kLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXM/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIENsZWFyIEFsbCBidXR0b24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXHQgKiBUbyBlbmFibGUgdGhlIENsZWFyIEFsbCBidXR0b24gYnkgZGVmYXVsdCwgeW91IG11c3Qgc2V0IHRoaXMgcHJvcGVydHkgdG8gZmFsc2UuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGVuYWJsZVNlbGVjdEFsbD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBleHBvcnQgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGFibGUgaXMgZW5hYmxlZCBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZW5hYmxlRXhwb3J0PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29uZmlndXJlcyB0aGUgZmlsZSBuYW1lIG9mIGV4cG9ydGVkIHRhYmxlLlxuXHQgKiBJdCdzIGxpbWl0ZWQgdG8gMzEgY2hhcmFjdGVycy4gSWYgdGhlIG5hbWUgaXMgbG9uZ2VyLCBpdCB3aWxsIGJlIHRydW5jYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGV4cG9ydEZpbGVOYW1lPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb25maWd1cmVzIHRoZSBzaGVldCBuYW1lIG9mIGV4cG9ydGVkIHRhYmxlLlxuXHQgKiBJdCdzIGxpbWl0ZWQgdG8gMzEgY2hhcmFjdGVycy4gSWYgdGhlIG5hbWUgaXMgbG9uZ2VyLCBpdCB3aWxsIGJlIHRydW5jYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGV4cG9ydFNoZWV0TmFtZT86IHN0cmluZztcblxuXHQvKipcblx0ICogTWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiByZWNvcmRzIHRvIGJlIGV4cG9ydGVkIGluIG9uZSByZXF1ZXN0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGV4cG9ydFJlcXVlc3RTaXplPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiByb3dzIHRoYXQgY2FuIGJlIHNlbGVjdGVkIGF0IG9uY2UgaW4gdGhlIHRhYmxlLlxuXHQgKiBUaGlzIHByb3BlcnR5IGRvZXMgbm90IGFwcGx5IHRvIHJlc3BvbnNpdmUgdGFibGVzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkxpbWl0PzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBOdW1iZXIgb2YgY29sdW1ucyB0aGF0IGFyZSBmaXhlZCBvbiB0aGUgbGVmdC4gT25seSBjb2x1bW5zIHdoaWNoIGFyZSBub3QgZml4ZWQgY2FuIGJlIHNjcm9sbGVkIGhvcml6b250YWxseS5cblx0ICpcblx0ICogVGhpcyBwcm9wZXJ0eSBpcyBub3QgcmVsZXZhbnQgZm9yIHJlc3BvbnNpdmUgdGFibGVzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZnJvemVuQ29sdW1uQ291bnQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgd2hldGhlciB0aGUgbnVtYmVyIG9mIGZpeGVkIGNvbHVtbnMgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gdGhlIENvbHVtbiBTZXR0aW5ncyBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgcHJvcGVydHkgZG9lc24ndCBhcHBseSBmb3IgcmVzcG9uc2l2ZSB0YWJsZXNcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZGlzYWJsZUNvbHVtbkZyZWV6ZT86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEluZGljYXRlcyBpZiB0aGUgY29sdW1uIGhlYWRlciBzaG91bGQgYmUgYSBwYXJ0IG9mIHRoZSB3aWR0aCBjYWxjdWxhdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgd2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGhvdyB0aGUgdGFibGUgaGFuZGxlcyB0aGUgdmlzaWJsZSByb3dzLiBEb2VzIG5vdCBhcHBseSB0byBSZXNwb25zaXZlIHRhYmxlcy5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBBdXRvYCwgYEZpeGVkYCwgYW5kIGBJbnRlcmFjdGl2ZWAuPGJyLz5cblx0ICogLSBJZiBzZXQgdG8gYEZpeGVkYCwgdGhlIHRhYmxlIGFsd2F5cyBoYXMgYXMgbWFueSByb3dzIGFzIGRlZmluZWQgaW4gdGhlIHJvd0NvdW50IHByb3BlcnR5Ljxici8+XG5cdCAqIC0gSWYgc2V0IHRvIGBBdXRvYCwgdGhlIG51bWJlciBvZiByb3dzIGlzIGNoYW5nZWQgYnkgdGhlIHRhYmxlIGF1dG9tYXRpY2FsbHkuIEl0IHdpbGwgdGhlbiBhZGp1c3QgaXRzIHJvdyBjb3VudCB0byB0aGUgc3BhY2UgaXQgaXMgYWxsb3dlZCB0byBjb3ZlciAobGltaXRlZCBieSB0aGUgc3Vycm91bmRpbmcgY29udGFpbmVyKSBidXQgaXQgY2Fubm90IGhhdmUgbGVzcyB0aGFuIGRlZmluZWQgaW4gdGhlIGByb3dDb3VudGAgcHJvcGVydHkuPGJyLz5cblx0ICogLSBJZiBzZXQgdG8gYEludGVyYWN0aXZlYCB0aGUgdGFibGUgY2FuIGhhdmUgYXMgbWFueSByb3dzIGFzIGRlZmluZWQgaW4gdGhlIHJvd0NvdW50IHByb3BlcnR5LiBUaGlzIG51bWJlciBvZiByb3dzIGNhbiBiZSBtb2RpZmllZCBieSBkcmFnZ2luZyB0aGUgcmVzaXplciBhdmFpbGFibGUgaW4gdGhpcyBtb2RlLjxici8+XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkF1dG9cIiwgXCJGaXhlZFwiLCBcIkludGVyYWN0aXZlXCJdLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHJvd0NvdW50TW9kZT86IHN0cmluZztcblxuXHQvKipcblx0ICogTnVtYmVyIG9mIHJvd3MgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB0YWJsZS4gRG9lcyBub3QgYXBwbHkgdG8gcmVzcG9uc2l2ZSB0YWJsZXMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgcm93Q291bnQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBwYXN0ZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZSBpcyBlbmFibGVkIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlUGFzdGU/OiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBjb3B5IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlIGlzIGRpc2FibGVkIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGRpc2FibGVDb3B5VG9DbGlwYm9hcmQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGhvdyBtYW55IGFkZGl0aW9uYWwgZGF0YSByZWNvcmRzIGFyZSByZXF1ZXN0ZWQgZnJvbSB0aGUgYmFjay1lbmQgc3lzdGVtIHdoZW4gdGhlIHVzZXIgc2Nyb2xscyB2ZXJ0aWNhbGx5IGluIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0c2Nyb2xsVGhyZXNob2xkPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBudW1iZXIgb2YgcmVjb3JkcyB0byBiZSBpbml0aWFsbHkgcmVxdWVzdGVkIGZyb20gdGhlIGJhY2sgZW5kLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHR0aHJlc2hvbGQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIGxheW91dCBvcHRpb25zIG9mIHRoZSB0YWJsZSBwb3BpbnMuIE9ubHkgYXBwbGllcyB0byByZXNwb25zaXZlIHRhYmxlcy5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBCbG9ja2AsIGBHcmlkTGFyZ2VgLCBhbmQgYEdyaWRTbWFsbGAuPGJyLz5cblx0ICogLSBgQmxvY2tgOiBTZXRzIGEgYmxvY2sgbGF5b3V0IGZvciByZW5kZXJpbmcgdGhlIHRhYmxlIHBvcGlucy4gVGhlIGVsZW1lbnRzIGluc2lkZSB0aGUgcG9waW4gY29udGFpbmVyIGFyZSByZW5kZXJlZCBvbmUgYmVsb3cgdGhlIG90aGVyLjxici8+XG5cdCAqIC0gYEdyaWRMYXJnZWA6IFNldHMgYSBncmlkIGxheW91dCBmb3IgcmVuZGVyaW5nIHRoZSB0YWJsZSBwb3BpbnMuIFRoZSBncmlkIHdpZHRoIGZvciBlYWNoIHRhYmxlIHBvcGluIGlzIGNvbXBhcmF0aXZlbHkgbGFyZ2VyIHRoYW4gR3JpZFNtYWxsLCBzbyB0aGlzIGxheW91dCBhbGxvd3MgbGVzcyBjb250ZW50IHRvIGJlIHJlbmRlcmVkIGluIGEgc2luZ2xlIHBvcGluIHJvdy48YnIvPlxuXHQgKiAtIGBHcmlkU21hbGxgOiBTZXRzIGEgZ3JpZCBsYXlvdXQgZm9yIHJlbmRlcmluZyB0aGUgdGFibGUgcG9waW5zLiBUaGUgZ3JpZCB3aWR0aCBmb3IgZWFjaCB0YWJsZSBwb3BpbiBpcyBzbWFsbCwgc28gdGhpcyBsYXlvdXQgYWxsb3dzIG1vcmUgY29udGVudCB0byBiZSByZW5kZXJlZCBpbiBhIHNpbmdsZSBwb3BpbiByb3cuPGJyLz5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiQmxvY2tcIiwgXCJHcmlkTGFyZ2VcIiwgXCJHcmlkU21hbGxcIl0sIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgcG9waW5MYXlvdXQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBGaWx0ZXJCYXIgYnVpbGRpbmcgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGlzQXNzb2NpYXRpb246IHRydWUgfSlcblx0ZmlsdGVyQmFyPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIGhlYWRlciB0ZXh0IHRoYXQgaXMgc2hvd24gaW4gdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRoZWFkZXI/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIFwiYXJpYS1sZXZlbFwiIG9mIHRoZSB0YWJsZSBoZWFkZXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRoZWFkZXJMZXZlbD86IFRpdGxlTGV2ZWw7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aGVhZGVyVmlzaWJsZT86IGJvb2xlYW47XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aWQhOiBzdHJpbmc7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0Y29udGVudElkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBZGRpdGlvbm5hbCBTZWxlY3Rpb25WYXJpYW50IHRvIGJlIGFwcGxpZWQgb24gdGhlIHRhYmxlIGNvbnRlbnQuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdLFxuXHRcdGV4cGVjdGVkQW5ub3RhdGlvbnM6IFtcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblZhcmlhbnRcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPzogQ29udGV4dDtcblxuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIHNlYXJjaCBhY3Rpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpc1NlYXJjaGFibGU/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGljaCBvcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIGZvciB0aGUgdGFibGUgcGVyc29uYWxpemF0aW9uIGRpYWxvZy5cblx0ICpcblx0ICogSWYgaXQgaXMgc2V0IHRvIGB0cnVlYCwgYWxsIHBvc3NpYmxlIG9wdGlvbnMgZm9yIHRoaXMga2luZCBvZiB0YWJsZSBhcmUgZW5hYmxlZC48YnIvPlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYGZhbHNlYCwgcGVyc29uYWxpemF0aW9uIGlzIGRpc2FibGVkLjxici8+XG5cdCAqIDxici8+XG5cdCAqIFlvdSBjYW4gYWxzbyBwcm92aWRlIGEgbW9yZSBncmFudWxhciBjb250cm9sIGZvciB0aGUgcGVyc29uYWxpemF0aW9uIGJ5IHByb3ZpZGluZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGggdGhlIG9wdGlvbnMgeW91IHdhbnQgdG8gYmUgYXZhaWxhYmxlLjxici8+XG5cdCAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTo8YnIvPlxuXHQgKiAtIFNvcnQ8YnIvPlxuXHQgKiAtIENvbHVtbjxici8+XG5cdCAqIC0gRmlsdGVyPGJyLz5cblx0ICogLSBHcm91cDxici8+XG5cdCAqIDxici8+XG5cdCAqIFRoZSBHcm91cCBvcHRpb24gaXMgb25seSBhcHBsaWNhYmxlIHRvIGFuYWx5dGljYWwgdGFibGVzIGFuZCByZXNwb25zaXZlIHRhYmxlcy48YnIvPlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwZXJzb25hbGl6YXRpb24/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEFuIGV4cHJlc3Npb24gdGhhdCBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlICdyZWFkLW9ubHknIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICpcblx0ICogSWYgeW91IGRvIG5vdCBzZXQgYW55IGV4cHJlc3Npb24sIFNBUCBGaW9yaSBlbGVtZW50cyBob29rcyBpbnRvIHRoZSBzdGFuZGFyZCBsaWZlY3ljbGUgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHN0YXRlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cmVhZE9ubHk/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSB0eXBlIG9mIHRhYmxlIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBidWlsZGluZyBibG9jayB0byByZW5kZXIgdGhlIGRhdGEuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgR3JpZFRhYmxlYCwgYFJlc3BvbnNpdmVUYWJsZWAgYW5kIGBBbmFseXRpY2FsVGFibGVgLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSwgYWxsb3dlZFZhbHVlczogW1wiR3JpZFRhYmxlXCIsIFwiUmVzcG9uc2l2ZVRhYmxlXCIsIFwiQW5hbHl0aWNhbFRhYmxlXCJdIH0pXG5cdHJlYWRvbmx5IHR5cGU/OiBUYWJsZVR5cGU7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgd2l0aCBjb25kZW5zZWQgbGF5b3V0ICh0cnVlL2ZhbHNlKS4gVGhlIGRlZmF1bHQgc2V0dGluZyBpcyBgZmFsc2VgLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHVzZUNvbmRlbnNlZExheW91dD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHNlbGVjdGlvbiBtb2RlIHRvIGJlIHVzZWQgYnkgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYE5vbmVgLCBgU2luZ2xlYCwgYEZvcmNlU2luZ2xlYCwgYE11bHRpYCwgYEZvcmNlTXVsdGlgIG9yIGBBdXRvYC5cblx0ICogSWYgc2V0IHRvICdTaW5nbGUnLCAnTXVsdGknIG9yICdBdXRvJywgU0FQIEZpb3JpIGVsZW1lbnRzIGhvb2tzIGludG8gdGhlIHN0YW5kYXJkIGxpZmVjeWNsZSB0byBkZXRlcm1pbmUgdGhlIGNvbnNpc3RlbnQgc2VsZWN0aW9uIG1vZGUuXG5cdCAqIElmIHNldCB0byAnRm9yY2VTaW5nbGUnIG9yICdGb3JjZU11bHRpJyB5b3VyIGNob2ljZSB3aWxsIGJlIHJlc3BlY3RlZCBidXQgdGhpcyBtaWdodCBub3QgcmVzcGVjdCB0aGUgRmlvcmkgZ3VpZGVsaW5lcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIk5vbmVcIiwgXCJTaW5nbGVcIiwgXCJNdWx0aVwiLCBcIkF1dG9cIiwgXCJGb3JjZU11bHRpXCIsIFwiRm9yY2VTaW5nbGVcIl0gfSlcblx0cHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25Nb2RlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB0aGUga2luZCBvZiB2YXJpYW50IG1hbmFnZW1lbnQgdGhhdCBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlIGlzIGBDb250cm9sYC48YnIvPlxuXHQgKiBJZiBzZXQgd2l0aCB2YWx1ZSBgQ29udHJvbGAsIGEgdmFyaWFudCBtYW5hZ2VtZW50IGNvbnRyb2wgaXMgc2VlbiB3aXRoaW4gdGhlIHRhYmxlIGFuZCB0aGUgdGFibGUgaXMgbGlua2VkIHRvIHRoaXMuPGJyLz5cblx0ICogSWYgbm90IHNldCB3aXRoIGFueSB2YWx1ZSwgY29udHJvbCBsZXZlbCB2YXJpYW50IG1hbmFnZW1lbnQgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIkNvbnRyb2xcIl0gfSlcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbW1hLXNlcGFyYXRlZCB2YWx1ZSBvZiBmaWVsZHMgdGhhdCBtdXN0IGJlIGlnbm9yZWQgaW4gdGhlIE9EYXRhIG1ldGFkYXRhIGJ5IHRoZSBUYWJsZSBidWlsZGluZyBibG9jay48YnI+XG5cdCAqIFRoZSB0YWJsZSBidWlsZGluZyBibG9jayBpcyBub3QgZ29pbmcgdG8gY3JlYXRlIGJ1aWx0LWluIGNvbHVtbnMgb3Igb2ZmZXIgdGFibGUgcGVyc29uYWxpemF0aW9uIGZvciBjb21tYS1zZXBhcmF0ZWQgdmFsdWUgb2YgZmllbGRzIHRoYXQgYXJlIHByb3ZpZGVkIGluIHRoZSBpZ25vcmVkZmllbGRzLjxicj5cblx0ICogQW55IGNvbHVtbiByZWZlcmVuY2luZyBhbiBpZ25vcmVkIGZpZWxkIGlzIHRvIGJlIHJlbW92ZWQuPGJyPlxuXHQgKiBAc2luY2UgMS4xMjQuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpZ25vcmVkRmllbGRzPzogc3RyaW5nO1xuXG5cdC8vICAqKioqKioqKioqKioqKiogUHJpdmF0ZSBBdHRyaWJ1dGVzICoqKioqKioqKioqKioqKioqKioqXG5cdHByaXZhdGUgX2FwaUlkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDaGFuZ2VzIHRoZSBzaXplIG9mIHRoZSBJbGx1c3RyYXRlZE1lc3NhZ2UgaW4gdGhlIHRhYmxlLCBvciByZW1vdmVzIGl0IGNvbXBsZXRlbHkuXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9gLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLURpYWxvZ2AsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtRG90YCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1TY2VuZWAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdGAgb3IgYHRleHRgLlxuXHQgKiBAc2luY2UgMS4xMjkuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0YWxsb3dlZFZhbHVlczogW1xuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b1wiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQmFzZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtTWVkaXVtXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1Eb3RcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUV4dHJhU21hbGxcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNjZW5lXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1MYXJnZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU21hbGxcIixcblx0XHRcdFwidGV4dFwiXG5cdFx0XVxuXHR9KVxuXHRtb2RlRm9yTm9EYXRhTWVzc2FnZT86IHN0cmluZztcblxuXHQvLyAgKioqKioqKioqKioqKioqIFByaXZhdGUgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHRwcml2YXRlIHJlYWRvbmx5IGNvbGxlY3Rpb25FbnRpdHk6IEVudGl0eVNldCB8IE5hdmlnYXRpb25Qcm9wZXJ0eTtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgaGVhZGVyIHN0eWxlIG9mIHRoZSB0YWJsZSBoZWFkZXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiIH0pXG5cdGhlYWRlclN0eWxlPzogVGl0bGVMZXZlbDtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIGlmIHRoZSBjb2x1bW4gd2lkdGggaXMgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPzogYm9vbGVhbiA9IHRydWU7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRmaWVsZE1vZGUgPSBcIlwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGlzQWxwPzogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBPTkxZIEZPUiBSRVNQT05TSVZFIFRBQkxFOiBTZXR0aW5nIHRvIGRlZmluZSB0aGUgY2hlY2tib3ggaW4gdGhlIGNvbHVtbiBoZWFkZXI6IEFsbG93ZWQgdmFsdWVzIGFyZSBgRGVmYXVsdGAgb3IgYENsZWFyQWxsYC4gSWYgc2V0IHRvIGBEZWZhdWx0YCwgdGhlIHNhcC5tLlRhYmxlIGNvbnRyb2wgcmVuZGVycyB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCwgb3RoZXJ3aXNlIHRoZSBEZXNlbGVjdCBBbGwgYnV0dG9uIGlzIHJlbmRlcmVkLlxuXHQgKi9cblx0bXVsdGlTZWxlY3RNb2RlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBVc2VkIGZvciBiaW5kaW5nIHRoZSB0YWJsZSB0byBhIG5hdmlnYXRpb24gcGF0aC4gT25seSB0aGUgcGF0aCBpcyB1c2VkIGZvciBiaW5kaW5nIHJvd3MuXG5cdCAqL1xuXHRuYXZpZ2F0aW9uUGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogVHJ1ZSBpZiB0aGUgdGFibGUgaXMgaW4gYSBMaXN0UmVwb3J0IG11bHRpIHZpZXdcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGluTXVsdGlWaWV3PzogYm9vbGVhbjtcblxuXHR1c2VCYXNpY1NlYXJjaD86IGJvb2xlYW47XG5cblx0dGFibGVEZWZpbml0aW9uOiBUYWJsZVZpc3VhbGl6YXRpb247IC8vIFdlIHJlcXVpcmUgdGFibGVEZWZpbml0aW9uIHRvIGJlIHRoZXJlIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBmb3JtYWxseSByZXF1aXJlZFxuXG5cdHRhYmxlRGVmaW5pdGlvbkNvbnRleHQ/OiBDb250ZXh0O1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dGFiVGl0bGUgPSBcIlwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHZpc2libGU/OiBib29sZWFuO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGRpc3BsYXlTZWdtZW50ZWRCdXR0b24/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQ3JlYXRpb25PcHRpb25zXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChjcmVhdGlvbk9wdGlvbnNJbnB1dDogVGFibGVDcmVhdGlvbk9wdGlvbnMpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0Y3JlYXRpb25PcHRpb25zSW5wdXQubmFtZSAmJlxuXHRcdFx0XHQhW1wiTmV3UGFnZVwiLCBcIklubGluZVwiLCBcIklubGluZUNyZWF0aW9uUm93c1wiLCBcIkV4dGVybmFsXCIsIFwiQ3JlYXRpb25EaWFsb2dcIl0uaW5jbHVkZXMoY3JlYXRpb25PcHRpb25zSW5wdXQubmFtZSlcblx0XHRcdCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEFsbG93ZWQgdmFsdWUgJHtjcmVhdGlvbk9wdGlvbnNJbnB1dC5uYW1lfSBmb3IgY3JlYXRpb25Nb2RlIGRvZXMgbm90IG1hdGNoYCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBjcmVhdGlvbk9wdGlvbnNJbnB1dDtcblx0XHR9XG5cdH0pXG5cdGNyZWF0aW9uTW9kZTogUHJvcGVydGllc09mPFRhYmxlQ3JlYXRpb25PcHRpb25zPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY29udHJvbCB0aGUgYWdncmVnYXRpb24gYmVoYXZpb3Jcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFuYWx5dGljYWxDb25maWd1cmF0aW9uXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcblx0XHRcdGlmICh0eXBlb2YgYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbi5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gXCJ0cnVlXCI7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0fVxuXHR9KVxuXHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUHJvcGVydGllc09mPEFuYWx5dGljYWxDb25maWd1cmF0aW9uPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgYWN0aW9ucyBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIiwgXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbk92ZXJyaWRlXCIsIFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cE92ZXJyaWRlXCJdLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdGhhc1ZpcnR1YWxOb2RlOiB0cnVlLFxuXHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUFjdGlvbkdyb3VwUHJvcGVydGllc1xuXHR9KVxuXHRhY3Rpb25zPzogUmVjb3JkPHN0cmluZywgQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbkdyb3VwIHwgQmxvY2tBY3Rpb25PdmVycmlkZSB8IEJsb2NrQWN0aW9uR3JvdXBPdmVycmlkZT47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBtYXNzIGVkaXQgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLk1hc3NFZGl0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0bXVsdGlwbGU6IGZhbHNlLFxuXHRcdHNraXBLZXk6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzXG5cdH0pXG5cdG1hc3NFZGl0PzogUmVjb3JkPHN0cmluZywgQmxvY2tNYXNzRWRpdD47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBjb2x1bW5zIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5cIixcblx0XHRhbHRUeXBlczogW1wic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5PdmVycmlkZVwiXSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRpc0RlZmF1bHQ6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tQ29sdW1uUHJvcGVydGllc1xuXHR9KVxuXHRjb2x1bW5zPzogUmVjb3JkPHN0cmluZywgQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlPjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuUXVpY2tWYXJpYW50U2VsZWN0aW9uXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0c2tpcEtleTogdHJ1ZSxcblx0XHRtdWx0aXBsZTogZmFsc2UsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0UXVpY2tWYXJpYW50U2VsZWN0aW9uXG5cdH0pXG5cdHF1aWNrVmFyaWFudFNlbGVjdGlvbj86IFJlY29yZDxzdHJpbmcsIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uPjtcblxuXHRjb252ZXJ0ZWRNZXRhZGF0YTogQ29udmVydGVkTWV0YWRhdGE7XG5cblx0Y29udGV4dE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8TGluZUl0ZW0gfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD47XG5cblx0LyoqXG5cdCAqIEJlZm9yZSBhIHRhYmxlIHJlYmluZCwgYW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJpbmRpbmcuXG5cdCAqXG5cdCAqIFRoZSBldmVudCBjb250YWlucyBhIHBhcmFtZXRlciwgYGNvbGxlY3Rpb25CaW5kaW5nSW5mb2AsIHdoaWNoIGlzIGFuIGluc3RhbmNlIG9mIGBDb2xsZWN0aW9uQmluZGluZ0luZm9BUElgLlxuXHQgKiBJdCBjYW4gYWxzbyBjb250YWluIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgYHF1aWNrRmlsdGVyS2V5YCwgd2hpY2ggaW5kaWNhdGVzIHdoYXQgaXMgdGhlIHF1aWNrIGZpbHRlciBrZXkgKGlmIGFueSkgYmVpbmcgcHJvY2Vzc2VkIGZvciB0aGUgdGFibGUuXG5cdCAqIFRoaXMgYWxsb3dzIHlvdSB0byBtYW5pcHVsYXRlIHRoZSB0YWJsZSdzIGxpc3QgYmluZGluZy5cblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byBhdHRhY2ggZXZlbnQgaGFuZGxlcnMgdG8gdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKiBZb3UgY2FuIHVzZSB0aGlzIGV2ZW50IHRvIGFkZCBzZWxlY3RzLCBhbmQgYWRkIG9yIHJlYWQgdGhlIHNvcnRlcnMgYW5kIGZpbHRlcnMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0cHJpdmF0ZSByZWFkb25seSBiZWZvcmVSZWJpbmRUYWJsZT86IHN0cmluZztcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgY2hvb3NlcyBhIHJvdzsgdGhlIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIHJvdyBpcyBjaG9zZW4uXG5cdCAqXG5cdCAqIFlvdSBjYW4gc2V0IHRoaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIG1hbnVhbGx5LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHJvd1ByZXNzPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBjaGFuZ2UgZXZlbnQgb2YgdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKlxuXHQgKiBJbnRlcm5hbCBvbmx5XG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdGxpc3RCaW5kaW5nQ2hhbmdlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgYW4gb3B0aW9uIG9mIHRoZSBzZWdtZW50ZWQgYnV0dG9uIGluIHRoZSBBTFAgVmlld1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRzZWdtZW50ZWRCdXR0b25QcmVzcz86IHN0cmluZztcblxuXHRAYmxvY2tFdmVudCgpXG5cdHZhcmlhbnRTYXZlZD86IHN0cmluZztcblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpbiB0aGUgdGFibGUgY2hhbmdlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZT86IHN0cmluZztcblxuXHRAYmxvY2tFdmVudCgpXG5cdHZhcmlhbnRTZWxlY3RlZD86IHN0cmluZztcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aW5pdGlhbExvYWQ/OiBib29sZWFuO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQ7XG5cblx0cHJpdmF0ZSByZWFkb25seSBtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBQcm9wZXJ0aWVzT2Y8VGFibGVCbG9jaz4sIGNvbnRyb2xDb25maWd1cmF0aW9uOiB1bmtub3duLCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzOiBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcHMsIGNvbnRyb2xDb25maWd1cmF0aW9uLCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKTtcblx0XHRjb25zdCBjb250ZXh0T2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pihcblx0XHRcdHRoaXMubWV0YVBhdGgsXG5cdFx0XHR0aGlzLmNvbnRleHRQYXRoXG5cdFx0KTtcblx0XHR0aGlzLmNvbnRleHRPYmplY3RQYXRoID0gY29udGV4dE9iamVjdFBhdGg7XG5cblx0XHR0aGlzLnRhYmxlRGVmaW5pdGlvbiA9IFRhYmxlQmxvY2suY3JlYXRlVGFibGVEZWZpbml0aW9uKHRoaXMsIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRcdHRoaXMudGFibGVEZWZpbml0aW9uQ29udGV4dCA9IE1hY3JvQVBJLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRoaXMudGFibGVEZWZpbml0aW9uIGFzIG9iamVjdCwgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk7XG5cblx0XHR0aGlzLmNvbnZlcnRlZE1ldGFkYXRhID0gdGhpcy5jb250ZXh0T2JqZWN0UGF0aC5jb252ZXJ0ZWRUeXBlcztcblx0XHR0aGlzLm1ldGFNb2RlbCA9IHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MubW9kZWxzLm1ldGFNb2RlbDtcblx0XHR0aGlzLmNvbGxlY3Rpb25FbnRpdHkgPSB0aGlzLmNvbnZlcnRlZE1ldGFkYXRhLnJlc29sdmVQYXRoKHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY29sbGVjdGlvbikudGFyZ2V0IGFzIEVudGl0eVNldDtcblx0XHR0aGlzLmFwcENvbXBvbmVudCA9IHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MuYXBwQ29tcG9uZW50O1xuXHRcdHRoaXMuc2V0VXBJZCgpO1xuXG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUgPz89IHt9O1xuXHRcdHRoaXMuY3JlYXRpb25Nb2RlLm5hbWUgPz89IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY3JlYXRlLm1vZGUgYXMgVGFibGVDcmVhdGlvbk9wdGlvbnNbXCJuYW1lXCJdO1xuXHRcdHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0ZUF0RW5kID8/PSAodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jcmVhdGUgYXMgQ3JlYXRlQmVoYXZpb3IpLmFwcGVuZDtcblx0XHQvLyBTcGVjaWFsIGNvZGUgZm9yIHJlYWRPbmx5XG5cdFx0Ly8gcmVhZG9ubHkgPSBmYWxzZSAtPiBGb3JjZSBlZGl0YWJsZVxuXHRcdC8vIHJlYWRvbmx5ID0gdHJ1ZSAtPiBGb3JjZSBkaXNwbGF5IG1vZGVcblx0XHQvLyByZWFkb25seSA9IHVuZGVmaW5lZCAtPiBCb3VuZCB0byBlZGl0IGZsb3dcblx0XHRpZiAoXG5cdFx0XHR0aGlzLnJlYWRPbmx5ID09PSB1bmRlZmluZWQgJiZcblx0XHRcdCh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmRpc3BsYXlNb2RlID09PSB0cnVlIHx8IHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wucmVhZE9ubHkgPT09IHRydWUpXG5cdFx0KSB7XG5cdFx0XHR0aGlzLnJlYWRPbmx5ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRUYWJsZUFQSS51cGRhdGVDb2x1bW5zVmlzaWJpbGl0eSh0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHMsIFtdLCB0aGlzLnRhYmxlRGVmaW5pdGlvbik7XG5cblx0XHRsZXQgdXNlQmFzaWNTZWFyY2ggPSBmYWxzZTtcblxuXHRcdC8vIE5vdGUgZm9yIHRoZSAnZmlsdGVyQmFyJyBwcm9wZXJ0eTpcblx0XHQvLyAxLiBJRCByZWxhdGl2ZSB0byB0aGUgdmlldyBvZiB0aGUgVGFibGUuXG5cdFx0Ly8gMi4gQWJzb2x1dGUgSUQuXG5cdFx0Ly8gMy4gSUQgd291bGQgYmUgY29uc2lkZXJlZCBpbiBhc3NvY2lhdGlvbiB0byBUYWJsZUFQSSdzIElELlxuXHRcdGlmICghdGhpcy5maWx0ZXJCYXIpIHtcblx0XHRcdC8vIGZpbHRlckJhcjogUHVibGljIHByb3BlcnR5IGZvciBidWlsZGluZyBibG9ja3Ncblx0XHRcdC8vIGZpbHRlckJhcklkOiBPbmx5IHVzZWQgYXMgSW50ZXJuYWwgcHJpdmF0ZSBwcm9wZXJ0eSBmb3IgRkUgdGVtcGxhdGVzXG5cdFx0XHR0aGlzLmZpbHRlckJhciA9IGdlbmVyYXRlKFt0aGlzLmNvbnRlbnRJZCwgXCJTdGFuZGFyZEFjdGlvblwiLCBcIkJhc2ljU2VhcmNoXCJdKTtcblx0XHRcdHVzZUJhc2ljU2VhcmNoID0gdHJ1ZTtcblx0XHR9XG5cdFx0Ly8gSW50ZXJuYWwgcHJvcGVydGllc1xuXHRcdHRoaXMudXNlQmFzaWNTZWFyY2ggPSB1c2VCYXNpY1NlYXJjaDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBhbm5vdGF0aW9uIHBhdGggcG9pbnRpbmcgdG8gdGhlIHZpc3VhbGl6YXRpb24gYW5ub3RhdGlvbiAoTGluZUl0ZW0pLlxuXHQgKiBAcGFyYW0gY29udGV4dE9iamVjdFBhdGggVGhlIGRhdGFtb2RlbCBvYmplY3QgcGF0aCBmb3IgdGhlIHRhYmxlXG5cdCAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuXHQgKiBAcmV0dXJucyBUaGUgYW5ub3RhdGlvbiBwYXRoXG5cdCAqL1xuXHRzdGF0aWMgZ2V0VmlzdWFsaXphdGlvblBhdGgoXG5cdFx0Y29udGV4dE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8TGluZUl0ZW0gfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4sXG5cdFx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG5cdCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbWV0YVBhdGggPSBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKGNvbnRleHRPYmplY3RQYXRoKSBhcyBzdHJpbmc7XG5cblx0XHQvLyBmYWxsYmFjayB0byBkZWZhdWx0IExpbmVJdGVtIGlmIG1ldGFwYXRoIGlzIG5vdCBzZXRcblx0XHRpZiAoIW1ldGFQYXRoKSB7XG5cdFx0XHRMb2cuZXJyb3IoYE1pc3NpbmcgbWV0YSBwYXRoIHBhcmFtZXRlciBmb3IgTGluZUl0ZW1gKTtcblx0XHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDtcblx0XHR9XG5cblx0XHRpZiAoaXNBbm5vdGF0aW9uT2ZUZXJtPExpbmVJdGVtPihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtKSkge1xuXHRcdFx0cmV0dXJuIG1ldGFQYXRoOyAvLyBNZXRhUGF0aCBpcyBhbHJlYWR5IHBvaW50aW5nIHRvIGEgTGluZUl0ZW1cblx0XHR9XG5cdFx0Ly9OZWVkIHRvIHN3aXRjaCB0byB0aGUgY29udGV4dCByZWxhdGVkIHRoZSBQViBvciBTUFZcblx0XHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24obWV0YVBhdGgpO1xuXG5cdFx0bGV0IHZpc3VhbGl6YXRpb25zOiBWaXN1YWxpemF0aW9uQW5kUGF0aFtdID0gW107XG5cdFx0aWYgKFxuXHRcdFx0aXNBbm5vdGF0aW9uT2ZUZXJtPFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdFx0XHRjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblRlcm1zLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcblx0XHRcdCkgfHxcblx0XHRcdGlzQW5ub3RhdGlvbk9mVGVybTxQcmVzZW50YXRpb25WYXJpYW50Pihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQpXG5cdFx0KSB7XG5cdFx0XHR2aXN1YWxpemF0aW9ucyA9IGdldFZpc3VhbGl6YXRpb25zRnJvbUFubm90YXRpb24oXG5cdFx0XHRcdGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCxcblx0XHRcdFx0bWV0YVBhdGgsXG5cdFx0XHRcdHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRcdHRydWVcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy5lcnJvcihgQmFkIG1ldGFwYXRoIHBhcmFtZXRlciBmb3IgdGFibGUgOiAke2NvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCEudGVybX1gKTtcblx0XHR9XG5cblx0XHRjb25zdCBsaW5lSXRlbVZpeiA9IHZpc3VhbGl6YXRpb25zLmZpbmQoKHZpeikgPT4ge1xuXHRcdFx0cmV0dXJuIHZpei52aXN1YWxpemF0aW9uLnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtO1xuXHRcdH0pO1xuXG5cdFx0aWYgKGxpbmVJdGVtVml6KSB7XG5cdFx0XHRyZXR1cm4gbGluZUl0ZW1WaXouYW5ub3RhdGlvblBhdGg7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgYW5ub3RhdGlvbiBtaXNzaW5nIGluIFBWXG5cdFx0XHRMb2cuZXJyb3IoYEJhZCBtZXRhIHBhdGggcGFyYW1ldGVyIGZvciBMaW5lSXRlbTogJHtjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QhLnRlcm19YCk7XG5cdFx0XHRyZXR1cm4gYEAke1VJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtfWA7IC8vIEZhbGxiYWNrXG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIGFkZFNldHRpbmcgPSAodGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCA9PiB7XG5cdFx0aWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRhcmdldFtrZXldID0gdmFsdWU7XG5cdFx0fVxuXHR9O1xuXG5cdGdldFRhYmxlU2V0dGluZ3MoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuXHRcdGNvbnN0IHRhYmxlU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlRXhwb3J0XCIsIHRoaXMuZW5hYmxlRXhwb3J0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRGaWxlTmFtZVwiLCB0aGlzLmV4cG9ydEZpbGVOYW1lKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRTaGVldE5hbWVcIiwgdGhpcy5leHBvcnRTaGVldE5hbWUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJlYWRPbmx5XCIsIHRoaXMucmVhZE9ubHkpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5pZ25vcmVkRmllbGRzKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25MaW1pdFwiLCB0aGlzLnNlbGVjdGlvbkxpbWl0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJjb25kZW5zZWRUYWJsZUxheW91dFwiLCB0aGlzLmNvbmRlbnNlZFRhYmxlTGF5b3V0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRSZXF1ZXN0U2l6ZVwiLCB0aGlzLmV4cG9ydFJlcXVlc3RTaXplKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJmcm96ZW5Db2x1bW5Db3VudFwiLCB0aGlzLmZyb3plbkNvbHVtbkNvdW50KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJkaXNhYmxlQ29sdW1uRnJlZXplXCIsIHRoaXMuZGlzYWJsZUNvbHVtbkZyZWV6ZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJcIiwgdGhpcy53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcik7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicm93Q291bnRNb2RlXCIsIHRoaXMucm93Q291bnRNb2RlKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJyb3dDb3VudFwiLCB0aGlzLnJvd0NvdW50KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVGdWxsU2NyZWVuXCIsIHRoaXMuZW5hYmxlRnVsbFNjcmVlbik7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwic2VsZWN0QWxsXCIsIHRoaXMuZW5hYmxlU2VsZWN0QWxsKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXNcIiwgdGhpcy5lbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXMpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RlXCIsIHRoaXMuZW5hYmxlUGFzdGUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb3B5VG9DbGlwYm9hcmRcIiwgdGhpcy5kaXNhYmxlQ29weVRvQ2xpcGJvYXJkKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzY3JvbGxUaHJlc2hvbGRcIiwgdGhpcy5zY3JvbGxUaHJlc2hvbGQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInRocmVzaG9sZFwiLCB0aGlzLnRocmVzaG9sZCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicG9waW5MYXlvdXRcIiwgdGhpcy5wb3BpbkxheW91dCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwic2VsZWN0aW9uTW9kZVwiLCB0aGlzLnNlbGVjdGlvbk1vZGUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInR5cGVcIiwgdGhpcy50eXBlKTtcblx0XHRpZiAodGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24/LnF1aWNrRmlsdGVycz8ucGF0aHM/Lmxlbmd0aCkge1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicXVpY2tWYXJpYW50U2VsZWN0aW9uXCIsIHtcblx0XHRcdFx0cGF0aHM6IHRoaXMucXVpY2tWYXJpYW50U2VsZWN0aW9uLnF1aWNrRmlsdGVycy5wYXRocy5tYXAoKHBhdGgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4geyBhbm5vdGF0aW9uUGF0aDogcGF0aCB9O1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0c2hvd0NvdW50czogdGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24ucXVpY2tGaWx0ZXJzLnNob3dDb3VudHNcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmNyZWF0aW9uTW9kZSkge1xuXHRcdFx0Y29uc3QgY3JlYXRpb25Nb2RlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJuYW1lXCIsIHRoaXMuY3JlYXRpb25Nb2RlLm5hbWUpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJjcmVhdGlvbkZpZWxkc1wiLCB0aGlzLmNyZWF0aW9uTW9kZS5jcmVhdGlvbkZpZWxkcyk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImNyZWF0ZUF0RW5kXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0ZUF0RW5kKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwiaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZVwiLCB0aGlzLmNyZWF0aW9uTW9kZS5pbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwib3V0Ym91bmRcIiwgdGhpcy5jcmVhdGlvbk1vZGUub3V0Ym91bmQpO1xuXHRcdFx0aWYgKE9iamVjdC5lbnRyaWVzKGNyZWF0aW9uTW9kZSkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0YWJsZVNldHRpbmdzW1wiY3JlYXRpb25Nb2RlXCJdID0gY3JlYXRpb25Nb2RlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLm1hc3NFZGl0KSB7XG5cdFx0XHRjb25zdCBlbmFibGVNYXNzRWRpdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJjdXN0b21GcmFnbWVudFwiLCB0aGlzLm1hc3NFZGl0LmNvbmZpZ3VyYXRpb24/LmN1c3RvbUNvbnRlbnQpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImZyb21JbmxpbmVcIiwgdHJ1ZSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwidmlzaWJsZUZpZWxkc1wiLCB0aGlzLm1hc3NFZGl0LmNvbmZpZ3VyYXRpb24/LnZpc2libGVGaWVsZHM/LmpvaW4oXCIsXCIpKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJpZ25vcmVkRmllbGRzXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8uaWdub3JlZEZpZWxkcz8uam9pbihcIixcIikpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcIm9wZXJhdGlvbkdyb3VwaW5nTW9kZVwiLCB0aGlzLm1hc3NFZGl0LmNvbmZpZ3VyYXRpb24/Lm9wZXJhdGlvbkdyb3VwaW5nTW9kZSk7XG5cdFx0XHR0YWJsZVNldHRpbmdzW1wiZW5hYmxlTWFzc0VkaXRcIl0gPSBlbmFibGVNYXNzRWRpdDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5hbmFseXRpY2FsQ29uZmlndXJhdGlvbj8uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gdHJ1ZSkge1xuXHRcdFx0Y29uc3QgYW5hbHl0aWNhbENvbmZpZ3VyYXRpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24sIFwiYWdncmVnYXRpb25PbkxlYWZMZXZlbFwiLCB0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uLmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwpO1xuXHRcdFx0aWYgKE9iamVjdC5lbnRyaWVzKGFuYWx5dGljYWxDb25maWd1cmF0aW9uKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJhbmFseXRpY2FsQ29uZmlndXJhdGlvblwiXSA9IGFuYWx5dGljYWxDb25maWd1cmF0aW9uO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdGFibGVTZXR0aW5ncztcblx0fVxuXG5cdHN0YXRpYyBjcmVhdGVUYWJsZURlZmluaXRpb24odGFibGU6IFRhYmxlQmxvY2ssIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpOiBUYWJsZVZpc3VhbGl6YXRpb24ge1xuXHRcdGNvbnN0IGluaXRpYWxDb252ZXJ0ZXJDb250ZXh0ID0gdGFibGUuZ2V0Q29udmVydGVyQ29udGV4dChcblx0XHRcdHRhYmxlLmNvbnRleHRPYmplY3RQYXRoLFxuXHRcdFx0dGFibGUuY29udGV4dFBhdGg/LmdldFBhdGgoKSxcblx0XHRcdHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3Ncblx0XHQpO1xuXHRcdGNvbnN0IHZpc3VhbGl6YXRpb25QYXRoID0gVGFibGVCbG9jay5nZXRWaXN1YWxpemF0aW9uUGF0aCh0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCwgaW5pdGlhbENvbnZlcnRlckNvbnRleHQpO1xuXG5cdFx0Y29uc3QgdGFibGVTZXR0aW5ncyA9IHRhYmxlLmdldFRhYmxlU2V0dGluZ3MoKTtcblx0XHRjb25zdCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uID0ge1xuXHRcdFx0YWN0aW9uczogVGFibGVCbG9jay5jcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0KHRhYmxlKSxcblx0XHRcdGNvbHVtbnM6IFRhYmxlQmxvY2suY3JlYXRlQ29sdW1uc0Zvck1hbmlmZXN0KHRhYmxlKSxcblx0XHRcdHRhYmxlU2V0dGluZ3Ncblx0XHR9O1xuXG5cdFx0Y29uc3QgZXh0cmFQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0ZXh0cmFQYXJhbXNbdmlzdWFsaXphdGlvblBhdGhdID0gZXh0cmFNYW5pZmVzdFNldHRpbmdzO1xuXHRcdGNvbnN0IGNvbnZlcnRlckNvbnRleHQgPSB0YWJsZS5nZXRDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0dGFibGUuY29udGV4dE9iamVjdFBhdGgsXG5cdFx0XHR0YWJsZS5jb250ZXh0UGF0aD8uZ2V0UGF0aCgpLFxuXHRcdFx0dGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyxcblx0XHRcdGV4dHJhUGFyYW1zXG5cdFx0KTtcblxuXHRcdGxldCBhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudFR5cGUgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKHRhYmxlLmFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCkge1xuXHRcdFx0Y29uc3Qgc3ZPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPFNlbGVjdGlvblZhcmlhbnQ+KFxuXHRcdFx0XHR0YWJsZS5hc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgsXG5cdFx0XHRcdHRhYmxlLmNvbnRleHRQYXRoIGFzIENvbnRleHRcblx0XHRcdCk7XG5cdFx0XHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudCA9IHN2T2JqZWN0UGF0aC50YXJnZXRPYmplY3Q7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdmlzdWFsaXphdGlvbkRlZmluaXRpb24gPSBnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24oXG5cdFx0XHQodGFibGUuaW5NdWx0aVZpZXcgJiYgdGFibGUuY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0XG5cdFx0XHRcdD8gY29udmVydGVyQ29udGV4dC5nZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdFx0dGFibGUuY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LmZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpXG5cdFx0XHRcdCAgKVxuXHRcdFx0XHQ6IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgodGFibGUuY29udGV4dE9iamVjdFBhdGgpKSBhcyBzdHJpbmcsXG5cdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0e1xuXHRcdFx0XHRpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50OiB0YWJsZS51c2VDb25kZW5zZWRMYXlvdXQsXG5cdFx0XHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0XHRpc01hY3JvT3JNdWx0aXBsZVZpZXc6IHRhYmxlLmluTXVsdGlWaWV3ID8/IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXG5cdFx0Ly8gdGFrZSB0aGUgKGZpcnN0KSBUYWJsZSB2aXN1YWxpemF0aW9uXG5cdFx0cmV0dXJuIHZpc3VhbGl6YXRpb25EZWZpbml0aW9uLnZpc3VhbGl6YXRpb25zLmZpbmQoXG5cdFx0XHQodml6OiBUYWJsZVZpc3VhbGl6YXRpb24gfCBDaGFydFZpc3VhbGl6YXRpb24pID0+IHZpei50eXBlID09PSBWaXN1YWxpemF0aW9uVHlwZS5UYWJsZVxuXHRcdCkgYXMgVGFibGVWaXN1YWxpemF0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIG1hbmlmZXN0IGFjdGlvbnMgZm9yIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSBibG9ja1xuXHQgKiBAcmV0dXJucyBUaGUgbWFuaWZlc3QgYWN0aW9ucyBmb3IgdGhlIHRhYmxlXG5cdCAqL1xuXHRzdGF0aWMgY3JlYXRlQWN0aW9uc0Zyb21NYW5pZmVzdCh0YWJsZTogVGFibGVCbG9jayk6IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPiB7XG5cdFx0Y29uc3QgYWN0aW9uc1NldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdEFjdGlvbj4gPSB7fTtcblx0XHRjb25zdCBhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QgPSAoYWN0aW9uOiBCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpOiB2b2lkID0+IHtcblx0XHRcdGNvbnN0IGtleSA9IGFjdGlvbi5rZXkhO1xuXHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdFx0cGxhY2VtZW50OiAoYWN0aW9uLnBsYWNlbWVudCA/PyBcIkFmdGVyXCIpIGFzIFBsYWNlbWVudCxcblx0XHRcdFx0XHRhbmNob3I6IGFjdGlvbi5hbmNob3Jcblx0XHRcdFx0fSxcblx0XHRcdFx0Y29tbWFuZDogYWN0aW9uLmNvbW1hbmQsXG5cdFx0XHRcdGVuYWJsZU9uU2VsZWN0OiBhY3Rpb24uZW5hYmxlT25TZWxlY3QsXG5cdFx0XHRcdHZpc2libGU6IGFjdGlvbi52aXNpYmxlLFxuXHRcdFx0XHRlbmFibGVkOiBhY3Rpb24uZW5hYmxlZCxcblx0XHRcdFx0aXNBSU9wZXJhdGlvbjogYWN0aW9uLmlzQUlPcGVyYXRpb24sXG5cdFx0XHRcdHByaW9yaXR5OiBhY3Rpb24ucHJpb3JpdHksXG5cdFx0XHRcdGdyb3VwOiBhY3Rpb24uZ3JvdXBcblx0XHRcdH07XG5cdFx0XHRpZiAoYWN0aW9uLl90eXBlID09PSBcIkFjdGlvblwiKSB7XG5cdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRcdHRleHQ6IGFjdGlvbi50ZXh0LFxuXHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlLFxuXHRcdFx0XHRcdHByZXNzOiBhY3Rpb24ucHJlc3MsXG5cdFx0XHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvblxuXHRcdFx0XHR9O1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBhZnRlckV4ZWN1dGlvbiA9IHtcblx0XHRcdFx0ZW5hYmxlQXV0b1Njcm9sbDogYWN0aW9uW1wiZW5hYmxlQXV0b1Njcm9sbFwiXSxcblx0XHRcdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBhY3Rpb25bXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIl1cblx0XHRcdH07XG5cdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGFmdGVyRXhlY3V0aW9uKTtcblx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0YWZ0ZXJFeGVjdXRpb246IE9iamVjdC5lbnRyaWVzKGFmdGVyRXhlY3V0aW9uKS5sZW5ndGggPyBhZnRlckV4ZWN1dGlvbiA6IHVuZGVmaW5lZCxcblx0XHRcdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBhY3Rpb24uZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0aWYgKHRhYmxlLmFjdGlvbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuYWN0aW9ucykuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25cIiB8fCBpdGVtLl90eXBlID09PSBcIkFjdGlvbk92ZXJyaWRlXCIpIHtcblx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoaXRlbSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25Hcm91cFwiIHx8IGl0ZW0uX3R5cGUgPT09IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiKSB7XG5cdFx0XHRcdFx0Ly8gQWN0aW9uR3JvdXAgb3IgQWN0aW9uR3JvdXBPdmVycmlkZVxuXHRcdFx0XHRcdGNvbnN0IGtleSA9IGl0ZW0ua2V5ITtcblx0XHRcdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGl0ZW0ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdFx0XHRhbmNob3I6IGl0ZW0uYW5jaG9yXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bWVudTogaXRlbS5hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24ua2V5ISlcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGlmIChpdGVtLl90eXBlID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0XHRcdFx0dGV4dDogaXRlbS50ZXh0LFxuXHRcdFx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBpdGVtLmRlZmF1bHRBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpdGVtLmFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoYWN0aW9uKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBhY3Rpb25zU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgY29sdW1ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBhY3Rpb25zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGU6IFRhYmxlQmxvY2spOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZT4ge1xuXHRcdGNvbnN0IGlzQmxvY2tDb2x1bW4gPSAoYmxvY2s6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZSk6IGJsb2NrIGlzIEJsb2NrQ29sdW1uID0+IHtcblx0XHRcdHJldHVybiBibG9jay5fdHlwZSA9PT0gXCJDb2x1bW5cIjtcblx0XHR9O1xuXG5cdFx0Y29uc3QgY29sdW1uU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlPiA9IHt9O1xuXG5cdFx0aWYgKHRhYmxlLmNvbHVtbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuY29sdW1ucykuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG5cdFx0XHRcdGxldCBjdXN0b21Db2x1bW5EZWZpbml0aW9uOiBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCAoQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUgJiB7IGtleTogc3RyaW5nIH0pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGhlYWRlcjogY29sdW1uLmhlYWRlciEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0cHJvcGVydGllczogY29sdW1uLnByb3BlcnRpZXMsXG5cdFx0XHRcdFx0XHR0b29sdGlwOiBjb2x1bW4udG9vbHRpcCxcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiBjb2x1bW4udGVtcGxhdGUhLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRyZXF1aXJlZDogY29sdW1uLnJlcXVpcmVkLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJTbG90XCIsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGtleTogY29sdW1uLmtleSEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZW1vdmUgYWxsIHVuZGVmaW5lZCBwcm9wZXJ0aWVzLCBzbyB0aGF0IHRoZXkgZG9uJ3QgZXJhc2Ugd2hhdCBpcyBzZXQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0XHRcdC8vIChuZWNlc3NhcnkgYmVjYXVzZSBtYW5pZmVzdC1iYXNlZCBjb2x1bW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIHNsb3QgY29sdW1ucyBhbmQgd2UgZG9uJ3QgY29weVxuXHRcdFx0XHQvLyBhbGwgdGhlaXIgcHJvcGVydGllcyBpbiB0aGUgWE1MKVxuXHRcdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGN1c3RvbUNvbHVtbkRlZmluaXRpb24pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pICYmIChjb2x1bW4uYW5jaG9yIHx8IGNvbHVtbi5wbGFjZW1lbnQpKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbi5wb3NpdGlvbiA9IHtcblx0XHRcdFx0XHRcdGFuY2hvcjogY29sdW1uLmFuY2hvcixcblx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGNvbHVtbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnRcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29sdW1uU2V0dGluZ3NbY29sdW1uLmtleSFdID0gY3VzdG9tQ29sdW1uRGVmaW5pdGlvbjtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gY29sdW1uU2V0dGluZ3M7XG5cdH1cblxuXHRzZXRVcElkKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlkKSB7XG5cdFx0XHQvLyBUaGUgZ2l2ZW4gSUQgc2hhbGwgYmUgYXNzaWduZWQgdG8gdGhlIFRhYmxlQVBJIGFuZCBub3QgdG8gdGhlIE1EQyBUYWJsZVxuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLmlkO1xuXHRcdFx0Ly8gR2VuZXJhdGUgdGhlIGNvbnRlbnRJZCBiYXNlZCBvbiB0aGUgSUQsIGlmIG5vdCBwcm92aWRlZCAoRlBNIGNhc2UpXG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA/Pz0gdGhpcy5nZXRDb250ZW50SWQodGhpcy5pZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFdlIGdlbmVyYXRlIHRoZSBJRCBhbmQgdGhlIGNvbnRlbnRJRC4gRHVlIHRvIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBrZWVwIGl0IG9uIHRoZSBNREMgVGFibGUgYnV0IHByb3ZpZGUgYXNzaWduXG5cdFx0XHQvLyB0aGUgSUQgd2l0aCBhIDo6VGFibGUgc3VmZml4IHRvIHRoZSBUYWJsZUFQSVxuXHRcdFx0dGhpcy5pZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uaWQ7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0fVxuXHR9XG5cblx0X2dldEVudGl0eVR5cGUoKTogRW50aXR5VHlwZSB7XG5cdFx0cmV0dXJuICh0aGlzLmNvbGxlY3Rpb25FbnRpdHkgYXMgRW50aXR5U2V0KT8uZW50aXR5VHlwZSB8fCAodGhpcy5jb2xsZWN0aW9uRW50aXR5IGFzIE5hdmlnYXRpb25Qcm9wZXJ0eSk/LnRhcmdldFR5cGU7XG5cdH1cblxuXHRnZXRFbXB0eVJvd3NFbmFibGVkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZW5hYmxlZCA9XG5cdFx0XHR0aGlzLmNyZWF0aW9uTW9kZS5uYW1lID09PSBDcmVhdGlvbk1vZGUuSW5saW5lQ3JlYXRpb25Sb3dzXG5cdFx0XHRcdD8gdGhpcy50YWJsZURlZmluaXRpb24uYWN0aW9ucy5maW5kKChhKSA9PiBhLmtleSA9PT0gU3RhbmRhcmRBY3Rpb25LZXlzLkNyZWF0ZSk/LmVuYWJsZWRcblx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuIGVuYWJsZWQgPT09IFwiZmFsc2VcIiA/IHVuZGVmaW5lZCA6IGVuYWJsZWQ7XG5cdH1cblxuXHRnZXRUZW1wbGF0ZSgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGVudGl0eVR5cGUgPSB0aGlzLl9nZXRFbnRpdHlUeXBlKCk7XG5cdFx0Y29uc3QgdGFibGVQcm9wcyA9IHRoaXMgYXMgdW5rbm93biBhcyBUYWJsZUJsb2NrUHJvcGVydGllcztcblx0XHR0YWJsZVByb3BzLm92ZXJyaWRlUm93UHJlc3MgPSB0aGlzLnJvd1ByZXNzICE9PSB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBjb2xsZWN0aW9uRW50aXR5ID0gdGhpcy5jb252ZXJ0ZWRNZXRhZGF0YS5yZXNvbHZlUGF0aCh0YWJsZVByb3BzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pLnRhcmdldCBhc1xuXHRcdFx0fCBFbnRpdHlTZXRcblx0XHRcdHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdGNvbnN0IGhhbmRsZXJQcm92aWRlciA9IG5ldyBUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyKHRhYmxlUHJvcHMsIHsgY29sbGVjdGlvbkVudGl0eSwgbWV0YU1vZGVsOiB0aGlzLm1ldGFQYXRoLmdldE1vZGVsKCkgfSk7XG5cblx0XHRsZXQgY3JlYXRpb25Nb2RlOiBUYWJsZUNyZWF0aW9uT3B0aW9ucyB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5jcmVhdGlvbk1vZGUgJiYgT2JqZWN0LmtleXModGhpcy5jcmVhdGlvbk1vZGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdGNyZWF0aW9uTW9kZSA9IDxUYWJsZUNyZWF0aW9uT3B0aW9ucyB7Li4udGhpcy5jcmVhdGlvbk1vZGV9IC8+O1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8VGFibGVBUElcblx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZQTTogJ3NhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyJ31cIlxuXHRcdFx0XHRiaW5kaW5nPXtge2ludGVybmFsPmNvbnRyb2xzLyR7dGhpcy5jb250ZW50SWR9fWB9XG5cdFx0XHRcdGlkPXt0aGlzLl9hcGlJZH1cblx0XHRcdFx0Y29udGVudElkPXt0aGlzLmNvbnRlbnRJZH1cblx0XHRcdFx0dmlzaWJsZT17dGhpcy52aXNpYmxlfVxuXHRcdFx0XHRoZWFkZXJMZXZlbD17dGhpcy5oZWFkZXJMZXZlbH1cblx0XHRcdFx0aGVhZGVyU3R5bGU9e3RoaXMuaGVhZGVyU3R5bGV9XG5cdFx0XHRcdGhlYWRlclZpc2libGU9e3RoaXMuaGVhZGVyVmlzaWJsZX1cblx0XHRcdFx0dGFiVGl0bGU9e3RoaXMudGFiVGl0bGV9XG5cdFx0XHRcdGV4cG9ydFJlcXVlc3RTaXplPXt0aGlzLmV4cG9ydFJlcXVlc3RTaXplfVxuXHRcdFx0XHRkaXNhYmxlQ29weVRvQ2xpcGJvYXJkPXt0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmR9XG5cdFx0XHRcdHNjcm9sbFRocmVzaG9sZD17dGhpcy5zY3JvbGxUaHJlc2hvbGR9XG5cdFx0XHRcdHRocmVzaG9sZD17dGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC50aHJlc2hvbGQgPz8gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi50aHJlc2hvbGR9XG5cdFx0XHRcdHBvcGluTGF5b3V0PXt0aGlzLnBvcGluTGF5b3V0fVxuXHRcdFx0XHRpc1NlYXJjaGFibGU9e3RoaXMuaXNTZWFyY2hhYmxlfVxuXHRcdFx0XHRidXN5PXt0aGlzLmJ1c3l9XG5cdFx0XHRcdGluaXRpYWxMb2FkPXt0aGlzLmluaXRpYWxMb2FkfVxuXHRcdFx0XHRoZWFkZXI9e3RoaXMuaGVhZGVyfVxuXHRcdFx0XHRpc0FscD17dGhpcy5pc0FscH1cblx0XHRcdFx0ZmllbGRNb2RlPXt0aGlzLmZpZWxkTW9kZX1cblx0XHRcdFx0cGVyc29uYWxpemF0aW9uPXt0aGlzLnBlcnNvbmFsaXphdGlvbn1cblx0XHRcdFx0cm93UHJlc3M9e3RoaXMucm93UHJlc3MgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0dmFyaWFudFNhdmVkPXt0aGlzLnZhcmlhbnRTYXZlZCBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHR2YXJpYW50U2VsZWN0ZWQ9e3RoaXMudmFyaWFudFNlbGVjdGVkIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHNlZ21lbnRlZEJ1dHRvblByZXNzPXt0aGlzLnNlZ21lbnRlZEJ1dHRvblByZXNzIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50PXt0aGlzLnZhcmlhbnRNYW5hZ2VtZW50fVxuXHRcdFx0XHRpZ25vcmVkRmllbGRzPXt0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHN9IC8vIE5lZWQgdG8gYmUgZnJvbSB0aGUgdGFibGVEZWZpbml0aW9uIHRvIGJlIGluIHBoYXNlIGZvciB0aGUgZ2V0SWdub3JlRmllbGRzXG5cdFx0XHRcdHRhYmxlRGVmaW5pdGlvbj17YHtfcGFnZU1vZGVsPiR7dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0IS5nZXRQYXRoKCl9fWAgYXMgdW5rbm93biBhcyBUYWJsZVZpc3VhbGl6YXRpb259XG5cdFx0XHRcdGVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWU9e2VudGl0eVR5cGU/LmZ1bGx5UXVhbGlmaWVkTmFtZX1cblx0XHRcdFx0bWV0YVBhdGg9e3RoaXMubWV0YVBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0dXNlQmFzaWNTZWFyY2g9e3RoaXMudXNlQmFzaWNTZWFyY2h9XG5cdFx0XHRcdGVuYWJsZUZ1bGxTY3JlZW49e3RoaXMuZW5hYmxlRnVsbFNjcmVlbn1cblx0XHRcdFx0ZW5hYmxlRXhwb3J0PXt0aGlzLmVuYWJsZUV4cG9ydH1cblx0XHRcdFx0ZXhwb3J0RmlsZU5hbWU9e3RoaXMuZXhwb3J0RmlsZU5hbWV9XG5cdFx0XHRcdGV4cG9ydFNoZWV0TmFtZT17dGhpcy5leHBvcnRTaGVldE5hbWV9XG5cdFx0XHRcdGZyb3plbkNvbHVtbkNvdW50PXt0aGlzLmZyb3plbkNvbHVtbkNvdW50fVxuXHRcdFx0XHRkaXNhYmxlQ29sdW1uRnJlZXplPXt0aGlzLmRpc2FibGVDb2x1bW5GcmVlemV9XG5cdFx0XHRcdGVuYWJsZVBhc3RlPXt0aGlzLmVuYWJsZVBhc3RlfVxuXHRcdFx0XHRyb3dDb3VudE1vZGU9e3RoaXMucm93Q291bnRNb2RlfVxuXHRcdFx0XHRyb3dDb3VudD17dGhpcy5yb3dDb3VudH1cblx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuY29udGV4dFBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0c2VsZWN0aW9uQ2hhbmdlPXt0aGlzLnNlbGVjdGlvbkNoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRsaXN0QmluZGluZ0NoYW5nZT17dGhpcy5saXN0QmluZGluZ0NoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRyZWFkT25seT17dGhpcy5yZWFkT25seX1cblx0XHRcdFx0c2VsZWN0aW9uTW9kZT17dGhpcy5zZWxlY3Rpb25Nb2RlfVxuXHRcdFx0XHR1c2VDb25kZW5zZWRMYXlvdXQ9e3RoaXMudXNlQ29uZGVuc2VkTGF5b3V0fVxuXHRcdFx0XHR0eXBlPXt0aGlzLnR5cGV9XG5cdFx0XHRcdGZpbHRlckJhcj17dGhpcy5maWx0ZXJCYXJ9XG5cdFx0XHRcdGVtcHR5Um93c0VuYWJsZWQ9e3RoaXMuZ2V0RW1wdHlSb3dzRW5hYmxlZCgpIGFzIHVua25vd24gYXMgYm9vbGVhbn1cblx0XHRcdFx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPXt0aGlzLmVuYWJsZUF1dG9Db2x1bW5XaWR0aH1cblx0XHRcdFx0YmVmb3JlUmViaW5kVGFibGU9e3RoaXMuYmVmb3JlUmViaW5kVGFibGUgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI9e3RoaXMud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJ9XG5cdFx0XHRcdG1vZGVGb3JOb0RhdGFNZXNzYWdlPXt0aGlzLm1vZGVGb3JOb0RhdGFNZXNzYWdlfVxuXHRcdFx0XHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGg9e3RoaXMuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPy5nZXRQYXRoKCl9XG5cdFx0XHRcdGRpc3BsYXlTZWdtZW50ZWRCdXR0b249e3RoaXMuZGlzcGxheVNlZ21lbnRlZEJ1dHRvbn1cblx0XHRcdFx0ZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzPXt0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc31cblx0XHRcdFx0ZW5hYmxlU2VsZWN0QWxsPXt0aGlzLmVuYWJsZVNlbGVjdEFsbH1cblx0XHRcdFx0aW5NdWx0aVZpZXc9e3RoaXMuaW5NdWx0aVZpZXd9XG5cdFx0XHRcdHNlbGVjdGlvbkxpbWl0PXt0aGlzLnNlbGVjdGlvbkxpbWl0fVxuXHRcdFx0XHRjb25kZW5zZWRUYWJsZUxheW91dD17dGhpcy5jb25kZW5zZWRUYWJsZUxheW91dH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjdXN0b21EYXRhOiBjcmVhdGVDdXN0b21EYXRhKFwidGFibGVBUElMb2NhbElkXCIsIHRoaXMuX2FwaUlkKSxcblx0XHRcdFx0XHRjcmVhdGlvbk1vZGUsXG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogPEZsZXhJdGVtRGF0YSBtYXhXaWR0aD1cIjEwMCVcIiAvPixcblx0XHRcdFx0XHRjb250ZW50OiBnZXRNRENUYWJsZVRlbXBsYXRlKHRhYmxlUHJvcHMsIHtcblx0XHRcdFx0XHRcdG1ldGFQYXRoOiB0aGlzLm1ldGFQYXRoLFxuXHRcdFx0XHRcdFx0Y29udmVydGVkTWV0YWRhdGE6IHRoaXMuY29udmVydGVkTWV0YWRhdGEsXG5cdFx0XHRcdFx0XHRtZXRhTW9kZWw6IHRoaXMubWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0aGFuZGxlclByb3ZpZGVyLFxuXHRcdFx0XHRcdFx0YXBwQ29tcG9uZW50OiB0aGlzLmFwcENvbXBvbmVudFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH19XG5cdFx0XHQ8L1RhYmxlQVBJPlxuXHRcdCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF5R0EsU0FBU0EsZ0JBQWdCQSxDQUFDQyxJQUFhLEVBQUVDLElBQVksRUFBc0I7SUFDMUUsT0FBT0QsSUFBSSxDQUFDRSxZQUFZLENBQUNELElBQUksQ0FBQyxJQUFJRSxTQUFTO0VBQzVDOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNDLGlDQUFpQ0EsQ0FBQ0osSUFBYSxFQUFFQyxJQUFZLEVBQVc7SUFDaEYsTUFBTUksY0FBYyxHQUFHTCxJQUFJLENBQUNFLFlBQVksQ0FBQ0QsSUFBSSxDQUFDO0lBQzlDLFFBQVFJLGNBQWM7TUFDckIsS0FBSyxJQUFJO01BQ1QsS0FBSyxNQUFNO1FBQ1YsT0FBTyxJQUFJO01BQ1osS0FBSyxPQUFPO1FBQ1gsT0FBTyxLQUFLO01BQ2I7UUFDQyxPQUFPQSxjQUFjO01BQXdCO0lBQy9DO0VBQ0Q7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTQyx5QkFBeUJBLENBQUNDLEdBQTRCLEVBQVE7SUFDdEVDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDRixHQUFHLENBQUMs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
|
|
1606
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzYWZlR2V0QXR0cmlidXRlIiwibm9kZSIsIm5hbWUiLCJnZXRBdHRyaWJ1dGUiLCJ1bmRlZmluZWQiLCJnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUiLCJlbmFibGVtZW50QXR0ciIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInBhcnNlQWN0aW9uRnJvbUVsZW1lbnQiLCJhY3Rpb25Ob2RlIiwiY29tbW9uUHJvcGVydGllcyIsImdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMiLCJsb2NhbE5hbWUiLCJ0ZXh0IiwicHJlc3MiLCJyZXF1aXJlc1NlbGVjdGlvbiIsImVuYWJsZUF1dG9TY3JvbGwiLCJuYXZpZ2F0ZVRvSW5zdGFuY2UiLCJkZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJhY3Rpb24iLCJyZXBsYWNlIiwiZW5hYmxlZCIsInZpc2libGUiLCJjb21tYW5kIiwiZW5hYmxlT25TZWxlY3QiLCJwbGFjZW1lbnQiLCJhbmNob3IiLCJfdHlwZSIsIk51bWJlciIsInBhcnNlSW50Iiwic2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25PYmplY3QiLCJpbmNsdWRlcyIsImdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMiLCJkZWZhdWx0QWN0aW9uIiwic2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzIiwiZWxlbWVudCIsImN1c3RvbUNvbnRlbnQiLCJjaGlsZHJlbiIsIm91dGVySFRNTCIsInZpc2libGVGaWVsZHMiLCJzcGxpdCIsImlnbm9yZWRGaWVsZHMiLCJvcGVyYXRpb25Hcm91cGluZ01vZGUiLCJzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJxdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJwYXRocyIsInNob3dDb3VudHMiLCJzZXRDdXN0b21BY3Rpb25PdmVyZmxvd0dyb3VwUHJvcGVydGllcyIsIm92ZXJGbG93R3JvdXAiLCJvdmVyZmxvd0dyb3VwIiwic2hvd1NlcGFyYXRvciIsImFjdGlvbnNJbk1lbnUiLCJBcnJheSIsInByb3RvdHlwZSIsInNsaWNlIiwiYXBwbHkiLCJtYXAiLCJzdWJBY3Rpb24iLCJzZXRBdHRyaWJ1dGUiLCJhY3Rpb25zIiwiZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMiLCJjaGlsZENvbHVtbiIsIndpZHRoIiwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIiLCJpbXBvcnRhbmNlIiwiaG9yaXpvbnRhbEFsaWduIiwiYXZhaWxhYmlsaXR5IiwiZGlzYWJsZUV4cG9ydCIsImV4cG9ydFNldHRpbmdzIiwicGFyc2VFeHBvcnRTZXR0aW5ncyIsInNldEN1c3RvbUNvbHVtblByb3BlcnRpZXMiLCJoZWFkZXIiLCJ0b29sdGlwIiwidGVtcGxhdGUiLCJnZXRDb2x1bW5UZW1wbGF0ZSIsInByb3BlcnRpZXMiLCJyZXF1aXJlZCIsInBhcnNlU2ltcGxlQWdncmVnYXRpb24iLCJ3cmFwIiwidHlwZSIsInByb3BlcnR5IiwidGV4dEFsaWduIiwibGFiZWwiLCJ0cnVlVmFsdWUiLCJmYWxzZVZhbHVlIiwidmFsdWVNYXAiLCJhZ2dyZWdhdGlvbiIsImdldEFnZ3JlZ2F0aW9uIiwiaSIsImxlbmd0aCIsImNoaWxkIiwiaXRlbSIsIm5vZGVOYW1lIiwiZW5kc1dpdGgiLCJhZ2dyZWdhdGlvbk5hbWUiLCJyZXN1bHQiLCJnZXRBdHRyaWJ1dGVOYW1lcyIsInZhbHVlIiwiVGFibGVCbG9jayIsIl9kZWMiLCJkZWZpbmVCdWlsZGluZ0Jsb2NrIiwibmFtZXNwYWNlIiwicHVibGljTmFtZXNwYWNlIiwicmV0dXJuVHlwZXMiLCJfZGVjMiIsImJsb2NrQXR0cmlidXRlIiwidW5kZXJseWluZ1R5cGUiLCJleHBlY3RlZFR5cGVzIiwiZXhwZWN0ZWRBbm5vdGF0aW9ucyIsImlzUHVibGljIiwiX2RlYzMiLCJiaW5kYWJsZSIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsImFsbG93ZWRWYWx1ZXMiLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJpc0Fzc29jaWF0aW9uIiwiX2RlYzI1IiwiX2RlYzI2IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiX2RlYzMyIiwiX2RlYzMzIiwiX2RlYzM0IiwiX2RlYzM1IiwiX2RlYzM2IiwiX2RlYzM3IiwiX2RlYzM4IiwiX2RlYzM5IiwiX2RlYzQwIiwiX2RlYzQxIiwiX2RlYzQyIiwiX2RlYzQzIiwiX2RlYzQ0IiwiX2RlYzQ1IiwiX2RlYzQ2IiwiX2RlYzQ3IiwiX2RlYzQ4IiwidmFsaWRhdGUiLCJjcmVhdGlvbk9wdGlvbnNJbnB1dCIsIkVycm9yIiwiX2RlYzQ5IiwiYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24iLCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsIiwiX2RlYzUwIiwiYmxvY2tBZ2dyZWdhdGlvbiIsImFsdFR5cGVzIiwiaGFzVmlydHVhbE5vZGUiLCJtdWx0aXBsZSIsInByb2Nlc3NBZ2dyZWdhdGlvbnMiLCJfZGVjNTEiLCJza2lwS2V5IiwiX2RlYzUyIiwiaXNEZWZhdWx0IiwiX2RlYzUzIiwiX2RlYzU0IiwicmVhbGx5U2tpcEtleSIsIl9kZWM1NSIsImJsb2NrRXZlbnQiLCJfZGVjNTYiLCJfZGVjNTciLCJfZGVjNTgiLCJfZGVjNTkiLCJfZGVjNjAiLCJfZGVjNjEiLCJfZGVjNjIiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX1RhYmxlQmxvY2siLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwidGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIl9kZXNjcmlwdG9yMTUiLCJfZGVzY3JpcHRvcjE2IiwiX2Rlc2NyaXB0b3IxNyIsIl9kZXNjcmlwdG9yMTgiLCJfZGVzY3JpcHRvcjE5IiwiX2Rlc2NyaXB0b3IyMCIsIl9kZXNjcmlwdG9yMjEiLCJfZGVzY3JpcHRvcjIyIiwiX2Rlc2NyaXB0b3IyMyIsIl9kZXNjcmlwdG9yMjQiLCJfZGVzY3JpcHRvcjI1IiwiX2Rlc2NyaXB0b3IyNiIsIl9kZXNjcmlwdG9yMjciLCJfZGVzY3JpcHRvcjI4IiwiX2Rlc2NyaXB0b3IyOSIsIl9kZXNjcmlwdG9yMzAiLCJfZGVzY3JpcHRvcjMxIiwiX2Rlc2NyaXB0b3IzMiIsIl9kZXNjcmlwdG9yMzMiLCJfZGVzY3JpcHRvcjM0IiwiX2Rlc2NyaXB0b3IzNSIsIl9kZXNjcmlwdG9yMzYiLCJfZGVzY3JpcHRvcjM3IiwiX2Rlc2NyaXB0b3IzOCIsIl9kZXNjcmlwdG9yMzkiLCJfZGVzY3JpcHRvcjQwIiwiX2Rlc2NyaXB0b3I0MSIsIl9kZXNjcmlwdG9yNDIiLCJfZGVzY3JpcHRvcjQzIiwiX2Rlc2NyaXB0b3I0NCIsIl9kZXNjcmlwdG9yNDUiLCJfZGVzY3JpcHRvcjQ2IiwiX2Rlc2NyaXB0b3I0NyIsIl9kZXNjcmlwdG9yNDgiLCJfZGVzY3JpcHRvcjQ5IiwiX2Rlc2NyaXB0b3I1MCIsIl9kZXNjcmlwdG9yNTEiLCJfZGVzY3JpcHRvcjUyIiwiX2Rlc2NyaXB0b3I1MyIsIl9kZXNjcmlwdG9yNTQiLCJfZGVzY3JpcHRvcjU1IiwiX2Rlc2NyaXB0b3I1NiIsIl9kZXNjcmlwdG9yNTciLCJfZGVzY3JpcHRvcjU4IiwiX2Rlc2NyaXB0b3I1OSIsIl9kZXNjcmlwdG9yNjAiLCJfZGVzY3JpcHRvcjYxIiwiY29udGV4dE9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwidGFibGVEZWZpbml0aW9uIiwiY3JlYXRlVGFibGVEZWZpbml0aW9uIiwidGFibGVEZWZpbml0aW9uQ29udGV4dCIsIk1hY3JvQVBJIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb252ZXJ0ZWRNZXRhZGF0YSIsImNvbnZlcnRlZFR5cGVzIiwibWV0YU1vZGVsIiwibW9kZWxzIiwiY29sbGVjdGlvbkVudGl0eSIsInJlc29sdmVQYXRoIiwiYW5ub3RhdGlvbiIsImNvbGxlY3Rpb24iLCJ0YXJnZXQiLCJhcHBDb21wb25lbnQiLCJzZXRVcElkIiwiY3JlYXRpb25Nb2RlIiwiY3JlYXRlIiwibW9kZSIsImNyZWF0ZUF0RW5kIiwiYXBwZW5kIiwicmVhZE9ubHkiLCJkaXNwbGF5TW9kZSIsImNvbnRyb2wiLCJUYWJsZUFQSSIsInVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5IiwidXNlQmFzaWNTZWFyY2giLCJmaWx0ZXJCYXIiLCJnZW5lcmF0ZSIsImNvbnRlbnRJZCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJnZXRWaXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiTG9nIiwiZXJyb3IiLCJpc0Fubm90YXRpb25PZlRlcm0iLCJ0YXJnZXRPYmplY3QiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwidmlzdWFsaXphdGlvbnMiLCJnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uIiwidGVybSIsImxpbmVJdGVtVml6IiwiZmluZCIsInZpeiIsInZpc3VhbGl6YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsIl9wcm90byIsImdldFRhYmxlU2V0dGluZ3MiLCJ0YWJsZVNldHRpbmdzIiwiYWRkU2V0dGluZyIsImVuYWJsZUV4cG9ydCIsImV4cG9ydEZpbGVOYW1lIiwiZXhwb3J0U2hlZXROYW1lIiwic2VsZWN0aW9uTGltaXQiLCJjb25kZW5zZWRUYWJsZUxheW91dCIsImV4cG9ydFJlcXVlc3RTaXplIiwiZnJvemVuQ29sdW1uQ291bnQiLCJkaXNhYmxlQ29sdW1uRnJlZXplIiwicm93Q291bnRNb2RlIiwicm93Q291bnQiLCJlbmFibGVGdWxsU2NyZWVuIiwiZW5hYmxlU2VsZWN0QWxsIiwiZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzIiwiZW5hYmxlUGFzdGUiLCJkaXNhYmxlQ29weVRvQ2xpcGJvYXJkIiwic2Nyb2xsVGhyZXNob2xkIiwidGhyZXNob2xkIiwicG9waW5MYXlvdXQiLCJzZWxlY3Rpb25Nb2RlIiwicXVpY2tGaWx0ZXJzIiwicGF0aCIsImNyZWF0aW9uRmllbGRzIiwiaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSIsIm91dGJvdW5kIiwiZW50cmllcyIsIm1hc3NFZGl0IiwiZW5hYmxlTWFzc0VkaXQiLCJjb25maWd1cmF0aW9uIiwiam9pbiIsInRhYmxlIiwiaW5pdGlhbENvbnZlcnRlckNvbnRleHQiLCJnZXRDb252ZXJ0ZXJDb250ZXh0IiwiZ2V0UGF0aCIsInZpc3VhbGl6YXRpb25QYXRoIiwiZXh0cmFNYW5pZmVzdFNldHRpbmdzIiwib3ZlcmZsb3dHcm91cHMiLCJjcmVhdGVBY3Rpb25PdmVyZmxvd0dyb3VwcyIsImNyZWF0ZUFjdGlvbnNGcm9tTWFuaWZlc3QiLCJjb2x1bW5zIiwiY3JlYXRlQ29sdW1uc0Zvck1hbmlmZXN0IiwiZXh0cmFQYXJhbXMiLCJ2aWV3RGF0YSIsIm1lcmdlIiwiYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgiLCJzdk9iamVjdFBhdGgiLCJ2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiIsImdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiIsImluTXVsdGlWaWV3IiwiZ2V0UmVsYXRpdmVBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImdldEVudGl0eVR5cGUiLCJpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50IiwidXNlQ29uZGVuc2VkTGF5b3V0IiwiaXNNYWNyb09yTXVsdGlwbGVWaWV3IiwiVmlzdWFsaXphdGlvblR5cGUiLCJUYWJsZSIsImFjdGlvbnNTZXR0aW5ncyIsImFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCIsInBvc2l0aW9uIiwiaXNBSU9wZXJhdGlvbiIsInByaW9yaXR5IiwiZ3JvdXAiLCJfX25vV3JhcCIsImFmdGVyRXhlY3V0aW9uIiwidmFsdWVzIiwibWVudSIsIm92ZXJmbG93R3JvdXBzU2V0dGluZ3MiLCJhY3Rpb25PdmVyZmxvd0dyb3VwcyIsImlzQmxvY2tDb2x1bW4iLCJibG9jayIsImNvbHVtblNldHRpbmdzIiwiY29sdW1uIiwiY3VzdG9tQ29sdW1uRGVmaW5pdGlvbiIsImlkIiwiX2FwaUlkIiwiZ2V0Q29udGVudElkIiwiYXBpSWQiLCJfZ2V0RW50aXR5VHlwZSIsImVudGl0eVR5cGUiLCJ0YXJnZXRUeXBlIiwiZ2V0RW1wdHlSb3dzRW5hYmxlZCIsIkNyZWF0aW9uTW9kZSIsIklubGluZUNyZWF0aW9uUm93cyIsImEiLCJTdGFuZGFyZEFjdGlvbktleXMiLCJDcmVhdGUiLCJnZXRUZW1wbGF0ZSIsInRhYmxlUHJvcHMiLCJvdmVycmlkZVJvd1ByZXNzIiwicm93UHJlc3MiLCJoYW5kbGVyUHJvdmlkZXIiLCJUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyIiwiZ2V0TW9kZWwiLCJfanN4IiwiVGFibGVDcmVhdGlvbk9wdGlvbnMiLCJiaW5kaW5nIiwiaGVhZGVyTGV2ZWwiLCJoZWFkZXJTdHlsZSIsImhlYWRlclZpc2libGUiLCJ0YWJUaXRsZSIsImlzU2VhcmNoYWJsZSIsImJ1c3kiLCJpbml0aWFsTG9hZCIsImlzQWxwIiwiZmllbGRNb2RlIiwicGVyc29uYWxpemF0aW9uIiwidmFyaWFudFNhdmVkIiwidmFyaWFudFNlbGVjdGVkIiwic2VnbWVudGVkQnV0dG9uUHJlc3MiLCJ2YXJpYW50TWFuYWdlbWVudCIsImVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWUiLCJzZWxlY3Rpb25DaGFuZ2UiLCJsaXN0QmluZGluZ0NoYW5nZSIsImVtcHR5Um93c0VuYWJsZWQiLCJlbmFibGVBdXRvQ29sdW1uV2lkdGgiLCJiZWZvcmVSZWJpbmRUYWJsZSIsIm1vZGVGb3JOb0RhdGFNZXNzYWdlIiwiZGlzcGxheVNlZ21lbnRlZEJ1dHRvbiIsImNvbnRlbnQiLCJnZXRNRENUYWJsZVRlbXBsYXRlIiwiQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUYWJsZS5ibG9jay50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb252ZXJ0ZWRNZXRhZGF0YSwgRW50aXR5U2V0LCBFbnRpdHlUeXBlLCBOYXZpZ2F0aW9uUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0TGluZUl0ZW0sXG5cdFByZXNlbnRhdGlvblZhcmlhbnQsXG5cdFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQsXG5cdFNlbGVjdGlvblZhcmlhbnQsXG5cdFNlbGVjdGlvblZhcmlhbnRUeXBlXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblRlcm1zIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgbWVyZ2UgZnJvbSBcInNhcC9iYXNlL3V0aWwvbWVyZ2VcIjtcbmltcG9ydCB7IHR5cGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB7XG5cdGJsb2NrQWdncmVnYXRpb24sXG5cdGJsb2NrQXR0cmlidXRlLFxuXHRibG9ja0V2ZW50LFxuXHRkZWZpbmVCdWlsZGluZ0Jsb2NrXG59IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHtcblx0QXZhaWxhYmlsaXR5VHlwZSxcblx0Q3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uLFxuXHRDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZSxcblx0SG9yaXpvbnRhbEFsaWduLFxuXHRJbXBvcnRhbmNlLFxuXHRNYW5pZmVzdEFjdGlvbixcblx0T3ZlcmZsb3dHcm91cHNDb25maWd1cmF0aW9uLFxuXHRUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUsIFZpc3VhbGl6YXRpb25UeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IENoYXJ0VmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyBWaXN1YWxpemF0aW9uQW5kUGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHtcblx0Z2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uLFxuXHRnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVCZWhhdmlvciwgVGFibGVUeXBlLCBUYWJsZVZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB7IFN0YW5kYXJkQWN0aW9uS2V5cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi90YWJsZS9TdGFuZGFyZEFjdGlvbnNcIjtcbmltcG9ydCB7IHR5cGUgUGxhY2VtZW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVGVybSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb2xsZWN0aW9uQmluZGluZ0luZm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29sbGVjdGlvbkJpbmRpbmdJbmZvXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSB7IFRhYmxlQmxvY2tQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvTWRjVGFibGVUZW1wbGF0ZVwiO1xuaW1wb3J0IHsgZ2V0TURDVGFibGVUZW1wbGF0ZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL01kY1RhYmxlVGVtcGxhdGVcIjtcbmltcG9ydCB0eXBlIE92ZXJmbG93R3JvdXAgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvT3ZlcmZsb3dHcm91cHNcIjtcbmltcG9ydCBUYWJsZUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUFQSVwiO1xuaW1wb3J0IFRhYmxlQ3JlYXRpb25PcHRpb25zIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQ3JlYXRpb25PcHRpb25zXCI7XG5pbXBvcnQgdHlwZSB7IE92ZXJmbG93VG9vbGJhclByaW9yaXR5IH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHsgdHlwZSBUaXRsZUxldmVsIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIHsgRXhwb3J0U2V0dGluZ3MsIFRhYmxlJFNlbGVjdGlvbkNoYW5nZUV2ZW50UGFyYW1ldGVycyB9IGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IFJvd0FjdGlvbkl0ZW0kUHJlc3NFdmVudFBhcmFtZXRlcnMgfSBmcm9tIFwic2FwL3VpL21kYy90YWJsZS9Sb3dBY3Rpb25JdGVtXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cE92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBbmFseXRpY2FsQ29uZmlndXJhdGlvbiBmcm9tIFwiLi9BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uT3ZlcnJpZGUgZnJvbSBcIi4vQ29sdW1uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIE1hc3NFZGl0IGZyb20gXCIuL01hc3NFZGl0XCI7XG5pbXBvcnQgdHlwZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSBcIi4vUXVpY2tWYXJpYW50U2VsZWN0aW9uXCI7XG5pbXBvcnQgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciBmcm9tIFwiLi9UYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyXCI7XG5cbnR5cGUgQmxvY2tDb2x1bW4gPSBQYXJ0aWFsPE9taXQ8Q29sdW1uLCBcInRlbXBsYXRlXCIgfCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdGV4cG9ydFNldHRpbmdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgb2JqZWN0PiB8IG51bGw7XG5cdF90eXBlOiBcIkNvbHVtblwiO1xufTtcblxudHlwZSBCbG9ja0NvbHVtbk92ZXJyaWRlID0gUGFydGlhbDxPbWl0PENvbHVtbk92ZXJyaWRlLCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0ZXhwb3J0U2V0dGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgbnVsbDtcblx0X3R5cGU6IFwiQ29sdW1uT3ZlcnJpZGVcIjtcbn07XG50eXBlIEJsb2NrTWFzc0VkaXQgPSBQYXJ0aWFsPE9taXQ8TWFzc0VkaXQsIFwiY3VzdG9tQ29udGVudFwiPj4gJiB7IGN1c3RvbUNvbnRlbnQ/OiBzdHJpbmc7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uID0gUHJvcGVydGllc09mPFF1aWNrVmFyaWFudFNlbGVjdGlvbj4gJiB7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrT3ZlcmZsb3dHcm91cCA9IFByb3BlcnRpZXNPZjxPdmVyZmxvd0dyb3VwPiAmIHsga2V5OiBzdHJpbmcgfTtcbnR5cGUgQmxvY2tBY3Rpb24gPSBQcm9wZXJ0aWVzT2Y8T21pdDxBY3Rpb24sIFwicHJlc3NcIj4+ICYgeyBfdHlwZTogXCJBY3Rpb25cIjsgcHJlc3M6IHN0cmluZyB9O1xudHlwZSBCbG9ja0FjdGlvbkdyb3VwID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uR3JvdXAsIFwiYWN0aW9uc1wiPj4gJiB7XG5cdF90eXBlOiBcIkFjdGlvbkdyb3VwXCI7XG5cdGFjdGlvbnM6IChCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpW107XG59O1xudHlwZSBCbG9ja0FjdGlvbk92ZXJyaWRlID0gUHJvcGVydGllc09mPEFjdGlvbk92ZXJyaWRlPiAmIHsgX3R5cGU6IFwiQWN0aW9uT3ZlcnJpZGVcIiB9O1xudHlwZSBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGUgPSBQcm9wZXJ0aWVzT2Y8T21pdDxBY3Rpb25Hcm91cE92ZXJyaWRlLCBcImFjdGlvbnNcIj4+ICYge1xuXHRfdHlwZTogXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCI7XG5cdGFjdGlvbnM6IChCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpW107XG59O1xudHlwZSBDb21tb25DdXN0b21BY3Rpb24gPSB7XG5cdGtleTogc3RyaW5nO1xuXHRlbmFibGVkOiBib29sZWFuO1xuXHR2aXNpYmxlOiBib29sZWFuO1xuXHRjb21tYW5kOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGVuYWJsZU9uU2VsZWN0OiBcInNpbmdsZVwiIHwgXCJtdWx0aVwiIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRpc0FJT3BlcmF0aW9uPzogYm9vbGVhbjtcblx0cHJpb3JpdHk/OiBPdmVyZmxvd1Rvb2xiYXJQcmlvcml0eTtcblx0Z3JvdXA/OiBudW1iZXI7XG5cdG92ZXJmbG93R3JvdXA/OiBudW1iZXI7XG5cdF90eXBlOiBcIkFjdGlvblwiIHwgXCJBY3Rpb25PdmVycmlkZVwiO1xufTtcbmZ1bmN0aW9uIHNhZmVHZXRBdHRyaWJ1dGUobm9kZTogRWxlbWVudCwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIG5vZGUuZ2V0QXR0cmlidXRlKG5hbWUpID8/IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBkeW5hbWljIEJvb2xlYW4gdmFsdWUgb2YgYW4gYXR0cmlidXRlLlxuICogQHBhcmFtIG5vZGUgVGhlIG5vZGUgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgZnJvbVxuICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZVxuICogQHJldHVybnMgVGhlIEJvb2xlYW4gdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZVxuICovXG5mdW5jdGlvbiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUobm9kZTogRWxlbWVudCwgbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdGNvbnN0IGVuYWJsZW1lbnRBdHRyID0gbm9kZS5nZXRBdHRyaWJ1dGUobmFtZSk7XG5cdHN3aXRjaCAoZW5hYmxlbWVudEF0dHIpIHtcblx0XHRjYXNlIG51bGw6XG5cdFx0Y2FzZSBcInRydWVcIjpcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdGNhc2UgXCJmYWxzZVwiOlxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gZW5hYmxlbWVudEF0dHIgYXMgdW5rbm93biBhcyBib29sZWFuOyAvLyBUbyBtYW5hZ2UgYmluZGluZyBleHByZXNzaW9uc1xuXHR9XG59XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwgcHJvcGVydGllcyB3aXRoIHRoZSB2YWx1ZSBvZiB1bmRlZmluZWQgZnJvbSB0aGUgb2JqZWN0LlxuICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIHJlbW92ZSB0aGUgdW5kZWZpbmVkIHByb3BlcnRpZXMgZnJvbVxuICovXG5mdW5jdGlvbiByZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcblx0T2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRpZiAob2JqW2tleV0gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0ZGVsZXRlIG9ialtrZXldO1xuXHRcdH1cblx0fSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYWN0aW9uIHByb3BlcnRpZXMgZnJvbSBhbiBYTUwgbm9kZS5cbiAqIEBwYXJhbSBhY3Rpb25Ob2RlIFRoZSBhY3Rpb24gbm9kZVxuICogQHJldHVybnMgVGhlIGFjdGlvbiBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoYWN0aW9uTm9kZTogRWxlbWVudCk6IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25PdmVycmlkZSB7XG5cdGNvbnN0IGNvbW1vblByb3BlcnRpZXMgPSBnZXRDb21tb25DdXN0b21BY3Rpb25Qcm9wZXJ0aWVzKGFjdGlvbk5vZGUpO1xuXHRpZiAoYWN0aW9uTm9kZS5sb2NhbE5hbWUgPT09IFwiQWN0aW9uXCIpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dGV4dDogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJ0ZXh0XCIpID8/IGNvbW1vblByb3BlcnRpZXMua2V5LFxuXHRcdFx0cHJlc3M6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwcmVzc1wiKSxcblx0XHRcdHJlcXVpcmVzU2VsZWN0aW9uOiBhY3Rpb25Ob2RlLmdldEF0dHJpYnV0ZShcInJlcXVpcmVzU2VsZWN0aW9uXCIpID09PSBcInRydWVcIixcblx0XHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0XHR9IGFzIEJsb2NrQWN0aW9uO1xuXHR9XG5cdHJldHVybiB7XG5cdFx0ZW5hYmxlQXV0b1Njcm9sbDogZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlQXV0b1Njcm9sbFwiKSxcblx0XHRuYXZpZ2F0ZVRvSW5zdGFuY2U6IGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcIm5hdmlnYXRlVG9JbnN0YW5jZVwiKSxcblx0XHRkZWZhdWx0VmFsdWVzRnVuY3Rpb246IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJkZWZhdWx0VmFsdWVzRnVuY3Rpb25cIiksXG5cdFx0Li4uY29tbW9uUHJvcGVydGllc1xuXHR9IGFzIEJsb2NrQWN0aW9uT3ZlcnJpZGU7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tb24gY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIGFjdGlvbiBmcm9tIHRoZSBYTUwgbm9kZS5cbiAqIEBwYXJhbSBhY3Rpb25Ob2RlIFRoZSBhY3Rpb24gZ3JvdXAgbm9kZVxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBnZXRDb21tb25DdXN0b21BY3Rpb25Qcm9wZXJ0aWVzKGFjdGlvbk5vZGU6IEVsZW1lbnQpOiBDb21tb25DdXN0b21BY3Rpb24ge1xuXHRjb25zdCBhY3Rpb246IENvbW1vbkN1c3RvbUFjdGlvbiA9IHtcblx0XHRrZXk6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwia2V5XCIpIS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKSxcblx0XHRlbmFibGVkOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJlbmFibGVkXCIpLFxuXHRcdHZpc2libGU6IGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcInZpc2libGVcIiksXG5cdFx0Y29tbWFuZDogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImNvbW1hbmRcIiksXG5cdFx0ZW5hYmxlT25TZWxlY3Q6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJlbmFibGVPblNlbGVjdFwiKSBhcyBcInNpbmdsZVwiIHwgXCJtdWx0aVwiIHwgdW5kZWZpbmVkLFxuXHRcdHBsYWNlbWVudDogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcInBsYWNlbWVudFwiKSBhcyBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgdW5kZWZpbmVkLFxuXHRcdGFuY2hvcjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImFuY2hvclwiKSxcblx0XHRfdHlwZTogYWN0aW9uTm9kZS5sb2NhbE5hbWUgPT09IFwiQWN0aW9uXCIgPyBcIkFjdGlvblwiIDogXCJBY3Rpb25PdmVycmlkZVwiXG5cdH07XG5cdGlmIChhY3Rpb25Ob2RlPy5nZXRBdHRyaWJ1dGUoXCJpc0FJT3BlcmF0aW9uXCIpKSB7XG5cdFx0YWN0aW9uW1wiaXNBSU9wZXJhdGlvblwiXSA9IGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImlzQUlPcGVyYXRpb25cIik7XG5cdH1cblxuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwicHJpb3JpdHlcIikpIHtcblx0XHRhY3Rpb25bXCJwcmlvcml0eVwiXSA9IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwcmlvcml0eVwiKSBhcyBPdmVyZmxvd1Rvb2xiYXJQcmlvcml0eTtcblx0fVxuXG5cdGlmIChhY3Rpb25Ob2RlPy5nZXRBdHRyaWJ1dGUoXCJncm91cFwiKSkge1xuXHRcdGFjdGlvbltcImdyb3VwXCJdID0gTnVtYmVyLnBhcnNlSW50KHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJncm91cFwiKSA/PyBcIlwiLCAxMCk7XG5cdH1cblxuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwib3ZlcmZsb3dHcm91cFwiKSkge1xuXHRcdGFjdGlvbltcIm92ZXJmbG93R3JvdXBcIl0gPSBOdW1iZXIucGFyc2VJbnQoc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcIm92ZXJmbG93R3JvdXBcIikgPz8gXCJcIiwgMTApO1xuXHR9XG5cblx0cmV0dXJuIGFjdGlvbjtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGFjdGlvbnMgYW5kIGFjdGlvbiBncm91cHMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZVxuICogQHBhcmFtIGFnZ3JlZ2F0aW9uT2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgYWN0aW9uIG9yIGFjdGlvbiBncm91cCBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBzZXRDdXN0b21BY3Rpb25Hcm91cFByb3BlcnRpZXMoXG5cdGFjdGlvbk5vZGU6IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBBY3Rpb24gfCBBY3Rpb25PdmVycmlkZSB8IEFjdGlvbkdyb3VwIHwgQWN0aW9uR3JvdXBPdmVycmlkZVxuKTogQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbkdyb3VwIHwgQmxvY2tBY3Rpb25PdmVycmlkZSB8IEJsb2NrQWN0aW9uR3JvdXBPdmVycmlkZSB7XG5cdGlmIChbXCJBY3Rpb25Hcm91cFwiLCBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIl0uaW5jbHVkZXMoYWN0aW9uTm9kZS5sb2NhbE5hbWUpKSB7XG5cdFx0Y29uc3QgY29tbW9uUHJvcGVydGllcyA9IGdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMoYWN0aW9uTm9kZSwgYWdncmVnYXRpb25PYmplY3QgYXMgQWN0aW9uR3JvdXAgfCBBY3Rpb25Hcm91cE92ZXJyaWRlKTtcblx0XHRpZiAoYWN0aW9uTm9kZS5sb2NhbE5hbWUgPT09IFwiQWN0aW9uR3JvdXBcIikge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dGV4dDogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJ0ZXh0XCIpID8/IGNvbW1vblByb3BlcnRpZXMua2V5LFxuXHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZGVmYXVsdEFjdGlvblwiKSxcblx0XHRcdFx0Li4uY29tbW9uUHJvcGVydGllc1xuXHRcdFx0fSBhcyBCbG9ja0FjdGlvbkdyb3VwO1xuXHRcdH1cblx0XHRyZXR1cm4gY29tbW9uUHJvcGVydGllcyBhcyBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGU7XG5cdH1cblxuXHQvL0FjdGlvbiBvciBBY3Rpb25PdmVycmlkZVxuXHRyZXR1cm4gcGFyc2VBY3Rpb25Gcm9tRWxlbWVudChhY3Rpb25Ob2RlKTtcbn1cblxuY29uc3Qgc2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGVsZW1lbnQ6IEVsZW1lbnQpOiBCbG9ja01hc3NFZGl0IHtcblx0cmV0dXJuIHtcblx0XHRrZXk6IFwiY29uZmlndXJhdGlvblwiLFxuXHRcdGN1c3RvbUNvbnRlbnQ6IGVsZW1lbnQuY2hpbGRyZW5bMF0/Lm91dGVySFRNTCxcblx0XHR2aXNpYmxlRmllbGRzOiBlbGVtZW50LmdldEF0dHJpYnV0ZShcInZpc2libGVGaWVsZHNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRpZ25vcmVkRmllbGRzOiBlbGVtZW50LmdldEF0dHJpYnV0ZShcImlnbm9yZWRGaWVsZHNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRvcGVyYXRpb25Hcm91cGluZ01vZGU6IChlbGVtZW50LmdldEF0dHJpYnV0ZShcIm9wZXJhdGlvbkdyb3VwaW5nTW9kZVwiKSA/PyB1bmRlZmluZWQpIGFzIFwiQ2hhbmdlU2V0XCIgfCBcIklzb2xhdGVkXCIgfCB1bmRlZmluZWRcblx0fTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBxdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gcXVpY2tWYXJpYW50U2VsZWN0aW9uIFRoZSBYTUwgbm9kZSBjb250YWluaW5nIHRoZSBxdWlja1ZhcmlhbnRTZWxlY3Rpb25cbiAqIEByZXR1cm5zIFRoZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmNvbnN0IHNldFF1aWNrVmFyaWFudFNlbGVjdGlvbiA9IGZ1bmN0aW9uIChxdWlja1ZhcmlhbnRTZWxlY3Rpb246IEVsZW1lbnQpOiBCbG9ja1F1aWNrVmFyaWFudFNlbGVjdGlvbiB7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBcInF1aWNrRmlsdGVyc1wiLFxuXHRcdHBhdGhzOiBxdWlja1ZhcmlhbnRTZWxlY3Rpb24uZ2V0QXR0cmlidXRlKFwicGF0aHNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRzaG93Q291bnRzOiBxdWlja1ZhcmlhbnRTZWxlY3Rpb24uZ2V0QXR0cmlidXRlKFwic2hvd0NvdW50c1wiKSA9PT0gXCJ0cnVlXCJcblx0fTtcbn07XG5cbmNvbnN0IHNldEN1c3RvbUFjdGlvbk92ZXJmbG93R3JvdXBQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKG92ZXJGbG93R3JvdXA6IEVsZW1lbnQpOiBCbG9ja092ZXJmbG93R3JvdXAge1xuXHRyZXR1cm4ge1xuXHRcdGtleTogb3ZlckZsb3dHcm91cC5nZXRBdHRyaWJ1dGUoXCJrZXlcIikhLnJlcGxhY2UoXCJJbmxpbmVYTUxfXCIsIFwiXCIpLFxuXHRcdG92ZXJmbG93R3JvdXA6IE51bWJlci5wYXJzZUludChvdmVyRmxvd0dyb3VwLmdldEF0dHJpYnV0ZShcIm92ZXJmbG93R3JvdXBcIikgYXMgc3RyaW5nLCAxMCksXG5cdFx0c2hvd1NlcGFyYXRvcjogb3ZlckZsb3dHcm91cC5nZXRBdHRyaWJ1dGUoXCJzaG93U2VwYXJhdG9yXCIpID09PSBcInRydWVcIlxuXHR9O1xufTtcblxuLyoqXG4gKiBQYXJzZXMgdGhlIGNvbW1vbiBjdXN0b20gcHJvcGVydGllcyBvZiB0aGUgYWN0aW9uIGdyb3VwcyBmcm9tIHRoZSBYTUwgbm9kZS5cbiAqIEBwYXJhbSBhY3Rpb25Ob2RlIFRoZSBhY3Rpb24gZ3JvdXAgbm9kZVxuICogQHBhcmFtIGFnZ3JlZ2F0aW9uT2JqZWN0IFRoZSBhZ2dyZWdhdGlvbiBvYmplY3RcbiAqIEByZXR1cm5zIFRoZSBjb2x1bW4gcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uc0dyb3VwUHJvcGVydGllcyhcblx0YWN0aW9uTm9kZTogRWxlbWVudCxcblx0YWdncmVnYXRpb25PYmplY3Q6IEFjdGlvbkdyb3VwIHwgQWN0aW9uR3JvdXBPdmVycmlkZVxuKToge1xuXHRrZXk6IHN0cmluZztcblx0YWN0aW9uczogKEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25PdmVycmlkZSlbXTtcblx0YW5jaG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdHBsYWNlbWVudDogXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZDtcblx0X3R5cGU6IFwiQWN0aW9uR3JvdXBcIiB8IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiO1xufSB7XG5cdGNvbnN0IGFjdGlvbnNJbk1lbnUgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYWN0aW9uTm9kZS5jaGlsZHJlbikubWFwKChzdWJBY3Rpb246IEVsZW1lbnQpID0+IHtcblx0XHRyZXR1cm4gcGFyc2VBY3Rpb25Gcm9tRWxlbWVudChzdWJBY3Rpb24pO1xuXHR9KTtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5LnJlcGxhY2UoXCJJbmxpbmVYTUxfXCIsIFwiXCIpO1xuXHRhY3Rpb25Ob2RlLnNldEF0dHJpYnV0ZShcImtleVwiLCBhZ2dyZWdhdGlvbk9iamVjdC5rZXkpO1xuXHRyZXR1cm4ge1xuXHRcdGtleTogYWdncmVnYXRpb25PYmplY3Qua2V5LFxuXHRcdGFjdGlvbnM6IGFjdGlvbnNJbk1lbnUsXG5cdFx0YW5jaG9yOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiYW5jaG9yXCIpLFxuXHRcdHBsYWNlbWVudDogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcInBsYWNlbWVudFwiKSBhcyBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgdW5kZWZpbmVkLFxuXHRcdF90eXBlOiBhY3Rpb25Ob2RlLmxvY2FsTmFtZSA9PT0gXCJBY3Rpb25Hcm91cFwiID8gXCJBY3Rpb25Hcm91cFwiIDogXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCJcblx0fTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGNvbW1vbiBjdXN0b20gcHJvcGVydGllcyBvZiB0aGUgY29sdW1ucyBmcm9tIHRoZSBYTUwgbm9kZS5cbiAqIEBwYXJhbSBjaGlsZENvbHVtbiBUaGUgY29sdW1uIG5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdCBUaGUgYWdncmVnYXRpb24gb2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIGdldENvbW1vbkN1c3RvbUNvbHVtbnNQcm9wZXJ0aWVzKFxuXHRjaGlsZENvbHVtbjogRWxlbWVudCxcblx0YWdncmVnYXRpb25PYmplY3Q6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZVxuKToge1xuXHRrZXk6IHN0cmluZztcblx0d2lkdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cdGltcG9ydGFuY2U6IEltcG9ydGFuY2UgfCB1bmRlZmluZWQ7XG5cdGhvcml6b250YWxBbGlnbjogSG9yaXpvbnRhbEFsaWduIHwgdW5kZWZpbmVkO1xuXHRhdmFpbGFiaWxpdHk6IEF2YWlsYWJpbGl0eVR5cGUgfCB1bmRlZmluZWQ7XG5cdHBsYWNlbWVudDogXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZDtcblx0YW5jaG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGV4cG9ydFNldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgdW5kZWZpbmVkIHwgbnVsbDtcblx0ZGlzYWJsZUV4cG9ydDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn0ge1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5rZXkgPSBhZ2dyZWdhdGlvbk9iamVjdC5rZXkhLnJlcGxhY2UoXCJJbmxpbmVYTUxfXCIsIFwiXCIpO1xuXHRjaGlsZENvbHVtbi5zZXRBdHRyaWJ1dGUoXCJrZXlcIiwgYWdncmVnYXRpb25PYmplY3Qua2V5KTtcblx0cmV0dXJuIHtcblx0XHRrZXk6IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSxcblx0XHR3aWR0aDogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJ3aWR0aFwiKSxcblx0XHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcjogY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJcIilcblx0XHRcdD8gY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJcIikgPT09IFwidHJ1ZVwiXG5cdFx0XHQ6IHVuZGVmaW5lZCxcblx0XHRpbXBvcnRhbmNlOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImltcG9ydGFuY2VcIikgYXMgSW1wb3J0YW5jZSB8IHVuZGVmaW5lZCxcblx0XHRob3Jpem9udGFsQWxpZ246IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwiaG9yaXpvbnRhbEFsaWduXCIpIGFzIEhvcml6b250YWxBbGlnbiB8IHVuZGVmaW5lZCxcblx0XHRhdmFpbGFiaWxpdHk6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwiYXZhaWxhYmlsaXR5XCIpIGFzIEF2YWlsYWJpbGl0eVR5cGUgfCB1bmRlZmluZWQsXG5cdFx0cGxhY2VtZW50OiAoc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJwbGFjZW1lbnRcIikgfHwgc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJwb3NpdGlvblBsYWNlbWVudFwiKSkgYXNcblx0XHRcdHwgXCJCZWZvcmVcIlxuXHRcdFx0fCBcIkFmdGVyXCJcblx0XHRcdHwgdW5kZWZpbmVkLCAvLyBwb3NpdGlvblBsYWNlbWVudCBpcyBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXHRcdGFuY2hvcjogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJhbmNob3JcIikgfHwgc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJwb3NpdGlvbkFuY2hvclwiKSwgLy8gcG9zaXRpb25BbmNob3IgaXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblx0XHRkaXNhYmxlRXhwb3J0OiBjaGlsZENvbHVtbi5nZXRBdHRyaWJ1dGUoXCJkaXNhYmxlRXhwb3J0XCIpID8gY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwiZGlzYWJsZUV4cG9ydFwiKSA9PT0gXCJ0cnVlXCIgOiB1bmRlZmluZWQsXG5cdFx0ZXhwb3J0U2V0dGluZ3M6IHBhcnNlRXhwb3J0U2V0dGluZ3MoY2hpbGRDb2x1bW4pXG5cdH07XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjdXN0b20gY29sdW1ucyBmcm9tIHRoZSBYTUwgbm9kZS5cbiAqIEBwYXJhbSBjaGlsZENvbHVtblxuICogQHBhcmFtIGFnZ3JlZ2F0aW9uT2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIHNldEN1c3RvbUNvbHVtblByb3BlcnRpZXMoXG5cdGNoaWxkQ29sdW1uOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlXG4pOiBCbG9ja0NvbHVtbiB8IEJsb2NrQ29sdW1uT3ZlcnJpZGUge1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5rZXkgPSBhZ2dyZWdhdGlvbk9iamVjdC5rZXkhLnJlcGxhY2UoXCJJbmxpbmVYTUxfXCIsIFwiXCIpO1xuXHRjaGlsZENvbHVtbi5zZXRBdHRyaWJ1dGUoXCJrZXlcIiwgYWdncmVnYXRpb25PYmplY3Qua2V5KTtcblx0aWYgKGNoaWxkQ29sdW1uLmxvY2FsTmFtZSA9PT0gXCJDb2x1bW5cIikge1xuXHRcdHJldHVybiB7XG5cdFx0XHQuLi5nZXRDb21tb25DdXN0b21Db2x1bW5zUHJvcGVydGllcyhjaGlsZENvbHVtbiwgYWdncmVnYXRpb25PYmplY3QpLFxuXHRcdFx0aGVhZGVyOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImhlYWRlclwiKSxcblx0XHRcdHRvb2x0aXA6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwidG9vbHRpcFwiKSxcblx0XHRcdHRlbXBsYXRlOiBnZXRDb2x1bW5UZW1wbGF0ZShjaGlsZENvbHVtbiksXG5cdFx0XHRwcm9wZXJ0aWVzOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcInByb3BlcnRpZXNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRcdHJlcXVpcmVkOiBjaGlsZENvbHVtbi5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKSA/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcInJlcXVpcmVkXCIpID09PSBcInRydWVcIiA6IHVuZGVmaW5lZCxcblx0XHRcdF90eXBlOiBjaGlsZENvbHVtbi5sb2NhbE5hbWVcblx0XHR9O1xuXHR9XG5cdHJldHVybiB7XG5cdFx0Li4uZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMoY2hpbGRDb2x1bW4sIGFnZ3JlZ2F0aW9uT2JqZWN0KSxcblx0XHRfdHlwZTogXCJDb2x1bW5PdmVycmlkZVwiXG5cdH07XG59XG5cbmNvbnN0IHBhcnNlRXhwb3J0U2V0dGluZ3MgPSAoZWxlbWVudDogRWxlbWVudCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbiB8IG9iamVjdD4gfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBleHBvcnRTZXR0aW5ncyA9IHBhcnNlU2ltcGxlQWdncmVnYXRpb24oZWxlbWVudCwgXCJleHBvcnRTZXR0aW5nc1wiKTtcblx0aWYgKCFleHBvcnRTZXR0aW5ncykge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIHtcblx0XHR0ZW1wbGF0ZTogZXhwb3J0U2V0dGluZ3MudGVtcGxhdGUsXG5cdFx0d3JhcDogZXhwb3J0U2V0dGluZ3Mud3JhcCA9PT0gXCJ0cnVlXCIsXG5cdFx0dHlwZTogZXhwb3J0U2V0dGluZ3MudHlwZSxcblx0XHRwcm9wZXJ0eTogZXhwb3J0U2V0dGluZ3MucHJvcGVydHk/LnNwbGl0KFwiLFwiKSxcblx0XHR3aWR0aDogZXhwb3J0U2V0dGluZ3Mud2lkdGgsXG5cdFx0dGV4dEFsaWduOiBleHBvcnRTZXR0aW5ncy50ZXh0QWxpZ24sXG5cdFx0bGFiZWw6IGV4cG9ydFNldHRpbmdzLmxhYmVsLFxuXHRcdHRydWVWYWx1ZTogZXhwb3J0U2V0dGluZ3MudHJ1ZVZhbHVlLFxuXHRcdGZhbHNlVmFsdWU6IGV4cG9ydFNldHRpbmdzLmZhbHNlVmFsdWUsXG5cdFx0dmFsdWVNYXA6IGV4cG9ydFNldHRpbmdzLnZhbHVlTWFwXG5cdH07XG59O1xuXG5jb25zdCBnZXRDb2x1bW5UZW1wbGF0ZSA9IChlbGVtZW50OiBFbGVtZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0bGV0IGFnZ3JlZ2F0aW9uID0gZ2V0QWdncmVnYXRpb24oZWxlbWVudCwgXCJ0ZW1wbGF0ZVwiKTtcblx0aWYgKCFhZ2dyZWdhdGlvbikge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgY2hpbGQgPSBlbGVtZW50LmNoaWxkcmVuLml0ZW0oaSk7XG5cdFx0XHRpZiAoY2hpbGQgJiYgIWNoaWxkLm5vZGVOYW1lLmVuZHNXaXRoKFwiZXhwb3J0U2V0dGluZ3NcIikpIHtcblx0XHRcdFx0YWdncmVnYXRpb24gPSBjaGlsZDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhZ2dyZWdhdGlvbj8ub3V0ZXJIVE1MID8/IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwidGVtcGxhdGVcIikgPz8gdW5kZWZpbmVkO1xufTtcblxuY29uc3QgcGFyc2VTaW1wbGVBZ2dyZWdhdGlvbiA9IChlbGVtZW50OiBFbGVtZW50LCBhZ2dyZWdhdGlvbk5hbWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBhZ2dyZWdhdGlvbiA9IGdldEFnZ3JlZ2F0aW9uKGVsZW1lbnQsIGFnZ3JlZ2F0aW9uTmFtZSk7XG5cdGNvbnN0IGNoaWxkID0gYWdncmVnYXRpb24/LmNoaWxkcmVuWzBdO1xuXHRjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblx0aWYgKCFjaGlsZCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0Zm9yIChjb25zdCBuYW1lIG9mIGNoaWxkLmdldEF0dHJpYnV0ZU5hbWVzKCkpIHtcblx0XHRjb25zdCB2YWx1ZSA9IGNoaWxkLmdldEF0dHJpYnV0ZShuYW1lKTtcblx0XHRpZiAodmFsdWUpIHtcblx0XHRcdHJlc3VsdFtuYW1lXSA9IHZhbHVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgZ2V0QWdncmVnYXRpb24gPSAoZWxlbWVudDogRWxlbWVudCwgYWdncmVnYXRpb25OYW1lOiBzdHJpbmcpOiBFbGVtZW50IHwgdW5kZWZpbmVkID0+IHtcblx0bGV0IGFnZ3JlZ2F0aW9uOiBFbGVtZW50IHwgdW5kZWZpbmVkO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRjb25zdCBjaGlsZCA9IGVsZW1lbnQuY2hpbGRyZW4uaXRlbShpKTtcblx0XHRpZiAoY2hpbGQ/Lm5vZGVOYW1lLmVuZHNXaXRoKGFnZ3JlZ2F0aW9uTmFtZSkgPT09IHRydWUpIHtcblx0XHRcdGFnZ3JlZ2F0aW9uID0gY2hpbGQ7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblx0cmV0dXJuIGFnZ3JlZ2F0aW9uO1xufTtcblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayB1c2VkIHRvIGNyZWF0ZSBhIHRhYmxlIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqIDxicj5cbiAqIFVzdWFsbHksIGEgTGluZUl0ZW0sIFByZXNlbnRhdGlvblZhcmlhbnQsIG9yIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgYW5ub3RhdGlvbiBpcyBleHBlY3RlZCwgYnV0IHRoZSBUYWJsZSBidWlsZGluZyBibG9jayBjYW4gYWxzbyBiZSB1c2VkIHRvIGRpc3BsYXkgYW4gRW50aXR5U2V0LlxuICogPGJyPlxuICogSWYgYSBQcmVzZW50YXRpb25WYXJpYW50IGlzIHNwZWNpZmllZCwgdGhlbiBpdCBtdXN0IGhhdmUgVUkuTGluZUl0ZW0gYXMgdGhlIGZpcnN0IHByb3BlcnR5IG9mIHRoZSBWaXN1YWxpemF0aW9ucy5cbiAqIDxicj5cbiAqIElmIGEgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCBpcyBzcGVjaWZpZWQsIHRoZW4gaXQgbXVzdCBjb250YWluIGEgdmFsaWQgUHJlc2VudGF0aW9uVmFyaWFudCB0aGF0IGFsc28gaGFzIGEgVUkuTGluZUl0ZW0gYXMgdGhlIGZpcnN0IHByb3BlcnR5IG9mIHRoZSBWaXN1YWxpemF0aW9ucy5cbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6VGFibGUgaWQ9XCJNeVRhYmxlXCIgbWV0YVBhdGg9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIiAvJmd0O1xuICogPC9wcmU+XG4gKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9idWlsZGluZ0Jsb2Nrcy90YWJsZS90YWJsZURlZmF1bHQgT3ZlcnZpZXcgb2YgVGFibGUgQnVpbGRpbmcgQmxvY2tzfVxuICogQG1peGVzIHNhcC5mZS5tYWNyb3MudGFibGUuVGFibGVBUElcbiAqIEBhdWdtZW50cyBzYXAuZmUubWFjcm9zLk1hY3JvQVBJXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVCdWlsZGluZ0Jsb2NrKHtcblx0bmFtZTogXCJUYWJsZVwiLFxuXHRuYW1lc3BhY2U6IFwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiLFxuXHRwdWJsaWNOYW1lc3BhY2U6IFwic2FwLmZlLm1hY3Jvc1wiLFxuXHRyZXR1cm5UeXBlczogW1wic2FwLmZlLm1hY3Jvcy50YWJsZS5UYWJsZUFQSVwiXVxufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRhYmxlQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2Uge1xuXHQvLyAgKioqKioqKioqKioqKioqIFB1YmxpYyAmIFJlcXVpcmVkIEF0dHJpYnV0ZXMgKioqKioqKioqKioqKioqKioqKipcblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHJlbGF0aXZlIHBhdGggdG8gYSBMaW5lSXRlbSwgUHJlc2VudGF0aW9uVmFyaWFudCBvciBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IGluIHRoZSBtZXRhbW9kZWwsIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbnRleHRQYXRoLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdLFxuXHRcdGV4cGVjdGVkQW5ub3RhdGlvbnM6IFtcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIixcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUHJlc2VudGF0aW9uVmFyaWFudFwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XCJcblx0XHRdLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdG1ldGFQYXRoITogQ29udGV4dDtcblxuXHQvLyAgKioqKioqKioqKioqKioqIFB1YmxpYyBBdHRyaWJ1dGVzICoqKioqKioqKioqKioqKioqKioqXG5cdC8qKlxuXHQgKiBBbiBleHByZXNzaW9uIHRoYXQgYWxsb3dzIHlvdSB0byBjb250cm9sIHRoZSAnYnVzeScgc3RhdGUgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUsIGJpbmRhYmxlOiB0cnVlIH0pXG5cdGJ1c3k/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBwYXRoIG9mIHRoZSBjb250ZXh0IHVzZWQgaW4gdGhlIGN1cnJlbnQgcGFnZSBvciBibG9jay5cblx0ICogVGhpcyBzZXR0aW5nIGlzIGRlZmluZWQgYnkgdGhlIGZyYW1ld29yay5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic3RyaW5nXCIsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXSxcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRjb250ZXh0UGF0aD86IENvbnRleHQ7XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgd2hldGhlciB0aGUgdGFibGUgYWRhcHRzIHRvIHRoZSBjb25kZW5zZWQgbGF5b3V0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGNvbmRlbnNlZFRhYmxlTGF5b3V0PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29udHJvbHMgd2hldGhlciB0aGUgdGFibGUgY2FuIGJlIG9wZW5lZCBpbiBmdWxsc2NyZWVuIG1vZGUgb3Igbm90LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGVuYWJsZUZ1bGxTY3JlZW4/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmUgd2hldGhlciB0aGUgZGF0YSBjb3BpZWQgdG8gdGhlIGNvbXB1dGVkIGNvbHVtbnMgaXMgc2VudCB0byB0aGUgYmFjayBlbmQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcz86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgd2hldGhlciB0aGUgQ2xlYXIgQWxsIGJ1dHRvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cdCAqIFRvIGVuYWJsZSB0aGUgQ2xlYXIgQWxsIGJ1dHRvbiBieSBkZWZhdWx0LCB5b3UgbXVzdCBzZXQgdGhpcyBwcm9wZXJ0eSB0byBmYWxzZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlU2VsZWN0QWxsPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29udHJvbHMgaWYgdGhlIGV4cG9ydCBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZSBpcyBlbmFibGVkIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHB1YmxpYyByZWFkb25seSBlbmFibGVFeHBvcnQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb25maWd1cmVzIHRoZSBmaWxlIG5hbWUgb2YgZXhwb3J0ZWQgdGFibGUuXG5cdCAqIEl0J3MgbGltaXRlZCB0byAzMSBjaGFyYWN0ZXJzLiBJZiB0aGUgbmFtZSBpcyBsb25nZXIsIGl0IHdpbGwgYmUgdHJ1bmNhdGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZXhwb3J0RmlsZU5hbWU/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbmZpZ3VyZXMgdGhlIHNoZWV0IG5hbWUgb2YgZXhwb3J0ZWQgdGFibGUuXG5cdCAqIEl0J3MgbGltaXRlZCB0byAzMSBjaGFyYWN0ZXJzLiBJZiB0aGUgbmFtZSBpcyBsb25nZXIsIGl0IHdpbGwgYmUgdHJ1bmNhdGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZXhwb3J0U2hlZXROYW1lPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBNYXhpbXVtIGFsbG93ZWQgbnVtYmVyIG9mIHJlY29yZHMgdG8gYmUgZXhwb3J0ZWQgaW4gb25lIHJlcXVlc3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZXhwb3J0UmVxdWVzdFNpemU/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJvd3MgdGhhdCBjYW4gYmUgc2VsZWN0ZWQgYXQgb25jZSBpbiB0aGUgdGFibGUuXG5cdCAqIFRoaXMgcHJvcGVydHkgZG9lcyBub3QgYXBwbHkgdG8gcmVzcG9uc2l2ZSB0YWJsZXMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0aW9uTGltaXQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIE51bWJlciBvZiBjb2x1bW5zIHRoYXQgYXJlIGZpeGVkIG9uIHRoZSBsZWZ0LiBPbmx5IGNvbHVtbnMgd2hpY2ggYXJlIG5vdCBmaXhlZCBjYW4gYmUgc2Nyb2xsZWQgaG9yaXpvbnRhbGx5LlxuXHQgKlxuXHQgKiBUaGlzIHByb3BlcnR5IGlzIG5vdCByZWxldmFudCBmb3IgcmVzcG9uc2l2ZSB0YWJsZXNcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBmcm96ZW5Db2x1bW5Db3VudD86IG51bWJlcjtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBudW1iZXIgb2YgZml4ZWQgY29sdW1ucyBjYW4gYmUgY29uZmlndXJlZCBpbiB0aGUgQ29sdW1uIFNldHRpbmdzIGRpYWxvZy5cblx0ICpcblx0ICogVGhpcyBwcm9wZXJ0eSBkb2Vzbid0IGFwcGx5IGZvciByZXNwb25zaXZlIHRhYmxlc1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBkaXNhYmxlQ29sdW1uRnJlZXplPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogSW5kaWNhdGVzIGlmIHRoZSBjb2x1bW4gaGVhZGVyIHNob3VsZCBiZSBhIHBhcnQgb2YgdGhlIHdpZHRoIGNhbGN1bGF0aW9uLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSB3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcj86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgaG93IHRoZSB0YWJsZSBoYW5kbGVzIHRoZSB2aXNpYmxlIHJvd3MuIERvZXMgbm90IGFwcGx5IHRvIFJlc3BvbnNpdmUgdGFibGVzLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYEF1dG9gLCBgRml4ZWRgLCBhbmQgYEludGVyYWN0aXZlYC48YnIvPlxuXHQgKiAtIElmIHNldCB0byBgRml4ZWRgLCB0aGUgdGFibGUgYWx3YXlzIGhhcyBhcyBtYW55IHJvd3MgYXMgZGVmaW5lZCBpbiB0aGUgcm93Q291bnQgcHJvcGVydHkuPGJyLz5cblx0ICogLSBJZiBzZXQgdG8gYEF1dG9gLCB0aGUgbnVtYmVyIG9mIHJvd3MgaXMgY2hhbmdlZCBieSB0aGUgdGFibGUgYXV0b21hdGljYWxseS4gSXQgd2lsbCB0aGVuIGFkanVzdCBpdHMgcm93IGNvdW50IHRvIHRoZSBzcGFjZSBpdCBpcyBhbGxvd2VkIHRvIGNvdmVyIChsaW1pdGVkIGJ5IHRoZSBzdXJyb3VuZGluZyBjb250YWluZXIpIGJ1dCBpdCBjYW5ub3QgaGF2ZSBsZXNzIHRoYW4gZGVmaW5lZCBpbiB0aGUgYHJvd0NvdW50YCBwcm9wZXJ0eS48YnIvPlxuXHQgKiAtIElmIHNldCB0byBgSW50ZXJhY3RpdmVgIHRoZSB0YWJsZSBjYW4gaGF2ZSBhcyBtYW55IHJvd3MgYXMgZGVmaW5lZCBpbiB0aGUgcm93Q291bnQgcHJvcGVydHkuIFRoaXMgbnVtYmVyIG9mIHJvd3MgY2FuIGJlIG1vZGlmaWVkIGJ5IGRyYWdnaW5nIHRoZSByZXNpemVyIGF2YWlsYWJsZSBpbiB0aGlzIG1vZGUuPGJyLz5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiQXV0b1wiLCBcIkZpeGVkXCIsIFwiSW50ZXJhY3RpdmVcIl0sIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgcm93Q291bnRNb2RlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBOdW1iZXIgb2Ygcm93cyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlLiBEb2VzIG5vdCBhcHBseSB0byByZXNwb25zaXZlIHRhYmxlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSByb3dDb3VudD86IG51bWJlcjtcblxuXHQvKipcblx0ICogQ29udHJvbHMgaWYgdGhlIHBhc3RlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlIGlzIGVuYWJsZWQgb3Igbm90LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBlbmFibGVQYXN0ZT86IGJvb2xlYW4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHQvKipcblx0ICogQ29udHJvbHMgaWYgdGhlIGNvcHkgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGFibGUgaXMgZGlzYWJsZWQgb3Igbm90LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0ZGlzYWJsZUNvcHlUb0NsaXBib2FyZD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgaG93IG1hbnkgYWRkaXRpb25hbCBkYXRhIHJlY29yZHMgYXJlIHJlcXVlc3RlZCBmcm9tIHRoZSBiYWNrLWVuZCBzeXN0ZW0gd2hlbiB0aGUgdXNlciBzY3JvbGxzIHZlcnRpY2FsbHkgaW4gdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRzY3JvbGxUaHJlc2hvbGQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIG51bWJlciBvZiByZWNvcmRzIHRvIGJlIGluaXRpYWxseSByZXF1ZXN0ZWQgZnJvbSB0aGUgYmFjayBlbmQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHRocmVzaG9sZD86IG51bWJlcjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgbGF5b3V0IG9wdGlvbnMgb2YgdGhlIHRhYmxlIHBvcGlucy4gT25seSBhcHBsaWVzIHRvIHJlc3BvbnNpdmUgdGFibGVzLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYEJsb2NrYCwgYEdyaWRMYXJnZWAsIGFuZCBgR3JpZFNtYWxsYC48YnIvPlxuXHQgKiAtIGBCbG9ja2A6IFNldHMgYSBibG9jayBsYXlvdXQgZm9yIHJlbmRlcmluZyB0aGUgdGFibGUgcG9waW5zLiBUaGUgZWxlbWVudHMgaW5zaWRlIHRoZSBwb3BpbiBjb250YWluZXIgYXJlIHJlbmRlcmVkIG9uZSBiZWxvdyB0aGUgb3RoZXIuPGJyLz5cblx0ICogLSBgR3JpZExhcmdlYDogU2V0cyBhIGdyaWQgbGF5b3V0IGZvciByZW5kZXJpbmcgdGhlIHRhYmxlIHBvcGlucy4gVGhlIGdyaWQgd2lkdGggZm9yIGVhY2ggdGFibGUgcG9waW4gaXMgY29tcGFyYXRpdmVseSBsYXJnZXIgdGhhbiBHcmlkU21hbGwsIHNvIHRoaXMgbGF5b3V0IGFsbG93cyBsZXNzIGNvbnRlbnQgdG8gYmUgcmVuZGVyZWQgaW4gYSBzaW5nbGUgcG9waW4gcm93Ljxici8+XG5cdCAqIC0gYEdyaWRTbWFsbGA6IFNldHMgYSBncmlkIGxheW91dCBmb3IgcmVuZGVyaW5nIHRoZSB0YWJsZSBwb3BpbnMuIFRoZSBncmlkIHdpZHRoIGZvciBlYWNoIHRhYmxlIHBvcGluIGlzIHNtYWxsLCBzbyB0aGlzIGxheW91dCBhbGxvd3MgbW9yZSBjb250ZW50IHRvIGJlIHJlbmRlcmVkIGluIGEgc2luZ2xlIHBvcGluIHJvdy48YnIvPlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJCbG9ja1wiLCBcIkdyaWRMYXJnZVwiLCBcIkdyaWRTbWFsbFwiXSwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBwb3BpbkxheW91dD86IHN0cmluZztcblxuXHQvKipcblx0ICogSUQgb2YgdGhlIEZpbHRlckJhciBidWlsZGluZyBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSwgaXNBc3NvY2lhdGlvbjogdHJ1ZSB9KVxuXHRmaWx0ZXJCYXI/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgaGVhZGVyIHRleHQgdGhhdCBpcyBzaG93biBpbiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGhlYWRlcj86IHN0cmluZztcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgXCJhcmlhLWxldmVsXCIgb2YgdGhlIHRhYmxlIGhlYWRlclxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzYXAudWkuY29yZS5UaXRsZUxldmVsXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGhlYWRlckxldmVsPzogVGl0bGVMZXZlbDtcblxuXHQvKipcblx0ICogQ29udHJvbHMgaWYgdGhlIGhlYWRlciB0ZXh0IHNob3VsZCBiZSBzaG93biBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRoZWFkZXJWaXNpYmxlPzogYm9vbGVhbjtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpZCE6IHN0cmluZztcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRjb250ZW50SWQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEFkZGl0aW9ubmFsIFNlbGVjdGlvblZhcmlhbnQgdG8gYmUgYXBwbGllZCBvbiB0aGUgdGFibGUgY29udGVudC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdHVuZGVybHlpbmdUeXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uVmFyaWFudFwiXSxcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGg/OiBDb250ZXh0O1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHdoZXRoZXIgdG8gZGlzcGxheSB0aGUgc2VhcmNoIGFjdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGlzU2VhcmNoYWJsZT86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoaWNoIG9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSB0YWJsZSBwZXJzb25hbGl6YXRpb24gZGlhbG9nLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYHRydWVgLCBhbGwgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhpcyBraW5kIG9mIHRhYmxlIGFyZSBlbmFibGVkLjxici8+XG5cdCAqIElmIGl0IGlzIHNldCB0byBgZmFsc2VgLCBwZXJzb25hbGl6YXRpb24gaXMgZGlzYWJsZWQuPGJyLz5cblx0ICogPGJyLz5cblx0ICogWW91IGNhbiBhbHNvIHByb3ZpZGUgYSBtb3JlIGdyYW51bGFyIGNvbnRyb2wgZm9yIHRoZSBwZXJzb25hbGl6YXRpb24gYnkgcHJvdmlkaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgd2l0aCB0aGUgb3B0aW9ucyB5b3Ugd2FudCB0byBiZSBhdmFpbGFibGUuPGJyLz5cblx0ICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOjxici8+XG5cdCAqIC0gU29ydDxici8+XG5cdCAqIC0gQ29sdW1uPGJyLz5cblx0ICogLSBGaWx0ZXI8YnIvPlxuXHQgKiAtIEdyb3VwPGJyLz5cblx0ICogPGJyLz5cblx0ICogVGhlIEdyb3VwIG9wdGlvbiBpcyBvbmx5IGFwcGxpY2FibGUgdG8gYW5hbHl0aWNhbCB0YWJsZXMgYW5kIHJlc3BvbnNpdmUgdGFibGVzLjxici8+XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHBlcnNvbmFsaXphdGlvbj86IHN0cmluZztcblxuXHQvKipcblx0ICogQW4gZXhwcmVzc2lvbiB0aGF0IGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgJ3JlYWQtb25seScgc3RhdGUgb2YgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBJZiB5b3UgZG8gbm90IHNldCBhbnkgZXhwcmVzc2lvbiwgU0FQIEZpb3JpIGVsZW1lbnRzIGhvb2tzIGludG8gdGhlIHN0YW5kYXJkIGxpZmVjeWNsZSB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgc3RhdGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRyZWFkT25seT86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHR5cGUgb2YgdGFibGUgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdGhlIGJ1aWxkaW5nIGJsb2NrIHRvIHJlbmRlciB0aGUgZGF0YS5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBHcmlkVGFibGVgLCBgUmVzcG9uc2l2ZVRhYmxlYCBhbmQgYEFuYWx5dGljYWxUYWJsZWAuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlLCBhbGxvd2VkVmFsdWVzOiBbXCJHcmlkVGFibGVcIiwgXCJSZXNwb25zaXZlVGFibGVcIiwgXCJBbmFseXRpY2FsVGFibGVcIl0gfSlcblx0cmVhZG9ubHkgdHlwZT86IFRhYmxlVHlwZTtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIHRhYmxlIGlzIGRpc3BsYXllZCB3aXRoIGNvbmRlbnNlZCBsYXlvdXQgKHRydWUvZmFsc2UpLiBUaGUgZGVmYXVsdCBzZXR0aW5nIGlzIGBmYWxzZWAuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0dXNlQ29uZGVuc2VkTGF5b3V0PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgc2VsZWN0aW9uIG1vZGUgdG8gYmUgdXNlZCBieSB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgTm9uZWAsIGBTaW5nbGVgLCBgRm9yY2VTaW5nbGVgLCBgTXVsdGlgLCBgRm9yY2VNdWx0aWAgb3IgYEF1dG9gLlxuXHQgKiBJZiBzZXQgdG8gJ1NpbmdsZScsICdNdWx0aScgb3IgJ0F1dG8nLCBTQVAgRmlvcmkgZWxlbWVudHMgaG9va3MgaW50byB0aGUgc3RhbmRhcmQgbGlmZWN5Y2xlIHRvIGRldGVybWluZSB0aGUgY29uc2lzdGVudCBzZWxlY3Rpb24gbW9kZS5cblx0ICogSWYgc2V0IHRvICdGb3JjZVNpbmdsZScgb3IgJ0ZvcmNlTXVsdGknIHlvdXIgY2hvaWNlIHdpbGwgYmUgcmVzcGVjdGVkIGJ1dCB0aGlzIG1pZ2h0IG5vdCByZXNwZWN0IHRoZSBGaW9yaSBndWlkZWxpbmVzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSwgYWxsb3dlZFZhbHVlczogW1wiTm9uZVwiLCBcIlNpbmdsZVwiLCBcIk11bHRpXCIsIFwiQXV0b1wiLCBcIkZvcmNlTXVsdGlcIiwgXCJGb3JjZVNpbmdsZVwiXSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbk1vZGU/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHRoZSBraW5kIG9mIHZhcmlhbnQgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBlbmFibGVkIGZvciB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWUgaXMgYENvbnRyb2xgLjxici8+XG5cdCAqIElmIHNldCB3aXRoIHZhbHVlIGBDb250cm9sYCwgYSB2YXJpYW50IG1hbmFnZW1lbnQgY29udHJvbCBpcyBzZWVuIHdpdGhpbiB0aGUgdGFibGUgYW5kIHRoZSB0YWJsZSBpcyBsaW5rZWQgdG8gdGhpcy48YnIvPlxuXHQgKiBJZiBub3Qgc2V0IHdpdGggYW55IHZhbHVlLCBjb250cm9sIGxldmVsIHZhcmlhbnQgbWFuYWdlbWVudCBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSwgYWxsb3dlZFZhbHVlczogW1wiQ29udHJvbFwiXSB9KVxuXHR2YXJpYW50TWFuYWdlbWVudD86IHN0cmluZztcblxuXHQvKipcblx0ICogQ29tbWEtc2VwYXJhdGVkIHZhbHVlIG9mIGZpZWxkcyB0aGF0IG11c3QgYmUgaWdub3JlZCBpbiB0aGUgT0RhdGEgbWV0YWRhdGEgYnkgdGhlIFRhYmxlIGJ1aWxkaW5nIGJsb2NrLjxicj5cblx0ICogVGhlIHRhYmxlIGJ1aWxkaW5nIGJsb2NrIGlzIG5vdCBnb2luZyB0byBjcmVhdGUgYnVpbHQtaW4gY29sdW1ucyBvciBvZmZlciB0YWJsZSBwZXJzb25hbGl6YXRpb24gZm9yIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZSBvZiBmaWVsZHMgdGhhdCBhcmUgcHJvdmlkZWQgaW4gdGhlIGlnbm9yZWRmaWVsZHMuPGJyPlxuXHQgKiBBbnkgY29sdW1uIHJlZmVyZW5jaW5nIGFuIGlnbm9yZWQgZmllbGQgaXMgdG8gYmUgcmVtb3ZlZC48YnI+XG5cdCAqIEBzaW5jZSAxLjEyNC4wXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGlnbm9yZWRGaWVsZHM/OiBzdHJpbmc7XG5cblx0Ly8gICoqKioqKioqKioqKioqKiBQcml2YXRlIEF0dHJpYnV0ZXMgKioqKioqKioqKioqKioqKioqKipcblx0cHJpdmF0ZSBfYXBpSWQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENoYW5nZXMgdGhlIHNpemUgb2YgdGhlIElsbHVzdHJhdGVkTWVzc2FnZSBpbiB0aGUgdGFibGUsIG9yIHJlbW92ZXMgaXQgY29tcGxldGVseS5cblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b2AsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtQmFzZWAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtRGlhbG9nYCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1Eb3RgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLVNjZW5lYCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1TcG90YCBvciBgdGV4dGAuXG5cdCAqIEBzaW5jZSAxLjEyOS4wXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRhbGxvd2VkVmFsdWVzOiBbXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1BdXRvXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1CYXNlXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1NZWRpdW1cIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLURvdFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtRXh0cmFTbWFsbFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU2NlbmVcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUxhcmdlXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1TcG90XCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1TbWFsbFwiLFxuXHRcdFx0XCJ0ZXh0XCJcblx0XHRdXG5cdH0pXG5cdG1vZGVGb3JOb0RhdGFNZXNzYWdlPzogc3RyaW5nO1xuXG5cdC8vICAqKioqKioqKioqKioqKiogUHJpdmF0ZSBBdHRyaWJ1dGVzICoqKioqKioqKioqKioqKioqKioqXG5cdHByaXZhdGUgcmVhZG9ubHkgY29sbGVjdGlvbkVudGl0eTogRW50aXR5U2V0IHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBoZWFkZXIgc3R5bGUgb2YgdGhlIHRhYmxlIGhlYWRlclxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzYXAudWkuY29yZS5UaXRsZUxldmVsXCIgfSlcblx0aGVhZGVyU3R5bGU/OiBUaXRsZUxldmVsO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgaWYgdGhlIGNvbHVtbiB3aWR0aCBpcyBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRlbmFibGVBdXRvQ29sdW1uV2lkdGg/OiBib29sZWFuID0gdHJ1ZTtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZpZWxkTW9kZSA9IFwiXCI7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0aXNBbHA/OiBib29sZWFuID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIE9OTFkgRk9SIFJFU1BPTlNJVkUgVEFCTEU6IFNldHRpbmcgdG8gZGVmaW5lIHRoZSBjaGVja2JveCBpbiB0aGUgY29sdW1uIGhlYWRlcjogQWxsb3dlZCB2YWx1ZXMgYXJlIGBEZWZhdWx0YCBvciBgQ2xlYXJBbGxgLiBJZiBzZXQgdG8gYERlZmF1bHRgLCB0aGUgc2FwLm0uVGFibGUgY29udHJvbCByZW5kZXJzIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94LCBvdGhlcndpc2UgdGhlIERlc2VsZWN0IEFsbCBidXR0b24gaXMgcmVuZGVyZWQuXG5cdCAqL1xuXHRtdWx0aVNlbGVjdE1vZGU/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFVzZWQgZm9yIGJpbmRpbmcgdGhlIHRhYmxlIHRvIGEgbmF2aWdhdGlvbiBwYXRoLiBPbmx5IHRoZSBwYXRoIGlzIHVzZWQgZm9yIGJpbmRpbmcgcm93cy5cblx0ICovXG5cdG5hdmlnYXRpb25QYXRoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUcnVlIGlmIHRoZSB0YWJsZSBpcyBpbiBhIExpc3RSZXBvcnQgbXVsdGkgdmlld1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0aW5NdWx0aVZpZXc/OiBib29sZWFuO1xuXG5cdHVzZUJhc2ljU2VhcmNoPzogYm9vbGVhbjtcblxuXHR0YWJsZURlZmluaXRpb246IFRhYmxlVmlzdWFsaXphdGlvbjsgLy8gV2UgcmVxdWlyZSB0YWJsZURlZmluaXRpb24gdG8gYmUgdGhlcmUgZXZlbiB0aG91Z2ggaXQgaXMgbm90IGZvcm1hbGx5IHJlcXVpcmVkXG5cblx0dGFibGVEZWZpbml0aW9uQ29udGV4dD86IENvbnRleHQ7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHR0YWJUaXRsZSA9IFwiXCI7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0dmlzaWJsZT86IGJvb2xlYW47XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0ZGlzcGxheVNlZ21lbnRlZEJ1dHRvbj86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEEgc2V0IG9mIG9wdGlvbnMgdGhhdCBjYW4gYmUgY29uZmlndXJlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcIm9iamVjdFwiLFxuXHRcdHVuZGVybHlpbmdUeXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuVGFibGVDcmVhdGlvbk9wdGlvbnNcIixcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHR2YWxpZGF0ZTogZnVuY3Rpb24gKGNyZWF0aW9uT3B0aW9uc0lucHV0OiBUYWJsZUNyZWF0aW9uT3B0aW9ucykge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRjcmVhdGlvbk9wdGlvbnNJbnB1dC5uYW1lICYmXG5cdFx0XHRcdCFbXCJOZXdQYWdlXCIsIFwiSW5saW5lXCIsIFwiSW5saW5lQ3JlYXRpb25Sb3dzXCIsIFwiRXh0ZXJuYWxcIiwgXCJDcmVhdGlvbkRpYWxvZ1wiXS5pbmNsdWRlcyhjcmVhdGlvbk9wdGlvbnNJbnB1dC5uYW1lKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgQWxsb3dlZCB2YWx1ZSAke2NyZWF0aW9uT3B0aW9uc0lucHV0Lm5hbWV9IGZvciBjcmVhdGlvbk1vZGUgZG9lcyBub3QgbWF0Y2hgKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGNyZWF0aW9uT3B0aW9uc0lucHV0O1xuXHRcdH1cblx0fSlcblx0Y3JlYXRpb25Nb2RlOiBQcm9wZXJ0aWVzT2Y8VGFibGVDcmVhdGlvbk9wdGlvbnM+ID0ge307XG5cblx0LyoqXG5cdCAqIEEgc2V0IG9mIG9wdGlvbnMgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB0byBjb250cm9sIHRoZSBhZ2dyZWdhdGlvbiBiZWhhdmlvclxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcIm9iamVjdFwiLFxuXHRcdHVuZGVybHlpbmdUeXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQW5hbHl0aWNhbENvbmZpZ3VyYXRpb25cIixcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHR2YWxpZGF0ZTogZnVuY3Rpb24gKGFuYWx5dGljYWxDb25maWd1cmF0aW9uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuXHRcdFx0aWYgKHR5cGVvZiBhbmFseXRpY2FsQ29uZmlndXJhdGlvbi5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdGFuYWx5dGljYWxDb25maWd1cmF0aW9uLmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwgPSBhbmFseXRpY2FsQ29uZmlndXJhdGlvbi5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID09PSBcInRydWVcIjtcblx0XHRcdH1cblx0XHRcdHJldHVybiBhbmFseXRpY2FsQ29uZmlndXJhdGlvbjtcblx0XHR9XG5cdH0pXG5cdGFuYWx5dGljYWxDb25maWd1cmF0aW9uOiBQcm9wZXJ0aWVzT2Y8QW5hbHl0aWNhbENvbmZpZ3VyYXRpb24+ID0ge307XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBhY3Rpb25zIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25cIixcblx0XHRhbHRUeXBlczogW1wic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cFwiLCBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uT3ZlcnJpZGVcIiwgXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbkdyb3VwT3ZlcnJpZGVcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0aGFzVmlydHVhbE5vZGU6IHRydWUsXG5cdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzXG5cdH0pXG5cdGFjdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uR3JvdXAgfCBCbG9ja0FjdGlvbk92ZXJyaWRlIHwgQmxvY2tBY3Rpb25Hcm91cE92ZXJyaWRlPjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIG1hc3MgZWRpdCBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuTWFzc0VkaXRcIixcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRtdWx0aXBsZTogZmFsc2UsXG5cdFx0c2tpcEtleTogdHJ1ZSxcblx0XHRwcm9jZXNzQWdncmVnYXRpb25zOiBzZXRDdXN0b21NYXNzRWRpdFByb3BlcnRpZXNcblx0fSlcblx0bWFzc0VkaXQ/OiBSZWNvcmQ8c3RyaW5nLCBCbG9ja01hc3NFZGl0PjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIGNvbHVtbnMgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkNvbHVtblwiLFxuXHRcdGFsdFR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLnRhYmxlLkNvbHVtbk92ZXJyaWRlXCJdLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdGhhc1ZpcnR1YWxOb2RlOiB0cnVlLFxuXHRcdGlzRGVmYXVsdDogdHJ1ZSxcblx0XHRwcm9jZXNzQWdncmVnYXRpb25zOiBzZXRDdXN0b21Db2x1bW5Qcm9wZXJ0aWVzXG5cdH0pXG5cdGNvbHVtbnM/OiBSZWNvcmQ8c3RyaW5nLCBCbG9ja0NvbHVtbiB8IEJsb2NrQ29sdW1uT3ZlcnJpZGU+O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5RdWlja1ZhcmlhbnRTZWxlY3Rpb25cIixcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRza2lwS2V5OiB0cnVlLFxuXHRcdG11bHRpcGxlOiBmYWxzZSxcblx0XHRwcm9jZXNzQWdncmVnYXRpb25zOiBzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb25cblx0fSlcblx0cXVpY2tWYXJpYW50U2VsZWN0aW9uPzogUmVjb3JkPHN0cmluZywgQmxvY2tRdWlja1ZhcmlhbnRTZWxlY3Rpb24+O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgb3ZlcmZsb3dHcm91cHMgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLk92ZXJmbG93R3JvdXBcIixcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRza2lwS2V5OiB0cnVlLFxuXHRcdHJlYWxseVNraXBLZXk6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tQWN0aW9uT3ZlcmZsb3dHcm91cFByb3BlcnRpZXNcblx0fSlcblx0YWN0aW9uT3ZlcmZsb3dHcm91cHM/OiBSZWNvcmQ8c3RyaW5nLCBPdmVyZmxvd0dyb3VwPjtcblxuXHRjb252ZXJ0ZWRNZXRhZGF0YTogQ29udmVydGVkTWV0YWRhdGE7XG5cblx0Y29udGV4dE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8TGluZUl0ZW0gfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD47XG5cblx0LyoqXG5cdCAqIEJlZm9yZSBhIHRhYmxlIHJlYmluZCwgYW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJpbmRpbmcuXG5cdCAqXG5cdCAqIFRoZSBldmVudCBjb250YWlucyBhIHBhcmFtZXRlciwgYGNvbGxlY3Rpb25CaW5kaW5nSW5mb2AsIHdoaWNoIGlzIGFuIGluc3RhbmNlIG9mIGBDb2xsZWN0aW9uQmluZGluZ0luZm9BUElgLlxuXHQgKiBJdCBjYW4gYWxzbyBjb250YWluIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgYHF1aWNrRmlsdGVyS2V5YCwgd2hpY2ggaW5kaWNhdGVzIHdoYXQgaXMgdGhlIHF1aWNrIGZpbHRlciBrZXkgKGlmIGFueSkgYmVpbmcgcHJvY2Vzc2VkIGZvciB0aGUgdGFibGUuXG5cdCAqIFRoaXMgYWxsb3dzIHlvdSB0byBtYW5pcHVsYXRlIHRoZSB0YWJsZSdzIGxpc3QgYmluZGluZy5cblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byBhdHRhY2ggZXZlbnQgaGFuZGxlcnMgdG8gdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKiBZb3UgY2FuIHVzZSB0aGlzIGV2ZW50IHRvIGFkZCBzZWxlY3RzLCBhbmQgYWRkIG9yIHJlYWQgdGhlIHNvcnRlcnMgYW5kIGZpbHRlcnMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0cHJpdmF0ZSByZWFkb25seSBiZWZvcmVSZWJpbmRUYWJsZT86IEV2ZW50SGFuZGxlcjxcblx0XHRVSTVFdmVudDx7IGNvbGxlY3Rpb25CaW5kaW5nSW5mbzogQ29sbGVjdGlvbkJpbmRpbmdJbmZvQVBJOyBxdWlja0ZpbHRlcktleT86IHN0cmluZyB9LCBUYWJsZUFQST5cblx0PjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgY2hvb3NlcyBhIHJvdy4gVGhlIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIHJvdyBpcyBjaG9zZW4uXG5cdCAqXG5cdCAqIFlvdSBjYW4gc2V0IHRoaXMgdG8gaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIG1hbnVhbGx5LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHJvd1ByZXNzPzogRXZlbnRIYW5kbGVyPFVJNUV2ZW50PFJvd0FjdGlvbkl0ZW0kUHJlc3NFdmVudFBhcmFtZXRlcnMsIFRhYmxlQVBJPj47XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVhY3QgdG8gdGhlIGNoYW5nZSBldmVudCBvZiB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqXG5cdCAqIEludGVybmFsIG9ubHlcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0bGlzdEJpbmRpbmdDaGFuZ2U/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2hvb3NlcyBhbiBvcHRpb24gb2YgdGhlIHNlZ21lbnRlZCBidXR0b24gaW4gdGhlIEFMUCBWaWV3XG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHNlZ21lbnRlZEJ1dHRvblByZXNzPzogc3RyaW5nO1xuXG5cdEBibG9ja0V2ZW50KClcblx0dmFyaWFudFNhdmVkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGluIHRoZSB0YWJsZSBjaGFuZ2VzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlPzogRXZlbnRIYW5kbGVyPFxuXHRcdFVJNUV2ZW50PFRhYmxlJFNlbGVjdGlvbkNoYW5nZUV2ZW50UGFyYW1ldGVycyAmIHsgc2VsZWN0ZWRDb250ZXh0OiBDb250ZXh0W10gfSwgVGFibGVBUEk+XG5cdD47XG5cblx0QGJsb2NrRXZlbnQoKVxuXHR2YXJpYW50U2VsZWN0ZWQ/OiBzdHJpbmc7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGluaXRpYWxMb2FkPzogYm9vbGVhbjtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50O1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgbWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbDtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPFRhYmxlQmxvY2s+LCBjb250cm9sQ29uZmlndXJhdGlvbjogdW5rbm93biwgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nczogVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BzLCBjb250cm9sQ29uZmlndXJhdGlvbiwgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk7XG5cdFx0Y29uc3QgY29udGV4dE9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8TGluZUl0ZW0gfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0XHR0aGlzLm1ldGFQYXRoLFxuXHRcdFx0dGhpcy5jb250ZXh0UGF0aFxuXHRcdCk7XG5cdFx0dGhpcy5jb250ZXh0T2JqZWN0UGF0aCA9IGNvbnRleHRPYmplY3RQYXRoO1xuXG5cdFx0dGhpcy50YWJsZURlZmluaXRpb24gPSBUYWJsZUJsb2NrLmNyZWF0ZVRhYmxlRGVmaW5pdGlvbih0aGlzLCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKTtcblx0XHR0aGlzLnRhYmxlRGVmaW5pdGlvbkNvbnRleHQgPSBNYWNyb0FQSS5jcmVhdGVCaW5kaW5nQ29udGV4dCh0aGlzLnRhYmxlRGVmaW5pdGlvbiBhcyBvYmplY3QsIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXG5cdFx0dGhpcy5jb252ZXJ0ZWRNZXRhZGF0YSA9IHRoaXMuY29udGV4dE9iamVjdFBhdGguY29udmVydGVkVHlwZXM7XG5cdFx0dGhpcy5tZXRhTW9kZWwgPSB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzLm1vZGVscy5tZXRhTW9kZWw7XG5cdFx0dGhpcy5jb2xsZWN0aW9uRW50aXR5ID0gdGhpcy5jb252ZXJ0ZWRNZXRhZGF0YS5yZXNvbHZlUGF0aCh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pLnRhcmdldCBhcyBFbnRpdHlTZXQ7XG5cdFx0dGhpcy5hcHBDb21wb25lbnQgPSB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzLmFwcENvbXBvbmVudDtcblx0XHR0aGlzLnNldFVwSWQoKTtcblxuXHRcdHRoaXMuY3JlYXRpb25Nb2RlID8/PSB7fTtcblx0XHR0aGlzLmNyZWF0aW9uTW9kZS5uYW1lID8/PSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNyZWF0ZS5tb2RlIGFzIFRhYmxlQ3JlYXRpb25PcHRpb25zW1wibmFtZVwiXTtcblx0XHR0aGlzLmNyZWF0aW9uTW9kZS5jcmVhdGVBdEVuZCA/Pz0gKHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY3JlYXRlIGFzIENyZWF0ZUJlaGF2aW9yKS5hcHBlbmQ7XG5cdFx0Ly8gU3BlY2lhbCBjb2RlIGZvciByZWFkT25seVxuXHRcdC8vIHJlYWRvbmx5ID0gZmFsc2UgLT4gRm9yY2UgZWRpdGFibGVcblx0XHQvLyByZWFkb25seSA9IHRydWUgLT4gRm9yY2UgZGlzcGxheSBtb2RlXG5cdFx0Ly8gcmVhZG9ubHkgPSB1bmRlZmluZWQgLT4gQm91bmQgdG8gZWRpdCBmbG93XG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5yZWFkT25seSA9PT0gdW5kZWZpbmVkICYmXG5cdFx0XHQodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5kaXNwbGF5TW9kZSA9PT0gdHJ1ZSB8fCB0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnJlYWRPbmx5ID09PSB0cnVlKVxuXHRcdCkge1xuXHRcdFx0dGhpcy5yZWFkT25seSA9IHRydWU7XG5cdFx0fVxuXG5cdFx0VGFibGVBUEkudXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkodGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5pZ25vcmVkRmllbGRzLCBbXSwgdGhpcy50YWJsZURlZmluaXRpb24pO1xuXG5cdFx0bGV0IHVzZUJhc2ljU2VhcmNoID0gZmFsc2U7XG5cblx0XHQvLyBOb3RlIGZvciB0aGUgJ2ZpbHRlckJhcicgcHJvcGVydHk6XG5cdFx0Ly8gMS4gSUQgcmVsYXRpdmUgdG8gdGhlIHZpZXcgb2YgdGhlIFRhYmxlLlxuXHRcdC8vIDIuIEFic29sdXRlIElELlxuXHRcdC8vIDMuIElEIHdvdWxkIGJlIGNvbnNpZGVyZWQgaW4gYXNzb2NpYXRpb24gdG8gVGFibGVBUEkncyBJRC5cblx0XHRpZiAoIXRoaXMuZmlsdGVyQmFyKSB7XG5cdFx0XHQvLyBmaWx0ZXJCYXI6IFB1YmxpYyBwcm9wZXJ0eSBmb3IgYnVpbGRpbmcgYmxvY2tzXG5cdFx0XHQvLyBmaWx0ZXJCYXJJZDogT25seSB1c2VkIGFzIEludGVybmFsIHByaXZhdGUgcHJvcGVydHkgZm9yIEZFIHRlbXBsYXRlc1xuXHRcdFx0dGhpcy5maWx0ZXJCYXIgPSBnZW5lcmF0ZShbdGhpcy5jb250ZW50SWQsIFwiU3RhbmRhcmRBY3Rpb25cIiwgXCJCYXNpY1NlYXJjaFwiXSk7XG5cdFx0XHR1c2VCYXNpY1NlYXJjaCA9IHRydWU7XG5cdFx0fVxuXHRcdC8vIEludGVybmFsIHByb3BlcnRpZXNcblx0XHR0aGlzLnVzZUJhc2ljU2VhcmNoID0gdXNlQmFzaWNTZWFyY2g7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgYW5ub3RhdGlvbiBwYXRoIHBvaW50aW5nIHRvIHRoZSB2aXN1YWxpemF0aW9uIGFubm90YXRpb24gKExpbmVJdGVtKS5cblx0ICogQHBhcmFtIGNvbnRleHRPYmplY3RQYXRoIFRoZSBkYXRhbW9kZWwgb2JqZWN0IHBhdGggZm9yIHRoZSB0YWJsZVxuXHQgKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcblx0ICogQHJldHVybnMgVGhlIGFubm90YXRpb24gcGF0aFxuXHQgKi9cblx0c3RhdGljIGdldFZpc3VhbGl6YXRpb25QYXRoKFxuXHRcdGNvbnRleHRPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+LFxuXHRcdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuXHQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IG1ldGFQYXRoID0gZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChjb250ZXh0T2JqZWN0UGF0aCkgYXMgc3RyaW5nO1xuXG5cdFx0Ly8gZmFsbGJhY2sgdG8gZGVmYXVsdCBMaW5lSXRlbSBpZiBtZXRhcGF0aCBpcyBub3Qgc2V0XG5cdFx0aWYgKCFtZXRhUGF0aCkge1xuXHRcdFx0TG9nLmVycm9yKGBNaXNzaW5nIG1ldGEgcGF0aCBwYXJhbWV0ZXIgZm9yIExpbmVJdGVtYCk7XG5cdFx0XHRyZXR1cm4gYEAke1VJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtfWA7XG5cdFx0fVxuXG5cdFx0aWYgKGlzQW5ub3RhdGlvbk9mVGVybTxMaW5lSXRlbT4oY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LCBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbSkpIHtcblx0XHRcdHJldHVybiBtZXRhUGF0aDsgLy8gTWV0YVBhdGggaXMgYWxyZWFkeSBwb2ludGluZyB0byBhIExpbmVJdGVtXG5cdFx0fVxuXHRcdC8vTmVlZCB0byBzd2l0Y2ggdG8gdGhlIGNvbnRleHQgcmVsYXRlZCB0aGUgUFYgb3IgU1BWXG5cdFx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKG1ldGFQYXRoKTtcblxuXHRcdGxldCB2aXN1YWxpemF0aW9uczogVmlzdWFsaXphdGlvbkFuZFBhdGhbXSA9IFtdO1xuXHRcdGlmIChcblx0XHRcdGlzQW5ub3RhdGlvbk9mVGVybTxTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pihcblx0XHRcdFx0Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LFxuXHRcdFx0XHRVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG5cdFx0XHQpIHx8XG5cdFx0XHRpc0Fubm90YXRpb25PZlRlcm08UHJlc2VudGF0aW9uVmFyaWFudD4oY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LCBVSUFubm90YXRpb25UZXJtcy5QcmVzZW50YXRpb25WYXJpYW50KVxuXHRcdCkge1xuXHRcdFx0dmlzdWFsaXphdGlvbnMgPSBnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uKFxuXHRcdFx0XHRjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsXG5cdFx0XHRcdG1ldGFQYXRoLFxuXHRcdFx0XHRyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRMb2cuZXJyb3IoYEJhZCBtZXRhcGF0aCBwYXJhbWV0ZXIgZm9yIHRhYmxlIDogJHtjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QhLnRlcm19YCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgbGluZUl0ZW1WaXogPSB2aXN1YWxpemF0aW9ucy5maW5kKCh2aXopID0+IHtcblx0XHRcdHJldHVybiB2aXoudmlzdWFsaXphdGlvbi50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbTtcblx0XHR9KTtcblxuXHRcdGlmIChsaW5lSXRlbVZpeikge1xuXHRcdFx0cmV0dXJuIGxpbmVJdGVtVml6LmFubm90YXRpb25QYXRoO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBmYWxsYmFjayB0byBkZWZhdWx0IExpbmVJdGVtIGlmIGFubm90YXRpb24gbWlzc2luZyBpbiBQVlxuXHRcdFx0TG9nLmVycm9yKGBCYWQgbWV0YSBwYXRoIHBhcmFtZXRlciBmb3IgTGluZUl0ZW06ICR7Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IS50ZXJtfWApO1xuXHRcdFx0cmV0dXJuIGBAJHtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbX1gOyAvLyBGYWxsYmFja1xuXHRcdH1cblx0fVxuXG5cdHN0YXRpYyBhZGRTZXR0aW5nID0gKHRhcmdldDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQgPT4ge1xuXHRcdGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0YXJnZXRba2V5XSA9IHZhbHVlO1xuXHRcdH1cblx0fTtcblxuXHRnZXRUYWJsZVNldHRpbmdzKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcblx0XHRjb25zdCB0YWJsZVNldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZUV4cG9ydFwiLCB0aGlzLmVuYWJsZUV4cG9ydCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZXhwb3J0RmlsZU5hbWVcIiwgdGhpcy5leHBvcnRGaWxlTmFtZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZXhwb3J0U2hlZXROYW1lXCIsIHRoaXMuZXhwb3J0U2hlZXROYW1lKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJyZWFkT25seVwiLCB0aGlzLnJlYWRPbmx5KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJpZ25vcmVkRmllbGRzXCIsIHRoaXMuaWdub3JlZEZpZWxkcyk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwic2VsZWN0aW9uTGltaXRcIiwgdGhpcy5zZWxlY3Rpb25MaW1pdCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiY29uZGVuc2VkVGFibGVMYXlvdXRcIiwgdGhpcy5jb25kZW5zZWRUYWJsZUxheW91dCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZXhwb3J0UmVxdWVzdFNpemVcIiwgdGhpcy5leHBvcnRSZXF1ZXN0U2l6ZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZnJvemVuQ29sdW1uQ291bnRcIiwgdGhpcy5mcm96ZW5Db2x1bW5Db3VudCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZGlzYWJsZUNvbHVtbkZyZWV6ZVwiLCB0aGlzLmRpc2FibGVDb2x1bW5GcmVlemUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIsIHRoaXMud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50TW9kZVwiLCB0aGlzLnJvd0NvdW50TW9kZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicm93Q291bnRcIiwgdGhpcy5yb3dDb3VudCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlRnVsbFNjcmVlblwiLCB0aGlzLmVuYWJsZUZ1bGxTY3JlZW4pO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNlbGVjdEFsbFwiLCB0aGlzLmVuYWJsZVNlbGVjdEFsbCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzXCIsIHRoaXMuZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVQYXN0ZVwiLCB0aGlzLmVuYWJsZVBhc3RlKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJkaXNhYmxlQ29weVRvQ2xpcGJvYXJkXCIsIHRoaXMuZGlzYWJsZUNvcHlUb0NsaXBib2FyZCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwic2Nyb2xsVGhyZXNob2xkXCIsIHRoaXMuc2Nyb2xsVGhyZXNob2xkKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJ0aHJlc2hvbGRcIiwgdGhpcy50aHJlc2hvbGQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInBvcGluTGF5b3V0XCIsIHRoaXMucG9waW5MYXlvdXQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNlbGVjdGlvbk1vZGVcIiwgdGhpcy5zZWxlY3Rpb25Nb2RlKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJ0eXBlXCIsIHRoaXMudHlwZSk7XG5cdFx0aWYgKHRoaXMucXVpY2tWYXJpYW50U2VsZWN0aW9uPy5xdWlja0ZpbHRlcnM/LnBhdGhzPy5sZW5ndGgpIHtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInF1aWNrVmFyaWFudFNlbGVjdGlvblwiLCB7XG5cdFx0XHRcdHBhdGhzOiB0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbi5xdWlja0ZpbHRlcnMucGF0aHMubWFwKChwYXRoKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHsgYW5ub3RhdGlvblBhdGg6IHBhdGggfTtcblx0XHRcdFx0fSksXG5cdFx0XHRcdHNob3dDb3VudHM6IHRoaXMucXVpY2tWYXJpYW50U2VsZWN0aW9uLnF1aWNrRmlsdGVycy5zaG93Q291bnRzXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5jcmVhdGlvbk1vZGUpIHtcblx0XHRcdGNvbnN0IGNyZWF0aW9uTW9kZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwibmFtZVwiLCB0aGlzLmNyZWF0aW9uTW9kZS5uYW1lKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwiY3JlYXRpb25GaWVsZHNcIiwgdGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRpb25GaWVsZHMpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJjcmVhdGVBdEVuZFwiLCB0aGlzLmNyZWF0aW9uTW9kZS5jcmVhdGVBdEVuZCk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGVcIiwgdGhpcy5jcmVhdGlvbk1vZGUuaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcIm91dGJvdW5kXCIsIHRoaXMuY3JlYXRpb25Nb2RlLm91dGJvdW5kKTtcblx0XHRcdGlmIChPYmplY3QuZW50cmllcyhjcmVhdGlvbk1vZGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGFibGVTZXR0aW5nc1tcImNyZWF0aW9uTW9kZVwiXSA9IGNyZWF0aW9uTW9kZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy5tYXNzRWRpdCkge1xuXHRcdFx0Y29uc3QgZW5hYmxlTWFzc0VkaXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiY3VzdG9tRnJhZ21lbnRcIiwgdGhpcy5tYXNzRWRpdC5jb25maWd1cmF0aW9uPy5jdXN0b21Db250ZW50KTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJmcm9tSW5saW5lXCIsIHRydWUpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcInZpc2libGVGaWVsZHNcIiwgdGhpcy5tYXNzRWRpdC5jb25maWd1cmF0aW9uPy52aXNpYmxlRmllbGRzPy5qb2luKFwiLFwiKSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiaWdub3JlZEZpZWxkc1wiLCB0aGlzLm1hc3NFZGl0LmNvbmZpZ3VyYXRpb24/Lmlnbm9yZWRGaWVsZHM/LmpvaW4oXCIsXCIpKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJvcGVyYXRpb25Hcm91cGluZ01vZGVcIiwgdGhpcy5tYXNzRWRpdC5jb25maWd1cmF0aW9uPy5vcGVyYXRpb25Hcm91cGluZ01vZGUpO1xuXHRcdFx0dGFibGVTZXR0aW5nc1tcImVuYWJsZU1hc3NFZGl0XCJdID0gZW5hYmxlTWFzc0VkaXQ7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24/LmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwgPT09IHRydWUpIHtcblx0XHRcdGNvbnN0IGFuYWx5dGljYWxDb25maWd1cmF0aW9uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGFuYWx5dGljYWxDb25maWd1cmF0aW9uLCBcImFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWxcIiwgdGhpcy5hbmFseXRpY2FsQ29uZmlndXJhdGlvbi5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsKTtcblx0XHRcdGlmIChPYmplY3QuZW50cmllcyhhbmFseXRpY2FsQ29uZmlndXJhdGlvbikubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0YWJsZVNldHRpbmdzW1wiYW5hbHl0aWNhbENvbmZpZ3VyYXRpb25cIl0gPSBhbmFseXRpY2FsQ29uZmlndXJhdGlvbjtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRhYmxlU2V0dGluZ3M7XG5cdH1cblxuXHRzdGF0aWMgY3JlYXRlVGFibGVEZWZpbml0aW9uKHRhYmxlOiBUYWJsZUJsb2NrLCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzOiBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKTogVGFibGVWaXN1YWxpemF0aW9uIHtcblx0XHRjb25zdCBpbml0aWFsQ29udmVydGVyQ29udGV4dCA9IHRhYmxlLmdldENvbnZlcnRlckNvbnRleHQoXG5cdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCxcblx0XHRcdHRhYmxlLmNvbnRleHRQYXRoPy5nZXRQYXRoKCksXG5cdFx0XHR0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzXG5cdFx0KTtcblx0XHRjb25zdCB2aXN1YWxpemF0aW9uUGF0aCA9IFRhYmxlQmxvY2suZ2V0VmlzdWFsaXphdGlvblBhdGgodGFibGUuY29udGV4dE9iamVjdFBhdGgsIGluaXRpYWxDb252ZXJ0ZXJDb250ZXh0KTtcblxuXHRcdGNvbnN0IHRhYmxlU2V0dGluZ3MgPSB0YWJsZS5nZXRUYWJsZVNldHRpbmdzKCk7XG5cdFx0Y29uc3QgZXh0cmFNYW5pZmVzdFNldHRpbmdzOiBUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbiA9IHtcblx0XHRcdG92ZXJmbG93R3JvdXBzOiBUYWJsZUJsb2NrLmNyZWF0ZUFjdGlvbk92ZXJmbG93R3JvdXBzKHRhYmxlKSxcblx0XHRcdGFjdGlvbnM6IFRhYmxlQmxvY2suY3JlYXRlQWN0aW9uc0Zyb21NYW5pZmVzdCh0YWJsZSksXG5cdFx0XHRjb2x1bW5zOiBUYWJsZUJsb2NrLmNyZWF0ZUNvbHVtbnNGb3JNYW5pZmVzdCh0YWJsZSksXG5cdFx0XHR0YWJsZVNldHRpbmdzXG5cdFx0fTtcblxuXHRcdGNvbnN0IGV4dHJhUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbj4gPSB7fTtcblx0XHRleHRyYVBhcmFtc1t2aXN1YWxpemF0aW9uUGF0aF0gPSBleHRyYU1hbmlmZXN0U2V0dGluZ3M7XG5cdFx0Y29uc3QgY29udmVydGVyQ29udGV4dCA9IHRhYmxlLmdldENvbnZlcnRlckNvbnRleHQoXG5cdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCxcblx0XHRcdHRhYmxlLmNvbnRleHRQYXRoPy5nZXRQYXRoKCksXG5cdFx0XHR0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzLFxuXHRcdFx0ZXh0cmFQYXJhbXMsXG5cdFx0XHQodmlld0RhdGE6IHsgY29udHJvbENvbmZpZ3VyYXRpb246IFJlY29yZDxzdHJpbmcsIFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uPiB9KTogdm9pZCA9PiB7XG5cdFx0XHRcdHZpZXdEYXRhLmNvbnRyb2xDb25maWd1cmF0aW9uW3Zpc3VhbGl6YXRpb25QYXRoXS5jb2x1bW5zID0gbWVyZ2UoXG5cdFx0XHRcdFx0e30sXG5cdFx0XHRcdFx0dmlld0RhdGEuY29udHJvbENvbmZpZ3VyYXRpb25bdmlzdWFsaXphdGlvblBhdGhdLmNvbHVtbnMgPz8ge30sXG5cdFx0XHRcdFx0ZXh0cmFQYXJhbXNbdmlzdWFsaXphdGlvblBhdGhdPy5jb2x1bW5zID8/IHt9XG5cdFx0XHRcdCkgYXMgUmVjb3JkPHN0cmluZywgQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uPjtcblx0XHRcdH1cblx0XHQpO1xuXG5cdFx0bGV0IGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50VHlwZSB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGFibGUuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoKSB7XG5cdFx0XHRjb25zdCBzdk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8U2VsZWN0aW9uVmFyaWFudD4oXG5cdFx0XHRcdHRhYmxlLmFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCxcblx0XHRcdFx0dGFibGUuY29udGV4dFBhdGggYXMgQ29udGV4dFxuXHRcdFx0KTtcblx0XHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50ID0gc3ZPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHR9XG5cblx0XHRjb25zdCB2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiA9IGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbihcblx0XHRcdCh0YWJsZS5pbk11bHRpVmlldyAmJiB0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdFx0PyBjb252ZXJ0ZXJDb250ZXh0LmdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoXG5cdFx0XHRcdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdFx0ICApXG5cdFx0XHRcdDogZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCh0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCkpIGFzIHN0cmluZyxcblx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHR7XG5cdFx0XHRcdGlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQ6IHRhYmxlLnVzZUNvbmRlbnNlZExheW91dCxcblx0XHRcdFx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRcdGlzTWFjcm9Pck11bHRpcGxlVmlldzogdGFibGUuaW5NdWx0aVZpZXcgPz8gdHJ1ZVxuXHRcdFx0fVxuXHRcdCk7XG5cblx0XHQvLyB0YWtlIHRoZSAoZmlyc3QpIFRhYmxlIHZpc3VhbGl6YXRpb25cblx0XHRyZXR1cm4gdmlzdWFsaXphdGlvbkRlZmluaXRpb24udmlzdWFsaXphdGlvbnMuZmluZChcblx0XHRcdCh2aXo6IFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbikgPT4gdml6LnR5cGUgPT09IFZpc3VhbGl6YXRpb25UeXBlLlRhYmxlXG5cdFx0KSBhcyBUYWJsZVZpc3VhbGl6YXRpb247XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgYWN0aW9ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBhY3Rpb25zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0KHRhYmxlOiBUYWJsZUJsb2NrKTogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RBY3Rpb24+IHtcblx0XHRjb25zdCBhY3Rpb25zU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPiA9IHt9O1xuXHRcdGNvbnN0IGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCA9IChhY3Rpb246IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25PdmVycmlkZSk6IHZvaWQgPT4ge1xuXHRcdFx0Y29uc3Qga2V5ID0gYWN0aW9uLmtleSE7XG5cdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0XHRwbGFjZW1lbnQ6IChhY3Rpb24ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdGFuY2hvcjogYWN0aW9uLmFuY2hvclxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb21tYW5kOiBhY3Rpb24uY29tbWFuZCxcblx0XHRcdFx0ZW5hYmxlT25TZWxlY3Q6IGFjdGlvbi5lbmFibGVPblNlbGVjdCxcblx0XHRcdFx0dmlzaWJsZTogYWN0aW9uLnZpc2libGUsXG5cdFx0XHRcdGVuYWJsZWQ6IGFjdGlvbi5lbmFibGVkLFxuXHRcdFx0XHRpc0FJT3BlcmF0aW9uOiBhY3Rpb24uaXNBSU9wZXJhdGlvbixcblx0XHRcdFx0cHJpb3JpdHk6IGFjdGlvbi5wcmlvcml0eSxcblx0XHRcdFx0Z3JvdXA6IGFjdGlvbi5ncm91cCxcblx0XHRcdFx0b3ZlcmZsb3dHcm91cDogYWN0aW9uLm92ZXJmbG93R3JvdXBcblx0XHRcdH07XG5cdFx0XHRpZiAoYWN0aW9uLl90eXBlID09PSBcIkFjdGlvblwiKSB7XG5cdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRcdHRleHQ6IGFjdGlvbi50ZXh0LFxuXHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlLFxuXHRcdFx0XHRcdHByZXNzOiBhY3Rpb24ucHJlc3MsXG5cdFx0XHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvblxuXHRcdFx0XHR9O1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBhZnRlckV4ZWN1dGlvbiA9IHtcblx0XHRcdFx0ZW5hYmxlQXV0b1Njcm9sbDogYWN0aW9uW1wiZW5hYmxlQXV0b1Njcm9sbFwiXSxcblx0XHRcdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBhY3Rpb25bXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIl1cblx0XHRcdH07XG5cdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGFmdGVyRXhlY3V0aW9uKTtcblx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0YWZ0ZXJFeGVjdXRpb246IE9iamVjdC5lbnRyaWVzKGFmdGVyRXhlY3V0aW9uKS5sZW5ndGggPyBhZnRlckV4ZWN1dGlvbiA6IHVuZGVmaW5lZCxcblx0XHRcdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBhY3Rpb24uZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0aWYgKHRhYmxlLmFjdGlvbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuYWN0aW9ucykuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25cIiB8fCBpdGVtLl90eXBlID09PSBcIkFjdGlvbk92ZXJyaWRlXCIpIHtcblx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoaXRlbSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25Hcm91cFwiIHx8IGl0ZW0uX3R5cGUgPT09IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiKSB7XG5cdFx0XHRcdFx0Ly8gQWN0aW9uR3JvdXAgb3IgQWN0aW9uR3JvdXBPdmVycmlkZVxuXHRcdFx0XHRcdGNvbnN0IGtleSA9IGl0ZW0ua2V5ITtcblx0XHRcdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGl0ZW0ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdFx0XHRhbmNob3I6IGl0ZW0uYW5jaG9yXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bWVudTogaXRlbS5hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24ua2V5ISlcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGlmIChpdGVtLl90eXBlID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0XHRcdFx0dGV4dDogaXRlbS50ZXh0LFxuXHRcdFx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBpdGVtLmRlZmF1bHRBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpdGVtLmFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoYWN0aW9uKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBhY3Rpb25zU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3Qgb3ZlcmZsb3dHcm91cHMgZm9yIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSBibG9ja1xuXHQgKiBAcmV0dXJucyBUaGUgbWFuaWZlc3Qgb3ZlcmZsb3dHcm91cHMgZm9yIHRoZSB0YWJsZVxuXHQgKi9cblx0c3RhdGljIGNyZWF0ZUFjdGlvbk92ZXJmbG93R3JvdXBzKHRhYmxlOiBUYWJsZUJsb2NrKTogT3ZlcmZsb3dHcm91cHNDb25maWd1cmF0aW9uIHtcblx0XHRjb25zdCBvdmVyZmxvd0dyb3Vwc1NldHRpbmdzOiBPdmVyZmxvd0dyb3Vwc0NvbmZpZ3VyYXRpb24gPSB7fTtcblx0XHRpZiAodGFibGUuYWN0aW9uT3ZlcmZsb3dHcm91cHMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuYWN0aW9uT3ZlcmZsb3dHcm91cHMpLmZvckVhY2goKG92ZXJGbG93R3JvdXApID0+IHtcblx0XHRcdFx0b3ZlcmZsb3dHcm91cHNTZXR0aW5nc1tvdmVyRmxvd0dyb3VwLm92ZXJmbG93R3JvdXBdID0ge1xuXHRcdFx0XHRcdHNob3dTZXBhcmF0b3I6IG92ZXJGbG93R3JvdXAuc2hvd1NlcGFyYXRvclxuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG92ZXJmbG93R3JvdXBzU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgY29sdW1ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBjb2x1bW5zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGU6IFRhYmxlQmxvY2spOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZT4ge1xuXHRcdGNvbnN0IGlzQmxvY2tDb2x1bW4gPSAoYmxvY2s6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZSk6IGJsb2NrIGlzIEJsb2NrQ29sdW1uID0+IHtcblx0XHRcdHJldHVybiBibG9jay5fdHlwZSA9PT0gXCJDb2x1bW5cIjtcblx0XHR9O1xuXG5cdFx0Y29uc3QgY29sdW1uU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlPiA9IHt9O1xuXG5cdFx0aWYgKHRhYmxlLmNvbHVtbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuY29sdW1ucykuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG5cdFx0XHRcdGxldCBjdXN0b21Db2x1bW5EZWZpbml0aW9uOiBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCAoQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUgJiB7IGtleTogc3RyaW5nIH0pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGhlYWRlcjogY29sdW1uLmhlYWRlciEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0cHJvcGVydGllczogY29sdW1uLnByb3BlcnRpZXMsXG5cdFx0XHRcdFx0XHR0b29sdGlwOiBjb2x1bW4udG9vbHRpcCxcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiBjb2x1bW4udGVtcGxhdGUhLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRyZXF1aXJlZDogY29sdW1uLnJlcXVpcmVkLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJTbG90XCIsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGtleTogY29sdW1uLmtleSEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZW1vdmUgYWxsIHVuZGVmaW5lZCBwcm9wZXJ0aWVzLCBzbyB0aGF0IHRoZXkgZG9uJ3QgZXJhc2Ugd2hhdCBpcyBzZXQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0XHRcdC8vIChuZWNlc3NhcnkgYmVjYXVzZSBtYW5pZmVzdC1iYXNlZCBjb2x1bW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIHNsb3QgY29sdW1ucyBhbmQgd2UgZG9uJ3QgY29weVxuXHRcdFx0XHQvLyBhbGwgdGhlaXIgcHJvcGVydGllcyBpbiB0aGUgWE1MKVxuXHRcdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGN1c3RvbUNvbHVtbkRlZmluaXRpb24pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pICYmIChjb2x1bW4uYW5jaG9yIHx8IGNvbHVtbi5wbGFjZW1lbnQpKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbi5wb3NpdGlvbiA9IHtcblx0XHRcdFx0XHRcdGFuY2hvcjogY29sdW1uLmFuY2hvcixcblx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGNvbHVtbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnRcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29sdW1uU2V0dGluZ3NbY29sdW1uLmtleSFdID0gY3VzdG9tQ29sdW1uRGVmaW5pdGlvbjtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gY29sdW1uU2V0dGluZ3M7XG5cdH1cblxuXHRzZXRVcElkKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlkKSB7XG5cdFx0XHQvLyBUaGUgZ2l2ZW4gSUQgc2hhbGwgYmUgYXNzaWduZWQgdG8gdGhlIFRhYmxlQVBJIGFuZCBub3QgdG8gdGhlIE1EQyBUYWJsZVxuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLmlkO1xuXHRcdFx0Ly8gR2VuZXJhdGUgdGhlIGNvbnRlbnRJZCBiYXNlZCBvbiB0aGUgSUQsIGlmIG5vdCBwcm92aWRlZCAoRlBNIGNhc2UpXG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA/Pz0gdGhpcy5nZXRDb250ZW50SWQodGhpcy5pZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFdlIGdlbmVyYXRlIHRoZSBJRCBhbmQgdGhlIGNvbnRlbnRJRC4gRHVlIHRvIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBrZWVwIGl0IG9uIHRoZSBNREMgVGFibGUgYnV0IHByb3ZpZGUgYXNzaWduXG5cdFx0XHQvLyB0aGUgSUQgd2l0aCBhIDo6VGFibGUgc3VmZml4IHRvIHRoZSBUYWJsZUFQSVxuXHRcdFx0dGhpcy5pZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uaWQ7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0fVxuXHR9XG5cblx0X2dldEVudGl0eVR5cGUoKTogRW50aXR5VHlwZSB7XG5cdFx0cmV0dXJuICh0aGlzLmNvbGxlY3Rpb25FbnRpdHkgYXMgRW50aXR5U2V0KT8uZW50aXR5VHlwZSB8fCAodGhpcy5jb2xsZWN0aW9uRW50aXR5IGFzIE5hdmlnYXRpb25Qcm9wZXJ0eSk/LnRhcmdldFR5cGU7XG5cdH1cblxuXHRnZXRFbXB0eVJvd3NFbmFibGVkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZW5hYmxlZCA9XG5cdFx0XHR0aGlzLmNyZWF0aW9uTW9kZS5uYW1lID09PSBDcmVhdGlvbk1vZGUuSW5saW5lQ3JlYXRpb25Sb3dzXG5cdFx0XHRcdD8gdGhpcy50YWJsZURlZmluaXRpb24uYWN0aW9ucy5maW5kKChhKSA9PiBhLmtleSA9PT0gU3RhbmRhcmRBY3Rpb25LZXlzLkNyZWF0ZSk/LmVuYWJsZWRcblx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuIGVuYWJsZWQgPT09IFwiZmFsc2VcIiA/IHVuZGVmaW5lZCA6IGVuYWJsZWQ7XG5cdH1cblxuXHRnZXRUZW1wbGF0ZSgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGVudGl0eVR5cGUgPSB0aGlzLl9nZXRFbnRpdHlUeXBlKCk7XG5cdFx0Y29uc3QgdGFibGVQcm9wcyA9IHRoaXMgYXMgdW5rbm93biBhcyBUYWJsZUJsb2NrUHJvcGVydGllcztcblx0XHR0YWJsZVByb3BzLm92ZXJyaWRlUm93UHJlc3MgPSB0aGlzLnJvd1ByZXNzICE9PSB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBjb2xsZWN0aW9uRW50aXR5ID0gdGhpcy5jb252ZXJ0ZWRNZXRhZGF0YS5yZXNvbHZlUGF0aCh0YWJsZVByb3BzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pLnRhcmdldCBhc1xuXHRcdFx0fCBFbnRpdHlTZXRcblx0XHRcdHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdGNvbnN0IGhhbmRsZXJQcm92aWRlciA9IG5ldyBUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyKHRhYmxlUHJvcHMsIHsgY29sbGVjdGlvbkVudGl0eSwgbWV0YU1vZGVsOiB0aGlzLm1ldGFQYXRoLmdldE1vZGVsKCkgfSk7XG5cblx0XHRsZXQgY3JlYXRpb25Nb2RlOiBUYWJsZUNyZWF0aW9uT3B0aW9ucyB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5jcmVhdGlvbk1vZGUgJiYgT2JqZWN0LmtleXModGhpcy5jcmVhdGlvbk1vZGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdGNyZWF0aW9uTW9kZSA9IDxUYWJsZUNyZWF0aW9uT3B0aW9ucyB7Li4udGhpcy5jcmVhdGlvbk1vZGV9IC8+O1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8VGFibGVBUElcblx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZQTTogJ3NhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyJ31cIlxuXHRcdFx0XHRiaW5kaW5nPXtge2ludGVybmFsPmNvbnRyb2xzLyR7dGhpcy5jb250ZW50SWR9fWB9XG5cdFx0XHRcdGlkPXt0aGlzLl9hcGlJZH1cblx0XHRcdFx0Y29udGVudElkPXt0aGlzLmNvbnRlbnRJZH1cblx0XHRcdFx0dmlzaWJsZT17dGhpcy52aXNpYmxlfVxuXHRcdFx0XHRoZWFkZXJMZXZlbD17dGhpcy5oZWFkZXJMZXZlbH1cblx0XHRcdFx0aGVhZGVyU3R5bGU9e3RoaXMuaGVhZGVyU3R5bGV9XG5cdFx0XHRcdGhlYWRlclZpc2libGU9e3RoaXMuaGVhZGVyVmlzaWJsZX1cblx0XHRcdFx0dGFiVGl0bGU9e3RoaXMudGFiVGl0bGV9XG5cdFx0XHRcdGV4cG9ydFJlcXVlc3RTaXplPXt0aGlzLmV4cG9ydFJlcXVlc3RTaXplfVxuXHRcdFx0XHRkaXNhYmxlQ29weVRvQ2xpcGJvYXJkPXt0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmR9XG5cdFx0XHRcdHNjcm9sbFRocmVzaG9sZD17dGhpcy5zY3JvbGxUaHJlc2hvbGR9XG5cdFx0XHRcdHRocmVzaG9sZD17dGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC50aHJlc2hvbGQgPz8gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi50aHJlc2hvbGR9XG5cdFx0XHRcdHBvcGluTGF5b3V0PXt0aGlzLnBvcGluTGF5b3V0fVxuXHRcdFx0XHRpc1NlYXJjaGFibGU9e3RoaXMuaXNTZWFyY2hhYmxlfVxuXHRcdFx0XHRidXN5PXt0aGlzLmJ1c3l9XG5cdFx0XHRcdGluaXRpYWxMb2FkPXt0aGlzLmluaXRpYWxMb2FkfVxuXHRcdFx0XHRoZWFkZXI9e3RoaXMuaGVhZGVyfVxuXHRcdFx0XHRpc0FscD17dGhpcy5pc0FscH1cblx0XHRcdFx0ZmllbGRNb2RlPXt0aGlzLmZpZWxkTW9kZX1cblx0XHRcdFx0cGVyc29uYWxpemF0aW9uPXt0aGlzLnBlcnNvbmFsaXphdGlvbn1cblx0XHRcdFx0cm93UHJlc3M9e3RoaXMucm93UHJlc3MgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0dmFyaWFudFNhdmVkPXt0aGlzLnZhcmlhbnRTYXZlZCBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHR2YXJpYW50U2VsZWN0ZWQ9e3RoaXMudmFyaWFudFNlbGVjdGVkIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHNlZ21lbnRlZEJ1dHRvblByZXNzPXt0aGlzLnNlZ21lbnRlZEJ1dHRvblByZXNzIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50PXt0aGlzLnZhcmlhbnRNYW5hZ2VtZW50fVxuXHRcdFx0XHRpZ25vcmVkRmllbGRzPXt0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHN9IC8vIE5lZWQgdG8gYmUgZnJvbSB0aGUgdGFibGVEZWZpbml0aW9uIHRvIGJlIGluIHBoYXNlIGZvciB0aGUgZ2V0SWdub3JlRmllbGRzXG5cdFx0XHRcdHRhYmxlRGVmaW5pdGlvbj17YHtfcGFnZU1vZGVsPiR7dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0IS5nZXRQYXRoKCl9fWAgYXMgdW5rbm93biBhcyBUYWJsZVZpc3VhbGl6YXRpb259XG5cdFx0XHRcdGVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWU9e2VudGl0eVR5cGU/LmZ1bGx5UXVhbGlmaWVkTmFtZX1cblx0XHRcdFx0bWV0YVBhdGg9e3RoaXMubWV0YVBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0dXNlQmFzaWNTZWFyY2g9e3RoaXMudXNlQmFzaWNTZWFyY2h9XG5cdFx0XHRcdGVuYWJsZUZ1bGxTY3JlZW49e3RoaXMuZW5hYmxlRnVsbFNjcmVlbn1cblx0XHRcdFx0ZW5hYmxlRXhwb3J0PXt0aGlzLmVuYWJsZUV4cG9ydH1cblx0XHRcdFx0ZXhwb3J0RmlsZU5hbWU9e3RoaXMuZXhwb3J0RmlsZU5hbWV9XG5cdFx0XHRcdGV4cG9ydFNoZWV0TmFtZT17dGhpcy5leHBvcnRTaGVldE5hbWV9XG5cdFx0XHRcdGZyb3plbkNvbHVtbkNvdW50PXt0aGlzLmZyb3plbkNvbHVtbkNvdW50fVxuXHRcdFx0XHRkaXNhYmxlQ29sdW1uRnJlZXplPXt0aGlzLmRpc2FibGVDb2x1bW5GcmVlemV9XG5cdFx0XHRcdGVuYWJsZVBhc3RlPXt0aGlzLmVuYWJsZVBhc3RlfVxuXHRcdFx0XHRyb3dDb3VudE1vZGU9e3RoaXMucm93Q291bnRNb2RlfVxuXHRcdFx0XHRyb3dDb3VudD17dGhpcy5yb3dDb3VudH1cblx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuY29udGV4dFBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0c2VsZWN0aW9uQ2hhbmdlPXt0aGlzLnNlbGVjdGlvbkNoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRsaXN0QmluZGluZ0NoYW5nZT17dGhpcy5saXN0QmluZGluZ0NoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRyZWFkT25seT17dGhpcy5yZWFkT25seX1cblx0XHRcdFx0c2VsZWN0aW9uTW9kZT17dGhpcy5zZWxlY3Rpb25Nb2RlfVxuXHRcdFx0XHR1c2VDb25kZW5zZWRMYXlvdXQ9e3RoaXMudXNlQ29uZGVuc2VkTGF5b3V0fVxuXHRcdFx0XHR0eXBlPXt0aGlzLnR5cGV9XG5cdFx0XHRcdGZpbHRlckJhcj17dGhpcy5maWx0ZXJCYXJ9XG5cdFx0XHRcdGVtcHR5Um93c0VuYWJsZWQ9e3RoaXMuZ2V0RW1wdHlSb3dzRW5hYmxlZCgpIGFzIHVua25vd24gYXMgYm9vbGVhbn1cblx0XHRcdFx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPXt0aGlzLmVuYWJsZUF1dG9Db2x1bW5XaWR0aH1cblx0XHRcdFx0YmVmb3JlUmViaW5kVGFibGU9e3RoaXMuYmVmb3JlUmViaW5kVGFibGUgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI9e3RoaXMud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJ9XG5cdFx0XHRcdG1vZGVGb3JOb0RhdGFNZXNzYWdlPXt0aGlzLm1vZGVGb3JOb0RhdGFNZXNzYWdlfVxuXHRcdFx0XHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGg9e3RoaXMuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPy5nZXRQYXRoKCl9XG5cdFx0XHRcdGRpc3BsYXlTZWdtZW50ZWRCdXR0b249e3RoaXMuZGlzcGxheVNlZ21lbnRlZEJ1dHRvbn1cblx0XHRcdFx0ZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzPXt0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc31cblx0XHRcdFx0ZW5hYmxlU2VsZWN0QWxsPXt0aGlzLmVuYWJsZVNlbGVjdEFsbH1cblx0XHRcdFx0aW5NdWx0aVZpZXc9e3RoaXMuaW5NdWx0aVZpZXd9XG5cdFx0XHRcdHNlbGVjdGlvbkxpbWl0PXt0aGlzLnNlbGVjdGlvbkxpbWl0fVxuXHRcdFx0XHRjb25kZW5zZWRUYWJsZUxheW91dD17dGhpcy5jb25kZW5zZWRUYWJsZUxheW91dH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjcmVhdGlvbk1vZGUsXG5cdFx0XHRcdFx0Y29udGVudDogZ2V0TURDVGFibGVUZW1wbGF0ZSh0YWJsZVByb3BzLCB7XG5cdFx0XHRcdFx0XHRtZXRhUGF0aDogdGhpcy5tZXRhUGF0aCxcblx0XHRcdFx0XHRcdGNvbnZlcnRlZE1ldGFkYXRhOiB0aGlzLmNvbnZlcnRlZE1ldGFkYXRhLFxuXHRcdFx0XHRcdFx0bWV0YU1vZGVsOiB0aGlzLm1ldGFNb2RlbCxcblx0XHRcdFx0XHRcdGhhbmRsZXJQcm92aWRlcixcblx0XHRcdFx0XHRcdGFwcENvbXBvbmVudDogdGhpcy5hcHBDb21wb25lbnRcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9UYWJsZUFQST5cblx0XHQpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnSEEsU0FBU0EsZ0JBQWdCQSxDQUFDQyxJQUFhLEVBQUVDLElBQVksRUFBc0I7SUFDMUUsT0FBT0QsSUFBSSxDQUFDRSxZQUFZLENBQUNELElBQUksQ0FBQyxJQUFJRSxTQUFTO0VBQzVDOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNDLGlDQUFpQ0EsQ0FBQ0osSUFBYSxFQUFFQyxJQUFZLEVBQVc7SUFDaEYsTUFBTUksY0FBYyxHQUFHTCxJQUFJLENBQUNFLFlBQVksQ0FBQ0QsSUFBSSxDQUFDO0lBQzlDLFFBQVFJLGNBQWM7TUFDckIsS0FBSyxJQUFJO01BQ1QsS0FBSyxN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
|