@sapui5/sap.fe.macros 1.142.0 → 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/CollaborativeDraftHandler.js +1 -7
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +0 -6
- 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 +5 -5
- package/src/sap/fe/macros/Field.ts +5 -3
- package/src/sap/fe/macros/FooterContent.js +3 -2
- package/src/sap/fe/macros/FooterContent.tsx +2 -10
- package/src/sap/fe/macros/KPITag.js +6 -6
- package/src/sap/fe/macros/KPITag.tsx +5 -5
- package/src/sap/fe/macros/MacroAPI.js +2 -2
- package/src/sap/fe/macros/MacroAPI.ts +1 -1
- package/src/sap/fe/macros/MessageButton.js +3 -3
- package/src/sap/fe/macros/MessageButton.tsx +3 -2
- package/src/sap/fe/macros/MicroChart.js +3 -2
- package/src/sap/fe/macros/MicroChart.tsx +1 -1
- 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 +6 -5
- package/src/sap/fe/macros/Status.tsx +3 -4
- 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/SummarizationButton.js +6 -4
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
- package/src/sap/fe/macros/chart/ChartDelegate.js +22 -1
- package/src/sap/fe/macros/chart/ChartDelegate.ts +29 -2
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +5 -2
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +5 -2
- 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/NumberWithUnitOrCurrency.js +3 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -0
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +4 -4
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +3 -3
- package/src/sap/fe/macros/field/FieldFormatOptions.js +2 -2
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +7 -2
- package/src/sap/fe/macros/field/FieldRuntime.ts +7 -1
- package/src/sap/fe/macros/filter/FilterUtils.js +31 -5
- package/src/sap/fe/macros/filter/FilterUtils.ts +40 -6
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +6 -3
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +5 -1
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +19 -9
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +76 -61
- 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/form/FormContainer.block.js +22 -6
- package/src/sap/fe/macros/form/FormContainer.block.ts +24 -6
- 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} +1 -1
- package/src/sap/fe/macros/messagebundle.properties +6 -0
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +1 -1
- 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/table/Action.js +7 -4
- package/src/sap/fe/macros/table/Action.ts +3 -3
- 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 +6 -9
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +5 -7
- package/src/sap/fe/macros/table/Table.block.js +6 -3
- package/src/sap/fe/macros/table/Table.block.tsx +13 -3
- package/src/sap/fe/macros/table/TableAPI.js +13 -8
- package/src/sap/fe/macros/table/TableAPI.ts +10 -3
- package/src/sap/fe/macros/table/TableDefinition.js +2 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +1 -1
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +3 -1
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +4 -0
- package/src/sap/fe/macros/table/TableRuntime.js +24 -12
- package/src/sap/fe/macros/table/TableRuntime.ts +27 -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 +6 -4
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +6 -5
- 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 +14 -5
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +13 -4
- 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 +37 -10
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +39 -15
- 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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/core/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, BuildingBlockSupport, BuildingBlockTemplatingBase, ManifestSettings, MetaModelConverter, DataVisualization, StandardActions, StableIdHelper, TypeGuards, DataModelPathHelper, MacroAPI, MdcTableTemplate, TableAPI, TableCreationOptions, TableEventHandlerProvider, _jsx) {
|
|
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
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;
|
|
@@ -162,6 +162,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
162
162
|
};
|
|
163
163
|
const setCustomActionOverflowGroupProperties = function (overFlowGroup) {
|
|
164
164
|
return {
|
|
165
|
+
key: overFlowGroup.getAttribute("key").replace("InlineXML_", ""),
|
|
165
166
|
overflowGroup: Number.parseInt(overFlowGroup.getAttribute("overflowGroup"), 10),
|
|
166
167
|
showSeparator: overFlowGroup.getAttribute("showSeparator") === "true"
|
|
167
168
|
};
|
|
@@ -999,7 +1000,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
999
1000
|
};
|
|
1000
1001
|
const extraParams = {};
|
|
1001
1002
|
extraParams[visualizationPath] = extraManifestSettings;
|
|
1002
|
-
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
|
+
});
|
|
1003
1006
|
let associatedSelectionVariant;
|
|
1004
1007
|
if (table.associatedSelectionVariantPath) {
|
|
1005
1008
|
const svObjectPath = getInvolvedDataModelObjects(table.associatedSelectionVariantPath, table.contextPath);
|
|
@@ -1600,4 +1603,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
|
|
|
1600
1603
|
_exports = TableBlock;
|
|
1601
1604
|
return _exports;
|
|
1602
1605
|
}, false);
|
|
1603
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzYWZlR2V0QXR0cmlidXRlIiwibm9kZSIsIm5hbWUiLCJnZXRBdHRyaWJ1dGUiLCJ1bmRlZmluZWQiLCJnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUiLCJlbmFibGVtZW50QXR0ciIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInBhcnNlQWN0aW9uRnJvbUVsZW1lbnQiLCJhY3Rpb25Ob2RlIiwiY29tbW9uUHJvcGVydGllcyIsImdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMiLCJsb2NhbE5hbWUiLCJ0ZXh0IiwicHJlc3MiLCJyZXF1aXJlc1NlbGVjdGlvbiIsImVuYWJsZUF1dG9TY3JvbGwiLCJuYXZpZ2F0ZVRvSW5zdGFuY2UiLCJkZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJhY3Rpb24iLCJyZXBsYWNlIiwiZW5hYmxlZCIsInZpc2libGUiLCJjb21tYW5kIiwiZW5hYmxlT25TZWxlY3QiLCJwbGFjZW1lbnQiLCJhbmNob3IiLCJfdHlwZSIsIk51bWJlciIsInBhcnNlSW50Iiwic2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25PYmplY3QiLCJpbmNsdWRlcyIsImdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMiLCJkZWZhdWx0QWN0aW9uIiwic2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzIiwiZWxlbWVudCIsImN1c3RvbUNvbnRlbnQiLCJjaGlsZHJlbiIsIm91dGVySFRNTCIsInZpc2libGVGaWVsZHMiLCJzcGxpdCIsImlnbm9yZWRGaWVsZHMiLCJvcGVyYXRpb25Hcm91cGluZ01vZGUiLCJzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJxdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJwYXRocyIsInNob3dDb3VudHMiLCJzZXRDdXN0b21BY3Rpb25PdmVyZmxvd0dyb3VwUHJvcGVydGllcyIsIm92ZXJGbG93R3JvdXAiLCJvdmVyZmxvd0dyb3VwIiwic2hvd1NlcGFyYXRvciIsImFjdGlvbnNJbk1lbnUiLCJBcnJheSIsInByb3RvdHlwZSIsInNsaWNlIiwiYXBwbHkiLCJtYXAiLCJzdWJBY3Rpb24iLCJzZXRBdHRyaWJ1dGUiLCJhY3Rpb25zIiwiZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMiLCJjaGlsZENvbHVtbiIsIndpZHRoIiwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIiLCJpbXBvcnRhbmNlIiwiaG9yaXpvbnRhbEFsaWduIiwiYXZhaWxhYmlsaXR5IiwiZGlzYWJsZUV4cG9ydCIsImV4cG9ydFNldHRpbmdzIiwicGFyc2VFeHBvcnRTZXR0aW5ncyIsInNldEN1c3RvbUNvbHVtblByb3BlcnRpZXMiLCJoZWFkZXIiLCJ0b29sdGlwIiwidGVtcGxhdGUiLCJnZXRDb2x1bW5UZW1wbGF0ZSIsInByb3BlcnRpZXMiLCJyZXF1aXJlZCIsInBhcnNlU2ltcGxlQWdncmVnYXRpb24iLCJ3cmFwIiwidHlwZSIsInByb3BlcnR5IiwidGV4dEFsaWduIiwibGFiZWwiLCJ0cnVlVmFsdWUiLCJmYWxzZVZhbHVlIiwidmFsdWVNYXAiLCJhZ2dyZWdhdGlvbiIsImdldEFnZ3JlZ2F0aW9uIiwiaSIsImxlbmd0aCIsImNoaWxkIiwiaXRlbSIsIm5vZGVOYW1lIiwiZW5kc1dpdGgiLCJhZ2dyZWdhdGlvbk5hbWUiLCJyZXN1bHQiLCJnZXRBdHRyaWJ1dGVOYW1lcyIsInZhbHVlIiwiVGFibGVCbG9jayIsIl9kZWMiLCJkZWZpbmVCdWlsZGluZ0Jsb2NrIiwibmFtZXNwYWNlIiwicHVibGljTmFtZXNwYWNlIiwicmV0dXJuVHlwZXMiLCJfZGVjMiIsImJsb2NrQXR0cmlidXRlIiwidW5kZXJseWluZ1R5cGUiLCJleHBlY3RlZFR5cGVzIiwiZXhwZWN0ZWRBbm5vdGF0aW9ucyIsImlzUHVibGljIiwiX2RlYzMiLCJiaW5kYWJsZSIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsImFsbG93ZWRWYWx1ZXMiLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJpc0Fzc29jaWF0aW9uIiwiX2RlYzI1IiwiX2RlYzI2IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiX2RlYzMyIiwiX2RlYzMzIiwiX2RlYzM0IiwiX2RlYzM1IiwiX2RlYzM2IiwiX2RlYzM3IiwiX2RlYzM4IiwiX2RlYzM5IiwiX2RlYzQwIiwiX2RlYzQxIiwiX2RlYzQyIiwiX2RlYzQzIiwiX2RlYzQ0IiwiX2RlYzQ1IiwiX2RlYzQ2IiwiX2RlYzQ3IiwiX2RlYzQ4IiwidmFsaWRhdGUiLCJjcmVhdGlvbk9wdGlvbnNJbnB1dCIsIkVycm9yIiwiX2RlYzQ5IiwiYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24iLCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsIiwiX2RlYzUwIiwiYmxvY2tBZ2dyZWdhdGlvbiIsImFsdFR5cGVzIiwiaGFzVmlydHVhbE5vZGUiLCJtdWx0aXBsZSIsInByb2Nlc3NBZ2dyZWdhdGlvbnMiLCJfZGVjNTEiLCJza2lwS2V5IiwiX2RlYzUyIiwiaXNEZWZhdWx0IiwiX2RlYzUzIiwiX2RlYzU0IiwicmVhbGx5U2tpcEtleSIsIl9kZWM1NSIsImJsb2NrRXZlbnQiLCJfZGVjNTYiLCJfZGVjNTciLCJfZGVjNTgiLCJfZGVjNTkiLCJfZGVjNjAiLCJfZGVjNjEiLCJfZGVjNjIiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX1RhYmxlQmxvY2siLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwidGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIl9kZXNjcmlwdG9yMTUiLCJfZGVzY3JpcHRvcjE2IiwiX2Rlc2NyaXB0b3IxNyIsIl9kZXNjcmlwdG9yMTgiLCJfZGVzY3JpcHRvcjE5IiwiX2Rlc2NyaXB0b3IyMCIsIl9kZXNjcmlwdG9yMjEiLCJfZGVzY3JpcHRvcjIyIiwiX2Rlc2NyaXB0b3IyMyIsIl9kZXNjcmlwdG9yMjQiLCJfZGVzY3JpcHRvcjI1IiwiX2Rlc2NyaXB0b3IyNiIsIl9kZXNjcmlwdG9yMjciLCJfZGVzY3JpcHRvcjI4IiwiX2Rlc2NyaXB0b3IyOSIsIl9kZXNjcmlwdG9yMzAiLCJfZGVzY3JpcHRvcjMxIiwiX2Rlc2NyaXB0b3IzMiIsIl9kZXNjcmlwdG9yMzMiLCJfZGVzY3JpcHRvcjM0IiwiX2Rlc2NyaXB0b3IzNSIsIl9kZXNjcmlwdG9yMzYiLCJfZGVzY3JpcHRvcjM3IiwiX2Rlc2NyaXB0b3IzOCIsIl9kZXNjcmlwdG9yMzkiLCJfZGVzY3JpcHRvcjQwIiwiX2Rlc2NyaXB0b3I0MSIsIl9kZXNjcmlwdG9yNDIiLCJfZGVzY3JpcHRvcjQzIiwiX2Rlc2NyaXB0b3I0NCIsIl9kZXNjcmlwdG9yNDUiLCJfZGVzY3JpcHRvcjQ2IiwiX2Rlc2NyaXB0b3I0NyIsIl9kZXNjcmlwdG9yNDgiLCJfZGVzY3JpcHRvcjQ5IiwiX2Rlc2NyaXB0b3I1MCIsIl9kZXNjcmlwdG9yNTEiLCJfZGVzY3JpcHRvcjUyIiwiX2Rlc2NyaXB0b3I1MyIsIl9kZXNjcmlwdG9yNTQiLCJfZGVzY3JpcHRvcjU1IiwiX2Rlc2NyaXB0b3I1NiIsIl9kZXNjcmlwdG9yNTciLCJfZGVzY3JpcHRvcjU4IiwiX2Rlc2NyaXB0b3I1OSIsIl9kZXNjcmlwdG9yNjAiLCJfZGVzY3JpcHRvcjYxIiwiY29udGV4dE9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwidGFibGVEZWZpbml0aW9uIiwiY3JlYXRlVGFibGVEZWZpbml0aW9uIiwidGFibGVEZWZpbml0aW9uQ29udGV4dCIsIk1hY3JvQVBJIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb252ZXJ0ZWRNZXRhZGF0YSIsImNvbnZlcnRlZFR5cGVzIiwibWV0YU1vZGVsIiwibW9kZWxzIiwiY29sbGVjdGlvbkVudGl0eSIsInJlc29sdmVQYXRoIiwiYW5ub3RhdGlvbiIsImNvbGxlY3Rpb24iLCJ0YXJnZXQiLCJhcHBDb21wb25lbnQiLCJzZXRVcElkIiwiY3JlYXRpb25Nb2RlIiwiY3JlYXRlIiwibW9kZSIsImNyZWF0ZUF0RW5kIiwiYXBwZW5kIiwicmVhZE9ubHkiLCJkaXNwbGF5TW9kZSIsImNvbnRyb2wiLCJUYWJsZUFQSSIsInVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5IiwidXNlQmFzaWNTZWFyY2giLCJmaWx0ZXJCYXIiLCJnZW5lcmF0ZSIsImNvbnRlbnRJZCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJnZXRWaXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiTG9nIiwiZXJyb3IiLCJpc0Fubm90YXRpb25PZlRlcm0iLCJ0YXJnZXRPYmplY3QiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwidmlzdWFsaXphdGlvbnMiLCJnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uIiwidGVybSIsImxpbmVJdGVtVml6IiwiZmluZCIsInZpeiIsInZpc3VhbGl6YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsIl9wcm90byIsImdldFRhYmxlU2V0dGluZ3MiLCJ0YWJsZVNldHRpbmdzIiwiYWRkU2V0dGluZyIsImVuYWJsZUV4cG9ydCIsImV4cG9ydEZpbGVOYW1lIiwiZXhwb3J0U2hlZXROYW1lIiwic2VsZWN0aW9uTGltaXQiLCJjb25kZW5zZWRUYWJsZUxheW91dCIsImV4cG9ydFJlcXVlc3RTaXplIiwiZnJvemVuQ29sdW1uQ291bnQiLCJkaXNhYmxlQ29sdW1uRnJlZXplIiwicm93Q291bnRNb2RlIiwicm93Q291bnQiLCJlbmFibGVGdWxsU2NyZWVuIiwiZW5hYmxlU2VsZWN0QWxsIiwiZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzIiwiZW5hYmxlUGFzdGUiLCJkaXNhYmxlQ29weVRvQ2xpcGJvYXJkIiwic2Nyb2xsVGhyZXNob2xkIiwidGhyZXNob2xkIiwicG9waW5MYXlvdXQiLCJzZWxlY3Rpb25Nb2RlIiwicXVpY2tGaWx0ZXJzIiwicGF0aCIsImNyZWF0aW9uRmllbGRzIiwiaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSIsIm91dGJvdW5kIiwiZW50cmllcyIsIm1hc3NFZGl0IiwiZW5hYmxlTWFzc0VkaXQiLCJjb25maWd1cmF0aW9uIiwiam9pbiIsInRhYmxlIiwiaW5pdGlhbENvbnZlcnRlckNvbnRleHQiLCJnZXRDb252ZXJ0ZXJDb250ZXh0IiwiZ2V0UGF0aCIsInZpc3VhbGl6YXRpb25QYXRoIiwiZXh0cmFNYW5pZmVzdFNldHRpbmdzIiwib3ZlcmZsb3dHcm91cHMiLCJjcmVhdGVBY3Rpb25PdmVyZmxvd0dyb3VwcyIsImNyZWF0ZUFjdGlvbnNGcm9tTWFuaWZlc3QiLCJjb2x1bW5zIiwiY3JlYXRlQ29sdW1uc0Zvck1hbmlmZXN0IiwiZXh0cmFQYXJhbXMiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudCIsImFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCIsInN2T2JqZWN0UGF0aCIsInZpc3VhbGl6YXRpb25EZWZpbml0aW9uIiwiZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uIiwiaW5NdWx0aVZpZXciLCJnZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZ2V0RW50aXR5VHlwZSIsImlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQiLCJ1c2VDb25kZW5zZWRMYXlvdXQiLCJpc01hY3JvT3JNdWx0aXBsZVZpZXciLCJWaXN1YWxpemF0aW9uVHlwZSIsIlRhYmxlIiwiYWN0aW9uc1NldHRpbmdzIiwiYWRkQWN0aW9uVG9FeHRyYU1hbmlmZXN0IiwicG9zaXRpb24iLCJpc0FJT3BlcmF0aW9uIiwicHJpb3JpdHkiLCJncm91cCIsIl9fbm9XcmFwIiwiYWZ0ZXJFeGVjdXRpb24iLCJ2YWx1ZXMiLCJtZW51Iiwib3ZlcmZsb3dHcm91cHNTZXR0aW5ncyIsImFjdGlvbk92ZXJmbG93R3JvdXBzIiwiaXNCbG9ja0NvbHVtbiIsImJsb2NrIiwiY29sdW1uU2V0dGluZ3MiLCJjb2x1bW4iLCJjdXN0b21Db2x1bW5EZWZpbml0aW9uIiwiaWQiLCJfYXBpSWQiLCJnZXRDb250ZW50SWQiLCJhcGlJZCIsIl9nZXRFbnRpdHlUeXBlIiwiZW50aXR5VHlwZSIsInRhcmdldFR5cGUiLCJnZXRFbXB0eVJvd3NFbmFibGVkIiwiQ3JlYXRpb25Nb2RlIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwiYSIsIlN0YW5kYXJkQWN0aW9uS2V5cyIsIkNyZWF0ZSIsImdldFRlbXBsYXRlIiwidGFibGVQcm9wcyIsIm92ZXJyaWRlUm93UHJlc3MiLCJyb3dQcmVzcyIsImhhbmRsZXJQcm92aWRlciIsIlRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIiLCJnZXRNb2RlbCIsIl9qc3giLCJUYWJsZUNyZWF0aW9uT3B0aW9ucyIsImJpbmRpbmciLCJoZWFkZXJMZXZlbCIsImhlYWRlclN0eWxlIiwiaGVhZGVyVmlzaWJsZSIsInRhYlRpdGxlIiwiaXNTZWFyY2hhYmxlIiwiYnVzeSIsImluaXRpYWxMb2FkIiwiaXNBbHAiLCJmaWVsZE1vZGUiLCJwZXJzb25hbGl6YXRpb24iLCJ2YXJpYW50U2F2ZWQiLCJ2YXJpYW50U2VsZWN0ZWQiLCJzZWdtZW50ZWRCdXR0b25QcmVzcyIsInZhcmlhbnRNYW5hZ2VtZW50IiwiZW50aXR5VHlwZUZ1bGx5UXVhbGlmaWVkTmFtZSIsInNlbGVjdGlvbkNoYW5nZSIsImxpc3RCaW5kaW5nQ2hhbmdlIiwiZW1wdHlSb3dzRW5hYmxlZCIsImVuYWJsZUF1dG9Db2x1bW5XaWR0aCIsImJlZm9yZVJlYmluZFRhYmxlIiwibW9kZUZvck5vRGF0YU1lc3NhZ2UiLCJkaXNwbGF5U2VnbWVudGVkQnV0dG9uIiwiY29udGVudCIsImdldE1EQ1RhYmxlVGVtcGxhdGUiLCJCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlLmJsb2NrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnZlcnRlZE1ldGFkYXRhLCBFbnRpdHlTZXQsIEVudGl0eVR5cGUsIE5hdmlnYXRpb25Qcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRMaW5lSXRlbSxcblx0UHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IHR5cGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB7XG5cdGJsb2NrQWdncmVnYXRpb24sXG5cdGJsb2NrQXR0cmlidXRlLFxuXHRibG9ja0V2ZW50LFxuXHRkZWZpbmVCdWlsZGluZ0Jsb2NrXG59IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHtcblx0QXZhaWxhYmlsaXR5VHlwZSxcblx0Q3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uLFxuXHRDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZSxcblx0SG9yaXpvbnRhbEFsaWduLFxuXHRJbXBvcnRhbmNlLFxuXHRNYW5pZmVzdEFjdGlvbixcblx0T3ZlcmZsb3dHcm91cHNDb25maWd1cmF0aW9uLFxuXHRUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUsIFZpc3VhbGl6YXRpb25UeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IENoYXJ0VmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyBWaXN1YWxpemF0aW9uQW5kUGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHtcblx0Z2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uLFxuXHRnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVCZWhhdmlvciwgVGFibGVUeXBlLCBUYWJsZVZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB7IFN0YW5kYXJkQWN0aW9uS2V5cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi90YWJsZS9TdGFuZGFyZEFjdGlvbnNcIjtcbmltcG9ydCB7IHR5cGUgUGxhY2VtZW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVGVybSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb2xsZWN0aW9uQmluZGluZ0luZm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29sbGVjdGlvbkJpbmRpbmdJbmZvXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSB7IFRhYmxlQmxvY2tQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvTWRjVGFibGVUZW1wbGF0ZVwiO1xuaW1wb3J0IHsgZ2V0TURDVGFibGVUZW1wbGF0ZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL01kY1RhYmxlVGVtcGxhdGVcIjtcbmltcG9ydCB0eXBlIE92ZXJmbG93R3JvdXAgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvT3ZlcmZsb3dHcm91cHNcIjtcbmltcG9ydCBUYWJsZUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUFQSVwiO1xuaW1wb3J0IFRhYmxlQ3JlYXRpb25PcHRpb25zIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQ3JlYXRpb25PcHRpb25zXCI7XG5pbXBvcnQgdHlwZSB7IE92ZXJmbG93VG9vbGJhclByaW9yaXR5IH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHsgdHlwZSBUaXRsZUxldmVsIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIHsgRXhwb3J0U2V0dGluZ3MsIFRhYmxlJFNlbGVjdGlvbkNoYW5nZUV2ZW50UGFyYW1ldGVycyB9IGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IFJvd0FjdGlvbkl0ZW0kUHJlc3NFdmVudFBhcmFtZXRlcnMgfSBmcm9tIFwic2FwL3VpL21kYy90YWJsZS9Sb3dBY3Rpb25JdGVtXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cE92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBbmFseXRpY2FsQ29uZmlndXJhdGlvbiBmcm9tIFwiLi9BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uT3ZlcnJpZGUgZnJvbSBcIi4vQ29sdW1uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIE1hc3NFZGl0IGZyb20gXCIuL01hc3NFZGl0XCI7XG5pbXBvcnQgdHlwZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSBcIi4vUXVpY2tWYXJpYW50U2VsZWN0aW9uXCI7XG5pbXBvcnQgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciBmcm9tIFwiLi9UYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyXCI7XG5cbnR5cGUgQmxvY2tDb2x1bW4gPSBQYXJ0aWFsPE9taXQ8Q29sdW1uLCBcInRlbXBsYXRlXCIgfCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdGV4cG9ydFNldHRpbmdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgb2JqZWN0PiB8IG51bGw7XG5cdF90eXBlOiBcIkNvbHVtblwiO1xufTtcblxudHlwZSBCbG9ja0NvbHVtbk92ZXJyaWRlID0gUGFydGlhbDxPbWl0PENvbHVtbk92ZXJyaWRlLCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0ZXhwb3J0U2V0dGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgbnVsbDtcblx0X3R5cGU6IFwiQ29sdW1uT3ZlcnJpZGVcIjtcbn07XG50eXBlIEJsb2NrTWFzc0VkaXQgPSBQYXJ0aWFsPE9taXQ8TWFzc0VkaXQsIFwiY3VzdG9tQ29udGVudFwiPj4gJiB7IGN1c3RvbUNvbnRlbnQ/OiBzdHJpbmc7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uID0gUHJvcGVydGllc09mPFF1aWNrVmFyaWFudFNlbGVjdGlvbj4gJiB7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrQWN0aW9uID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uLCBcInByZXNzXCI+PiAmIHsgX3R5cGU6IFwiQWN0aW9uXCI7IHByZXNzOiBzdHJpbmcgfTtcbnR5cGUgQmxvY2tBY3Rpb25Hcm91cCA9IFByb3BlcnRpZXNPZjxPbWl0PEFjdGlvbkdyb3VwLCBcImFjdGlvbnNcIj4+ICYge1xuXHRfdHlwZTogXCJBY3Rpb25Hcm91cFwiO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xufTtcbnR5cGUgQmxvY2tBY3Rpb25PdmVycmlkZSA9IFByb3BlcnRpZXNPZjxBY3Rpb25PdmVycmlkZT4gJiB7IF90eXBlOiBcIkFjdGlvbk92ZXJyaWRlXCIgfTtcbnR5cGUgQmxvY2tBY3Rpb25Hcm91cE92ZXJyaWRlID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uR3JvdXBPdmVycmlkZSwgXCJhY3Rpb25zXCI+PiAmIHtcblx0X3R5cGU6IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xufTtcbnR5cGUgQ29tbW9uQ3VzdG9tQWN0aW9uID0ge1xuXHRrZXk6IHN0cmluZztcblx0ZW5hYmxlZDogYm9vbGVhbjtcblx0dmlzaWJsZTogYm9vbGVhbjtcblx0Y29tbWFuZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRlbmFibGVPblNlbGVjdDogXCJzaW5nbGVcIiB8IFwibXVsdGlcIiB8IHVuZGVmaW5lZDtcblx0cGxhY2VtZW50OiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgdW5kZWZpbmVkO1xuXHRhbmNob3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0aXNBSU9wZXJhdGlvbj86IGJvb2xlYW47XG5cdHByaW9yaXR5PzogT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHk7XG5cdGdyb3VwPzogbnVtYmVyO1xuXHRvdmVyZmxvd0dyb3VwPzogbnVtYmVyO1xuXHRfdHlwZTogXCJBY3Rpb25cIiB8IFwiQWN0aW9uT3ZlcnJpZGVcIjtcbn07XG5mdW5jdGlvbiBzYWZlR2V0QXR0cmlidXRlKG5vZGU6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBub2RlLmdldEF0dHJpYnV0ZShuYW1lKSA/PyB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZHluYW1pYyBCb29sZWFuIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSBub2RlIFRoZSBub2RlIHRvIGdldCB0aGUgYXR0cmlidXRlIGZyb21cbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIFRoZSBCb29sZWFuIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAqL1xuZnVuY3Rpb24gZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKG5vZGU6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRjb25zdCBlbmFibGVtZW50QXR0ciA9IG5vZGUuZ2V0QXR0cmlidXRlKG5hbWUpO1xuXHRzd2l0Y2ggKGVuYWJsZW1lbnRBdHRyKSB7XG5cdFx0Y2FzZSBudWxsOlxuXHRcdGNhc2UgXCJ0cnVlXCI6XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRjYXNlIFwiZmFsc2VcIjpcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIGVuYWJsZW1lbnRBdHRyIGFzIHVua25vd24gYXMgYm9vbGVhbjsgLy8gVG8gbWFuYWdlIGJpbmRpbmcgZXhwcmVzc2lvbnNcblx0fVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgd2l0aCB0aGUgdmFsdWUgb2YgdW5kZWZpbmVkIGZyb20gdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIHVuZGVmaW5lZCBwcm9wZXJ0aWVzIGZyb21cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG5cdE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0aWYgKG9ialtrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBvYmpba2V5XTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGFjdGlvbiBwcm9wZXJ0aWVzIGZyb20gYW4gWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIG5vZGVcbiAqIEByZXR1cm5zIFRoZSBhY3Rpb24gcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBwYXJzZUFjdGlvbkZyb21FbGVtZW50KGFjdGlvbk5vZGU6IEVsZW1lbnQpOiBCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUge1xuXHRjb25zdCBjb21tb25Qcm9wZXJ0aWVzID0gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uUHJvcGVydGllcyhhY3Rpb25Ob2RlKTtcblx0aWYgKGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvblwiKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRleHQ6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwidGV4dFwiKSA/PyBjb21tb25Qcm9wZXJ0aWVzLmtleSxcblx0XHRcdHByZXNzOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicHJlc3NcIiksXG5cdFx0XHRyZXF1aXJlc1NlbGVjdGlvbjogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlc1NlbGVjdGlvblwiKSA9PT0gXCJ0cnVlXCIsXG5cdFx0XHQuLi5jb21tb25Qcm9wZXJ0aWVzXG5cdFx0fSBhcyBCbG9ja0FjdGlvbjtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdGVuYWJsZUF1dG9TY3JvbGw6IGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImVuYWJsZUF1dG9TY3JvbGxcIiksXG5cdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIiksXG5cdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXCIpLFxuXHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0fSBhcyBCbG9ja0FjdGlvbk92ZXJyaWRlO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbW9uIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSBhY3Rpb24gZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIGdyb3VwIG5vZGVcbiAqIEByZXR1cm5zIFRoZSBjb2x1bW4gcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uUHJvcGVydGllcyhhY3Rpb25Ob2RlOiBFbGVtZW50KTogQ29tbW9uQ3VzdG9tQWN0aW9uIHtcblx0Y29uc3QgYWN0aW9uOiBDb21tb25DdXN0b21BY3Rpb24gPSB7XG5cdFx0a2V5OiBhY3Rpb25Ob2RlLmdldEF0dHJpYnV0ZShcImtleVwiKSEucmVwbGFjZShcIklubGluZVhNTF9cIiwgXCJcIiksXG5cdFx0ZW5hYmxlZDogZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlZFwiKSxcblx0XHR2aXNpYmxlOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJ2aXNpYmxlXCIpLFxuXHRcdGNvbW1hbmQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJjb21tYW5kXCIpLFxuXHRcdGVuYWJsZU9uU2VsZWN0OiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlT25TZWxlY3RcIikgYXMgXCJzaW5nbGVcIiB8IFwibXVsdGlcIiB8IHVuZGVmaW5lZCxcblx0XHRwbGFjZW1lbnQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwbGFjZW1lbnRcIikgYXMgXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZCxcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJhbmNob3JcIiksXG5cdFx0X3R5cGU6IGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvblwiID8gXCJBY3Rpb25cIiA6IFwiQWN0aW9uT3ZlcnJpZGVcIlxuXHR9O1xuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwiaXNBSU9wZXJhdGlvblwiKSkge1xuXHRcdGFjdGlvbltcImlzQUlPcGVyYXRpb25cIl0gPSBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJpc0FJT3BlcmF0aW9uXCIpO1xuXHR9XG5cblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcInByaW9yaXR5XCIpKSB7XG5cdFx0YWN0aW9uW1wicHJpb3JpdHlcIl0gPSBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicHJpb3JpdHlcIikgYXMgT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHk7XG5cdH1cblxuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwiZ3JvdXBcIikpIHtcblx0XHRhY3Rpb25bXCJncm91cFwiXSA9IE51bWJlci5wYXJzZUludChzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZ3JvdXBcIikgPz8gXCJcIiwgMTApO1xuXHR9XG5cblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcIm92ZXJmbG93R3JvdXBcIikpIHtcblx0XHRhY3Rpb25bXCJvdmVyZmxvd0dyb3VwXCJdID0gTnVtYmVyLnBhcnNlSW50KHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJvdmVyZmxvd0dyb3VwXCIpID8/IFwiXCIsIDEwKTtcblx0fVxuXG5cdHJldHVybiBhY3Rpb247XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBhY3Rpb25zIGFuZCBhY3Rpb24gZ3JvdXBzIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdFxuICogQHJldHVybnMgVGhlIGFjdGlvbiBvciBhY3Rpb24gZ3JvdXAgcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gc2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzKFxuXHRhY3Rpb25Ob2RlOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQWN0aW9uIHwgQWN0aW9uT3ZlcnJpZGUgfCBBY3Rpb25Hcm91cCB8IEFjdGlvbkdyb3VwT3ZlcnJpZGVcbik6IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25Hcm91cCB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUgfCBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGUge1xuXHRpZiAoW1wiQWN0aW9uR3JvdXBcIiwgXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCJdLmluY2x1ZGVzKGFjdGlvbk5vZGUubG9jYWxOYW1lKSkge1xuXHRcdGNvbnN0IGNvbW1vblByb3BlcnRpZXMgPSBnZXRDb21tb25DdXN0b21BY3Rpb25zR3JvdXBQcm9wZXJ0aWVzKGFjdGlvbk5vZGUsIGFnZ3JlZ2F0aW9uT2JqZWN0IGFzIEFjdGlvbkdyb3VwIHwgQWN0aW9uR3JvdXBPdmVycmlkZSk7XG5cdFx0aWYgKGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHRleHQ6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwidGV4dFwiKSA/PyBjb21tb25Qcm9wZXJ0aWVzLmtleSxcblx0XHRcdFx0ZGVmYXVsdEFjdGlvbjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImRlZmF1bHRBY3Rpb25cIiksXG5cdFx0XHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0XHRcdH0gYXMgQmxvY2tBY3Rpb25Hcm91cDtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbW1vblByb3BlcnRpZXMgYXMgQmxvY2tBY3Rpb25Hcm91cE92ZXJyaWRlO1xuXHR9XG5cblx0Ly9BY3Rpb24gb3IgQWN0aW9uT3ZlcnJpZGVcblx0cmV0dXJuIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoYWN0aW9uTm9kZSk7XG59XG5cbmNvbnN0IHNldEN1c3RvbU1hc3NFZGl0UHJvcGVydGllcyA9IGZ1bmN0aW9uIChlbGVtZW50OiBFbGVtZW50KTogQmxvY2tNYXNzRWRpdCB7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBcImNvbmZpZ3VyYXRpb25cIixcblx0XHRjdXN0b21Db250ZW50OiBlbGVtZW50LmNoaWxkcmVuWzBdPy5vdXRlckhUTUwsXG5cdFx0dmlzaWJsZUZpZWxkczogZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ2aXNpYmxlRmllbGRzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0aWdub3JlZEZpZWxkczogZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJpZ25vcmVkRmllbGRzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0b3BlcmF0aW9uR3JvdXBpbmdNb2RlOiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJvcGVyYXRpb25Hcm91cGluZ01vZGVcIikgPz8gdW5kZWZpbmVkKSBhcyBcIkNoYW5nZVNldFwiIHwgXCJJc29sYXRlZFwiIHwgdW5kZWZpbmVkXG5cdH07XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBUaGUgWE1MIG5vZGUgY29udGFpbmluZyB0aGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uXG4gKiBAcmV0dXJucyBUaGUgUXVpY2tWYXJpYW50U2VsZWN0aW9uIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5jb25zdCBzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24gPSBmdW5jdGlvbiAocXVpY2tWYXJpYW50U2VsZWN0aW9uOiBFbGVtZW50KTogQmxvY2tRdWlja1ZhcmlhbnRTZWxlY3Rpb24ge1xuXHRyZXR1cm4ge1xuXHRcdGtleTogXCJxdWlja0ZpbHRlcnNcIixcblx0XHRwYXRoczogcXVpY2tWYXJpYW50U2VsZWN0aW9uLmdldEF0dHJpYnV0ZShcInBhdGhzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0c2hvd0NvdW50czogcXVpY2tWYXJpYW50U2VsZWN0aW9uLmdldEF0dHJpYnV0ZShcInNob3dDb3VudHNcIikgPT09IFwidHJ1ZVwiXG5cdH07XG59O1xuXG5jb25zdCBzZXRDdXN0b21BY3Rpb25PdmVyZmxvd0dyb3VwUHJvcGVydGllcyA9IGZ1bmN0aW9uIChvdmVyRmxvd0dyb3VwOiBFbGVtZW50KTogUHJvcGVydGllc09mPE92ZXJmbG93R3JvdXA+IHtcblx0cmV0dXJuIHtcblx0XHRvdmVyZmxvd0dyb3VwOiBOdW1iZXIucGFyc2VJbnQob3ZlckZsb3dHcm91cC5nZXRBdHRyaWJ1dGUoXCJvdmVyZmxvd0dyb3VwXCIpIGFzIHN0cmluZywgMTApLFxuXHRcdHNob3dTZXBhcmF0b3I6IG92ZXJGbG93R3JvdXAuZ2V0QXR0cmlidXRlKFwic2hvd1NlcGFyYXRvclwiKSA9PT0gXCJ0cnVlXCJcblx0fTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tb24gY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIGFjdGlvbiBncm91cHMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIGdyb3VwIG5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdCBUaGUgYWdncmVnYXRpb24gb2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIGdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMoXG5cdGFjdGlvbk5vZGU6IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBBY3Rpb25Hcm91cCB8IEFjdGlvbkdyb3VwT3ZlcnJpZGVcbik6IHtcblx0a2V5OiBzdHJpbmc7XG5cdGFjdGlvbnM6IChCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpW107XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdF90eXBlOiBcIkFjdGlvbkdyb3VwXCIgfCBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbn0ge1xuXHRjb25zdCBhY3Rpb25zSW5NZW51ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFjdGlvbk5vZGUuY2hpbGRyZW4pLm1hcCgoc3ViQWN0aW9uOiBFbGVtZW50KSA9PiB7XG5cdFx0cmV0dXJuIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoc3ViQWN0aW9uKTtcblx0fSk7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSA9IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0YWN0aW9uTm9kZS5zZXRBdHRyaWJ1dGUoXCJrZXlcIiwgYWdncmVnYXRpb25PYmplY3Qua2V5KTtcblx0cmV0dXJuIHtcblx0XHRrZXk6IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSxcblx0XHRhY3Rpb25zOiBhY3Rpb25zSW5NZW51LFxuXHRcdGFuY2hvcjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImFuY2hvclwiKSxcblx0XHRwbGFjZW1lbnQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwbGFjZW1lbnRcIikgYXMgXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZCxcblx0XHRfdHlwZTogYWN0aW9uTm9kZS5sb2NhbE5hbWUgPT09IFwiQWN0aW9uR3JvdXBcIiA/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/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQ3JlYXRpb25PcHRpb25zXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChjcmVhdGlvbk9wdGlvbnNJbnB1dDogVGFibGVDcmVhdGlvbk9wdGlvbnMpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0Y3JlYXRpb25PcHRpb25zSW5wdXQubmFtZSAmJlxuXHRcdFx0XHQhW1wiTmV3UGFnZVwiLCBcIklubGluZVwiLCBcIklubGluZUNyZWF0aW9uUm93c1wiLCBcIkV4dGVybmFsXCIsIFwiQ3JlYXRpb25EaWFsb2dcIl0uaW5jbHVkZXMoY3JlYXRpb25PcHRpb25zSW5wdXQubmFtZSlcblx0XHRcdCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEFsbG93ZWQgdmFsdWUgJHtjcmVhdGlvbk9wdGlvbnNJbnB1dC5uYW1lfSBmb3IgY3JlYXRpb25Nb2RlIGRvZXMgbm90IG1hdGNoYCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBjcmVhdGlvbk9wdGlvbnNJbnB1dDtcblx0XHR9XG5cdH0pXG5cdGNyZWF0aW9uTW9kZTogUHJvcGVydGllc09mPFRhYmxlQ3JlYXRpb25PcHRpb25zPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY29udHJvbCB0aGUgYWdncmVnYXRpb24gYmVoYXZpb3Jcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFuYWx5dGljYWxDb25maWd1cmF0aW9uXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcblx0XHRcdGlmICh0eXBlb2YgYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbi5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gXCJ0cnVlXCI7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0fVxuXHR9KVxuXHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUHJvcGVydGllc09mPEFuYWx5dGljYWxDb25maWd1cmF0aW9uPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgYWN0aW9ucyBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIiwgXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbk92ZXJyaWRlXCIsIFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cE92ZXJyaWRlXCJdLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdGhhc1ZpcnR1YWxOb2RlOiB0cnVlLFxuXHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUFjdGlvbkdyb3VwUHJvcGVydGllc1xuXHR9KVxuXHRhY3Rpb25zPzogUmVjb3JkPHN0cmluZywgQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbkdyb3VwIHwgQmxvY2tBY3Rpb25PdmVycmlkZSB8IEJsb2NrQWN0aW9uR3JvdXBPdmVycmlkZT47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBtYXNzIGVkaXQgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLk1hc3NFZGl0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0bXVsdGlwbGU6IGZhbHNlLFxuXHRcdHNraXBLZXk6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzXG5cdH0pXG5cdG1hc3NFZGl0PzogUmVjb3JkPHN0cmluZywgQmxvY2tNYXNzRWRpdD47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBjb2x1bW5zIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5cIixcblx0XHRhbHRUeXBlczogW1wic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5PdmVycmlkZVwiXSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRpc0RlZmF1bHQ6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tQ29sdW1uUHJvcGVydGllc1xuXHR9KVxuXHRjb2x1bW5zPzogUmVjb3JkPHN0cmluZywgQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlPjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuUXVpY2tWYXJpYW50U2VsZWN0aW9uXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0c2tpcEtleTogdHJ1ZSxcblx0XHRtdWx0aXBsZTogZmFsc2UsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0UXVpY2tWYXJpYW50U2VsZWN0aW9uXG5cdH0pXG5cdHF1aWNrVmFyaWFudFNlbGVjdGlvbj86IFJlY29yZDxzdHJpbmcsIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uPjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIG92ZXJmbG93R3JvdXBzIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5PdmVyZmxvd0dyb3VwXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0aGFzVmlydHVhbE5vZGU6IHRydWUsXG5cdFx0c2tpcEtleTogdHJ1ZSxcblx0XHRyZWFsbHlTa2lwS2V5OiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUFjdGlvbk92ZXJmbG93R3JvdXBQcm9wZXJ0aWVzXG5cdH0pXG5cdGFjdGlvbk92ZXJmbG93R3JvdXBzPzogUmVjb3JkPHN0cmluZywgT3ZlcmZsb3dHcm91cD47XG5cblx0Y29udmVydGVkTWV0YWRhdGE6IENvbnZlcnRlZE1ldGFkYXRhO1xuXG5cdGNvbnRleHRPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+O1xuXG5cdC8qKlxuXHQgKiBCZWZvcmUgYSB0YWJsZSByZWJpbmQsIGFuIGV2ZW50IGlzIHRyaWdnZXJlZCB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBiaW5kaW5nLlxuXHQgKlxuXHQgKiBUaGUgZXZlbnQgY29udGFpbnMgYSBwYXJhbWV0ZXIsIGBjb2xsZWN0aW9uQmluZGluZ0luZm9gLCB3aGljaCBpcyBhbiBpbnN0YW5jZSBvZiBgQ29sbGVjdGlvbkJpbmRpbmdJbmZvQVBJYC5cblx0ICogSXQgY2FuIGFsc28gY29udGFpbiBhbiBvcHRpb25hbCBwYXJhbWV0ZXIsIGBxdWlja0ZpbHRlcktleWAsIHdoaWNoIGluZGljYXRlcyB3aGF0IGlzIHRoZSBxdWljayBmaWx0ZXIga2V5IChpZiBhbnkpIGJlaW5nIHByb2Nlc3NlZCBmb3IgdGhlIHRhYmxlLlxuXHQgKiBUaGlzIGFsbG93cyB5b3UgdG8gbWFuaXB1bGF0ZSB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYXR0YWNoIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSB0YWJsZSdzIGxpc3QgYmluZGluZy5cblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byBhZGQgc2VsZWN0cywgYW5kIGFkZCBvciByZWFkIHRoZSBzb3J0ZXJzIGFuZCBmaWx0ZXJzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHByaXZhdGUgcmVhZG9ubHkgYmVmb3JlUmViaW5kVGFibGU/OiBFdmVudEhhbmRsZXI8XG5cdFx0VUk1RXZlbnQ8eyBjb2xsZWN0aW9uQmluZGluZ0luZm86IENvbGxlY3Rpb25CaW5kaW5nSW5mb0FQSTsgcXVpY2tGaWx0ZXJLZXk/OiBzdHJpbmcgfSwgVGFibGVBUEk+XG5cdD47XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgYSByb3cuIFRoZSBldmVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB3aGljaCByb3cgaXMgY2hvc2VuLlxuXHQgKlxuXHQgKiBZb3UgY2FuIHNldCB0aGlzIHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiBtYW51YWxseS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRyb3dQcmVzcz86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDxSb3dBY3Rpb25JdGVtJFByZXNzRXZlbnRQYXJhbWV0ZXJzLCBUYWJsZUFQST4+O1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBjaGFuZ2UgZXZlbnQgb2YgdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKlxuXHQgKiBJbnRlcm5hbCBvbmx5XG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdGxpc3RCaW5kaW5nQ2hhbmdlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgYW4gb3B0aW9uIG9mIHRoZSBzZWdtZW50ZWQgYnV0dG9uIGluIHRoZSBBTFAgVmlld1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRzZWdtZW50ZWRCdXR0b25QcmVzcz86IHN0cmluZztcblxuXHRAYmxvY2tFdmVudCgpXG5cdHZhcmlhbnRTYXZlZD86IHN0cmluZztcblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpbiB0aGUgdGFibGUgY2hhbmdlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZT86IEV2ZW50SGFuZGxlcjxcblx0XHRVSTVFdmVudDxUYWJsZSRTZWxlY3Rpb25DaGFuZ2VFdmVudFBhcmFtZXRlcnMgJiB7IHNlbGVjdGVkQ29udGV4dDogQ29udGV4dFtdIH0sIFRhYmxlQVBJPlxuXHQ+O1xuXG5cdEBibG9ja0V2ZW50KClcblx0dmFyaWFudFNlbGVjdGVkPzogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpbml0aWFsTG9hZD86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSByZWFkb25seSBhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWw7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IFByb3BlcnRpZXNPZjxUYWJsZUJsb2NrPiwgY29udHJvbENvbmZpZ3VyYXRpb246IHVua25vd24sIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgY29udHJvbENvbmZpZ3VyYXRpb24sIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRcdGNvbnN0IGNvbnRleHRPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdFx0dGhpcy5tZXRhUGF0aCxcblx0XHRcdHRoaXMuY29udGV4dFBhdGhcblx0XHQpO1xuXHRcdHRoaXMuY29udGV4dE9iamVjdFBhdGggPSBjb250ZXh0T2JqZWN0UGF0aDtcblxuXHRcdHRoaXMudGFibGVEZWZpbml0aW9uID0gVGFibGVCbG9jay5jcmVhdGVUYWJsZURlZmluaXRpb24odGhpcywgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk7XG5cdFx0dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0ID0gTWFjcm9BUEkuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy50YWJsZURlZmluaXRpb24gYXMgb2JqZWN0LCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKTtcblxuXHRcdHRoaXMuY29udmVydGVkTWV0YWRhdGEgPSB0aGlzLmNvbnRleHRPYmplY3RQYXRoLmNvbnZlcnRlZFR5cGVzO1xuXHRcdHRoaXMubWV0YU1vZGVsID0gdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncy5tb2RlbHMubWV0YU1vZGVsO1xuXHRcdHRoaXMuY29sbGVjdGlvbkVudGl0eSA9IHRoaXMuY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGgodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jb2xsZWN0aW9uKS50YXJnZXQgYXMgRW50aXR5U2V0O1xuXHRcdHRoaXMuYXBwQ29tcG9uZW50ID0gdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncy5hcHBDb21wb25lbnQ7XG5cdFx0dGhpcy5zZXRVcElkKCk7XG5cblx0XHR0aGlzLmNyZWF0aW9uTW9kZSA/Pz0ge307XG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUubmFtZSA/Pz0gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jcmVhdGUubW9kZSBhcyBUYWJsZUNyZWF0aW9uT3B0aW9uc1tcIm5hbWVcIl07XG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQgPz89ICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNyZWF0ZSBhcyBDcmVhdGVCZWhhdmlvcikuYXBwZW5kO1xuXHRcdC8vIFNwZWNpYWwgY29kZSBmb3IgcmVhZE9ubHlcblx0XHQvLyByZWFkb25seSA9IGZhbHNlIC0+IEZvcmNlIGVkaXRhYmxlXG5cdFx0Ly8gcmVhZG9ubHkgPSB0cnVlIC0+IEZvcmNlIGRpc3BsYXkgbW9kZVxuXHRcdC8vIHJlYWRvbmx5ID0gdW5kZWZpbmVkIC0+IEJvdW5kIHRvIGVkaXQgZmxvd1xuXHRcdGlmIChcblx0XHRcdHRoaXMucmVhZE9ubHkgPT09IHVuZGVmaW5lZCAmJlxuXHRcdFx0KHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uZGlzcGxheU1vZGUgPT09IHRydWUgfHwgdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5yZWFkT25seSA9PT0gdHJ1ZSlcblx0XHQpIHtcblx0XHRcdHRoaXMucmVhZE9ubHkgPSB0cnVlO1xuXHRcdH1cblxuXHRcdFRhYmxlQVBJLnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuaWdub3JlZEZpZWxkcywgW10sIHRoaXMudGFibGVEZWZpbml0aW9uKTtcblxuXHRcdGxldCB1c2VCYXNpY1NlYXJjaCA9IGZhbHNlO1xuXG5cdFx0Ly8gTm90ZSBmb3IgdGhlICdmaWx0ZXJCYXInIHByb3BlcnR5OlxuXHRcdC8vIDEuIElEIHJlbGF0aXZlIHRvIHRoZSB2aWV3IG9mIHRoZSBUYWJsZS5cblx0XHQvLyAyLiBBYnNvbHV0ZSBJRC5cblx0XHQvLyAzLiBJRCB3b3VsZCBiZSBjb25zaWRlcmVkIGluIGFzc29jaWF0aW9uIHRvIFRhYmxlQVBJJ3MgSUQuXG5cdFx0aWYgKCF0aGlzLmZpbHRlckJhcikge1xuXHRcdFx0Ly8gZmlsdGVyQmFyOiBQdWJsaWMgcHJvcGVydHkgZm9yIGJ1aWxkaW5nIGJsb2Nrc1xuXHRcdFx0Ly8gZmlsdGVyQmFySWQ6IE9ubHkgdXNlZCBhcyBJbnRlcm5hbCBwcml2YXRlIHByb3BlcnR5IGZvciBGRSB0ZW1wbGF0ZXNcblx0XHRcdHRoaXMuZmlsdGVyQmFyID0gZ2VuZXJhdGUoW3RoaXMuY29udGVudElkLCBcIlN0YW5kYXJkQWN0aW9uXCIsIFwiQmFzaWNTZWFyY2hcIl0pO1xuXHRcdFx0dXNlQmFzaWNTZWFyY2ggPSB0cnVlO1xuXHRcdH1cblx0XHQvLyBJbnRlcm5hbCBwcm9wZXJ0aWVzXG5cdFx0dGhpcy51c2VCYXNpY1NlYXJjaCA9IHVzZUJhc2ljU2VhcmNoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGFubm90YXRpb24gcGF0aCBwb2ludGluZyB0byB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uIChMaW5lSXRlbSkuXG5cdCAqIEBwYXJhbSBjb250ZXh0T2JqZWN0UGF0aCBUaGUgZGF0YW1vZGVsIG9iamVjdCBwYXRoIGZvciB0aGUgdGFibGVcblx0ICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSBhbm5vdGF0aW9uIHBhdGhcblx0ICovXG5cdHN0YXRpYyBnZXRWaXN1YWxpemF0aW9uUGF0aChcblx0XHRjb250ZXh0T2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pixcblx0XHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBtZXRhUGF0aCA9IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoY29udGV4dE9iamVjdFBhdGgpIGFzIHN0cmluZztcblxuXHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgbWV0YXBhdGggaXMgbm90IHNldFxuXHRcdGlmICghbWV0YVBhdGgpIHtcblx0XHRcdExvZy5lcnJvcihgTWlzc2luZyBtZXRhIHBhdGggcGFyYW1ldGVyIGZvciBMaW5lSXRlbWApO1xuXHRcdFx0cmV0dXJuIGBAJHtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbX1gO1xuXHRcdH1cblxuXHRcdGlmIChpc0Fubm90YXRpb25PZlRlcm08TGluZUl0ZW0+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0pKSB7XG5cdFx0XHRyZXR1cm4gbWV0YVBhdGg7IC8vIE1ldGFQYXRoIGlzIGFscmVhZHkgcG9pbnRpbmcgdG8gYSBMaW5lSXRlbVxuXHRcdH1cblx0XHQvL05lZWQgdG8gc3dpdGNoIHRvIHRoZSBjb250ZXh0IHJlbGF0ZWQgdGhlIFBWIG9yIFNQVlxuXHRcdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihtZXRhUGF0aCk7XG5cblx0XHRsZXQgdmlzdWFsaXphdGlvbnM6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10gPSBbXTtcblx0XHRpZiAoXG5cdFx0XHRpc0Fubm90YXRpb25PZlRlcm08U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0XHRcdGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdFx0KSB8fFxuXHRcdFx0aXNBbm5vdGF0aW9uT2ZUZXJtPFByZXNlbnRhdGlvblZhcmlhbnQ+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudClcblx0XHQpIHtcblx0XHRcdHZpc3VhbGl6YXRpb25zID0gZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbihcblx0XHRcdFx0Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LFxuXHRcdFx0XHRtZXRhUGF0aCxcblx0XHRcdFx0cmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmVycm9yKGBCYWQgbWV0YXBhdGggcGFyYW1ldGVyIGZvciB0YWJsZSA6ICR7Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IS50ZXJtfWApO1xuXHRcdH1cblxuXHRcdGNvbnN0IGxpbmVJdGVtVml6ID0gdmlzdWFsaXphdGlvbnMuZmluZCgodml6KSA9PiB7XG5cdFx0XHRyZXR1cm4gdml6LnZpc3VhbGl6YXRpb24udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW07XG5cdFx0fSk7XG5cblx0XHRpZiAobGluZUl0ZW1WaXopIHtcblx0XHRcdHJldHVybiBsaW5lSXRlbVZpei5hbm5vdGF0aW9uUGF0aDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gZmFsbGJhY2sgdG8gZGVmYXVsdCBMaW5lSXRlbSBpZiBhbm5vdGF0aW9uIG1pc3NpbmcgaW4gUFZcblx0XHRcdExvZy5lcnJvcihgQmFkIG1ldGEgcGF0aCBwYXJhbWV0ZXIgZm9yIExpbmVJdGVtOiAke2NvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCEudGVybX1gKTtcblx0XHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDsgLy8gRmFsbGJhY2tcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgYWRkU2V0dGluZyA9ICh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkID0+IHtcblx0XHRpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGFyZ2V0W2tleV0gPSB2YWx1ZTtcblx0XHR9XG5cdH07XG5cblx0Z2V0VGFibGVTZXR0aW5ncygpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdFx0Y29uc3QgdGFibGVTZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVFeHBvcnRcIiwgdGhpcy5lbmFibGVFeHBvcnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydEZpbGVOYW1lXCIsIHRoaXMuZXhwb3J0RmlsZU5hbWUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydFNoZWV0TmFtZVwiLCB0aGlzLmV4cG9ydFNoZWV0TmFtZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicmVhZE9ubHlcIiwgdGhpcy5yZWFkT25seSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiaWdub3JlZEZpZWxkc1wiLCB0aGlzLmlnbm9yZWRGaWVsZHMpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNlbGVjdGlvbkxpbWl0XCIsIHRoaXMuc2VsZWN0aW9uTGltaXQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImNvbmRlbnNlZFRhYmxlTGF5b3V0XCIsIHRoaXMuY29uZGVuc2VkVGFibGVMYXlvdXQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydFJlcXVlc3RTaXplXCIsIHRoaXMuZXhwb3J0UmVxdWVzdFNpemUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImZyb3plbkNvbHVtbkNvdW50XCIsIHRoaXMuZnJvemVuQ29sdW1uQ291bnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb2x1bW5GcmVlemVcIiwgdGhpcy5kaXNhYmxlQ29sdW1uRnJlZXplKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJ3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlclwiLCB0aGlzLndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJyb3dDb3VudE1vZGVcIiwgdGhpcy5yb3dDb3VudE1vZGUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50XCIsIHRoaXMucm93Q291bnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZUZ1bGxTY3JlZW5cIiwgdGhpcy5lbmFibGVGdWxsU2NyZWVuKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3RBbGxcIiwgdGhpcy5lbmFibGVTZWxlY3RBbGwpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc1wiLCB0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlUGFzdGVcIiwgdGhpcy5lbmFibGVQYXN0ZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZFwiLCB0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNjcm9sbFRocmVzaG9sZFwiLCB0aGlzLnNjcm9sbFRocmVzaG9sZCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidGhyZXNob2xkXCIsIHRoaXMudGhyZXNob2xkKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJwb3BpbkxheW91dFwiLCB0aGlzLnBvcGluTGF5b3V0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25Nb2RlXCIsIHRoaXMuc2VsZWN0aW9uTW9kZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidHlwZVwiLCB0aGlzLnR5cGUpO1xuXHRcdGlmICh0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbj8ucXVpY2tGaWx0ZXJzPy5wYXRocz8ubGVuZ3RoKSB7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJxdWlja1ZhcmlhbnRTZWxlY3Rpb25cIiwge1xuXHRcdFx0XHRwYXRoczogdGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24ucXVpY2tGaWx0ZXJzLnBhdGhzLm1hcCgocGF0aCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB7IGFubm90YXRpb25QYXRoOiBwYXRoIH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRzaG93Q291bnRzOiB0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbi5xdWlja0ZpbHRlcnMuc2hvd0NvdW50c1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuY3JlYXRpb25Nb2RlKSB7XG5cdFx0XHRjb25zdCBjcmVhdGlvbk1vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcIm5hbWVcIiwgdGhpcy5jcmVhdGlvbk1vZGUubmFtZSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImNyZWF0aW9uRmllbGRzXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0aW9uRmllbGRzKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwiY3JlYXRlQXRFbmRcIiwgdGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJvdXRib3VuZFwiLCB0aGlzLmNyZWF0aW9uTW9kZS5vdXRib3VuZCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoY3JlYXRpb25Nb2RlKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJjcmVhdGlvbk1vZGVcIl0gPSBjcmVhdGlvbk1vZGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubWFzc0VkaXQpIHtcblx0XHRcdGNvbnN0IGVuYWJsZU1hc3NFZGl0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImN1c3RvbUZyYWdtZW50XCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8uY3VzdG9tQ29udGVudCk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiZnJvbUlubGluZVwiLCB0cnVlKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJ2aXNpYmxlRmllbGRzXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8udmlzaWJsZUZpZWxkcz8uam9pbihcIixcIikpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5tYXNzRWRpdC5jb25maWd1cmF0aW9uPy5pZ25vcmVkRmllbGRzPy5qb2luKFwiLFwiKSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwib3BlcmF0aW9uR3JvdXBpbmdNb2RlXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8ub3BlcmF0aW9uR3JvdXBpbmdNb2RlKTtcblx0XHRcdHRhYmxlU2V0dGluZ3NbXCJlbmFibGVNYXNzRWRpdFwiXSA9IGVuYWJsZU1hc3NFZGl0O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uPy5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCBhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhhbmFseXRpY2FsQ29uZmlndXJhdGlvbiwgXCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsXCIsIHRoaXMuYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24pLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGFibGVTZXR0aW5nc1tcImFuYWx5dGljYWxDb25maWd1cmF0aW9uXCJdID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0YWJsZVNldHRpbmdzO1xuXHR9XG5cblx0c3RhdGljIGNyZWF0ZVRhYmxlRGVmaW5pdGlvbih0YWJsZTogVGFibGVCbG9jaywgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nczogVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdFx0Y29uc3QgaW5pdGlhbENvbnZlcnRlckNvbnRleHQgPSB0YWJsZS5nZXRDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0dGFibGUuY29udGV4dE9iamVjdFBhdGgsXG5cdFx0XHR0YWJsZS5jb250ZXh0UGF0aD8uZ2V0UGF0aCgpLFxuXHRcdFx0dGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nc1xuXHRcdCk7XG5cdFx0Y29uc3QgdmlzdWFsaXphdGlvblBhdGggPSBUYWJsZUJsb2NrLmdldFZpc3VhbGl6YXRpb25QYXRoKHRhYmxlLmNvbnRleHRPYmplY3RQYXRoLCBpbml0aWFsQ29udmVydGVyQ29udGV4dCk7XG5cblx0XHRjb25zdCB0YWJsZVNldHRpbmdzID0gdGFibGUuZ2V0VGFibGVTZXR0aW5ncygpO1xuXHRcdGNvbnN0IGV4dHJhTWFuaWZlc3RTZXR0aW5nczogVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdFx0XHRvdmVyZmxvd0dyb3VwczogVGFibGVCbG9jay5jcmVhdGVBY3Rpb25PdmVyZmxvd0dyb3Vwcyh0YWJsZSksXG5cdFx0XHRhY3Rpb25zOiBUYWJsZUJsb2NrLmNyZWF0ZUFjdGlvbnNGcm9tTWFuaWZlc3QodGFibGUpLFxuXHRcdFx0Y29sdW1uczogVGFibGVCbG9jay5jcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGUpLFxuXHRcdFx0dGFibGVTZXR0aW5nc1xuXHRcdH07XG5cblx0XHRjb25zdCBleHRyYVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRleHRyYVBhcmFtc1t2aXN1YWxpemF0aW9uUGF0aF0gPSBleHRyYU1hbmlmZXN0U2V0dGluZ3M7XG5cdFx0Y29uc3QgY29udmVydGVyQ29udGV4dCA9IHRhYmxlLmdldENvbnZlcnRlckNvbnRleHQoXG5cdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCxcblx0XHRcdHRhYmxlLmNvbnRleHRQYXRoPy5nZXRQYXRoKCksXG5cdFx0XHR0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzLFxuXHRcdFx0ZXh0cmFQYXJhbXNcblx0XHQpO1xuXG5cdFx0bGV0IGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50VHlwZSB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGFibGUuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoKSB7XG5cdFx0XHRjb25zdCBzdk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8U2VsZWN0aW9uVmFyaWFudD4oXG5cdFx0XHRcdHRhYmxlLmFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCxcblx0XHRcdFx0dGFibGUuY29udGV4dFBhdGggYXMgQ29udGV4dFxuXHRcdFx0KTtcblx0XHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50ID0gc3ZPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHR9XG5cblx0XHRjb25zdCB2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiA9IGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbihcblx0XHRcdCh0YWJsZS5pbk11bHRpVmlldyAmJiB0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdFx0PyBjb252ZXJ0ZXJDb250ZXh0LmdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoXG5cdFx0XHRcdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdFx0ICApXG5cdFx0XHRcdDogZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCh0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCkpIGFzIHN0cmluZyxcblx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHR7XG5cdFx0XHRcdGlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQ6IHRhYmxlLnVzZUNvbmRlbnNlZExheW91dCxcblx0XHRcdFx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRcdGlzTWFjcm9Pck11bHRpcGxlVmlldzogdGFibGUuaW5NdWx0aVZpZXcgPz8gdHJ1ZVxuXHRcdFx0fVxuXHRcdCk7XG5cblx0XHQvLyB0YWtlIHRoZSAoZmlyc3QpIFRhYmxlIHZpc3VhbGl6YXRpb25cblx0XHRyZXR1cm4gdmlzdWFsaXphdGlvbkRlZmluaXRpb24udmlzdWFsaXphdGlvbnMuZmluZChcblx0XHRcdCh2aXo6IFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbikgPT4gdml6LnR5cGUgPT09IFZpc3VhbGl6YXRpb25UeXBlLlRhYmxlXG5cdFx0KSBhcyBUYWJsZVZpc3VhbGl6YXRpb247XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgYWN0aW9ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBhY3Rpb25zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0KHRhYmxlOiBUYWJsZUJsb2NrKTogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RBY3Rpb24+IHtcblx0XHRjb25zdCBhY3Rpb25zU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPiA9IHt9O1xuXHRcdGNvbnN0IGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCA9IChhY3Rpb246IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25PdmVycmlkZSk6IHZvaWQgPT4ge1xuXHRcdFx0Y29uc3Qga2V5ID0gYWN0aW9uLmtleSE7XG5cdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0XHRwbGFjZW1lbnQ6IChhY3Rpb24ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdGFuY2hvcjogYWN0aW9uLmFuY2hvclxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb21tYW5kOiBhY3Rpb24uY29tbWFuZCxcblx0XHRcdFx0ZW5hYmxlT25TZWxlY3Q6IGFjdGlvbi5lbmFibGVPblNlbGVjdCxcblx0XHRcdFx0dmlzaWJsZTogYWN0aW9uLnZpc2libGUsXG5cdFx0XHRcdGVuYWJsZWQ6IGFjdGlvbi5lbmFibGVkLFxuXHRcdFx0XHRpc0FJT3BlcmF0aW9uOiBhY3Rpb24uaXNBSU9wZXJhdGlvbixcblx0XHRcdFx0cHJpb3JpdHk6IGFjdGlvbi5wcmlvcml0eSxcblx0XHRcdFx0Z3JvdXA6IGFjdGlvbi5ncm91cCxcblx0XHRcdFx0b3ZlcmZsb3dHcm91cDogYWN0aW9uLm92ZXJmbG93R3JvdXBcblx0XHRcdH07XG5cdFx0XHRpZiAoYWN0aW9uLl90eXBlID09PSBcIkFjdGlvblwiKSB7XG5cdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRcdHRleHQ6IGFjdGlvbi50ZXh0LFxuXHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlLFxuXHRcdFx0XHRcdHByZXNzOiBhY3Rpb24ucHJlc3MsXG5cdFx0XHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvblxuXHRcdFx0XHR9O1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBhZnRlckV4ZWN1dGlvbiA9IHtcblx0XHRcdFx0ZW5hYmxlQXV0b1Njcm9sbDogYWN0aW9uW1wiZW5hYmxlQXV0b1Njcm9sbFwiXSxcblx0XHRcdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBhY3Rpb25bXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIl1cblx0XHRcdH07XG5cdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGFmdGVyRXhlY3V0aW9uKTtcblx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0YWZ0ZXJFeGVjdXRpb246IE9iamVjdC5lbnRyaWVzKGFmdGVyRXhlY3V0aW9uKS5sZW5ndGggPyBhZnRlckV4ZWN1dGlvbiA6IHVuZGVmaW5lZCxcblx0XHRcdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBhY3Rpb24uZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0aWYgKHRhYmxlLmFjdGlvbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuYWN0aW9ucykuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25cIiB8fCBpdGVtLl90eXBlID09PSBcIkFjdGlvbk92ZXJyaWRlXCIpIHtcblx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoaXRlbSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25Hcm91cFwiIHx8IGl0ZW0uX3R5cGUgPT09IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiKSB7XG5cdFx0XHRcdFx0Ly8gQWN0aW9uR3JvdXAgb3IgQWN0aW9uR3JvdXBPdmVycmlkZVxuXHRcdFx0XHRcdGNvbnN0IGtleSA9IGl0ZW0ua2V5ITtcblx0XHRcdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGl0ZW0ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdFx0XHRhbmNob3I6IGl0ZW0uYW5jaG9yXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bWVudTogaXRlbS5hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24ua2V5ISlcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGlmIChpdGVtLl90eXBlID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0XHRcdFx0dGV4dDogaXRlbS50ZXh0LFxuXHRcdFx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBpdGVtLmRlZmF1bHRBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpdGVtLmFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoYWN0aW9uKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBhY3Rpb25zU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3Qgb3ZlcmZsb3dHcm91cHMgZm9yIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSBibG9ja1xuXHQgKiBAcmV0dXJucyBUaGUgbWFuaWZlc3Qgb3ZlcmZsb3dHcm91cHMgZm9yIHRoZSB0YWJsZVxuXHQgKi9cblx0c3RhdGljIGNyZWF0ZUFjdGlvbk92ZXJmbG93R3JvdXBzKHRhYmxlOiBUYWJsZUJsb2NrKTogT3ZlcmZsb3dHcm91cHNDb25maWd1cmF0aW9uIHtcblx0XHRjb25zdCBvdmVyZmxvd0dyb3Vwc1NldHRpbmdzOiBPdmVyZmxvd0dyb3Vwc0NvbmZpZ3VyYXRpb24gPSB7fTtcblx0XHRpZiAodGFibGUuYWN0aW9uT3ZlcmZsb3dHcm91cHMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuYWN0aW9uT3ZlcmZsb3dHcm91cHMpLmZvckVhY2goKG92ZXJGbG93R3JvdXApID0+IHtcblx0XHRcdFx0b3ZlcmZsb3dHcm91cHNTZXR0aW5nc1tvdmVyRmxvd0dyb3VwLm92ZXJmbG93R3JvdXBdID0ge1xuXHRcdFx0XHRcdHNob3dTZXBhcmF0b3I6IG92ZXJGbG93R3JvdXAuc2hvd1NlcGFyYXRvclxuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG92ZXJmbG93R3JvdXBzU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgY29sdW1ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBjb2x1bW5zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGU6IFRhYmxlQmxvY2spOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZT4ge1xuXHRcdGNvbnN0IGlzQmxvY2tDb2x1bW4gPSAoYmxvY2s6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZSk6IGJsb2NrIGlzIEJsb2NrQ29sdW1uID0+IHtcblx0XHRcdHJldHVybiBibG9jay5fdHlwZSA9PT0gXCJDb2x1bW5cIjtcblx0XHR9O1xuXG5cdFx0Y29uc3QgY29sdW1uU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlPiA9IHt9O1xuXG5cdFx0aWYgKHRhYmxlLmNvbHVtbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuY29sdW1ucykuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG5cdFx0XHRcdGxldCBjdXN0b21Db2x1bW5EZWZpbml0aW9uOiBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCAoQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUgJiB7IGtleTogc3RyaW5nIH0pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGhlYWRlcjogY29sdW1uLmhlYWRlciEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0cHJvcGVydGllczogY29sdW1uLnByb3BlcnRpZXMsXG5cdFx0XHRcdFx0XHR0b29sdGlwOiBjb2x1bW4udG9vbHRpcCxcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiBjb2x1bW4udGVtcGxhdGUhLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRyZXF1aXJlZDogY29sdW1uLnJlcXVpcmVkLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJTbG90XCIsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGtleTogY29sdW1uLmtleSEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZW1vdmUgYWxsIHVuZGVmaW5lZCBwcm9wZXJ0aWVzLCBzbyB0aGF0IHRoZXkgZG9uJ3QgZXJhc2Ugd2hhdCBpcyBzZXQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0XHRcdC8vIChuZWNlc3NhcnkgYmVjYXVzZSBtYW5pZmVzdC1iYXNlZCBjb2x1bW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIHNsb3QgY29sdW1ucyBhbmQgd2UgZG9uJ3QgY29weVxuXHRcdFx0XHQvLyBhbGwgdGhlaXIgcHJvcGVydGllcyBpbiB0aGUgWE1MKVxuXHRcdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGN1c3RvbUNvbHVtbkRlZmluaXRpb24pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pICYmIChjb2x1bW4uYW5jaG9yIHx8IGNvbHVtbi5wbGFjZW1lbnQpKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbi5wb3NpdGlvbiA9IHtcblx0XHRcdFx0XHRcdGFuY2hvcjogY29sdW1uLmFuY2hvcixcblx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGNvbHVtbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnRcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29sdW1uU2V0dGluZ3NbY29sdW1uLmtleSFdID0gY3VzdG9tQ29sdW1uRGVmaW5pdGlvbjtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gY29sdW1uU2V0dGluZ3M7XG5cdH1cblxuXHRzZXRVcElkKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlkKSB7XG5cdFx0XHQvLyBUaGUgZ2l2ZW4gSUQgc2hhbGwgYmUgYXNzaWduZWQgdG8gdGhlIFRhYmxlQVBJIGFuZCBub3QgdG8gdGhlIE1EQyBUYWJsZVxuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLmlkO1xuXHRcdFx0Ly8gR2VuZXJhdGUgdGhlIGNvbnRlbnRJZCBiYXNlZCBvbiB0aGUgSUQsIGlmIG5vdCBwcm92aWRlZCAoRlBNIGNhc2UpXG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA/Pz0gdGhpcy5nZXRDb250ZW50SWQodGhpcy5pZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFdlIGdlbmVyYXRlIHRoZSBJRCBhbmQgdGhlIGNvbnRlbnRJRC4gRHVlIHRvIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBrZWVwIGl0IG9uIHRoZSBNREMgVGFibGUgYnV0IHByb3ZpZGUgYXNzaWduXG5cdFx0XHQvLyB0aGUgSUQgd2l0aCBhIDo6VGFibGUgc3VmZml4IHRvIHRoZSBUYWJsZUFQSVxuXHRcdFx0dGhpcy5pZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uaWQ7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0fVxuXHR9XG5cblx0X2dldEVudGl0eVR5cGUoKTogRW50aXR5VHlwZSB7XG5cdFx0cmV0dXJuICh0aGlzLmNvbGxlY3Rpb25FbnRpdHkgYXMgRW50aXR5U2V0KT8uZW50aXR5VHlwZSB8fCAodGhpcy5jb2xsZWN0aW9uRW50aXR5IGFzIE5hdmlnYXRpb25Qcm9wZXJ0eSk/LnRhcmdldFR5cGU7XG5cdH1cblxuXHRnZXRFbXB0eVJvd3NFbmFibGVkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZW5hYmxlZCA9XG5cdFx0XHR0aGlzLmNyZWF0aW9uTW9kZS5uYW1lID09PSBDcmVhdGlvbk1vZGUuSW5saW5lQ3JlYXRpb25Sb3dzXG5cdFx0XHRcdD8gdGhpcy50YWJsZURlZmluaXRpb24uYWN0aW9ucy5maW5kKChhKSA9PiBhLmtleSA9PT0gU3RhbmRhcmRBY3Rpb25LZXlzLkNyZWF0ZSk/LmVuYWJsZWRcblx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuIGVuYWJsZWQgPT09IFwiZmFsc2VcIiA/IHVuZGVmaW5lZCA6IGVuYWJsZWQ7XG5cdH1cblxuXHRnZXRUZW1wbGF0ZSgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGVudGl0eVR5cGUgPSB0aGlzLl9nZXRFbnRpdHlUeXBlKCk7XG5cdFx0Y29uc3QgdGFibGVQcm9wcyA9IHRoaXMgYXMgdW5rbm93biBhcyBUYWJsZUJsb2NrUHJvcGVydGllcztcblx0XHR0YWJsZVByb3BzLm92ZXJyaWRlUm93UHJlc3MgPSB0aGlzLnJvd1ByZXNzICE9PSB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBjb2xsZWN0aW9uRW50aXR5ID0gdGhpcy5jb252ZXJ0ZWRNZXRhZGF0YS5yZXNvbHZlUGF0aCh0YWJsZVByb3BzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pLnRhcmdldCBhc1xuXHRcdFx0fCBFbnRpdHlTZXRcblx0XHRcdHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdGNvbnN0IGhhbmRsZXJQcm92aWRlciA9IG5ldyBUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyKHRhYmxlUHJvcHMsIHsgY29sbGVjdGlvbkVudGl0eSwgbWV0YU1vZGVsOiB0aGlzLm1ldGFQYXRoLmdldE1vZGVsKCkgfSk7XG5cblx0XHRsZXQgY3JlYXRpb25Nb2RlOiBUYWJsZUNyZWF0aW9uT3B0aW9ucyB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5jcmVhdGlvbk1vZGUgJiYgT2JqZWN0LmtleXModGhpcy5jcmVhdGlvbk1vZGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdGNyZWF0aW9uTW9kZSA9IDxUYWJsZUNyZWF0aW9uT3B0aW9ucyB7Li4udGhpcy5jcmVhdGlvbk1vZGV9IC8+O1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8VGFibGVBUElcblx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZQTTogJ3NhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyJ31cIlxuXHRcdFx0XHRiaW5kaW5nPXtge2ludGVybmFsPmNvbnRyb2xzLyR7dGhpcy5jb250ZW50SWR9fWB9XG5cdFx0XHRcdGlkPXt0aGlzLl9hcGlJZH1cblx0XHRcdFx0Y29udGVudElkPXt0aGlzLmNvbnRlbnRJZH1cblx0XHRcdFx0dmlzaWJsZT17dGhpcy52aXNpYmxlfVxuXHRcdFx0XHRoZWFkZXJMZXZlbD17dGhpcy5oZWFkZXJMZXZlbH1cblx0XHRcdFx0aGVhZGVyU3R5bGU9e3RoaXMuaGVhZGVyU3R5bGV9XG5cdFx0XHRcdGhlYWRlclZpc2libGU9e3RoaXMuaGVhZGVyVmlzaWJsZX1cblx0XHRcdFx0dGFiVGl0bGU9e3RoaXMudGFiVGl0bGV9XG5cdFx0XHRcdGV4cG9ydFJlcXVlc3RTaXplPXt0aGlzLmV4cG9ydFJlcXVlc3RTaXplfVxuXHRcdFx0XHRkaXNhYmxlQ29weVRvQ2xpcGJvYXJkPXt0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmR9XG5cdFx0XHRcdHNjcm9sbFRocmVzaG9sZD17dGhpcy5zY3JvbGxUaHJlc2hvbGR9XG5cdFx0XHRcdHRocmVzaG9sZD17dGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC50aHJlc2hvbGQgPz8gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi50aHJlc2hvbGR9XG5cdFx0XHRcdHBvcGluTGF5b3V0PXt0aGlzLnBvcGluTGF5b3V0fVxuXHRcdFx0XHRpc1NlYXJjaGFibGU9e3RoaXMuaXNTZWFyY2hhYmxlfVxuXHRcdFx0XHRidXN5PXt0aGlzLmJ1c3l9XG5cdFx0XHRcdGluaXRpYWxMb2FkPXt0aGlzLmluaXRpYWxMb2FkfVxuXHRcdFx0XHRoZWFkZXI9e3RoaXMuaGVhZGVyfVxuXHRcdFx0XHRpc0FscD17dGhpcy5pc0FscH1cblx0XHRcdFx0ZmllbGRNb2RlPXt0aGlzLmZpZWxkTW9kZX1cblx0XHRcdFx0cGVyc29uYWxpemF0aW9uPXt0aGlzLnBlcnNvbmFsaXphdGlvbn1cblx0XHRcdFx0cm93UHJlc3M9e3RoaXMucm93UHJlc3MgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0dmFyaWFudFNhdmVkPXt0aGlzLnZhcmlhbnRTYXZlZCBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHR2YXJpYW50U2VsZWN0ZWQ9e3RoaXMudmFyaWFudFNlbGVjdGVkIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHNlZ21lbnRlZEJ1dHRvblByZXNzPXt0aGlzLnNlZ21lbnRlZEJ1dHRvblByZXNzIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50PXt0aGlzLnZhcmlhbnRNYW5hZ2VtZW50fVxuXHRcdFx0XHRpZ25vcmVkRmllbGRzPXt0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHN9IC8vIE5lZWQgdG8gYmUgZnJvbSB0aGUgdGFibGVEZWZpbml0aW9uIHRvIGJlIGluIHBoYXNlIGZvciB0aGUgZ2V0SWdub3JlRmllbGRzXG5cdFx0XHRcdHRhYmxlRGVmaW5pdGlvbj17YHtfcGFnZU1vZGVsPiR7dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0IS5nZXRQYXRoKCl9fWAgYXMgdW5rbm93biBhcyBUYWJsZVZpc3VhbGl6YXRpb259XG5cdFx0XHRcdGVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWU9e2VudGl0eVR5cGU/LmZ1bGx5UXVhbGlmaWVkTmFtZX1cblx0XHRcdFx0bWV0YVBhdGg9e3RoaXMubWV0YVBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0dXNlQmFzaWNTZWFyY2g9e3RoaXMudXNlQmFzaWNTZWFyY2h9XG5cdFx0XHRcdGVuYWJsZUZ1bGxTY3JlZW49e3RoaXMuZW5hYmxlRnVsbFNjcmVlbn1cblx0XHRcdFx0ZW5hYmxlRXhwb3J0PXt0aGlzLmVuYWJsZUV4cG9ydH1cblx0XHRcdFx0ZXhwb3J0RmlsZU5hbWU9e3RoaXMuZXhwb3J0RmlsZU5hbWV9XG5cdFx0XHRcdGV4cG9ydFNoZWV0TmFtZT17dGhpcy5leHBvcnRTaGVldE5hbWV9XG5cdFx0XHRcdGZyb3plbkNvbHVtbkNvdW50PXt0aGlzLmZyb3plbkNvbHVtbkNvdW50fVxuXHRcdFx0XHRkaXNhYmxlQ29sdW1uRnJlZXplPXt0aGlzLmRpc2FibGVDb2x1bW5GcmVlemV9XG5cdFx0XHRcdGVuYWJsZVBhc3RlPXt0aGlzLmVuYWJsZVBhc3RlfVxuXHRcdFx0XHRyb3dDb3VudE1vZGU9e3RoaXMucm93Q291bnRNb2RlfVxuXHRcdFx0XHRyb3dDb3VudD17dGhpcy5yb3dDb3VudH1cblx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuY29udGV4dFBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0c2VsZWN0aW9uQ2hhbmdlPXt0aGlzLnNlbGVjdGlvbkNoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRsaXN0QmluZGluZ0NoYW5nZT17dGhpcy5saXN0QmluZGluZ0NoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRyZWFkT25seT17dGhpcy5yZWFkT25seX1cblx0XHRcdFx0c2VsZWN0aW9uTW9kZT17dGhpcy5zZWxlY3Rpb25Nb2RlfVxuXHRcdFx0XHR1c2VDb25kZW5zZWRMYXlvdXQ9e3RoaXMudXNlQ29uZGVuc2VkTGF5b3V0fVxuXHRcdFx0XHR0eXBlPXt0aGlzLnR5cGV9XG5cdFx0XHRcdGZpbHRlckJhcj17dGhpcy5maWx0ZXJCYXJ9XG5cdFx0XHRcdGVtcHR5Um93c0VuYWJsZWQ9e3RoaXMuZ2V0RW1wdHlSb3dzRW5hYmxlZCgpIGFzIHVua25vd24gYXMgYm9vbGVhbn1cblx0XHRcdFx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPXt0aGlzLmVuYWJsZUF1dG9Db2x1bW5XaWR0aH1cblx0XHRcdFx0YmVmb3JlUmViaW5kVGFibGU9e3RoaXMuYmVmb3JlUmViaW5kVGFibGUgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI9e3RoaXMud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJ9XG5cdFx0XHRcdG1vZGVGb3JOb0RhdGFNZXNzYWdlPXt0aGlzLm1vZGVGb3JOb0RhdGFNZXNzYWdlfVxuXHRcdFx0XHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGg9e3RoaXMuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPy5nZXRQYXRoKCl9XG5cdFx0XHRcdGRpc3BsYXlTZWdtZW50ZWRCdXR0b249e3RoaXMuZGlzcGxheVNlZ21lbnRlZEJ1dHRvbn1cblx0XHRcdFx0ZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzPXt0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc31cblx0XHRcdFx0ZW5hYmxlU2VsZWN0QWxsPXt0aGlzLmVuYWJsZVNlbGVjdEFsbH1cblx0XHRcdFx0aW5NdWx0aVZpZXc9e3RoaXMuaW5NdWx0aVZpZXd9XG5cdFx0XHRcdHNlbGVjdGlvbkxpbWl0PXt0aGlzLnNlbGVjdGlvbkxpbWl0fVxuXHRcdFx0XHRjb25kZW5zZWRUYWJsZUxheW91dD17dGhpcy5jb25kZW5zZWRUYWJsZUxheW91dH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjcmVhdGlvbk1vZGUsXG5cdFx0XHRcdFx0Y29udGVudDogZ2V0TURDVGFibGVUZW1wbGF0ZSh0YWJsZVByb3BzLCB7XG5cdFx0XHRcdFx0XHRtZXRhUGF0aDogdGhpcy5tZXRhUGF0aCxcblx0XHRcdFx0XHRcdGNvbnZlcnRlZE1ldGFkYXRhOiB0aGlzLmNvbnZlcnRlZE1ldGFkYXRhLFxuXHRcdFx0XHRcdFx0bWV0YU1vZGVsOiB0aGlzLm1ldGFNb2RlbCxcblx0XHRcdFx0XHRcdGhhbmRsZXJQcm92aWRlcixcblx0XHRcdFx0XHRcdGFwcENvbXBvbmVudDogdGhpcy5hcHBDb21wb25lbnRcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9UYWJsZUFQST5cblx0XHQpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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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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
|