@sapui5/sap.fe.core 1.99.0 → 1.101.1
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 +6 -4
- package/src/sap/fe/core/.library +2 -3
- package/src/sap/fe/core/AnnotationHelper.js +43 -92
- package/src/sap/fe/core/AnnotationHelper.ts +43 -107
- package/src/sap/fe/core/AppComponent.js +381 -399
- package/src/sap/fe/core/AppComponent.ts +397 -0
- package/src/sap/fe/core/AppStateHandler.js +131 -162
- package/src/sap/fe/core/AppStateHandler.ts +2 -2
- package/src/sap/fe/core/BaseController.js +82 -58
- package/src/sap/fe/core/BaseController.ts +67 -0
- package/src/sap/fe/core/CommonUtils.js +179 -31
- package/src/sap/fe/core/CommonUtils.ts +295 -125
- package/src/sap/fe/core/ExtensionAPI.js +279 -274
- package/src/sap/fe/core/ExtensionAPI.ts +242 -0
- package/src/sap/fe/core/PageController.js +158 -29
- package/src/sap/fe/core/PageController.ts +65 -37
- package/src/sap/fe/core/RouterProxy.js +700 -750
- package/src/sap/fe/core/RouterProxy.ts +47 -31
- package/src/sap/fe/core/Synchronization.js +21 -31
- package/src/sap/fe/core/TemplateComponent.js +193 -118
- package/src/sap/fe/core/TemplateComponent.ts +104 -109
- package/src/sap/fe/core/TemplateModel.js +24 -44
- package/src/sap/fe/core/TemplateModel.ts +3 -3
- package/src/sap/fe/core/TransactionHelper.js +1368 -1369
- package/src/sap/fe/core/TransactionHelper.ts +201 -171
- package/src/sap/fe/core/actions/collaboration/ActivitySync.js +406 -0
- package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +362 -0
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +146 -0
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +129 -0
- package/src/sap/fe/core/actions/collaboration/Manage.js +264 -0
- package/src/sap/fe/core/actions/collaboration/Manage.ts +246 -0
- package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +100 -0
- package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
- package/src/sap/fe/core/actions/draft.js +324 -220
- package/src/sap/fe/core/actions/draft.ts +209 -133
- package/src/sap/fe/core/actions/messageHandling.js +79 -48
- package/src/sap/fe/core/actions/messageHandling.ts +113 -83
- package/src/sap/fe/core/actions/operations.js +37 -18
- package/src/sap/fe/core/actions/operations.ts +51 -20
- package/src/sap/fe/core/actions/sticky.js +17 -4
- package/src/sap/fe/core/actions/sticky.ts +21 -4
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +60 -0
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +37 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +165 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +178 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +707 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +628 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +436 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +431 -0
- package/src/sap/fe/core/controllerextensions/EditFlow.js +1854 -1669
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +1792 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +79 -54
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +60 -0
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +716 -779
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +785 -0
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +796 -816
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +810 -0
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +1056 -1005
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +1001 -0
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +498 -532
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +13 -12
- package/src/sap/fe/core/controllerextensions/MassEdit.js +141 -169
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +155 -0
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +221 -244
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +215 -0
- package/src/sap/fe/core/controllerextensions/PageReady.js +312 -345
- package/src/sap/fe/core/controllerextensions/PageReady.ts +57 -53
- package/src/sap/fe/core/controllerextensions/Paginator.js +188 -175
- package/src/sap/fe/core/controllerextensions/Paginator.ts +169 -0
- package/src/sap/fe/core/controllerextensions/Placeholder.js +157 -149
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +149 -0
- package/src/sap/fe/core/controllerextensions/Routing.js +144 -125
- package/src/sap/fe/core/controllerextensions/Routing.ts +131 -0
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +7 -6
- package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
- package/src/sap/fe/core/controllerextensions/Share.js +230 -268
- package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
- package/src/sap/fe/core/controllerextensions/SideEffects.js +603 -644
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +68 -68
- package/src/sap/fe/core/controllerextensions/ViewState.js +774 -806
- package/src/sap/fe/core/controllerextensions/ViewState.ts +796 -0
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
- package/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
- package/src/sap/fe/core/controls/Any.js +28 -0
- package/src/sap/fe/core/controls/Any.ts +30 -0
- package/src/sap/fe/core/controls/CommandExecution.js +92 -68
- package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
- package/src/sap/fe/core/controls/ConditionalWrapper.js +165 -79
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +74 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +366 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +278 -0
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +167 -125
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +116 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +44 -5
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +163 -122
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +155 -0
- package/src/sap/fe/core/controls/FieldWrapper.js +212 -141
- package/src/sap/fe/core/controls/FieldWrapper.ts +104 -0
- package/src/sap/fe/core/controls/FileWrapper.js +313 -0
- package/src/sap/fe/core/controls/FileWrapper.ts +169 -0
- package/src/sap/fe/core/controls/FilterBar.js +197 -159
- package/src/sap/fe/core/controls/FilterBar.ts +148 -0
- package/src/sap/fe/core/controls/FormElementWrapper.js +100 -39
- package/src/sap/fe/core/controls/FormElementWrapper.ts +37 -0
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +37 -42
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +147 -115
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +102 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +300 -265
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +252 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +185 -140
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +335 -322
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +37 -42
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +75 -74
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +71 -0
- package/src/sap/fe/core/converters/ConverterContext.js +348 -379
- package/src/sap/fe/core/converters/ConverterContext.ts +19 -16
- package/src/sap/fe/core/converters/ManifestSettings.js +13 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +17 -2
- package/src/sap/fe/core/converters/ManifestWrapper.js +354 -378
- package/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +6 -4
- package/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
- package/src/sap/fe/core/converters/annotations/DataField.js +26 -13
- package/src/sap/fe/core/converters/annotations/DataField.ts +40 -17
- package/src/sap/fe/core/converters/controls/Common/Action.js +10 -10
- package/src/sap/fe/core/converters/controls/Common/Action.ts +20 -19
- package/src/sap/fe/core/converters/controls/Common/Chart.js +8 -8
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +12 -11
- package/src/sap/fe/core/converters/controls/Common/Form.js +6 -6
- package/src/sap/fe/core/converters/controls/Common/Form.ts +7 -3
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -2
- package/src/sap/fe/core/converters/controls/Common/Table.js +326 -86
- package/src/sap/fe/core/converters/controls/Common/Table.ts +384 -167
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +120 -55
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +158 -98
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +206 -223
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +263 -287
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +6 -6
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +20 -18
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +5 -2
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +4 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.js +115 -133
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +20 -6
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +12 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
- package/src/sap/fe/core/converters/helpers/Key.js +42 -57
- package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +0 -4
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +51 -27
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +69 -43
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +42 -25
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +91 -65
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +11 -9
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +8 -8
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +92 -98
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +104 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
- package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
- package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -2
- package/src/sap/fe/core/formatters/TableFormatter.js +53 -2
- package/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
- package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
- package/src/sap/fe/core/formatters/ValueFormatter.ts +4 -7
- package/src/sap/fe/core/fpm/Component.js +80 -55
- package/src/sap/fe/core/fpm/Component.ts +43 -0
- package/src/sap/fe/core/helpers/AppStartupHelper.js +323 -309
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
- package/src/sap/fe/core/helpers/BindingExpression.js +7 -7
- package/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
- package/src/sap/fe/core/helpers/ClassSupport.js +307 -166
- package/src/sap/fe/core/helpers/ClassSupport.ts +348 -155
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +5 -4
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.js +735 -684
- package/src/sap/fe/core/helpers/MassEditHelper.ts +803 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +53 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +46 -0
- package/src/sap/fe/core/helpers/PasteHelper.js +4 -4
- package/src/sap/fe/core/helpers/PasteHelper.ts +4 -3
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +7 -3
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +7 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -7
- package/src/sap/fe/core/helpers/StableIdHelper.ts +0 -4
- package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
- package/src/sap/fe/core/jsx-runtime/jsx.ts +22 -8
- package/src/sap/fe/core/library.js +425 -451
- package/src/sap/fe/core/library.support.js +22 -33
- package/src/sap/fe/core/library.support.ts +23 -0
- package/src/sap/fe/core/library.ts +420 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +5 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +4 -4
- package/src/sap/fe/core/messagebundle.properties +45 -13
- package/src/sap/fe/core/messagebundle_ar.properties +29 -7
- package/src/sap/fe/core/messagebundle_bg.properties +29 -7
- package/src/sap/fe/core/messagebundle_ca.properties +29 -7
- package/src/sap/fe/core/messagebundle_cs.properties +29 -7
- package/src/sap/fe/core/messagebundle_cy.properties +29 -7
- package/src/sap/fe/core/messagebundle_da.properties +29 -7
- package/src/sap/fe/core/messagebundle_de.properties +29 -7
- package/src/sap/fe/core/messagebundle_el.properties +29 -7
- package/src/sap/fe/core/messagebundle_en.properties +29 -7
- package/src/sap/fe/core/messagebundle_en_GB.properties +29 -7
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +29 -7
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +29 -7
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +29 -7
- package/src/sap/fe/core/messagebundle_es.properties +29 -7
- package/src/sap/fe/core/messagebundle_es_MX.properties +29 -7
- package/src/sap/fe/core/messagebundle_et.properties +29 -7
- package/src/sap/fe/core/messagebundle_fi.properties +30 -8
- package/src/sap/fe/core/messagebundle_fr.properties +31 -9
- package/src/sap/fe/core/messagebundle_fr_CA.properties +31 -9
- package/src/sap/fe/core/messagebundle_hi.properties +29 -7
- package/src/sap/fe/core/messagebundle_hr.properties +29 -7
- package/src/sap/fe/core/messagebundle_hu.properties +29 -7
- package/src/sap/fe/core/messagebundle_id.properties +29 -7
- package/src/sap/fe/core/messagebundle_it.properties +29 -7
- package/src/sap/fe/core/messagebundle_iw.properties +29 -7
- package/src/sap/fe/core/messagebundle_ja.properties +28 -6
- package/src/sap/fe/core/messagebundle_kk.properties +29 -7
- package/src/sap/fe/core/messagebundle_ko.properties +29 -7
- package/src/sap/fe/core/messagebundle_lt.properties +29 -7
- package/src/sap/fe/core/messagebundle_lv.properties +30 -8
- package/src/sap/fe/core/messagebundle_ms.properties +29 -7
- package/src/sap/fe/core/messagebundle_nl.properties +29 -7
- package/src/sap/fe/core/messagebundle_no.properties +29 -7
- package/src/sap/fe/core/messagebundle_pl.properties +29 -7
- package/src/sap/fe/core/messagebundle_pt.properties +30 -8
- package/src/sap/fe/core/messagebundle_pt_PT.properties +29 -7
- package/src/sap/fe/core/messagebundle_ro.properties +29 -7
- package/src/sap/fe/core/messagebundle_ru.properties +29 -7
- package/src/sap/fe/core/messagebundle_sh.properties +29 -7
- package/src/sap/fe/core/messagebundle_sk.properties +29 -7
- package/src/sap/fe/core/messagebundle_sl.properties +29 -7
- package/src/sap/fe/core/messagebundle_sv.properties +30 -8
- package/src/sap/fe/core/messagebundle_th.properties +28 -6
- package/src/sap/fe/core/messagebundle_tr.properties +32 -10
- package/src/sap/fe/core/messagebundle_uk.properties +29 -7
- package/src/sap/fe/core/messagebundle_vi.properties +29 -7
- package/src/sap/fe/core/messagebundle_zh_CN.properties +29 -7
- package/src/sap/fe/core/messagebundle_zh_TW.properties +29 -7
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +47 -73
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +158 -196
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +5 -6
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +70 -96
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +7 -6
- package/src/sap/fe/core/services/NavigationServiceFactory.js +287 -342
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +11 -14
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +70 -105
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +6 -3
- package/src/sap/fe/core/services/RoutingServiceFactory.js +796 -820
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +62 -53
- package/src/sap/fe/core/services/ShellServicesFactory.js +694 -741
- package/src/sap/fe/core/services/ShellServicesFactory.ts +33 -33
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +570 -595
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +23 -4
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +357 -389
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +25 -29
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +43 -5
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +7 -4
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.ts +1 -4
- package/src/sap/fe/core/support/Diagnostics.js +36 -48
- package/src/sap/fe/core/templating/DataModelPathHelper.js +91 -90
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +126 -123
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +26 -5
- package/src/sap/fe/core/templating/FilterHelper.js +25 -32
- package/src/sap/fe/core/templating/FilterHelper.ts +36 -35
- package/src/sap/fe/core/templating/PropertyHelper.js +16 -2
- package/src/sap/fe/core/templating/PropertyHelper.ts +31 -24
- package/src/sap/fe/core/templating/UIFormatters.js +150 -44
- package/src/sap/fe/core/templating/UIFormatters.ts +165 -67
- package/src/sap/fe/core/type/Email.js +26 -8
- package/src/sap/fe/core/type/Email.ts +8 -7
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -75
|
@@ -1262,6 +1262,7 @@ sap.ui.define(["sap/fe/core/converters/common/AnnotationConverter", "../helpers/
|
|
|
1262
1262
|
_exports.convertMetaModelContext = convertMetaModelContext;
|
|
1263
1263
|
|
|
1264
1264
|
function getInvolvedDataModelObjects(oMetaModelContext, oEntitySetMetaModelContext) {
|
|
1265
|
+
var oConverterOutput = convertTypes(oMetaModelContext.getModel());
|
|
1265
1266
|
var metaModelContext = convertMetaModelContext(oMetaModelContext, true);
|
|
1266
1267
|
var targetEntitySetLocation;
|
|
1267
1268
|
|
|
@@ -1269,12 +1270,12 @@ sap.ui.define(["sap/fe/core/converters/common/AnnotationConverter", "../helpers/
|
|
|
1269
1270
|
targetEntitySetLocation = getInvolvedDataModelObjects(oEntitySetMetaModelContext);
|
|
1270
1271
|
}
|
|
1271
1272
|
|
|
1272
|
-
return getInvolvedDataModelObjectFromPath(metaModelContext, targetEntitySetLocation);
|
|
1273
|
+
return getInvolvedDataModelObjectFromPath(metaModelContext, oConverterOutput, targetEntitySetLocation);
|
|
1273
1274
|
}
|
|
1274
1275
|
|
|
1275
1276
|
_exports.getInvolvedDataModelObjects = getInvolvedDataModelObjects;
|
|
1276
1277
|
|
|
1277
|
-
function getInvolvedDataModelObjectFromPath(metaModelContext, targetEntitySetLocation) {
|
|
1278
|
+
function getInvolvedDataModelObjectFromPath(metaModelContext, convertedTypes, targetEntitySetLocation) {
|
|
1278
1279
|
var dataModelObjects = metaModelContext.visitedObjects.filter(function (visitedObject) {
|
|
1279
1280
|
return visitedObject && visitedObject.hasOwnProperty("_type") && visitedObject._type !== "EntityType";
|
|
1280
1281
|
});
|
|
@@ -1335,7 +1336,8 @@ sap.ui.define(["sap/fe/core/converters/common/AnnotationConverter", "../helpers/
|
|
|
1335
1336
|
targetEntityType: currentEntityType,
|
|
1336
1337
|
targetObject: metaModelContext.target,
|
|
1337
1338
|
navigationProperties: navigationProperties,
|
|
1338
|
-
contextLocation: targetEntitySetLocation
|
|
1339
|
+
contextLocation: targetEntitySetLocation,
|
|
1340
|
+
convertedTypes: convertedTypes
|
|
1339
1341
|
};
|
|
1340
1342
|
|
|
1341
1343
|
if (!outDataModelPath.contextLocation) {
|
|
@@ -1348,4 +1350,4 @@ sap.ui.define(["sap/fe/core/converters/common/AnnotationConverter", "../helpers/
|
|
|
1348
1350
|
_exports.getInvolvedDataModelObjectFromPath = getInvolvedDataModelObjectFromPath;
|
|
1349
1351
|
return _exports;
|
|
1350
1352
|
}, false);
|
|
1351
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1ldGFNb2RlbENvbnZlcnRlci50cyJdLCJuYW1lcyI6WyJWT0NBQlVMQVJZX0FMSUFTIiwiRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiQ2hhcnQiLCJNaWNyb0NoYXJ0IiwiVVNoZWxsIiwiSW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiU2l0dWF0aW9ucyIsInBhcnNlUHJvcGVydHlWYWx1ZSIsImFubm90YXRpb25PYmplY3QiLCJwcm9wZXJ0eUtleSIsImN1cnJlbnRUYXJnZXQiLCJhbm5vdGF0aW9uc0xpc3RzIiwib0NhcGFiaWxpdGllcyIsInZhbHVlIiwiY3VycmVudFByb3BlcnR5VGFyZ2V0IiwidHlwZU9mQW5ub3RhdGlvbiIsInR5cGUiLCJOdWxsIiwiU3RyaW5nIiwiQm9vbCIsIkludCIsIkFycmF5IiwiaXNBcnJheSIsIkNvbGxlY3Rpb24iLCJtYXAiLCJzdWJBbm5vdGF0aW9uT2JqZWN0Iiwic3ViQW5ub3RhdGlvbk9iamVjdEluZGV4IiwicGFyc2VBbm5vdGF0aW9uT2JqZWN0IiwibGVuZ3RoIiwiaGFzT3duUHJvcGVydHkiLCIkUGF0aCIsInVuZGVmaW5lZCIsIlBhdGgiLCIkRGVjaW1hbCIsIkRlY2ltYWwiLCJwYXJzZUZsb2F0IiwiJFByb3BlcnR5UGF0aCIsIlByb3BlcnR5UGF0aCIsIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwiTmF2aWdhdGlvblByb3BlcnR5UGF0aCIsIiRJZiIsIklmIiwiJEFuZCIsIkFuZCIsIiRPciIsIk9yIiwiJE5vdCIsIk5vdCIsIiRFcSIsIkVxIiwiJE5lIiwiTmUiLCIkR3QiLCJHdCIsIiRHZSIsIkdlIiwiJEx0IiwiTHQiLCIkTGUiLCJMZSIsIiRBcHBseSIsIkFwcGx5IiwiRnVuY3Rpb24iLCIkRnVuY3Rpb24iLCIkQW5ub3RhdGlvblBhdGgiLCJBbm5vdGF0aW9uUGF0aCIsIiRFbnVtTWVtYmVyIiwiRW51bU1lbWJlciIsIm1hcE5hbWVUb0FsaWFzIiwic3BsaXQiLCIkVHlwZSIsIlJlY29yZCIsIm5hbWUiLCJhbm5vdGF0aW9uTmFtZSIsInBhdGhQYXJ0IiwiYW5ub1BhcnQiLCJsYXN0RG90IiwibGFzdEluZGV4T2YiLCJzdWJzdHIiLCJjdXJyZW50T2JqZWN0VGFyZ2V0IiwicGFyc2VkQW5ub3RhdGlvbk9iamVjdCIsInR5cGVPZk9iamVjdCIsInBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uIiwiY29sbGVjdGlvbiIsInN1YkFubm90YXRpb25JbmRleCIsInR5cGVWYWx1ZSIsInByb3BlcnR5VmFsdWVzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJzdGFydHNXaXRoIiwicHVzaCIsImNyZWF0ZUFubm90YXRpb25MaXN0cyIsImdldE9yQ3JlYXRlQW5ub3RhdGlvbkxpc3QiLCJ0YXJnZXQiLCJhbm5vdGF0aW9ucyIsInJlbW92ZUNoYXJ0QW5ub3RhdGlvbnMiLCJmaWx0ZXIiLCJvUmVjb3JkIiwiVGFyZ2V0IiwiaW5kZXhPZiIsInJlbW92ZUlCTkFubm90YXRpb25zIiwiaGFuZGxlUHJlc2VudGF0aW9uVmFyaWFudCIsImFubm90YXRpb25PYmplY3RzIiwiYW5ub3RhdGlvblRhcmdldCIsImFubm90YXRpb25MaXN0cyIsIm91dEFubm90YXRpb25PYmplY3QiLCJhbm5vdGF0aW9uS2V5IiwiRGF0YSIsIlZpc3VhbGl6YXRpb25zIiwiY3VycmVudE91dEFubm90YXRpb25PYmplY3QiLCJhbm5vdGF0aW9uT2ZBbm5vdGF0aW9uU3BsaXQiLCJhbm5vdGF0aW9uUXVhbGlmaWVyU3BsaXQiLCJxdWFsaWZpZXIiLCJ0ZXJtIiwiY3VycmVudEFubm90YXRpb25UYXJnZXQiLCJpc0NvbGxlY3Rpb24iLCJ0eXBlb2ZBbm5vdGF0aW9uIiwicmVjb3JkIiwicHJlcGFyZVByb3BlcnR5IiwicHJvcGVydHlEZWZpbml0aW9uIiwiZW50aXR5VHlwZU9iamVjdCIsInByb3BlcnR5TmFtZSIsInByb3BlcnR5T2JqZWN0IiwiX3R5cGUiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJtYXhMZW5ndGgiLCIkTWF4TGVuZ3RoIiwicHJlY2lzaW9uIiwiJFByZWNpc2lvbiIsInNjYWxlIiwiJFNjYWxlIiwibnVsbGFibGUiLCIkTnVsbGFibGUiLCJwcmVwYXJlTmF2aWdhdGlvblByb3BlcnR5IiwibmF2UHJvcGVydHlEZWZpbml0aW9uIiwibmF2UHJvcGVydHlOYW1lIiwicmVmZXJlbnRpYWxDb25zdHJhaW50IiwiJFJlZmVyZW50aWFsQ29uc3RyYWludCIsInNvdXJjZVByb3BlcnR5TmFtZSIsInNvdXJjZVR5cGVOYW1lIiwic291cmNlUHJvcGVydHkiLCJ0YXJnZXRUeXBlTmFtZSIsInRhcmdldFByb3BlcnR5IiwibmF2aWdhdGlvblByb3BlcnR5IiwicGFydG5lciIsIiRQYXJ0bmVyIiwiJGlzQ29sbGVjdGlvbiIsImNvbnRhaW5zVGFyZ2V0IiwiJENvbnRhaW5zVGFyZ2V0IiwicHJlcGFyZUVudGl0eVNldCIsImVudGl0eVNldERlZmluaXRpb24iLCJlbnRpdHlTZXROYW1lIiwiZW50aXR5Q29udGFpbmVyTmFtZSIsImVudGl0eVNldE9iamVjdCIsIm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJlbnRpdHlUeXBlTmFtZSIsInByZXBhcmVTaW5nbGV0b24iLCJzaW5nbGV0b25EZWZpbml0aW9uIiwic2luZ2xldG9uTmFtZSIsInR5cGVOYW1lIiwicHJlcGFyZVR5cGVEZWZpbml0aW9uIiwidHlwZURlZmluaXRpb24iLCJuYW1lc3BhY2UiLCJ0eXBlT2JqZWN0IiwicmVwbGFjZSIsInVuZGVybHlpbmdUeXBlIiwiJFVuZGVybHlpbmdUeXBlIiwicHJlcGFyZUNvbXBsZXhUeXBlIiwiY29tcGxleFR5cGVEZWZpbml0aW9uIiwiY29tcGxleFR5cGVOYW1lIiwiY29tcGxleFR5cGVPYmplY3QiLCJwcm9wZXJ0aWVzIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJjb21wbGV4VHlwZVByb3BlcnRpZXMiLCJwcm9wZXJ0eU5hbWVPck5vdCIsIiRraW5kIiwic29ydCIsImEiLCJiIiwiY29tcGxleFR5cGVOYXZpZ2F0aW9uUHJvcGVydGllcyIsInByZXBhcmVFbnRpdHlLZXlzIiwiZW50aXR5VHlwZURlZmluaXRpb24iLCJvTWV0YU1vZGVsRGF0YSIsIiRLZXkiLCIkQmFzZVR5cGUiLCJwcmVwYXJlRW50aXR5VHlwZSIsIm1ldGFNb2RlbERhdGEiLCJlbnRpdHlLZXlzIiwiZW50aXR5UHJvcGVydGllcyIsImVudGl0eUtleSIsImZpbmQiLCJwcm9wZXJ0eSIsInByZXBhcmVBY3Rpb24iLCJhY3Rpb25OYW1lIiwiYWN0aW9uUmF3RGF0YSIsImFjdGlvbkVudGl0eVR5cGUiLCJhY3Rpb25GUU4iLCJhY3Rpb25TaG9ydE5hbWUiLCIkSXNCb3VuZCIsImJpbmRpbmdQYXJhbWV0ZXIiLCIkUGFyYW1ldGVyIiwicGFyYW1ldGVycyIsImlzQm91bmQiLCJpc0Z1bmN0aW9uIiwic291cmNlVHlwZSIsInJldHVyblR5cGUiLCIkUmV0dXJuVHlwZSIsInBhcmFtIiwiaXNFbnRpdHlTZXQiLCIkRW50aXR5U2V0UGF0aCIsIiROYW1lIiwicHJlcGFyZUVudGl0eVR5cGVzIiwib01ldGFNb2RlbCIsImdldE9iamVjdCIsImVudGl0eVR5cGVzIiwiZW50aXR5U2V0cyIsInNpbmdsZXRvbnMiLCJjb21wbGV4VHlwZXMiLCJ0eXBlRGVmaW5pdGlvbnMiLCIkRW50aXR5Q29udGFpbmVyIiwic2NoZW1hS2V5cyIsIm1ldGFtb2RlbEtleSIsInNPYmplY3ROYW1lIiwiZW50aXR5VHlwZSIsIiRBbm5vdGF0aW9ucyIsImZpbHRlckZhY2V0QW5ub3RhdGlvbiIsIklEIiwiZ2VuZXJhdGUiLCJGYWNldCIsImVudGl0eVByb3BlcnR5IiwiVmFsdWUiLCJjb21wbGV4VHlwZSIsIm9FbnRpdHlDb250YWluZXIiLCJlbnRpdHlTZXQiLCJzaW5nbGV0b24iLCJlbnRpdHlDb250YWluZXIiLCJuYXZQcm9wZXJ0eUJpbmRpbmdzIiwiJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJuYXZQcm9wTmFtZSIsInRhcmdldEVudGl0eVNldCIsImFjdGlvbnMiLCJrZXkiLCJyZWR1Y2UiLCJvdXRBY3Rpb25zIiwiYWN0aW9uIiwib3V0QW5ub3RhdGlvbkxpc3RzIiwic0Fubm90YXRpb25OYW1lIiwicmVmZXJlbmNlcyIsImlkZW50aWZpY2F0aW9uIiwidmVyc2lvbiIsInNjaGVtYSIsImFzc29jaWF0aW9ucyIsImFzc29jaWF0aW9uU2V0cyIsIm1NZXRhTW9kZWxNYXAiLCJjb252ZXJ0VHlwZXMiLCJzTWV0YU1vZGVsSWQiLCJpZCIsInBhcnNlZE91dHB1dCIsImFkZFN5bnRoZXRpY0Fubm90YXRpb25zIiwiQW5ub3RhdGlvbkNvbnZlcnRlciIsIm9FcnJvciIsIkVycm9yIiwibWV0YU1vZGVsIiwic2l0dWF0aW9uc05hdlByb3AiLCJuYXZQcm9wIiwiRkUiLCJwYXRoIiwiJHRhcmdldCIsImRlbGV0ZU1vZGVsQ2FjaGVEYXRhIiwiY29udmVydE1ldGFNb2RlbENvbnRleHQiLCJvTWV0YU1vZGVsQ29udGV4dCIsImJJbmNsdWRlVmlzaXRlZE9iamVjdHMiLCJvQ29udmVydGVyT3V0cHV0IiwiZ2V0TW9kZWwiLCJzUGF0aCIsImdldFBhdGgiLCJhUGF0aFNwbGl0IiwicmVsYXRpdmVQYXRoIiwic2xpY2UiLCJqb2luIiwibG9jYWxPYmplY3RzIiwicmVsYXRpdmVTcGxpdCIsImlkeCIsImN1cnJlbnRFbnRpdHlTZXQiLCJzTmF2UHJvcFRvQ2hlY2siLCJhTmF2UHJvcHMiLCJ0YXJnZXRFbnRpdHlUeXBlIiwic05hdlByb3AiLCJ0YXJnZXROYXZQcm9wIiwidGFyZ2V0VHlwZSIsInNoaWZ0Iiwib1RhcmdldCIsInJlc29sdmVQYXRoIiwidmlzaXRlZE9iamVjdHMiLCJjb25jYXQiLCJwYXJhbWV0ZXJOYW1lIiwidGFyZ2V0UGFyYW1ldGVyIiwicGFyYW1ldGVyIiwiZW5kc1dpdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJvRW50aXR5U2V0TWV0YU1vZGVsQ29udGV4dCIsIm1ldGFNb2RlbENvbnRleHQiLCJ0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbiIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0RnJvbVBhdGgiLCJkYXRhTW9kZWxPYmplY3RzIiwidmlzaXRlZE9iamVjdCIsInJvb3RFbnRpdHlTZXQiLCJjdXJyZW50RW50aXR5VHlwZSIsImkiLCJjdXJyZW50T2JqZWN0IiwibmF2aWdhdGVkUGF0aHMiLCJzdGFydGluZ0VudGl0eVNldCIsInN0YXJ0aW5nSW5kZXgiLCJyZXF1aXJlZERhdGFNb2RlbE9iamVjdHMiLCJvYmplY3QiLCJvdXREYXRhTW9kZWxQYXRoIiwidGFyZ2V0T2JqZWN0IiwiY29udGV4dExvY2F0aW9uIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBCQSxNQUFNQSxnQkFBcUIsR0FBRztBQUM3QixpQ0FBNkIsY0FEQTtBQUU3Qix5QkFBcUIsTUFGUTtBQUc3Qiw2QkFBeUIsVUFISTtBQUk3QixzQ0FBa0MsUUFKTDtBQUs3QixrQ0FBOEIsSUFMRDtBQU03Qix1Q0FBbUMsU0FOTjtBQU83Qix5Q0FBcUMsV0FQUjtBQVE3Qiw0Q0FBd0MsY0FSWDtBQVM3Qiw2Q0FBeUM7QUFUWixHQUE5QjtBQW9CTyxNQUFNQyw4QkFBOEIsR0FBRztBQUM3Q0MsSUFBQUEsS0FBSyxFQUFFLElBRHNDO0FBRTdDQyxJQUFBQSxVQUFVLEVBQUUsSUFGaUM7QUFHN0NDLElBQUFBLE1BQU0sRUFBRSxJQUhxQztBQUk3Q0MsSUFBQUEscUJBQXFCLEVBQUUsSUFKc0I7QUFLN0NDLElBQUFBLFVBQVUsRUFBRTtBQUxpQyxHQUF2Qzs7O0FBMEJQLFdBQVNDLGtCQUFULENBQ0NDLGdCQURELEVBRUNDLFdBRkQsRUFHQ0MsYUFIRCxFQUlDQyxnQkFKRCxFQUtDQyxhQUxELEVBTU87QUFDTixRQUFJQyxLQUFKO0FBQ0EsUUFBTUMscUJBQTZCLEdBQUdKLGFBQWEsR0FBRyxHQUFoQixHQUFzQkQsV0FBNUQ7QUFDQSxRQUFNTSxnQkFBZ0IsR0FBRyxPQUFPUCxnQkFBaEM7O0FBQ0EsUUFBSUEsZ0JBQWdC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YXRpb25MaXN0LCBBbm5vdGF0aW9uUmVjb3JkLCBFeHByZXNzaW9uLCBQYXJzZXJPdXRwdXQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbi8vIFRoaXMgZmlsZSBpcyByZXRyaWV2ZWQgZnJvbSBAc2FwLXV4L2Fubm90YXRpb24tY29udmVydGVyLCBzaGFyZWQgY29kZSB3aXRoIHRvb2wgc3VpdGVcbmltcG9ydCB7IEFubm90YXRpb25Db252ZXJ0ZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb21tb25cIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQge1xuXHRDb252ZXJ0ZXJPdXRwdXQsXG5cdEVudGl0eVNldCBhcyBfRW50aXR5U2V0LFxuXHRFbnRpdHlUeXBlIGFzIF9FbnRpdHlUeXBlLFxuXHRTaW5nbGV0b24gYXMgX1NpbmdsZXRvbixcblx0TmF2aWdhdGlvblByb3BlcnR5IGFzIF9OYXZpZ2F0aW9uUHJvcGVydHlcbn0gZnJvbSBcIkBzYXAtdXgvYW5ub3RhdGlvbi1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7XG5cdEVudGl0eVR5cGUsXG5cdEVudGl0eVNldCxcblx0UHJvcGVydHksXG5cdENvbXBsZXhUeXBlLFxuXHRSZWZlcmVudGlhbENvbnN0cmFpbnQsXG5cdFY0TmF2aWdhdGlvblByb3BlcnR5LFxuXHRBY3Rpb24sXG5cdFJlZmVyZW5jZSxcblx0RW50aXR5Q29udGFpbmVyLFxuXHRTaW5nbGV0b24sXG5cdFR5cGVEZWZpbml0aW9uXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9kaXN0L1BhcnNlclwiO1xuaW1wb3J0IHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcIi4uL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG5jb25zdCBWT0NBQlVMQVJZX0FMSUFTOiBhbnkgPSB7XG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMVwiOiBcIkNhcGFiaWxpdGllc1wiLFxuXHRcIk9yZy5PRGF0YS5Db3JlLlYxXCI6IFwiQ29yZVwiLFxuXHRcIk9yZy5PRGF0YS5NZWFzdXJlcy5WMVwiOiBcIk1lYXN1cmVzXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxXCI6IFwiQ29tbW9uXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjFcIjogXCJVSVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjFcIjogXCJTZXNzaW9uXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxXCI6IFwiQW5hbHl0aWNzXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxXCI6IFwiUGVyc29uYWxEYXRhXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MVwiOiBcIkNvbW11bmljYXRpb25cIlxufTtcblxuZXhwb3J0IHR5cGUgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSB7XG5cdENoYXJ0OiBib29sZWFuO1xuXHRNaWNyb0NoYXJ0OiBib29sZWFuO1xuXHRVU2hlbGw6IGJvb2xlYW47XG5cdEludGVudEJhc2VkTmF2aWdhdGlvbjogYm9vbGVhbjtcblx0U2l0dWF0aW9uczogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSB7XG5cdENoYXJ0OiB0cnVlLFxuXHRNaWNyb0NoYXJ0OiB0cnVlLFxuXHRVU2hlbGw6IHRydWUsXG5cdEludGVudEJhc2VkTmF2aWdhdGlvbjogdHJ1ZSxcblx0U2l0dWF0aW9uczogZmFsc2Vcbn07XG5cbnR5cGUgTWV0YU1vZGVsQWN0aW9uID0ge1xuXHQka2luZDogXCJBY3Rpb25cIjtcblx0JElzQm91bmQ6IGJvb2xlYW47XG5cdCRFbnRpdHlTZXRQYXRoOiBzdHJpbmc7XG5cdCRQYXJhbWV0ZXI6IHtcblx0XHQkVHlwZTogc3RyaW5nO1xuXHRcdCROYW1lOiBzdHJpbmc7XG5cdFx0JE51bGxhYmxlPzogYm9vbGVhbjtcblx0XHQkTWF4TGVuZ3RoPzogbnVtYmVyO1xuXHRcdCRQcmVjaXNpb24/OiBudW1iZXI7XG5cdFx0JFNjYWxlPzogbnVtYmVyO1xuXHRcdCRpc0NvbGxlY3Rpb24/OiBib29sZWFuO1xuXHR9W107XG5cdCRSZXR1cm5UeXBlOiB7XG5cdFx0JFR5cGU6IHN0cmluZztcblx0fTtcbn07XG5cbmZ1bmN0aW9uIHBhcnNlUHJvcGVydHlWYWx1ZShcblx0YW5ub3RhdGlvbk9iamVjdDogYW55LFxuXHRwcm9wZXJ0eUtleTogc3RyaW5nLFxuXHRjdXJyZW50VGFyZ2V0OiBzdHJpbmcsXG5cdGFubm90YXRpb25zTGlzdHM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25MaXN0Pixcblx0b0NhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNcbik6IGFueSB7XG5cdGxldCB2YWx1ZTtcblx0Y29uc3QgY3VycmVudFByb3BlcnR5VGFyZ2V0OiBzdHJpbmcgPSBjdXJyZW50VGFyZ2V0ICsgXCIvXCIgKyBwcm9wZXJ0eUtleTtcblx0Y29uc3QgdHlwZU9mQW5ub3RhdGlvbiA9IHR5cGVvZiBhbm5vdGF0aW9uT2JqZWN0O1xuXHRpZiAoYW5ub3RhdGlvbk9iamVjdCA9PT0gbnVsbCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIk51bGxcIiwgTnVsbDogbnVsbCB9O1xuXHR9IGVsc2UgaWYgKHR5cGVPZkFubm90YXRpb24gPT09IFwic3RyaW5nXCIpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJTdHJpbmdcIiwgU3RyaW5nOiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdH0gZWxzZSBpZiAodHlwZU9mQW5ub3RhdGlvbiA9PT0gXCJib29sZWFuXCIpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJCb29sXCIsIEJvb2w6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZBbm5vdGF0aW9uID09PSBcIm51bWJlclwiKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiSW50XCIsIEludDogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYW5ub3RhdGlvbk9iamVjdCkpIHtcblx0XHR2YWx1ZSA9IHtcblx0XHRcdHR5cGU6IFwiQ29sbGVjdGlvblwiLFxuXHRcdFx0Q29sbGVjdGlvbjogYW5ub3RhdGlvbk9iamVjdC5tYXAoKHN1YkFubm90YXRpb25PYmplY3QsIHN1YkFubm90YXRpb25PYmplY3RJbmRleCkgPT5cblx0XHRcdFx0cGFyc2VBbm5vdGF0aW9uT2JqZWN0KFxuXHRcdFx0XHRcdHN1YkFubm90YXRpb25PYmplY3QsXG5cdFx0XHRcdFx0Y3VycmVudFByb3BlcnR5VGFyZ2V0ICsgXCIvXCIgKyBzdWJBbm5vdGF0aW9uT2JqZWN0SW5kZXgsXG5cdFx0XHRcdFx0YW5ub3RhdGlvbnNMaXN0cyxcblx0XHRcdFx0XHRvQ2FwYWJpbGl0aWVzXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHR9O1xuXHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFByb3BlcnR5UGF0aFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlByb3BlcnR5UGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFBhdGhcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJQYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBbm5vdGF0aW9uUGF0aFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkFubm90YXRpb25QYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkVHlwZVwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlJlY29yZFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJElmXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiSWZcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRPclwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk9yXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5kXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiQW5kXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkRXFcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJFcVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5lXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTmVcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROb3RcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJOb3RcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRHdFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkd0XCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkR2VcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJHZVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEx0XCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTHRcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRMZVwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkxlXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQXBwbHlcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJBcHBseVwiO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgYW5ub3RhdGlvbk9iamVjdFswXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHQvLyAkVHlwZSBpcyBvcHRpb25hbC4uLlxuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlJlY29yZFwiO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJTdHJpbmdcIjtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiUGF0aFwiLCBQYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiRQYXRoIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRGVjaW1hbCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiRGVjaW1hbFwiLCBEZWNpbWFsOiBwYXJzZUZsb2F0KGFubm90YXRpb25PYmplY3QuJERlY2ltYWwpIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kUHJvcGVydHlQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJQcm9wZXJ0eVBhdGhcIiwgUHJvcGVydHlQYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiRQcm9wZXJ0eVBhdGggfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHtcblx0XHRcdHR5cGU6IFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiLFxuXHRcdFx0TmF2aWdhdGlvblByb3BlcnR5UGF0aDogYW5ub3RhdGlvbk9iamVjdC4kTmF2aWdhdGlvblByb3BlcnR5UGF0aFxuXHRcdH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kSWYgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIklmXCIsIElmOiBhbm5vdGF0aW9uT2JqZWN0LiRJZiB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFuZCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiQW5kXCIsIEFuZDogYW5ub3RhdGlvbk9iamVjdC4kQW5kIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kT3IgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIk9yXCIsIE9yOiBhbm5vdGF0aW9uT2JqZWN0LiRPciB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE5vdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiTm90XCIsIE5vdDogYW5ub3RhdGlvbk9iamVjdC4kTm90IH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRXEgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkVxXCIsIEVxOiBhbm5vdGF0aW9uT2JqZWN0LiRFcSB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE5lICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJOZVwiLCBOZTogYW5ub3RhdGlvbk9iamVjdC4kTmUgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRHdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiR3RcIiwgR3Q6IGFubm90YXRpb25PYmplY3QuJEd0IH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kR2UgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkdlXCIsIEdlOiBhbm5vdGF0aW9uT2JqZWN0LiRHZSB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEx0ICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJMdFwiLCBMdDogYW5ub3RhdGlvbk9iamVjdC4kTHQgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRMZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiTGVcIiwgTGU6IGFubm90YXRpb25PYmplY3QuJExlIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kQXBwbHkgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkFwcGx5XCIsIEFwcGx5OiBhbm5vdGF0aW9uT2JqZWN0LiRBcHBseSwgRnVuY3Rpb246IGFubm90YXRpb25PYmplY3QuJEZ1bmN0aW9uIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kQW5ub3RhdGlvblBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkFubm90YXRpb25QYXRoXCIsIEFubm90YXRpb25QYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiRBbm5vdGF0aW9uUGF0aCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEVudW1NZW1iZXIgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0ge1xuXHRcdFx0dHlwZTogXCJFbnVtTWVtYmVyXCIsXG5cdFx0XHRFbnVtTWVtYmVyOiBtYXBOYW1lVG9BbGlhcyhhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyLnNwbGl0KFwiL1wiKVswXSkgKyBcIi9cIiArIGFubm90YXRpb25PYmplY3QuJEVudW1NZW1iZXIuc3BsaXQoXCIvXCIpWzFdXG5cdFx0fTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRUeXBlKSB7XG5cdFx0dmFsdWUgPSB7XG5cdFx0XHR0eXBlOiBcIlJlY29yZFwiLFxuXHRcdFx0UmVjb3JkOiBwYXJzZUFubm90YXRpb25PYmplY3QoYW5ub3RhdGlvbk9iamVjdCwgY3VycmVudFRhcmdldCwgYW5ub3RhdGlvbnNMaXN0cywgb0NhcGFiaWxpdGllcylcblx0XHR9O1xuXHR9IGVsc2Uge1xuXHRcdHZhbHVlID0ge1xuXHRcdFx0dHlwZTogXCJSZWNvcmRcIixcblx0XHRcdFJlY29yZDogcGFyc2VBbm5vdGF0aW9uT2JqZWN0KGFubm90YXRpb25PYmplY3QsIGN1cnJlbnRUYXJnZXQsIGFubm90YXRpb25zTGlzdHMsIG9DYXBhYmlsaXRpZXMpXG5cdFx0fTtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0bmFtZTogcHJvcGVydHlLZXksXG5cdFx0dmFsdWVcblx0fTtcbn1cbmZ1bmN0aW9uIG1hcE5hbWVUb0FsaWFzKGFubm90YXRpb25OYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRsZXQgW3BhdGhQYXJ0LCBhbm5vUGFydF0gPSBhbm5vdGF0aW9uTmFtZS5zcGxpdChcIkBcIik7XG5cdGlmICghYW5ub1BhcnQpIHtcblx0XHRhbm5vUGFydCA9IHBhdGhQYXJ0O1xuXHRcdHBhdGhQYXJ0ID0gXCJcIjtcblx0fSBlbHNlIHtcblx0XHRwYXRoUGFydCArPSBcIkBcIjtcblx0fVxuXHRjb25zdCBsYXN0RG90ID0gYW5ub1BhcnQubGFzdEluZGV4T2YoXCIuXCIpO1xuXHRyZXR1cm4gcGF0aFBhcnQgKyBWT0NBQlVMQVJZX0FMSUFTW2Fubm9QYXJ0LnN1YnN0cigwLCBsYXN0RG90KV0gKyBcIi5cIiArIGFubm9QYXJ0LnN1YnN0cihsYXN0RG90ICsgMSk7XG59XG5mdW5jdGlvbiBwYXJzZUFubm90YXRpb25PYmplY3QoXG5cdGFubm90YXRpb25PYmplY3Q6IGFueSxcblx0Y3VycmVudE9iamVjdFRhcmdldDogc3RyaW5nLFxuXHRhbm5vdGF0aW9uc0xpc3RzOiBSZWNvcmQ8c3RyaW5nLCBBbm5vdGF0aW9uTGlzdD4sXG5cdG9DYXBhYmlsaXRpZXM6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzXG4pOiBFeHByZXNzaW9uIHwgQW5ub3RhdGlvblJlY29yZCB8IEFubm90YXRpb24ge1xuXHRsZXQgcGFyc2VkQW5ub3RhdGlvbk9iamVjdDogYW55ID0ge307XG5cdGNvbnN0IHR5cGVPZk9iamVjdCA9IHR5cGVvZiBhbm5vdGF0aW9uT2JqZWN0O1xuXHRpZiAoYW5ub3RhdGlvbk9iamVjdCA9PT0gbnVsbCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiTnVsbFwiLCBOdWxsOiBudWxsIH07XG5cdH0gZWxzZSBpZiAodHlwZU9mT2JqZWN0ID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJTdHJpbmdcIiwgU3RyaW5nOiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdH0gZWxzZSBpZiAodHlwZU9mT2JqZWN0ID09PSBcImJvb2xlYW5cIikge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiQm9vbFwiLCBCb29sOiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdH0gZWxzZSBpZiAodHlwZU9mT2JqZWN0ID09PSBcIm51bWJlclwiKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJJbnRcIiwgSW50OiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kQW5ub3RhdGlvblBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiQW5ub3RhdGlvblBhdGhcIiwgQW5ub3RhdGlvblBhdGg6IGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJQYXRoXCIsIFBhdGg6IGFubm90YXRpb25PYmplY3QuJFBhdGggfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiREZWNpbWFsICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkRlY2ltYWxcIiwgRGVjaW1hbDogcGFyc2VGbG9hdChhbm5vdGF0aW9uT2JqZWN0LiREZWNpbWFsKSB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJFByb3BlcnR5UGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJQcm9wZXJ0eVBhdGhcIiwgUHJvcGVydHlQYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiRQcm9wZXJ0eVBhdGggfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRJZiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJJZlwiLCBJZjogYW5ub3RhdGlvbk9iamVjdC4kSWYgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBbmQgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiQW5kXCIsIEFuZDogYW5ub3RhdGlvbk9iamVjdC4kQW5kIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kT3IgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiT3JcIiwgT3I6IGFubm90YXRpb25PYmplY3QuJE9yIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTm90ICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIk5vdFwiLCBOb3Q6IGFubm90YXRpb25PYmplY3QuJE5vdCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEVxICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkVxXCIsIEVxOiBhbm5vdGF0aW9uT2JqZWN0LiRFcSB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE5lICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIk5lXCIsIE5lOiBhbm5vdGF0aW9uT2JqZWN0LiROZSB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEd0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkd0XCIsIEd0OiBhbm5vdGF0aW9uT2JqZWN0LiRHdCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEdlICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkdlXCIsIEdlOiBhbm5vdGF0aW9uT2JqZWN0LiRHZSB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEx0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkx0XCIsIEx0OiBhbm5vdGF0aW9uT2JqZWN0LiRMdCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJExlICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkxlXCIsIExlOiBhbm5vdGF0aW9uT2JqZWN0LiRMZSB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFwcGx5ICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkFwcGx5XCIsIEFwcGx5OiBhbm5vdGF0aW9uT2JqZWN0LiRBcHBseSwgRnVuY3Rpb246IGFubm90YXRpb25PYmplY3QuJEZ1bmN0aW9uIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTmF2aWdhdGlvblByb3BlcnR5UGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHtcblx0XHRcdHR5cGU6IFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiLFxuXHRcdFx0TmF2aWdhdGlvblByb3BlcnR5UGF0aDogYW5ub3RhdGlvbk9iamVjdC4kTmF2aWdhdGlvblByb3BlcnR5UGF0aFxuXHRcdH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHtcblx0XHRcdHR5cGU6IFwiRW51bU1lbWJlclwiLFxuXHRcdFx0RW51bU1lbWJlcjogbWFwTmFtZVRvQWxpYXMoYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlci5zcGxpdChcIi9cIilbMF0pICsgXCIvXCIgKyBhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyLnNwbGl0KFwiL1wiKVsxXVxuXHRcdH07XG5cdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhbm5vdGF0aW9uT2JqZWN0KSkge1xuXHRcdGNvbnN0IHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uID0gcGFyc2VkQW5ub3RhdGlvbk9iamVjdCBhcyBhbnk7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiA9IGFubm90YXRpb25PYmplY3QubWFwKChzdWJBbm5vdGF0aW9uT2JqZWN0LCBzdWJBbm5vdGF0aW9uSW5kZXgpID0+XG5cdFx0XHRwYXJzZUFubm90YXRpb25PYmplY3Qoc3ViQW5ub3RhdGlvbk9iamVjdCwgY3VycmVudE9iamVjdFRhcmdldCArIFwiL1wiICsgc3ViQW5ub3RhdGlvbkluZGV4LCBhbm5vdGF0aW9uc0xpc3RzLCBvQ2FwYWJpbGl0aWVzKVxuXHRcdCk7XG5cdFx0aWYgKGFubm90YXRpb25PYmplY3QubGVuZ3RoID4gMCkge1xuXHRcdFx0aWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkUHJvcGVydHlQYXRoXCIpKSB7XG5cdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiUHJvcGVydHlQYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkUGF0aFwiKSkge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIpKSB7XG5cdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFubm90YXRpb25QYXRoXCIpKSB7XG5cdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiQW5ub3RhdGlvblBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRUeXBlXCIpKSB7XG5cdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiUmVjb3JkXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkSWZcIikpIHtcblx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJJZlwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFuZFwiKSkge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkFuZFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE9yXCIpKSB7XG5cdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiT3JcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRFcVwiKSkge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkVxXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTmVcIikpIHtcblx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJOZVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5vdFwiKSkge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk5vdFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEd0XCIpKSB7XG5cdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiR3RcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRHZVwiKSkge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkdlXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTHRcIikpIHtcblx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJMdFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJExlXCIpKSB7XG5cdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTGVcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBcHBseVwiKSkge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkFwcGx5XCI7XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBhbm5vdGF0aW9uT2JqZWN0WzBdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiUmVjb3JkXCI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlN0cmluZ1wiO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdC4kVHlwZSkge1xuXHRcdFx0Y29uc3QgdHlwZVZhbHVlID0gYW5ub3RhdGlvbk9iamVjdC4kVHlwZTtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudHlwZSA9IHR5cGVWYWx1ZTsgLy9gJHt0eXBlQWxpYXN9LiR7dHlwZVRlcm19YDtcblx0XHR9XG5cdFx0Y29uc3QgcHJvcGVydHlWYWx1ZXM6IGFueSA9IFtdO1xuXHRcdE9iamVjdC5rZXlzKGFubm90YXRpb25PYmplY3QpLmZvckVhY2gocHJvcGVydHlLZXkgPT4ge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkVHlwZVwiICYmXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiRJZlwiICYmXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiRBcHBseVwiICYmXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiRBbmRcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkT3JcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkTmVcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkR3RcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkR2VcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkTHRcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkTGVcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkTm90XCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEVxXCIgJiZcblx0XHRcdFx0IXByb3BlcnR5S2V5LnN0YXJ0c1dpdGgoXCJAXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0cHJvcGVydHlWYWx1ZXMucHVzaChcblx0XHRcdFx0XHRwYXJzZVByb3BlcnR5VmFsdWUoYW5ub3RhdGlvbk9iamVjdFtwcm9wZXJ0eUtleV0sIHByb3BlcnR5S2V5LCBjdXJyZW50T2JqZWN0VGFyZ2V0LCBhbm5vdGF0aW9uc0xpc3RzLCBvQ2FwYWJpbGl0aWVzKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIGlmIChwcm9wZXJ0eUtleS5zdGFydHNXaXRoKFwiQFwiKSkge1xuXHRcdFx0XHQvLyBBbm5vdGF0aW9uIG9mIGFubm90YXRpb25cblx0XHRcdFx0Y3JlYXRlQW5ub3RhdGlvbkxpc3RzKFxuXHRcdFx0XHRcdHsgW3Byb3BlcnR5S2V5XTogYW5ub3RhdGlvbk9iamVjdFtwcm9wZXJ0eUtleV0gfSxcblx0XHRcdFx0XHRjdXJyZW50T2JqZWN0VGFyZ2V0LFxuXHRcdFx0XHRcdGFubm90YXRpb25zTGlzdHMsXG5cdFx0XHRcdFx0b0NhcGFiaWxpdGllc1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QucHJvcGVydHlWYWx1ZXMgPSBwcm9wZXJ0eVZhbHVlcztcblx0fVxuXHRyZXR1cm4gcGFyc2VkQW5ub3RhdGlvbk9iamVjdDtcbn1cbmZ1bmN0aW9uIGdldE9yQ3JlYXRlQW5ub3RhdGlvbkxpc3QodGFyZ2V0OiBzdHJpbmcsIGFubm90YXRpb25zTGlzdHM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25MaXN0Pik6IEFubm90YXRpb25MaXN0IHtcblx0aWYgKCFhbm5vdGF0aW9uc0xpc3RzLmhhc093blByb3BlcnR5KHRhcmdldCkpIHtcblx0XHRhbm5vdGF0aW9uc0xpc3RzW3RhcmdldF0gPSB7XG5cdFx0XHR0YXJnZXQ6IHRhcmdldCxcblx0XHRcdGFubm90YXRpb25zOiBbXVxuXHRcdH07XG5cdH1cblx0cmV0dXJuIGFubm90YXRpb25zTGlzdHNbdGFyZ2V0XTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQ2hhcnRBbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0OiBhbnkpIHtcblx0cmV0dXJuIGFubm90YXRpb25PYmplY3QuZmlsdGVyKChvUmVjb3JkOiBhbnkpID0+IHtcblx0XHRpZiAob1JlY29yZC5UYXJnZXQgJiYgb1JlY29yZC5UYXJnZXQuJEFubm90YXRpb25QYXRoKSB7XG5cdFx0XHRyZXR1cm4gb1JlY29yZC5UYXJnZXQuJEFubm90YXRpb25QYXRoLmluZGV4T2YoXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIikgPT09IC0xO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVJQk5Bbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0OiBhbnkpIHtcblx0cmV0dXJuIGFubm90YXRpb25PYmplY3QuZmlsdGVyKChvUmVjb3JkOiBhbnkpID0+IHtcblx0XHRyZXR1cm4gb1JlY29yZC4kVHlwZSAhPT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVByZXNlbnRhdGlvblZhcmlhbnQoYW5ub3RhdGlvbk9iamVjdDogYW55KSB7XG5cdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0LmZpbHRlcigob1JlY29yZDogYW55KSA9PiB7XG5cdFx0cmV0dXJuIG9SZWNvcmQuJEFubm90YXRpb25QYXRoICE9PSBcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwiO1xuXHR9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQW5ub3RhdGlvbkxpc3RzKFxuXHRhbm5vdGF0aW9uT2JqZWN0czogYW55LFxuXHRhbm5vdGF0aW9uVGFyZ2V0OiBzdHJpbmcsXG5cdGFubm90YXRpb25MaXN0czogUmVjb3JkPHN0cmluZywgQW5ub3RhdGlvbkxpc3Q+LFxuXHRvQ2FwYWJpbGl0aWVzOiBFbnZpcm9ubWVudENhcGFiaWxpdGllc1xuKSB7XG5cdGlmIChPYmplY3Qua2V5cyhhbm5vdGF0aW9uT2JqZWN0cykubGVuZ3RoID09PSAwKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGNvbnN0IG91dEFubm90YXRpb25PYmplY3QgPSBnZXRPckNyZWF0ZUFubm90YXRpb25MaXN0KGFubm90YXRpb25UYXJnZXQsIGFubm90YXRpb25MaXN0cyk7XG5cdGlmICghb0NhcGFiaWxpdGllcy5NaWNyb0NoYXJ0KSB7XG5cdFx0ZGVsZXRlIGFubm90YXRpb25PYmplY3RzW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCJdO1xuXHR9XG5cblx0Zm9yIChsZXQgYW5ub3RhdGlvbktleSBpbiBhbm5vdGF0aW9uT2JqZWN0cykge1xuXHRcdGxldCBhbm5vdGF0aW9uT2JqZWN0ID0gYW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV07XG5cdFx0c3dpdGNoIChhbm5vdGF0aW9uS2V5KSB7XG5cdFx0XHRjYXNlIFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckZhY2V0c1wiOlxuXHRcdFx0XHRpZiAoIW9DYXBhYmlsaXRpZXMuTWljcm9DaGFydCkge1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3QgPSByZW1vdmVDaGFydEFubm90YXRpb25zKGFubm90YXRpb25PYmplY3QpO1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2Fubm90YXRpb25LZXldID0gYW5ub3RhdGlvbk9iamVjdDtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSWRlbnRpZmljYXRpb25cIjpcblx0XHRcdFx0aWYgKCFvQ2FwYWJpbGl0aWVzLkludGVudEJhc2VkTmF2aWdhdGlvbikge1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3QgPSByZW1vdmVJQk5Bbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0KTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCI6XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5JbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0ID0gcmVtb3ZlSUJOQW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdCk7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV0gPSBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5NaWNyb0NoYXJ0KSB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdCA9IHJlbW92ZUNoYXJ0QW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdCk7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV0gPSBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GaWVsZEdyb3VwXCI6XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5JbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0LkRhdGEgPSByZW1vdmVJQk5Bbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0LkRhdGEpO1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2Fubm90YXRpb25LZXldID0gYW5ub3RhdGlvbk9iamVjdDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIW9DYXBhYmlsaXRpZXMuTWljcm9DaGFydCkge1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3QuRGF0YSA9IHJlbW92ZUNoYXJ0QW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdC5EYXRhKTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRcIjpcblx0XHRcdFx0aWYgKCFvQ2FwYWJpbGl0aWVzLkNoYXJ0ICYmIGFubm90YXRpb25PYmplY3QuVmlzdWFsaXphdGlvbnMpIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0LlZpc3VhbGl6YXRpb25zID0gaGFuZGxlUHJlc2VudGF0aW9uVmFyaWFudChhbm5vdGF0aW9uT2JqZWN0LlZpc3VhbGl6YXRpb25zKTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRsZXQgY3VycmVudE91dEFubm90YXRpb25PYmplY3QgPSBvdXRBbm5vdGF0aW9uT2JqZWN0O1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIGFubm90YXRpb24gb2YgYW5ub3RhdGlvblxuXHRcdGNvbnN0IGFubm90YXRpb25PZkFubm90YXRpb25TcGxpdCA9IGFubm90YXRpb25LZXkuc3BsaXQoXCJAXCIpO1xuXHRcdGlmIChhbm5vdGF0aW9uT2ZBbm5vdGF0aW9uU3BsaXQubGVuZ3RoID4gMikge1xuXHRcdFx0Y3VycmVudE91dEFubm90YXRpb25PYmplY3QgPSBnZXRPckNyZWF0ZUFubm90YXRpb25MaXN0KFxuXHRcdFx0XHRhbm5vdGF0aW9uVGFyZ2V0ICsgXCJAXCIgKyBhbm5vdGF0aW9uT2ZBbm5vdGF0aW9uU3BsaXRbMV0sXG5cdFx0XHRcdGFubm90YXRpb25MaXN0c1xuXHRcdFx0KTtcblx0XHRcdGFubm90YXRpb25LZXkgPSBhbm5vdGF0aW9uT2ZBbm5vdGF0aW9uU3BsaXRbMl07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFubm90YXRpb25LZXkgPSBhbm5vdGF0aW9uT2ZBbm5vdGF0aW9uU3BsaXRbMV07XG5cdFx0fVxuXG5cdFx0Y29uc3QgYW5ub3RhdGlvblF1YWxpZmllclNwbGl0ID0gYW5ub3RhdGlvbktleS5zcGxpdChcIiNcIik7XG5cdFx0Y29uc3QgcXVhbGlmaWVyID0gYW5ub3RhdGlvblF1YWxpZmllclNwbGl0WzFdO1xuXHRcdGFubm90YXRpb25LZXkgPSBhbm5vdGF0aW9uUXVhbGlmaWVyU3BsaXRbMF07XG5cblx0XHRjb25zdCBwYXJzZWRBbm5vdGF0aW9uT2JqZWN0OiBhbnkgPSB7XG5cdFx0XHR0ZXJtOiBgJHthbm5vdGF0aW9uS2V5fWAsXG5cdFx0XHRxdWFsaWZpZXI6IHF1YWxpZmllclxuXHRcdH07XG5cdFx0bGV0IGN1cnJlbnRBbm5vdGF0aW9uVGFyZ2V0ID0gYW5ub3RhdGlvblRhcmdldCArIFwiQFwiICsgcGFyc2VkQW5ub3RhdGlvbk9iamVjdC50ZXJtO1xuXHRcdGlmIChxdWFsaWZpZXIpIHtcblx0XHRcdGN1cnJlbnRBbm5vdGF0aW9uVGFyZ2V0ICs9IFwiI1wiICsgcXVhbGlmaWVyO1xuXHRcdH1cblx0XHRsZXQgaXNDb2xsZWN0aW9uID0gZmFsc2U7XG5cdFx0Y29uc3QgdHlwZW9mQW5ub3RhdGlvbiA9IHR5cGVvZiBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0ID09PSBudWxsKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkJvb2xcIiwgQm9vbDogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mQW5ub3RhdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJTdHJpbmdcIiwgU3RyaW5nOiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdFx0fSBlbHNlIGlmICh0eXBlb2ZBbm5vdGF0aW9uID09PSBcImJvb2xlYW5cIikge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJCb29sXCIsIEJvb2w6IGFubm90YXRpb25PYmplY3QgfTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZkFubm90YXRpb24gPT09IFwibnVtYmVyXCIpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiSW50XCIsIEludDogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kSWYgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJJZlwiLCBJZjogYW5ub3RhdGlvbk9iamVjdC4kSWYgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFuZCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkFuZFwiLCBBbmQ6IGFubm90YXRpb25PYmplY3QuJEFuZCB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kT3IgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJPclwiLCBPcjogYW5ub3RhdGlvbk9iamVjdC4kT3IgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE5vdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIk5vdFwiLCBOb3Q6IGFubm90YXRpb25PYmplY3QuJE5vdCB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRXEgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJFcVwiLCBFcTogYW5ub3RhdGlvbk9iamVjdC4kRXEgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE5lICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiTmVcIiwgTmU6IGFubm90YXRpb25PYmplY3QuJE5lIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRHdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkd0XCIsIEd0OiBhbm5vdGF0aW9uT2JqZWN0LiRHdCB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kR2UgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJHZVwiLCBHZTogYW5ub3RhdGlvbk9iamVjdC4kR2UgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEx0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiTHRcIiwgTHQ6IGFubm90YXRpb25PYmplY3QuJEx0IH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRMZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkxlXCIsIExlOiBhbm5vdGF0aW9uT2JqZWN0LiRMZSB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kQXBwbHkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJBcHBseVwiLCBBcHBseTogYW5ub3RhdGlvbk9iamVjdC4kQXBwbHksIEZ1bmN0aW9uOiBhbm5vdGF0aW9uT2JqZWN0LiRGdW5jdGlvbiB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIlBhdGhcIiwgUGF0aDogYW5ub3RhdGlvbk9iamVjdC4kUGF0aCB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kQW5ub3RhdGlvblBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHtcblx0XHRcdFx0dHlwZTogXCJBbm5vdGF0aW9uUGF0aFwiLFxuXHRcdFx0XHRBbm5vdGF0aW9uUGF0aDogYW5ub3RhdGlvbk9iamVjdC4kQW5ub3RhdGlvblBhdGhcblx0XHRcdH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiREZWNpbWFsICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiRGVjaW1hbFwiLCBEZWNpbWFsOiBwYXJzZUZsb2F0KGFubm90YXRpb25PYmplY3QuJERlY2ltYWwpIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7XG5cdFx0XHRcdHR5cGU6IFwiRW51bU1lbWJlclwiLFxuXHRcdFx0XHRFbnVtTWVtYmVyOiBtYXBOYW1lVG9BbGlhcyhhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyLnNwbGl0KFwiL1wiKVswXSkgKyBcIi9cIiArIGFubm90YXRpb25PYmplY3QuJEVudW1NZW1iZXIuc3BsaXQoXCIvXCIpWzFdXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhbm5vdGF0aW9uT2JqZWN0KSkge1xuXHRcdFx0aXNDb2xsZWN0aW9uID0gdHJ1ZTtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbiA9IGFubm90YXRpb25PYmplY3QubWFwKChzdWJBbm5vdGF0aW9uT2JqZWN0LCBzdWJBbm5vdGF0aW9uSW5kZXgpID0+XG5cdFx0XHRcdHBhcnNlQW5ub3RhdGlvbk9iamVjdChcblx0XHRcdFx0XHRzdWJBbm5vdGF0aW9uT2JqZWN0LFxuXHRcdFx0XHRcdGN1cnJlbnRBbm5vdGF0aW9uVGFyZ2V0ICsgXCIvXCIgKyBzdWJBbm5vdGF0aW9uSW5kZXgsXG5cdFx0XHRcdFx0YW5ub3RhdGlvbkxpc3RzLFxuXHRcdFx0XHRcdG9DYXBhYmlsaXRpZXNcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0aWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkUHJvcGVydHlQYXRoXCIpKSB7XG5cdFx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlByb3BlcnR5UGF0aFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkUGF0aFwiKSkge1xuXHRcdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJQYXRoXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIpKSB7XG5cdFx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFubm90YXRpb25QYXRoXCIpKSB7XG5cdFx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkFubm90YXRpb25QYXRoXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRUeXBlXCIpKSB7XG5cdFx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlJlY29yZFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkSWZcIikpIHtcblx0XHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiSWZcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE9yXCIpKSB7XG5cdFx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk9yXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRFcVwiKSkge1xuXHRcdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJFcVwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTmVcIikpIHtcblx0XHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTmVcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5vdFwiKSkge1xuXHRcdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJOb3RcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEd0XCIpKSB7XG5cdFx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkd0XCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRHZVwiKSkge1xuXHRcdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJHZVwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTHRcIikpIHtcblx0XHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTHRcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJExlXCIpKSB7XG5cdFx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkxlXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBbmRcIikpIHtcblx0XHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiQW5kXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBcHBseVwiKSkge1xuXHRcdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJBcHBseVwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBhbm5vdGF0aW9uT2JqZWN0WzBdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlJlY29yZFwiO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJTdHJpbmdcIjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCByZWNvcmQ6IEFubm90YXRpb25SZWNvcmQgPSB7XG5cdFx0XHRcdHByb3BlcnR5VmFsdWVzOiBbXVxuXHRcdFx0fTtcblx0XHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0LiRUeXBlKSB7XG5cdFx0XHRcdGNvbnN0IHR5cGVWYWx1ZSA9IGFubm90YXRpb25PYmplY3QuJFR5cGU7XG5cdFx0XHRcdHJlY29yZC50eXBlID0gYCR7dHlwZVZhbHVlfWA7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBwcm9wZXJ0eVZhbHVlczogYW55W10gPSBbXTtcblx0XHRcdGZvciAoY29uc3QgcHJvcGVydHlLZXkgaW4gYW5ub3RhdGlvbk9iamVjdCkge1xuXHRcdFx0XHRpZiAocHJvcGVydHlLZXkgIT09IFwiJFR5cGVcIiAmJiAhcHJvcGVydHlLZXkuc3RhcnRzV2l0aChcIkBcIikpIHtcblx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlcy5wdXNoKFxuXHRcdFx0XHRcdFx0cGFyc2VQcm9wZXJ0eVZhbHVlKFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0W3Byb3BlcnR5S2V5XSxcblx0XHRcdFx0XHRcdFx0cHJvcGVydHlLZXksXG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRBbm5vdGF0aW9uVGFyZ2V0LFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uTGlzdHMsXG5cdFx0XHRcdFx0XHRcdG9DYXBhYmlsaXRpZXNcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHByb3BlcnR5S2V5LnN0YXJ0c1dpdGgoXCJAXCIpKSB7XG5cdFx0XHRcdFx0Ly8gQW5ub3RhdGlvbiBvZiByZWNvcmRcblx0XHRcdFx0XHRjcmVhdGVBbm5vdGF0aW9uTGlzdHMoXG5cdFx0XHRcdFx0XHR7IFtwcm9wZXJ0eUtleV06IGFubm90YXRpb25PYmplY3RbcHJvcGVydHlLZXldIH0sXG5cdFx0XHRcdFx0XHRjdXJyZW50QW5ub3RhdGlvblRhcmdldCxcblx0XHRcdFx0XHRcdGFubm90YXRpb25MaXN0cyxcblx0XHRcdFx0XHRcdG9DYXBhYmlsaXRpZXNcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZWNvcmQucHJvcGVydHlWYWx1ZXMgPSBwcm9wZXJ0eVZhbHVlcztcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QucmVjb3JkID0gcmVjb3JkO1xuXHRcdH1cblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmlzQ29sbGVjdGlvbiA9IGlzQ29sbGVjdGlvbjtcblx0XHRjdXJyZW50T3V0QW5ub3RhdGlvbk9iamVjdC5hbm5vdGF0aW9ucy5wdXNoKHBhcnNlZEFubm90YXRpb25PYmplY3QpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVQcm9wZXJ0eShwcm9wZXJ0eURlZmluaXRpb246IGFueSwgZW50aXR5VHlwZU9iamVjdDogRW50aXR5VHlwZSB8IENvbXBsZXhUeXBlLCBwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IFByb3BlcnR5IHtcblx0Y29uc3QgcHJvcGVydHlPYmplY3Q6IFByb3BlcnR5ID0ge1xuXHRcdF90eXBlOiBcIlByb3BlcnR5XCIsXG5cdFx0bmFtZTogcHJvcGVydHlOYW1lLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogYCR7ZW50aXR5VHlwZU9iamVjdC5mdWxseVF1YWxpZmllZE5hbWV9LyR7cHJvcGVydHlOYW1lfWAsXG5cdFx0dHlwZTogcHJvcGVydHlEZWZpbml0aW9uLiRUeXBlLFxuXHRcdG1heExlbmd0aDogcHJvcGVydHlEZWZpbml0aW9uLiRNYXhMZW5ndGgsXG5cdFx0cHJlY2lzaW9uOiBwcm9wZXJ0eURlZmluaXRpb24uJFByZWNpc2lvbixcblx0XHRzY2FsZTogcHJvcGVydHlEZWZpbml0aW9uLiRTY2FsZSxcblx0XHRudWxsYWJsZTogcHJvcGVydHlEZWZpbml0aW9uLiROdWxsYWJsZVxuXHR9O1xuXHRyZXR1cm4gcHJvcGVydHlPYmplY3Q7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVOYXZpZ2F0aW9uUHJvcGVydHkoXG5cdG5hdlByb3BlcnR5RGVmaW5pdGlvbjogYW55LFxuXHRlbnRpdHlUeXBlT2JqZWN0OiBFbnRpdHlUeXBlIHwgQ29tcGxleFR5cGUsXG5cdG5hdlByb3BlcnR5TmFtZTogc3RyaW5nXG4pOiBWNE5hdmlnYXRpb25Qcm9wZXJ0eSB7XG5cdGxldCByZWZlcmVudGlhbENvbnN0cmFpbnQ6IFJlZmVyZW50aWFsQ29uc3RyYWludFtdID0gW107XG5cdGlmIChuYXZQcm9wZXJ0eURlZmluaXRpb24uJFJlZmVyZW50aWFsQ29uc3RyYWludCkge1xuXHRcdHJlZmVyZW50aWFsQ29uc3RyYWludCA9IE9iamVjdC5rZXlzKG5hdlByb3BlcnR5RGVmaW5pdGlvbi4kUmVmZXJlbnRpYWxDb25zdHJhaW50KS5tYXAoc291cmNlUHJvcGVydHlOYW1lID0+IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHNvdXJjZVR5cGVOYW1lOiBlbnRpdHlUeXBlT2JqZWN0Lm5hbWUsXG5cdFx0XHRcdHNvdXJjZVByb3BlcnR5OiBzb3VyY2VQcm9wZXJ0eU5hbWUsXG5cdFx0XHRcdHRhcmdldFR5cGVOYW1lOiBuYXZQcm9wZXJ0eURlZmluaXRpb24uJFR5cGUsXG5cdFx0XHRcdHRhcmdldFByb3BlcnR5OiBuYXZQcm9wZXJ0eURlZmluaXRpb24uJFJlZmVyZW50aWFsQ29uc3RyYWludFtzb3VyY2VQcm9wZXJ0eU5hbWVdXG5cdFx0XHR9O1xuXHRcdH0pO1xuXHR9XG5cdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0eTogVjROYXZpZ2F0aW9uUHJvcGVydHkgPSB7XG5cdFx0X3R5cGU6IFwiTmF2aWdhdGlvblByb3BlcnR5XCIsXG5cdFx0bmFtZTogbmF2UHJvcGVydHlOYW1lLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogYCR7ZW50aXR5VHlwZU9iamVjdC5mdWxseVF1YWxpZmllZE5hbWV9LyR7bmF2UHJvcGVydHlOYW1lfWAsXG5cdFx0cGFydG5lcjogbmF2UHJvcGVydHlEZWZpbml0aW9uLiRQYXJ0bmVyLFxuXHRcdGlzQ29sbGVjdGlvbjogbmF2UHJvcGVydHlEZWZpbml0aW9uLiRpc0NvbGxlY3Rpb24gPyBuYXZQcm9wZXJ0eURlZmluaXRpb24uJGlzQ29sbGVjdGlvbiA6IGZhbHNlLFxuXHRcdGNvbnRhaW5zVGFyZ2V0OiBuYXZQcm9wZXJ0eURlZmluaXRpb24uJENvbnRhaW5zVGFyZ2V0LFxuXHRcdHRhcmdldFR5cGVOYW1lOiBuYXZQcm9wZXJ0eURlZmluaXRpb24uJFR5cGUsXG5cdFx0cmVmZXJlbnRpYWxDb25zdHJhaW50XG5cdH07XG5cblx0cmV0dXJuIG5hdmlnYXRpb25Qcm9wZXJ0eTtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUVudGl0eVNldChlbnRpdHlTZXREZWZpbml0aW9uOiBhbnksIGVudGl0eVNldE5hbWU6IHN0cmluZywgZW50aXR5Q29udGFpbmVyTmFtZTogc3RyaW5nKTogRW50aXR5U2V0IHtcblx0Y29uc3QgZW50aXR5U2V0T2JqZWN0OiBFbnRpdHlTZXQgPSB7XG5cdFx0X3R5cGU6IFwiRW50aXR5U2V0XCIsXG5cdFx0bmFtZTogZW50aXR5U2V0TmFtZSxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nOiB7fSxcblx0XHRlbnRpdHlUeXBlTmFtZTogZW50aXR5U2V0RGVmaW5pdGlvbi4kVHlwZSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGAke2VudGl0eUNvbnRhaW5lck5hbWV9LyR7ZW50aXR5U2V0TmFtZX1gXG5cdH07XG5cdHJldHVybiBlbnRpdHlTZXRPYmplY3Q7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVTaW5nbGV0b24oc2luZ2xldG9uRGVmaW5pdGlvbjogYW55LCBzaW5nbGV0b25OYW1lOiBzdHJpbmcsIGVudGl0eUNvbnRhaW5lck5hbWU6IHN0cmluZyk6IFNpbmdsZXRvbiB7XG5cdHJldHVybiB7XG5cdFx0X3R5cGU6IFwiU2luZ2xldG9uXCIsXG5cdFx0bmFtZTogc2luZ2xldG9uTmFtZSxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nOiB7fSxcblx0XHR0eXBlTmFtZTogc2luZ2xldG9uRGVmaW5pdGlvbi4kVHlwZSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGAke2VudGl0eUNvbnRhaW5lck5hbWV9LyR7c2luZ2xldG9uTmFtZX1gLFxuXHRcdG51bGxhYmxlOiB0cnVlXG5cdH0gYXMgU2luZ2xldG9uO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlVHlwZURlZmluaXRpb24odHlwZURlZmluaXRpb246IGFueSwgdHlwZU5hbWU6IHN0cmluZywgbmFtZXNwYWNlOiBzdHJpbmcpOiBUeXBlRGVmaW5pdGlvbiB7XG5cdGNvbnN0IHR5cGVPYmplY3Q6IFR5cGVEZWZpbml0aW9uID0ge1xuXHRcdF90eXBlOiBcIlR5cGVEZWZpbml0aW9uXCIsXG5cdFx0bmFtZTogdHlwZU5hbWUucmVwbGFjZShuYW1lc3BhY2UgKyBcIi5cIiwgXCJcIiksXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiB0eXBlTmFtZSxcblx0XHR1bmRlcmx5aW5nVHlwZTogdHlwZURlZmluaXRpb24uJFVuZGVybHlpbmdUeXBlXG5cdH07XG5cdHJldHVybiB0eXBlT2JqZWN0O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlQ29tcGxleFR5cGUoY29tcGxleFR5cGVEZWZpbml0aW9uOiBhbnksIGNvbXBsZXhUeXBlTmFtZTogc3RyaW5nLCBuYW1lc3BhY2U6IHN0cmluZyk6IENvbXBsZXhUeXBlIHtcblx0Y29uc3QgY29tcGxleFR5cGVPYmplY3Q6IENvbXBsZXhUeXBlID0ge1xuXHRcdF90eXBlOiBcIkNvbXBsZXhUeXBlXCIsXG5cdFx0bmFtZTogY29tcGxleFR5cGVOYW1lLnJlcGxhY2UobmFtZXNwYWNlICsgXCIuXCIsIFwiXCIpLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogY29tcGxleFR5cGVOYW1lLFxuXHRcdHByb3BlcnRpZXM6IFtdLFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBbXVxuXHR9O1xuXG5cdGNvbnN0IGNvbXBsZXhUeXBlUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKGNvbXBsZXhUeXBlRGVmaW5pdGlvbilcblx0XHQuZmlsdGVyKHByb3BlcnR5TmFtZU9yTm90ID0+IHtcblx0XHRcdGlmIChwcm9wZXJ0eU5hbWVPck5vdCAhPSBcIiRLZXlcIiAmJiBwcm9wZXJ0eU5hbWVPck5vdCAhPSBcIiRraW5kXCIpIHtcblx0XHRcdFx0cmV0dXJuIGNvbXBsZXhUeXBlRGVmaW5pdGlvbltwcm9wZXJ0eU5hbWVPck5vdF0uJGtpbmQgPT09IFwiUHJvcGVydHlcIjtcblx0XHRcdH1cblx0XHR9KVxuXHRcdC5zb3J0KChhLCBiKSA9PiAoYSA+IGIgPyAxIDogLTEpKVxuXHRcdC5tYXAocHJvcGVydHlOYW1lID0+IHtcblx0XHRcdHJldHVybiBwcmVwYXJlUHJvcGVydHkoY29tcGxleFR5cGVEZWZpbml0aW9uW3Byb3BlcnR5TmFtZV0sIGNvbXBsZXhUeXBlT2JqZWN0LCBwcm9wZXJ0eU5hbWUpO1xuXHRcdH0pO1xuXG5cdGNvbXBsZXhUeXBlT2JqZWN0LnByb3BlcnRpZXMgPSBjb21wbGV4VHlwZVByb3BlcnRpZXM7XG5cdGNvbnN0IGNvbXBsZXhUeXBlTmF2aWdhdGlvblByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhjb21wbGV4VHlwZURlZmluaXRpb24pXG5cdFx0LmZpbHRlcihwcm9wZXJ0eU5hbWVPck5vdCA9PiB7XG5cdFx0XHRpZiAocHJvcGVydHlOYW1lT3JOb3QgIT0gXCIkS2V5XCIgJiYgcHJvcGVydHlOYW1lT3JOb3QgIT0gXCIka2luZFwiKSB7XG5cdFx0XHRcdHJldHVybiBjb21wbGV4VHlwZURlZmluaXRpb25bcHJvcGVydHlOYW1lT3JOb3RdLiRraW5kID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiO1xuXHRcdFx0fVxuXHRcdH0pXG5cdFx0LnNvcnQoKGEsIGIpID0+IChhID4gYiA/IDEgOiAtMSkpXG5cdFx0Lm1hcChuYXZQcm9wZXJ0eU5hbWUgPT4ge1xuXHRcdFx0cmV0dXJuIHByZXBhcmVOYXZpZ2F0aW9uUHJvcGVydHkoY29tcGxleFR5cGVEZWZpbml0aW9uW25hdlByb3BlcnR5TmFtZV0sIGNvbXBsZXhUeXBlT2JqZWN0LCBuYXZQcm9wZXJ0eU5hbWUpO1xuXHRcdH0pO1xuXHRjb21wbGV4VHlwZU9iamVjdC5uYXZpZ2F0aW9uUHJvcGVydGllcyA9IGNvbXBsZXhUeXBlTmF2aWdhdGlvblByb3BlcnRpZXM7XG5cdHJldHVybiBjb21wbGV4VHlwZU9iamVjdDtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUVudGl0eUtleXMoZW50aXR5VHlwZURlZmluaXRpb246IGFueSwgb01ldGFNb2RlbERhdGE6IGFueSk6IGFueSB7XG5cdGlmICghZW50aXR5VHlwZURlZmluaXRpb24uJEtleSAmJiBlbnRpdHlUeXBlRGVmaW5pdGlvbi4kQmFzZVR5cGUpIHtcblx0XHRyZXR1cm4gcHJlcGFyZUVudGl0eUtleXMob01ldGFNb2RlbERhdGFbYCR7ZW50aXR5VHlwZURlZmluaXRpb24uJEJhc2VUeXBlfWBdLCBvTWV0YU1vZGVsRGF0YSk7XG5cdH1cblx0cmV0dXJuIGVudGl0eVR5cGVEZWZpbml0aW9uLiRLZXkgfHwgW107IC8vaGFuZGxpbmcgb2YgZW50aXR5IHR5cGVzIHdpdGhvdXQga2V5IGFzIHdlbGwgYXMgYmFzZXR5cGVcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUVudGl0eVR5cGUoZW50aXR5VHlwZURlZmluaXRpb246IGFueSwgZW50aXR5VHlwZU5hbWU6IHN0cmluZywgbmFtZXNwYWNlOiBzdHJpbmcsIG1ldGFNb2RlbERhdGE6IGFueSk6IEVudGl0eVR5cGUge1xuXHRjb25zdCBlbnRpdHlLZXlzOiBhbnkgPSBwcmVwYXJlRW50aXR5S2V5cyhlbnRpdHlUeXBlRGVmaW5pdGlvbiwgbWV0YU1vZGVsRGF0YSk7XG5cblx0Y29uc3QgZW50aXR5VHlwZU9iamVjdDogRW50aXR5VHlwZSA9IHtcblx0XHRfdHlwZTogXCJFbnRpdHlUeXBlXCIsXG5cdFx0bmFtZTogZW50aXR5VHlwZU5hbWUucmVwbGFjZShuYW1lc3BhY2UgKyBcIi5cIiwgXCJcIiksXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBlbnRpdHlUeXBlTmFtZSxcblx0XHRrZXlzOiBbXSxcblx0XHRlbnRpdHlQcm9wZXJ0aWVzOiBbXSxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogW11cblx0fTtcblxuXHRjb25zdCBlbnRpdHlQcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoZW50aXR5VHlwZURlZmluaXRpb24pXG5cdFx0LmZpbHRlcihwcm9wZXJ0eU5hbWVPck5vdCA9PiB7XG5cdFx0XHRpZiAocHJvcGVydHlOYW1lT3JOb3QgIT0gXCIkS2V5XCIgJiYgcHJvcGVydHlOYW1lT3JOb3QgIT0gXCIka2luZFwiKSB7XG5cdFx0XHRcdHJldHVybiBlbnRpdHlUeXBlRGVmaW5pdGlvbltwcm9wZXJ0eU5hbWVPck5vdF0uJGtpbmQgPT09IFwiUHJvcGVydHlcIjtcblx0XHRcdH1cblx0XHR9KVxuXHRcdC5tYXAocHJvcGVydHlOYW1lID0+IHtcblx0XHRcdHJldHVybiBwcmVwYXJlUHJvcGVydHkoZW50aXR5VHlwZURlZmluaXRpb25bcHJvcGVydHlOYW1lXSwgZW50aXR5VHlwZU9iamVjdCwgcHJvcGVydHlOYW1lKTtcblx0XHR9KTtcblxuXHRjb25zdCBuYXZpZ2F0aW9uUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKGVudGl0eVR5cGVEZWZpbml0aW9uKVxuXHRcdC5maWx0ZXIocHJvcGVydHlOYW1lT3JOb3QgPT4ge1xuXHRcdFx0aWYgKHByb3BlcnR5TmFtZU9yTm90ICE9IFwiJEtleVwiICYmIHByb3BlcnR5TmFtZU9yTm90ICE9IFwiJGtpbmRcIikge1xuXHRcdFx0XHRyZXR1cm4gZW50aXR5VHlwZURlZmluaXRpb25bcHJvcGVydHlOYW1lT3JOb3RdLiRraW5kID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiO1xuXHRcdFx0fVxuXHRcdH0pXG5cdFx0Lm1hcChuYXZQcm9wZXJ0eU5hbWUgPT4ge1xuXHRcdFx0cmV0dXJuIHByZXBhcmVOYXZpZ2F0aW9uUHJvcGVydHkoZW50aXR5VHlwZURlZmluaXRpb25bbmF2UHJvcGVydHlOYW1lXSwgZW50aXR5VHlwZU9iamVjdCwgbmF2UHJvcGVydHlOYW1lKTtcblx0XHR9KTtcblxuXHRlbnRpdHlUeXBlT2JqZWN0LmtleXMgPSBlbnRpdHlLZXlzXG5cdFx0Lm1hcCgoZW50aXR5S2V5OiBzdHJpbmcpID0+IGVudGl0eVByb3BlcnRpZXMuZmluZCgocHJvcGVydHk6IFByb3BlcnR5KSA9PiBwcm9wZXJ0eS5uYW1lID09PSBlbnRpdHlLZXkpKVxuXHRcdC5maWx0ZXIoKHByb3BlcnR5OiBQcm9wZXJ0eSkgPT4gcHJvcGVydHkgIT09IHVuZGVmaW5lZCk7XG5cdGVudGl0eVR5cGVPYmplY3QuZW50aXR5UHJvcGVydGllcyA9IGVudGl0eVByb3BlcnRpZXM7XG5cdGVudGl0eVR5cGVPYmplY3QubmF2aWdhdGlvblByb3BlcnRpZXMgPSBuYXZpZ2F0aW9uUHJvcGVydGllcztcblxuXHRyZXR1cm4gZW50aXR5VHlwZU9iamVjdDtcbn1cbmZ1bmN0aW9uIHByZXBhcmVBY3Rpb24oYWN0aW9uTmFtZTogc3RyaW5nLCBhY3Rpb25SYXdEYXRhOiBNZXRhTW9kZWxBY3Rpb24sIG5hbWVzcGFjZTogc3RyaW5nLCBlbnRpdHlDb250YWluZXJOYW1lOiBzdHJpbmcpOiBBY3Rpb24ge1xuXHRsZXQgYWN0aW9uRW50aXR5VHlwZTogc3RyaW5nID0gXCJcIjtcblx0bGV0IGFjdGlvbkZRTiA9IGAke2FjdGlvbk5hbWV9YDtcblx0Y29uc3QgYWN0aW9uU2hvcnROYW1lID0gYWN0aW9uTmFtZS5zdWJzdHIobmFtZXNwYWNlLmxlbmd0aCArIDEpO1xuXHRpZiAoYWN0aW9uUmF3RGF0YS4kSXNCb3VuZCkge1xuXHRcdGNvbnN0IGJpbmRpbmdQYXJhbWV0ZXIgPSBhY3Rpb25SYXdEYXRhLiRQYXJhbWV0ZXJbMF07XG5cdFx0YWN0aW9uRW50aXR5VHlwZSA9IGJpbmRpbmdQYXJhbWV0ZXIuJFR5cGU7XG5cdFx0aWYgKGJpbmRpbmdQYXJhbWV0ZXIuJGlzQ29sbGVjdGlvbiA9PT0gdHJ1ZSkge1xuXHRcdFx0YWN0aW9uRlFOID0gYCR7YWN0aW9uTmFtZX0oQ29sbGVjdGlvbigke2FjdGlvbkVudGl0eVR5cGV9KSlgO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhY3Rpb25GUU4gPSBgJHthY3Rpb25OYW1lfSgke2FjdGlvbkVudGl0eVR5cGV9KWA7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGFjdGlvbkZRTiA9IGAke2VudGl0eUNvbnRhaW5lck5hbWV9LyR7YWN0aW9uU2hvcnROYW1lfWA7XG5cdH1cblx0Y29uc3QgcGFyYW1ldGVycyA9IGFjdGlvblJhd0RhdGEuJFBhcmFtZXRlciB8fCBbXTtcblx0cmV0dXJuIHtcblx0XHRfdHlwZTogXCJBY3Rpb25cIixcblx0XHRuYW1lOiBhY3Rpb25TaG9ydE5hbWUsXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBhY3Rpb25GUU4sXG5cdFx0aXNCb3VuZDogYWN0aW9uUmF3RGF0YS4kSXNCb3VuZCxcblx0XHRpc0Z1bmN0aW9uOiBmYWxzZSxcblx0XHRzb3VyY2VUeXBlOiBhY3Rpb25FbnRpdHlUeXBlLFxuXHRcdHJldHVyblR5cGU6IGFjdGlvblJhd0RhdGEuJFJldHVyblR5cGUgPyBhY3Rpb25SYXdEYXRhLiRSZXR1cm5UeXBlLiRUeXBlIDogXCJcIixcblx0XHRwYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzLm1hcChwYXJhbSA9PiB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRfdHlwZTogXCJBY3Rpb25QYXJhbWV0ZXJcIixcblx0XHRcdFx0aXNFbnRpdHlTZXQ6IHBhcmFtLiRUeXBlID09PSBhY3Rpb25SYXdEYXRhLiRFbnRpdHlTZXRQYXRoLFxuXHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGAke2FjdGlvbkZRTn0vJHtwYXJhbS4kTmFtZX1gLFxuXHRcdFx0XHR0eXBlOiBwYXJhbS4kVHlwZVxuXHRcdFx0XHQvLyBUT0RPIG1pc3NpbmcgcHJvcGVydGllcyA/XG5cdFx0XHR9O1xuXHRcdH0pXG5cdH07XG59XG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUVudGl0eVR5cGVzKFxuXHRvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCxcblx0b0NhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXMgPSBEZWZhdWx0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXNcbik6IFBhcnNlck91dHB1dCB7XG5cdGNvbnN0IG9NZXRhTW9kZWxEYXRhID0gb01ldGFNb2RlbC5nZXRPYmplY3QoXCIvJFwiKTtcblx0Y29uc3QgYW5ub3RhdGlvbkxpc3RzOiBSZWNvcmQ8c3RyaW5nLCBBbm5vdGF0aW9uTGlzdD4gPSB7fTtcblx0Y29uc3QgZW50aXR5VHlwZXM6IEVudGl0eVR5cGVbXSA9IFtdO1xuXHRjb25zdCBlbnRpdHlTZXRzOiBFbnRpdHlTZXRbXSA9IFtdO1xuXHRjb25zdCBzaW5nbGV0b25zOiBTaW5nbGV0b25bXSA9IFtdO1xuXHRjb25zdCBjb21wbGV4VHlwZXM6IENvbXBsZXhUeXBlW10gPSBbXTtcblx0Y29uc3QgdHlwZURlZmluaXRpb25zOiBUeXBlRGVmaW5pdGlvbltdID0gW107XG5cdGNvbnN0IGVudGl0eUNvbnRhaW5lck5hbWUgPSBvTWV0YU1vZGVsRGF0YS4kRW50aXR5Q29udGFpbmVyO1xuXHRsZXQgbmFtZXNwYWNlID0gXCJcIjtcblx0Y29uc3Qgc2NoZW1hS2V5cyA9IE9iamVjdC5rZXlzKG9NZXRhTW9kZWxEYXRhKS5maWx0ZXIobWV0YW1vZGVsS2V5ID0+IG9NZXRhTW9kZWxEYXRhW21ldGFtb2RlbEtleV0uJGtpbmQgPT09IFwiU2NoZW1hXCIpO1xuXHRpZiAoc2NoZW1hS2V5cyAmJiBzY2hlbWFLZXlzLmxlbmd0aCA+IDApIHtcblx0XHRuYW1lc3BhY2UgPSBzY2hlbWFLZXlzWzBdLnN1YnN0cigwLCBzY2hlbWFLZXlzWzBdLmxlbmd0aCAtIDEpO1xuXHR9IGVsc2UgaWYgKGVudGl0eVR5cGVzICYmIGVudGl0eVR5cGVzLmxlbmd0aCkge1xuXHRcdG5hbWVzcGFjZSA9IGVudGl0eVR5cGVzWzBdLmZ1bGx5UXVhbGlmaWVkTmFtZS5yZXBsYWNlKGVudGl0eVR5cGVzWzBdLm5hbWUsIFwiXCIpO1xuXHRcdG5hbWVzcGFjZSA9IG5hbWVzcGFjZS5zdWJzdHIoMCwgbmFtZXNwYWNlLmxlbmd0aCAtIDEpO1xuXHR9XG5cdE9iamVjdC5rZXlzKG9NZXRhTW9kZWxEYXRhKS5mb3JFYWNoKHNPYmplY3ROYW1lID0+IHtcblx0XHRpZiAoc09iamVjdE5hbWUgIT09IFwiJGtpbmRcIikge1xuXHRcdFx0c3dpdGNoIChvTWV0YU1vZGVsRGF0YVtzT2JqZWN0TmFtZV0uJGtpbmQpIHtcblx0XHRcdFx0Y2FzZSBcIkVudGl0eVR5cGVcIjpcblx0XHRcdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gcHJlcGFyZUVudGl0eVR5cGUob01ldGFNb2RlbERhdGFbc09iamVjdE5hbWVdLCBzT2JqZWN0TmFtZSwgbmFtZXNwYWNlLCBvTWV0YU1vZGVsRGF0YSk7XG5cdFx0XHRcdFx0Ly8gQ2hlY2sgaWYgdGhlcmUgYXJlIGZpbHRlciBmYWNldHMgZGVmaW5lZCBmb3IgdGhlIGVudGl0eVR5cGUgYW5kIGlmIHllcywgY2hlY2sgaWYgYWxsIG9mIHRoZW0gaGF2ZSBhbiBJRFxuXHRcdFx0XHRcdC8vIFRoZSBJRCBpcyBvcHRpb25hbCwgYnV0IGl0IGlzIGludGVybmFsbHkgdGFrZW4gZm9yIGdyb3VwaW5nIGZpbHRlciBmaWVsZHMgYW5kIGlmIGl0J3Mgbm90IHByZXNlbnRcblx0XHRcdFx0XHQvLyBhIGZhbGxiYWNrIElEIG5lZWRzIHRvIGJlIGdlbmVyYXRlZCBoZXJlLlxuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdG9NZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1tlbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZV0gJiZcblx0XHRcdFx0XHRcdG9NZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1tlbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZV1bXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmlsdGVyRmFjZXRzXCJdXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRvTWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnNbZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWVdW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZpbHRlckZhY2V0c1wiXS5mb3JFYWNoKFxuXHRcdFx0XHRcdFx0XHQoZmlsdGVyRmFjZXRBbm5vdGF0aW9uOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRmaWx0ZXJGYWNldEFubm90YXRpb24uSUQgPSBmaWx0ZXJGYWNldEFubm90YXRpb24uSUQgfHwgZ2VuZXJhdGUoW3sgRmFjZXQ6IGZpbHRlckZhY2V0QW5ub3RhdGlvbiB9XSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVudGl0eVR5cGUuZW50aXR5UHJvcGVydGllcy5mb3JFYWNoKGVudGl0eVByb3BlcnR5ID0+IHtcblx0XHRcdFx0XHRcdGlmICghb01ldGFNb2RlbERhdGEuJEFubm90YXRpb25zW2VudGl0eVByb3BlcnR5LmZ1bGx5UXVhbGlmaWVkTmFtZV0pIHtcblx0XHRcdFx0XHRcdFx0b01ldGFNb2RlbERhdGEuJEFubm90YXRpb25zW2VudGl0eVByb3BlcnR5LmZ1bGx5UXVhbGlmaWVkTmFtZV0gPSB7fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0IW9NZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1tlbnRpdHlQcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZERlZmF1bHRcIl1cblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRvTWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnNbZW50aXR5UHJvcGVydHkuZnVsbHlRdWFsaWZpZWROYW1lXVtcblx0XHRcdFx0XHRcdFx0XHRcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGREZWZhdWx0XCJcblx0XHRcdFx0XHRcdFx0XSA9IHtcblx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIixcblx0XHRcdFx0XHRcdFx0XHRWYWx1ZTogeyAkUGF0aDogZW50aXR5UHJvcGVydHkubmFtZSB9XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZW50aXR5VHlwZXMucHVzaChlbnRpdHlUeXBlKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBcIkNvbXBsZXhUeXBlXCI6XG5cdFx0XHRcdFx0Y29uc3QgY29tcGxleFR5cGUgPSBwcmVwYXJlQ29tcGxleFR5cGUob01ldGFNb2RlbERhdGFbc09iamVjdE5hbWVdLCBzT2JqZWN0TmFtZSwgbmFtZXNwYWNlKTtcblx0XHRcdFx0XHRjb21wbGV4VHlwZXMucHVzaChjb21wbGV4VHlwZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgXCJUeXBlRGVmaW5pdGlvblwiOlxuXHRcdFx0XHRcdGNvbnN0IHR5cGVEZWZpbml0aW9uID0gcHJlcGFyZVR5cGVEZWZpbml0aW9uKG9NZXRhTW9kZWxEYXRhW3NPYmplY3ROYW1lXSwgc09iamVjdE5hbWUsIG5hbWVzcGFjZSk7XG5cdFx0XHRcdFx0dHlwZURlZmluaXRpb25zLnB1c2godHlwZURlZmluaXRpb24pO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cblx0Y29uc3Qgb0VudGl0eUNvbnRhaW5lciA9IG9NZXRhTW9kZWxEYXRhW2VudGl0eUNvbnRhaW5lck5hbWVdO1xuXHRPYmplY3Qua2V5cyhvRW50aXR5Q29udGFpbmVyKS5mb3JFYWNoKHNPYmplY3ROYW1lID0+IHtcblx0XHRpZiAoc09iamVjdE5hbWUgIT09IFwiJGtpbmRcIikge1xuXHRcdFx0c3dpdGNoIChvRW50aXR5Q29udGFpbmVyW3NPYmplY3ROYW1lXS4ka2luZCkge1xuXHRcdFx0XHRjYXNlIFwiRW50aXR5U2V0XCI6XG5cdFx0XHRcdFx0Y29uc3QgZW50aXR5U2V0ID0gcHJlcGFyZUVudGl0eVNldChvRW50aXR5Q29udGFpbmVyW3NPYmplY3ROYW1lXSwgc09iamVjdE5hbWUsIGVudGl0eUNvbnRhaW5lck5hbWUpO1xuXHRcdFx0XHRcdGVudGl0eVNldHMucHVzaChlbnRpdHlTZXQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFwiU2luZ2xldG9uXCI6XG5cdFx0XHRcdFx0Y29uc3Qgc2luZ2xldG9uID0gcHJlcGFyZVNpbmdsZXRvbihvRW50aXR5Q29udGFpbmVyW3NPYmplY3ROYW1lXSwgc09iamVjdE5hbWUsIGVudGl0eUNvbnRhaW5lck5hbWUpO1xuXHRcdFx0XHRcdHNpbmdsZXRvbnMucHVzaChzaW5nbGV0b24pO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cblx0bGV0IGVudGl0eUNvbnRhaW5lcjogRW50aXR5Q29udGFpbmVyID0ge307XG5cdGlmIChlbnRpdHlDb250YWluZXJOYW1lKSB7XG5cdFx0ZW50aXR5Q29udGFpbmVyID0ge1xuXHRcdFx0bmFtZTogZW50aXR5Q29udGFpbmVyTmFtZS5yZXBsYWNlKG5hbWVzcGFjZSArIFwiLlwiLCBcIlwiKSxcblx0XHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogZW50aXR5Q29udGFpbmVyTmFtZVxuXHRcdH07XG5cdH1cblx0ZW50aXR5U2V0cy5mb3JFYWNoKGVudGl0eVNldCA9PiB7XG5cdFx0Y29uc3QgbmF2UHJvcGVydHlCaW5kaW5ncyA9IG9FbnRpdHlDb250YWluZXJbZW50aXR5U2V0Lm5hbWVdLiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nO1xuXHRcdGlmIChuYXZQcm9wZXJ0eUJpbmRpbmdzKSB7XG5cdFx0XHRPYmplY3Qua2V5cyhuYXZQcm9wZXJ0eUJpbmRpbmdzKS5mb3JFYWNoKG5hdlByb3BOYW1lID0+IHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0RW50aXR5U2V0ID0gZW50aXR5U2V0cy5maW5kKGVudGl0eVNldE5hbWUgPT4gZW50aXR5U2V0TmFtZS5uYW1lID09PSBuYXZQcm9wZXJ0eUJpbmRpbmdzW25hdlByb3BOYW1lXSk7XG5cdFx0XHRcdGlmICh0YXJnZXRFbnRpdHlTZXQpIHtcblx0XHRcdFx0XHRlbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tuYXZQcm9wTmFtZV0gPSB0YXJnZXRFbnRpdHlTZXQ7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fSk7XG5cblx0Y29uc3QgYWN0aW9uczogQWN0aW9uW10gPSBPYmplY3Qua2V5cyhvTWV0YU1vZGVsRGF0YSlcblx0XHQuZmlsdGVyKGtleSA9PiB7XG5cdFx0XHRyZXR1cm4gQXJyYXkuaXNBcnJheShvTWV0YU1vZGVsRGF0YVtrZXldKSAmJiBvTWV0YU1vZGVsRGF0YVtrZXldLmxlbmd0aCA+IDAgJiYgb01ldGFNb2RlbERhdGFba2V5XVswXS4ka2luZCA9PT0gXCJBY3Rpb25cIjtcblx0XHR9KVxuXHRcdC5yZWR1Y2UoKG91dEFjdGlvbnM6IEFjdGlvbltdLCBhY3Rpb25OYW1lKSA9PiB7XG5cdFx0XHRjb25zdCBhY3Rpb25zID0gb01ldGFNb2RlbERhdGFbYWN0aW9uTmFtZV07XG5cdFx0XHRhY3Rpb25zLmZvckVhY2goKGFjdGlvbjogTWV0YU1vZGVsQWN0aW9uKSA9PiB7XG5cdFx0XHRcdG91dEFjdGlvbnMucHVzaChwcmVwYXJlQWN0aW9uKGFjdGlvbk5hbWUsIGFjdGlvbiwgbmFtZXNwYWNlLCBlbnRpdHlDb250YWluZXJOYW1lKSk7XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBvdXRBY3Rpb25zO1xuXHRcdH0sIFtdKTtcblxuXHRmb3IgKGNvbnN0IHRhcmdldCBpbiBvTWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnMpIHtcblx0XHRjcmVhdGVBbm5vdGF0aW9uTGlzdHMob01ldGFNb2RlbERhdGEuJEFubm90YXRpb25zW3RhcmdldF0sIHRhcmdldCwgYW5ub3RhdGlvbkxpc3RzLCBvQ2FwYWJpbGl0aWVzKTtcblx0fVxuXG5cdC8vIFNvcnQgYnkgdGFyZ2V0IGxlbmd0aFxuXHRjb25zdCBvdXRBbm5vdGF0aW9uTGlzdHMgPSBPYmplY3Qua2V5cyhhbm5vdGF0aW9uTGlzdHMpXG5cdFx0LnNvcnQoKGEsIGIpID0+IChhLmxlbmd0aCA+PSBiLmxlbmd0aCA/IDEgOiAtMSkpXG5cdFx0Lm1hcChzQW5ub3RhdGlvbk5hbWUgPT4gYW5ub3RhdGlvbkxpc3RzW3NBbm5vdGF0aW9uTmFtZV0pO1xuXHRjb25zdCByZWZlcmVuY2VzOiBSZWZlcmVuY2VbXSA9IFtdO1xuXHRyZXR1cm4ge1xuXHRcdGlkZW50aWZpY2F0aW9uOiBcIm1ldGFtb2RlbFJlc3VsdFwiLFxuXHRcdHZlcnNpb246IFwiNC4wXCIsXG5cdFx0c2NoZW1hOiB7XG5cdFx0XHRlbnRpdHlDb250YWluZXIsXG5cdFx0XHRlbnRpdHlTZXRzLFxuXHRcdFx0ZW50aXR5VHlwZXMsXG5cdFx0XHRjb21wbGV4VHlwZXMsXG5cdFx0XHR0eXBlRGVmaW5pdGlvbnMsXG5cdFx0XHRzaW5nbGV0b25zLFxuXHRcdFx0YXNzb2NpYXRpb25zOiBbXSxcblx0XHRcdGFzc29jaWF0aW9uU2V0czogW10sXG5cdFx0XHRhY3Rpb25zLFxuXHRcdFx0bmFtZXNwYWNlLFxuXHRcdFx0YW5ub3RhdGlvbnM6IHtcblx0XHRcdFx0XCJtZXRhbW9kZWxSZXN1bHRcIjogb3V0QW5ub3RhdGlvbkxpc3RzXG5cdFx0XHR9XG5cdFx0fSxcblx0XHRyZWZlcmVuY2VzOiByZWZlcmVuY2VzXG5cdH07XG59XG5cbmNvbnN0IG1NZXRhTW9kZWxNYXA6IFJlY29yZDxzdHJpbmcsIFBhcnNlck91dHB1dD4gPSB7fTtcblxuLyoqXG4gKiBDb252ZXJ0IHRoZSBPRGF0YU1ldGFNb2RlbCBpbnRvIGFub3RoZXIgZm9ybWF0IHRoYXQgYWxsb3cgZm9yIGVhc3kgbWFuaXB1bGF0aW9uIG9mIHRoZSBhbm5vdGF0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge09EYXRhTWV0YU1vZGVsfSBvTWV0YU1vZGVsIFRoZSBjdXJyZW50IG9EYXRhTWV0YU1vZGVsXG4gKiBAcGFyYW0gb0NhcGFiaWxpdGllcyBUaGUgY3VycmVudCBjYXBhYmlsaXRpZXNcbiAqIEByZXR1cm5zIHtDb252ZXJ0ZXJPdXRwdXR9IEFuIG9iamVjdCBjb250YWluaW5nIG9iamVjdCBsaWtlIGFubm90YXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUeXBlcyhvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCwgb0NhcGFiaWxpdGllcz86IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKTogQ29udmVydGVyT3V0cHV0IHtcblx0Y29uc3Qgc01ldGFNb2RlbElkID0gKG9NZXRhTW9kZWwgYXMgYW55KS5pZDtcblx0aWYgKCFtTWV0YU1vZGVsTWFwLmhhc093blByb3BlcnR5KHNNZXRhTW9kZWxJZCkpIHtcblx0XHRjb25zdCBwYXJzZWRPdXRwdXQgPSBwcmVwYXJlRW50aXR5VHlwZXMob01ldGFNb2RlbCwgb0NhcGFiaWxpdGllcyk7XG5cdFx0dHJ5IHtcblx0XHRcdGlmIChvQ2FwYWJpbGl0aWVzICYmIG9DYXBhYmlsaXRpZXMuU2l0dWF0aW9ucykge1xuXHRcdFx0XHQvLyBPbmx5IEV4cGVyaW1lbnRhbCBGZWF0dXJlIVxuXHRcdFx0XHRtTWV0YU1vZGVsTWFwW3NNZXRhTW9kZWxJZF0gPSBhZGRTeW50aGV0aWNBbm5vdGF0aW9ucyhBbm5vdGF0aW9uQ29udmVydGVyLmNvbnZlcnRUeXBlcyhwYXJzZWRPdXRwdXQpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1NZXRhTW9kZWxNYXBbc01ldGFNb2RlbElkXSA9IEFubm90YXRpb25Db252ZXJ0ZXIuY29udmVydFR5cGVzKHBhcnNlZE91dHB1dCk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAob0Vycm9yKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3Iob0Vycm9yIGFzIGFueSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiAobU1ldGFNb2RlbE1hcFtzTWV0YU1vZGVsSWRdIGFzIGFueSkgYXMgQ29udmVydGVyT3V0cHV0O1xufVxuXG5mdW5jdGlvbiBhZGRTeW50aGV0aWNBbm5vdGF0aW9ucyhtZXRhTW9kZWw6IFBhcnNlck91dHB1dCkge1xuXHQvLyBbU2l0dWF0aW9ucyBQT0NdIERldGVybWluZSBtaXhlZC1pbiBzaXR1YXRpb25zIG5hdmlnYXRpb24gcHJvcGVydHkuXG5cdC8vIFRoaXMgd2lsbCBwcm9iYWJseSBoYXBwZW4gZWl0aGVyXG5cdC8vICAtIGJ5IGEgZml4ZWQgbmF2aWdhdGlvbiBwcm9wZXJ0eSBuYW1lIChcIlNBUF9fU2l0dWF0aW9uXCIpLCBvclxuXHQvLyAgLSBieSBhbiBlbnRpdHkgdHlwZSBhbm5vdGF0aW9uIHRoYXQgZGVjbGFyZXMgdGhlIG5hdmlnYXRpb24gcHJvcGVydHkgdG8gdXNlIChzaW1pbGFyIHRvIGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5NZXNzYWdlcylcblx0Ly9cblx0Ly8gRm9yIG5vdywgd2UgYWRkIGFuICdpbnZlbnRlZCcgYW5ub3RhdGlvbiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkZpb3JpRWxlbWVudHMudjEuU2l0dWF0aW9uc1wiIGNvbnNpc3Rpbmcgb2YgYSBwYXRoIHRvIHRoZSBzaXR1YXRpb25zIG5hdmlnYXRpb24gcHJvcGVydHlcblx0KChtZXRhTW9kZWwgYXMgYW55KSBhcyBDb252ZXJ0ZXJPdXRwdXQpLmVudGl0eVR5cGVzLmZvckVhY2goZW50aXR5VHlwZSA9PiB7XG5cdFx0Y29uc3Qgc2l0dWF0aW9uc05hdlByb3AgPSBlbnRpdHlUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZpbmQoXG5cdFx0XHRuYXZQcm9wID0+IG5hdlByb3AubmFtZSA9PT0gXCJTQVBfX1NpdHVhdGlvblwiIHx8IG5hdlByb3AubmFtZSA9PT0gXCJfU0FQX19TaXR1YXRpb25cIlxuXHRcdCk7XG5cblx0XHRpZiAoc2l0dWF0aW9uc05hdlByb3ApIHtcblx0XHRcdChlbnRpdHlUeXBlLmFubm90YXRpb25zIGFzIGFueSkuRkUgPSB7XG5cdFx0XHRcdFNpdHVhdGlvbnM6IHtcblx0XHRcdFx0XHR0ZXJtOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkZpb3JpRWxlbWVudHMudjEuU2l0dWF0aW9uc1wiLFxuXHRcdFx0XHRcdHR5cGU6IFwiUGF0aFwiLFxuXHRcdFx0XHRcdHBhdGg6IHNpdHVhdGlvbnNOYXZQcm9wLm5hbWUsXG5cdFx0XHRcdFx0JHRhcmdldDogc2l0dWF0aW9uc05hdlByb3Bcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gbWV0YU1vZGVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlTW9kZWxDYWNoZURhdGEob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwpIHtcblx0ZGVsZXRlIG1NZXRhTW9kZWxNYXBbKG9NZXRhTW9kZWwgYXMgYW55KS5pZF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0TWV0YU1vZGVsQ29udGV4dChvTWV0YU1vZGVsQ29udGV4dDogQ29udGV4dCwgYkluY2x1ZGVWaXNpdGVkT2JqZWN0czogYm9vbGVhbiA9IGZhbHNlKTogYW55IHtcblx0Y29uc3Qgb0NvbnZlcnRlck91dHB1dCA9IGNvbnZlcnRUeXBlcyhvTWV0YU1vZGVsQ29udGV4dC5nZXRNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsKTtcblx0Y29uc3Qgc1BhdGggPSBvTWV0YU1vZGVsQ29udGV4dC5nZXRQYXRoKCk7XG5cblx0Y29uc3QgYVBhdGhTcGxpdCA9IHNQYXRoLnNwbGl0KFwiL1wiKTtcblx0bGV0IHRhcmdldEVudGl0eVNldDogX0VudGl0eVNldCB8IF9TaW5nbGV0b24gPSBvQ29udmVydGVyT3V0cHV0LmVudGl0eVNldHMuZmluZChcblx0XHRlbnRpdHlTZXQgPT4gZW50aXR5U2V0Lm5hbWUgPT09IGFQYXRoU3BsaXRbMV1cblx0KSBhcyBfRW50aXR5U2V0O1xuXHRpZiAoIXRhcmdldEVudGl0eVNldCkge1xuXHRcdHRhcmdldEVudGl0eVNldCA9IG9Db252ZXJ0ZXJPdXRwdXQuc2luZ2xldG9ucy5maW5kKHNpbmdsZXRvbiA9PiBzaW5nbGV0b24ubmFtZSA9PT0gYVBhdGhTcGxpdFsxXSkgYXMgX1NpbmdsZXRvbjtcblx0fVxuXHRsZXQgcmVsYXRpdmVQYXRoID0gYVBhdGhTcGxpdC5zbGljZSgyKS5qb2luKFwiL1wiKTtcblxuXHRjb25zdCBsb2NhbE9iamVjdHM6IGFueVtdID0gW3RhcmdldEVudGl0eVNldF07XG5cdHdoaWxlIChyZWxhdGl2ZVBhdGggJiYgcmVsYXRpdmVQYXRoLmxlbmd0aCA+IDAgJiYgcmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoXCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1wiKSkge1xuXHRcdGxldCByZWxhdGl2ZVNwbGl0ID0gcmVsYXRpdmVQYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRsZXQgaWR4ID0gMDtcblx0XHRsZXQgY3VycmVudEVudGl0eVNldCwgc05hdlByb3BUb0NoZWNrO1xuXG5cdFx0cmVsYXRpdmVTcGxpdCA9IHJlbGF0aXZlU3BsaXQuc2xpY2UoMSk7IC8vIFJlbW92aW5nIFwiJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIlxuXHRcdHdoaWxlICghY3VycmVudEVudGl0eVNldCAmJiByZWxhdGl2ZVNwbGl0Lmxlbmd0aCA+IGlkeCAmJiByZWxhdGl2ZVNwbGl0W2lkeF0gIT09IFwiJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIikge1xuXHRcdFx0Ly8gRmluZGluZyB0aGUgY29ycmVjdCBlbnRpdHlTZXQgZm9yIHRoZSBuYXZpZ2FpdG9uIHByb3BlcnR5IGJpbmRpbmcgZXhhbXBsZTogXCJTZXQvX1NhbGVzT3JkZXJcIlxuXHRcdFx0c05hdlByb3BUb0NoZWNrID0gcmVsYXRpdmVTcGxpdC5zbGljZSgwLCBpZHggKyAxKS5qb2luKFwiL1wiKTtcblx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSB0YXJnZXRFbnRpdHlTZXQgJiYgdGFyZ2V0RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbc05hdlByb3BUb0NoZWNrXTtcblx0XHRcdGlkeCsrO1xuXHRcdH1cblx0XHRpZiAoIWN1cnJlbnRFbnRpdHlTZXQpIHtcblx0XHRcdC8vIEZhbGwgYmFjayB0byBTaW5nbGUgbmF2IHByb3AgaWYgZW50aXR5U2V0IGlzIG5vdCBmb3VuZC5cblx0XHRcdHNOYXZQcm9wVG9DaGVjayA9IHJlbGF0aXZlU3BsaXRbMF07XG5cdFx0fVxuXHRcdGNvbnN0IGFOYXZQcm9wcyA9IHNOYXZQcm9wVG9DaGVjaz8uc3BsaXQoXCIvXCIpIHx8IFtdO1xuXHRcdGxldCB0YXJnZXRFbnRpdHlUeXBlID0gdGFyZ2V0RW50aXR5U2V0ICYmIHRhcmdldEVudGl0eVNldC5lbnRpdHlUeXBlO1xuXHRcdGZvciAoY29uc3Qgc05hdlByb3Agb2YgYU5hdlByb3BzKSB7XG5cdFx0XHQvLyBQdXNoaW5nIGFsbCBuYXYgcHJvcHMgdG8gdGhlIHZpc2l0ZWQgb2JqZWN0cy4gZXhhbXBsZTogXCJTZXRcIiwgXCJfU2FsZXNPcmRlclwiIGZvciBcIlNldC9fU2FsZXNPcmRlclwiKGluIE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcpXG5cdFx0XHRjb25zdCB0YXJnZXROYXZQcm9wID0gdGFyZ2V0RW50aXR5VHlwZSAmJiB0YXJnZXRFbnRpdHlUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZpbmQobmF2UHJvcCA9PiBuYXZQcm9wLm5hbWUgPT09IHNOYXZQcm9wKTtcblx0XHRcdGlmICh0YXJnZXROYXZQcm9wKSB7XG5cdFx0XHRcdGxvY2FsT2JqZWN0cy5wdXNoKHRhcmdldE5hdlByb3ApO1xuXHRcdFx0XHR0YXJnZXRFbnRpdHlUeXBlID0gdGFyZ2V0TmF2UHJvcC50YXJnZXRUeXBlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRhcmdldEVudGl0eVNldCA9XG5cdFx0XHQodGFyZ2V0RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQpIHx8ICh0YXJnZXRFbnRpdHlTZXQgJiYgdGFyZ2V0RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbcmVsYXRpdmVTcGxpdFswXV0pO1xuXHRcdGlmICh0YXJnZXRFbnRpdHlTZXQpIHtcblx0XHRcdC8vIFB1c2hpbmcgdGhlIHRhcmdldCBlbnRpdHlTZXQgdG8gdmlzaXRlZCBvYmplY3RzXG5cdFx0XHRsb2NhbE9iamVjdHMucHVzaCh0YXJnZXRFbnRpdHlTZXQpO1xuXHRcdH1cblx0XHQvLyBSZS1jYWxjdWxhdGluZyB0aGUgcmVsYXRpdmUgcGF0aFxuXHRcdC8vIEFzIGVhY2ggbmF2aWdhdGlvbiBuYW1lIGlzIGVuY2xvc2VkIGJldHdlZW4gJyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nJyBhbmQgJyQnICh0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgZW50aXR5c2V0IGVhc2lseSBpbiB0aGUgbWV0YW1vZGVsKVxuXHRcdC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBjbG9zaW5nICckJyB0byBiZSBhYmxlIHRvIHN3aXRjaCB0byB0aGUgbmV4dCBuYXZpZ2F0aW9uXG5cdFx0cmVsYXRpdmVTcGxpdCA9IHJlbGF0aXZlU3BsaXQuc2xpY2UoYU5hdlByb3BzLmxlbmd0aCB8fCAxKTtcblx0XHRpZiAocmVsYXRpdmVTcGxpdC5sZW5ndGggJiYgcmVsYXRpdmVTcGxpdFswXSA9PT0gXCIkXCIpIHtcblx0XHRcdHJlbGF0aXZlU3BsaXQuc2hpZnQoKTtcblx0XHR9XG5cdFx0cmVsYXRpdmVQYXRoID0gcmVsYXRpdmVTcGxpdC5qb2luKFwiL1wiKTtcblx0fVxuXHRpZiAocmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoXCIkVHlwZVwiKSkge1xuXHRcdC8vIFdlJ3JlIGFueXdheSBnb2luZyB0byBsb29rIG9uIHRoZSBlbnRpdHlUeXBlLi4uXG5cdFx0cmVsYXRpdmVQYXRoID0gYVBhdGhTcGxpdC5zbGljZSgzKS5qb2luKFwiL1wiKTtcblx0fVxuXHRpZiAodGFyZ2V0RW50aXR5U2V0ICYmIHJlbGF0aXZlUGF0aC5sZW5ndGgpIHtcblx0XHRjb25zdCBvVGFyZ2V0ID0gdGFyZ2V0RW50aXR5U2V0LmVudGl0eVR5cGUucmVzb2x2ZVBhdGgocmVsYXRpdmVQYXRoLCBiSW5jbHVkZVZpc2l0ZWRPYmplY3RzKTtcblx0XHRpZiAob1RhcmdldCkge1xuXHRcdFx0aWYgKGJJbmNsdWRlVmlzaXRlZE9iamVjdHMpIHtcblx0XHRcdFx0b1RhcmdldC52aXNpdGVkT2JqZWN0cyA9IGxvY2FsT2JqZWN0cy5jb25jYXQob1RhcmdldC52aXNpdGVkT2JqZWN0cyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICh0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZSAmJiB0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZS5hY3Rpb25zKSB7XG5cdFx0XHQvLyBpZiB0YXJnZXQgaXMgYW4gYWN0aW9uIG9yIGFuIGFjdGlvbiBwYXJhbWV0ZXJcblx0XHRcdGNvbnN0IGFjdGlvbnMgPSB0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZSAmJiB0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZS5hY3Rpb25zO1xuXHRcdFx0Y29uc3QgcmVsYXRpdmVTcGxpdCA9IHJlbGF0aXZlUGF0aC5zcGxpdChcIi9cIik7XG5cdFx0XHRpZiAoYWN0aW9uc1tyZWxhdGl2ZVNwbGl0WzBdXSkge1xuXHRcdFx0XHRjb25zdCBhY3Rpb24gPSBhY3Rpb25zW3JlbGF0aXZlU3BsaXRbMF1dO1xuXHRcdFx0XHRpZiAocmVsYXRpdmVTcGxpdFsxXSAmJiBhY3Rpb24ucGFyYW1ldGVycykge1xuXHRcdFx0XHRcdGNvbnN0IHBhcmFtZXRlck5hbWUgPSByZWxhdGl2ZVNwbGl0WzFdO1xuXHRcdFx0XHRcdGNvbnN0IHRhcmdldFBhcmFtZXRlciA9IGFjdGlvbi5wYXJhbWV0ZXJzLmZpbmQocGFyYW1ldGVyID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBwYXJhbWV0ZXIuZnVsbHlRdWFsaWZpZWROYW1lLmVuZHNXaXRoKFwiL1wiICsgcGFyYW1ldGVyTmFtZSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuIHRhcmdldFBhcmFtZXRlcjtcblx0XHRcdFx0fSBlbHNlIGlmIChyZWxhdGl2ZVBhdGgubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGFjdGlvbjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gb1RhcmdldDtcblx0fSBlbHNlIHtcblx0XHRpZiAoYkluY2x1ZGVWaXNpdGVkT2JqZWN0cykge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dGFyZ2V0OiB0YXJnZXRFbnRpdHlTZXQsXG5cdFx0XHRcdHZpc2l0ZWRPYmplY3RzOiBsb2NhbE9iamVjdHNcblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiB0YXJnZXRFbnRpdHlTZXQ7XG5cdH1cbn1cblxudHlwZSBDb252ZXJ0ZXJPYmplY3QgPSB7XG5cdF90eXBlOiBzdHJpbmc7XG5cdG5hbWU6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBSZXNvbHZlZFRhcmdldCA9IHtcblx0dGFyZ2V0PzogQ29udmVydGVyT2JqZWN0O1xuXHR2aXNpdGVkT2JqZWN0czogQ29udmVydGVyT2JqZWN0W107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG9NZXRhTW9kZWxDb250ZXh0OiBDb250ZXh0LCBvRW50aXR5U2V0TWV0YU1vZGVsQ29udGV4dD86IENvbnRleHQpOiBEYXRhTW9kZWxPYmplY3RQYXRoIHtcblx0Y29uc3QgbWV0YU1vZGVsQ29udGV4dCA9IGNvbnZlcnRNZXRhTW9kZWxDb250ZXh0KG9NZXRhTW9kZWxDb250ZXh0LCB0cnVlKTtcblx0bGV0IHRhcmdldEVudGl0eVNldExvY2F0aW9uO1xuXHRpZiAob0VudGl0eVNldE1ldGFNb2RlbENvbnRleHQgJiYgb0VudGl0eVNldE1ldGFNb2RlbENvbnRleHQuZ2V0UGF0aCgpICE9PSBcIi9cIikge1xuXHRcdHRhcmdldEVudGl0eVNldExvY2F0aW9uID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG9FbnRpdHlTZXRNZXRhTW9kZWxDb250ZXh0KTtcblx0fVxuXHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RGcm9tUGF0aChtZXRhTW9kZWxDb250ZXh0LCB0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdEZyb21QYXRoKFxuXHRtZXRhTW9kZWxDb250ZXh0OiBSZXNvbHZlZFRhcmdldCxcblx0dGFyZ2V0RW50aXR5U2V0TG9jYXRpb24/OiBEYXRhTW9kZWxPYmplY3RQYXRoXG4pOiBEYXRhTW9kZWxPYmplY3RQYXRoIHtcblx0Y29uc3QgZGF0YU1vZGVsT2JqZWN0cyA9IG1ldGFNb2RlbENvbnRleHQudmlzaXRlZE9iamVjdHMuZmlsdGVyKFxuXHRcdCh2aXNpdGVkT2JqZWN0OiBhbnkpID0+IHZpc2l0ZWRPYmplY3QgJiYgdmlzaXRlZE9iamVjdC5oYXNPd25Qcm9wZXJ0eShcIl90eXBlXCIpICYmIHZpc2l0ZWRPYmplY3QuX3R5cGUgIT09IFwiRW50aXR5VHlwZVwiXG5cdCk7XG5cdGlmIChtZXRhTW9kZWxDb250ZXh0LnRhcmdldCAmJiBtZXRhTW9kZWxDb250ZXh0LnRhcmdldC5oYXNPd25Qcm9wZXJ0eShcIl90eXBlXCIpICYmIG1ldGFNb2RlbENvbnRleHQudGFyZ2V0Ll90eXBlICE9PSBcIkVudGl0eVR5cGVcIikge1xuXHRcdGRhdGFNb2RlbE9iamVjdHMucHVzaChtZXRhTW9kZWxDb250ZXh0LnRhcmdldCk7XG5cdH1cblx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXM6IF9OYXZpZ2F0aW9uUHJvcGVydHlbXSA9IFtdO1xuXHRjb25zdCByb290RW50aXR5U2V0OiBfRW50aXR5U2V0ID0gZGF0YU1vZGVsT2JqZWN0c1swXSBhcyBfRW50aXR5U2V0O1xuXHQvLyBjdXJyZW50RW50aXR5U2V0IGNhbiBiZSB1bmRlZmluZWQuXG5cdGxldCBjdXJyZW50RW50aXR5U2V0OiBfRW50aXR5U2V0IHwgdW5kZWZpbmVkID0gcm9vdEVudGl0eVNldCBhcyBfRW50aXR5U2V0O1xuXHRsZXQgY3VycmVudEVudGl0eVR5cGU6IF9FbnRpdHlUeXBlID0gcm9vdEVudGl0eVNldC5lbnRpdHlUeXBlO1xuXHRsZXQgaSA9IDE7XG5cdGxldCBjdXJyZW50T2JqZWN0O1xuXHRsZXQgbmF2aWdhdGVkUGF0aHMgPSBbXTtcblx0d2hpbGUgKGkgPCBkYXRhTW9kZWxPYmplY3RzLmxlbmd0aCkge1xuXHRcdGN1cnJlbnRPYmplY3QgPSBkYXRhTW9kZWxPYmplY3RzW2krK107XG5cdFx0aWYgKGN1cnJlbnRPYmplY3QuX3R5cGUgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIpIHtcblx0XHRcdG5hdmlnYXRlZFBhdGhzLnB1c2goY3VycmVudE9iamVjdC5uYW1lKTtcblx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2goY3VycmVudE9iamVjdCBhcyBfTmF2aWdhdGlvblByb3BlcnR5KTtcblx0XHRcdGN1cnJlbnRFbnRpdHlUeXBlID0gKGN1cnJlbnRPYmplY3QgYXMgX05hdmlnYXRpb25Qcm9wZXJ0eSkudGFyZ2V0VHlwZTtcblx0XHRcdGlmIChjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKSkpIHtcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tjdXJyZW50T2JqZWN0Lm5hbWVdO1xuXHRcdFx0XHRuYXZpZ2F0ZWRQYXRocyA9IFtdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGN1cnJlbnRPYmplY3QuX3R5cGUgPT09IFwiRW50aXR5U2V0XCIpIHtcblx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBjdXJyZW50T2JqZWN0IGFzIF9FbnRpdHlTZXQ7XG5cdFx0XHRjdXJyZW50RW50aXR5VHlwZSA9IGN1cnJlbnRFbnRpdHlTZXQuZW50aXR5VHlwZTtcblx0XHR9XG5cdH1cblxuXHRpZiAodGFyZ2V0RW50aXR5U2V0TG9jYXRpb24gJiYgdGFyZ2V0RW50aXR5U2V0TG9jYXRpb24uc3RhcnRpbmdFbnRpdHlTZXQgIT09IHJvb3RFbnRpdHlTZXQpIHtcblx0XHQvLyBJbiBjYXNlIHRoZSBlbnRpdHlzZXQgaXMgbm90IHN0YXJ0aW5nIGZyb20gdGhlIHNhbWUgbG9jYXRpb24gaXQgbWF5IG1lYW4gdGhhdCB3ZSBhcmUgZG9pbmcgdG9vIG11Y2ggd29yayBlYXJsaWVyIGZvciBzb21lIHJlYXNvblxuXHRcdC8vIEFzIHN1Y2ggd2UgbmVlZCB0byByZWRlZmluZSB0aGUgY29udGV4dCBzb3VyY2UgZm9yIHRoZSB0YXJnZXRFbnRpdHlTZXRMb2NhdGlvblxuXHRcdGNvbnN0IHN0YXJ0aW5nSW5kZXggPSBkYXRhTW9kZWxPYmplY3RzLmluZGV4T2YodGFyZ2V0RW50aXR5U2V0TG9jYXRpb24uc3RhcnRpbmdFbnRpdHlTZXQpO1xuXHRcdGlmIChzdGFydGluZ0luZGV4ICE9PSAtMSkge1xuXHRcdFx0Ly8gSWYgaXQncyBub3QgZm91bmQgSSBkb24ndCBrbm93IHdoYXQgd2UgY2FuIGRvIChwcm9iYWJseSBub3RoaW5nKVxuXHRcdFx0Y29uc3QgcmVxdWlyZWREYXRhTW9kZWxPYmplY3RzID0gZGF0YU1vZGVsT2JqZWN0cy5zbGljZSgwLCBzdGFydGluZ0luZGV4KTtcblx0XHRcdHRhcmdldEVudGl0eVNldExvY2F0aW9uLnN0YXJ0aW5nRW50aXR5U2V0ID0gcm9vdEVudGl0eVNldDtcblx0XHRcdHRhcmdldEVudGl0eVNldExvY2F0aW9uLm5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gcmVxdWlyZWREYXRhTW9kZWxPYmplY3RzXG5cdFx0XHRcdC5maWx0ZXIoKG9iamVjdDogYW55KSA9PiBvYmplY3QuX3R5cGUgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIpXG5cdFx0XHRcdC5jb25jYXQodGFyZ2V0RW50aXR5U2V0TG9jYXRpb24ubmF2aWdhdGlvblByb3BlcnRpZXMpIGFzIF9OYXZpZ2F0aW9uUHJvcGVydHlbXTtcblx0XHR9XG5cdH1cblx0Y29uc3Qgb3V0RGF0YU1vZGVsUGF0aCA9IHtcblx0XHRzdGFydGluZ0VudGl0eVNldDogcm9vdEVudGl0eVNldCxcblx0XHR0YXJnZXRFbnRpdHlTZXQ6IGN1cnJlbnRFbnRpdHlTZXQsXG5cdFx0dGFyZ2V0RW50aXR5VHlwZTogY3VycmVudEVudGl0eVR5cGUsXG5cdFx0dGFyZ2V0T2JqZWN0OiBtZXRhTW9kZWxDb250ZXh0LnRhcmdldCxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllcyxcblx0XHRjb250ZXh0TG9jYXRpb246IHRhcmdldEVudGl0eVNldExvY2F0aW9uXG5cdH07XG5cdGlmICghb3V0RGF0YU1vZGVsUGF0aC5jb250ZXh0TG9jYXRpb24pIHtcblx0XHRvdXREYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvbiA9IG91dERhdGFNb2RlbFBhdGg7XG5cdH1cblx0cmV0dXJuIG91dERhdGFNb2RlbFBhdGg7XG59XG4iXX0=
|
|
1353
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1ldGFNb2RlbENvbnZlcnRlci50cyJdLCJuYW1lcyI6WyJWT0NBQlVMQVJZX0FMSUFTIiwiRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiQ2hhcnQiLCJNaWNyb0NoYXJ0IiwiVVNoZWxsIiwiSW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiU2l0dWF0aW9ucyIsInBhcnNlUHJvcGVydHlWYWx1ZSIsImFubm90YXRpb25PYmplY3QiLCJwcm9wZXJ0eUtleSIsImN1cnJlbnRUYXJnZXQiLCJhbm5vdGF0aW9uc0xpc3RzIiwib0NhcGFiaWxpdGllcyIsInZhbHVlIiwiY3VycmVudFByb3BlcnR5VGFyZ2V0IiwidHlwZU9mQW5ub3RhdGlvbiIsInR5cGUiLCJOdWxsIiwiU3RyaW5nIiwiQm9vbCIsIkludCIsIkFycmF5IiwiaXNBcnJheSIsIkNvbGxlY3Rpb24iLCJtYXAiLCJzdWJBbm5vdGF0aW9uT2JqZWN0Iiwic3ViQW5ub3RhdGlvbk9iamVjdEluZGV4IiwicGFyc2VBbm5vdGF0aW9uT2JqZWN0IiwibGVuZ3RoIiwiaGFzT3duUHJvcGVydHkiLCIkUGF0aCIsInVuZGVmaW5lZCIsIlBhdGgiLCIkRGVjaW1hbCIsIkRlY2ltYWwiLCJwYXJzZUZsb2F0IiwiJFByb3BlcnR5UGF0aCIsIlByb3BlcnR5UGF0aCIsIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwiTmF2aWdhdGlvblByb3BlcnR5UGF0aCIsIiRJZiIsIklmIiwiJEFuZCIsIkFuZCIsIiRPciIsIk9yIiwiJE5vdCIsIk5vdCIsIiRFcSIsIkVxIiwiJE5lIiwiTmUiLCIkR3QiLCJHdCIsIiRHZSIsIkdlIiwiJEx0IiwiTHQiLCIkTGUiLCJMZSIsIiRBcHBseSIsIkFwcGx5IiwiRnVuY3Rpb24iLCIkRnVuY3Rpb24iLCIkQW5ub3RhdGlvblBhdGgiLCJBbm5vdGF0aW9uUGF0aCIsIiRFbnVtTWVtYmVyIiwiRW51bU1lbWJlciIsIm1hcE5hbWVUb0FsaWFzIiwic3BsaXQiLCIkVHlwZSIsIlJlY29yZCIsIm5hbWUiLCJhbm5vdGF0aW9uTmFtZSIsInBhdGhQYXJ0IiwiYW5ub1BhcnQiLCJsYXN0RG90IiwibGFzdEluZGV4T2YiLCJzdWJzdHIiLCJjdXJyZW50T2JqZWN0VGFyZ2V0IiwicGFyc2VkQW5ub3RhdGlvbk9iamVjdCIsInR5cGVPZk9iamVjdCIsInBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uIiwiY29sbGVjdGlvbiIsInN1YkFubm90YXRpb25JbmRleCIsInR5cGVWYWx1ZSIsInByb3BlcnR5VmFsdWVzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJzdGFydHNXaXRoIiwicHVzaCIsImNyZWF0ZUFubm90YXRpb25MaXN0cyIsImdldE9yQ3JlYXRlQW5ub3RhdGlvbkxpc3QiLCJ0YXJnZXQiLCJhbm5vdGF0aW9ucyIsInJlbW92ZUNoYXJ0QW5ub3RhdGlvbnMiLCJmaWx0ZXIiLCJvUmVjb3JkIiwiVGFyZ2V0IiwiaW5kZXhPZiIsInJlbW92ZUlCTkFubm90YXRpb25zIiwiaGFuZGxlUHJlc2VudGF0aW9uVmFyaWFudCIsImFubm90YXRpb25PYmplY3RzIiwiYW5ub3RhdGlvblRhcmdldCIsImFubm90YXRpb25MaXN0cyIsIm91dEFubm90YXRpb25PYmplY3QiLCJhbm5vdGF0aW9uS2V5IiwiRGF0YSIsIlZpc3VhbGl6YXRpb25zIiwiY3VycmVudE91dEFubm90YXRpb25PYmplY3QiLCJhbm5vdGF0aW9uT2ZBbm5vdGF0aW9uU3BsaXQiLCJhbm5vdGF0aW9uUXVhbGlmaWVyU3BsaXQiLCJxdWFsaWZpZXIiLCJ0ZXJtIiwiY3VycmVudEFubm90YXRpb25UYXJnZXQiLCJpc0NvbGxlY3Rpb24iLCJ0eXBlb2ZBbm5vdGF0aW9uIiwicmVjb3JkIiwicHJlcGFyZVByb3BlcnR5IiwicHJvcGVydHlEZWZpbml0aW9uIiwiZW50aXR5VHlwZU9iamVjdCIsInByb3BlcnR5TmFtZSIsInByb3BlcnR5T2JqZWN0IiwiX3R5cGUiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJtYXhMZW5ndGgiLCIkTWF4TGVuZ3RoIiwicHJlY2lzaW9uIiwiJFByZWNpc2lvbiIsInNjYWxlIiwiJFNjYWxlIiwibnVsbGFibGUiLCIkTnVsbGFibGUiLCJwcmVwYXJlTmF2aWdhdGlvblByb3BlcnR5IiwibmF2UHJvcGVydHlEZWZpbml0aW9uIiwibmF2UHJvcGVydHlOYW1lIiwicmVmZXJlbnRpYWxDb25zdHJhaW50IiwiJFJlZmVyZW50aWFsQ29uc3RyYWludCIsInNvdXJjZVByb3BlcnR5TmFtZSIsInNvdXJjZVR5cGVOYW1lIiwic291cmNlUHJvcGVydHkiLCJ0YXJnZXRUeXBlTmFtZSIsInRhcmdldFByb3BlcnR5IiwibmF2aWdhdGlvblByb3BlcnR5IiwicGFydG5lciIsIiRQYXJ0bmVyIiwiJGlzQ29sbGVjdGlvbiIsImNvbnRhaW5zVGFyZ2V0IiwiJENvbnRhaW5zVGFyZ2V0IiwicHJlcGFyZUVudGl0eVNldCIsImVudGl0eVNldERlZmluaXRpb24iLCJlbnRpdHlTZXROYW1lIiwiZW50aXR5Q29udGFpbmVyTmFtZSIsImVudGl0eVNldE9iamVjdCIsIm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJlbnRpdHlUeXBlTmFtZSIsInByZXBhcmVTaW5nbGV0b24iLCJzaW5nbGV0b25EZWZpbml0aW9uIiwic2luZ2xldG9uTmFtZSIsInR5cGVOYW1lIiwicHJlcGFyZVR5cGVEZWZpbml0aW9uIiwidHlwZURlZmluaXRpb24iLCJuYW1lc3BhY2UiLCJ0eXBlT2JqZWN0IiwicmVwbGFjZSIsInVuZGVybHlpbmdUeXBlIiwiJFVuZGVybHlpbmdUeXBlIiwicHJlcGFyZUNvbXBsZXhUeXBlIiwiY29tcGxleFR5cGVEZWZpbml0aW9uIiwiY29tcGxleFR5cGVOYW1lIiwiY29tcGxleFR5cGVPYmplY3QiLCJwcm9wZXJ0aWVzIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJjb21wbGV4VHlwZVByb3BlcnRpZXMiLCJwcm9wZXJ0eU5hbWVPck5vdCIsIiRraW5kIiwic29ydCIsImEiLCJiIiwiY29tcGxleFR5cGVOYXZpZ2F0aW9uUHJvcGVydGllcyIsInByZXBhcmVFbnRpdHlLZXlzIiwiZW50aXR5VHlwZURlZmluaXRpb24iLCJvTWV0YU1vZGVsRGF0YSIsIiRLZXkiLCIkQmFzZVR5cGUiLCJwcmVwYXJlRW50aXR5VHlwZSIsIm1ldGFNb2RlbERhdGEiLCJlbnRpdHlLZXlzIiwiZW50aXR5UHJvcGVydGllcyIsImVudGl0eUtleSIsImZpbmQiLCJwcm9wZXJ0eSIsInByZXBhcmVBY3Rpb24iLCJhY3Rpb25OYW1lIiwiYWN0aW9uUmF3RGF0YSIsImFjdGlvbkVudGl0eVR5cGUiLCJhY3Rpb25GUU4iLCJhY3Rpb25TaG9ydE5hbWUiLCIkSXNCb3VuZCIsImJpbmRpbmdQYXJhbWV0ZXIiLCIkUGFyYW1ldGVyIiwicGFyYW1ldGVycyIsImlzQm91bmQiLCJpc0Z1bmN0aW9uIiwic291cmNlVHlwZSIsInJldHVyblR5cGUiLCIkUmV0dXJuVHlwZSIsInBhcmFtIiwiaXNFbnRpdHlTZXQiLCIkRW50aXR5U2V0UGF0aCIsIiROYW1lIiwicHJlcGFyZUVudGl0eVR5cGVzIiwib01ldGFNb2RlbCIsImdldE9iamVjdCIsImVudGl0eVR5cGVzIiwiZW50aXR5U2V0cyIsInNpbmdsZXRvbnMiLCJjb21wbGV4VHlwZXMiLCJ0eXBlRGVmaW5pdGlvbnMiLCIkRW50aXR5Q29udGFpbmVyIiwic2NoZW1hS2V5cyIsIm1ldGFtb2RlbEtleSIsInNPYmplY3ROYW1lIiwiZW50aXR5VHlwZSIsIiRBbm5vdGF0aW9ucyIsImZpbHRlckZhY2V0QW5ub3RhdGlvbiIsIklEIiwiZ2VuZXJhdGUiLCJGYWNldCIsImVudGl0eVByb3BlcnR5IiwiVmFsdWUiLCJjb21wbGV4VHlwZSIsIm9FbnRpdHlDb250YWluZXIiLCJlbnRpdHlTZXQiLCJzaW5nbGV0b24iLCJlbnRpdHlDb250YWluZXIiLCJuYXZQcm9wZXJ0eUJpbmRpbmdzIiwiJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJuYXZQcm9wTmFtZSIsInRhcmdldEVudGl0eVNldCIsImFjdGlvbnMiLCJrZXkiLCJyZWR1Y2UiLCJvdXRBY3Rpb25zIiwiYWN0aW9uIiwib3V0QW5ub3RhdGlvbkxpc3RzIiwic0Fubm90YXRpb25OYW1lIiwicmVmZXJlbmNlcyIsImlkZW50aWZpY2F0aW9uIiwidmVyc2lvbiIsInNjaGVtYSIsImFzc29jaWF0aW9ucyIsImFzc29jaWF0aW9uU2V0cyIsIm1NZXRhTW9kZWxNYXAiLCJjb252ZXJ0VHlwZXMiLCJzTWV0YU1vZGVsSWQiLCJpZCIsInBhcnNlZE91dHB1dCIsImFkZFN5bnRoZXRpY0Fubm90YXRpb25zIiwiQW5ub3RhdGlvbkNvbnZlcnRlciIsIm9FcnJvciIsIkVycm9yIiwibWV0YU1vZGVsIiwic2l0dWF0aW9uc05hdlByb3AiLCJuYXZQcm9wIiwiRkUiLCJwYXRoIiwiJHRhcmdldCIsImRlbGV0ZU1vZGVsQ2FjaGVEYXRhIiwiY29udmVydE1ldGFNb2RlbENvbnRleHQiLCJvTWV0YU1vZGVsQ29udGV4dCIsImJJbmNsdWRlVmlzaXRlZE9iamVjdHMiLCJvQ29udmVydGVyT3V0cHV0IiwiZ2V0TW9kZWwiLCJzUGF0aCIsImdldFBhdGgiLCJhUGF0aFNwbGl0IiwicmVsYXRpdmVQYXRoIiwic2xpY2UiLCJqb2luIiwibG9jYWxPYmplY3RzIiwicmVsYXRpdmVTcGxpdCIsImlkeCIsImN1cnJlbnRFbnRpdHlTZXQiLCJzTmF2UHJvcFRvQ2hlY2siLCJhTmF2UHJvcHMiLCJ0YXJnZXRFbnRpdHlUeXBlIiwic05hdlByb3AiLCJ0YXJnZXROYXZQcm9wIiwidGFyZ2V0VHlwZSIsInNoaWZ0Iiwib1RhcmdldCIsInJlc29sdmVQYXRoIiwidmlzaXRlZE9iamVjdHMiLCJjb25jYXQiLCJwYXJhbWV0ZXJOYW1lIiwidGFyZ2V0UGFyYW1ldGVyIiwicGFyYW1ldGVyIiwiZW5kc1dpdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJvRW50aXR5U2V0TWV0YU1vZGVsQ29udGV4dCIsIm1ldGFNb2RlbENvbnRleHQiLCJ0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbiIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0RnJvbVBhdGgiLCJjb252ZXJ0ZWRUeXBlcyIsImRhdGFNb2RlbE9iamVjdHMiLCJ2aXNpdGVkT2JqZWN0Iiwicm9vdEVudGl0eVNldCIsImN1cnJlbnRFbnRpdHlUeXBlIiwiaSIsImN1cnJlbnRPYmplY3QiLCJuYXZpZ2F0ZWRQYXRocyIsInN0YXJ0aW5nRW50aXR5U2V0Iiwic3RhcnRpbmdJbmRleCIsInJlcXVpcmVkRGF0YU1vZGVsT2JqZWN0cyIsIm9iamVjdCIsIm91dERhdGFNb2RlbFBhdGgiLCJ0YXJnZXRPYmplY3QiLCJjb250ZXh0TG9jYXRpb24iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJBLE1BQU1BLGdCQUFxQixHQUFHO0FBQzdCLGlDQUE2QixjQURBO0FBRTdCLHlCQUFxQixNQUZRO0FBRzdCLDZCQUF5QixVQUhJO0FBSTdCLHNDQUFrQyxRQUpMO0FBSzdCLGtDQUE4QixJQUxEO0FBTTdCLHVDQUFtQyxTQU5OO0FBTzdCLHlDQUFxQyxXQVBSO0FBUTdCLDRDQUF3QyxjQVJYO0FBUzdCLDZDQUF5QztBQVRaLEdBQTlCO0FBb0JPLE1BQU1DLDhCQUE4QixHQUFHO0FBQzdDQyxJQUFBQSxLQUFLLEVBQUUsSUFEc0M7QUFFN0NDLElBQUFBLFVBQVUsRUFBRSxJQUZpQztBQUc3Q0MsSUFBQUEsTUFBTSxFQUFFLElBSHFDO0FBSTdDQyxJQUFBQSxxQkFBcUIsRUFBRSxJQUpzQjtBQUs3Q0MsSUFBQUEsVUFBVSxFQUFFO0FBTGlDLEdBQXZDOzs7QUEwQlAsV0FBU0Msa0JBQVQsQ0FDQ0MsZ0JBREQsRUFFQ0MsV0FGRCxFQUdDQyxhQUhELEVBSUNDLGdCQUpELEVBS0NDLGFBTEQsRUFNTztBQUNOLFFBQUlDLEtBQUo7QUFDQSxRQUFNQyxxQkFBNkIsR0FBR0osYUFBYSxHQUFHLEdBQWhCLEdBQXNCRCxXQUE1RDtBQUNBLFFBQU1NLGdCQUFnQixHQUFHLE9BQU9QLGdCQUFoQzs7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QixFQUF1QztBQUN0Q0YsTUFBQUEsZ0JBQWdCLENBQUNFLGVBQWpCLEdBQW1DRixnQkFBbkM7QUFDQTs7QUFDRCxXQUFPQSxnQkFBUDtBQUNBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbm5vdGF0aW9uLCBBbm5vdGF0aW9uTGlzdCwgQW5ub3RhdGlvblJlY29yZCwgRXhwcmVzc2lvbiwgUGFyc2VyT3V0cHV0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG4vLyBUaGlzIGZpbGUgaXMgcmV0cmlldmVkIGZyb20gQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlciwgc2hhcmVkIGNvZGUgd2l0aCB0b29sIHN1aXRlXG5pbXBvcnQgeyBBbm5vdGF0aW9uQ29udmVydGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29tbW9uXCI7XG5pbXBvcnQgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHtcblx0Q29udmVydGVyT3V0cHV0LFxuXHRFbnRpdHlTZXQgYXMgX0VudGl0eVNldCxcblx0RW50aXR5VHlwZSBhcyBfRW50aXR5VHlwZSxcblx0U2luZ2xldG9uIGFzIF9TaW5nbGV0b24sXG5cdE5hdmlnYXRpb25Qcm9wZXJ0eSBhcyBfTmF2aWdhdGlvblByb3BlcnR5XG59IGZyb20gXCJAc2FwLXV4L2Fubm90YXRpb24tY29udmVydGVyXCI7XG5pbXBvcnQge1xuXHRFbnRpdHlUeXBlLFxuXHRFbnRpdHlTZXQsXG5cdFByb3BlcnR5LFxuXHRDb21wbGV4VHlwZSxcblx0UmVmZXJlbnRpYWxDb25zdHJhaW50LFxuXHRWNE5hdmlnYXRpb25Qcm9wZXJ0eSxcblx0QWN0aW9uLFxuXHRSZWZlcmVuY2UsXG5cdEVudGl0eUNvbnRhaW5lcixcblx0U2luZ2xldG9uLFxuXHRUeXBlRGVmaW5pdGlvblxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvZGlzdC9QYXJzZXJcIjtcbmltcG9ydCB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCIuLi9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuY29uc3QgVk9DQUJVTEFSWV9BTElBUzogYW55ID0ge1xuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjFcIjogXCJDYXBhYmlsaXRpZXNcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMVwiOiBcIkNvcmVcIixcblx0XCJPcmcuT0RhdGEuTWVhc3VyZXMuVjFcIjogXCJNZWFzdXJlc1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MVwiOiBcIkNvbW1vblwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxXCI6IFwiVUlcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxXCI6IFwiU2Vzc2lvblwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MVwiOiBcIkFuYWx5dGljc1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlBlcnNvbmFsRGF0YS52MVwiOiBcIlBlcnNvbmFsRGF0YVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjFcIjogXCJDb21tdW5pY2F0aW9uXCJcbn07XG5cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50Q2FwYWJpbGl0aWVzID0ge1xuXHRDaGFydDogYm9vbGVhbjtcblx0TWljcm9DaGFydDogYm9vbGVhbjtcblx0VVNoZWxsOiBib29sZWFuO1xuXHRJbnRlbnRCYXNlZE5hdmlnYXRpb246IGJvb2xlYW47XG5cdFNpdHVhdGlvbnM6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzID0ge1xuXHRDaGFydDogdHJ1ZSxcblx0TWljcm9DaGFydDogdHJ1ZSxcblx0VVNoZWxsOiB0cnVlLFxuXHRJbnRlbnRCYXNlZE5hdmlnYXRpb246IHRydWUsXG5cdFNpdHVhdGlvbnM6IGZhbHNlXG59O1xuXG50eXBlIE1ldGFNb2RlbEFjdGlvbiA9IHtcblx0JGtpbmQ6IFwiQWN0aW9uXCI7XG5cdCRJc0JvdW5kOiBib29sZWFuO1xuXHQkRW50aXR5U2V0UGF0aDogc3RyaW5nO1xuXHQkUGFyYW1ldGVyOiB7XG5cdFx0JFR5cGU6IHN0cmluZztcblx0XHQkTmFtZTogc3RyaW5nO1xuXHRcdCROdWxsYWJsZT86IGJvb2xlYW47XG5cdFx0JE1heExlbmd0aD86IG51bWJlcjtcblx0XHQkUHJlY2lzaW9uPzogbnVtYmVyO1xuXHRcdCRTY2FsZT86IG51bWJlcjtcblx0XHQkaXNDb2xsZWN0aW9uPzogYm9vbGVhbjtcblx0fVtdO1xuXHQkUmV0dXJuVHlwZToge1xuXHRcdCRUeXBlOiBzdHJpbmc7XG5cdH07XG59O1xuXG5mdW5jdGlvbiBwYXJzZVByb3BlcnR5VmFsdWUoXG5cdGFubm90YXRpb25PYmplY3Q6IGFueSxcblx0cHJvcGVydHlLZXk6IHN0cmluZyxcblx0Y3VycmVudFRhcmdldDogc3RyaW5nLFxuXHRhbm5vdGF0aW9uc0xpc3RzOiBSZWNvcmQ8c3RyaW5nLCBBbm5vdGF0aW9uTGlzdD4sXG5cdG9DYXBhYmlsaXRpZXM6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzXG4pOiBhbnkge1xuXHRsZXQgdmFsdWU7XG5cdGNvbnN0IGN1cnJlbnRQcm9wZXJ0eVRhcmdldDogc3RyaW5nID0gY3VycmVudFRhcmdldCArIFwiL1wiICsgcHJvcGVydHlLZXk7XG5cdGNvbnN0IHR5cGVPZkFubm90YXRpb24gPSB0eXBlb2YgYW5ub3RhdGlvbk9iamVjdDtcblx0aWYgKGFubm90YXRpb25PYmplY3QgPT09IG51bGwpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJOdWxsXCIsIE51bGw6IG51bGwgfTtcblx0fSBlbHNlIGlmICh0eXBlT2ZBbm5vdGF0aW9uID09PSBcInN0cmluZ1wiKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiU3RyaW5nXCIsIFN0cmluZzogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHR9IGVsc2UgaWYgKHR5cGVPZkFubm90YXRpb24gPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiQm9vbFwiLCBCb29sOiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdH0gZWxzZSBpZiAodHlwZU9mQW5ub3RhdGlvbiA9PT0gXCJudW1iZXJcIikge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkludFwiLCBJbnQ6IGFubm90YXRpb25PYmplY3QgfTtcblx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFubm90YXRpb25PYmplY3QpKSB7XG5cdFx0dmFsdWUgPSB7XG5cdFx0XHR0eXBlOiBcIkNvbGxlY3Rpb25cIixcblx0XHRcdENvbGxlY3Rpb246IGFubm90YXRpb25PYmplY3QubWFwKChzdWJBbm5vdGF0aW9uT2JqZWN0LCBzdWJBbm5vdGF0aW9uT2JqZWN0SW5kZXgpID0+XG5cdFx0XHRcdHBhcnNlQW5ub3RhdGlvbk9iamVjdChcblx0XHRcdFx0XHRzdWJBbm5vdGF0aW9uT2JqZWN0LFxuXHRcdFx0XHRcdGN1cnJlbnRQcm9wZXJ0eVRhcmdldCArIFwiL1wiICsgc3ViQW5ub3RhdGlvbk9iamVjdEluZGV4LFxuXHRcdFx0XHRcdGFubm90YXRpb25zTGlzdHMsXG5cdFx0XHRcdFx0b0NhcGFiaWxpdGllc1xuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0fTtcblx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRQcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJQcm9wZXJ0eVBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRQYXRoXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiUGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5ub3RhdGlvblBhdGhcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJBbm5vdGF0aW9uUGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFR5cGVcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJSZWNvcmRcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRJZlwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIklmXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkT3JcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJPclwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFuZFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkFuZFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEVxXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiRXFcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROZVwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk5lXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTm90XCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTm90XCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkR3RcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJHdFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEdlXCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiR2VcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRMdFwiKSkge1xuXHRcdFx0XHQodmFsdWUuQ29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkx0XCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTGVcIikpIHtcblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJMZVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEFwcGx5XCIpKSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiQXBwbHlcIjtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGFubm90YXRpb25PYmplY3RbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0Ly8gJFR5cGUgaXMgb3B0aW9uYWwuLi5cblx0XHRcdFx0KHZhbHVlLkNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJSZWNvcmRcIjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdCh2YWx1ZS5Db2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiU3RyaW5nXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJFBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIlBhdGhcIiwgUGF0aDogYW5ub3RhdGlvbk9iamVjdC4kUGF0aCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJERlY2ltYWwgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkRlY2ltYWxcIiwgRGVjaW1hbDogcGFyc2VGbG9hdChhbm5vdGF0aW9uT2JqZWN0LiREZWNpbWFsKSB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJFByb3BlcnR5UGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiUHJvcGVydHlQYXRoXCIsIFByb3BlcnR5UGF0aDogYW5ub3RhdGlvbk9iamVjdC4kUHJvcGVydHlQYXRoIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTmF2aWdhdGlvblByb3BlcnR5UGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7XG5cdFx0XHR0eXBlOiBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIixcblx0XHRcdE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IGFubm90YXRpb25PYmplY3QuJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcblx0XHR9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJElmICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJJZlwiLCBJZjogYW5ub3RhdGlvbk9iamVjdC4kSWYgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBbmQgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkFuZFwiLCBBbmQ6IGFubm90YXRpb25PYmplY3QuJEFuZCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE9yICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJPclwiLCBPcjogYW5ub3RhdGlvbk9iamVjdC4kT3IgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROb3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIk5vdFwiLCBOb3Q6IGFubm90YXRpb25PYmplY3QuJE5vdCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEVxICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJFcVwiLCBFcTogYW5ub3RhdGlvbk9iamVjdC4kRXEgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiTmVcIiwgTmU6IGFubm90YXRpb25PYmplY3QuJE5lIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kR3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkd0XCIsIEd0OiBhbm5vdGF0aW9uT2JqZWN0LiRHdCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEdlICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJHZVwiLCBHZTogYW5ub3RhdGlvbk9iamVjdC4kR2UgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRMdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFsdWUgPSB7IHR5cGU6IFwiTHRcIiwgTHQ6IGFubm90YXRpb25PYmplY3QuJEx0IH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhbHVlID0geyB0eXBlOiBcIkxlXCIsIExlOiBhbm5vdGF0aW9uT2JqZWN0LiRMZSB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFwcGx5ICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJBcHBseVwiLCBBcHBseTogYW5ub3RhdGlvbk9iamVjdC4kQXBwbHksIEZ1bmN0aW9uOiBhbm5vdGF0aW9uT2JqZWN0LiRGdW5jdGlvbiB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHsgdHlwZTogXCJBbm5vdGF0aW9uUGF0aFwiLCBBbm5vdGF0aW9uUGF0aDogYW5ub3RhdGlvbk9iamVjdC4kQW5ub3RhdGlvblBhdGggfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YWx1ZSA9IHtcblx0XHRcdHR5cGU6IFwiRW51bU1lbWJlclwiLFxuXHRcdFx0RW51bU1lbWJlcjogbWFwTmFtZVRvQWxpYXMoYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlci5zcGxpdChcIi9cIilbMF0pICsgXCIvXCIgKyBhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyLnNwbGl0KFwiL1wiKVsxXVxuXHRcdH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kVHlwZSkge1xuXHRcdHZhbHVlID0ge1xuXHRcdFx0dHlwZTogXCJSZWNvcmRcIixcblx0XHRcdFJlY29yZDogcGFyc2VBbm5vdGF0aW9uT2JqZWN0KGFubm90YXRpb25PYmplY3QsIGN1cnJlbnRUYXJnZXQsIGFubm90YXRpb25zTGlzdHMsIG9DYXBhYmlsaXRpZXMpXG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHR2YWx1ZSA9IHtcblx0XHRcdHR5cGU6IFwiUmVjb3JkXCIsXG5cdFx0XHRSZWNvcmQ6IHBhcnNlQW5ub3RhdGlvbk9iamVjdChhbm5vdGF0aW9uT2JqZWN0LCBjdXJyZW50VGFyZ2V0LCBhbm5vdGF0aW9uc0xpc3RzLCBvQ2FwYWJpbGl0aWVzKVxuXHRcdH07XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdG5hbWU6IHByb3BlcnR5S2V5LFxuXHRcdHZhbHVlXG5cdH07XG59XG5mdW5jdGlvbiBtYXBOYW1lVG9BbGlhcyhhbm5vdGF0aW9uTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0bGV0IFtwYXRoUGFydCwgYW5ub1BhcnRdID0gYW5ub3RhdGlvbk5hbWUuc3BsaXQoXCJAXCIpO1xuXHRpZiAoIWFubm9QYXJ0KSB7XG5cdFx0YW5ub1BhcnQgPSBwYXRoUGFydDtcblx0XHRwYXRoUGFydCA9IFwiXCI7XG5cdH0gZWxzZSB7XG5cdFx0cGF0aFBhcnQgKz0gXCJAXCI7XG5cdH1cblx0Y29uc3QgbGFzdERvdCA9IGFubm9QYXJ0Lmxhc3RJbmRleE9mKFwiLlwiKTtcblx0cmV0dXJuIHBhdGhQYXJ0ICsgVk9DQUJVTEFSWV9BTElBU1thbm5vUGFydC5zdWJzdHIoMCwgbGFzdERvdCldICsgXCIuXCIgKyBhbm5vUGFydC5zdWJzdHIobGFzdERvdCArIDEpO1xufVxuZnVuY3Rpb24gcGFyc2VBbm5vdGF0aW9uT2JqZWN0KFxuXHRhbm5vdGF0aW9uT2JqZWN0OiBhbnksXG5cdGN1cnJlbnRPYmplY3RUYXJnZXQ6IHN0cmluZyxcblx0YW5ub3RhdGlvbnNMaXN0czogUmVjb3JkPHN0cmluZywgQW5ub3RhdGlvbkxpc3Q+LFxuXHRvQ2FwYWJpbGl0aWVzOiBFbnZpcm9ubWVudENhcGFiaWxpdGllc1xuKTogRXhwcmVzc2lvbiB8IEFubm90YXRpb25SZWNvcmQgfCBBbm5vdGF0aW9uIHtcblx0bGV0IHBhcnNlZEFubm90YXRpb25PYmplY3Q6IGFueSA9IHt9O1xuXHRjb25zdCB0eXBlT2ZPYmplY3QgPSB0eXBlb2YgYW5ub3RhdGlvbk9iamVjdDtcblx0aWYgKGFubm90YXRpb25PYmplY3QgPT09IG51bGwpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIk51bGxcIiwgTnVsbDogbnVsbCB9O1xuXHR9IGVsc2UgaWYgKHR5cGVPZk9iamVjdCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiU3RyaW5nXCIsIFN0cmluZzogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHR9IGVsc2UgaWYgKHR5cGVPZk9iamVjdCA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkJvb2xcIiwgQm9vbDogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHR9IGVsc2UgaWYgKHR5cGVPZk9iamVjdCA9PT0gXCJudW1iZXJcIikge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiSW50XCIsIEludDogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkFubm90YXRpb25QYXRoXCIsIEFubm90YXRpb25QYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiRBbm5vdGF0aW9uUGF0aCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJFBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiUGF0aFwiLCBQYXRoOiBhbm5vdGF0aW9uT2JqZWN0LiRQYXRoIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRGVjaW1hbCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJEZWNpbWFsXCIsIERlY2ltYWw6IHBhcnNlRmxvYXQoYW5ub3RhdGlvbk9iamVjdC4kRGVjaW1hbCkgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRQcm9wZXJ0eVBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiUHJvcGVydHlQYXRoXCIsIFByb3BlcnR5UGF0aDogYW5ub3RhdGlvbk9iamVjdC4kUHJvcGVydHlQYXRoIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kSWYgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7IHR5cGU6IFwiSWZcIiwgSWY6IGFubm90YXRpb25PYmplY3QuJElmIH07XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kQW5kICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIkFuZFwiLCBBbmQ6IGFubm90YXRpb25PYmplY3QuJEFuZCB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE9yICE9PSB1bmRlZmluZWQpIHtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0ID0geyB0eXBlOiBcIk9yXCIsIE9yOiBhbm5vdGF0aW9uT2JqZWN0LiRPciB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE5vdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJOb3RcIiwgTm90OiBhbm5vdGF0aW9uT2JqZWN0LiROb3QgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRFcSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJFcVwiLCBFcTogYW5ub3RhdGlvbk9iamVjdC4kRXEgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJOZVwiLCBOZTogYW5ub3RhdGlvbk9iamVjdC4kTmUgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRHdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJHdFwiLCBHdDogYW5ub3RhdGlvbk9iamVjdC4kR3QgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRHZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJHZVwiLCBHZTogYW5ub3RhdGlvbk9iamVjdC4kR2UgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRMdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJMdFwiLCBMdDogYW5ub3RhdGlvbk9iamVjdC4kTHQgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRMZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJMZVwiLCBMZTogYW5ub3RhdGlvbk9iamVjdC4kTGUgfTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBcHBseSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdCA9IHsgdHlwZTogXCJBcHBseVwiLCBBcHBseTogYW5ub3RhdGlvbk9iamVjdC4kQXBwbHksIEZ1bmN0aW9uOiBhbm5vdGF0aW9uT2JqZWN0LiRGdW5jdGlvbiB9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7XG5cdFx0XHR0eXBlOiBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIixcblx0XHRcdE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IGFubm90YXRpb25PYmplY3QuJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcblx0XHR9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEVudW1NZW1iZXIgIT09IHVuZGVmaW5lZCkge1xuXHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QgPSB7XG5cdFx0XHR0eXBlOiBcIkVudW1NZW1iZXJcIixcblx0XHRcdEVudW1NZW1iZXI6IG1hcE5hbWVUb0FsaWFzKGFubm90YXRpb25PYmplY3QuJEVudW1NZW1iZXIuc3BsaXQoXCIvXCIpWzBdKSArIFwiL1wiICsgYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlci5zcGxpdChcIi9cIilbMV1cblx0XHR9O1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYW5ub3RhdGlvbk9iamVjdCkpIHtcblx0XHRjb25zdCBwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbiA9IHBhcnNlZEFubm90YXRpb25PYmplY3QgYXMgYW55O1xuXHRcdHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24gPSBhbm5vdGF0aW9uT2JqZWN0Lm1hcCgoc3ViQW5ub3RhdGlvbk9iamVjdCwgc3ViQW5ub3RhdGlvbkluZGV4KSA9PlxuXHRcdFx0cGFyc2VBbm5vdGF0aW9uT2JqZWN0KHN1YkFubm90YXRpb25PYmplY3QsIGN1cnJlbnRPYmplY3RUYXJnZXQgKyBcIi9cIiArIHN1YkFubm90YXRpb25JbmRleCwgYW5ub3RhdGlvbnNMaXN0cywgb0NhcGFiaWxpdGllcylcblx0XHQpO1xuXHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFByb3BlcnR5UGF0aFwiKSkge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlByb3BlcnR5UGF0aFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFBhdGhcIikpIHtcblx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJQYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiKSkge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBbm5vdGF0aW9uUGF0aFwiKSkge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkFubm90YXRpb25QYXRoXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkVHlwZVwiKSkge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlJlY29yZFwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJElmXCIpKSB7XG5cdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiSWZcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBbmRcIikpIHtcblx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJBbmRcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRPclwiKSkge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk9yXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkRXFcIikpIHtcblx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJFcVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5lXCIpKSB7XG5cdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTmVcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROb3RcIikpIHtcblx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJOb3RcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRHdFwiKSkge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkd0XCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkR2VcIikpIHtcblx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJHZVwiO1xuXHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEx0XCIpKSB7XG5cdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uQ29sbGVjdGlvbi5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTHRcIjtcblx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRMZVwiKSkge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkxlXCI7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQXBwbHlcIikpIHtcblx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJBcHBseVwiO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgYW5ub3RhdGlvbk9iamVjdFswXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbkNvbGxlY3Rpb24uY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIlJlY29yZFwiO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25Db2xsZWN0aW9uLmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJTdHJpbmdcIjtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0aWYgKGFubm90YXRpb25PYmplY3QuJFR5cGUpIHtcblx0XHRcdGNvbnN0IHR5cGVWYWx1ZSA9IGFubm90YXRpb25PYmplY3QuJFR5cGU7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnR5cGUgPSB0eXBlVmFsdWU7IC8vYCR7dHlwZUFsaWFzfS4ke3R5cGVUZXJtfWA7XG5cdFx0fVxuXHRcdGNvbnN0IHByb3BlcnR5VmFsdWVzOiBhbnkgPSBbXTtcblx0XHRPYmplY3Qua2V5cyhhbm5vdGF0aW9uT2JqZWN0KS5mb3JFYWNoKHByb3BlcnR5S2V5ID0+IHtcblx0XHRcdGlmIChcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJFR5cGVcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkSWZcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkQXBwbHlcIiAmJlxuXHRcdFx0XHRwcm9wZXJ0eUtleSAhPT0gXCIkQW5kXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJE9yXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJE5lXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEd0XCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEdlXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJEx0XCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJExlXCIgJiZcblx0XHRcdFx0cHJvcGVydHlLZXkgIT09IFwiJE5vdFwiICYmXG5cdFx0XHRcdHByb3BlcnR5S2V5ICE9PSBcIiRFcVwiICYmXG5cdFx0XHRcdCFwcm9wZXJ0eUtleS5zdGFydHNXaXRoKFwiQFwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHByb3BlcnR5VmFsdWVzLnB1c2goXG5cdFx0XHRcdFx0cGFyc2VQcm9wZXJ0eVZhbHVlKGFubm90YXRpb25PYmplY3RbcHJvcGVydHlLZXldLCBwcm9wZXJ0eUtleSwgY3VycmVudE9iamVjdFRhcmdldCwgYW5ub3RhdGlvbnNMaXN0cywgb0NhcGFiaWxpdGllcylcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSBpZiAocHJvcGVydHlLZXkuc3RhcnRzV2l0aChcIkBcIikpIHtcblx0XHRcdFx0Ly8gQW5ub3RhdGlvbiBvZiBhbm5vdGF0aW9uXG5cdFx0XHRcdGNyZWF0ZUFubm90YXRpb25MaXN0cyhcblx0XHRcdFx0XHR7IFtwcm9wZXJ0eUtleV06IGFubm90YXRpb25PYmplY3RbcHJvcGVydHlLZXldIH0sXG5cdFx0XHRcdFx0Y3VycmVudE9iamVjdFRhcmdldCxcblx0XHRcdFx0XHRhbm5vdGF0aW9uc0xpc3RzLFxuXHRcdFx0XHRcdG9DYXBhYmlsaXRpZXNcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnByb3BlcnR5VmFsdWVzID0gcHJvcGVydHlWYWx1ZXM7XG5cdH1cblx0cmV0dXJuIHBhcnNlZEFubm90YXRpb25PYmplY3Q7XG59XG5mdW5jdGlvbiBnZXRPckNyZWF0ZUFubm90YXRpb25MaXN0KHRhcmdldDogc3RyaW5nLCBhbm5vdGF0aW9uc0xpc3RzOiBSZWNvcmQ8c3RyaW5nLCBBbm5vdGF0aW9uTGlzdD4pOiBBbm5vdGF0aW9uTGlzdCB7XG5cdGlmICghYW5ub3RhdGlvbnNMaXN0cy5oYXNPd25Qcm9wZXJ0eSh0YXJnZXQpKSB7XG5cdFx0YW5ub3RhdGlvbnNMaXN0c1t0YXJnZXRdID0ge1xuXHRcdFx0dGFyZ2V0OiB0YXJnZXQsXG5cdFx0XHRhbm5vdGF0aW9uczogW11cblx0XHR9O1xuXHR9XG5cdHJldHVybiBhbm5vdGF0aW9uc0xpc3RzW3RhcmdldF07XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNoYXJ0QW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdDogYW55KSB7XG5cdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0LmZpbHRlcigob1JlY29yZDogYW55KSA9PiB7XG5cdFx0aWYgKG9SZWNvcmQuVGFyZ2V0ICYmIG9SZWNvcmQuVGFyZ2V0LiRBbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0cmV0dXJuIG9SZWNvcmQuVGFyZ2V0LiRBbm5vdGF0aW9uUGF0aC5pbmRleE9mKFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCIpID09PSAtMTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlSUJOQW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdDogYW55KSB7XG5cdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0LmZpbHRlcigob1JlY29yZDogYW55KSA9PiB7XG5cdFx0cmV0dXJuIG9SZWNvcmQuJFR5cGUgIT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVQcmVzZW50YXRpb25WYXJpYW50KGFubm90YXRpb25PYmplY3Q6IGFueSkge1xuXHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdC5maWx0ZXIoKG9SZWNvcmQ6IGFueSkgPT4ge1xuXHRcdHJldHVybiBvUmVjb3JkLiRBbm5vdGF0aW9uUGF0aCAhPT0gXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIjtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFubm90YXRpb25MaXN0cyhcblx0YW5ub3RhdGlvbk9iamVjdHM6IGFueSxcblx0YW5ub3RhdGlvblRhcmdldDogc3RyaW5nLFxuXHRhbm5vdGF0aW9uTGlzdHM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25MaXN0Pixcblx0b0NhcGFiaWxpdGllczogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNcbikge1xuXHRpZiAoT2JqZWN0LmtleXMoYW5ub3RhdGlvbk9iamVjdHMpLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybjtcblx0fVxuXHRjb25zdCBvdXRBbm5vdGF0aW9uT2JqZWN0ID0gZ2V0T3JDcmVhdGVBbm5vdGF0aW9uTGlzdChhbm5vdGF0aW9uVGFyZ2V0LCBhbm5vdGF0aW9uTGlzdHMpO1xuXHRpZiAoIW9DYXBhYmlsaXRpZXMuTWljcm9DaGFydCkge1xuXHRcdGRlbGV0ZSBhbm5vdGF0aW9uT2JqZWN0c1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwiXTtcblx0fVxuXG5cdGZvciAobGV0IGFubm90YXRpb25LZXkgaW4gYW5ub3RhdGlvbk9iamVjdHMpIHtcblx0XHRsZXQgYW5ub3RhdGlvbk9iamVjdCA9IGFubm90YXRpb25PYmplY3RzW2Fubm90YXRpb25LZXldO1xuXHRcdHN3aXRjaCAoYW5ub3RhdGlvbktleSkge1xuXHRcdFx0Y2FzZSBcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IZWFkZXJGYWNldHNcIjpcblx0XHRcdFx0aWYgKCFvQ2FwYWJpbGl0aWVzLk1pY3JvQ2hhcnQpIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0ID0gcmVtb3ZlQ2hhcnRBbm5vdGF0aW9ucyhhbm5vdGF0aW9uT2JqZWN0KTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLklkZW50aWZpY2F0aW9uXCI6XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5JbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0ID0gcmVtb3ZlSUJOQW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdCk7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV0gPSBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiOlxuXHRcdFx0XHRpZiAoIW9DYXBhYmlsaXRpZXMuSW50ZW50QmFzZWROYXZpZ2F0aW9uKSB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdCA9IHJlbW92ZUlCTkFubm90YXRpb25zKGFubm90YXRpb25PYmplY3QpO1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2Fubm90YXRpb25LZXldID0gYW5ub3RhdGlvbk9iamVjdDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIW9DYXBhYmlsaXRpZXMuTWljcm9DaGFydCkge1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3QgPSByZW1vdmVDaGFydEFubm90YXRpb25zKGFubm90YXRpb25PYmplY3QpO1xuXHRcdFx0XHRcdGFubm90YXRpb25PYmplY3RzW2Fubm90YXRpb25LZXldID0gYW5ub3RhdGlvbk9iamVjdDtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmllbGRHcm91cFwiOlxuXHRcdFx0XHRpZiAoIW9DYXBhYmlsaXRpZXMuSW50ZW50QmFzZWROYXZpZ2F0aW9uKSB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdC5EYXRhID0gcmVtb3ZlSUJOQW5ub3RhdGlvbnMoYW5ub3RhdGlvbk9iamVjdC5EYXRhKTtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0c1thbm5vdGF0aW9uS2V5XSA9IGFubm90YXRpb25PYmplY3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFvQ2FwYWJpbGl0aWVzLk1pY3JvQ2hhcnQpIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uT2JqZWN0LkRhdGEgPSByZW1vdmVDaGFydEFubm90YXRpb25zKGFubm90YXRpb25PYmplY3QuRGF0YSk7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV0gPSBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50XCI6XG5cdFx0XHRcdGlmICghb0NhcGFiaWxpdGllcy5DaGFydCAmJiBhbm5vdGF0aW9uT2JqZWN0LlZpc3VhbGl6YXRpb25zKSB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdC5WaXN1YWxpemF0aW9ucyA9IGhhbmRsZVByZXNlbnRhdGlvblZhcmlhbnQoYW5ub3RhdGlvbk9iamVjdC5WaXN1YWxpemF0aW9ucyk7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdHNbYW5ub3RhdGlvbktleV0gPSBhbm5vdGF0aW9uT2JqZWN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0bGV0IGN1cnJlbnRPdXRBbm5vdGF0aW9uT2JqZWN0ID0gb3V0QW5ub3RhdGlvbk9iamVjdDtcblxuXHRcdC8vIENoZWNrIGZvciBhbm5vdGF0aW9uIG9mIGFubm90YXRpb25cblx0XHRjb25zdCBhbm5vdGF0aW9uT2ZBbm5vdGF0aW9uU3BsaXQgPSBhbm5vdGF0aW9uS2V5LnNwbGl0KFwiQFwiKTtcblx0XHRpZiAoYW5ub3RhdGlvbk9mQW5ub3RhdGlvblNwbGl0Lmxlbmd0aCA+IDIpIHtcblx0XHRcdGN1cnJlbnRPdXRBbm5vdGF0aW9uT2JqZWN0ID0gZ2V0T3JDcmVhdGVBbm5vdGF0aW9uTGlzdChcblx0XHRcdFx0YW5ub3RhdGlvblRhcmdldCArIFwiQFwiICsgYW5ub3RhdGlvbk9mQW5ub3RhdGlvblNwbGl0WzFdLFxuXHRcdFx0XHRhbm5vdGF0aW9uTGlzdHNcblx0XHRcdCk7XG5cdFx0XHRhbm5vdGF0aW9uS2V5ID0gYW5ub3RhdGlvbk9mQW5ub3RhdGlvblNwbGl0WzJdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhbm5vdGF0aW9uS2V5ID0gYW5ub3RhdGlvbk9mQW5ub3RhdGlvblNwbGl0WzFdO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFubm90YXRpb25RdWFsaWZpZXJTcGxpdCA9IGFubm90YXRpb25LZXkuc3BsaXQoXCIjXCIpO1xuXHRcdGNvbnN0IHF1YWxpZmllciA9IGFubm90YXRpb25RdWFsaWZpZXJTcGxpdFsxXTtcblx0XHRhbm5vdGF0aW9uS2V5ID0gYW5ub3RhdGlvblF1YWxpZmllclNwbGl0WzBdO1xuXG5cdFx0Y29uc3QgcGFyc2VkQW5ub3RhdGlvbk9iamVjdDogYW55ID0ge1xuXHRcdFx0dGVybTogYCR7YW5ub3RhdGlvbktleX1gLFxuXHRcdFx0cXVhbGlmaWVyOiBxdWFsaWZpZXJcblx0XHR9O1xuXHRcdGxldCBjdXJyZW50QW5ub3RhdGlvblRhcmdldCA9IGFubm90YXRpb25UYXJnZXQgKyBcIkBcIiArIHBhcnNlZEFubm90YXRpb25PYmplY3QudGVybTtcblx0XHRpZiAocXVhbGlmaWVyKSB7XG5cdFx0XHRjdXJyZW50QW5ub3RhdGlvblRhcmdldCArPSBcIiNcIiArIHF1YWxpZmllcjtcblx0XHR9XG5cdFx0bGV0IGlzQ29sbGVjdGlvbiA9IGZhbHNlO1xuXHRcdGNvbnN0IHR5cGVvZkFubm90YXRpb24gPSB0eXBlb2YgYW5ub3RhdGlvbk9iamVjdDtcblx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdCA9PT0gbnVsbCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJCb29sXCIsIEJvb2w6IGFubm90YXRpb25PYmplY3QgfTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZkFubm90YXRpb24gPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiU3RyaW5nXCIsIFN0cmluZzogYW5ub3RhdGlvbk9iamVjdCB9O1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mQW5ub3RhdGlvbiA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiQm9vbFwiLCBCb29sOiBhbm5vdGF0aW9uT2JqZWN0IH07XG5cdFx0fSBlbHNlIGlmICh0eXBlb2ZBbm5vdGF0aW9uID09PSBcIm51bWJlclwiKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkludFwiLCBJbnQ6IGFubm90YXRpb25PYmplY3QgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJElmICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiSWZcIiwgSWY6IGFubm90YXRpb25PYmplY3QuJElmIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRBbmQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJBbmRcIiwgQW5kOiBhbm5vdGF0aW9uT2JqZWN0LiRBbmQgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJE9yICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiT3JcIiwgT3I6IGFubm90YXRpb25PYmplY3QuJE9yIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROb3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJOb3RcIiwgTm90OiBhbm5vdGF0aW9uT2JqZWN0LiROb3QgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEVxICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiRXFcIiwgRXE6IGFubm90YXRpb25PYmplY3QuJEVxIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiROZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIk5lXCIsIE5lOiBhbm5vdGF0aW9uT2JqZWN0LiROZSB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kR3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJHdFwiLCBHdDogYW5ub3RhdGlvbk9iamVjdC4kR3QgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEdlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiR2VcIiwgR2U6IGFubm90YXRpb25PYmplY3QuJEdlIH07XG5cdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0LiRMdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkx0XCIsIEx0OiBhbm5vdGF0aW9uT2JqZWN0LiRMdCB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kTGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJMZVwiLCBMZTogYW5ub3RhdGlvbk9iamVjdC4kTGUgfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFwcGx5ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7IHR5cGU6IFwiQXBwbHlcIiwgQXBwbHk6IGFubm90YXRpb25PYmplY3QuJEFwcGx5LCBGdW5jdGlvbjogYW5ub3RhdGlvbk9iamVjdC4kRnVuY3Rpb24gfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJFBhdGggIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC52YWx1ZSA9IHsgdHlwZTogXCJQYXRoXCIsIFBhdGg6IGFubm90YXRpb25PYmplY3QuJFBhdGggfTtcblx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHBhcnNlZEFubm90YXRpb25PYmplY3QudmFsdWUgPSB7XG5cdFx0XHRcdHR5cGU6IFwiQW5ub3RhdGlvblBhdGhcIixcblx0XHRcdFx0QW5ub3RhdGlvblBhdGg6IGFubm90YXRpb25PYmplY3QuJEFubm90YXRpb25QYXRoXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRGVjaW1hbCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0geyB0eXBlOiBcIkRlY2ltYWxcIiwgRGVjaW1hbDogcGFyc2VGbG9hdChhbm5vdGF0aW9uT2JqZWN0LiREZWNpbWFsKSB9O1xuXHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnZhbHVlID0ge1xuXHRcdFx0XHR0eXBlOiBcIkVudW1NZW1iZXJcIixcblx0XHRcdFx0RW51bU1lbWJlcjogbWFwTmFtZVRvQWxpYXMoYW5ub3RhdGlvbk9iamVjdC4kRW51bU1lbWJlci5zcGxpdChcIi9cIilbMF0pICsgXCIvXCIgKyBhbm5vdGF0aW9uT2JqZWN0LiRFbnVtTWVtYmVyLnNwbGl0KFwiL1wiKVsxXVxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYW5ub3RhdGlvbk9iamVjdCkpIHtcblx0XHRcdGlzQ29sbGVjdGlvbiA9IHRydWU7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gPSBhbm5vdGF0aW9uT2JqZWN0Lm1hcCgoc3ViQW5ub3RhdGlvbk9iamVjdCwgc3ViQW5ub3RhdGlvbkluZGV4KSA9PlxuXHRcdFx0XHRwYXJzZUFubm90YXRpb25PYmplY3QoXG5cdFx0XHRcdFx0c3ViQW5ub3RhdGlvbk9iamVjdCxcblx0XHRcdFx0XHRjdXJyZW50QW5ub3RhdGlvblRhcmdldCArIFwiL1wiICsgc3ViQW5ub3RhdGlvbkluZGV4LFxuXHRcdFx0XHRcdGFubm90YXRpb25MaXN0cyxcblx0XHRcdFx0XHRvQ2FwYWJpbGl0aWVzXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFByb3BlcnR5UGF0aFwiKSkge1xuXHRcdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJQcm9wZXJ0eVBhdGhcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJFBhdGhcIikpIHtcblx0XHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiUGF0aFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiKSkge1xuXHRcdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRBbm5vdGF0aW9uUGF0aFwiKSkge1xuXHRcdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJBbm5vdGF0aW9uUGF0aFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkVHlwZVwiKSkge1xuXHRcdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJSZWNvcmRcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJElmXCIpKSB7XG5cdFx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIklmXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRPclwiKSkge1xuXHRcdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJPclwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkRXFcIikpIHtcblx0XHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiRXFcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJE5lXCIpKSB7XG5cdFx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIk5lXCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiROb3RcIikpIHtcblx0XHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiTm90XCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRHdFwiKSkge1xuXHRcdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJHdFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkR2VcIikpIHtcblx0XHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiR2VcIjtcblx0XHRcdFx0fSBlbHNlIGlmIChhbm5vdGF0aW9uT2JqZWN0WzBdLmhhc093blByb3BlcnR5KFwiJEx0XCIpKSB7XG5cdFx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkx0XCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvbk9iamVjdFswXS5oYXNPd25Qcm9wZXJ0eShcIiRMZVwiKSkge1xuXHRcdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJMZVwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQW5kXCIpKSB7XG5cdFx0XHRcdFx0KHBhcnNlZEFubm90YXRpb25PYmplY3QuY29sbGVjdGlvbiBhcyBhbnkpLnR5cGUgPSBcIkFuZFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25PYmplY3RbMF0uaGFzT3duUHJvcGVydHkoXCIkQXBwbHlcIikpIHtcblx0XHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiQXBwbHlcIjtcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgYW5ub3RhdGlvbk9iamVjdFswXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHRcdChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LmNvbGxlY3Rpb24gYXMgYW55KS50eXBlID0gXCJSZWNvcmRcIjtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQocGFyc2VkQW5ub3RhdGlvbk9iamVjdC5jb2xsZWN0aW9uIGFzIGFueSkudHlwZSA9IFwiU3RyaW5nXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgcmVjb3JkOiBBbm5vdGF0aW9uUmVjb3JkID0ge1xuXHRcdFx0XHRwcm9wZXJ0eVZhbHVlczogW11cblx0XHRcdH07XG5cdFx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdC4kVHlwZSkge1xuXHRcdFx0XHRjb25zdCB0eXBlVmFsdWUgPSBhbm5vdGF0aW9uT2JqZWN0LiRUeXBlO1xuXHRcdFx0XHRyZWNvcmQudHlwZSA9IGAke3R5cGVWYWx1ZX1gO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcHJvcGVydHlWYWx1ZXM6IGFueVtdID0gW107XG5cdFx0XHRmb3IgKGNvbnN0IHByb3BlcnR5S2V5IGluIGFubm90YXRpb25PYmplY3QpIHtcblx0XHRcdFx0aWYgKHByb3BlcnR5S2V5ICE9PSBcIiRUeXBlXCIgJiYgIXByb3BlcnR5S2V5LnN0YXJ0c1dpdGgoXCJAXCIpKSB7XG5cdFx0XHRcdFx0cHJvcGVydHlWYWx1ZXMucHVzaChcblx0XHRcdFx0XHRcdHBhcnNlUHJvcGVydHlWYWx1ZShcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbk9iamVjdFtwcm9wZXJ0eUtleV0sXG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5S2V5LFxuXHRcdFx0XHRcdFx0XHRjdXJyZW50QW5ub3RhdGlvblRhcmdldCxcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbkxpc3RzLFxuXHRcdFx0XHRcdFx0XHRvQ2FwYWJpbGl0aWVzXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSBlbHNlIGlmIChwcm9wZXJ0eUtleS5zdGFydHNXaXRoKFwiQFwiKSkge1xuXHRcdFx0XHRcdC8vIEFubm90YXRpb24gb2YgcmVjb3JkXG5cdFx0XHRcdFx0Y3JlYXRlQW5ub3RhdGlvbkxpc3RzKFxuXHRcdFx0XHRcdFx0eyBbcHJvcGVydHlLZXldOiBhbm5vdGF0aW9uT2JqZWN0W3Byb3BlcnR5S2V5XSB9LFxuXHRcdFx0XHRcdFx0Y3VycmVudEFubm90YXRpb25UYXJnZXQsXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uTGlzdHMsXG5cdFx0XHRcdFx0XHRvQ2FwYWJpbGl0aWVzXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmVjb3JkLnByb3BlcnR5VmFsdWVzID0gcHJvcGVydHlWYWx1ZXM7XG5cdFx0XHRwYXJzZWRBbm5vdGF0aW9uT2JqZWN0LnJlY29yZCA9IHJlY29yZDtcblx0XHR9XG5cdFx0cGFyc2VkQW5ub3RhdGlvbk9iamVjdC5pc0NvbGxlY3Rpb24gPSBpc0NvbGxlY3Rpb247XG5cdFx0Y3VycmVudE91dEFubm90YXRpb25PYmplY3QuYW5ub3RhdGlvbnMucHVzaChwYXJzZWRBbm5vdGF0aW9uT2JqZWN0KTtcblx0fVxufVxuXG5mdW5jdGlvbiBwcmVwYXJlUHJvcGVydHkocHJvcGVydHlEZWZpbml0aW9uOiBhbnksIGVudGl0eVR5cGVPYmplY3Q6IEVudGl0eVR5cGUgfCBDb21wbGV4VHlwZSwgcHJvcGVydHlOYW1lOiBzdHJpbmcpOiBQcm9wZXJ0eSB7XG5cdGNvbnN0IHByb3BlcnR5T2JqZWN0OiBQcm9wZXJ0eSA9IHtcblx0XHRfdHlwZTogXCJQcm9wZXJ0eVwiLFxuXHRcdG5hbWU6IHByb3BlcnR5TmFtZSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGAke2VudGl0eVR5cGVPYmplY3QuZnVsbHlRdWFsaWZpZWROYW1lfS8ke3Byb3BlcnR5TmFtZX1gLFxuXHRcdHR5cGU6IHByb3BlcnR5RGVmaW5pdGlvbi4kVHlwZSxcblx0XHRtYXhMZW5ndGg6IHByb3BlcnR5RGVmaW5pdGlvbi4kTWF4TGVuZ3RoLFxuXHRcdHByZWNpc2lvbjogcHJvcGVydHlEZWZpbml0aW9uLiRQcmVjaXNpb24sXG5cdFx0c2NhbGU6IHByb3BlcnR5RGVmaW5pdGlvbi4kU2NhbGUsXG5cdFx0bnVsbGFibGU6IHByb3BlcnR5RGVmaW5pdGlvbi4kTnVsbGFibGVcblx0fTtcblx0cmV0dXJuIHByb3BlcnR5T2JqZWN0O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlTmF2aWdhdGlvblByb3BlcnR5KFxuXHRuYXZQcm9wZXJ0eURlZmluaXRpb246IGFueSxcblx0ZW50aXR5VHlwZU9iamVjdDogRW50aXR5VHlwZSB8IENvbXBsZXhUeXBlLFxuXHRuYXZQcm9wZXJ0eU5hbWU6IHN0cmluZ1xuKTogVjROYXZpZ2F0aW9uUHJvcGVydHkge1xuXHRsZXQgcmVmZXJlbnRpYWxDb25zdHJhaW50OiBSZWZlcmVudGlhbENvbnN0cmFpbnRbXSA9IFtdO1xuXHRpZiAobmF2UHJvcGVydHlEZWZpbml0aW9uLiRSZWZlcmVudGlhbENvbnN0cmFpbnQpIHtcblx0XHRyZWZlcmVudGlhbENvbnN0cmFpbnQgPSBPYmplY3Qua2V5cyhuYXZQcm9wZXJ0eURlZmluaXRpb24uJFJlZmVyZW50aWFsQ29uc3RyYWludCkubWFwKHNvdXJjZVByb3BlcnR5TmFtZSA9PiB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRzb3VyY2VUeXBlTmFtZTogZW50aXR5VHlwZU9iamVjdC5uYW1lLFxuXHRcdFx0XHRzb3VyY2VQcm9wZXJ0eTogc291cmNlUHJvcGVydHlOYW1lLFxuXHRcdFx0XHR0YXJnZXRUeXBlTmFtZTogbmF2UHJvcGVydHlEZWZpbml0aW9uLiRUeXBlLFxuXHRcdFx0XHR0YXJnZXRQcm9wZXJ0eTogbmF2UHJvcGVydHlEZWZpbml0aW9uLiRSZWZlcmVudGlhbENvbnN0cmFpbnRbc291cmNlUHJvcGVydHlOYW1lXVxuXHRcdFx0fTtcblx0XHR9KTtcblx0fVxuXHRjb25zdCBuYXZpZ2F0aW9uUHJvcGVydHk6IFY0TmF2aWdhdGlvblByb3BlcnR5ID0ge1xuXHRcdF90eXBlOiBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiLFxuXHRcdG5hbWU6IG5hdlByb3BlcnR5TmFtZSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGAke2VudGl0eVR5cGVPYmplY3QuZnVsbHlRdWFsaWZpZWROYW1lfS8ke25hdlByb3BlcnR5TmFtZX1gLFxuXHRcdHBhcnRuZXI6IG5hdlByb3BlcnR5RGVmaW5pdGlvbi4kUGFydG5lcixcblx0XHRpc0NvbGxlY3Rpb246IG5hdlByb3BlcnR5RGVmaW5pdGlvbi4kaXNDb2xsZWN0aW9uID8gbmF2UHJvcGVydHlEZWZpbml0aW9uLiRpc0NvbGxlY3Rpb24gOiBmYWxzZSxcblx0XHRjb250YWluc1RhcmdldDogbmF2UHJvcGVydHlEZWZpbml0aW9uLiRDb250YWluc1RhcmdldCxcblx0XHR0YXJnZXRUeXBlTmFtZTogbmF2UHJvcGVydHlEZWZpbml0aW9uLiRUeXBlLFxuXHRcdHJlZmVyZW50aWFsQ29uc3RyYWludFxuXHR9O1xuXG5cdHJldHVybiBuYXZpZ2F0aW9uUHJvcGVydHk7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVFbnRpdHlTZXQoZW50aXR5U2V0RGVmaW5pdGlvbjogYW55LCBlbnRpdHlTZXROYW1lOiBzdHJpbmcsIGVudGl0eUNvbnRhaW5lck5hbWU6IHN0cmluZyk6IEVudGl0eVNldCB7XG5cdGNvbnN0IGVudGl0eVNldE9iamVjdDogRW50aXR5U2V0ID0ge1xuXHRcdF90eXBlOiBcIkVudGl0eVNldFwiLFxuXHRcdG5hbWU6IGVudGl0eVNldE5hbWUsXG5cdFx0bmF2aWdhdGlvblByb3BlcnR5QmluZGluZzoge30sXG5cdFx0ZW50aXR5VHlwZU5hbWU6IGVudGl0eVNldERlZmluaXRpb24uJFR5cGUsXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtlbnRpdHlDb250YWluZXJOYW1lfS8ke2VudGl0eVNldE5hbWV9YFxuXHR9O1xuXHRyZXR1cm4gZW50aXR5U2V0T2JqZWN0O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlU2luZ2xldG9uKHNpbmdsZXRvbkRlZmluaXRpb246IGFueSwgc2luZ2xldG9uTmFtZTogc3RyaW5nLCBlbnRpdHlDb250YWluZXJOYW1lOiBzdHJpbmcpOiBTaW5nbGV0b24ge1xuXHRyZXR1cm4ge1xuXHRcdF90eXBlOiBcIlNpbmdsZXRvblwiLFxuXHRcdG5hbWU6IHNpbmdsZXRvbk5hbWUsXG5cdFx0bmF2aWdhdGlvblByb3BlcnR5QmluZGluZzoge30sXG5cdFx0dHlwZU5hbWU6IHNpbmdsZXRvbkRlZmluaXRpb24uJFR5cGUsXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtlbnRpdHlDb250YWluZXJOYW1lfS8ke3NpbmdsZXRvbk5hbWV9YCxcblx0XHRudWxsYWJsZTogdHJ1ZVxuXHR9IGFzIFNpbmdsZXRvbjtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZVR5cGVEZWZpbml0aW9uKHR5cGVEZWZpbml0aW9uOiBhbnksIHR5cGVOYW1lOiBzdHJpbmcsIG5hbWVzcGFjZTogc3RyaW5nKTogVHlwZURlZmluaXRpb24ge1xuXHRjb25zdCB0eXBlT2JqZWN0OiBUeXBlRGVmaW5pdGlvbiA9IHtcblx0XHRfdHlwZTogXCJUeXBlRGVmaW5pdGlvblwiLFxuXHRcdG5hbWU6IHR5cGVOYW1lLnJlcGxhY2UobmFtZXNwYWNlICsgXCIuXCIsIFwiXCIpLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogdHlwZU5hbWUsXG5cdFx0dW5kZXJseWluZ1R5cGU6IHR5cGVEZWZpbml0aW9uLiRVbmRlcmx5aW5nVHlwZVxuXHR9O1xuXHRyZXR1cm4gdHlwZU9iamVjdDtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUNvbXBsZXhUeXBlKGNvbXBsZXhUeXBlRGVmaW5pdGlvbjogYW55LCBjb21wbGV4VHlwZU5hbWU6IHN0cmluZywgbmFtZXNwYWNlOiBzdHJpbmcpOiBDb21wbGV4VHlwZSB7XG5cdGNvbnN0IGNvbXBsZXhUeXBlT2JqZWN0OiBDb21wbGV4VHlwZSA9IHtcblx0XHRfdHlwZTogXCJDb21wbGV4VHlwZVwiLFxuXHRcdG5hbWU6IGNvbXBsZXhUeXBlTmFtZS5yZXBsYWNlKG5hbWVzcGFjZSArIFwiLlwiLCBcIlwiKSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGNvbXBsZXhUeXBlTmFtZSxcblx0XHRwcm9wZXJ0aWVzOiBbXSxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogW11cblx0fTtcblxuXHRjb25zdCBjb21wbGV4VHlwZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhjb21wbGV4VHlwZURlZmluaXRpb24pXG5cdFx0LmZpbHRlcihwcm9wZXJ0eU5hbWVPck5vdCA9PiB7XG5cdFx0XHRpZiAocHJvcGVydHlOYW1lT3JOb3QgIT0gXCIkS2V5XCIgJiYgcHJvcGVydHlOYW1lT3JOb3QgIT0gXCIka2luZFwiKSB7XG5cdFx0XHRcdHJldHVybiBjb21wbGV4VHlwZURlZmluaXRpb25bcHJvcGVydHlOYW1lT3JOb3RdLiRraW5kID09PSBcIlByb3BlcnR5XCI7XG5cdFx0XHR9XG5cdFx0fSlcblx0XHQuc29ydCgoYSwgYikgPT4gKGEgPiBiID8gMSA6IC0xKSlcblx0XHQubWFwKHByb3BlcnR5TmFtZSA9PiB7XG5cdFx0XHRyZXR1cm4gcHJlcGFyZVByb3BlcnR5KGNvbXBsZXhUeXBlRGVmaW5pdGlvbltwcm9wZXJ0eU5hbWVdLCBjb21wbGV4VHlwZU9iamVjdCwgcHJvcGVydHlOYW1lKTtcblx0XHR9KTtcblxuXHRjb21wbGV4VHlwZU9iamVjdC5wcm9wZXJ0aWVzID0gY29tcGxleFR5cGVQcm9wZXJ0aWVzO1xuXHRjb25zdCBjb21wbGV4VHlwZU5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoY29tcGxleFR5cGVEZWZpbml0aW9uKVxuXHRcdC5maWx0ZXIocHJvcGVydHlOYW1lT3JOb3QgPT4ge1xuXHRcdFx0aWYgKHByb3BlcnR5TmFtZU9yTm90ICE9IFwiJEtleVwiICYmIHByb3BlcnR5TmFtZU9yTm90ICE9IFwiJGtpbmRcIikge1xuXHRcdFx0XHRyZXR1cm4gY29tcGxleFR5cGVEZWZpbml0aW9uW3Byb3BlcnR5TmFtZU9yTm90XS4ka2luZCA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIjtcblx0XHRcdH1cblx0XHR9KVxuXHRcdC5zb3J0KChhLCBiKSA9PiAoYSA+IGIgPyAxIDogLTEpKVxuXHRcdC5tYXAobmF2UHJvcGVydHlOYW1lID0+IHtcblx0XHRcdHJldHVybiBwcmVwYXJlTmF2aWdhdGlvblByb3BlcnR5KGNvbXBsZXhUeXBlRGVmaW5pdGlvbltuYXZQcm9wZXJ0eU5hbWVdLCBjb21wbGV4VHlwZU9iamVjdCwgbmF2UHJvcGVydHlOYW1lKTtcblx0XHR9KTtcblx0Y29tcGxleFR5cGVPYmplY3QubmF2aWdhdGlvblByb3BlcnRpZXMgPSBjb21wbGV4VHlwZU5hdmlnYXRpb25Qcm9wZXJ0aWVzO1xuXHRyZXR1cm4gY29tcGxleFR5cGVPYmplY3Q7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVFbnRpdHlLZXlzKGVudGl0eVR5cGVEZWZpbml0aW9uOiBhbnksIG9NZXRhTW9kZWxEYXRhOiBhbnkpOiBhbnkge1xuXHRpZiAoIWVudGl0eVR5cGVEZWZpbml0aW9uLiRLZXkgJiYgZW50aXR5VHlwZURlZmluaXRpb24uJEJhc2VUeXBlKSB7XG5cdFx0cmV0dXJuIHByZXBhcmVFbnRpdHlLZXlzKG9NZXRhTW9kZWxEYXRhW2Ake2VudGl0eVR5cGVEZWZpbml0aW9uLiRCYXNlVHlwZX1gXSwgb01ldGFNb2RlbERhdGEpO1xuXHR9XG5cdHJldHVybiBlbnRpdHlUeXBlRGVmaW5pdGlvbi4kS2V5IHx8IFtdOyAvL2hhbmRsaW5nIG9mIGVudGl0eSB0eXBlcyB3aXRob3V0IGtleSBhcyB3ZWxsIGFzIGJhc2V0eXBlXG59XG5cbmZ1bmN0aW9uIHByZXBhcmVFbnRpdHlUeXBlKGVudGl0eVR5cGVEZWZpbml0aW9uOiBhbnksIGVudGl0eVR5cGVOYW1lOiBzdHJpbmcsIG5hbWVzcGFjZTogc3RyaW5nLCBtZXRhTW9kZWxEYXRhOiBhbnkpOiBFbnRpdHlUeXBlIHtcblx0Y29uc3QgZW50aXR5S2V5czogYW55ID0gcHJlcGFyZUVudGl0eUtleXMoZW50aXR5VHlwZURlZmluaXRpb24sIG1ldGFNb2RlbERhdGEpO1xuXG5cdGNvbnN0IGVudGl0eVR5cGVPYmplY3Q6IEVudGl0eVR5cGUgPSB7XG5cdFx0X3R5cGU6IFwiRW50aXR5VHlwZVwiLFxuXHRcdG5hbWU6IGVudGl0eVR5cGVOYW1lLnJlcGxhY2UobmFtZXNwYWNlICsgXCIuXCIsIFwiXCIpLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogZW50aXR5VHlwZU5hbWUsXG5cdFx0a2V5czogW10sXG5cdFx0ZW50aXR5UHJvcGVydGllczogW10sXG5cdFx0bmF2aWdhdGlvblByb3BlcnRpZXM6IFtdXG5cdH07XG5cblx0Y29uc3QgZW50aXR5UHJvcGVydGllcyA9IE9iamVjdC5rZXlzKGVudGl0eVR5cGVEZWZpbml0aW9uKVxuXHRcdC5maWx0ZXIocHJvcGVydHlOYW1lT3JOb3QgPT4ge1xuXHRcdFx0aWYgKHByb3BlcnR5TmFtZU9yTm90ICE9IFwiJEtleVwiICYmIHByb3BlcnR5TmFtZU9yTm90ICE9IFwiJGtpbmRcIikge1xuXHRcdFx0XHRyZXR1cm4gZW50aXR5VHlwZURlZmluaXRpb25bcHJvcGVydHlOYW1lT3JOb3RdLiRraW5kID09PSBcIlByb3BlcnR5XCI7XG5cdFx0XHR9XG5cdFx0fSlcblx0XHQubWFwKHByb3BlcnR5TmFtZSA9PiB7XG5cdFx0XHRyZXR1cm4gcHJlcGFyZVByb3BlcnR5KGVudGl0eVR5cGVEZWZpbml0aW9uW3Byb3BlcnR5TmFtZV0sIGVudGl0eVR5cGVPYmplY3QsIHByb3BlcnR5TmFtZSk7XG5cdFx0fSk7XG5cblx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhlbnRpdHlUeXBlRGVmaW5pdGlvbilcblx0XHQuZmlsdGVyKHByb3BlcnR5TmFtZU9yTm90ID0+IHtcblx0XHRcdGlmIChwcm9wZXJ0eU5hbWVPck5vdCAhPSBcIiRLZXlcIiAmJiBwcm9wZXJ0eU5hbWVPck5vdCAhPSBcIiRraW5kXCIpIHtcblx0XHRcdFx0cmV0dXJuIGVudGl0eVR5cGVEZWZpbml0aW9uW3Byb3BlcnR5TmFtZU9yTm90XS4ka2luZCA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIjtcblx0XHRcdH1cblx0XHR9KVxuXHRcdC5tYXAobmF2UHJvcGVydHlOYW1lID0+IHtcblx0XHRcdHJldHVybiBwcmVwYXJlTmF2aWdhdGlvblByb3BlcnR5KGVudGl0eVR5cGVEZWZpbml0aW9uW25hdlByb3BlcnR5TmFtZV0sIGVudGl0eVR5cGVPYmplY3QsIG5hdlByb3BlcnR5TmFtZSk7XG5cdFx0fSk7XG5cblx0ZW50aXR5VHlwZU9iamVjdC5rZXlzID0gZW50aXR5S2V5c1xuXHRcdC5tYXAoKGVudGl0eUtleTogc3RyaW5nKSA9PiBlbnRpdHlQcm9wZXJ0aWVzLmZpbmQoKHByb3BlcnR5OiBQcm9wZXJ0eSkgPT4gcHJvcGVydHkubmFtZSA9PT0gZW50aXR5S2V5KSlcblx0XHQuZmlsdGVyKChwcm9wZXJ0eTogUHJvcGVydHkpID0+IHByb3BlcnR5ICE9PSB1bmRlZmluZWQpO1xuXHRlbnRpdHlUeXBlT2JqZWN0LmVudGl0eVByb3BlcnRpZXMgPSBlbnRpdHlQcm9wZXJ0aWVzO1xuXHRlbnRpdHlUeXBlT2JqZWN0Lm5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gbmF2aWdhdGlvblByb3BlcnRpZXM7XG5cblx0cmV0dXJuIGVudGl0eVR5cGVPYmplY3Q7XG59XG5mdW5jdGlvbiBwcmVwYXJlQWN0aW9uKGFjdGlvbk5hbWU6IHN0cmluZywgYWN0aW9uUmF3RGF0YTogTWV0YU1vZGVsQWN0aW9uLCBuYW1lc3BhY2U6IHN0cmluZywgZW50aXR5Q29udGFpbmVyTmFtZTogc3RyaW5nKTogQWN0aW9uIHtcblx0bGV0IGFjdGlvbkVudGl0eVR5cGU6IHN0cmluZyA9IFwiXCI7XG5cdGxldCBhY3Rpb25GUU4gPSBgJHthY3Rpb25OYW1lfWA7XG5cdGNvbnN0IGFjdGlvblNob3J0TmFtZSA9IGFjdGlvbk5hbWUuc3Vic3RyKG5hbWVzcGFjZS5sZW5ndGggKyAxKTtcblx0aWYgKGFjdGlvblJhd0RhdGEuJElzQm91bmQpIHtcblx0XHRjb25zdCBiaW5kaW5nUGFyYW1ldGVyID0gYWN0aW9uUmF3RGF0YS4kUGFyYW1ldGVyWzBdO1xuXHRcdGFjdGlvbkVudGl0eVR5cGUgPSBiaW5kaW5nUGFyYW1ldGVyLiRUeXBlO1xuXHRcdGlmIChiaW5kaW5nUGFyYW1ldGVyLiRpc0NvbGxlY3Rpb24gPT09IHRydWUpIHtcblx0XHRcdGFjdGlvbkZRTiA9IGAke2FjdGlvbk5hbWV9KENvbGxlY3Rpb24oJHthY3Rpb25FbnRpdHlUeXBlfSkpYDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YWN0aW9uRlFOID0gYCR7YWN0aW9uTmFtZX0oJHthY3Rpb25FbnRpdHlUeXBlfSlgO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRhY3Rpb25GUU4gPSBgJHtlbnRpdHlDb250YWluZXJOYW1lfS8ke2FjdGlvblNob3J0TmFtZX1gO1xuXHR9XG5cdGNvbnN0IHBhcmFtZXRlcnMgPSBhY3Rpb25SYXdEYXRhLiRQYXJhbWV0ZXIgfHwgW107XG5cdHJldHVybiB7XG5cdFx0X3R5cGU6IFwiQWN0aW9uXCIsXG5cdFx0bmFtZTogYWN0aW9uU2hvcnROYW1lLFxuXHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogYWN0aW9uRlFOLFxuXHRcdGlzQm91bmQ6IGFjdGlvblJhd0RhdGEuJElzQm91bmQsXG5cdFx0aXNGdW5jdGlvbjogZmFsc2UsXG5cdFx0c291cmNlVHlwZTogYWN0aW9uRW50aXR5VHlwZSxcblx0XHRyZXR1cm5UeXBlOiBhY3Rpb25SYXdEYXRhLiRSZXR1cm5UeXBlID8gYWN0aW9uUmF3RGF0YS4kUmV0dXJuVHlwZS4kVHlwZSA6IFwiXCIsXG5cdFx0cGFyYW1ldGVyczogcGFyYW1ldGVycy5tYXAocGFyYW0gPT4ge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0X3R5cGU6IFwiQWN0aW9uUGFyYW1ldGVyXCIsXG5cdFx0XHRcdGlzRW50aXR5U2V0OiBwYXJhbS4kVHlwZSA9PT0gYWN0aW9uUmF3RGF0YS4kRW50aXR5U2V0UGF0aCxcblx0XHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHthY3Rpb25GUU59LyR7cGFyYW0uJE5hbWV9YCxcblx0XHRcdFx0dHlwZTogcGFyYW0uJFR5cGVcblx0XHRcdFx0Ly8gVE9ETyBtaXNzaW5nIHByb3BlcnRpZXMgP1xuXHRcdFx0fTtcblx0XHR9KVxuXHR9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVFbnRpdHlUeXBlcyhcblx0b01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsXG5cdG9DYXBhYmlsaXRpZXM6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzID0gRGVmYXVsdEVudmlyb25tZW50Q2FwYWJpbGl0aWVzXG4pOiBQYXJzZXJPdXRwdXQge1xuXHRjb25zdCBvTWV0YU1vZGVsRGF0YSA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KFwiLyRcIik7XG5cdGNvbnN0IGFubm90YXRpb25MaXN0czogUmVjb3JkPHN0cmluZywgQW5ub3RhdGlvbkxpc3Q+ID0ge307XG5cdGNvbnN0IGVudGl0eVR5cGVzOiBFbnRpdHlUeXBlW10gPSBbXTtcblx0Y29uc3QgZW50aXR5U2V0czogRW50aXR5U2V0W10gPSBbXTtcblx0Y29uc3Qgc2luZ2xldG9uczogU2luZ2xldG9uW10gPSBbXTtcblx0Y29uc3QgY29tcGxleFR5cGVzOiBDb21wbGV4VHlwZVtdID0gW107XG5cdGNvbnN0IHR5cGVEZWZpbml0aW9uczogVHlwZURlZmluaXRpb25bXSA9IFtdO1xuXHRjb25zdCBlbnRpdHlDb250YWluZXJOYW1lID0gb01ldGFNb2RlbERhdGEuJEVudGl0eUNvbnRhaW5lcjtcblx0bGV0IG5hbWVzcGFjZSA9IFwiXCI7XG5cdGNvbnN0IHNjaGVtYUtleXMgPSBPYmplY3Qua2V5cyhvTWV0YU1vZGVsRGF0YSkuZmlsdGVyKG1ldGFtb2RlbEtleSA9PiBvTWV0YU1vZGVsRGF0YVttZXRhbW9kZWxLZXldLiRraW5kID09PSBcIlNjaGVtYVwiKTtcblx0aWYgKHNjaGVtYUtleXMgJiYgc2NoZW1hS2V5cy5sZW5ndGggPiAwKSB7XG5cdFx0bmFtZXNwYWNlID0gc2NoZW1hS2V5c1swXS5zdWJzdHIoMCwgc2NoZW1hS2V5c1swXS5sZW5ndGggLSAxKTtcblx0fSBlbHNlIGlmIChlbnRpdHlUeXBlcyAmJiBlbnRpdHlUeXBlcy5sZW5ndGgpIHtcblx0XHRuYW1lc3BhY2UgPSBlbnRpdHlUeXBlc1swXS5mdWxseVF1YWxpZmllZE5hbWUucmVwbGFjZShlbnRpdHlUeXBlc1swXS5uYW1lLCBcIlwiKTtcblx0XHRuYW1lc3BhY2UgPSBuYW1lc3BhY2Uuc3Vic3RyKDAsIG5hbWVzcGFjZS5sZW5ndGggLSAxKTtcblx0fVxuXHRPYmplY3Qua2V5cyhvTWV0YU1vZGVsRGF0YSkuZm9yRWFjaChzT2JqZWN0TmFtZSA9PiB7XG5cdFx0aWYgKHNPYmplY3ROYW1lICE9PSBcIiRraW5kXCIpIHtcblx0XHRcdHN3aXRjaCAob01ldGFNb2RlbERhdGFbc09iamVjdE5hbWVdLiRraW5kKSB7XG5cdFx0XHRcdGNhc2UgXCJFbnRpdHlUeXBlXCI6XG5cdFx0XHRcdFx0Y29uc3QgZW50aXR5VHlwZSA9IHByZXBhcmVFbnRpdHlUeXBlKG9NZXRhTW9kZWxEYXRhW3NPYmplY3ROYW1lXSwgc09iamVjdE5hbWUsIG5hbWVzcGFjZSwgb01ldGFNb2RlbERhdGEpO1xuXHRcdFx0XHRcdC8vIENoZWNrIGlmIHRoZXJlIGFyZSBmaWx0ZXIgZmFjZXRzIGRlZmluZWQgZm9yIHRoZSBlbnRpdHlUeXBlIGFuZCBpZiB5ZXMsIGNoZWNrIGlmIGFsbCBvZiB0aGVtIGhhdmUgYW4gSURcblx0XHRcdFx0XHQvLyBUaGUgSUQgaXMgb3B0aW9uYWwsIGJ1dCBpdCBpcyBpbnRlcm5hbGx5IHRha2VuIGZvciBncm91cGluZyBmaWx0ZXIgZmllbGRzIGFuZCBpZiBpdCdzIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0Ly8gYSBmYWxsYmFjayBJRCBuZWVkcyB0byBiZSBnZW5lcmF0ZWQgaGVyZS5cblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRvTWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnNbZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWVdICYmXG5cdFx0XHRcdFx0XHRvTWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnNbZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWVdW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZpbHRlckZhY2V0c1wiXVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0b01ldGFNb2RlbERhdGEuJEFubm90YXRpb25zW2VudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lXVtcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GaWx0ZXJGYWNldHNcIl0uZm9yRWFjaChcblx0XHRcdFx0XHRcdFx0KGZpbHRlckZhY2V0QW5ub3RhdGlvbjogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0ZmlsdGVyRmFjZXRBbm5vdGF0aW9uLklEID0gZmlsdGVyRmFjZXRBbm5vdGF0aW9uLklEIHx8IGdlbmVyYXRlKFt7IEZhY2V0OiBmaWx0ZXJGYWNldEFubm90YXRpb24gfV0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbnRpdHlUeXBlLmVudGl0eVByb3BlcnRpZXMuZm9yRWFjaChlbnRpdHlQcm9wZXJ0eSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoIW9NZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1tlbnRpdHlQcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdKSB7XG5cdFx0XHRcdFx0XHRcdG9NZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1tlbnRpdHlQcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdID0ge307XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdCFvTWV0YU1vZGVsRGF0YS4kQW5ub3RhdGlvbnNbZW50aXR5UHJvcGVydHkuZnVsbHlRdWFsaWZpZWROYW1lXVtcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGREZWZhdWx0XCJdXG5cdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0b01ldGFNb2RlbERhdGEuJEFubm90YXRpb25zW2VudGl0eVByb3BlcnR5LmZ1bGx5UXVhbGlmaWVkTmFtZV1bXG5cdFx0XHRcdFx0XHRcdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRGVmYXVsdFwiXG5cdFx0XHRcdFx0XHRcdF0gPSB7XG5cdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkXCIsXG5cdFx0XHRcdFx0XHRcdFx0VmFsdWU6IHsgJFBhdGg6IGVudGl0eVByb3BlcnR5Lm5hbWUgfVxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVudGl0eVR5cGVzLnB1c2goZW50aXR5VHlwZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgXCJDb21wbGV4VHlwZVwiOlxuXHRcdFx0XHRcdGNvbnN0IGNvbXBsZXhUeXBlID0gcHJlcGFyZUNvbXBsZXhUeXBlKG9NZXRhTW9kZWxEYXRhW3NPYmplY3ROYW1lXSwgc09iamVjdE5hbWUsIG5hbWVzcGFjZSk7XG5cdFx0XHRcdFx0Y29tcGxleFR5cGVzLnB1c2goY29tcGxleFR5cGUpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFwiVHlwZURlZmluaXRpb25cIjpcblx0XHRcdFx0XHRjb25zdCB0eXBlRGVmaW5pdGlvbiA9IHByZXBhcmVUeXBlRGVmaW5pdGlvbihvTWV0YU1vZGVsRGF0YVtzT2JqZWN0TmFtZV0sIHNPYmplY3ROYW1lLCBuYW1lc3BhY2UpO1xuXHRcdFx0XHRcdHR5cGVEZWZpbml0aW9ucy5wdXNoKHR5cGVEZWZpbml0aW9uKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXG5cdGNvbnN0IG9FbnRpdHlDb250YWluZXIgPSBvTWV0YU1vZGVsRGF0YVtlbnRpdHlDb250YWluZXJOYW1lXTtcblx0T2JqZWN0LmtleXMob0VudGl0eUNvbnRhaW5lcikuZm9yRWFjaChzT2JqZWN0TmFtZSA9PiB7XG5cdFx0aWYgKHNPYmplY3ROYW1lICE9PSBcIiRraW5kXCIpIHtcblx0XHRcdHN3aXRjaCAob0VudGl0eUNvbnRhaW5lcltzT2JqZWN0TmFtZV0uJGtpbmQpIHtcblx0XHRcdFx0Y2FzZSBcIkVudGl0eVNldFwiOlxuXHRcdFx0XHRcdGNvbnN0IGVudGl0eVNldCA9IHByZXBhcmVFbnRpdHlTZXQob0VudGl0eUNvbnRhaW5lcltzT2JqZWN0TmFtZV0sIHNPYmplY3ROYW1lLCBlbnRpdHlDb250YWluZXJOYW1lKTtcblx0XHRcdFx0XHRlbnRpdHlTZXRzLnB1c2goZW50aXR5U2V0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBcIlNpbmdsZXRvblwiOlxuXHRcdFx0XHRcdGNvbnN0IHNpbmdsZXRvbiA9IHByZXBhcmVTaW5nbGV0b24ob0VudGl0eUNvbnRhaW5lcltzT2JqZWN0TmFtZV0sIHNPYmplY3ROYW1lLCBlbnRpdHlDb250YWluZXJOYW1lKTtcblx0XHRcdFx0XHRzaW5nbGV0b25zLnB1c2goc2luZ2xldG9uKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXG5cdGxldCBlbnRpdHlDb250YWluZXI6IEVudGl0eUNvbnRhaW5lciA9IHt9O1xuXHRpZiAoZW50aXR5Q29udGFpbmVyTmFtZSkge1xuXHRcdGVudGl0eUNvbnRhaW5lciA9IHtcblx0XHRcdG5hbWU6IGVudGl0eUNvbnRhaW5lck5hbWUucmVwbGFjZShuYW1lc3BhY2UgKyBcIi5cIiwgXCJcIiksXG5cdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGVudGl0eUNvbnRhaW5lck5hbWVcblx0XHR9O1xuXHR9XG5cdGVudGl0eVNldHMuZm9yRWFjaChlbnRpdHlTZXQgPT4ge1xuXHRcdGNvbnN0IG5hdlByb3BlcnR5QmluZGluZ3MgPSBvRW50aXR5Q29udGFpbmVyW2VudGl0eVNldC5uYW1lXS4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZztcblx0XHRpZiAobmF2UHJvcGVydHlCaW5kaW5ncykge1xuXHRcdFx0T2JqZWN0LmtleXMobmF2UHJvcGVydHlCaW5kaW5ncykuZm9yRWFjaChuYXZQcm9wTmFtZSA9PiB7XG5cdFx0XHRcdGNvbnN0IHRhcmdldEVudGl0eVNldCA9IGVudGl0eVNldHMuZmluZChlbnRpdHlTZXROYW1lID0+IGVudGl0eVNldE5hbWUubmFtZSA9PT0gbmF2UHJvcGVydHlCaW5kaW5nc1tuYXZQcm9wTmFtZV0pO1xuXHRcdFx0XHRpZiAodGFyZ2V0RW50aXR5U2V0KSB7XG5cdFx0XHRcdFx0ZW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbbmF2UHJvcE5hbWVdID0gdGFyZ2V0RW50aXR5U2V0O1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0pO1xuXG5cdGNvbnN0IGFjdGlvbnM6IEFjdGlvbltdID0gT2JqZWN0LmtleXMob01ldGFNb2RlbERhdGEpXG5cdFx0LmZpbHRlcihrZXkgPT4ge1xuXHRcdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkob01ldGFNb2RlbERhdGFba2V5XSkgJiYgb01ldGFNb2RlbERhdGFba2V5XS5sZW5ndGggPiAwICYmIG9NZXRhTW9kZWxEYXRhW2tleV1bMF0uJGtpbmQgPT09IFwiQWN0aW9uXCI7XG5cdFx0fSlcblx0XHQucmVkdWNlKChvdXRBY3Rpb25zOiBBY3Rpb25bXSwgYWN0aW9uTmFtZSkgPT4ge1xuXHRcdFx0Y29uc3QgYWN0aW9ucyA9IG9NZXRhTW9kZWxEYXRhW2FjdGlvbk5hbWVdO1xuXHRcdFx0YWN0aW9ucy5mb3JFYWNoKChhY3Rpb246IE1ldGFNb2RlbEFjdGlvbikgPT4ge1xuXHRcdFx0XHRvdXRBY3Rpb25zLnB1c2gocHJlcGFyZUFjdGlvbihhY3Rpb25OYW1lLCBhY3Rpb24sIG5hbWVzcGFjZSwgZW50aXR5Q29udGFpbmVyTmFtZSkpO1xuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gb3V0QWN0aW9ucztcblx0XHR9LCBbXSk7XG5cblx0Zm9yIChjb25zdCB0YXJnZXQgaW4gb01ldGFNb2RlbERhdGEuJEFubm90YXRpb25zKSB7XG5cdFx0Y3JlYXRlQW5ub3RhdGlvbkxpc3RzKG9NZXRhTW9kZWxEYXRhLiRBbm5vdGF0aW9uc1t0YXJnZXRdLCB0YXJnZXQsIGFubm90YXRpb25MaXN0cywgb0NhcGFiaWxpdGllcyk7XG5cdH1cblxuXHQvLyBTb3J0IGJ5IHRhcmdldCBsZW5ndGhcblx0Y29uc3Qgb3V0QW5ub3RhdGlvbkxpc3RzID0gT2JqZWN0LmtleXMoYW5ub3RhdGlvbkxpc3RzKVxuXHRcdC5zb3J0KChhLCBiKSA9PiAoYS5sZW5ndGggPj0gYi5sZW5ndGggPyAxIDogLTEpKVxuXHRcdC5tYXAoc0Fubm90YXRpb25OYW1lID0+IGFubm90YXRpb25MaXN0c1tzQW5ub3RhdGlvbk5hbWVdKTtcblx0Y29uc3QgcmVmZXJlbmNlczogUmVmZXJlbmNlW10gPSBbXTtcblx0cmV0dXJuIHtcblx0XHRpZGVudGlmaWNhdGlvbjogXCJtZXRhbW9kZWxSZXN1bHRcIixcblx0XHR2ZXJzaW9uOiBcIjQuMFwiLFxuXHRcdHNjaGVtYToge1xuXHRcdFx0ZW50aXR5Q29udGFpbmVyLFxuXHRcdFx0ZW50aXR5U2V0cyxcblx0XHRcdGVudGl0eVR5cGVzLFxuXHRcdFx0Y29tcGxleFR5cGVzLFxuXHRcdFx0dHlwZURlZmluaXRpb25zLFxuXHRcdFx0c2luZ2xldG9ucyxcblx0XHRcdGFzc29jaWF0aW9uczogW10sXG5cdFx0XHRhc3NvY2lhdGlvblNldHM6IFtdLFxuXHRcdFx0YWN0aW9ucyxcblx0XHRcdG5hbWVzcGFjZSxcblx0XHRcdGFubm90YXRpb25zOiB7XG5cdFx0XHRcdFwibWV0YW1vZGVsUmVzdWx0XCI6IG91dEFubm90YXRpb25MaXN0c1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0cmVmZXJlbmNlczogcmVmZXJlbmNlc1xuXHR9O1xufVxuXG5jb25zdCBtTWV0YU1vZGVsTWFwOiBSZWNvcmQ8c3RyaW5nLCBQYXJzZXJPdXRwdXQ+ID0ge307XG5cbi8qKlxuICogQ29udmVydCB0aGUgT0RhdGFNZXRhTW9kZWwgaW50byBhbm90aGVyIGZvcm1hdCB0aGF0IGFsbG93IGZvciBlYXN5IG1hbmlwdWxhdGlvbiBvZiB0aGUgYW5ub3RhdGlvbnMuXG4gKlxuICogQHBhcmFtIHtPRGF0YU1ldGFNb2RlbH0gb01ldGFNb2RlbCBUaGUgY3VycmVudCBvRGF0YU1ldGFNb2RlbFxuICogQHBhcmFtIG9DYXBhYmlsaXRpZXMgVGhlIGN1cnJlbnQgY2FwYWJpbGl0aWVzXG4gKiBAcmV0dXJucyB7Q29udmVydGVyT3V0cHV0fSBBbiBvYmplY3QgY29udGFpbmluZyBvYmplY3QgbGlrZSBhbm5vdGF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VHlwZXMob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsIG9DYXBhYmlsaXRpZXM/OiBFbnZpcm9ubWVudENhcGFiaWxpdGllcyk6IENvbnZlcnRlck91dHB1dCB7XG5cdGNvbnN0IHNNZXRhTW9kZWxJZCA9IChvTWV0YU1vZGVsIGFzIGFueSkuaWQ7XG5cdGlmICghbU1ldGFNb2RlbE1hcC5oYXNPd25Qcm9wZXJ0eShzTWV0YU1vZGVsSWQpKSB7XG5cdFx0Y29uc3QgcGFyc2VkT3V0cHV0ID0gcHJlcGFyZUVudGl0eVR5cGVzKG9NZXRhTW9kZWwsIG9DYXBhYmlsaXRpZXMpO1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAob0NhcGFiaWxpdGllcyAmJiBvQ2FwYWJpbGl0aWVzLlNpdHVhdGlvbnMpIHtcblx0XHRcdFx0Ly8gT25seSBFeHBlcmltZW50YWwgRmVhdHVyZSFcblx0XHRcdFx0bU1ldGFNb2RlbE1hcFtzTWV0YU1vZGVsSWRdID0gYWRkU3ludGhldGljQW5ub3RhdGlvbnMoQW5ub3RhdGlvbkNvbnZlcnRlci5jb252ZXJ0VHlwZXMocGFyc2VkT3V0cHV0KSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtTWV0YU1vZGVsTWFwW3NNZXRhTW9kZWxJZF0gPSBBbm5vdGF0aW9uQ29udmVydGVyLmNvbnZlcnRUeXBlcyhwYXJzZWRPdXRwdXQpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKG9FcnJvcikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKG9FcnJvciBhcyBhbnkpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gKG1NZXRhTW9kZWxNYXBbc01ldGFNb2RlbElkXSBhcyBhbnkpIGFzIENvbnZlcnRlck91dHB1dDtcbn1cblxuZnVuY3Rpb24gYWRkU3ludGhldGljQW5ub3RhdGlvbnMobWV0YU1vZGVsOiBQYXJzZXJPdXRwdXQpIHtcblx0Ly8gW1NpdHVhdGlvbnMgUE9DXSBEZXRlcm1pbmUgbWl4ZWQtaW4gc2l0dWF0aW9ucyBuYXZpZ2F0aW9uIHByb3BlcnR5LlxuXHQvLyBUaGlzIHdpbGwgcHJvYmFibHkgaGFwcGVuIGVpdGhlclxuXHQvLyAgLSBieSBhIGZpeGVkIG5hdmlnYXRpb24gcHJvcGVydHkgbmFtZSAoXCJTQVBfX1NpdHVhdGlvblwiKSwgb3Jcblx0Ly8gIC0gYnkgYW4gZW50aXR5IHR5cGUgYW5ub3RhdGlvbiB0aGF0IGRlY2xhcmVzIHRoZSBuYXZpZ2F0aW9uIHByb3BlcnR5IHRvIHVzZSAoc2ltaWxhciB0byBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTWVzc2FnZXMpXG5cdC8vXG5cdC8vIEZvciBub3csIHdlIGFkZCBhbiAnaW52ZW50ZWQnIGFubm90YXRpb24gXCJjb20uc2FwLnZvY2FidWxhcmllcy5GaW9yaUVsZW1lbnRzLnYxLlNpdHVhdGlvbnNcIiBjb25zaXN0aW5nIG9mIGEgcGF0aCB0byB0aGUgc2l0dWF0aW9ucyBuYXZpZ2F0aW9uIHByb3BlcnR5XG5cdCgobWV0YU1vZGVsIGFzIGFueSkgYXMgQ29udmVydGVyT3V0cHV0KS5lbnRpdHlUeXBlcy5mb3JFYWNoKGVudGl0eVR5cGUgPT4ge1xuXHRcdGNvbnN0IHNpdHVhdGlvbnNOYXZQcm9wID0gZW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKFxuXHRcdFx0bmF2UHJvcCA9PiBuYXZQcm9wLm5hbWUgPT09IFwiU0FQX19TaXR1YXRpb25cIiB8fCBuYXZQcm9wLm5hbWUgPT09IFwiX1NBUF9fU2l0dWF0aW9uXCJcblx0XHQpO1xuXG5cdFx0aWYgKHNpdHVhdGlvbnNOYXZQcm9wKSB7XG5cdFx0XHQoZW50aXR5VHlwZS5hbm5vdGF0aW9ucyBhcyBhbnkpLkZFID0ge1xuXHRcdFx0XHRTaXR1YXRpb25zOiB7XG5cdFx0XHRcdFx0dGVybTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5GaW9yaUVsZW1lbnRzLnYxLlNpdHVhdGlvbnNcIixcblx0XHRcdFx0XHR0eXBlOiBcIlBhdGhcIixcblx0XHRcdFx0XHRwYXRoOiBzaXR1YXRpb25zTmF2UHJvcC5uYW1lLFxuXHRcdFx0XHRcdCR0YXJnZXQ6IHNpdHVhdGlvbnNOYXZQcm9wXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1ldGFNb2RlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZU1vZGVsQ2FjaGVEYXRhKG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsKSB7XG5cdGRlbGV0ZSBtTWV0YU1vZGVsTWFwWyhvTWV0YU1vZGVsIGFzIGFueSkuaWRdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydE1ldGFNb2RlbENvbnRleHQob01ldGFNb2RlbENvbnRleHQ6IENvbnRleHQsIGJJbmNsdWRlVmlzaXRlZE9iamVjdHM6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XG5cdGNvbnN0IG9Db252ZXJ0ZXJPdXRwdXQgPSBjb252ZXJ0VHlwZXMob01ldGFNb2RlbENvbnRleHQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCk7XG5cdGNvbnN0IHNQYXRoID0gb01ldGFNb2RlbENvbnRleHQuZ2V0UGF0aCgpO1xuXG5cdGNvbnN0IGFQYXRoU3BsaXQgPSBzUGF0aC5zcGxpdChcIi9cIik7XG5cdGxldCB0YXJnZXRFbnRpdHlTZXQ6IF9FbnRpdHlTZXQgfCBfU2luZ2xldG9uID0gb0NvbnZlcnRlck91dHB1dC5lbnRpdHlTZXRzLmZpbmQoXG5cdFx0ZW50aXR5U2V0ID0+IGVudGl0eVNldC5uYW1lID09PSBhUGF0aFNwbGl0WzFdXG5cdCkgYXMgX0VudGl0eVNldDtcblx0aWYgKCF0YXJnZXRFbnRpdHlTZXQpIHtcblx0XHR0YXJnZXRFbnRpdHlTZXQgPSBvQ29udmVydGVyT3V0cHV0LnNpbmdsZXRvbnMuZmluZChzaW5nbGV0b24gPT4gc2luZ2xldG9uLm5hbWUgPT09IGFQYXRoU3BsaXRbMV0pIGFzIF9TaW5nbGV0b247XG5cdH1cblx0bGV0IHJlbGF0aXZlUGF0aCA9IGFQYXRoU3BsaXQuc2xpY2UoMikuam9pbihcIi9cIik7XG5cblx0Y29uc3QgbG9jYWxPYmplY3RzOiBhbnlbXSA9IFt0YXJnZXRFbnRpdHlTZXRdO1xuXHR3aGlsZSAocmVsYXRpdmVQYXRoICYmIHJlbGF0aXZlUGF0aC5sZW5ndGggPiAwICYmIHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIikpIHtcblx0XHRsZXQgcmVsYXRpdmVTcGxpdCA9IHJlbGF0aXZlUGF0aC5zcGxpdChcIi9cIik7XG5cdFx0bGV0IGlkeCA9IDA7XG5cdFx0bGV0IGN1cnJlbnRFbnRpdHlTZXQsIHNOYXZQcm9wVG9DaGVjaztcblxuXHRcdHJlbGF0aXZlU3BsaXQgPSByZWxhdGl2ZVNwbGl0LnNsaWNlKDEpOyAvLyBSZW1vdmluZyBcIiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCJcblx0XHR3aGlsZSAoIWN1cnJlbnRFbnRpdHlTZXQgJiYgcmVsYXRpdmVTcGxpdC5sZW5ndGggPiBpZHggJiYgcmVsYXRpdmVTcGxpdFtpZHhdICE9PSBcIiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCIpIHtcblx0XHRcdC8vIEZpbmRpbmcgdGhlIGNvcnJlY3QgZW50aXR5U2V0IGZvciB0aGUgbmF2aWdhaXRvbiBwcm9wZXJ0eSBiaW5kaW5nIGV4YW1wbGU6IFwiU2V0L19TYWxlc09yZGVyXCJcblx0XHRcdHNOYXZQcm9wVG9DaGVjayA9IHJlbGF0aXZlU3BsaXQuc2xpY2UoMCwgaWR4ICsgMSkuam9pbihcIi9cIik7XG5cdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gdGFyZ2V0RW50aXR5U2V0ICYmIHRhcmdldEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW3NOYXZQcm9wVG9DaGVja107XG5cdFx0XHRpZHgrKztcblx0XHR9XG5cdFx0aWYgKCFjdXJyZW50RW50aXR5U2V0KSB7XG5cdFx0XHQvLyBGYWxsIGJhY2sgdG8gU2luZ2xlIG5hdiBwcm9wIGlmIGVudGl0eVNldCBpcyBub3QgZm91bmQuXG5cdFx0XHRzTmF2UHJvcFRvQ2hlY2sgPSByZWxhdGl2ZVNwbGl0WzBdO1xuXHRcdH1cblx0XHRjb25zdCBhTmF2UHJvcHMgPSBzTmF2UHJvcFRvQ2hlY2s/LnNwbGl0KFwiL1wiKSB8fCBbXTtcblx0XHRsZXQgdGFyZ2V0RW50aXR5VHlwZSA9IHRhcmdldEVudGl0eVNldCAmJiB0YXJnZXRFbnRpdHlTZXQuZW50aXR5VHlwZTtcblx0XHRmb3IgKGNvbnN0IHNOYXZQcm9wIG9mIGFOYXZQcm9wcykge1xuXHRcdFx0Ly8gUHVzaGluZyBhbGwgbmF2IHByb3BzIHRvIHRoZSB2aXNpdGVkIG9iamVjdHMuIGV4YW1wbGU6IFwiU2V0XCIsIFwiX1NhbGVzT3JkZXJcIiBmb3IgXCJTZXQvX1NhbGVzT3JkZXJcIihpbiBOYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKVxuXHRcdFx0Y29uc3QgdGFyZ2V0TmF2UHJvcCA9IHRhcmdldEVudGl0eVR5cGUgJiYgdGFyZ2V0RW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKG5hdlByb3AgPT4gbmF2UHJvcC5uYW1lID09PSBzTmF2UHJvcCk7XG5cdFx0XHRpZiAodGFyZ2V0TmF2UHJvcCkge1xuXHRcdFx0XHRsb2NhbE9iamVjdHMucHVzaCh0YXJnZXROYXZQcm9wKTtcblx0XHRcdFx0dGFyZ2V0RW50aXR5VHlwZSA9IHRhcmdldE5hdlByb3AudGFyZ2V0VHlwZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR0YXJnZXRFbnRpdHlTZXQgPVxuXHRcdFx0KHRhcmdldEVudGl0eVNldCAmJiBjdXJyZW50RW50aXR5U2V0KSB8fCAodGFyZ2V0RW50aXR5U2V0ICYmIHRhcmdldEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW3JlbGF0aXZlU3BsaXRbMF1dKTtcblx0XHRpZiAodGFyZ2V0RW50aXR5U2V0KSB7XG5cdFx0XHQvLyBQdXNoaW5nIHRoZSB0YXJnZXQgZW50aXR5U2V0IHRvIHZpc2l0ZWQgb2JqZWN0c1xuXHRcdFx0bG9jYWxPYmplY3RzLnB1c2godGFyZ2V0RW50aXR5U2V0KTtcblx0XHR9XG5cdFx0Ly8gUmUtY2FsY3VsYXRpbmcgdGhlIHJlbGF0aXZlIHBhdGhcblx0XHQvLyBBcyBlYWNoIG5hdmlnYXRpb24gbmFtZSBpcyBlbmNsb3NlZCBiZXR3ZWVuICckTmF2aWdhdGlvblByb3BlcnR5QmluZGluZycgYW5kICckJyAodG8gYmUgYWJsZSB0byBhY2Nlc3MgdGhlIGVudGl0eXNldCBlYXNpbHkgaW4gdGhlIG1ldGFtb2RlbClcblx0XHQvLyB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgY2xvc2luZyAnJCcgdG8gYmUgYWJsZSB0byBzd2l0Y2ggdG8gdGhlIG5leHQgbmF2aWdhdGlvblxuXHRcdHJlbGF0aXZlU3BsaXQgPSByZWxhdGl2ZVNwbGl0LnNsaWNlKGFOYXZQcm9wcy5sZW5ndGggfHwgMSk7XG5cdFx0aWYgKHJlbGF0aXZlU3BsaXQubGVuZ3RoICYmIHJlbGF0aXZlU3BsaXRbMF0gPT09IFwiJFwiKSB7XG5cdFx0XHRyZWxhdGl2ZVNwbGl0LnNoaWZ0KCk7XG5cdFx0fVxuXHRcdHJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlU3BsaXQuam9pbihcIi9cIik7XG5cdH1cblx0aWYgKHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiJFR5cGVcIikpIHtcblx0XHQvLyBXZSdyZSBhbnl3YXkgZ29pbmcgdG8gbG9vayBvbiB0aGUgZW50aXR5VHlwZS4uLlxuXHRcdHJlbGF0aXZlUGF0aCA9IGFQYXRoU3BsaXQuc2xpY2UoMykuam9pbihcIi9cIik7XG5cdH1cblx0aWYgKHRhcmdldEVudGl0eVNldCAmJiByZWxhdGl2ZVBhdGgubGVuZ3RoKSB7XG5cdFx0Y29uc3Qgb1RhcmdldCA9IHRhcmdldEVudGl0eVNldC5lbnRpdHlUeXBlLnJlc29sdmVQYXRoKHJlbGF0aXZlUGF0aCwgYkluY2x1ZGVWaXNpdGVkT2JqZWN0cyk7XG5cdFx0aWYgKG9UYXJnZXQpIHtcblx0XHRcdGlmIChiSW5jbHVkZVZpc2l0ZWRPYmplY3RzKSB7XG5cdFx0XHRcdG9UYXJnZXQudmlzaXRlZE9iamVjdHMgPSBsb2NhbE9iamVjdHMuY29uY2F0KG9UYXJnZXQudmlzaXRlZE9iamVjdHMpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAodGFyZ2V0RW50aXR5U2V0LmVudGl0eVR5cGUgJiYgdGFyZ2V0RW50aXR5U2V0LmVudGl0eVR5cGUuYWN0aW9ucykge1xuXHRcdFx0Ly8gaWYgdGFyZ2V0IGlzIGFuIGFjdGlvbiBvciBhbiBhY3Rpb24gcGFyYW1ldGVyXG5cdFx0XHRjb25zdCBhY3Rpb25zID0gdGFyZ2V0RW50aXR5U2V0LmVudGl0eVR5cGUgJiYgdGFyZ2V0RW50aXR5U2V0LmVudGl0eVR5cGUuYWN0aW9ucztcblx0XHRcdGNvbnN0IHJlbGF0aXZlU3BsaXQgPSByZWxhdGl2ZVBhdGguc3BsaXQoXCIvXCIpO1xuXHRcdFx0aWYgKGFjdGlvbnNbcmVsYXRpdmVTcGxpdFswXV0pIHtcblx0XHRcdFx0Y29uc3QgYWN0aW9uID0gYWN0aW9uc1tyZWxhdGl2ZVNwbGl0WzBdXTtcblx0XHRcdFx0aWYgKHJlbGF0aXZlU3BsaXRbMV0gJiYgYWN0aW9uLnBhcmFtZXRlcnMpIHtcblx0XHRcdFx0XHRjb25zdCBwYXJhbWV0ZXJOYW1lID0gcmVsYXRpdmVTcGxpdFsxXTtcblx0XHRcdFx0XHRjb25zdCB0YXJnZXRQYXJhbWV0ZXIgPSBhY3Rpb24ucGFyYW1ldGVycy5maW5kKHBhcmFtZXRlciA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcGFyYW1ldGVyLmZ1bGx5UXVhbGlmaWVkTmFtZS5lbmRzV2l0aChcIi9cIiArIHBhcmFtZXRlck5hbWUpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHJldHVybiB0YXJnZXRQYXJhbWV0ZXI7XG5cdFx0XHRcdH0gZWxzZSBpZiAocmVsYXRpdmVQYXRoLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRcdHJldHVybiBhY3Rpb247XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG9UYXJnZXQ7XG5cdH0gZWxzZSB7XG5cdFx0aWYgKGJJbmNsdWRlVmlzaXRlZE9iamVjdHMpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHRhcmdldDogdGFyZ2V0RW50aXR5U2V0LFxuXHRcdFx0XHR2aXNpdGVkT2JqZWN0czogbG9jYWxPYmplY3RzXG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gdGFyZ2V0RW50aXR5U2V0O1xuXHR9XG59XG5cbnR5cGUgQ29udmVydGVyT2JqZWN0ID0ge1xuXHRfdHlwZTogc3RyaW5nO1xuXHRuYW1lOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgUmVzb2x2ZWRUYXJnZXQgPSB7XG5cdHRhcmdldD86IENvbnZlcnRlck9iamVjdDtcblx0dmlzaXRlZE9iamVjdHM6IENvbnZlcnRlck9iamVjdFtdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhvTWV0YU1vZGVsQ29udGV4dDogQ29udGV4dCwgb0VudGl0eVNldE1ldGFNb2RlbENvbnRleHQ/OiBDb250ZXh0KTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdGNvbnN0IG9Db252ZXJ0ZXJPdXRwdXQgPSBjb252ZXJ0VHlwZXMob01ldGFNb2RlbENvbnRleHQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCk7XG5cdGNvbnN0IG1ldGFNb2RlbENvbnRleHQgPSBjb252ZXJ0TWV0YU1vZGVsQ29udGV4dChvTWV0YU1vZGVsQ29udGV4dCwgdHJ1ZSk7XG5cdGxldCB0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbjtcblx0aWYgKG9FbnRpdHlTZXRNZXRhTW9kZWxDb250ZXh0ICYmIG9FbnRpdHlTZXRNZXRhTW9kZWxDb250ZXh0LmdldFBhdGgoKSAhPT0gXCIvXCIpIHtcblx0XHR0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbiA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhvRW50aXR5U2V0TWV0YU1vZGVsQ29udGV4dCk7XG5cdH1cblx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0RnJvbVBhdGgobWV0YU1vZGVsQ29udGV4dCwgb0NvbnZlcnRlck91dHB1dCwgdGFyZ2V0RW50aXR5U2V0TG9jYXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RGcm9tUGF0aChcblx0bWV0YU1vZGVsQ29udGV4dDogUmVzb2x2ZWRUYXJnZXQsXG5cdGNvbnZlcnRlZFR5cGVzOiBDb252ZXJ0ZXJPdXRwdXQsXG5cdHRhcmdldEVudGl0eVNldExvY2F0aW9uPzogRGF0YU1vZGVsT2JqZWN0UGF0aFxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdGNvbnN0IGRhdGFNb2RlbE9iamVjdHMgPSBtZXRhTW9kZWxDb250ZXh0LnZpc2l0ZWRPYmplY3RzLmZpbHRlcihcblx0XHQodmlzaXRlZE9iamVjdDogYW55KSA9PiB2aXNpdGVkT2JqZWN0ICYmIHZpc2l0ZWRPYmplY3QuaGFzT3duUHJvcGVydHkoXCJfdHlwZVwiKSAmJiB2aXNpdGVkT2JqZWN0Ll90eXBlICE9PSBcIkVudGl0eVR5cGVcIlxuXHQpO1xuXHRpZiAobWV0YU1vZGVsQ29udGV4dC50YXJnZXQgJiYgbWV0YU1vZGVsQ29udGV4dC50YXJnZXQuaGFzT3duUHJvcGVydHkoXCJfdHlwZVwiKSAmJiBtZXRhTW9kZWxDb250ZXh0LnRhcmdldC5fdHlwZSAhPT0gXCJFbnRpdHlUeXBlXCIpIHtcblx0XHRkYXRhTW9kZWxPYmplY3RzLnB1c2gobWV0YU1vZGVsQ29udGV4dC50YXJnZXQpO1xuXHR9XG5cdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBfTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXTtcblx0Y29uc3Qgcm9vdEVudGl0eVNldDogX0VudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdHNbMF0gYXMgX0VudGl0eVNldDtcblx0Ly8gY3VycmVudEVudGl0eVNldCBjYW4gYmUgdW5kZWZpbmVkLlxuXHRsZXQgY3VycmVudEVudGl0eVNldDogX0VudGl0eVNldCB8IHVuZGVmaW5lZCA9IHJvb3RFbnRpdHlTZXQgYXMgX0VudGl0eVNldDtcblx0bGV0IGN1cnJlbnRFbnRpdHlUeXBlOiBfRW50aXR5VHlwZSA9IHJvb3RFbnRpdHlTZXQuZW50aXR5VHlwZTtcblx0bGV0IGkgPSAxO1xuXHRsZXQgY3VycmVudE9iamVjdDtcblx0bGV0IG5hdmlnYXRlZFBhdGhzID0gW107XG5cdHdoaWxlIChpIDwgZGF0YU1vZGVsT2JqZWN0cy5sZW5ndGgpIHtcblx0XHRjdXJyZW50T2JqZWN0ID0gZGF0YU1vZGVsT2JqZWN0c1tpKytdO1xuXHRcdGlmIChjdXJyZW50T2JqZWN0Ll90eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiKSB7XG5cdFx0XHRuYXZpZ2F0ZWRQYXRocy5wdXNoKGN1cnJlbnRPYmplY3QubmFtZSk7XG5cdFx0XHRuYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKGN1cnJlbnRPYmplY3QgYXMgX05hdmlnYXRpb25Qcm9wZXJ0eSk7XG5cdFx0XHRjdXJyZW50RW50aXR5VHlwZSA9IChjdXJyZW50T2JqZWN0IGFzIF9OYXZpZ2F0aW9uUHJvcGVydHkpLnRhcmdldFR5cGU7XG5cdFx0XHRpZiAoY3VycmVudEVudGl0eVNldCAmJiBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcuaGFzT3duUHJvcGVydHkobmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIikpKSB7XG5cdFx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbY3VycmVudE9iamVjdC5uYW1lXTtcblx0XHRcdFx0bmF2aWdhdGVkUGF0aHMgPSBbXTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChjdXJyZW50T2JqZWN0Ll90eXBlID09PSBcIkVudGl0eVNldFwiKSB7XG5cdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gY3VycmVudE9iamVjdCBhcyBfRW50aXR5U2V0O1xuXHRcdFx0Y3VycmVudEVudGl0eVR5cGUgPSBjdXJyZW50RW50aXR5U2V0LmVudGl0eVR5cGU7XG5cdFx0fVxuXHR9XG5cblx0aWYgKHRhcmdldEVudGl0eVNldExvY2F0aW9uICYmIHRhcmdldEVudGl0eVNldExvY2F0aW9uLnN0YXJ0aW5nRW50aXR5U2V0ICE9PSByb290RW50aXR5U2V0KSB7XG5cdFx0Ly8gSW4gY2FzZSB0aGUgZW50aXR5c2V0IGlzIG5vdCBzdGFydGluZyBmcm9tIHRoZSBzYW1lIGxvY2F0aW9uIGl0IG1heSBtZWFuIHRoYXQgd2UgYXJlIGRvaW5nIHRvbyBtdWNoIHdvcmsgZWFybGllciBmb3Igc29tZSByZWFzb25cblx0XHQvLyBBcyBzdWNoIHdlIG5lZWQgdG8gcmVkZWZpbmUgdGhlIGNvbnRleHQgc291cmNlIGZvciB0aGUgdGFyZ2V0RW50aXR5U2V0TG9jYXRpb25cblx0XHRjb25zdCBzdGFydGluZ0luZGV4ID0gZGF0YU1vZGVsT2JqZWN0cy5pbmRleE9mKHRhcmdldEVudGl0eVNldExvY2F0aW9uLnN0YXJ0aW5nRW50aXR5U2V0KTtcblx0XHRpZiAoc3RhcnRpbmdJbmRleCAhPT0gLTEpIHtcblx0XHRcdC8vIElmIGl0J3Mgbm90IGZvdW5kIEkgZG9uJ3Qga25vdyB3aGF0IHdlIGNhbiBkbyAocHJvYmFibHkgbm90aGluZylcblx0XHRcdGNvbnN0IHJlcXVpcmVkRGF0YU1vZGVsT2JqZWN0cyA9IGRhdGFNb2RlbE9iamVjdHMuc2xpY2UoMCwgc3RhcnRpbmdJbmRleCk7XG5cdFx0XHR0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbi5zdGFydGluZ0VudGl0eVNldCA9IHJvb3RFbnRpdHlTZXQ7XG5cdFx0XHR0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbi5uYXZpZ2F0aW9uUHJvcGVydGllcyA9IHJlcXVpcmVkRGF0YU1vZGVsT2JqZWN0c1xuXHRcdFx0XHQuZmlsdGVyKChvYmplY3Q6IGFueSkgPT4gb2JqZWN0Ll90eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiKVxuXHRcdFx0XHQuY29uY2F0KHRhcmdldEVudGl0eVNldExvY2F0aW9uLm5hdmlnYXRpb25Qcm9wZXJ0aWVzKSBhcyBfTmF2aWdhdGlvblByb3BlcnR5W107XG5cdFx0fVxuXHR9XG5cdGNvbnN0IG91dERhdGFNb2RlbFBhdGggPSB7XG5cdFx0c3RhcnRpbmdFbnRpdHlTZXQ6IHJvb3RFbnRpdHlTZXQsXG5cdFx0dGFyZ2V0RW50aXR5U2V0OiBjdXJyZW50RW50aXR5U2V0LFxuXHRcdHRhcmdldEVudGl0eVR5cGU6IGN1cnJlbnRFbnRpdHlUeXBlLFxuXHRcdHRhcmdldE9iamVjdDogbWV0YU1vZGVsQ29udGV4dC50YXJnZXQsXG5cdFx0bmF2aWdhdGlvblByb3BlcnRpZXMsXG5cdFx0Y29udGV4dExvY2F0aW9uOiB0YXJnZXRFbnRpdHlTZXRMb2NhdGlvbixcblx0XHRjb252ZXJ0ZWRUeXBlczogY29udmVydGVkVHlwZXNcblx0fTtcblx0aWYgKCFvdXREYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvbikge1xuXHRcdG91dERhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uID0gb3V0RGF0YU1vZGVsUGF0aDtcblx0fVxuXHRyZXR1cm4gb3V0RGF0YU1vZGVsUGF0aDtcbn1cbiJdfQ==
|