@sapui5/sap.fe.core 1.111.1 → 1.113.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime-dbg.js +6 -5
- package/src/sap/fe/core/ActionRuntime.js +1 -1
- package/src/sap/fe/core/ActionRuntime.js.map +1 -1
- package/src/sap/fe/core/ActionRuntime.ts +12 -11
- package/src/sap/fe/core/AppComponent-dbg.js +35 -9
- package/src/sap/fe/core/AppComponent.js +1 -1
- package/src/sap/fe/core/AppComponent.js.map +1 -1
- package/src/sap/fe/core/AppComponent.ts +66 -9
- package/src/sap/fe/core/AppStateHandler-dbg.js +5 -2
- package/src/sap/fe/core/AppStateHandler.js +1 -1
- package/src/sap/fe/core/AppStateHandler.js.map +1 -1
- package/src/sap/fe/core/AppStateHandler.ts +10 -1
- package/src/sap/fe/core/BaseController-dbg.js +1 -1
- package/src/sap/fe/core/BaseController.ts +2 -1
- package/src/sap/fe/core/CommonUtils-dbg.js +202 -533
- package/src/sap/fe/core/CommonUtils.js +1 -1
- package/src/sap/fe/core/CommonUtils.js.map +1 -1
- package/src/sap/fe/core/CommonUtils.ts +260 -681
- package/src/sap/fe/core/ExtensionAPI-dbg.js +4 -1
- package/src/sap/fe/core/ExtensionAPI.js +1 -1
- package/src/sap/fe/core/ExtensionAPI.js.map +1 -1
- package/src/sap/fe/core/ExtensionAPI.ts +11 -1
- package/src/sap/fe/core/PageController-dbg.js +26 -31
- package/src/sap/fe/core/PageController.js +1 -1
- package/src/sap/fe/core/PageController.js.map +1 -1
- package/src/sap/fe/core/PageController.ts +17 -3
- package/src/sap/fe/core/ResourceModel-dbg.js +71 -0
- package/src/sap/fe/core/ResourceModel.js +6 -0
- package/src/sap/fe/core/ResourceModel.js.map +1 -0
- package/src/sap/fe/core/ResourceModel.ts +67 -0
- package/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +1 -0
- package/src/sap/fe/core/TemplateModel-dbg.js +1 -1
- package/src/sap/fe/core/TemplateModel.ts +6 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel-dbg.js +5 -7
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +6 -5
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase-dbg.js +164 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +6 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +170 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport-dbg.js +88 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js +6 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.ts +142 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +913 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js +21 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/{BuildingBlockRuntime.ts → BuildingBlockTemplateProcessor.ts} +313 -373
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock-dbg.js +79 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js +15 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.ts +68 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment-dbg.js +162 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js +6 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.ts +183 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo-dbg.js +4 -2
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +1 -1
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +5 -3
- package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +936 -231
- package/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +1023 -255
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +48 -98
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +95 -129
- package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +14 -17
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +23 -17
- package/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -0
- package/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +3 -3
- package/src/sap/fe/core/controllerextensions/MassEdit.js +1 -1
- package/src/sap/fe/core/controllerextensions/MassEdit.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +2 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +2 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +2 -0
- package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +3 -5
- package/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.ts +26 -4
- package/src/sap/fe/core/controllerextensions/Paginator-dbg.js +2 -1
- package/src/sap/fe/core/controllerextensions/Paginator.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Paginator.ts +7 -0
- package/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +8 -0
- package/src/sap/fe/core/controllerextensions/Share-dbg.js +8 -1
- package/src/sap/fe/core/controllerextensions/Share.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Share.ts +11 -0
- package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +14 -13
- package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +27 -27
- package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +17 -8
- package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.ts +35 -14
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase-dbg.js +6 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +7 -4
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +285 -82
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +326 -89
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +23 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +32 -3
- package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +4 -4
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +4 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +17 -3
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block-dbg.js +65 -34
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +1 -1
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +33 -18
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog-dbg.js +103 -0
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +124 -0
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +78 -149
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +85 -160
- package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +49 -49
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +52 -63
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal-dbg.js +82 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.ts +123 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +1508 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +1993 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations-dbg.js +3 -1415
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +2 -1921
- package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +10 -18
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +9 -22
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +53 -47
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +55 -61
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher-dbg.js +12 -1
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +19 -0
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +78 -13
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +1 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +100 -13
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +4 -1
- package/src/sap/fe/core/controls/CommandExecution-dbg.js +16 -5
- package/src/sap/fe/core/controls/CommandExecution.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js.map +1 -1
- package/src/sap/fe/core/controls/CommandExecution.ts +15 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +3 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +1 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +4 -1
- package/src/sap/fe/core/controls/FilterBar-dbg.js +1 -1
- package/src/sap/fe/core/controls/FilterBar.ts +5 -0
- package/src/sap/fe/core/controls/FormElementWrapper-dbg.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.ts +3 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +7 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +4 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +10 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +4 -3
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js.map +1 -1
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +3 -2
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +0 -1
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +2 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +6 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js.map +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +5 -0
- package/src/sap/fe/core/converters/ConverterContext-dbg.js +3 -5
- package/src/sap/fe/core/converters/ConverterContext.js +1 -1
- package/src/sap/fe/core/converters/ConverterContext.js.map +1 -1
- package/src/sap/fe/core/converters/ConverterContext.ts +4 -6
- package/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -8
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.js.map +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +15 -6
- package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +21 -3
- package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
- package/src/sap/fe/core/converters/ManifestWrapper.js.map +1 -1
- package/src/sap/fe/core/converters/ManifestWrapper.ts +23 -1
- package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +67 -62
- package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.ts +75 -66
- package/src/sap/fe/core/converters/TemplateConverter-dbg.js +2 -1
- package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
- package/src/sap/fe/core/converters/annotations/DataField-dbg.js +81 -20
- package/src/sap/fe/core/converters/annotations/DataField.js +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.ts +76 -22
- package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1027 -956
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
- package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +13 -19
- package/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action.ts +37 -40
- package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +95 -33
- package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +133 -49
- package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +99 -62
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +140 -75
- package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +7 -6
- package/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Form.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Form.ts +8 -14
- package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +9 -9
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +17 -18
- package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +143 -93
- package/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.ts +221 -177
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +23 -16
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +27 -23
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +138 -75
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +223 -110
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +38 -28
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +67 -47
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar-dbg.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet-dbg.js +6 -6
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +5 -8
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +54 -24
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +84 -37
- package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +12 -14
- package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +16 -11
- package/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +8 -6
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/BindingHelper.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +8 -6
- package/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +7 -6
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +19 -10
- package/src/sap/fe/core/converters/helpers/DataFieldHelper-dbg.js +1 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +7 -2
- package/src/sap/fe/core/converters/helpers/ID-dbg.js +1 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +2 -1
- package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +11 -9
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.ts +10 -8
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +22 -20
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js.map +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +19 -16
- package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +32 -35
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +42 -37
- package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +12 -5
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +8 -2
- package/src/sap/fe/core/formatters/FPMFormatter-dbg.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.ts +1 -1
- package/src/sap/fe/core/formatters/FiscalFormat-dbg.js +2 -2
- package/src/sap/fe/core/formatters/FiscalFormat.ts +6 -1
- package/src/sap/fe/core/formatters/TableFormatter-dbg.js +3 -7
- package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -1
- package/src/sap/fe/core/formatters/TableFormatter.ts +2 -6
- package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +9 -5
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js.map +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.ts +11 -4
- package/src/sap/fe/core/fpm/Component-dbg.js +1 -1
- package/src/sap/fe/core/fpm/Component.ts +1 -0
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +2 -2
- package/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +7 -6
- package/src/sap/fe/core/helpers/BindingToolkit.js +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.ts +9 -9
- package/src/sap/fe/core/helpers/ClassSupport-dbg.js +1 -1
- package/src/sap/fe/core/helpers/ClassSupport.js.map +1 -1
- package/src/sap/fe/core/helpers/ClassSupport.ts +1 -0
- package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +93 -62
- package/src/sap/fe/core/helpers/DeleteHelper.js +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.ts +140 -185
- package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +23 -20
- package/src/sap/fe/core/helpers/MassEditHelper.js +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.ts +26 -28
- package/src/sap/fe/core/helpers/MessageStrip-dbg.js +9 -9
- package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.ts +8 -8
- package/src/sap/fe/core/helpers/MetaModelFunction-dbg.js +517 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.js +6 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.js.map +1 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +610 -0
- package/src/sap/fe/core/helpers/ModelHelper-dbg.js +37 -73
- package/src/sap/fe/core/helpers/ModelHelper.js +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +47 -74
- package/src/sap/fe/core/helpers/PasteHelper-dbg.js +5 -5
- package/src/sap/fe/core/helpers/PasteHelper.js +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.ts +6 -10
- package/src/sap/fe/core/helpers/ResourceModelHelper-dbg.js +39 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.js +6 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.ts +35 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +132 -23
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +109 -22
- package/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +2 -2
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
- package/src/sap/fe/core/helpers/SizeHelper-dbg.js +53 -0
- package/src/sap/fe/core/helpers/SizeHelper.js +6 -0
- package/src/sap/fe/core/helpers/SizeHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/SizeHelper.ts +51 -0
- package/src/sap/fe/core/helpers/StableIdHelper-dbg.js +29 -25
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.ts +26 -24
- package/src/sap/fe/core/helpers/Synchronization-dbg.js +1 -1
- package/src/sap/fe/core/helpers/Synchronization.ts +2 -0
- package/src/sap/fe/core/helpers/TypeGuards-dbg.js +151 -1
- package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
- package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -1
- package/src/sap/fe/core/helpers/TypeGuards.ts +162 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader-dbg.js +2 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js.map +1 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +6 -2
- package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +3 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents-dbg.js +3 -3
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js.map +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
- package/src/sap/fe/core/library-dbg.js +2 -2
- package/src/sap/fe/core/library-preload.js +156 -140
- package/src/sap/fe/core/library-preload.js.map +1 -1
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/library.ts +7 -0
- package/src/sap/fe/core/manifest.json +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +67 -15
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js.map +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +66 -14
- package/src/sap/fe/core/messagebundle.properties +35 -0
- package/src/sap/fe/core/messagebundle_ar.properties +15 -12
- package/src/sap/fe/core/messagebundle_bg.properties +20 -17
- package/src/sap/fe/core/messagebundle_ca.properties +12 -9
- package/src/sap/fe/core/messagebundle_cs.properties +12 -9
- package/src/sap/fe/core/messagebundle_cy.properties +12 -9
- package/src/sap/fe/core/messagebundle_da.properties +12 -9
- package/src/sap/fe/core/messagebundle_de.properties +13 -10
- package/src/sap/fe/core/messagebundle_el.properties +14 -11
- package/src/sap/fe/core/messagebundle_en.properties +4 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +4 -1
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +2 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +21 -0
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +23 -3
- package/src/sap/fe/core/messagebundle_es.properties +12 -9
- package/src/sap/fe/core/messagebundle_es_MX.properties +12 -9
- package/src/sap/fe/core/messagebundle_et.properties +12 -9
- package/src/sap/fe/core/messagebundle_fi.properties +12 -9
- package/src/sap/fe/core/messagebundle_fr.properties +12 -9
- package/src/sap/fe/core/messagebundle_fr_CA.properties +13 -10
- package/src/sap/fe/core/messagebundle_hi.properties +12 -9
- package/src/sap/fe/core/messagebundle_hr.properties +12 -9
- package/src/sap/fe/core/messagebundle_hu.properties +12 -9
- package/src/sap/fe/core/messagebundle_id.properties +13 -10
- package/src/sap/fe/core/messagebundle_it.properties +12 -9
- package/src/sap/fe/core/messagebundle_iw.properties +12 -9
- package/src/sap/fe/core/messagebundle_ja.properties +13 -10
- package/src/sap/fe/core/messagebundle_kk.properties +12 -9
- package/src/sap/fe/core/messagebundle_ko.properties +12 -9
- package/src/sap/fe/core/messagebundle_lt.properties +12 -9
- package/src/sap/fe/core/messagebundle_lv.properties +12 -9
- package/src/sap/fe/core/messagebundle_ms.properties +13 -10
- package/src/sap/fe/core/messagebundle_nl.properties +13 -10
- package/src/sap/fe/core/messagebundle_no.properties +12 -9
- package/src/sap/fe/core/messagebundle_pl.properties +12 -9
- package/src/sap/fe/core/messagebundle_pt.properties +12 -9
- package/src/sap/fe/core/messagebundle_pt_PT.properties +12 -9
- package/src/sap/fe/core/messagebundle_ro.properties +16 -13
- package/src/sap/fe/core/messagebundle_ru.properties +13 -10
- package/src/sap/fe/core/messagebundle_sh.properties +12 -9
- package/src/sap/fe/core/messagebundle_sk.properties +12 -9
- package/src/sap/fe/core/messagebundle_sl.properties +12 -9
- package/src/sap/fe/core/messagebundle_sv.properties +12 -9
- package/src/sap/fe/core/messagebundle_th.properties +12 -9
- package/src/sap/fe/core/messagebundle_tr.properties +12 -9
- package/src/sap/fe/core/messagebundle_uk.properties +12 -9
- package/src/sap/fe/core/messagebundle_vi.properties +13 -10
- package/src/sap/fe/core/messagebundle_zh_CN.properties +12 -9
- package/src/sap/fe/core/messagebundle_zh_TW.properties +12 -9
- package/src/sap/fe/core/operationsHelper-dbg.js +70 -44
- package/src/sap/fe/core/operationsHelper.js +1 -1
- package/src/sap/fe/core/operationsHelper.js.map +1 -1
- package/src/sap/fe/core/operationsHelper.ts +88 -63
- package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +1 -1
- package/src/sap/fe/core/rootView/Fcl.controller.ts +10 -0
- package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +2 -2
- package/src/sap/fe/core/rootView/NavContainer.controller.js +1 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.js.map +1 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +5 -3
- package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +10 -5
- package/src/sap/fe/core/rootView/RootViewBaseController.js +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +22 -8
- package/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +15 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +4 -1
- package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +9 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +19 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +2 -2
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +10 -3
- package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +9 -3
- package/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +35 -3
- package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +7 -1
- package/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
- package/src/sap/fe/core/services/ShellServicesFactory.js.map +1 -1
- package/src/sap/fe/core/services/ShellServicesFactory.ts +24 -2
- package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +448 -279
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +497 -333
- package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +26 -6
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +54 -13
- package/src/sap/fe/core/support/Diagnostics-dbg.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.ts +5 -0
- package/src/sap/fe/core/templating/CommonFormatters-dbg.js +4 -3
- package/src/sap/fe/core/templating/CommonFormatters.js +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.js.map +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.ts +2 -2
- package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +195 -95
- package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +210 -96
- package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +5 -5
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.js.map +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -2
- package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +19 -29
- package/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js.map +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.ts +14 -26
- package/src/sap/fe/core/templating/EntityTypeHelper-dbg.js +48 -0
- package/src/sap/fe/core/templating/EntityTypeHelper.js +6 -0
- package/src/sap/fe/core/templating/EntityTypeHelper.js.map +1 -0
- package/src/sap/fe/core/templating/EntityTypeHelper.ts +37 -0
- package/src/sap/fe/core/templating/FilterHelper-dbg.js +3 -3
- package/src/sap/fe/core/templating/FilterHelper.js +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js.map +1 -1
- package/src/sap/fe/core/templating/FilterHelper.ts +5 -3
- package/src/sap/fe/core/templating/FilterTemplating-dbg.js +7 -8
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.js.map +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.ts +5 -8
- package/src/sap/fe/core/templating/PropertyFormatters-dbg.js +1 -6
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js.map +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.ts +0 -5
- package/src/sap/fe/core/templating/PropertyHelper-dbg.js +13 -46
- package/src/sap/fe/core/templating/PropertyHelper.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.js.map +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.ts +14 -43
- package/src/sap/fe/core/templating/UIFormatters-dbg.js +32 -26
- package/src/sap/fe/core/templating/UIFormatters.js +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js.map +1 -1
- package/src/sap/fe/core/templating/UIFormatters.ts +47 -32
- package/src/sap/fe/core/type/DateTimeWithTimezone-dbg.js +1 -1
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -0
- package/src/sap/fe/core/type/FiscalDate-dbg.js +2 -2
- package/src/sap/fe/core/type/FiscalDate.js.map +1 -1
- package/src/sap/fe/core/type/FiscalDate.ts +2 -1
- package/src/sap/fe/core/type/TypeUtil-dbg.js +5 -10
- package/src/sap/fe/core/type/TypeUtil.js +1 -1
- package/src/sap/fe/core/type/TypeUtil.js.map +1 -1
- package/src/sap/fe/core/type/TypeUtil.ts +3 -6
- package/src/sap/fe/core/buildingBlocks/BuildingBlock-dbg.js +0 -410
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +0 -15
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js.map +0 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +0 -536
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment-dbg.js +0 -44
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +0 -6
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js.map +0 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +0 -14
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime-dbg.js +0 -948
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +0 -19
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js.map +0 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +0 -711
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +0 -6
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js.map +0 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +0 -863
- package/src/sap/fe/core/controls/ActionPartial.fragment.xml +0 -91
- package/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +0 -151
- package/src/sap/fe/core/controls/ConditionalWrapper.js +0 -6
- package/src/sap/fe/core/controls/ConditionalWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +0 -88
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper-dbg.js +0 -330
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +0 -6
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +0 -292
- package/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +0 -126
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +0 -6
- package/src/sap/fe/core/controls/CustomQuickViewPage.js.map +0 -1
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +0 -105
- package/src/sap/fe/core/controls/FieldWrapper-dbg.js +0 -194
- package/src/sap/fe/core/controls/FieldWrapper.js +0 -6
- package/src/sap/fe/core/controls/FieldWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/FieldWrapper.ts +0 -121
- package/src/sap/fe/core/controls/FileWrapper-dbg.js +0 -280
- package/src/sap/fe/core/controls/FileWrapper.js +0 -6
- package/src/sap/fe/core/controls/FileWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/FileWrapper.ts +0 -202
- package/src/sap/fe/core/helpers/SideEffectsHelper-dbg.js +0 -141
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +0 -6
- package/src/sap/fe/core/helpers/SideEffectsHelper.js.map +0 -1
- package/src/sap/fe/core/helpers/SideEffectsHelper.ts +0 -129
|
@@ -1010,4 +1010,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/formatters/TableFormatterTypes", "sa
|
|
|
1010
1010
|
}(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onExit", [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "onExit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onKPIPressed", [_dec4], Object.getOwnPropertyDescriptor(_class2.prototype, "onKPIPressed"), _class2.prototype)), _class2)) || _class);
|
|
1011
1011
|
return KPIManagementControllerExtension;
|
|
1012
1012
|
}, false);
|
|
1013
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlVHlwZUZyb21Dcml0aWNhbGl0eSIsIk1lc3NhZ2VUeXBlIiwiRXJyb3IiLCJXYXJuaW5nIiwiU3VjY2VzcyIsIkluZm9ybWF0aW9uIiwiVmFsdWVDb2xvckZyb21NZXNzYWdlVHlwZSIsIk5vbmUiLCJtZXNzYWdlVHlwZUZyb21UYXJnZXRDYWxjdWxhdGlvbiIsImtwaVZhbHVlIiwiYVRocmVzaG9sZHMiLCJjcml0aWNhbGl0eVByb3BlcnR5IiwidW5kZWZpbmVkIiwibWVzc2FnZVR5cGVGcm9tTWluaW1pemVDYWxjdWxhdGlvbiIsIm1lc3NhZ2VUeXBlRnJvbU1heGltaXplQ2FsY3VsYXRpb24iLCJkZXZpYXRpb25JbmRpY2F0b3JGcm9tVHJlbmRUeXBlIiwidHJlbmRWYWx1ZSIsImRldmlhdGlvbkluZGljYXRvciIsImRldmlhdGlvbkluZGljYXRvckZyb21DYWxjdWxhdGlvbiIsInJlZmVyZW5jZVZhbHVlIiwiaXNSZWxhdGl2ZSIsImNvbXBWYWx1ZSIsImNyZWF0ZUZpbHRlckZyb21EZWZpbml0aW9uIiwiZmlsdGVyRGVmaW5pdGlvbiIsInJhbmdlcyIsImxlbmd0aCIsIkZpbHRlciIsInByb3BlcnR5UGF0aCIsIm9wZXJhdG9yIiwicmFuZ2VMb3ciLCJyYW5nZUhpZ2giLCJhUmFuZ2VGaWx0ZXJzIiwibWFwIiwicmFuZ2UiLCJmaWx0ZXJzIiwiYW5kIiwiZ2V0RmlsdGVyU3RyaW5nRnJvbURlZmluaXRpb24iLCJjdXJyZW50TG9jYWxlIiwiTG9jYWxlIiwic2FwIiwidWkiLCJnZXRDb3JlIiwiZ2V0Q29uZmlndXJhdGlvbiIsImdldExhbmd1YWdlIiwicmVzQnVuZGxlIiwiQ29yZSIsImdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZSIsImRhdGVGb3JtYXQiLCJEYXRlRm9ybWF0IiwiZ2V0RGF0ZUluc3RhbmNlIiwic3R5bGUiLCJmb3JtYXRSYW5nZSIsInZhbHVlTG93IiwicHJvcGVydHlUeXBlIiwiaW5kZXhPZiIsImZvcm1hdCIsIkRhdGUiLCJ2YWx1ZUhpZ2giLCJnZXRUZXh0Iiwiam9pbiIsImZvcm1hdENoYXJ0VGl0bGUiLCJrcGlEZWYiLCJmb3JtYXRMaXN0IiwiaXRlbXMiLCJsYWJlbCIsInJlcyIsIkkiLCJjaGFydCIsIm1lYXN1cmVzIiwiZGltZW5zaW9ucyIsInVwZGF0ZUNoYXJ0TGFiZWxTZXR0aW5ncyIsImNoYXJ0RGVmaW5pdGlvbiIsIm9DaGFydFByb3BlcnRpZXMiLCJjaGFydFR5cGUiLCJjYXRlZ29yeUF4aXMiLCJ0aXRsZSIsInZpc2libGUiLCJ2YWx1ZUF4aXMiLCJmb3JtYXRTdHJpbmciLCJwbG90QXJlYSIsImRhdGFMYWJlbCIsInR5cGUiLCJ2YWx1ZUF4aXMyIiwibGVnZW5kR3JvdXAiLCJsYXlvdXQiLCJwb3NpdGlvbiIsImFsaWdubWVudCIsInNpemVMZWdlbmQiLCJmaWx0ZXJNYXAiLCJhT2JqZWN0cyIsImFSb2xlcyIsImZpbHRlciIsImRpbWVuc2lvbiIsInJvbGUiLCJnZXRTY2F0dGVyQnViYmxlQ2hhcnRGZWVkcyIsImF4aXMxTWVhc3VyZXMiLCJheGlzMk1lYXN1cmVzIiwiYXhpczNNZWFzdXJlcyIsIm90aGVyTWVhc3VyZXMiLCJzZXJpZXNEaW1lbnNpb25zIiwic2hhcGVEaW1lbnNpb24iLCJmaW5kIiwieE1lYXN1cmUiLCJzaGlmdCIsInlNZWFzdXJlIiwidWlkIiwidmFsdWVzIiwic2l6ZU1lYXN1cmUiLCJwdXNoIiwiZ2V0Q2hhcnRGZWVkcyIsImdldE5hdmlnYXRpb25QYXJhbWV0ZXJzIiwibmF2SW5mbyIsIm9TaGVsbFNlcnZpY2UiLCJzZW1hbnRpY09iamVjdCIsImFjdGlvbiIsImdldExpbmtzIiwidGhlbiIsImFMaW5rcyIsImdldFByaW1hcnlJbnRlbnQiLCJvTGluayIsIm9JbmZvIiwicGFyc2VTaGVsbEhhc2giLCJpbnRlbnQiLCJ1bmF2YWlsYWJsZUFjdGlvbnMiLCJvdXRib3VuZE5hdmlnYXRpb24iLCJQcm9taXNlIiwicmVzb2x2ZSIsIm91dGJvdW5kIiwiS1BJTWFuYWdlbWVudENvbnRyb2xsZXJFeHRlbnNpb24iLCJkZWZpbmVVSTVDbGFzcyIsIm1ldGhvZE92ZXJyaWRlIiwicHVibGljRXh0ZW5zaW9uIiwiaW5pdENhcmRNYW5pZmVzdCIsImtwaURlZmluaXRpb24iLCJvS1BJTW9kZWwiLCJvQ2FyZE1hbmlmZXN0IiwiaWQiLCJ0ZWNobm9sb2d5IiwiZGF0YSIsImpzb24iLCJoZWFkZXIiLCJkYXRhcG9pbnQiLCJzdWJUaXRsZSIsImRlc2NyaXB0aW9uIiwidW5pdE9mTWVhc3VyZW1lbnQiLCJtYWluSW5kaWNhdG9yIiwibnVtYmVyIiwidW5pdCIsInN0YXRlIiwidHJlbmQiLCJjb250ZW50IiwibWluSGVpZ2h0IiwiY2hhcnRQcm9wZXJ0aWVzIiwicGF0aCIsInRhcmdldFBhdGgiLCJ0YXJnZXRWYWx1ZSIsInNpZGVJbmRpY2F0b3JzIiwic2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zIiwiYURlc2NyaXB0aW9ucyIsImZvckVhY2giLCJkZXNjIiwiZGV0YWlscyIsInRleHQiLCJ2YWx1ZSIsIm5hbWUiLCJtZWFzdXJlIiwiZmVlZHMiLCJzZXRQcm9wZXJ0eSIsIm1hbmlmZXN0IiwiaW5pdE5hdmlnYXRpb25JbmZvIiwibmF2aWdhdGlvbiIsIm9OYXZJbmZvIiwicGFyYW1ldGVycyIsIm9uSW5pdCIsImFLUElEZWZpbml0aW9ucyIsImdldFZpZXciLCJnZXRDb250cm9sbGVyIiwiX2dldFBhZ2VNb2RlbCIsImdldFByb3BlcnR5Iiwib1ZpZXciLCJvQXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiSlNPTk1vZGVsIiwic2V0TW9kZWwiLCJnZXRTaGVsbFNlcnZpY2VzIiwiY2F0Y2giLCJlcnIiLCJMb2ciLCJlcnJvciIsImxvYWRLUElUYWdEYXRhIiwiZ2V0TW9kZWwiLCJvbkV4aXQiLCJkZXN0cm95IiwidXBkYXRlRGF0YXBvaW50VmFsdWVBbmRDdXJyZW5jeSIsImtwaUNvbnRleHQiLCJyYXdVbml0IiwiaXNQYXRoIiwiaXNQZXJjZW50YWdlIiwiaXNDdXJyZW5jeSIsInJhd1ZhbHVlIiwiTnVtYmVyIiwicGFyc2VGbG9hdCIsIk51bWJlckZvcm1hdCIsImdldEZsb2F0SW5zdGFuY2UiLCJtaW5GcmFjdGlvbkRpZ2l0cyIsIm1heEZyYWN0aW9uRGlnaXRzIiwic2hvd1NjYWxlIiwia3BpVmFsdWVVbnNjYWxlZCIsImdyb3VwaW5nRW5hYmxlZCIsImtwaVZhbHVlTm9TY2FsZSIsImtwaVZhbHVlU2NhbGUiLCJkZWNpbWFscyIsIm1heEludGVnZXJEaWdpdHMiLCJrcGlVbml0IiwiZ2V0VW5pdEluc3RhbmNlIiwic2hvd051bWJlciIsInVwZGF0ZURhdGFwb2ludENyaXRpY2FsaXR5IiwiY3JpdGljYWxpdHlWYWx1ZSIsImNyaXRpY2FsaXR5UGF0aCIsImNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzIiwiY3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGUiLCJ1cGRhdGVEYXRhcG9pbnRUcmVuZCIsInRyZW5kUGF0aCIsInRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VWYWx1ZSIsInRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VQYXRoIiwidHJlbmRSZWZlcmVuY2VWYWx1ZSIsInRyZW5kQ2FsY3VsYXRpb25Jc1JlbGF0aXZlIiwidHJlbmRDYWxjdWxhdGlvblRyZXNob2xkcyIsInVwZGF0ZVRhcmdldFZhbHVlIiwidGFyZ2V0UmF3VmFsdWUiLCJkZXZpYXRpb25SYXdWYWx1ZSIsInRhcmdldFNjYWxlIiwiZGV2aWF0aW9uVmFsdWUiLCJvTWFpbk1vZGVsIiwibG9hZEZ1bGwiLCJvTGlzdEJpbmRpbmciLCJiaW5kTGlzdCIsImVudGl0eVNldCIsIiQkZ3JvdXBJZCIsIm9BZ2dyZWdhdGUiLCJzZXRBZ2dyZWdhdGlvbiIsImFnZ3JlZ2F0ZSIsImFGaWx0ZXJzIiwicmVxdWVzdENvbnRleHRzIiwiYUNvbnRleHRzIiwibG9hZEtQSUNhcmREYXRhIiwib0dyb3VwIiwiZ3JvdXAiLCJzb3J0T3JkZXIiLCJzb3J0Iiwic29ydEluZm8iLCJTb3J0ZXIiLCJkZXNjZW5kaW5nIiwibWF4SXRlbXMiLCJjaGFydERhdGEiLCJvQ29udGV4dCIsIm9EYXRhIiwiZ2V0UG9wb3ZlciIsIm9LUElUYWciLCJvUG9wb3ZlciIsInJlamVjdCIsImxvYWRMaWJyYXJ5IiwiYXN5bmMiLCJyZXF1aXJlIiwiQ2FyZCIsIkhvc3QiLCJvSG9zdCIsImF0dGFjaEFjdGlvbiIsIm9FdmVudCIsInNUeXBlIiwiZ2V0UGFyYW1ldGVyIiwib1BhcmFtcyIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJuYXZpZ2F0ZSIsIm5hdmlnYXRlT3V0Ym91bmQiLCJvQ2FyZCIsIndpZHRoIiwiaGVpZ2h0Iiwic2V0SG9zdCIsIlBvcG92ZXIiLCJzaG93SGVhZGVyIiwicGxhY2VtZW50IiwiYWRkRGVwZW5kZW50Iiwib25LUElQcmVzc2VkIiwia3BpSUQiLCJvRGVmIiwib01vZGVsIiwiYVByb21pc2VzIiwiYWxsIiwiYVJlc3VsdHMiLCJzZXRNYW5pZmVzdCIsInJlZnJlc2giLCJvcGVuQnkiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJLUElNYW5hZ2VtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgQmFzZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSB7IEtQSUNoYXJ0RGVmaW5pdGlvbiwgS1BJRGVmaW5pdGlvbiwgTmF2aWdhdGlvbkluZm8gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vS1BJXCI7XG5pbXBvcnQgdHlwZSB7IEZpbHRlckRlZmluaXRpb24sIFJhbmdlRGVmaW5pdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvU2VsZWN0aW9uVmFyaWFudEhlbHBlclwiO1xuaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9UYWJsZUZvcm1hdHRlclR5cGVzXCI7XG5pbXBvcnQgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBHZW5lcmljVGFnIGZyb20gXCJzYXAvbS9HZW5lcmljVGFnXCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCBEYXRlRm9ybWF0IGZyb20gXCJzYXAvdWkvY29yZS9mb3JtYXQvRGF0ZUZvcm1hdFwiO1xuaW1wb3J0IE51bWJlckZvcm1hdCBmcm9tIFwic2FwL3VpL2NvcmUvZm9ybWF0L051bWJlckZvcm1hdFwiO1xuaW1wb3J0IExvY2FsZSBmcm9tIFwic2FwL3VpL2NvcmUvTG9jYWxlXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgU29ydGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvU29ydGVyXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgbWV0aG9kT3ZlcnJpZGUsIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCIuLi9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuXG5jb25zdCBNZXNzYWdlVHlwZUZyb21Dcml0aWNhbGl0eTogUmVjb3JkPHN0cmluZywgTWVzc2FnZVR5cGU+ID0ge1xuXHRcIjFcIjogTWVzc2FnZVR5cGUuRXJyb3IsXG5cdFwiMlwiOiBNZXNzYWdlVHlwZS5XYXJuaW5nLFxuXHRcIjNcIjogTWVzc2FnZVR5cGUuU3VjY2Vzcyxcblx0XCI1XCI6IE1lc3NhZ2VUeXBlLkluZm9ybWF0aW9uXG59O1xuXG5jb25zdCBWYWx1ZUNvbG9yRnJvbU1lc3NhZ2VUeXBlOiBSZWNvcmQ8TWVzc2FnZVR5cGUsIHN0cmluZz4gPSB7XG5cdEVycm9yOiBcIkVycm9yXCIsXG5cdFdhcm5pbmc6IFwiQ3JpdGljYWxcIixcblx0U3VjY2VzczogXCJHb29kXCIsXG5cdEluZm9ybWF0aW9uOiBcIk5vbmVcIixcblx0Tm9uZTogXCJOb25lXCJcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gZ2V0IGEgbWVzc2FnZSBzdGF0ZSBmcm9tIGEgY2FsY3VsYXRlZCBjcml0aWNhbGl0eSBvZiB0eXBlICdUYXJnZXQnLlxuICpcbiAqIEBwYXJhbSBrcGlWYWx1ZSBUaGUgdmFsdWUgb2YgdGhlIEtQSSB0byBiZSB0ZXN0ZWQgYWdhaW5zdC5cbiAqIEBwYXJhbSBhVGhyZXNob2xkcyBUaHJlc2hvbGRzIHRvIGJlIHVzZWQgW0RldmlhdGlvblJhbmdlTG93VmFsdWUsVG9sZXJhbmNlUmFuZ2VMb3dWYWx1ZSxBY2NlcHRhbmNlUmFuZ2VMb3dWYWx1ZSxBY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUsVG9sZXJhbmNlUmFuZ2VIaWdoVmFsdWUsRGV2aWF0aW9uUmFuZ2VIaWdoVmFsdWVdLlxuICogQHJldHVybnMgVGhlIGNvcnJlc3BvbmRpbmcgTWVzc2FnZVR5cGVcbiAqL1xuZnVuY3Rpb24gbWVzc2FnZVR5cGVGcm9tVGFyZ2V0Q2FsY3VsYXRpb24oa3BpVmFsdWU6IG51bWJlciwgYVRocmVzaG9sZHM6IChudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKVtdKTogTWVzc2FnZVR5cGUge1xuXHRsZXQgY3JpdGljYWxpdHlQcm9wZXJ0eTogTWVzc2FnZVR5cGU7XG5cblx0aWYgKGFUaHJlc2hvbGRzWzBdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbMF0gIT09IG51bGwgJiYga3BpVmFsdWUgPCBhVGhyZXNob2xkc1swXSkge1xuXHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5FcnJvcjtcblx0fSBlbHNlIGlmIChhVGhyZXNob2xkc1sxXSAhPT0gdW5kZWZpbmVkICYmIGFUaHJlc2hvbGRzWzFdICE9PSBudWxsICYmIGtwaVZhbHVlIDwgYVRocmVzaG9sZHNbMV0pIHtcblx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuV2FybmluZztcblx0fSBlbHNlIGlmIChhVGhyZXNob2xkc1syXSAhPT0gdW5kZWZpbmVkICYmIGFUaHJlc2hvbGRzWzJdICE9PSBudWxsICYmIGtwaVZhbHVlIDwgYVRocmVzaG9sZHNbMl0pIHtcblx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0fSBlbHNlIGlmIChhVGhyZXNob2xkc1s1XSAhPT0gdW5kZWZpbmVkICYmIGFUaHJlc2hvbGRzWzVdICE9PSBudWxsICYmIGtwaVZhbHVlID4gYVRocmVzaG9sZHNbNV0pIHtcblx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuRXJyb3I7XG5cdH0gZWxzZSBpZiAoYVRocmVzaG9sZHNbNF0gIT09IHVuZGVmaW5lZCAmJiBhVGhyZXNob2xkc1s0XSAhPT0gbnVsbCAmJiBrcGlWYWx1ZSA+IGFUaHJlc2hvbGRzWzRdKSB7XG5cdFx0Y3JpdGljYWxpdHlQcm9wZXJ0eSA9IE1lc3NhZ2VUeXBlLldhcm5pbmc7XG5cdH0gZWxzZSBpZiAoYVRocmVzaG9sZHNbM10gIT09IHVuZGVmaW5lZCAmJiBhVGhyZXNob2xkc1szXSAhPT0gbnVsbCAmJiBrcGlWYWx1ZSA+IGFUaHJlc2hvbGRzWzNdKSB7XG5cdFx0Y3JpdGljYWxpdHlQcm9wZXJ0eSA9IE1lc3NhZ2VUeXBlLk5vbmU7XG5cdH0gZWxzZSB7XG5cdFx0Y3JpdGljYWxpdHlQcm9wZXJ0eSA9IE1lc3NhZ2VUeXBlLlN1Y2Nlc3M7XG5cdH1cblxuXHRyZXR1cm4gY3JpdGljYWxpdHlQcm9wZXJ0eTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB0byBnZXQgYSBtZXNzYWdlIHN0YXRlIGZyb20gYSBjYWxjdWxhdGVkIGNyaXRpY2FsaXR5IG9mIHR5cGUgJ01pbmltaXplJy5cbiAqXG4gKiBAcGFyYW0ga3BpVmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBLUEkgdG8gYmUgdGVzdGVkIGFnYWluc3QuXG4gKiBAcGFyYW0gYVRocmVzaG9sZHMgVGhyZXNob2xkcyB0byBiZSB1c2VkIFtBY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUsVG9sZXJhbmNlUmFuZ2VIaWdoVmFsdWUsRGV2aWF0aW9uUmFuZ2VIaWdoVmFsdWVdLlxuICogQHJldHVybnMgVGhlIGNvcnJlc3BvbmRpbmcgTWVzc2FnZVR5cGVcbiAqL1xuZnVuY3Rpb24gbWVzc2FnZVR5cGVGcm9tTWluaW1pemVDYWxjdWxhdGlvbihrcGlWYWx1ZTogbnVtYmVyLCBhVGhyZXNob2xkczogKG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwpW10pOiBNZXNzYWdlVHlwZSB7XG5cdGxldCBjcml0aWNhbGl0eVByb3BlcnR5OiBNZXNzYWdlVHlwZTtcblxuXHRpZiAoYVRocmVzaG9sZHNbMl0gIT09IHVuZGVmaW5lZCAmJiBhVGhyZXNob2xkc1syXSAhPT0gbnVsbCAmJiBrcGlWYWx1ZSA+IGFUaHJlc2hvbGRzWzJdKSB7XG5cdFx0Y3JpdGljYWxpdHlQcm9wZXJ0eSA9IE1lc3NhZ2VUeXBlLkVycm9yO1xuXHR9IGVsc2UgaWYgKGFUaHJlc2hvbGRzWzFdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbMV0gIT09IG51bGwgJiYga3BpVmFsdWUgPiBhVGhyZXNob2xkc1sxXSkge1xuXHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5XYXJuaW5nO1xuXHR9IGVsc2UgaWYgKGFUaHJlc2hvbGRzWzBdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbMF0gIT09IG51bGwgJiYga3BpVmFsdWUgPiBhVGhyZXNob2xkc1swXSkge1xuXHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5Ob25lO1xuXHR9IGVsc2Uge1xuXHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5TdWNjZXNzO1xuXHR9XG5cblx0cmV0dXJuIGNyaXRpY2FsaXR5UHJvcGVydHk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gZ2V0IGEgbWVzc2FnZSBzdGF0ZSBmcm9tIGEgY2FsY3VsYXRlZCBjcml0aWNhbGl0eSBvZiB0eXBlICdNYXhpbWl6ZScuXG4gKlxuICogQHBhcmFtIGtwaVZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgS1BJIHRvIGJlIHRlc3RlZCBhZ2FpbnN0LlxuICogQHBhcmFtIGFUaHJlc2hvbGRzIFRocmVzaG9sZHMgdG8gYmUgdXNlZCBbRGV2aWF0aW9uUmFuZ2VMb3dWYWx1ZSxUb2xlcmFuY2VSYW5nZUxvd1ZhbHVlLEFjY2VwdGFuY2VSYW5nZUxvd1ZhbHVlXS5cbiAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIE1lc3NhZ2VUeXBlXG4gKi9cbmZ1bmN0aW9uIG1lc3NhZ2VUeXBlRnJvbU1heGltaXplQ2FsY3VsYXRpb24oa3BpVmFsdWU6IG51bWJlciwgYVRocmVzaG9sZHM6IChudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKVtdKTogTWVzc2FnZVR5cGUge1xuXHRsZXQgY3JpdGljYWxpdHlQcm9wZXJ0eTogTWVzc2FnZVR5cGU7XG5cblx0aWYgKGFUaHJlc2hvbGRzWzBdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbMF0gIT09IG51bGwgJiYga3BpVmFsdWUgPCBhVGhyZXNob2xkc1swXSkge1xuXHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5FcnJvcjtcblx0fSBlbHNlIGlmIChhVGhyZXNob2xkc1sxXSAhPT0gdW5kZWZpbmVkICYmIGFUaHJlc2hvbGRzWzFdICE9PSBudWxsICYmIGtwaVZhbHVlIDwgYVRocmVzaG9sZHNbMV0pIHtcblx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuV2FybmluZztcblx0fSBlbHNlIGlmIChhVGhyZXNob2xkc1syXSAhPT0gdW5kZWZpbmVkICYmIGFUaHJlc2hvbGRzWzJdICE9PSBudWxsICYmIGtwaVZhbHVlIDwgYVRocmVzaG9sZHNbMl0pIHtcblx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0fSBlbHNlIHtcblx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuU3VjY2Vzcztcblx0fVxuXG5cdHJldHVybiBjcml0aWNhbGl0eVByb3BlcnR5O1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSBhIERldmlhdGlvbkluZGljYXRvciB2YWx1ZSBmcm9tIGEgdHJlbmQgdmFsdWUuXG4gKlxuICogQHBhcmFtIHRyZW5kVmFsdWUgVGhlIGNyaXRpY2FsaXR5IHZhbHVlcy5cbiAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIERldmlhdGlvbkluZGljYXRvciB2YWx1ZVxuICovXG5mdW5jdGlvbiBkZXZpYXRpb25JbmRpY2F0b3JGcm9tVHJlbmRUeXBlKHRyZW5kVmFsdWU6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyB7XG5cdGxldCBkZXZpYXRpb25JbmRpY2F0b3I6IHN0cmluZztcblxuXHRzd2l0Y2ggKHRyZW5kVmFsdWUpIHtcblx0XHRjYXNlIDE6IC8vIFN0cm9uZ1VwXG5cdFx0Y2FzZSBcIjFcIjpcblx0XHRjYXNlIDI6IC8vIFVwXG5cdFx0Y2FzZSBcIjJcIjpcblx0XHRcdGRldmlhdGlvbkluZGljYXRvciA9IFwiVXBcIjtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSA0OiAvLyBEb3duXG5cdFx0Y2FzZSBcIjRcIjpcblx0XHRjYXNlIDU6IC8vIFN0cm9uZ0Rvd25cblx0XHRjYXNlIFwiNVwiOlxuXHRcdFx0ZGV2aWF0aW9uSW5kaWNhdG9yID0gXCJEb3duXCI7XG5cdFx0XHRicmVhaztcblxuXHRcdGRlZmF1bHQ6XG5cdFx0XHRkZXZpYXRpb25JbmRpY2F0b3IgPSBcIk5vbmVcIjtcblx0fVxuXG5cdHJldHVybiBkZXZpYXRpb25JbmRpY2F0b3I7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gY2FsY3VsYXRlIGEgRGV2aWF0aW9uSW5kaWNhdG9yIGZyb20gYSBUcmVuZENhbGN1bGF0aW9uLlxuICpcbiAqIEBwYXJhbSBrcGlWYWx1ZSBUaGUgdmFsdWUgb2YgdGhlIEtQSVxuICogQHBhcmFtIHJlZmVyZW5jZVZhbHVlIFRoZSByZWZlcmVuY2UgdmFsdWUgdG8gY29tcGFyZSB3aXRoXG4gKiBAcGFyYW0gaXNSZWxhdGl2ZSBUcnVlIGlzIHRoZSBjb21wYXJpc29uIGlzIHJlbGF0aXZlXG4gKiBAcGFyYW0gYVRocmVzaG9sZHMgQXJyYXkgb2YgdGhyZXNob2xkcyBbU3Ryb25nRG93bkRpZmZlcmVuY2UsIERvd25EaWZmZXJlbmNlLCBVcERpZmZlcmVuY2UsIFN0cm9uZ1VwRGlmZmVyZW5jZV1cbiAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIERldmlhdGlvbkluZGljYXRvciB2YWx1ZVxuICovXG5mdW5jdGlvbiBkZXZpYXRpb25JbmRpY2F0b3JGcm9tQ2FsY3VsYXRpb24oXG5cdGtwaVZhbHVlOiBudW1iZXIsXG5cdHJlZmVyZW5jZVZhbHVlOiBudW1iZXIsXG5cdGlzUmVsYXRpdmU6IGJvb2xlYW4sXG5cdGFUaHJlc2hvbGRzOiAobnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbClbXSB8IHVuZGVmaW5lZFxuKTogc3RyaW5nIHtcblx0bGV0IGRldmlhdGlvbkluZGljYXRvcjogc3RyaW5nO1xuXG5cdGlmICghYVRocmVzaG9sZHMgfHwgKGlzUmVsYXRpdmUgJiYgIXJlZmVyZW5jZVZhbHVlKSkge1xuXHRcdHJldHVybiBcIk5vbmVcIjtcblx0fVxuXG5cdGNvbnN0IGNvbXBWYWx1ZSA9IGlzUmVsYXRpdmUgPyAoa3BpVmFsdWUgLSByZWZlcmVuY2VWYWx1ZSkgLyByZWZlcmVuY2VWYWx1ZSA6IGtwaVZhbHVlIC0gcmVmZXJlbmNlVmFsdWU7XG5cblx0aWYgKGFUaHJlc2hvbGRzWzBdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbMF0gIT09IG51bGwgJiYgY29tcFZhbHVlIDw9IGFUaHJlc2hvbGRzWzBdKSB7XG5cdFx0Ly8gU3Ryb25nRG93biAtLT4gRG93blxuXHRcdGRldmlhdGlvbkluZGljYXRvciA9IFwiRG93blwiO1xuXHR9IGVsc2UgaWYgKGFUaHJlc2hvbGRzWzFdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbMV0gIT09IG51bGwgJiYgY29tcFZhbHVlIDw9IGFUaHJlc2hvbGRzWzFdKSB7XG5cdFx0Ly8gRG93biAtLT4gRG93blxuXHRcdGRldmlhdGlvbkluZGljYXRvciA9IFwiRG93blwiO1xuXHR9IGVsc2UgaWYgKGFUaHJlc2hvbGRzWzNdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbM10gIT09IG51bGwgJiYgY29tcFZhbHVlID49IGFUaHJlc2hvbGRzWzNdKSB7XG5cdFx0Ly8gU3Ryb25nVXAgLS0+IFVwXG5cdFx0ZGV2aWF0aW9uSW5kaWNhdG9yID0gXCJVcFwiO1xuXHR9IGVsc2UgaWYgKGFUaHJlc2hvbGRzWzJdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbMl0gIT09IG51bGwgJiYgY29tcFZhbHVlID49IGFUaHJlc2hvbGRzWzJdKSB7XG5cdFx0Ly8gVXAgLS0+IFVwXG5cdFx0ZGV2aWF0aW9uSW5kaWNhdG9yID0gXCJVcFwiO1xuXHR9IGVsc2Uge1xuXHRcdC8vIFNpZGV3YXlzIC0tPiBOb25lXG5cdFx0ZGV2aWF0aW9uSW5kaWNhdG9yID0gXCJOb25lXCI7XG5cdH1cblxuXHRyZXR1cm4gZGV2aWF0aW9uSW5kaWNhdG9yO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzYXAudWkubW9kZWwuRmlsdGVyIGZyb20gYSBmaWx0ZXIgZGVmaW5pdGlvbi5cbiAqXG4gKiBAcGFyYW0gZmlsdGVyRGVmaW5pdGlvbiBUaGUgZmlsdGVyIGRlZmluaXRpb25cbiAqIEByZXR1cm5zIFJldHVybnMgYSBzYXAudWkubW9kZWwuRmlsdGVyIGZyb20gdGhlIGRlZmluaXRpb24sIG9yIHVuZGVmaW5lZCBpZiB0aGUgZGVmaW5pdGlvbiBpcyBlbXB0eSAobm8gcmFuZ2VzKVxuICovXG5mdW5jdGlvbiBjcmVhdGVGaWx0ZXJGcm9tRGVmaW5pdGlvbihmaWx0ZXJEZWZpbml0aW9uOiBGaWx0ZXJEZWZpbml0aW9uKTogRmlsdGVyIHwgdW5kZWZpbmVkIHtcblx0aWYgKGZpbHRlckRlZmluaXRpb24ucmFuZ2VzLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH0gZWxzZSBpZiAoZmlsdGVyRGVmaW5pdGlvbi5yYW5nZXMubGVuZ3RoID09PSAxKSB7XG5cdFx0cmV0dXJuIG5ldyBGaWx0ZXIoXG5cdFx0XHRmaWx0ZXJEZWZpbml0aW9uLnByb3BlcnR5UGF0aCxcblx0XHRcdGZpbHRlckRlZmluaXRpb24ucmFuZ2VzWzBdLm9wZXJhdG9yIGFzIEZpbHRlck9wZXJhdG9yLFxuXHRcdFx0ZmlsdGVyRGVmaW5pdGlvbi5yYW5nZXNbMF0ucmFuZ2VMb3csXG5cdFx0XHRmaWx0ZXJEZWZpbml0aW9uLnJhbmdlc1swXS5yYW5nZUhpZ2hcblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IGFSYW5nZUZpbHRlcnMgPSBmaWx0ZXJEZWZpbml0aW9uLnJhbmdlcy5tYXAoKHJhbmdlKSA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IEZpbHRlcihmaWx0ZXJEZWZpbml0aW9uLnByb3BlcnR5UGF0aCwgcmFuZ2Uub3BlcmF0b3IgYXMgRmlsdGVyT3BlcmF0b3IsIHJhbmdlLnJhbmdlTG93LCByYW5nZS5yYW5nZUhpZ2gpO1xuXHRcdH0pO1xuXHRcdHJldHVybiBuZXcgRmlsdGVyKHtcblx0XHRcdGZpbHRlcnM6IGFSYW5nZUZpbHRlcnMsXG5cdFx0XHRhbmQ6IGZhbHNlXG5cdFx0fSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0RmlsdGVyU3RyaW5nRnJvbURlZmluaXRpb24oZmlsdGVyRGVmaW5pdGlvbjogRmlsdGVyRGVmaW5pdGlvbik6IHN0cmluZyB7XG5cdGNvbnN0IGN1cnJlbnRMb2NhbGUgPSBuZXcgTG9jYWxlKHNhcC51aS5nZXRDb3JlKCkuZ2V0Q29uZmlndXJhdGlvbigpLmdldExhbmd1YWdlKCkpO1xuXHRjb25zdCByZXNCdW5kbGUgPSBDb3JlLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpO1xuXHRjb25zdCBkYXRlRm9ybWF0ID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoeyBzdHlsZTogXCJtZWRpdW1cIiB9LCBjdXJyZW50TG9jYWxlKTtcblxuXHRmdW5jdGlvbiBmb3JtYXRSYW5nZShyYW5nZTogUmFuZ2VEZWZpbml0aW9uKTogc3RyaW5nIHtcblx0XHRjb25zdCB2YWx1ZUxvdyA9XG5cdFx0XHRmaWx0ZXJEZWZpbml0aW9uLnByb3BlcnR5VHlwZS5pbmRleE9mKFwiRWRtLkRhdGVcIikgPT09IDAgPyBkYXRlRm9ybWF0LmZvcm1hdChuZXcgRGF0ZShyYW5nZS5yYW5nZUxvdykpIDogcmFuZ2UucmFuZ2VMb3c7XG5cdFx0Y29uc3QgdmFsdWVIaWdoID1cblx0XHRcdGZpbHRlckRlZmluaXRpb24ucHJvcGVydHlUeXBlLmluZGV4T2YoXCJFZG0uRGF0ZVwiKSA9PT0gMCA/IGRhdGVGb3JtYXQuZm9ybWF0KG5ldyBEYXRlKHJhbmdlLnJhbmdlSGlnaCkpIDogcmFuZ2UucmFuZ2VIaWdoO1xuXG5cdFx0c3dpdGNoIChyYW5nZS5vcGVyYXRvcikge1xuXHRcdFx0Y2FzZSBcIkJUXCI6XG5cdFx0XHRcdHJldHVybiBgWyR7dmFsdWVMb3d9IC0gJHt2YWx1ZUhpZ2h9XWA7XG5cblx0XHRcdGNhc2UgXCJDb250YWluc1wiOlxuXHRcdFx0XHRyZXR1cm4gYCoke3ZhbHVlTG93fSpgO1xuXG5cdFx0XHRjYXNlIFwiR0VcIjpcblx0XHRcdFx0cmV0dXJuIGBcXHUyMjY1JHt2YWx1ZUxvd31gO1xuXG5cdFx0XHRjYXNlIFwiR1RcIjpcblx0XHRcdFx0cmV0dXJuIGA+JHt2YWx1ZUxvd31gO1xuXG5cdFx0XHRjYXNlIFwiTEVcIjpcblx0XHRcdFx0cmV0dXJuIGBcXHUyMjY0JHt2YWx1ZUxvd31gO1xuXG5cdFx0XHRjYXNlIFwiTFRcIjpcblx0XHRcdFx0cmV0dXJuIGA8JHt2YWx1ZUxvd31gO1xuXG5cdFx0XHRjYXNlIFwiTkJcIjpcblx0XHRcdFx0cmV0dXJuIHJlc0J1bmRsZS5nZXRUZXh0KFwiQ19LUElDQVJEX0ZJTFRFUlNUUklOR19OT1RcIiwgW2BbJHt2YWx1ZUxvd30gLSAke3ZhbHVlSGlnaH1dYF0pO1xuXG5cdFx0XHRjYXNlIFwiTkVcIjpcblx0XHRcdFx0cmV0dXJuIGBcXHUyMjYwJHt2YWx1ZUxvd31gO1xuXG5cdFx0XHRjYXNlIFwiTm90Q29udGFpbnNcIjpcblx0XHRcdFx0cmV0dXJuIHJlc0J1bmRsZS5nZXRUZXh0KFwiQ19LUElDQVJEX0ZJTFRFUlNUUklOR19OT1RcIiwgW2AqJHt2YWx1ZUxvd30qYF0pO1xuXG5cdFx0XHRjYXNlIFwiRVFcIjpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiB2YWx1ZUxvdztcblx0XHR9XG5cdH1cblx0aWYgKGZpbHRlckRlZmluaXRpb24ucmFuZ2VzLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9IGVsc2UgaWYgKGZpbHRlckRlZmluaXRpb24ucmFuZ2VzLmxlbmd0aCA9PT0gMSkge1xuXHRcdHJldHVybiBmb3JtYXRSYW5nZShmaWx0ZXJEZWZpbml0aW9uLnJhbmdlc1swXSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGAoJHtmaWx0ZXJEZWZpbml0aW9uLnJhbmdlcy5tYXAoZm9ybWF0UmFuZ2UpLmpvaW4oXCIsXCIpfSlgO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdENoYXJ0VGl0bGUoa3BpRGVmOiBLUElEZWZpbml0aW9uKTogc3RyaW5nIHtcblx0Y29uc3QgcmVzQnVuZGxlID0gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKTtcblxuXHRmdW5jdGlvbiBmb3JtYXRMaXN0KGl0ZW1zOiB7IG5hbWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10pIHtcblx0XHRpZiAoaXRlbXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9IGVsc2UgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0cmV0dXJuIGl0ZW1zWzBdLmxhYmVsO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsZXQgcmVzID0gaXRlbXNbMF0ubGFiZWw7XG5cdFx0XHRmb3IgKGxldCBJID0gMTsgSSA8IGl0ZW1zLmxlbmd0aCAtIDE7IEkrKykge1xuXHRcdFx0XHRyZXMgKz0gYCwgJHtpdGVtc1tJXS5sYWJlbH1gO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcmVzQnVuZGxlLmdldFRleHQoXCJDX0tQSUNBUkRfSVRFTVNMSVNUXCIsIFtyZXMsIGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdLmxhYmVsXSk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJlc0J1bmRsZS5nZXRUZXh0KFwiQ19LUElDQVJEX0NIQVJUVElUTEVcIiwgW2Zvcm1hdExpc3Qoa3BpRGVmLmNoYXJ0Lm1lYXN1cmVzKSwgZm9ybWF0TGlzdChrcGlEZWYuY2hhcnQuZGltZW5zaW9ucyldKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQ2hhcnRMYWJlbFNldHRpbmdzKGNoYXJ0RGVmaW5pdGlvbjogS1BJQ2hhcnREZWZpbml0aW9uLCBvQ2hhcnRQcm9wZXJ0aWVzOiBhbnkpOiB2b2lkIHtcblx0c3dpdGNoIChjaGFydERlZmluaXRpb24uY2hhcnRUeXBlKSB7XG5cdFx0Y2FzZSBcIkRvbnV0XCI6XG5cdFx0XHQvLyBTaG93IGRhdGEgbGFiZWxzLCBkbyBub3Qgc2hvdyBheGlzIHRpdGxlc1xuXHRcdFx0b0NoYXJ0UHJvcGVydGllcy5jYXRlZ29yeUF4aXMgPSB7XG5cdFx0XHRcdHRpdGxlOiB7XG5cdFx0XHRcdFx0dmlzaWJsZTogZmFsc2Vcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdG9DaGFydFByb3BlcnRpZXMudmFsdWVBeGlzID0ge1xuXHRcdFx0XHR0aXRsZToge1xuXHRcdFx0XHRcdHZpc2libGU6IGZhbHNlXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGxhYmVsOiB7XG5cdFx0XHRcdFx0Zm9ybWF0U3RyaW5nOiBcIlNob3J0RmxvYXRcIlxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0b0NoYXJ0UHJvcGVydGllcy5wbG90QXJlYS5kYXRhTGFiZWwgPSB7XG5cdFx0XHRcdHZpc2libGU6IHRydWUsXG5cdFx0XHRcdHR5cGU6IFwidmFsdWVcIixcblx0XHRcdFx0Zm9ybWF0U3RyaW5nOiBcIlNob3J0RmxvYXRfTUZEMlwiXG5cdFx0XHR9O1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIFwiYnViYmxlXCI6XG5cdFx0XHQvLyBTaG93IGF4aXMgdGl0bGUsIGJ1YmJsZSBzaXplIGxlZ2VuZCwgZG8gbm90IHNob3cgZGF0YSBsYWJlbHNcblx0XHRcdG9DaGFydFByb3BlcnRpZXMudmFsdWVBeGlzID0ge1xuXHRcdFx0XHR0aXRsZToge1xuXHRcdFx0XHRcdHZpc2libGU6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0bGFiZWw6IHtcblx0XHRcdFx0XHRmb3JtYXRTdHJpbmc6IFwiU2hvcnRGbG9hdFwiXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRvQ2hhcnRQcm9wZXJ0aWVzLnZhbHVlQXhpczIgPSB7XG5cdFx0XHRcdHRpdGxlOiB7XG5cdFx0XHRcdFx0dmlzaWJsZTogdHJ1ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRsYWJlbDoge1xuXHRcdFx0XHRcdGZvcm1hdFN0cmluZzogXCJTaG9ydEZsb2F0XCJcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdG9DaGFydFByb3BlcnRpZXMubGVnZW5kR3JvdXAgPSB7XG5cdFx0XHRcdGxheW91dDoge1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdGFsaWdubWVudDogXCJ0b3BMZWZ0XCJcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdG9DaGFydFByb3BlcnRpZXMuc2l6ZUxlZ2VuZCA9IHtcblx0XHRcdFx0dmlzaWJsZTogdHJ1ZVxuXHRcdFx0fTtcblx0XHRcdG9DaGFydFByb3BlcnRpZXMucGxvdEFyZWEuZGF0YUxhYmVsID0geyB2aXNpYmxlOiBmYWxzZSB9O1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIFwic2NhdHRlclwiOlxuXHRcdFx0Ly8gRG8gbm90IHNob3cgZGF0YSBsYWJlbHMgYW5kIGF4aXMgdGl0bGVzXG5cdFx0XHRvQ2hhcnRQcm9wZXJ0aWVzLnZhbHVlQXhpcyA9IHtcblx0XHRcdFx0dGl0bGU6IHtcblx0XHRcdFx0XHR2aXNpYmxlOiBmYWxzZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRsYWJlbDoge1xuXHRcdFx0XHRcdGZvcm1hdFN0cmluZzogXCJTaG9ydEZsb2F0XCJcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdG9DaGFydFByb3BlcnRpZXMudmFsdWVBeGlzMiA9IHtcblx0XHRcdFx0dGl0bGU6IHtcblx0XHRcdFx0XHR2aXNpYmxlOiBmYWxzZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRsYWJlbDoge1xuXHRcdFx0XHRcdGZvcm1hdFN0cmluZzogXCJTaG9ydEZsb2F0XCJcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdG9DaGFydFByb3BlcnRpZXMucGxvdEFyZWEuZGF0YUxhYmVsID0geyB2aXNpYmxlOiBmYWxzZSB9O1xuXHRcdFx0YnJlYWs7XG5cblx0XHRkZWZhdWx0OlxuXHRcdFx0Ly8gRG8gbm90IHNob3cgZGF0YSBsYWJlbHMgYW5kIGF4aXMgdGl0bGVzXG5cdFx0XHRvQ2hhcnRQcm9wZXJ0aWVzLmNhdGVnb3J5QXhpcyA9IHtcblx0XHRcdFx0dGl0bGU6IHtcblx0XHRcdFx0XHR2aXNpYmxlOiBmYWxzZVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0b0NoYXJ0UHJvcGVydGllcy52YWx1ZUF4aXMgPSB7XG5cdFx0XHRcdHRpdGxlOiB7XG5cdFx0XHRcdFx0dmlzaWJsZTogZmFsc2Vcblx0XHRcdFx0fSxcblx0XHRcdFx0bGFiZWw6IHtcblx0XHRcdFx0XHRmb3JtYXRTdHJpbmc6IFwiU2hvcnRGbG9hdFwiXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRvQ2hhcnRQcm9wZXJ0aWVzLnBsb3RBcmVhLmRhdGFMYWJlbCA9IHsgdmlzaWJsZTogZmFsc2UgfTtcblx0fVxufVxuZnVuY3Rpb24gZmlsdGVyTWFwKGFPYmplY3RzOiB7IG5hbWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgcm9sZT86IHN0cmluZyB9W10sIGFSb2xlcz86IChzdHJpbmcgfCB1bmRlZmluZWQpW10pOiBzdHJpbmdbXSB7XG5cdGlmIChhUm9sZXMgJiYgYVJvbGVzLmxlbmd0aCkge1xuXHRcdHJldHVybiBhT2JqZWN0c1xuXHRcdFx0LmZpbHRlcigoZGltZW5zaW9uKSA9PiB7XG5cdFx0XHRcdHJldHVybiBhUm9sZXMuaW5kZXhPZihkaW1lbnNpb24ucm9sZSkgPj0gMDtcblx0XHRcdH0pXG5cdFx0XHQubWFwKChkaW1lbnNpb24pID0+IHtcblx0XHRcdFx0cmV0dXJuIGRpbWVuc2lvbi5sYWJlbDtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBhT2JqZWN0cy5tYXAoKGRpbWVuc2lvbikgPT4ge1xuXHRcdFx0cmV0dXJuIGRpbWVuc2lvbi5sYWJlbDtcblx0XHR9KTtcblx0fVxufVxuXG5mdW5jdGlvbiBnZXRTY2F0dGVyQnViYmxlQ2hhcnRGZWVkcyhjaGFydERlZmluaXRpb246IEtQSUNoYXJ0RGVmaW5pdGlvbik6IHsgdWlkOiBzdHJpbmc7IHR5cGU6IHN0cmluZzsgdmFsdWVzOiBzdHJpbmdbXSB9W10ge1xuXHRjb25zdCBheGlzMU1lYXN1cmVzID0gZmlsdGVyTWFwKGNoYXJ0RGVmaW5pdGlvbi5tZWFzdXJlcywgW1wiQXhpczFcIl0pO1xuXHRjb25zdCBheGlzMk1lYXN1cmVzID0gZmlsdGVyTWFwKGNoYXJ0RGVmaW5pdGlvbi5tZWFzdXJlcywgW1wiQXhpczJcIl0pO1xuXHRjb25zdCBheGlzM01lYXN1cmVzID0gZmlsdGVyTWFwKGNoYXJ0RGVmaW5pdGlvbi5tZWFzdXJlcywgW1wiQXhpczNcIl0pO1xuXHRjb25zdCBvdGhlck1lYXN1cmVzID0gZmlsdGVyTWFwKGNoYXJ0RGVmaW5pdGlvbi5tZWFzdXJlcywgW3VuZGVmaW5lZF0pO1xuXHRjb25zdCBzZXJpZXNEaW1lbnNpb25zID0gZmlsdGVyTWFwKGNoYXJ0RGVmaW5pdGlvbi5kaW1lbnNpb25zLCBbXCJTZXJpZXNcIl0pO1xuXG5cdC8vIEdldCB0aGUgZmlyc3QgZGltZW5zaW9uIHdpdGggcm9sZSBcIkNhdGVnb3J5XCIgZm9yIHRoZSBzaGFwZVxuXHRjb25zdCBzaGFwZURpbWVuc2lvbiA9IGNoYXJ0RGVmaW5pdGlvbi5kaW1lbnNpb25zLmZpbmQoKGRpbWVuc2lvbikgPT4ge1xuXHRcdHJldHVybiBkaW1lbnNpb24ucm9sZSA9PT0gXCJDYXRlZ29yeVwiO1xuXHR9KTtcblxuXHQvLyBNZWFzdXJlIGZvciB0aGUgeC1BeGlzIDogZmlyc3QgbWVhc3VyZSBmb3IgQXhpczEsIG9yIGZvciBBeGlzMiBpZiBub3QgZm91bmQsIG9yIGZvciBBeGlzMyBpZiBub3QgZm91bmRcblx0Y29uc3QgeE1lYXN1cmUgPSBheGlzMU1lYXN1cmVzLnNoaWZ0KCkgfHwgYXhpczJNZWFzdXJlcy5zaGlmdCgpIHx8IGF4aXMzTWVhc3VyZXMuc2hpZnQoKSB8fCBvdGhlck1lYXN1cmVzLnNoaWZ0KCkgfHwgXCJcIjtcblx0Ly8gTWVhc3VyZSBmb3IgdGhlIHktQXhpcyA6IGZpcnN0IG1lYXN1cmUgZm9yIEF4aXMyLCBvciBzZWNvbmQgbWVhc3VyZSBmb3IgQXhpczEgaWYgbm90IGZvdW5kLCBvciBmaXJzdCBtZWFzdXJlIGZvciBBeGlzMyBpZiBub3QgZm91bmRcblx0Y29uc3QgeU1lYXN1cmUgPSBheGlzMk1lYXN1cmVzLnNoaWZ0KCkgfHwgYXhpczFNZWFzdXJlcy5zaGlmdCgpIHx8IGF4aXMzTWVhc3VyZXMuc2hpZnQoKSB8fCBvdGhlck1lYXN1cmVzLnNoaWZ0KCkgfHwgXCJcIjtcblx0Y29uc3QgcmVzID0gW1xuXHRcdHtcblx0XHRcdHVpZDogXCJ2YWx1ZUF4aXNcIixcblx0XHRcdHR5cGU6IFwiTWVhc3VyZVwiLFxuXHRcdFx0dmFsdWVzOiBbeE1lYXN1cmVdXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR1aWQ6IFwidmFsdWVBeGlzMlwiLFxuXHRcdFx0dHlwZTogXCJNZWFzdXJlXCIsXG5cdFx0XHR2YWx1ZXM6IFt5TWVhc3VyZV1cblx0XHR9XG5cdF07XG5cblx0aWYgKGNoYXJ0RGVmaW5pdGlvbi5jaGFydFR5cGUgPT09IFwiYnViYmxlXCIpIHtcblx0XHQvLyBNZWFzdXJlIGZvciB0aGUgc2l6ZSBvZiB0aGUgYnViYmxlOiBmaXJzdCBtZWFzdXJlIGZvciBBeGlzMywgb3IgcmVtYWluaW5nIG1lYXN1cmUgZm9yIEF4aXMxL0F4aXMyIGlmIG5vdCBmb3VuZFxuXHRcdGNvbnN0IHNpemVNZWFzdXJlID0gYXhpczNNZWFzdXJlcy5zaGlmdCgpIHx8IGF4aXMxTWVhc3VyZXMuc2hpZnQoKSB8fCBheGlzMk1lYXN1cmVzLnNoaWZ0KCkgfHwgb3RoZXJNZWFzdXJlcy5zaGlmdCgpIHx8IFwiXCI7XG5cdFx0cmVzLnB1c2goe1xuXHRcdFx0dWlkOiBcImJ1YmJsZVdpZHRoXCIsXG5cdFx0XHR0eXBlOiBcIk1lYXN1cmVcIixcblx0XHRcdHZhbHVlczogW3NpemVNZWFzdXJlXVxuXHRcdH0pO1xuXHR9XG5cblx0Ly8gQ29sb3IgKG9wdGlvbmFsKVxuXHRpZiAoc2VyaWVzRGltZW5zaW9ucy5sZW5ndGgpIHtcblx0XHRyZXMucHVzaCh7XG5cdFx0XHR1aWQ6IFwiY29sb3JcIixcblx0XHRcdHR5cGU6IFwiRGltZW5zaW9uXCIsXG5cdFx0XHR2YWx1ZXM6IHNlcmllc0RpbWVuc2lvbnNcblx0XHR9KTtcblx0fVxuXHQvLyBTaGFwZSAob3B0aW9uYWwpXG5cdGlmIChzaGFwZURpbWVuc2lvbikge1xuXHRcdHJlcy5wdXNoKHtcblx0XHRcdHVpZDogXCJzaGFwZVwiLFxuXHRcdFx0dHlwZTogXCJEaW1lbnNpb25cIixcblx0XHRcdHZhbHVlczogW3NoYXBlRGltZW5zaW9uLmxhYmVsXVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGdldENoYXJ0RmVlZHMoY2hhcnREZWZpbml0aW9uOiBLUElDaGFydERlZmluaXRpb24pOiB7IHVpZDogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IHZhbHVlczogc3RyaW5nW10gfVtdIHtcblx0bGV0IHJlczogeyB1aWQ6IHN0cmluZzsgdHlwZTogc3RyaW5nOyB2YWx1ZXM6IHN0cmluZ1tdIH1bXTtcblxuXHRzd2l0Y2ggKGNoYXJ0RGVmaW5pdGlvbi5jaGFydFR5cGUpIHtcblx0XHRjYXNlIFwiRG9udXRcIjpcblx0XHRcdHJlcyA9IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHVpZDogXCJzaXplXCIsXG5cdFx0XHRcdFx0dHlwZTogXCJNZWFzdXJlXCIsXG5cdFx0XHRcdFx0dmFsdWVzOiBmaWx0ZXJNYXAoY2hhcnREZWZpbml0aW9uLm1lYXN1cmVzKVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dWlkOiBcImNvbG9yXCIsXG5cdFx0XHRcdFx0dHlwZTogXCJEaW1lbnNpb25cIixcblx0XHRcdFx0XHR2YWx1ZXM6IGZpbHRlck1hcChjaGFydERlZmluaXRpb24uZGltZW5zaW9ucylcblx0XHRcdFx0fVxuXHRcdFx0XTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBcImJ1YmJsZVwiOlxuXHRcdGNhc2UgXCJzY2F0dGVyXCI6XG5cdFx0XHRyZXMgPSBnZXRTY2F0dGVyQnViYmxlQ2hhcnRGZWVkcyhjaGFydERlZmluaXRpb24pO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIFwidmVydGljYWxfYnVsbGV0XCI6XG5cdFx0XHRyZXMgPSBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR1aWQ6IFwiYWN0dWFsVmFsdWVzXCIsXG5cdFx0XHRcdFx0dHlwZTogXCJNZWFzdXJlXCIsXG5cdFx0XHRcdFx0dmFsdWVzOiBmaWx0ZXJNYXAoY2hhcnREZWZpbml0aW9uLm1lYXN1cmVzLCBbdW5kZWZpbmVkLCBcIkF4aXMxXCJdKVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dWlkOiBcInRhcmdldFZhbHVlc1wiLFxuXHRcdFx0XHRcdHR5cGU6IFwiTWVhc3VyZVwiLFxuXHRcdFx0XHRcdHZhbHVlczogZmlsdGVyTWFwKGNoYXJ0RGVmaW5pdGlvbi5tZWFzdXJlcywgW1wiQXhpczJcIl0pXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR1aWQ6IFwiY2F0ZWdvcnlBeGlzXCIsXG5cdFx0XHRcdFx0dHlwZTogXCJEaW1lbnNpb25cIixcblx0XHRcdFx0XHR2YWx1ZXM6IGZpbHRlck1hcChjaGFydERlZmluaXRpb24uZGltZW5zaW9ucywgW3VuZGVmaW5lZCwgXCJDYXRlZ29yeVwiXSlcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHVpZDogXCJjb2xvclwiLFxuXHRcdFx0XHRcdHR5cGU6IFwiRGltZW5zaW9uXCIsXG5cdFx0XHRcdFx0dmFsdWVzOiBmaWx0ZXJNYXAoY2hhcnREZWZpbml0aW9uLmRpbWVuc2lvbnMsIFtcIlNlcmllc1wiXSlcblx0XHRcdFx0fVxuXHRcdFx0XTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJlcyA9IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHVpZDogXCJ2YWx1ZUF4aXNcIixcblx0XHRcdFx0XHR0eXBlOiBcIk1lYXN1cmVcIixcblx0XHRcdFx0XHR2YWx1ZXM6IGZpbHRlck1hcChjaGFydERlZmluaXRpb24ubWVhc3VyZXMpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR1aWQ6IFwiY2F0ZWdvcnlBeGlzXCIsXG5cdFx0XHRcdFx0dHlwZTogXCJEaW1lbnNpb25cIixcblx0XHRcdFx0XHR2YWx1ZXM6IGZpbHRlck1hcChjaGFydERlZmluaXRpb24uZGltZW5zaW9ucywgW3VuZGVmaW5lZCwgXCJDYXRlZ29yeVwiXSlcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHVpZDogXCJjb2xvclwiLFxuXHRcdFx0XHRcdHR5cGU6IFwiRGltZW5zaW9uXCIsXG5cdFx0XHRcdFx0dmFsdWVzOiBmaWx0ZXJNYXAoY2hhcnREZWZpbml0aW9uLmRpbWVuc2lvbnMsIFtcIlNlcmllc1wiXSlcblx0XHRcdFx0fVxuXHRcdFx0XTtcblx0fVxuXG5cdHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGdldE5hdmlnYXRpb25QYXJhbWV0ZXJzKFxuXHRuYXZJbmZvOiBOYXZpZ2F0aW9uSW5mbyxcblx0b1NoZWxsU2VydmljZTogYW55XG4pOiBQcm9taXNlPHsgc2VtYW50aWNPYmplY3Q/OiBzdHJpbmc7IGFjdGlvbj86IHN0cmluZzsgb3V0Ym91bmQ/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZD4ge1xuXHRpZiAobmF2SW5mby5zZW1hbnRpY09iamVjdCkge1xuXHRcdGlmIChuYXZJbmZvLmFjdGlvbikge1xuXHRcdFx0Ly8gQWN0aW9uIGlzIGFscmVhZHkgc3BlY2lmaWVkOiBjaGVjayBpZiBpdCdzIGF2YWlsYWJsZSBpbiB0aGUgc2hlbGxcblx0XHRcdHJldHVybiBvU2hlbGxTZXJ2aWNlLmdldExpbmtzKHsgc2VtYW50aWNPYmplY3Q6IG5hdkluZm8uc2VtYW50aWNPYmplY3QsIGFjdGlvbjogbmF2SW5mby5hY3Rpb24gfSkudGhlbigoYUxpbmtzOiBhbnlbXSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYUxpbmtzLmxlbmd0aCA/IHsgc2VtYW50aWNPYmplY3Q6IG5hdkluZm8uc2VtYW50aWNPYmplY3QsIGFjdGlvbjogbmF2SW5mby5hY3Rpb24gfSA6IHVuZGVmaW5lZDtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBXZSBnZXQgdGhlIHByaW1hcnkgaW50ZW50IGZyb20gdGhlIHNoZWxsXG5cdFx0XHRyZXR1cm4gb1NoZWxsU2VydmljZS5nZXRQcmltYXJ5SW50ZW50KG5hdkluZm8uc2VtYW50aWNPYmplY3QpLnRoZW4oKG9MaW5rOiBhbnkpID0+IHtcblx0XHRcdFx0aWYgKCFvTGluaykge1xuXHRcdFx0XHRcdC8vIE5vIHByaW1hcnkgaW50ZW50Li4uXG5cdFx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIENoZWNrIHRoYXQgdGhlIHByaW1hcnkgaW50ZW50IGlzIG5vdCBwYXJ0IG9mIHRoZSB1bmF2YWlsYWJsZSBhY3Rpb25zXG5cdFx0XHRcdGNvbnN0IG9JbmZvID0gb1NoZWxsU2VydmljZS5wYXJzZVNoZWxsSGFzaChvTGluay5pbnRlbnQpO1xuXHRcdFx0XHRyZXR1cm4gbmF2SW5mby51bmF2YWlsYWJsZUFjdGlvbnMgJiYgbmF2SW5mby51bmF2YWlsYWJsZUFjdGlvbnMuaW5kZXhPZihvSW5mby5hY3Rpb24pID49IDBcblx0XHRcdFx0XHQ/IHVuZGVmaW5lZFxuXHRcdFx0XHRcdDogeyBzZW1hbnRpY09iamVjdDogb0luZm8uc2VtYW50aWNPYmplY3QsIGFjdGlvbjogb0luZm8uYWN0aW9uIH07XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gT3V0Ym91bmQgbmF2aWdhdGlvbiBzcGVjaWZpZWQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0cmV0dXJuIG5hdkluZm8ub3V0Ym91bmROYXZpZ2F0aW9uID8gUHJvbWlzZS5yZXNvbHZlKHsgb3V0Ym91bmQ6IG5hdkluZm8ub3V0Ym91bmROYXZpZ2F0aW9uIH0pIDogUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG5cdH1cbn1cblxuLyoqXG4gKiBAY2xhc3MgQSBjb250cm9sbGVyIGV4dGVuc2lvbiBmb3IgbWFuYWdpbmcgdGhlIEtQSXMgaW4gYW4gYW5hbHl0aWNhbCBsaXN0IHBhZ2VcbiAqIEBuYW1lIHNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLktQSU1hbmFnZW1lbnRcbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwcml2YXRlXG4gKiBAc2luY2UgMS45My4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLktQSU1hbmFnZW1lbnRcIilcbmNsYXNzIEtQSU1hbmFnZW1lbnRDb250cm9sbGVyRXh0ZW5zaW9uIGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdHByb3RlY3RlZCBhS1BJRGVmaW5pdGlvbnM/OiBLUElEZWZpbml0aW9uW107XG5cdHByb3RlY3RlZCBvQ2FyZDogYW55O1xuXHRwcm90ZWN0ZWQgb1BvcG92ZXIhOiBQb3BvdmVyO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBjYXJkIG1hbmlmZXN0IGZvciBhIEtQSSBkZWZpbml0aW9uIGFuZCBzdG9yZXMgaXQgaW4gYSBKU09OIG1vZGVsLlxuXHQgKlxuXHQgKiBAcGFyYW0ga3BpRGVmaW5pdGlvbiBUaGUgS1BJIGRlZmluaXRpb25cblx0ICogQHBhcmFtIG9LUElNb2RlbCBUaGUgSlNPTiBtb2RlbCBpbiB3aGljaCB0aGUgbWFuaWZlc3Qgd2lsbCBiZSBzdG9yZWRcblx0ICovXG5cdHByb3RlY3RlZCBpbml0Q2FyZE1hbmlmZXN0KGtwaURlZmluaXRpb246IEtQSURlZmluaXRpb24sIG9LUElNb2RlbDogSlNPTk1vZGVsKTogdm9pZCB7XG5cdFx0Y29uc3Qgb0NhcmRNYW5pZmVzdDogYW55ID0ge1xuXHRcdFx0XCJzYXAuYXBwXCI6IHtcblx0XHRcdFx0aWQ6IFwic2FwLmZlXCIsXG5cdFx0XHRcdHR5cGU6IFwiY2FyZFwiXG5cdFx0XHR9LFxuXHRcdFx0XCJzYXAudWlcIjoge1xuXHRcdFx0XHR0ZWNobm9sb2d5OiBcIlVJNVwiXG5cdFx0XHR9LFxuXHRcdFx0XCJzYXAuY2FyZFwiOiB7XG5cdFx0XHRcdHR5cGU6IFwiQW5hbHl0aWNhbFwiLFxuXHRcdFx0XHRkYXRhOiB7XG5cdFx0XHRcdFx0anNvbjoge31cblx0XHRcdFx0fSxcblx0XHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdFx0dHlwZTogXCJOdW1lcmljXCIsXG5cdFx0XHRcdFx0dGl0bGU6IGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRpdGxlLFxuXHRcdFx0XHRcdHN1YlRpdGxlOiBrcGlEZWZpbml0aW9uLmRhdGFwb2ludC5kZXNjcmlwdGlvbixcblx0XHRcdFx0XHR1bml0T2ZNZWFzdXJlbWVudDogXCJ7bWFpblVuaXR9XCIsXG5cdFx0XHRcdFx0bWFpbkluZGljYXRvcjoge1xuXHRcdFx0XHRcdFx0bnVtYmVyOiBcInttYWluVmFsdWVOb1NjYWxlfVwiLFxuXHRcdFx0XHRcdFx0dW5pdDogXCJ7bWFpblZhbHVlU2NhbGV9XCIsXG5cdFx0XHRcdFx0XHRzdGF0ZTogXCJ7bWFpblN0YXRlfVwiLFxuXHRcdFx0XHRcdFx0dHJlbmQ6IFwie3RyZW5kfVwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb250ZW50OiB7XG5cdFx0XHRcdFx0bWluSGVpZ2h0OiBcIjI1cmVtXCIsXG5cdFx0XHRcdFx0Y2hhcnRQcm9wZXJ0aWVzOiB7XG5cdFx0XHRcdFx0XHRwbG90QXJlYToge30sXG5cdFx0XHRcdFx0XHR0aXRsZToge1xuXHRcdFx0XHRcdFx0XHR2aXNpYmxlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRhbGlnbm1lbnQ6IFwibGVmdFwiXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRkYXRhOiB7XG5cdFx0XHRcdFx0XHRwYXRoOiBcIi9jaGFydERhdGFcIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cblx0XHQvLyBBZGQgc2lkZSBpbmRpY2F0b3JzIGluIHRoZSBjYXJkIGhlYWRlciBpZiBhIHRhcmdldCBpcyBkZWZpbmVkIGZvciB0aGUgS1BJXG5cdFx0aWYgKGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRhcmdldFBhdGggfHwga3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudGFyZ2V0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3QgcmVzQnVuZGxlID0gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKTtcblx0XHRcdG9DYXJkTWFuaWZlc3RbXCJzYXAuY2FyZFwiXS5oZWFkZXIuc2lkZUluZGljYXRvcnMgPSBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aXRsZTogcmVzQnVuZGxlLmdldFRleHQoXCJDX0tQSUNBUkRfSU5ESUNBVE9SX1RBUkdFVFwiKSxcblx0XHRcdFx0XHRudW1iZXI6IFwie3RhcmdldE51bWJlcn1cIixcblx0XHRcdFx0XHR1bml0OiBcInt0YXJnZXRVbml0fVwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aXRsZTogcmVzQnVuZGxlLmdldFRleHQoXCJDX0tQSUNBUkRfSU5ESUNBVE9SX0RFVklBVElPTlwiKSxcblx0XHRcdFx0XHRudW1iZXI6IFwie2RldmlhdGlvbk51bWJlcn1cIixcblx0XHRcdFx0XHR1bml0OiBcIiVcIlxuXHRcdFx0XHR9XG5cdFx0XHRdO1xuXHRcdH1cblxuXHRcdC8vIERldGFpbHMgb2YgdGhlIGNhcmQ6IGZpbHRlciBkZXNjcmlwdGlvbnNcblx0XHRpZiAoa3BpRGVmaW5pdGlvbi5zZWxlY3Rpb25WYXJpYW50RmlsdGVyRGVmaW5pdGlvbnM/Lmxlbmd0aCkge1xuXHRcdFx0Y29uc3QgYURlc2NyaXB0aW9uczogc3RyaW5nW10gPSBbXTtcblx0XHRcdGtwaURlZmluaXRpb24uc2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zLmZvckVhY2goKGZpbHRlckRlZmluaXRpb24pID0+IHtcblx0XHRcdFx0Y29uc3QgZGVzYyA9IGdldEZpbHRlclN0cmluZ0Zyb21EZWZpbml0aW9uKGZpbHRlckRlZmluaXRpb24pO1xuXHRcdFx0XHRpZiAoZGVzYykge1xuXHRcdFx0XHRcdGFEZXNjcmlwdGlvbnMucHVzaChkZXNjKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdGlmIChhRGVzY3JpcHRpb25zLmxlbmd0aCkge1xuXHRcdFx0XHRvQ2FyZE1hbmlmZXN0W1wic2FwLmNhcmRcIl0uaGVhZGVyLmRldGFpbHMgPSBhRGVzY3JpcHRpb25zLmpvaW4oXCIsIFwiKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDaGFydCBzZXR0aW5nczogdHlwZSwgdGl0bGUsIGRpbWVuc2lvbnMgYW5kIG1lYXN1cmVzIGluIHRoZSBtYW5pZmVzdFxuXHRcdG9DYXJkTWFuaWZlc3RbXCJzYXAuY2FyZFwiXS5jb250ZW50LmNoYXJ0VHlwZSA9IGtwaURlZmluaXRpb24uY2hhcnQuY2hhcnRUeXBlO1xuXHRcdHVwZGF0ZUNoYXJ0TGFiZWxTZXR0aW5ncyhrcGlEZWZpbml0aW9uLmNoYXJ0LCBvQ2FyZE1hbmlmZXN0W1wic2FwLmNhcmRcIl0uY29udGVudC5jaGFydFByb3BlcnRpZXMpO1xuXHRcdG9DYXJkTWFuaWZlc3RbXCJzYXAuY2FyZFwiXS5jb250ZW50LmNoYXJ0UHJvcGVydGllcy50aXRsZS50ZXh0ID0gZm9ybWF0Q2hhcnRUaXRsZShrcGlEZWZpbml0aW9uKTtcblx0XHRvQ2FyZE1hbmlmZXN0W1wic2FwLmNhcmRcIl0uY29udGVudC5kaW1lbnNpb25zID0ga3BpRGVmaW5pdGlvbi5jaGFydC5kaW1lbnNpb25zLm1hcCgoZGltZW5zaW9uKSA9PiB7XG5cdFx0XHRyZXR1cm4geyBsYWJlbDogZGltZW5zaW9uLmxhYmVsLCB2YWx1ZTogYHske2RpbWVuc2lvbi5uYW1lfX1gIH07XG5cdFx0fSk7XG5cdFx0b0NhcmRNYW5pZmVzdFtcInNhcC5jYXJkXCJdLmNvbnRlbnQubWVhc3VyZXMgPSBrcGlEZWZpbml0aW9uLmNoYXJ0Lm1lYXN1cmVzLm1hcCgobWVhc3VyZSkgPT4ge1xuXHRcdFx0cmV0dXJuIHsgbGFiZWw6IG1lYXN1cmUubGFiZWwsIHZhbHVlOiBgeyR7bWVhc3VyZS5uYW1lfX1gIH07XG5cdFx0fSk7XG5cdFx0b0NhcmRNYW5pZmVzdFtcInNhcC5jYXJkXCJdLmNvbnRlbnQuZmVlZHMgPSBnZXRDaGFydEZlZWRzKGtwaURlZmluaXRpb24uY2hhcnQpO1xuXG5cdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfWAsIHtcblx0XHRcdG1hbmlmZXN0OiBvQ2FyZE1hbmlmZXN0XG5cdFx0fSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgaW5pdE5hdmlnYXRpb25JbmZvKGtwaURlZmluaXRpb246IEtQSURlZmluaXRpb24sIG9LUElNb2RlbDogSlNPTk1vZGVsLCBvU2hlbGxTZXJ2aWNlOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBBZGQgbmF2aWdhdGlvblxuXHRcdGlmIChrcGlEZWZpbml0aW9uLm5hdmlnYXRpb24pIHtcblx0XHRcdHJldHVybiBnZXROYXZpZ2F0aW9uUGFyYW1ldGVycyhrcGlEZWZpbml0aW9uLm5hdmlnYXRpb24sIG9TaGVsbFNlcnZpY2UpLnRoZW4oKG9OYXZJbmZvKSA9PiB7XG5cdFx0XHRcdGlmIChvTmF2SW5mbykge1xuXHRcdFx0XHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvaGVhZGVyL2FjdGlvbnNgLCBbXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHR5cGU6IFwiTmF2aWdhdGlvblwiLFxuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzOiBvTmF2SW5mb1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdF0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblx0fVxuXG5cdEBtZXRob2RPdmVycmlkZSgpXG5cdHB1YmxpYyBvbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5hS1BJRGVmaW5pdGlvbnMgPSAodGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyKS5fZ2V0UGFnZU1vZGVsKCk/LmdldFByb3BlcnR5KFwiL2twaURlZmluaXRpb25zXCIpO1xuXG5cdFx0aWYgKHRoaXMuYUtQSURlZmluaXRpb25zICYmIHRoaXMuYUtQSURlZmluaXRpb25zLmxlbmd0aCkge1xuXHRcdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKTtcblx0XHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSAob1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIEJhc2VDb250cm9sbGVyKS5nZXRBcHBDb21wb25lbnQoKSBhcyBhbnk7XG5cblx0XHRcdC8vIENyZWF0ZSBhIEpTT04gbW9kZWwgdG8gc3RvcmUgS1BJIGRhdGFcblx0XHRcdGNvbnN0IG9LUElNb2RlbCA9IG5ldyBKU09OTW9kZWwoKTtcblx0XHRcdG9WaWV3LnNldE1vZGVsKG9LUElNb2RlbCwgXCJrcGlNb2RlbFwiKTtcblxuXHRcdFx0dGhpcy5hS1BJRGVmaW5pdGlvbnMuZm9yRWFjaCgoa3BpRGVmaW5pdGlvbikgPT4ge1xuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIG1hbmlmZXN0IGZvciB0aGUgS1BJIGNhcmQgYW5kIHN0b3JlIGl0IGluIHRoZSBLUEkgbW9kZWxcblx0XHRcdFx0dGhpcy5pbml0Q2FyZE1hbmlmZXN0KGtwaURlZmluaXRpb24sIG9LUElNb2RlbCk7XG5cblx0XHRcdFx0Ly8gU2V0IHRoZSBuYXZpZ2F0aW9uIGluZm9ybWF0aW9uIGluIHRoZSBtYW5pZmVzdFxuXHRcdFx0XHR0aGlzLmluaXROYXZpZ2F0aW9uSW5mbyhrcGlEZWZpbml0aW9uLCBvS1BJTW9kZWwsIG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpKS5jYXRjaChmdW5jdGlvbiAoZXJyOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8gTG9hZCB0YWcgZGF0YSBmb3IgdGhlIEtQSVxuXHRcdFx0XHR0aGlzLmxvYWRLUElUYWdEYXRhKGtwaURlZmluaXRpb24sIG9BcHBDb21wb25lbnQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsLCBvS1BJTW9kZWwpLmNhdGNoKGZ1bmN0aW9uIChlcnI6IGFueSkge1xuXHRcdFx0XHRcdExvZy5lcnJvcihlcnIpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdEBtZXRob2RPdmVycmlkZSgpXG5cdHB1YmxpYyBvbkV4aXQoKTogdm9pZCB7XG5cdFx0Y29uc3Qgb0tQSU1vZGVsID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJrcGlNb2RlbFwiKSBhcyBKU09OTW9kZWw7XG5cblx0XHRpZiAob0tQSU1vZGVsKSB7XG5cdFx0XHRvS1BJTW9kZWwuZGVzdHJveSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgdXBkYXRlRGF0YXBvaW50VmFsdWVBbmRDdXJyZW5jeShrcGlEZWZpbml0aW9uOiBLUElEZWZpbml0aW9uLCBrcGlDb250ZXh0OiBDb250ZXh0LCBvS1BJTW9kZWw6IEpTT05Nb2RlbCkge1xuXHRcdGNvbnN0IGN1cnJlbnRMb2NhbGUgPSBuZXcgTG9jYWxlKHNhcC51aS5nZXRDb3JlKCkuZ2V0Q29uZmlndXJhdGlvbigpLmdldExhbmd1YWdlKCkpO1xuXHRcdGNvbnN0IHJhd1VuaXQgPSBrcGlEZWZpbml0aW9uLmRhdGFwb2ludC51bml0Py5pc1BhdGhcblx0XHRcdD8ga3BpQ29udGV4dC5nZXRQcm9wZXJ0eShrcGlEZWZpbml0aW9uLmRhdGFwb2ludC51bml0LnZhbHVlKVxuXHRcdFx0OiBrcGlEZWZpbml0aW9uLmRhdGFwb2ludC51bml0Py52YWx1ZTtcblxuXHRcdGNvbnN0IGlzUGVyY2VudGFnZSA9IGtwaURlZmluaXRpb24uZGF0YXBvaW50LnVuaXQ/LmlzQ3VycmVuY3kgPT09IGZhbHNlICYmIHJhd1VuaXQgPT09IFwiJVwiO1xuXG5cdFx0Ly8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cdFx0Ly8gTWFpbiBLUEkgdmFsdWVcblx0XHRjb25zdCByYXdWYWx1ZSA9IE51bWJlci5wYXJzZUZsb2F0KGtwaUNvbnRleHQuZ2V0UHJvcGVydHkoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQucHJvcGVydHlQYXRoKSk7XG5cblx0XHQvLyBWYWx1ZSBmb3JtYXR0ZWQgd2l0aCBhIHNjYWxlXG5cdFx0Y29uc3Qga3BpVmFsdWUgPSBOdW1iZXJGb3JtYXQuZ2V0RmxvYXRJbnN0YW5jZShcblx0XHRcdHtcblx0XHRcdFx0c3R5bGU6IGlzUGVyY2VudGFnZSA/IHVuZGVmaW5lZCA6IFwic2hvcnRcIixcblx0XHRcdFx0bWluRnJhY3Rpb25EaWdpdHM6IDAsXG5cdFx0XHRcdG1heEZyYWN0aW9uRGlnaXRzOiAxLFxuXHRcdFx0XHRzaG93U2NhbGU6ICFpc1BlcmNlbnRhZ2Vcblx0XHRcdH0sXG5cdFx0XHRjdXJyZW50TG9jYWxlXG5cdFx0KS5mb3JtYXQocmF3VmFsdWUpO1xuXHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL21haW5WYWx1ZWAsIGtwaVZhbHVlKTtcblxuXHRcdC8vIFZhbHVlIHdpdGhvdXQgYSBzY2FsZVxuXHRcdGNvbnN0IGtwaVZhbHVlVW5zY2FsZWQgPSBOdW1iZXJGb3JtYXQuZ2V0RmxvYXRJbnN0YW5jZShcblx0XHRcdHtcblx0XHRcdFx0bWF4RnJhY3Rpb25EaWdpdHM6IDIsXG5cdFx0XHRcdHNob3dTY2FsZTogZmFsc2UsXG5cdFx0XHRcdGdyb3VwaW5nRW5hYmxlZDogdHJ1ZVxuXHRcdFx0fSxcblx0XHRcdGN1cnJlbnRMb2NhbGVcblx0XHQpLmZvcm1hdChyYXdWYWx1ZSk7XG5cdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vbWFpblZhbHVlVW5zY2FsZWRgLCBrcGlWYWx1ZVVuc2NhbGVkKTtcblxuXHRcdC8vIFZhbHVlIGZvcm1hdHRlZCB3aXRoIHRoZSBzY2FsZSBvbWl0dGVkXG5cdFx0Y29uc3Qga3BpVmFsdWVOb1NjYWxlID0gTnVtYmVyRm9ybWF0LmdldEZsb2F0SW5zdGFuY2UoXG5cdFx0XHR7XG5cdFx0XHRcdHN0eWxlOiBpc1BlcmNlbnRhZ2UgPyB1bmRlZmluZWQgOiBcInNob3J0XCIsXG5cdFx0XHRcdG1pbkZyYWN0aW9uRGlnaXRzOiAwLFxuXHRcdFx0XHRtYXhGcmFjdGlvbkRpZ2l0czogMSxcblx0XHRcdFx0c2hvd1NjYWxlOiBmYWxzZVxuXHRcdFx0fSxcblx0XHRcdGN1cnJlbnRMb2NhbGVcblx0XHQpLmZvcm1hdChyYXdWYWx1ZSk7XG5cdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vbWFpblZhbHVlTm9TY2FsZWAsIGtwaVZhbHVlTm9TY2FsZSk7XG5cblx0XHQvLyBTY2FsZSBvZiB0aGUgdmFsdWVcblx0XHRjb25zdCBrcGlWYWx1ZVNjYWxlID0gTnVtYmVyRm9ybWF0LmdldEZsb2F0SW5zdGFuY2UoXG5cdFx0XHR7XG5cdFx0XHRcdHN0eWxlOiBpc1BlcmNlbnRhZ2UgPyB1bmRlZmluZWQgOiBcInNob3J0XCIsXG5cdFx0XHRcdGRlY2ltYWxzOiAwLFxuXHRcdFx0XHRtYXhJbnRlZ2VyRGlnaXRzOiAwLFxuXHRcdFx0XHRzaG93U2NhbGU6IHRydWVcblx0XHRcdH0sXG5cdFx0XHRjdXJyZW50TG9jYWxlXG5cdFx0KS5mb3JtYXQocmF3VmFsdWUpO1xuXHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL21haW5WYWx1ZVNjYWxlYCwga3BpVmFsdWVTY2FsZSk7XG5cblx0XHQvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cblx0XHQvLyBVbml0IG9yIGN1cnJlbmN5XG5cdFx0aWYgKGtwaURlZmluaXRpb24uZGF0YXBvaW50LnVuaXQgJiYgcmF3VW5pdCkge1xuXHRcdFx0aWYgKGtwaURlZmluaXRpb24uZGF0YXBvaW50LnVuaXQuaXNDdXJyZW5jeSkge1xuXHRcdFx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoYC8ke2twaURlZmluaXRpb24uaWR9L21hbmlmZXN0L3NhcC5jYXJkL2RhdGEvanNvbi9tYWluVW5pdGAsIHJhd1VuaXQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gSW4gY2FzZSBvZiB1bml0IG9mIG1lYXN1cmUsIHdlIGhhdmUgdG8gZm9ybWF0IGl0IHByb3Blcmx5XG5cdFx0XHRcdGNvbnN0IGtwaVVuaXQgPSBOdW1iZXJGb3JtYXQuZ2V0VW5pdEluc3RhbmNlKHsgc2hvd051bWJlcjogZmFsc2UgfSwgY3VycmVudExvY2FsZSkuZm9ybWF0KHJhd1ZhbHVlLCByYXdVbml0KTtcblx0XHRcdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vbWFpblVuaXRgLCBrcGlVbml0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZURhdGFwb2ludENyaXRpY2FsaXR5KGtwaURlZmluaXRpb246IEtQSURlZmluaXRpb24sIGtwaUNvbnRleHQ6IENvbnRleHQsIG9LUElNb2RlbDogSlNPTk1vZGVsKSB7XG5cdFx0Y29uc3QgcmF3VmFsdWUgPSBOdW1iZXIucGFyc2VGbG9hdChrcGlDb250ZXh0LmdldFByb3BlcnR5KGtwaURlZmluaXRpb24uZGF0YXBvaW50LnByb3BlcnR5UGF0aCkpO1xuXG5cdFx0bGV0IGNyaXRpY2FsaXR5VmFsdWUgPSBNZXNzYWdlVHlwZS5Ob25lO1xuXHRcdGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlKSB7XG5cdFx0XHQvLyBDcml0aWNhbGl0eSBpcyBhIGZpeGVkIHZhbHVlXG5cdFx0XHRjcml0aWNhbGl0eVZhbHVlID0ga3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQuY3JpdGljYWxpdHlWYWx1ZTtcblx0XHR9IGVsc2UgaWYgKGtwaURlZmluaXRpb24uZGF0YXBvaW50LmNyaXRpY2FsaXR5UGF0aCkge1xuXHRcdFx0Ly8gQ3JpdGljYWxpdHkgY29tZXMgZnJvbSBhbm90aGVyIHByb3BlcnR5ICh2aWEgYSBwYXRoKVxuXHRcdFx0Y3JpdGljYWxpdHlWYWx1ZSA9XG5cdFx0XHRcdE1lc3NhZ2VUeXBlRnJvbUNyaXRpY2FsaXR5W2twaUNvbnRleHQuZ2V0UHJvcGVydHkoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQuY3JpdGljYWxpdHlQYXRoKV0gfHwgTWVzc2FnZVR5cGUuTm9uZTtcblx0XHR9IGVsc2UgaWYgKGtwaURlZmluaXRpb24uZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzICYmIGtwaURlZmluaXRpb24uZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25Nb2RlKSB7XG5cdFx0XHQvLyBDcml0aWNhbGl0eSBjYWxjdWxhdGlvblxuXHRcdFx0c3dpdGNoIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uTW9kZSkge1xuXHRcdFx0XHRjYXNlIFwiVUkuSW1wcm92ZW1lbnREaXJlY3Rpb25UeXBlL1RhcmdldFwiOlxuXHRcdFx0XHRcdGNyaXRpY2FsaXR5VmFsdWUgPSBtZXNzYWdlVHlwZUZyb21UYXJnZXRDYWxjdWxhdGlvbihyYXdWYWx1ZSwga3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgXCJVSS5JbXByb3ZlbWVudERpcmVjdGlvblR5cGUvTWluaW1pemVcIjpcblx0XHRcdFx0XHRjcml0aWNhbGl0eVZhbHVlID0gbWVzc2FnZVR5cGVGcm9tTWluaW1pemVDYWxjdWxhdGlvbihcblx0XHRcdFx0XHRcdHJhd1ZhbHVlLFxuXHRcdFx0XHRcdFx0a3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHNcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgXCJVSS5JbXByb3ZlbWVudERpcmVjdGlvblR5cGUvTWF4aW1pemVcIjpcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRjcml0aWNhbGl0eVZhbHVlID0gbWVzc2FnZVR5cGVGcm9tTWF4aW1pemVDYWxjdWxhdGlvbihcblx0XHRcdFx0XHRcdHJhd1ZhbHVlLFxuXHRcdFx0XHRcdFx0a3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHNcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL21haW5Dcml0aWNhbGl0eWAsIGNyaXRpY2FsaXR5VmFsdWUpO1xuXHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShcblx0XHRcdGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vbWFpblN0YXRlYCxcblx0XHRcdFZhbHVlQ29sb3JGcm9tTWVzc2FnZVR5cGVbY3JpdGljYWxpdHlWYWx1ZV0gfHwgXCJOb25lXCJcblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVEYXRhcG9pbnRUcmVuZChrcGlEZWZpbml0aW9uOiBLUElEZWZpbml0aW9uLCBrcGlDb250ZXh0OiBDb250ZXh0LCBvS1BJTW9kZWw6IEpTT05Nb2RlbCkge1xuXHRcdGNvbnN0IHJhd1ZhbHVlID0gTnVtYmVyLnBhcnNlRmxvYXQoa3BpQ29udGV4dC5nZXRQcm9wZXJ0eShrcGlEZWZpbml0aW9uLmRhdGFwb2ludC5wcm9wZXJ0eVBhdGgpKTtcblxuXHRcdGxldCB0cmVuZFZhbHVlID0gXCJOb25lXCI7XG5cblx0XHRpZiAoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudHJlbmRWYWx1ZSkge1xuXHRcdFx0Ly8gVHJlbmQgaXMgYSBmaXhlZCB2YWx1ZVxuXHRcdFx0dHJlbmRWYWx1ZSA9IGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRyZW5kVmFsdWU7XG5cdFx0fSBlbHNlIGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50cmVuZFBhdGgpIHtcblx0XHRcdC8vIFRyZW5kIGNvbWVzIGZyb20gYW5vdGhlciBwcm9wZXJ0eSB2aWEgYSBwYXRoXG5cdFx0XHR0cmVuZFZhbHVlID0gZGV2aWF0aW9uSW5kaWNhdG9yRnJvbVRyZW5kVHlwZShrcGlDb250ZXh0LmdldFByb3BlcnR5KGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRyZW5kUGF0aCkpO1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlVmFsdWUgIT09IHVuZGVmaW5lZCB8fFxuXHRcdFx0a3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGhcblx0XHQpIHtcblx0XHRcdC8vIENhbGN1bGF0ZWQgdHJlbmRcblx0XHRcdGxldCB0cmVuZFJlZmVyZW5jZVZhbHVlOiBudW1iZXI7XG5cdFx0XHRpZiAoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0dHJlbmRSZWZlcmVuY2VWYWx1ZSA9IGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VWYWx1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRyZW5kUmVmZXJlbmNlVmFsdWUgPSBOdW1iZXIucGFyc2VGbG9hdChcblx0XHRcdFx0XHRrcGlDb250ZXh0LmdldFByb3BlcnR5KGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VQYXRoIHx8IFwiXCIpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHR0cmVuZFZhbHVlID0gZGV2aWF0aW9uSW5kaWNhdG9yRnJvbUNhbGN1bGF0aW9uKFxuXHRcdFx0XHRyYXdWYWx1ZSxcblx0XHRcdFx0dHJlbmRSZWZlcmVuY2VWYWx1ZSxcblx0XHRcdFx0ISFrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uSXNSZWxhdGl2ZSxcblx0XHRcdFx0a3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblRyZXNob2xkc1xuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoYC8ke2twaURlZmluaXRpb24uaWR9L21hbmlmZXN0L3NhcC5jYXJkL2RhdGEvanNvbi90cmVuZGAsIHRyZW5kVmFsdWUpO1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVUYXJnZXRWYWx1ZShrcGlEZWZpbml0aW9uOiBLUElEZWZpbml0aW9uLCBrcGlDb250ZXh0OiBDb250ZXh0LCBvS1BJTW9kZWw6IEpTT05Nb2RlbCkge1xuXHRcdGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50YXJnZXRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRhcmdldFBhdGggPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuOyAvLyBObyB0YXJnZXQgc2V0IGZvciB0aGUgS1BJXG5cdFx0fVxuXHRcdGNvbnN0IHJhd1ZhbHVlID0gTnVtYmVyLnBhcnNlRmxvYXQoa3BpQ29udGV4dC5nZXRQcm9wZXJ0eShrcGlEZWZpbml0aW9uLmRhdGFwb2ludC5wcm9wZXJ0eVBhdGgpKTtcblx0XHRjb25zdCBjdXJyZW50TG9jYWxlID0gbmV3IExvY2FsZShzYXAudWkuZ2V0Q29yZSgpLmdldENvbmZpZ3VyYXRpb24oKS5nZXRMYW5ndWFnZSgpKTtcblxuXHRcdGxldCB0YXJnZXRSYXdWYWx1ZTogbnVtYmVyO1xuXHRcdGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50YXJnZXRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0YXJnZXRSYXdWYWx1ZSA9IGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRhcmdldFZhbHVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0YXJnZXRSYXdWYWx1ZSA9IE51bWJlci5wYXJzZUZsb2F0KGtwaUNvbnRleHQuZ2V0UHJvcGVydHkoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudGFyZ2V0UGF0aCB8fCBcIlwiKSk7XG5cdFx0fVxuXHRcdGNvbnN0IGRldmlhdGlvblJhd1ZhbHVlID0gdGFyZ2V0UmF3VmFsdWUgIT09IDAgPyAoKHJhd1ZhbHVlIC0gdGFyZ2V0UmF3VmFsdWUpIC8gdGFyZ2V0UmF3VmFsdWUpICogMTAwIDogdW5kZWZpbmVkO1xuXG5cdFx0Ly8gRm9ybWF0dGluZ1xuXHRcdGNvbnN0IHRhcmdldFZhbHVlID0gTnVtYmVyRm9ybWF0LmdldEZsb2F0SW5zdGFuY2UoXG5cdFx0XHR7XG5cdFx0XHRcdHN0eWxlOiBcInNob3J0XCIsXG5cdFx0XHRcdG1pbkZyYWN0aW9uRGlnaXRzOiAwLFxuXHRcdFx0XHRtYXhGcmFjdGlvbkRpZ2l0czogMSxcblx0XHRcdFx0c2hvd1NjYWxlOiBmYWxzZVxuXHRcdFx0fSxcblx0XHRcdGN1cnJlbnRMb2NhbGVcblx0XHQpLmZvcm1hdCh0YXJnZXRSYXdWYWx1ZSk7XG5cdFx0Y29uc3QgdGFyZ2V0U2NhbGUgPSBOdW1iZXJGb3JtYXQuZ2V0RmxvYXRJbnN0YW5jZShcblx0XHRcdHtcblx0XHRcdFx0c3R5bGU6IFwic2hvcnRcIixcblx0XHRcdFx0ZGVjaW1hbHM6IDAsXG5cdFx0XHRcdG1heEludGVnZXJEaWdpdHM6IDAsXG5cdFx0XHRcdHNob3dTY2FsZTogdHJ1ZVxuXHRcdFx0fSxcblx0XHRcdGN1cnJlbnRMb2NhbGVcblx0XHQpLmZvcm1hdCh0YXJnZXRSYXdWYWx1ZSk7XG5cblx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoYC8ke2twaURlZmluaXRpb24uaWR9L21hbmlmZXN0L3NhcC5jYXJkL2RhdGEvanNvbi90YXJnZXROdW1iZXJgLCB0YXJnZXRWYWx1ZSk7XG5cdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vdGFyZ2V0VW5pdGAsIHRhcmdldFNjYWxlKTtcblxuXHRcdGlmIChkZXZpYXRpb25SYXdWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBkZXZpYXRpb25WYWx1ZSA9IE51bWJlckZvcm1hdC5nZXRGbG9hdEluc3RhbmNlKFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bWluRnJhY3Rpb25EaWdpdHM6IDAsXG5cdFx0XHRcdFx0bWF4RnJhY3Rpb25EaWdpdHM6IDEsXG5cdFx0XHRcdFx0c2hvd1NjYWxlOiBmYWxzZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjdXJyZW50TG9jYWxlXG5cdFx0XHQpLmZvcm1hdChkZXZpYXRpb25SYXdWYWx1ZSk7XG5cdFx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoYC8ke2twaURlZmluaXRpb24uaWR9L21hbmlmZXN0L3NhcC5jYXJkL2RhdGEvanNvbi9kZXZpYXRpb25OdW1iZXJgLCBkZXZpYXRpb25WYWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL2RldmlhdGlvbk51bWJlcmAsIFwiTi9BXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyB0YWcgZGF0YSBmb3IgYSBLUEksIGFuZCBzdG9yZXMgaXQgaW4gdGhlIEpTT04gS1BJIG1vZGVsLlxuXHQgKlxuXHQgKiBAcGFyYW0ga3BpRGVmaW5pdGlvbiBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgS1BJLlxuXHQgKiBAcGFyYW0gb01haW5Nb2RlbCBUaGUgbW9kZWwgdXNlZCB0byBsb2FkIHRoZSBkYXRhLlxuXHQgKiBAcGFyYW0gb0tQSU1vZGVsIFRoZSBKU09OIG1vZGVsIHdoZXJlIHRoZSBkYXRhIHdpbGwgYmUgc3RvcmVkXG5cdCAqIEBwYXJhbSBsb2FkRnVsbCBJZiBub3QgdHJ1ZSwgbG9hZHMgb25seSBkYXRhIGZvciB0aGUgS1BJIHRhZ1xuXHQgKiBAcmV0dXJucyBUaGUgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gZGF0YSBpcyBsb2FkZWQuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgbG9hZEtQSVRhZ0RhdGEoa3BpRGVmaW5pdGlvbjogS1BJRGVmaW5pdGlvbiwgb01haW5Nb2RlbDogT0RhdGFNb2RlbCwgb0tQSU1vZGVsOiBKU09OTW9kZWwsIGxvYWRGdWxsPzogYm9vbGVhbik6IGFueSB7XG5cdFx0Ly8gSWYgbG9hZEZ1bGw9ZmFsc2UsIHRoZW4gd2UncmUganVzdCBsb2FkaW5nIGRhdGEgZm9yIHRoZSB0YWcgYW5kIHdlIHVzZSB0aGUgXCIkYXV0by5Mb25nUnVubmVyc1wiIGdyb3VwSURcblx0XHQvLyBJZiBsb2FkRnVsbD10cnVlLCB3ZSdyZSBsb2FkaW5nIGRhdGEgZm9yIHRoZSB3aG9sZSBLUEkgKHRhZyArIGNhcmQpIGFuZCB3ZSB1c2UgdGhlIFwiJGF1dG8uV29ya2Vyc1wiIGdyb3VwSURcblx0XHRjb25zdCBvTGlzdEJpbmRpbmcgPSBsb2FkRnVsbFxuXHRcdFx0PyBvTWFpbk1vZGVsLmJpbmRMaXN0KGAvJHtrcGlEZWZpbml0aW9uLmVudGl0eVNldH1gLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB7ICQkZ3JvdXBJZDogXCIkYXV0by5Xb3JrZXJzXCIgfSlcblx0XHRcdDogb01haW5Nb2RlbC5iaW5kTGlzdChgLyR7a3BpRGVmaW5pdGlvbi5lbnRpdHlTZXR9YCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgeyAkJGdyb3VwSWQ6IFwiJGF1dG8uTG9uZ1J1bm5lcnNcIiB9KTtcblx0XHRjb25zdCBvQWdncmVnYXRlOiBSZWNvcmQ8c3RyaW5nLCB7IHVuaXQ/OiBzdHJpbmcgfT4gPSB7fTtcblxuXHRcdC8vIE1haW4gdmFsdWUgKyBjdXJyZW5jeS91bml0XG5cdFx0aWYgKGtwaURlZmluaXRpb24uZGF0YXBvaW50LnVuaXQ/LmlzUGF0aCkge1xuXHRcdFx0b0FnZ3JlZ2F0ZVtrcGlEZWZpbml0aW9uLmRhdGFwb2ludC5wcm9wZXJ0eVBhdGhdID0geyB1bml0OiBrcGlEZWZpbml0aW9uLmRhdGFwb2ludC51bml0LnZhbHVlIH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9BZ2dyZWdhdGVba3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQucHJvcGVydHlQYXRoXSA9IHt9O1xuXHRcdH1cblxuXHRcdC8vIFByb3BlcnR5IGZvciBjcml0aWNhbGl0eVxuXHRcdGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC5jcml0aWNhbGl0eVBhdGgpIHtcblx0XHRcdG9BZ2dyZWdhdGVba3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQuY3JpdGljYWxpdHlQYXRoXSA9IHt9O1xuXHRcdH1cblxuXHRcdC8vIFByb3BlcnRpZXMgZm9yIHRyZW5kIGFuZCB0cmVuZCBjYWxjdWxhdGlvblxuXHRcdGlmIChsb2FkRnVsbCkge1xuXHRcdFx0aWYgKGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRyZW5kUGF0aCkge1xuXHRcdFx0XHRvQWdncmVnYXRlW2twaURlZmluaXRpb24uZGF0YXBvaW50LnRyZW5kUGF0aF0gPSB7fTtcblx0XHRcdH1cblx0XHRcdGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlUGF0aCkge1xuXHRcdFx0XHRvQWdncmVnYXRlW2twaURlZmluaXRpb24uZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VQYXRoXSA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0aWYgKGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRhcmdldFBhdGgpIHtcblx0XHRcdFx0b0FnZ3JlZ2F0ZVtrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50YXJnZXRQYXRoXSA9IHt9O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdG9MaXN0QmluZGluZy5zZXRBZ2dyZWdhdGlvbih7IGFnZ3JlZ2F0ZTogb0FnZ3JlZ2F0ZSB9KTtcblxuXHRcdC8vIE1hbmFnZSBTZWxlY3Rpb25WYXJpYW50IGZpbHRlcnNcblx0XHRpZiAoa3BpRGVmaW5pdGlvbi5zZWxlY3Rpb25WYXJpYW50RmlsdGVyRGVmaW5pdGlvbnM/Lmxlbmd0aCkge1xuXHRcdFx0Y29uc3QgYUZpbHRlcnMgPSBrcGlEZWZpbml0aW9uLnNlbGVjdGlvblZhcmlhbnRGaWx0ZXJEZWZpbml0aW9ucy5tYXAoY3JlYXRlRmlsdGVyRnJvbURlZmluaXRpb24pLmZpbHRlcigoZmlsdGVyKSA9PiB7XG5cdFx0XHRcdHJldHVybiBmaWx0ZXIgIT09IHVuZGVmaW5lZDtcblx0XHRcdH0pIGFzIEZpbHRlcltdO1xuXHRcdFx0b0xpc3RCaW5kaW5nLmZpbHRlcihhRmlsdGVycyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9MaXN0QmluZGluZy5yZXF1ZXN0Q29udGV4dHMoMCwgMSkudGhlbigoYUNvbnRleHRzOiBDb250ZXh0W10pID0+IHtcblx0XHRcdGlmIChhQ29udGV4dHMubGVuZ3RoKSB7XG5cdFx0XHRcdGNvbnN0IHJhd1VuaXQgPSBrcGlEZWZpbml0aW9uLmRhdGFwb2ludC51bml0Py5pc1BhdGhcblx0XHRcdFx0XHQ/IGFDb250ZXh0c1swXS5nZXRQcm9wZXJ0eShrcGlEZWZpbml0aW9uLmRhdGFwb2ludC51bml0LnZhbHVlKVxuXHRcdFx0XHRcdDoga3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudW5pdD8udmFsdWU7XG5cblx0XHRcdFx0aWYgKGtwaURlZmluaXRpb24uZGF0YXBvaW50LnVuaXQgJiYgIXJhd1VuaXQpIHtcblx0XHRcdFx0XHQvLyBBIHVuaXQvY3VycmVuY3kgaXMgZGVmaW5lZCwgYnV0IGl0cyB2YWx1ZSBpcyB1bmRlZmluZWQgLS0+IG11bHRpLXVuaXQgc2l0dWF0aW9uXG5cdFx0XHRcdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vbWFpblZhbHVlYCwgXCIqXCIpO1xuXHRcdFx0XHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL21haW5WYWx1ZVVuc2NhbGVkYCwgXCIqXCIpO1xuXHRcdFx0XHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL21haW5WYWx1ZU5vU2NhbGVgLCBcIipcIik7XG5cdFx0XHRcdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vbWFpblZhbHVlU2NhbGVgLCBcIlwiKTtcblx0XHRcdFx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoYC8ke2twaURlZmluaXRpb24uaWR9L21hbmlmZXN0L3NhcC5jYXJkL2RhdGEvanNvbi9tYWluVW5pdGAsIHVuZGVmaW5lZCk7XG5cdFx0XHRcdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vbWFpbkNyaXRpY2FsaXR5YCwgTWVzc2FnZVR5cGUuTm9uZSk7XG5cdFx0XHRcdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vbWFpblN0YXRlYCwgXCJOb25lXCIpO1xuXHRcdFx0XHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL3RyZW5kYCwgXCJOb25lXCIpO1xuXHRcdFx0XHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL3RhcmdldE51bWJlcmAsIHVuZGVmaW5lZCk7XG5cdFx0XHRcdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vdGFyZ2V0VW5pdGAsIHVuZGVmaW5lZCk7XG5cdFx0XHRcdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vZGV2aWF0aW9uTnVtYmVyYCwgdW5kZWZpbmVkKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZURhdGFwb2ludFZhbHVlQW5kQ3VycmVuY3koa3BpRGVmaW5pdGlvbiwgYUNvbnRleHRzWzBdLCBvS1BJTW9kZWwpO1xuXHRcdFx0XHRcdHRoaXMudXBkYXRlRGF0YXBvaW50Q3JpdGljYWxpdHkoa3BpRGVmaW5pdGlvbiwgYUNvbnRleHRzWzBdLCBvS1BJTW9kZWwpO1xuXG5cdFx0XHRcdFx0aWYgKGxvYWRGdWxsKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnVwZGF0ZURhdGFwb2ludFRyZW5kKGtwaURlZmluaXRpb24sIGFDb250ZXh0c1swXSwgb0tQSU1vZGVsKTtcblx0XHRcdFx0XHRcdHRoaXMudXBkYXRlVGFyZ2V0VmFsdWUoa3BpRGVmaW5pdGlvbiwgYUNvbnRleHRzWzBdLCBvS1BJTW9kZWwpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWRzIGNhcmQgZGF0YSBmb3IgYSBLUEksIGFuZCBzdG9yZXMgaXQgaW4gdGhlIEpTT04gS1BJIG1vZGVsLlxuXHQgKlxuXHQgKiBAcGFyYW0ga3BpRGVmaW5pdGlvbiBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgS1BJLlxuXHQgKiBAcGFyYW0gb01haW5Nb2RlbCBUaGUgbW9kZWwgdXNlZCB0byBsb2FkIHRoZSBkYXRhLlxuXHQgKiBAcGFyYW0gb0tQSU1vZGVsIFRoZSBKU09OIG1vZGVsIHdoZXJlIHRoZSBkYXRhIHdpbGwgYmUgc3RvcmVkXG5cdCAqIEByZXR1cm5zIFRoZSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2hlbiBkYXRhIGlzIGxvYWRlZC5cblx0ICovXG5cdHByb3RlY3RlZCBsb2FkS1BJQ2FyZERhdGEoa3BpRGVmaW5pdGlvbjogS1BJRGVmaW5pdGlvbiwgb01haW5Nb2RlbDogT0RhdGFNb2RlbCwgb0tQSU1vZGVsOiBKU09OTW9kZWwpOiBhbnkge1xuXHRcdGNvbnN0IG9MaXN0QmluZGluZyA9IG9NYWluTW9kZWwuYmluZExpc3QoYC8ke2twaURlZmluaXRpb24uZW50aXR5U2V0fWAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHtcblx0XHRcdCQkZ3JvdXBJZDogXCIkYXV0by5Xb3JrZXJzXCJcblx0XHR9KTtcblx0XHRjb25zdCBvR3JvdXA6IFJlY29yZDxzdHJpbmcsIE9iamVjdD4gPSB7fTtcblx0XHRjb25zdCBvQWdncmVnYXRlOiBSZWNvcmQ8c3RyaW5nLCBPYmplY3Q+ID0ge307XG5cblx0XHRrcGlEZWZpbml0aW9uLmNoYXJ0LmRpbWVuc2lvbnMuZm9yRWFjaCgoZGltZW5zaW9uKSA9PiB7XG5cdFx0XHRvR3JvdXBbZGltZW5zaW9uLm5hbWVdID0ge307XG5cdFx0fSk7XG5cdFx0a3BpRGVmaW5pdGlvbi5jaGFydC5tZWFzdXJlcy5mb3JFYWNoKChtZWFzdXJlKSA9PiB7XG5cdFx0XHRvQWdncmVnYXRlW21lYXN1cmUubmFtZV0gPSB7fTtcblx0XHR9KTtcblx0XHRvTGlzdEJpbmRpbmcuc2V0QWdncmVnYXRpb24oe1xuXHRcdFx0Z3JvdXA6IG9Hcm91cCxcblx0XHRcdGFnZ3JlZ2F0ZTogb0FnZ3JlZ2F0ZVxuXHRcdH0pO1xuXG5cdFx0Ly8gTWFuYWdlIFNlbGVjdGlvblZhcmlhbnQgZmlsdGVyc1xuXHRcdGlmIChrcGlEZWZpbml0aW9uLnNlbGVjdGlvblZhcmlhbnRGaWx0ZXJEZWZpbml0aW9ucz8ubGVuZ3RoKSB7XG5cdFx0XHRjb25zdCBhRmlsdGVycyA9IGtwaURlZmluaXRpb24uc2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zLm1hcChjcmVhdGVGaWx0ZXJGcm9tRGVmaW5pdGlvbikuZmlsdGVyKChmaWx0ZXIpID0+IHtcblx0XHRcdFx0cmV0dXJuIGZpbHRlciAhPT0gdW5kZWZpbmVkO1xuXHRcdFx0fSkgYXMgRmlsdGVyW107XG5cdFx0XHRvTGlzdEJpbmRpbmcuZmlsdGVyKGFGaWx0ZXJzKTtcblx0XHR9XG5cblx0XHQvLyBTb3J0aW5nXG5cdFx0aWYgKGtwaURlZmluaXRpb24uY2hhcnQuc29ydE9yZGVyKSB7XG5cdFx0XHRvTGlzdEJpbmRpbmcuc29ydChcblx0XHRcdFx0a3BpRGVmaW5pdGlvbi5jaGFydC5zb3J0T3JkZXIubWFwKChzb3J0SW5mbykgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBuZXcgU29ydGVyKHNvcnRJbmZvLm5hbWUsIHNvcnRJbmZvLmRlc2NlbmRpbmcpO1xuXHRcdFx0XHR9KVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gb0xpc3RCaW5kaW5nLnJlcXVlc3RDb250ZXh0cygwLCBrcGlEZWZpbml0aW9uLmNoYXJ0Lm1heEl0ZW1zKS50aGVuKChhQ29udGV4dHM6IENvbnRleHRbXSkgPT4ge1xuXHRcdFx0Y29uc3QgY2hhcnREYXRhID0gYUNvbnRleHRzLm1hcChmdW5jdGlvbiAob0NvbnRleHQpIHtcblx0XHRcdFx0Y29uc3Qgb0RhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblx0XHRcdFx0a3BpRGVmaW5pdGlvbi5jaGFydC5kaW1lbnNpb25zLmZvckVhY2goKGRpbWVuc2lvbikgPT4ge1xuXHRcdFx0XHRcdG9EYXRhW2RpbWVuc2lvbi5uYW1lXSA9IG9Db250ZXh0LmdldFByb3BlcnR5KGRpbWVuc2lvbi5uYW1lKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGtwaURlZmluaXRpb24uY2hhcnQubWVhc3VyZXMuZm9yRWFjaCgobWVhc3VyZSkgPT4ge1xuXHRcdFx0XHRcdG9EYXRhW21lYXN1cmUubmFtZV0gPSBvQ29udGV4dC5nZXRQcm9wZXJ0eShtZWFzdXJlLm5hbWUpO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRyZXR1cm4gb0RhdGE7XG5cdFx0XHR9KTtcblxuXHRcdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vY2hhcnREYXRhYCwgY2hhcnREYXRhKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwb3BvdmVyIHRvIGRpc3BsYXkgdGhlIEtQSSBjYXJkXG5cdCAqIFRoZSBwb3BvdmVyIGFuZCB0aGUgY29udGFpbmVkIGNhcmQgZm9yIHRoZSBLUElzIGFyZSBjcmVhdGVkIGlmIG5lY2Vzc2FyeS5cblx0ICogVGhlIHBvcG92ZXIgaXMgc2hhcmVkIGJldHdlZW4gYWxsIEtQSXMsIHNvIGl0J3MgY3JlYXRlZCBvbmx5IG9uY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSBvS1BJVGFnIFRoZSB0YWcgdGhhdCB0cmlnZ2VyZWQgdGhlIHBvcG92ZXIgb3BlbmluZy5cblx0ICogQHJldHVybnMgVGhlIHNoYXJlZCBwb3BvdmVyIGFzIGEgcHJvbWlzZS5cblx0ICovXG5cdHByb3RlY3RlZCBnZXRQb3BvdmVyKG9LUElUYWc6IEdlbmVyaWNUYWcpOiBQcm9taXNlPFBvcG92ZXI+IHtcblx0XHRpZiAoIXRoaXMub1BvcG92ZXIpIHtcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdENvcmUubG9hZExpYnJhcnkoXCJzYXAvdWkvaW50ZWdyYXRpb25cIiwgeyBhc3luYzogdHJ1ZSB9KVxuXHRcdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRcdHNhcC51aS5yZXF1aXJlKFtcInNhcC91aS9pbnRlZ3JhdGlvbi93aWRnZXRzL0NhcmRcIiwgXCJzYXAvdWkvaW50ZWdyYXRpb24vSG9zdFwiXSwgKENhcmQ6IGFueSwgSG9zdDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG9Ib3N0ID0gbmV3IEhvc3QoKTtcblxuXHRcdFx0XHRcdFx0XHRvSG9zdC5hdHRhY2hBY3Rpb24oKG9FdmVudDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc1R5cGUgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwidHlwZVwiKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBvUGFyYW1zID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInBhcmFtZXRlcnNcIik7XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoc1R5cGUgPT09IFwiTmF2aWdhdGlvblwiKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAob1BhcmFtcy5zZW1hbnRpY09iamVjdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIGFueSkuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5uYXZpZ2F0ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvUGFyYW1zLnNlbWFudGljT2JqZWN0LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9QYXJhbXMuYWN0aW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQodGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIGFueSkuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5uYXZpZ2F0ZU91dGJvdW5kKG9QYXJhbXMub3V0Ym91bmQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdFx0dGhpcy5vQ2FyZCA9IG5ldyBDYXJkKHtcblx0XHRcdFx0XHRcdFx0XHR3aWR0aDogXCIyNXJlbVwiLFxuXHRcdFx0XHRcdFx0XHRcdGhlaWdodDogXCJhdXRvXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHRoaXMub0NhcmQuc2V0SG9zdChvSG9zdCk7XG5cblx0XHRcdFx0XHRcdFx0dGhpcy5vUG9wb3ZlciA9IG5ldyBQb3BvdmVyKFwia3BpLVBvcG92ZXJcIiwge1xuXHRcdFx0XHRcdFx0XHRcdHNob3dIZWFkZXI6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdHBsYWNlbWVudDogXCJBdXRvXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogW3RoaXMub0NhcmRdXG5cdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdG9LUElUYWcuYWRkRGVwZW5kZW50KHRoaXMub1BvcG92ZXIpOyAvLyBUaGUgZmlyc3QgY2xpY2tlZCB0YWcgZ2V0cyB0aGUgcG9wb3ZlciBhcyBkZXBlbmRlbnRcblxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHRoaXMub1BvcG92ZXIpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmVqZWN0KCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLm9Qb3BvdmVyKTtcblx0XHR9XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0cHVibGljIG9uS1BJUHJlc3NlZChvS1BJVGFnOiBhbnksIGtwaUlEOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBvS1BJTW9kZWwgPSBvS1BJVGFnLmdldE1vZGVsKFwia3BpTW9kZWxcIikgYXMgSlNPTk1vZGVsO1xuXG5cdFx0aWYgKHRoaXMuYUtQSURlZmluaXRpb25zICYmIHRoaXMuYUtQSURlZmluaXRpb25zLmxlbmd0aCkge1xuXHRcdFx0Y29uc3Qga3BpRGVmaW5pdGlvbiA9IHRoaXMuYUtQSURlZmluaXRpb25zLmZpbmQoZnVuY3Rpb24gKG9EZWYpIHtcblx0XHRcdFx0cmV0dXJuIG9EZWYuaWQgPT09IGtwaUlEO1xuXHRcdFx0fSk7XG5cblx0XHRcdGlmIChrcGlEZWZpbml0aW9uKSB7XG5cdFx0XHRcdGNvbnN0IG9Nb2RlbCA9IG9LUElUYWcuZ2V0TW9kZWwoKTtcblx0XHRcdFx0Y29uc3QgYVByb21pc2VzID0gW1xuXHRcdFx0XHRcdHRoaXMubG9hZEtQSVRhZ0RhdGEoa3BpRGVmaW5pdGlvbiwgb01vZGVsLCBvS1BJTW9kZWwsIHRydWUpLFxuXHRcdFx0XHRcdHRoaXMubG9hZEtQSUNhcmREYXRhKGtwaURlZmluaXRpb24sIG9Nb2RlbCwgb0tQSU1vZGVsKSxcblx0XHRcdFx0XHR0aGlzLmdldFBvcG92ZXIob0tQSVRhZylcblx0XHRcdFx0XTtcblxuXHRcdFx0XHRQcm9taXNlLmFsbChhUHJvbWlzZXMpXG5cdFx0XHRcdFx0LnRoZW4oKGFSZXN1bHRzKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLm9DYXJkLnNldE1hbmlmZXN0KG9LUElNb2RlbC5nZXRQcm9wZXJ0eShgLyR7a3BpSUR9L21hbmlmZXN0YCkpO1xuXHRcdFx0XHRcdFx0dGhpcy5vQ2FyZC5yZWZyZXNoKCk7XG5cblx0XHRcdFx0XHRcdGNvbnN0IG9Qb3BvdmVyID0gYVJlc3VsdHNbMl07XG5cdFx0XHRcdFx0XHRvUG9wb3Zlci5vcGVuQnkob0tQSVRhZywgZmFsc2UpO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmNhdGNoKChlcnIpID0+IHtcblx0XHRcdFx0XHRcdExvZy5lcnJvcihlcnIpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBLUElNYW5hZ2VtZW50Q29udHJvbGxlckV4dGVuc2lvbjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7O0VBcUJBLE1BQU1BLDBCQUF1RCxHQUFHO0lBQy9ELEdBQUcs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
|
|
1013
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlVHlwZUZyb21Dcml0aWNhbGl0eSIsIk1lc3NhZ2VUeXBlIiwiRXJyb3IiLCJXYXJuaW5nIiwiU3VjY2VzcyIsIkluZm9ybWF0aW9uIiwiVmFsdWVDb2xvckZyb21NZXNzYWdlVHlwZSIsIk5vbmUiLCJtZXNzYWdlVHlwZUZyb21UYXJnZXRDYWxjdWxhdGlvbiIsImtwaVZhbHVlIiwiYVRocmVzaG9sZHMiLCJjcml0aWNhbGl0eVByb3BlcnR5IiwidW5kZWZpbmVkIiwibWVzc2FnZVR5cGVGcm9tTWluaW1pemVDYWxjdWxhdGlvbiIsIm1lc3NhZ2VUeXBlRnJvbU1heGltaXplQ2FsY3VsYXRpb24iLCJkZXZpYXRpb25JbmRpY2F0b3JGcm9tVHJlbmRUeXBlIiwidHJlbmRWYWx1ZSIsImRldmlhdGlvbkluZGljYXRvciIsImRldmlhdGlvbkluZGljYXRvckZyb21DYWxjdWxhdGlvbiIsInJlZmVyZW5jZVZhbHVlIiwiaXNSZWxhdGl2ZSIsImNvbXBWYWx1ZSIsImNyZWF0ZUZpbHRlckZyb21EZWZpbml0aW9uIiwiZmlsdGVyRGVmaW5pdGlvbiIsInJhbmdlcyIsImxlbmd0aCIsIkZpbHRlciIsInByb3BlcnR5UGF0aCIsIm9wZXJhdG9yIiwicmFuZ2VMb3ciLCJyYW5nZUhpZ2giLCJhUmFuZ2VGaWx0ZXJzIiwibWFwIiwicmFuZ2UiLCJmaWx0ZXJzIiwiYW5kIiwiZ2V0RmlsdGVyU3RyaW5nRnJvbURlZmluaXRpb24iLCJjdXJyZW50TG9jYWxlIiwiTG9jYWxlIiwic2FwIiwidWkiLCJnZXRDb3JlIiwiZ2V0Q29uZmlndXJhdGlvbiIsImdldExhbmd1YWdlIiwicmVzQnVuZGxlIiwiQ29yZSIsImdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZSIsImRhdGVGb3JtYXQiLCJEYXRlRm9ybWF0IiwiZ2V0RGF0ZUluc3RhbmNlIiwic3R5bGUiLCJmb3JtYXRSYW5nZSIsInZhbHVlTG93IiwicHJvcGVydHlUeXBlIiwiaW5kZXhPZiIsImZvcm1hdCIsIkRhdGUiLCJ2YWx1ZUhpZ2giLCJnZXRUZXh0Iiwiam9pbiIsImZvcm1hdENoYXJ0VGl0bGUiLCJrcGlEZWYiLCJmb3JtYXRMaXN0IiwiaXRlbXMiLCJsYWJlbCIsInJlcyIsIkkiLCJjaGFydCIsIm1lYXN1cmVzIiwiZGltZW5zaW9ucyIsInVwZGF0ZUNoYXJ0TGFiZWxTZXR0aW5ncyIsImNoYXJ0RGVmaW5pdGlvbiIsIm9DaGFydFByb3BlcnRpZXMiLCJjaGFydFR5cGUiLCJjYXRlZ29yeUF4aXMiLCJ0aXRsZSIsInZpc2libGUiLCJ2YWx1ZUF4aXMiLCJmb3JtYXRTdHJpbmciLCJwbG90QXJlYSIsImRhdGFMYWJlbCIsInR5cGUiLCJ2YWx1ZUF4aXMyIiwibGVnZW5kR3JvdXAiLCJsYXlvdXQiLCJwb3NpdGlvbiIsImFsaWdubWVudCIsInNpemVMZWdlbmQiLCJmaWx0ZXJNYXAiLCJhT2JqZWN0cyIsImFSb2xlcyIsImZpbHRlciIsImRpbWVuc2lvbiIsInJvbGUiLCJnZXRTY2F0dGVyQnViYmxlQ2hhcnRGZWVkcyIsImF4aXMxTWVhc3VyZXMiLCJheGlzMk1lYXN1cmVzIiwiYXhpczNNZWFzdXJlcyIsIm90aGVyTWVhc3VyZXMiLCJzZXJpZXNEaW1lbnNpb25zIiwic2hhcGVEaW1lbnNpb24iLCJmaW5kIiwieE1lYXN1cmUiLCJzaGlmdCIsInlNZWFzdXJlIiwidWlkIiwidmFsdWVzIiwic2l6ZU1lYXN1cmUiLCJwdXNoIiwiZ2V0Q2hhcnRGZWVkcyIsImdldE5hdmlnYXRpb25QYXJhbWV0ZXJzIiwibmF2SW5mbyIsIm9TaGVsbFNlcnZpY2UiLCJzZW1hbnRpY09iamVjdCIsImFjdGlvbiIsImdldExpbmtzIiwidGhlbiIsImFMaW5rcyIsImdldFByaW1hcnlJbnRlbnQiLCJvTGluayIsIm9JbmZvIiwicGFyc2VTaGVsbEhhc2giLCJpbnRlbnQiLCJ1bmF2YWlsYWJsZUFjdGlvbnMiLCJvdXRib3VuZE5hdmlnYXRpb24iLCJQcm9taXNlIiwicmVzb2x2ZSIsIm91dGJvdW5kIiwiS1BJTWFuYWdlbWVudENvbnRyb2xsZXJFeHRlbnNpb24iLCJkZWZpbmVVSTVDbGFzcyIsIm1ldGhvZE92ZXJyaWRlIiwicHVibGljRXh0ZW5zaW9uIiwiaW5pdENhcmRNYW5pZmVzdCIsImtwaURlZmluaXRpb24iLCJvS1BJTW9kZWwiLCJvQ2FyZE1hbmlmZXN0IiwiaWQiLCJ0ZWNobm9sb2d5IiwiZGF0YSIsImpzb24iLCJoZWFkZXIiLCJkYXRhcG9pbnQiLCJzdWJUaXRsZSIsImRlc2NyaXB0aW9uIiwidW5pdE9mTWVhc3VyZW1lbnQiLCJtYWluSW5kaWNhdG9yIiwibnVtYmVyIiwidW5pdCIsInN0YXRlIiwidHJlbmQiLCJjb250ZW50IiwibWluSGVpZ2h0IiwiY2hhcnRQcm9wZXJ0aWVzIiwicGF0aCIsInRhcmdldFBhdGgiLCJ0YXJnZXRWYWx1ZSIsInNpZGVJbmRpY2F0b3JzIiwic2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zIiwiYURlc2NyaXB0aW9ucyIsImZvckVhY2giLCJkZXNjIiwiZGV0YWlscyIsInRleHQiLCJ2YWx1ZSIsIm5hbWUiLCJtZWFzdXJlIiwiZmVlZHMiLCJzZXRQcm9wZXJ0eSIsIm1hbmlmZXN0IiwiaW5pdE5hdmlnYXRpb25JbmZvIiwibmF2aWdhdGlvbiIsIm9OYXZJbmZvIiwicGFyYW1ldGVycyIsIm9uSW5pdCIsImFLUElEZWZpbml0aW9ucyIsImdldFZpZXciLCJnZXRDb250cm9sbGVyIiwiX2dldFBhZ2VNb2RlbCIsImdldFByb3BlcnR5Iiwib1ZpZXciLCJvQXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiSlNPTk1vZGVsIiwic2V0TW9kZWwiLCJnZXRTaGVsbFNlcnZpY2VzIiwiY2F0Y2giLCJlcnIiLCJMb2ciLCJlcnJvciIsImxvYWRLUElUYWdEYXRhIiwiZ2V0TW9kZWwiLCJvbkV4aXQiLCJkZXN0cm95IiwidXBkYXRlRGF0YXBvaW50VmFsdWVBbmRDdXJyZW5jeSIsImtwaUNvbnRleHQiLCJyYXdVbml0IiwiaXNQYXRoIiwiaXNQZXJjZW50YWdlIiwiaXNDdXJyZW5jeSIsInJhd1ZhbHVlIiwiTnVtYmVyIiwicGFyc2VGbG9hdCIsIk51bWJlckZvcm1hdCIsImdldEZsb2F0SW5zdGFuY2UiLCJtaW5GcmFjdGlvbkRpZ2l0cyIsIm1heEZyYWN0aW9uRGlnaXRzIiwic2hvd1NjYWxlIiwia3BpVmFsdWVVbnNjYWxlZCIsImdyb3VwaW5nRW5hYmxlZCIsImtwaVZhbHVlTm9TY2FsZSIsImtwaVZhbHVlU2NhbGUiLCJkZWNpbWFscyIsIm1heEludGVnZXJEaWdpdHMiLCJrcGlVbml0IiwiZ2V0VW5pdEluc3RhbmNlIiwic2hvd051bWJlciIsInVwZGF0ZURhdGFwb2ludENyaXRpY2FsaXR5IiwiY3JpdGljYWxpdHlWYWx1ZSIsImNyaXRpY2FsaXR5UGF0aCIsImNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzIiwiY3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGUiLCJ1cGRhdGVEYXRhcG9pbnRUcmVuZCIsInRyZW5kUGF0aCIsInRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VWYWx1ZSIsInRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VQYXRoIiwidHJlbmRSZWZlcmVuY2VWYWx1ZSIsInRyZW5kQ2FsY3VsYXRpb25Jc1JlbGF0aXZlIiwidHJlbmRDYWxjdWxhdGlvblRyZXNob2xkcyIsInVwZGF0ZVRhcmdldFZhbHVlIiwidGFyZ2V0UmF3VmFsdWUiLCJkZXZpYXRpb25SYXdWYWx1ZSIsInRhcmdldFNjYWxlIiwiZGV2aWF0aW9uVmFsdWUiLCJvTWFpbk1vZGVsIiwibG9hZEZ1bGwiLCJvTGlzdEJpbmRpbmciLCJiaW5kTGlzdCIsImVudGl0eVNldCIsIiQkZ3JvdXBJZCIsIm9BZ2dyZWdhdGUiLCJzZXRBZ2dyZWdhdGlvbiIsImFnZ3JlZ2F0ZSIsImFGaWx0ZXJzIiwicmVxdWVzdENvbnRleHRzIiwiYUNvbnRleHRzIiwibG9hZEtQSUNhcmREYXRhIiwib0dyb3VwIiwiZ3JvdXAiLCJzb3J0T3JkZXIiLCJzb3J0Iiwic29ydEluZm8iLCJTb3J0ZXIiLCJkZXNjZW5kaW5nIiwibWF4SXRlbXMiLCJjaGFydERhdGEiLCJvQ29udGV4dCIsIm9EYXRhIiwiZ2V0UG9wb3ZlciIsIm9LUElUYWciLCJvUG9wb3ZlciIsInJlamVjdCIsImxvYWRMaWJyYXJ5IiwiYXN5bmMiLCJyZXF1aXJlIiwiQ2FyZCIsIkhvc3QiLCJvSG9zdCIsImF0dGFjaEFjdGlvbiIsIm9FdmVudCIsInNUeXBlIiwiZ2V0UGFyYW1ldGVyIiwib1BhcmFtcyIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJuYXZpZ2F0ZSIsIm5hdmlnYXRlT3V0Ym91bmQiLCJvQ2FyZCIsIndpZHRoIiwiaGVpZ2h0Iiwic2V0SG9zdCIsIlBvcG92ZXIiLCJzaG93SGVhZGVyIiwicGxhY2VtZW50IiwiYWRkRGVwZW5kZW50Iiwib25LUElQcmVzc2VkIiwia3BpSUQiLCJvRGVmIiwib01vZGVsIiwiYVByb21pc2VzIiwiYWxsIiwiYVJlc3VsdHMiLCJzZXRNYW5pZmVzdCIsInJlZnJlc2giLCJvcGVuQnkiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJLUElNYW5hZ2VtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgQmFzZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSB7IEtQSUNoYXJ0RGVmaW5pdGlvbiwgS1BJRGVmaW5pdGlvbiwgTmF2aWdhdGlvbkluZm8gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vS1BJXCI7XG5pbXBvcnQgdHlwZSB7IEZpbHRlckRlZmluaXRpb24sIFJhbmdlRGVmaW5pdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvU2VsZWN0aW9uVmFyaWFudEhlbHBlclwiO1xuaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9UYWJsZUZvcm1hdHRlclR5cGVzXCI7XG5pbXBvcnQgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBHZW5lcmljVGFnIGZyb20gXCJzYXAvbS9HZW5lcmljVGFnXCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCBEYXRlRm9ybWF0IGZyb20gXCJzYXAvdWkvY29yZS9mb3JtYXQvRGF0ZUZvcm1hdFwiO1xuaW1wb3J0IE51bWJlckZvcm1hdCBmcm9tIFwic2FwL3VpL2NvcmUvZm9ybWF0L051bWJlckZvcm1hdFwiO1xuaW1wb3J0IExvY2FsZSBmcm9tIFwic2FwL3VpL2NvcmUvTG9jYWxlXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgU29ydGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvU29ydGVyXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgbWV0aG9kT3ZlcnJpZGUsIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCIuLi9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuXG5jb25zdCBNZXNzYWdlVHlwZUZyb21Dcml0aWNhbGl0eTogUmVjb3JkPHN0cmluZywgTWVzc2FnZVR5cGU+ID0ge1xuXHRcIjFcIjogTWVzc2FnZVR5cGUuRXJyb3IsXG5cdFwiMlwiOiBNZXNzYWdlVHlwZS5XYXJuaW5nLFxuXHRcIjNcIjogTWVzc2FnZVR5cGUuU3VjY2Vzcyxcblx0XCI1XCI6IE1lc3NhZ2VUeXBlLkluZm9ybWF0aW9uXG59O1xuXG5jb25zdCBWYWx1ZUNvbG9yRnJvbU1lc3NhZ2VUeXBlOiBSZWNvcmQ8TWVzc2FnZVR5cGUsIHN0cmluZz4gPSB7XG5cdEVycm9yOiBcIkVycm9yXCIsXG5cdFdhcm5pbmc6IFwiQ3JpdGljYWxcIixcblx0U3VjY2VzczogXCJHb29kXCIsXG5cdEluZm9ybWF0aW9uOiBcIk5vbmVcIixcblx0Tm9uZTogXCJOb25lXCJcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gZ2V0IGEgbWVzc2FnZSBzdGF0ZSBmcm9tIGEgY2FsY3VsYXRlZCBjcml0aWNhbGl0eSBvZiB0eXBlICdUYXJnZXQnLlxuICpcbiAqIEBwYXJhbSBrcGlWYWx1ZSBUaGUgdmFsdWUgb2YgdGhlIEtQSSB0byBiZSB0ZXN0ZWQgYWdhaW5zdC5cbiAqIEBwYXJhbSBhVGhyZXNob2xkcyBUaHJlc2hvbGRzIHRvIGJlIHVzZWQgW0RldmlhdGlvblJhbmdlTG93VmFsdWUsVG9sZXJhbmNlUmFuZ2VMb3dWYWx1ZSxBY2NlcHRhbmNlUmFuZ2VMb3dWYWx1ZSxBY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUsVG9sZXJhbmNlUmFuZ2VIaWdoVmFsdWUsRGV2aWF0aW9uUmFuZ2VIaWdoVmFsdWVdLlxuICogQHJldHVybnMgVGhlIGNvcnJlc3BvbmRpbmcgTWVzc2FnZVR5cGVcbiAqL1xuZnVuY3Rpb24gbWVzc2FnZVR5cGVGcm9tVGFyZ2V0Q2FsY3VsYXRpb24oa3BpVmFsdWU6IG51bWJlciwgYVRocmVzaG9sZHM6IChudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKVtdKTogTWVzc2FnZVR5cGUge1xuXHRsZXQgY3JpdGljYWxpdHlQcm9wZXJ0eTogTWVzc2FnZVR5cGU7XG5cblx0aWYgKGFUaHJlc2hvbGRzWzBdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbMF0gIT09IG51bGwgJiYga3BpVmFsdWUgPCBhVGhyZXNob2xkc1swXSkge1xuXHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5FcnJvcjtcblx0fSBlbHNlIGlmIChhVGhyZXNob2xkc1sxXSAhPT0gdW5kZWZpbmVkICYmIGFUaHJlc2hvbGRzWzFdICE9PSBudWxsICYmIGtwaVZhbHVlIDwgYVRocmVzaG9sZHNbMV0pIHtcblx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuV2FybmluZztcblx0fSBlbHNlIGlmIChhVGhyZXNob2xkc1syXSAhPT0gdW5kZWZpbmVkICYmIGFUaHJlc2hvbGRzWzJdICE9PSBudWxsICYmIGtwaVZhbHVlIDwgYVRocmVzaG9sZHNbMl0pIHtcblx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0fSBlbHNlIGlmIChhVGhyZXNob2xkc1s1XSAhPT0gdW5kZWZpbmVkICYmIGFUaHJlc2hvbGRzWzVdICE9PSBudWxsICYmIGtwaVZhbHVlID4gYVRocmVzaG9sZHNbNV0pIHtcblx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuRXJyb3I7XG5cdH0gZWxzZSBpZiAoYVRocmVzaG9sZHNbNF0gIT09IHVuZGVmaW5lZCAmJiBhVGhyZXNob2xkc1s0XSAhPT0gbnVsbCAmJiBrcGlWYWx1ZSA+IGFUaHJlc2hvbGRzWzRdKSB7XG5cdFx0Y3JpdGljYWxpdHlQcm9wZXJ0eSA9IE1lc3NhZ2VUeXBlLldhcm5pbmc7XG5cdH0gZWxzZSBpZiAoYVRocmVzaG9sZHNbM10gIT09IHVuZGVmaW5lZCAmJiBhVGhyZXNob2xkc1szXSAhPT0gbnVsbCAmJiBrcGlWYWx1ZSA+IGFUaHJlc2hvbGRzWzNdKSB7XG5cdFx0Y3JpdGljYWxpdHlQcm9wZXJ0eSA9IE1lc3NhZ2VUeXBlLk5vbmU7XG5cdH0gZWxzZSB7XG5cdFx0Y3JpdGljYWxpdHlQcm9wZXJ0eSA9IE1lc3NhZ2VUeXBlLlN1Y2Nlc3M7XG5cdH1cblxuXHRyZXR1cm4gY3JpdGljYWxpdHlQcm9wZXJ0eTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB0byBnZXQgYSBtZXNzYWdlIHN0YXRlIGZyb20gYSBjYWxjdWxhdGVkIGNyaXRpY2FsaXR5IG9mIHR5cGUgJ01pbmltaXplJy5cbiAqXG4gKiBAcGFyYW0ga3BpVmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBLUEkgdG8gYmUgdGVzdGVkIGFnYWluc3QuXG4gKiBAcGFyYW0gYVRocmVzaG9sZHMgVGhyZXNob2xkcyB0byBiZSB1c2VkIFtBY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUsVG9sZXJhbmNlUmFuZ2VIaWdoVmFsdWUsRGV2aWF0aW9uUmFuZ2VIaWdoVmFsdWVdLlxuICogQHJldHVybnMgVGhlIGNvcnJlc3BvbmRpbmcgTWVzc2FnZVR5cGVcbiAqL1xuZnVuY3Rpb24gbWVzc2FnZVR5cGVGcm9tTWluaW1pemVDYWxjdWxhdGlvbihrcGlWYWx1ZTogbnVtYmVyLCBhVGhyZXNob2xkczogKG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwpW10pOiBNZXNzYWdlVHlwZSB7XG5cdGxldCBjcml0aWNhbGl0eVByb3BlcnR5OiBNZXNzYWdlVHlwZTtcblxuXHRpZiAoYVRocmVzaG9sZHNbMl0gIT09IHVuZGVmaW5lZCAmJiBhVGhyZXNob2xkc1syXSAhPT0gbnVsbCAmJiBrcGlWYWx1ZSA+IGFUaHJlc2hvbGRzWzJdKSB7XG5cdFx0Y3JpdGljYWxpdHlQcm9wZXJ0eSA9IE1lc3NhZ2VUeXBlLkVycm9yO1xuXHR9IGVsc2UgaWYgKGFUaHJlc2hvbGRzWzFdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbMV0gIT09IG51bGwgJiYga3BpVmFsdWUgPiBhVGhyZXNob2xkc1sxXSkge1xuXHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5XYXJuaW5nO1xuXHR9IGVsc2UgaWYgKGFUaHJlc2hvbGRzWzBdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbMF0gIT09IG51bGwgJiYga3BpVmFsdWUgPiBhVGhyZXNob2xkc1swXSkge1xuXHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5Ob25lO1xuXHR9IGVsc2Uge1xuXHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5TdWNjZXNzO1xuXHR9XG5cblx0cmV0dXJuIGNyaXRpY2FsaXR5UHJvcGVydHk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gZ2V0IGEgbWVzc2FnZSBzdGF0ZSBmcm9tIGEgY2FsY3VsYXRlZCBjcml0aWNhbGl0eSBvZiB0eXBlICdNYXhpbWl6ZScuXG4gKlxuICogQHBhcmFtIGtwaVZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgS1BJIHRvIGJlIHRlc3RlZCBhZ2FpbnN0LlxuICogQHBhcmFtIGFUaHJlc2hvbGRzIFRocmVzaG9sZHMgdG8gYmUgdXNlZCBbRGV2aWF0aW9uUmFuZ2VMb3dWYWx1ZSxUb2xlcmFuY2VSYW5nZUxvd1ZhbHVlLEFjY2VwdGFuY2VSYW5nZUxvd1ZhbHVlXS5cbiAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIE1lc3NhZ2VUeXBlXG4gKi9cbmZ1bmN0aW9uIG1lc3NhZ2VUeXBlRnJvbU1heGltaXplQ2FsY3VsYXRpb24oa3BpVmFsdWU6IG51bWJlciwgYVRocmVzaG9sZHM6IChudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKVtdKTogTWVzc2FnZVR5cGUge1xuXHRsZXQgY3JpdGljYWxpdHlQcm9wZXJ0eTogTWVzc2FnZVR5cGU7XG5cblx0aWYgKGFUaHJlc2hvbGRzWzBdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbMF0gIT09IG51bGwgJiYga3BpVmFsdWUgPCBhVGhyZXNob2xkc1swXSkge1xuXHRcdGNyaXRpY2FsaXR5UHJvcGVydHkgPSBNZXNzYWdlVHlwZS5FcnJvcjtcblx0fSBlbHNlIGlmIChhVGhyZXNob2xkc1sxXSAhPT0gdW5kZWZpbmVkICYmIGFUaHJlc2hvbGRzWzFdICE9PSBudWxsICYmIGtwaVZhbHVlIDwgYVRocmVzaG9sZHNbMV0pIHtcblx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuV2FybmluZztcblx0fSBlbHNlIGlmIChhVGhyZXNob2xkc1syXSAhPT0gdW5kZWZpbmVkICYmIGFUaHJlc2hvbGRzWzJdICE9PSBudWxsICYmIGtwaVZhbHVlIDwgYVRocmVzaG9sZHNbMl0pIHtcblx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0fSBlbHNlIHtcblx0XHRjcml0aWNhbGl0eVByb3BlcnR5ID0gTWVzc2FnZVR5cGUuU3VjY2Vzcztcblx0fVxuXG5cdHJldHVybiBjcml0aWNhbGl0eVByb3BlcnR5O1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSBhIERldmlhdGlvbkluZGljYXRvciB2YWx1ZSBmcm9tIGEgdHJlbmQgdmFsdWUuXG4gKlxuICogQHBhcmFtIHRyZW5kVmFsdWUgVGhlIGNyaXRpY2FsaXR5IHZhbHVlcy5cbiAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIERldmlhdGlvbkluZGljYXRvciB2YWx1ZVxuICovXG5mdW5jdGlvbiBkZXZpYXRpb25JbmRpY2F0b3JGcm9tVHJlbmRUeXBlKHRyZW5kVmFsdWU6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyB7XG5cdGxldCBkZXZpYXRpb25JbmRpY2F0b3I6IHN0cmluZztcblxuXHRzd2l0Y2ggKHRyZW5kVmFsdWUpIHtcblx0XHRjYXNlIDE6IC8vIFN0cm9uZ1VwXG5cdFx0Y2FzZSBcIjFcIjpcblx0XHRjYXNlIDI6IC8vIFVwXG5cdFx0Y2FzZSBcIjJcIjpcblx0XHRcdGRldmlhdGlvbkluZGljYXRvciA9IFwiVXBcIjtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSA0OiAvLyBEb3duXG5cdFx0Y2FzZSBcIjRcIjpcblx0XHRjYXNlIDU6IC8vIFN0cm9uZ0Rvd25cblx0XHRjYXNlIFwiNVwiOlxuXHRcdFx0ZGV2aWF0aW9uSW5kaWNhdG9yID0gXCJEb3duXCI7XG5cdFx0XHRicmVhaztcblxuXHRcdGRlZmF1bHQ6XG5cdFx0XHRkZXZpYXRpb25JbmRpY2F0b3IgPSBcIk5vbmVcIjtcblx0fVxuXG5cdHJldHVybiBkZXZpYXRpb25JbmRpY2F0b3I7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gY2FsY3VsYXRlIGEgRGV2aWF0aW9uSW5kaWNhdG9yIGZyb20gYSBUcmVuZENhbGN1bGF0aW9uLlxuICpcbiAqIEBwYXJhbSBrcGlWYWx1ZSBUaGUgdmFsdWUgb2YgdGhlIEtQSVxuICogQHBhcmFtIHJlZmVyZW5jZVZhbHVlIFRoZSByZWZlcmVuY2UgdmFsdWUgdG8gY29tcGFyZSB3aXRoXG4gKiBAcGFyYW0gaXNSZWxhdGl2ZSBUcnVlIGlzIHRoZSBjb21wYXJpc29uIGlzIHJlbGF0aXZlXG4gKiBAcGFyYW0gYVRocmVzaG9sZHMgQXJyYXkgb2YgdGhyZXNob2xkcyBbU3Ryb25nRG93bkRpZmZlcmVuY2UsIERvd25EaWZmZXJlbmNlLCBVcERpZmZlcmVuY2UsIFN0cm9uZ1VwRGlmZmVyZW5jZV1cbiAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIERldmlhdGlvbkluZGljYXRvciB2YWx1ZVxuICovXG5mdW5jdGlvbiBkZXZpYXRpb25JbmRpY2F0b3JGcm9tQ2FsY3VsYXRpb24oXG5cdGtwaVZhbHVlOiBudW1iZXIsXG5cdHJlZmVyZW5jZVZhbHVlOiBudW1iZXIsXG5cdGlzUmVsYXRpdmU6IGJvb2xlYW4sXG5cdGFUaHJlc2hvbGRzOiAobnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbClbXSB8IHVuZGVmaW5lZFxuKTogc3RyaW5nIHtcblx0bGV0IGRldmlhdGlvbkluZGljYXRvcjogc3RyaW5nO1xuXG5cdGlmICghYVRocmVzaG9sZHMgfHwgKGlzUmVsYXRpdmUgJiYgIXJlZmVyZW5jZVZhbHVlKSkge1xuXHRcdHJldHVybiBcIk5vbmVcIjtcblx0fVxuXG5cdGNvbnN0IGNvbXBWYWx1ZSA9IGlzUmVsYXRpdmUgPyAoa3BpVmFsdWUgLSByZWZlcmVuY2VWYWx1ZSkgLyByZWZlcmVuY2VWYWx1ZSA6IGtwaVZhbHVlIC0gcmVmZXJlbmNlVmFsdWU7XG5cblx0aWYgKGFUaHJlc2hvbGRzWzBdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbMF0gIT09IG51bGwgJiYgY29tcFZhbHVlIDw9IGFUaHJlc2hvbGRzWzBdKSB7XG5cdFx0Ly8gU3Ryb25nRG93biAtLT4gRG93blxuXHRcdGRldmlhdGlvbkluZGljYXRvciA9IFwiRG93blwiO1xuXHR9IGVsc2UgaWYgKGFUaHJlc2hvbGRzWzFdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbMV0gIT09IG51bGwgJiYgY29tcFZhbHVlIDw9IGFUaHJlc2hvbGRzWzFdKSB7XG5cdFx0Ly8gRG93biAtLT4gRG93blxuXHRcdGRldmlhdGlvbkluZGljYXRvciA9IFwiRG93blwiO1xuXHR9IGVsc2UgaWYgKGFUaHJlc2hvbGRzWzNdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbM10gIT09IG51bGwgJiYgY29tcFZhbHVlID49IGFUaHJlc2hvbGRzWzNdKSB7XG5cdFx0Ly8gU3Ryb25nVXAgLS0+IFVwXG5cdFx0ZGV2aWF0aW9uSW5kaWNhdG9yID0gXCJVcFwiO1xuXHR9IGVsc2UgaWYgKGFUaHJlc2hvbGRzWzJdICE9PSB1bmRlZmluZWQgJiYgYVRocmVzaG9sZHNbMl0gIT09IG51bGwgJiYgY29tcFZhbHVlID49IGFUaHJlc2hvbGRzWzJdKSB7XG5cdFx0Ly8gVXAgLS0+IFVwXG5cdFx0ZGV2aWF0aW9uSW5kaWNhdG9yID0gXCJVcFwiO1xuXHR9IGVsc2Uge1xuXHRcdC8vIFNpZGV3YXlzIC0tPiBOb25lXG5cdFx0ZGV2aWF0aW9uSW5kaWNhdG9yID0gXCJOb25lXCI7XG5cdH1cblxuXHRyZXR1cm4gZGV2aWF0aW9uSW5kaWNhdG9yO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzYXAudWkubW9kZWwuRmlsdGVyIGZyb20gYSBmaWx0ZXIgZGVmaW5pdGlvbi5cbiAqXG4gKiBAcGFyYW0gZmlsdGVyRGVmaW5pdGlvbiBUaGUgZmlsdGVyIGRlZmluaXRpb25cbiAqIEByZXR1cm5zIFJldHVybnMgYSBzYXAudWkubW9kZWwuRmlsdGVyIGZyb20gdGhlIGRlZmluaXRpb24sIG9yIHVuZGVmaW5lZCBpZiB0aGUgZGVmaW5pdGlvbiBpcyBlbXB0eSAobm8gcmFuZ2VzKVxuICovXG5mdW5jdGlvbiBjcmVhdGVGaWx0ZXJGcm9tRGVmaW5pdGlvbihmaWx0ZXJEZWZpbml0aW9uOiBGaWx0ZXJEZWZpbml0aW9uKTogRmlsdGVyIHwgdW5kZWZpbmVkIHtcblx0aWYgKGZpbHRlckRlZmluaXRpb24ucmFuZ2VzLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH0gZWxzZSBpZiAoZmlsdGVyRGVmaW5pdGlvbi5yYW5nZXMubGVuZ3RoID09PSAxKSB7XG5cdFx0cmV0dXJuIG5ldyBGaWx0ZXIoXG5cdFx0XHRmaWx0ZXJEZWZpbml0aW9uLnByb3BlcnR5UGF0aCxcblx0XHRcdGZpbHRlckRlZmluaXRpb24ucmFuZ2VzWzBdLm9wZXJhdG9yIGFzIEZpbHRlck9wZXJhdG9yLFxuXHRcdFx0ZmlsdGVyRGVmaW5pdGlvbi5yYW5nZXNbMF0ucmFuZ2VMb3csXG5cdFx0XHRmaWx0ZXJEZWZpbml0aW9uLnJhbmdlc1swXS5yYW5nZUhpZ2hcblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IGFSYW5nZUZpbHRlcnMgPSBmaWx0ZXJEZWZpbml0aW9uLnJhbmdlcy5tYXAoKHJhbmdlKSA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IEZpbHRlcihmaWx0ZXJEZWZpbml0aW9uLnByb3BlcnR5UGF0aCwgcmFuZ2Uub3BlcmF0b3IgYXMgRmlsdGVyT3BlcmF0b3IsIHJhbmdlLnJhbmdlTG93LCByYW5nZS5yYW5nZUhpZ2gpO1xuXHRcdH0pO1xuXHRcdHJldHVybiBuZXcgRmlsdGVyKHtcblx0XHRcdGZpbHRlcnM6IGFSYW5nZUZpbHRlcnMsXG5cdFx0XHRhbmQ6IGZhbHNlXG5cdFx0fSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0RmlsdGVyU3RyaW5nRnJvbURlZmluaXRpb24oZmlsdGVyRGVmaW5pdGlvbjogRmlsdGVyRGVmaW5pdGlvbik6IHN0cmluZyB7XG5cdGNvbnN0IGN1cnJlbnRMb2NhbGUgPSBuZXcgTG9jYWxlKHNhcC51aS5nZXRDb3JlKCkuZ2V0Q29uZmlndXJhdGlvbigpLmdldExhbmd1YWdlKCkpO1xuXHRjb25zdCByZXNCdW5kbGUgPSBDb3JlLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpO1xuXHRjb25zdCBkYXRlRm9ybWF0ID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoeyBzdHlsZTogXCJtZWRpdW1cIiB9LCBjdXJyZW50TG9jYWxlKTtcblxuXHRmdW5jdGlvbiBmb3JtYXRSYW5nZShyYW5nZTogUmFuZ2VEZWZpbml0aW9uKTogc3RyaW5nIHtcblx0XHRjb25zdCB2YWx1ZUxvdyA9XG5cdFx0XHRmaWx0ZXJEZWZpbml0aW9uLnByb3BlcnR5VHlwZS5pbmRleE9mKFwiRWRtLkRhdGVcIikgPT09IDAgPyBkYXRlRm9ybWF0LmZvcm1hdChuZXcgRGF0ZShyYW5nZS5yYW5nZUxvdykpIDogcmFuZ2UucmFuZ2VMb3c7XG5cdFx0Y29uc3QgdmFsdWVIaWdoID1cblx0XHRcdGZpbHRlckRlZmluaXRpb24ucHJvcGVydHlUeXBlLmluZGV4T2YoXCJFZG0uRGF0ZVwiKSA9PT0gMCA/IGRhdGVGb3JtYXQuZm9ybWF0KG5ldyBEYXRlKHJhbmdlLnJhbmdlSGlnaCkpIDogcmFuZ2UucmFuZ2VIaWdoO1xuXG5cdFx0c3dpdGNoIChyYW5nZS5vcGVyYXRvcikge1xuXHRcdFx0Y2FzZSBcIkJUXCI6XG5cdFx0XHRcdHJldHVybiBgWyR7dmFsdWVMb3d9IC0gJHt2YWx1ZUhpZ2h9XWA7XG5cblx0XHRcdGNhc2UgXCJDb250YWluc1wiOlxuXHRcdFx0XHRyZXR1cm4gYCoke3ZhbHVlTG93fSpgO1xuXG5cdFx0XHRjYXNlIFwiR0VcIjpcblx0XHRcdFx0cmV0dXJuIGBcXHUyMjY1JHt2YWx1ZUxvd31gO1xuXG5cdFx0XHRjYXNlIFwiR1RcIjpcblx0XHRcdFx0cmV0dXJuIGA+JHt2YWx1ZUxvd31gO1xuXG5cdFx0XHRjYXNlIFwiTEVcIjpcblx0XHRcdFx0cmV0dXJuIGBcXHUyMjY0JHt2YWx1ZUxvd31gO1xuXG5cdFx0XHRjYXNlIFwiTFRcIjpcblx0XHRcdFx0cmV0dXJuIGA8JHt2YWx1ZUxvd31gO1xuXG5cdFx0XHRjYXNlIFwiTkJcIjpcblx0XHRcdFx0cmV0dXJuIHJlc0J1bmRsZS5nZXRUZXh0KFwiQ19LUElDQVJEX0ZJTFRFUlNUUklOR19OT1RcIiwgW2BbJHt2YWx1ZUxvd30gLSAke3ZhbHVlSGlnaH1dYF0pO1xuXG5cdFx0XHRjYXNlIFwiTkVcIjpcblx0XHRcdFx0cmV0dXJuIGBcXHUyMjYwJHt2YWx1ZUxvd31gO1xuXG5cdFx0XHRjYXNlIFwiTm90Q29udGFpbnNcIjpcblx0XHRcdFx0cmV0dXJuIHJlc0J1bmRsZS5nZXRUZXh0KFwiQ19LUElDQVJEX0ZJTFRFUlNUUklOR19OT1RcIiwgW2AqJHt2YWx1ZUxvd30qYF0pO1xuXG5cdFx0XHRjYXNlIFwiRVFcIjpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiB2YWx1ZUxvdztcblx0XHR9XG5cdH1cblx0aWYgKGZpbHRlckRlZmluaXRpb24ucmFuZ2VzLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9IGVsc2UgaWYgKGZpbHRlckRlZmluaXRpb24ucmFuZ2VzLmxlbmd0aCA9PT0gMSkge1xuXHRcdHJldHVybiBmb3JtYXRSYW5nZShmaWx0ZXJEZWZpbml0aW9uLnJhbmdlc1swXSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGAoJHtmaWx0ZXJEZWZpbml0aW9uLnJhbmdlcy5tYXAoZm9ybWF0UmFuZ2UpLmpvaW4oXCIsXCIpfSlgO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdENoYXJ0VGl0bGUoa3BpRGVmOiBLUElEZWZpbml0aW9uKTogc3RyaW5nIHtcblx0Y29uc3QgcmVzQnVuZGxlID0gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKTtcblxuXHRmdW5jdGlvbiBmb3JtYXRMaXN0KGl0ZW1zOiB7IG5hbWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10pIHtcblx0XHRpZiAoaXRlbXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9IGVsc2UgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0cmV0dXJuIGl0ZW1zWzBdLmxhYmVsO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsZXQgcmVzID0gaXRlbXNbMF0ubGFiZWw7XG5cdFx0XHRmb3IgKGxldCBJID0gMTsgSSA8IGl0ZW1zLmxlbmd0aCAtIDE7IEkrKykge1xuXHRcdFx0XHRyZXMgKz0gYCwgJHtpdGVtc1tJXS5sYWJlbH1gO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcmVzQnVuZGxlLmdldFRleHQoXCJDX0tQSUNBUkRfSVRFTVNMSVNUXCIsIFtyZXMsIGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdLmxhYmVsXSk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJlc0J1bmRsZS5nZXRUZXh0KFwiQ19LUElDQVJEX0NIQVJUVElUTEVcIiwgW2Zvcm1hdExpc3Qoa3BpRGVmLmNoYXJ0Lm1lYXN1cmVzKSwgZm9ybWF0TGlzdChrcGlEZWYuY2hhcnQuZGltZW5zaW9ucyldKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQ2hhcnRMYWJlbFNldHRpbmdzKGNoYXJ0RGVmaW5pdGlvbjogS1BJQ2hhcnREZWZpbml0aW9uLCBvQ2hhcnRQcm9wZXJ0aWVzOiBhbnkpOiB2b2lkIHtcblx0c3dpdGNoIChjaGFydERlZmluaXRpb24uY2hhcnRUeXBlKSB7XG5cdFx0Y2FzZSBcIkRvbnV0XCI6XG5cdFx0XHQvLyBTaG93IGRhdGEgbGFiZWxzLCBkbyBub3Qgc2hvdyBheGlzIHRpdGxlc1xuXHRcdFx0b0NoYXJ0UHJvcGVydGllcy5jYXRlZ29yeUF4aXMgPSB7XG5cdFx0XHRcdHRpdGxlOiB7XG5cdFx0XHRcdFx0dmlzaWJsZTogZmFsc2Vcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdG9DaGFydFByb3BlcnRpZXMudmFsdWVBeGlzID0ge1xuXHRcdFx0XHR0aXRsZToge1xuXHRcdFx0XHRcdHZpc2libGU6IGZhbHNlXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGxhYmVsOiB7XG5cdFx0XHRcdFx0Zm9ybWF0U3RyaW5nOiBcIlNob3J0RmxvYXRcIlxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0b0NoYXJ0UHJvcGVydGllcy5wbG90QXJlYS5kYXRhTGFiZWwgPSB7XG5cdFx0XHRcdHZpc2libGU6IHRydWUsXG5cdFx0XHRcdHR5cGU6IFwidmFsdWVcIixcblx0XHRcdFx0Zm9ybWF0U3RyaW5nOiBcIlNob3J0RmxvYXRfTUZEMlwiXG5cdFx0XHR9O1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIFwiYnViYmxlXCI6XG5cdFx0XHQvLyBTaG93IGF4aXMgdGl0bGUsIGJ1YmJsZSBzaXplIGxlZ2VuZCwgZG8gbm90IHNob3cgZGF0YSBsYWJlbHNcblx0XHRcdG9DaGFydFByb3BlcnRpZXMudmFsdWVBeGlzID0ge1xuXHRcdFx0XHR0aXRsZToge1xuXHRcdFx0XHRcdHZpc2libGU6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0bGFiZWw6IHtcblx0XHRcdFx0XHRmb3JtYXRTdHJpbmc6IFwiU2hvcnRGbG9hdFwiXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRvQ2hhcnRQcm9wZXJ0aWVzLnZhbHVlQXhpczIgPSB7XG5cdFx0XHRcdHRpdGxlOiB7XG5cdFx0XHRcdFx0dmlzaWJsZTogdHJ1ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRsYWJlbDoge1xuXHRcdFx0XHRcdGZvcm1hdFN0cmluZzogXCJTaG9ydEZsb2F0XCJcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdG9DaGFydFByb3BlcnRpZXMubGVnZW5kR3JvdXAgPSB7XG5cdFx0XHRcdGxheW91dDoge1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdGFsaWdubWVudDogXCJ0b3BMZWZ0XCJcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdG9DaGFydFByb3BlcnRpZXMuc2l6ZUxlZ2VuZCA9IHtcblx0XHRcdFx0dmlzaWJsZTogdHJ1ZVxuXHRcdFx0fTtcblx0XHRcdG9DaGFydFByb3BlcnRpZXMucGxvdEFyZWEuZGF0YUxhYmVsID0geyB2aXNpYmxlOiBmYWxzZSB9O1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIFwic2NhdHRlclwiOlxuXHRcdFx0Ly8gRG8gbm90IHNob3cgZGF0YSBsYWJlbHMgYW5kIGF4aXMgdGl0bGVzXG5cdFx0XHRvQ2hhcnRQcm9wZXJ0aWVzLnZhbHVlQXhpcyA9IHtcblx0XHRcdFx0dGl0bGU6IHtcblx0XHRcdFx0XHR2aXNpYmxlOiBmYWxzZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRsYWJlbDoge1xuXHRcdFx0XHRcdGZvcm1hdFN0cmluZzogXCJTaG9ydEZsb2F0XCJcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdG9DaGFydFByb3BlcnRpZXMudmFsdWVBeGlzMiA9IHtcblx0XHRcdFx0dGl0bGU6IHtcblx0XHRcdFx0XHR2aXNpYmxlOiBmYWxzZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRsYWJlbDoge1xuXHRcdFx0XHRcdGZvcm1hdFN0cmluZzogXCJTaG9ydEZsb2F0XCJcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdG9DaGFydFByb3BlcnRpZXMucGxvdEFyZWEuZGF0YUxhYmVsID0geyB2aXNpYmxlOiBmYWxzZSB9O1xuXHRcdFx0YnJlYWs7XG5cblx0XHRkZWZhdWx0OlxuXHRcdFx0Ly8gRG8gbm90IHNob3cgZGF0YSBsYWJlbHMgYW5kIGF4aXMgdGl0bGVzXG5cdFx0XHRvQ2hhcnRQcm9wZXJ0aWVzLmNhdGVnb3J5QXhpcyA9IHtcblx0XHRcdFx0dGl0bGU6IHtcblx0XHRcdFx0XHR2aXNpYmxlOiBmYWxzZVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0b0NoYXJ0UHJvcGVydGllcy52YWx1ZUF4aXMgPSB7XG5cdFx0XHRcdHRpdGxlOiB7XG5cdFx0XHRcdFx0dmlzaWJsZTogZmFsc2Vcblx0XHRcdFx0fSxcblx0XHRcdFx0bGFiZWw6IHtcblx0XHRcdFx0XHRmb3JtYXRTdHJpbmc6IFwiU2hvcnRGbG9hdFwiXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRvQ2hhcnRQcm9wZXJ0aWVzLnBsb3RBcmVhLmRhdGFMYWJlbCA9IHsgdmlzaWJsZTogZmFsc2UgfTtcblx0fVxufVxuZnVuY3Rpb24gZmlsdGVyTWFwKGFPYmplY3RzOiB7IG5hbWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgcm9sZT86IHN0cmluZyB9W10sIGFSb2xlcz86IChzdHJpbmcgfCB1bmRlZmluZWQpW10pOiBzdHJpbmdbXSB7XG5cdGlmIChhUm9sZXMgJiYgYVJvbGVzLmxlbmd0aCkge1xuXHRcdHJldHVybiBhT2JqZWN0c1xuXHRcdFx0LmZpbHRlcigoZGltZW5zaW9uKSA9PiB7XG5cdFx0XHRcdHJldHVybiBhUm9sZXMuaW5kZXhPZihkaW1lbnNpb24ucm9sZSkgPj0gMDtcblx0XHRcdH0pXG5cdFx0XHQubWFwKChkaW1lbnNpb24pID0+IHtcblx0XHRcdFx0cmV0dXJuIGRpbWVuc2lvbi5sYWJlbDtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBhT2JqZWN0cy5tYXAoKGRpbWVuc2lvbikgPT4ge1xuXHRcdFx0cmV0dXJuIGRpbWVuc2lvbi5sYWJlbDtcblx0XHR9KTtcblx0fVxufVxuXG5mdW5jdGlvbiBnZXRTY2F0dGVyQnViYmxlQ2hhcnRGZWVkcyhjaGFydERlZmluaXRpb246IEtQSUNoYXJ0RGVmaW5pdGlvbik6IHsgdWlkOiBzdHJpbmc7IHR5cGU6IHN0cmluZzsgdmFsdWVzOiBzdHJpbmdbXSB9W10ge1xuXHRjb25zdCBheGlzMU1lYXN1cmVzID0gZmlsdGVyTWFwKGNoYXJ0RGVmaW5pdGlvbi5tZWFzdXJlcywgW1wiQXhpczFcIl0pO1xuXHRjb25zdCBheGlzMk1lYXN1cmVzID0gZmlsdGVyTWFwKGNoYXJ0RGVmaW5pdGlvbi5tZWFzdXJlcywgW1wiQXhpczJcIl0pO1xuXHRjb25zdCBheGlzM01lYXN1cmVzID0gZmlsdGVyTWFwKGNoYXJ0RGVmaW5pdGlvbi5tZWFzdXJlcywgW1wiQXhpczNcIl0pO1xuXHRjb25zdCBvdGhlck1lYXN1cmVzID0gZmlsdGVyTWFwKGNoYXJ0RGVmaW5pdGlvbi5tZWFzdXJlcywgW3VuZGVmaW5lZF0pO1xuXHRjb25zdCBzZXJpZXNEaW1lbnNpb25zID0gZmlsdGVyTWFwKGNoYXJ0RGVmaW5pdGlvbi5kaW1lbnNpb25zLCBbXCJTZXJpZXNcIl0pO1xuXG5cdC8vIEdldCB0aGUgZmlyc3QgZGltZW5zaW9uIHdpdGggcm9sZSBcIkNhdGVnb3J5XCIgZm9yIHRoZSBzaGFwZVxuXHRjb25zdCBzaGFwZURpbWVuc2lvbiA9IGNoYXJ0RGVmaW5pdGlvbi5kaW1lbnNpb25zLmZpbmQoKGRpbWVuc2lvbikgPT4ge1xuXHRcdHJldHVybiBkaW1lbnNpb24ucm9sZSA9PT0gXCJDYXRlZ29yeVwiO1xuXHR9KTtcblxuXHQvLyBNZWFzdXJlIGZvciB0aGUgeC1BeGlzIDogZmlyc3QgbWVhc3VyZSBmb3IgQXhpczEsIG9yIGZvciBBeGlzMiBpZiBub3QgZm91bmQsIG9yIGZvciBBeGlzMyBpZiBub3QgZm91bmRcblx0Y29uc3QgeE1lYXN1cmUgPSBheGlzMU1lYXN1cmVzLnNoaWZ0KCkgfHwgYXhpczJNZWFzdXJlcy5zaGlmdCgpIHx8IGF4aXMzTWVhc3VyZXMuc2hpZnQoKSB8fCBvdGhlck1lYXN1cmVzLnNoaWZ0KCkgfHwgXCJcIjtcblx0Ly8gTWVhc3VyZSBmb3IgdGhlIHktQXhpcyA6IGZpcnN0IG1lYXN1cmUgZm9yIEF4aXMyLCBvciBzZWNvbmQgbWVhc3VyZSBmb3IgQXhpczEgaWYgbm90IGZvdW5kLCBvciBmaXJzdCBtZWFzdXJlIGZvciBBeGlzMyBpZiBub3QgZm91bmRcblx0Y29uc3QgeU1lYXN1cmUgPSBheGlzMk1lYXN1cmVzLnNoaWZ0KCkgfHwgYXhpczFNZWFzdXJlcy5zaGlmdCgpIHx8IGF4aXMzTWVhc3VyZXMuc2hpZnQoKSB8fCBvdGhlck1lYXN1cmVzLnNoaWZ0KCkgfHwgXCJcIjtcblx0Y29uc3QgcmVzID0gW1xuXHRcdHtcblx0XHRcdHVpZDogXCJ2YWx1ZUF4aXNcIixcblx0XHRcdHR5cGU6IFwiTWVhc3VyZVwiLFxuXHRcdFx0dmFsdWVzOiBbeE1lYXN1cmVdXG5cdFx0fSxcblx0XHR7XG5cdFx0XHR1aWQ6IFwidmFsdWVBeGlzMlwiLFxuXHRcdFx0dHlwZTogXCJNZWFzdXJlXCIsXG5cdFx0XHR2YWx1ZXM6IFt5TWVhc3VyZV1cblx0XHR9XG5cdF07XG5cblx0aWYgKGNoYXJ0RGVmaW5pdGlvbi5jaGFydFR5cGUgPT09IFwiYnViYmxlXCIpIHtcblx0XHQvLyBNZWFzdXJlIGZvciB0aGUgc2l6ZSBvZiB0aGUgYnViYmxlOiBmaXJzdCBtZWFzdXJlIGZvciBBeGlzMywgb3IgcmVtYWluaW5nIG1lYXN1cmUgZm9yIEF4aXMxL0F4aXMyIGlmIG5vdCBmb3VuZFxuXHRcdGNvbnN0IHNpemVNZWFzdXJlID0gYXhpczNNZWFzdXJlcy5zaGlmdCgpIHx8IGF4aXMxTWVhc3VyZXMuc2hpZnQoKSB8fCBheGlzMk1lYXN1cmVzLnNoaWZ0KCkgfHwgb3RoZXJNZWFzdXJlcy5zaGlmdCgpIHx8IFwiXCI7XG5cdFx0cmVzLnB1c2goe1xuXHRcdFx0dWlkOiBcImJ1YmJsZVdpZHRoXCIsXG5cdFx0XHR0eXBlOiBcIk1lYXN1cmVcIixcblx0XHRcdHZhbHVlczogW3NpemVNZWFzdXJlXVxuXHRcdH0pO1xuXHR9XG5cblx0Ly8gQ29sb3IgKG9wdGlvbmFsKVxuXHRpZiAoc2VyaWVzRGltZW5zaW9ucy5sZW5ndGgpIHtcblx0XHRyZXMucHVzaCh7XG5cdFx0XHR1aWQ6IFwiY29sb3JcIixcblx0XHRcdHR5cGU6IFwiRGltZW5zaW9uXCIsXG5cdFx0XHR2YWx1ZXM6IHNlcmllc0RpbWVuc2lvbnNcblx0XHR9KTtcblx0fVxuXHQvLyBTaGFwZSAob3B0aW9uYWwpXG5cdGlmIChzaGFwZURpbWVuc2lvbikge1xuXHRcdHJlcy5wdXNoKHtcblx0XHRcdHVpZDogXCJzaGFwZVwiLFxuXHRcdFx0dHlwZTogXCJEaW1lbnNpb25cIixcblx0XHRcdHZhbHVlczogW3NoYXBlRGltZW5zaW9uLmxhYmVsXVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGdldENoYXJ0RmVlZHMoY2hhcnREZWZpbml0aW9uOiBLUElDaGFydERlZmluaXRpb24pOiB7IHVpZDogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IHZhbHVlczogc3RyaW5nW10gfVtdIHtcblx0bGV0IHJlczogeyB1aWQ6IHN0cmluZzsgdHlwZTogc3RyaW5nOyB2YWx1ZXM6IHN0cmluZ1tdIH1bXTtcblxuXHRzd2l0Y2ggKGNoYXJ0RGVmaW5pdGlvbi5jaGFydFR5cGUpIHtcblx0XHRjYXNlIFwiRG9udXRcIjpcblx0XHRcdHJlcyA9IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHVpZDogXCJzaXplXCIsXG5cdFx0XHRcdFx0dHlwZTogXCJNZWFzdXJlXCIsXG5cdFx0XHRcdFx0dmFsdWVzOiBmaWx0ZXJNYXAoY2hhcnREZWZpbml0aW9uLm1lYXN1cmVzKVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dWlkOiBcImNvbG9yXCIsXG5cdFx0XHRcdFx0dHlwZTogXCJEaW1lbnNpb25cIixcblx0XHRcdFx0XHR2YWx1ZXM6IGZpbHRlck1hcChjaGFydERlZmluaXRpb24uZGltZW5zaW9ucylcblx0XHRcdFx0fVxuXHRcdFx0XTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBcImJ1YmJsZVwiOlxuXHRcdGNhc2UgXCJzY2F0dGVyXCI6XG5cdFx0XHRyZXMgPSBnZXRTY2F0dGVyQnViYmxlQ2hhcnRGZWVkcyhjaGFydERlZmluaXRpb24pO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIFwidmVydGljYWxfYnVsbGV0XCI6XG5cdFx0XHRyZXMgPSBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR1aWQ6IFwiYWN0dWFsVmFsdWVzXCIsXG5cdFx0XHRcdFx0dHlwZTogXCJNZWFzdXJlXCIsXG5cdFx0XHRcdFx0dmFsdWVzOiBmaWx0ZXJNYXAoY2hhcnREZWZpbml0aW9uLm1lYXN1cmVzLCBbdW5kZWZpbmVkLCBcIkF4aXMxXCJdKVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dWlkOiBcInRhcmdldFZhbHVlc1wiLFxuXHRcdFx0XHRcdHR5cGU6IFwiTWVhc3VyZVwiLFxuXHRcdFx0XHRcdHZhbHVlczogZmlsdGVyTWFwKGNoYXJ0RGVmaW5pdGlvbi5tZWFzdXJlcywgW1wiQXhpczJcIl0pXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR1aWQ6IFwiY2F0ZWdvcnlBeGlzXCIsXG5cdFx0XHRcdFx0dHlwZTogXCJEaW1lbnNpb25cIixcblx0XHRcdFx0XHR2YWx1ZXM6IGZpbHRlck1hcChjaGFydERlZmluaXRpb24uZGltZW5zaW9ucywgW3VuZGVmaW5lZCwgXCJDYXRlZ29yeVwiXSlcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHVpZDogXCJjb2xvclwiLFxuXHRcdFx0XHRcdHR5cGU6IFwiRGltZW5zaW9uXCIsXG5cdFx0XHRcdFx0dmFsdWVzOiBmaWx0ZXJNYXAoY2hhcnREZWZpbml0aW9uLmRpbWVuc2lvbnMsIFtcIlNlcmllc1wiXSlcblx0XHRcdFx0fVxuXHRcdFx0XTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJlcyA9IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHVpZDogXCJ2YWx1ZUF4aXNcIixcblx0XHRcdFx0XHR0eXBlOiBcIk1lYXN1cmVcIixcblx0XHRcdFx0XHR2YWx1ZXM6IGZpbHRlck1hcChjaGFydERlZmluaXRpb24ubWVhc3VyZXMpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR1aWQ6IFwiY2F0ZWdvcnlBeGlzXCIsXG5cdFx0XHRcdFx0dHlwZTogXCJEaW1lbnNpb25cIixcblx0XHRcdFx0XHR2YWx1ZXM6IGZpbHRlck1hcChjaGFydERlZmluaXRpb24uZGltZW5zaW9ucywgW3VuZGVmaW5lZCwgXCJDYXRlZ29yeVwiXSlcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHVpZDogXCJjb2xvclwiLFxuXHRcdFx0XHRcdHR5cGU6IFwiRGltZW5zaW9uXCIsXG5cdFx0XHRcdFx0dmFsdWVzOiBmaWx0ZXJNYXAoY2hhcnREZWZpbml0aW9uLmRpbWVuc2lvbnMsIFtcIlNlcmllc1wiXSlcblx0XHRcdFx0fVxuXHRcdFx0XTtcblx0fVxuXG5cdHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGdldE5hdmlnYXRpb25QYXJhbWV0ZXJzKFxuXHRuYXZJbmZvOiBOYXZpZ2F0aW9uSW5mbyxcblx0b1NoZWxsU2VydmljZTogYW55XG4pOiBQcm9taXNlPHsgc2VtYW50aWNPYmplY3Q/OiBzdHJpbmc7IGFjdGlvbj86IHN0cmluZzsgb3V0Ym91bmQ/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZD4ge1xuXHRpZiAobmF2SW5mby5zZW1hbnRpY09iamVjdCkge1xuXHRcdGlmIChuYXZJbmZvLmFjdGlvbikge1xuXHRcdFx0Ly8gQWN0aW9uIGlzIGFscmVhZHkgc3BlY2lmaWVkOiBjaGVjayBpZiBpdCdzIGF2YWlsYWJsZSBpbiB0aGUgc2hlbGxcblx0XHRcdHJldHVybiBvU2hlbGxTZXJ2aWNlLmdldExpbmtzKHsgc2VtYW50aWNPYmplY3Q6IG5hdkluZm8uc2VtYW50aWNPYmplY3QsIGFjdGlvbjogbmF2SW5mby5hY3Rpb24gfSkudGhlbigoYUxpbmtzOiBhbnlbXSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYUxpbmtzLmxlbmd0aCA/IHsgc2VtYW50aWNPYmplY3Q6IG5hdkluZm8uc2VtYW50aWNPYmplY3QsIGFjdGlvbjogbmF2SW5mby5hY3Rpb24gfSA6IHVuZGVmaW5lZDtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBXZSBnZXQgdGhlIHByaW1hcnkgaW50ZW50IGZyb20gdGhlIHNoZWxsXG5cdFx0XHRyZXR1cm4gb1NoZWxsU2VydmljZS5nZXRQcmltYXJ5SW50ZW50KG5hdkluZm8uc2VtYW50aWNPYmplY3QpLnRoZW4oKG9MaW5rOiBhbnkpID0+IHtcblx0XHRcdFx0aWYgKCFvTGluaykge1xuXHRcdFx0XHRcdC8vIE5vIHByaW1hcnkgaW50ZW50Li4uXG5cdFx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIENoZWNrIHRoYXQgdGhlIHByaW1hcnkgaW50ZW50IGlzIG5vdCBwYXJ0IG9mIHRoZSB1bmF2YWlsYWJsZSBhY3Rpb25zXG5cdFx0XHRcdGNvbnN0IG9JbmZvID0gb1NoZWxsU2VydmljZS5wYXJzZVNoZWxsSGFzaChvTGluay5pbnRlbnQpO1xuXHRcdFx0XHRyZXR1cm4gbmF2SW5mby51bmF2YWlsYWJsZUFjdGlvbnMgJiYgbmF2SW5mby51bmF2YWlsYWJsZUFjdGlvbnMuaW5kZXhPZihvSW5mby5hY3Rpb24pID49IDBcblx0XHRcdFx0XHQ/IHVuZGVmaW5lZFxuXHRcdFx0XHRcdDogeyBzZW1hbnRpY09iamVjdDogb0luZm8uc2VtYW50aWNPYmplY3QsIGFjdGlvbjogb0luZm8uYWN0aW9uIH07XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gT3V0Ym91bmQgbmF2aWdhdGlvbiBzcGVjaWZpZWQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0cmV0dXJuIG5hdkluZm8ub3V0Ym91bmROYXZpZ2F0aW9uID8gUHJvbWlzZS5yZXNvbHZlKHsgb3V0Ym91bmQ6IG5hdkluZm8ub3V0Ym91bmROYXZpZ2F0aW9uIH0pIDogUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG5cdH1cbn1cblxuLyoqXG4gKiBAY2xhc3MgQSBjb250cm9sbGVyIGV4dGVuc2lvbiBmb3IgbWFuYWdpbmcgdGhlIEtQSXMgaW4gYW4gYW5hbHl0aWNhbCBsaXN0IHBhZ2VcbiAqIEBuYW1lIHNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLktQSU1hbmFnZW1lbnRcbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwcml2YXRlXG4gKiBAc2luY2UgMS45My4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLktQSU1hbmFnZW1lbnRcIilcbmNsYXNzIEtQSU1hbmFnZW1lbnRDb250cm9sbGVyRXh0ZW5zaW9uIGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdHByb3RlY3RlZCBhS1BJRGVmaW5pdGlvbnM/OiBLUElEZWZpbml0aW9uW107XG5cblx0cHJvdGVjdGVkIG9DYXJkOiBhbnk7XG5cblx0cHJvdGVjdGVkIG9Qb3BvdmVyITogUG9wb3ZlcjtcblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgY2FyZCBtYW5pZmVzdCBmb3IgYSBLUEkgZGVmaW5pdGlvbiBhbmQgc3RvcmVzIGl0IGluIGEgSlNPTiBtb2RlbC5cblx0ICpcblx0ICogQHBhcmFtIGtwaURlZmluaXRpb24gVGhlIEtQSSBkZWZpbml0aW9uXG5cdCAqIEBwYXJhbSBvS1BJTW9kZWwgVGhlIEpTT04gbW9kZWwgaW4gd2hpY2ggdGhlIG1hbmlmZXN0IHdpbGwgYmUgc3RvcmVkXG5cdCAqL1xuXHRwcm90ZWN0ZWQgaW5pdENhcmRNYW5pZmVzdChrcGlEZWZpbml0aW9uOiBLUElEZWZpbml0aW9uLCBvS1BJTW9kZWw6IEpTT05Nb2RlbCk6IHZvaWQge1xuXHRcdGNvbnN0IG9DYXJkTWFuaWZlc3Q6IGFueSA9IHtcblx0XHRcdFwic2FwLmFwcFwiOiB7XG5cdFx0XHRcdGlkOiBcInNhcC5mZVwiLFxuXHRcdFx0XHR0eXBlOiBcImNhcmRcIlxuXHRcdFx0fSxcblx0XHRcdFwic2FwLnVpXCI6IHtcblx0XHRcdFx0dGVjaG5vbG9neTogXCJVSTVcIlxuXHRcdFx0fSxcblx0XHRcdFwic2FwLmNhcmRcIjoge1xuXHRcdFx0XHR0eXBlOiBcIkFuYWx5dGljYWxcIixcblx0XHRcdFx0ZGF0YToge1xuXHRcdFx0XHRcdGpzb246IHt9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGhlYWRlcjoge1xuXHRcdFx0XHRcdHR5cGU6IFwiTnVtZXJpY1wiLFxuXHRcdFx0XHRcdHRpdGxlOiBrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50aXRsZSxcblx0XHRcdFx0XHRzdWJUaXRsZToga3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQuZGVzY3JpcHRpb24sXG5cdFx0XHRcdFx0dW5pdE9mTWVhc3VyZW1lbnQ6IFwie21haW5Vbml0fVwiLFxuXHRcdFx0XHRcdG1haW5JbmRpY2F0b3I6IHtcblx0XHRcdFx0XHRcdG51bWJlcjogXCJ7bWFpblZhbHVlTm9TY2FsZX1cIixcblx0XHRcdFx0XHRcdHVuaXQ6IFwie21haW5WYWx1ZVNjYWxlfVwiLFxuXHRcdFx0XHRcdFx0c3RhdGU6IFwie21haW5TdGF0ZX1cIixcblx0XHRcdFx0XHRcdHRyZW5kOiBcInt0cmVuZH1cIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0Y29udGVudDoge1xuXHRcdFx0XHRcdG1pbkhlaWdodDogXCIyNXJlbVwiLFxuXHRcdFx0XHRcdGNoYXJ0UHJvcGVydGllczoge1xuXHRcdFx0XHRcdFx0cGxvdEFyZWE6IHt9LFxuXHRcdFx0XHRcdFx0dGl0bGU6IHtcblx0XHRcdFx0XHRcdFx0dmlzaWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0YWxpZ25tZW50OiBcImxlZnRcIlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZGF0YToge1xuXHRcdFx0XHRcdFx0cGF0aDogXCIvY2hhcnREYXRhXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0Ly8gQWRkIHNpZGUgaW5kaWNhdG9ycyBpbiB0aGUgY2FyZCBoZWFkZXIgaWYgYSB0YXJnZXQgaXMgZGVmaW5lZCBmb3IgdGhlIEtQSVxuXHRcdGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50YXJnZXRQYXRoIHx8IGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRhcmdldFZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IHJlc0J1bmRsZSA9IENvcmUuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIik7XG5cdFx0XHRvQ2FyZE1hbmlmZXN0W1wic2FwLmNhcmRcIl0uaGVhZGVyLnNpZGVJbmRpY2F0b3JzID0gW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGl0bGU6IHJlc0J1bmRsZS5nZXRUZXh0KFwiQ19LUElDQVJEX0lORElDQVRPUl9UQVJHRVRcIiksXG5cdFx0XHRcdFx0bnVtYmVyOiBcInt0YXJnZXROdW1iZXJ9XCIsXG5cdFx0XHRcdFx0dW5pdDogXCJ7dGFyZ2V0VW5pdH1cIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGl0bGU6IHJlc0J1bmRsZS5nZXRUZXh0KFwiQ19LUElDQVJEX0lORElDQVRPUl9ERVZJQVRJT05cIiksXG5cdFx0XHRcdFx0bnVtYmVyOiBcIntkZXZpYXRpb25OdW1iZXJ9XCIsXG5cdFx0XHRcdFx0dW5pdDogXCIlXCJcblx0XHRcdFx0fVxuXHRcdFx0XTtcblx0XHR9XG5cblx0XHQvLyBEZXRhaWxzIG9mIHRoZSBjYXJkOiBmaWx0ZXIgZGVzY3JpcHRpb25zXG5cdFx0aWYgKGtwaURlZmluaXRpb24uc2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zPy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IGFEZXNjcmlwdGlvbnM6IHN0cmluZ1tdID0gW107XG5cdFx0XHRrcGlEZWZpbml0aW9uLnNlbGVjdGlvblZhcmlhbnRGaWx0ZXJEZWZpbml0aW9ucy5mb3JFYWNoKChmaWx0ZXJEZWZpbml0aW9uKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGRlc2MgPSBnZXRGaWx0ZXJTdHJpbmdGcm9tRGVmaW5pdGlvbihmaWx0ZXJEZWZpbml0aW9uKTtcblx0XHRcdFx0aWYgKGRlc2MpIHtcblx0XHRcdFx0XHRhRGVzY3JpcHRpb25zLnB1c2goZGVzYyk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRpZiAoYURlc2NyaXB0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0b0NhcmRNYW5pZmVzdFtcInNhcC5jYXJkXCJdLmhlYWRlci5kZXRhaWxzID0gYURlc2NyaXB0aW9ucy5qb2luKFwiLCBcIik7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2hhcnQgc2V0dGluZ3M6IHR5cGUsIHRpdGxlLCBkaW1lbnNpb25zIGFuZCBtZWFzdXJlcyBpbiB0aGUgbWFuaWZlc3Rcblx0XHRvQ2FyZE1hbmlmZXN0W1wic2FwLmNhcmRcIl0uY29udGVudC5jaGFydFR5cGUgPSBrcGlEZWZpbml0aW9uLmNoYXJ0LmNoYXJ0VHlwZTtcblx0XHR1cGRhdGVDaGFydExhYmVsU2V0dGluZ3Moa3BpRGVmaW5pdGlvbi5jaGFydCwgb0NhcmRNYW5pZmVzdFtcInNhcC5jYXJkXCJdLmNvbnRlbnQuY2hhcnRQcm9wZXJ0aWVzKTtcblx0XHRvQ2FyZE1hbmlmZXN0W1wic2FwLmNhcmRcIl0uY29udGVudC5jaGFydFByb3BlcnRpZXMudGl0bGUudGV4dCA9IGZvcm1hdENoYXJ0VGl0bGUoa3BpRGVmaW5pdGlvbik7XG5cdFx0b0NhcmRNYW5pZmVzdFtcInNhcC5jYXJkXCJdLmNvbnRlbnQuZGltZW5zaW9ucyA9IGtwaURlZmluaXRpb24uY2hhcnQuZGltZW5zaW9ucy5tYXAoKGRpbWVuc2lvbikgPT4ge1xuXHRcdFx0cmV0dXJuIHsgbGFiZWw6IGRpbWVuc2lvbi5sYWJlbCwgdmFsdWU6IGB7JHtkaW1lbnNpb24ubmFtZX19YCB9O1xuXHRcdH0pO1xuXHRcdG9DYXJkTWFuaWZlc3RbXCJzYXAuY2FyZFwiXS5jb250ZW50Lm1lYXN1cmVzID0ga3BpRGVmaW5pdGlvbi5jaGFydC5tZWFzdXJlcy5tYXAoKG1lYXN1cmUpID0+IHtcblx0XHRcdHJldHVybiB7IGxhYmVsOiBtZWFzdXJlLmxhYmVsLCB2YWx1ZTogYHske21lYXN1cmUubmFtZX19YCB9O1xuXHRcdH0pO1xuXHRcdG9DYXJkTWFuaWZlc3RbXCJzYXAuY2FyZFwiXS5jb250ZW50LmZlZWRzID0gZ2V0Q2hhcnRGZWVkcyhrcGlEZWZpbml0aW9uLmNoYXJ0KTtcblxuXHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH1gLCB7XG5cdFx0XHRtYW5pZmVzdDogb0NhcmRNYW5pZmVzdFxuXHRcdH0pO1xuXHR9XG5cblx0cHJvdGVjdGVkIGluaXROYXZpZ2F0aW9uSW5mbyhrcGlEZWZpbml0aW9uOiBLUElEZWZpbml0aW9uLCBvS1BJTW9kZWw6IEpTT05Nb2RlbCwgb1NoZWxsU2VydmljZTogYW55KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gQWRkIG5hdmlnYXRpb25cblx0XHRpZiAoa3BpRGVmaW5pdGlvbi5uYXZpZ2F0aW9uKSB7XG5cdFx0XHRyZXR1cm4gZ2V0TmF2aWdhdGlvblBhcmFtZXRlcnMoa3BpRGVmaW5pdGlvbi5uYXZpZ2F0aW9uLCBvU2hlbGxTZXJ2aWNlKS50aGVuKChvTmF2SW5mbykgPT4ge1xuXHRcdFx0XHRpZiAob05hdkluZm8pIHtcblx0XHRcdFx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoYC8ke2twaURlZmluaXRpb24uaWR9L21hbmlmZXN0L3NhcC5jYXJkL2hlYWRlci9hY3Rpb25zYCwgW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0eXBlOiBcIk5hdmlnYXRpb25cIixcblx0XHRcdFx0XHRcdFx0cGFyYW1ldGVyczogb05hdkluZm9cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRdKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoKVxuXHRwdWJsaWMgb25Jbml0KCk6IHZvaWQge1xuXHRcdHRoaXMuYUtQSURlZmluaXRpb25zID0gKHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcikuX2dldFBhZ2VNb2RlbCgpPy5nZXRQcm9wZXJ0eShcIi9rcGlEZWZpbml0aW9uc1wiKTtcblxuXHRcdGlmICh0aGlzLmFLUElEZWZpbml0aW9ucyAmJiB0aGlzLmFLUElEZWZpbml0aW9ucy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCk7XG5cdFx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gKG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBCYXNlQ29udHJvbGxlcikuZ2V0QXBwQ29tcG9uZW50KCkgYXMgYW55O1xuXG5cdFx0XHQvLyBDcmVhdGUgYSBKU09OIG1vZGVsIHRvIHN0b3JlIEtQSSBkYXRhXG5cdFx0XHRjb25zdCBvS1BJTW9kZWwgPSBuZXcgSlNPTk1vZGVsKCk7XG5cdFx0XHRvVmlldy5zZXRNb2RlbChvS1BJTW9kZWwsIFwia3BpTW9kZWxcIik7XG5cblx0XHRcdHRoaXMuYUtQSURlZmluaXRpb25zLmZvckVhY2goKGtwaURlZmluaXRpb24pID0+IHtcblx0XHRcdFx0Ly8gQ3JlYXRlIHRoZSBtYW5pZmVzdCBmb3IgdGhlIEtQSSBjYXJkIGFuZCBzdG9yZSBpdCBpbiB0aGUgS1BJIG1vZGVsXG5cdFx0XHRcdHRoaXMuaW5pdENhcmRNYW5pZmVzdChrcGlEZWZpbml0aW9uLCBvS1BJTW9kZWwpO1xuXG5cdFx0XHRcdC8vIFNldCB0aGUgbmF2aWdhdGlvbiBpbmZvcm1hdGlvbiBpbiB0aGUgbWFuaWZlc3Rcblx0XHRcdFx0dGhpcy5pbml0TmF2aWdhdGlvbkluZm8oa3BpRGVmaW5pdGlvbiwgb0tQSU1vZGVsLCBvQXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKSkuY2F0Y2goZnVuY3Rpb24gKGVycjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGVycik7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdC8vIExvYWQgdGFnIGRhdGEgZm9yIHRoZSBLUElcblx0XHRcdFx0dGhpcy5sb2FkS1BJVGFnRGF0YShrcGlEZWZpbml0aW9uLCBvQXBwQ29tcG9uZW50LmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbCwgb0tQSU1vZGVsKS5jYXRjaChmdW5jdGlvbiAoZXJyOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoKVxuXHRwdWJsaWMgb25FeGl0KCk6IHZvaWQge1xuXHRcdGNvbnN0IG9LUElNb2RlbCA9IHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwia3BpTW9kZWxcIikgYXMgSlNPTk1vZGVsO1xuXG5cdFx0aWYgKG9LUElNb2RlbCkge1xuXHRcdFx0b0tQSU1vZGVsLmRlc3Ryb3koKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZURhdGFwb2ludFZhbHVlQW5kQ3VycmVuY3koa3BpRGVmaW5pdGlvbjogS1BJRGVmaW5pdGlvbiwga3BpQ29udGV4dDogQ29udGV4dCwgb0tQSU1vZGVsOiBKU09OTW9kZWwpIHtcblx0XHRjb25zdCBjdXJyZW50TG9jYWxlID0gbmV3IExvY2FsZShzYXAudWkuZ2V0Q29yZSgpLmdldENvbmZpZ3VyYXRpb24oKS5nZXRMYW5ndWFnZSgpKTtcblx0XHRjb25zdCByYXdVbml0ID0ga3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudW5pdD8uaXNQYXRoXG5cdFx0XHQ/IGtwaUNvbnRleHQuZ2V0UHJvcGVydHkoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudW5pdC52YWx1ZSlcblx0XHRcdDoga3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudW5pdD8udmFsdWU7XG5cblx0XHRjb25zdCBpc1BlcmNlbnRhZ2UgPSBrcGlEZWZpbml0aW9uLmRhdGFwb2ludC51bml0Py5pc0N1cnJlbmN5ID09PSBmYWxzZSAmJiByYXdVbml0ID09PSBcIiVcIjtcblxuXHRcdC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXHRcdC8vIE1haW4gS1BJIHZhbHVlXG5cdFx0Y29uc3QgcmF3VmFsdWUgPSBOdW1iZXIucGFyc2VGbG9hdChrcGlDb250ZXh0LmdldFByb3BlcnR5KGtwaURlZmluaXRpb24uZGF0YXBvaW50LnByb3BlcnR5UGF0aCkpO1xuXG5cdFx0Ly8gVmFsdWUgZm9ybWF0dGVkIHdpdGggYSBzY2FsZVxuXHRcdGNvbnN0IGtwaVZhbHVlID0gTnVtYmVyRm9ybWF0LmdldEZsb2F0SW5zdGFuY2UoXG5cdFx0XHR7XG5cdFx0XHRcdHN0eWxlOiBpc1BlcmNlbnRhZ2UgPyB1bmRlZmluZWQgOiBcInNob3J0XCIsXG5cdFx0XHRcdG1pbkZyYWN0aW9uRGlnaXRzOiAwLFxuXHRcdFx0XHRtYXhGcmFjdGlvbkRpZ2l0czogMSxcblx0XHRcdFx0c2hvd1NjYWxlOiAhaXNQZXJjZW50YWdlXG5cdFx0XHR9LFxuXHRcdFx0Y3VycmVudExvY2FsZVxuXHRcdCkuZm9ybWF0KHJhd1ZhbHVlKTtcblx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoYC8ke2twaURlZmluaXRpb24uaWR9L21hbmlmZXN0L3NhcC5jYXJkL2RhdGEvanNvbi9tYWluVmFsdWVgLCBrcGlWYWx1ZSk7XG5cblx0XHQvLyBWYWx1ZSB3aXRob3V0IGEgc2NhbGVcblx0XHRjb25zdCBrcGlWYWx1ZVVuc2NhbGVkID0gTnVtYmVyRm9ybWF0LmdldEZsb2F0SW5zdGFuY2UoXG5cdFx0XHR7XG5cdFx0XHRcdG1heEZyYWN0aW9uRGlnaXRzOiAyLFxuXHRcdFx0XHRzaG93U2NhbGU6IGZhbHNlLFxuXHRcdFx0XHRncm91cGluZ0VuYWJsZWQ6IHRydWVcblx0XHRcdH0sXG5cdFx0XHRjdXJyZW50TG9jYWxlXG5cdFx0KS5mb3JtYXQocmF3VmFsdWUpO1xuXHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL21haW5WYWx1ZVVuc2NhbGVkYCwga3BpVmFsdWVVbnNjYWxlZCk7XG5cblx0XHQvLyBWYWx1ZSBmb3JtYXR0ZWQgd2l0aCB0aGUgc2NhbGUgb21pdHRlZFxuXHRcdGNvbnN0IGtwaVZhbHVlTm9TY2FsZSA9IE51bWJlckZvcm1hdC5nZXRGbG9hdEluc3RhbmNlKFxuXHRcdFx0e1xuXHRcdFx0XHRzdHlsZTogaXNQZXJjZW50YWdlID8gdW5kZWZpbmVkIDogXCJzaG9ydFwiLFxuXHRcdFx0XHRtaW5GcmFjdGlvbkRpZ2l0czogMCxcblx0XHRcdFx0bWF4RnJhY3Rpb25EaWdpdHM6IDEsXG5cdFx0XHRcdHNob3dTY2FsZTogZmFsc2Vcblx0XHRcdH0sXG5cdFx0XHRjdXJyZW50TG9jYWxlXG5cdFx0KS5mb3JtYXQocmF3VmFsdWUpO1xuXHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL21haW5WYWx1ZU5vU2NhbGVgLCBrcGlWYWx1ZU5vU2NhbGUpO1xuXG5cdFx0Ly8gU2NhbGUgb2YgdGhlIHZhbHVlXG5cdFx0Y29uc3Qga3BpVmFsdWVTY2FsZSA9IE51bWJlckZvcm1hdC5nZXRGbG9hdEluc3RhbmNlKFxuXHRcdFx0e1xuXHRcdFx0XHRzdHlsZTogaXNQZXJjZW50YWdlID8gdW5kZWZpbmVkIDogXCJzaG9ydFwiLFxuXHRcdFx0XHRkZWNpbWFsczogMCxcblx0XHRcdFx0bWF4SW50ZWdlckRpZ2l0czogMCxcblx0XHRcdFx0c2hvd1NjYWxlOiB0cnVlXG5cdFx0XHR9LFxuXHRcdFx0Y3VycmVudExvY2FsZVxuXHRcdCkuZm9ybWF0KHJhd1ZhbHVlKTtcblx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoYC8ke2twaURlZmluaXRpb24uaWR9L21hbmlmZXN0L3NhcC5jYXJkL2RhdGEvanNvbi9tYWluVmFsdWVTY2FsZWAsIGtwaVZhbHVlU2NhbGUpO1xuXG5cdFx0Ly8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cdFx0Ly8gVW5pdCBvciBjdXJyZW5jeVxuXHRcdGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC51bml0ICYmIHJhd1VuaXQpIHtcblx0XHRcdGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC51bml0LmlzQ3VycmVuY3kpIHtcblx0XHRcdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vbWFpblVuaXRgLCByYXdVbml0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEluIGNhc2Ugb2YgdW5pdCBvZiBtZWFzdXJlLCB3ZSBoYXZlIHRvIGZvcm1hdCBpdCBwcm9wZXJseVxuXHRcdFx0XHRjb25zdCBrcGlVbml0ID0gTnVtYmVyRm9ybWF0LmdldFVuaXRJbnN0YW5jZSh7IHNob3dOdW1iZXI6IGZhbHNlIH0sIGN1cnJlbnRMb2NhbGUpLmZvcm1hdChyYXdWYWx1ZSwgcmF3VW5pdCk7XG5cdFx0XHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL21haW5Vbml0YCwga3BpVW5pdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVEYXRhcG9pbnRDcml0aWNhbGl0eShrcGlEZWZpbml0aW9uOiBLUElEZWZpbml0aW9uLCBrcGlDb250ZXh0OiBDb250ZXh0LCBvS1BJTW9kZWw6IEpTT05Nb2RlbCkge1xuXHRcdGNvbnN0IHJhd1ZhbHVlID0gTnVtYmVyLnBhcnNlRmxvYXQoa3BpQ29udGV4dC5nZXRQcm9wZXJ0eShrcGlEZWZpbml0aW9uLmRhdGFwb2ludC5wcm9wZXJ0eVBhdGgpKTtcblxuXHRcdGxldCBjcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0XHRpZiAoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQuY3JpdGljYWxpdHlWYWx1ZSkge1xuXHRcdFx0Ly8gQ3JpdGljYWxpdHkgaXMgYSBmaXhlZCB2YWx1ZVxuXHRcdFx0Y3JpdGljYWxpdHlWYWx1ZSA9IGtwaURlZmluaXRpb24uZGF0YXBvaW50LmNyaXRpY2FsaXR5VmFsdWU7XG5cdFx0fSBlbHNlIGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC5jcml0aWNhbGl0eVBhdGgpIHtcblx0XHRcdC8vIENyaXRpY2FsaXR5IGNvbWVzIGZyb20gYW5vdGhlciBwcm9wZXJ0eSAodmlhIGEgcGF0aClcblx0XHRcdGNyaXRpY2FsaXR5VmFsdWUgPVxuXHRcdFx0XHRNZXNzYWdlVHlwZUZyb21Dcml0aWNhbGl0eVtrcGlDb250ZXh0LmdldFByb3BlcnR5KGtwaURlZmluaXRpb24uZGF0YXBvaW50LmNyaXRpY2FsaXR5UGF0aCldIHx8IE1lc3NhZ2VUeXBlLk5vbmU7XG5cdFx0fSBlbHNlIGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcyAmJiBrcGlEZWZpbml0aW9uLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uTW9kZSkge1xuXHRcdFx0Ly8gQ3JpdGljYWxpdHkgY2FsY3VsYXRpb25cblx0XHRcdHN3aXRjaCAoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGUpIHtcblx0XHRcdFx0Y2FzZSBcIlVJLkltcHJvdmVtZW50RGlyZWN0aW9uVHlwZS9UYXJnZXRcIjpcblx0XHRcdFx0XHRjcml0aWNhbGl0eVZhbHVlID0gbWVzc2FnZVR5cGVGcm9tVGFyZ2V0Q2FsY3VsYXRpb24ocmF3VmFsdWUsIGtwaURlZmluaXRpb24uZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzKTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIFwiVUkuSW1wcm92ZW1lbnREaXJlY3Rpb25UeXBlL01pbmltaXplXCI6XG5cdFx0XHRcdFx0Y3JpdGljYWxpdHlWYWx1ZSA9IG1lc3NhZ2VUeXBlRnJvbU1pbmltaXplQ2FsY3VsYXRpb24oXG5cdFx0XHRcdFx0XHRyYXdWYWx1ZSxcblx0XHRcdFx0XHRcdGtwaURlZmluaXRpb24uZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIFwiVUkuSW1wcm92ZW1lbnREaXJlY3Rpb25UeXBlL01heGltaXplXCI6XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0Y3JpdGljYWxpdHlWYWx1ZSA9IG1lc3NhZ2VUeXBlRnJvbU1heGltaXplQ2FsY3VsYXRpb24oXG5cdFx0XHRcdFx0XHRyYXdWYWx1ZSxcblx0XHRcdFx0XHRcdGtwaURlZmluaXRpb24uZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cblx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoYC8ke2twaURlZmluaXRpb24uaWR9L21hbmlmZXN0L3NhcC5jYXJkL2RhdGEvanNvbi9tYWluQ3JpdGljYWxpdHlgLCBjcml0aWNhbGl0eVZhbHVlKTtcblx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoXG5cdFx0XHRgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL21haW5TdGF0ZWAsXG5cdFx0XHRWYWx1ZUNvbG9yRnJvbU1lc3NhZ2VUeXBlW2NyaXRpY2FsaXR5VmFsdWVdIHx8IFwiTm9uZVwiXG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgdXBkYXRlRGF0YXBvaW50VHJlbmQoa3BpRGVmaW5pdGlvbjogS1BJRGVmaW5pdGlvbiwga3BpQ29udGV4dDogQ29udGV4dCwgb0tQSU1vZGVsOiBKU09OTW9kZWwpIHtcblx0XHRjb25zdCByYXdWYWx1ZSA9IE51bWJlci5wYXJzZUZsb2F0KGtwaUNvbnRleHQuZ2V0UHJvcGVydHkoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQucHJvcGVydHlQYXRoKSk7XG5cblx0XHRsZXQgdHJlbmRWYWx1ZSA9IFwiTm9uZVwiO1xuXG5cdFx0aWYgKGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRyZW5kVmFsdWUpIHtcblx0XHRcdC8vIFRyZW5kIGlzIGEgZml4ZWQgdmFsdWVcblx0XHRcdHRyZW5kVmFsdWUgPSBrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50cmVuZFZhbHVlO1xuXHRcdH0gZWxzZSBpZiAoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudHJlbmRQYXRoKSB7XG5cdFx0XHQvLyBUcmVuZCBjb21lcyBmcm9tIGFub3RoZXIgcHJvcGVydHkgdmlhIGEgcGF0aFxuXHRcdFx0dHJlbmRWYWx1ZSA9IGRldmlhdGlvbkluZGljYXRvckZyb21UcmVuZFR5cGUoa3BpQ29udGV4dC5nZXRQcm9wZXJ0eShrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50cmVuZFBhdGgpKTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0a3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVZhbHVlICE9PSB1bmRlZmluZWQgfHxcblx0XHRcdGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VQYXRoXG5cdFx0KSB7XG5cdFx0XHQvLyBDYWxjdWxhdGVkIHRyZW5kXG5cdFx0XHRsZXQgdHJlbmRSZWZlcmVuY2VWYWx1ZTogbnVtYmVyO1xuXHRcdFx0aWYgKGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRyZW5kUmVmZXJlbmNlVmFsdWUgPSBrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlVmFsdWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0cmVuZFJlZmVyZW5jZVZhbHVlID0gTnVtYmVyLnBhcnNlRmxvYXQoXG5cdFx0XHRcdFx0a3BpQ29udGV4dC5nZXRQcm9wZXJ0eShrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlUGF0aCB8fCBcIlwiKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0dHJlbmRWYWx1ZSA9IGRldmlhdGlvbkluZGljYXRvckZyb21DYWxjdWxhdGlvbihcblx0XHRcdFx0cmF3VmFsdWUsXG5cdFx0XHRcdHRyZW5kUmVmZXJlbmNlVmFsdWUsXG5cdFx0XHRcdCEha3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvbklzUmVsYXRpdmUsXG5cdFx0XHRcdGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25UcmVzaG9sZHNcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vdHJlbmRgLCB0cmVuZFZhbHVlKTtcblx0fVxuXG5cdHByaXZhdGUgdXBkYXRlVGFyZ2V0VmFsdWUoa3BpRGVmaW5pdGlvbjogS1BJRGVmaW5pdGlvbiwga3BpQ29udGV4dDogQ29udGV4dCwgb0tQSU1vZGVsOiBKU09OTW9kZWwpIHtcblx0XHRpZiAoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudGFyZ2V0VmFsdWUgPT09IHVuZGVmaW5lZCAmJiBrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50YXJnZXRQYXRoID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybjsgLy8gTm8gdGFyZ2V0IHNldCBmb3IgdGhlIEtQSVxuXHRcdH1cblx0XHRjb25zdCByYXdWYWx1ZSA9IE51bWJlci5wYXJzZUZsb2F0KGtwaUNvbnRleHQuZ2V0UHJvcGVydHkoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQucHJvcGVydHlQYXRoKSk7XG5cdFx0Y29uc3QgY3VycmVudExvY2FsZSA9IG5ldyBMb2NhbGUoc2FwLnVpLmdldENvcmUoKS5nZXRDb25maWd1cmF0aW9uKCkuZ2V0TGFuZ3VhZ2UoKSk7XG5cblx0XHRsZXQgdGFyZ2V0UmF3VmFsdWU6IG51bWJlcjtcblx0XHRpZiAoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudGFyZ2V0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGFyZ2V0UmF3VmFsdWUgPSBrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50YXJnZXRWYWx1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGFyZ2V0UmF3VmFsdWUgPSBOdW1iZXIucGFyc2VGbG9hdChrcGlDb250ZXh0LmdldFByb3BlcnR5KGtwaURlZmluaXRpb24uZGF0YXBvaW50LnRhcmdldFBhdGggfHwgXCJcIikpO1xuXHRcdH1cblx0XHRjb25zdCBkZXZpYXRpb25SYXdWYWx1ZSA9IHRhcmdldFJhd1ZhbHVlICE9PSAwID8gKChyYXdWYWx1ZSAtIHRhcmdldFJhd1ZhbHVlKSAvIHRhcmdldFJhd1ZhbHVlKSAqIDEwMCA6IHVuZGVmaW5lZDtcblxuXHRcdC8vIEZvcm1hdHRpbmdcblx0XHRjb25zdCB0YXJnZXRWYWx1ZSA9IE51bWJlckZvcm1hdC5nZXRGbG9hdEluc3RhbmNlKFxuXHRcdFx0e1xuXHRcdFx0XHRzdHlsZTogXCJzaG9ydFwiLFxuXHRcdFx0XHRtaW5GcmFjdGlvbkRpZ2l0czogMCxcblx0XHRcdFx0bWF4RnJhY3Rpb25EaWdpdHM6IDEsXG5cdFx0XHRcdHNob3dTY2FsZTogZmFsc2Vcblx0XHRcdH0sXG5cdFx0XHRjdXJyZW50TG9jYWxlXG5cdFx0KS5mb3JtYXQodGFyZ2V0UmF3VmFsdWUpO1xuXHRcdGNvbnN0IHRhcmdldFNjYWxlID0gTnVtYmVyRm9ybWF0LmdldEZsb2F0SW5zdGFuY2UoXG5cdFx0XHR7XG5cdFx0XHRcdHN0eWxlOiBcInNob3J0XCIsXG5cdFx0XHRcdGRlY2ltYWxzOiAwLFxuXHRcdFx0XHRtYXhJbnRlZ2VyRGlnaXRzOiAwLFxuXHRcdFx0XHRzaG93U2NhbGU6IHRydWVcblx0XHRcdH0sXG5cdFx0XHRjdXJyZW50TG9jYWxlXG5cdFx0KS5mb3JtYXQodGFyZ2V0UmF3VmFsdWUpO1xuXG5cdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vdGFyZ2V0TnVtYmVyYCwgdGFyZ2V0VmFsdWUpO1xuXHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL3RhcmdldFVuaXRgLCB0YXJnZXRTY2FsZSk7XG5cblx0XHRpZiAoZGV2aWF0aW9uUmF3VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3QgZGV2aWF0aW9uVmFsdWUgPSBOdW1iZXJGb3JtYXQuZ2V0RmxvYXRJbnN0YW5jZShcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG1pbkZyYWN0aW9uRGlnaXRzOiAwLFxuXHRcdFx0XHRcdG1heEZyYWN0aW9uRGlnaXRzOiAxLFxuXHRcdFx0XHRcdHNob3dTY2FsZTogZmFsc2Vcblx0XHRcdFx0fSxcblx0XHRcdFx0Y3VycmVudExvY2FsZVxuXHRcdFx0KS5mb3JtYXQoZGV2aWF0aW9uUmF3VmFsdWUpO1xuXHRcdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vZGV2aWF0aW9uTnVtYmVyYCwgZGV2aWF0aW9uVmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoYC8ke2twaURlZmluaXRpb24uaWR9L21hbmlmZXN0L3NhcC5jYXJkL2RhdGEvanNvbi9kZXZpYXRpb25OdW1iZXJgLCBcIk4vQVwiKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTG9hZHMgdGFnIGRhdGEgZm9yIGEgS1BJLCBhbmQgc3RvcmVzIGl0IGluIHRoZSBKU09OIEtQSSBtb2RlbC5cblx0ICpcblx0ICogQHBhcmFtIGtwaURlZmluaXRpb24gVGhlIGRlZmluaXRpb24gb2YgdGhlIEtQSS5cblx0ICogQHBhcmFtIG9NYWluTW9kZWwgVGhlIG1vZGVsIHVzZWQgdG8gbG9hZCB0aGUgZGF0YS5cblx0ICogQHBhcmFtIG9LUElNb2RlbCBUaGUgSlNPTiBtb2RlbCB3aGVyZSB0aGUgZGF0YSB3aWxsIGJlIHN0b3JlZFxuXHQgKiBAcGFyYW0gbG9hZEZ1bGwgSWYgbm90IHRydWUsIGxvYWRzIG9ubHkgZGF0YSBmb3IgdGhlIEtQSSB0YWdcblx0ICogQHJldHVybnMgVGhlIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aGVuIGRhdGEgaXMgbG9hZGVkLlxuXHQgKi9cblx0cHJvdGVjdGVkIGxvYWRLUElUYWdEYXRhKGtwaURlZmluaXRpb246IEtQSURlZmluaXRpb24sIG9NYWluTW9kZWw6IE9EYXRhTW9kZWwsIG9LUElNb2RlbDogSlNPTk1vZGVsLCBsb2FkRnVsbD86IGJvb2xlYW4pOiBhbnkge1xuXHRcdC8vIElmIGxvYWRGdWxsPWZhbHNlLCB0aGVuIHdlJ3JlIGp1c3QgbG9hZGluZyBkYXRhIGZvciB0aGUgdGFnIGFuZCB3ZSB1c2UgdGhlIFwiJGF1dG8uTG9uZ1J1bm5lcnNcIiBncm91cElEXG5cdFx0Ly8gSWYgbG9hZEZ1bGw9dHJ1ZSwgd2UncmUgbG9hZGluZyBkYXRhIGZvciB0aGUgd2hvbGUgS1BJICh0YWcgKyBjYXJkKSBhbmQgd2UgdXNlIHRoZSBcIiRhdXRvLldvcmtlcnNcIiBncm91cElEXG5cdFx0Y29uc3Qgb0xpc3RCaW5kaW5nID0gbG9hZEZ1bGxcblx0XHRcdD8gb01haW5Nb2RlbC5iaW5kTGlzdChgLyR7a3BpRGVmaW5pdGlvbi5lbnRpdHlTZXR9YCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgeyAkJGdyb3VwSWQ6IFwiJGF1dG8uV29ya2Vyc1wiIH0pXG5cdFx0XHQ6IG9NYWluTW9kZWwuYmluZExpc3QoYC8ke2twaURlZmluaXRpb24uZW50aXR5U2V0fWAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHsgJCRncm91cElkOiBcIiRhdXRvLkxvbmdSdW5uZXJzXCIgfSk7XG5cdFx0Y29uc3Qgb0FnZ3JlZ2F0ZTogUmVjb3JkPHN0cmluZywgeyB1bml0Pzogc3RyaW5nIH0+ID0ge307XG5cblx0XHQvLyBNYWluIHZhbHVlICsgY3VycmVuY3kvdW5pdFxuXHRcdGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC51bml0Py5pc1BhdGgpIHtcblx0XHRcdG9BZ2dyZWdhdGVba3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQucHJvcGVydHlQYXRoXSA9IHsgdW5pdDoga3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudW5pdC52YWx1ZSB9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvQWdncmVnYXRlW2twaURlZmluaXRpb24uZGF0YXBvaW50LnByb3BlcnR5UGF0aF0gPSB7fTtcblx0XHR9XG5cblx0XHQvLyBQcm9wZXJ0eSBmb3IgY3JpdGljYWxpdHlcblx0XHRpZiAoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQuY3JpdGljYWxpdHlQYXRoKSB7XG5cdFx0XHRvQWdncmVnYXRlW2twaURlZmluaXRpb24uZGF0YXBvaW50LmNyaXRpY2FsaXR5UGF0aF0gPSB7fTtcblx0XHR9XG5cblx0XHQvLyBQcm9wZXJ0aWVzIGZvciB0cmVuZCBhbmQgdHJlbmQgY2FsY3VsYXRpb25cblx0XHRpZiAobG9hZEZ1bGwpIHtcblx0XHRcdGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50cmVuZFBhdGgpIHtcblx0XHRcdFx0b0FnZ3JlZ2F0ZVtrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50cmVuZFBhdGhdID0ge307XG5cdFx0XHR9XG5cdFx0XHRpZiAoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGgpIHtcblx0XHRcdFx0b0FnZ3JlZ2F0ZVtrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlUGF0aF0gPSB7fTtcblx0XHRcdH1cblx0XHRcdGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC50YXJnZXRQYXRoKSB7XG5cdFx0XHRcdG9BZ2dyZWdhdGVba3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudGFyZ2V0UGF0aF0gPSB7fTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRvTGlzdEJpbmRpbmcuc2V0QWdncmVnYXRpb24oeyBhZ2dyZWdhdGU6IG9BZ2dyZWdhdGUgfSk7XG5cblx0XHQvLyBNYW5hZ2UgU2VsZWN0aW9uVmFyaWFudCBmaWx0ZXJzXG5cdFx0aWYgKGtwaURlZmluaXRpb24uc2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zPy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IGFGaWx0ZXJzID0ga3BpRGVmaW5pdGlvbi5zZWxlY3Rpb25WYXJpYW50RmlsdGVyRGVmaW5pdGlvbnMubWFwKGNyZWF0ZUZpbHRlckZyb21EZWZpbml0aW9uKS5maWx0ZXIoKGZpbHRlcikgPT4ge1xuXHRcdFx0XHRyZXR1cm4gZmlsdGVyICE9PSB1bmRlZmluZWQ7XG5cdFx0XHR9KSBhcyBGaWx0ZXJbXTtcblx0XHRcdG9MaXN0QmluZGluZy5maWx0ZXIoYUZpbHRlcnMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBvTGlzdEJpbmRpbmcucmVxdWVzdENvbnRleHRzKDAsIDEpLnRoZW4oKGFDb250ZXh0czogQ29udGV4dFtdKSA9PiB7XG5cdFx0XHRpZiAoYUNvbnRleHRzLmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCByYXdVbml0ID0ga3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudW5pdD8uaXNQYXRoXG5cdFx0XHRcdFx0PyBhQ29udGV4dHNbMF0uZ2V0UHJvcGVydHkoa3BpRGVmaW5pdGlvbi5kYXRhcG9pbnQudW5pdC52YWx1ZSlcblx0XHRcdFx0XHQ6IGtwaURlZmluaXRpb24uZGF0YXBvaW50LnVuaXQ/LnZhbHVlO1xuXG5cdFx0XHRcdGlmIChrcGlEZWZpbml0aW9uLmRhdGFwb2ludC51bml0ICYmICFyYXdVbml0KSB7XG5cdFx0XHRcdFx0Ly8gQSB1bml0L2N1cnJlbmN5IGlzIGRlZmluZWQsIGJ1dCBpdHMgdmFsdWUgaXMgdW5kZWZpbmVkIC0tPiBtdWx0aS11bml0IHNpdHVhdGlvblxuXHRcdFx0XHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL21haW5WYWx1ZWAsIFwiKlwiKTtcblx0XHRcdFx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoYC8ke2twaURlZmluaXRpb24uaWR9L21hbmlmZXN0L3NhcC5jYXJkL2RhdGEvanNvbi9tYWluVmFsdWVVbnNjYWxlZGAsIFwiKlwiKTtcblx0XHRcdFx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoYC8ke2twaURlZmluaXRpb24uaWR9L21hbmlmZXN0L3NhcC5jYXJkL2RhdGEvanNvbi9tYWluVmFsdWVOb1NjYWxlYCwgXCIqXCIpO1xuXHRcdFx0XHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL21haW5WYWx1ZVNjYWxlYCwgXCJcIik7XG5cdFx0XHRcdFx0b0tQSU1vZGVsLnNldFByb3BlcnR5KGAvJHtrcGlEZWZpbml0aW9uLmlkfS9tYW5pZmVzdC9zYXAuY2FyZC9kYXRhL2pzb24vbWFpblVuaXRgLCB1bmRlZmluZWQpO1xuXHRcdFx0XHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL21haW5Dcml0aWNhbGl0eWAsIE1lc3NhZ2VUeXBlLk5vbmUpO1xuXHRcdFx0XHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL21haW5TdGF0ZWAsIFwiTm9uZVwiKTtcblx0XHRcdFx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoYC8ke2twaURlZmluaXRpb24uaWR9L21hbmlmZXN0L3NhcC5jYXJkL2RhdGEvanNvbi90cmVuZGAsIFwiTm9uZVwiKTtcblx0XHRcdFx0XHRvS1BJTW9kZWwuc2V0UHJvcGVydHkoYC8ke2twaURlZmluaXRpb24uaWR9L21hbmlmZXN0L3NhcC5jYXJkL2RhdGEvanNvbi90YXJnZXROdW1iZXJgLCB1bmRlZmluZWQpO1xuXHRcdFx0XHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL3RhcmdldFVuaXRgLCB1bmRlZmluZWQpO1xuXHRcdFx0XHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL2RldmlhdGlvbk51bWJlcmAsIHVuZGVmaW5lZCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy51cGRhdGVEYXRhcG9pbnRWYWx1ZUFuZEN1cnJlbmN5KGtwaURlZmluaXRpb24sIGFDb250ZXh0c1swXSwgb0tQSU1vZGVsKTtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZURhdGFwb2ludENyaXRpY2FsaXR5KGtwaURlZmluaXRpb24sIGFDb250ZXh0c1swXSwgb0tQSU1vZGVsKTtcblxuXHRcdFx0XHRcdGlmIChsb2FkRnVsbCkge1xuXHRcdFx0XHRcdFx0dGhpcy51cGRhdGVEYXRhcG9pbnRUcmVuZChrcGlEZWZpbml0aW9uLCBhQ29udGV4dHNbMF0sIG9LUElNb2RlbCk7XG5cdFx0XHRcdFx0XHR0aGlzLnVwZGF0ZVRhcmdldFZhbHVlKGtwaURlZmluaXRpb24sIGFDb250ZXh0c1swXSwgb0tQSU1vZGVsKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBjYXJkIGRhdGEgZm9yIGEgS1BJLCBhbmQgc3RvcmVzIGl0IGluIHRoZSBKU09OIEtQSSBtb2RlbC5cblx0ICpcblx0ICogQHBhcmFtIGtwaURlZmluaXRpb24gVGhlIGRlZmluaXRpb24gb2YgdGhlIEtQSS5cblx0ICogQHBhcmFtIG9NYWluTW9kZWwgVGhlIG1vZGVsIHVzZWQgdG8gbG9hZCB0aGUgZGF0YS5cblx0ICogQHBhcmFtIG9LUElNb2RlbCBUaGUgSlNPTiBtb2RlbCB3aGVyZSB0aGUgZGF0YSB3aWxsIGJlIHN0b3JlZFxuXHQgKiBAcmV0dXJucyBUaGUgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gZGF0YSBpcyBsb2FkZWQuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgbG9hZEtQSUNhcmREYXRhKGtwaURlZmluaXRpb246IEtQSURlZmluaXRpb24sIG9NYWluTW9kZWw6IE9EYXRhTW9kZWwsIG9LUElNb2RlbDogSlNPTk1vZGVsKTogYW55IHtcblx0XHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvTWFpbk1vZGVsLmJpbmRMaXN0KGAvJHtrcGlEZWZpbml0aW9uLmVudGl0eVNldH1gLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB7XG5cdFx0XHQkJGdyb3VwSWQ6IFwiJGF1dG8uV29ya2Vyc1wiXG5cdFx0fSk7XG5cdFx0Y29uc3Qgb0dyb3VwOiBSZWNvcmQ8c3RyaW5nLCBPYmplY3Q+ID0ge307XG5cdFx0Y29uc3Qgb0FnZ3JlZ2F0ZTogUmVjb3JkPHN0cmluZywgT2JqZWN0PiA9IHt9O1xuXG5cdFx0a3BpRGVmaW5pdGlvbi5jaGFydC5kaW1lbnNpb25zLmZvckVhY2goKGRpbWVuc2lvbikgPT4ge1xuXHRcdFx0b0dyb3VwW2RpbWVuc2lvbi5uYW1lXSA9IHt9O1xuXHRcdH0pO1xuXHRcdGtwaURlZmluaXRpb24uY2hhcnQubWVhc3VyZXMuZm9yRWFjaCgobWVhc3VyZSkgPT4ge1xuXHRcdFx0b0FnZ3JlZ2F0ZVttZWFzdXJlLm5hbWVdID0ge307XG5cdFx0fSk7XG5cdFx0b0xpc3RCaW5kaW5nLnNldEFnZ3JlZ2F0aW9uKHtcblx0XHRcdGdyb3VwOiBvR3JvdXAsXG5cdFx0XHRhZ2dyZWdhdGU6IG9BZ2dyZWdhdGVcblx0XHR9KTtcblxuXHRcdC8vIE1hbmFnZSBTZWxlY3Rpb25WYXJpYW50IGZpbHRlcnNcblx0XHRpZiAoa3BpRGVmaW5pdGlvbi5zZWxlY3Rpb25WYXJpYW50RmlsdGVyRGVmaW5pdGlvbnM/Lmxlbmd0aCkge1xuXHRcdFx0Y29uc3QgYUZpbHRlcnMgPSBrcGlEZWZpbml0aW9uLnNlbGVjdGlvblZhcmlhbnRGaWx0ZXJEZWZpbml0aW9ucy5tYXAoY3JlYXRlRmlsdGVyRnJvbURlZmluaXRpb24pLmZpbHRlcigoZmlsdGVyKSA9PiB7XG5cdFx0XHRcdHJldHVybiBmaWx0ZXIgIT09IHVuZGVmaW5lZDtcblx0XHRcdH0pIGFzIEZpbHRlcltdO1xuXHRcdFx0b0xpc3RCaW5kaW5nLmZpbHRlcihhRmlsdGVycyk7XG5cdFx0fVxuXG5cdFx0Ly8gU29ydGluZ1xuXHRcdGlmIChrcGlEZWZpbml0aW9uLmNoYXJ0LnNvcnRPcmRlcikge1xuXHRcdFx0b0xpc3RCaW5kaW5nLnNvcnQoXG5cdFx0XHRcdGtwaURlZmluaXRpb24uY2hhcnQuc29ydE9yZGVyLm1hcCgoc29ydEluZm8pID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gbmV3IFNvcnRlcihzb3J0SW5mby5uYW1lLCBzb3J0SW5mby5kZXNjZW5kaW5nKTtcblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9MaXN0QmluZGluZy5yZXF1ZXN0Q29udGV4dHMoMCwga3BpRGVmaW5pdGlvbi5jaGFydC5tYXhJdGVtcykudGhlbigoYUNvbnRleHRzOiBDb250ZXh0W10pID0+IHtcblx0XHRcdGNvbnN0IGNoYXJ0RGF0YSA9IGFDb250ZXh0cy5tYXAoZnVuY3Rpb24gKG9Db250ZXh0KSB7XG5cdFx0XHRcdGNvbnN0IG9EYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cdFx0XHRcdGtwaURlZmluaXRpb24uY2hhcnQuZGltZW5zaW9ucy5mb3JFYWNoKChkaW1lbnNpb24pID0+IHtcblx0XHRcdFx0XHRvRGF0YVtkaW1lbnNpb24ubmFtZV0gPSBvQ29udGV4dC5nZXRQcm9wZXJ0eShkaW1lbnNpb24ubmFtZSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRrcGlEZWZpbml0aW9uLmNoYXJ0Lm1lYXN1cmVzLmZvckVhY2goKG1lYXN1cmUpID0+IHtcblx0XHRcdFx0XHRvRGF0YVttZWFzdXJlLm5hbWVdID0gb0NvbnRleHQuZ2V0UHJvcGVydHkobWVhc3VyZS5uYW1lKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0cmV0dXJuIG9EYXRhO1xuXHRcdFx0fSk7XG5cblx0XHRcdG9LUElNb2RlbC5zZXRQcm9wZXJ0eShgLyR7a3BpRGVmaW5pdGlvbi5pZH0vbWFuaWZlc3Qvc2FwLmNhcmQvZGF0YS9qc29uL2NoYXJ0RGF0YWAsIGNoYXJ0RGF0YSk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcG9wb3ZlciB0byBkaXNwbGF5IHRoZSBLUEkgY2FyZFxuXHQgKiBUaGUgcG9wb3ZlciBhbmQgdGhlIGNvbnRhaW5lZCBjYXJkIGZvciB0aGUgS1BJcyBhcmUgY3JlYXRlZCBpZiBuZWNlc3NhcnkuXG5cdCAqIFRoZSBwb3BvdmVyIGlzIHNoYXJlZCBiZXR3ZWVuIGFsbCBLUElzLCBzbyBpdCdzIGNyZWF0ZWQgb25seSBvbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0gb0tQSVRhZyBUaGUgdGFnIHRoYXQgdHJpZ2dlcmVkIHRoZSBwb3BvdmVyIG9wZW5pbmcuXG5cdCAqIEByZXR1cm5zIFRoZSBzaGFyZWQgcG9wb3ZlciBhcyBhIHByb21pc2UuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgZ2V0UG9wb3ZlcihvS1BJVGFnOiBHZW5lcmljVGFnKTogUHJvbWlzZTxQb3BvdmVyPiB7XG5cdFx0aWYgKCF0aGlzLm9Qb3BvdmVyKSB7XG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRDb3JlLmxvYWRMaWJyYXJ5KFwic2FwL3VpL2ludGVncmF0aW9uXCIsIHsgYXN5bmM6IHRydWUgfSlcblx0XHRcdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0XHRzYXAudWkucmVxdWlyZShbXCJzYXAvdWkvaW50ZWdyYXRpb24vd2lkZ2V0cy9DYXJkXCIsIFwic2FwL3VpL2ludGVncmF0aW9uL0hvc3RcIl0sIChDYXJkOiBhbnksIEhvc3Q6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBvSG9zdCA9IG5ldyBIb3N0KCk7XG5cblx0XHRcdFx0XHRcdFx0b0hvc3QuYXR0YWNoQWN0aW9uKChvRXZlbnQ6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNUeXBlID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInR5cGVcIik7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb1BhcmFtcyA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJwYXJhbWV0ZXJzXCIpO1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNUeXBlID09PSBcIk5hdmlnYXRpb25cIikge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9QYXJhbXMuc2VtYW50aWNPYmplY3QpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBhbnkpLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ubmF2aWdhdGUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b1BhcmFtcy5zZW1hbnRpY09iamVjdCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvUGFyYW1zLmFjdGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0KHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBhbnkpLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ubmF2aWdhdGVPdXRib3VuZChvUGFyYW1zLm91dGJvdW5kKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdHRoaXMub0NhcmQgPSBuZXcgQ2FyZCh7XG5cdFx0XHRcdFx0XHRcdFx0d2lkdGg6IFwiMjVyZW1cIixcblx0XHRcdFx0XHRcdFx0XHRoZWlnaHQ6IFwiYXV0b1wiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9DYXJkLnNldEhvc3Qob0hvc3QpO1xuXG5cdFx0XHRcdFx0XHRcdHRoaXMub1BvcG92ZXIgPSBuZXcgUG9wb3ZlcihcImtwaS1Qb3BvdmVyXCIsIHtcblx0XHRcdFx0XHRcdFx0XHRzaG93SGVhZGVyOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRwbGFjZW1lbnQ6IFwiQXV0b1wiLFxuXHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IFt0aGlzLm9DYXJkXVxuXHRcdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0XHRvS1BJVGFnLmFkZERlcGVuZGVudCh0aGlzLm9Qb3BvdmVyKTsgLy8gVGhlIGZpcnN0IGNsaWNrZWQgdGFnIGdldHMgdGhlIHBvcG92ZXIgYXMgZGVwZW5kZW50XG5cblx0XHRcdFx0XHRcdFx0cmVzb2x2ZSh0aGlzLm9Qb3BvdmVyKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHJlamVjdCgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5vUG9wb3Zlcik7XG5cdFx0fVxuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdHB1YmxpYyBvbktQSVByZXNzZWQob0tQSVRhZzogYW55LCBrcGlJRDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3Qgb0tQSU1vZGVsID0gb0tQSVRhZy5nZXRNb2RlbChcImtwaU1vZGVsXCIpIGFzIEpTT05Nb2RlbDtcblxuXHRcdGlmICh0aGlzLmFLUElEZWZpbml0aW9ucyAmJiB0aGlzLmFLUElEZWZpbml0aW9ucy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IGtwaURlZmluaXRpb24gPSB0aGlzLmFLUElEZWZpbml0aW9ucy5maW5kKGZ1bmN0aW9uIChvRGVmKSB7XG5cdFx0XHRcdHJldHVybiBvRGVmLmlkID09PSBrcGlJRDtcblx0XHRcdH0pO1xuXG5cdFx0XHRpZiAoa3BpRGVmaW5pdGlvbikge1xuXHRcdFx0XHRjb25zdCBvTW9kZWwgPSBvS1BJVGFnLmdldE1vZGVsKCk7XG5cdFx0XHRcdGNvbnN0IGFQcm9taXNlcyA9IFtcblx0XHRcdFx0XHR0aGlzLmxvYWRLUElUYWdEYXRhKGtwaURlZmluaXRpb24sIG9Nb2RlbCwgb0tQSU1vZGVsLCB0cnVlKSxcblx0XHRcdFx0XHR0aGlzLmxvYWRLUElDYXJkRGF0YShrcGlEZWZpbml0aW9uLCBvTW9kZWwsIG9LUElNb2RlbCksXG5cdFx0XHRcdFx0dGhpcy5nZXRQb3BvdmVyKG9LUElUYWcpXG5cdFx0XHRcdF07XG5cblx0XHRcdFx0UHJvbWlzZS5hbGwoYVByb21pc2VzKVxuXHRcdFx0XHRcdC50aGVuKChhUmVzdWx0cykgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5vQ2FyZC5zZXRNYW5pZmVzdChvS1BJTW9kZWwuZ2V0UHJvcGVydHkoYC8ke2twaUlEfS9tYW5pZmVzdGApKTtcblx0XHRcdFx0XHRcdHRoaXMub0NhcmQucmVmcmVzaCgpO1xuXG5cdFx0XHRcdFx0XHRjb25zdCBvUG9wb3ZlciA9IGFSZXN1bHRzWzJdO1xuXHRcdFx0XHRcdFx0b1BvcG92ZXIub3BlbkJ5KG9LUElUYWcsIGZhbHNlKTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaCgoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgS1BJTWFuYWdlbWVudENvbnRyb2xsZXJFeHRlbnNpb247XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7OztFQXFCQSxNQUFNQSwwQkFBdUQsR0FBRztJQUMvRCxHQUFHLEVBQUVDLFdBQVcsQ0FBQ0MsS0FBSztJQUN0QixHQUFHLEVBQUVELFdBQVcsQ0FBQ0UsT0FBTztJQUN4QixHQUFHLEVBQUVGLFdBQVcsQ0FBQ0csT0FBTztJQUN4QixHQUFHLEVBQUVILFdBQVcsQ0FBQ0k7RUFDbEIsQ0FBQztFQUVELE1BQU1DLHlCQUFzRCxHQUFHO0lBQzlESixLQUFLLEVBQUUsT0FBTztJQUNkQyxPQUFPLEVBQUUsVUFBVTtJQUNuQkMsT0FBTyxFQUFFLE1BQU07SUFDZkMsV0FBVyxFQUFFLE1BQU07SUFDbkJFLElBQUksRUFBRTtFQUNQLENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTQyxnQ0FBZ0MsQ0FBQ0MsUUFBZ0IsRUFBRUMsV0FBMEMsRUFBZTtJQUNwSCxJQUFJQyxtQkFBZ0M7SUFFcEMsSUFBSUQsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLRSxTQUFTLElBQUlGLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUlELFFBQVEsR0FBR0MsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQ3pGQyxtQkFBbUIsR0FBR1YsV0FBVyxDQUFDQyxLQUFLO0lBQ3hDLENBQUMsTUFBTSxJQUFJUSxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUtFLFNBQVMsSUFBSUYsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSUQsUUFBUSxHQUFHQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDaEdDLG1CQUFtQixHQUFHVixXQUFXLENBQUNFLE9BQU87SUFDMUMsQ0FBQyxNQUFNLElBQUlPLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBS0UsU0FBUyxJQUFJRixXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJRCxRQUFRLEdBQUdDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUNoR0MsbUJBQW1CLEdBQUdWLFdBQVcsQ0FBQ00sSUFBSTtJQUN2QyxDQUFDLE1BQU0sSUFBSUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLRSxTQUFTLElBQUlGLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUlELFFBQVEsR0FBR0MsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQ2hHQyxtQkFBbUIsR0FBR1YsV0FBVyxDQUFDQyxLQUFLO0lBQ3hDLENBQUMsTUFBTSxJQUFJUSxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUtFLFNBQVMsSUFBSUYsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSUQsUUFBUSxHQUFHQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDaEdDLG1CQUFtQixHQUFHVixXQUFXLENBQUNFLE9BQU87SUFDMUMsQ0FBQyxNQUFNLElBQUlPLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBS0UsU0FBUyxJQUFJRixXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJRCxRQUFRLEdBQUdDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUNoR0MsbUJBQW1CLEdBQUdWLFdBQVcsQ0FBQ00sSUFBSTtJQUN2QyxDQUFDLE1BQU07TUFDTkksbUJBQW1CLEdBQUdWLFdBQVcsQ0FBQ0csT0FBTztJQUMxQztJQUVBLE9BQU9PLG1CQUFtQjtFQUMzQjs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNFLGtDQUFrQyxDQUFDSixRQUFnQixFQUFFQyxXQUEwQyxFQUFlO0lBQ3RILElBQUlDLG1CQUFnQztJQUVwQyxJQUFJRCxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUtFLFNBQVMsSUFBSUYsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSUQsUUFBUSxHQUFHQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDekZDLG1CQUFtQixHQUFHVixXQUFXLENBQUNDLEtBQUs7SUFDeEMsQ0FBQyxNQUFNLElBQUlRLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBS0UsU0FBUyxJQUFJRixXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJRCxRQUFRLEdBQUdDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUNoR0MsbUJBQW1CLEdBQUdWLFdBQVcsQ0FBQ0UsT0FBTztJQUMxQyxDQUFDLE1BQU0sSUFBSU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLRSxTQUFTLElBQUlGLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUlELFFBQVEsR0FBR0MsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQ2hHQyxtQkFBbUIsR0FBR1YsV0FBVyxDQUFDTSxJQUFJO0lBQ3ZDLENBQUMsTUFBTTtNQUNOSSxtQkFBbUIsR0FBR1YsV0FBVyxDQUFDRyxPQUFPO0lBQzFDO0lBRUEsT0FBT08sbUJBQW1CO0VBQzNCOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0csa0NBQWtDLENBQUNMLFFBQWdCLEVBQUVDLFdBQTBDLEVBQWU7SUFDdEgsSUFBSUMsbUJBQWdDO0lBRXBDLElBQUlELFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBS0UsU0FBUyxJQUFJRixXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJRCxRQUFRLEdBQUdDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUN6RkMsbUJBQW1CLEdBQUdWLFdBQVcsQ0FBQ0MsS0FBSztJQUN4QyxDQUFDLE1BQU0sSUFBSVEsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLRSxTQUFTLElBQUlGLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUlELFFBQVEsR0FBR0MsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQ2hHQyxtQkFBbUIsR0FBR1YsV0FBVyxDQUFDRSxPQUFPO0lBQzFDLENBQUMsTUFBTSxJQUFJTyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUtFLFNBQVMsSUFBSUYsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSUQsUUFBUSxHQUFHQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDaEdDLG1CQUFtQixHQUFHVixXQUFXLENBQUNNLElBQUk7SUFDdkMsQ0FBQyxNQUFNO01BQ05JLG1CQUFtQixHQUFHVixXQUFXLENBQUNHLE9BQU87SUFDMUM7SUFFQSxPQUFPTyxtQkFBbUI7RUFDM0I7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0ksK0JBQStCLENBQUNDLFVBQTJCLEVBQVU7SUFDN0UsSUFBSUMsa0JBQTBCO0lBRTlCLFFBQVFELFVBQVU7TUFDakIsS0FBSyxDQUFDLENBQUMsQ0FBQztNQUNSLEtBQUssR0FBRztNQUNSLEtBQUssQ0FBQyxDQUFDLENBQUM7TUFDUixLQUFLLEdBQUc7UUFDUEMsa0JBQWtCLEdBQUcsSUFBSTtRQUN6QjtNQUVELEtBQUssQ0FBQyxDQUFDLENBQUM7TUFDUixLQUFLLEdBQUc7TUFDUixLQUFLLENBQUMsQ0FBQyxDQUFDO01BQ1IsS0FBSyxHQUFHO1FBQ1BBLGtCQUFrQixHQUFHLE1BQU07UUFDM0I7TUFFRDtRQUNDQSxrQkFBa0IsR0FBRyxNQUFNO0lBQUM7SUFHOUIsT0FBT0Esa0JBQWtCO0VBQzFCOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNDLGlDQUFpQyxDQUN6Q1QsUUFBZ0IsRUFDaEJVLGNBQXNCLEVBQ3RCQyxVQUFtQixFQUNuQlYsV0FBc0QsRUFDN0M7SUFDVCxJQUFJTyxrQkFBMEI7SUFFOUIsSUFBSSxDQUFDUCxXQUFXLElBQUtVLFVBQVUsSUFBSSxDQUFDRCxjQUFlLEVBQUU7TUFDcEQsT0FBTyxNQUFNO0lBQ2Q7SUFFQSxNQUFNRSxTQUFTLEdBQUdELFVBQVUsR0FBRyxDQUFDWCxRQUFRLEdBQUdVLGNBQWMsSUFBSUEsY0FBYyxHQUFHVixRQUFRLEdBQUdVLGNBQWM7SUFFdkcsSUFBSVQsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLRSxTQUFTLElBQUlGLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUlXLFNBQVMsSUFBSVgsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQzNGO01BQ0FPLGtCQUFrQixHQUFHLE1BQU07SUFDNUIsQ0FBQyxNQUFNLElBQUlQLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBS0UsU0FBUyxJQUFJRixXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJVyxTQUFTLElBQUlYLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUNsRztNQUNBTyxrQkFBa0IsR0FBRyxNQUFNO0lBQzVCLENBQUMsTUFBTSxJQUFJUCxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUtFLFNBQVMsSUFBSUYsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSVcsU0FBUyxJQUFJWCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDbEc7TUFDQU8sa0JBQWtCLEdBQUcsSUFBSTtJQUMxQixDQUFDLE1BQU0sSUFBSVAsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLRSxTQUFTLElBQUlGLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUlXLFNBQVMsSUFBSVgsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQ2xHO01BQ0FPLGtCQUFrQixHQUFHLElBQUk7SUFDMUIsQ0FBQyxNQUFNO01BQ047TUFDQUEsa0JBQWtCLEdBQUcsTUFBTTtJQUM1QjtJQUVBLE9BQU9BLGtCQUFrQjtFQUMxQjs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTSywwQkFBMEIsQ0FBQ0MsZ0JBQWtDLEVBQXNCO0lBQzNGLElBQUlBLGdCQUFnQixDQUFDQyxNQUFNLENBQUNDLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDekMsT0FBT2IsU0FBUztJQUNqQixDQUFDLE1BQU0sSUFBSVcsZ0JBQWdCLENBQUNDLE1BQU0sQ0FBQ0MsTUFBTSxLQUFLLENBQUMsRUFBRTtNQUNoRCxPQUFPLElBQUlDLE1BQU0sQ0FDaEJILGdCQUFnQixDQUFDSSxZQUFZLEVBQzdCSixnQkFBZ0IsQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDSSxRQUFRLEVBQ25DTCxnQkFBZ0IsQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDSyxRQUFRLEVBQ25DTixnQkFBZ0IsQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDTSxTQUFTLENBQ3BDO0lBQ0YsQ0FBQyxNQUFNO01BQ04sTUFBTUMsYUFBYSxHQUFHUixnQkFBZ0IsQ0FBQ0MsTUFBTSxDQUFDUSxHQUFHLENBQUVDLEtBQUssSUFBSztRQUM1RCxPQUFPLElBQUlQLE1BQU0sQ0FBQ0gsZ0JBQWdCLENBQUNJLFlBQVksRUFBRU0sS0FBSyxDQUFDTCxRQUFRLEVBQW9CSyxLQUFLLENBQUNKLFFBQVEsRUFBRUksS0FBSyxDQUFDSCxTQUFTLENBQUM7TUFDcEgsQ0FBQyxDQUFDO01BQ0YsT0FBTyxJQUFJSixNQUFNLENBQUM7UUFDakJRLE9BQU8sRUFBRUgsYUFBYTtRQUN0QkksR0FBRyxFQUFFO01BQ04sQ0FBQyxDQUFDO0lBQ0g7RUFDRDtFQUVBLFNBQVNDLDZCQUE2QixDQUFDYixnQkFBa0MsRUFBVTtJQUNsRixNQUFNYyxhQUFhLEdBQUcsSUFBSUMsTUFBTSxDQUFDQyxHQUFHLENBQUNDLEVBQUUsQ0FBQ0MsT0FBTyxFQUFFLENBQUNDLGdCQUFnQixFQUFFLENBQUNDLFdBQVcsRUFBRSxDQUFDO0lBQ25GLE1BQU1DLFNBQVMsR0FBR0MsSUFBSSxDQUFDQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUM7SUFDOUQsTUFBTUMsVUFBVSxHQUFHQyxVQUFVLENBQUNDLGVBQWUsQ0FBQztNQUFFQyxLQUFLLEVBQUU7SUFBUyxDQUFDLEVBQUViLGFBQWEsQ0FBQztJQUVqRixTQUFTYyxXQUFXLENBQUNsQixLQUFzQixFQUFVO01BQ3BELE1BQU1tQixRQUFRLEdBQ2I3QixnQkFBZ0IsQ0FBQzhCLFlBQVksQ0FBQ0MsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBR1AsVUFBVSxDQUFDUSxNQUFNLENBQUMsSUFBSUMsSUFBSSxDQUFDdkIsS0FBSyxDQUFDSixRQUFRLENBQUMsQ0FBQyxHQUFHSSxLQUFLLENBQUNKLFFBQVE7TUFDdkgsTUFBTTRCLFNBQVMsR0FDZGxDLGdCQUFnQixDQUFDOEIsWUFBWSxDQUFDQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHUCxVQUFVLENBQUNRLE1BQU0sQ0FBQyxJQUFJQyxJQUFJLENBQUN2QixLQUFLLENBQUNILFNBQVMsQ0FBQyxDQUFDLEdBQUdHLEtBQUssQ0FBQ0gsU0FBUztNQUV6SCxRQUFRRyxLQUFLLENBQUNMLFFBQVE7UUFDckIsS0FBSyxJQUFJO1VBQ1IsT0FBUSxJQUFHd0IsUUFBUyxNQUFLSyxTQUFVLEdBQUU7UUFFdEMsS0FBSyxVQUFVO1VBQ2QsT0FBUSxJQUFHTCxRQUFTLEdBQUU7UUFFdkIsS0FBSyxJQUFJO1VBQ1IsT0FBUSxTQUFRQSxRQUFTLEVBQUM7UUFFM0IsS0FBSyxJQUFJO1VBQ1IsT0FBUSxJQUFHQSxRQUFTLEVBQUM7UUFFdEIsS0FBSyxJQUFJO1VBQ1IsT0FBUSxTQUFRQSxRQUFTLEVBQUM7UUFFM0IsS0FBSyxJQUFJO1VBQ1IsT0FBUSxJQUFHQSxRQUFTLEVBQUM7UUFFdEIsS0FBSyxJQUFJO1VBQ1IsT0FBT1IsU0FBUyxDQUFDYyxPQUFPLENBQUMsNEJBQTRCLEVBQUUsQ0FBRSxJQUFHTixRQUFTLE1BQUtLLFNBQVUsR0FBRSxDQUFDLENBQUM7UUFFekYsS0FBSyxJQUFJO1VBQ1IsT0FBUSxTQUFRTCxRQUFTLEVBQUM7UUFFM0IsS0FBSyxhQUFhO1VBQ2pCLE9BQU9SLFNBQVMsQ0FBQ2MsT0FBTyxDQUFDLDRCQUE0QixFQUFFLENBQUUsSUFBR04sUUFBUyxHQUFFLENBQUMsQ0FBQztRQUUxRSxLQUFLLElBQUk7UUFDVDtVQUNDLE9BQU9BLFFBQVE7TUFBQztJQUVuQjtJQUNBLElBQUk3QixnQkFBZ0IsQ0FBQ0MsTUFBTSxDQUFDQyxNQUFNLEtBQUssQ0FBQyxFQUFFO01BQ3pDLE9BQU8sRUFBRTtJQUNWLENBQUMsTUFBTSxJQUFJRixnQkFBZ0IsQ0FBQ0MsTUFBTSxDQUFDQyxNQUFNLEtBQUssQ0FBQyxFQUFFO01BQ2hELE9BQU8wQixXQUFXLENBQUM1QixnQkFBZ0IsQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUMsTUFBTTtNQUNOLE9BQVEsSUFBR0QsZ0JBQWdCLENBQUNDLE1BQU0sQ0FBQ1EsR0FBRyxDQUFDbUIsV0FBVyxDQUFDLENBQUNRLElBQUksQ0FBQyxHQUFHLENBQUUsR0FBRTtJQUNqRTtFQUNEO0VBRUEsU0FBU0MsZ0JBQWdCLENBQUNDLE1BQXFCLEVBQVU7SUFDeEQsTUFBTWpCLFNBQVMsR0FBR0MsSUFBSSxDQUFDQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUM7SUFFOUQsU0FBU2dCLFVBQVUsQ0FBQ0MsS0FBd0MsRUFBRTtNQUM3RCxJQUFJQSxLQUFLLENBQUN0QyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3ZCLE9BQU8sRUFBRTtNQUNWLENBQUMsTUFBTSxJQUFJc0MsS0FBSyxDQUFDdEMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUM5QixPQUFPc0MsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxLQUFLO01BQ3RCLENBQUMsTUFBTTtRQUNOLElBQUlDLEdBQUcsR0FBR0YsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxLQUFLO1FBQ3hCLEtBQUssSUFBSUUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHSCxLQUFLLENBQUN0QyxNQUFNLEdBQUcsQ0FBQyxFQUFFeUMsQ0FBQyxFQUFFLEVBQUU7VUFDMUNELEdBQUcsSUFBSyxLQUFJRixLQUFLLENBQUNHLENBQUMsQ0FBQyxDQUFDRixLQUFNLEVBQUM7UUFDN0I7UUFFQSxPQUFPcEIsU0FBUyxDQUFDYyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQ08sR0FBRyxFQUFFRixLQUFLLENBQUNBLEtBQUssQ0FBQ3RDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQ3VDLEtBQUssQ0FBQyxDQUFDO01BQ3RGO0lBQ0Q7SUFFQSxPQUFPcEIsU0FBUyxDQUFDYyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQ0ksVUFBVSxDQUFDRCxNQUFNLENBQUNNLEtBQUssQ0FBQ0MsUUFBUSxDQUFDLEVBQUVOLFVBQVUsQ0FBQ0QsTUFBTSxDQUFDTSxLQUFLLENBQUNFLFVBQVUsQ0FBQyxDQUFDLENBQUM7RUFDM0g7RUFFQSxTQUFTQyx3QkFBd0IsQ0FBQ0MsZUFBbUMsRUFBRUMsZ0JBQXFCLEVBQVE7SUFDbkcsUUFBUUQsZUFBZSxDQUFDRSxTQUFTO01BQ2hDLEtBQUssT0FBTztRQUNYO1FBQ0FELGdCQUFnQixDQUFDRSxZQUFZLEdBQUc7VUFDL0JDLEtBQUssRUFBRTtZQUNOQyxPQUFPLEVBQUU7VUFDVjtRQUNELENBQUM7UUFDREosZ0JBQWdCLENBQUNLLFNBQVMsR0FBRztVQUM1QkYsS0FBSyxFQUFFO1lBQ05DLE9BQU8sRUFBRTtVQUNWLENBQUM7VUFDRFosS0FBSyxFQUFFO1lBQ05jLFlBQVksRUFBRTtVQUNmO1FBQ0QsQ0FBQztRQUNETixnQkFBZ0IsQ0FBQ08sUUFBUSxDQUFDQyxTQUFTLEdBQUc7VUFDckNKLE9BQU8sRUFBRSxJQUFJO1VBQ2JLLElBQUksRUFBRSxPQUFPO1VBQ2JILFlBQVksRUFBRTtRQUNmLENBQUM7UUFDRDtNQUVELEtBQUssUUFBUTtRQUNaO1FBQ0FOLGdCQUFnQixDQUFDSyxTQUFTLEdBQUc7VUFDNUJGLEtBQUssRUFBRTtZQUNOQyxPQUFPLEVBQUU7VUFDVixDQUFDO1VBQ0RaLEtBQUssRUFBRTtZQUNOYyxZQUFZLEVBQUU7VUFDZjtRQUNELENBQUM7UUFDRE4sZ0JBQWdCLENBQUNVLFVBQVUsR0FBRztVQUM3QlAsS0FBSyxFQUFFO1lBQ05DLE9BQU8sRUFBRTtVQUNWLENBQUM7VUFDRFosS0FBSyxFQUFFO1lBQ05jLFlBQVksRUFBRTtVQUNmO1FBQ0QsQ0FBQztRQUNETixnQkFBZ0IsQ0FBQ1csV0FBVyxHQUFHO1VBQzlCQyxNQUFNLEVBQUU7WUFDUEMsUUFBUSxFQUFFLFFBQVE7WUFDbEJDLFNBQVMsRUFBRTtVQUNaO1FBQ0QsQ0FBQztRQUNEZCxnQkFBZ0IsQ0FBQ2UsVUFBVSxHQUFHO1VBQzdCWCxPQUFPLEVBQUU7UUFDVixDQUFDO1FBQ0RKLGdCQUFnQixDQUFDTyxRQUFRLENBQUNDLFNBQVMsR0FBRztVQUFFSixPQUFPLEVBQUU7UUFBTSxDQUFDO1FBQ3hEO01BRUQsS0FBSyxTQUFTO1FBQ2I7UUFDQUosZ0JBQWdCLENBQUNLLFNBQVMsR0FBRztVQUM1QkYsS0FBSyxFQUFFO1lBQ05DLE9BQU8sRUFBRTtVQUNWLENBQUM7VUFDRFosS0FBSyxFQUFFO1lBQ05jLFlBQVksRUFBRTtVQUNmO1FBQ0QsQ0FBQztRQUNETixnQkFBZ0IsQ0FBQ1UsVUFBVSxHQUFHO1VBQzdCUCxLQUFLLEVBQUU7WUFDTkMsT0FBTyxFQUFFO1VBQ1YsQ0FBQztVQUNEWixLQUFLLEVBQUU7WUFDTmMsWUFBWSxFQUFFO1VBQ2Y7UUFDRCxDQUFDO1FBQ0ROLGdCQUFnQixDQUFDTyxRQUFRLENBQUNDLFNBQVMsR0FBRztVQUFFSixPQUFPLEVBQUU7UUFBTSxDQUFDO1FBQ3hEO01BRUQ7UUFDQztRQUNBSixnQkFBZ0IsQ0FBQ0UsWUFBWSxHQUFHO1VBQy9CQyxLQUFLLEVBQUU7WUFDTkMsT0FBTyxFQUFFO1VBQ1Y7UUFDRCxDQUFDO1FBQ0RKLGdCQUFnQixDQUFDSyxTQUFTLEdBQUc7VUFDNUJGLEtBQUssRUFBRTtZQUNOQyxPQUFPLEVBQUU7VUFDVixDQUFDO1VBQ0RaLEtBQUssRUFBRTtZQUNOYyxZQUFZLEVBQUU7VUFDZjtRQUNELENBQUM7UUFDRE4sZ0JBQWdCLENBQUNPLFFBQVEsQ0FBQ0MsU0FBUyxHQUFHO1VBQUVKLE9BQU8sRUFBRTtRQUFNLENBQUM7SUFBQztFQUU1RDtFQUNBLFNBQVNZLFNBQVMsQ0FBQ0MsUUFBMEQsRUFBRUMsTUFBK0IsRUFBWTtJQUN6SCxJQUFJQSxNQUFNLElBQUlBLE1BQU0sQ0FBQ2pFLE1BQU0sRUFBRTtNQUM1QixPQUFPZ0UsUUFBUSxDQUNiRSxNQUFNLENBQUVDLFNBQVMsSUFBSztRQUN0QixPQUFPRixNQUFNLENBQUNwQyxPQUFPLENBQUNzQyxTQUFTLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUM7TUFDM0MsQ0FBQyxDQUFDLENBQ0Q3RCxHQUFHLENBQUU0RCxTQUFTLElBQUs7UUFDbkIsT0FBT0EsU0FBUyxDQUFDNUIsS0FBSztNQUN2QixDQUFDLENBQUM7SUFDSixDQUFDLE1BQU07TUFDTixPQUFPeUIsUUFBUSxDQUFDekQsR0FBRyxDQUFFNEQsU0FBUyxJQUFLO1FBQ2xDLE9BQU9BLFNBQVMsQ0FBQzVCLEtBQUs7TUFDdkIsQ0FBQyxDQUFDO0lBQ0g7RUFDRDtFQUVBLFNBQVM4QiwwQkFBMEIsQ0FBQ3ZCLGVBQW1DLEVBQXFEO0lBQzNILE1BQU13QixhQUFhLEdBQUdQLFNBQVMsQ0FBQ2pCLGVBQWUsQ0FBQ0gsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEUsTUFBTTRCLGFBQWEsR0FBR1IsU0FBUyxDQUFDakIsZUFBZSxDQUFDSCxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRSxNQUFNNkIsYUFBYSxHQUFHVCxTQUFTLENBQUNqQixlQUFlLENBQUNILFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLE1BQU04QixhQUFhLEdBQUdWLFNBQVMsQ0FBQ2pCLGVBQWUsQ0FBQ0gsUUFBUSxFQUFFLENBQUN4RCxTQUFTLENBQUMsQ0FBQztJQUN0RSxNQUFNdUYsZ0JBQWdCLEdBQUdYLFNBQVMsQ0FBQ2pCLGVBQWUsQ0FBQ0YsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7O0lBRTFFO0lBQ0EsTUFBTStCLGNBQWMsR0FBRzdCLGVBQWUsQ0FBQ0YsVUFBVSxDQUFDZ0MsSUFBSSxDQUFFVCxTQUFTLElBQUs7TUFDckUsT0FBT0EsU0FBUyxDQUFDQyxJQUFJLEtBQUssVUFBVTtJQUNyQyxDQUFDLENBQUM7O0lBRUY7SUFDQSxNQUFNUyxRQUFRLEdBQUdQLGFBQWEsQ0FBQ1EsS0FBSyxFQUFFLElBQUlQLGFBQWEsQ0FBQ08sS0FBSyxFQUFFLElBQUlOLGFBQWEsQ0FBQ00sS0FBSyxFQUFFLElBQUlMLGFBQWEsQ0FBQ0ssS0FBSyxFQUFFLElBQUksRUFBRTtJQUN2SDtJQUNBLE1BQU1DLFFBQVEsR0FBR1IsYUFBYSxDQUFDTyxLQUFLLEVBQUUsSUFBSVIsYUFBYSxDQUFDUSxLQUFLLEVBQUUsSUFBSU4sYUFBYSxDQUFDTSxLQUFLLEVBQUUsSUFBSUwsYUFBYSxDQUFDSyxLQUFLLEVBQUUsSUFBSSxFQUFFO0lBQ3ZILE1BQU10QyxHQUFHLEdBQUcsQ0FDWDtNQUNDd0MsR0FBRyxFQUFFLFdBQVc7TUFDaEJ4QixJQUFJLEVBQUUsU0FBUztNQUNmeUIsTUFBTSxFQUFFLENBQUNKLFFBQVE7SUFDbEIsQ0FBQyxFQUNEO01BQ0NHLEdBQUcsRUFBRSxZQUFZO01BQ2pCeEIsSUFBSSxFQUFFLFNBQVM7TUFDZnlCLE1BQU0sRUFBRSxDQUFDRixRQUFRO0lBQ2xCLENBQUMsQ0FDRDtJQUVELElBQUlqQyxlQUFlLENBQUNFLFNBQVMsS0FBSyxRQUFRLEVBQUU7TUFDM0M7TUFDQSxNQUFNa0MsV0FBVyxHQUFHVixhQUFhLENBQUNNLEtBQUssRUFBRSxJQUFJUixhQUFhLENBQUNRLEtBQUssRUFBRSxJQUFJUCxhQUFhLENBQUNPLEtBQUssRUFBRSxJQUFJTCxhQUFhLENBQUNLLEtBQUssRUFBRSxJQUFJLEVBQUU7TUFDMUh0QyxHQUFHLENBQUMyQyxJQUFJLENBQUM7UUFDUkgsR0FBRyxFQUFFLGFBQWE7UUFDbEJ4QixJQUFJLEVBQUUsU0FBUztRQUNmeUIsTUFBTSxFQUFFLENBQUNDLFdBQVc7TUFDckIsQ0FBQyxDQUFDO0lBQ0g7O0lBRUE7SUFDQSxJQUFJUixnQkFBZ0IsQ0FBQzFFLE1BQU0sRUFBRTtNQUM1QndDLEdBQUcsQ0FBQzJDLElBQUksQ0FBQztRQUNSSCxHQUFHLEVBQUUsT0FBTztRQUNaeEIsSUFBSSxFQUFFLFdBQVc7UUFDakJ5QixNQUFNLEVBQUVQO01BQ1QsQ0FBQyxDQUFDO0lBQ0g7SUFDQTtJQUNBLElBQUlDLGNBQWMsRUFBRTtNQUNuQm5DLEdBQUcsQ0FBQzJDLElBQUksQ0FBQztRQUNSSCxHQUFHLEVBQUUsT0FBTztRQUNaeEIsSUFBSSxFQUFFLFdBQVc7UUFDakJ5QixNQUFNLEVBQUUsQ0FBQ04sY0FBYyxDQUFDcEMsS0FBSztNQUM5QixDQUFDLENBQUM7SUFDSDtJQUNBLE9BQU9DLEdBQUc7RUFDWDtFQUVBLFNBQVM0QyxhQUFhLENBQUN0QyxlQUFtQyxFQUFxRDtJQUM5RyxJQUFJTixHQUFzRDtJQUUxRCxRQUFRTSxlQUFlLENBQUNFLFNBQVM7TUFDaEMsS0FBSyxPQUFPO1FBQ1hSLEdBQUcsR0FBRyxDQUNMO1VBQ0N3QyxHQUFHLEVBQUUsTUFBTTtVQUNYeEIsSUFBSSxFQUFFLFNBQVM7VUFDZnlCLE1BQU0sRUFBRWxCLFNBQVMsQ0FBQ2pCLGVBQWUsQ0FBQ0gsUUFBUTtRQUMzQyxDQUFDLEVBQ0Q7VUFDQ3FDLEdBQUcsRUFBRSxPQUFPO1VBQ1p4QixJQUFJLEVBQUUsV0FBVztVQUNqQnlCLE1BQU0sRUFBRWxCLFNBQVMsQ0FBQ2pCLGVBQWUsQ0FBQ0YsVUFBVTtRQUM3QyxDQUFDLENBQ0Q7UUFDRDtNQUVELEtBQUssUUFBUTtNQUNiLEtBQUssU0FBUztRQUNiSixHQUFHLEdBQUc2QiwwQkFBMEIsQ0FBQ3ZCLGVBQWUsQ0FBQztRQUNqRDtNQUVELEtBQUssaUJBQWlCO1FBQ3JCTixHQUFHLEdBQUcsQ0FDTDtVQUNDd0MsR0FBRyxFQUFFLGNBQWM7VUFDbkJ4QixJQUFJLEVBQUUsU0FBUztVQUNmeUIsTUFBTSxFQUFFbEIsU0FBUyxDQUFDakIsZUFBZSxDQUFDSCxRQUFRLEVBQUUsQ0FBQ3hELFNBQVMsRUFBRSxPQUFPLENBQUM7UUFDakUsQ0FBQyxFQUNEO1VBQ0M2RixHQUFHLEVBQUUsY0FBYztVQUNuQnhCLElBQUksRUFBRSxTQUFTO1VBQ2Z5QixNQUFNLEVBQUVsQixTQUFTLENBQUNqQixlQUFlLENBQUNILFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUN0RCxDQUFDLEVBQ0Q7VUFDQ3FDLEdBQUcsRUFBRSxjQUFjO1VBQ25CeEIsSUFBSSxFQUFFLFdBQVc7VUFDakJ5QixNQUFNLEVBQUVsQixTQUFTLENBQUNqQixlQUFlLENBQUNGLFVBQVUsRUFBRSxDQUFDekQsU0FBUyxFQUFFLFVBQVUsQ0FBQztRQUN0RSxDQUFDLEVBQ0Q7VUFDQzZGLEdBQUcsRUFBRSxPQUFPO1VBQ1p4QixJQUFJLEVBQUUsV0FBVztVQUNqQnlCLE1BQU0sRUFBRWxCLFNBQVMsQ0FBQ2pCLGVBQWUsQ0FBQ0YsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ3pELENBQUMsQ0FDRDtRQUNEO01BRUQ7UUFDQ0osR0FBRyxHQUFHLENBQ0w7VUFDQ3dDLEdBQUcsRUFBRSxXQUFXO1VBQ2hCeEIsSUFBSSxFQUFFLFNBQVM7VUFDZnlCLE1BQU0sRUFBRWxCLFNBQVMsQ0FBQ2pCLGVBQWUsQ0FBQ0gsUUFBUTtRQUMzQyxDQUFDLEVBQ0Q7VUFDQ3FDLEdBQUcsRUFBRSxjQUFjO1VBQ25CeEIsSUFBSSxFQUFFLFdBQVc7VUFDakJ5QixNQUFNLEVBQUVsQixTQUFTLENBQUNqQixlQUFlLENBQUNGLFVBQVUsRUFBRSxDQUFDekQsU0FBUyxFQUFFLFVBQVUsQ0FBQztRQUN0RSxDQUFDLEVBQ0Q7VUFDQzZGLEdBQUcsRUFBRSxPQUFPO1VBQ1p4QixJQUFJLEVBQUUsV0FBVztVQUNqQnlCLE1BQU0sRUFBRWxCLFNBQVMsQ0FBQ2pCLGVBQWUsQ0FBQ0YsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ3pELENBQUMsQ0FDRDtJQUFDO0lBR0osT0FBT0osR0FBRztFQUNYO0VBRUEsU0FBUzZDLHVCQUF1QixDQUMvQkMsT0FBdUIsRUFDdkJDLGFBQWtCLEVBQ3FFO0lBQ3ZGLElBQUlELE9BQU8sQ0FBQ0UsY0FBYyxFQUFFO01BQzNCLElBQUlGLE9BQU8sQ0FBQ0csTUFBTSxFQUFFO1FBQ25CO1FBQ0EsT0FBT0YsYUFBYSxDQUFDRyxRQUFRLENBQUM7VUFBRUYsY0FBYyxFQUFFRixPQUFPLENBQUNFLGNBQWM7VUFBRUMsTUFBTSxFQUFFSCxPQUFPLENBQUNHO1FBQU8sQ0FBQyxDQUFDLENBQUNFLElBQUksQ0FBRUMsTUFBYSxJQUFLO1VBQ3pILE9BQU9BLE1BQU0sQ0FBQzVGLE1BQU0sR0FBRztZQUFFd0YsY0FBYyxFQUFFRixPQUFPLENBQUNFLGNBQWM7WUFBRUMsTUFBTSxFQUFFSCxPQUFPLENBQUNHO1VBQU8sQ0FBQyxHQUFHdEcsU0FBUztRQUN0RyxDQUFDLENBQUM7TUFDSCxDQUFDLE1BQU07UUFDTjtRQUNBLE9BQU9vRyxhQUFhLENBQUNNLGdCQUFnQixDQUFDUCxPQUFPLENBQUNFLGNBQWMsQ0FBQyxDQUFDRyxJQUFJLENBQUVHLEtBQVUsSUFBSztVQUNsRixJQUFJLENBQUNBLEtBQUssRUFBRTtZQUNYO1lBQ0EsT0FBTzNHLFNBQVM7VUFDakI7O1VBRUE7VUFDQSxNQUFNNEcsS0FBSyxHQUFHUixhQUFhLENBQUNTLGNBQWMsQ0FBQ0YsS0FBSyxDQUFDRyxNQUFNLENBQUM7VUFDeEQsT0FBT1gsT0FBTyxDQUFDWSxrQkFBa0IsSUFBSVosT0FBTyxDQUFDWSxrQkFBa0IsQ0FBQ3JFLE9BQU8sQ0FBQ2tFLEtBQUssQ0FBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUN2RnRHLFNBQVMsR0FDVDtZQUFFcUcsY0FBYyxFQUFFTyxLQUFLLENBQUNQLGNBQWM7WUFBRUMsTUFBTSxFQUFFTSxLQUFLLENBQUNOO1VBQU8sQ0FBQztRQUNsRSxDQUFDLENBQUM7TUFDSDtJQUNELENBQUMsTUFBTTtNQUNOO01BQ0EsT0FBT0gsT0FBTyxDQUFDYSxrQkFBa0IsR0FBR0MsT0FBTyxDQUFDQyxPQUFPLENBQUM7UUFBRUMsUUFBUSxFQUFFaEIsT0FBTyxDQUFDYTtNQUFtQixDQUFDLENBQUMsR0FBR0MsT0FBTyxDQUFDQyxPQUFPLENBQUNsSCxTQUFTLENBQUM7SUFDM0g7RUFDRDs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQU5BLElBUU1vSCxnQ0FBZ0MsV0FEckNDLGNBQWMsQ0FBQyxnREFBZ0QsQ0FBQyxVQTJIL0RDLGNBQWMsRUFBRSxVQTZCaEJBLGNBQWMsRUFBRSxVQTZaaEJDLGVBQWUsRUFBRTtJQUFBO0lBQUE7TUFBQTtJQUFBO0lBQUE7SUE3aUJsQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFMQyxPQU1VQyxnQkFBZ0IsR0FBMUIsMEJBQTJCQyxhQUE0QixFQUFFQyxTQUFvQixFQUFRO01BQUE7TUFDcEYsTUFBTUMsYUFBa0IsR0FBRztRQUMxQixTQUFTLEVBQUU7VUFDVkMsRUFBRSxFQUFFLFFBQVE7VUFDWnZELElBQUksRUFBRTtRQUNQLENBQUM7UUFDRCxRQUFRLEVBQUU7VUFDVHdELFVBQVUsRUFBRTtRQUNiLENBQUM7UUFDRCxVQUFVLEVBQUU7VUFDWHhELElBQUksRUFBRSxZQUFZO1VBQ2xCeUQsSUFBSSxFQUFFO1lBQ0xDLElBQUksRUFBRSxDQUFDO1VBQ1IsQ0FBQztVQUNEQyxNQUFNLEVBQUU7WUFDUDNELElBQUksRUFBRSxTQUFTO1lBQ2ZOLEtBQUssRUFBRTBELGFBQWEsQ0FBQ1EsU0FBUyxDQUFDbEUsS0FBSztZQUNwQ21FLFFBQVEsRUFBRVQsYUFBYSxDQUFDUSxTQUFTLENBQUNFLFdBQVc7WUFDN0NDLGlCQUFpQixFQUFFLFlBQVk7WUFDL0JDLGFBQWEsRUFBRTtjQUNkQyxNQUFNLEVBQUUsb0JBQW9CO2NBQzVCQyxJQUFJLEVBQUUsa0JBQWtCO2NBQ3hCQyxLQUFLLEVBQUUsYUFBYTtjQUNwQkMsS0FBSyxFQUFFO1lBQ1I7VUFDRCxDQUFDO1VBQ0RDLE9BQU8sRUFBRTtZQUNSQyxTQUFTLEVBQUUsT0FBTztZQUNsQkMsZUFBZSxFQUFFO2NBQ2hCekUsUUFBUSxFQUFFLENBQUMsQ0FBQztjQUNaSixLQUFLLEVBQUU7Z0JBQ05DLE9BQU8sRUFBRSxJQUFJO2dCQUNiVSxTQUFTLEVBQUU7Y0FDWjtZQUNELENBQUM7WUFDRG9ELElBQUksRUFBRTtjQUNMZSxJQUFJLEVBQUU7WUFDUDtVQUNEO1FBQ0Q7TUFDRCxDQUFDOztNQUVEO01BQ0EsSUFBSXBCLGFBQWEsQ0FBQ1EsU0FBUyxDQUFDYSxVQUFVLElBQUlyQixhQUFhLENBQUNRLFNBQVMsQ0FBQ2MsV0FBVyxLQUFLL0ksU0FBUyxFQUFFO1FBQzVGLE1BQU1nQyxTQUFTLEdBQUdDLElBQUksQ0FBQ0Msd0JBQXdCLENBQUMsYUFBYSxDQUFDO1FBQzlEeUYsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDSyxNQUFNLENBQUNnQixjQUFjLEdBQUcsQ0FDakQ7VUFDQ2pGLEtBQUssRUFBRS9CLFNBQVMsQ0FBQ2MsT0FBTyxDQUFDLDRCQUE0QixDQUFDO1VBQ3REd0YsTUFBTSxFQUFFLGdCQUFnQjtVQUN4QkMsSUFBSSxFQUFFO1FBQ1AsQ0FBQyxFQUNEO1VBQ0N4RSxLQUFLLEVBQUUvQixTQUFTLENBQUNjLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQztVQUN6RHdGLE1BQU0sRUFBRSxtQkFBbUI7VUFDM0JDLElBQUksRUFBRTtRQUNQLENBQUMsQ0FDRDtNQUNGOztNQUVBO01BQ0EsNkJBQUlkLGFBQWEsQ0FBQ3dCLGlDQUFpQyxrREFBL0Msc0JBQWlEcEksTUFBTSxFQUFFO1FBQzVELE1BQU1xSSxhQUF1QixHQUFHLEVBQUU7UUFDbEN6QixhQUFhLENBQUN3QixpQ0FBaUMsQ0FBQ0UsT0FBTyxDQUFFeEksZ0JBQWdCLElBQUs7VUFDN0UsTUFBTXlJLElBQUksR0FBRzVILDZCQUE2QixDQUFDYixnQkFBZ0IsQ0FBQztVQUM1RCxJQUFJeUksSUFBSSxFQUFFO1lBQ1RGLGFBQWEsQ0FBQ2xELElBQUksQ0FBQ29ELElBQUksQ0FBQztVQUN6QjtRQUNELENBQUMsQ0FBQztRQUVGLElBQUlGLGFBQWEsQ0FBQ3JJLE1BQU0sRUFBRTtVQUN6QjhHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQ0ssTUFBTSxDQUFDcUIsT0FBTyxHQUFHSCxhQUFhLENBQUNuRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3BFO01BQ0Q7O01BRUE7TUFDQTRFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQ2UsT0FBTyxDQUFDN0UsU0FBUyxHQUFHNEQsYUFBYSxDQUFDbEUsS0FBSyxDQUFDTSxTQUFTO01BQzNFSCx3QkFBd0IsQ0FBQytELGFBQWEsQ0FBQ2xFLEtBQUssRUFBRW9FLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQ2UsT0FBTyxDQUFDRSxlQUFlLENBQUM7TUFDaEdqQixhQUFhLENBQUMsVUFBVSxDQUFDLENBQUNlLE9BQU8sQ0FBQ0UsZUFBZSxDQUFDN0UsS0FBSyxDQUFDdUYsSUFBSSxHQUFHdEcsZ0JBQWdCLENBQUN5RSxhQUFhLENBQUM7TUFDOUZFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQ2UsT0FBTyxDQUFDakYsVUFBVSxHQUFHZ0UsYUFBYSxDQUFDbEUsS0FBSyxDQUFDRSxVQUFVLENBQUNyQyxHQUFHLENBQUU0RCxTQUFTLElBQUs7UUFDaEcsT0FBTztVQUFFNUIsS0FBSyxFQUFFNEIsU0FBUyxDQUFDNUIsS0FBSztVQUFFbUcsS0FBSyxFQUFHLElBQUd2RSxTQUFTLENBQUN3RSxJQUFLO1FBQUcsQ0FBQztNQUNoRSxDQUFDLENBQUM7TUFDRjdCLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQ2UsT0FBTyxDQUFDbEYsUUFBUSxHQUFHaUUsYUFBYSxDQUFDbEUsS0FBSyxDQUFDQyxRQUFRLENBQUNwQyxHQUFHLENBQUVxSSxPQUFPLElBQUs7UUFDMUYsT0FBTztVQUFFckcsS0FBSyxFQUFFcUcsT0FBTyxDQUFDckcsS0FBSztVQUFFbUcsS0FBSyxFQUFHLElBQUdFLE9BQU8sQ0FBQ0QsSUFBSztRQUFHLENBQUM7TUFDNUQsQ0FBQyxDQUFDO01BQ0Y3QixhQUFhLENBQUMsVUFBVSxDQUFDLENBQUNlLE9BQU8sQ0FBQ2dCLEtBQUssR0FBR3pELGFBQWEsQ0FBQ3dCLGFBQWEsQ0FBQ2xFLEtBQUssQ0FBQztNQUU1RW1FLFNBQVMsQ0FBQ2lDLFdBQVcsQ0FBRSxJQUFHbEMsYUFBYSxDQUFDRyxFQUFHLEVBQUMsRUFBRTtRQUM3Q2dDLFFBQVEsRUFBRWpDO01BQ1gsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQUFBLE9BRVNrQyxrQkFBa0IsR0FBNUIsNEJBQTZCcEMsYUFBNEIsRUFBRUMsU0FBb0IsRUFBRXRCLGFBQWtCLEVBQWlCO01BQ25IO01BQ0EsSUFBSXFCLGFBQWEsQ0FBQ3FDLFVBQVUsRUFBRTtRQUM3QixPQUFPNUQsdUJBQXVCLENBQUN1QixhQUFhLENBQUNxQyxVQUFVLEVBQUUxRCxhQUFhLENBQUMsQ0FBQ0ksSUFBSSxDQUFFdUQsUUFBUSxJQUFLO1VBQzFGLElBQUlBLFFBQVEsRUFBRTtZQUNickMsU0FBUyxDQUFDaUMsV0FBVyxDQUFFLElBQUdsQyxhQUFhLENBQUNHLEVBQUcsbUNBQWtDLEVBQUUsQ0FDOUU7Y0FDQ3ZELElBQUksRUFBRSxZQUFZO2NBQ2xCMkYsVUFBVSxFQUFFRDtZQUNiLENBQUMsQ0FDRCxDQUFDO1VBQ0g7UUFDRCxDQUFDLENBQUM7TUFDSCxDQUFDLE1BQU07UUFDTixPQUFPOUMsT0FBTyxDQUFDQyxPQUFPLEVBQUU7TUFDekI7SUFDRCxDQUFDO0lBQUEsT0FHTStDLE1BQU0sR0FEYixrQkFDc0I7TUFBQTtNQUNyQixJQUFJLENBQUNDLGVBQWUsb0JBQUksSUFBSSxDQUFDQyxPQUFPLEVBQUUsQ0FBQ0MsYUFBYSxFQUFFLENBQW9CQyxhQUFhLEVBQUUsa0RBQWxFLGNBQW9FQyxXQUFXLENBQUMsaUJBQWlCLENBQUM7TUFFekgsSUFBSSxJQUFJLENBQUNKLGVBQWUsSUFBSSxJQUFJLENBQUNBLGVBQWUsQ0FBQ3JKLE1BQU0sRUFBRTtRQUN4RCxNQUFNMEosS0FBSyxHQUFHLElBQUksQ0FBQ0osT0FBTyxFQUFFO1FBQzVCLE1BQU1LLGFBQWEsR0FBSUQsS0FBSyxDQUFDSCxhQUFhLEVBQUUsQ0FBb0JLLGVBQWUsRUFBUzs7UUFFeEY7UUFDQSxNQUFNL0MsU0FBUyxHQUFHLElBQUlnRCxTQUFTLEVBQUU7UUFDakNILEtBQUssQ0FBQ0ksUUFBUSxDQUFDakQsU0FBUyxFQUFFLFVBQVUsQ0FBQztRQUVyQyxJQUFJLENBQUN3QyxlQUFlLENBQUNmLE9BQU8sQ0FBRTFCLGFBQWEsSUFBSztVQUMvQztVQUNBLElBQUksQ0FBQ0QsZ0JBQWdCLENBQUNDLGFBQWEsRUFBRUMsU0FBUyxDQUFDOztVQUUvQztVQUNBLElBQUksQ0FBQ21DLGtCQUFrQixDQUFDcEMsYUFBYSxFQUFFQyxTQUFTLEVBQUU4QyxhQUFhLENBQUNJLGdCQUFnQixFQUFFLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLFVBQVVDLEdBQVEsRUFBRTtZQUM3R0MsR0FBRyxDQUFDQyxLQUFLLENBQUNGLEdBQUcsQ0FBQztVQUNmLENBQUMsQ0FBQzs7VUFFRjtVQUNBLElBQUksQ0FBQ0csY0FBYyxDQUFDeEQsYUFBYSxFQUFFK0MsYUFBYSxDQUFDVSxRQUFRLEVBQUUsRUFBZ0J4RCxTQUFTLENBQUMsQ0FBQ21ELEtBQUssQ0FBQyxVQUFVQyxHQUFRLEVBQUU7WUFDL0dDLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDRixHQUFHLENBQUM7VUFDZixDQUFDLENBQUM7UUFDSCxDQUFDLENBQUM7TUFDSDtJQUNELENBQUM7SUFBQSxPQUdNSyxNQUFNLEdBRGIsa0JBQ3NCO01BQ3JCLE1BQU16RCxTQUFTLEdBQUcsSUFBSSxDQUFDeUMsT0FBTyxFQUFFLENBQUNlLFFBQVEsQ0FBQyxVQUFVLENBQWM7TUFFbEUsSUFBSXhELFNBQVMsRUFBRTtRQUNkQSxTQUFTLENBQUMwRCxPQUFPLEVBQUU7TUFDcEI7SUFDRCxDQUFDO0lBQUEsT0FFT0MsK0JBQStCLEdBQXZDLHlDQUF3QzVELGFBQTRCLEVBQUU2RCxVQUFtQixFQUFFNUQsU0FBb0IsRUFBRTtNQUFBO01BQ2hILE1BQU1qRyxhQUFhLEdBQUcsSUFBSUMsTUFBTSxDQUFDQyxHQUFHLENBQUNDLEVBQUUsQ0FBQ0MsT0FBTyxFQUFFLENBQUNDLGdCQUFnQixFQUFFLENBQUNDLFdBQVcsRUFBRSxDQUFDO01BQ25GLE1BQU13SixPQUFPLEdBQUcseUJBQUE5RCxhQUFhLENBQUNRLFNBQVMsQ0FBQ00sSUFBSSxrREFBNUIsc0JBQThCaUQsTUFBTSxHQUNqREYsVUFBVSxDQUFDaEIsV0FBVyxDQUFDN0MsYUFBYSxDQUFDUSxTQUFTLENBQUNNLElBQUksQ0FBQ2dCLEtBQUssQ0FBQyw2QkFDMUQ5QixhQUFhLENBQUNRLFNBQVMsQ0FBQ00sSUFBSSwyREFBNUIsdUJBQThCZ0IsS0FBSztNQUV0QyxNQUFNa0MsWUFBWSxHQUFHLDJCQUFBaEUsYUFBYSxDQUFDUSxTQUFTLENBQUNNLElBQUksMkRBQTVCLHVCQUE4Qm1ELFVBQVUsTUFBSyxLQUFLLElBQUlILE9BQU8sS0FBSyxHQUFHOztNQUUxRjtNQUNBO01BQ0EsTUFBTUksUUFBUSxHQUFHQyxNQUFNLENBQUNDLFVBQVUsQ0FBQ1AsVUFBVSxDQUFDaEIsV0FBVyxDQUFDN0MsYUFBYSxDQUFDUSxTQUFTLENBQUNsSCxZQUFZLENBQUMsQ0FBQzs7TUFFaEc7TUFDQSxNQUFNbEIsUUFBUSxHQUFHaU0sWUFBWSxDQUFDQyxnQkFBZ0IsQ0FDN0M7UUFDQ3pKLEtBQUssRUFBRW1KLFlBQVksR0FBR3pMLFNBQVMsR0FBRyxPQUFPO1FBQ3pDZ00saUJBQWlCLEVBQUUsQ0FBQztRQUNwQkMsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQkMsU0FBUyxFQUFFLENBQUNUO01BQ2IsQ0FBQyxFQUNEaEssYUFBYSxDQUNiLENBQUNrQixNQUFNLENBQUNnSixRQUFRLENBQUM7TUFDbEJqRSxTQUFTLENBQUNpQyxXQUFXLENBQUUsSUFBR2xDLGFBQWEsQ0FBQ0csRUFBRyx3Q0FBdUMsRUFBRS9ILFFBQVEsQ0FBQzs7TUFFN0Y7TUFDQSxNQUFNc00sZ0JBQWdCLEdBQUdMLFlBQVksQ0FBQ0MsZ0JBQWdCLENBQ3JEO1FBQ0NFLGlCQUFpQixFQUFFLENBQUM7UUFDcEJDLFNBQVMsRUFBRSxLQUFLO1FBQ2hCRSxlQUFlLEVBQUU7TUFDbEIsQ0FBQyxFQUNEM0ssYUFBYSxDQUNiLENBQUNrQixNQUFNLENBQUNnSixRQUFRLENBQUM7TUFDbEJqRSxTQUFTLENBQUNpQyxXQUFXLENBQUUsSUFBR2xDLGFBQWEsQ0FBQ0csRUFBRyxnREFBK0MsRUFBRXVFLGdCQUFnQixDQUFDOztNQUU3RztNQUNBLE1BQU1FLGVBQWUsR0FBR1AsWUFBWSxDQUFDQyxnQkFBZ0IsQ0FDcEQ7UUFDQ3pKLEtBQUssRUFBRW1KLFlBQVksR0FBR3pMLFNBQVMsR0FBRyxPQUFPO1FBQ3pDZ00saUJBQWlCLEVBQUUsQ0FBQztRQUNwQkMsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQkMsU0FBUyxFQUFFO01BQ1osQ0FBQyxFQUNEekssYUFBYSxDQUNiLENBQUNrQixNQUFNLENBQUNnSixRQUFRLENBQUM7TUFDbEJqRSxTQUFTLENBQUNpQyxXQUFXLENBQUUsSUFBR2xDLGFBQWEsQ0FBQ0csRUFBRywrQ0FBOEMsRUFBRXlFLGVBQWUsQ0FBQzs7TUFFM0c7TUFDQSxNQUFNQyxhQUFhLEdBQUdSLFlBQVksQ0FBQ0MsZ0JBQWdCLENBQ2xEO1FBQ0N6SixLQUFLLEVBQUVtSixZQUFZLEdBQUd6TCxTQUFTLEdBQUcsT0FBTztRQUN6Q3VNLFFBQVEsRUFBRSxDQUFDO1FBQ1hDLGdCQUFnQixFQUFFLENBQUM7UUFDbkJOLFNBQVMsRUFBRTtNQUNaLENBQUMsRUFDRHpLLGFBQWEsQ0FDYixDQUFDa0IsTUFBTSxDQUFDZ0osUUFBUSxDQUFDO01BQ2xCakUsU0FBUyxDQUFDaUMsV0FBVyxDQUFFLElBQUdsQyxhQUFhLENBQUNHLEVBQUcsNkNBQTRDLEVBQUUwRSxhQUFhLENBQUM7O01BRXZHO01BQ0E7TUFDQSxJQUFJN0UsYUFBYSxDQUFDUSxTQUFTLENBQUNNLElBQUksSUFBSWdELE9BQU8sRUFBRTtRQUM1QyxJQUFJOUQsYUFBYSxDQUFDUSxTQUFTLENBQUNNLElBQUksQ0FBQ21ELFVBQVUsRUFBRTtVQUM1Q2hFLFNBQVMsQ0FBQ2lDLFdBQVcsQ0FBRSxJQUFHbEMsYUFBYSxDQUFDRyxFQUFHLHVDQUFzQyxFQUFFMkQsT0FBTyxDQUFDO1FBQzVGLENBQUMsTUFBTTtVQUNOO1VBQ0EsTUFBTWtCLE9BQU8sR0FBR1gsWUFBWSxDQUFDWSxlQUFlLENBQUM7WUFBRUMsVUFBVSxFQUFFO1VBQU0sQ0FBQyxFQUFFbEwsYUFBYSxDQUFDLENBQUNrQixNQUFNLENBQUNnSixRQUFRLEVBQUVKLE9BQU8sQ0FBQztVQUM1RzdELFNBQVMsQ0FBQ2lDLFdBQVcsQ0FBRSxJQUFHbEMsYUFBYSxDQUFDRyxFQUFHLHVDQUFzQyxFQUFFNkUsT0FBTyxDQUFDO1FBQzVGO01BQ0Q7SUFDRCxDQUFDO0lBQUEsT0FFT0csMEJBQTBCLEdBQWxDLG9DQUFtQ25GLGFBQTRCLEVBQUU2RCxVQUFtQixFQUFFNUQsU0FBb0IsRUFBRTtNQUMzRyxNQUFNaUUsUUFBUSxHQUFHQyxNQUFNLENBQUNDLFVBQVUsQ0FBQ1AsVUFBVSxDQUFDaEIsV0FBVyxDQUFDN0MsYUFBYSxDQUFDUSxTQUFTLENBQUNsSCxZQUFZLENBQUMsQ0FBQztNQUVoRyxJQUFJOEwsZ0JBQWdCLEdBQUd4TixXQUFXLENBQUNNLElBQUk7TUFDdkMsSUFBSThILGFBQWEsQ0FBQ1EsU0FBUyxDQUFDNEUsZ0JBQWdCLEVBQUU7UUFDN0M7UUFDQUEsZ0JBQWdCLEdBQUdwRixhQUFhLENBQUNRLFNBQVMsQ0FBQzRFLGdCQUFnQjtNQUM1RCxDQUFDLE1BQU0sSUFBSXBGLGFBQWEsQ0FBQ1EsU0FBUyxDQUFDNkUsZUFBZSxFQUFFO1FBQ25EO1FBQ0FELGdCQUFnQixHQUNmek4sMEJBQTBCLENBQUNrTSxVQUFVLENBQUNoQixXQUFXLENBQUM3QyxhQUFhLENBQUNRLFNBQVMsQ0FBQzZFLGVBQWUsQ0FBQyxDQUFDLElBQUl6TixXQUFXLENBQUNNLElBQUk7TUFDakgsQ0FBQyxNQUFNLElBQUk4SCxhQUFhLENBQUNRLFNBQVMsQ0FBQzhFLGdDQUFnQyxJQUFJdEYsYUFBYSxDQUFDUSxTQUFTLENBQUMrRSwwQkFBMEIsRUFBRTtRQUMxSDtRQUNBLFFBQVF2RixhQUFhLENBQUNRLFNBQVMsQ0FBQytFLDBCQUEwQjtVQUN6RCxLQUFLLG9DQUFvQztZQUN4Q0gsZ0JBQWdCLEdBQUdqTixnQ0FBZ0MsQ0FBQytMLFFBQVEsRUFBRWxFLGFBQWEsQ0FBQ1EsU0FBUyxDQUFDOEUsZ0NBQWdDLENBQUM7WUFDdkg7VUFFRCxLQUFLLHNDQUFzQztZQUMxQ0YsZ0JBQWdCLEdBQUc1TSxrQ0FBa0MsQ0FDcEQwTCxRQUFRLEVBQ1JsRSxhQUFhLENBQUNRLFNBQVMsQ0FBQzhFLGdDQUFnQyxDQUN4RDtZQUNEO1VBRUQsS0FBSyxzQ0FBc0M7VUFDM0M7WUFDQ0YsZ0JBQWdCLEdBQUczTSxrQ0FBa0MsQ0FDcER5TCxRQUFRLEVBQ1JsRSxhQUFhLENBQUNRLFNBQVMsQ0FBQzhFLGdDQUFnQyxDQUN4RDtZQUNEO1FBQU07TUFFVDtNQUVBckYsU0FBUyxDQUFDaUMsV0FBVyxDQUFFLElBQUdsQyxhQUFhLENBQUNHLEVBQUcsOENBQTZDLEVBQUVpRixnQkFBZ0IsQ0FBQztNQUMzR25GLFNBQVMsQ0FBQ2lDLFdBQVcsQ0FDbkIsSUFBR2xDLGFBQWEsQ0FBQ0csRUFBRyx3Q0FBdUMsRUFDNURsSSx5QkFBeUIsQ0FBQ21OLGdCQUFnQixDQUFDLElBQUksTUFBTSxDQUNyRDtJQUNGLENBQUM7SUFBQSxPQUVPSSxvQkFBb0IsR0FBNUIsOEJBQTZCeEYsYUFBNEIsRUFBRTZELFVBQW1CLEVBQUU1RCxTQUFvQixFQUFFO01BQ3JHLE1BQU1pRSxRQUFRLEdBQUdDLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDUCxVQUFVLENBQUNoQixXQUFXLENBQUM3QyxhQUFhLENBQUNRLFNBQVMsQ0FBQ2xILFlBQVksQ0FBQyxDQUFDO01BRWhHLElBQUlYLFVBQVUsR0FBRyxNQUFNO01BRXZCLElBQUlxSCxhQUFhLENBQUNRLFNBQVMsQ0FBQzdILFVBQVUsRUFBRTtRQUN2QztRQUNBQSxVQUFVLEdBQUdxSCxhQUFhLENBQUNRLFNBQVMsQ0FBQzdILFVBQVU7TUFDaEQsQ0FBQyxNQUFNLElBQUlxSCxhQUFhLENBQUNRLFNBQVMsQ0FBQ2lGLFNBQVMsRUFBRTtRQUM3QztRQUNBOU0sVUFBVSxHQUFHRCwrQkFBK0IsQ0FBQ21MLFVBQVUsQ0FBQ2hCLFdBQVcsQ0FBQzdDLGFBQWEsQ0FBQ1EsU0FBUyxDQUFDaUYsU0FBUyxDQUFDLENBQUM7TUFDeEcsQ0FBQyxNQUFNLElBQ056RixhQUFhLENBQUNRLFNBQVMsQ0FBQ2tGLDhCQUE4QixLQUFLbk4sU0FBUyxJQUNwRXlILGFBQWEsQ0FBQ1EsU0FBUyxDQUFDbUYsNkJBQTZCLEVBQ3BEO1FBQ0Q7UUFDQSxJQUFJQyxtQkFBMkI7UUFDL0IsSUFBSTVGLGFBQWEsQ0FBQ1EsU0FBUyxDQUFDa0YsOEJBQThCLEtBQUtuTixTQUFTLEVBQUU7VUFDekVxTixtQkFBbUIsR0FBRzVGLGFBQWEsQ0FBQ1EsU0FBUyxDQUFDa0YsOEJBQThCO1FBQzdFLENBQUMsTUFBTTtVQUNORSxtQkFBbUIsR0FBR3pCLE1BQU0sQ0FBQ0MsVUFBVSxDQUN0Q1AsVUFBVSxDQUFDaEIsV0FBVyxDQUFDN0MsYUFBYSxDQUFDUSxTQUFTLENBQUNtRiw2QkFBNkIsSUFBSSxFQUFFLENBQUMsQ0FDbkY7UUFDRjtRQUNBaE4sVUFBVSxHQUFHRSxpQ0FBaUMsQ0FDN0NxTCxRQUFRLEVBQ1IwQixtQkFBbUIsRUFDbkIsQ0FBQyxDQUFDNUYsYUFBYSxDQUFDUSxTQUFTLENBQUNxRiwwQkFBMEIsRUFDcEQ3RixhQUFhLENBQUNRLFNBQVMsQ0FBQ3NGLHlCQUF5QixDQUNqRDtNQUNGO01BRUE3RixTQUFTLENBQUNpQyxXQUFXLENBQUUsSUFBR2xDLGFBQWEsQ0FBQ0csRUFBRyxvQ0FBbUMsRUFBRXhILFVBQVUsQ0FBQztJQUM1RixDQUFDO0lBQUEsT0FFT29OLGlCQUFpQixHQUF6QiwyQkFBMEIvRixhQUE0QixFQUFFNkQsVUFBbUIsRUFBRTVELFNBQW9CLEVBQUU7TUFDbEcsSUFBSUQsYUFBYSxDQUFDUSxTQUFTLENBQUNjLFdBQVcsS0FBSy9JLFNBQVMsSUFBSXlILGFBQWEsQ0FBQ1EsU0FBUyxDQUFDYSxVQUFVLEtBQUs5SSxTQUFTLEVBQUU7UUFDMUcsT0FBTyxDQUFDO01BQ1Q7O01BQ0EsTUFBTTJMLFFBQVEsR0FBR0MsTUFBTSxDQUFDQyxVQUFVLENBQUNQLFVBQVUsQ0FBQ2hCLFdBQVcsQ0FBQzdDLGFBQWEsQ0FBQ1EsU0FBUyxDQUFDbEgsWUFBWSxDQUFDLENBQUM7TUFDaEcsTUFBTVUsYUFBYSxHQUFHLElBQUlDLE1BQU0sQ0FBQ0MsR0FBRyxDQUFDQyxFQUFFLENBQUNDLE9BQU8sRUFBRSxDQUFDQyxnQkFBZ0IsRUFBRSxDQUFDQyxXQUFXLEVBQUUsQ0FBQztNQUVuRixJQUFJMEwsY0FBc0I7TUFDMUIsSUFBSWhHLGFBQWEsQ0FBQ1EsU0FBUyxDQUFDYyxXQUFXLEtBQUsvSSxTQUFTLEVBQUU7UUFDdER5TixjQUFjLEdBQUdoRyxhQUFhLENBQUNRLFNBQVMsQ0FBQ2MsV0FBVztNQUNyRCxDQUFDLE1BQU07UUFDTjBFLGNBQWMsR0FBRzdCLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDUCxVQUFVLENBQUNoQixXQUFXLENBQUM3QyxhQUFhLENBQUNRLFNBQVMsQ0FBQ2EsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDO01BQ3JHO01BQ0EsTUFBTTRFLGlCQUFpQixHQUFHRCxjQUFjLEtBQUssQ0FBQyxHQUFJLENBQUM5QixRQUFRLEdBQUc4QixjQUFjLElBQUlBLGNBQWMsR0FBSSxHQUFHLEdBQUd6TixTQUFTOztNQUVqSDtNQUNBLE1BQU0rSSxXQUFXLEdBQUcrQyxZQUFZLENBQUNDLGdCQUFnQixDQUNoRDtRQUNDekosS0FBSyxFQUFFLE9BQU87UUFDZDBKLGlCQUFpQixFQUFFLENBQUM7UUFDcEJDLGlCQUFpQixFQUFFLENBQUM7UUFDcEJDLFNBQVMsRUFBRTtNQUNaLENBQUMsRUFDRHpLLGFBQWEsQ0FDYixDQUFDa0IsTUFBTSxDQUFDOEssY0FBYyxDQUFDO01BQ3hCLE1BQU1FLFdBQVcsR0FBRzdCLFlBQVksQ0FBQ0MsZ0JBQWdCLENBQ2hEO1FBQ0N6SixLQUFLLEVBQUUsT0FBTztRQUNkaUssUUFBUSxFQUFFLENBQUM7UUFDWEMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQk4sU0FBUyxFQUFFO01BQ1osQ0FBQyxFQUNEekssYUFBYSxDQUNiLENBQUNrQixNQUFNLENBQUM4SyxjQUFjLENBQUM7TUFFeEIvRixTQUFTLENBQUNpQyxXQUFXLENBQUUsSUFBR2xDLGFBQWEsQ0FBQ0csRUFBRywyQ0FBMEMsRUFBRW1CLFdBQVcsQ0FBQztNQUNuR3JCLFNBQVMsQ0FBQ2lDLFdBQVcsQ0FBRSxJQUFHbEMsYUFBYSxDQUFDRyxFQUFHLHlDQUF3QyxFQUFFK0YsV0FBVyxDQUFDO01BRWpHLElBQUlELGlCQUFpQixLQUFLMU4sU0FBUyxFQUFFO1FBQ3BDLE1BQU00TixjQUFjLEdBQUc5QixZQUFZLENBQUNDLGdCQUFnQixDQUNuRDtVQUNDQyxpQkFBaUIsRUFBRSxDQUFDO1VBQ3BCQyxpQkFBaUIsRUFBRSxDQUFDO1VBQ3BCQyxTQUFTLEVBQUU7UUFDWixDQUFDLEVBQ0R6SyxhQUFhLENBQ2IsQ0FBQ2tCLE1BQU0sQ0FBQytLLGlCQUFpQixDQUFDO1FBQzNCaEcsU0FBUyxDQUFDaUMsV0FBVyxDQUFFLElBQUdsQyxhQUFhLENBQUNHLEVBQUcsOENBQTZDLEVBQUVnRyxjQUFjLENBQUM7TUFDMUcsQ0FBQyxNQUFNO1FBQ05sRyxTQUFTLENBQUNpQyxXQUFXLENBQUUsSUFBR2xDLGFBQWEsQ0FBQ0csRUFBRyw4Q0FBNkMsRUFBRSxLQUFLLENBQUM7TUFDakc7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FSQztJQUFBLE9BU1VxRCxjQUFjLEdBQXhCLHdCQUF5QnhELGFBQTRCLEVBQUVvRyxVQUFzQixFQUFFbkcsU0FBb0IsRUFBRW9HLFFBQWtCLEVBQU87TUFBQTtNQUM3SDtNQUNBO01BQ0EsTUFBTUMsWUFBWSxHQUFHRCxRQUFRLEdBQzFCRCxVQUFVLENBQUNHLFFBQVEsQ0FBRSxJQUFHdkcsYUFBYSxDQUFDd0csU0FBVSxFQUFDLEVBQUVqTyxTQUFTLEVBQUVBLFNBQVMsRUFBRUEsU0FBUyxFQUFFO1FBQUVrTyxTQUFTLEVBQUU7TUFBZ0IsQ0FBQyxDQUFDLEdBQ25ITCxVQUFVLENBQUNHLFFBQVEsQ0FBRSxJQUFHdkcsYUFBYSxDQUFDd0csU0FBVSxFQUFDLEVBQUVqTyxTQUFTLEVBQUVBLFNBQVMsRUFBRUEsU0FBUyxFQUFFO1FBQUVrTyxTQUFTLEVBQUU7TUFBb0IsQ0FBQyxDQUFDO01BQzFILE1BQU1DLFVBQTZDLEdBQUcsQ0FBQyxDQUFDOztNQUV4RDtNQUNBLDhCQUFJMUcsYUFBYSxDQUFDUSxTQUFTLENBQUNNLElBQUksbURBQTVCLHVCQUE4QmlELE1BQU0sRUFBRTtRQUN6QzJDLFVBQVUsQ0FBQzFHLGFBQWEsQ0FBQ1EsU0FBUyxDQUFDbEgsWUFBWSxDQUFDLEdBQUc7VUFBRXdILElBQUksRUFBRWQsYUFBYSxDQUFDUSxTQUFTLENBQUNNLElBQUksQ0FBQ2dCO1FBQU0sQ0FBQztNQUNoRyxDQUFDLE1BQU07UUFDTjRFLFVBQVUsQ0FBQzFHLGFBQWEsQ0FBQ1EsU0FBUyxDQUFDbEgsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO01BQ3REOztNQUVBO01BQ0EsSUFBSTBHLGFBQWEsQ0FBQ1EsU0FBUyxDQUFDNkUsZUFBZSxFQUFFO1FBQzVDcUIsVUFBVSxDQUFDMUcsYUFBYSxDQUFDUSxTQUFTLENBQUM2RSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7TUFDekQ7O01BRUE7TUFDQSxJQUFJZ0IsUUFBUSxFQUFFO1FBQ2IsSUFBSXJHLGFBQWEsQ0FBQ1EsU0FBUyxDQUFDaUYsU0FBUyxFQUFFO1VBQ3RDaUIsVUFBVSxDQUFDMUcsYUFBYSxDQUFDUSxTQUFTLENBQUNpRixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkQ7UUFDQSxJQUFJekYsYUFBYSxDQUFDUSxTQUFTLENBQUNtRiw2QkFBNkIsRUFBRTtVQUMxRGUsVUFBVSxDQUFDMUcsYUFBYSxDQUFDUSxTQUFTLENBQUNtRiw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2RTtRQUNBLElBQUkzRixhQUFhLENBQUNRLFNBQVMsQ0FBQ2EsVUFBVSxFQUFFO1VBQ3ZDcUYsVUFBVSxDQUFDMUcsYUFBYSxDQUFDUSxTQUFTLENBQUNhLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwRDtNQUNEO01BRUFpRixZQUFZLENBQUNLLGNBQWMsQ0FBQztRQUFFQyxTQUFTLEVBQUVGO01BQVcsQ0FBQyxDQUFDOztNQUV0RDtNQUNBLDhCQUFJMUcsYUFBYSxDQUFDd0IsaUNBQWlDLG1EQUEvQyx1QkFBaURwSSxNQUFNLEVBQUU7UUFDNUQsTUFBTXlOLFFBQVEsR0FBRzdHLGFBQWEsQ0FBQ3dCLGlDQUFpQyxDQUFDN0gsR0FBRyxDQUFDViwwQkFBMEIsQ0FBQyxDQUFDcUUsTUFBTSxDQUFFQSxNQUFNLElBQUs7VUFDbkgsT0FBT0EsTUFBTSxLQUFLL0UsU0FBUztRQUM1QixDQUFDLENBQWE7UUFDZCtOLFlBQVksQ0FBQ2hKLE1BQU0sQ0FBQ3VKLFFBQVEsQ0FBQztNQUM5QjtNQUVBLE9BQU9QLFlBQVksQ0FBQ1EsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQy9ILElBQUksQ0FBRWdJLFNBQW9CLElBQUs7UUFDeEUsSUFBSUEsU0FBUyxDQUFDM04sTUFBTSxFQUFFO1VBQUE7VUFDckIsTUFBTTBLLE9BQU8sR0FBRywwQkFBQTlELGFBQWEsQ0FBQ1EsU0FBUyxDQUFDTSxJQUFJLG1EQUE1Qix1QkFBOEJpRCxNQUFNLEdBQ2pEZ0QsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDbEUsV0FBVyxDQUFDN0MsYUFBYSxDQUFDUSxTQUFTLENBQUNNLElBQUksQ0FBQ2dCLEtBQUssQ0FBQyw2QkFDNUQ5QixhQUFhLENBQUNRLFNBQVMsQ0FBQ00sSUFBSSwyREFBNUIsdUJBQThCZ0IsS0FBSztVQUV0QyxJQUFJOUIsYUFBYSxDQUFDUSxTQUFTLENBQUNNLElBQUksSUFBSSxDQUFDZ0QsT0FBTyxFQUFFO1lBQzdDO1lBQ0E3RCxTQUFTLENBQUNpQyxXQUFXLENBQUUsSUFBR2xDLGFBQWEsQ0FBQ0csRUFBRyx3Q0FBdUMsRUFBRSxHQUFHLENBQUM7WUFDeEZGLFNBQVMsQ0FBQ2lDLFdBQVcsQ0FBRSxJQUFHbEMsYUFBYSxDQUFDRyxFQUFHLGdEQUErQyxFQUFFLEdBQUcsQ0FBQztZQUNoR0YsU0FBUyxDQUFDaUMsV0FBVyxDQUFFLElBQUdsQyxhQUFhLENBQUNHLEVBQUcsK0NBQThDLEVBQUUsR0FBRyxDQUFDO1lBQy9GRixTQUFTLENBQUNpQyxXQUFXLENBQUUsSUFBR2xDLGFBQWEsQ0FBQ0csRUFBRyw2Q0FBNEMsRUFBRSxFQUFFLENBQUM7WUFDNUZGLFNBQVMsQ0FBQ2lDLFdBQVcsQ0FBRSxJQUFHbEMsYUFBYSxDQUFDRyxFQUFHLHVDQUFzQyxFQUFFNUgsU0FBUyxDQUFDO1lBQzdGMEgsU0FBUyxDQUFDaUMsV0FBVyxDQUFFLElBQUdsQyxhQUFhLENBQUNHLEVBQUcsOENBQTZDLEVBQUV2SSxXQUFXLENBQUNNLElBQUksQ0FBQztZQUMzRytILFNBQVMsQ0FBQ2lDLFdBQVcsQ0FBRSxJQUFHbEMsYUFBYSxDQUFDRyxFQUFHLHdDQUF1QyxFQUFFLE1BQU0sQ0FBQztZQUMzRkYsU0FBUyxDQUFDaUMsV0FBVyxDQUFFLElBQUdsQyxhQUFhLENBQUNHLEVBQUcsb0NBQW1DLEVBQUUsTUFBTSxDQUFDO1lBQ3ZGRixTQUFTLENBQUNpQyxXQUFXLENBQUUsSUFBR2xDLGFBQWEsQ0FBQ0csRUFBRywyQ0FBMEMsRUFBRTVILFNBQVMsQ0FBQztZQUNqRzBILFNBQVMsQ0FBQ2lDLFdBQVcsQ0FBRSxJQUFHbEMsYUFBYSxDQUFDRyxFQUFHLHlDQUF3QyxFQUFFNUgsU0FBUyxDQUFDO1lBQy9GMEgsU0FBUyxDQUFDaUMsV0FBVyxDQUFFLElBQUdsQyxhQUFhLENBQUNHLEVBQUcsOENBQTZDLEVBQUU1SCxTQUFTLENBQUM7VUFDckcsQ0FBQyxNQUFNO1lBQ04sSUFBSSxDQUFDcUwsK0JBQStCLENBQUM1RCxhQUFhLEVBQUUrRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU5RyxTQUFTLENBQUM7WUFDNUUsSUFBSSxDQUFDa0YsMEJBQTBCLENBQUNuRixhQUFhLEVBQUUrRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU5RyxTQUFTLENBQUM7WUFFdkUsSUFBSW9HLFFBQVEsRUFBRTtjQUNiLElBQUksQ0FBQ2Isb0JBQW9CLENBQUN4RixhQUFhLEVBQUUrRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU5RyxTQUFTLENBQUM7Y0FDakUsSUFBSSxDQUFDOEYsaUJBQWlCLENBQUMvRixhQUFhLEVBQUUrRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU5RyxTQUFTLENBQUM7WUFDL0Q7VUFDRDtRQUNEO01BQ0QsQ0FBQyxDQUFDO0lBQ0g7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQVBDO0lBQUEsT0FRVStHLGVBQWUsR0FBekIseUJBQTBCaEgsYUFBNEIsRUFBRW9HLFVBQXNCLEVBQUVuRyxTQUFvQixFQUFPO01BQUE7TUFDMUcsTUFBTXFHLFlBQVksR0FBR0YsVUFBVSxDQUFDRyxRQUFRLENBQUUsSUFBR3ZHLGFBQWEsQ0FBQ3dHLFNBQVUsRUFBQyxFQUFFak8sU0FBUyxFQUFFQSxTQUFTLEVBQUVBLFNBQVMsRUFBRTtRQUN4R2tPLFNBQVMsRUFBRTtNQUNaLENBQUMsQ0FBQztNQUNGLE1BQU1RLE1BQThCLEdBQUcsQ0FBQyxDQUFDO01BQ3pDLE1BQU1QLFVBQWtDLEdBQUcsQ0FBQyxDQUFDO01BRTdDMUcsYUFBYSxDQUFDbEUsS0FBSyxDQUFDRSxVQUFVLENBQUMwRixPQUFPLENBQUVuRSxTQUFTLElBQUs7UUFDckQwSixNQUFNLENBQUMxSixTQUFTLENBQUN3RSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7TUFDNUIsQ0FBQyxDQUFDO01BQ0YvQixhQUFhLENBQUNsRSxLQUFLLENBQUNDLFFBQVEsQ0FBQzJGLE9BQU8sQ0FBRU0sT0FBTyxJQUFLO1FBQ2pEMEUsVUFBVSxDQUFDMUUsT0FBTyxDQUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7TUFDOUIsQ0FBQyxDQUFDO01BQ0Z1RSxZQUFZLENBQUNLLGNBQWMsQ0FBQztRQUMzQk8sS0FBSyxFQUFFRCxNQUFNO1FBQ2JMLFNBQVMsRUFBRUY7TUFDWixDQUFDLENBQUM7O01BRUY7TUFDQSw4QkFBSTFHLGFBQWEsQ0FBQ3dCLGlDQUFpQyxtREFBL0MsdUJBQWlEcEksTUFBTSxFQUFFO1FBQzVELE1BQU15TixRQUFRLEdBQUc3RyxhQUFhLENBQUN3QixpQ0FBaUMsQ0FBQzdILEdBQUcsQ0FBQ1YsMEJBQTBCLENBQUMsQ0FBQ3FFLE1BQU0sQ0FBRUEsTUFBTSxJQUFLO1VBQ25ILE9BQU9BLE1BQU0sS0FBSy9FLFNBQVM7UUFDNUIsQ0FBQyxDQUFhO1FBQ2QrTixZQUFZLENBQUNoSixNQUFNLENBQUN1SixRQUFRLENBQUM7TUFDOUI7O01BRUE7TUFDQSxJQUFJN0csYUFBYSxDQUFDbEUsS0FBSyxDQUFDcUwsU0FBUyxFQUFFO1FBQ2xDYixZQUFZLENBQUNjLElBQUksQ0FDaEJwSCxhQUFhLENBQUNsRSxLQUFLLENBQUNxTCxTQUFTLENBQUN4TixHQUFHLENBQUUwTixRQUFRLElBQUs7VUFDL0MsT0FBTyxJQUFJQyxNQUFNLENBQUNELFFBQVEsQ0FBQ3RGLElBQUksRUFBRXNGLFFBQVEsQ0FBQ0UsVUFBVSxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUNGO01BQ0Y7TUFFQSxPQUFPakIsWUFBWSxDQUFDUSxlQUFlLENBQUMsQ0FBQyxFQUFFOUcsYUFBYSxDQUFDbEUsS0FBSyxDQUFDMEwsUUFBUSxDQUFDLENBQUN6SSxJQUFJLENBQUVnSSxTQUFvQixJQUFLO1FBQ25HLE1BQU1VLFNBQVMsR0FBR1YsU0FBUyxDQUFDcE4sR0FBRyxDQUFDLFVBQVUrTixRQUFRLEVBQUU7VUFDbkQsTUFBTUMsS0FBMEIsR0FBRyxDQUFDLENBQUM7VUFDckMzSCxhQUFhLENBQUNsRSxLQUFLLENBQUNFLFVBQVUsQ0FBQzBGLE9BQU8sQ0FBRW5FLFNBQVMsSUFBSztZQUNyRG9LLEtBQUssQ0FBQ3BLLFNBQVMsQ0FBQ3dFLElBQUksQ0FBQyxHQUFHMkYsUUFBUSxDQUFDN0UsV0FBVyxDQUFDdEYsU0FBUyxDQUFDd0UsSUFBSSxDQUFDO1VBQzdELENBQUMsQ0FBQztVQUNGL0IsYUFBYSxDQUFDbEUsS0FBSyxDQUFDQyxRQUFRLENBQUMyRixPQUFPLENBQUVNLE9BQU8sSUFBSztZQUNqRDJGLEtBQUssQ0FBQzNGLE9BQU8sQ0FBQ0QsSUFBSSxDQUFDLEdBQUcyRixRQUFRLENBQUM3RSxXQUFXLENBQUNiLE9BQU8sQ0FBQ0QsSUFBSSxDQUFDO1VBQ3pELENBQUMsQ0FBQztVQUVGLE9BQU80RixLQUFLO1FBQ2IsQ0FBQyxDQUFDO1FBRUYxSCxTQUFTLENBQUNpQyxXQUFXLENBQUUsSUFBR2xDLGFBQWEsQ0FBQ0csRUFBRyx3Q0FBdUMsRUFBRXNILFNBQVMsQ0FBQztNQUMvRixDQUFDLENBQUM7SUFDSDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BUEM7SUFBQSxPQVFVRyxVQUFVLEdBQXBCLG9CQUFxQkMsT0FBbUIsRUFBb0I7TUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQ0MsUUFBUSxFQUFFO1FBQ25CLE9BQU8sSUFBSXRJLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUVzSSxNQUFNLEtBQUs7VUFDdkN2TixJQUFJLENBQUN3TixXQUFXLENBQUMsb0JBQW9CLEVBQUU7WUFBRUMsS0FBSyxFQUFFO1VBQUssQ0FBQyxDQUFDLENBQ3JEbEosSUFBSSxDQUFDLE1BQU07WUFDWDdFLEdBQUcsQ0FBQ0MsRUFBRSxDQUFDK04sT0FBTyxDQUFDLENBQUMsaUNBQWlDLEVBQUUseUJBQXlCLENBQUMsRUFBRSxDQUFDQyxJQUFTLEVBQUVDLElBQVMsS0FBSztjQUN4RyxNQUFNQyxLQUFLLEdBQUcsSUFBSUQsSUFBSSxFQUFFO2NBRXhCQyxLQUFLLENBQUNDLFlBQVksQ0FBRUMsTUFBVyxJQUFLO2dCQUNuQyxNQUFNQyxLQUFLLEdBQUdELE1BQU0sQ0FBQ0UsWUFBWSxDQUFDLE1BQU0sQ0FBQztnQkFDekMsTUFBTUMsT0FBTyxHQUFHSCxNQUFNLENBQUNFLFlBQVksQ0FBQyxZQUFZLENBQUM7Z0JBRWpELElBQUlELEtBQUssS0FBSyxZQUFZLEVBQUU7a0JBQzNCLElBQUlFLE9BQU8sQ0FBQzlKLGNBQWMsRUFBRTtvQkFDMUIsSUFBSSxDQUFDOEQsT0FBTyxFQUFFLENBQUNDLGFBQWEsRUFBRSxDQUFTZ0csc0JBQXNCLENBQUNDLFFBQVEsQ0FDdEVGLE9BQU8sQ0FBQzlKLGNBQWMsRUFDdEI4SixPQUFPLENBQUM3SixNQUFNLENBQ2Q7a0JBQ0YsQ0FBQyxNQUFNO29CQUNMLElBQUksQ0FBQzZELE9BQU8sRUFBRSxDQUFDQyxhQUFhLEVBQUUsQ0FBU2dHLHNCQUFzQixDQUFDRSxnQkFBZ0IsQ0FBQ0gsT0FBTyxDQUFDaEosUUFBUSxDQUFDO2tCQUNsRztnQkFDRDtjQUNELENBQUMsQ0FBQztjQUVGLElBQUksQ0FBQ29KLEtBQUssR0FBRyxJQUFJWCxJQUFJLENBQUM7Z0JBQ3JCWSxLQUFLLEVBQUUsT0FBTztnQkFDZEMsTUFBTSxFQUFFO2NBQ1QsQ0FBQyxDQUFDO2NBQ0YsSUFBSSxDQUFDRixLQUFLLENBQUNHLE9BQU8sQ0FBQ1osS0FBSyxDQUFDO2NBRXpCLElBQUksQ0FBQ1AsUUFBUSxHQUFHLElBQUlvQixPQUFPLENBQUMsYUFBYSxFQUFFO2dCQUMxQ0MsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCQyxTQUFTLEVBQUUsTUFBTTtnQkFDakJuSSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM2SCxLQUFLO2NBQ3JCLENBQUMsQ0FBQztjQUVGakIsT0FBTyxDQUFDd0IsWUFBWSxDQUFDLElBQUksQ0FBQ3ZCLFFBQVEsQ0FBQyxDQUFDLENBQUM7O2NBRXJDckksT0FBTyxDQUFDLElBQUksQ0FBQ3FJLFFBQVEsQ0FBQztZQUN2QixDQUFDLENBQUM7VUFDSCxDQUFDLENBQUMsQ0FDRDFFLEtBQUssQ0FBQyxZQUFZO1lBQ2xCMkUsTUFBTSxFQUFFO1VBQ1QsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDO01BQ0gsQ0FBQyxNQUFNO1FBQ04sT0FBT3ZJLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLElBQUksQ0FBQ3FJLFFBQVEsQ0FBQztNQUN0QztJQUNELENBQUM7SUFBQSxPQUdNd0IsWUFBWSxHQURuQixzQkFDb0J6QixPQUFZLEVBQUUwQixLQUFhLEVBQVE7TUFDdEQsTUFBTXRKLFNBQVMsR0FBRzRILE9BQU8sQ0FBQ3BFLFFBQVEsQ0FBQyxVQUFVLENBQWM7TUFFM0QsSUFBSSxJQUFJLENBQUNoQixlQUFlLElBQUksSUFBSSxDQUFDQSxlQUFlLENBQUNySixNQUFNLEVBQUU7UUFDeEQsTUFBTTRHLGFBQWEsR0FBRyxJQUFJLENBQUN5QyxlQUFlLENBQUN6RSxJQUFJLENBQUMsVUFBVXdMLElBQUksRUFBRTtVQUMvRCxPQUFPQSxJQUFJLENBQUNySixFQUFFLEtBQUtvSixLQUFLO1FBQ3pCLENBQUMsQ0FBQztRQUVGLElBQUl2SixhQUFhLEVBQUU7VUFDbEIsTUFBTXlKLE1BQU0sR0FBRzVCLE9BQU8sQ0FBQ3BFLFFBQVEsRUFBRTtVQUNqQyxNQUFNaUcsU0FBUyxHQUFHLENBQ2pCLElBQUksQ0FBQ2xHLGNBQWMsQ0FBQ3hELGFBQWEsRUFBRXlKLE1BQU0sRUFBRXhKLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFDM0QsSUFBSSxDQUFDK0csZUFBZSxDQUFDaEgsYUFBYSxFQUFFeUosTUFBTSxFQUFFeEosU0FBUyxDQUFDLEVBQ3RELElBQUksQ0FBQzJILFVBQVUsQ0FBQ0MsT0FBTyxDQUFDLENBQ3hCO1VBRURySSxPQUFPLENBQUNtSyxHQUFHLENBQUNELFNBQVMsQ0FBQyxDQUNwQjNLLElBQUksQ0FBRTZLLFFBQVEsSUFBSztZQUNuQixJQUFJLENBQUNkLEtBQUssQ0FBQ2UsV0FBVyxDQUFDNUosU0FBUyxDQUFDNEMsV0FBVyxDQUFFLElBQUcwRyxLQUFNLFdBQVUsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQ1QsS0FBSyxDQUFDZ0IsT0FBTyxFQUFFO1lBRXBCLE1BQU1oQyxRQUFRLEdBQUc4QixRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzVCOUIsUUFBUSxDQUFDaUMsTUFBTSxDQUFDbEMsT0FBTyxFQUFFLEtBQUssQ0FBQztVQUNoQyxDQUFDLENBQUMsQ0FDRHpFLEtBQUssQ0FBRUMsR0FBRyxJQUFLO1lBQ2ZDLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDRixHQUFHLENBQUM7VUFDZixDQUFDLENBQUM7UUFDSjtNQUNEO0lBQ0QsQ0FBQztJQUFBO0VBQUEsRUFsbEI2QzJHLG1CQUFtQjtFQUFBLE9BcWxCbkRySyxnQ0FBZ0M7QUFBQSJ9
|
|
@@ -564,7 +564,9 @@ function getNavigationParameters(
|
|
|
564
564
|
@defineUI5Class("sap.fe.core.controllerextensions.KPIManagement")
|
|
565
565
|
class KPIManagementControllerExtension extends ControllerExtension {
|
|
566
566
|
protected aKPIDefinitions?: KPIDefinition[];
|
|
567
|
+
|
|
567
568
|
protected oCard: any;
|
|
569
|
+
|
|
568
570
|
protected oPopover!: Popover;
|
|
569
571
|
|
|
570
572
|
/**
|