@sapui5/sap.fe.core 1.100.0 → 1.102.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -4
- package/src/sap/fe/core/.library +2 -3
- package/src/sap/fe/core/AppComponent.js +23 -30
- package/src/sap/fe/core/AppComponent.ts +35 -40
- package/src/sap/fe/core/AppStateHandler.js +8 -8
- package/src/sap/fe/core/AppStateHandler.ts +11 -11
- package/src/sap/fe/core/BaseController.js +9 -9
- package/src/sap/fe/core/BaseController.ts +3 -4
- package/src/sap/fe/core/CommonUtils.js +122 -101
- package/src/sap/fe/core/CommonUtils.ts +239 -193
- package/src/sap/fe/core/ExtensionAPI.js +12 -13
- package/src/sap/fe/core/ExtensionAPI.ts +21 -31
- package/src/sap/fe/core/PageController.js +19 -13
- package/src/sap/fe/core/PageController.ts +40 -34
- package/src/sap/fe/core/TemplateComponent.js +198 -123
- package/src/sap/fe/core/TemplateComponent.ts +109 -121
- package/src/sap/fe/core/TemplateModel.js +7 -9
- package/src/sap/fe/core/TemplateModel.ts +3 -3
- 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 +935 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +837 -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/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
- package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
- package/src/sap/fe/core/controllerextensions/EditFlow.js +660 -288
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +513 -331
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +11 -11
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -7
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +43 -25
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +132 -103
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +16 -16
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +64 -55
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +166 -99
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +187 -149
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +14 -14
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -11
- package/src/sap/fe/core/controllerextensions/MassEdit.js +13 -12
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +22 -22
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +14 -26
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +20 -30
- package/src/sap/fe/core/controllerextensions/PageReady.js +25 -23
- package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -47
- package/src/sap/fe/core/controllerextensions/Paginator.js +24 -15
- package/src/sap/fe/core/controllerextensions/Paginator.ts +35 -20
- package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -10
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +11 -11
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/Share.js +34 -16
- package/src/sap/fe/core/controllerextensions/Share.ts +50 -32
- package/src/sap/fe/core/controllerextensions/SideEffects.js +15 -15
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +64 -65
- package/src/sap/fe/core/controllerextensions/ViewState.js +27 -31
- package/src/sap/fe/core/controllerextensions/ViewState.ts +103 -102
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +98 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +90 -132
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +146 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +18 -8
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +264 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +35 -33
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +100 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1584 -0
- package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +190 -159
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +780 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +329 -76
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1149 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +169 -97
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +190 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/sticky.ts +76 -12
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +592 -0
- package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +83 -60
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +940 -0
- package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +52 -36
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
- 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 +50 -16
- package/src/sap/fe/core/controls/CommandExecution.ts +31 -22
- package/src/sap/fe/core/controls/ConditionalWrapper.js +136 -65
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +49 -58
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +371 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +282 -0
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +74 -36
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +23 -32
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +52 -5
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +127 -67
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +127 -67
- package/src/sap/fe/core/controls/FieldWrapper.js +171 -87
- package/src/sap/fe/core/controls/FieldWrapper.ts +69 -80
- package/src/sap/fe/core/controls/FileWrapper.js +360 -0
- package/src/sap/fe/core/controls/FileWrapper.ts +202 -0
- package/src/sap/fe/core/controls/FilterBar.js +154 -119
- package/src/sap/fe/core/controls/FilterBar.ts +128 -123
- package/src/sap/fe/core/controls/FormElementWrapper.js +102 -37
- package/src/sap/fe/core/controls/FormElementWrapper.ts +43 -35
- package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
- package/src/sap/fe/core/controls/MassEditSelect.ts +45 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +111 -89
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +86 -82
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -193
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +211 -204
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +152 -116
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +105 -105
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -2
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +23 -28
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +41 -81
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +550 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +604 -35
- package/src/sap/fe/core/converters/ManifestSettings.js +3 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +9 -2
- package/src/sap/fe/core/converters/MetaModelConverter.js +11 -40
- package/src/sap/fe/core/converters/MetaModelConverter.ts +56 -84
- package/src/sap/fe/core/converters/annotations/DataField.js +20 -5
- package/src/sap/fe/core/converters/annotations/DataField.ts +27 -6
- package/src/sap/fe/core/converters/controls/Common/Action.js +14 -21
- package/src/sap/fe/core/converters/controls/Common/Action.ts +23 -28
- package/src/sap/fe/core/converters/controls/Common/Chart.js +17 -10
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -14
- package/src/sap/fe/core/converters/controls/Common/Form.js +16 -18
- package/src/sap/fe/core/converters/controls/Common/Form.ts +20 -20
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -3
- package/src/sap/fe/core/converters/controls/Common/Table.js +389 -173
- package/src/sap/fe/core/converters/controls/Common/Table.ts +440 -244
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +26 -16
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +27 -19
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +78 -47
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +146 -107
- 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 +30 -25
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +39 -34
- package/src/sap/fe/core/converters/helpers/Aggregation.js +10 -2
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +18 -13
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +6 -5
- 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 +27 -24
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +49 -40
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +33 -22
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +77 -62
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +28 -28
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +38 -45
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -3
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +8 -6
- 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 +74 -13
- package/src/sap/fe/core/formatters/TableFormatter.ts +71 -16
- 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 +46 -17
- package/src/sap/fe/core/fpm/Component.ts +11 -16
- package/src/sap/fe/core/helpers/AppStartupHelper.js +4 -4
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +3 -3
- package/src/sap/fe/core/helpers/BindingExpression.js +10 -7
- package/src/sap/fe/core/helpers/BindingExpression.ts +37 -35
- package/src/sap/fe/core/helpers/ClassSupport.js +273 -256
- package/src/sap/fe/core/helpers/ClassSupport.ts +315 -237
- package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
- package/src/sap/fe/core/helpers/FPMHelper.ts +9 -8
- package/src/sap/fe/core/helpers/MassEditHelper.js +522 -147
- package/src/sap/fe/core/helpers/MassEditHelper.ts +563 -236
- package/src/sap/fe/core/helpers/ModelHelper.js +29 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +39 -26
- 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 +3 -3
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +3 -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 +5 -7
- package/src/sap/fe/core/helpers/StableIdHelper.ts +8 -8
- package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
- package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
- 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 +13 -5
- package/src/sap/fe/core/library.ts +26 -17
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -3
- package/src/sap/fe/core/messagebundle.properties +135 -180
- package/src/sap/fe/core/messagebundle_ar.properties +31 -64
- package/src/sap/fe/core/messagebundle_bg.properties +31 -64
- package/src/sap/fe/core/messagebundle_ca.properties +31 -64
- package/src/sap/fe/core/messagebundle_cs.properties +31 -64
- package/src/sap/fe/core/messagebundle_cy.properties +32 -65
- package/src/sap/fe/core/messagebundle_da.properties +31 -64
- package/src/sap/fe/core/messagebundle_de.properties +29 -62
- package/src/sap/fe/core/messagebundle_el.properties +32 -65
- package/src/sap/fe/core/messagebundle_en.properties +32 -65
- package/src/sap/fe/core/messagebundle_en_GB.properties +29 -62
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -74
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +32 -65
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +20 -6
- package/src/sap/fe/core/messagebundle_es.properties +31 -64
- package/src/sap/fe/core/messagebundle_es_MX.properties +31 -64
- package/src/sap/fe/core/messagebundle_et.properties +31 -64
- package/src/sap/fe/core/messagebundle_fi.properties +29 -62
- package/src/sap/fe/core/messagebundle_fr.properties +36 -69
- package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -66
- package/src/sap/fe/core/messagebundle_hi.properties +29 -62
- package/src/sap/fe/core/messagebundle_hr.properties +32 -65
- package/src/sap/fe/core/messagebundle_hu.properties +30 -63
- package/src/sap/fe/core/messagebundle_id.properties +32 -65
- package/src/sap/fe/core/messagebundle_it.properties +31 -64
- package/src/sap/fe/core/messagebundle_iw.properties +31 -64
- package/src/sap/fe/core/messagebundle_ja.properties +29 -62
- package/src/sap/fe/core/messagebundle_kk.properties +31 -64
- package/src/sap/fe/core/messagebundle_ko.properties +31 -64
- package/src/sap/fe/core/messagebundle_lt.properties +31 -64
- package/src/sap/fe/core/messagebundle_lv.properties +32 -65
- package/src/sap/fe/core/messagebundle_ms.properties +31 -64
- package/src/sap/fe/core/messagebundle_nl.properties +31 -64
- package/src/sap/fe/core/messagebundle_no.properties +31 -64
- package/src/sap/fe/core/messagebundle_pl.properties +34 -67
- package/src/sap/fe/core/messagebundle_pt.properties +32 -65
- package/src/sap/fe/core/messagebundle_pt_PT.properties +31 -64
- package/src/sap/fe/core/messagebundle_ro.properties +33 -66
- package/src/sap/fe/core/messagebundle_ru.properties +33 -66
- package/src/sap/fe/core/messagebundle_sh.properties +31 -64
- package/src/sap/fe/core/messagebundle_sk.properties +31 -64
- package/src/sap/fe/core/messagebundle_sl.properties +29 -62
- package/src/sap/fe/core/messagebundle_sv.properties +30 -63
- package/src/sap/fe/core/messagebundle_th.properties +31 -64
- package/src/sap/fe/core/messagebundle_tr.properties +31 -64
- package/src/sap/fe/core/messagebundle_uk.properties +32 -65
- package/src/sap/fe/core/messagebundle_vi.properties +31 -64
- package/src/sap/fe/core/messagebundle_zh_CN.properties +32 -65
- package/src/sap/fe/core/messagebundle_zh_TW.properties +34 -67
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +4 -4
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +1 -2
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +11 -8
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -13
- package/src/sap/fe/core/services/NavigationServiceFactory.js +5 -5
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +9 -5
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -4
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js +105 -66
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +59 -49
- package/src/sap/fe/core/services/ShellServicesFactory.js +104 -29
- package/src/sap/fe/core/services/ShellServicesFactory.ts +64 -30
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +11 -10
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +38 -51
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +43 -5
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +6 -3
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.ts +0 -3
- package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -9
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +32 -38
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +27 -6
- package/src/sap/fe/core/templating/EntitySetHelper.js +1 -9
- package/src/sap/fe/core/templating/EntitySetHelper.ts +11 -13
- package/src/sap/fe/core/templating/FilterHelper.js +4 -4
- package/src/sap/fe/core/templating/FilterHelper.ts +6 -5
- package/src/sap/fe/core/templating/PropertyHelper.js +70 -33
- package/src/sap/fe/core/templating/PropertyHelper.ts +49 -27
- package/src/sap/fe/core/templating/UIFormatters.js +133 -22
- package/src/sap/fe/core/templating/UIFormatters.ts +144 -50
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
- 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/AnnotationHelper.js +0 -312
- package/src/sap/fe/core/AnnotationHelper.ts +0 -315
- package/src/sap/fe/core/RouterProxy.js +0 -926
- package/src/sap/fe/core/TransactionHelper.js +0 -1562
- package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -392
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +0 -136
- package/src/sap/fe/core/actions/collaboration/Manage.js +0 -262
- package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +0 -103
- package/src/sap/fe/core/actions/draft.js +0 -523
- package/src/sap/fe/core/actions/messageHandling.js +0 -567
- package/src/sap/fe/core/actions/nonDraft.js +0 -20
- package/src/sap/fe/core/actions/nonDraft.ts +0 -12
- package/src/sap/fe/core/actions/operations.js +0 -1096
- package/src/sap/fe/core/actions/sticky.js +0 -130
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -78
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +0 -65
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
- package/src/sap/fe/core/formatters/CriticalityFormatter.ts +0 -58
|
@@ -421,4 +421,4 @@ sap.ui.define(["../../helpers/ID", "sap/fe/core/templating/PropertyHelper", "sap
|
|
|
421
421
|
_exports.getKPIDefinitions = getKPIDefinitions;
|
|
422
422
|
return _exports;
|
|
423
423
|
}, false);
|
|
424
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIktQSS50cyJdLCJuYW1lcyI6WyJEZXZpYXRpb25JbmRpY2F0b3JGcm9tVHJlbmRUeXBlIiwiS1BJQ2hhcnRUeXBlRnJvbVVJIiwiY29udmVydEtQSUNoYXJ0IiwiY2hhcnRBbm5vdGF0aW9uIiwicHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24iLCJNZWFzdXJlcyIsInVuZGVmaW5lZCIsImNoYXJEaW1lbnNpb25zIiwiRGltZW5zaW9ucyIsIm1hcCIsInByb3BlcnR5UGF0aCIsImRpbUF0dHJpYnV0ZSIsIkRpbWVuc2lvbkF0dHJpYnV0ZXMiLCJmaW5kIiwiYXR0cmlidXRlIiwiRGltZW5zaW9uIiwidmFsdWUiLCJuYW1lIiwibGFiZWwiLCIkdGFyZ2V0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJMYWJlbCIsInRvU3RyaW5nIiwicm9sZSIsIlJvbGUiLCJyZXBsYWNlIiwiY2hhcnRNZWFzdXJlcyIsIm1lYXN1cmVBdHRyaWJ1dGUiLCJNZWFzdXJlQXR0cmlidXRlcyIsIk1lYXN1cmUiLCJjaGFydFR5cGUiLCJDaGFydFR5cGUiLCJkaW1lbnNpb25zIiwibWVhc3VyZXMiLCJzb3J0T3JkZXIiLCJTb3J0T3JkZXIiLCJQcm9wZXJ0eSIsImRlc2NlbmRpbmciLCJEZXNjZW5kaW5nIiwibWF4SXRlbXMiLCJNYXhJdGVtcyIsInZhbHVlT2YiLCJ1cGRhdGVDdXJyZW5jeSIsImRhdGFwb2ludEFubm90YXRpb24iLCJrcGlEZWYiLCJ0YXJnZXRWYWx1ZVByb3BlcnR5IiwiVmFsdWUiLCJJU09DdXJyZW5jeSIsImN1cnJlbmN5IiwiaXNQYXRoRXhwcmVzc2lvbiIsImRhdGFwb2ludCIsInVuaXQiLCJpc0N1cnJlbmN5IiwiaXNQYXRoIiwiVW5pdCIsInVwZGF0ZUNyaXRpY2FsaXR5IiwiYWdncmVnYXRpb25IZWxwZXIiLCJDcml0aWNhbGl0eSIsImNyaXRpY2FsaXR5UHJvcGVydHkiLCJpc1Byb3BlcnR5QWdncmVnYXRhYmxlIiwiY3JpdGljYWxpdHlQYXRoIiwicGF0aCIsImNyaXRpY2FsaXR5VmFsdWUiLCJNZXNzYWdlVHlwZSIsIk5vbmUiLCJnZXRNZXNzYWdlVHlwZUZyb21Dcml0aWNhbGl0eVR5cGUiLCJDcml0aWNhbGl0eUNhbGN1bGF0aW9uIiwiY3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGUiLCJJbXByb3ZlbWVudERpcmVjdGlvbiIsImNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzIiwicHVzaCIsIkRldmlhdGlvblJhbmdlTG93VmFsdWUiLCJUb2xlcmFuY2VSYW5nZUxvd1ZhbHVlIiwiQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUiLCJBY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUiLCJUb2xlcmFuY2VSYW5nZUhpZ2hWYWx1ZSIsIkRldmlhdGlvblJhbmdlSGlnaFZhbHVlIiwidXBkYXRlVHJlbmQiLCJUcmVuZCIsInRyZW5kUHJvcGVydHkiLCJ0cmVuZFBhdGgiLCJ0cmVuZFZhbHVlIiwiVHJlbmRDYWxjdWxhdGlvbiIsInRyZW5kQ2FsY3VsYXRpb25Jc1JlbGF0aXZlIiwiSXNSZWxhdGl2ZURpZmZlcmVuY2UiLCJSZWZlcmVuY2VWYWx1ZSIsInJlZmVyZW5jZVByb3BlcnR5IiwidHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGgiLCJ0cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlVmFsdWUiLCJ0cmVuZENhbGN1bGF0aW9uVHJlc2hvbGRzIiwiU3Ryb25nRG93bkRpZmZlcmVuY2UiLCJEb3duRGlmZmVyZW5jZSIsIlVwRGlmZmVyZW5jZSIsIlN0cm9uZ1VwRGlmZmVyZW5jZSIsInVwZGF0ZVRhcmdldCIsIlRhcmdldFZhbHVlIiwidGFyZ2V0UHJvcGVydHkiLCJ0YXJnZXRQYXRoIiwidGFyZ2V0VmFsdWUiLCJnZXROYXZpZ2F0aW9uSW5mb0Zyb21Qcm9wZXJ0eSIsInByb3BlcnR5Iiwic2VtYW50aWNPYmplY3RBbm5vdGF0aW9uIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJhbm5vdGF0aW9uS2V5IiwiYW5ub3RhdGlvbiIsInRlcm0iLCJxdWFsaWZpZXIiLCJyZXN1bHQiLCJzZW1hbnRpY09iamVjdCIsInVuYXZhaWxhYmxlQWN0aW9ucyIsImtleSIsImNyZWF0ZUtQSURlZmluaXRpb24iLCJrcGlOYW1lIiwia3BpQ29uZmlnIiwiY29udmVydGVyQ29udGV4dCIsImtwaUNvbnZlcnRlckNvbnRleHQiLCJnZXRDb252ZXJ0ZXJDb250ZXh0Rm9yIiwiZW50aXR5U2V0IiwiQWdncmVnYXRpb25IZWxwZXIiLCJnZXRFbnRpdHlUeXBlIiwiaXNBbmFseXRpY3NTdXBwb3J0ZWQiLCJnZXREaWFnbm9zdGljcyIsImFkZElzc3VlIiwiSXNzdWVDYXRlZ29yeSIsIkFubm90YXRpb24iLCJJc3N1ZVNldmVyaXR5IiwiTWVkaXVtIiwiSXNzdWVUeXBlIiwiS1BJX0lTU1VFUyIsIk5PX0FOQUxZVElDUyIsInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwibmF2aWdhdGlvbkluZm8iLCJhS1BJQW5ub3RhdGlvbnMiLCJnZXRBbm5vdGF0aW9uc0J5VGVybSIsInRhcmdldEtQSSIsImtwaSIsIkRhdGFQb2ludCIsIlNlbGVjdGlvblZhcmlhbnQiLCJEZXRhaWwiLCJEZWZhdWx0UHJlc2VudGF0aW9uVmFyaWFudCIsIlZpc3VhbGl6YXRpb25zIiwidml6IiwiJFR5cGUiLCJTZW1hbnRpY09iamVjdCIsImFjdGlvbiIsIkFjdGlvbiIsImFTUFZBbm5vdGF0aW9ucyIsInRhcmdldFNQViIsInNwdiIsIlByZXNlbnRhdGlvblZhcmlhbnQiLCJLUElfTk9UX0ZPVU5EIiwiS1BJX0RFVEFJTF9OT1RfRk9VTkQiLCJkYXRhcG9pbnRQcm9wZXJ0eSIsIk1BSU5fUFJPUEVSVFlfTk9UX0FHR1JFR0FUQUJMRSIsImNoYXJ0RGVmIiwiaWQiLCJLUElJRCIsImFubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInRpdGxlIiwiVGl0bGUiLCJkZXNjcmlwdGlvbiIsIkRlc2NyaXB0aW9uIiwic2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zIiwiZ2V0RmlsdGVyRGVmaW5pdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsImNoYXJ0IiwiZGV0YWlsTmF2aWdhdGlvbiIsIm91dGJvdW5kTmF2aWdhdGlvbiIsIm5hdmlnYXRpb24iLCJnZXRLUElEZWZpbml0aW9ucyIsImtwaUNvbmZpZ3MiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJnZXRLUElDb25maWd1cmF0aW9uIiwia3BpRGVmcyIsIm9EZWYiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQTBFQSxNQUFNQSwrQkFBdUQsR0FBRztBQUMvRCw2QkFBeUIsSUFEc0M7QUFFL0QsdUJBQW1CLElBRjRDO0FBRy9ELCtCQUEyQixNQUhvQztBQUkvRCx5QkFBcUIsTUFKMEM7QUFLL0QsNkJBQXlCO0FBTHNDLEdBQWhFO0FBUUEsTUFBTUMsa0JBQTBDLEdBQUc7QUFDbEQsa0NBQThCLGVBRG9CO0FBRWxELCtCQUEyQixZQUZ1QjtBQUdsRCwwQkFBc0IsT0FINEI7QUFJbEQseUJBQXFCLE1BSjZCO0FBS2xELDJCQUF1QixRQUwyQjtBQU1sRCwyQkFBdUIsUUFOMkI7QUFPbEQsd0JBQW9CLEtBUDhCO0FBUWxELG1DQUErQixpQkFSbUI7QUFTbEQsZ0NBQTRCLGFBVHNCO0FBVWxELDRCQUF3QjtBQVYwQixHQUFuRDs7QUFhQSxXQUFTQyxlQUFULENBQXlCQyxlQUF6QixFQUFpREMsNkJBQWpELEVBQXFJO0FBQUE7O0FBQ3BJLFFBQUlELGVBQWUsQ0FBQ0UsUUFBaEIsS0FBNkJDLFNBQWpDLEVBQTRDO0FBQzNDO0FBQ0EsYUFBT0EsU0FBUDtBQUNBOztBQUVELFFBQU1DLGNBQWMsR0FBR0osZUFBZSxDQUFDSyxVQUFoQixHQUNuQkwsZUFBZSxDQUFDSyxVQUFqQixDQUErQ0MsR0FBL0MsQ0FBbUQsVUFBQUMsWUFBWSxFQUFJO0FBQUE7O0FBQ25FLFVBQU1DLFlBQVksNEJBQUdSLGVBQWUsQ0FBQ1MsbUJBQW5C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QUFDQTtBQUNELEtBTEQ7QUFPQSxXQUFPRCxPQUFQO0FBQ0EiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtQSUNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlclwiO1xuaW1wb3J0IHtcblx0QW5ub3RhdGlvblRlcm0sXG5cdFVJQW5ub3RhdGlvblRlcm1zLFxuXHRVSUFubm90YXRpb25UeXBlcyxcblx0UGF0aEFubm90YXRpb25FeHByZXNzaW9uLFxuXHRDcml0aWNhbGl0eVR5cGUsXG5cdEltcHJvdmVtZW50RGlyZWN0aW9uVHlwZVxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7XG5cdEtQSVR5cGUsXG5cdFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRUeXBlLFxuXHRQcmVzZW50YXRpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25WYXJpYW50LFxuXHREYXRhUG9pbnQsXG5cdENoYXJ0LFxuXHRUcmVuZFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL2Rpc3QvZ2VuZXJhdGVkL1VJXCI7XG5pbXBvcnQgeyBQcm9wZXJ0eVBhdGggfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvZGlzdC9FZG1cIjtcbmltcG9ydCBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7IEtQSUlEIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IGlzUGF0aEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9UYWJsZUZvcm1hdHRlclR5cGVzXCI7XG5pbXBvcnQgeyBBZ2dyZWdhdGlvbkhlbHBlciB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0FnZ3JlZ2F0aW9uXCI7XG5pbXBvcnQgeyBJc3N1ZUNhdGVnb3J5LCBJc3N1ZVNldmVyaXR5LCBJc3N1ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lzc3VlTWFuYWdlclwiO1xuaW1wb3J0IHsgZ2V0TWVzc2FnZVR5cGVGcm9tQ3JpdGljYWxpdHlUeXBlIH0gZnJvbSBcIi4vQ3JpdGljYWxpdHlcIjtcbmltcG9ydCB7IGdldEZpbHRlckRlZmluaXRpb25zRnJvbVNlbGVjdGlvblZhcmlhbnQsIEZpbHRlckRlZmluaXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL1NlbGVjdGlvblZhcmlhbnRIZWxwZXJcIjtcbmltcG9ydCB7IENvbW1vbkFubm90YXRpb25UZXJtcywgU2VtYW50aWNPYmplY3QgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvZGlzdC9nZW5lcmF0ZWQvQ29tbW9uXCI7XG5cbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25JbmZvID0ge1xuXHRzZW1hbnRpY09iamVjdD86IHN0cmluZztcblx0YWN0aW9uPzogc3RyaW5nO1xuXHR1bmF2YWlsYWJsZUFjdGlvbnM/OiBzdHJpbmdbXTtcblx0b3V0Ym91bmROYXZpZ2F0aW9uPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgS1BJQ2hhcnREZWZpbml0aW9uID0ge1xuXHRjaGFydFR5cGU6IHN0cmluZztcblx0ZGltZW5zaW9uczogeyBuYW1lOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IHJvbGU/OiBzdHJpbmcgfVtdO1xuXHRtZWFzdXJlczogeyBuYW1lOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IHJvbGU/OiBzdHJpbmcgfVtdO1xuXHRzb3J0T3JkZXI/OiB7IG5hbWU6IHN0cmluZzsgZGVzY2VuZGluZzogYm9vbGVhbiB9W107XG5cdG1heEl0ZW1zPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgS1BJRGVmaW5pdGlvbiA9IHtcblx0aWQ6IHN0cmluZztcblx0ZW50aXR5U2V0OiBzdHJpbmc7XG5cdGRhdGFwb2ludDoge1xuXHRcdGFubm90YXRpb25QYXRoOiBzdHJpbmc7XG5cdFx0cHJvcGVydHlQYXRoOiBzdHJpbmc7XG5cdFx0dW5pdD86IHtcblx0XHRcdHZhbHVlOiBzdHJpbmc7XG5cdFx0XHRpc1BhdGg6IGJvb2xlYW47XG5cdFx0XHRpc0N1cnJlbmN5OiBib29sZWFuO1xuXHRcdH07XG5cdFx0Y3JpdGljYWxpdHlQYXRoPzogc3RyaW5nO1xuXHRcdGNyaXRpY2FsaXR5VmFsdWU/OiBNZXNzYWdlVHlwZTtcblx0XHRjcml0aWNhbGl0eUNhbGN1bGF0aW9uTW9kZT86IEltcHJvdmVtZW50RGlyZWN0aW9uVHlwZTtcblx0XHRjcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcz86IChudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKVtdO1xuXHRcdHRpdGxlPzogc3RyaW5nO1xuXHRcdGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXHRcdHRyZW5kUGF0aD86IHN0cmluZztcblx0XHR0cmVuZFZhbHVlPzogc3RyaW5nO1xuXHRcdHRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VWYWx1ZT86IG51bWJlcjtcblx0XHR0cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlUGF0aD86IHN0cmluZztcblx0XHR0cmVuZENhbGN1bGF0aW9uVHJlc2hvbGRzPzogKG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwpW107XG5cdFx0dHJlbmRDYWxjdWxhdGlvbklzUmVsYXRpdmU/OiBib29sZWFuO1xuXHRcdHRhcmdldFZhbHVlPzogbnVtYmVyO1xuXHRcdHRhcmdldFBhdGg/OiBzdHJpbmc7XG5cdH07XG5cdGNoYXJ0OiBLUElDaGFydERlZmluaXRpb247XG5cdHNlbGVjdGlvblZhcmlhbnRGaWx0ZXJEZWZpbml0aW9ucz86IEZpbHRlckRlZmluaXRpb25bXTtcblx0bmF2aWdhdGlvbj86IE5hdmlnYXRpb25JbmZvO1xufTtcblxuY29uc3QgRGV2aWF0aW9uSW5kaWNhdG9yRnJvbVRyZW5kVHlwZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcblx0XCJVSS5UcmVuZFR5cGUvU3Ryb25nVXBcIjogXCJVcFwiLFxuXHRcIlVJLlRyZW5kVHlwZS9VcFwiOiBcIlVwXCIsXG5cdFwiVUkuVHJlbmRUeXBlL1N0cm9uZ0Rvd25cIjogXCJEb3duXCIsXG5cdFwiVUkuVHJlbmRUeXBlL0Rvd25cIjogXCJEb3duXCIsXG5cdFwiVUkuVHJlbmRUeXBlL1NpZGV3YXlzXCI6IFwiTm9uZVwiXG59O1xuXG5jb25zdCBLUElDaGFydFR5cGVGcm9tVUk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG5cdFwiVUkuQ2hhcnRUeXBlL0NvbHVtblN0YWNrZWRcIjogXCJTdGFja2VkQ29sdW1uXCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0JhclN0YWNrZWRcIjogXCJTdGFja2VkQmFyXCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0RvbnV0XCI6IFwiRG9udXRcIixcblx0XCJVSS5DaGFydFR5cGUvTGluZVwiOiBcIkxpbmVcIixcblx0XCJVSS5DaGFydFR5cGUvQnViYmxlXCI6IFwiYnViYmxlXCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0NvbHVtblwiOiBcImNvbHVtblwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9CYXJcIjogXCJiYXJcIixcblx0XCJVSS5DaGFydFR5cGUvVmVydGljYWxCdWxsZXRcIjogXCJ2ZXJ0aWNhbF9idWxsZXRcIixcblx0XCJVSS5DaGFydFR5cGUvQ29tYmluYXRpb25cIjogXCJjb21iaW5hdGlvblwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9TY2F0dGVyXCI6IFwic2NhdHRlclwiXG59O1xuXG5mdW5jdGlvbiBjb252ZXJ0S1BJQ2hhcnQoY2hhcnRBbm5vdGF0aW9uOiBDaGFydCwgcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb246IFByZXNlbnRhdGlvblZhcmlhbnQpOiBLUElDaGFydERlZmluaXRpb24gfCB1bmRlZmluZWQge1xuXHRpZiAoY2hhcnRBbm5vdGF0aW9uLk1lYXN1cmVzID09PSB1bmRlZmluZWQpIHtcblx0XHQvLyBXZSBuZWVkIGF0IGxlYXN0IDEgbWVhc3VyZSAoYnV0IG5vIGRpbWVuc2lvbiBpcyBhbGxvd2VkLCBlLmcuIGZvciBidWJibGUgY2hhcnQpXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGNvbnN0IGNoYXJEaW1lbnNpb25zID0gY2hhcnRBbm5vdGF0aW9uLkRpbWVuc2lvbnNcblx0XHQ/IChjaGFydEFubm90YXRpb24uRGltZW5zaW9ucyBhcyBQcm9wZXJ0eVBhdGhbXSkubWFwKHByb3BlcnR5UGF0aCA9PiB7XG5cdFx0XHRcdGNvbnN0IGRpbUF0dHJpYnV0ZSA9IGNoYXJ0QW5ub3RhdGlvbi5EaW1lbnNpb25BdHRyaWJ1dGVzPy5maW5kKGF0dHJpYnV0ZSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGF0dHJpYnV0ZS5EaW1lbnNpb24/LnZhbHVlID09PSBwcm9wZXJ0eVBhdGgudmFsdWU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdG5hbWU6IHByb3BlcnR5UGF0aC52YWx1ZSxcblx0XHRcdFx0XHRsYWJlbDogcHJvcGVydHlQYXRoLiR0YXJnZXQuYW5ub3RhdGlvbnMuQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKSB8fCBwcm9wZXJ0eVBhdGgudmFsdWUsXG5cdFx0XHRcdFx0cm9sZTogZGltQXR0cmlidXRlPy5Sb2xlPy5yZXBsYWNlKFwiVUkuQ2hhcnREaW1lbnNpb25Sb2xlVHlwZS9cIiwgXCJcIilcblx0XHRcdFx0fTtcblx0XHQgIH0pXG5cdFx0OiBbXTtcblxuXHRjb25zdCBjaGFydE1lYXN1cmVzID0gKGNoYXJ0QW5ub3RhdGlvbi5NZWFzdXJlcyBhcyBQcm9wZXJ0eVBhdGhbXSkubWFwKHByb3BlcnR5UGF0aCA9PiB7XG5cdFx0Y29uc3QgbWVhc3VyZUF0dHJpYnV0ZSA9IGNoYXJ0QW5ub3RhdGlvbi5NZWFzdXJlQXR0cmlidXRlcz8uZmluZChhdHRyaWJ1dGUgPT4ge1xuXHRcdFx0cmV0dXJuIGF0dHJpYnV0ZS5NZWFzdXJlPy52YWx1ZSA9PT0gcHJvcGVydHlQYXRoLnZhbHVlO1xuXHRcdH0pO1xuXHRcdHJldHVybiB7XG5cdFx0XHRuYW1lOiBwcm9wZXJ0eVBhdGgudmFsdWUsXG5cdFx0XHRsYWJlbDogcHJvcGVydHlQYXRoLiR0YXJnZXQuYW5ub3RhdGlvbnMuQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKSB8fCBwcm9wZXJ0eVBhdGgudmFsdWUsXG5cdFx0XHRyb2xlOiBtZWFzdXJlQXR0cmlidXRlPy5Sb2xlPy5yZXBsYWNlKFwiVUkuQ2hhcnRNZWFzdXJlUm9sZVR5cGUvXCIsIFwiXCIpXG5cdFx0fTtcblx0fSk7XG5cblx0cmV0dXJuIHtcblx0XHRjaGFydFR5cGU6IEtQSUNoYXJ0VHlwZUZyb21VSVtjaGFydEFubm90YXRpb24uQ2hhcnRUeXBlXSB8fCBcIkxpbmVcIixcblx0XHRkaW1lbnNpb25zOiBjaGFyRGltZW5zaW9ucyxcblx0XHRtZWFzdXJlczogY2hhcnRNZWFzdXJlcyxcblx0XHRzb3J0T3JkZXI6IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uPy5Tb3J0T3JkZXI/Lm1hcChzb3J0T3JkZXIgPT4ge1xuXHRcdFx0cmV0dXJuIHsgbmFtZTogc29ydE9yZGVyLlByb3BlcnR5Py52YWx1ZSB8fCBcIlwiLCBkZXNjZW5kaW5nOiAhIXNvcnRPcmRlci5EZXNjZW5kaW5nIH07XG5cdFx0fSksXG5cdFx0bWF4SXRlbXM6IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uPy5NYXhJdGVtcz8udmFsdWVPZigpIGFzIG51bWJlclxuXHR9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVDdXJyZW5jeShkYXRhcG9pbnRBbm5vdGF0aW9uOiBEYXRhUG9pbnQsIGtwaURlZjogS1BJRGVmaW5pdGlvbik6IHZvaWQge1xuXHRjb25zdCB0YXJnZXRWYWx1ZVByb3BlcnR5ID0gZGF0YXBvaW50QW5ub3RhdGlvbi5WYWx1ZS4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRpZiAodGFyZ2V0VmFsdWVQcm9wZXJ0eS5hbm5vdGF0aW9ucy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kpIHtcblx0XHRjb25zdCBjdXJyZW5jeSA9IHRhcmdldFZhbHVlUHJvcGVydHkuYW5ub3RhdGlvbnMuTWVhc3VyZXM/LklTT0N1cnJlbmN5O1xuXHRcdGlmIChpc1BhdGhFeHByZXNzaW9uKGN1cnJlbmN5KSkge1xuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC51bml0ID0ge1xuXHRcdFx0XHR2YWx1ZTogKChjdXJyZW5jeS4kdGFyZ2V0IGFzIHVua25vd24pIGFzIFByb3BlcnR5KS5uYW1lLFxuXHRcdFx0XHRpc0N1cnJlbmN5OiB0cnVlLFxuXHRcdFx0XHRpc1BhdGg6IHRydWVcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudW5pdCA9IHtcblx0XHRcdFx0dmFsdWU6IGN1cnJlbmN5LnRvU3RyaW5nKCksXG5cdFx0XHRcdGlzQ3VycmVuY3k6IHRydWUsXG5cdFx0XHRcdGlzUGF0aDogZmFsc2Vcblx0XHRcdH07XG5cdFx0fVxuXHR9IGVsc2UgaWYgKHRhcmdldFZhbHVlUHJvcGVydHkuYW5ub3RhdGlvbnMuTWVhc3VyZXM/LlVuaXQpIHtcblx0XHRjb25zdCB1bml0ID0gdGFyZ2V0VmFsdWVQcm9wZXJ0eS5hbm5vdGF0aW9ucy5NZWFzdXJlcz8uVW5pdDtcblx0XHRpZiAoaXNQYXRoRXhwcmVzc2lvbih1bml0KSkge1xuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC51bml0ID0ge1xuXHRcdFx0XHR2YWx1ZTogKCh1bml0LiR0YXJnZXQgYXMgdW5rbm93bikgYXMgUHJvcGVydHkpLm5hbWUsXG5cdFx0XHRcdGlzQ3VycmVuY3k6IGZhbHNlLFxuXHRcdFx0XHRpc1BhdGg6IHRydWVcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudW5pdCA9IHtcblx0XHRcdFx0dmFsdWU6IHVuaXQudG9TdHJpbmcoKSxcblx0XHRcdFx0aXNDdXJyZW5jeTogZmFsc2UsXG5cdFx0XHRcdGlzUGF0aDogZmFsc2Vcblx0XHRcdH07XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNyaXRpY2FsaXR5KGRhdGFwb2ludEFubm90YXRpb246IERhdGFQb2ludCwgYWdncmVnYXRpb25IZWxwZXI6IEFnZ3JlZ2F0aW9uSGVscGVyLCBrcGlEZWY6IEtQSURlZmluaXRpb24pOiB2b2lkIHtcblx0aWYgKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkpIHtcblx0XHRpZiAodHlwZW9mIGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdC8vIENyaXRpY2FsaXR5IGlzIGEgcGF0aCAtLT4gY2hlY2sgaWYgdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgaXMgYWdncmVnYXRhYmxlXG5cdFx0XHRjb25zdCBjcml0aWNhbGl0eVByb3BlcnR5ID0gKChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5IGFzIGFueSkgYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPENyaXRpY2FsaXR5VHlwZT4pXG5cdFx0XHRcdC4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRcdFx0aWYgKGFnZ3JlZ2F0aW9uSGVscGVyLmlzUHJvcGVydHlBZ2dyZWdhdGFibGUoY3JpdGljYWxpdHlQcm9wZXJ0eSkpIHtcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVBhdGggPSAoZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eSBhcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248Q3JpdGljYWxpdHlUeXBlPikucGF0aDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFRoZSBwcm9wZXJ0eSBpc24ndCBhZ2dyZWdhdGFibGUgLS0+IHdlIGlnbm9yZSBpdFxuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5VmFsdWUgPSBNZXNzYWdlVHlwZS5Ob25lO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBDcml0aWNhbGl0eSBpcyBhbiBlbnVtIFZhbHVlIC0tPiBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgc3RhdGljIHZhbHVlXG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5VmFsdWUgPSBnZXRNZXNzYWdlVHlwZUZyb21Dcml0aWNhbGl0eVR5cGUoZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eSk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbikge1xuXHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGUgPSBkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uSW1wcm92ZW1lbnREaXJlY3Rpb247XG5cdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcyA9IFtdO1xuXHRcdHN3aXRjaCAoa3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uTW9kZSkge1xuXHRcdFx0Y2FzZSBcIlVJLkltcHJvdmVtZW50RGlyZWN0aW9uVHlwZS9UYXJnZXRcIjpcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcy5wdXNoKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5EZXZpYXRpb25SYW5nZUxvd1ZhbHVlKTtcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcy5wdXNoKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5Ub2xlcmFuY2VSYW5nZUxvd1ZhbHVlKTtcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcy5wdXNoKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5BY2NlcHRhbmNlUmFuZ2VMb3dWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uQWNjZXB0YW5jZVJhbmdlSGlnaFZhbHVlKTtcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcy5wdXNoKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5Ub2xlcmFuY2VSYW5nZUhpZ2hWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uRGV2aWF0aW9uUmFuZ2VIaWdoVmFsdWUpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkltcHJvdmVtZW50RGlyZWN0aW9uVHlwZS9NaW5pbWl6ZVwiOlxuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkFjY2VwdGFuY2VSYW5nZUhpZ2hWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uVG9sZXJhbmNlUmFuZ2VIaWdoVmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkRldmlhdGlvblJhbmdlSGlnaFZhbHVlKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJVSS5JbXByb3ZlbWVudERpcmVjdGlvblR5cGUvTWF4aW1pemVcIjpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uRGV2aWF0aW9uUmFuZ2VMb3dWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uVG9sZXJhbmNlUmFuZ2VMb3dWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5VmFsdWUgPSBNZXNzYWdlVHlwZS5Ob25lO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRyZW5kKGRhdGFwb2ludEFubm90YXRpb246IERhdGFQb2ludCwgYWdncmVnYXRpb25IZWxwZXI6IEFnZ3JlZ2F0aW9uSGVscGVyLCBrcGlEZWY6IEtQSURlZmluaXRpb24pOiB2b2lkIHtcblx0aWYgKGRhdGFwb2ludEFubm90YXRpb24uVHJlbmQpIHtcblx0XHRpZiAodHlwZW9mIGRhdGFwb2ludEFubm90YXRpb24uVHJlbmQgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdC8vIFRyZW5kIGlzIGEgcGF0aCAtLT4gY2hlY2sgaWYgdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgaXMgYWdncmVnYXRhYmxlXG5cdFx0XHRjb25zdCB0cmVuZFByb3BlcnR5ID0gKChkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kIGFzIGFueSkgYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPFRyZW5kVHlwZT4pLiR0YXJnZXQgYXMgUHJvcGVydHk7XG5cdFx0XHRpZiAoYWdncmVnYXRpb25IZWxwZXIuaXNQcm9wZXJ0eUFnZ3JlZ2F0YWJsZSh0cmVuZFByb3BlcnR5KSkge1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kUGF0aCA9IChkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kIGFzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxUcmVuZFR5cGU+KS5wYXRoO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gVGhlIHByb3BlcnR5IGlzbid0IGFnZ3JlZ2F0YWJsZSAtLT4gd2UgaWdub3JlIGl0XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQudHJlbmRWYWx1ZSA9IFwiTm9uZVwiO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBUcmVuZCBpcyBhbiBlbnVtIFZhbHVlIC0tPiBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgc3RhdGljIHZhbHVlXG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kVmFsdWUgPSBEZXZpYXRpb25JbmRpY2F0b3JGcm9tVHJlbmRUeXBlW2RhdGFwb2ludEFubm90YXRpb24uVHJlbmRdIHx8IFwiTm9uZVwiO1xuXHRcdH1cblx0fSBlbHNlIGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24pIHtcblx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25Jc1JlbGF0aXZlID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLklzUmVsYXRpdmVEaWZmZXJlbmNlID8gdHJ1ZSA6IGZhbHNlO1xuXHRcdGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uUmVmZXJlbmNlVmFsdWUuJHRhcmdldCkge1xuXHRcdFx0Ly8gUmVmZXJlbmNlIHZhbHVlIGlzIGEgcGF0aCAtLT4gY2hlY2sgaWYgdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgaXMgYWdncmVnYXRhYmxlXG5cdFx0XHRjb25zdCByZWZlcmVuY2VQcm9wZXJ0eSA9IGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5SZWZlcmVuY2VWYWx1ZS4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRcdFx0aWYgKGFnZ3JlZ2F0aW9uSGVscGVyLmlzUHJvcGVydHlBZ2dyZWdhdGFibGUocmVmZXJlbmNlUHJvcGVydHkpKSB7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGggPSBkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uUmVmZXJlbmNlVmFsdWUucGF0aDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFRoZSBwcm9wZXJ0eSBpc24ndCBhZ2dyZWdhdGFibGUgLS0+IHdlIGlnbm9yZSBpdCBhbmQgc3dpdGNoIGJhY2sgdG8gdHJlbmQgJ05vbmUnXG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQudHJlbmRWYWx1ZSA9IFwiTm9uZVwiO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBSZWZlcmVuY2UgdmFsdWUgaXMgYSBzdGF0aWMgdmFsdWVcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVZhbHVlID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLlJlZmVyZW5jZVZhbHVlO1xuXHRcdH1cblx0XHRpZiAoa3BpRGVmLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlUGF0aCAhPT0gdW5kZWZpbmVkIHx8IGtwaURlZi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblRyZXNob2xkcyA9IFtcblx0XHRcdFx0ZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLlN0cm9uZ0Rvd25EaWZmZXJlbmNlLnZhbHVlT2YoKSBhcyBudW1iZXIsXG5cdFx0XHRcdGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5Eb3duRGlmZmVyZW5jZS52YWx1ZU9mKCkgYXMgbnVtYmVyLFxuXHRcdFx0XHRkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uVXBEaWZmZXJlbmNlLnZhbHVlT2YoKSBhcyBudW1iZXIsXG5cdFx0XHRcdGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5TdHJvbmdVcERpZmZlcmVuY2UudmFsdWVPZigpIGFzIG51bWJlclxuXHRcdFx0XTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZFZhbHVlID0gXCJOb25lXCI7XG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlVGFyZ2V0KGRhdGFwb2ludEFubm90YXRpb246IERhdGFQb2ludCwgYWdncmVnYXRpb25IZWxwZXI6IEFnZ3JlZ2F0aW9uSGVscGVyLCBrcGlEZWY6IEtQSURlZmluaXRpb24pOiB2b2lkIHtcblx0aWYgKGRhdGFwb2ludEFubm90YXRpb24uVGFyZ2V0VmFsdWUpIHtcblx0XHRpZiAoZGF0YXBvaW50QW5ub3RhdGlvbi5UYXJnZXRWYWx1ZS4kdGFyZ2V0KSB7XG5cdFx0XHQvLyBUYXJnZXQgdmFsdWUgaXMgYSBwYXRoIC0tPiBjaGVjayBpZiB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBpcyBhZ2dyZWdhdGFibGUgKG90aGVyd2lzZSBpZ25vcmUpXG5cdFx0XHRjb25zdCB0YXJnZXRQcm9wZXJ0eSA9IGRhdGFwb2ludEFubm90YXRpb24uVGFyZ2V0VmFsdWUuJHRhcmdldCBhcyBQcm9wZXJ0eTtcblx0XHRcdGlmIChhZ2dyZWdhdGlvbkhlbHBlci5pc1Byb3BlcnR5QWdncmVnYXRhYmxlKHRhcmdldFByb3BlcnR5KSkge1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRhcmdldFBhdGggPSBkYXRhcG9pbnRBbm5vdGF0aW9uLlRhcmdldFZhbHVlLnBhdGg7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFRhcmdldCB2YWx1ZSBpcyBhIHN0YXRpYyB2YWx1ZVxuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC50YXJnZXRWYWx1ZSA9IGRhdGFwb2ludEFubm90YXRpb24uVGFyZ2V0VmFsdWU7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGdldE5hdmlnYXRpb25JbmZvRnJvbVByb3BlcnR5KHByb3BlcnR5OiBQcm9wZXJ0eSk6IE5hdmlnYXRpb25JbmZvIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgYW5ub3RhdGlvbnM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25UZXJtPGFueT4+ID0gcHJvcGVydHkuYW5ub3RhdGlvbnNbXCJDb21tb25cIl0gfHwge307XG5cblx0Ly8gTG9vayBmb3IgdGhlIHNlbWFudGljT2JqZWN0IGFubm90YXRpb24gKGlmIGFueSlcblx0bGV0IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvbjogQW5ub3RhdGlvblRlcm08U2VtYW50aWNPYmplY3Q+IHwgdW5kZWZpbmVkO1xuXHRPYmplY3Qua2V5cyhhbm5vdGF0aW9ucykuZm9yRWFjaChhbm5vdGF0aW9uS2V5ID0+IHtcblx0XHRjb25zdCBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnNbYW5ub3RhdGlvbktleV07XG5cdFx0aWYgKGFubm90YXRpb24udGVybSA9PT0gQ29tbW9uQW5ub3RhdGlvblRlcm1zLlNlbWFudGljT2JqZWN0KSB7XG5cdFx0XHRpZiAoIWFubm90YXRpb24ucXVhbGlmaWVyIHx8ICFzZW1hbnRpY09iamVjdEFubm90YXRpb24pIHtcblx0XHRcdFx0Ly8gV2UgYWx3YXlzIHRha2UgdGhlIGFubm90YXRpb24gd2l0aG91dCBxdWFsaWZpZXIgaWYgdGhlcmUncyBvbmUsIG90aGVyd2lzZSB3ZSB0YWtlIHRoZSBmaXJzdCBvbmVcblx0XHRcdFx0c2VtYW50aWNPYmplY3RBbm5vdGF0aW9uID0gYW5ub3RhdGlvbjtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXG5cdGlmIChzZW1hbnRpY09iamVjdEFubm90YXRpb24pIHtcblx0XHRjb25zdCByZXN1bHQgPSB7XG5cdFx0XHRzZW1hbnRpY09iamVjdDogc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uLnRvU3RyaW5nKCksXG5cdFx0XHR1bmF2YWlsYWJsZUFjdGlvbnM6IFtdXG5cdFx0fTtcblxuXHRcdC8vIExvb2sgZm9yIHRoZSB1bmF2YWlsYWJsZSBhY3Rpb25zIChpZiBhbnkpXG5cdFx0Y29uc3QgYW5ub3RhdGlvbktleSA9IE9iamVjdC5rZXlzKGFubm90YXRpb25zKS5maW5kKGtleSA9PiB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRhbm5vdGF0aW9uc1trZXldLnRlcm0gPT09IENvbW1vbkFubm90YXRpb25UZXJtcy5TZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucyAmJlxuXHRcdFx0XHRhbm5vdGF0aW9uc1trZXldLnF1YWxpZmllciA9PT0gc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uPy5xdWFsaWZpZXJcblx0XHRcdCk7XG5cdFx0fSk7XG5cdFx0aWYgKGFubm90YXRpb25LZXkpIHtcblx0XHRcdHJlc3VsdC51bmF2YWlsYWJsZUFjdGlvbnMgPSBhbm5vdGF0aW9uc1thbm5vdGF0aW9uS2V5XTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlS1BJRGVmaW5pdGlvbihrcGlOYW1lOiBzdHJpbmcsIGtwaUNvbmZpZzogS1BJQ29uZmlndXJhdGlvbiwgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IEtQSURlZmluaXRpb24gfCB1bmRlZmluZWQge1xuXHRjb25zdCBrcGlDb252ZXJ0ZXJDb250ZXh0ID0gY29udmVydGVyQ29udGV4dC5nZXRDb252ZXJ0ZXJDb250ZXh0Rm9yKFwiL1wiICsga3BpQ29uZmlnLmVudGl0eVNldCk7XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uSGVscGVyID0gbmV3IEFnZ3JlZ2F0aW9uSGVscGVyKGtwaUNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLCBrcGlDb252ZXJ0ZXJDb250ZXh0KTtcblxuXHRpZiAoIWFnZ3JlZ2F0aW9uSGVscGVyLmlzQW5hbHl0aWNzU3VwcG9ydGVkKCkpIHtcblx0XHQvLyBUaGUgZW50aXR5IGRvZXNuJ3Qgc3VwcG9ydCBhbmFseXRpY2FsIHF1ZXJpZXNcblx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHQuZ2V0RGlhZ25vc3RpY3MoKVxuXHRcdFx0LmFkZElzc3VlKElzc3VlQ2F0ZWdvcnkuQW5ub3RhdGlvbiwgSXNzdWVTZXZlcml0eS5NZWRpdW0sIElzc3VlVHlwZS5LUElfSVNTVUVTLk5PX0FOQUxZVElDUyArIGtwaUNvbmZpZy5lbnRpdHlTZXQpO1xuXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGxldCBzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbjogU2VsZWN0aW9uVmFyaWFudCB8IHVuZGVmaW5lZDtcblx0bGV0IGRhdGFwb2ludEFubm90YXRpb246IERhdGFQb2ludCB8IHVuZGVmaW5lZDtcblx0bGV0IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uOiBQcmVzZW50YXRpb25WYXJpYW50IHwgdW5kZWZpbmVkO1xuXHRsZXQgY2hhcnRBbm5vdGF0aW9uOiBDaGFydCB8IHVuZGVmaW5lZDtcblx0bGV0IG5hdmlnYXRpb25JbmZvOiBOYXZpZ2F0aW9uSW5mbyB8IHVuZGVmaW5lZDtcblxuXHQvLyBTZWFyY2ggZm9yIGEgS1BJIHdpdGggdGhlIHF1YWxpZmllciBmcm1vIHRoZSBtYW5pZmVzdFxuXHRjb25zdCBhS1BJQW5ub3RhdGlvbnMgPSBrcGlDb252ZXJ0ZXJDb250ZXh0LmdldEFubm90YXRpb25zQnlUZXJtKFwiVUlcIiwgVUlBbm5vdGF0aW9uVGVybXMuS1BJKSBhcyBBbm5vdGF0aW9uVGVybTxLUElUeXBlPltdO1xuXHRjb25zdCB0YXJnZXRLUEkgPSBhS1BJQW5ub3RhdGlvbnMuZmluZChrcGkgPT4ge1xuXHRcdHJldHVybiBrcGkucXVhbGlmaWVyID09PSBrcGlDb25maWcucXVhbGlmaWVyO1xuXHR9KTtcblx0aWYgKHRhcmdldEtQSSkge1xuXHRcdGRhdGFwb2ludEFubm90YXRpb24gPSB0YXJnZXRLUEkuRGF0YVBvaW50O1xuXHRcdHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gdGFyZ2V0S1BJLlNlbGVjdGlvblZhcmlhbnQ7XG5cdFx0cHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24gPSB0YXJnZXRLUEkuRGV0YWlsPy5EZWZhdWx0UHJlc2VudGF0aW9uVmFyaWFudDtcblx0XHRjaGFydEFubm90YXRpb24gPSBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbj8uVmlzdWFsaXphdGlvbnM/LmZpbmQoKHZpejogYW55KSA9PiB7XG5cdFx0XHRyZXR1cm4gdml6LiR0YXJnZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNoYXJ0RGVmaW5pdGlvblR5cGU7XG5cdFx0fSk/LiR0YXJnZXQgYXMgQ2hhcnQ7XG5cblx0XHRpZiAodGFyZ2V0S1BJLkRldGFpbD8uU2VtYW50aWNPYmplY3QpIHtcblx0XHRcdG5hdmlnYXRpb25JbmZvID0ge1xuXHRcdFx0XHRzZW1hbnRpY09iamVjdDogdGFyZ2V0S1BJLkRldGFpbC5TZW1hbnRpY09iamVjdC50b1N0cmluZygpLFxuXHRcdFx0XHRhY3Rpb246IHRhcmdldEtQSS5EZXRhaWwuQWN0aW9uPy50b1N0cmluZygpLFxuXHRcdFx0XHR1bmF2YWlsYWJsZUFjdGlvbnM6IFtdXG5cdFx0XHR9O1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHQvLyBGYWxsYmFjazogdHJ5IHRvIGZpbmQgYSBTUFYgd2l0aCB0aGUgc2FtZSBxdWFsaWZpZXJcblx0XHRjb25zdCBhU1BWQW5ub3RhdGlvbnMgPSBrcGlDb252ZXJ0ZXJDb250ZXh0LmdldEFubm90YXRpb25zQnlUZXJtKFxuXHRcdFx0XCJVSVwiLFxuXHRcdFx0VUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdCkgYXMgQW5ub3RhdGlvblRlcm08U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFR5cGU+W107XG5cdFx0Y29uc3QgdGFyZ2V0U1BWID0gYVNQVkFubm90YXRpb25zLmZpbmQoc3B2ID0+IHtcblx0XHRcdHJldHVybiBzcHYucXVhbGlmaWVyID09PSBrcGlDb25maWcucXVhbGlmaWVyO1xuXHRcdH0pO1xuXHRcdGlmICh0YXJnZXRTUFYpIHtcblx0XHRcdHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gdGFyZ2V0U1BWLlNlbGVjdGlvblZhcmlhbnQ7XG5cdFx0XHRwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiA9IHRhcmdldFNQVi5QcmVzZW50YXRpb25WYXJpYW50O1xuXHRcdFx0ZGF0YXBvaW50QW5ub3RhdGlvbiA9IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uPy5WaXN1YWxpemF0aW9ucz8uZmluZCgodml6OiBhbnkpID0+IHtcblx0XHRcdFx0cmV0dXJuIHZpei4kdGFyZ2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlO1xuXHRcdFx0fSk/LiR0YXJnZXQgYXMgRGF0YVBvaW50O1xuXHRcdFx0Y2hhcnRBbm5vdGF0aW9uID0gcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24/LlZpc3VhbGl6YXRpb25zPy5maW5kKCh2aXo6IGFueSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdml6LiR0YXJnZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNoYXJ0RGVmaW5pdGlvblR5cGU7XG5cdFx0XHR9KT8uJHRhcmdldCBhcyBDaGFydDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gQ291bGRuJ3QgZmluZCBhIEtQSSBvciBhIFNQViBhbm5vdGF0aW9uIHdpdGggdGhlIHF1YWxpZmllciBmcm9tIHRoZSBtYW5pZmVzdFxuXHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHQuZ2V0RGlhZ25vc3RpY3MoKVxuXHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5Lk1lZGl1bSwgSXNzdWVUeXBlLktQSV9JU1NVRVMuS1BJX05PVF9GT1VORCArIGtwaUNvbmZpZy5xdWFsaWZpZXIpO1xuXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdGlmICghcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24gfHwgIWRhdGFwb2ludEFubm90YXRpb24gfHwgIWNoYXJ0QW5ub3RhdGlvbikge1xuXHRcdC8vIENvdWxkbid0IGZpbmQgYSBjaGFydCBvciBkYXRhcG9pbnQgZGVmaW5pdGlvblxuXHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5Lk1lZGl1bSwgSXNzdWVUeXBlLktQSV9JU1NVRVMuS1BJX0RFVEFJTF9OT1RfRk9VTkQgKyBrcGlDb25maWcucXVhbGlmaWVyKTtcblxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRjb25zdCBkYXRhcG9pbnRQcm9wZXJ0eSA9IGRhdGFwb2ludEFubm90YXRpb24uVmFsdWUuJHRhcmdldCBhcyBQcm9wZXJ0eTtcblx0aWYgKCFhZ2dyZWdhdGlvbkhlbHBlci5pc1Byb3BlcnR5QWdncmVnYXRhYmxlKGRhdGFwb2ludFByb3BlcnR5KSkge1xuXHRcdC8vIFRoZSBtYWluIHByb3BlcnR5IG9mIHRoZSBLUEkgaXMgbm90IGFnZ3JlZ2F0YWJsZSAtLT4gV2UgY2FuJ3QgY2FsY3VsYXRlIGl0cyB2YWx1ZSBzbyB3ZSBpZ25vcmUgdGhlIEtQSVxuXHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHQuYWRkSXNzdWUoXG5cdFx0XHRcdElzc3VlQ2F0ZWdvcnkuQW5ub3RhdGlvbixcblx0XHRcdFx0SXNzdWVTZXZlcml0eS5NZWRpdW0sXG5cdFx0XHRcdElzc3VlVHlwZS5LUElfSVNTVUVTLk1BSU5fUFJPUEVSVFlfTk9UX0FHR1JFR0FUQUJMRSArIGtwaUNvbmZpZy5xdWFsaWZpZXJcblx0XHRcdCk7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8vIENoYXJ0IGRlZmluaXRpb25cblx0Y29uc3QgY2hhcnREZWYgPSBjb252ZXJ0S1BJQ2hhcnQoY2hhcnRBbm5vdGF0aW9uLCBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbik7XG5cdGlmICghY2hhcnREZWYpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Y29uc3Qga3BpRGVmOiBLUElEZWZpbml0aW9uID0ge1xuXHRcdGlkOiBLUElJRChrcGlOYW1lKSxcblx0XHRlbnRpdHlTZXQ6IGtwaUNvbmZpZy5lbnRpdHlTZXQsXG5cdFx0ZGF0YXBvaW50OiB7XG5cdFx0XHRwcm9wZXJ0eVBhdGg6IGRhdGFwb2ludEFubm90YXRpb24uVmFsdWUucGF0aCxcblx0XHRcdGFubm90YXRpb25QYXRoOiBrcGlDb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YXBvaW50QW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUpLFxuXHRcdFx0dGl0bGU6IGRhdGFwb2ludEFubm90YXRpb24uVGl0bGU/LnRvU3RyaW5nKCksXG5cdFx0XHRkZXNjcmlwdGlvbjogZGF0YXBvaW50QW5ub3RhdGlvbi5EZXNjcmlwdGlvbj8udG9TdHJpbmcoKVxuXHRcdH0sXG5cdFx0c2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zOiBzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvblxuXHRcdFx0PyBnZXRGaWx0ZXJEZWZpbml0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50KHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uKVxuXHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0Y2hhcnQ6IGNoYXJ0RGVmXG5cdH07XG5cblx0Ly8gTmF2aWdhdGlvblxuXHRpZiAoIW5hdmlnYXRpb25JbmZvKSB7XG5cdFx0Ly8gTm8gbmF2aWdhdGlvbkluZm8gd2FzIGZvdW5kIGluIHRoZSBLUEkgYW5ub3RhdGlvbiAtLT4gdHJ5IHRoZSBvdXRib3VuZCBuYXZpZ2F0aW9uIGZyb20gdGhlIG1hbmlmZXN0XG5cdFx0aWYgKGtwaUNvbmZpZy5kZXRhaWxOYXZpZ2F0aW9uKSB7XG5cdFx0XHRuYXZpZ2F0aW9uSW5mbyA9IHtcblx0XHRcdFx0b3V0Ym91bmROYXZpZ2F0aW9uOiBrcGlDb25maWcuZGV0YWlsTmF2aWdhdGlvblxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gTm8gb3V0Ym91bmQgbmF2aWdhdGlvbiBpbiB0aGUgbWFuaWZlc3QgLS0+IHRyeSB0aGUgc2VtYW50aWMgb2JqZWN0IG9uIHRoZSBEYXRhcG9pbnQgdmFsdWVcblx0XHRcdG5hdmlnYXRpb25JbmZvID0gZ2V0TmF2aWdhdGlvbkluZm9Gcm9tUHJvcGVydHkoZGF0YXBvaW50UHJvcGVydHkpO1xuXHRcdH1cblx0fVxuXHRpZiAobmF2aWdhdGlvbkluZm8pIHtcblx0XHRrcGlEZWYubmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JbmZvO1xuXHR9XG5cblx0dXBkYXRlQ3VycmVuY3koZGF0YXBvaW50QW5ub3RhdGlvbiwga3BpRGVmKTtcblx0dXBkYXRlQ3JpdGljYWxpdHkoZGF0YXBvaW50QW5ub3RhdGlvbiwgYWdncmVnYXRpb25IZWxwZXIsIGtwaURlZik7XG5cdHVwZGF0ZVRyZW5kKGRhdGFwb2ludEFubm90YXRpb24sIGFnZ3JlZ2F0aW9uSGVscGVyLCBrcGlEZWYpO1xuXHR1cGRhdGVUYXJnZXQoZGF0YXBvaW50QW5ub3RhdGlvbiwgYWdncmVnYXRpb25IZWxwZXIsIGtwaURlZik7XG5cblx0cmV0dXJuIGtwaURlZjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBLUEkgZGVmaW5pdGlvbnMgZnJvbSB0aGUgbWFuaWZlc3QgYW5kIHRoZSBhbm5vdGF0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0IGZvciB0aGUgcGFnZVxuICogQHJldHVybnMge0tQSURlZmluaXRpb25bXX0gUmV0dXJucyBhbiBhcnJheSBvZiBLUEkgZGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEtQSURlZmluaXRpb25zKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBLUElEZWZpbml0aW9uW10ge1xuXHRjb25zdCBrcGlDb25maWdzID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5nZXRLUElDb25maWd1cmF0aW9uKCksXG5cdFx0a3BpRGVmczogS1BJRGVmaW5pdGlvbltdID0gW107XG5cblx0T2JqZWN0LmtleXMoa3BpQ29uZmlncykuZm9yRWFjaChrcGlOYW1lID0+IHtcblx0XHRjb25zdCBvRGVmID0gY3JlYXRlS1BJRGVmaW5pdGlvbihrcGlOYW1lLCBrcGlDb25maWdzW2twaU5hbWVdLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRpZiAob0RlZikge1xuXHRcdFx0a3BpRGVmcy5wdXNoKG9EZWYpO1xuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIGtwaURlZnM7XG59XG4iXX0=
|
|
424
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIktQSS50cyJdLCJuYW1lcyI6WyJEZXZpYXRpb25JbmRpY2F0b3JGcm9tVHJlbmRUeXBlIiwiS1BJQ2hhcnRUeXBlRnJvbVVJIiwiY29udmVydEtQSUNoYXJ0IiwiY2hhcnRBbm5vdGF0aW9uIiwicHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24iLCJNZWFzdXJlcyIsInVuZGVmaW5lZCIsImNoYXJEaW1lbnNpb25zIiwiRGltZW5zaW9ucyIsIm1hcCIsInByb3BlcnR5UGF0aCIsImRpbUF0dHJpYnV0ZSIsIkRpbWVuc2lvbkF0dHJpYnV0ZXMiLCJmaW5kIiwiYXR0cmlidXRlIiwiRGltZW5zaW9uIiwidmFsdWUiLCJuYW1lIiwibGFiZWwiLCIkdGFyZ2V0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJMYWJlbCIsInRvU3RyaW5nIiwicm9sZSIsIlJvbGUiLCJyZXBsYWNlIiwiY2hhcnRNZWFzdXJlcyIsIm1lYXN1cmVBdHRyaWJ1dGUiLCJNZWFzdXJlQXR0cmlidXRlcyIsIk1lYXN1cmUiLCJjaGFydFR5cGUiLCJDaGFydFR5cGUiLCJkaW1lbnNpb25zIiwibWVhc3VyZXMiLCJzb3J0T3JkZXIiLCJTb3J0T3JkZXIiLCJQcm9wZXJ0eSIsImRlc2NlbmRpbmciLCJEZXNjZW5kaW5nIiwibWF4SXRlbXMiLCJNYXhJdGVtcyIsInZhbHVlT2YiLCJ1cGRhdGVDdXJyZW5jeSIsImRhdGFwb2ludEFubm90YXRpb24iLCJrcGlEZWYiLCJ0YXJnZXRWYWx1ZVByb3BlcnR5IiwiVmFsdWUiLCJJU09DdXJyZW5jeSIsImN1cnJlbmN5IiwiaXNQYXRoRXhwcmVzc2lvbiIsImRhdGFwb2ludCIsInVuaXQiLCJpc0N1cnJlbmN5IiwiaXNQYXRoIiwiVW5pdCIsInVwZGF0ZUNyaXRpY2FsaXR5IiwiYWdncmVnYXRpb25IZWxwZXIiLCJDcml0aWNhbGl0eSIsImNyaXRpY2FsaXR5UHJvcGVydHkiLCJpc1Byb3BlcnR5QWdncmVnYXRhYmxlIiwiY3JpdGljYWxpdHlQYXRoIiwicGF0aCIsImNyaXRpY2FsaXR5VmFsdWUiLCJNZXNzYWdlVHlwZSIsIk5vbmUiLCJnZXRNZXNzYWdlVHlwZUZyb21Dcml0aWNhbGl0eVR5cGUiLCJDcml0aWNhbGl0eUNhbGN1bGF0aW9uIiwiY3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGUiLCJJbXByb3ZlbWVudERpcmVjdGlvbiIsImNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzIiwicHVzaCIsIkRldmlhdGlvblJhbmdlTG93VmFsdWUiLCJUb2xlcmFuY2VSYW5nZUxvd1ZhbHVlIiwiQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUiLCJBY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUiLCJUb2xlcmFuY2VSYW5nZUhpZ2hWYWx1ZSIsIkRldmlhdGlvblJhbmdlSGlnaFZhbHVlIiwidXBkYXRlVHJlbmQiLCJUcmVuZCIsInRyZW5kUHJvcGVydHkiLCJ0cmVuZFBhdGgiLCJ0cmVuZFZhbHVlIiwiVHJlbmRDYWxjdWxhdGlvbiIsInRyZW5kQ2FsY3VsYXRpb25Jc1JlbGF0aXZlIiwiSXNSZWxhdGl2ZURpZmZlcmVuY2UiLCJSZWZlcmVuY2VWYWx1ZSIsInJlZmVyZW5jZVByb3BlcnR5IiwidHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGgiLCJ0cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlVmFsdWUiLCJ0cmVuZENhbGN1bGF0aW9uVHJlc2hvbGRzIiwiU3Ryb25nRG93bkRpZmZlcmVuY2UiLCJEb3duRGlmZmVyZW5jZSIsIlVwRGlmZmVyZW5jZSIsIlN0cm9uZ1VwRGlmZmVyZW5jZSIsInVwZGF0ZVRhcmdldCIsIlRhcmdldFZhbHVlIiwidGFyZ2V0UHJvcGVydHkiLCJ0YXJnZXRQYXRoIiwidGFyZ2V0VmFsdWUiLCJnZXROYXZpZ2F0aW9uSW5mb0Zyb21Qcm9wZXJ0eSIsInByb3BlcnR5Iiwic2VtYW50aWNPYmplY3RBbm5vdGF0aW9uIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJhbm5vdGF0aW9uS2V5IiwiYW5ub3RhdGlvbiIsInRlcm0iLCJxdWFsaWZpZXIiLCJyZXN1bHQiLCJzZW1hbnRpY09iamVjdCIsInVuYXZhaWxhYmxlQWN0aW9ucyIsImtleSIsImNyZWF0ZUtQSURlZmluaXRpb24iLCJrcGlOYW1lIiwia3BpQ29uZmlnIiwiY29udmVydGVyQ29udGV4dCIsImtwaUNvbnZlcnRlckNvbnRleHQiLCJnZXRDb252ZXJ0ZXJDb250ZXh0Rm9yIiwiZW50aXR5U2V0IiwiQWdncmVnYXRpb25IZWxwZXIiLCJnZXRFbnRpdHlUeXBlIiwiaXNBbmFseXRpY3NTdXBwb3J0ZWQiLCJnZXREaWFnbm9zdGljcyIsImFkZElzc3VlIiwiSXNzdWVDYXRlZ29yeSIsIkFubm90YXRpb24iLCJJc3N1ZVNldmVyaXR5IiwiTWVkaXVtIiwiSXNzdWVUeXBlIiwiS1BJX0lTU1VFUyIsIk5PX0FOQUxZVElDUyIsInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwibmF2aWdhdGlvbkluZm8iLCJhS1BJQW5ub3RhdGlvbnMiLCJnZXRBbm5vdGF0aW9uc0J5VGVybSIsInRhcmdldEtQSSIsImtwaSIsIkRhdGFQb2ludCIsIlNlbGVjdGlvblZhcmlhbnQiLCJEZXRhaWwiLCJEZWZhdWx0UHJlc2VudGF0aW9uVmFyaWFudCIsIlZpc3VhbGl6YXRpb25zIiwidml6IiwiJFR5cGUiLCJTZW1hbnRpY09iamVjdCIsImFjdGlvbiIsIkFjdGlvbiIsImFTUFZBbm5vdGF0aW9ucyIsInRhcmdldFNQViIsInNwdiIsIlByZXNlbnRhdGlvblZhcmlhbnQiLCJLUElfTk9UX0ZPVU5EIiwiS1BJX0RFVEFJTF9OT1RfRk9VTkQiLCJkYXRhcG9pbnRQcm9wZXJ0eSIsIk1BSU5fUFJPUEVSVFlfTk9UX0FHR1JFR0FUQUJMRSIsImNoYXJ0RGVmIiwiaWQiLCJLUElJRCIsImFubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInRpdGxlIiwiVGl0bGUiLCJkZXNjcmlwdGlvbiIsIkRlc2NyaXB0aW9uIiwic2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zIiwiZ2V0RmlsdGVyRGVmaW5pdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsImNoYXJ0IiwiZGV0YWlsTmF2aWdhdGlvbiIsIm91dGJvdW5kTmF2aWdhdGlvbiIsIm5hdmlnYXRpb24iLCJnZXRLUElEZWZpbml0aW9ucyIsImtwaUNvbmZpZ3MiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJnZXRLUElDb25maWd1cmF0aW9uIiwia3BpRGVmcyIsIm9EZWYiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQTBFQSxNQUFNQSwrQkFBdUQsR0FBRztBQUMvRCw2QkFBeUIsSUFEc0M7QUFFL0QsdUJBQW1CLElBRjRDO0FBRy9ELCtCQUEyQixNQUhvQztBQUkvRCx5QkFBcUIsTUFKMEM7QUFLL0QsNkJBQXlCO0FBTHNDLEdBQWhFO0FBUUEsTUFBTUMsa0JBQTBDLEdBQUc7QUFDbEQsa0NBQThCLGVBRG9CO0FBRWxELCtCQUEyQixZQUZ1QjtBQUdsRCwwQkFBc0IsT0FINEI7QUFJbEQseUJBQXFCLE1BSjZCO0FBS2xELDJCQUF1QixRQUwyQjtBQU1sRCwyQkFBdUIsUUFOMkI7QUFPbEQsd0JBQW9CLEtBUDhCO0FBUWxELG1DQUErQixpQkFSbUI7QUFTbEQsZ0NBQTRCLGFBVHNCO0FBVWxELDRCQUF3QjtBQVYwQixHQUFuRDs7QUFhQSxXQUFTQyxlQUFULENBQXlCQyxlQUF6QixFQUFpREMsNkJBQWpELEVBQXFJO0FBQUE7O0FBQ3BJLFFBQUlELGVBQWUsQ0FBQ0UsUUFBaEIsS0FBNkJDLFNBQWpDLEVBQTRDO0FBQzNDO0FBQ0EsYUFBT0EsU0FBUDtBQUNBOztBQUVELFFBQU1DLGNBQWMsR0FBR0osZUFBZSxDQUFDSyxVQUFoQixHQUNuQkwsZUFBZSxDQUFDSyxVQUFqQixDQUErQ0MsR0FBL0MsQ0FBbUQsVUFBQUMsWUFBWSxFQUFJO0FBQUE7O0FBQ25FLFVBQU1DLFlBQVksNEJBQUdSLGVBQWUsQ0FBQ1MsbUJBQW5C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O0FBQ0E7QUFDRCxLQUxEO0FBT0EsV0FBT0QsT0FBUDtBQUNBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLUElDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvYW5ub3RhdGlvbi1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7XG5cdEFubm90YXRpb25UZXJtLFxuXHRVSUFubm90YXRpb25UZXJtcyxcblx0VUlBbm5vdGF0aW9uVHlwZXMsXG5cdFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0Q3JpdGljYWxpdHlUeXBlLFxuXHRJbXByb3ZlbWVudERpcmVjdGlvblR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQge1xuXHRLUElUeXBlLFxuXHRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50VHlwZSxcblx0UHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudCxcblx0RGF0YVBvaW50LFxuXHRDaGFydCxcblx0VHJlbmRUeXBlXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9kaXN0L2dlbmVyYXRlZC9VSVwiO1xuaW1wb3J0IHsgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL2Rpc3QvRWRtXCI7XG5pbXBvcnQgQ29udmVydGVyQ29udGV4dCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgeyBLUElJRCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgeyBpc1BhdGhFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB7IE1lc3NhZ2VUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVGFibGVGb3JtYXR0ZXJUeXBlc1wiO1xuaW1wb3J0IHsgQWdncmVnYXRpb25IZWxwZXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IHsgSXNzdWVDYXRlZ29yeSwgSXNzdWVTZXZlcml0eSwgSXNzdWVUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Jc3N1ZU1hbmFnZXJcIjtcbmltcG9ydCB7IGdldE1lc3NhZ2VUeXBlRnJvbUNyaXRpY2FsaXR5VHlwZSB9IGZyb20gXCIuL0NyaXRpY2FsaXR5XCI7XG5pbXBvcnQgeyBnZXRGaWx0ZXJEZWZpbml0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50LCBGaWx0ZXJEZWZpbml0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9TZWxlY3Rpb25WYXJpYW50SGVscGVyXCI7XG5pbXBvcnQgeyBDb21tb25Bbm5vdGF0aW9uVGVybXMsIFNlbWFudGljT2JqZWN0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL2Rpc3QvZ2VuZXJhdGVkL0NvbW1vblwiO1xuXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uSW5mbyA9IHtcblx0c2VtYW50aWNPYmplY3Q/OiBzdHJpbmc7XG5cdGFjdGlvbj86IHN0cmluZztcblx0dW5hdmFpbGFibGVBY3Rpb25zPzogc3RyaW5nW107XG5cdG91dGJvdW5kTmF2aWdhdGlvbj86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEtQSUNoYXJ0RGVmaW5pdGlvbiA9IHtcblx0Y2hhcnRUeXBlOiBzdHJpbmc7XG5cdGRpbWVuc2lvbnM6IHsgbmFtZTogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyByb2xlPzogc3RyaW5nIH1bXTtcblx0bWVhc3VyZXM6IHsgbmFtZTogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyByb2xlPzogc3RyaW5nIH1bXTtcblx0c29ydE9yZGVyPzogeyBuYW1lOiBzdHJpbmc7IGRlc2NlbmRpbmc6IGJvb2xlYW4gfVtdO1xuXHRtYXhJdGVtcz86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEtQSURlZmluaXRpb24gPSB7XG5cdGlkOiBzdHJpbmc7XG5cdGVudGl0eVNldDogc3RyaW5nO1xuXHRkYXRhcG9pbnQ6IHtcblx0XHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRcdHByb3BlcnR5UGF0aDogc3RyaW5nO1xuXHRcdHVuaXQ/OiB7XG5cdFx0XHR2YWx1ZTogc3RyaW5nO1xuXHRcdFx0aXNQYXRoOiBib29sZWFuO1xuXHRcdFx0aXNDdXJyZW5jeTogYm9vbGVhbjtcblx0XHR9O1xuXHRcdGNyaXRpY2FsaXR5UGF0aD86IHN0cmluZztcblx0XHRjcml0aWNhbGl0eVZhbHVlPzogTWVzc2FnZVR5cGU7XG5cdFx0Y3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGU/OiBJbXByb3ZlbWVudERpcmVjdGlvblR5cGU7XG5cdFx0Y3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHM/OiAobnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbClbXTtcblx0XHR0aXRsZT86IHN0cmluZztcblx0XHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0XHR0cmVuZFBhdGg/OiBzdHJpbmc7XG5cdFx0dHJlbmRWYWx1ZT86IHN0cmluZztcblx0XHR0cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlVmFsdWU/OiBudW1iZXI7XG5cdFx0dHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGg/OiBzdHJpbmc7XG5cdFx0dHJlbmRDYWxjdWxhdGlvblRyZXNob2xkcz86IChudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKVtdO1xuXHRcdHRyZW5kQ2FsY3VsYXRpb25Jc1JlbGF0aXZlPzogYm9vbGVhbjtcblx0XHR0YXJnZXRWYWx1ZT86IG51bWJlcjtcblx0XHR0YXJnZXRQYXRoPzogc3RyaW5nO1xuXHR9O1xuXHRjaGFydDogS1BJQ2hhcnREZWZpbml0aW9uO1xuXHRzZWxlY3Rpb25WYXJpYW50RmlsdGVyRGVmaW5pdGlvbnM/OiBGaWx0ZXJEZWZpbml0aW9uW107XG5cdG5hdmlnYXRpb24/OiBOYXZpZ2F0aW9uSW5mbztcbn07XG5cbmNvbnN0IERldmlhdGlvbkluZGljYXRvckZyb21UcmVuZFR5cGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG5cdFwiVUkuVHJlbmRUeXBlL1N0cm9uZ1VwXCI6IFwiVXBcIixcblx0XCJVSS5UcmVuZFR5cGUvVXBcIjogXCJVcFwiLFxuXHRcIlVJLlRyZW5kVHlwZS9TdHJvbmdEb3duXCI6IFwiRG93blwiLFxuXHRcIlVJLlRyZW5kVHlwZS9Eb3duXCI6IFwiRG93blwiLFxuXHRcIlVJLlRyZW5kVHlwZS9TaWRld2F5c1wiOiBcIk5vbmVcIlxufTtcblxuY29uc3QgS1BJQ2hhcnRUeXBlRnJvbVVJOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuXHRcIlVJLkNoYXJ0VHlwZS9Db2x1bW5TdGFja2VkXCI6IFwiU3RhY2tlZENvbHVtblwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9CYXJTdGFja2VkXCI6IFwiU3RhY2tlZEJhclwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9Eb251dFwiOiBcIkRvbnV0XCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0xpbmVcIjogXCJMaW5lXCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0J1YmJsZVwiOiBcImJ1YmJsZVwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9Db2x1bW5cIjogXCJjb2x1bW5cIixcblx0XCJVSS5DaGFydFR5cGUvQmFyXCI6IFwiYmFyXCIsXG5cdFwiVUkuQ2hhcnRUeXBlL1ZlcnRpY2FsQnVsbGV0XCI6IFwidmVydGljYWxfYnVsbGV0XCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0NvbWJpbmF0aW9uXCI6IFwiY29tYmluYXRpb25cIixcblx0XCJVSS5DaGFydFR5cGUvU2NhdHRlclwiOiBcInNjYXR0ZXJcIlxufTtcblxuZnVuY3Rpb24gY29udmVydEtQSUNoYXJ0KGNoYXJ0QW5ub3RhdGlvbjogQ2hhcnQsIHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uOiBQcmVzZW50YXRpb25WYXJpYW50KTogS1BJQ2hhcnREZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcblx0aWYgKGNoYXJ0QW5ub3RhdGlvbi5NZWFzdXJlcyA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0Ly8gV2UgbmVlZCBhdCBsZWFzdCAxIG1lYXN1cmUgKGJ1dCBubyBkaW1lbnNpb24gaXMgYWxsb3dlZCwgZS5nLiBmb3IgYnViYmxlIGNoYXJ0KVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRjb25zdCBjaGFyRGltZW5zaW9ucyA9IGNoYXJ0QW5ub3RhdGlvbi5EaW1lbnNpb25zXG5cdFx0PyAoY2hhcnRBbm5vdGF0aW9uLkRpbWVuc2lvbnMgYXMgUHJvcGVydHlQYXRoW10pLm1hcChwcm9wZXJ0eVBhdGggPT4ge1xuXHRcdFx0XHRjb25zdCBkaW1BdHRyaWJ1dGUgPSBjaGFydEFubm90YXRpb24uRGltZW5zaW9uQXR0cmlidXRlcz8uZmluZChhdHRyaWJ1dGUgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBhdHRyaWJ1dGUuRGltZW5zaW9uPy52YWx1ZSA9PT0gcHJvcGVydHlQYXRoLnZhbHVlO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRuYW1lOiBwcm9wZXJ0eVBhdGgudmFsdWUsXG5cdFx0XHRcdFx0bGFiZWw6IHByb3BlcnR5UGF0aC4kdGFyZ2V0LmFubm90YXRpb25zLkNvbW1vbj8uTGFiZWw/LnRvU3RyaW5nKCkgfHwgcHJvcGVydHlQYXRoLnZhbHVlLFxuXHRcdFx0XHRcdHJvbGU6IGRpbUF0dHJpYnV0ZT8uUm9sZT8ucmVwbGFjZShcIlVJLkNoYXJ0RGltZW5zaW9uUm9sZVR5cGUvXCIsIFwiXCIpXG5cdFx0XHRcdH07XG5cdFx0ICB9KVxuXHRcdDogW107XG5cblx0Y29uc3QgY2hhcnRNZWFzdXJlcyA9IChjaGFydEFubm90YXRpb24uTWVhc3VyZXMgYXMgUHJvcGVydHlQYXRoW10pLm1hcChwcm9wZXJ0eVBhdGggPT4ge1xuXHRcdGNvbnN0IG1lYXN1cmVBdHRyaWJ1dGUgPSBjaGFydEFubm90YXRpb24uTWVhc3VyZUF0dHJpYnV0ZXM/LmZpbmQoYXR0cmlidXRlID0+IHtcblx0XHRcdHJldHVybiBhdHRyaWJ1dGUuTWVhc3VyZT8udmFsdWUgPT09IHByb3BlcnR5UGF0aC52YWx1ZTtcblx0XHR9KTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0bmFtZTogcHJvcGVydHlQYXRoLnZhbHVlLFxuXHRcdFx0bGFiZWw6IHByb3BlcnR5UGF0aC4kdGFyZ2V0LmFubm90YXRpb25zLkNvbW1vbj8uTGFiZWw/LnRvU3RyaW5nKCkgfHwgcHJvcGVydHlQYXRoLnZhbHVlLFxuXHRcdFx0cm9sZTogbWVhc3VyZUF0dHJpYnV0ZT8uUm9sZT8ucmVwbGFjZShcIlVJLkNoYXJ0TWVhc3VyZVJvbGVUeXBlL1wiLCBcIlwiKVxuXHRcdH07XG5cdH0pO1xuXG5cdHJldHVybiB7XG5cdFx0Y2hhcnRUeXBlOiBLUElDaGFydFR5cGVGcm9tVUlbY2hhcnRBbm5vdGF0aW9uLkNoYXJ0VHlwZV0gfHwgXCJMaW5lXCIsXG5cdFx0ZGltZW5zaW9uczogY2hhckRpbWVuc2lvbnMsXG5cdFx0bWVhc3VyZXM6IGNoYXJ0TWVhc3VyZXMsXG5cdFx0c29ydE9yZGVyOiBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbj8uU29ydE9yZGVyPy5tYXAoc29ydE9yZGVyID0+IHtcblx0XHRcdHJldHVybiB7IG5hbWU6IHNvcnRPcmRlci5Qcm9wZXJ0eT8udmFsdWUgfHwgXCJcIiwgZGVzY2VuZGluZzogISFzb3J0T3JkZXIuRGVzY2VuZGluZyB9O1xuXHRcdH0pLFxuXHRcdG1heEl0ZW1zOiBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbj8uTWF4SXRlbXM/LnZhbHVlT2YoKSBhcyBudW1iZXJcblx0fTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQ3VycmVuY3koZGF0YXBvaW50QW5ub3RhdGlvbjogRGF0YVBvaW50LCBrcGlEZWY6IEtQSURlZmluaXRpb24pOiB2b2lkIHtcblx0Y29uc3QgdGFyZ2V0VmFsdWVQcm9wZXJ0eSA9IGRhdGFwb2ludEFubm90YXRpb24uVmFsdWUuJHRhcmdldCBhcyBQcm9wZXJ0eTtcblx0aWYgKHRhcmdldFZhbHVlUHJvcGVydHkuYW5ub3RhdGlvbnMuTWVhc3VyZXM/LklTT0N1cnJlbmN5KSB7XG5cdFx0Y29uc3QgY3VycmVuY3kgPSB0YXJnZXRWYWx1ZVByb3BlcnR5LmFubm90YXRpb25zLk1lYXN1cmVzPy5JU09DdXJyZW5jeTtcblx0XHRpZiAoaXNQYXRoRXhwcmVzc2lvbihjdXJyZW5jeSkpIHtcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudW5pdCA9IHtcblx0XHRcdFx0dmFsdWU6ICgoY3VycmVuY3kuJHRhcmdldCBhcyB1bmtub3duKSBhcyBQcm9wZXJ0eSkubmFtZSxcblx0XHRcdFx0aXNDdXJyZW5jeTogdHJ1ZSxcblx0XHRcdFx0aXNQYXRoOiB0cnVlXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnVuaXQgPSB7XG5cdFx0XHRcdHZhbHVlOiBjdXJyZW5jeS50b1N0cmluZygpLFxuXHRcdFx0XHRpc0N1cnJlbmN5OiB0cnVlLFxuXHRcdFx0XHRpc1BhdGg6IGZhbHNlXG5cdFx0XHR9O1xuXHRcdH1cblx0fSBlbHNlIGlmICh0YXJnZXRWYWx1ZVByb3BlcnR5LmFubm90YXRpb25zLk1lYXN1cmVzPy5Vbml0KSB7XG5cdFx0Y29uc3QgdW5pdCA9IHRhcmdldFZhbHVlUHJvcGVydHkuYW5ub3RhdGlvbnMuTWVhc3VyZXM/LlVuaXQ7XG5cdFx0aWYgKGlzUGF0aEV4cHJlc3Npb24odW5pdCkpIHtcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudW5pdCA9IHtcblx0XHRcdFx0dmFsdWU6ICgodW5pdC4kdGFyZ2V0IGFzIHVua25vd24pIGFzIFByb3BlcnR5KS5uYW1lLFxuXHRcdFx0XHRpc0N1cnJlbmN5OiBmYWxzZSxcblx0XHRcdFx0aXNQYXRoOiB0cnVlXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnVuaXQgPSB7XG5cdFx0XHRcdHZhbHVlOiB1bml0LnRvU3RyaW5nKCksXG5cdFx0XHRcdGlzQ3VycmVuY3k6IGZhbHNlLFxuXHRcdFx0XHRpc1BhdGg6IGZhbHNlXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiB1cGRhdGVDcml0aWNhbGl0eShkYXRhcG9pbnRBbm5vdGF0aW9uOiBEYXRhUG9pbnQsIGFnZ3JlZ2F0aW9uSGVscGVyOiBBZ2dyZWdhdGlvbkhlbHBlciwga3BpRGVmOiBLUElEZWZpbml0aW9uKTogdm9pZCB7XG5cdGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5KSB7XG5cdFx0aWYgKHR5cGVvZiBkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5ID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHQvLyBDcml0aWNhbGl0eSBpcyBhIHBhdGggLS0+IGNoZWNrIGlmIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGlzIGFnZ3JlZ2F0YWJsZVxuXHRcdFx0Y29uc3QgY3JpdGljYWxpdHlQcm9wZXJ0eSA9ICgoZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eSBhcyBhbnkpIGFzIFByb3BlcnR5UGF0aCkuJHRhcmdldCBhcyBQcm9wZXJ0eTtcblx0XHRcdGlmIChhZ2dyZWdhdGlvbkhlbHBlci5pc1Byb3BlcnR5QWdncmVnYXRhYmxlKGNyaXRpY2FsaXR5UHJvcGVydHkpKSB7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlQYXRoID0gKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkgYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPENyaXRpY2FsaXR5VHlwZT4pLnBhdGg7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBUaGUgcHJvcGVydHkgaXNuJ3QgYWdncmVnYXRhYmxlIC0tPiB3ZSBpZ25vcmUgaXRcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gQ3JpdGljYWxpdHkgaXMgYW4gZW51bSBWYWx1ZSAtLT4gZ2V0IHRoZSBjb3JyZXNwb25kaW5nIHN0YXRpYyB2YWx1ZVxuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlID0gZ2V0TWVzc2FnZVR5cGVGcm9tQ3JpdGljYWxpdHlUeXBlKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24pIHtcblx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25Nb2RlID0gZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkltcHJvdmVtZW50RGlyZWN0aW9uO1xuXHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMgPSBbXTtcblx0XHRzd2l0Y2ggKGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGUpIHtcblx0XHRcdGNhc2UgXCJVSS5JbXByb3ZlbWVudERpcmVjdGlvblR5cGUvVGFyZ2V0XCI6XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uRGV2aWF0aW9uUmFuZ2VMb3dWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uVG9sZXJhbmNlUmFuZ2VMb3dWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkFjY2VwdGFuY2VSYW5nZUhpZ2hWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uVG9sZXJhbmNlUmFuZ2VIaWdoVmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkRldmlhdGlvblJhbmdlSGlnaFZhbHVlKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJVSS5JbXByb3ZlbWVudERpcmVjdGlvblR5cGUvTWluaW1pemVcIjpcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcy5wdXNoKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5BY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLlRvbGVyYW5jZVJhbmdlSGlnaFZhbHVlKTtcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcy5wdXNoKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5EZXZpYXRpb25SYW5nZUhpZ2hWYWx1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiVUkuSW1wcm92ZW1lbnREaXJlY3Rpb25UeXBlL01heGltaXplXCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkRldmlhdGlvblJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLlRvbGVyYW5jZVJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkFjY2VwdGFuY2VSYW5nZUxvd1ZhbHVlKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0fVxufVxuXG5mdW5jdGlvbiB1cGRhdGVUcmVuZChkYXRhcG9pbnRBbm5vdGF0aW9uOiBEYXRhUG9pbnQsIGFnZ3JlZ2F0aW9uSGVscGVyOiBBZ2dyZWdhdGlvbkhlbHBlciwga3BpRGVmOiBLUElEZWZpbml0aW9uKTogdm9pZCB7XG5cdGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kKSB7XG5cdFx0aWYgKHR5cGVvZiBkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHQvLyBUcmVuZCBpcyBhIHBhdGggLS0+IGNoZWNrIGlmIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGlzIGFnZ3JlZ2F0YWJsZVxuXHRcdFx0Y29uc3QgdHJlbmRQcm9wZXJ0eSA9ICgoZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZCBhcyBhbnkpIGFzIFByb3BlcnR5UGF0aCkuJHRhcmdldCBhcyBQcm9wZXJ0eTtcblx0XHRcdGlmIChhZ2dyZWdhdGlvbkhlbHBlci5pc1Byb3BlcnR5QWdncmVnYXRhYmxlKHRyZW5kUHJvcGVydHkpKSB7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQudHJlbmRQYXRoID0gKGRhdGFwb2ludEFubm90YXRpb24uVHJlbmQgYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPFRyZW5kVHlwZT4pLnBhdGg7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBUaGUgcHJvcGVydHkgaXNuJ3QgYWdncmVnYXRhYmxlIC0tPiB3ZSBpZ25vcmUgaXRcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZFZhbHVlID0gXCJOb25lXCI7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFRyZW5kIGlzIGFuIGVudW0gVmFsdWUgLS0+IGdldCB0aGUgY29ycmVzcG9uZGluZyBzdGF0aWMgdmFsdWVcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudHJlbmRWYWx1ZSA9IERldmlhdGlvbkluZGljYXRvckZyb21UcmVuZFR5cGVbZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZF0gfHwgXCJOb25lXCI7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbikge1xuXHRcdGtwaURlZi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvbklzUmVsYXRpdmUgPSBkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uSXNSZWxhdGl2ZURpZmZlcmVuY2UgPyB0cnVlIDogZmFsc2U7XG5cdFx0aWYgKGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5SZWZlcmVuY2VWYWx1ZS4kdGFyZ2V0KSB7XG5cdFx0XHQvLyBSZWZlcmVuY2UgdmFsdWUgaXMgYSBwYXRoIC0tPiBjaGVjayBpZiB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBpcyBhZ2dyZWdhdGFibGVcblx0XHRcdGNvbnN0IHJlZmVyZW5jZVByb3BlcnR5ID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLlJlZmVyZW5jZVZhbHVlLiR0YXJnZXQgYXMgUHJvcGVydHk7XG5cdFx0XHRpZiAoYWdncmVnYXRpb25IZWxwZXIuaXNQcm9wZXJ0eUFnZ3JlZ2F0YWJsZShyZWZlcmVuY2VQcm9wZXJ0eSkpIHtcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlUGF0aCA9IGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5SZWZlcmVuY2VWYWx1ZS5wYXRoO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gVGhlIHByb3BlcnR5IGlzbid0IGFnZ3JlZ2F0YWJsZSAtLT4gd2UgaWdub3JlIGl0IGFuZCBzd2l0Y2ggYmFjayB0byB0cmVuZCAnTm9uZSdcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZFZhbHVlID0gXCJOb25lXCI7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFJlZmVyZW5jZSB2YWx1ZSBpcyBhIHN0YXRpYyB2YWx1ZVxuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlVmFsdWUgPSBkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uUmVmZXJlbmNlVmFsdWU7XG5cdFx0fVxuXHRcdGlmIChrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VQYXRoICE9PSB1bmRlZmluZWQgfHwga3BpRGVmLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uVHJlc2hvbGRzID0gW1xuXHRcdFx0XHRkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uU3Ryb25nRG93bkRpZmZlcmVuY2UudmFsdWVPZigpIGFzIG51bWJlcixcblx0XHRcdFx0ZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLkRvd25EaWZmZXJlbmNlLnZhbHVlT2YoKSBhcyBudW1iZXIsXG5cdFx0XHRcdGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5VcERpZmZlcmVuY2UudmFsdWVPZigpIGFzIG51bWJlcixcblx0XHRcdFx0ZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLlN0cm9uZ1VwRGlmZmVyZW5jZS52YWx1ZU9mKCkgYXMgbnVtYmVyXG5cdFx0XHRdO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kVmFsdWUgPSBcIk5vbmVcIjtcblx0fVxufVxuXG5mdW5jdGlvbiB1cGRhdGVUYXJnZXQoZGF0YXBvaW50QW5ub3RhdGlvbjogRGF0YVBvaW50LCBhZ2dyZWdhdGlvbkhlbHBlcjogQWdncmVnYXRpb25IZWxwZXIsIGtwaURlZjogS1BJRGVmaW5pdGlvbik6IHZvaWQge1xuXHRpZiAoZGF0YXBvaW50QW5ub3RhdGlvbi5UYXJnZXRWYWx1ZSkge1xuXHRcdGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLlRhcmdldFZhbHVlLiR0YXJnZXQpIHtcblx0XHRcdC8vIFRhcmdldCB2YWx1ZSBpcyBhIHBhdGggLS0+IGNoZWNrIGlmIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGlzIGFnZ3JlZ2F0YWJsZSAob3RoZXJ3aXNlIGlnbm9yZSlcblx0XHRcdGNvbnN0IHRhcmdldFByb3BlcnR5ID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UYXJnZXRWYWx1ZS4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRcdFx0aWYgKGFnZ3JlZ2F0aW9uSGVscGVyLmlzUHJvcGVydHlBZ2dyZWdhdGFibGUodGFyZ2V0UHJvcGVydHkpKSB7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQudGFyZ2V0UGF0aCA9IGRhdGFwb2ludEFubm90YXRpb24uVGFyZ2V0VmFsdWUucGF0aDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gVGFyZ2V0IHZhbHVlIGlzIGEgc3RhdGljIHZhbHVlXG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRhcmdldFZhbHVlID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UYXJnZXRWYWx1ZTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0TmF2aWdhdGlvbkluZm9Gcm9tUHJvcGVydHkocHJvcGVydHk6IFByb3BlcnR5KTogTmF2aWdhdGlvbkluZm8gfCB1bmRlZmluZWQge1xuXHRjb25zdCBhbm5vdGF0aW9uczogUmVjb3JkPHN0cmluZywgQW5ub3RhdGlvblRlcm08YW55Pj4gPSBwcm9wZXJ0eS5hbm5vdGF0aW9uc1tcIkNvbW1vblwiXSB8fCB7fTtcblxuXHQvLyBMb29rIGZvciB0aGUgc2VtYW50aWNPYmplY3QgYW5ub3RhdGlvbiAoaWYgYW55KVxuXHRsZXQgc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uOiBBbm5vdGF0aW9uVGVybTxTZW1hbnRpY09iamVjdD4gfCB1bmRlZmluZWQ7XG5cdE9iamVjdC5rZXlzKGFubm90YXRpb25zKS5mb3JFYWNoKGFubm90YXRpb25LZXkgPT4ge1xuXHRcdGNvbnN0IGFubm90YXRpb24gPSBhbm5vdGF0aW9uc1thbm5vdGF0aW9uS2V5XTtcblx0XHRpZiAoYW5ub3RhdGlvbi50ZXJtID09PSBDb21tb25Bbm5vdGF0aW9uVGVybXMuU2VtYW50aWNPYmplY3QpIHtcblx0XHRcdGlmICghYW5ub3RhdGlvbi5xdWFsaWZpZXIgfHwgIXNlbWFudGljT2JqZWN0QW5ub3RhdGlvbikge1xuXHRcdFx0XHQvLyBXZSBhbHdheXMgdGFrZSB0aGUgYW5ub3RhdGlvbiB3aXRob3V0IHF1YWxpZmllciBpZiB0aGVyZSdzIG9uZSwgb3RoZXJ3aXNlIHdlIHRha2UgdGhlIGZpcnN0IG9uZVxuXHRcdFx0XHRzZW1hbnRpY09iamVjdEFubm90YXRpb24gPSBhbm5vdGF0aW9uO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cblx0aWYgKHNlbWFudGljT2JqZWN0QW5ub3RhdGlvbikge1xuXHRcdGNvbnN0IHJlc3VsdCA9IHtcblx0XHRcdHNlbWFudGljT2JqZWN0OiBzZW1hbnRpY09iamVjdEFubm90YXRpb24udG9TdHJpbmcoKSxcblx0XHRcdHVuYXZhaWxhYmxlQWN0aW9uczogW11cblx0XHR9O1xuXG5cdFx0Ly8gTG9vayBmb3IgdGhlIHVuYXZhaWxhYmxlIGFjdGlvbnMgKGlmIGFueSlcblx0XHRjb25zdCBhbm5vdGF0aW9uS2V5ID0gT2JqZWN0LmtleXMoYW5ub3RhdGlvbnMpLmZpbmQoa2V5ID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdGFubm90YXRpb25zW2tleV0udGVybSA9PT0gQ29tbW9uQW5ub3RhdGlvblRlcm1zLlNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zICYmXG5cdFx0XHRcdGFubm90YXRpb25zW2tleV0ucXVhbGlmaWVyID09PSBzZW1hbnRpY09iamVjdEFubm90YXRpb24/LnF1YWxpZmllclxuXHRcdFx0KTtcblx0XHR9KTtcblx0XHRpZiAoYW5ub3RhdGlvbktleSkge1xuXHRcdFx0cmVzdWx0LnVuYXZhaWxhYmxlQWN0aW9ucyA9IGFubm90YXRpb25zW2Fubm90YXRpb25LZXldO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVLUElEZWZpbml0aW9uKGtwaU5hbWU6IHN0cmluZywga3BpQ29uZmlnOiBLUElDb25maWd1cmF0aW9uLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogS1BJRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IGtwaUNvbnZlcnRlckNvbnRleHQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlckNvbnRleHRGb3IoXCIvXCIgKyBrcGlDb25maWcuZW50aXR5U2V0KTtcblx0Y29uc3QgYWdncmVnYXRpb25IZWxwZXIgPSBuZXcgQWdncmVnYXRpb25IZWxwZXIoa3BpQ29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCksIGtwaUNvbnZlcnRlckNvbnRleHQpO1xuXG5cdGlmICghYWdncmVnYXRpb25IZWxwZXIuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSkge1xuXHRcdC8vIFRoZSBlbnRpdHkgZG9lc24ndCBzdXBwb3J0IGFuYWx5dGljYWwgcXVlcmllc1xuXHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5Lk1lZGl1bSwgSXNzdWVUeXBlLktQSV9JU1NVRVMuTk9fQU5BTFlUSUNTICsga3BpQ29uZmlnLmVudGl0eVNldCk7XG5cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0bGV0IHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uOiBTZWxlY3Rpb25WYXJpYW50IHwgdW5kZWZpbmVkO1xuXHRsZXQgZGF0YXBvaW50QW5ub3RhdGlvbjogRGF0YVBvaW50IHwgdW5kZWZpbmVkO1xuXHRsZXQgcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb246IFByZXNlbnRhdGlvblZhcmlhbnQgfCB1bmRlZmluZWQ7XG5cdGxldCBjaGFydEFubm90YXRpb246IENoYXJ0IHwgdW5kZWZpbmVkO1xuXHRsZXQgbmF2aWdhdGlvbkluZm86IE5hdmlnYXRpb25JbmZvIHwgdW5kZWZpbmVkO1xuXG5cdC8vIFNlYXJjaCBmb3IgYSBLUEkgd2l0aCB0aGUgcXVhbGlmaWVyIGZybW8gdGhlIG1hbmlmZXN0XG5cdGNvbnN0IGFLUElBbm5vdGF0aW9ucyA9IGtwaUNvbnZlcnRlckNvbnRleHQuZ2V0QW5ub3RhdGlvbnNCeVRlcm0oXCJVSVwiLCBVSUFubm90YXRpb25UZXJtcy5LUEkpIGFzIEFubm90YXRpb25UZXJtPEtQSVR5cGU+W107XG5cdGNvbnN0IHRhcmdldEtQSSA9IGFLUElBbm5vdGF0aW9ucy5maW5kKGtwaSA9PiB7XG5cdFx0cmV0dXJuIGtwaS5xdWFsaWZpZXIgPT09IGtwaUNvbmZpZy5xdWFsaWZpZXI7XG5cdH0pO1xuXHRpZiAodGFyZ2V0S1BJKSB7XG5cdFx0ZGF0YXBvaW50QW5ub3RhdGlvbiA9IHRhcmdldEtQSS5EYXRhUG9pbnQ7XG5cdFx0c2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24gPSB0YXJnZXRLUEkuU2VsZWN0aW9uVmFyaWFudDtcblx0XHRwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiA9IHRhcmdldEtQSS5EZXRhaWw/LkRlZmF1bHRQcmVzZW50YXRpb25WYXJpYW50O1xuXHRcdGNoYXJ0QW5ub3RhdGlvbiA9IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uPy5WaXN1YWxpemF0aW9ucz8uZmluZCgodml6OiBhbnkpID0+IHtcblx0XHRcdHJldHVybiB2aXouJHRhcmdldC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuQ2hhcnREZWZpbml0aW9uVHlwZTtcblx0XHR9KT8uJHRhcmdldCBhcyBDaGFydDtcblxuXHRcdGlmICh0YXJnZXRLUEkuRGV0YWlsPy5TZW1hbnRpY09iamVjdCkge1xuXHRcdFx0bmF2aWdhdGlvbkluZm8gPSB7XG5cdFx0XHRcdHNlbWFudGljT2JqZWN0OiB0YXJnZXRLUEkuRGV0YWlsLlNlbWFudGljT2JqZWN0LnRvU3RyaW5nKCksXG5cdFx0XHRcdGFjdGlvbjogdGFyZ2V0S1BJLkRldGFpbC5BY3Rpb24/LnRvU3RyaW5nKCksXG5cdFx0XHRcdHVuYXZhaWxhYmxlQWN0aW9uczogW11cblx0XHRcdH07XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIEZhbGxiYWNrOiB0cnkgdG8gZmluZCBhIFNQViB3aXRoIHRoZSBzYW1lIHF1YWxpZmllclxuXHRcdGNvbnN0IGFTUFZBbm5vdGF0aW9ucyA9IGtwaUNvbnZlcnRlckNvbnRleHQuZ2V0QW5ub3RhdGlvbnNCeVRlcm0oXG5cdFx0XHRcIlVJXCIsXG5cdFx0XHRVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG5cdFx0KSBhcyBBbm5vdGF0aW9uVGVybTxTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50VHlwZT5bXTtcblx0XHRjb25zdCB0YXJnZXRTUFYgPSBhU1BWQW5ub3RhdGlvbnMuZmluZChzcHYgPT4ge1xuXHRcdFx0cmV0dXJuIHNwdi5xdWFsaWZpZXIgPT09IGtwaUNvbmZpZy5xdWFsaWZpZXI7XG5cdFx0fSk7XG5cdFx0aWYgKHRhcmdldFNQVikge1xuXHRcdFx0c2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24gPSB0YXJnZXRTUFYuU2VsZWN0aW9uVmFyaWFudDtcblx0XHRcdHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gdGFyZ2V0U1BWLlByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdFx0XHRkYXRhcG9pbnRBbm5vdGF0aW9uID0gcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24/LlZpc3VhbGl6YXRpb25zPy5maW5kKCh2aXo6IGFueSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdml6LiR0YXJnZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFQb2ludFR5cGU7XG5cdFx0XHR9KT8uJHRhcmdldCBhcyBEYXRhUG9pbnQ7XG5cdFx0XHRjaGFydEFubm90YXRpb24gPSBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbj8uVmlzdWFsaXphdGlvbnM/LmZpbmQoKHZpejogYW55KSA9PiB7XG5cdFx0XHRcdHJldHVybiB2aXouJHRhcmdldC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuQ2hhcnREZWZpbml0aW9uVHlwZTtcblx0XHRcdH0pPy4kdGFyZ2V0IGFzIENoYXJ0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBDb3VsZG4ndCBmaW5kIGEgS1BJIG9yIGEgU1BWIGFubm90YXRpb24gd2l0aCB0aGUgcXVhbGlmaWVyIGZyb20gdGhlIG1hbmlmZXN0XG5cdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTWVkaXVtLCBJc3N1ZVR5cGUuS1BJX0lTU1VFUy5LUElfTk9UX0ZPVU5EICsga3BpQ29uZmlnLnF1YWxpZmllcik7XG5cblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCFwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiB8fCAhZGF0YXBvaW50QW5ub3RhdGlvbiB8fCAhY2hhcnRBbm5vdGF0aW9uKSB7XG5cdFx0Ly8gQ291bGRuJ3QgZmluZCBhIGNoYXJ0IG9yIGRhdGFwb2ludCBkZWZpbml0aW9uXG5cdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTWVkaXVtLCBJc3N1ZVR5cGUuS1BJX0lTU1VFUy5LUElfREVUQUlMX05PVF9GT1VORCArIGtwaUNvbmZpZy5xdWFsaWZpZXIpO1xuXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGNvbnN0IGRhdGFwb2ludFByb3BlcnR5ID0gZGF0YXBvaW50QW5ub3RhdGlvbi5WYWx1ZS4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRpZiAoIWFnZ3JlZ2F0aW9uSGVscGVyLmlzUHJvcGVydHlBZ2dyZWdhdGFibGUoZGF0YXBvaW50UHJvcGVydHkpKSB7XG5cdFx0Ly8gVGhlIG1haW4gcHJvcGVydHkgb2YgdGhlIEtQSSBpcyBub3QgYWdncmVnYXRhYmxlIC0tPiBXZSBjYW4ndCBjYWxjdWxhdGUgaXRzIHZhbHVlIHNvIHdlIGlnbm9yZSB0aGUgS1BJXG5cdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdC5hZGRJc3N1ZShcblx0XHRcdFx0SXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRJc3N1ZVNldmVyaXR5Lk1lZGl1bSxcblx0XHRcdFx0SXNzdWVUeXBlLktQSV9JU1NVRVMuTUFJTl9QUk9QRVJUWV9OT1RfQUdHUkVHQVRBQkxFICsga3BpQ29uZmlnLnF1YWxpZmllclxuXHRcdFx0KTtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Ly8gQ2hhcnQgZGVmaW5pdGlvblxuXHRjb25zdCBjaGFydERlZiA9IGNvbnZlcnRLUElDaGFydChjaGFydEFubm90YXRpb24sIHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uKTtcblx0aWYgKCFjaGFydERlZikge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRjb25zdCBrcGlEZWY6IEtQSURlZmluaXRpb24gPSB7XG5cdFx0aWQ6IEtQSUlEKGtwaU5hbWUpLFxuXHRcdGVudGl0eVNldDoga3BpQ29uZmlnLmVudGl0eVNldCxcblx0XHRkYXRhcG9pbnQ6IHtcblx0XHRcdHByb3BlcnR5UGF0aDogZGF0YXBvaW50QW5ub3RhdGlvbi5WYWx1ZS5wYXRoLFxuXHRcdFx0YW5ub3RhdGlvblBhdGg6IGtwaUNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChkYXRhcG9pbnRBbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHR0aXRsZTogZGF0YXBvaW50QW5ub3RhdGlvbi5UaXRsZT8udG9TdHJpbmcoKSxcblx0XHRcdGRlc2NyaXB0aW9uOiBkYXRhcG9pbnRBbm5vdGF0aW9uLkRlc2NyaXB0aW9uPy50b1N0cmluZygpXG5cdFx0fSxcblx0XHRzZWxlY3Rpb25WYXJpYW50RmlsdGVyRGVmaW5pdGlvbnM6IHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uXG5cdFx0XHQ/IGdldEZpbHRlckRlZmluaXRpb25zRnJvbVNlbGVjdGlvblZhcmlhbnQoc2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24pXG5cdFx0XHQ6IHVuZGVmaW5lZCxcblx0XHRjaGFydDogY2hhcnREZWZcblx0fTtcblxuXHQvLyBOYXZpZ2F0aW9uXG5cdGlmICghbmF2aWdhdGlvbkluZm8pIHtcblx0XHQvLyBObyBuYXZpZ2F0aW9uSW5mbyB3YXMgZm91bmQgaW4gdGhlIEtQSSBhbm5vdGF0aW9uIC0tPiB0cnkgdGhlIG91dGJvdW5kIG5hdmlnYXRpb24gZnJvbSB0aGUgbWFuaWZlc3Rcblx0XHRpZiAoa3BpQ29uZmlnLmRldGFpbE5hdmlnYXRpb24pIHtcblx0XHRcdG5hdmlnYXRpb25JbmZvID0ge1xuXHRcdFx0XHRvdXRib3VuZE5hdmlnYXRpb246IGtwaUNvbmZpZy5kZXRhaWxOYXZpZ2F0aW9uXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBObyBvdXRib3VuZCBuYXZpZ2F0aW9uIGluIHRoZSBtYW5pZmVzdCAtLT4gdHJ5IHRoZSBzZW1hbnRpYyBvYmplY3Qgb24gdGhlIERhdGFwb2ludCB2YWx1ZVxuXHRcdFx0bmF2aWdhdGlvbkluZm8gPSBnZXROYXZpZ2F0aW9uSW5mb0Zyb21Qcm9wZXJ0eShkYXRhcG9pbnRQcm9wZXJ0eSk7XG5cdFx0fVxuXHR9XG5cdGlmIChuYXZpZ2F0aW9uSW5mbykge1xuXHRcdGtwaURlZi5uYXZpZ2F0aW9uID0gbmF2aWdhdGlvbkluZm87XG5cdH1cblxuXHR1cGRhdGVDdXJyZW5jeShkYXRhcG9pbnRBbm5vdGF0aW9uLCBrcGlEZWYpO1xuXHR1cGRhdGVDcml0aWNhbGl0eShkYXRhcG9pbnRBbm5vdGF0aW9uLCBhZ2dyZWdhdGlvbkhlbHBlciwga3BpRGVmKTtcblx0dXBkYXRlVHJlbmQoZGF0YXBvaW50QW5ub3RhdGlvbiwgYWdncmVnYXRpb25IZWxwZXIsIGtwaURlZik7XG5cdHVwZGF0ZVRhcmdldChkYXRhcG9pbnRBbm5vdGF0aW9uLCBhZ2dyZWdhdGlvbkhlbHBlciwga3BpRGVmKTtcblxuXHRyZXR1cm4ga3BpRGVmO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIEtQSSBkZWZpbml0aW9ucyBmcm9tIHRoZSBtYW5pZmVzdCBhbmQgdGhlIGFubm90YXRpb25zLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHQgZm9yIHRoZSBwYWdlXG4gKiBAcmV0dXJucyB7S1BJRGVmaW5pdGlvbltdfSBSZXR1cm5zIGFuIGFycmF5IG9mIEtQSSBkZWZpbml0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0S1BJRGVmaW5pdGlvbnMoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IEtQSURlZmluaXRpb25bXSB7XG5cdGNvbnN0IGtwaUNvbmZpZ3MgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmdldEtQSUNvbmZpZ3VyYXRpb24oKSxcblx0XHRrcGlEZWZzOiBLUElEZWZpbml0aW9uW10gPSBbXTtcblxuXHRPYmplY3Qua2V5cyhrcGlDb25maWdzKS5mb3JFYWNoKGtwaU5hbWUgPT4ge1xuXHRcdGNvbnN0IG9EZWYgPSBjcmVhdGVLUElEZWZpbml0aW9uKGtwaU5hbWUsIGtwaUNvbmZpZ3Nba3BpTmFtZV0sIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdGlmIChvRGVmKSB7XG5cdFx0XHRrcGlEZWZzLnB1c2gob0RlZik7XG5cdFx0fVxuXHR9KTtcblxuXHRyZXR1cm4ga3BpRGVmcztcbn1cbiJdfQ==
|
|
@@ -175,8 +175,7 @@ function updateCriticality(datapointAnnotation: DataPoint, aggregationHelper: Ag
|
|
|
175
175
|
if (datapointAnnotation.Criticality) {
|
|
176
176
|
if (typeof datapointAnnotation.Criticality === "object") {
|
|
177
177
|
// Criticality is a path --> check if the corresponding property is aggregatable
|
|
178
|
-
const criticalityProperty = ((datapointAnnotation.Criticality as any) as
|
|
179
|
-
.$target as Property;
|
|
178
|
+
const criticalityProperty = ((datapointAnnotation.Criticality as any) as PropertyPath).$target as Property;
|
|
180
179
|
if (aggregationHelper.isPropertyAggregatable(criticalityProperty)) {
|
|
181
180
|
kpiDef.datapoint.criticalityPath = (datapointAnnotation.Criticality as PathAnnotationExpression<CriticalityType>).path;
|
|
182
181
|
} else {
|
|
@@ -221,7 +220,7 @@ function updateTrend(datapointAnnotation: DataPoint, aggregationHelper: Aggregat
|
|
|
221
220
|
if (datapointAnnotation.Trend) {
|
|
222
221
|
if (typeof datapointAnnotation.Trend === "object") {
|
|
223
222
|
// Trend is a path --> check if the corresponding property is aggregatable
|
|
224
|
-
const trendProperty = ((datapointAnnotation.Trend as any) as
|
|
223
|
+
const trendProperty = ((datapointAnnotation.Trend as any) as PropertyPath).$target as Property;
|
|
225
224
|
if (aggregationHelper.isPropertyAggregatable(trendProperty)) {
|
|
226
225
|
kpiDef.datapoint.trendPath = (datapointAnnotation.Trend as PathAnnotationExpression<TrendType>).path;
|
|
227
226
|
} else {
|